@arcgis/core 5.0.0-next.66 → 5.0.0-next.68

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 (595) hide show
  1. package/Ground.d.ts +4 -4
  2. package/Map.d.ts +1 -1
  3. package/WebDocument2D.d.ts +2 -3
  4. package/WebScene.d.ts +2 -3
  5. package/analysis/ElevationProfile/ElevationProfileLineViewOptions.d.ts +9 -6
  6. package/analysis/ElevationProfile/ElevationProfileLineViewOptions.js +1 -1
  7. package/applications/Components/QuantityFormatter.d.ts +14 -1
  8. package/applications/Components/SelectionOperation.d.ts +45 -9
  9. package/applications/Components/SketchTooltipControls.d.ts +31 -6
  10. package/applications/Components/actionUtils.d.ts +1 -0
  11. package/applications/Components/analysisUtils.d.ts +98 -26
  12. package/applications/Components/arcadeEditorUtils.d.ts +3 -0
  13. package/applications/Components/arcadeFeatureUtils.d.ts +34 -6
  14. package/applications/Components/baUtils.d.ts +8 -8
  15. package/applications/Components/basemapUtils.d.ts +2 -0
  16. package/applications/Components/drawUtils.d.ts +6 -1
  17. package/applications/Components/featureUtils.d.ts +9 -0
  18. package/applications/Components/fontUtils.d.ts +2 -0
  19. package/applications/Components/formatUtils.d.ts +2 -0
  20. package/applications/Components/getDefaultUnits.d.ts +2 -0
  21. package/applications/Components/imageryUtils.d.ts +135 -27
  22. package/applications/Components/layerOriginUtils.d.ts +5 -0
  23. package/applications/Components/layersEffectsJsonUtils.d.ts +2 -0
  24. package/applications/Components/previewSymbol2D.d.ts +2 -0
  25. package/applications/Components/reactiveUtils.d.ts +13 -9
  26. package/applications/Components/sanitizerUtils.d.ts +2 -0
  27. package/applications/Components/stringUtils.d.ts +5 -0
  28. package/applications/Components/styleUtils.d.ts +2 -0
  29. package/applications/Components/svgUtils.d.ts +4 -0
  30. package/applications/Components/testUtils.d.ts +3 -0
  31. package/applications/Components/viewUtils.d.ts +2 -0
  32. package/applications/Components/webStyleSymbolUtils.d.ts +2 -0
  33. package/applications/Excalibur/videoViewUtils.d.ts +19 -3
  34. package/applications/ExperienceBuilder/sketchUtils.d.ts +10 -1
  35. package/applications/KnowledgeStudio/dataModelVisualization.d.ts +2 -0
  36. package/applications/KnowledgeStudio/generalSdkInternalAccess.d.ts +33 -4
  37. package/applications/KnowledgeStudio/generalSharedKgUtils.d.ts +73 -10
  38. package/applications/KnowledgeStudio/layerInternalAccessUtils.d.ts +12 -1
  39. package/applications/KnowledgeStudio/reshape.d.ts +144 -28
  40. package/applications/KnowledgeStudio/resourceSerializationUtils.d.ts +17 -3
  41. package/applications/MapViewer/layerUtils.d.ts +2 -0
  42. package/applications/MapViewer/mediaUtils.d.ts +42 -8
  43. package/applications/MapViewer/templateUtils.d.ts +78 -16
  44. package/applications/PortalApp/layerUtils.d.ts +2 -0
  45. package/applications/SceneViewer/colorUtils.d.ts +2 -0
  46. package/applications/SceneViewer/devEnvironmentUtils.d.ts +3 -0
  47. package/applications/SceneViewer/layerUtils.d.ts +5 -3
  48. package/applications/SceneViewer/sceneViewerUtils.d.ts +52 -5
  49. package/applications/SceneViewer/symbolUtils.d.ts +2 -0
  50. package/applications/Urban/LineImagePattern3D.d.ts +8 -2
  51. package/applications/Urban/imagePatternUtils.d.ts +10 -2
  52. package/applications/Urban/meshUtils.d.ts +2 -0
  53. package/applications/WebEditor/sketchUtils.d.ts +24 -4
  54. package/arcade/arcadeAsyncRuntime.js +1 -1
  55. package/arcade/arcadeCompiler.js +1 -1
  56. package/arcade/arcadeRuntime.js +1 -1
  57. package/arcade/batchExec.js +1 -1
  58. package/arcade/compilerUtils.js +1 -1
  59. package/arcade/featureset/actions/SpatialFilter.js +1 -1
  60. package/arcade/geometry/unitConversion.js +1 -1
  61. package/arcade/treeAnalysis.js +1 -1
  62. package/arcade.js +1 -1
  63. package/assets/components/assets/icon/fileEsl16.json +1 -0
  64. package/assets/components/assets/icon/fileEsl24.json +1 -0
  65. package/assets/components/assets/icon/fileEsl32.json +1 -0
  66. package/assets/esri/core/workers/RemoteClient.js +1 -1
  67. package/assets/esri/core/workers/chunks/{251eb6e00f99a816d55c.js → 0326314947734b8e640a.js} +1 -1
  68. package/assets/esri/core/workers/chunks/04176244b0a3539c9681.js +1 -0
  69. package/assets/esri/core/workers/chunks/04958494022f82dca473.js +1 -0
  70. package/assets/esri/core/workers/chunks/0b7bbdc0d71ee6721751.js +2 -0
  71. package/assets/esri/core/workers/chunks/{5909a0e763fddc3542e7.js.LICENSE.txt → 0b7bbdc0d71ee6721751.js.LICENSE.txt} +1 -1
  72. package/assets/esri/core/workers/chunks/0f8149fdcf0adeca268e.js +1 -0
  73. package/assets/esri/core/workers/chunks/{aa7a1705266eec353cb6.js → 0fc22ad791d3ec0a9c5e.js} +1 -1
  74. package/assets/esri/core/workers/chunks/10e474d664b20adcd917.js +1 -0
  75. package/assets/esri/core/workers/chunks/12f9a55253084a910b2e.js +1 -0
  76. package/assets/esri/core/workers/chunks/14dedd80fb797303f91f.js +1 -0
  77. package/assets/esri/core/workers/chunks/1a6d2f525dd30d08cf9b.js +1 -0
  78. package/assets/esri/core/workers/chunks/{81d89107ff82604a3ea0.js → 1b445981fbc8373f4dd8.js} +1 -1
  79. package/assets/esri/core/workers/chunks/{6ba3c2b9f699d94d62b8.js → 1ec1a1997b5577619040.js} +1 -1
  80. package/assets/esri/core/workers/chunks/204d738c8b651314ae64.js +1 -0
  81. package/assets/esri/core/workers/chunks/2085084324cd5a81783f.js +1 -0
  82. package/assets/esri/core/workers/chunks/{e95821a199e10b389e29.js → 25f3ee666f545a7a7993.js} +2 -2
  83. package/assets/esri/core/workers/chunks/{e95821a199e10b389e29.js.LICENSE.txt → 25f3ee666f545a7a7993.js.LICENSE.txt} +1 -1
  84. package/assets/esri/core/workers/chunks/2c2c0f66cffc521df736.js +1 -0
  85. package/assets/esri/core/workers/chunks/2dd347aa2a061d536e69.js +1 -0
  86. package/assets/esri/core/workers/chunks/2dfa7abf2d39fa5a3874.js +1 -0
  87. package/assets/esri/core/workers/chunks/322085d63719da6e443c.js +1 -0
  88. package/assets/esri/core/workers/chunks/{76086517591d0eb35156.js → 34a2e0462eb05986cdd1.js} +1 -1
  89. package/assets/esri/core/workers/chunks/{a6dcd13c792b6538ac50.js → 35593a9790818b689455.js} +1 -1
  90. package/assets/esri/core/workers/chunks/36ecf951c0c7dad84b69.js +1 -0
  91. package/assets/esri/core/workers/chunks/37002a46f03a9fc5f644.js.LICENSE.txt +1 -1
  92. package/assets/esri/core/workers/chunks/3a04153ca9d8e4f01185.js +1 -0
  93. package/assets/esri/core/workers/chunks/{4e9a8fce55cad841c731.js → 3b25f5d9c8f78bb6e011.js} +1 -1
  94. package/assets/esri/core/workers/chunks/3e7ea06b342e33bc48a5.js +1 -0
  95. package/assets/esri/core/workers/chunks/3ed317900f0edf635508.js +1 -0
  96. package/assets/esri/core/workers/chunks/401ce5cb98fa14c1a725.js +1 -0
  97. package/assets/esri/core/workers/chunks/4319b89cfa02894a8cae.js +1 -0
  98. package/assets/esri/core/workers/chunks/43e2c1d72cd9c8beed2f.js.LICENSE.txt +1 -1
  99. package/assets/esri/core/workers/chunks/45a9cd722e98dd1548ae.js +1 -0
  100. package/assets/esri/core/workers/chunks/4a060147d25929680ec8.js +1 -0
  101. package/assets/esri/core/workers/chunks/4bcd74951477e8977ba1.js +1 -0
  102. package/assets/esri/core/workers/chunks/4d0eaeb4cd6cd55e25fd.js +1 -0
  103. package/assets/esri/core/workers/chunks/{687d2b761dc5b5cf0c31.js → 4d4d71d24c1a9cb342b8.js} +1 -1
  104. package/assets/esri/core/workers/chunks/4fa230dc6e5e87b0dec1.js +1 -0
  105. package/assets/esri/core/workers/chunks/50f03813fba4b752ca9f.js +1 -0
  106. package/assets/esri/core/workers/chunks/{abc236e99b52be1c83b9.js → 52a14266fe239b95c5ce.js} +1 -1
  107. package/assets/esri/core/workers/chunks/53b5c77832df7df4d4e3.js +1 -0
  108. package/assets/esri/core/workers/chunks/{34178ace79e8dea3567d.js → 562cddaf63985e53ee6e.js} +1 -1
  109. package/assets/esri/core/workers/chunks/59a45533e96cedf1c480.js +1 -0
  110. package/assets/esri/core/workers/chunks/{c2aeecd27e004c6cd7e1.js → 5b9f2aa3ba1bf12c3240.js} +2 -2
  111. package/assets/esri/core/workers/chunks/{c2aeecd27e004c6cd7e1.js.LICENSE.txt → 5b9f2aa3ba1bf12c3240.js.LICENSE.txt} +1 -1
  112. package/assets/esri/core/workers/chunks/{6599cc702a46f81a5634.js → 5dd5be91038df8902dc4.js} +1 -1
  113. package/assets/esri/core/workers/chunks/{49a1b7f700b8a42de817.js → 60c7f896f2246a8aa6d7.js} +19 -19
  114. package/assets/esri/core/workers/chunks/60f363ee2add089e8f0b.js +1 -0
  115. package/assets/esri/core/workers/chunks/61801bb8c7be8fe77086.js +1 -0
  116. package/assets/esri/core/workers/chunks/679cd6424e0e2d7f372b.js +1 -0
  117. package/assets/esri/core/workers/chunks/68074a484d7f9bc713c0.js +1 -0
  118. package/assets/esri/core/workers/chunks/6acfa51b81e6f4255118.js +1 -0
  119. package/assets/esri/core/workers/chunks/{3fe7be535affae31de7e.js → 6b85a8776ec2beff63cb.js} +1 -1
  120. package/assets/esri/core/workers/chunks/6be530ab81291745485b.js.LICENSE.txt +1 -1
  121. package/assets/esri/core/workers/chunks/6df484faf54e90a6cc77.js +1 -0
  122. package/assets/esri/core/workers/chunks/6ea6ad894ac634aa4391.js +1 -0
  123. package/assets/esri/core/workers/chunks/6f8098f9fe233833245a.js +1 -0
  124. package/assets/esri/core/workers/chunks/73c416ae0ec5a1815591.js.LICENSE.txt +1 -1
  125. package/assets/esri/core/workers/chunks/75fd2ef1236a9364ca7f.js +1 -0
  126. package/assets/esri/core/workers/chunks/{23b623637126f8411a30.js → 7aec07f2482934259d12.js} +1 -1
  127. package/assets/esri/core/workers/chunks/7be9bbae23895d1cfa92.js +1 -0
  128. package/assets/esri/core/workers/chunks/{741d170187e58e81584d.js → 7d744554d14057d9b2b1.js} +1 -1
  129. package/assets/esri/core/workers/chunks/7ea48661f1087d06aa41.js +1 -0
  130. package/assets/esri/core/workers/chunks/{47e5149765beee46f208.js → 7ee68f67f9cc48a328f0.js} +1 -1
  131. package/assets/esri/core/workers/chunks/866477acdf03b8a40bc9.js +1 -0
  132. package/assets/esri/core/workers/chunks/8e83c133b201b9b61e70.js +1 -0
  133. package/assets/esri/core/workers/chunks/9086a4933d3d3d9ffa72.js +1 -0
  134. package/assets/esri/core/workers/chunks/94174d40de39dbe7d0bf.js +1 -0
  135. package/assets/esri/core/workers/chunks/98f4b44eca91c42ca08e.js +1 -0
  136. package/assets/esri/core/workers/chunks/9ccabf8142fb5de4d3e2.js.LICENSE.txt +1 -1
  137. package/assets/esri/core/workers/chunks/{dd99b77a7c0a052507bb.js → 9d88b4ba8e511da64583.js} +3 -3
  138. package/assets/esri/core/workers/chunks/a808be466812db51813d.js +1 -0
  139. package/assets/esri/core/workers/chunks/{6b4a24248182245167ca.js → a931515a2569713e743b.js} +1 -1
  140. package/assets/esri/core/workers/chunks/a95e28ade258b144cbb5.js +1 -0
  141. package/assets/esri/core/workers/chunks/adc68e2c6d2698a52bfe.js +1 -0
  142. package/assets/esri/core/workers/chunks/aeb524eded012217a865.js +1 -0
  143. package/assets/esri/core/workers/chunks/b2a1e5e9182b643909eb.js +316 -0
  144. package/assets/esri/core/workers/chunks/{ac6f002cfad42e60de8f.js → b48033645091c91e0d88.js} +1 -1
  145. package/assets/esri/core/workers/chunks/b8988771bfa4e785ebd6.js +1 -0
  146. package/assets/esri/core/workers/chunks/bb4574a87ca21e719f0d.js +1 -0
  147. package/assets/esri/core/workers/chunks/{07639f406b71bb49ffd6.js → bdbb5b33f0f49661bf6d.js} +1 -1
  148. package/assets/esri/core/workers/chunks/c042269586921e337be9.js +1 -0
  149. package/assets/esri/core/workers/chunks/c623918e289a09905cd1.js +1 -0
  150. package/assets/esri/core/workers/chunks/c7391b0b5a9c916a53f7.js +1 -0
  151. package/assets/esri/core/workers/chunks/{ac83c2999a3d2ffb4356.js → c7838ac0db8570a2d2c1.js} +1 -1
  152. package/assets/esri/core/workers/chunks/c91ef3814e7f024043cf.js +1 -0
  153. package/assets/esri/core/workers/chunks/{43d28c6509c21b8917a8.js → ca7523c14d81c470e92e.js} +1 -1
  154. package/assets/esri/core/workers/chunks/cd2708fb7636b3ace229.js +1 -0
  155. package/assets/esri/core/workers/chunks/{310f3268582e61cd86da.js → d21480925a8bc9c7de96.js} +1 -1
  156. package/assets/esri/core/workers/chunks/d445e9399fe4ca3d2a50.js +1 -0
  157. package/assets/esri/core/workers/chunks/d7683a95775c9f401a7e.js +1 -0
  158. package/assets/esri/core/workers/chunks/{9d6945cda99d14af83ac.js → d7d9656b990ce8be2152.js} +1 -1
  159. package/assets/esri/core/workers/chunks/d9ca754f51b9812bb179.js +1 -0
  160. package/assets/esri/core/workers/chunks/d9ef0b3341e2744d8f2f.js +1 -0
  161. package/assets/esri/core/workers/chunks/df4a0af329ce94a47a7b.js +1 -0
  162. package/assets/esri/core/workers/chunks/e10d6e511921394474ca.js +1 -0
  163. package/assets/esri/core/workers/chunks/e4b6aa8f67c2bd285020.js +1 -0
  164. package/assets/esri/core/workers/chunks/e5aac523c37d906eece6.js +1 -0
  165. package/assets/esri/core/workers/chunks/e6ca02f98f855024f74b.js +1 -0
  166. package/assets/esri/core/workers/chunks/{892157696e8f9e38c472.js → e6e837e43b9348050832.js} +1 -1
  167. package/assets/esri/core/workers/chunks/{d3325ed8d224e2350db7.js → e8a3ad00936f2ccaf362.js} +1 -1
  168. package/assets/esri/core/workers/chunks/{f351007cdcd0938d3b6c.js → eeb24a4ab4993f1f4e8e.js} +1 -1
  169. package/assets/esri/core/workers/chunks/ef7063ee790d2d64d4b2.js +1 -0
  170. package/assets/esri/core/workers/chunks/{b65fcfde62d49de1fa54.js → ef977be20a647aeded0a.js} +1 -1
  171. package/assets/esri/core/workers/chunks/efb631371b6bb3f043bb.js +1 -0
  172. package/assets/esri/core/workers/chunks/{0f5693541111fcae0c2f.js → f0914715e90e43466f8c.js} +1 -1
  173. package/assets/esri/core/workers/chunks/f25bebd2b6eb0d0f6626.js.LICENSE.txt +1 -1
  174. package/assets/esri/core/workers/chunks/f95e488d2b86e320624f.js +1 -0
  175. package/assets/esri/core/workers/chunks/{bfc063d4431bfa162160.js → fd09f38fb4d99bf34988.js} +1 -1
  176. package/assets/esri/libs/lyr3d/lyr3DMain.wasm +0 -0
  177. package/assets/esri/libs/lyr3d/lyr3DWorker.wasm +0 -0
  178. package/assets/esri/libs/text/pkg/bundle_bg.wasm +0 -0
  179. package/chunks/boundedPlane.js +1 -1
  180. package/chunks/bundle2.js +5 -0
  181. package/config.js +1 -1
  182. package/copyright.txt +70 -1
  183. package/core/BidiText.js +1 -1
  184. package/core/accessorSupport/ensureType.js +1 -1
  185. package/core/compilerUtils.js +1 -1
  186. package/core/typedArrayUtil.js +1 -1
  187. package/core/units.js +1 -1
  188. package/core/workers/loaderConfig.js +1 -1
  189. package/editing/sharedTemplates/SharedTemplate.js +1 -1
  190. package/geometry/support/FloatArray.js +1 -1
  191. package/geometry/support/Indices.js +1 -1
  192. package/geometry/support/MeshTexture.js +1 -1
  193. package/geometry/support/aaBoundingRect.js +1 -1
  194. package/geometry/support/boundedPlane.js +1 -1
  195. package/geometry/support/heightModelInfoUtils.js +1 -1
  196. package/geometry/support/meshUtils/External.js +1 -1
  197. package/geometry/support/meshUtils/exporters/gltf/imageutils.js +1 -1
  198. package/geometry/support/meshUtils/loadExternal.js +1 -1
  199. package/geometry/support/rotate.js +1 -1
  200. package/interfaces.d.ts +23 -24
  201. package/kernel.js +1 -1
  202. package/layers/BingMapsLayer.d.ts +2 -3
  203. package/layers/BuildingSceneLayer.d.ts +3 -5
  204. package/layers/CatalogLayer.d.ts +2 -4
  205. package/layers/DimensionLayer.d.ts +2 -3
  206. package/layers/ElevationLayer.d.ts +2 -4
  207. package/layers/FeatureLayer.d.ts +2 -4
  208. package/layers/GaussianSplatLayer.d.ts +1 -3
  209. package/layers/GeoJSONLayer.d.ts +2 -3
  210. package/layers/GeoRSSLayer.d.ts +2 -3
  211. package/layers/GroupLayer.d.ts +2 -3
  212. package/layers/ImageryLayer.d.ts +2 -5
  213. package/layers/ImageryTileLayer.d.ts +3 -7
  214. package/layers/IntegratedMesh3DTilesLayer.d.ts +2 -4
  215. package/layers/IntegratedMeshLayer.d.ts +2 -4
  216. package/layers/KMLLayer.d.ts +2 -3
  217. package/layers/KnowledgeGraphLayer.d.ts +2 -4
  218. package/layers/LineOfSightLayer.d.ts +2 -3
  219. package/layers/LinkChartLayer.d.ts +2 -3
  220. package/layers/Lyr3DWasmPerSceneView.js +1 -1
  221. package/layers/MapImageLayer.d.ts +2 -4
  222. package/layers/MapNotesLayer.d.ts +2 -3
  223. package/layers/MediaLayer.d.ts +3 -4
  224. package/layers/OGCFeatureLayer.d.ts +2 -3
  225. package/layers/ParquetLayer.d.ts +2 -3
  226. package/layers/PointCloudLayer.d.ts +2 -4
  227. package/layers/RouteLayer.d.ts +2 -3
  228. package/layers/SceneLayer.d.ts +2 -4
  229. package/layers/StreamLayer.d.ts +2 -4
  230. package/layers/SubtypeGroupLayer.d.ts +2 -4
  231. package/layers/TileLayer.d.ts +2 -4
  232. package/layers/UnknownLayer.d.ts +2 -3
  233. package/layers/UnsupportedLayer.d.ts +2 -3
  234. package/layers/VectorTileLayer.d.ts +2 -4
  235. package/layers/VideoLayer.d.ts +8 -9
  236. package/layers/ViewshedLayer.d.ts +2 -3
  237. package/layers/VoxelLayer.d.ts +2 -4
  238. package/layers/WCSLayer.d.ts +2 -4
  239. package/layers/WFSLayer.d.ts +2 -3
  240. package/layers/WMSLayer.d.ts +5 -6
  241. package/layers/WMTSLayer.d.ts +4 -5
  242. package/layers/WebTileLayer.d.ts +2 -3
  243. package/layers/buildingSublayers/BuildingGroupSublayer.d.ts +1 -1
  244. package/layers/buildingSublayers/BuildingSublayer.d.ts +3 -3
  245. package/layers/buildingSublayers/BuildingSublayer.js +1 -1
  246. package/layers/catalog/CatalogDynamicGroupLayer.d.ts +2 -3
  247. package/layers/catalog/CatalogFootprintLayer.d.ts +2 -3
  248. package/layers/graphics/controllers/FeatureTileController3D.js +1 -1
  249. package/layers/graphics/controllers/I3SOnDemandController.js +1 -1
  250. package/layers/graphics/data/QueryEngineResult.js +1 -1
  251. package/layers/graphics/dehydratedFeatureComparison.js +1 -1
  252. package/layers/graphics/dehydratedFeatures.js +1 -1
  253. package/layers/graphics/hydratedFeatures.js +1 -1
  254. package/layers/knowledgeGraph/KnowledgeGraphSublayer.d.ts +4 -6
  255. package/layers/{support/media.d.ts → media/types.d.ts} +9 -9
  256. package/layers/mixins/ArcGISImageService.d.ts +1 -1
  257. package/layers/mixins/ImageryTileMixin.d.ts +1 -1
  258. package/layers/orientedImagery/transformations/rectifyMapPoint.js +1 -1
  259. package/layers/raster/datasets/wcsCoverageParser.d.ts +1 -1
  260. package/layers/raster/functions/changeDetectionUtils.js +1 -1
  261. package/layers/raster/functions/creators/createLocalFunctions.d.ts +1 -1
  262. package/layers/raster/functions/customBandIndexUtils.js +1 -1
  263. package/layers/raster/functions/focalStatUtils.js +1 -1
  264. package/layers/raster/functions/pixelTransformUtils.js +1 -1
  265. package/layers/raster/functions/types.d.ts +1 -1
  266. package/layers/{support/RasterTypes.d.ts → raster/types.d.ts} +2 -2
  267. package/layers/save/featureLayerUtils.js +1 -1
  268. package/layers/support/ElevationQuery.d.ts +2 -2
  269. package/layers/support/ElevationSampler.js +1 -1
  270. package/layers/support/FeatureType.d.ts +2 -2
  271. package/layers/support/Field.d.ts +2 -3
  272. package/layers/support/FieldConfiguration.d.ts +1 -1
  273. package/layers/support/ImageElement.d.ts +3 -3
  274. package/layers/support/LocalMediaElementSource.d.ts +1 -1
  275. package/layers/support/MediaElementBase.d.ts +4 -7
  276. package/layers/support/PixelBlock.d.ts +1 -1
  277. package/layers/support/RasterFunction.d.ts +1 -1
  278. package/layers/support/RasterInfo.d.ts +1 -1
  279. package/layers/support/Sublayer.d.ts +2 -3
  280. package/layers/support/Subtype.d.ts +2 -2
  281. package/layers/support/SubtypeSublayer.d.ts +2 -3
  282. package/layers/support/SubtypeSublayer.js +1 -1
  283. package/layers/support/VideoElement.d.ts +2 -2
  284. package/layers/support/WMSSublayer.d.ts +6 -6
  285. package/layers/support/WMSSublayer.js +1 -1
  286. package/layers/support/domains.js +1 -1
  287. package/layers/support/rasterFunctionUtils.d.ts +1 -1
  288. package/layers/support/tiles3DUtils.js +1 -1
  289. package/layers/support/types.d.ts +33 -1
  290. package/layers/types.d.ts +17 -2
  291. package/layers/wmts/types.d.ts +2 -0
  292. package/libs/text/loadTextModule.js +5 -0
  293. package/linkChart/LinkChartProperties.d.ts +4 -6
  294. package/linkChart/LinkChartProperties.js +1 -1
  295. package/networks/Network.d.ts +2 -4
  296. package/networks/support/NamedTraceConfiguration.d.ts +3 -3
  297. package/networks/support/NamedTraceConfiguration.js +1 -1
  298. package/networks/support/TopologyValidationJobInfo.js +1 -1
  299. package/networks/support/TraceJobInfo.js +1 -1
  300. package/package.json +3 -3
  301. package/popup/FieldInfo.d.ts +1 -1
  302. package/renderers/support/RasterSymbolizer.js +1 -1
  303. package/renderers/support/rendererConversion.js +1 -1
  304. package/renderers/visualVariables/support/visualVariableUtils.js +1 -1
  305. package/request/process.js +1 -1
  306. package/rest/geometryService/types.d.ts +59 -0
  307. package/rest/geometryService.d.ts +3 -5
  308. package/rest/query/operations/pbfDehydratedFeatureSet.js +1 -1
  309. package/rest/query/operations/query.js +1 -1
  310. package/rest/query/support/AttachmentInfo.d.ts +2 -2
  311. package/rest/support/AlgorithmicColorRamp.d.ts +2 -2
  312. package/rest/support/BinParametersBase.d.ts +2 -2
  313. package/rest/support/BinParametersBase.js +1 -1
  314. package/rest/support/DateBinTimeInterval.d.ts +1 -1
  315. package/rest/support/GeneralizeParameters.d.ts +1 -1
  316. package/rest/support/ImageSampleParameters.d.ts +1 -1
  317. package/rest/support/JobInfo.js +1 -1
  318. package/rest/support/PrintTemplate.d.ts +4 -6
  319. package/rest/support/ServiceAreaParameters.js +1 -1
  320. package/rest/support/types.d.ts +17 -1
  321. package/smartMapping/heuristics/sizeRange.js +1 -1
  322. package/smartMapping/renderers/support/utils.js +1 -1
  323. package/smartMapping/statistics/support/statsWorker.js +1 -1
  324. package/smartMapping/statistics/support/utils.js +1 -1
  325. package/smartMapping/support/adapters/FeatureLayerAdapter.js +1 -1
  326. package/smartMapping/support/adapters/InMemoryLayerAdapter.js +1 -1
  327. package/smartMapping/support/adapters/support/histogramUtils.js +1 -1
  328. package/smartMapping/support/adapters/support/utils.js +1 -1
  329. package/smartMapping/support/utils.js +1 -1
  330. package/support/revision.js +1 -1
  331. package/symbols/WebStyleSymbol.d.ts +0 -24
  332. package/symbols/WebStyleSymbol.js +1 -1
  333. package/symbols/support/ElevationInfo.d.ts +2 -2
  334. package/symbols/support/IconSymbol3DLayerResource.d.ts +1 -1
  335. package/symbols/support/defaults.js +1 -1
  336. package/symbols/support/defaults3D.js +1 -1
  337. package/symbols/support/previewSymbol3D.js +1 -1
  338. package/symbols/support/symbolLayerUtils3D.js +1 -1
  339. package/symbols/support/symbolUtils.js +1 -1
  340. package/symbols/support/utils.js +1 -1
  341. package/views/2d/analysis/ElevationProfile/ElevationProfileLineVisualization2D.js +1 -1
  342. package/views/2d/analysis/ElevationProfileAnalysisView2D.d.ts +16 -11
  343. package/views/2d/analysis/ElevationProfileAnalysisView2D.js +1 -1
  344. package/views/2d/engine/imagery/RasterVFDisplayObject.js +1 -1
  345. package/views/2d/engine/vectorTiles/VectorTile.js +1 -1
  346. package/views/2d/engine/vectorTiles/shaders/sources/shaderRepository.js +1 -1
  347. package/views/2d/engine/webgl/GlyphMosaic.js +1 -1
  348. package/views/2d/engine/webgl/GlyphSDFCreator.js +5 -0
  349. package/views/2d/engine/webgl/GlyphSource.js +1 -1
  350. package/views/2d/engine/webgl/TextureManager.js +1 -1
  351. package/views/2d/engine/webgl/TextureUploadManager.js +1 -1
  352. package/views/2d/engine/webgl/definitions.js +1 -1
  353. package/views/2d/engine/webgl/mesh/templates/shapingUtils.js +1 -1
  354. package/views/2d/engine/webgl/shaderGraph/techniques/labels/LabelMeshWriter.js +1 -1
  355. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/constants.js +1 -1
  356. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextMeshWriter.js +1 -1
  357. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
  358. package/views/2d/input/handlers/DoubleTapDragZoom.js +1 -1
  359. package/views/2d/input/handlers/KeyZoom.js +1 -1
  360. package/views/2d/layers/BaseLayerView2D.d.ts +3 -6
  361. package/views/2d/layers/BaseLayerViewGL2D.d.ts +3 -6
  362. package/views/2d/layers/FeatureLayerView2D.js +1 -1
  363. package/views/2d/layers/TileLayerView2D.js +1 -1
  364. package/views/2d/layers/features/sources/strategies/support/queryAdapters.js +1 -1
  365. package/views/2d/layers/features/support/FeatureSetReaderPBF.js +1 -1
  366. package/views/3d/analysis/AreaMeasurement/support/utils.js +1 -1
  367. package/views/3d/analysis/Dimension/lengthDimensionConstraintUtils.js +1 -1
  368. package/views/3d/analysis/ElevationProfile/ElevationProfileLineVisualization3D.js +1 -1
  369. package/views/3d/analysis/ElevationProfileAnalysisView3D.d.ts +16 -11
  370. package/views/3d/analysis/ElevationProfileAnalysisView3D.js +1 -1
  371. package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
  372. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementCutFillController.js +1 -1
  373. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementTool.js +1 -1
  374. package/views/3d/analysis/VolumeMeasurementAnalysisView3D.js +1 -1
  375. package/views/3d/camera/constraintUtils/tilt.js +1 -1
  376. package/views/3d/environment/CloudsParameters.js +1 -1
  377. package/views/3d/environment/CloudsRenderer.js +1 -1
  378. package/views/3d/environment/SceneViewEnvironment.js +1 -1
  379. package/views/3d/glTF/internal/Resource.js +1 -1
  380. package/views/3d/glTF/internal/fillDefaults.js +1 -1
  381. package/views/3d/interactive/Manipulator3D.js +1 -1
  382. package/views/3d/interactive/SnappingVisualizer3D.js +1 -1
  383. package/views/3d/interactive/editingTools/isSupportedObjectUtils.js +1 -1
  384. package/views/3d/interactive/editingTools/move/isSupportedObject.js +1 -1
  385. package/views/3d/interactive/editingTools/transform/isSupportedGraphic.js +1 -1
  386. package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
  387. package/views/3d/layers/I3SMeshView3D.js +1 -1
  388. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  389. package/views/3d/layers/PointCloudLayerView3D.js +1 -1
  390. package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
  391. package/views/3d/layers/graphics/Graphics3DExtrudeSymbolLayer.js +1 -1
  392. package/views/3d/layers/graphics/Graphics3DFeatureProcessor.js +1 -1
  393. package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
  394. package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
  395. package/views/3d/layers/graphics/Graphics3DSymbolLayer.js +1 -1
  396. package/views/3d/layers/graphics/LabelInfo.js +1 -1
  397. package/views/3d/layers/graphics/defaultSymbolComplexity.js +1 -1
  398. package/views/3d/layers/graphics/lineUtils.js +1 -1
  399. package/views/3d/layers/graphics/pipeline/rendering/FeaturePipelineRenderManager.js +1 -1
  400. package/views/3d/layers/graphics/pipeline/symbolization/primitiveObjectUtils.js +1 -1
  401. package/views/3d/layers/graphics/primitiveObjectSymbolUtils.js +1 -1
  402. package/views/3d/layers/i3s/BuildingFilterUtil.js +1 -1
  403. package/views/3d/layers/i3s/I3SIntersectionHandler.js +1 -1
  404. package/views/3d/layers/i3s/I3SNode.js +1 -1
  405. package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
  406. package/views/3d/layers/i3s/PointCloudWorkerUtil.js +1 -1
  407. package/views/3d/layers/i3s/SphereCone.js +5 -0
  408. package/views/3d/layers/support/FastSymbolUpdates.js +1 -1
  409. package/views/3d/layers/support/edgeUtils.js +1 -1
  410. package/views/3d/layers/support/featureReference.js +1 -1
  411. package/views/3d/layers/support/featureTileQuery3D.js +1 -1
  412. package/views/3d/layers/support/patternUtils.js +1 -1
  413. package/views/3d/state/controllers/GamepadKeyboardController.js +1 -1
  414. package/views/3d/state/helpers/SceneIntersectionHelper.js +1 -1
  415. package/views/3d/support/FrustumExtentIntersection.js +1 -1
  416. package/views/3d/support/buffer/glUtil.js +1 -1
  417. package/views/3d/support/engineContent/sdfPrimitives.js +1 -1
  418. package/views/3d/support/viewpointUtils.js +1 -1
  419. package/views/3d/terrain/isTerrainSurfaceLayer.js +1 -1
  420. package/views/3d/webgl/RenderNode.js +1 -1
  421. package/views/3d/webgl-engine/collections/Component/ComponentObjectCollection.js +1 -1
  422. package/views/3d/webgl-engine/collections/Component/IntersectionGeometry.js +1 -1
  423. package/views/3d/webgl-engine/collections/Component/Material/ComponentData.glsl.js +8 -8
  424. package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
  425. package/views/3d/webgl-engine/core/shaderLibrary/TextureBackedBufferFields.glsl.js +3 -3
  426. package/views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js +4 -4
  427. package/views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js +2 -2
  428. package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexNormal.glsl.js +2 -2
  429. package/views/3d/webgl-engine/core/shaderLibrary/shading/ComputeFragmentNormals.glsl.js +6 -6
  430. package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +1 -1
  431. package/views/3d/webgl-engine/core/shaderLibrary/shading/Normals.glsl.js +5 -5
  432. package/views/3d/webgl-engine/core/shaderLibrary/terrain/TileBackground.glsl.js +3 -3
  433. package/views/3d/webgl-engine/core/shaderLibrary/util/BlendModes.glsl.js +1 -1
  434. package/views/3d/webgl-engine/lib/ManagedTexture.js +1 -1
  435. package/views/3d/webgl-engine/lib/edgeRendering/EdgeProcessingWorker.js +1 -1
  436. package/views/3d/webgl-engine/lib/edgeRendering/EdgeWorkerHandle.js +1 -1
  437. package/views/3d/webgl-engine/materials/lineStippleUtils.js +1 -1
  438. package/views/3d/webgl-engine/shaders/CompositingTechnique.js +1 -1
  439. package/views/3d/webgl-engine/shaders/RibbonLineTechnique.js +1 -1
  440. package/views/3d/webgl-engine/shaders/sources/edgeRenderer/LineAmplitude.glsl.js +4 -4
  441. package/views/3d/webgl-engine/shaders/sources/edgeRenderer/LineOffset.glsl.js +8 -8
  442. package/views/VideoView.d.ts +2 -3
  443. package/views/VideoView.js +1 -1
  444. package/views/View2D.d.ts +2 -3
  445. package/views/analysis/ElevationProfile/ElevationProfileController.js +1 -1
  446. package/views/analysis/ElevationProfile/ElevationProfileIndicatorPointVisualization.js +5 -0
  447. package/views/analysis/ElevationProfile/ElevationProfileLineComputation.js +1 -1
  448. package/views/analysis/ElevationProfile/ElevationProfileResult.js +1 -1
  449. package/views/analysis/ElevationProfile/ElevationProfileTool.js +1 -1
  450. package/views/analysis/ElevationProfile/constants.js +1 -1
  451. package/views/draw/Draw.js +1 -1
  452. package/views/input/ViewEvents.js +1 -1
  453. package/views/interactive/editGeometry/EditGeometry.js +1 -1
  454. package/views/interactive/snapping/featureSources/snappingCandidateElevationAlignment.js +1 -1
  455. package/views/interactive/snapping/featureSources/snappingCandidateElevationFilter.js +1 -1
  456. package/views/interactive/snapping/featureSources/symbologySnappingCandidates.js +1 -1
  457. package/views/layers/MediaLayerViewMixin.d.ts +1 -1
  458. package/views/support/PromiseQueue.js +1 -1
  459. package/views/support/screenUtils.js +1 -1
  460. package/views/support/screenshotUtils.js +1 -1
  461. package/views/types.d.ts +1 -1
  462. package/views/webgl/FramebufferObject.js +1 -1
  463. package/views/webgl/Uniform.js +1 -1
  464. package/views/webgl/Util.js +1 -1
  465. package/webdoc/applicationProperties/SearchLayerField.d.ts +1 -1
  466. package/webdoc/applicationProperties/SearchTableField.d.ts +1 -1
  467. package/webscene/Slide.d.ts +2 -2
  468. package/webscene/spec-certification/api.js +1 -1
  469. package/widgets/BatchAttributeForm/batchAttributeFormUtils.js +1 -1
  470. package/widgets/BatchAttributeForm/inputs/FieldInput.d.ts +1 -1
  471. package/widgets/BatchAttributeForm/inputs/FieldInput.js +1 -1
  472. package/widgets/BatchAttributeForm/templates/support/hashElementTemplate.js +1 -1
  473. package/widgets/BatchAttributeForm.js +1 -1
  474. package/widgets/Editor/components/PendingFeatureList.js +1 -1
  475. package/widgets/Editor/components/workflowAdapters/pendingFeatureList/{CreateFeaturesWorkflowPendingFeatureListAdapter.ts.js → CreateFeaturesWorkflowPendingFeatureListAdapter.js} +1 -1
  476. package/widgets/Editor/types.d.ts +1 -1
  477. package/widgets/Editor/workflowUtils.js +1 -1
  478. package/widgets/Feature.d.ts +3 -5
  479. package/widgets/FeatureForm/FeatureFormViewModel.js +1 -1
  480. package/widgets/FeatureForm/FieldInput.d.ts +2 -2
  481. package/widgets/FeatureForm/featureFormUtils.js +1 -1
  482. package/widgets/FeatureForm.js +1 -1
  483. package/widgets/FeatureTemplates/FeatureTemplatesViewModel.d.ts +1 -1
  484. package/widgets/FeatureTemplates/TemplateItem.d.ts +1 -1
  485. package/widgets/FeatureTemplates/types.d.ts +1 -1
  486. package/widgets/Features.d.ts +3 -5
  487. package/widgets/Print/CustomTemplate.d.ts +3 -4
  488. package/widgets/Print/TemplateOptions.d.ts +3 -4
  489. package/widgets/Print/types.d.ts +3 -4
  490. package/widgets/ShadowCast/ShadowCastViewModel.js +1 -1
  491. package/widgets/Sketch/support/OperationHandle.js +1 -1
  492. package/widgets/TimeSlider.js +1 -1
  493. package/widgets/VideoPlayer/VideoPlayerViewModel.d.ts +1 -1
  494. package/widgets/support/SelectionList/GroupLayerItem.js +1 -1
  495. package/widgets/support/dateUtils.js +1 -1
  496. package/assets/esri/core/workers/chunks/0099f4729c94c779ba35.js +0 -1
  497. package/assets/esri/core/workers/chunks/058fb2cd6387acfd458c.js +0 -1
  498. package/assets/esri/core/workers/chunks/0ae018098906d6a88904.js +0 -1
  499. package/assets/esri/core/workers/chunks/0dc3a04ce717b7ddd957.js +0 -1
  500. package/assets/esri/core/workers/chunks/0e5cd0cf6ab7cb37d723.js +0 -1
  501. package/assets/esri/core/workers/chunks/0ee407b8db5c07a00d82.js +0 -1
  502. package/assets/esri/core/workers/chunks/10373885604655f673df.js +0 -1
  503. package/assets/esri/core/workers/chunks/13d61d34e55c80e4ecdf.js +0 -1
  504. package/assets/esri/core/workers/chunks/17dea03fc4eb414f0022.js +0 -1
  505. package/assets/esri/core/workers/chunks/1967239713b58dccfd81.js +0 -1
  506. package/assets/esri/core/workers/chunks/1ab98591d2f2bc604505.js +0 -1
  507. package/assets/esri/core/workers/chunks/1b838638e66e82d76cf3.js +0 -1
  508. package/assets/esri/core/workers/chunks/1c350a2c4014146dbcd9.js +0 -1
  509. package/assets/esri/core/workers/chunks/2266a8f2c2ec37c19bb4.js +0 -1
  510. package/assets/esri/core/workers/chunks/226acd251ad7d7ee3b57.js +0 -1
  511. package/assets/esri/core/workers/chunks/22b07c54a5fcc27771b0.js +0 -1
  512. package/assets/esri/core/workers/chunks/22ca80f491e070b2a5e7.js +0 -1
  513. package/assets/esri/core/workers/chunks/22dd5cecc7e2d4d0baf8.js +0 -316
  514. package/assets/esri/core/workers/chunks/2402d305a77fef4694a0.js +0 -1
  515. package/assets/esri/core/workers/chunks/27f096c434f049b8df01.js +0 -1
  516. package/assets/esri/core/workers/chunks/2a6231db5ee6cbfd59a5.js +0 -1
  517. package/assets/esri/core/workers/chunks/3371935a4fd6346d3a17.js +0 -1
  518. package/assets/esri/core/workers/chunks/3c4f8597f602779174f1.js +0 -1
  519. package/assets/esri/core/workers/chunks/3da53c017f9c5d2d778a.js +0 -1
  520. package/assets/esri/core/workers/chunks/45b898367b6224dda46f.js +0 -1
  521. package/assets/esri/core/workers/chunks/4785cd108e2dec6e1697.js +0 -1
  522. package/assets/esri/core/workers/chunks/4d6d962d25aa836f53ee.js +0 -1
  523. package/assets/esri/core/workers/chunks/4f33a2ecb154a2c2449c.js +0 -1
  524. package/assets/esri/core/workers/chunks/52726458f590e726d52c.js +0 -1
  525. package/assets/esri/core/workers/chunks/536c492fdda30f2f1288.js +0 -1
  526. package/assets/esri/core/workers/chunks/5909a0e763fddc3542e7.js +0 -2
  527. package/assets/esri/core/workers/chunks/5cee6c3ff23fb93f857a.js +0 -1
  528. package/assets/esri/core/workers/chunks/600e2e6b51e2fb9c598c.js +0 -1
  529. package/assets/esri/core/workers/chunks/6035daa65fc3ebf86515.js +0 -1
  530. package/assets/esri/core/workers/chunks/63b8cd7d5cafbaeed894.js +0 -1
  531. package/assets/esri/core/workers/chunks/6cb44cd319cb6c2539c8.js +0 -1
  532. package/assets/esri/core/workers/chunks/7033fa18b7dd7bd3e49c.js +0 -1
  533. package/assets/esri/core/workers/chunks/7306b5b66e738a281d83.js +0 -1
  534. package/assets/esri/core/workers/chunks/7694abe44d55dae8872d.js +0 -1
  535. package/assets/esri/core/workers/chunks/7f4fa2f2e85863d3cfb9.js +0 -1
  536. package/assets/esri/core/workers/chunks/8f4c480c418eba299c2b.js +0 -1
  537. package/assets/esri/core/workers/chunks/964de713042f52d71e42.js +0 -1
  538. package/assets/esri/core/workers/chunks/a3836f6a93924ee4816e.js +0 -1
  539. package/assets/esri/core/workers/chunks/ab520fd1ae917daf07d8.js +0 -1
  540. package/assets/esri/core/workers/chunks/acc7ff44bfcb5c195114.js +0 -1
  541. package/assets/esri/core/workers/chunks/ad92427bf597a6e0a299.js +0 -1
  542. package/assets/esri/core/workers/chunks/b25a131c04092c3ab75d.js +0 -1
  543. package/assets/esri/core/workers/chunks/b285de471ca90f38ec25.js +0 -1
  544. package/assets/esri/core/workers/chunks/b8f83a272fc41765031d.js +0 -1
  545. package/assets/esri/core/workers/chunks/b9909264cfea68d5f2a1.js +0 -1
  546. package/assets/esri/core/workers/chunks/bb08359610a41e304b55.js +0 -1
  547. package/assets/esri/core/workers/chunks/bcf612eabe7577540953.js +0 -1
  548. package/assets/esri/core/workers/chunks/bfbbcaa1fb04f17fc869.js +0 -1
  549. package/assets/esri/core/workers/chunks/c02b09f16241db233103.js +0 -1
  550. package/assets/esri/core/workers/chunks/c3007b916ba933137709.js +0 -1
  551. package/assets/esri/core/workers/chunks/cc5c1887e6d7079e5fe3.js +0 -1
  552. package/assets/esri/core/workers/chunks/ce8f075c814a8378c00c.js +0 -1
  553. package/assets/esri/core/workers/chunks/cfe1506a443fc84a0b91.js +0 -1
  554. package/assets/esri/core/workers/chunks/d30cfc5fa302cc08d862.js +0 -1
  555. package/assets/esri/core/workers/chunks/d723619579cc8f5ef2cd.js +0 -1
  556. package/assets/esri/core/workers/chunks/da99fd0d3106dd357743.js +0 -1
  557. package/assets/esri/core/workers/chunks/de71db3b0fb947b13c97.js +0 -1
  558. package/assets/esri/core/workers/chunks/dfbbead4c24d13682891.js +0 -1
  559. package/assets/esri/core/workers/chunks/e69255e38ff200dda14b.js +0 -1
  560. package/assets/esri/core/workers/chunks/e705d041f6c1632bfbcc.js +0 -1
  561. package/assets/esri/core/workers/chunks/e85da52d9cc7d9396872.js +0 -1
  562. package/assets/esri/core/workers/chunks/ee186ddbb1eb5144a790.js +0 -1
  563. package/assets/esri/core/workers/chunks/f9370830051865a3435b.js +0 -1
  564. package/core/MultiOriginJSONSupport.d.ts +0 -13
  565. package/core/NumericIdentifiable.d.ts +0 -6
  566. package/core/ReadOnlyMultiOriginJSONSupport.d.ts +0 -6
  567. package/core/WriteableMultiOriginJSONMixin.d.ts +0 -6
  568. package/layers/knowledgeGraph/KnowledgeGraphSublayerBase.d.ts +0 -6
  569. package/layers/mixins/ArcGISService.d.ts +0 -6
  570. package/layers/mixins/RasterJobHandlerMixin.d.ts +0 -6
  571. package/layers/support/RasterFunctionProperties.d.ts +0 -2
  572. package/layers/support/domains.d.ts +0 -5
  573. package/layers/support/editableLayers.d.ts +0 -11
  574. package/layers/support/exifUtils.d.ts +0 -21
  575. package/layers/support/fieldFormatUtils.d.ts +0 -4
  576. package/layers/support/fieldType.d.ts +0 -2
  577. package/layers/support/layerUtils.d.ts +0 -4
  578. package/layers/support/wmtsUtils.d.ts +0 -2
  579. package/layers/video/videoUtils.d.ts +0 -5
  580. package/rest/geometryService/cut.d.ts +0 -7
  581. package/rest/geometryService/fromGeoCoordinateString.d.ts +0 -28
  582. package/rest/geometryService/toGeoCoordinateString.d.ts +0 -25
  583. package/rest/operations/generalize.d.ts +0 -3
  584. package/rest/support/DateBinUtils.d.ts +0 -2
  585. package/rest/support/colorRamps.d.ts +0 -6
  586. package/rest/support/fileFormat.d.ts +0 -4
  587. package/rest/support/layoutTemplate.d.ts +0 -2
  588. package/rest/support/reportTemplate.d.ts +0 -2
  589. package/views/2d/layers/LayerView2D.d.ts +0 -6
  590. package/views/Viewport2DBaseMixin.d.ts +0 -6
  591. package/views/analysis/ElevationProfile/ElevationProfileHoveredPointVisualization.js +0 -5
  592. package/views/layers/RefreshableLayerView.d.ts +0 -6
  593. package/widgets/Feature/support/FeatureContentMixin.d.ts +0 -6
  594. /package/layers/video/{IVideoController.d.ts → types.d.ts} +0 -0
  595. /package/layers/{support/wmsUtils.d.ts → wms/types.d.ts} +0 -0
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../../request.js";import t from"../../../../core/pbf.js";class a{constructor(e){for(this._metrics=[],this._bitmaps=[];e.next();)switch(e.tag()){case 1:{const t=e.getMessage();for(;t.next();)switch(t.tag()){case 3:{const e=t.getMessage();let a,s,r,n,i,c,g;for(;e.next();)switch(e.tag()){case 1:a=e.getUInt32();break;case 2:s=e.getBytes();break;case 3:r=e.getUInt32();break;case 4:n=e.getUInt32();break;case 5:i=e.getSInt32();break;case 6:c=e.getSInt32();break;case 7:g=e.getUInt32();break;default:e.skip()}e.release(),a&&(this._metrics[a]={width:r,height:n,left:i,top:c,advance:g},this._bitmaps[a]=s);break}default:t.skip()}t.release();break}default:e.skip()}}getMetrics(e){return this._metrics[e]}getBitmap(e){return this._bitmaps[e]}}class s{constructor(){this._ranges=[]}getRange(e){return this._ranges[e]}addRange(e,t){this._ranges[e]=t}}class r{constructor(e){this._glyphInfo={},this._baseURL=e}getRange(s,r,n){const i=this._getFontStack(s);if(i.getRange(r))return Promise.resolve();const c=256*r,g=c+255,o=this._baseURL.replace("{fontstack}",s).replace("{range}",c+"-"+g);return e(o,{responseType:"array-buffer",...n}).then(e=>{i.addRange(r,new a(new t(new Uint8Array(e.data),new DataView(e.data))))})}async preloadASCIIRange(s){const r=this._getFontStack(s),n=0,i=255,c=this._baseURL.replace("{fontstack}",s).replace("{range}",n+"-"+i),g=await e(c,{responseType:"array-buffer"}),o=new a(new t(new Uint8Array(g.data),new DataView(g.data)));for(let e=n;e<=i;e++)r.getRange(e)||r.addRange(e,o)}getGlyph(e,t){const a=this._getFontStack(e);if(!a)return;const s=Math.floor(t/256),r=a.getRange(s);return r?{metrics:r.getMetrics(t),bitmap:r.getBitmap(t)}:void 0}_getFontStack(e){let t=this._glyphInfo[e];return t||(t=this._glyphInfo[e]=new s),t}}export{r as default};
5
+ import t from"../../../../config.js";import e from"../../../../request.js";import a from"../../../../core/pbf.js";class s{constructor(t){for(this._metrics=[],this._bitmaps=[];t.next();)switch(t.tag()){case 1:{const e=t.getMessage();for(;e.next();)switch(e.tag()){case 3:{const t=e.getMessage();let a,s,r,n,c,i,o;for(;t.next();)switch(t.tag()){case 1:a=t.getUInt32();break;case 2:s=t.getBytes();break;case 3:r=t.getUInt32();break;case 4:n=t.getUInt32();break;case 5:c=t.getSInt32();break;case 6:i=t.getSInt32();break;case 7:o=t.getUInt32();break;default:t.skip()}t.release(),a&&(this._metrics[a]={width:r,height:n,left:c,top:i,advance:o},this._bitmaps[a]=s);break}default:e.skip()}e.release();break}default:t.skip()}}getMetrics(t){return this._metrics[t]}getBitmap(t){return this._bitmaps[t]}}class r{constructor(){this._ranges=[]}getRange(t){return this._ranges[t]}addRange(t,e){this._ranges[t]=e}}class n{constructor(e){this._glyphInfo={},this._baseURL=e,this._woff2URL=`${t.fontsUrl}/woff2/{fontstack}.woff2`}async getRange(t,r,n){const c=this._getFontStack(t);if(c.getRange(r))return;const i=256*r,o=i+255,g=this._baseURL.replace("{fontstack}",t).replace("{range}",i+"-"+o);return e(g,{responseType:"array-buffer",...n}).then(t=>{c.addRange(r,new s(new a(new Uint8Array(t.data),new DataView(t.data))))})}async preloadASCIIRange(t){const r=this._getFontStack(t),n=0,c=255,i=this._baseURL.replace("{fontstack}",t).replace("{range}",n+"-"+c),o=await e(i,{responseType:"array-buffer"}),g=new s(new a(new Uint8Array(o.data),new DataView(o.data)));for(let e=n;e<=c;e++)r.getRange(e)||r.addRange(e,g)}getGlyph(t,e){const a=this._getFontStack(t);if(!a)return;const s=Math.floor(e/256),r=a.getRange(s);return r?{metrics:r.getMetrics(e),bitmap:r.getBitmap(e)}:void 0}woffURL(t){return this._woff2URL.replace("{fontstack}",t)}_getFontStack(t){let e=this._glyphInfo[t];return e||(e=this._glyphInfo[t]=new r),e}}export{n as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../../config.js";import t from"../../../../request.js";import{bidiText as i}from"../../../../core/BidiText.js";import r from"../../../../core/Error.js";import{getFullyQualifiedFontName as s}from"../../../../core/fontUtils.js";import has from"../../../../core/has.js";import a from"../../../../core/Logger.js";import{throwIfAborted as n,isAbortError as o}from"../../../../core/promiseUtils.js";import{QueueProcessor as c}from"../../../../core/QueueProcessor.js";import{pt2px as h}from"../../../../core/screenUtils.js";import{numericHash as l}from"../../../../core/string.js";import u from"../../../../symbols/cim/CIMResourceManager.js";import{CIMSymbolHelper as p}from"../../../../symbols/cim/CIMSymbolHelper.js";import m from"../../../../symbols/cim/Rasterizer.js";import{normalizeDashTemplate as d}from"../../../../symbols/cim/utils.js";import{svgSdfTextureInnerSize as g,textureBindingSpriteAtlas as f,textureBindingGlyphAtlas as y}from"./definitions.js";import _ from"./GlyphMosaic.js";import M from"./GlyphSource.js";import I from"./Rect.js";import w from"./SDFConverter.js";import S from"./SpriteMosaic.js";import{discardUrlIfHasUrlHash as z}from"./urlUtils.js";import{charCodes as T,getCIMMarkerPlacementHash as C,isSVGImage as R}from"./Utils.js";import{AnimatableTextureResource as x}from"./animatedFormats/AnimatableTextureResource.js";import{AnimationStore as P}from"./animations/store/AnimationStore.js";const b="arial-unicode-ms-regular",$=()=>a.getLogger("esri.views.MapView"),j=(e,t,i)=>$().error(new r(e,t,i)),v=(e,t="")=>$().warnOnce(e,t);class k{static fromMosaic(e,t){return new k(e,t.page,t.sdf,t.samplingMode)}constructor(e,t,i,r){this.mosaicType=e,this.page=t,this.sdf=i,this.samplingMode=r}}class F{constructor(i){this._requestRender=i,this._resourceManager=new u,this._invalidFonts=new Set,this._sdfConverter=new w(g),this._bindingInfos=new Array,this._hashToBindingIndex=new Map,this._ongoingRasterizations=new Map,this._imageRequestQueue=new c({concurrency:10,process:async(e,i)=>{n(i);try{return await t(e,{responseType:"image",signal:i})}catch(s){if(!o(s))throw new r("mapview-invalid-resource",`Could not fetch requested resource at ${e}`,s);throw s}}}),this.animationStore=new P,this._spriteMosaic=new S(2048,2048,500),this._glyphSource=new M(`${e.fontsUrl}/{fontstack}/{range}.pbf`),this._glyphMosaic=new _(1024,1024,this._glyphSource),this._rasterizer=new m(this.resourceManager)}dispose(){this._spriteMosaic.dispose(),this._glyphMosaic.dispose(),this._rasterizer.dispose(),this._sdfConverter.dispose(),this._spriteMosaic=null,this._glyphMosaic=null,this._sdfConverter=null,this._hashToBindingIndex.clear(),this._hashToBindingIndex=null,this._bindingInfos=null,this._ongoingRasterizations.clear(),this._ongoingRasterizations=null,this._imageRequestQueue.clear(),this._imageRequestQueue=null,this._resourceManager.destroy(),this.animationStore.destroy()}get sprites(){return this._spriteMosaic}get glyphs(){return this._glyphMosaic}get resourceManager(){return this._resourceManager}async rasterizeItem(e,t){if(null==e)return j("mapview-null-resource","Unable to rasterize null resource"),null;if("animation-info"===e.type){const{resource:t}=e,i=this.animationStore.add(t),{location:r}=i;return{rect:new I(r.column,r.row,t.length,1),page:r.page,type:"sprite",width:t.length,height:1,rasterizationScale:1,sdfPaddingRatio:.5,samplingMode:"Linear",sdfDecodeCoeff:1,simplePattern:!1}}if("cim-rasterization-info"!==e.type)return j("mapview-unexpected-resource","Unable to rasterize resource"),null;const{resource:i}=e;if("text"===i.type){const e=await this._rasterizeText(i,t);for(const t of e.glyphs)this._setTextureBinding(1,t);return e}const r=await this._rasterizeSprite(i,t);return r&&this._setTextureBinding(0,r),r}getMosaicInfo(e,t,i=!1){const r=this._getTextureBindingInfo(e,t,i);return r?{size:r.size,texture:{texture:r.texture,unit:"sprite"===r.type?f:y}}:(j("mapview-invalid-resource",`Unable to find resource for ${t}`),{size:[0,0],texture:{texture:null,unit:0}})}_getTextureBindingInfo(e,t,i){const{context:r}=e,s=this._bindingInfos[t-1],a=s.page,n="Nearest"===s.samplingMode?9728:i?9987:9729;switch(s.mosaicType){case 0:{const t=[this.sprites.getWidth(a),this.sprites.getHeight(a)],i=this._spriteMosaic.getTexture(e,a);return i.setSamplingMode(n),{type:"sprite",texture:i,size:t}}case 1:{const e=[this.glyphs.width,this.glyphs.height],t=this._glyphMosaic.getTexture(r,a);return this._glyphMosaic.bind(r,n,a,y),t.setSamplingMode(n),{type:"glyph",texture:t,size:e}}default:return j("mapview-texture-manager",`Cannot handle unknown type ${s.mosaicType}`),null}}_hashMosaic(e,t){return 1|e<<1|(t.sdf?1:0)<<2|("Nearest"===t.samplingMode?1:0)<<3|t.page<<4}_setTextureBinding(e,t){const i=this._hashMosaic(e,t);if(!this._hashToBindingIndex.has(i)){const r=k.fromMosaic(e,t),s=this._bindingInfos.length+1;this._hashToBindingIndex.set(i,s),this._bindingInfos.push(r)}t.textureBinding=this._hashToBindingIndex.get(i)}async _rasterizeText(e,t){const{font:r,textString:a}=e,n=s(r),o=this._invalidFonts.has(n),[c,h]=i(a),l=T(c);try{const e=o?b:n;has("esri-2d-stabilize-glyphs")&&await this._glyphMosaic.preloadASCIIGlyphCache(e);return{type:"glyphs",glyphs:await this._glyphMosaic.getGlyphItems(e,l,t),isRightToLeft:h}}catch(u){v(`Font ${n} is not available on the web, using "Arial Unicode MS Regular"`),this._invalidFonts.add(n);return{type:"glyphs",glyphs:await this._glyphMosaic.getGlyphItems(b,l,t),isRightToLeft:h}}}_hashSpriteResource(e){switch(e.type){case"path":return`path:${e.path}.${e.asFill?1:0}`;case"CIMPictureMarker":return`${e.type}:${e.url}:${e.size}:${C(e.markerPlacement)}`;case"CIMPictureFill":return`${e.type}:${e.url}:${e.height}`;case"CIMPictureStroke":return`${e.type}:${e.url}:${e.width}`;case"dash":return`dash:${e.capStyle}.${d(e.dashTemplate).join("")}`;case"sdf":return`sdf:${JSON.stringify(e.geometry)}.${e.sdfTextureSize}.${e.asFill?1:0}`;case"fill-style":return`fill_style:${e.style}`;case"animated":return JSON.stringify(z(e));case"CIMGradientFill":case"CIMGradientStroke":return`gradient:${JSON.stringify(e.colorRamp)}.${e.gradientType}.${e.interval}`;case"CIMHatchFill":case"CIMVectorMarker":return JSON.stringify(e)}}async _rasterizeSprite(e,t){if(!e)return null;const i=l(this._hashSpriteResource(e));if(this._spriteMosaic.has(i))return this._spriteMosaic.getSpriteItem(i);if("url"in e&&e.url||"CIMPictureFill"===e.type||"CIMPictureStroke"===e.type||"CIMPictureMarker"===e.type||"CIMVectorMarker"===e.type){const t=[];p.fetchResources({type:"CIMPointSymbol",symbolLayers:[e]},this._resourceManager,t),t.length>0&&await Promise.all(t)}switch(e.type){case"CIMPictureMarker":return"CIMMarkerPlacementInsidePolygon"===e.markerPlacement?.type?this._rasterizeJSONResource(i,e):this._handleAsyncResource(i,e,t);case"animated":case"CIMPictureFill":case"CIMPictureStroke":case"path":return this._handleAsyncResource(i,e,t);case"CIMGradientFill":case"CIMGradientStroke":case"CIMHatchFill":case"CIMVectorMarker":case"dash":case"fill-style":case"sdf":return this._rasterizeJSONResource(i,e)}}_rasterizeJSONResource(e,t){const i=this._rasterizer.rasterizeJSONResource(t);if(i){const{size:r,image:s,sdf:a,simplePattern:n,rasterizationScale:o,samplingMode:c,sdfPaddingRatio:h,sdfDecodeCoeff:l}=i;return this._addItemToMosaic(e,r,{type:"static",data:s},A(t),a,n,o,c,h,l)}return null}async _handleAsyncResource(e,t,i){if(this._ongoingRasterizations.has(e))return this._ongoingRasterizations.get(e);let r;return r="path"===t.type?this._handleSVG(t,e,i):this._handleImage(t,e,i),this._ongoingRasterizations.set(e,r),r.finally(()=>this._ongoingRasterizations.delete(e)),r}async _handleSVG(e,t,i){const r=[g,g],{asFill:s}=e,a=await this._sdfConverter.draw(e.path,s,i);return this._addItemToMosaic(t,r,{type:"static",data:new Uint32Array(a.buffer)},!1,!0,!0)}_handleGIFOrPNG(e,t,i){const r=e.url,s=this.resourceManager.getResource(r);if(null==s)return null;const{width:a,height:n}=s;if(s instanceof HTMLImageElement){if("animated"===e.type)return j("mapview-unexpected-resource","Attempt to configure animations for a non-animated image."),null;const i="colorSubstitutions"in e?e.colorSubstitutions:void 0,{size:r,sdf:o,image:c}=this._rasterizer.rasterizeImageResource(a,n,s,i);return this._addItemToMosaic(t,r,{type:"static",data:c},A(e),o,!1)}let o,c,h;"animated"===e.type?(o=!1,c={type:"CIMAnimatedSymbolProperties",playAnimation:e.playAnimation,reverseAnimation:e.reverseAnimation,randomizeStartTime:e.randomizeStartTime,randomizeStartSeed:e.randomizeStartSeed,startTimeOffset:e.startTimeOffset,duration:e.duration,repeatType:e.repeatType,repeatDelay:e.repeatDelay},h=e.startGroup||0):(o=A(e),c={type:"CIMAnimatedSymbolProperties"},h=0);const l=new x(s,this._requestRender,c,h);return this._addItemToMosaic(t,[l.width,l.height],{type:"animated",data:l},o,!1,!1)}async _handleImage(e,t,i){const s=e.url;if(B(s)||N(s))return this._handleGIFOrPNG(e,t,i);if("animated"===e.type)return j("mapview-unexpected-resource","Attempt to configure animations for a non-animated image."),null;try{let r;const a=this.resourceManager.getResource(s);if(null!=a&&a instanceof HTMLImageElement)r=a;else{const{data:e}=await this._imageRequestQueue.push(s,{...i});r=e}if(R(s))if("width"in e&&"height"in e)r.width=h(e.width),r.height=h(e.height);else if("cim"in e){const t=e;r.width=h(t.width??t.scaleX*t.size),r.height=h(t.size)}if(!r.width||!r.height)return null;const n=r.width,o=r.height,c="colorSubstitutions"in e?e.colorSubstitutions:void 0,{size:l,sdf:u,image:p}=this._rasterizer.rasterizeImageResource(n,o,r,c);return this._addItemToMosaic(t,l,{type:"static",data:p},A(e),u,!1)}catch(j){if(!o(j))throw new r("mapview-invalid-resource",`Could not fetch requested resource at ${s}. ${j.message}`);throw j}}_addItemToMosaic(e,t,i,r,s,a,n,o,c,h){return this._spriteMosaic.addSpriteItem(e,t,i,r,s,a,n,o,c,h)}}function A(e){switch(e.type){case"CIMVectorMarker":case"CIMPictureMarker":return U(e);default:return!0}}const G=e=>null!=e&&e.startsWith("data:image/gif"),B=e=>e&&(e.includes(".gif")||G(e)),O=e=>null!=e&&e.startsWith("data:image/png"),N=e=>e&&(e.includes(".png")||O(e)),U=e=>e&&"markerPlacement"in e&&e.markerPlacement&&"CIMMarkerPlacementInsidePolygon"===e.markerPlacement.type;export{F as default};
5
+ import e from"../../../../config.js";import t from"../../../../request.js";import i from"../../../../core/Error.js";import{getFullyQualifiedFontName as s}from"../../../../core/fontUtils.js";import has from"../../../../core/has.js";import r from"../../../../core/Logger.js";import{throwIfAborted as a,isAbortError as n}from"../../../../core/promiseUtils.js";import{QueueProcessor as o}from"../../../../core/QueueProcessor.js";import{pt2px as c}from"../../../../core/screenUtils.js";import{numericHash as h}from"../../../../core/string.js";import l from"../../../../symbols/cim/CIMResourceManager.js";import{CIMSymbolHelper as u}from"../../../../symbols/cim/CIMSymbolHelper.js";import p from"../../../../symbols/cim/Rasterizer.js";import{normalizeDashTemplate as d}from"../../../../symbols/cim/utils.js";import{svgSdfTextureInnerSize as m,textureBindingSpriteAtlas as g,textureBindingGlyphAtlas as f,sdfBufferGlyphSDFCreator as y,sdfBufferServer as _,sdfRadiusComplex as M,sdfRadiusSimple as I,sdfSizeComplex as w,sdfSizeSimple as S}from"./definitions.js";import z from"./GlyphMosaic.js";import T from"./GlyphSource.js";import R from"./Rect.js";import C from"./SDFConverter.js";import x from"./SpriteMosaic.js";import{discardUrlIfHasUrlHash as P}from"./urlUtils.js";import{getCIMMarkerPlacementHash as b,isSVGImage as $}from"./Utils.js";import{AnimatableTextureResource as v}from"./animatedFormats/AnimatableTextureResource.js";import{AnimationStore as j}from"./animations/store/AnimationStore.js";const k="arial-unicode-ms-regular",F=/[\u0695\u0698\u06a9\u06af\u06b5\u06be\u06c6\u06cc\u06ce\u06d5\u06ca]|\p{Script=Thai}|\p{Script=Lao}|\p{Script=Tamil}|\p{Script=Khmer}/u,A=()=>r.getLogger("esri.views.MapView"),G=(e,t,s)=>A().error(new i(e,t,s)),O=(e,t="")=>A().warnOnce(e,t);class B{static fromMosaic(e,t){return new B(e,t.page,t.sdf,t.samplingMode)}constructor(e,t,i,s){this.mosaicType=e,this.page=t,this.sdf=i,this.samplingMode=s}}class N{constructor(s){this._requestRender=s,this._resourceManager=new l,this._invalidFonts=new Set,this._sdfConverter=new C(m),this._bindingInfos=new Array,this._hashToBindingIndex=new Map,this._ongoingRasterizations=new Map,this._imageRequestQueue=new o({concurrency:10,process:async(e,s)=>{a(s);try{return await t(e,{responseType:"image",signal:s})}catch(r){if(!n(r))throw new i("mapview-invalid-resource",`Could not fetch requested resource at ${e}`,r);throw r}}}),this.animationStore=new j,this._spriteMosaic=new x(2048,2048,500),this._glyphSource=new T(`${e.fontsUrl}/{fontstack}/{range}.pbf`),this._glyphMosaic=new z(1024,1024,this._glyphSource),this._rasterizer=new p(this.resourceManager)}dispose(){this._spriteMosaic.dispose(),this._glyphMosaic.dispose(),this._rasterizer.dispose(),this._sdfConverter.dispose(),this._spriteMosaic=null,this._glyphMosaic=null,this._sdfConverter=null,this._hashToBindingIndex.clear(),this._hashToBindingIndex=null,this._bindingInfos=null,this._ongoingRasterizations.clear(),this._ongoingRasterizations=null,this._imageRequestQueue.clear(),this._imageRequestQueue=null,this._resourceManager.destroy(),this.animationStore.destroy()}get sprites(){return this._spriteMosaic}get glyphs(){return this._glyphMosaic}get resourceManager(){return this._resourceManager}async rasterizeItem(e,t){if(null==e)return G("mapview-null-resource","Unable to rasterize null resource"),null;if("animation-info"===e.type){const{resource:t}=e,i=this.animationStore.add(t),{location:s}=i;return{rect:new R(s.column,s.row,t.length,1),page:s.page,type:"sprite",width:t.length,height:1,rasterizationScale:1,sdfPaddingRatio:.5,samplingMode:"Linear",sdfDecodeCoeff:1,simplePattern:!1}}if("cim-rasterization-info"!==e.type)return G("mapview-unexpected-resource","Unable to rasterize resource"),null;const{resource:i}=e;if("text"===i.type){const e=await this._rasterizeText(i,t);for(const t of e.glyphs)this._setTextureBinding(1,t);return e}const s=await this._rasterizeSprite(i,t);return s&&this._setTextureBinding(0,s),s}getMosaicInfo(e,t,i=!1){const s=this._getTextureBindingInfo(e,t,i);return s?{size:s.size,texture:{texture:s.texture,unit:"sprite"===s.type?g:f}}:(G("mapview-invalid-resource",`Unable to find resource for ${t}`),{size:[0,0],texture:{texture:null,unit:0}})}_getTextureBindingInfo(e,t,i){const{context:s}=e,r=this._bindingInfos[t-1],a=r.page,n="Nearest"===r.samplingMode?9728:i?9987:9729;switch(r.mosaicType){case 0:{const t=[this.sprites.getWidth(a),this.sprites.getHeight(a)],i=this._spriteMosaic.getTexture(e,a);return i.setSamplingMode(n),{type:"sprite",texture:i,size:t}}case 1:{const e=[this.glyphs.width,this.glyphs.height],t=this._glyphMosaic.getTexture(s,a);return this._glyphMosaic.bind(s,n,a,f),t.setSamplingMode(n),{type:"glyph",texture:t,size:e}}default:return G("mapview-texture-manager",`Cannot handle unknown type ${r.mosaicType}`),null}}_hashMosaic(e,t){return 1|e<<1|(t.sdf?1:0)<<2|("Nearest"===t.samplingMode?1:0)<<3|t.page<<4}_setTextureBinding(e,t){const i=this._hashMosaic(e,t);if(!this._hashToBindingIndex.has(i)){const s=B.fromMosaic(e,t),r=this._bindingInfos.length+1;this._hashToBindingIndex.set(i,r),this._bindingInfos.push(s)}t.textureBinding=this._hashToBindingIndex.get(i)}async _rasterizeText(e,t){const{font:i,textString:r}=e,a=s(i),n=this._invalidFonts.has(a),o=!!has("esri-2d-complex-shaping")&&F.test(r),c=o?w:S,h=o?M:I,l=o?y:_;try{const e=n?k:a;has("esri-2d-stabilize-glyphs")&&await this._glyphMosaic.preloadASCIIGlyphCache(e);const{isRightToLeft:i,glyphs:s,faceInfo:u}=await this._glyphMosaic.getGlyphItems(r,o,e,t);return{type:"glyphs",glyphs:s,faceInfo:u,isRightToLeft:i,sdfSize:c,sdfRadius:h,sdfPadding:l}}catch(u){O(`Font ${a} is not available on the web, using "Arial Unicode MS Regular"`),this._invalidFonts.add(a);const{isRightToLeft:e,glyphs:i,faceInfo:s}=await this._glyphMosaic.getGlyphItems(r,o,k,t);return{type:"glyphs",glyphs:i,faceInfo:s,isRightToLeft:e,sdfSize:c,sdfRadius:h,sdfPadding:l}}}_hashSpriteResource(e){switch(e.type){case"path":return`path:${e.path}.${e.asFill?1:0}`;case"CIMPictureMarker":return`${e.type}:${e.url}:${e.size}:${b(e.markerPlacement)}`;case"CIMPictureFill":return`${e.type}:${e.url}:${e.height}`;case"CIMPictureStroke":return`${e.type}:${e.url}:${e.width}`;case"dash":return`dash:${e.capStyle}.${d(e.dashTemplate).join("")}`;case"sdf":return`sdf:${JSON.stringify(e.geometry)}.${e.sdfTextureSize}.${e.asFill?1:0}`;case"fill-style":return`fill_style:${e.style}`;case"animated":return JSON.stringify(P(e));case"CIMGradientFill":case"CIMGradientStroke":return`gradient:${JSON.stringify(e.colorRamp)}.${e.gradientType}.${e.interval}`;case"CIMHatchFill":case"CIMVectorMarker":return JSON.stringify(e)}}async _rasterizeSprite(e,t){if(!e)return null;const i=h(this._hashSpriteResource(e));if(this._spriteMosaic.has(i))return this._spriteMosaic.getSpriteItem(i);if("url"in e&&e.url||"CIMPictureFill"===e.type||"CIMPictureStroke"===e.type||"CIMPictureMarker"===e.type||"CIMVectorMarker"===e.type){const t=[];u.fetchResources({type:"CIMPointSymbol",symbolLayers:[e]},this._resourceManager,t),t.length>0&&await Promise.all(t)}switch(e.type){case"CIMPictureMarker":return"CIMMarkerPlacementInsidePolygon"===e.markerPlacement?.type?this._rasterizeJSONResource(i,e):this._handleAsyncResource(i,e,t);case"animated":case"CIMPictureFill":case"CIMPictureStroke":case"path":return this._handleAsyncResource(i,e,t);case"CIMGradientFill":case"CIMGradientStroke":case"CIMHatchFill":case"CIMVectorMarker":case"dash":case"fill-style":case"sdf":return this._rasterizeJSONResource(i,e)}}_rasterizeJSONResource(e,t){const i=this._rasterizer.rasterizeJSONResource(t);if(i){const{size:s,image:r,sdf:a,simplePattern:n,rasterizationScale:o,samplingMode:c,sdfPaddingRatio:h,sdfDecodeCoeff:l}=i;return this._addItemToMosaic(e,s,{type:"static",data:r},L(t),a,n,o,c,h,l)}return null}async _handleAsyncResource(e,t,i){if(this._ongoingRasterizations.has(e))return this._ongoingRasterizations.get(e);let s;return s="path"===t.type?this._handleSVG(t,e,i):this._handleImage(t,e,i),this._ongoingRasterizations.set(e,s),s.finally(()=>this._ongoingRasterizations.delete(e)),s}async _handleSVG(e,t,i){const s=[m,m],{asFill:r}=e,a=await this._sdfConverter.draw(e.path,r,i);return this._addItemToMosaic(t,s,{type:"static",data:new Uint32Array(a.buffer)},!1,!0,!0)}_handleGIFOrPNG(e,t,i){const s=e.url,r=this.resourceManager.getResource(s);if(null==r)return null;const{width:a,height:n}=r;if(r instanceof HTMLImageElement){if("animated"===e.type)return G("mapview-unexpected-resource","Attempt to configure animations for a non-animated image."),null;const i="colorSubstitutions"in e?e.colorSubstitutions:void 0,{size:s,sdf:o,image:c}=this._rasterizer.rasterizeImageResource(a,n,r,i);return this._addItemToMosaic(t,s,{type:"static",data:c},L(e),o,!1)}let o,c,h;"animated"===e.type?(o=!1,c={type:"CIMAnimatedSymbolProperties",playAnimation:e.playAnimation,reverseAnimation:e.reverseAnimation,randomizeStartTime:e.randomizeStartTime,randomizeStartSeed:e.randomizeStartSeed,startTimeOffset:e.startTimeOffset,duration:e.duration,repeatType:e.repeatType,repeatDelay:e.repeatDelay},h=e.startGroup||0):(o=L(e),c={type:"CIMAnimatedSymbolProperties"},h=0);const l=new v(r,this._requestRender,c,h);return this._addItemToMosaic(t,[l.width,l.height],{type:"animated",data:l},o,!1,!1)}async _handleImage(e,t,s){const r=e.url;if(q(r)||V(r))return this._handleGIFOrPNG(e,t,s);if("animated"===e.type)return G("mapview-unexpected-resource","Attempt to configure animations for a non-animated image."),null;try{let i;const a=this.resourceManager.getResource(r);if(null!=a&&a instanceof HTMLImageElement)i=a;else{const{data:e}=await this._imageRequestQueue.push(r,{...s});i=e}if($(r))if("width"in e&&"height"in e)i.width=c(e.width),i.height=c(e.height);else if("cim"in e){const t=e;i.width=c(t.width??t.scaleX*t.size),i.height=c(t.size)}if(!i.width||!i.height)return null;const n=i.width,o=i.height,h="colorSubstitutions"in e?e.colorSubstitutions:void 0,{size:l,sdf:u,image:p}=this._rasterizer.rasterizeImageResource(n,o,i,h);return this._addItemToMosaic(t,l,{type:"static",data:p},L(e),u,!1)}catch(G){if(!n(G))throw new i("mapview-invalid-resource",`Could not fetch requested resource at ${r}. ${G.message}`);throw G}}_addItemToMosaic(e,t,i,s,r,a,n,o,c,h){return this._spriteMosaic.addSpriteItem(e,t,i,s,r,a,n,o,c,h)}}function L(e){switch(e.type){case"CIMVectorMarker":case"CIMPictureMarker":return H(e);default:return!0}}const U=e=>null!=e&&e.startsWith("data:image/gif"),q=e=>e&&(e.includes(".gif")||U(e)),J=e=>null!=e&&e.startsWith("data:image/png"),V=e=>e&&(e.includes(".png")||J(e)),H=e=>e&&"markerPlacement"in e&&e.markerPlacement&&"CIMMarkerPlacementInsidePolygon"===e.markerPlacement.type;export{N as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import"../../../../core/has.js";import{createResolver as e,throwIfAborted as t,onAbortOrThrow as s}from"../../../../core/promiseUtils.js";import{textureUploadManagerChunkSize as o,textureUploadManagerBudget as r}from"./definitions.js";class u{constructor(e){this._queue=[],this._refreshable=e}destroy(){this._queue=[]}enqueueTextureUpdate(r,u){const n=e(),h=r,i=o,a=Math.ceil(h.height/i);t(u);for(let e=0;e<a;e++){const t=e*i,s=e===a-1,o=s?h.height-i*e:i;this._queue.push({type:"chunk",request:r,resolver:n,chunk:e,chunkOffset:t,destHeight:o,chunkIsLast:s,options:u})}return s(u,e=>n.reject(e)),n.promise}upload(){const e=performance.now();let t=0;for(;this._queue.length;){const s=this._queue.shift();if(s){if(null!=s.options.signal&&s.options.signal.aborted)continue;switch(s.type){case"chunk":this._uploadChunk(s);break;case"no-chunk":this._uploadNoChunk(s)}++t;const o=performance.now()-e;if(o+o/t>=r)break}}this._queue.length&&this._refreshable.requestRender()}_uploadChunk(e){const{request:t,resolver:s,chunkOffset:o,chunkIsLast:r,destHeight:u}=e,{data:n,texture:h,width:i}=t;null!=n&&(h.updateData(0,0,o,i,u,n,o),r&&s.resolve())}_uploadNoChunk(e){const{request:t,resolver:s}=e,{data:o,texture:r}=t;r.setData(o),s.resolve()}}export{u as TextureUploadManager};
5
+ import{createResolver as e,throwIfAborted as t,onAbortOrThrow as s}from"../../../../core/promiseUtils.js";import{textureUploadManagerChunkSize as o,textureUploadManagerBudget as u}from"./definitions.js";class r{constructor(e){this._queue=[],this._refreshable=e}destroy(){this._queue=[]}enqueueTextureUpdate(u,r){const n=e(),h=u,i=o,a=Math.ceil(h.height/i);t(r);for(let e=0;e<a;e++){const t=e*i,s=e===a-1,o=s?h.height-i*e:i;this._queue.push({type:"chunk",request:u,resolver:n,chunk:e,chunkOffset:t,destHeight:o,chunkIsLast:s,options:r})}return s(r,e=>n.reject(e)),n.promise}upload(){const e=performance.now();let t=0;for(;this._queue.length;){const s=this._queue.shift();if(s){if(null!=s.options.signal&&s.options.signal.aborted)continue;switch(s.type){case"chunk":this._uploadChunk(s);break;case"no-chunk":this._uploadNoChunk(s)}++t;const o=performance.now()-e;if(o+o/t>=u)break}}this._queue.length&&this._refreshable.requestRender()}_uploadChunk(e){const{request:t,resolver:s,chunkOffset:o,chunkIsLast:u,destHeight:r}=e,{data:n,texture:h,width:i}=t;null!=n&&(h.updateData(0,0,o,i,r,n,o),u&&s.resolve())}_uploadNoChunk(e){const{request:t,resolver:s}=e,{data:o,texture:u}=t;u.setData(o),s.resolve()}}export{r as TextureUploadManager};
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- const t=8,e=t-2,c=1e-30,h=64,i=4294967295,o=512,a=256,d=256/360,n=128,p=16777216,r=!1,s=128,f=8,g=10,l=29,m=1,v=16,w=16,x=o/s,b=8,j=50,k=10,q=24,u=4,y={metrics:{width:15,height:17,left:0,top:-7,advance:14}},z=1024,A=0,B=0,C=0,D=1,E=2,F=3,G=4,H=5,I=6,J=12,K=13,L=5,M=6,N=5,O=6,P=6,Q=1<<P,R=Q<<1,S=!1,T=1.05,U=3,V=1,W=3,X=3,Y=5,Z=6,$=1.15,_=2,tt=4,et=128,ct=256,ht=ct-2*tt,it=2,ot=128,at=1,dt=8,nt=500,pt=4,rt=128,st=10,ft=1024,gt=2,lt=0,mt=1,vt=4,wt=8,xt=16,bt=4,jt=1,kt=4,qt=8,ut=32,yt=64,zt=128,At=4,Bt=1,Ct=1<<20,Dt=.75,Et=10,Ft=.75,Gt=12,Ht=256,It=32,Jt=512,Kt=0,Lt=1;export{Bt as MAX_TILE_RESHUFFLES_PER_FRAME,Et as RESHUFFLING_EXEMPT_DRAW_CALLS,Ct as RESHUFFLING_EXEMPT_MEMORY_BYTES,Ft as RESHUFFLING_TARGET_DRAW_EFFICIENCY,Dt as RESHUFFLING_TARGET_MEMORY_EFFICIENCY,d as angleFactor256,E as animationUnit,Ht as attributeStoreInitialSize,z as attributeStoreTextureSize,y as averageGlyphMosaicItem,Lt as backbufferStencilClipped,Kt as backbufferStencilVisible,ut as bitsetFillHasPatternHeightPrecisionFactor,yt as bitsetFillHasPatternWidthPrecisionFactor,qt as bitsetFillHasUnresolvedReplacementColor,kt as bitsetFillRandomPatternOffset,xt as bitsetGenericConsiderAlphaOnly,gt as bitsetGenericLockColor,bt as bitsetLineScaleDash,mt as bitsetMarkerAlignmentMap,lt as bitsetMarkerAlignmentScreen,vt as bitsetMarkerOutlineAllowColorOverride,wt as bitsetMarkerScaleSymbolsProportionally,jt as bitsetTypeFillOutline,rt as bufferDataMinimumSize,pt as bufferDataPoolSize,g as chartMaxFields,w as collisionBoxPadding,s as collisionBucketSize,v as collisionEarlyRejectBucketSize,m as collisionMaxZoomDelta,b as collisionPlacementPadding,x as collisionTileBoxSize,n as compressionFactorForU16,G as dataDrivenUnit0,H as dataDrivenUnit1,I as dataDrivenUnit2,r as debugLabels,et as defaultSdfTextureSize,dt as displayRecordIntPerElement,f as dotDensityMaxFields,R as effectFlag0,S as enableEarlyLabelDiscard,h as extrudeScale,Q as filterFlag0,D as filterFlagsUnit,q as glyphSize,J as gpgpuUnit,at as gradientTextureExternalPadding,k as heuristicGlyphsPerFeature,j as heuristicGlyphsPerLine,X as hittestSmallSymbolThreshold,V as hittestToleranceDesktop,U as hittestToleranceMobile,W as hittestToleranceSmallSymbol,u as labelPlacementOffsetPadding,K as localTimeOriginUnit,l as magicLabelLineHeight,Gt as maxGeohashLevel,_ as maxGpuUploadsPerFrame,P as maxHighlightReasons,p as maxRepresentableInt,Jt as maxTextLineWidth,st as minMaxZoomPrecisionFactor,It as minTextLineWidth,c as nanMagicNumber,nt as patchPixelBufferAllocSize,it as patternFillRasterizationScale,i as pictureFillColor,ft as randomInsidePolygonTextureSize,a as rasterTileSize,ot as rasterizedVectorMarkerMinSize,tt as spritePadding,ht as svgSdfTextureInnerSize,ct as svgSdfTextureSize,C as textureBindingBitmap,B as textureBindingGlyphAtlas,L as textureBindingHighlight0,M as textureBindingHighlight1,N as textureBindingRenderer0,O as textureBindingRenderer1,A as textureBindingSpriteAtlas,At as textureUploadManagerBudget,zt as textureUploadManagerChunkSize,T as thinLineHalfWidthThreshold,o as tileSize,F as visualVariableUnit,$ as vtlHighResCutoff,Z as vtlTextureBindingUnitGlyphs,Y as vtlTextureBindingUnitSprites,e as webglMaxInnerStops,t as webglMaxStops};
5
+ const t=8,e=t-2,c=1e-30,h=64,i=4294967295,o=512,a=256,d=256/360,n=128,p=16777216,r=!1,s=128,f=8,g=10,l=29,m=1,v=16,w=16,x=o/s,b=8,j=50,k=10,q=24,u=3,y=8,z=24,A=8,B=64,C=14,D=4,E={metrics:{width:15,height:17,left:0,top:-7,advance:14}},F=1024,G=0,H=0,I=0,J=1,K=2,L=3,M=4,N=5,O=6,P=12,Q=13,R=5,S=6,T=5,U=6,V=6,W=1<<V,X=W<<1,Y=!1,Z=1.05,$=3,_=1,tt=3,et=3,ct=5,ht=6,it=1.15,ot=2,at=4,dt=128,nt=256,pt=nt-2*at,rt=2,st=128,ft=1,gt=8,lt=500,mt=4,vt=128,wt=10,xt=1024,bt=2,jt=0,kt=1,qt=4,ut=8,yt=16,zt=4,At=1,Bt=4,Ct=8,Dt=32,Et=64,Ft=128,Gt=4,Ht=1,It=1<<20,Jt=.75,Kt=10,Lt=.75,Mt=12,Nt=256,Ot=32,Pt=512,Qt=0,Rt=1;export{Ht as MAX_TILE_RESHUFFLES_PER_FRAME,Kt as RESHUFFLING_EXEMPT_DRAW_CALLS,It as RESHUFFLING_EXEMPT_MEMORY_BYTES,Lt as RESHUFFLING_TARGET_DRAW_EFFICIENCY,Jt as RESHUFFLING_TARGET_MEMORY_EFFICIENCY,d as angleFactor256,K as animationUnit,Nt as attributeStoreInitialSize,F as attributeStoreTextureSize,E as averageGlyphMosaicItem,Rt as backbufferStencilClipped,Qt as backbufferStencilVisible,Dt as bitsetFillHasPatternHeightPrecisionFactor,Et as bitsetFillHasPatternWidthPrecisionFactor,Ct as bitsetFillHasUnresolvedReplacementColor,Bt as bitsetFillRandomPatternOffset,yt as bitsetGenericConsiderAlphaOnly,bt as bitsetGenericLockColor,zt as bitsetLineScaleDash,kt as bitsetMarkerAlignmentMap,jt as bitsetMarkerAlignmentScreen,qt as bitsetMarkerOutlineAllowColorOverride,ut as bitsetMarkerScaleSymbolsProportionally,At as bitsetTypeFillOutline,vt as bufferDataMinimumSize,mt as bufferDataPoolSize,g as chartMaxFields,w as collisionBoxPadding,s as collisionBucketSize,v as collisionEarlyRejectBucketSize,m as collisionMaxZoomDelta,b as collisionPlacementPadding,x as collisionTileBoxSize,n as compressionFactorForU16,M as dataDrivenUnit0,N as dataDrivenUnit1,O as dataDrivenUnit2,r as debugLabels,dt as defaultSdfTextureSize,gt as displayRecordIntPerElement,f as dotDensityMaxFields,X as effectFlag0,Y as enableEarlyLabelDiscard,h as extrudeScale,W as filterFlag0,J as filterFlagsUnit,q as glyphSize,P as gpgpuUnit,ft as gradientTextureExternalPadding,k as heuristicGlyphsPerFeature,j as heuristicGlyphsPerLine,et as hittestSmallSymbolThreshold,_ as hittestToleranceDesktop,$ as hittestToleranceMobile,tt as hittestToleranceSmallSymbol,D as labelPlacementOffsetPadding,Q as localTimeOriginUnit,l as magicLabelLineHeight,Mt as maxGeohashLevel,ot as maxGpuUploadsPerFrame,V as maxHighlightReasons,p as maxRepresentableInt,Pt as maxTextLineWidth,wt as minMaxZoomPrecisionFactor,Ot as minTextLineWidth,c as nanMagicNumber,lt as patchPixelBufferAllocSize,rt as patternFillRasterizationScale,i as pictureFillColor,xt as randomInsidePolygonTextureSize,a as rasterTileSize,st as rasterizedVectorMarkerMinSize,y as sdfBufferGlyphSDFCreator,u as sdfBufferServer,C as sdfRadiusComplex,A as sdfRadiusSimple,B as sdfSizeComplex,z as sdfSizeSimple,at as spritePadding,pt as svgSdfTextureInnerSize,nt as svgSdfTextureSize,I as textureBindingBitmap,H as textureBindingGlyphAtlas,R as textureBindingHighlight0,S as textureBindingHighlight1,T as textureBindingRenderer0,U as textureBindingRenderer1,G as textureBindingSpriteAtlas,Gt as textureUploadManagerBudget,Ft as textureUploadManagerChunkSize,Z as thinLineHalfWidthThreshold,o as tileSize,L as visualVariableUnit,it as vtlHighResCutoff,ht as vtlTextureBindingUnitGlyphs,ct as vtlTextureBindingUnitSprites,e as webglMaxInnerStops,t as webglMaxStops};
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{fromRotation as t,multiply as s,translate as i,rotate as e}from"../../../../../../core/libs/gl-matrix-2/math/mat2d.js";import{create as o,transformMany as h}from"../../../../../../core/libs/gl-matrix-2/factories/mat2df32.js";import{transformMat2d as n,set as r}from"../../../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as a}from"../../../../../../core/libs/gl-matrix-2/factories/vec2f32.js";import{getXAnchorDirection as f,getYAnchorDirection as c}from"../../alignmentUtils.js";import m from"../../Rect.js";import d from"../../collisions/BoundingBox.js";const g=22,_=4,l=g+_,u=g-6,x=3,p=Math.PI/180,b=8,y=1.5;class w{constructor(t,s,i,e){this._rotationT=o(),this._xBounds=0,this._yBounds=0,this.minZoom=0,this.maxZoom=255,this._bounds=null;const h=i.rect,n=new Float32Array(8);t*=e,s*=e;const r=i.code?h.width*e:i.metrics.width,a=i.code?h.height*e:i.metrics.height;this.width=r,this.height=a,n[0]=t,n[1]=s,n[2]=t+r,n[3]=s,n[4]=t,n[5]=s+a,n[6]=t+r,n[7]=s+a,this._data=n,this._setTextureCoords(h),this._scale=e,this._mosaic=i,this.x=t,this.y=s,this.maxOffset=Math.max(t+r,s+a)}get mosaic(){return this._mosaic}set angle(s){this._angle=s,t(this._rotationT,-s),this._setOffsets()}get angle(){return this._angle}get xTopLeft(){return this._data[0]}get yTopLeft(){return this._data[1]}get xBottomRight(){return this._data[6]}get yBottomRight(){return this._data[7]}get texcoords(){return this._texcoords}get textureBinding(){return this._mosaic.textureBinding}get offsets(){return this._offsets||this._setOffsets(),this._offsets}get char(){return String.fromCharCode(this._mosaic.code)}get code(){return this._mosaic.code}get bounds(){if(!this._bounds){const{height:t,width:i}=this._mosaic.metrics,e=i*this._scale,n=Math.abs(t)*this._scale,r=new Float32Array(8);r[0]=this.x,r[1]=this.y,r[2]=this.x+e,r[3]=this.y,r[4]=this.x,r[5]=this.y+n,r[6]=this.x+e,r[7]=this.y+n;const a=s(o(),this._rotationT,this._transform);h(r,r,a);let f=1/0,c=1/0,m=-1/0,g=-1/0;for(let s=0;s<4;s++){const t=r[2*s],i=r[2*s+1];f=Math.min(f,t),c=Math.min(c,i),m=Math.max(m,t),g=Math.max(g,i)}const _=m-f,l=g-c,u=f+_/2,x=c+l/2;this._bounds=new d(u,x,_,l)}return this._bounds}setTransform(t){this._transform=t,this._offsets=null}_setOffsets(){this._offsets||(this._offsets={topLeft:[0,0],topRight:[0,0],bottomLeft:[0,0],bottomRight:[0,0]});const t=s(o(),this._rotationT,this._transform);this._offsets.topLeft[0]=this._data[0],this._offsets.topLeft[1]=this._data[1],this._offsets.topRight[0]=this._data[2],this._offsets.topRight[1]=this._data[3],this._offsets.bottomLeft[0]=this._data[4],this._offsets.bottomLeft[1]=this._data[5],this._offsets.bottomRight[0]=this._data[6],this._offsets.bottomRight[1]=this._data[7],n(this._offsets.topLeft,this._offsets.topLeft,t),n(this._offsets.topRight,this._offsets.topRight,t),n(this._offsets.bottomLeft,this._offsets.bottomLeft,t),n(this._offsets.bottomRight,this._offsets.bottomRight,t)}_setTextureCoords({x:t,y:s,width:i,height:e}){this._texcoords={topLeft:[t,s],topRight:[t+i,s],bottomLeft:[t,s+e],bottomRight:[t+i,s+e]}}}const L=(t,s)=>({code:0,page:0,sdf:!0,rect:new m(0,0,11,8),textureBinding:s,metrics:{advance:0,height:4,width:t,left:0,top:0}});function M(t,s){return t.forEach(t=>n(t,t,s)),{topLeft:t[0],topRight:t[1],bottomLeft:t[2],bottomRight:t[3]}}class R{constructor(t,s,i){this._rotation=0,this._decorate(t,s,i),this.glyphs=t,this.bounds=this._createBounds(t),this.isMultiline=s.length>1,this._hasRotation=0!==i.angle,this._transform=this._createGlyphTransform(this.bounds,i),this._borderLineSizePx=i.borderLineSizePx,(i.borderLineSizePx||i.hasBackground)&&([this.bounds,this.textBox]=this.shapeBackground(this._transform));for(const e of t)e.setTransform(this._transform)}setRotation(i){if(0===i&&0===this._rotation)return;this._rotation=i;const e=this._transform,h=t(o(),i);s(e,h,e);for(const t of this.glyphs)t.setTransform(this._transform)}_decorate(t,s,i){if(!i.decoration||"none"===i.decoration||!t.length)return;const e=i.scale,o="underline"===i.decoration?l:u,h=t[0].textureBinding;for(const n of s){const s=n.startX*e,i=n.startY*e,r=(n.width+n.glyphWidthEnd)*e;t.push(new w(s,i+o*e,L(r,h),1))}}shapeBackground(t){const s=this._borderLineSizePx||0,i=(y+s)/2,e=this._borderLineSizePx?i:0,{xmin:o,ymin:h,xmax:n,ymax:r,x:a,y:f,width:c,height:m}=this.bounds,g=[o-b,h-b],_=[n+b,h-b],l=[o-b,r+b],u=[n+b,r+b],x=M([[g[0]-i,g[1]-i],[_[0]+i,_[1]-i],[g[0]+e,g[1]+e],[_[0]-e,_[1]+e]],t),p=M([[l[0]+e,l[1]-e],[u[0]-e,u[1]-e],[l[0]-i,l[1]+i],[u[0]+i,u[1]+i]],t),w=M([[g[0]-i,g[1]-i],[g[0]+e,g[1]+e],[l[0]-i,l[1]+i],[l[0]+e,l[1]-e]],t),L=M([[_[0]-e,_[1]+e],[_[0]+i,_[1]-i],[u[0]-e,u[1]-e],[u[0]+i,u[1]+i]],t),R={main:M([g,_,l,u],t),top:x,bot:p,left:w,right:L};return[new d(a,f,c+2*i,m+2*i),R]}get boundsT(){const t=this.bounds,s=r(a(),t.x,t.y);if(n(s,s,this._transform),this._hasRotation){const i=Math.max(t.width,t.height);return new d(s[0],s[1],i,i)}return new d(s[0],s[1],t.width,t.height)}_createBounds(t){let s=1/0,i=1/0,e=0,o=0;for(const r of t)s=Math.min(s,r.xTopLeft),i=Math.min(i,r.yTopLeft),e=Math.max(e,r.xBottomRight),o=Math.max(o,r.yBottomRight);const h=e-s,n=o-i;return new d(s+h/2,i+n/2,h,n)}_createGlyphTransform(t,s){const h=p*s.angle,n=o(),f=a();return i(n,n,r(f,s.xOffset,-s.yOffset)),s.useCIMAngleBehavior?e(n,n,h):(i(n,n,r(f,t.x,t.y)),e(n,n,h),i(n,n,r(f,-t.x,-t.y))),n}}class B{constructor(t,s,i,e,o,h){this.glyphWidthEnd=0,this.startX=0,this.startY=0,this.start=Math.max(0,Math.min(s,i)),this.end=Math.max(0,Math.max(s,i)),this.end<t.length&&(this.glyphWidthEnd=t[this.end].metrics.width),this.width=e,this.yMin=o,this.yMax=h}}const T=t=>10===t,v=t=>32===t;function j(t,s,i){const e=new Array,o=1/i.scale,h=i.maxLineWidth*o,n=s?t.length-1:0,r=s?-1:t.length,a=s?-1:1;let f=n,c=0,m=0,d=f,g=d,_=0,l=1/0,u=0;for(;f!==r;){const{code:s,metrics:i}=t[f],o=Math.abs(i.top);if(T(s)||v(s)||(l=Math.min(l,o),u=Math.max(u,o+i.height)),T(s))f!==n&&(e.push(new B(t,d,f-a,c,l===1/0?0:l,u)),l=1/0,u=0),c=0,d=f+a,g=f+a,m=0;else if(v(s))g=f+a,m=0,_=i.advance,c+=i.advance;else if(c>h){if(g!==d){const s=g-2*a;c-=_,e.push(new B(t,d,s,c-m,l,u)),l=1/0,u=0,d=g,c=m}else e.push(new B(t,d,f-a,c,l,u)),l=1/0,u=0,d=f,g=f,c=0;c+=i.advance,m+=i.advance}else c+=i.advance,m+=i.advance;f+=a}const x=new B(t,d,f-a,c,l,u);return x.start>=0&&x.end<t.length&&e.push(x),e}function A(t,s){let i=0;for(let h=0;h<t.length;h++){const{width:s}=t[h];i=Math.max(s,i)}const e="underline"===s.decoration?_:0,o=t[0].yMin;return{x:0,y:o,height:t[t.length-1].yMax+s.lineHeight*(t.length-1)+e-o,width:i}}function z(t,s){const i=s.scale,e=new Array,{glyphs:o,isRightToLeft:h}=t,n=j(o,h,s),r=n.length?A(n,s):{y:0,height:0},a=f(s.horizontalAlignment),m=c(s.verticalAlignment),d=2===m?1:0,_=d?0:m-1,l=(1-d)*-r.y+_*(r.height/2)+(d?1:0)*-g;for(let f=0;f<n.length;f++){const{start:h,end:r,width:c}=n[f];let m=-1*(a+1)*(c/2)-x;const d=(t.isRightToLeft?n.length-1-f:f)*s.lineHeight+l-x;n[f].startX=m,n[f].startY=d;for(let t=h;t<=r;t++){const s=o[t];if(T(s.code))continue;const h=new w(m+s.metrics.left,d-s.metrics.top,s,i);m+=s.metrics.advance,e.push(h)}}return new R(e,n,s)}export{w as ShapedGlyph,R as ShapingInfo,z as shapeGlyphs};
5
+ import{fromRotation as t,multiply as s,translate as i,rotate as e}from"../../../../../../core/libs/gl-matrix-2/math/mat2d.js";import{create as o,transformMany as h}from"../../../../../../core/libs/gl-matrix-2/factories/mat2df32.js";import{transformMat2d as n,set as r}from"../../../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as a}from"../../../../../../core/libs/gl-matrix-2/factories/vec2f32.js";import{getXAnchorDirection as f,getYAnchorDirection as c}from"../../alignmentUtils.js";import d from"../../Rect.js";import m from"../../collisions/BoundingBox.js";const g=22,_=4,l=g+_,u=g-6,x=Math.PI/180,p=8,b=1.5;class y{constructor(t,s,i,e){this._rotationT=o(),this._xBounds=0,this._yBounds=0,this.minZoom=0,this.maxZoom=255,this._bounds=null;const h=i.rect,n=new Float32Array(8);t*=e,s*=e;const r=0===i.code?i.metrics.width:h.width*e,a=0===i.code?i.metrics.height:h.height*e;this.width=r,this.height=a,n[0]=t,n[1]=s,n[2]=t+r,n[3]=s,n[4]=t,n[5]=s+a,n[6]=t+r,n[7]=s+a,this._data=n,this._setTextureCoords(h),this._scale=e,this._mosaic=i,this.x=t,this.y=s,this.maxOffset=Math.max(t+r,s+a)}get mosaic(){return this._mosaic}set angle(s){this._angle=s,t(this._rotationT,-s),this._setOffsets()}get angle(){return this._angle}get xTopLeft(){return this._data[0]}get yTopLeft(){return this._data[1]}get xBottomRight(){return this._data[6]}get yBottomRight(){return this._data[7]}get texcoords(){return this._texcoords}get textureBinding(){return this._mosaic.textureBinding}get offsets(){return this._offsets||this._setOffsets(),this._offsets}get bounds(){if(!this._bounds){const{height:t,width:i}=this._mosaic.metrics,e=i*this._scale,n=Math.abs(t)*this._scale,r=new Float32Array(8);r[0]=this.x,r[1]=this.y,r[2]=this.x+e,r[3]=this.y,r[4]=this.x,r[5]=this.y+n,r[6]=this.x+e,r[7]=this.y+n;const a=s(o(),this._rotationT,this._transform);h(r,r,a);let f=1/0,c=1/0,d=-1/0,g=-1/0;for(let s=0;s<4;s++){const t=r[2*s],i=r[2*s+1];f=Math.min(f,t),c=Math.min(c,i),d=Math.max(d,t),g=Math.max(g,i)}const _=d-f,l=g-c,u=f+_/2,x=c+l/2;this._bounds=new m(u,x,_,l)}return this._bounds}setTransform(t){this._transform=t,this._offsets=null}_setOffsets(){this._offsets||(this._offsets={topLeft:[0,0],topRight:[0,0],bottomLeft:[0,0],bottomRight:[0,0]});const t=s(o(),this._rotationT,this._transform);this._offsets.topLeft[0]=this._data[0],this._offsets.topLeft[1]=this._data[1],this._offsets.topRight[0]=this._data[2],this._offsets.topRight[1]=this._data[3],this._offsets.bottomLeft[0]=this._data[4],this._offsets.bottomLeft[1]=this._data[5],this._offsets.bottomRight[0]=this._data[6],this._offsets.bottomRight[1]=this._data[7],n(this._offsets.topLeft,this._offsets.topLeft,t),n(this._offsets.topRight,this._offsets.topRight,t),n(this._offsets.bottomLeft,this._offsets.bottomLeft,t),n(this._offsets.bottomRight,this._offsets.bottomRight,t)}_setTextureCoords({x:t,y:s,width:i,height:e}){this._texcoords={topLeft:[t,s],topRight:[t+i,s],bottomLeft:[t,s+e],bottomRight:[t+i,s+e]}}}const w=(t,s)=>({code:0,page:0,sdf:!0,rect:new d(0,0,11,8),textureBinding:s,metrics:{advance:0,height:4,width:t,left:0,top:0}});function L(t,s){return t.forEach(t=>n(t,t,s)),{topLeft:t[0],topRight:t[1],bottomLeft:t[2],bottomRight:t[3]}}class M{constructor(t,s,i,e){this._rotation=0,this._decorate(t,s,i,e),this.glyphs=t,this.bounds=this._createBounds(t),this.isMultiline=s.length>1,this._hasRotation=0!==i.angle,this._transform=this._createGlyphTransform(this.bounds,i),this._borderLineSizePx=i.borderLineSizePx,(i.borderLineSizePx||i.hasBackground)&&([this.bounds,this.textBox]=this.shapeBackground(this._transform));for(const o of t)o.setTransform(this._transform)}setRotation(i){if(0===i&&0===this._rotation)return;this._rotation=i;const e=this._transform,h=t(o(),i);s(e,h,e);for(const t of this.glyphs)t.setTransform(this._transform)}_decorate(t,s,i,e){if(!i.decoration||"none"===i.decoration||!t.length)return;const o=i.scale,h="underline"===i.decoration?e?.baseline??l:e?.midline??u,n=t[0].textureBinding;for(const r of s){const s=r.startX*o,i=r.startY*o,e=(r.width+r.glyphWidthEnd)*o;t.push(new y(s,i+h*o,w(e,n),1))}}shapeBackground(t){const s=this._borderLineSizePx||0,i=(b+s)/2,e=this._borderLineSizePx?i:0,{xmin:o,ymin:h,xmax:n,ymax:r,x:a,y:f,width:c,height:d}=this.bounds,g=[o-p,h-p],_=[n+p,h-p],l=[o-p,r+p],u=[n+p,r+p],x=L([[g[0]-i,g[1]-i],[_[0]+i,_[1]-i],[g[0]+e,g[1]+e],[_[0]-e,_[1]+e]],t),y=L([[l[0]+e,l[1]-e],[u[0]-e,u[1]-e],[l[0]-i,l[1]+i],[u[0]+i,u[1]+i]],t),w=L([[g[0]-i,g[1]-i],[g[0]+e,g[1]+e],[l[0]-i,l[1]+i],[l[0]+e,l[1]-e]],t),M=L([[_[0]-e,_[1]+e],[_[0]+i,_[1]-i],[u[0]-e,u[1]-e],[u[0]+i,u[1]+i]],t),R={main:L([g,_,l,u],t),top:x,bot:y,left:w,right:M};return[new m(a,f,c+2*i,d+2*i),R]}get boundsT(){const t=this.bounds,s=r(a(),t.x,t.y);if(n(s,s,this._transform),this._hasRotation){const i=Math.max(t.width,t.height);return new m(s[0],s[1],i,i)}return new m(s[0],s[1],t.width,t.height)}_createBounds(t){let s=1/0,i=1/0,e=0,o=0;for(const r of t)s=Math.min(s,r.xTopLeft),i=Math.min(i,r.yTopLeft),e=Math.max(e,r.xBottomRight),o=Math.max(o,r.yBottomRight);const h=e-s,n=o-i;return new m(s+h/2,i+n/2,h,n)}_createGlyphTransform(t,s){const h=x*s.angle,n=o(),f=a();return i(n,n,r(f,s.xOffset,-s.yOffset)),s.useCIMAngleBehavior?e(n,n,h):(i(n,n,r(f,t.x,t.y)),e(n,n,h),i(n,n,r(f,-t.x,-t.y))),n}}class R{constructor(t,s,i,e,o,h){this.glyphWidthEnd=0,this.startX=0,this.startY=0,this.start=Math.max(0,Math.min(s,i)),this.end=Math.max(0,Math.max(s,i)),this.end<t.length&&(this.glyphWidthEnd=t[this.end].metrics.width),this.width=e,this.yMin=o,this.yMax=h}}const B=t=>10===t,T=t=>32===t;function v(t,s,i){const e=new Array,o=1/i.scale,h=i.maxLineWidth*o,n=s?t.length-1:0,r=s?-1:t.length,a=s?-1:1;let f=n,c=0,d=0,m=f,g=m,_=0,l=1/0,u=0;for(;f!==r;){const{code:s,metrics:i}=t[f],o=Math.abs(i.top);if(B(s)||T(s)||(l=Math.min(l,o),u=Math.max(u,o+i.height)),B(s))f!==n&&(e.push(new R(t,m,f-a,c,l===1/0?0:l,u)),l=1/0,u=0),c=0,m=f+a,g=f+a,d=0;else if(T(s))g=f+a,d=0,_=i.advance,c+=i.advance;else if(c>h){if(g!==m){const s=g-2*a;c-=_,e.push(new R(t,m,s,c-d,l,u)),l=1/0,u=0,m=g,c=d}else e.push(new R(t,m,f-a,c,l,u)),l=1/0,u=0,m=f,g=f,c=0;c+=i.advance,d+=i.advance}else c+=i.advance,d+=i.advance;f+=a}const x=new R(t,m,f-a,c,l,u);return x.start>=0&&x.end<t.length&&e.push(x),e}function j(t,s){let i=0;for(let h=0;h<t.length;h++){const{width:s}=t[h];i=Math.max(s,i)}const e="underline"===s.decoration?_:0,o=t[0].yMin;return{x:0,y:o,height:t[t.length-1].yMax+s.lineHeight*(t.length-1)+e-o,width:i}}function A(t,s){const i=s.scale,e=new Array,o=t.sdfPadding,{faceInfo:h,glyphs:n,isRightToLeft:r}=t,a=v(n,r,s),d=a.length?j(a,s):{y:0,height:0},m=f(s.horizontalAlignment),_=c(s.verticalAlignment),l=2===_?1:0,u=l?0:_-1,x=(1-l)*-d.y+u*(d.height/2)+l*-g;for(let f=0;f<a.length;f++){const{start:h,end:r,width:c}=a[f];let d=-1*(m+1)*(c/2)-o;const g=(t.isRightToLeft?a.length-1-f:f)*s.lineHeight+x-o;a[f].startX=d,a[f].startY=g;for(let t=h;t<=r;t++){const s=n[t];if(B(s.code))continue;const o=new y(d+s.metrics.left,g-s.metrics.top,s,i);d+=s.metrics.advance,e.push(o)}}return new M(e,a,s,h)}export{y as ShapedGlyph,M as ShapingInfo,A as shapeGlyphs};
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{memoize as e}from"../../../../../../../core/MapUtils.js";import{pt2px as t}from"../../../../../../../core/screenUtils.js";import{numericHash as i}from"../../../../../../../core/string.js";import{fromRotation as r,translate as s}from"../../../../../../../core/libs/gl-matrix-2/math/mat2d.js";import{create as o}from"../../../../../../../core/libs/gl-matrix-2/factories/mat2df32.js";import{transformMat2d as n,set as a,sub as l,normalize as c,add as h,scale as m}from"../../../../../../../core/libs/gl-matrix-2/math/vec2.js";import{fromValues as d}from"../../../../../../../core/libs/gl-matrix-2/factories/vec2f32.js";import{create as u}from"../../../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{GeometryCursor as f}from"../../../../../../../geometry/GeometryCursor.js";import{generalizeOptimizedGeometry as g,convertToGeometry as _}from"../../../../../../../layers/graphics/featureConversionUtils.js";import p from"../../../../../../../layers/graphics/OptimizedGeometry.js";import{tileSize as b,minMaxZoomPrecisionFactor as x}from"../../../definitions.js";import v from"../../../collisions/BoundingBox.js";import{LabelMetric as M}from"../../../collisions/LabelMetric.js";import{smoothPaths as P,pathDivide as y}from"../../../mesh/templates/segmentUtils.js";import{getMinMaxZoom as w,processColorInput as L}from"../fill/meshWriterUtils.js";import{TextMeshWriter as I,maxLabelZoom as B}from"../text/TextMeshWriter.js";const S=1,z=0,D=128;function A(e,t,r){return i(`${e}${t}${r}`)}function j(e,t,r,s,o){return i(`${e}${t}${r}${s*2**(B-o)}`)}function G(e,t,r){return i(`${e}${t}${r}`)}function Z(e,t,r,s,o){return i(`${e}${o}${t}${r*2**(B-s)}`)}const k=e(e=>{let t=0;if(0===e)return 1/0;for(;!(e%2);)t++,e/=2;return t});class F extends I{constructor(){super(...arguments),this._zoomLevel=0}_write(e,t,i,r){if(this._zoomLevel=r||0,null!=i)throw new Error("InternalError: EffectGeometry not support for LabelMeshWriter");switch(t.geometryType){case"esriGeometryPoint":{const i=t.readXForDisplay(),r=t.readYForDisplay();this._writePoint(e,i,r,0,t);break}case"esriGeometryEnvelope":case"esriGeometryPolygon":{const i=t.readCentroidForDisplay();if(!i)return;const[r,s]=i.coords;this._writePoint(e,r,s,0,t);break}case"esriGeometryMultipoint":{let i=0;const r=f.fromFeatureSetReader(t);if(r?.nextPath())for(;r.nextPoint();)this._writePoint(e,r.x,r.y,i++,t);break}case"esriGeometryPolyline":this._writeLines(e,t)}}_getMetricDir(){const{horizontalAlignment:e,verticalAlignment:t}=this.evaluatedMeshParams;return["center"===e?0:"right"===e?-1:1,"middle"===t?0:"bottom"===t?-1:1]}_createLineLabelMetric(e,t,i,r,s,o){const[n,a]=this._getMetricDir(),l=this.evaluatedMeshParams.scaleInfo?.maxScale??0,c=this.evaluatedMeshParams.scaleInfo?.minScale??0,h=this.evaluatedMeshParams.labelClassId;return new M(e,h,t,i,r,s,n,a,l,c,o)}_writePoint(e,t,i,r,s){if(t<0||t>b||i<0||i>b)return;const o=this._getShaping();if(!o)return;const n=s.getDisplayId(),a=this.evaluatedMeshParams.labelClassId,l=A(this.evaluatedMeshParams.layerId,s.getObjectId(),r),c=G(s.getObjectId(),a,r),[h,m]=this._getMetricDir(),d=this.evaluatedMeshParams.scaleInfo?.maxScale??0,u=this.evaluatedMeshParams.scaleInfo?.minScale??0,f=this._getPointReferenceBounds()||{offsetX:0,offsetY:0,size:0};e.metricStart(new M(n,a,l,c,t,i,h,m,d,u,f)),this._writeGlyphs(e,n,t,i,o,0,f,void 0,!1),e.metricBoxWrite(o.boundsT),e.metricEnd()}_getPointReferenceBounds(){if(!this._references)return null;for(const e of this._references){const t=e.getBoundsInfo();if(t)return t}return null}_writeLines(e,t){const{scaleInfo:i,verticalAlignment:r}=this.evaluatedMeshParams,s=this.evaluatedMeshParams.repeatLabelDistance||128,o=this._getShaping("middle");if(!o)return;const n=(e,t,i,r)=>this._placeSubdivGlyphs(e,t,i,r),a=(o.bounds.width+s)/(1<<S);this._current={out:e,id:t.getDisplayId(),objId:t.getObjectId(),shaping:o,zoomRange:w(i,this.getTileInfo()),referenceBounds:this._getPointReferenceBounds()||{offsetX:0,offsetY:0,size:0},offsetDirection:null,pathIndex:0},this._verticalPlacement="bottom"===r?"above":"top"===r?"below":null,this._verticalPlacement?this._writeAboveAndBelowAlong(t,n,a):this._writeCenterAlong(t,n,a)}_writeAboveAndBelowAlong(e,t,i){const{repeatLabel:r}=this.evaluatedMeshParams,{shaping:s}=this._current,o=s.bounds.halfHeight,n=e.readGeometryForDisplay();if(!n)return;const a=g(n,"esriGeometryPolyline",1)??new p,l=$(a,o),c=$(a,-o),h=_(c,"esriGeometryPolyline",!1,!1),m=_(l,"esriGeometryPolyline",!1,!1),d=P(m.paths,s.bounds.width),u=P(h.paths,s.bounds.width);this._current.offsetDirection="above";for(let f=0;f<d.length;f++)this._current.pathIndex=f,y(d[f],i,t,!!r);this._current.offsetDirection="below";for(let f=0;f<u.length;f++)this._current.pathIndex=f,y(u[f],i,t,!!r)}_writeCenterAlong(e,t,i){const{repeatLabel:r}=this.evaluatedMeshParams,{shaping:s}=this._current,o=P(e.readLegacyGeometryForDisplay().paths,s.bounds.width);for(let n=0;n<o.length;n++)this._current.pathIndex=n,y(o[n],i,t,!!r)}_placeSubdivGlyphs(e,t,i,r){const{allowOverrun:s,labelPosition:o,repeatLabelDistance:n,layerId:a,labelClassId:l}=this.evaluatedMeshParams,{objId:c,shaping:h,pathIndex:m}=this._current,d=this._current.zoomRange[0],u=k(t),f=this._current.shaping.bounds.width/(1<<S),g=Math.sqrt(n||D)/(1<<S),_=Math.min(i,r-i),p=h.isMultiline?B:Math.log2(_/(g+f/2)),b=0===t?p:Math.min(u,p),x=Math.max(d,this._zoomLevel+S-b),v=this._zoomLevel-x,M=h.bounds.width/2*2**v,P=j(a,c,m,t,this._zoomLevel),y=Z(c,m,t,this._zoomLevel,l);this._current.shaping.isMultiline?0===t&&this._placeStraight(e,x,P,y):s&&v<0?this._placeStraightAlong(e,d,P,y):"parallel"===o?this._placeStraightAlong(e,x,P,y):"curved"===o&&this._placeCurved(e,x,M,P,y)}_placeStraight(e,t,i,r){const{out:s,id:o,shaping:n,referenceBounds:a}=this._current,{x:l,y:c}=e;s.metricStart(this._createLineLabelMetric(o,i,r,l,c)),s.metricBoxWrite(n.boundsT);const h=e.angle*(180/Math.PI)%360,m=(e.angle*(180/Math.PI)+180)%360;if(!this._verticalPlacement||this._verticalPlacement===this._current.offsetDirection){const e={clipAngle:h,mapAligned:!0,isLineLabel:!0,minZoom:t};this._writeGlyphs(s,o,l,c,n,0,a,e,!1)}if(!this._verticalPlacement||this._verticalPlacement!==this._current.offsetDirection){const e={clipAngle:m,mapAligned:!0,isLineLabel:!0,minZoom:t};this._writeGlyphs(s,o,l,c,n,0,a,e,!1)}s.metricEnd()}_placeCurved(e,t,i,r,s){const{out:o,id:n}=this._current;o.metricStart(this._createLineLabelMetric(n,r,s,e.x,e.y));const a=e.clone(),l=e.angle*(180/Math.PI)%360,c=(e.angle*(180/Math.PI)+180)%360;this._verticalPlacement&&this._verticalPlacement!==this._current.offsetDirection||(this._placeFirst(a,t,1,l),this._placeBack(e,a,t,i,1,l),this._placeForward(e,a,t,i,1,l)),this._verticalPlacement&&this._verticalPlacement===this._current.offsetDirection||(this._placeFirst(a,t,0,c),this._placeBack(e,a,t,i,0,c),this._placeForward(e,a,t,i,0,c)),o.metricEnd()}_placeStraightAlong(e,i,n,a){const{out:l,id:c,shaping:h,zoomRange:m,referenceBounds:u}=this._current,{boxBorderLineColor:f,boxBackgroundColor:g}=this.evaluatedMeshParams,_=e.clone(),p=e.angle*(180/Math.PI)%360,b=(e.angle*(180/Math.PI)+180)%360,x=h.glyphs.length>0&&!(!f&&!g);if(l.metricStart(this._createLineLabelMetric(c,n,a,e.x,e.y)),x){const n=Math.max(i,m[0],0),a=Math.min(B,m[1]),f=r(o(),-e.angle),g={minZoom:n,maxZoom:a,clipAngle:p,mapAligned:!0,isLineLabel:!0},_=t(this.evaluatedMeshParams.offsetX),x=t(this.evaluatedMeshParams.offsetY);if(!this._verticalPlacement||this._verticalPlacement===this._current.offsetDirection){const t=d(_,-1*x),[i,r]=h.shapeBackground(s(o(),f,t));l.recordStart(this.instanceId,this.attributeLayout,h.glyphs[0].textureBinding),this._writeTextBox(l,c,e.x,e.y,r,u,g),l.recordEnd()}if(!this._verticalPlacement||this._verticalPlacement!==this._current.offsetDirection){const t=d(_,x),[i,r]=h.shapeBackground(s(o(),f,t));g.clipAngle=b,l.recordStart(this.instanceId,this.attributeLayout,h.glyphs[0].textureBinding),this._writeTextBox(l,c,e.x,e.y,r,u,g),l.recordEnd()}}this._verticalPlacement&&this._verticalPlacement!==this._current.offsetDirection||this._placeFirst(_,i,1,p,!0),this._verticalPlacement&&this._verticalPlacement===this._current.offsetDirection||this._placeFirst(_,i,0,b,!0),l.metricEnd()}_placeBack(e,t,i,r,s,o){const n=e.clone();let a=e.backwardLength+z;for(;n.prev()&&!(a>=r);)this._placeOnSegment(n,t,a,i,-1,s,o),a+=n.length+z}_placeForward(e,t,i,r,s,o){const n=e.clone();let a=e.remainingLength+z;for(;n.next()&&!(a>=r);)this._placeOnSegment(n,t,a,i,1,s,o),a+=n.length+z}_placeFirst(e,i,s,a,l=!1){const{out:c,id:h,shaping:m,zoomRange:u,referenceBounds:f}=this._current,g=m.glyphs,_=t(this.evaluatedMeshParams.offsetX),p=t(this.evaluatedMeshParams.offsetY),b=d(_,p),x=r(o(),-e.angle);n(b,b,x);for(const t of g){const r=t.x>m.bounds.x?s:1-s,o=r*e.remainingLength+(1-r)*e.backwardLength,n=Math.abs(t.x+t.width/2-m.bounds.x),d=Math.max(0,this._zoomLevel+Math.log2(n/(o+z))),g=Math.max(i,l?0:d);if(t.maxZoom=Math.min(u[1],B),t.angle=e.angle+(1-s)*Math.PI,t.minZoom=Math.max(u[0],g),this._writeLineGlyph(c,h,e.x,e.y,t,a,f,!0),(s||this._current.offsetDirection)&&this._isVisible(t.minZoom,t.maxZoom)){const e=new v(t.bounds.x+b[0],t.bounds.y+b[1],t.bounds.width,t.bounds.height);c.metricBoxWrite(e)}}}_placeOnSegment(e,i,s,a,l,c,h){const{out:m,id:u,shaping:f,referenceBounds:g}=this._current,_=f.glyphs,p=e.dx/e.length,b=e.dy/e.length,x={x:e.x+s*-l*p,y:e.y+s*-l*b},M=t(this.evaluatedMeshParams.offsetX),P=t(this.evaluatedMeshParams.offsetY),y=d(M,P),w=r(o(),-e.angle);n(y,y,w);for(const t of _){const i=t.x>f.bounds.x?c:1-c;if(!(i&&1===l||!i&&-1===l))continue;const r=Math.abs(t.x+t.width/2-f.bounds.x),o=Math.max(0,this._zoomLevel+Math.log2(r/s)-.1),n=Math.max(a,this._zoomLevel+Math.log2(r/(s+e.length+z)));if(0!==o&&(t.angle=e.angle+(1-c)*Math.PI,t.minZoom=n,t.maxZoom=o,this._writeLineGlyph(m,u,x.x,x.y,t,h,g,!0),(c||this._current.offsetDirection)&&this._isVisible(t.minZoom,t.maxZoom))){const e=new v(t.bounds.x+y[0],t.bounds.y+y[1],t.bounds.width,t.bounds.height);m.metricBoxWrite(e)}}}_writeLineGlyph(e,t,i,r,s,o,n,a){if(i<0||i>b||r<0||r>b)return;e.recordStart(this.instanceId,this.attributeLayout,s.textureBinding);const{texcoords:l,offsets:c}=s,{fontSize:h,haloSize:m,outlineSize:d}=this._textMeshTransformProps;this._writeQuad(e,t,i,r,{texcoords:l,offsets:c,fontSize:h,haloSize:m,outlineSize:d,color:L(this.evaluatedMeshParams.color),isBackground:!1,referenceBounds:n,minZoom:Math.max(this._current.zoomRange[0],s.minZoom),maxZoom:Math.min(this._current.zoomRange[1],s.maxZoom),clipAngle:o,mapAligned:a,isLineLabel:!0}),e.recordEnd()}_packedZoom(e){return Math.floor(e*x)/x}_isVisible(e,t){let i=Math.max(this._current.zoomRange[0],e),r=Math.min(this._current.zoomRange[1],t);i=this._packedZoom(i),r=this._packedZoom(r);const s=this._packedZoom(this._zoomLevel);return i<=s&&s<=r}}function $(e,t){const i=new p,{coords:r,lengths:s}=e,o=u(),n=u(),d=u(),f=u(),g=u(),_=u(),b=2;let x=0;for(let u=0;u<s.length;u++){const e=s[u];for(let s=0;s<e;s++){const u=b*(s+x-1),p=b*(s+x),v=b*(s+x+1);s>0?a(o,r[u],r[u+1]):a(o,0,0),a(n,r[p],r[p+1]),s<e-1?a(d,r[v],r[v+1]):a(d,0,0),0===s?a(f,0,0):(l(f,n,o),c(f,f),a(f,f[1],-f[0])),s===e-1?a(g,0,0):(l(g,d,n),c(g,g),a(g,g[1],-g[0])),h(_,f,g),c(_,_);const M=_[0]*g[0]+_[1]*g[1];0!==M&&m(_,_,M),m(_,_,t),i.coords.push(n[0]+_[0],n[1]+_[1])}i.lengths.push(e),x+=e}return i}export{F as LabelMeshWriter,A as labelIdHash,G as labelMetricHash,j as lineLabelIdHash,Z as lineLabelMetricHash};
5
+ import{memoize as e}from"../../../../../../../core/MapUtils.js";import{pt2px as t}from"../../../../../../../core/screenUtils.js";import{numericHash as i}from"../../../../../../../core/string.js";import{fromRotation as s,translate as r}from"../../../../../../../core/libs/gl-matrix-2/math/mat2d.js";import{create as o}from"../../../../../../../core/libs/gl-matrix-2/factories/mat2df32.js";import{transformMat2d as n,set as a,sub as l,normalize as h,add as c,scale as m}from"../../../../../../../core/libs/gl-matrix-2/math/vec2.js";import{fromValues as d}from"../../../../../../../core/libs/gl-matrix-2/factories/vec2f32.js";import{create as u}from"../../../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{GeometryCursor as f}from"../../../../../../../geometry/GeometryCursor.js";import{generalizeOptimizedGeometry as g,convertToGeometry as _}from"../../../../../../../layers/graphics/featureConversionUtils.js";import p from"../../../../../../../layers/graphics/OptimizedGeometry.js";import{tileSize as b,minMaxZoomPrecisionFactor as x}from"../../../definitions.js";import v from"../../../collisions/BoundingBox.js";import{LabelMetric as M}from"../../../collisions/LabelMetric.js";import{smoothPaths as P,pathDivide as y}from"../../../mesh/templates/segmentUtils.js";import{getMinMaxZoom as w,processColorInput as L}from"../fill/meshWriterUtils.js";import{TextMeshWriter as I,maxLabelZoom as S}from"../text/TextMeshWriter.js";const B=1,z=0,D=128;function A(e,t,s){return i(`${e}${t}${s}`)}function j(e,t,s,r,o){return i(`${e}${t}${s}${r*2**(S-o)}`)}function G(e,t,s){return i(`${e}${t}${s}`)}function Z(e,t,s,r,o){return i(`${e}${o}${t}${s*2**(S-r)}`)}const k=e(e=>{let t=0;if(0===e)return 1/0;for(;!(e%2);)t++,e/=2;return t});class F extends I{constructor(){super(...arguments),this._zoomLevel=0}_write(e,t,i,s){if(this._zoomLevel=s||0,null!=i)throw new Error("InternalError: EffectGeometry not support for LabelMeshWriter");switch(t.geometryType){case"esriGeometryPoint":{const i=t.readXForDisplay(),s=t.readYForDisplay();this._writePoint(e,i,s,0,t);break}case"esriGeometryEnvelope":case"esriGeometryPolygon":{const i=t.readCentroidForDisplay();if(!i)return;const[s,r]=i.coords;this._writePoint(e,s,r,0,t);break}case"esriGeometryMultipoint":{let i=0;const s=f.fromFeatureSetReader(t);if(s?.nextPath())for(;s.nextPoint();)this._writePoint(e,s.x,s.y,i++,t);break}case"esriGeometryPolyline":this._writeLines(e,t)}}_getMetricDir(){const{horizontalAlignment:e,verticalAlignment:t}=this.evaluatedMeshParams;return["center"===e?0:"right"===e?-1:1,"middle"===t?0:"bottom"===t?-1:1]}_createLineLabelMetric(e,t,i,s,r,o){const[n,a]=this._getMetricDir(),l=this.evaluatedMeshParams.scaleInfo?.maxScale??0,h=this.evaluatedMeshParams.scaleInfo?.minScale??0,c=this.evaluatedMeshParams.labelClassId;return new M(e,c,t,i,s,r,n,a,l,h,o)}_writePoint(e,t,i,s,r){if(t<0||t>b||i<0||i>b)return;const o=this._getShaping();if(!o)return;const n=r.getDisplayId(),a=this.evaluatedMeshParams.labelClassId,l=A(this.evaluatedMeshParams.layerId,r.getObjectId(),s),h=G(r.getObjectId(),a,s),[c,m]=this._getMetricDir(),d=this.evaluatedMeshParams.scaleInfo?.maxScale??0,u=this.evaluatedMeshParams.scaleInfo?.minScale??0,f=this._getPointReferenceBounds()||{offsetX:0,offsetY:0,size:0};e.metricStart(new M(n,a,l,h,t,i,c,m,d,u,f)),this._writeGlyphs(e,n,t,i,o,0,f,void 0,!1),e.metricBoxWrite(o.boundsT),e.metricEnd()}_getPointReferenceBounds(){if(!this._references)return null;for(const e of this._references){const t=e.getBoundsInfo();if(t)return t}return null}_writeLines(e,t){const{scaleInfo:i,verticalAlignment:s}=this.evaluatedMeshParams,r=this.evaluatedMeshParams.repeatLabelDistance||128,o=this._getShaping("middle");if(!o)return;const n=(e,t,i,s)=>this._placeSubdivGlyphs(e,t,i,s),a=(o.bounds.width+r)/(1<<B);this._current={out:e,id:t.getDisplayId(),objId:t.getObjectId(),shaping:o,zoomRange:w(i,this.getTileInfo()),referenceBounds:this._getPointReferenceBounds()||{offsetX:0,offsetY:0,size:0},offsetDirection:null,pathIndex:0},this._verticalPlacement="bottom"===s?"above":"top"===s?"below":null,this._verticalPlacement?this._writeAboveAndBelowAlong(t,n,a):this._writeCenterAlong(t,n,a)}_writeAboveAndBelowAlong(e,t,i){const{repeatLabel:s}=this.evaluatedMeshParams,{shaping:r}=this._current,o=r.bounds.halfHeight,n=e.readGeometryForDisplay();if(!n)return;const a=g(n,"esriGeometryPolyline",1)??new p,l=R(a,o),h=R(a,-o),c=_(h,"esriGeometryPolyline",!1,!1),m=_(l,"esriGeometryPolyline",!1,!1),d=P(m.paths,r.bounds.width),u=P(c.paths,r.bounds.width);this._current.offsetDirection="above";for(let f=0;f<d.length;f++)this._current.pathIndex=f,y(d[f],i,t,!!s);this._current.offsetDirection="below";for(let f=0;f<u.length;f++)this._current.pathIndex=f,y(u[f],i,t,!!s)}_writeCenterAlong(e,t,i){const{repeatLabel:s}=this.evaluatedMeshParams,{shaping:r}=this._current,o=P(e.readLegacyGeometryForDisplay().paths,r.bounds.width);for(let n=0;n<o.length;n++)this._current.pathIndex=n,y(o[n],i,t,!!s)}_placeSubdivGlyphs(e,t,i,s){const{allowOverrun:r,labelPosition:o,repeatLabelDistance:n,layerId:a,labelClassId:l}=this.evaluatedMeshParams,{objId:h,shaping:c,pathIndex:m}=this._current,d=this._current.zoomRange[0],u=k(t),f=this._current.shaping.bounds.width/(1<<B),g=Math.sqrt(n||D)/(1<<B),_=Math.min(i,s-i),p=c.isMultiline?S:Math.log2(_/(g+f/2)),b=0===t?p:Math.min(u,p),x=Math.max(d,this._zoomLevel+B-b),v=this._zoomLevel-x,M=c.bounds.width/2*2**v,P=j(a,h,m,t,this._zoomLevel),y=Z(h,m,t,this._zoomLevel,l);this._current.shaping.isMultiline?0===t&&this._placeStraight(e,x,P,y):r&&v<0?this._placeStraightAlong(e,d,P,y):"parallel"===o?this._placeStraightAlong(e,x,P,y):"curved"===o&&this._placeCurved(e,x,M,P,y)}_placeStraight(e,t,i,s){const{out:r,id:o,shaping:n,referenceBounds:a}=this._current,{x:l,y:h}=e;r.metricStart(this._createLineLabelMetric(o,i,s,l,h)),r.metricBoxWrite(n.boundsT);const c=e.angle*(180/Math.PI)%360,m=(e.angle*(180/Math.PI)+180)%360;if(!this._verticalPlacement||this._verticalPlacement===this._current.offsetDirection){const e={clipAngle:c,mapAligned:!0,isLineLabel:!0,minZoom:t};this._writeGlyphs(r,o,l,h,n,0,a,e,!1)}if(!this._verticalPlacement||this._verticalPlacement!==this._current.offsetDirection){const e={clipAngle:m,mapAligned:!0,isLineLabel:!0,minZoom:t};this._writeGlyphs(r,o,l,h,n,0,a,e,!1)}r.metricEnd()}_placeCurved(e,t,i,s,r){const{out:o,id:n}=this._current;o.metricStart(this._createLineLabelMetric(n,s,r,e.x,e.y));const a=e.clone(),l=e.angle*(180/Math.PI)%360,h=(e.angle*(180/Math.PI)+180)%360;this._verticalPlacement&&this._verticalPlacement!==this._current.offsetDirection||(this._placeFirst(a,t,1,l),this._placeBack(e,a,t,i,1,l),this._placeForward(e,a,t,i,1,l)),this._verticalPlacement&&this._verticalPlacement===this._current.offsetDirection||(this._placeFirst(a,t,0,h),this._placeBack(e,a,t,i,0,h),this._placeForward(e,a,t,i,0,h)),o.metricEnd()}_placeStraightAlong(e,i,n,a){const{out:l,id:h,shaping:c,zoomRange:m,referenceBounds:u}=this._current,{boxBorderLineColor:f,boxBackgroundColor:g}=this.evaluatedMeshParams,_=e.clone(),p=e.angle*(180/Math.PI)%360,b=(e.angle*(180/Math.PI)+180)%360,x=c.glyphs.length>0&&!(!f&&!g);if(l.metricStart(this._createLineLabelMetric(h,n,a,e.x,e.y)),x){const n=Math.max(i,m[0],0),a=Math.min(S,m[1]),f=s(o(),-e.angle),g={minZoom:n,maxZoom:a,clipAngle:p,mapAligned:!0,isLineLabel:!0},_=t(this.evaluatedMeshParams.offsetX),x=t(this.evaluatedMeshParams.offsetY);if(!this._verticalPlacement||this._verticalPlacement===this._current.offsetDirection){const t=d(_,-1*x),[i,s]=c.shapeBackground(r(o(),f,t));l.recordStart(this.instanceId,this.attributeLayout,c.glyphs[0].textureBinding),this._writeTextBox(l,h,e.x,e.y,s,u,g),l.recordEnd()}if(!this._verticalPlacement||this._verticalPlacement!==this._current.offsetDirection){const t=d(_,x),[i,s]=c.shapeBackground(r(o(),f,t));g.clipAngle=b,l.recordStart(this.instanceId,this.attributeLayout,c.glyphs[0].textureBinding),this._writeTextBox(l,h,e.x,e.y,s,u,g),l.recordEnd()}}this._verticalPlacement&&this._verticalPlacement!==this._current.offsetDirection||this._placeFirst(_,i,1,p,!0),this._verticalPlacement&&this._verticalPlacement===this._current.offsetDirection||this._placeFirst(_,i,0,b,!0),l.metricEnd()}_placeBack(e,t,i,s,r,o){const n=e.clone();let a=e.backwardLength+z;for(;n.prev()&&!(a>=s);)this._placeOnSegment(n,t,a,i,-1,r,o),a+=n.length+z}_placeForward(e,t,i,s,r,o){const n=e.clone();let a=e.remainingLength+z;for(;n.next()&&!(a>=s);)this._placeOnSegment(n,t,a,i,1,r,o),a+=n.length+z}_placeFirst(e,i,r,a,l=!1){const{out:h,id:c,shaping:m,zoomRange:u,referenceBounds:f}=this._current,g=m.glyphs,_=t(this.evaluatedMeshParams.offsetX),p=t(this.evaluatedMeshParams.offsetY),b=d(_,p),x=s(o(),-e.angle);n(b,b,x);for(const t of g){const s=t.x>m.bounds.x?r:1-r,o=s*e.remainingLength+(1-s)*e.backwardLength,n=Math.abs(t.x+t.width/2-m.bounds.x),d=Math.max(0,this._zoomLevel+Math.log2(n/(o+z))),g=Math.max(i,l?0:d);if(t.maxZoom=Math.min(u[1],S),t.angle=e.angle+(1-r)*Math.PI,t.minZoom=Math.max(u[0],g),this._writeLineGlyph(h,c,e.x,e.y,t,a,f,!0),(r||this._current.offsetDirection)&&this._isVisible(t.minZoom,t.maxZoom)){const e=new v(t.bounds.x+b[0],t.bounds.y+b[1],t.bounds.width,t.bounds.height);h.metricBoxWrite(e)}}}_placeOnSegment(e,i,r,a,l,h,c){const{out:m,id:u,shaping:f,referenceBounds:g}=this._current,_=f.glyphs,p=e.dx/e.length,b=e.dy/e.length,x={x:e.x+r*-l*p,y:e.y+r*-l*b},M=t(this.evaluatedMeshParams.offsetX),P=t(this.evaluatedMeshParams.offsetY),y=d(M,P),w=s(o(),-e.angle);n(y,y,w);for(const t of _){const i=t.x>f.bounds.x?h:1-h;if(!(i&&1===l||!i&&-1===l))continue;const s=Math.abs(t.x+t.width/2-f.bounds.x),o=Math.max(0,this._zoomLevel+Math.log2(s/r)-.1),n=Math.max(a,this._zoomLevel+Math.log2(s/(r+e.length+z)));if(0!==o&&(t.angle=e.angle+(1-h)*Math.PI,t.minZoom=n,t.maxZoom=o,this._writeLineGlyph(m,u,x.x,x.y,t,c,g,!0),(h||this._current.offsetDirection)&&this._isVisible(t.minZoom,t.maxZoom))){const e=new v(t.bounds.x+y[0],t.bounds.y+y[1],t.bounds.width,t.bounds.height);m.metricBoxWrite(e)}}}_writeLineGlyph(e,t,i,s,r,o,n,a){if(i<0||i>b||s<0||s>b)return;e.recordStart(this.instanceId,this.attributeLayout,r.textureBinding);const{texcoords:l,offsets:h}=r,{fontSize:c,haloSize:m,outlineSize:d}=this._textMeshTransformProps,{sdfSize:u,sdfRadius:f}=this.evaluatedMeshParams.glyphs;this._writeQuad(e,t,i,s,{sdfSize:u,sdfRadius:f,texcoords:l,offsets:h,fontSize:c,haloSize:m,outlineSize:d,color:L(this.evaluatedMeshParams.color),isBackground:!1,referenceBounds:n,minZoom:Math.max(this._current.zoomRange[0],r.minZoom),maxZoom:Math.min(this._current.zoomRange[1],r.maxZoom),clipAngle:o,mapAligned:a,isLineLabel:!0}),e.recordEnd()}_packedZoom(e){return Math.floor(e*x)/x}_isVisible(e,t){let i=Math.max(this._current.zoomRange[0],e),s=Math.min(this._current.zoomRange[1],t);i=this._packedZoom(i),s=this._packedZoom(s);const r=this._packedZoom(this._zoomLevel);return i<=r&&r<=s}}function R(e,t){const i=new p,{coords:s,lengths:r}=e,o=u(),n=u(),d=u(),f=u(),g=u(),_=u(),b=2;let x=0;for(let u=0;u<r.length;u++){const e=r[u];for(let r=0;r<e;r++){const u=b*(r+x-1),p=b*(r+x),v=b*(r+x+1);r>0?a(o,s[u],s[u+1]):a(o,0,0),a(n,s[p],s[p+1]),r<e-1?a(d,s[v],s[v+1]):a(d,0,0),0===r?a(f,0,0):(l(f,n,o),h(f,f),a(f,f[1],-f[0])),r===e-1?a(g,0,0):(l(g,d,n),h(g,g),a(g,g[1],-g[0])),c(_,f,g),h(_,_);const M=_[0]*g[0]+_[1]*g[1];0!==M&&m(_,_,M),m(_,_,t),i.coords.push(n[0]+_[0],n[1]+_[1])}i.lengths.push(e),x+=e}return i}export{F as LabelMeshWriter,A as labelIdHash,G as labelMetricHash,j as lineLabelIdHash,Z as lineLabelMetricHash};
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- const e=3.14159265359/180,o=3.14159265359/128,t=180/3.141592654,c=1/8,n=1,p=1,r=1.1,s=1,x=1/4,a=1/8,b=.2,d=24,f=8,g=8,h=1e-5,i=.05,j=2,k=0,l=1,m=2,q=3,u=1e-30,v=1,w=4,y=0,z=2,A=3,B=0,C=2,D=2,E=3,F=0,G=3,H=16777216,I=1.1,J=16,K=128,L=1;export{l as attrVvColor,m as attrVvOpacity,q as attrVvRotation,k as attrVvSize,C as bitsetFillRandomPatternOffset,w as bitsetGenericConsiderAlphaOnly,v as bitsetGenericLockColor,E as bitsetLineIsSdf,D as bitsetLineScaleDash,y as bitsetMarkerAlignmentMap,z as bitsetMarkerOutlineAllowColorOverride,A as bitsetMarkerScaleSymbolsProportionally,L as bitsetOutlineUsesColorVV,F as bitsetTextIsBackground,G as bitsetTextIsMapAligned,B as bitsetTypeFillOutline,o as c256ToRad,e as cDegToRad,t as cRadToDeg,h as epsilon,i as epsilonHitTest,x as extrudeScalePlacementPadding,n as fillPositionPrecision,I as magnifierBarrelFactor,j as maxFilterCount,H as maxRepresentableInt,f as maxSdfDistance,u as nanMagicNumber,a as offsetPrecision,b as outlineScale,J as packPrecision,g as placementPadding,c as positionPrecision,d as sdfFontSize,K as signedToUnsignedByte,p as softEdgeRatio,s as thinLineHalfWidth,r as thinLineWidthFactor};
5
+ const e=3.14159265359/180,o=3.14159265359/128,t=180/3.141592654,c=1/8,n=1,p=1,r=1.1,s=1,x=1/4,a=1/8,b=.2,d=8,f=1e-5,g=.05,h=2,i=0,j=1,k=2,l=3,m=1e-30,q=1,u=4,v=0,w=2,y=3,z=0,A=2,B=2,C=3,D=0,E=3,F=16777216,G=1.1,H=16,I=128,J=1;export{j as attrVvColor,k as attrVvOpacity,l as attrVvRotation,i as attrVvSize,A as bitsetFillRandomPatternOffset,u as bitsetGenericConsiderAlphaOnly,q as bitsetGenericLockColor,C as bitsetLineIsSdf,B as bitsetLineScaleDash,v as bitsetMarkerAlignmentMap,w as bitsetMarkerOutlineAllowColorOverride,y as bitsetMarkerScaleSymbolsProportionally,J as bitsetOutlineUsesColorVV,D as bitsetTextIsBackground,E as bitsetTextIsMapAligned,z as bitsetTypeFillOutline,o as c256ToRad,e as cDegToRad,t as cRadToDeg,f as epsilon,g as epsilonHitTest,x as extrudeScalePlacementPadding,n as fillPositionPrecision,G as magnifierBarrelFactor,h as maxFilterCount,F as maxRepresentableInt,m as nanMagicNumber,a as offsetPrecision,b as outlineScale,H as packPrecision,d as placementPadding,c as positionPrecision,I as signedToUnsignedByte,p as softEdgeRatio,s as thinLineHalfWidth,r as thinLineWidthFactor};
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{clamp as t}from"../../../../../../../core/mathUtils.js";import{pt2px as e}from"../../../../../../../core/screenUtils.js";import{GeometryCursor as o}from"../../../../../../../geometry/GeometryCursor.js";import{CIMMarkerPlacementHelper as i}from"../../../../../../../symbols/cim/placements/CIMMarkerPlacementHelper.js";import{getXDirection as r,getYDirection as s}from"../../../alignmentUtils.js";import{minMaxZoomPrecisionFactor as n,maxTextLineWidth as a,minTextLineWidth as c,magicLabelLineHeight as l,glyphSize as h}from"../../../definitions.js";import{shapeGlyphs as f}from"../../../mesh/templates/shapingUtils.js";import{processColorInput as p,packBitset as m,getMinMaxZoom as d}from"../fill/meshWriterUtils.js";import{MeshWriter as u}from"../mesh/MeshWriter.js";import{bitsetTextIsBackground as g,bitsetTextIsMapAligned as x}from"../shaders/constants.js";import{TextMeshTransformProps as y}from"./TextParams.js";import{DataType as S}from"../../../../../../webgl/enums.js";const _=28,P=[4,4],b=[16,4],T={topLeft:b,topRight:b,bottomLeft:b,bottomRight:b},k=[4,2],z=[4,6],B={topLeft:k,topRight:k,bottomLeft:z,bottomRight:z},R={topLeft:k,topRight:z,bottomLeft:k,bottomRight:z},M={topLeft:z,topRight:z,bottomLeft:P,bottomRight:P},L={topLeft:P,topRight:P,bottomLeft:z,bottomRight:z},w={topLeft:z,topRight:P,bottomLeft:z,bottomRight:P},I={topLeft:P,topRight:z,bottomLeft:P,bottomRight:z},A={createComputedParams:t=>t,optionalAttributes:{zoomRange:{type:S.UNSIGNED_SHORT,count:2,packPrecisionFactor:n,packTessellation:({minZoom:t,maxZoom:e})=>[t||0,e||_]},clipAngle:{type:S.UNSIGNED_BYTE,count:1,packTessellation:({clipAngle:t})=>G(t||0)},referenceSymbol:{type:S.BYTE,count:4,packPrecisionFactor:1,packTessellation:(t,o)=>{const i=t.isLineLabel||!t.referenceBounds,n=r(i?"center":o.horizontalAlignment),a=s(i?"middle":o.verticalAlignment),{offsetX:c,offsetY:l,size:h}=i?{offsetX:0,offsetY:0,size:0}:t.referenceBounds;return[e(c),-e(l),Math.round(e(h)),n+1<<2|a+1]}},visibility:{type:S.FLOAT,count:1,otherSource:!0}},attributes:{pos:{type:S.SHORT,count:2,pack:"position",packPrecisionFactor:10},id:{type:S.UNSIGNED_BYTE,count:3,pack:"id"},bitset:{type:S.UNSIGNED_BYTE,count:1,packTessellation:({isBackground:t,mapAligned:e})=>m([[g,t],[x,!!e]])},offset:{type:S.SHORT,count:2,packPrecisionFactor:8,packAlternating:{count:4,packTessellation:({offsets:t})=>{const{bottomLeft:e,bottomRight:o,topLeft:i,topRight:r}=t;return[i,r,e,o]}}},textureUV:{type:S.SHORT,count:2,packPrecisionFactor:4,packAlternating:{count:4,packTessellation:({texcoords:t})=>{const{bottomLeft:e,bottomRight:o,topLeft:i,topRight:r}=t;return[i,r,e,o]}}},color:{type:S.UNSIGNED_BYTE,count:4,normalized:!0,packTessellation:({color:t})=>t},fontAndReferenceSize:{type:S.UNSIGNED_SHORT,count:2,packPrecisionFactor:4,packTessellation:({fontSize:t},{referenceSize:o})=>[Math.round(e(t)),Math.round(e(o??t))]},outlineColor:{type:S.UNSIGNED_BYTE,count:4,normalized:!0,pack:({outlineColor:t})=>p(t)},haloColor:{type:S.UNSIGNED_BYTE,count:4,normalized:!0,pack:({haloColor:t})=>p(t)},outlineAndHaloSize:{type:S.UNSIGNED_SHORT,count:2,packPrecisionFactor:4,packTessellation:({outlineSize:t,haloSize:o})=>[Math.round(e(t)),Math.round(e(o))]}}};class E extends u{constructor(){super(...arguments),this.vertexSpec=A,this._textMeshParamsPropsInitialized=!1}ensurePacked(t,e,o){super.ensurePacked(t,e,o),this._textMeshParamsPropsInitialized&&!this._evaluator.hasDynamicProperties||(this._textMeshTransformProps=new y(this.evaluatedMeshParams),this._textMeshParamsPropsInitialized=!0)}_write(t,e,o){const i=this._getShaping();if(!i)return;const r=e.getDisplayId();if(null!=this.evaluatedMeshParams.placement)return this._writePlacedTextMarkers(t,e,i,o);if(o?.nextPath())return o.nextPoint(),this._writeGlyphs(t,r,o.x,o.y,i,0);if("esriGeometryPolygon"===e.geometryType){const o=e.readCentroidForDisplay();if(!o)return;const[s,n]=o.coords;return this._writeGlyphs(t,r,s,n,i,0)}if("esriGeometryMultipoint"===e.geometryType){const o=e.readGeometryForDisplay();return void o?.forEachVertex((e,o)=>this._writeGlyphs(t,r,e,o,i,0))}const s=e.readXForDisplay(),n=e.readYForDisplay();return this._writeGlyphs(t,r,s,n,i,0)}_writePlacedTextMarkers(t,r,s,n){const a=n??o.fromFeatureSetReaderCIM(r);if(!a)return;const c=-1,l=i.getPlacement(a,c,this.evaluatedMeshParams.placement,e(1),t.id);if(!l)return;const h=r.getDisplayId();let f=l.next();for(;null!=f;){const e=f.tx,o=-f.ty,i=-f.getAngle();this._writeGlyphs(t,h,e,o,s,i),f=l.next()}}_getShaping(o){const i=this._textMeshTransformProps,r=this.evaluatedMeshParams;if(!r.glyphs?.glyphs.length)return null;const s=e(i.fontSize),n=e(i.offsetX),p=e(i.offsetY),m=t(e(r.lineWidth),c,a),d=l*t(r.lineHeightRatio,.25,4);return f(r.glyphs,{scale:s/h,angle:i.postAngle,xOffset:n,yOffset:p,horizontalAlignment:r.horizontalAlignment,verticalAlignment:o||r.verticalAlignment,maxLineWidth:m,lineHeight:d,decoration:r.decoration,borderLineSizePx:e(r.boxBorderLineSize),hasBackground:!!r.boxBackgroundColor,useCIMAngleBehavior:r.useCIMAngleBehavior})}_writeGlyphs(t,o,i,r,s,n,a,c,l=!0){const h=this.evaluatedMeshParams,f=this._textMeshTransformProps,m=e(f.fontSize),u=f.haloSize,g=f.outlineSize,x=e(f.offsetX),y=e(f.offsetY),[S,_]=d(h.scaleInfo,this.getTileInfo());0!==n&&s.setRotation(n);const P=s.bounds,b=i+P.x+x,T=r+P.y-y,k=2*(h.minPixelBuffer?h.minPixelBuffer/m:1),z=Math.max(P.width,P.height)*k;s.textBox&&(t.recordStart(this.instanceId,this.attributeLayout,s.glyphs[0].textureBinding),l&&t.recordBounds(b,T,z,z),this._writeTextBox(t,o,i,r,s.textBox,a,c),t.recordEnd());for(const e of s.glyphs){t.recordStart(this.instanceId,this.attributeLayout,e.textureBinding),l&&t.recordBounds(b,T,z,z);const{texcoords:s,offsets:n}=e;this._writeQuad(t,o,i,r,{texcoords:s,offsets:n,fontSize:m,haloSize:u,outlineSize:g,color:p(h.color),isBackground:!1,referenceBounds:a,minZoom:S,maxZoom:_,...c}),t.recordEnd()}0!==n&&s.setRotation(-n)}_writeTextBox(t,e,o,i,r,s,n){const a=this.evaluatedMeshParams,{fontSize:c,haloSize:l,outlineSize:h}=this._textMeshTransformProps,{boxBackgroundColor:f,boxBorderLineColor:m}=a,d={isBackground:!0,fontSize:c,haloSize:l,outlineSize:h,referenceBounds:s,...n};f&&(this._writeQuad(t,e,o,i,{texcoords:T,offsets:r.main,color:p(f),...d}),m||(this._writeQuad(t,e,o,i,{texcoords:M,offsets:r.top,color:p(f),...d}),this._writeQuad(t,e,o,i,{texcoords:L,offsets:r.bot,color:p(f),...d}),this._writeQuad(t,e,o,i,{texcoords:w,offsets:r.left,color:p(f),...d}),this._writeQuad(t,e,o,i,{texcoords:I,offsets:r.right,color:p(f),...d}))),m&&(this._writeQuad(t,e,o,i,{texcoords:B,offsets:r.top,color:p(m),...d}),this._writeQuad(t,e,o,i,{texcoords:B,offsets:r.bot,color:p(m),...d}),this._writeQuad(t,e,o,i,{texcoords:R,offsets:r.left,color:p(m),...d}),this._writeQuad(t,e,o,i,{texcoords:R,offsets:r.right,color:p(m),...d}))}_writeQuad(t,e,o,i,r){const s=t.vertexCount();this._writeVertex(t,e,o,i,r),t.indexWrite(s+0),t.indexWrite(s+1),t.indexWrite(s+2),t.indexWrite(s+1),t.indexWrite(s+3),t.indexWrite(s+2)}}const G=t=>Math.round(t*(254/360));export{E as TextMeshWriter,A as TextVertexSpec,_ as maxLabelZoom};
5
+ import{clamp as t}from"../../../../../../../core/mathUtils.js";import{pt2px as e}from"../../../../../../../core/screenUtils.js";import{GeometryCursor as o}from"../../../../../../../geometry/GeometryCursor.js";import{CIMMarkerPlacementHelper as i}from"../../../../../../../symbols/cim/placements/CIMMarkerPlacementHelper.js";import{getXDirection as r,getYDirection as s}from"../../../alignmentUtils.js";import{minMaxZoomPrecisionFactor as n,maxTextLineWidth as a,minTextLineWidth as l,magicLabelLineHeight as c}from"../../../definitions.js";import{shapeGlyphs as f}from"../../../mesh/templates/shapingUtils.js";import{processColorInput as h,packBitset as d,getMinMaxZoom as p}from"../fill/meshWriterUtils.js";import{MeshWriter as u}from"../mesh/MeshWriter.js";import{bitsetTextIsBackground as m,bitsetTextIsMapAligned as g}from"../shaders/constants.js";import{TextMeshTransformProps as x}from"./TextParams.js";import{DataType as y}from"../../../../../../webgl/enums.js";const S=28,_=[4,4],z=[16,4],P={topLeft:z,topRight:z,bottomLeft:z,bottomRight:z},b=[4,2],R=[4,6],T={topLeft:b,topRight:b,bottomLeft:R,bottomRight:R},k={topLeft:b,topRight:R,bottomLeft:b,bottomRight:R},B={topLeft:R,topRight:R,bottomLeft:_,bottomRight:_},M={topLeft:_,topRight:_,bottomLeft:R,bottomRight:R},L={topLeft:R,topRight:_,bottomLeft:R,bottomRight:_},w={topLeft:_,topRight:R,bottomLeft:_,bottomRight:R},I={createComputedParams:t=>t,optionalAttributes:{zoomRange:{type:y.UNSIGNED_SHORT,count:2,packPrecisionFactor:n,packTessellation:({minZoom:t,maxZoom:e})=>[t||0,e||S]},clipAngle:{type:y.UNSIGNED_BYTE,count:1,packTessellation:({clipAngle:t})=>E(t||0)},referenceSymbol:{type:y.BYTE,count:4,packPrecisionFactor:1,packTessellation:(t,o)=>{const i=t.isLineLabel||!t.referenceBounds,n=r(i?"center":o.horizontalAlignment),a=s(i?"middle":o.verticalAlignment),{offsetX:l,offsetY:c,size:f}=i?{offsetX:0,offsetY:0,size:0}:t.referenceBounds;return[e(l),-e(c),Math.round(e(f)),n+1<<2|a+1]}},visibility:{type:y.FLOAT,count:1,otherSource:!0}},attributes:{pos:{type:y.SHORT,count:2,pack:"position",packPrecisionFactor:10},id:{type:y.UNSIGNED_BYTE,count:3,pack:"id"},bitset:{type:y.UNSIGNED_BYTE,count:1,packTessellation:({isBackground:t,mapAligned:e})=>d([[m,t],[g,!!e]])},offset:{type:y.SHORT,count:2,packPrecisionFactor:8,packAlternating:{count:4,packTessellation:({offsets:t})=>{const{bottomLeft:e,bottomRight:o,topLeft:i,topRight:r}=t;return[i,r,e,o]}}},textureUV:{type:y.SHORT,count:2,packPrecisionFactor:4,packAlternating:{count:4,packTessellation:({texcoords:t})=>{const{bottomLeft:e,bottomRight:o,topLeft:i,topRight:r}=t;return[i,r,e,o]}}},color:{type:y.UNSIGNED_BYTE,count:4,normalized:!0,packTessellation:({color:t})=>t},fontAndReferenceSize:{type:y.UNSIGNED_SHORT,count:4,packPrecisionFactor:4,packTessellation:({fontSize:t,sdfSize:o,sdfRadius:i},{referenceSize:r})=>[Math.round(e(t)),Math.round(e(r??t)),o,i]},outlineColor:{type:y.UNSIGNED_BYTE,count:4,normalized:!0,pack:({outlineColor:t})=>h(t)},haloColor:{type:y.UNSIGNED_BYTE,count:4,normalized:!0,pack:({haloColor:t})=>h(t)},outlineAndHaloSize:{type:y.UNSIGNED_SHORT,count:2,packPrecisionFactor:4,packTessellation:({outlineSize:t,haloSize:o})=>[Math.round(e(t)),Math.round(e(o))]}}};class A extends u{constructor(){super(...arguments),this.vertexSpec=I,this._textMeshParamsPropsInitialized=!1}ensurePacked(t,e,o){super.ensurePacked(t,e,o),this._textMeshParamsPropsInitialized&&!this._evaluator.hasDynamicProperties||(this._textMeshTransformProps=new x(this.evaluatedMeshParams),this._textMeshParamsPropsInitialized=!0)}_write(t,e,o){const i=this._getShaping();if(!i)return;const r=e.getDisplayId();if(null!=this.evaluatedMeshParams.placement)return this._writePlacedTextMarkers(t,e,i,o);if(o?.nextPath())return o.nextPoint(),this._writeGlyphs(t,r,o.x,o.y,i,0);if("esriGeometryPolygon"===e.geometryType){const o=e.readCentroidForDisplay();if(!o)return;const[s,n]=o.coords;return this._writeGlyphs(t,r,s,n,i,0)}if("esriGeometryMultipoint"===e.geometryType){const o=e.readGeometryForDisplay();return void o?.forEachVertex((e,o)=>this._writeGlyphs(t,r,e,o,i,0))}const s=e.readXForDisplay(),n=e.readYForDisplay();return this._writeGlyphs(t,r,s,n,i,0)}_writePlacedTextMarkers(t,r,s,n){const a=n??o.fromFeatureSetReaderCIM(r);if(!a)return;const l=-1,c=i.getPlacement(a,l,this.evaluatedMeshParams.placement,e(1),t.id);if(!c)return;const f=r.getDisplayId();let h=c.next();for(;null!=h;){const e=h.tx,o=-h.ty,i=-h.getAngle();this._writeGlyphs(t,f,e,o,s,i),h=c.next()}}_getShaping(o){const i=this._textMeshTransformProps,r=this.evaluatedMeshParams;if(!r.glyphs?.glyphs.length)return null;const s=e(i.fontSize),n=e(i.offsetX),h=e(i.offsetY),d=r.glyphs.sdfSize,p=t(e(r.lineWidth),l,a),u=d/24*c*t(r.lineHeightRatio,.25,4);return f(r.glyphs,{scale:s/d,angle:i.postAngle,xOffset:n,yOffset:h,horizontalAlignment:r.horizontalAlignment,verticalAlignment:o||r.verticalAlignment,maxLineWidth:p,lineHeight:u,decoration:r.decoration,borderLineSizePx:e(r.boxBorderLineSize),hasBackground:!!r.boxBackgroundColor,useCIMAngleBehavior:r.useCIMAngleBehavior})}_writeGlyphs(t,o,i,r,s,n,a,l,c=!0){const f=this.evaluatedMeshParams,d=this._textMeshTransformProps,u=e(d.fontSize),m=d.haloSize,g=d.outlineSize,x=e(d.offsetX),y=e(d.offsetY),{sdfSize:S,sdfRadius:_}=f.glyphs,[z,P]=p(f.scaleInfo,this.getTileInfo());0!==n&&s.setRotation(n);const b=s.bounds,R=i+b.x+x,T=r+b.y-y,k=2*(f.minPixelBuffer?f.minPixelBuffer/u:1),B=Math.max(b.width,b.height)*k;s.textBox&&(t.recordStart(this.instanceId,this.attributeLayout,s.glyphs[0].textureBinding),c&&t.recordBounds(R,T,B,B),this._writeTextBox(t,o,i,r,s.textBox,a,l),t.recordEnd());for(const e of s.glyphs){t.recordStart(this.instanceId,this.attributeLayout,e.textureBinding),c&&t.recordBounds(R,T,B,B);const{texcoords:s,offsets:n}=e;this._writeQuad(t,o,i,r,{texcoords:s,offsets:n,fontSize:u,haloSize:m,outlineSize:g,sdfSize:S,sdfRadius:_,color:h(f.color),isBackground:!1,referenceBounds:a,minZoom:z,maxZoom:P,...l}),t.recordEnd()}0!==n&&s.setRotation(-n)}_writeTextBox(t,e,o,i,r,s,n){const a=this.evaluatedMeshParams,{fontSize:l,haloSize:c,outlineSize:f}=this._textMeshTransformProps,{boxBackgroundColor:d,boxBorderLineColor:p}=a,{sdfSize:u,sdfRadius:m}=a.glyphs,g={isBackground:!0,fontSize:l,haloSize:c,outlineSize:f,referenceBounds:s,sdfSize:u,sdfRadius:m,...n};d&&(this._writeQuad(t,e,o,i,{texcoords:P,offsets:r.main,color:h(d),...g}),p||(this._writeQuad(t,e,o,i,{texcoords:B,offsets:r.top,color:h(d),...g}),this._writeQuad(t,e,o,i,{texcoords:M,offsets:r.bot,color:h(d),...g}),this._writeQuad(t,e,o,i,{texcoords:L,offsets:r.left,color:h(d),...g}),this._writeQuad(t,e,o,i,{texcoords:w,offsets:r.right,color:h(d),...g}))),p&&(this._writeQuad(t,e,o,i,{texcoords:T,offsets:r.top,color:h(p),...g}),this._writeQuad(t,e,o,i,{texcoords:T,offsets:r.bot,color:h(p),...g}),this._writeQuad(t,e,o,i,{texcoords:k,offsets:r.left,color:h(p),...g}),this._writeQuad(t,e,o,i,{texcoords:k,offsets:r.right,color:h(p),...g}))}_writeQuad(t,e,o,i,r){const s=t.vertexCount();this._writeVertex(t,e,o,i,r),t.indexWrite(s+0),t.indexWrite(s+1),t.indexWrite(s+2),t.indexWrite(s+1),t.indexWrite(s+3),t.indexWrite(s+2)}}const E=t=>Math.round(t*(254/360));export{A as TextMeshWriter,I as TextVertexSpec,S as maxLabelZoom};
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as t,__param as e}from"tslib";import{minMaxZoomPrecisionFactor as i,labelPlacementOffsetPadding as o}from"../../../definitions.js";import{location as s,option as l,uniform as a,define as r,input as n,ComputeVertexInput as d}from"../../GraphShaderModule.js";import{abs as p,min as u,Float as y,floor as m,step as c,Vec3 as f,Mat3 as h,Vec2 as v,ifElse as w,equal as x,greaterThan as b,Bool as V,Vec4 as S,texture2D as g,smoothstep as z,Int as R,bitRShift as j,bitAnd as A}from"../../graph/glsl.js";import{AFeatureShader as C,FeatureVertexInput as M,FeatureFragmentInput as O}from"../shaders/AFeatureShader.js";import{sdfFontSize as P,maxSdfDistance as L,bitsetTextIsBackground as N,bitsetTextIsMapAligned as U}from"../shaders/constants.js";import{distPointTriangle as T,failHittest as H}from"../shaders/hittestUtils.js";import{MosaicInfo as _}from"../shaders/MosaicInfo.js";import{getBit as k}from"../shaders/utils.js";import{VisualVariableColor as I}from"../shaders/VisualVariableColor.js";import{VisualVariableOpacity as D}from"../shaders/VisualVariableOpacity.js";import{VisualVariableRotation as B}from"../shaders/VisualVariableRotation.js";import{VisualVariableSizeMinMaxValue as q}from"../shaders/VisualVariableSizeMinMaxValue.js";import{VisualVariableSizeScaleStops as E}from"../shaders/VisualVariableSizeScaleStops.js";import{VisualVariableSizeStops as F}from"../shaders/VisualVariableSizeStops.js";import{VisualVariableSizeUnitValue as W}from"../shaders/VisualVariableSizeUnitValue.js";import{getVisualVariableSize as G,getVisualVariableRotation as Z}from"../shaders/vvUtils.js";const J=360/254;class K extends M{}t([s(3,S)],K.prototype,"color",void 0),t([s(4,v)],K.prototype,"offset",void 0),t([s(5,v)],K.prototype,"textureUV",void 0),t([s(6,v)],K.prototype,"fontAndReferenceSize",void 0),t([s(7,S)],K.prototype,"outlineColor",void 0),t([s(8,S)],K.prototype,"haloColor",void 0),t([s(9,v)],K.prototype,"outlineAndHaloSize",void 0),t([s(10,v)],K.prototype,"zoomRange",void 0),t([s(11,y)],K.prototype,"clipAngle",void 0),t([s(12,S)],K.prototype,"referenceSymbol",void 0),t([s(15,y)],K.prototype,"visibility",void 0);class Q extends d{}t([s(13,v)],Q.prototype,"offsetNextVertex1",void 0),t([s(14,v)],Q.prototype,"offsetNextVertex2",void 0);class X extends O{}class Y extends C{constructor(){super(...arguments),this.type="TextShader",this.computeAttributes={offset:["offsetNextVertex1","offsetNextVertex2"]},this.textRenderPassType=0,this.isBackgroundPass=!1,this.isLabel=!1}clipLabel(t,e){const{clipAngle:o,zoomRange:s,visibility:l}=t,a=o.multiply(J),r=p(this.view.rotation.subtract(a)),n=u(new y(360).subtract(r),r);let d=new y(0);const f=m(this.view.currentZoom.multiply(i)).divide(i),h=s.x,v=s.y,w=new y(1).subtract(c(h,f)).multiply(2),x=c(new y(90),n).multiply(2),b=new y(2).multiply(new y(1).subtract(c(f,v)));return d=d.add(e.multiply(w)),d=d.add(e.multiply(x)),d=d.add(b),l&&(d=d.add(l)),d}vertex(t,e){const i=k(t.bitset,N),s=new y(1).subtract(i);let l=t.fontAndReferenceSize[0];const a=t.fontAndReferenceSize[1];let r=l.divide(P);const n=1===this.textRenderPassType?t.outlineColor:2===this.textRenderPassType?t.haloColor:this._getVertexColor(t),d=this.view.displayViewScreenMat3.multiply(new f(t.pos,1));let p=t.offset,u=new y(1),m=h.identity(),c=new v(0);if(this.isLabel){if(!t.referenceSymbol)throw new Error("InternalError: Optional attribute 'referenceSymbol' expected for labels");const e=t.referenceSymbol,i=e.xy,s=e.z,l=this._unpackDirection(e.w),a=G(this,t.id,s).divide(2),r=l.multiply(a.add(o));c=i.add(r),p=p.add(c)}else{u=G(this,t.id,a).divide(a),l=l.multiply(u),r=r.multiply(u),p=p.multiply(u),m=Z(this,t.id),p=m.multiply(new f(p,0)).xy}const g=k(t.bitset,U),z=this._getViewRotationMatrix(g).multiply(new f(p,0));let R=this.isLabel?this.clipLabel(t,g):this.clip(t.id,t.zoomRange);R=this.isBackgroundPass?R.add(s.multiply(2)):R.add(i.multiply(2));let j=new y(0);if(1===this.textRenderPassType){R=R.add(w(x(t.outlineAndHaloSize.x,new y(0)),new y(2),new y(0)));j=new y(t.outlineAndHaloSize.x).divide(r).divide(L)}if(2===this.textRenderPassType){const e=t.outlineAndHaloSize.x,i=new y(t.outlineAndHaloSize.y);R=R.add(w(x(i,new y(0)),new y(2),new y(0)));j=i.add(e).divide(r).divide(L)}const A=this.isLabel?b(R,new y(1)):new V(!1);return{glPosition:new S(d.xy.add(z.xy),R,1),color:n,size:r,textureUV:t.textureUV.divide(this.mosaicInfo.size),antialiasingWidth:new y(.105*P).divide(l).divide(this.view.pixelRatio),outlineDistanceOffset:j,...this.maybeRunHittest(t,e,{vvSizeAdjustment:u,vvRotation:m,labelOffset:c,labelClipped:A})}}_getViewRotationMatrix(t){const e=this.view.displayViewMat3,i=this.view.displayMat3,o=new y(1).subtract(t);return e.multiply(t).add(i.multiply(o))}fragment(t){const e=new y(2/8),i=new y(1).subtract(e),o=g(this.mosaicInfo.texture,t.textureUV).a;let s=i.subtract(t.outlineDistanceOffset);this.highlight&&(s=s.divide(2));const l=t.antialiasingWidth,a=z(s.subtract(l),s.add(l),o);return this.getFragmentOutput(t.color.multiply(a),t)}hittest(t,e,{vvSizeAdjustment:i,vvRotation:o,labelOffset:s,labelClipped:l}){let a,r,n;this.isLabel?(a=new f(t.offset.add(s),0),r=new f(e.offsetNextVertex1.add(s),0),n=new f(e.offsetNextVertex2.add(s),0)):(a=o.multiply(new f(t.offset.multiply(i),0)),r=o.multiply(new f(e.offsetNextVertex1.multiply(i),0)),n=o.multiply(new f(e.offsetNextVertex2.multiply(i),0)));const{viewMat3:d,tileMat3:p}=this.view,u=d.multiply(p).multiply(new f(t.pos,1)),y=u.add(p.multiply(a)).xy,m=u.add(p.multiply(r)).xy,c=u.add(p.multiply(n)).xy,h=T(this.hittestRequest.position,y.xy,m.xy,c.xy);return this.isLabel?w(l,H(this.hittestRequest),h):h}_unpackDirection(t){const e=new R(t),i=j(e,new R(2)),o=A(e,new R(3));return new v(new y(i).subtract(1),new y(o).subtract(1))}_getVertexColor(t){let e=t.color;if(this.visualVariableColor){const i=this.storage.getColorValue(t.id);e=this.visualVariableColor.getColor(i,t.color,new V(!1))}if(this.visualVariableOpacity){const i=this.storage.getOpacityValue(t.id),o=this.visualVariableOpacity.getOpacity(i);e=e.multiply(o)}return e}}t([l(I)],Y.prototype,"visualVariableColor",void 0),t([l(D)],Y.prototype,"visualVariableOpacity",void 0),t([l(B)],Y.prototype,"visualVariableRotation",void 0),t([l(q)],Y.prototype,"visualVariableSizeMinMaxValue",void 0),t([l(E)],Y.prototype,"visualVariableSizeScaleStops",void 0),t([l(F)],Y.prototype,"visualVariableSizeStops",void 0),t([l(W)],Y.prototype,"visualVariableSizeUnitValue",void 0),t([a(_)],Y.prototype,"mosaicInfo",void 0),t([r],Y.prototype,"textRenderPassType",void 0),t([r],Y.prototype,"isBackgroundPass",void 0),t([r],Y.prototype,"isLabel",void 0),t([e(0,n(K)),e(1,n(Q))],Y.prototype,"vertex",null),t([e(0,n(X))],Y.prototype,"fragment",null);export{X as TextFragmentInput,Y as TextShader,K as TextVertexInput};
5
+ import{__decorate as t,__param as e}from"tslib";import{minMaxZoomPrecisionFactor as i,labelPlacementOffsetPadding as o}from"../../../definitions.js";import{location as s,option as l,uniform as r,define as a,input as n,ComputeVertexInput as d}from"../../GraphShaderModule.js";import{abs as p,min as u,Float as y,floor as m,step as c,Vec3 as f,Mat3 as h,Vec2 as v,ifElse as w,equal as x,greaterThan as b,Bool as V,Vec4 as S,texture2D as g,smoothstep as z,Int as R,bitRShift as j,bitAnd as A}from"../../graph/glsl.js";import{AFeatureShader as C,FeatureVertexInput as M,FeatureFragmentInput as O}from"../shaders/AFeatureShader.js";import{bitsetTextIsBackground as P,bitsetTextIsMapAligned as L}from"../shaders/constants.js";import{distPointTriangle as N,failHittest as U}from"../shaders/hittestUtils.js";import{MosaicInfo as T}from"../shaders/MosaicInfo.js";import{getBit as H}from"../shaders/utils.js";import{VisualVariableColor as _}from"../shaders/VisualVariableColor.js";import{VisualVariableOpacity as k}from"../shaders/VisualVariableOpacity.js";import{VisualVariableRotation as I}from"../shaders/VisualVariableRotation.js";import{VisualVariableSizeMinMaxValue as D}from"../shaders/VisualVariableSizeMinMaxValue.js";import{VisualVariableSizeScaleStops as B}from"../shaders/VisualVariableSizeScaleStops.js";import{VisualVariableSizeStops as q}from"../shaders/VisualVariableSizeStops.js";import{VisualVariableSizeUnitValue as E}from"../shaders/VisualVariableSizeUnitValue.js";import{getVisualVariableSize as F,getVisualVariableRotation as W}from"../shaders/vvUtils.js";const G=360/254;class Z extends M{}t([s(3,S)],Z.prototype,"color",void 0),t([s(4,v)],Z.prototype,"offset",void 0),t([s(5,v)],Z.prototype,"textureUV",void 0),t([s(6,S)],Z.prototype,"fontAndReferenceSize",void 0),t([s(7,S)],Z.prototype,"outlineColor",void 0),t([s(8,S)],Z.prototype,"haloColor",void 0),t([s(9,v)],Z.prototype,"outlineAndHaloSize",void 0),t([s(10,v)],Z.prototype,"zoomRange",void 0),t([s(11,y)],Z.prototype,"clipAngle",void 0),t([s(12,S)],Z.prototype,"referenceSymbol",void 0),t([s(15,y)],Z.prototype,"visibility",void 0);class J extends d{}t([s(13,v)],J.prototype,"offsetNextVertex1",void 0),t([s(14,v)],J.prototype,"offsetNextVertex2",void 0);class K extends O{}class Q extends C{constructor(){super(...arguments),this.type="TextShader",this.computeAttributes={offset:["offsetNextVertex1","offsetNextVertex2"]},this.textRenderPassType=0,this.isBackgroundPass=!1,this.isLabel=!1}clipLabel(t,e){const{clipAngle:o,zoomRange:s,visibility:l}=t,r=o.multiply(G),a=p(this.view.rotation.subtract(r)),n=u(new y(360).subtract(a),a);let d=new y(0);const f=m(this.view.currentZoom.multiply(i)).divide(i),h=s.x,v=s.y,w=new y(1).subtract(c(h,f)).multiply(2),x=c(new y(90),n).multiply(2),b=new y(2).multiply(new y(1).subtract(c(f,v)));return d=d.add(e.multiply(w)),d=d.add(e.multiply(x)),d=d.add(b),l&&(d=d.add(l)),d}vertex(t,e){const i=H(t.bitset,P),s=new y(1).subtract(i);let l=t.fontAndReferenceSize[0];const r=t.fontAndReferenceSize[1],a=t.fontAndReferenceSize[2],n=t.fontAndReferenceSize[3];let d=l.divide(a);const p=1===this.textRenderPassType?t.outlineColor:2===this.textRenderPassType?t.haloColor:this._getVertexColor(t),u=this.view.displayViewScreenMat3.multiply(new f(t.pos,1));let m=t.offset,c=new y(1),g=h.identity(),z=new v(0);if(this.isLabel){if(!t.referenceSymbol)throw new Error("InternalError: Optional attribute 'referenceSymbol' expected for labels");const e=t.referenceSymbol,i=e.xy,s=e.z,l=this._unpackDirection(e.w),r=F(this,t.id,s).divide(2),a=l.multiply(r.add(o));z=i.add(a),m=m.add(z)}else{c=F(this,t.id,r).divide(r),l=l.multiply(c),d=d.multiply(c),m=m.multiply(c),g=W(this,t.id),m=g.multiply(new f(m,0)).xy}const R=H(t.bitset,L),j=this._getViewRotationMatrix(R).multiply(new f(m,0));let A=this.isLabel?this.clipLabel(t,R):this.clip(t.id,t.zoomRange);A=this.isBackgroundPass?A.add(s.multiply(2)):A.add(i.multiply(2));let C=new y(0);if(1===this.textRenderPassType){A=A.add(w(x(t.outlineAndHaloSize.x,new y(0)),new y(2),new y(0)));C=new y(t.outlineAndHaloSize.x).divide(d).divide(n)}if(2===this.textRenderPassType){const e=t.outlineAndHaloSize.x,i=new y(t.outlineAndHaloSize.y);A=A.add(w(x(i,new y(0)),new y(2),new y(0)));C=i.add(e).divide(d).divide(n)}const M=this.isLabel?b(A,new y(1)):new V(!1);return{glPosition:new S(u.xy.add(j.xy),A,1),color:p,size:d,textureUV:t.textureUV.divide(this.mosaicInfo.size),antialiasingWidth:new y(.315).divide(a.divide(n)).multiply(a).divide(l).divide(this.view.pixelRatio),outlineDistanceOffset:C,...this.maybeRunHittest(t,e,{vvSizeAdjustment:c,vvRotation:g,labelOffset:z,labelClipped:M})}}_getViewRotationMatrix(t){const e=this.view.displayViewMat3,i=this.view.displayMat3,o=new y(1).subtract(t);return e.multiply(t).add(i.multiply(o))}fragment(t){const e=new y(2/8),i=new y(1).subtract(e),o=g(this.mosaicInfo.texture,t.textureUV).a;let s=i.subtract(t.outlineDistanceOffset);this.highlight&&(s=s.divide(2));const l=t.antialiasingWidth,r=z(s.subtract(l),s.add(l),o);return this.getFragmentOutput(t.color.multiply(r),t)}hittest(t,e,{vvSizeAdjustment:i,vvRotation:o,labelOffset:s,labelClipped:l}){let r,a,n;this.isLabel?(r=new f(t.offset.add(s),0),a=new f(e.offsetNextVertex1.add(s),0),n=new f(e.offsetNextVertex2.add(s),0)):(r=o.multiply(new f(t.offset.multiply(i),0)),a=o.multiply(new f(e.offsetNextVertex1.multiply(i),0)),n=o.multiply(new f(e.offsetNextVertex2.multiply(i),0)));const{viewMat3:d,tileMat3:p}=this.view,u=d.multiply(p).multiply(new f(t.pos,1)),y=u.add(p.multiply(r)).xy,m=u.add(p.multiply(a)).xy,c=u.add(p.multiply(n)).xy,h=N(this.hittestRequest.position,y.xy,m.xy,c.xy);return this.isLabel?w(l,U(this.hittestRequest),h):h}_unpackDirection(t){const e=new R(t),i=j(e,new R(2)),o=A(e,new R(3));return new v(new y(i).subtract(1),new y(o).subtract(1))}_getVertexColor(t){let e=t.color;if(this.visualVariableColor){const i=this.storage.getColorValue(t.id);e=this.visualVariableColor.getColor(i,t.color,new V(!1))}if(this.visualVariableOpacity){const i=this.storage.getOpacityValue(t.id),o=this.visualVariableOpacity.getOpacity(i);e=e.multiply(o)}return e}}t([l(_)],Q.prototype,"visualVariableColor",void 0),t([l(k)],Q.prototype,"visualVariableOpacity",void 0),t([l(I)],Q.prototype,"visualVariableRotation",void 0),t([l(D)],Q.prototype,"visualVariableSizeMinMaxValue",void 0),t([l(B)],Q.prototype,"visualVariableSizeScaleStops",void 0),t([l(q)],Q.prototype,"visualVariableSizeStops",void 0),t([l(E)],Q.prototype,"visualVariableSizeUnitValue",void 0),t([r(T)],Q.prototype,"mosaicInfo",void 0),t([a],Q.prototype,"textRenderPassType",void 0),t([a],Q.prototype,"isBackgroundPass",void 0),t([a],Q.prototype,"isLabel",void 0),t([e(0,n(Z)),e(1,n(J))],Q.prototype,"vertex",null),t([e(0,n(K))],Q.prototype,"fragment",null);export{K as TextFragmentInput,Q as TextShader,Z as TextVertexInput};
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import"../../../../core/has.js";import{InputHandler as t}from"../../../input/InputHandler.js";class e extends t{constructor(t,e,a){super(!0),this.view=t,this.pointerType=e,this.registerIncoming("double-tap-drag",a,t=>this._handleDoubleTapDrag(t))}_handleDoubleTapDrag(t){const{data:e}=t,{pointerType:a}=e;if(a!==this.pointerType)return;t.stopPropagation();const{action:s,delta:i}=e,{view:r}=this,{mapViewNavigation:n}=r;switch(s){case"begin":{const{scale:t}=r;this._startScale=t,this._currentScale=t,this._previousDelta=i,n.begin();break}case"update":{if(this._previousDelta.y===i.y)return;this._previousDelta=i;const t=1.015**i.y,e=this._startScale*t,a=e/this._currentScale;n.setViewpointImmediate(a),this._currentScale=e;break}case"end":{const{constraints:t}=r,{effectiveLODs:e,snapToZoom:a}=t;if(!a||!e)return void n.end();const s=t.snapScale(this._currentScale),o=(i.y>0?Math.max(s,t.snapToPreviousScale(this._startScale)):Math.min(s,t.snapToNextScale(this._startScale)))/this._currentScale;n.zoom(o).then(()=>{n.end()});break}}}}export{e as DoubleTapDragZoom};
5
+ import{InputHandler as t}from"../../../input/InputHandler.js";class e extends t{constructor(t,e,a){super(!0),this.view=t,this.pointerType=e,this.registerIncoming("double-tap-drag",a,t=>this._handleDoubleTapDrag(t))}_handleDoubleTapDrag(t){const{data:e}=t,{pointerType:a}=e;if(a!==this.pointerType)return;t.stopPropagation();const{action:s,delta:i}=e,{view:r}=this,{mapViewNavigation:n}=r;switch(s){case"begin":{const{scale:t}=r;this._startScale=t,this._currentScale=t,this._previousDelta=i,n.begin();break}case"update":{if(this._previousDelta.y===i.y)return;this._previousDelta=i;const t=1.015**i.y,e=this._startScale*t,a=e/this._currentScale;n.setViewpointImmediate(a),this._currentScale=e;break}case"end":{const{constraints:t}=r,{effectiveLODs:e,snapToZoom:a}=t;if(!a||!e)return void n.end();const s=t.snapScale(this._currentScale),o=(i.y>0?Math.max(s,t.snapToPreviousScale(this._startScale)):Math.min(s,t.snapToNextScale(this._startScale)))/this._currentScale;n.zoom(o).then(()=>{n.end()});break}}}}export{e as DoubleTapDragZoom};
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import"../../../../core/has.js";import{InputHandler as o}from"../../../input/InputHandler.js";class t extends o{constructor(o,t,e){super(!0),this.view=o,this.keys=t,this._keysToZoomAction={},this.registerIncoming("key-down",e,o=>this._handleKeyDown(o)),t.zoomIn.forEach(o=>this._keysToZoomAction[o]=0),t.zoomOut.forEach(o=>this._keysToZoomAction[o]=1)}_handleKeyDown(o){this._handleKey(o)}_handleKey(o){const t=o.modifiers;if(t.size>0&&!t.has("Shift"))return;const{key:e}=o.data;if(!(e in this._keysToZoomAction))return;const i=this._keysToZoomAction[e],{mapViewNavigation:s}=this.view;let n=null;switch(i){case 0:n=s.zoomIn();break;case 1:n=s.zoomOut();break;default:return}s.begin(),n.then(()=>s.end()),o.stopPropagation()}}export{t as KeyZoom};
5
+ import{InputHandler as o}from"../../../input/InputHandler.js";class t extends o{constructor(o,t,e){super(!0),this.view=o,this.keys=t,this._keysToZoomAction={},this.registerIncoming("key-down",e,o=>this._handleKeyDown(o)),t.zoomIn.forEach(o=>this._keysToZoomAction[o]=0),t.zoomOut.forEach(o=>this._keysToZoomAction[o]=1)}_handleKeyDown(o){this._handleKey(o)}_handleKey(o){const t=o.modifiers;if(t.size>0&&!t.has("Shift"))return;const{key:e}=o.data;if(!(e in this._keysToZoomAction))return;const i=this._keysToZoomAction[e],{mapViewNavigation:n}=this.view;let s=null;switch(i){case 0:s=n.zoomIn();break;case 1:s=n.zoomOut();break;default:return}n.begin(),s.then(()=>n.end()),o.stopPropagation()}}export{t as KeyZoom};
@@ -5,11 +5,9 @@ import type ViewState from "../ViewState.js";
5
5
  import type LayerView from "../../layers/LayerView.js";
6
6
  import type { ScreenPoint } from "../../../core/types.js";
7
7
  import type { ViewHit } from "../../types.js";
8
- import type { LayerView2DMixin, LayerView2DMixinProperties } from "./LayerView2D.js";
9
- import type { RefreshableLayerView, RefreshableLayerViewProperties } from "../../layers/RefreshableLayerView.js";
10
8
  import type { LayerViewProperties } from "../../layers/LayerView.js";
11
9
 
12
- export interface BaseLayerView2DProperties extends LayerViewProperties, LayerView2DMixinProperties, RefreshableLayerViewProperties, Partial<Pick<BaseLayerView2D, "tiles">> {}
10
+ export interface BaseLayerView2DProperties extends LayerViewProperties, Partial<Pick<BaseLayerView2D, "tiles">> {}
13
11
 
14
12
  export type Coords = [
15
13
  number,
@@ -133,7 +131,7 @@ export interface Tile {
133
131
  * }
134
132
  * });
135
133
  */
136
- export default abstract class BaseLayerView2D extends BaseLayerView2DSuperclass {
134
+ export default abstract class BaseLayerView2D extends LayerView {
137
135
  constructor(properties?: BaseLayerView2DProperties);
138
136
  /** References the layer this [LayerView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-LayerView.html) represents. */
139
137
  get layer(): Layer;
@@ -268,5 +266,4 @@ export default abstract class BaseLayerView2D extends BaseLayerView2DSuperclass
268
266
  * @param removed - The tile objects removed from the view viewport.
269
267
  */
270
268
  tilesChanged(added: Tile[], removed: Tile[]): void;
271
- }
272
- declare const BaseLayerView2DSuperclass: typeof LayerView & typeof LayerView2DMixin & typeof RefreshableLayerView
269
+ }
@@ -10,11 +10,9 @@ import type LayerView from "../../layers/LayerView.js";
10
10
  import type { ScreenPoint } from "../../../core/types.js";
11
11
  import type { ViewHit } from "../../types.js";
12
12
  import type { TessellatedMesh } from "../types.js";
13
- import type { LayerView2DMixin, LayerView2DMixinProperties } from "./LayerView2D.js";
14
- import type { RefreshableLayerView, RefreshableLayerViewProperties } from "../../layers/RefreshableLayerView.js";
15
13
  import type { LayerViewProperties } from "../../layers/LayerView.js";
16
14
 
17
- export interface BaseLayerViewGL2DProperties extends LayerViewProperties, LayerView2DMixinProperties, RefreshableLayerViewProperties, Partial<Pick<BaseLayerViewGL2D, "tiles">> {}
15
+ export interface BaseLayerViewGL2DProperties extends LayerViewProperties, Partial<Pick<BaseLayerViewGL2D, "tiles">> {}
18
16
 
19
17
  /**
20
18
  * A rectangle in screen-space.
@@ -193,7 +191,7 @@ export interface Tile {
193
191
  * }
194
192
  * });
195
193
  */
196
- export default abstract class BaseLayerViewGL2D extends BaseLayerViewGL2DSuperclass {
194
+ export default abstract class BaseLayerViewGL2D extends LayerView {
197
195
  constructor(properties?: BaseLayerViewGL2DProperties);
198
196
  /** The WebGL rendering context associated to this layer view. */
199
197
  get context(): WebGL2RenderingContext;
@@ -435,5 +433,4 @@ export default abstract class BaseLayerViewGL2D extends BaseLayerViewGL2DSupercl
435
433
  * @param removed - The tile objects removed from the view viewport.
436
434
  */
437
435
  tilesChanged(added: Tile[], removed: Tile[]): void;
438
- }
439
- declare const BaseLayerViewGL2DSuperclass: typeof LayerView & typeof LayerView2DMixin & typeof RefreshableLayerView
436
+ }
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import t from"../../../AggregateGraphic.js";import r from"../../../Graphic.js";import i from"../../../TrackGraphic.js";import{isSome as s}from"../../../core/arrayUtils.js";import a from"../../../core/Collection.js";import{neverReached as o}from"../../../core/compilerUtils.js";import n from"../../../core/Error.js";import{makeHandle as u,handlesGroup as l}from"../../../core/handleUtils.js";import has from"../../../core/has.js";import h from"../../../core/Logger.js";import{destroyMaybe as c}from"../../../core/maybe.js";import{notDeepEqual as p}from"../../../core/object.js";import{createAbortError as d,createResolver as y,ignoreAbortErrors as g,throwIfNotAbortError as f,isAbortError as m}from"../../../core/promiseUtils.js";import{watch as w,sync as v}from"../../../core/reactiveUtils.js";import{sqlAnd as _}from"../../../core/sql.js";import{getMetersPerUnitForSR as b}from"../../../core/units.js";import{property as A,subclass as S}from"../../../core/accessorSupport/decorators.js";import{UpdatingHandles as F}from"../../../core/support/UpdatingHandles.js";import j from"../../../geometry/Extent.js";import{isCurvedGeometry as U}from"../../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as x}from"../../../geometry/support/curves/densifyCurvedGeometry.js";import I from"../../../layers/effects/FeatureEffectView.js";import{convertFromFeature as k}from"../../../layers/graphics/featureConversionUtils.js";import E from"../../../layers/support/FeatureFilter.js";import{checkServiceCurrentUserSupport as C}from"../../../layers/support/featureLayerUtils.js";import{packFields as O}from"../../../layers/support/fieldUtils.js";import{getEffectiveLayerCapabilities as R}from"../../../layers/support/layerUtils.js";import{combineTimeExtent as q}from"../../../layers/support/timeSupport.js";import V from"../../../rest/support/AggregateFeatureSet.js";import Q from"../../../rest/support/AttributeBinsFeatureSet.js";import L from"../../../rest/support/AttributeBinsQuery.js";import M from"../../../rest/support/FeatureSet.js";import T from"../../../rest/support/Query.js";import{LayerView2DMixin as P}from"./LayerView2D.js";import{FeatureContainer as H}from"./features/FeatureContainer.js";import{createFeaturePipelineWorkerProxy as W}from"./features/FeaturePipelineWorkerProxy.js";import{FeatureSourceEventLog as D}from"./features/FeatureSourceEventLog.js";import{CatalogFootprintLayerAdapter as G}from"./features/layerAdapters/CatalogFootprintLayerAdapter.js";import{FeatureLayerAdapter as N}from"./features/layerAdapters/FeatureLayerAdapter.js";import{createFeatureIdInfo as J}from"./features/layerAdapters/featureServiceUtils.js";import{InMemoryLayerAdapter as $}from"./features/layerAdapters/InMemoryLayerAdapter.js";import{KnowledgeGraphSublayerAdapter as B}from"./features/layerAdapters/KnowledgeGraphSublayerAdapter.js";import{OGCFeatureLayerAdapter as z}from"./features/layerAdapters/OGCFeatureLayerAdapter.js";import{OrientedImageryLayerAdapter as Z}from"./features/layerAdapters/OrientedImageryLayerAdapter.js";import{ParquetLayerAdapter as K}from"./features/layerAdapters/ParquetLayerAdapter.js";import{StreamLayerAdapter as X}from"./features/layerAdapters/StreamLayerAdapter.js";import{SubtypeGroupLayerAdapter as Y}from"./features/layerAdapters/SubtypeGroupLayerAdapter.js";import{createComplexSymbolInstances as ee}from"./features/schema/processor/symbols/ComplexSymbolSchema.js";import{DebouncedFeatureOverride as te}from"./support/DebouncedFeatureOverride.js";import{FeatureCommandQueue as re}from"./support/FeatureCommandQueue.js";import{handleNoEngineError as ie}from"./support/handleNoEngineError.js";import{toJSONGeometryType as se}from"./support/util.js";import{FeatureTileSubscriptionManager as ae}from"../tiling/FeatureTileSubscriptionManager.js";import{FeatureLayerViewMixin as oe}from"../../layers/FeatureLayerViewMixin.js";import ne from"../../layers/LayerView.js";import{RefreshableLayerView as ue}from"../../layers/RefreshableLayerView.js";import{getHighlightName as le}from"../../support/highlightOptionsUtils.js";function he(e,t){const r=new Set;return e&&e.forEach(e=>r.add(e)),t&&t.forEach(e=>r.add(e)),r.has("*")?["*"]:Array.from(r)}const ce=4294967294;function pe(e,t){return l(e.map(e=>w(()=>{const t=e();return t&&"object"==typeof t?"getTime"in t&&"function"==typeof t.getTime?t.getTime():JSON.stringify(t):t},t,v)))}function de(e){if(!e.geometry)return e;if(!U(e.geometry))return e;const t=.001/b(e.geometry.spatialReference),r=100;return{geometry:x(e.geometry,{maxSegmentsPerCurve:12e3,maxSegmentLength:r*t,maxDeviation:0}),attributes:e.attributes}}let ye=class extends(oe(ue(P(ne)))){constructor(){super(...arguments),this._commandsQueue=new re({process:e=>{switch(e.type){case"override-batch":return this._doOverride(e);case"update":return this._doUpdate();case"highlight":return this._updateHighlights()}}}),this._visibilityOverrides=new Set,this._lastAvailableFields=[],this._lastTargetState=null,this.eventLog=new D,this._sourceRefreshVersion=1,this._displayRefreshVersion=1,this._pipelineUpdating=!1,this._editUpdatingHandles=new F,this._fields=null,this._sourceUpdating=!1,this.featureEffectView=new I,this._lastUpdate=0}destroy(){this._editUpdatingHandles.destroy(),this._workerProxy?.destroy(),this._workerAttached.reject(d()),this._commandsQueue.destroy()}initialize(){this._workerAttached=y(),g(this._workerAttached.promise),this.addResolvingPromise(this._initProxy()),this.featureEffectView.featureEffect=this.featureEffect,this.featureEffectView.endTransition()}async _initProxy(){const e=this.layer;if("isTable"in e&&e.isTable)throw new n("featurelayerview:table-not-supported","table feature layer can't be displayed",{layer:e});if(("feature"===e.type||"subtype-group"===e.type)&&!1===R(e)?.operations.supportsQuery)throw new n("featurelayerview:query-not-supported","layer view requires a layer with query capability",{layer:e});this._workerProxy&&this._workerProxy.destroy();const t=this._createClientOptions();this._workerProxy=await W(t)}async _attachProxy(){const e={tileInfoJSON:this.view?.featuresTilingScheme?.tileInfo?.toJSON()};try{await this._workerProxy.pipeline.onAttach(e),this._workerAttached.resolve()}catch(t){this._workerAttached.reject(d()),f(t)}}async _detachProxy(){return this._workerProxy.pipeline.onDetach()}async getWorker(){return await this._workerAttached.promise,this._workerProxy}get dataUpdating(){return this._sourceUpdating||this._editUpdatingHandles.updating}get hasAllFeatures(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryAllFeatures}get hasAllFeaturesInView(){const e=this.effectiveDisplayFilter?.where||null,t=!this.eventLog.willQueryAllFeatures&&null!=e&&"1=1"!==e;return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&!t}get hasFullGeometries(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryFullResolutionGeometry}get labelingCollisionInfos(){const e=this.layerAdapter.getLabelingDeconflictionInfo(this.view),t=this.layer.geometryType,r=!this.suspended;return e.map(({vvEvaluators:e,deconflictionEnabled:i,labelingInfo:s})=>({labelingInfo:s,container:this.featureContainer,vvEvaluators:e,deconflictionEnabled:i,geometryType:t,visible:r}))}get layerAdapter(){switch(this.layer.type){case"feature":return"memory"===this.layer.source.type?new $(this.layer):new N(this.layer);case"geojson":case"csv":case"wfs":return new $(this.layer);case"parquet":return new K(this.layer);case"subtype-group":return new Y(this.layer);case"ogc-feature":return new z(this.layer);case"stream":return new X(this.layer);case"oriented-imagery":return new Z(this.layer);case"knowledge-graph-sublayer":return new B(this.layer);case"catalog-footprint":return new G(this.layer);default:o(this.layer)}return null}get timeExtent(){return q(this.layerAdapter.timeOptions,this.view?.timeExtent,this._get("timeExtent"))}get usedMemory(){return this.container.usedMemory+this.eventLog.pipelineStatistics.usedMemory}getDisplayStatistics(e,t){return this.featureContainer?.getDisplayStatistics(e,t)}async queryHeatmapStatistics(e){return(await this.getWorker()).pipeline.queryHeatmapStatistics(e)}highlight(e,t){let i;e instanceof r?i=[e.getObjectId()]:"number"==typeof e||"string"==typeof e?i=[e]:a.isCollection(e)&&e.length>0?i=e.map(e=>e?.getObjectId()).toArray():Array.isArray(e)&&e.length>0&&(i="number"==typeof e[0]||"string"==typeof e[0]?e:e.map(e=>e?.getObjectId()));const o=i?.filter(s);if(!o?.length)return u();const n=le(t);return this._addHighlights(o,n),u(()=>!this.destroyed&&this._removeHighlights(o,n))}async hitTest(e,s){const a=await this.featureContainer.hitTest(s);if(0===a.length)return null;const o=await this.getWorker(),{features:n,aggregates:u,tracks:l}=await o.pipeline.getDisplayFeatures(a),h=this.featureContainer.getSortKeys(a),c=({displayId:e},{displayId:t})=>h.has(e)&&h.has(t)?h.get(e)-h.get(t):e-t;n.sort(c).reverse(),u.sort(c).reverse();const p=has("parquetlayer-hittest-max-feature-count")??1;return"parquet"===this.layer.type&&n.length>p&&(n.length=p),[...u.map(r=>this._createAggregateGraphicHit(e,t.fromJSON(r))),...l.map(t=>this._createTrackGraphicHit(e,i.fromJSON(t))),...n.map(t=>this._createFeatureGraphicHit(e,r.fromJSON(t)))]}async queryStatistics(){const e=await this.getWorker();return ie(e.pipeline.queryStatistics(),{featureCount:0,ringCount:0,vertexCount:0})}async querySummaryStatistics(e,t,r){const i=await this.getWorker(),s={...t,scale:this.view.scale},a=i.features.executeQueryForSummaryStatistics(this._cleanUpQuery(e),s,r);return ie(a,{})}async queryAggregateSummaryStatistics(e,t,r){const i={...t,scale:this.view.scale},s=(await this.getWorker()).aggregates.executeQueryForSummaryStatistics(this._cleanUpAggregateQuery(e),i,r);return ie(s,{})}async queryUniqueValues(e,t,r){const i=await this.getWorker(),s={...t,scale:this.view.scale},a=i.features.executeQueryForUniqueValues(this._cleanUpQuery(e),s,r);return ie(a,{uniqueValueInfos:[]})}async queryAggregateUniqueValues(e,t,r){const i=await this.getWorker(),s={...t,scale:this.view.scale},a=i.aggregates.executeQueryForUniqueValues(this._cleanUpAggregateQuery(e),s,r);return ie(a,{uniqueValueInfos:[]})}async queryClassBreaks(e,t,r){const i=await this.getWorker(),s={...t,scale:this.view.scale},a=i.features.executeQueryForClassBreaks(this._cleanUpQuery(e),s,r);return ie(a,{classBreakInfos:[]})}async queryAggregateClassBreaks(e,t,r){const i=await this.getWorker(),s={...t,scale:this.view.scale},a=i.aggregates.executeQueryForClassBreaks(this._cleanUpAggregateQuery(e),s,r);return ie(a,{classBreakInfos:[]})}async queryHistogram(e,t,r){const i=await this.getWorker(),s={...t,scale:this.view.scale},a=i.features.executeQueryForHistogram(this._cleanUpQuery(e),s,r);return ie(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}async queryAggregateHistogram(e,t,r){const i=await this.getWorker(),s={...t,scale:this.view.scale},a=i.aggregates.executeQueryForHistogram(this._cleanUpAggregateQuery(e),s,r);return ie(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}queryFeatures(e,t){return this.queryFeaturesJSON(e,t).then(e=>{const t=M.fromJSON(e);return t.features.forEach(e=>this._setOriginForFeature(e)),t})}async queryVisibleFeatures(e,t){const r=(await this.getWorker()).pipeline.queryVisibleFeatures(this._cleanUpQuery(e),t),i=await ie(r,{features:[]}),s=M.fromJSON(i);return s.features.forEach(e=>this._setOriginForFeature(e)),s}async queryAggregates(e,t){const r=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t),i=await ie(r,{features:[]}),s=V.fromJSON(i);return s.features.forEach(e=>this.layerAdapter.setAggregateGraphicOrigin?.(e)),s}async queryAggregateIds(e,t){const r=(await this.getWorker()).aggregates.executeQueryForIds(this._cleanUpAggregateQuery(e),t);return ie(r,[])}async queryAggregateCount(e,t){const r=(await this.getWorker()).aggregates.executeQueryForCount(this._cleanUpAggregateQuery(e),t);return ie(r,0)}async queryAggregateJSON(e,t){const r=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t);return ie(r,{features:[]})}async queryFeaturesJSON(e,t){const r=(await this.getWorker()).features.executeQuery(this._cleanUpQuery(e),t);return ie(r,{features:[]})}async queryObjectIds(e,t){const r=(await this.getWorker()).features.executeQueryForIds(this._cleanUpQuery(e),t);return ie(r,[])}async queryFeatureCount(e,t){const r=(await this.getWorker()).features.executeQueryForCount(this._cleanUpQuery(e),t);return ie(r,0)}async queryExtent(e,t){const r=(await this.getWorker()).features.executeQueryForExtent(this._cleanUpQuery(e),t),i=await ie(r,{count:0,extent:null});return{count:i.count,extent:j.fromJSON(i.extent)}}async queryAttributeBins(e,t){const r=(await this.getWorker()).features.executeAttributeBinsQuery(this._cleanUpAttributeBinsQuery(e),t),i=await ie(r,{features:[]});return Q.fromJSON(i)}async getSampleFeatures(e){return(await this.getWorker()).pipeline.getSampleFeatures(e)}setVisibility(e,t){t?this._visibilityOverrides.delete(e):this._visibilityOverrides.add(e),this._update()}update(e){const t=performance.now();if(t-this._lastUpdate<200)return;if(this._lastUpdate=t,!this.subscriptionManager)return;this.view.animation&&!this._lastTargetState&&(this._lastTargetState=e.state.clone()),!this.view.animation&&this._lastTargetState&&(this._lastTargetState=null);const r=this.subscriptionManager.update(e.targetState,this._lastTargetState),i=new Set(this.subscriptionManager.coverage?.target.keys());for(const s of this.featureContainer.tiles||[])s.isCoverage=i.has(s.id);this.featureContainer.setVisibleTiles(r)}attach(){has("esri-2d-update-debug")&&console.debug("FeatureLayerView2D.attach"),g(this._updatingHandles.addPromise(this._workerAttached.promise)),g(this._attachProxy()),this.featureContainer=new H(this),this.container.addChild(this.featureContainer),this.view.timeline.record(`${this.layer.title} (FeatureLayer) Attach`),this.subscriptionManager=new ae({tileInfoView:this.view.featuresTilingScheme,updateSubscriptions:e=>{this.featureContainer.updateSubscriptions(e),g(this._updatingHandles.addPromise(this.getWorker().then(t=>t.pipeline.updateSubscriptions(e))))},isDone:e=>this.featureContainer.isDone(e)}),this.requestUpdate(),this.addAttachHandles([pe([()=>this._displayRefreshVersion,()=>this.layer.displayFilterInfo,()=>this.timeExtent,()=>this.clips,()=>this.filter,()=>this.effectiveDisplayFilterClause,()=>this.featureEffect,()=>this._sourceRefreshVersion,()=>this.view.timeZone,()=>this.view.timeExtent,...this.layerAdapter.getUpdateHashProperties(this.view)],()=>this._update()),w(()=>this.updateSuspended,e=>{e||(this.subscriptionManager.resume(),this.view.labelManager.requestUpdate())}),w(()=>this.visible,e=>{this.view.labelManager.symbolFader.restartDeclutter(),this.view.labelManager.requestUpdate()})]),this._update(),"stream"!==this.layer.type&&"parquet"!==this.layer.type&&"catalog-footprint"!==this.layer.type&&this.addAttachHandles(this.layer.on("edits",e=>this._editUpdatingHandles.addPromise(this._edit(e))))}detach(){has("esri-2d-update-debug")&&console.debug("FeatureLayerView2D.detach"),this._detachProxy(),this._fields=null,this.view.labelManager.removeContainer(this.featureContainer),this.featureContainer.destroy(),this.featureContainer=null,this._commandsQueue.clear(),this.container.removeAllChildren(),this.subscriptionManager=c(this.subscriptionManager),this._workerProxy.pipeline.onDetach(),this._workerAttached=y(),g(this._workerAttached.promise),this._lastAvailableFields=[],this._lastSchema=null}viewChange(){this.requestUpdate()}moveEnd(){this.requestUpdate()}addOverrides(e){return this._commandsQueue.push({type:"override",options:{...e,release:[]}})}removeOverrides(e){for(const r of e)if(null==r)throw new n("featurelayerview:bad-override","Tried to remove an override for an invalid objectId",{objectId:r});const t={added:[],updated:[],removed:[],release:e,isWeak:!1,historicMoment:null};return this._commandsQueue.push({type:"override",options:t})}isUpdating(){const e="renderer"in this.layer&&null!=this.layer.renderer,t=this._commandsQueue.updateTracking.updating,r=null!=this._updatingRequiredPromise,i=this.featureContainer.updatingHandles.updating,s=this.updateRequested||e&&(t||r)||i||this._pipelineUpdating||this.dataUpdating;if(has("esri-2d-log-updating")){console.log(`Updating FLV2D (${this.layer.id}): ${s}\n -> updateRequested ${this.updateRequested}\n -> hasRenderer ${e}\n -> updatingRequiredFields ${r}\n -> hasPendingCommand ${t}\n -> dataUpdating ${this.dataUpdating}\n -> processing ${this._pipelineUpdating}\n -> updatingContainer ${i}\n`);for(const e of this.featureContainer.subscriptions())console.log(` -> Tile[${e.id}] Done: ${e.done}`)}return s}_createClientOptions(){const e=this;return{openMemoryPorts:async()=>{if(this.layerAdapter?.openMessagePorts){const e=await this.layerAdapter.openMessagePorts();return{result:e,transferList:e}}throw new Error("InternalError: Layer adapter does not support opening message ports")},get container(){return e.featureContainer},setUpdating:e=>{this._set("_pipelineUpdating",e.pipeline),this._set("_sourceUpdating",e.source)},emitEvent:e=>{this.emit(e.name,e.event)},get eventLog(){return e.eventLog},fetch:async t=>{if(has("esri-2d-stabilize-glyphs")){const r=[];for(const i of t)r.push(await e.view.stage.painter.textureManager.rasterizeItem(i));return r}return Promise.all(t.map(t=>e.view.stage.painter.textureManager.rasterizeItem(t)))},fetchDictionary:e=>Promise.all(e.map(e=>this._fetchDictionaryRequest(e)))}}async _fetchDictionaryRequest(e){try{if("subtype-group"===this.layer.type)throw new Error("InternalError: SubtypeGroupLayer does not support dictionary renderer");const t=this.layer.renderer;if(!t||"dictionary"!==t.type)throw new Error("InternalError: Expected layer to have a DictionaryRenderer");const r=this._lastSchema.processor.mesh.factory.symbology;if("dictionary"!==r.type)throw new Error("InternalError: Expected schema to be of type 'dictionary'");const i={cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,store:this.featureContainer.instanceStore,scaleExpression:r.scaleExpression};this._fields||(this._fields=this.layer.fields.map(e=>e.toJSON()));const s=r.visualVariableUniforms,a=se(this.layer.geometryType),o=await t.getSymbolForControlString(e.controlString,a,!1);if(!o||!o.data)return{type:"dictionary-response",meshes:[]};return{type:"dictionary-response",meshes:await ee({...o.data,hasTextStringTemplates:!0},{uniforms:s,path:"renderer",schemaOptions:i})}}catch(t){return{type:"dictionary-response",meshes:[]}}}_cleanUpQuery(e){const t=T.from(e)||this.createQuery();return t.outSpatialReference||(t.outSpatialReference=this.view.spatialReference),t.toJSON()}_cleanUpAttributeBinsQuery(e){const t=L.from(e);return t.outSpatialReference||(t.outSpatialReference=this.view.spatialReference),t.toJSON()}_cleanUpAggregateQuery(e){const t=T.from(e)||this.createAggregateQuery();t.outSpatialReference||(t.outSpatialReference=this.view.spatialReference);const r=t.objectIds??[];for(const i of t.aggregateIds??[])r.push(i);return t.objectIds=r,t.aggregateIds=[],t.toJSON()}async _update(){return this._commandsQueue.push({type:"update"})}_edit(e){return this._commandsQueue.push({type:"edit",event:e})}async doRefresh(e){this.attached&&(this.updateSuspended&&e||(e?this.incrementSourceRefreshVersion():this.incrementDisplayRefreshVersion()))}incrementSourceRefreshVersion(){this._sourceRefreshVersion=(this._sourceRefreshVersion+1)%ce+1}incrementDisplayRefreshVersion(){this._displayRefreshVersion=(this._displayRefreshVersion+1)%ce+1}async _resolveIdenifiers(e){const t=[],r=[];for(const a of e)null==a.objectId||-1===a.objectId?null==a.globalId?h.getLogger(this).warn("mapview-apply-edits","A feature identifier must contain either a GlobalId or ObjectId. Ignoring",{identifier:a}):r.push(a.globalId):t.push(a.objectId);const i="globalIdField"in this.layer&&this.layer.globalIdField,s=i&&this.availableFields.includes(i);if(r.length&&!s)return h.getLogger(this).error(new n("mapview-apply-edits",`Editing the specified service requires the layer's globalIdField, ${i} to be included the layer's outFields for updates to be reflected on the map`)),t;if(r.length){const e=await this._workerProxy.pipeline.getObjectIdsFromGlobalIds(r);for(const r of e)t.push(r)}return t}_resolveOverrides(e){const t=!1,r=!1,i=se(this.layer.geometryType),s=J(this.layer),a=[];for(const o of e.added){const e=k(de(o),i,t,r,s);if(null==e.objectId)throw new n("featurelayerview:bad-override","Feature does not have an objectId",{feature:o});a.push(e)}for(const o of e.updated){const e=k(de(o),i,t,r,s);if(null==e.objectId)throw new n("featurelayerview:bad-override","Feature does not have an objectId",{feature:o});a.push(e)}for(const o of e.removed)if(null==o)throw new n("featurelayerview:bad-override","Tried to remove an invalid objectId",{objectId:o});return{type:"override",updates:a,removed:e.removed,release:e.release,isWeak:e.isWeak??!1,historicMoment:e.historicMoment??null}}async _resolveEdit(e){const t=this.layer,r=e.historicMoment?.getTime()??null,i="layerId"in t&&e.editedFeatures?.find(e=>e.layerId===t.layerId);if(i&&this._canEditByFeature(i)){const{adds:e,deletes:t,updates:s}=i.editedFeatures,a=this.layer.objectIdField,o=s.map(e=>e.current),n=t.map(e=>"attributes"in e?{objectId:a?e.attributes[a]:null}:e),u=await this._resolveIdenifiers(n);return this._resolveOverrides({added:e,updated:o,removed:u,historicMoment:r,isWeak:!0,release:[]})}const[s,a,o]=await Promise.all([this._resolveIdenifiers(e.addedFeatures),this._resolveIdenifiers(e.updatedFeatures),this._resolveIdenifiers(e.deletedFeatures)]);return{type:"override-by-id",updates:[...s,...a],removed:o,historicMoment:r,isWeak:!0}}_canEditByFeature(e){const{adds:t,updates:r}=e.editedFeatures;return t.every(e=>this.view.spatialReference.equals(e.geometry?.spatialReference))&&r.every(e=>this.view.spatialReference.equals(e.current.geometry?.spatialReference))}async _doUpdate(){"featureReduction"in this.layer&&this.layer.featureReduction&&this.layer.featureReduction!==this._lastFeatureReduction&&(this.layer.featureReduction=this.layer.featureReduction?.clone(),this._lastFeatureReduction=this.layer.featureReduction);try{if(await Promise.allSettled([this._handleChange(),C(this.layer)]),this.destroyed||!this.layerAdapter?.hasRequiredSupport||!this.subscriptionManager)return;const e=this.featureContainer.instanceStore;this.featureContainer.attributeView.lockTextureUploads();const t=this._lastSchema?.processor.mesh.factory.symbology?.type;let r=!0;"subtype-group"!==this.layer.type&&"dictionary"===this.layer.renderer?.type&&"dictionary"===t&&(r=!1),e.updateStart(r);const i=this.featureEffect,s={store:e,cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,scaleExpression:void 0},a=await this._createViewSchemaConfig(),o={source:await this.layerAdapter.createSourceSchema(a,this._sourceRefreshVersion),processor:await this.layerAdapter.createProcessorSchema(s,a,this._displayRefreshVersion)},n=o.processor.mesh.factory.labels;n&&this.view.labelManager.setLabelSchemaStyles(n,this.featureContainer);const u=p(this._lastSchema?.source.strategy,o.source.strategy)||p(this._lastSchema?.processor,o.processor);if(!u)return this.featureContainer.requestRender(),this.featureContainer.attributeView.unlockTextureUploads(),e.updateEnd(r),void(this.featureEffectView.featureEffect=i);this._lastSchema=o,this._fields=null;const l=Math.round(performance.now());has("esri-2d-update-debug")&&console.debug(`Id[${this.layer.uid}] Version[${l}] FeatureLayerView2D._doUpdate`,{changes:u});const h=await this.getWorker();await h.pipeline.updateSchema(o,l),e.updateEnd(r),this.featureEffectView.featureEffect=i,this.featureEffectView.endTransition(),this.featureContainer.restartAllAnimations(),this.featureContainer.attributeView.unlockTextureUploads(),this.featureContainer.trySwapRenderState(),this.featureContainer.requestRender();const c=o.processor.mesh.strategy,d="cluster"===c.type||"binning"===c.type,y="heatmap"===o.processor.mesh.factory.symbology.type,g=d||y?"target-defer":"eager";this.subscriptionManager.setVisibilityStrategy(g),has("esri-2d-update-debug")&&console.debug(`Version[${l}] FeatureLayerView2D.updateEnd`),this.requestUpdate()}catch(e){}}async _doOverride(e){const t=await this.getWorker();try{let r=new te;for(const i of e.messages)switch(i.type){case"edit":r.tryAdd(await this._resolveEdit(i.event))||(await t.pipeline.onOverride(r.toMessage()),r=new te,r.tryAdd(await this._resolveEdit(i.event)));break;case"override":r.tryAdd(this._resolveOverrides(i.options))||(await t.pipeline.onOverride(r.toMessage()),r=new te,r.tryAdd(this._resolveOverrides(i.options)));break}await t.pipeline.onOverride(r.toMessage())}catch(r){m(r),0}}_getEffectiveAvailableFields(e){const t=he(this._lastAvailableFields,e);return this._lastAvailableFields=t,O(this.layer.fieldsIndex,t)}async _createViewSchemaConfig(){const e=this.requiresCurrentUser?await this.signedInUser:null,t=[ge(this.view,this.layerAdapter,this.timeExtent,this._visibilityOverrides,this.filter,this.effectiveDisplayFilterClause),this.featureEffect?.filter?.toJSON()??null];return{availableFields:this._getEffectiveAvailableFields(this.availableFields),displayFilterEnabled:this.displayFilterEnabled,filters:t,scale:this.view.scale,timeZone:this.view.timeZone,timeExtent:this.view.timeExtent,currentUser:e,spatialReference:this.view.spatialReference,extent:this.view.extent}}_processHighlight(){this._commandsQueue.push({type:"highlight"})}async _updateHighlights(){const e=this._getHighlights(),t=await this.getWorker();if(this.destroyed)return;const r=t.pipeline.updateHighlight({highlights:e}).catch(e=>{m(e)||h.getLogger(this).error(e)});this._updatingHandles.addPromise(r)}_setOriginForFeature(e){e.layer=e.sourceLayer=this.layer,this.layerAdapter.setGraphicOrigin(e)}_createFeatureGraphicHit(e,t){return this._setOriginForFeature(t),this._createGraphicHit(e,t)}_createTrackGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setTrackGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createAggregateGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setAggregateGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createGraphicHit(e,t){return null!=t.geometry&&(t.geometry.spatialReference=this.view.spatialReference),{type:"graphic",graphic:t,layer:this.layer,mapPoint:e}}};function ge(e,t,r,i,s,a){s&&(s=s.clone());const o=null!=s?s.timeExtent:null,n=null!=r&&null!=o?r.intersection(o):r||o;n&&(s??=new E,s.timeExtent=n),s=t.addFilters?.(s,e)??s,a&&(s??=new E,s.where=_(s.where,a));let u=s?.toJSON()??null;return i.size&&(u??=(new E).toJSON(),u.hiddenIds=Array.from(i)),u}e([A()],ye.prototype,"_commandsQueue",void 0),e([A()],ye.prototype,"_sourceRefreshVersion",void 0),e([A()],ye.prototype,"_displayRefreshVersion",void 0),e([A({readOnly:!0})],ye.prototype,"_pipelineUpdating",void 0),e([A()],ye.prototype,"_sourceUpdating",void 0),e([A({readOnly:!0})],ye.prototype,"dataUpdating",null),e([A({readOnly:!0})],ye.prototype,"hasAllFeatures",null),e([A({readOnly:!0})],ye.prototype,"hasAllFeaturesInView",null),e([A({readOnly:!0})],ye.prototype,"hasFullGeometries",null),e([A()],ye.prototype,"featureEffectView",void 0),e([A()],ye.prototype,"labelingCollisionInfos",null),e([A()],ye.prototype,"layerAdapter",null),e([A({readOnly:!0})],ye.prototype,"timeExtent",null),ye=e([S("esri.views.2d.layers.FeatureLayerView2D")],ye);export{ye as default};
5
+ import{__decorate as e}from"tslib";import t from"../../../AggregateGraphic.js";import r from"../../../Graphic.js";import i from"../../../TrackGraphic.js";import{isSome as s}from"../../../core/arrayUtils.js";import a from"../../../core/Collection.js";import o from"../../../core/Error.js";import{makeHandle as n,handlesGroup as u}from"../../../core/handleUtils.js";import has from"../../../core/has.js";import l from"../../../core/Logger.js";import{destroyMaybe as h}from"../../../core/maybe.js";import{notDeepEqual as c}from"../../../core/object.js";import{createAbortError as p,createResolver as d,ignoreAbortErrors as y,throwIfNotAbortError as g,isAbortError as f}from"../../../core/promiseUtils.js";import{watch as m,sync as w}from"../../../core/reactiveUtils.js";import{sqlAnd as v}from"../../../core/sql.js";import{getMetersPerUnitForSR as _}from"../../../core/units.js";import{property as b,subclass as A}from"../../../core/accessorSupport/decorators.js";import{UpdatingHandles as S}from"../../../core/support/UpdatingHandles.js";import F from"../../../geometry/Extent.js";import{isCurvedGeometry as j}from"../../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as U}from"../../../geometry/support/curves/densifyCurvedGeometry.js";import x from"../../../layers/effects/FeatureEffectView.js";import{convertFromFeature as I}from"../../../layers/graphics/featureConversionUtils.js";import k from"../../../layers/support/FeatureFilter.js";import{checkServiceCurrentUserSupport as E}from"../../../layers/support/featureLayerUtils.js";import{packFields as C}from"../../../layers/support/fieldUtils.js";import{getEffectiveLayerCapabilities as O}from"../../../layers/support/layerUtils.js";import{combineTimeExtent as R}from"../../../layers/support/timeSupport.js";import q from"../../../rest/support/AggregateFeatureSet.js";import V from"../../../rest/support/AttributeBinsFeatureSet.js";import Q from"../../../rest/support/AttributeBinsQuery.js";import L from"../../../rest/support/FeatureSet.js";import M from"../../../rest/support/Query.js";import{LayerView2DMixin as T}from"./LayerView2D.js";import{FeatureContainer as P}from"./features/FeatureContainer.js";import{createFeaturePipelineWorkerProxy as H}from"./features/FeaturePipelineWorkerProxy.js";import{FeatureSourceEventLog as W}from"./features/FeatureSourceEventLog.js";import{CatalogFootprintLayerAdapter as D}from"./features/layerAdapters/CatalogFootprintLayerAdapter.js";import{FeatureLayerAdapter as G}from"./features/layerAdapters/FeatureLayerAdapter.js";import{createFeatureIdInfo as N}from"./features/layerAdapters/featureServiceUtils.js";import{InMemoryLayerAdapter as J}from"./features/layerAdapters/InMemoryLayerAdapter.js";import{KnowledgeGraphSublayerAdapter as $}from"./features/layerAdapters/KnowledgeGraphSublayerAdapter.js";import{OGCFeatureLayerAdapter as B}from"./features/layerAdapters/OGCFeatureLayerAdapter.js";import{OrientedImageryLayerAdapter as z}from"./features/layerAdapters/OrientedImageryLayerAdapter.js";import{ParquetLayerAdapter as Z}from"./features/layerAdapters/ParquetLayerAdapter.js";import{StreamLayerAdapter as K}from"./features/layerAdapters/StreamLayerAdapter.js";import{SubtypeGroupLayerAdapter as X}from"./features/layerAdapters/SubtypeGroupLayerAdapter.js";import{createComplexSymbolInstances as Y}from"./features/schema/processor/symbols/ComplexSymbolSchema.js";import{DebouncedFeatureOverride as ee}from"./support/DebouncedFeatureOverride.js";import{FeatureCommandQueue as te}from"./support/FeatureCommandQueue.js";import{handleNoEngineError as re}from"./support/handleNoEngineError.js";import{toJSONGeometryType as ie}from"./support/util.js";import{FeatureTileSubscriptionManager as se}from"../tiling/FeatureTileSubscriptionManager.js";import{FeatureLayerViewMixin as ae}from"../../layers/FeatureLayerViewMixin.js";import oe from"../../layers/LayerView.js";import{RefreshableLayerView as ne}from"../../layers/RefreshableLayerView.js";import{getHighlightName as ue}from"../../support/highlightOptionsUtils.js";function le(e,t){const r=new Set;return e&&e.forEach(e=>r.add(e)),t&&t.forEach(e=>r.add(e)),r.has("*")?["*"]:Array.from(r)}const he=4294967294;function ce(e,t){return u(e.map(e=>m(()=>{const t=e();return t&&"object"==typeof t?"getTime"in t&&"function"==typeof t.getTime?t.getTime():JSON.stringify(t):t},t,w)))}function pe(e){if(!e.geometry)return e;if(!j(e.geometry))return e;const t=.001/_(e.geometry.spatialReference),r=100;return{geometry:U(e.geometry,{maxSegmentsPerCurve:12e3,maxSegmentLength:r*t,maxDeviation:0}),attributes:e.attributes}}let de=class extends(ae(ne(T(oe)))){constructor(){super(...arguments),this._commandsQueue=new te({process:e=>{switch(e.type){case"override-batch":return this._doOverride(e);case"update":return this._doUpdate();case"highlight":return this._updateHighlights()}}}),this._visibilityOverrides=new Set,this._lastAvailableFields=[],this._lastTargetState=null,this.eventLog=new W,this._sourceRefreshVersion=1,this._displayRefreshVersion=1,this._pipelineUpdating=!1,this._editUpdatingHandles=new S,this._fields=null,this._sourceUpdating=!1,this.featureEffectView=new x,this._lastUpdate=0}destroy(){this._editUpdatingHandles.destroy(),this._workerProxy?.destroy(),this._workerAttached.reject(p()),this._commandsQueue.destroy()}initialize(){this._workerAttached=d(),y(this._workerAttached.promise),this.addResolvingPromise(this._initProxy()),this.featureEffectView.featureEffect=this.featureEffect,this.featureEffectView.endTransition()}async _initProxy(){const e=this.layer;if("isTable"in e&&e.isTable)throw new o("featurelayerview:table-not-supported","table feature layer can't be displayed",{layer:e});if(("feature"===e.type||"subtype-group"===e.type)&&!1===O(e)?.operations.supportsQuery)throw new o("featurelayerview:query-not-supported","layer view requires a layer with query capability",{layer:e});this._workerProxy&&this._workerProxy.destroy();const t=this._createClientOptions();this._workerProxy=await H(t)}async _attachProxy(){const e={tileInfoJSON:this.view?.featuresTilingScheme?.tileInfo?.toJSON()};try{await this._workerProxy.pipeline.onAttach(e),this._workerAttached.resolve()}catch(t){this._workerAttached.reject(p()),g(t)}}async _detachProxy(){return this._workerProxy.pipeline.onDetach()}async getWorker(){return await this._workerAttached.promise,this._workerProxy}get dataUpdating(){return this._sourceUpdating||this._editUpdatingHandles.updating}get hasAllFeatures(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryAllFeatures}get hasAllFeaturesInView(){const e=this.effectiveDisplayFilter?.where||null,t=!this.eventLog.willQueryAllFeatures&&null!=e&&"1=1"!==e;return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&!t}get hasFullGeometries(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryFullResolutionGeometry}get labelingCollisionInfos(){const e=this.layerAdapter.getLabelingDeconflictionInfo(this.view),t=this.layer.geometryType,r=!this.suspended;return e.map(({vvEvaluators:e,deconflictionEnabled:i,labelingInfo:s})=>({labelingInfo:s,container:this.featureContainer,vvEvaluators:e,deconflictionEnabled:i,geometryType:t,visible:r}))}get layerAdapter(){switch(this.layer.type){case"feature":return"memory"===this.layer.source.type?new J(this.layer):new G(this.layer);case"geojson":case"csv":case"wfs":return new J(this.layer);case"parquet":return new Z(this.layer);case"subtype-group":return new X(this.layer);case"ogc-feature":return new B(this.layer);case"stream":return new K(this.layer);case"oriented-imagery":return new z(this.layer);case"knowledge-graph-sublayer":return new $(this.layer);case"catalog-footprint":return new D(this.layer);default:this.layer}return null}get timeExtent(){return R(this.layerAdapter.timeOptions,this.view?.timeExtent,this._get("timeExtent"))}get usedMemory(){return this.container.usedMemory+this.eventLog.pipelineStatistics.usedMemory}getDisplayStatistics(e,t){return this.featureContainer?.getDisplayStatistics(e,t)}async queryHeatmapStatistics(e){return(await this.getWorker()).pipeline.queryHeatmapStatistics(e)}highlight(e,t){let i;e instanceof r?i=[e.getObjectId()]:"number"==typeof e||"string"==typeof e?i=[e]:a.isCollection(e)&&e.length>0?i=e.map(e=>e?.getObjectId()).toArray():Array.isArray(e)&&e.length>0&&(i="number"==typeof e[0]||"string"==typeof e[0]?e:e.map(e=>e?.getObjectId()));const o=i?.filter(s);if(!o?.length)return n();const u=ue(t);return this._addHighlights(o,u),n(()=>!this.destroyed&&this._removeHighlights(o,u))}async hitTest(e,s){const a=await this.featureContainer.hitTest(s);if(0===a.length)return null;const o=await this.getWorker(),{features:n,aggregates:u,tracks:l}=await o.pipeline.getDisplayFeatures(a),h=this.featureContainer.getSortKeys(a),c=({displayId:e},{displayId:t})=>h.has(e)&&h.has(t)?h.get(e)-h.get(t):e-t;n.sort(c).reverse(),u.sort(c).reverse();const p=has("parquetlayer-hittest-max-feature-count")??1;return"parquet"===this.layer.type&&n.length>p&&(n.length=p),[...u.map(r=>this._createAggregateGraphicHit(e,t.fromJSON(r))),...l.map(t=>this._createTrackGraphicHit(e,i.fromJSON(t))),...n.map(t=>this._createFeatureGraphicHit(e,r.fromJSON(t)))]}async queryStatistics(){const e=await this.getWorker();return re(e.pipeline.queryStatistics(),{featureCount:0,ringCount:0,vertexCount:0})}async querySummaryStatistics(e,t,r){const i=await this.getWorker(),s={...t,scale:this.view.scale},a=i.features.executeQueryForSummaryStatistics(this._cleanUpQuery(e),s,r);return re(a,{})}async queryAggregateSummaryStatistics(e,t,r){const i={...t,scale:this.view.scale},s=(await this.getWorker()).aggregates.executeQueryForSummaryStatistics(this._cleanUpAggregateQuery(e),i,r);return re(s,{})}async queryUniqueValues(e,t,r){const i=await this.getWorker(),s={...t,scale:this.view.scale},a=i.features.executeQueryForUniqueValues(this._cleanUpQuery(e),s,r);return re(a,{uniqueValueInfos:[]})}async queryAggregateUniqueValues(e,t,r){const i=await this.getWorker(),s={...t,scale:this.view.scale},a=i.aggregates.executeQueryForUniqueValues(this._cleanUpAggregateQuery(e),s,r);return re(a,{uniqueValueInfos:[]})}async queryClassBreaks(e,t,r){const i=await this.getWorker(),s={...t,scale:this.view.scale},a=i.features.executeQueryForClassBreaks(this._cleanUpQuery(e),s,r);return re(a,{classBreakInfos:[]})}async queryAggregateClassBreaks(e,t,r){const i=await this.getWorker(),s={...t,scale:this.view.scale},a=i.aggregates.executeQueryForClassBreaks(this._cleanUpAggregateQuery(e),s,r);return re(a,{classBreakInfos:[]})}async queryHistogram(e,t,r){const i=await this.getWorker(),s={...t,scale:this.view.scale},a=i.features.executeQueryForHistogram(this._cleanUpQuery(e),s,r);return re(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}async queryAggregateHistogram(e,t,r){const i=await this.getWorker(),s={...t,scale:this.view.scale},a=i.aggregates.executeQueryForHistogram(this._cleanUpAggregateQuery(e),s,r);return re(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}queryFeatures(e,t){return this.queryFeaturesJSON(e,t).then(e=>{const t=L.fromJSON(e);return t.features.forEach(e=>this._setOriginForFeature(e)),t})}async queryVisibleFeatures(e,t){const r=(await this.getWorker()).pipeline.queryVisibleFeatures(this._cleanUpQuery(e),t),i=await re(r,{features:[]}),s=L.fromJSON(i);return s.features.forEach(e=>this._setOriginForFeature(e)),s}async queryAggregates(e,t){const r=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t),i=await re(r,{features:[]}),s=q.fromJSON(i);return s.features.forEach(e=>this.layerAdapter.setAggregateGraphicOrigin?.(e)),s}async queryAggregateIds(e,t){const r=(await this.getWorker()).aggregates.executeQueryForIds(this._cleanUpAggregateQuery(e),t);return re(r,[])}async queryAggregateCount(e,t){const r=(await this.getWorker()).aggregates.executeQueryForCount(this._cleanUpAggregateQuery(e),t);return re(r,0)}async queryAggregateJSON(e,t){const r=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t);return re(r,{features:[]})}async queryFeaturesJSON(e,t){const r=(await this.getWorker()).features.executeQuery(this._cleanUpQuery(e),t);return re(r,{features:[]})}async queryObjectIds(e,t){const r=(await this.getWorker()).features.executeQueryForIds(this._cleanUpQuery(e),t);return re(r,[])}async queryFeatureCount(e,t){const r=(await this.getWorker()).features.executeQueryForCount(this._cleanUpQuery(e),t);return re(r,0)}async queryExtent(e,t){const r=(await this.getWorker()).features.executeQueryForExtent(this._cleanUpQuery(e),t),i=await re(r,{count:0,extent:null});return{count:i.count,extent:F.fromJSON(i.extent)}}async queryAttributeBins(e,t){const r=(await this.getWorker()).features.executeAttributeBinsQuery(this._cleanUpAttributeBinsQuery(e),t),i=await re(r,{features:[]});return V.fromJSON(i)}async getSampleFeatures(e){return(await this.getWorker()).pipeline.getSampleFeatures(e)}setVisibility(e,t){t?this._visibilityOverrides.delete(e):this._visibilityOverrides.add(e),this._update()}update(e){const t=performance.now();if(t-this._lastUpdate<200)return;if(this._lastUpdate=t,!this.subscriptionManager)return;this.view.animation&&!this._lastTargetState&&(this._lastTargetState=e.state.clone()),!this.view.animation&&this._lastTargetState&&(this._lastTargetState=null);const r=this.subscriptionManager.update(e.targetState,this._lastTargetState),i=new Set(this.subscriptionManager.coverage?.target.keys());for(const s of this.featureContainer.tiles||[])s.isCoverage=i.has(s.id);this.featureContainer.setVisibleTiles(r)}attach(){has("esri-2d-update-debug")&&console.debug("FeatureLayerView2D.attach"),y(this._updatingHandles.addPromise(this._workerAttached.promise)),y(this._attachProxy()),this.featureContainer=new P(this),this.container.addChild(this.featureContainer),this.view.timeline.record(`${this.layer.title} (FeatureLayer) Attach`),this.subscriptionManager=new se({tileInfoView:this.view.featuresTilingScheme,updateSubscriptions:e=>{this.featureContainer.updateSubscriptions(e),y(this._updatingHandles.addPromise(this.getWorker().then(t=>t.pipeline.updateSubscriptions(e))))},isDone:e=>this.featureContainer.isDone(e)}),this.requestUpdate(),this.addAttachHandles([ce([()=>this._displayRefreshVersion,()=>this.layer.displayFilterInfo,()=>this.timeExtent,()=>this.clips,()=>this.filter,()=>this.effectiveDisplayFilterClause,()=>this.featureEffect,()=>this._sourceRefreshVersion,()=>this.view.timeZone,()=>this.view.timeExtent,...this.layerAdapter.getUpdateHashProperties(this.view)],()=>this._update()),m(()=>this.updateSuspended,e=>{e||(this.subscriptionManager.resume(),this.view.labelManager.requestUpdate())}),m(()=>this.visible,e=>{this.view.labelManager.symbolFader.restartDeclutter(),this.view.labelManager.requestUpdate()})]),this._update(),"stream"!==this.layer.type&&"parquet"!==this.layer.type&&"catalog-footprint"!==this.layer.type&&this.addAttachHandles(this.layer.on("edits",e=>this._editUpdatingHandles.addPromise(this._edit(e))))}detach(){has("esri-2d-update-debug")&&console.debug("FeatureLayerView2D.detach"),this._detachProxy(),this._fields=null,this.view.labelManager.removeContainer(this.featureContainer),this.featureContainer.destroy(),this.featureContainer=null,this._commandsQueue.clear(),this.container.removeAllChildren(),this.subscriptionManager=h(this.subscriptionManager),this._workerProxy.pipeline.onDetach(),this._workerAttached=d(),y(this._workerAttached.promise),this._lastAvailableFields=[],this._lastSchema=null}viewChange(){this.requestUpdate()}moveEnd(){this.requestUpdate()}addOverrides(e){return this._commandsQueue.push({type:"override",options:{...e,release:[]}})}removeOverrides(e){for(const r of e)if(null==r)throw new o("featurelayerview:bad-override","Tried to remove an override for an invalid objectId",{objectId:r});const t={added:[],updated:[],removed:[],release:e,isWeak:!1,historicMoment:null};return this._commandsQueue.push({type:"override",options:t})}isUpdating(){const e="renderer"in this.layer&&null!=this.layer.renderer,t=this._commandsQueue.updateTracking.updating,r=null!=this._updatingRequiredPromise,i=this.featureContainer.updatingHandles.updating,s=this.updateRequested||e&&(t||r)||i||this._pipelineUpdating||this.dataUpdating;if(has("esri-2d-log-updating")){console.log(`Updating FLV2D (${this.layer.id}): ${s}\n -> updateRequested ${this.updateRequested}\n -> hasRenderer ${e}\n -> updatingRequiredFields ${r}\n -> hasPendingCommand ${t}\n -> dataUpdating ${this.dataUpdating}\n -> processing ${this._pipelineUpdating}\n -> updatingContainer ${i}\n`);for(const e of this.featureContainer.subscriptions())console.log(` -> Tile[${e.id}] Done: ${e.done}`)}return s}_createClientOptions(){const e=this;return{openMemoryPorts:async()=>{if(this.layerAdapter?.openMessagePorts){const e=await this.layerAdapter.openMessagePorts();return{result:e,transferList:e}}throw new Error("InternalError: Layer adapter does not support opening message ports")},get container(){return e.featureContainer},setUpdating:e=>{this._set("_pipelineUpdating",e.pipeline),this._set("_sourceUpdating",e.source)},emitEvent:e=>{this.emit(e.name,e.event)},get eventLog(){return e.eventLog},fetch:async t=>{if(has("esri-2d-stabilize-glyphs")){const r=[];for(const i of t)r.push(await e.view.stage.painter.textureManager.rasterizeItem(i));return r}return Promise.all(t.map(t=>e.view.stage.painter.textureManager.rasterizeItem(t)))},fetchDictionary:e=>Promise.all(e.map(e=>this._fetchDictionaryRequest(e)))}}async _fetchDictionaryRequest(e){try{if("subtype-group"===this.layer.type)throw new Error("InternalError: SubtypeGroupLayer does not support dictionary renderer");const t=this.layer.renderer;if(!t||"dictionary"!==t.type)throw new Error("InternalError: Expected layer to have a DictionaryRenderer");const r=this._lastSchema.processor.mesh.factory.symbology;if("dictionary"!==r.type)throw new Error("InternalError: Expected schema to be of type 'dictionary'");const i={cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,store:this.featureContainer.instanceStore,scaleExpression:r.scaleExpression};this._fields||(this._fields=this.layer.fields.map(e=>e.toJSON()));const s=r.visualVariableUniforms,a=ie(this.layer.geometryType),o=await t.getSymbolForControlString(e.controlString,a,!1);if(!o||!o.data)return{type:"dictionary-response",meshes:[]};return{type:"dictionary-response",meshes:await Y({...o.data,hasTextStringTemplates:!0},{uniforms:s,path:"renderer",schemaOptions:i})}}catch(t){return{type:"dictionary-response",meshes:[]}}}_cleanUpQuery(e){const t=M.from(e)||this.createQuery();return t.outSpatialReference||(t.outSpatialReference=this.view.spatialReference),t.toJSON()}_cleanUpAttributeBinsQuery(e){const t=Q.from(e);return t.outSpatialReference||(t.outSpatialReference=this.view.spatialReference),t.toJSON()}_cleanUpAggregateQuery(e){const t=M.from(e)||this.createAggregateQuery();t.outSpatialReference||(t.outSpatialReference=this.view.spatialReference);const r=t.objectIds??[];for(const i of t.aggregateIds??[])r.push(i);return t.objectIds=r,t.aggregateIds=[],t.toJSON()}async _update(){return this._commandsQueue.push({type:"update"})}_edit(e){return this._commandsQueue.push({type:"edit",event:e})}async doRefresh(e){this.attached&&(this.updateSuspended&&e||(e?this.incrementSourceRefreshVersion():this.incrementDisplayRefreshVersion()))}incrementSourceRefreshVersion(){this._sourceRefreshVersion=(this._sourceRefreshVersion+1)%he+1}incrementDisplayRefreshVersion(){this._displayRefreshVersion=(this._displayRefreshVersion+1)%he+1}async _resolveIdenifiers(e){const t=[],r=[];for(const a of e)null==a.objectId||-1===a.objectId?null==a.globalId?l.getLogger(this).warn("mapview-apply-edits","A feature identifier must contain either a GlobalId or ObjectId. Ignoring",{identifier:a}):r.push(a.globalId):t.push(a.objectId);const i="globalIdField"in this.layer&&this.layer.globalIdField,s=i&&this.availableFields.includes(i);if(r.length&&!s)return l.getLogger(this).error(new o("mapview-apply-edits",`Editing the specified service requires the layer's globalIdField, ${i} to be included the layer's outFields for updates to be reflected on the map`)),t;if(r.length){const e=await this._workerProxy.pipeline.getObjectIdsFromGlobalIds(r);for(const r of e)t.push(r)}return t}_resolveOverrides(e){const t=!1,r=!1,i=ie(this.layer.geometryType),s=N(this.layer),a=[];for(const n of e.added){const e=I(pe(n),i,t,r,s);if(null==e.objectId)throw new o("featurelayerview:bad-override","Feature does not have an objectId",{feature:n});a.push(e)}for(const n of e.updated){const e=I(pe(n),i,t,r,s);if(null==e.objectId)throw new o("featurelayerview:bad-override","Feature does not have an objectId",{feature:n});a.push(e)}for(const n of e.removed)if(null==n)throw new o("featurelayerview:bad-override","Tried to remove an invalid objectId",{objectId:n});return{type:"override",updates:a,removed:e.removed,release:e.release,isWeak:e.isWeak??!1,historicMoment:e.historicMoment??null}}async _resolveEdit(e){const t=this.layer,r=e.historicMoment?.getTime()??null,i="layerId"in t&&e.editedFeatures?.find(e=>e.layerId===t.layerId);if(i&&this._canEditByFeature(i)){const{adds:e,deletes:t,updates:s}=i.editedFeatures,a=this.layer.objectIdField,o=s.map(e=>e.current),n=t.map(e=>"attributes"in e?{objectId:a?e.attributes[a]:null}:e),u=await this._resolveIdenifiers(n);return this._resolveOverrides({added:e,updated:o,removed:u,historicMoment:r,isWeak:!0,release:[]})}const[s,a,o]=await Promise.all([this._resolveIdenifiers(e.addedFeatures),this._resolveIdenifiers(e.updatedFeatures),this._resolveIdenifiers(e.deletedFeatures)]);return{type:"override-by-id",updates:[...s,...a],removed:o,historicMoment:r,isWeak:!0}}_canEditByFeature(e){const{adds:t,updates:r}=e.editedFeatures;return t.every(e=>this.view.spatialReference.equals(e.geometry?.spatialReference))&&r.every(e=>this.view.spatialReference.equals(e.current.geometry?.spatialReference))}async _doUpdate(){"featureReduction"in this.layer&&this.layer.featureReduction&&this.layer.featureReduction!==this._lastFeatureReduction&&(this.layer.featureReduction=this.layer.featureReduction?.clone(),this._lastFeatureReduction=this.layer.featureReduction);try{if(await Promise.allSettled([this._handleChange(),E(this.layer)]),this.destroyed||!this.layerAdapter?.hasRequiredSupport||!this.subscriptionManager)return;const e=this.featureContainer.instanceStore;this.featureContainer.attributeView.lockTextureUploads();const t=this._lastSchema?.processor.mesh.factory.symbology?.type;let r=!0;"subtype-group"!==this.layer.type&&"dictionary"===this.layer.renderer?.type&&"dictionary"===t&&(r=!1),e.updateStart(r);const i=this.featureEffect,s={store:e,cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,scaleExpression:void 0},a=await this._createViewSchemaConfig(),o={source:await this.layerAdapter.createSourceSchema(a,this._sourceRefreshVersion),processor:await this.layerAdapter.createProcessorSchema(s,a,this._displayRefreshVersion)},n=o.processor.mesh.factory.labels;n&&this.view.labelManager.setLabelSchemaStyles(n,this.featureContainer);const u=c(this._lastSchema?.source.strategy,o.source.strategy)||c(this._lastSchema?.processor,o.processor);if(!u)return this.featureContainer.requestRender(),this.featureContainer.attributeView.unlockTextureUploads(),e.updateEnd(r),void(this.featureEffectView.featureEffect=i);this._lastSchema=o,this._fields=null;const l=Math.round(performance.now());has("esri-2d-update-debug")&&console.debug(`Id[${this.layer.uid}] Version[${l}] FeatureLayerView2D._doUpdate`,{changes:u});const h=await this.getWorker();await h.pipeline.updateSchema(o,l),e.updateEnd(r),this.featureEffectView.featureEffect=i,this.featureEffectView.endTransition(),this.featureContainer.restartAllAnimations(),this.featureContainer.attributeView.unlockTextureUploads(),this.featureContainer.trySwapRenderState(),this.featureContainer.requestRender();const p=o.processor.mesh.strategy,d="cluster"===p.type||"binning"===p.type,y="heatmap"===o.processor.mesh.factory.symbology.type,g=d||y?"target-defer":"eager";this.subscriptionManager.setVisibilityStrategy(g),has("esri-2d-update-debug")&&console.debug(`Version[${l}] FeatureLayerView2D.updateEnd`),this.requestUpdate()}catch(e){}}async _doOverride(e){const t=await this.getWorker();try{let r=new ee;for(const i of e.messages)switch(i.type){case"edit":r.tryAdd(await this._resolveEdit(i.event))||(await t.pipeline.onOverride(r.toMessage()),r=new ee,r.tryAdd(await this._resolveEdit(i.event)));break;case"override":r.tryAdd(this._resolveOverrides(i.options))||(await t.pipeline.onOverride(r.toMessage()),r=new ee,r.tryAdd(this._resolveOverrides(i.options)));break}await t.pipeline.onOverride(r.toMessage())}catch(r){f(r),0}}_getEffectiveAvailableFields(e){const t=le(this._lastAvailableFields,e);return this._lastAvailableFields=t,C(this.layer.fieldsIndex,t)}async _createViewSchemaConfig(){const e=this.requiresCurrentUser?await this.signedInUser:null,t=[ye(this.view,this.layerAdapter,this.timeExtent,this._visibilityOverrides,this.filter,this.effectiveDisplayFilterClause),this.featureEffect?.filter?.toJSON()??null];return{availableFields:this._getEffectiveAvailableFields(this.availableFields),displayFilterEnabled:this.displayFilterEnabled,filters:t,scale:this.view.scale,timeZone:this.view.timeZone,timeExtent:this.view.timeExtent,currentUser:e,spatialReference:this.view.spatialReference,extent:this.view.extent}}_processHighlight(){this._commandsQueue.push({type:"highlight"})}async _updateHighlights(){const e=this._getHighlights(),t=await this.getWorker();if(this.destroyed)return;const r=t.pipeline.updateHighlight({highlights:e}).catch(e=>{f(e)||l.getLogger(this).error(e)});this._updatingHandles.addPromise(r)}_setOriginForFeature(e){e.layer=e.sourceLayer=this.layer,this.layerAdapter.setGraphicOrigin(e)}_createFeatureGraphicHit(e,t){return this._setOriginForFeature(t),this._createGraphicHit(e,t)}_createTrackGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setTrackGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createAggregateGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setAggregateGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createGraphicHit(e,t){return null!=t.geometry&&(t.geometry.spatialReference=this.view.spatialReference),{type:"graphic",graphic:t,layer:this.layer,mapPoint:e}}};function ye(e,t,r,i,s,a){s&&(s=s.clone());const o=null!=s?s.timeExtent:null,n=null!=r&&null!=o?r.intersection(o):r||o;n&&(s??=new k,s.timeExtent=n),s=t.addFilters?.(s,e)??s,a&&(s??=new k,s.where=v(s.where,a));let u=s?.toJSON()??null;return i.size&&(u??=(new k).toJSON(),u.hiddenIds=Array.from(i)),u}e([b()],de.prototype,"_commandsQueue",void 0),e([b()],de.prototype,"_sourceRefreshVersion",void 0),e([b()],de.prototype,"_displayRefreshVersion",void 0),e([b({readOnly:!0})],de.prototype,"_pipelineUpdating",void 0),e([b()],de.prototype,"_sourceUpdating",void 0),e([b({readOnly:!0})],de.prototype,"dataUpdating",null),e([b({readOnly:!0})],de.prototype,"hasAllFeatures",null),e([b({readOnly:!0})],de.prototype,"hasAllFeaturesInView",null),e([b({readOnly:!0})],de.prototype,"hasFullGeometries",null),e([b()],de.prototype,"featureEffectView",void 0),e([b()],de.prototype,"labelingCollisionInfos",null),e([b()],de.prototype,"layerAdapter",null),e([b({readOnly:!0})],de.prototype,"timeExtent",null),de=e([A("esri.views.2d.layers.FeatureLayerView2D")],de);export{de as default};