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

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 (534) hide show
  1. package/Ground.js +1 -1
  2. package/arcade/containerUtils.js +1 -1
  3. package/arcade/functions/feature.js +1 -1
  4. package/arcade/functions/featuresetstring.js +1 -1
  5. package/arcade/languageUtils.js +1 -1
  6. package/arcgisGlobal.d.ts +9 -0
  7. package/assets/components/assets/icon/addCellAbove16.json +1 -0
  8. package/assets/components/assets/icon/addCellAbove24.json +1 -0
  9. package/assets/components/assets/icon/addCellAbove32.json +1 -0
  10. package/assets/components/assets/icon/addCellBelow16.json +1 -0
  11. package/assets/components/assets/icon/addCellBelow24.json +1 -0
  12. package/assets/components/assets/icon/addCellBelow32.json +1 -0
  13. package/assets/components/assets/icon/linkedChart16.json +1 -0
  14. package/assets/components/assets/icon/linkedChart24.json +1 -0
  15. package/assets/components/assets/icon/linkedChart32.json +1 -0
  16. package/assets/components/assets/icon/polygonFromFeature16.json +1 -0
  17. package/assets/components/assets/icon/polygonFromFeature24.json +1 -0
  18. package/assets/components/assets/icon/polygonFromFeature32.json +1 -0
  19. package/assets/esri/core/workers/RemoteClient.js +1 -1
  20. package/assets/esri/core/workers/chunks/0148cb611bf7c8c5fe8a.js +1 -0
  21. package/assets/esri/core/workers/chunks/025da54eef112d7e8f66.js +1 -0
  22. package/assets/esri/core/workers/chunks/033debcbf6b3683dc4fe.js +2 -0
  23. package/assets/esri/core/workers/chunks/064445e6f9512817ac87.js +2 -0
  24. package/assets/esri/core/workers/chunks/{304462b049116f59accc.js → 09676cfa99b90fe0cc63.js} +1 -1
  25. package/assets/esri/core/workers/chunks/0aadee0437fa061e4ff5.js +1 -0
  26. package/assets/esri/core/workers/chunks/{deb5b1d772ca407654d4.js → 0acc754907395e83bbc6.js} +1 -1
  27. package/assets/esri/core/workers/chunks/1302bf9718747cd9fdd9.js +1 -0
  28. package/assets/esri/core/workers/chunks/{956432c9d45940983bc2.js → 1b42d163ef22e3565bb7.js} +1 -1
  29. package/assets/esri/core/workers/chunks/1b551ef3d84d9c1e93f9.js +1 -0
  30. package/assets/esri/core/workers/chunks/1c38ce72160d5a4e4b3d.js +1 -0
  31. package/assets/esri/core/workers/chunks/1c3b087fbf2d102376fc.js +1 -0
  32. package/assets/esri/core/workers/chunks/{e18b8646c7378213b618.js → 1e46703cb566c25458ad.js} +1 -1
  33. package/assets/esri/core/workers/chunks/1f135269aea3931e11b2.js +1 -0
  34. package/assets/esri/core/workers/chunks/{ea9e770efc85594e4dd2.js → 216d8cb86548e92a8196.js} +1 -1
  35. package/assets/esri/core/workers/chunks/23279303cd7698314c56.js +1 -0
  36. package/assets/esri/core/workers/chunks/{4bf2cc4d092601ff2b86.js → 24673aac70d6c949b6fa.js} +1 -1
  37. package/assets/esri/core/workers/chunks/24cf91aeab53a897e951.js +1 -0
  38. package/assets/esri/core/workers/chunks/26bc509a031788bfa678.js +1 -0
  39. package/assets/esri/core/workers/chunks/{d629708bf23da24ee523.js → 298f234f11a10c5120a2.js} +1 -1
  40. package/assets/esri/core/workers/chunks/29ae19206bbeb480be0f.js +1 -0
  41. package/assets/esri/core/workers/chunks/2ae6deade655fdbc28de.js +1 -0
  42. package/assets/esri/core/workers/chunks/{37cf4ca2083cd3b6002e.js → 2c7bb5c9751524687002.js} +1 -1
  43. package/assets/esri/core/workers/chunks/2c8957f9c7610805208c.js +1 -0
  44. package/assets/esri/core/workers/chunks/{dc1944a7601b518a9c48.js → 2ca49fb4590cc34a02bd.js} +1 -1
  45. package/assets/esri/core/workers/chunks/2d592c935571de80a2e2.js +1 -0
  46. package/assets/esri/core/workers/chunks/{a917a1df8270860dc514.js → 2f52ad525744b8793d49.js} +1 -1
  47. package/assets/esri/core/workers/chunks/{f890359d972cce54459e.js → 2f829321bfbd3bacd64f.js} +1 -1
  48. package/assets/esri/core/workers/chunks/{6efc5873747b9cd44fb9.js → 323451ef52d0c2805f1d.js} +1 -1
  49. package/assets/esri/core/workers/chunks/{7232fc11b23777b6be94.js → 369012c032ea6882607c.js} +1 -1
  50. package/assets/esri/core/workers/chunks/37ae52c71bf9c70fbb92.js +1 -0
  51. package/assets/esri/core/workers/chunks/38890ac5917942374ab8.js +1 -0
  52. package/assets/esri/core/workers/chunks/3e33d953e41b281a120b.js +1 -0
  53. package/assets/esri/core/workers/chunks/3e52351e06d85bf9bedd.js +1 -0
  54. package/assets/esri/core/workers/chunks/{9f760dc4492a03e0504c.js → 45d87af48a21644590c2.js} +1 -1
  55. package/assets/esri/core/workers/chunks/462fd57af8ed7921d6ba.js +1 -0
  56. package/assets/esri/core/workers/chunks/463d69f596d1d34ef275.js +2 -0
  57. package/assets/esri/core/workers/chunks/475906b079f4f1ddacf2.js +1 -0
  58. package/assets/esri/core/workers/chunks/48a2f68e06a2e90b77d0.js +1 -0
  59. package/assets/esri/core/workers/chunks/49affbed22e201f7c32b.js +1 -0
  60. package/assets/esri/core/workers/chunks/{b6ca73c1384f07b30b74.js → 4bb8432d99a39733368f.js} +1 -1
  61. package/assets/esri/core/workers/chunks/{cb983f65995e57fff7a1.js → 4f58e0322707f63f5bf2.js} +1 -1
  62. package/assets/esri/core/workers/chunks/{8f0ecf4d06ec7b67d4ed.js → 52744dfd430cd0c0edfb.js} +1 -1
  63. package/assets/esri/core/workers/chunks/58a17fb3c0dd07c63d57.js +2 -0
  64. package/assets/esri/core/workers/chunks/5993db944b9e7825e0bc.js +1 -0
  65. package/assets/esri/core/workers/chunks/{b0058619e0363002ad86.js → 59cd139712d919e6a738.js} +1 -1
  66. package/assets/esri/core/workers/chunks/59d5247ac4075b024244.js +1 -0
  67. package/assets/esri/core/workers/chunks/5b9f3c4f65412c66316f.js +1 -0
  68. package/assets/esri/core/workers/chunks/{be3421ffb5b391bca02e.js → 5d35e0c2665f5e625ee9.js} +1 -1
  69. package/assets/esri/core/workers/chunks/5e70bfb9d6235a87b87a.js +1 -0
  70. package/assets/esri/core/workers/chunks/6006bd8a5ed945fa2776.js +1 -0
  71. package/assets/esri/core/workers/chunks/618927cfcb93dd1d92fd.js +1 -0
  72. package/assets/esri/core/workers/chunks/6709d24867d275b33d24.js +1 -0
  73. package/assets/esri/core/workers/chunks/68e24fa3f564c2a5c9fd.js +1 -0
  74. package/assets/esri/core/workers/chunks/{6ab7bb3834841834f839.js → 724ea2e2843e6dac0a90.js} +1 -1
  75. package/assets/esri/core/workers/chunks/7441d121f00ce747c08e.js +1 -0
  76. package/assets/esri/core/workers/chunks/{090c9c2dbf92f2cac0b8.js → 770ca70d363184e39d60.js} +1 -1
  77. package/assets/esri/core/workers/chunks/781fa83e8063b8f685dc.js +1 -0
  78. package/assets/esri/core/workers/chunks/78c1b75b1a8937eaa3cd.js +1 -0
  79. package/assets/esri/core/workers/chunks/793b072519ded0dc6f34.js +1 -0
  80. package/assets/esri/core/workers/chunks/7994fce5f36963aadc51.js +1 -0
  81. package/assets/esri/core/workers/chunks/7adee504107cb9ad8563.js +1 -0
  82. package/assets/esri/core/workers/chunks/7efc45858ebd3fd3302e.js +1 -0
  83. package/assets/esri/core/workers/chunks/7ff536284942c5284a16.js +1 -0
  84. package/assets/esri/core/workers/chunks/813dd84933b407c8fe86.js +1 -0
  85. package/assets/esri/core/workers/chunks/83c7c4218bc6ba2f16ee.js +1 -0
  86. package/assets/esri/core/workers/chunks/8daeac785af725c3ebdf.js +1 -0
  87. package/assets/esri/core/workers/chunks/{3ab25279aaa30f035038.js → 8daed13400d9e63e65ae.js} +1 -1
  88. package/assets/esri/core/workers/chunks/9020bd7a0e488d55ef14.js +1 -0
  89. package/assets/esri/core/workers/chunks/92f35b2c3c5f13778308.js +1 -0
  90. package/assets/esri/core/workers/chunks/97cd4145c016cf379120.js +1 -0
  91. package/assets/esri/core/workers/chunks/{cf7c06702babd6fa88b4.js → 9af36ee6a0df224859bc.js} +1 -1
  92. package/assets/esri/core/workers/chunks/{452d069ba7ad6759b558.js → 9c46c7f00d42f5c02b26.js} +1 -1
  93. package/assets/esri/core/workers/chunks/{32fc7d1db4b311f6b880.js → 9e5b30b907102bc0c201.js} +1 -1
  94. package/assets/esri/core/workers/chunks/a3ab53b534e2872131be.js +1 -0
  95. package/assets/esri/core/workers/chunks/{f18ee2eaa96d103627a6.js → aa6b2cc8f6f5627891c1.js} +1 -1
  96. package/assets/esri/core/workers/chunks/ac7af417ebf7721d7400.js +1 -0
  97. package/assets/esri/core/workers/chunks/aed479c14d93955f4798.js +1 -0
  98. package/assets/esri/core/workers/chunks/{60c61f34733063730386.js → b013b70e40dfb6ce013e.js} +1 -1
  99. package/assets/esri/core/workers/chunks/b22de8bf4a4a739bc36d.js +1 -0
  100. package/assets/esri/core/workers/chunks/b39cd78d2d97bef9909e.js +1 -0
  101. package/assets/esri/core/workers/chunks/b5f50955c1eee55b67d1.js +1 -0
  102. package/assets/esri/core/workers/chunks/b688e6463a651779a016.js +1 -0
  103. package/assets/esri/core/workers/chunks/bb5ed2a796a45c41b0b4.js +1 -0
  104. package/assets/esri/core/workers/chunks/bdf012e591a8476db467.js +1 -0
  105. package/assets/esri/core/workers/chunks/{daf7b647bd960d8bad56.js → be52c319a0a81ce1ba36.js} +1 -1
  106. package/assets/esri/core/workers/chunks/{066b7f6866d602f963e0.js → c3008b20cb5fd38bd900.js} +1 -1
  107. package/assets/esri/core/workers/chunks/{22e85819e23202a8ba90.js → c39ebd8d469f1e8bb61e.js} +1 -1
  108. package/assets/esri/core/workers/chunks/{7f2ac03efaa4a4898ba2.js → c3b96d1d43afccd23e45.js} +2 -2
  109. package/assets/esri/core/workers/chunks/{89edaa1ffa566908ebca.js → ca5a4f62b09cc8579dc0.js} +1 -1
  110. package/assets/esri/core/workers/chunks/ce08e3369641da0d7a27.js +2 -0
  111. package/assets/esri/core/workers/chunks/ce1ccf9ec90b786591e5.js +1 -0
  112. package/assets/esri/core/workers/chunks/cf0bed7ae27021fd7b05.js +1 -0
  113. package/assets/esri/core/workers/chunks/cf6f671823fa6c2a9a5e.js +1 -0
  114. package/assets/esri/core/workers/chunks/d25210574168ead2f813.js +1 -0
  115. package/assets/esri/core/workers/chunks/d3378c479052d566317c.js +1 -0
  116. package/assets/esri/core/workers/chunks/{1742dbc6a827cfda471b.js → d3d48401462ef3bf0ad9.js} +1 -1
  117. package/assets/esri/core/workers/chunks/d3ef23923424ad8c5048.js +1 -0
  118. package/assets/esri/core/workers/chunks/{46388b86d1b10e6121bd.js → d507d7d7a7282fc38e8d.js} +1 -1
  119. package/assets/esri/core/workers/chunks/dc0816f064be576a2fa6.js +1 -0
  120. package/assets/esri/core/workers/chunks/{862e1acd80c4e43831dc.js → dc923e50958b68a50014.js} +1 -1
  121. package/assets/esri/core/workers/chunks/dd4ecf81250cc001d040.js +1 -0
  122. package/assets/esri/core/workers/chunks/e10fe4c77b8dc4492092.js +1 -0
  123. package/assets/esri/core/workers/chunks/e4e1db4e9e5f13167401.js +1 -0
  124. package/assets/esri/core/workers/chunks/e5ee64e2fb5bfcb716d8.js +1 -0
  125. package/assets/esri/core/workers/chunks/{e755075ac2e02e881fad.js → e6637f9176566382ed3e.js} +1 -1
  126. package/assets/esri/core/workers/chunks/e6dc68c4bd8eddb168d1.js +1 -0
  127. package/assets/esri/core/workers/chunks/eb780f2dafa14f776166.js +1 -0
  128. package/assets/esri/core/workers/chunks/{723478607badcde5706b.js → eb7f45736c852725b0bb.js} +150 -118
  129. package/assets/esri/core/workers/chunks/ed31ec586b754241474d.js +1 -0
  130. package/assets/esri/core/workers/chunks/f38d11be766043413659.js +1 -0
  131. package/assets/esri/core/workers/chunks/{98a5327fd96d9542b39f.js → f90cad9f007a11154c0d.js} +1 -1
  132. package/assets/esri/libs/pdfjs/pdf.worker.mjs +63075 -0
  133. package/assets/esri/libs/pdfjs/wasm/jbig2.wasm +0 -0
  134. package/assets/esri/libs/pdfjs/wasm/openjpeg.wasm +0 -0
  135. package/assets/esri/libs/pdfjs/wasm/qcms_bg.wasm +0 -0
  136. package/assets/esri/libs/pdfjs/wasm/quickjs-eval.wasm +0 -0
  137. package/assets/esri/themes/dark/main.css +1 -1
  138. package/assets/esri/themes/light/main.css +1 -1
  139. package/assets/esri/themes/light/view.css +1 -1
  140. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.en.json +1 -1
  141. package/basemaps/BasemapCollection.d.ts +148 -0
  142. package/basemaps/BasemapCollection.js +2 -0
  143. package/basemaps/BasemapsSource.d.ts +39 -0
  144. package/basemaps/BasemapsSource.js +2 -0
  145. package/basemaps/LocalBasemapsSource.d.ts +55 -0
  146. package/basemaps/LocalBasemapsSource.js +2 -0
  147. package/basemaps/PortalBasemapsSource.d.ts +98 -0
  148. package/basemaps/PortalBasemapsSource.js +2 -0
  149. package/basemaps/support/BasemapItem.d.ts +74 -0
  150. package/basemaps/support/BasemapItem.js +2 -0
  151. package/basemaps/support/basemapCompatibilityUtils.js +2 -0
  152. package/basemaps/types.d.ts +42 -0
  153. package/chunks/CheckerBoard.glsl.js +1 -1
  154. package/chunks/CloudsComposition.glsl.js +2 -2
  155. package/chunks/ColorMaterial.glsl.js +1 -1
  156. package/chunks/Component.glsl.js +11 -11
  157. package/chunks/DeepSky.glsl.js +1 -1
  158. package/chunks/DefaultMaterial.glsl.js +4 -4
  159. package/chunks/EdgeShader.glsl.js +1 -1
  160. package/chunks/FocusArea.glsl.js +1 -1
  161. package/chunks/GaussianSplat.glsl.js +9 -9
  162. package/chunks/GlobalIllumination.glsl.js +42 -13
  163. package/chunks/GlobalIlluminationBlur.glsl.js +1 -1
  164. package/chunks/HUDMaterial.glsl.js +1 -1
  165. package/chunks/ImageMaterial.glsl.js +1 -1
  166. package/chunks/LineCallout.glsl.js +1 -1
  167. package/chunks/LineMarker.glsl.js +97 -89
  168. package/chunks/NativeLine.glsl.js +1 -1
  169. package/chunks/Path.glsl.js +8 -7
  170. package/chunks/Pattern.glsl.js +1 -1
  171. package/chunks/PointRenderer.glsl.js +1 -1
  172. package/chunks/RealisticTree.glsl.js +4 -4
  173. package/chunks/RibbonLine.glsl.js +58 -56
  174. package/chunks/ShadowCastAccumulate.glsl.js +3 -3
  175. package/chunks/ShadowHighlight.glsl.js +4 -4
  176. package/chunks/ShadowHighlightBuffer.glsl.js +3 -3
  177. package/chunks/Terrain.glsl.js +12 -14
  178. package/chunks/Viewshed.glsl.js +1 -1
  179. package/chunks/Water.glsl.js +3 -3
  180. package/chunks/languageUtils.js +1 -1
  181. package/config.js +1 -1
  182. package/core/Accessor.d.ts +10 -0
  183. package/core/arrayUtils.js +1 -1
  184. package/core/workers/registry.js +1 -1
  185. package/geometry/support/geometryUtils.js +1 -1
  186. package/geometry/support/heightModelInfoUtils.js +1 -1
  187. package/geometry/support/meshUtils/elevation.js +1 -1
  188. package/kernel.js +1 -1
  189. package/layers/CSVLayer.js +1 -1
  190. package/layers/GeoJSONLayer.d.ts +1 -1
  191. package/layers/GeoJSONLayer.js +1 -1
  192. package/layers/GeospatialPDFLayer.d.ts +40 -0
  193. package/layers/GeospatialPDFLayer.js +2 -0
  194. package/layers/IntegratedMeshLayer.js +1 -1
  195. package/layers/OGCFeatureLayer.js +1 -1
  196. package/layers/StreamLayer.js +1 -1
  197. package/layers/geospatialPDF/GeospatialPDFFrame.js +2 -0
  198. package/layers/geospatialPDF/GeospatialPDFLayerWorker.js +5 -0
  199. package/layers/geospatialPDF/GeospatialPDFParserUtils.js +2 -0
  200. package/layers/geospatialPDF/GeospatialPDFWorkerClient.js +2 -0
  201. package/layers/geospatialPDF/LGIDictMapFrame.js +2 -0
  202. package/layers/geospatialPDF/Projection.js +2 -0
  203. package/layers/geospatialPDF/ViewportMeasureFrame.js +2 -0
  204. package/layers/geospatialPDF/renderExtentUtils.js +2 -0
  205. package/layers/geospatialPDF/sharedUtils.js +2 -0
  206. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  207. package/layers/mixins/ArcGISImageService.js +1 -1
  208. package/layers/mixins/FeatureLayerBase.js +1 -1
  209. package/layers/raster/datasets/GeospatialPDFRaster.js +2 -0
  210. package/layers/support/ElevationQuery.js +1 -1
  211. package/layers/support/LabelClass.d.ts +13 -4
  212. package/layers/support/LabelClass.js +1 -1
  213. package/layers/support/commonProperties.js +1 -1
  214. package/layers/support/layersLoader.js +1 -1
  215. package/layers/types.d.ts +1 -1
  216. package/legend/ActiveLayerInfo.d.ts +130 -0
  217. package/legend/ActiveLayerInfo.js +2 -0
  218. package/legend/LegendContent.d.ts +118 -0
  219. package/legend/LegendContent.js +2 -0
  220. package/legend/support/clusterUtils.js +2 -0
  221. package/legend/support/colorRampUtils.js +2 -0
  222. package/legend/support/heatmapRampUtils.js +2 -0
  223. package/legend/support/relationshipRampUtils.js +2 -0
  224. package/legend/support/sizeRampUtils.js +2 -0
  225. package/legend/support/utils.js +2 -0
  226. package/legend/types.d.ts +403 -0
  227. package/libs/i3s/I3SModule.js +1 -1
  228. package/package.json +7 -7
  229. package/portal/PortalItem.js +1 -1
  230. package/portal/support/portalLayers.js +1 -1
  231. package/support/revision.js +1 -1
  232. package/support/userTypeGuards/isBasemapsSource.js +2 -0
  233. package/symbols/cim/CIMOperators.js +1 -1
  234. package/symbols/cim/callouts/effects/BackgroundCallout.js +2 -0
  235. package/symbols/cim/callouts/effects/BalloonCallout.js +2 -0
  236. package/symbols/cim/callouts/effects/PointSymbolCallout.js +2 -0
  237. package/symbols/cim/callouts/effects/SimpleLineCallout.js +2 -0
  238. package/symbols/cim/callouts/effects/calloutUtils.js +2 -0
  239. package/symbols/cim/cimAnalyzer.js +1 -1
  240. package/symbols/cim/utils.js +1 -1
  241. package/symbols/support/typeUtils.js +1 -1
  242. package/views/2d/LabelManager.js +1 -1
  243. package/views/2d/engine/AFeatureContainer.js +1 -1
  244. package/views/2d/engine/vectorTiles/decluttering/SymbolRepository.js +1 -1
  245. package/views/2d/engine/webgl/FeatureDisplayList.js +1 -1
  246. package/views/2d/engine/webgl/FeatureTile.js +1 -1
  247. package/views/2d/engine/webgl/GlyphWorker.js +1 -1
  248. package/views/2d/engine/webgl/TileCpuState.js +1 -1
  249. package/views/2d/engine/webgl/TileGpuState.js +1 -1
  250. package/views/2d/engine/webgl/collisions/LabelMetric.js +1 -1
  251. package/views/2d/engine/webgl/collisions/LabelStore.js +2 -0
  252. package/views/2d/engine/webgl/cpuMapped/CpuBuffer.js +1 -1
  253. package/views/2d/engine/webgl/cpuMapped/CpuMeshData.js +1 -1
  254. package/views/2d/engine/webgl/cpuMapped/GpuMeshState.js +1 -1
  255. package/views/2d/engine/webgl/definitions.js +1 -1
  256. package/views/2d/engine/webgl/mesh/MeshData.js +1 -1
  257. package/views/2d/engine/webgl/mesh/MultiTileMeshData.js +1 -1
  258. package/views/2d/engine/webgl/mesh/factories/CalloutMeshWriterCoordinator.js +2 -0
  259. package/views/2d/engine/webgl/mesh/factories/FeatureMeshFactory.js +1 -1
  260. package/views/2d/engine/webgl/mesh/factories/MeshWriterGroupCoordinator.js +2 -0
  261. package/views/2d/engine/webgl/mesh/templates/segmentUtils.js +1 -1
  262. package/views/2d/engine/webgl/mesh/templates/shapingUtils.js +1 -1
  263. package/views/2d/engine/webgl/shaderGraph/graph/glsl.js +1 -1
  264. package/views/2d/engine/webgl/shaderGraph/techniques/FeatureInstanceStore.js +1 -1
  265. package/views/2d/engine/webgl/shaderGraph/techniques/GraphicInstanceStore.js +1 -1
  266. package/views/2d/engine/webgl/shaderGraph/techniques/TechniqueInstance.js +1 -1
  267. package/views/2d/engine/webgl/shaderGraph/techniques/TestDisplayObject.js +1 -1
  268. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AAnimatedPolyShader.js +1 -1
  269. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AAnimatedShader.js +1 -1
  270. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedFillShader.js +1 -1
  271. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerShader.js +1 -1
  272. package/views/2d/engine/webgl/shaderGraph/techniques/createGraphicSymbolMeshSchemas.js +1 -1
  273. package/views/2d/engine/webgl/shaderGraph/techniques/dotDensity/DotDensityPolygonShader.js +1 -1
  274. package/views/2d/engine/webgl/shaderGraph/techniques/featureTechniqueUtils.js +1 -1
  275. package/views/2d/engine/webgl/shaderGraph/techniques/fill/AFillMeshWriter.js +1 -1
  276. package/views/2d/engine/webgl/shaderGraph/techniques/fill/ComplexOutlineFillMeshWriter.js +1 -1
  277. package/views/2d/engine/webgl/shaderGraph/techniques/fill/OutlineFillMeshWriter.js +1 -1
  278. package/views/2d/engine/webgl/shaderGraph/techniques/fill/PatternOutlineFillMeshWriter.js +1 -1
  279. package/views/2d/engine/webgl/shaderGraph/techniques/labels/LabelMeshWriter.js +1 -1
  280. package/views/2d/engine/webgl/shaderGraph/techniques/line/GradientStrokeTechnique.js +1 -1
  281. package/views/2d/engine/webgl/shaderGraph/techniques/line/LineMeshWriter.js +1 -1
  282. package/views/2d/engine/webgl/shaderGraph/techniques/markers/ComputedMarkerParams.js +1 -1
  283. package/views/2d/engine/webgl/shaderGraph/techniques/markers/MarkerMeshWriter.js +1 -1
  284. package/views/2d/engine/webgl/shaderGraph/techniques/markers/MarkerShader.js +1 -1
  285. package/views/2d/engine/webgl/shaderGraph/techniques/mesh/CalloutMeshWriterPolicy.js +2 -0
  286. package/views/2d/engine/webgl/shaderGraph/techniques/mesh/MeshWriter.js +1 -1
  287. package/views/2d/engine/webgl/shaderGraph/techniques/mesh/MeshWriterReferences.js +2 -0
  288. package/views/2d/engine/webgl/shaderGraph/techniques/mesh/MeshWriterVertexPack.js +1 -1
  289. package/views/2d/engine/webgl/shaderGraph/techniques/mesh/dataViewUtils.js +1 -1
  290. package/views/2d/engine/webgl/shaderGraph/techniques/pieChart/PieChartShader.js +1 -1
  291. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/AFeatureShader.js +1 -1
  292. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/ComplexFillShader.js +1 -1
  293. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/FillShader.js +1 -1
  294. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/HeatmapAccumulateShader.js +1 -1
  295. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/LineShader.js +1 -1
  296. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/OutlineFillShader.js +1 -1
  297. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/constants.js +1 -1
  298. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextMeshWriter.js +1 -1
  299. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
  300. package/views/2d/engine/webgl/util/AnnotationMatcher.js +1 -1
  301. package/views/2d/engine/webgl/util/DimensionMatcher.js +1 -1
  302. package/views/2d/engine/webgl/util/IntervalMatcher.js +1 -1
  303. package/views/2d/engine/webgl/util/LabelMatcher.js +1 -1
  304. package/views/2d/engine/webgl/util/MapMatcher.js +1 -1
  305. package/views/2d/engine/webgl/util/Matcher.js +1 -1
  306. package/views/2d/engine/webgl/util/MatcherContext.js +1 -1
  307. package/views/2d/input/MapViewInputManager.js +1 -1
  308. package/views/2d/input/handlers/KeyPan.js +1 -1
  309. package/views/2d/input/handlers/KeyRotate.js +1 -1
  310. package/views/2d/layerViewModuleImportUtils.js +1 -1
  311. package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
  312. package/views/2d/layers/GeospatialPDFLayerView2D.js +2 -0
  313. package/views/2d/layers/MediaLayerView2D.js +1 -1
  314. package/views/2d/layers/TileLayerView2D.js +1 -1
  315. package/views/2d/layers/features/FeatureContainer.js +1 -1
  316. package/views/2d/layers/features/FeaturePipelineWorker.js +1 -1
  317. package/views/2d/layers/features/RenderState.js +1 -1
  318. package/views/2d/layers/features/schema/processor/symbols/ComplexSymbolSchema.js +1 -1
  319. package/views/2d/layers/features/schema/processor/symbols/SymbolSchema.js +1 -1
  320. package/views/2d/layers/features/support/GraphicsReader.js +1 -1
  321. package/views/2d/layers/graphics/AGraphicContainer.js +1 -1
  322. package/views/2d/layers/graphics/GraphicsView2D.js +1 -1
  323. package/views/2d/layers/imagery/BaseImageryTileSubView2D.js +1 -1
  324. package/views/2d/layers/imagery/ImageryTileView2D.js +1 -1
  325. package/views/2d/layers/support/annodime/MatcherGeometryOverride.js +1 -1
  326. package/views/2d/layers/support/annodime/PrivateMatcherGeometryOverrideEffect.js +1 -1
  327. package/views/2d/layers/support/annodime/annotationGraphic.js +1 -1
  328. package/views/2d/layers/support/annodime/cimAnnotations.js +1 -1
  329. package/views/2d/layers/support/annodime/debugUtils.js +1 -1
  330. package/views/2d/layers/support/annodime/virtualFields.js +1 -1
  331. package/views/2d/types.d.ts +2 -0
  332. package/views/3d/GroundView3D.js +1 -1
  333. package/views/3d/analysis/Slice/SliceTool.js +1 -1
  334. package/views/3d/input/SceneInputManager.js +1 -1
  335. package/views/3d/input/handlers/KeyboardNavigation.js +1 -1
  336. package/views/3d/input/handlers/ground/GroundDoubleClickMove.js +2 -0
  337. package/views/3d/interactive/editingTools/move/MoveTool3D.js +1 -1
  338. package/views/3d/layerViewModuleImportUtils.js +1 -1
  339. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  340. package/views/3d/layers/GeospatialPDFLayerView3D.js +2 -0
  341. package/views/3d/layers/I3SMeshView3D.js +1 -1
  342. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  343. package/views/3d/layers/IntegratedMeshLayerView3D.js +1 -1
  344. package/views/3d/layers/LayerView3D.js +1 -1
  345. package/views/3d/layers/SceneLayerWorker.js +1 -1
  346. package/views/3d/layers/i3s/I3SMaterialUtil.js +1 -1
  347. package/views/3d/layers/i3s/Intersector.js +1 -1
  348. package/views/3d/state/controllers/GamepadKeyboardController.js +1 -1
  349. package/views/3d/support/GroundAndIMSurface.js +1 -1
  350. package/views/3d/support/MemoryController.js +1 -1
  351. package/views/3d/support/gaussianSplatting/GaussianSplatOrderTexture.js +1 -1
  352. package/views/3d/support/hitTest.js +1 -1
  353. package/views/3d/terrain/isTerrainSurfaceLayer.js +1 -1
  354. package/views/3d/types.d.ts +2 -0
  355. package/views/3d/webgl-engine/collections/Component/Material/Component.glsl.js +1 -1
  356. package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
  357. package/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js +1 -3
  358. package/views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js +1 -1
  359. package/views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js +1 -1
  360. package/views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js +8 -8
  361. package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathVertexPosition.glsl.js +6 -6
  362. package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js +1 -1
  363. package/views/3d/webgl-engine/core/shaderLibrary/forwardLinearDepthToReadShadow.glsl.js +4 -0
  364. package/views/3d/webgl-engine/core/shaderLibrary/{ForwardLinearDepthToWriteShadowMap.glsl.js → forwardLinearDepthToWriteShadow.glsl.js} +5 -5
  365. package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +8 -6
  366. package/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js +2 -2
  367. package/views/3d/webgl-engine/core/shaderLibrary/shading/WaterColor.glsl.js +1 -1
  368. package/views/3d/webgl-engine/core/shaderLibrary/shading/WaterDistortion.glsl.js +1 -1
  369. package/views/3d/webgl-engine/core/shaderLibrary/shading/calculateUVZShadow.glsl.js +3 -4
  370. package/views/3d/webgl-engine/core/shaderLibrary/shading/calculateUVZShadowFromDepth.glsl.js +2 -2
  371. package/views/3d/webgl-engine/core/shaderLibrary/shading/readFragmentShadow.glsl.js +5 -0
  372. package/views/3d/webgl-engine/core/shaderLibrary/shading/readShadow.glsl.js +24 -0
  373. package/views/3d/webgl-engine/core/shaderLibrary/terrain/TerrainTexture.glsl.js +1 -1
  374. package/views/3d/webgl-engine/core/shaderLibrary/util/CloudsParallaxShading.glsl.js +6 -6
  375. package/views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js +1 -1
  376. package/views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js +1 -1
  377. package/views/3d/webgl-engine/effects/clouds/CloudsComposition.js +1 -1
  378. package/views/3d/webgl-engine/effects/focusArea/FocusArea.js +1 -1
  379. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.glsl.js +1 -1
  380. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
  381. package/views/3d/webgl-engine/effects/highlight/ShadowHighlight.glsl.js +1 -1
  382. package/views/3d/webgl-engine/effects/highlight/ShadowHighlightBuffer.glsl.js +1 -1
  383. package/views/3d/webgl-engine/effects/highlight/ShadowHighlightTechnique.js +1 -1
  384. package/views/3d/webgl-engine/effects/shadowAccumulation/ShadowAccumulator.js +1 -1
  385. package/views/3d/webgl-engine/effects/shadowAccumulation/ShadowCastAccumulate.glsl.js +1 -1
  386. package/views/3d/webgl-engine/lib/LineMaterial.js +1 -1
  387. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  388. package/views/3d/webgl-engine/lib/ShadowMap.js +1 -1
  389. package/views/3d/webgl-engine/lib/intersectorUtilsConversions.js +1 -1
  390. package/views/3d/webgl-engine/materials/DrawParameters.js +1 -1
  391. package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
  392. package/views/3d/webgl-engine/materials/Path.glsl.js +1 -1
  393. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  394. package/views/3d/webgl-engine/materials/Water.glsl.js +1 -1
  395. package/views/3d/webgl-engine/shaders/DefaultMaterial.glsl.js +1 -1
  396. package/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js +1 -1
  397. package/views/3d/webgl-engine/shaders/GaussianSplat.glsl.js +1 -1
  398. package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +1 -1
  399. package/views/3d/webgl-engine/shaders/LineMarker.glsl.js +1 -1
  400. package/views/3d/webgl-engine/shaders/LineTechniqueConfiguration.js +1 -1
  401. package/views/3d/webgl-engine/shaders/RealisticTree.glsl.js +1 -1
  402. package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
  403. package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
  404. package/views/3d/webgl-engine/shaders/ScreenSpacePassAtmosphere.glsl.js +1 -1
  405. package/views/3d/webgl-engine/shaders/Terrain.glsl.js +1 -1
  406. package/views/3d/webgl-engine/shaders/{AnimatedLine.glsl.js → animatedAlpha.glsl.js} +11 -17
  407. package/views/SceneView.d.ts +31 -0
  408. package/views/SceneView.js +1 -1
  409. package/views/ToolViewManager.js +1 -1
  410. package/views/VideoView.js +1 -1
  411. package/views/View.d.ts +35 -0
  412. package/views/View.js +1 -1
  413. package/views/analysis/ElevationProfile/ElevationProfileLineGroundComputation.js +1 -1
  414. package/views/analysis/ElevationProfile/elevationProfileQuerySourceUtils.js +1 -1
  415. package/views/interactive/options/ViewOptions.d.ts +98 -0
  416. package/views/interactive/options/ViewOptions.js +2 -0
  417. package/views/interactive/support/Units.d.ts +10 -2
  418. package/views/interactive/support/Units.js +1 -1
  419. package/views/layers/FeatureLikeLayerView.d.ts +27 -5
  420. package/views/layers/GraphicsLayerView.d.ts +25 -2
  421. package/views/layers/ImageryTileLayerView.js +1 -1
  422. package/views/selection/types.d.ts +1 -1
  423. package/views/support/DefaultsFromMap.js +1 -1
  424. package/views/types.d.ts +9 -3
  425. package/widgets/BasemapGallery/BasemapGalleryViewModel.d.ts +3 -0
  426. package/widgets/BasemapGallery/support/BasemapGalleryItem.d.ts +3 -0
  427. package/widgets/BasemapGallery/support/LocalBasemapsSource.d.ts +2 -0
  428. package/widgets/BasemapGallery/support/PortalBasemapsSource.d.ts +2 -0
  429. package/widgets/BasemapGallery/types.d.ts +6 -1
  430. package/widgets/BatchAttributeForm/inputs/AttachmentElementInput.d.ts +2 -0
  431. package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
  432. package/widgets/Editor/EditorViewModel.d.ts +2 -1
  433. package/widgets/Editor/EditorViewModel.js +1 -1
  434. package/widgets/Editor/legacy/CreateFeaturesWorkflow.js +1 -1
  435. package/widgets/Editor.d.ts +2 -1
  436. package/widgets/Editor.js +1 -1
  437. package/widgets/ElevationProfile/ElevationProfileLineGround.js +1 -1
  438. package/widgets/HistogramRangeSlider/HistogramRangeSliderViewModel.d.ts +1 -0
  439. package/widgets/HistogramRangeSlider/HistogramRangeSliderViewModel.js +1 -1
  440. package/widgets/HistogramRangeSlider.js +1 -1
  441. package/widgets/Legend/LegendViewModel.d.ts +1 -0
  442. package/widgets/Legend/LegendViewModel.js +1 -1
  443. package/widgets/Legend/styles/card/CardView.d.ts +1 -0
  444. package/widgets/Legend/styles/card/CardView.js +1 -1
  445. package/widgets/Legend/styles/classic/ClassicView.d.ts +1 -0
  446. package/widgets/Legend/styles/classic/ClassicView.js +1 -1
  447. package/widgets/Legend/support/ActiveLayerInfo.d.ts +2 -0
  448. package/widgets/Legend.js +1 -1
  449. package/widgets/support/SelectionToolbar/SelectionToolbarViewModel.d.ts +8 -2
  450. package/widgets/support/SelectionToolbar/SelectionToolbarViewModel.js +1 -1
  451. package/widgets/support/SelectionToolbar/VisibleElements.d.ts +8 -1
  452. package/widgets/support/SelectionToolbar/VisibleElements.js +1 -1
  453. package/widgets/support/SelectionToolbar.d.ts +7 -1
  454. package/widgets/support/SelectionToolbar.js +1 -1
  455. package/assets/esri/core/workers/chunks/01ca17092545d72be7b6.js +0 -1
  456. package/assets/esri/core/workers/chunks/03918a862455191a8910.js +0 -1
  457. package/assets/esri/core/workers/chunks/0b727d7bf3e36e146725.js +0 -1
  458. package/assets/esri/core/workers/chunks/0bd067a5c0bac96caeb5.js +0 -1
  459. package/assets/esri/core/workers/chunks/0ff13f7a18b0123d253e.js +0 -1
  460. package/assets/esri/core/workers/chunks/114bc14c49176f64a2c5.js +0 -1
  461. package/assets/esri/core/workers/chunks/1630913399384030d0b9.js +0 -1
  462. package/assets/esri/core/workers/chunks/173417fe995e9bfc49d8.js +0 -1
  463. package/assets/esri/core/workers/chunks/1a39335aa2dce6d564d9.js +0 -1
  464. package/assets/esri/core/workers/chunks/25bb07d3c32b16a08813.js +0 -1
  465. package/assets/esri/core/workers/chunks/25cc6d7178a52f2f46b7.js +0 -1
  466. package/assets/esri/core/workers/chunks/2cf571d968118b6bdde0.js +0 -1
  467. package/assets/esri/core/workers/chunks/2e999b05ce179dd9fa08.js +0 -1
  468. package/assets/esri/core/workers/chunks/354912041363502c6a89.js +0 -1
  469. package/assets/esri/core/workers/chunks/36792b8a85e88044cb49.js +0 -1
  470. package/assets/esri/core/workers/chunks/3acc1299c1382c3b034d.js +0 -1
  471. package/assets/esri/core/workers/chunks/430802108b63194b7ddd.js +0 -2
  472. package/assets/esri/core/workers/chunks/43436c7ccc6baefc885d.js +0 -1
  473. package/assets/esri/core/workers/chunks/4396ef5ab3eb9e9a7df2.js +0 -1
  474. package/assets/esri/core/workers/chunks/445b0ca1b70730c9a2e6.js +0 -1
  475. package/assets/esri/core/workers/chunks/48d3da636be15581fd7d.js +0 -1
  476. package/assets/esri/core/workers/chunks/49e8ff5ed079a9e3be4b.js +0 -1
  477. package/assets/esri/core/workers/chunks/4efe5827a5c61db3b19d.js +0 -2
  478. package/assets/esri/core/workers/chunks/501df20cdd09384f6ee2.js +0 -1
  479. package/assets/esri/core/workers/chunks/50ae209237f104735a30.js +0 -1
  480. package/assets/esri/core/workers/chunks/54f9062526c2002b7fd7.js +0 -1
  481. package/assets/esri/core/workers/chunks/56b7ac280bf0be938c14.js +0 -1
  482. package/assets/esri/core/workers/chunks/5938d5f6e37f49867d5a.js +0 -1
  483. package/assets/esri/core/workers/chunks/61bcbafd676804ce3e1d.js +0 -1
  484. package/assets/esri/core/workers/chunks/63f7141c71f29dbe8270.js +0 -1
  485. package/assets/esri/core/workers/chunks/70347d25968975126fa7.js +0 -1
  486. package/assets/esri/core/workers/chunks/726ca458b98bb4334431.js +0 -1
  487. package/assets/esri/core/workers/chunks/75410a4de76e67ed5da4.js +0 -1
  488. package/assets/esri/core/workers/chunks/85780f4fa4b5509f864e.js +0 -1
  489. package/assets/esri/core/workers/chunks/862754d2d659528fe884.js +0 -1
  490. package/assets/esri/core/workers/chunks/8628c027198982baed7c.js +0 -1
  491. package/assets/esri/core/workers/chunks/8675ab3c4dec2f13b9c6.js +0 -1
  492. package/assets/esri/core/workers/chunks/8c521caf050a486b6548.js +0 -1
  493. package/assets/esri/core/workers/chunks/8ce14dd209462f88b163.js +0 -1
  494. package/assets/esri/core/workers/chunks/917dec9c004218c58950.js +0 -1
  495. package/assets/esri/core/workers/chunks/91f451b98e0f696043df.js +0 -1
  496. package/assets/esri/core/workers/chunks/9d92e6f0beed9a8580fa.js +0 -1
  497. package/assets/esri/core/workers/chunks/a42505b978d54d36d3b6.js +0 -1
  498. package/assets/esri/core/workers/chunks/a6d4132a16c51323a38a.js +0 -1
  499. package/assets/esri/core/workers/chunks/a86a4e550a92f770d6d5.js +0 -1
  500. package/assets/esri/core/workers/chunks/add834f867900a7091d2.js +0 -1
  501. package/assets/esri/core/workers/chunks/b45ebb1b64ee7314375e.js +0 -1
  502. package/assets/esri/core/workers/chunks/b56c5883a5468b18b122.js +0 -1
  503. package/assets/esri/core/workers/chunks/b5a102cf9f4377fb9842.js +0 -1
  504. package/assets/esri/core/workers/chunks/b6409d89914030d5854a.js +0 -1
  505. package/assets/esri/core/workers/chunks/baa8bce361a2677533ec.js +0 -1
  506. package/assets/esri/core/workers/chunks/c118b88a7c4359e68d9b.js +0 -1
  507. package/assets/esri/core/workers/chunks/c5e288d57bacb8451e2d.js +0 -2
  508. package/assets/esri/core/workers/chunks/ce3fb992f6c6ae7378a3.js +0 -1
  509. package/assets/esri/core/workers/chunks/ceda1e08c9ff26248db0.js +0 -1
  510. package/assets/esri/core/workers/chunks/cf1106eda10f3cccb1bd.js +0 -1
  511. package/assets/esri/core/workers/chunks/cfd8317ecd2e63af7c40.js +0 -1
  512. package/assets/esri/core/workers/chunks/d5e3f8e5b8d2576d3cb3.js +0 -2
  513. package/assets/esri/core/workers/chunks/d6130cd8a20d24dd9d3c.js +0 -1
  514. package/assets/esri/core/workers/chunks/da5b3421a984cb94fd58.js +0 -1
  515. package/assets/esri/core/workers/chunks/da6583e8d88441a1c02a.js +0 -1
  516. package/assets/esri/core/workers/chunks/ddb5d29a8998d0a76fd4.js +0 -1
  517. package/assets/esri/core/workers/chunks/de8a3a0796bd115426c0.js +0 -1
  518. package/assets/esri/core/workers/chunks/e52f30dfb7c82491a7f2.js +0 -1
  519. package/assets/esri/core/workers/chunks/e707534a700a2de687ca.js +0 -1
  520. package/assets/esri/core/workers/chunks/e88eee4c2fc4229c2a8b.js +0 -1
  521. package/assets/esri/core/workers/chunks/f465fb26541372fdc908.js +0 -2
  522. package/assets/esri/core/workers/chunks/f5423006fb07db7dd6ee.js +0 -1
  523. package/assets/esri/core/workers/chunks/f75e57d3e02f9828b049.js +0 -1
  524. package/assets/esri/core/workers/chunks/f774e5b94710ccee1af0.js +0 -1
  525. package/assets/esri/core/workers/chunks/fdad31bbe8aee68a6eaf.js +0 -1
  526. package/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepthToReadShadowMap.glsl.js +0 -4
  527. package/views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js +0 -18
  528. package/views/3d/webgl-engine/core/shaderLibrary/shading/ShadowmapFiltering.glsl.js +0 -4
  529. /package/assets/esri/core/workers/chunks/{430802108b63194b7ddd.js.LICENSE.txt → 033debcbf6b3683dc4fe.js.LICENSE.txt} +0 -0
  530. /package/assets/esri/core/workers/chunks/{4efe5827a5c61db3b19d.js.LICENSE.txt → 064445e6f9512817ac87.js.LICENSE.txt} +0 -0
  531. /package/assets/esri/core/workers/chunks/{c5e288d57bacb8451e2d.js.LICENSE.txt → 463d69f596d1d34ef275.js.LICENSE.txt} +0 -0
  532. /package/assets/esri/core/workers/chunks/{d5e3f8e5b8d2576d3cb3.js.LICENSE.txt → 58a17fb3c0dd07c63d57.js.LICENSE.txt} +0 -0
  533. /package/assets/esri/core/workers/chunks/{7f2ac03efaa4a4898ba2.js.LICENSE.txt → c3b96d1d43afccd23e45.js.LICENSE.txt} +0 -0
  534. /package/assets/esri/core/workers/chunks/{f465fb26541372fdc908.js.LICENSE.txt → ce08e3369641da0d7a27.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{UniqueSymbol as e}from"./core.js";import{isSearchCircleOverlapingSymbol as t,tileCoordChangeX as s,tileCoordChangeY as i,GridIndex as l}from"./util.js";class o{static fromSymbols(e,t){let s=e.length;if(s>=r){let i=t;do{i/=2,s/=4}while(s>n&&i>y);const r=new l(t,t,i);for(const t of e)r.getCell(t.xTile,t.yTile)?.push(t);return new o(t,e,r)}return new o(t,e,null)}constructor(e,t,s){this.tileCoordRange=e,this._symbols=t,this._index=s}addSymbols(e){for(const t of e)this._symbols.push(t);if(this._index)for(const t of e)this._index.getCell(t.xTile,t.yTile).push(t)}removeSymbols(e){const t=new Set(e);if(this._symbols=this._symbols.filter(e=>!t.has(e)),this._index)for(const s of this._index.cells)for(let e=0;e<s.length;e++)s[e]=s[e].filter(e=>!t.has(e))}getSymbols(){return this._symbols}getCandidate(e,t,s,i){if(!this._index){for(const l of this._symbols)if(s===l.hash&&Math.abs(e-l.xTile)<=i&&Math.abs(t-l.yTile)<=i)return l;return null}const l=this._index.getCellSpan(e-i,t-i,e+i,t+i),[o,r,n,y]=l;for(let a=r;a<=y;a++)for(let l=o;l<=n;l++){const o=this._index.cells[a][l];for(const l of o)if(s===l.hash&&Math.abs(e-l.xTile)<=i&&Math.abs(t-l.yTile)<=i)return l}return null}}const r=32,n=8,y=64,a=20;class u{constructor(e,t){this.tileCoordRange=e,this._visibleTiles=t,this._indexMapByTile=new Map,this._uniqueSymbolsByStyleLayerId=new Map,this._featureMetricUpdates=[]}get uniqueSymbols(){return null==this._uniqueSymbolLayerArray&&(this._uniqueSymbolLayerArray=this._createUniqueSymbolLayerArray()),this._uniqueSymbolLayerArray}registerVectorTile(e,t){const s=this._ensureIndexMap(e),i=t?.values()??s.keys();for(const l of i){const e=s.get(l);e&&(this._removeSymbols(l,e.getSymbols()),s.delete(l))}this._addSymbols(e.key,s,e.symbols),this._invalidate()}unregisterVectorTile(e){this._removeTile(e),this._invalidate()}flushFeatureTileUpdateMessages(){for(const e of this._featureMetricUpdates)switch(e.type){case"tile-add":this._ensureIndexMap(e.tile);break;case"tile-remove":this._removeTile(e.tile);break;case"metrics-add":{const{tile:t,metrics:s}=e,i=this._indexMapByTile.get(t);if(!i)throw new Error(`tile ${t.id} not registered!`);this._addSymbols(t.key,i,h(s));break}case"metrics-remove":{const{tile:t,metrics:s}=e,i=this._indexMapByTile.get(t);if(!i)continue;const l=h(s);for(const[e,o]of i.entries()){const t=l.get(e);t&&(o.removeSymbols(t),this._removeSymbols(e,t))}break}}this._featureMetricUpdates.length=0,this._invalidate()}registerFeatureTile(e){this._featureMetricUpdates.push({type:"tile-add",tile:e})}unregisterFeatureTile(e){this._featureMetricUpdates.push({type:"tile-remove",tile:e})}insertFeatureTileMetrics(e,t){this._featureMetricUpdates.push({type:"metrics-add",tile:e,metrics:t})}removeFeatureTileMetrics(e,t){this._featureMetricUpdates.push({type:"metrics-remove",tile:e,metrics:t})}deleteStyleLayers(e){for(const t of this._indexMapByTile.values())for(const s of e){const e=t.get(s);e&&(this._removeSymbols(s,e.getSymbols()),t.delete(s))}this._invalidate()}querySymbols(e,s,i,l){const o=[];for(const[r,n]of this._uniqueSymbolsByStyleLayerId.entries())for(const l of n){const n=l.tileSymbols.find(e=>e.selectedForRendering);n&&t(n,e,s,i)&&o.push({vtlSymbol:n,styleLayerUID:r,tileKey:n.tile.key})}return o}_ensureIndexMap(e){let t=this._indexMapByTile.get(e);return t||(t=new Map,this._indexMapByTile.set(e,t)),t}_invalidate(){this._uniqueSymbolLayerArray=null}_addSymbols(e,t,s){for(const[i,l]of s){let e=t.get(i);e?e.addSymbols(l):(e=o.fromSymbols(l,this.tileCoordRange),t.set(i,e))}this._updateUniqueSymbols(e,s)}_removeTile(e){const t=this._indexMapByTile.get(e);if(t){for(const[e,s]of t.entries())this._removeSymbols(e,s.getSymbols());this._indexMapByTile.delete(e),this._invalidate()}}_removeSymbols(e,t){for(const s of t){const t=s.uniqueSymbol;if(t){if(t.tileSymbols=t.tileSymbols.filter(e=>e!==s),0===t.tileSymbols.length){const s=this._uniqueSymbolsByStyleLayerId.get(e);s.delete(t),0===s.size&&this._uniqueSymbolsByStyleLayerId.delete(e)}s.uniqueSymbol=null}}}_updateUniqueSymbols(t,s){if(0!==s.size){for(const e of this._visibleTiles)e.parentTile||e.key.world!==t.world||e.key.level===t.level&&!e.key.equals(t)||this._matchSymbols(e,t,s);for(const[t,i]of s)for(const s of i)if(!s.uniqueSymbol){s.uniqueSymbol=new e(s);let i=this._uniqueSymbolsByStyleLayerId.get(t);i||(i=new Set,this._uniqueSymbolsByStyleLayerId.set(t,i)),i.add(s.uniqueSymbol)}}}_matchSymbols(e,t,l){if(e.key.level>t.level){const s=e.key.level-t.level;if(e.key.row>>s!==t.row||e.key.col>>s!==t.col)return}if(t.level>e.key.level){const s=t.level-e.key.level;if(t.row>>s!==e.key.row||t.col>>s!==e.key.col)return}const o=new Map;for(const[r,n]of l){const l=[],y=e.key.level<t.level?0:1<<Math.abs(e.key.level-t.level),u=this._indexMapByTile.get(e),h=u?.get(r);if(h)for(const o of n){if(o.uniqueSymbol)continue;const r=s(this.tileCoordRange,o.xTile,t,e.key),n=i(this.tileCoordRange,o.yTile,t,e.key),u=-a,c=this.tileCoordRange+a;if(!(r>=u&&r<c&&n>=u&&n<c)){l.push(o);continue}const m=h.getCandidate(r,n,o.hash,y),f=m?.uniqueSymbol;f?(o.uniqueSymbol=f,f.tileSymbols.push(o)):l.push(o)}l.length>0&&o.set(r,l)}for(const s of e.childrenTiles||[])this._matchSymbols(s,t,o)}_createUniqueSymbolLayerArray(){const e=this._uniqueSymbolsByStyleLayerId,t=new Array(e.size);let s,i=0;for(const[l,o]of e){const e=new Array(o.size);s=0;for(const t of o)e[s++]=t;t[i]={styleLayerUID:l,uniqueSymbols:e},i++}return t}}function h(e){const t=new Map;for(const s of e){const e=s.labelClassId;let i=t.get(e);i||(i=[],t.set(e,i)),i.push(s)}return t}export{u as SymbolRepository};
2
+ import{UniqueSymbol as e}from"./core.js";import{isSearchCircleOverlapingSymbol as t,tileCoordChangeX as s,tileCoordChangeY as i,GridIndex as l}from"./util.js";class o{static fromSymbols(e,t){let s=e.length;if(s>=r){let i=t;do{i/=2,s/=4}while(s>n&&i>y);const r=new l(t,t,i);for(const t of e)r.getCell(t.xTile,t.yTile)?.push(t);return new o(t,e,r)}return new o(t,e,null)}constructor(e,t,s){this.tileCoordRange=e,this._symbols=t,this._index=s}addSymbols(e){for(const t of e)this._symbols.push(t);if(this._index)for(const t of e)this._index.getCell(t.xTile,t.yTile).push(t)}removeSymbols(e){const t=new Set(e);if(this._symbols=this._symbols.filter(e=>!t.has(e)),this._index)for(const s of this._index.cells)for(let e=0;e<s.length;e++)s[e]=s[e].filter(e=>!t.has(e))}getSymbols(){return this._symbols}getCandidate(e,t,s,i){if(!this._index){for(const l of this._symbols)if(s===l.hash&&Math.abs(e-l.xTile)<=i&&Math.abs(t-l.yTile)<=i)return l;return null}const l=this._index.getCellSpan(e-i,t-i,e+i,t+i),[o,r,n,y]=l;for(let a=r;a<=y;a++)for(let l=o;l<=n;l++){const o=this._index.cells[a][l];for(const l of o)if(s===l.hash&&Math.abs(e-l.xTile)<=i&&Math.abs(t-l.yTile)<=i)return l}return null}}const r=32,n=8,y=64,a=20;class u{constructor(e,t){this.tileCoordRange=e,this._visibleTiles=t,this._indexMapByTile=new Map,this._uniqueSymbolsByStyleLayerId=new Map,this._featureMetricUpdates=[]}get uniqueSymbols(){return null==this._uniqueSymbolLayerArray&&(this._uniqueSymbolLayerArray=this._createUniqueSymbolLayerArray()),this._uniqueSymbolLayerArray}registerVectorTile(e,t){const s=this._ensureIndexMap(e),i=t?.values()??s.keys();for(const l of i){const e=s.get(l);e&&(this._removeSymbols(l,e.getSymbols()),s.delete(l))}this._addSymbols(e.key,s,e.symbols),this._invalidate()}unregisterVectorTile(e){this._removeTile(e),this._invalidate()}flushFeatureTileUpdateMessages(){for(const e of this._featureMetricUpdates)switch(e.type){case"tile-add":this._ensureIndexMap(e.tile);break;case"tile-remove":this._removeTile(e.tile);break;case"metrics-add":{const{tile:t,metrics:s}=e,i=this._indexMapByTile.get(t);if(!i)throw new Error(`tile ${t.id} not registered!`);this._addSymbols(t.key,i,h(s));break}case"metrics-remove":{const{tile:t,metrics:s}=e,i=this._indexMapByTile.get(t);if(!i)continue;const l=h(s);for(const[e,o]of i.entries()){const t=l.get(e);t&&(o.removeSymbols(t),this._removeSymbols(e,t))}break}}this._featureMetricUpdates.length=0,this._invalidate()}registerFeatureTile(e){this._featureMetricUpdates.push({type:"tile-add",tile:e})}unregisterFeatureTile(e){this._featureMetricUpdates.push({type:"tile-remove",tile:e})}insertFeatureTileMetrics(e,t){this._featureMetricUpdates.push({type:"metrics-add",tile:e,metrics:t})}removeFeatureTileMetrics(e,t){this._featureMetricUpdates.push({type:"metrics-remove",tile:e,metrics:t})}deleteStyleLayers(e){for(const t of this._indexMapByTile.values())for(const s of e){const e=t.get(s);e&&(this._removeSymbols(s,e.getSymbols()),t.delete(s))}this._invalidate()}querySymbols(e,s,i,l){const o=[];for(const[r,n]of this._uniqueSymbolsByStyleLayerId.entries())for(const l of n){const n=l.tileSymbols.find(e=>e.selectedForRendering);n&&t(n,e,s,i)&&o.push({vtlSymbol:n,styleLayerUID:r,tileKey:n.tile.key})}return o}_ensureIndexMap(e){let t=this._indexMapByTile.get(e);return t||(t=new Map,this._indexMapByTile.set(e,t)),t}_invalidate(){this._uniqueSymbolLayerArray=null}_addSymbols(e,t,s){for(const[i,l]of s){let e=t.get(i);e?e.addSymbols(l):(e=o.fromSymbols(l,this.tileCoordRange),t.set(i,e))}this._updateUniqueSymbols(e,s)}_removeTile(e){const t=this._indexMapByTile.get(e);if(t){for(const[e,s]of t.entries())this._removeSymbols(e,s.getSymbols());this._indexMapByTile.delete(e),this._invalidate()}}_removeSymbols(e,t){for(const s of t){const t=s.uniqueSymbol;if(t){if(t.tileSymbols=t.tileSymbols.filter(e=>e!==s),0===t.tileSymbols.length){const s=this._uniqueSymbolsByStyleLayerId.get(e);s.delete(t),0===s.size&&this._uniqueSymbolsByStyleLayerId.delete(e)}s.uniqueSymbol=null}}}_updateUniqueSymbols(t,s){if(0!==s.size){for(const e of this._visibleTiles)e.parentTile||e.key.world!==t.world||e.key.level===t.level&&!e.key.equals(t)||this._matchSymbols(e,t,s);for(const[t,i]of s)for(const s of i)if(!s.uniqueSymbol){s.uniqueSymbol=new e(s);let i=this._uniqueSymbolsByStyleLayerId.get(t);i||(i=new Set,this._uniqueSymbolsByStyleLayerId.set(t,i)),i.add(s.uniqueSymbol)}}}_matchSymbols(e,t,l){if(e.key.level>t.level){const s=e.key.level-t.level;if(e.key.row>>s!==t.row||e.key.col>>s!==t.col)return}if(t.level>e.key.level){const s=t.level-e.key.level;if(t.row>>s!==e.key.row||t.col>>s!==e.key.col)return}const o=new Map;for(const[r,n]of l){const l=[],y=Math.abs(e.key.level-t.level),u=e.key.level<t.level?1:1<<y,h=this._indexMapByTile.get(e),c=h?.get(r);if(c)for(const o of n){if(o.uniqueSymbol)continue;const r=s(this.tileCoordRange,o.xTile,t,e.key),n=i(this.tileCoordRange,o.yTile,t,e.key),y=-a,h=this.tileCoordRange+a;if(!(r>=y&&r<h&&n>=y&&n<h)){l.push(o);continue}const m=c.getCandidate(r,n,o.hash,u),f=m?.uniqueSymbol;f?(o.uniqueSymbol=f,f.tileSymbols.push(o)):l.push(o)}l.length>0&&o.set(r,l)}for(const s of e.childrenTiles||[])this._matchSymbols(s,t,o)}_createUniqueSymbolLayerArray(){const e=this._uniqueSymbolsByStyleLayerId,t=new Array(e.size);let s,i=0;for(const[l,o]of e){const e=new Array(o.size);s=0;for(const t of o)e[s++]=t;t[i]={styleLayerUID:l,uniqueSymbols:e},i++}return t}}function h(e){const t=new Map;for(const s of e){const e=s.labelClassId;let i=t.get(e);i||(i=[],t.set(e,i)),i.push(s)}return t}export{u as SymbolRepository};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import"../../../../core/has.js";import{estimateNumberMemory as t}from"../../../../core/memoryEstimations.js";import{List as e}from"./cpuMapped/FreeList.js";import{isHittest as n}from"./shaderGraph/techniques/featureTechniqueUtils.js";import{PrimitiveType as i,DataType as s}from"../../../webgl/enums.js";function a(t,e){return t<<16|255&e}function r(t){return 255&t}function d(t,e){return e?e.get(t.instanceId)??t.techniqueRef.symbologyPlane:t.techniqueRef.symbologyPlane}class h{constructor(t,e,n,i,s){this.instance=t,this.materialKey=e,this.target=n,this.start=i,this.count=s}get textureKey(){return r(this.materialKey)}get indexEnd(){return this.start+this.count}extend(t){this.count+=t}render(t){const e=this.instance.techniqueRef;this.target.bind(t.context),e.render(t,this)}getStencilReference(){return this.target.stencilRef}getAttributePrecisionPackFactors(){const t=this.instance.instanceId;return this.target.getMesh(t).getAttributePrecisionPackFactors()}draw(t,e){n(t)?this.drawCompute(t.context,e):this.drawGeometry(t.context,e)}drawCompute(t,e){const n=this.instance.instanceId,a=this.target.getMesh(n).getComputeVAO(t,e),r=this.start*Uint32Array.BYTES_PER_ELEMENT/3;t.bindVAO(a,e.locations),t.drawElements(i.POINTS,this.count/3,s.UNSIGNED_INT,r),t.bindVAO(null)}drawGeometry(t,e){const n=this.instance.instanceId,a=this.target.getMesh(n).getGeometryVAO(t,e),r=this.start*Uint32Array.BYTES_PER_ELEMENT;t.bindVAO(a,e.locations),t.drawElements(i.TRIANGLES,this.count,s.UNSIGNED_INT,r),t.bindVAO(null)}}class o{constructor(){this._length=0,this._minOrderedLength=0,this._materialKeys=new Set}static fromDisplayEntities(t,e,n,i){const s=new o,r=n.getInstanceOrder();for(const d of t.values())for(const t of d.records){const d=n.getInstance(t.instanceId),h=a(d.instanceId,t.textureKey);s.addRecord(d,h,t.indexStart,t.indexCount,t.vertexStart,t.vertexCount,e,i,r)}return s}get length(){return this._length}get minOrderedLength(){return this._minOrderedLength}get minUnorderedLength(){return this._materialKeys.size}get usedMemory(){return this._length?5*this._length*t:0}render(t,e){const{drawPhase:n}=t;let i=!1;for(const s of this.infos()){const a=s.instance.techniqueRef;a.drawPhase&n&&(null==e||a.type===e)&&(s.render(t),i=!0)}return i}addRecord(t,n,i,s,a,r,o,l,c){let u=i,_=s;if(_||(u=a,_=r),!_)return;if(null==this._head){const i=new h(t,n,o,u,_);return this._head=new e(i),this._tail=this._head,this._length++,void this._minOrderedLength++}if(1===l)return this._insert(t,n,o,u,_,this._tail,null);let g=null,m=this._head;const f=t.instanceId,y=d(t,c);if(2===l&&(2===y||3===y))return this._insert(t,n,o,u,_,this._tail,null);for(;m;){const e=m.data.instance,i=e.instanceId,s=d(e,c),a=g?.data.instance.instanceId;if(y<s||f===a&&f!==i)return this._insert(t,n,o,u,_,g,m);g=m,m=m.next}this._insert(t,n,o,u,_,g,null)}*infos(){if(null!=this._head)for(const t of this._head.values())yield t}_insert(t,n,i,s,a,r,d){if(null==r&&null==d){const r=new h(t,n,i,s,a);return this._head=new e(r),this._tail=this._head,this._length++,void this._minOrderedLength++}return n!==this._tail.data.materialKey&&this._minOrderedLength++,this._materialKeys.add(n),null==r&&null!=d?this._insertAtHead(t,n,i,s,a,d):null!=r&&null==d?this._insertAtEnd(t,n,i,s,a,r):null!=r&&null!=d?this._insertAtMiddle(t,n,i,s,a,r,d):void 0}_insertAtHead(t,n,i,s,a,r){const d=s+a;if(n===r.data.materialKey&&i===r.data.target&&d===r.data.start)r.data.start=s,r.data.count+=a;else{const d=new h(t,n,i,s,a);this._head=new e(d),this._head.next=r,this._length++}}_insertAtEnd(t,n,i,s,a,r){if(r.data.materialKey===n&&r.data.indexEnd===s)r.data.count+=a;else{const d=new h(t,n,i,s,a);this._tail=new e(d),r.next=this._tail,this._length++}}_insertAtMiddle(t,n,i,s,a,r,d){const o=s+a;if(r.data.materialKey===n&&r.data.target===i&&r.data.indexEnd===s)r.data.count+=a,r.data.materialKey===d.data.materialKey&&r.data.target===d.data.target&&r.data.indexEnd===d.data.start&&(r.data.count+=d.data.count,r.next=d.next,this._length--);else if(n===d.data.materialKey&&i===d.data.target&&o===d.data.start)d.data.start=s,d.data.count+=a;else{const o=new h(t,n,i,s,a),l=new e(o);r.next=l,l.next=d,this._length++}}}export{o as DisplayList,h as DisplayListInfo};
2
+ import"../../../../core/has.js";import{estimateNumberMemory as t}from"../../../../core/memoryEstimations.js";import{List as e}from"./cpuMapped/FreeList.js";import{isHittest as n}from"./shaderGraph/techniques/featureTechniqueUtils.js";import{PrimitiveType as i,DataType as s}from"../../../webgl/enums.js";function a(t,e){return t<<16|255&e}function r(t){return 255&t}function d(t,e){return e?e.get(t.instanceId)??t.techniqueRef.symbologyPlane:t.techniqueRef.symbologyPlane}class h{constructor(t,e,n,i,s){this.instance=t,this.materialKey=e,this.target=n,this.start=i,this.count=s}get textureKey(){return r(this.materialKey)}get indexEnd(){return this.start+this.count}extend(t){this.count+=t}render(t){const e=this.instance.techniqueRef;this.target.bind(t.context),e.render(t,this)}getStencilReference(){return this.instance.stencilReferenceOverride??this.target.stencilRef}getAttributePrecisionPackFactors(){const t=this.instance.instanceId;return this.target.getMesh(t).getAttributePrecisionPackFactors()}draw(t,e){n(t)?this.drawCompute(t.context,e):this.drawGeometry(t.context,e)}drawCompute(t,e){const n=this.instance.instanceId,a=this.target.getMesh(n).getComputeVAO(t,e),r=this.start*Uint32Array.BYTES_PER_ELEMENT/3;t.bindVAO(a,e.locations),t.drawElements(i.POINTS,this.count/3,s.UNSIGNED_INT,r),t.bindVAO(null)}drawGeometry(t,e){const n=this.instance.instanceId,a=this.target.getMesh(n).getGeometryVAO(t,e),r=this.start*Uint32Array.BYTES_PER_ELEMENT;t.bindVAO(a,e.locations),t.drawElements(i.TRIANGLES,this.count,s.UNSIGNED_INT,r),t.bindVAO(null)}}class o{constructor(){this._length=0,this._minOrderedLength=0,this._materialKeys=new Set}static fromDisplayEntities(t,e,n,i){const s=new o,r=n.getInstanceOrder();for(const d of t.values())for(const t of d.records){const d=n.getInstance(t.instanceId),h=a(d.instanceId,t.textureKey);s.addRecord(d,h,t.indexStart,t.indexCount,t.vertexStart,t.vertexCount,e,i,r)}return s}get length(){return this._length}get minOrderedLength(){return this._minOrderedLength}get minUnorderedLength(){return this._materialKeys.size}get usedMemory(){return this._length?5*this._length*t:0}render(t,e){const{drawPhase:n}=t;let i=!1;for(const s of this.infos()){const a=s.instance.techniqueRef;s.instance.drawPhase&n&&(null==e||a.type===e)&&(s.render(t),i=!0)}return i}addRecord(t,n,i,s,a,r,o,l,c){let u=i,_=s;if(_||(u=a,_=r),!_)return;if(null==this._head){const i=new h(t,n,o,u,_);return this._head=new e(i),this._tail=this._head,this._length++,void this._minOrderedLength++}if(1===l)return this._insert(t,n,o,u,_,this._tail,null);let g=null,m=this._head;const f=t.instanceId,y=d(t,c);if(2===l&&(2===y||3===y))return this._insert(t,n,o,u,_,this._tail,null);for(;m;){const e=m.data.instance,i=e.instanceId,s=d(e,c),a=g?.data.instance.instanceId;if(y<s||f===a&&f!==i)return this._insert(t,n,o,u,_,g,m);g=m,m=m.next}this._insert(t,n,o,u,_,g,null)}*infos(){if(null!=this._head)for(const t of this._head.values())yield t}_insert(t,n,i,s,a,r,d){if(null==r&&null==d){const r=new h(t,n,i,s,a);return this._head=new e(r),this._tail=this._head,this._length++,void this._minOrderedLength++}return n!==this._tail.data.materialKey&&this._minOrderedLength++,this._materialKeys.add(n),null==r&&null!=d?this._insertAtHead(t,n,i,s,a,d):null!=r&&null==d?this._insertAtEnd(t,n,i,s,a,r):null!=r&&null!=d?this._insertAtMiddle(t,n,i,s,a,r,d):void 0}_insertAtHead(t,n,i,s,a,r){const d=s+a;if(n===r.data.materialKey&&i===r.data.target&&d===r.data.start)r.data.start=s,r.data.count+=a;else{const d=new h(t,n,i,s,a);this._head=new e(d),this._head.next=r,this._length++}}_insertAtEnd(t,n,i,s,a,r){if(r.data.materialKey===n&&r.data.indexEnd===s)r.data.count+=a;else{const d=new h(t,n,i,s,a);this._tail=new e(d),r.next=this._tail,this._length++}}_insertAtMiddle(t,n,i,s,a,r,d){const o=s+a;if(r.data.materialKey===n&&r.data.target===i&&r.data.indexEnd===s)r.data.count+=a,r.data.materialKey===d.data.materialKey&&r.data.target===d.data.target&&r.data.indexEnd===d.data.start&&(r.data.count+=d.data.count,r.next=d.next,this._length--);else if(n===d.data.materialKey&&i===d.data.target&&o===d.data.start)d.data.start=s,d.data.count+=a;else{const o=new h(t,n,i,s,a),l=new e(o);r.next=l,l.next=d,this._length++}}}export{o as DisplayList,h as DisplayListInfo};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import has from"../../../../core/has.js";import e from"../../../../core/Logger.js";import{create as t}from"../../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{AFeatureTile as s}from"./AFeatureTile.js";import{RESHUFFLING_EXEMPT_MEMORY_BYTES as i,RESHUFFLING_TARGET_MEMORY_EFFICIENCY as r,RESHUFFLING_EXEMPT_DRAW_CALLS as a,RESHUFFLING_TARGET_DRAW_EFFICIENCY as d,tileSize as o}from"./definitions.js";import n from"./DisplayEntity.js";import{TileCpuState as h}from"./TileCpuState.js";import{TileGpuState as u}from"./TileGpuState.js";import{debugMeshDataInfo as p}from"./mesh/meshDebugUtils.js";import m from"./util/Reader.js";import{deserializeList as l}from"./util/serializationUtils.js";const g=()=>e.getLogger("esri.views.2d.engine.webgl.FeatureTile");class c extends s{constructor(e,s,i,r,a){super(e,s,i,r),this._fader=a,this._cpuState=new h,this._gpuState=new u,this._requiresRefresh=!1,this._ended=!1,this._geometryInvalidated=!1,this.decluttering=!1,this.presenting=!1,this.visible=!0,this.transforms.tileUnitsToPixels=t()}destroy(){super.destroy();const e=this._cpuState.takeMetrics();this._fader?.removeFeatureTileMetrics(this,e),this._cpuState.destroy(),this._gpuState.destroy()}beforeRender(e){super.beforeRender(e),this._needsReshuffle&&e.reshuffleManager.schedule(this)}get symbols(){const e=new Map;for(const t of this._cpuState.metrics)e.get(t.labelClassId)||e.set(t.labelClassId,[]),e.get(t.labelClassId).push(t);return e}get id(){return this.key.id}get hasData(){return!!this._cpuState.meshes.size}get requiresRefresh(){return this._requiresRefresh}get ended(){return this._ended}get hasAnimations(){return this._cpuState.hasAnimations}get hasMetrics(){return this._cpuState.metrics.length>0}get entityIds(){return this._cpuState.getEntityObjectIds()}get usedMemory(){return this._cpuState.usedMemory+this._gpuState.usedMemory}get isReady(){return this.presenting}getDisplayList(){return this._gpuState.displayList}getMesh(e){const t=this._gpuState.getMesh(e);if(null==t)throw new Error(`InternalError: Unable to find VAO for instance: ${e}`);return t}getSortKeys(e){return this._cpuState.getSortKeys(e)}clearCpuState(){const e=this._cpuState.takeMetrics();this._fader?.removeFeatureTileMetrics(this,e),this._cpuState.destroy(),this._cpuState=new h,this._geometryInvalidated=!0,this._ended=!1}update(e){switch(e.type){case"append":this._onAppendMessage(e);break;case"update":this._onUpdateMessage(e)}e.objectIdMap&&this._cpuState.mergeObjectIdMap(e.objectIdMap),this._aggregateMemoryStats(),e.end&&(has("esri-2d-update-debug")&&console.debug(`Tile[${this.key.id}] FeatureTile.end`),this._ended=!0),this._geometryInvalidated=!0}reshuffle(e=!1){this.destroyed||(this._geometryInvalidated=!0,this._cpuState.reshuffle(e),this._aggregateMemoryStats(),has("esri-2d-update-debug")&&g().info(`Tile ${this.key.id} was reshuffled.`))}upload(e,t){this.presenting&&(this.hasMetrics&&(this._cpuState.setMetricVisibility(),this._gpuState.uploadVisibility(this._cpuState)),this._geometryInvalidated&&(this._geometryInvalidated=!1,this._cpuState.prepareForUpload(t),this._aggregateMemoryStats(),this._gpuState.uploadGeometry(this,e,t,this._cpuState)))}copyPixelBufferedEntitesFrom(e,t,s,i){const r=s*o,a=i*o,d=this._cpuState.copyPixelBufferedEntitiesFrom(e._cpuState,t,r,a);this._geometryInvalidated||=d}_onAppendMessage(e){if(has("esri-2d-update-debug")&&console.debug(`Tile[${this.key.id}] FeatureTile.append`,{append:p(e?.append)}),!e.append)return;this._requiresRefresh||=e.append.requiresRefresh;const t=l(new m(e.append.entities),n),{insertedMetrics:s}=this._cpuState.append(t,e.append.data,!1,this);this._fader?.insertFeatureTileMetrics(this,s)}_onUpdateMessage(e){has("esri-2d-update-debug")&&console.debug(`Tile[${this.key.id}] FeatureTile.update`,{isPixelBuffer:e.isPixelBuffer,modify:p(e.modify),remove:e.remove});const t=l(new m(e.modify.entities),n),s=t.map(e=>e.id),i=e.isPixelBuffer??!1,r=[...e.remove,...s];if(i){const e=this._cpuState.removeByIdsFromBuffer(r);this._fader?.removeFeatureTileMetrics(this,e)}else{const e=this._cpuState.removeByIds(r);this._fader?.removeFeatureTileMetrics(this,e)}const{insertedMetrics:a}=this._cpuState.append(t,e.modify.data,i,this);this._fader?.insertFeatureTileMetrics(this,a)}_aggregateMemoryStats(){this.debugInfo.memory.bytesUsed=0,this.debugInfo.memory.bytesReserved=0;for(const e of this._cpuState.meshes.values())this.debugInfo.memory.bytesUsed+=e.memoryStats.bytesUsed,this.debugInfo.memory.bytesReserved+=e.memoryStats.bytesReserved}get _needsReshuffle(){if(this.destroyed)return!1;const{bytesUsed:e,bytesReserved:t}=this.debugInfo.memory,s=e/t,{minOrderedLength:o,length:n}=this.debugInfo.display;return t>i&&s<r||n>a&&o/n<d}}export{c as FeatureTile};
2
+ import has from"../../../../core/has.js";import e from"../../../../core/Logger.js";import{create as t}from"../../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{AFeatureTile as s}from"./AFeatureTile.js";import{RESHUFFLING_EXEMPT_MEMORY_BYTES as i,RESHUFFLING_TARGET_MEMORY_EFFICIENCY as r,RESHUFFLING_EXEMPT_DRAW_CALLS as a,RESHUFFLING_TARGET_DRAW_EFFICIENCY as d,tileSize as o}from"./definitions.js";import n from"./DisplayEntity.js";import{TileCpuState as h}from"./TileCpuState.js";import{TileGpuState as u}from"./TileGpuState.js";import{debugMeshDataInfo as p}from"./mesh/meshDebugUtils.js";import l from"./util/Reader.js";import{deserializeList as m}from"./util/serializationUtils.js";const g=()=>e.getLogger("esri.views.2d.engine.webgl.FeatureTile");class c extends s{constructor(e,s,i,r,a,d){super(e,s,i,r),this._labelStore=a,this._fader=d,this._gpuState=new u,this._requiresRefresh=!1,this._ended=!1,this._geometryInvalidated=!1,this.decluttering=!1,this.presenting=!1,this._cpuState=new h(a),this.visible=!0,this.transforms.tileUnitsToPixels=t()}destroy(){super.destroy();const e=this._cpuState.takeMetrics();this._fader?.removeFeatureTileMetrics(this,e),this._cpuState.destroy(),this._gpuState.destroy()}beforeRender(e){super.beforeRender(e),this._needsReshuffle&&e.reshuffleManager.schedule(this)}get symbols(){const e=new Map;for(const t of this._cpuState.metrics)e.get(t.labelClassId)||e.set(t.labelClassId,[]),e.get(t.labelClassId).push(t);return e}get id(){return this.key.id}get hasData(){return!!this._cpuState.meshes.size}get requiresRefresh(){return this._requiresRefresh}get ended(){return this._ended}get hasAnimations(){return this._cpuState.hasAnimations}get hasMetrics(){return this._cpuState.metrics.length>0}get entityIds(){return this._cpuState.getEntityObjectIds()}get usedMemory(){return this._cpuState.usedMemory+this._gpuState.usedMemory}get isReady(){return this.presenting}getDisplayList(){return this._gpuState.displayList}getMesh(e){const t=this._gpuState.getMesh(e);if(null==t)throw new Error(`InternalError: Unable to find VAO for instance: ${e}`);return t}getSortKeys(e){return this._cpuState.getSortKeys(e)}clearCpuState(){const e=this._cpuState.takeMetrics();this._fader?.removeFeatureTileMetrics(this,e),this._cpuState.destroy(),this._cpuState=new h(this._labelStore),this._geometryInvalidated=!0,this._ended=!1}update(e){switch(e.type){case"append":this._onAppendMessage(e);break;case"update":this._onUpdateMessage(e)}e.objectIdMap&&this._cpuState.mergeObjectIdMap(e.objectIdMap),this._aggregateMemoryStats(),e.end&&(has("esri-2d-update-debug")&&console.debug(`Tile[${this.key.id}] FeatureTile.end`),this._ended=!0),this._geometryInvalidated=!0}reshuffle(e=!1){this.destroyed||(this._geometryInvalidated=!0,this._cpuState.reshuffle(e),this._aggregateMemoryStats(),has("esri-2d-update-debug")&&g().info(`Tile ${this.key.id} was reshuffled.`))}upload(e,t){this.presenting&&(this.hasMetrics&&this._cpuState.setMetricVisibility(),this._geometryInvalidated&&(this._geometryInvalidated=!1,this._cpuState.prepareForUpload(t),this._aggregateMemoryStats(),this._gpuState.uploadGeometry(this,e,t,this._cpuState)))}copyPixelBufferedEntitesFrom(e,t,s,i){const r=s*o,a=i*o,d=this._cpuState.copyPixelBufferedEntitiesFrom(e._cpuState,t,r,a);this._geometryInvalidated||=d}_onAppendMessage(e){if(has("esri-2d-update-debug")&&console.debug(`Tile[${this.key.id}] FeatureTile.append`,{append:p(e?.append)}),!e.append)return;this._requiresRefresh||=e.append.requiresRefresh;const t=m(new l(e.append.entities),n),{insertedMetrics:s}=this._cpuState.append(t,e.append.data,!1,this);this._fader?.insertFeatureTileMetrics(this,s)}_onUpdateMessage(e){has("esri-2d-update-debug")&&console.debug(`Tile[${this.key.id}] FeatureTile.update`,{isPixelBuffer:e.isPixelBuffer,modify:p(e.modify),remove:e.remove});const t=m(new l(e.modify.entities),n),s=t.map(e=>e.id),i=e.isPixelBuffer??!1,r=[...e.remove,...s];if(i){const e=this._cpuState.removeByIdsFromBuffer(r);this._fader?.removeFeatureTileMetrics(this,e)}else{const e=this._cpuState.removeByIds(r);this._fader?.removeFeatureTileMetrics(this,e)}const{insertedMetrics:a}=this._cpuState.append(t,e.modify.data,i,this);this._fader?.insertFeatureTileMetrics(this,a)}_aggregateMemoryStats(){this.debugInfo.memory.bytesUsed=0,this.debugInfo.memory.bytesReserved=0;for(const e of this._cpuState.meshes.values())this.debugInfo.memory.bytesUsed+=e.memoryStats.bytesUsed,this.debugInfo.memory.bytesReserved+=e.memoryStats.bytesReserved}get _needsReshuffle(){if(this.destroyed)return!1;const{bytesUsed:e,bytesReserved:t}=this.debugInfo.memory,s=e/t,{minOrderedLength:o,length:n}=this.debugInfo.display;return t>i&&s<r||n>a&&o/n<d}}export{c as FeatureTile};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import t from"../../../../request.js";import{bidiText as e}from"../../../../core/BidiText.js";import{getFullyQualifiedFontName as s}from"../../../../core/fontUtils.js";import has from"../../../../core/has.js";import i from"../../../../core/Logger.js";import{throwIfNotAbortError as a}from"../../../../core/promiseUtils.js";import{loadTextModule as r}from"../../../../libs/librust-text/loadTextModule.js";import{parseRichTextRuns as h}from"../../../../symbols/cim/richTextUtils.js";import{decorGlyphRect as n}from"./decorGlyphRect.js";import{sdfRadiusComplex as o,sdfBufferGlyphSDFCreator as c,sdfSizeComplex as p,sdfBufferServer as l,sdfRadiusSimple as f,sdfSizeSimple as g}from"./definitions.js";import{GlyphSDFCreator as d}from"./GlyphSDFCreator.js";import _ from"./GlyphSource.js";import{hashMosaic as y}from"./hashMosaic.js";import u from"./Rect.js";import m from"./RectangleBinPack.js";const w=.25,S="arial-unicode-ms-regular",C=/[\u0695\u0698\u06a9\u06af\u06b5\u06be\u06c6\u06cc\u06ce\u06d5\u06ca]|\p{Script=Thai}|\p{Script=Lao}|\p{Script=Tamil}|\p{Script=Khmer}/u,G=new Set(["Noto Sans Khmer","Noto Sans Lao","Noto Sans Myanmar","Noto Sans Thai"]),P=()=>i.getLogger("esri.views.MapView"),b=(t,e="")=>P().warnOnce(t,e);class R{constructor(){this._glyphSources=new Map,this._snapCoords=!0,this._currentPage=0,this._faces=new Map,this._facePromises=new Map,this._pbfRangePromises=new Map,this._glyphCache=new Map,this._pbfGlyphCache=new Map,this._invalidFonts=new Set,this._preloadCache={},this._glyphSDFCreator=new d({sdfSizePx:p,sdfBufferPx:c,radius:o,cutoff:w})}set remoteClient(t){this._client=t.createInvokeProxy();const e=this._client.getOptions();this._inited=this._init(e)}async rasterizeText(t,e,s){await this._inited;const i=e.symbol?h(e):null;if(i){return{type:"rich-glyphs",runs:(await Promise.all(i.map(async e=>({fontSize:e.fontSize,characterSpacing:e.characterSpacing,decoration:e.font.decoration,color:e.color,glyphs:await this._rasterizeTextRun(t,e.font,e.text,s)})))).filter(t=>null!=t.glyphs)}}return this._rasterizeTextRun(t,e.font,e.textString,s)}async _rasterizeTextRun(t,e,i,a){const r=s(e),h=this._invalidFonts.has(r),n=!!has("esri-2d-force-complex-shaping"),o=!!has("esri-2d-complex-shaping")&&C.test(i),c=G.has(e.family),p=n||o||c,l=h?S:r;let f=await this.getGlyphItems(i,p,t,l,!1,a);return f||(b(`Font ${r} is not available on the web, using "Arial Unicode MS Regular"`),this._invalidFonts.add(r),f=await this.getGlyphItems(i,p,t,S,!1,a)),f}async getGlyphItems(t,s,i,a,r,h){await this._inited;const n=this._getSource(i),d=s?p:g,_=s?o:f,y=s?c:l;let u,m,w;if(has("esri-2d-stabilize-glyphs")&&await this.preloadASCIIGlyphCache(n,a).catch(()=>{}),s){const e=await this._getFace(n,a);if(!e)return null;let s=this._glyphCache.get(a);s||(s=new Map,this._glyphCache.set(a,s));const{shaping:i,isRTL:r}=this._shape(e,t);w=r,u=i.map(t=>this._getShapedGlyph(e,s,t)),m={baseline:e.baseline()/d,midline:e.midline()/d}}else{let s=this._pbfGlyphCache.get(a);s||(s=new Map,this._pbfGlyphCache.set(a,s));const[i,o,c]=e(t),p=j(i);try{await this._fetchRanges(n,a,p,h)}catch{return null}w=o,u=p.map(t=>this._getPBFGlyph(s,n,a,t,r)).filter(t=>!!t)}const S=u.filter(t=>t.needsRecord);return S.length>0&&await this._client.recordGlyphs(S),{type:"glyphs",glyphs:u,faceInfo:m,isRightToLeft:w,sdfSize:d,sdfRadius:_,sdfPadding:y}}async _init(t){const{width:e,height:s,snapCoords:i}=await t;this._glyphCache=new Map,this._pbfGlyphCache=new Map,this._binPack=new m(e,s),this._snapCoords=i,this._currentPage=0,this._initDecorationGlyphs()}_getShapedGlyph(t,e,s){let i,a,r=e.get(s.glyphId);if(!r){i=this._glyphSDFCreator.draw(t,s.glyphId);const h=this._glyphSDFCreator.sdfBufferPx;r={mosaicItem:{rect:this._recordGlyph(i?.rect,h),page:this._currentPage,sdf:!0,textureBinding:y(1,this._currentPage,!0)},glyphRect:i?.rect??{width:0,height:0,top:0,left:0}},e.set(s.glyphId,r),a=!0}return{mosaicItem:r.mosaicItem,rect:r.glyphRect,shaping:{xAdvance:s.xAdvance,yAdvance:s.yAdvance,xOffset:s.xOffset,yOffset:s.yOffset},code:s.isNewline?10:s.isWhitespace?32:NaN,sdf:i,needsRecord:a}}_getPBFGlyph(t,e,s,i,a=!1){let r,h,n=t.get(i);if(!n){const o=e.getRange(s,i),p=o?.getRect(i),l=o?.getShaping(i),f=o?.getBitmap(i);if(a&&(!p||!l))return;if(!p||!l)return M(i);r=f&&{buffer:f,rect:p},n={mosaicItem:{rect:f?this._recordGlyph(p,c):new u(0,0,0,0),sdf:!0,page:this._currentPage,textureBinding:y(1,this._currentPage,!0)},rect:p,shaping:l,code:i},h=!0,t.set(i,n)}const{mosaicItem:o,rect:p,shaping:l}=n;return{mosaicItem:o,rect:p,shaping:l,code:i,sdf:r,needsRecord:h}}_shape(t,s){const i=this._glyphSDFCreator.sdfSizePx,[a,r,h]=e(s,!1),n=new Uint32Array(Array.from(a).map((t,e)=>h.levels[h.targetToSource[e]]));return{shaping:t.shape(a,n,i),isRTL:r}}async _getFace(e,s,i){if(this._faces.has(s))return this._faces.get(s);const a=e.woffURL(s);return await I(this._facePromises,s,async()=>{const e=await t(a,{responseType:"array-buffer",...i}),h=(await r()).Face.parseWoff2(new Uint8Array(e.data));this._faces.set(s,h)}),this._faces.get(s)}_getSource(t){return this._glyphSources.has(t)||this._glyphSources.set(t,new _(t)),this._glyphSources.get(t)}async _fetchRanges(t,e,s,i){const a=x(s),r=[];a.forEach(s=>{r.push(this._fetchRange(t,e,s,i))}),await Promise.all(r)}async _fetchRange(t,e,s,i){if(s>256)return;const a=e+s;return I(this._pbfRangePromises,a,()=>t.fetchRange(e,s,i))}_allocNewPage(){this._currentPage++,this._binPack=new m(this._binPack.width,this._binPack.height),this._initDecorationGlyphs()}_recordGlyph(t,e){const s=this._binPack;if(!t||0===t.width)return new u;const i=t.width+2*e,a=t.height+2*e;let r=i,h=a;if(this._snapCoords){r+=i%4?4-i%4:4,h+=a%4?4-a%4:4}const n=s.allocate(r,h);return n.isEmpty?(this._allocNewPage(),s.allocate(r,h)):n}_initDecorationGlyphs(){this._recordGlyph(n,l),this._recordGlyph(n,l)}preloadASCIIGlyphCache(t,e){const s=this._preloadCache[e];if(null!=s)return s;const i=t.preloadASCIIRange(e).then(async()=>{let s=this._pbfGlyphCache.get(e);s||(s=new Map,this._pbfGlyphCache.set(e,s));for(let a=0;a<256;a++)this._getPBFGlyph(s,t,e,a);const i=Array.from(this._pbfGlyphCache.get(e).values());await this._client.recordGlyphs(i)},t=>{throw delete this._preloadCache[e],t});return this._preloadCache[e]=i,i}}function x(t){const e=new Set;for(const s of t)e.add(Math.floor(s/256));return e}function I(t,e,s){return t.has(e)||t.set(e,s().finally(()=>{t.delete(e)}).catch(t=>{a(t)})),t.get(e)}const M=t=>({mosaicItem:{rect:new u(0,0,0,0),sdf:!0,page:0},rect:{left:0,width:0,height:0,top:0},shaping:{xAdvance:0,yAdvance:0,xOffset:0,yOffset:0},code:t});function j(t){const e=[];for(let s=0;s<t.length;s++)e.push(t.charCodeAt(s));return e}export{R as default};
2
+ import t from"../../../../request.js";import{bidiText as e}from"../../../../core/BidiText.js";import{getFullyQualifiedFontName as s}from"../../../../core/fontUtils.js";import has from"../../../../core/has.js";import i from"../../../../core/Logger.js";import{throwIfNotAbortError as a}from"../../../../core/promiseUtils.js";import{loadTextModule as r}from"../../../../libs/librust-text/loadTextModule.js";import{parseRichTextRuns as n}from"../../../../symbols/cim/richTextUtils.js";import{decorGlyphRect as h}from"./decorGlyphRect.js";import{sdfRadiusComplex as o,sdfBufferGlyphSDFCreator as c,sdfSizeComplex as p,sdfBufferServer as l,sdfRadiusSimple as f,sdfSizeSimple as g}from"./definitions.js";import{GlyphSDFCreator as d}from"./GlyphSDFCreator.js";import _ from"./GlyphSource.js";import{hashMosaic as u}from"./hashMosaic.js";import y from"./Rect.js";import m from"./RectangleBinPack.js";const w=.25,S="arial-unicode-ms-regular",C=/[\u0695\u0698\u06a9\u06af\u06b5\u06be\u06c6\u06cc\u06ce\u06d5\u06ca]|\p{Script=Thai}|\p{Script=Lao}|\p{Script=Tamil}|\p{Script=Khmer}/u,P=new Set(["Noto Sans Khmer","Noto Sans Lao","Noto Sans Myanmar","Noto Sans Thai"]),G=()=>i.getLogger("esri.views.MapView"),R=(t,e="")=>G().warnOnce(t,e);class b{constructor(){this._glyphSources=new Map,this._snapCoords=!0,this._currentPage=0,this._faces=new Map,this._facePromises=new Map,this._pbfRangePromises=new Map,this._glyphCache=new Map,this._pbfGlyphCache=new Map,this._invalidFonts=new Set,this._preloadCache={},this._glyphSDFCreator=new d({sdfSizePx:p,sdfBufferPx:c,radius:o,cutoff:w})}set remoteClient(t){this._client=t.createInvokeProxy();const e=this._client.getOptions();this._inited=this._init(e)}async rasterizeText(t,e,s){await this._inited;const i=e.symbol?n(e):null;if(i){return{type:"rich-glyphs",runs:(await Promise.all(i.map(async e=>({fontSize:e.fontSize,characterSpacing:e.characterSpacing,decoration:e.font.decoration,color:e.color,glyphs:await this._rasterizeTextRun(t,e.font,e.text,s)})))).filter(t=>null!=t.glyphs)}}return this._rasterizeTextRun(t,e.font,e.textString,s)}async _rasterizeTextRun(t,e,i,a){const r=s(e),n=this._invalidFonts.has(r),h=!!has("esri-2d-force-complex-shaping"),o=!!has("esri-2d-complex-shaping")&&C.test(i),c=P.has(e.family),p=h||o||c,l=n?S:r;let f=await this.getGlyphItems(i,p,t,l,!1,a);return f||(R(`Font ${r} is not available on the web, using "Arial Unicode MS Regular"`),this._invalidFonts.add(r),f=await this.getGlyphItems(i,p,t,S,!1,a)),f}async getGlyphItems(t,s,i,a,r,n){await this._inited;const h=this._getSource(i),d=s?p:g,_=s?o:f,u=s?c:l;let y,m,w;if(has("esri-2d-stabilize-glyphs")&&await this.preloadASCIIGlyphCache(h,a).catch(()=>{}),s){const e=await this._getFace(h,a);if(!e)return null;let s=this._glyphCache.get(a);s||(s=new Map,this._glyphCache.set(a,s));const{shaping:i,isRTL:r}=this._shape(e,t);w=r,y=i.map(t=>this._getShapedGlyph(e,s,t)),m={baseline:e.baseline()/d,midline:e.midline()/d}}else{let s=this._pbfGlyphCache.get(a);s||(s=new Map,this._pbfGlyphCache.set(a,s));const[i,o,c]=e(t),p=j(i);try{await this._fetchRanges(h,a,p,n)}catch{return null}w=o,y=p.map(t=>this._getPBFGlyph(s,h,a,t,r)).filter(t=>!!t)}const S=y.filter(t=>t.needsRecord);return S.length>0&&await this._client.recordGlyphs(S),{type:"glyphs",glyphs:y,faceInfo:m,isRightToLeft:w,sdfSize:d,sdfRadius:_,sdfPadding:u}}async _init(t){const{width:e,height:s,snapCoords:i}=await t;this._glyphCache=new Map,this._pbfGlyphCache=new Map,this._binPack=new m(e,s),this._snapCoords=i,this._currentPage=0,this._initDecorationGlyphs()}_getShapedGlyph(t,e,s){let i,a,r=e.get(s.glyphId);if(!r){i=this._glyphSDFCreator.draw(t,s.glyphId);const n=this._glyphSDFCreator.sdfBufferPx;r={mosaicItem:{rect:this._recordGlyph(i?.rect,n),page:this._currentPage,sdf:!0,textureBinding:u(1,this._currentPage,!0)},glyphRect:i?.rect??{width:0,height:0,top:0,left:0}},e.set(s.glyphId,r),a=!0}return{mosaicItem:r.mosaicItem,rect:r.glyphRect,shaping:{xAdvance:s.xAdvance,yAdvance:s.yAdvance,xOffset:s.xOffset,yOffset:s.yOffset},code:s.isNewline?10:s.isWhitespace?32:NaN,sdf:i,needsRecord:a}}_getPBFGlyph(t,e,s,i,a=!1){let r,n,h=t.get(i);if(!h){const o=e.getRange(s,i),p=o?.getRect(i),l=o?.getShaping(i),f=o?.getBitmap(i);if(a&&(!p||!l))return;if(!p||!l)return M(i);r=f&&{buffer:f,rect:p},h={mosaicItem:{rect:f?this._recordGlyph(p,c):new y(0,0,0,0),sdf:!0,page:this._currentPage,textureBinding:u(1,this._currentPage,!0)},rect:p,shaping:l,code:i},n=!0,t.set(i,h)}const{mosaicItem:o,rect:p,shaping:l}=h;return{mosaicItem:o,rect:p,shaping:l,code:i,sdf:r,needsRecord:n}}_shape(t,s){const i=this._glyphSDFCreator.sdfSizePx,[a,r,n]=e(s,!1),h=new Uint32Array(Array.from(a).map((t,e)=>n.levels[n.targetToSource[e]]));return{shaping:t.shape(a,h,i),isRTL:r}}async _getFace(e,s,i){if(this._faces.has(s))return this._faces.get(s);const a=e.woffURL(s);return await I(this._facePromises,s,async()=>{const e=await t(a,{responseType:"array-buffer",...i}),n=(await r()).Face.parseWoff2(new Uint8Array(e.data));this._faces.set(s,n)}),this._faces.get(s)}_getSource(t){return this._glyphSources.has(t)||this._glyphSources.set(t,new _(t)),this._glyphSources.get(t)}async _fetchRanges(t,e,s,i){const a=x(s),r=[];a.forEach(s=>{r.push(this._fetchRange(t,e,s,i))}),await Promise.all(r)}async _fetchRange(t,e,s,i){if(s>256)return;const a=e+s;return I(this._pbfRangePromises,a,()=>t.fetchRange(e,s,i))}_allocNewPage(){this._currentPage++,this._binPack=new m(this._binPack.width,this._binPack.height),this._initDecorationGlyphs()}_recordGlyph(t,e){const s=this._binPack;if(!t||0===t.width)return new y;const i=t.width+2*e,a=t.height+2*e;let r=i,n=a;if(this._snapCoords){r+=i%4?4-i%4:4,n+=a%4?4-a%4:4}const h=s.allocate(r,n);return h.isEmpty?(this._allocNewPage(),s.allocate(r,n)):h}_initDecorationGlyphs(){this._recordGlyph(h,l),this._recordGlyph(h,l)}preloadASCIIGlyphCache(t,e){const s=this._preloadCache[e];if(null!=s)return s;const i=t.preloadASCIIRange(e).then(async()=>{let s=this._pbfGlyphCache.get(e);s||(s=new Map,this._pbfGlyphCache.set(e,s));const i=[];for(let a=0;a<256;a++){const r=this._getPBFGlyph(s,t,e,a);r?.needsRecord&&i.push(r)}await this._client.recordGlyphs(i)},t=>{throw delete this._preloadCache[e],t});return this._preloadCache[e]=i,i}}function x(t){const e=new Set;for(const s of t)e.add(Math.floor(s/256));return e}function I(t,e,s){return t.has(e)||t.set(e,s().finally(()=>{t.delete(e)}).catch(t=>{a(t)})),t.get(e)}const M=t=>({mosaicItem:{rect:new y(0,0,0,0),sdf:!0,page:0},rect:{left:0,width:0,height:0,top:0},shaping:{xAdvance:0,yAdvance:0,xOffset:0,yOffset:0},code:t});function j(t){const e=[];for(let s=0;s<t.length;s++)e.push(t.charCodeAt(s));return e}export{b as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import has from"../../../../core/has.js";import e from"./DisplayEntity.js";import{ReshufflePlan as t}from"./ReshufflePlan.js";import{LabelMetric as s}from"./collisions/LabelMetric.js";import{CpuMeshData as i}from"./cpuMapped/CpuMeshData.js";import r from"./util/Reader.js";import{deserializeList as n}from"./util/serializationUtils.js";class o{constructor(){this.meshes=new Map,this.entityIndex=new Map,this.entityIds=new Set,this.entityIdsFromBuffer=new Set,this.entities=[],this.metrics=[],this.objectIdMap=null}destroy(){for(const e of this.meshes.values())e.destroy();if(this.metrics.length)throw new Error("InternalError: Leaking metrics. Was `takeMetrics` called before removal?");this.meshes.clear(),this.entityIndex.clear(),this.entityIds.clear(),this.entityIdsFromBuffer.clear(),this.entities=[],this.objectIdMap=null}get usedMemory(){let t=0;for(const e of this.meshes.values())t+=e.usedMemory;if(this.entities.length){let s=0;const i=Math.min(this.entities.length,10);for(let e=0;e<i;e++)s+=this.entities[0].records.length;const r=s/i;t+=e.estimateMemory(r)*this.entities.length,t+=4*this.entities.length}return t+=25*this.entityIndex.size,t+=18*this.entityIds.size,t+=25*this.entityIdsFromBuffer.size,this.objectIdMap&&(t+=25*this.entities.length),t}get hasAnimations(){return!!this.objectIdMap}getEntityObjectIds(){return this.objectIdMap?this.entities.map(({id:e})=>({objectId:this.objectIdMap[e],displayId:e})):[]}getMesh(e){return this.meshes.get(e)}getSortKeys(e){const t=new Map;for(const{id:s,sortKey:i}of this.entities)if(e.has(s)&&t.set(s,i),t.size===e.size)break;return t}takeMetrics(){const e=this.metrics;return this.metrics=[],e}mergeObjectIdMap(e){this.objectIdMap??={};for(const t in e)this.objectIdMap[t]=e[t]}ensureMesh(e,t,s){let r=this.meshes.get(e);return null==r&&(r=new i(t,s),this.meshes.set(e,r)),r}append(e,t,s,i){if(!e.length)return{insertedMetrics:[]};this._removeDuplicatedBufferedEntities(e);const{offsetsByInstance:r,insertedMetrics:n}=this._insertVertexData(t,i);for(const o of e){for(const e of o.records)e.updateBaseOffsets(r.get(e.instanceId));s?this._tryInsertBufferedEntity(o):this._insertEntity(o)}return{insertedMetrics:n}}removeByIds(e){if(0===e.length)return[];const t=new Set(e),s=[];for(const r of this.entities)t.has(r.id)?(this._remove(r),this.entityIndex.delete(r.id)):s.push(r);this.entities=s;const i=this.metrics.filter(e=>t.has(e.displayId));return this.metrics=this.metrics.filter(e=>!t.has(e.displayId)),i}setMetricVisibility(){if(0!==this.metrics.length)for(const e of this.metrics){const t=this.entityIndex.get(e.id);if(null==t)throw new Error("InternalError: expected to find entity for label");const s=t.records[e.recordStart];if(null==s)throw new Error("InternalError: expected to find label record");const i=this.getMesh(s.instanceId);if(!i)throw new Error("InternalError: expected to find label mesh");if(!e.uniqueSymbol)throw new Error("InternalError: expected to find uniqueSymbol");const r=e.uniqueSymbol.show&&e.selectedForRendering;i.setRecordVisibility(t.records,e,r?0:255,t.id)}}copyPixelBufferedEntitiesFrom(t,s,i,r){let n=!1;for(const o of t.entities){let h=null;for(const d of o.records){if(!(d.overlaps&s))continue;n||=!0;const c=t.getMesh(d.instanceId),f=this.ensureMesh(d.instanceId,c.layout,c.useVisibility).copyRecordFrom(c,d,i,r);null==h&&(h=new e(o.id,o.sortKey),this.entityIdsFromBuffer.add(o.id),this.entityIndex.set(h.id,h),this.entities.push(h)),h.records.push(f)}}return n}removeByIdsFromBuffer(e){return this.removeByIds(e.filter(e=>this.entityIdsFromBuffer.has(e)))}reshuffle(e=!1){const s=new Map;for(const i of this.entities)for(const r of i.records){const i=r.instanceId;let n=s.get(i);null==n&&(n=new t(e),s.set(i,n)),n.copyRecord(r)}for(const[t,i]of s)this.getMesh(t).reshuffle(i)}prepareForUpload(e){this.entities.sort((e,t)=>{const s=e.sortKey,i=t.sortKey;return s===i?e.id-t.id:s-i}),0===e&&this.reshuffle(!0)}_insertVertexData(e,t){const i=new Map,o=[];for(const h of e){const{instanceId:e,layout:d}=h,c=d.attributes.some(e=>"visibility"===e.name),f=this.ensureMesh(e,d,c).append(h);if(h.metrics){const e=n(new r(h.metrics),s)??[];o.push(...this._insertMetrics(e,t))}i.set(e,f)}return{offsetsByInstance:i,insertedMetrics:o}}_insertMetrics(e,t){for(const s of e)s.tile=t;return this.metrics.push(...e),e}_insertEntity(e){has("esri-2d-update-debug")&&this.entityIds.has(e.id)&&console.error(`insertEntity: Already have entityId ${e.id}`),this.entityIds.add(e.id),this.entityIndex.set(e.id,e),this.entities.push(e)}_tryInsertBufferedEntity(e){this.entityIds.has(e.id)?this._removeRecordsFromMesh(e.records):(this.entityIdsFromBuffer.add(e.id),this.entityIndex.set(e.id,e),this.entities.push(e))}_removeDuplicatedBufferedEntities(e){if(!this.entityIdsFromBuffer.size)return;const t=[];for(const s of e)this.entityIdsFromBuffer.has(s.id)&&t.push(s.id);this.removeByIds(t)}_remove(e){this._removeRecordsFromMesh(e.records),this.entityIds.delete(e.id),this.entityIdsFromBuffer.delete(e.id)}_removeRecordsFromMesh(e){for(const t of e){const{instanceId:e,indexStart:s,indexCount:i,vertexStart:r,vertexCount:n}=t;this.getMesh(e)?.remove(s,i,r,n)}}}export{o as TileCpuState};
2
+ import has from"../../../../core/has.js";import e from"./DisplayEntity.js";import{ReshufflePlan as t}from"./ReshufflePlan.js";import{LabelMetric as s}from"./collisions/LabelMetric.js";import{CpuMeshData as i}from"./cpuMapped/CpuMeshData.js";import r from"./util/Reader.js";import{deserializeList as o}from"./util/serializationUtils.js";class n{constructor(e){this._labelStore=e,this.meshes=new Map,this.entityIndex=new Map,this.entityIds=new Set,this.entityIdsFromBuffer=new Set,this.entities=[],this.metrics=[],this.objectIdMap=null}destroy(){for(const e of this.meshes.values())e.destroy();if(this.metrics.length)throw new Error("InternalError: Leaking metrics. Was `takeMetrics` called before removal?");this.meshes.clear(),this.entityIndex.clear(),this.entityIds.clear(),this.entityIdsFromBuffer.clear(),this.entities=[],this.objectIdMap=null}get usedMemory(){let t=0;for(const e of this.meshes.values())t+=e.usedMemory;if(this.entities.length){let s=0;const i=Math.min(this.entities.length,10);for(let e=0;e<i;e++)s+=this.entities[0].records.length;const r=s/i;t+=e.estimateMemory(r)*this.entities.length,t+=4*this.entities.length}return t+=25*this.entityIndex.size,t+=18*this.entityIds.size,t+=25*this.entityIdsFromBuffer.size,this.objectIdMap&&(t+=25*this.entities.length),t}get hasAnimations(){return!!this.objectIdMap}getEntityObjectIds(){return this.objectIdMap?this.entities.map(({id:e})=>({objectId:this.objectIdMap[e],displayId:e})):[]}getMesh(e){return this.meshes.get(e)}getSortKeys(e){const t=new Map;for(const{id:s,sortKey:i}of this.entities)if(e.has(s)&&t.set(s,i),t.size===e.size)break;return t}takeMetrics(){const e=this.metrics;this.metrics=[];for(const t of e)this._labelStore.setVisibility(t,!1),this._labelStore.release(t);return e}mergeObjectIdMap(e){this.objectIdMap??={};for(const t in e)this.objectIdMap[t]=e[t]}ensureMesh(e,t){let s=this.meshes.get(e);return null==s&&(s=new i(t),this.meshes.set(e,s)),s}append(e,t,s,i){if(!e.length)return{insertedMetrics:[]};this._removeDuplicatedBufferedEntities(e);const{offsetsByInstance:r,insertedMetrics:o}=this._insertVertexData(t,i),n=new Map(e.map(e=>[e.id,e]));for(const d of e){for(const e of d.records)e.updateBaseOffsets(r.get(e.instanceId));s?this._tryInsertBufferedEntity(d):this._insertEntity(d)}for(const d of o){const e=n.get(d.displayId);if(null==e||null==d.labelStoreId)throw new Error("InternalError: expected label entity and store id");this._setMetricRecordIds(e,d)}return{insertedMetrics:o}}removeByIds(e){if(0===e.length)return[];const t=new Set(e),s=[];for(const r of this.entities)t.has(r.id)?(this._remove(r),this.entityIndex.delete(r.id)):s.push(r);this.entities=s;const i=this.metrics.filter(e=>t.has(e.displayId));this.metrics=this.metrics.filter(e=>!t.has(e.displayId));for(const r of i)this._labelStore.setVisibility(r,!1),this._labelStore.release(r);return i}setMetricVisibility(){if(0!==this.metrics.length)for(const e of this.metrics){if(!e.uniqueSymbol)throw new Error("InternalError: expected to find uniqueSymbol");const t=e.uniqueSymbol.show&&e.selectedForRendering;this._labelStore.setVisibility(e,t)}}_setRecordRangeLabelId(e,t,s){const i=t.recordStart+t.recordCount;for(let r=t.recordStart;r<i;r++){const t=e.records[r];if(null==t)throw new Error("InternalError: expected to find label record");const i=this.getMesh(t.instanceId);if(!i)throw new Error("InternalError: expected to find label mesh");i.setRecordLabelId(e.records,{recordStart:r,recordCount:1},s)}}copyPixelBufferedEntitiesFrom(t,s,i,r){let o=!1;for(const n of t.entities){let d=null;for(const h of n.records){if(!(h.overlaps&s))continue;o||=!0;const c=t.getMesh(h.instanceId),l=this.ensureMesh(h.instanceId,c.layout).copyRecordFrom(c,h,i,r);null==d&&(d=new e(n.id,n.sortKey),this.entityIdsFromBuffer.add(n.id),this.entityIndex.set(d.id,d),this.entities.push(d)),d.records.push(l)}}return o}removeByIdsFromBuffer(e){return this.removeByIds(e.filter(e=>this.entityIdsFromBuffer.has(e)))}reshuffle(e=!1){const s=new Map;for(const i of this.entities)for(const r of i.records){const i=r.instanceId;let o=s.get(i);null==o&&(o=new t(e),s.set(i,o)),o.copyRecord(r)}for(const[t,i]of s)this.getMesh(t).reshuffle(i)}prepareForUpload(e){this.entities.sort((e,t)=>{const s=e.sortKey,i=t.sortKey;return s===i?e.id-t.id:s-i}),0===e&&this.reshuffle(!0)}_insertVertexData(e,t){const i=new Map,n=[];for(const d of e){const{instanceId:e,layout:h}=d,c=this.ensureMesh(e,h).append(d);if(d.metrics){const e=o(new r(d.metrics),s)??[];n.push(...this._insertMetrics(e,t))}i.set(e,c)}return{offsetsByInstance:i,insertedMetrics:n}}_setMetricRecordIds(e,t){const s=t.labelStoreId;if(null==s)throw new Error("InternalError: expected label metric to have a store id");this._setRecordRangeLabelId(e,t,s);for(const i of t.additionalRecordRanges)this._setRecordRangeLabelId(e,i,s)}_insertMetrics(e,t){for(const s of e)s.tile=t,this._labelStore.acquire(s);return this.metrics.push(...e),e}_insertEntity(e){has("esri-2d-update-debug")&&this.entityIds.has(e.id)&&console.error(`insertEntity: Already have entityId ${e.id}`),this.entityIds.add(e.id),this.entityIndex.set(e.id,e),this.entities.push(e)}_tryInsertBufferedEntity(e){this.entityIds.has(e.id)?this._removeRecordsFromMesh(e.records):(this.entityIdsFromBuffer.add(e.id),this.entityIndex.set(e.id,e),this.entities.push(e))}_removeDuplicatedBufferedEntities(e){if(!this.entityIdsFromBuffer.size)return;const t=[];for(const s of e)this.entityIdsFromBuffer.has(s.id)&&t.push(s.id);this.removeByIds(t)}_remove(e){this._removeRecordsFromMesh(e.records),this.entityIds.delete(e.id),this.entityIdsFromBuffer.delete(e.id)}_removeRecordsFromMesh(e){for(const t of e){const{instanceId:e,indexStart:s,indexCount:i,vertexStart:r,vertexCount:o}=t;this.getMesh(e)?.remove(s,i,r,o)}}}export{n as TileCpuState};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{DisplayList as s}from"./FeatureDisplayList.js";import{GpuMeshState as e}from"./cpuMapped/GpuMeshState.js";class t{constructor(){this.meshes=new Map,this.displayList=null}get usedMemory(){return this.displayList?.usedMemory??0}destroy(){for(const s of this.meshes.values())s.destroy();this.meshes.clear(),this.displayList=null}uploadGeometry(e,t,i,o){for(const[s,r]of o.meshes)this._ensureMesh(s,r.layout).upload(r);this.displayList=s.fromDisplayEntities(o.entities,e,t,i)}uploadVisibility(s){for(const[e,t]of s.meshes)this._ensureMesh(e,t.layout).uploadVisibility(t)}getMesh(s){return this.meshes.get(s)}_ensureMesh(s,t){let i=this.meshes.get(s);return null==i&&(i=new e(t),this.meshes.set(s,i)),i}}export{t as TileGpuState};
2
+ import{DisplayList as s}from"./FeatureDisplayList.js";import{GpuMeshState as e}from"./cpuMapped/GpuMeshState.js";class t{constructor(){this.meshes=new Map,this.displayList=null}get usedMemory(){return this.displayList?.usedMemory??0}destroy(){for(const s of this.meshes.values())s.destroy();this.meshes.clear(),this.displayList=null}uploadGeometry(e,t,i,r){for(const[s,h]of r.meshes)this._ensureMesh(s,h.layout).upload(h);this.displayList=s.fromDisplayEntities(r.entities,e,t,i)}getMesh(s){return this.meshes.get(s)}_ensureMesh(s,t){let i=this.meshes.get(s);return null==i&&(i=new e(t),this.meshes.set(s,i)),i}}export{t as TileGpuState};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{labelPlacementOffsetPadding as e}from"../definitions.js";import i from"./BoundingBox.js";import{serializeList as t,deserializeList as s}from"../util/serializationUtils.js";const r=2;class h{constructor(e,i,t,s,r,h,a,n,l,o,d,c=[],u=0,f=0){this.displayId=e,this.labelClassId=i,this.labelIdHash=t,this.hash=s,this.anchorX=r,this.anchorY=h,this.directionX=a,this.directionY=n,this.maxScale=l,this.minScale=o,this.referenceBounds=d,this.bounds=c,this.recordStart=u,this.recordCount=f,this.priority=0,this._colliders=null,this.uniqueSymbol=null,this.selectedForRendering=!1}get xTile(){return this.anchorX}get yTile(){return this.anchorY}colliders(i){if(!this._colliders){const t=i.attributeView,s=e;let h=this.referenceBounds?.size??0;const a=i.labelingCollisionInfos[0].vvEvaluators[0];if(null!=a){const e=a(t.getVisualVariableData(this.displayId,0));h=isNaN(e)||null==e||e===1/0?h:e}const n=this.minScale?i.tilingScheme.scaleToZoom(this.minScale):0,l=this.maxScale?i.tilingScheme.scaleToZoom(this.maxScale):25,o=this.directionX*(s+h/2),d=this.directionY*(s+h/2);this._colliders=this.bounds.map(e=>({labelId:this.labelIdHash,xTile:this.anchorX,yTile:this.anchorY,dxPixels:e.x-e.halfWidth+o,dyPixels:e.y-e.halfHeight+d,hard:!0,partIndex:1,width:e.width+r,height:e.height+r,angle:0,xScreen:0,yScreen:0,dxScreen:0,dyScreen:0,enabled:!0,minLod:n,maxLod:l}))}return this._colliders}get id(){return this.displayId}serialize(e){e.push(this.displayId),e.push(this.labelClassId),e.push(this.labelIdHash),e.push(this.hash),e.push(this.recordStart),e.push(this.recordCount),e.writeF32(this.anchorX),e.writeF32(this.anchorY),e.writeF32(this.directionX),e.writeF32(this.directionY),e.writeF32(this.maxScale),e.writeF32(this.minScale),this.referenceBounds?(e.writeF32(this.referenceBounds.size),e.writeF32(this.referenceBounds.offsetX),e.writeF32(this.referenceBounds.offsetY)):(e.writeF32(0),e.writeF32(0),e.writeF32(0)),t(e,this.bounds)}static deserialize(e){const t=e.readInt32(),r=e.readInt32(),a=e.readInt32(),n=e.readInt32(),l=e.readInt32(),o=e.readInt32(),d=e.readF32(),c=e.readF32(),u=e.readF32(),f=e.readF32(),m=e.readF32(),F=e.readF32(),I=e.readF32(),p=e.readF32(),S=e.readF32(),w=s(e,i)??[];return new h(t,r,a,n,d,c,u,f,m,F,{size:I,offsetX:p,offsetY:S},w,l,o)}}export{h as LabelMetric};
2
+ import{pt2px as i}from"../../../../../core/screenUtils.js";import{labelPlacementOffsetPadding as e}from"../definitions.js";import t from"./BoundingBox.js";import{serializeList as s,deserializeList as r}from"../util/serializationUtils.js";const n=2;class o{constructor(i,e,t,s,r,n,o,l,h,a,d,c=[],u=0,f=0,m=[]){this.displayId=i,this.labelClassId=e,this.labelIdHash=t,this.hash=s,this.anchorX=r,this.anchorY=n,this.directionX=o,this.directionY=l,this.maxScale=h,this.minScale=a,this.referenceBounds=d,this.bounds=c,this.recordStart=u,this.recordCount=f,this.additionalRecordRanges=m,this.priority=0,this._colliders=null,this.referenceSymbolVVOffset=[0,0],this.uniqueSymbol=null,this.labelStoreId=null,this.selectedForRendering=!1,this._calloutCollisionBounds=null}get xTile(){return this.anchorX}get yTile(){return this.anchorY}colliders(t){if(!this._colliders){if(!t)throw new Error("InternalError: Label collision context is required to compute colliders");const s=t.attributeView,r=e;let o=this.referenceBounds?.size??0;const l=Math.round(i(o)),h=t.labelingCollisionInfos[0].vvEvaluators[0];if(null!=h){const i=h(s.getVisualVariableData(this.displayId,0));if(!isNaN(i)&&null!=i&&i!==1/0){o=i;const e=(o-l)/2;this.referenceSymbolVVOffset=[this.directionX*e,this.directionY*e]}}const a=this.minScale?t.tilingScheme.scaleToZoom(this.minScale):0,d=this.maxScale?t.tilingScheme.scaleToZoom(this.maxScale):25,c=i(this.referenceBounds?.offsetX??0)+this.directionX*(r+o/2),u=-i(this.referenceBounds?.offsetY??0)+this.directionY*(r+o/2);this._colliders=this.bounds.map(i=>({labelId:this.labelIdHash,xTile:this.anchorX,yTile:this.anchorY,dxPixels:i.x-i.halfWidth+c,dyPixels:i.y-i.halfHeight+u,hard:!0,partIndex:1,width:i.width+n,height:i.height+n,angle:0,xScreen:0,yScreen:0,dxScreen:0,dyScreen:0,enabled:!0,minLod:a,maxLod:d}))}return this._colliders}get id(){return this.displayId}includeRecordRange(i,e){0!==e&&(i!==this.recordStart+this.recordCount?this.additionalRecordRanges.push({recordStart:i,recordCount:e}):this.recordCount+=e)}includeCalloutCollisionBounds(i){const e=l(i);e&&(this._calloutCollisionBounds?this._calloutCollisionBounds.extend(e):(this._calloutCollisionBounds=e,this.bounds.push(e)),this._colliders=null)}includeCalloutPartCollisionBounds(i){const e=l(i);e&&!this.bounds.some(i=>i.x===e.x&&i.y===e.y&&i.width===e.width&&i.height===e.height)&&(this.bounds.push(e),this._colliders=null)}serialize(i){i.push(this.displayId),i.push(this.labelClassId),i.push(this.labelIdHash),i.push(this.hash),i.push(this.recordStart),i.push(this.recordCount),i.push(this.additionalRecordRanges.length);for(const e of this.additionalRecordRanges)i.push(e.recordStart),i.push(e.recordCount);i.writeF32(this.anchorX),i.writeF32(this.anchorY),i.writeF32(this.directionX),i.writeF32(this.directionY),i.writeF32(this.maxScale),i.writeF32(this.minScale),this.referenceBounds?(i.writeF32(this.referenceBounds.size),i.writeF32(this.referenceBounds.offsetX),i.writeF32(this.referenceBounds.offsetY)):(i.writeF32(0),i.writeF32(0),i.writeF32(0)),s(i,this.bounds)}static deserialize(i){const e=i.readInt32(),s=i.readInt32(),n=i.readInt32(),l=i.readInt32(),h=i.readInt32(),a=i.readInt32(),d=i.readInt32(),c=[];for(let t=0;t<d;t++)c.push({recordStart:i.readInt32(),recordCount:i.readInt32()});const u=i.readF32(),f=i.readF32(),m=i.readF32(),x=i.readF32(),p=i.readF32(),S=i.readF32(),y=i.readF32(),I=i.readF32(),F=i.readF32(),b=r(i,t)??[];return new o(e,s,n,l,u,f,m,x,p,S,{size:y,offsetX:I,offsetY:F},b,h,a,c)}}function l(i){const e=i.xmax-i.xmin,s=i.ymax-i.ymin;return null==i.xmin||isNaN(i.xmin)||null==i.ymin||isNaN(i.ymin)||null==i.xmax||isNaN(i.xmax)||null==i.ymax||isNaN(i.ymax)||e<=0||s<=0?null:new t(i.xmin+e/2,-(i.ymin+s/2),e,s)}export{o as LabelMetric};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import t from"../../../../../core/Logger.js";import{labelAnchorStoreUnit as e,labelStoreUnit as r}from"../definitions.js";import{PixelType as s}from"../../../../webgl/enums.js";import i from"../../../../webgl/Texture.js";import{TextureDescriptor as h}from"../../../../webgl/TextureDescriptor.js";const a=32,n=4,o=()=>t.getLogger("esri.views.2d.engine.webgl.collisions.LabelStore");class _{constructor(){this._data=new Uint8Array(a*a*n),this._anchors=new Float32Array(a*a*n),this._dirtyStart=0,this._dirtyEnd=0,this._entries=new Map,this._freeIds=[],this._nextId=1,this._size=a,this._data[3]=255}get size(){return this._size}get usedMemory(){return this._data.byteLength+this._anchors.byteLength}destroy(){this._entries.size&&o().warn("InternalError: Leaking label store entries"),this._texture?.dispose(),this._anchorTexture?.dispose(),this._texture=null,this._anchorTexture=null,this._entries.clear(),this._freeIds.length=0}acquire(t){if(null!=t.labelStoreId)return t.labelStoreId;const e=this._freeIds.pop()??this._nextId++;return this._ensureCapacity(e),this._entries.set(e,t),this._writeFeatureId(e,t.displayId),this._writeAnchor(e,t.anchorX,t.anchorY),this._data[e*n+3]=255,this._markDirty(e),t.labelStoreId=e,e}release(t){const e=t.labelStoreId;if(null==e)return;if(this._entries.get(e)!==t)throw new Error("InternalError: expected label store entry");this._entries.delete(e),this._data.fill(0,e*n,e*n+n),this._data[e*n+3]=255,this._anchors.fill(0,e*n,e*n+n),this._markDirty(e),t.labelStoreId=null,this._freeIds.push(e)}setVisibility(t,e){const r=t.labelStoreId;if(null==r||this._entries.get(r)!==t)throw new Error("InternalError: expected label metric to have a store id");const s=e?0:255,i=r*n+3;this._writeReferenceSymbolVVOffset(r,t.referenceSymbolVVOffset),this._data[i]!==s&&(this._data[i]=s,this._markDirty(r))}getVisibility(t){const e=t.labelStoreId;return null==e?255:this._data[e*n+3]}has(t){return null!=t.labelStoreId&&this._entries.get(t.labelStoreId)===t}getAnchor(t){if(!this._entries.has(t))return null;const e=t*n;return[this._anchors[e],this._anchors[e+1]]}getReferenceSymbolVVOffset(t){if(!this._entries.has(t))return null;const e=t*n;return[this._anchors[e+2],this._anchors[e+3]]}upload(t){const e=this._texture??this._createTexture(t,!1),r=this._anchorTexture??this._createTexture(t,!0);this._uploadDirty(e,r)}getTexture(t){const s=this._texture??this._createTexture(t,!1),i=this._anchorTexture??this._createTexture(t,!0);if(this._dirtyStart!==1/0)throw new Error("InternalError: expected label store to be uploaded before rendering");return{labelStoreTexture:{texture:s,unit:r},labelAnchorStoreTexture:{texture:i,unit:e}}}_createTexture(t,e){const r=new h(this._size);r.wrapMode=33071,r.samplingMode=9728,r.pixelFormat=6408,r.dataType=e?s.FLOAT:s.UNSIGNED_BYTE;const a=new i(t,r,e?this._anchors:this._data);return e?this._anchorTexture=a:this._texture=a,a}_ensureCapacity(t){if(t<this._size*this._size)return;let e=this._size;for(;t>=e*e;)e*=2;const r=new Uint8Array(e*e*n);r.set(this._data),this._data=r;const s=new Float32Array(e*e*n);s.set(this._anchors),this._anchors=s,this._size=e,this._texture?.dispose(),this._anchorTexture?.dispose(),this._texture=null,this._anchorTexture=null,this._dirtyStart=0,this._dirtyEnd=t}_writeFeatureId(t,e){const r=t*n;this._data[r]=255&e,this._data[r+1]=e>>8&255,this._data[r+2]=e>>16&255,this._markDirty(t)}_writeAnchor(t,e,r){const s=t*n;this._anchors[s]=e,this._anchors[s+1]=r,this._markDirty(t)}_writeReferenceSymbolVVOffset(t,[e,r]){const s=t*n;this._anchors[s+2]===e&&this._anchors[s+3]===r||(this._anchors[s+2]=e,this._anchors[s+3]=r,this._markDirty(t))}_markDirty(t){this._dirtyStart=Math.min(this._dirtyStart,t),this._dirtyEnd=Math.max(this._dirtyEnd,t)}_uploadDirty(t,e){if(this._dirtyStart===1/0)return;const r=Math.floor(this._dirtyStart/this._size),s=Math.floor(this._dirtyEnd/this._size),i=r*this._size*n,h=(s+1)*this._size*n;t.updateData(0,0,r,this._size,s-r+1,this._data.subarray(i,h)),e.updateData(0,0,r,this._size,s-r+1,this._anchors.subarray(i,h)),this._dirtyStart=1/0,this._dirtyEnd=0}}export{_ as LabelStore};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import"../../../../../core/has.js";import{assertIsSome as t}from"../../../../../core/maybe.js";import{asArrayBuffer as e}from"../../../../../core/typedArrayUtil.js";import{toUint32 as i,toFloat32 as r}from"../number.js";import{ResizableUint32Array as s}from"../ResizableUint32Array.js";import{FreeList as n}from"./FreeList.js";const h=1.25,a=32767,d=a<<16|a;class u{constructor(t,e,i){this.bufferType=t,this.size=e,this.strideInt=i,this._dirtyStart=1/0,this._dirtyEnd=0,this._needsGpuRebuild=!1,this._needsComputeRebuild=!1,this._cpu=s.create(e*i*Uint32Array.BYTES_PER_ELEMENT),this.memoryStats={bytesUsed:0,bytesReserved:e*i*Uint32Array.BYTES_PER_ELEMENT},this.clear()}get array(){return this._cpu.array}get elementSize(){return this._cpu.length/this.strideInt}get intSize(){return this.fillPointer}get byteSize(){return this.fillPointer*Uint32Array.BYTES_PER_ELEMENT}get usedMemory(){return this._cpu.array.byteLength}get dirtyStart(){return this._dirtyStart}get dirtyEnd(){return this._dirtyEnd}get hasDirtyRange(){return this._dirtyStart!==1/0}get needsGpuRebuild(){return this._needsGpuRebuild}get needsComputeRebuild(){return this._needsComputeRebuild}destroy(){this._cpu.destroy()}clear(){this._dirtyStart=1/0,this._dirtyEnd=0,this._needsGpuRebuild=!1,this._needsComputeRebuild=!1,this.freeList=new n({start:0,end:this._cpu.length/this.strideInt}),this.fillPointer=0}ensure(t){if(this.maxAvailableSpace()>=t)return;if(t*this.strideInt>this._cpu.length-this.fillPointer){const e=this._cpu.length/this.strideInt,i=Math.round((e+t)*h),r=i*this.strideInt;this._cpu.expand(r*Uint32Array.BYTES_PER_ELEMENT),this.freeList.free(e,i-e),this.memoryStats.bytesReserved+=(i-e)*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,this._needsGpuRebuild=!0,this._markComputeRebuild()}}setU32(t,e){this._cpu.array[t]!==e&&(this._cpu.array[t]=e,this._markDirtyRange(t,t+1),this._markComputeRebuild())}setF32(t,e){this.setU32(t,i(e))}setF32Range(t,e,r){const s=i(r);this._cpu.array.fill(s,t,e),this._markDirtyRange(t,e),this._markComputeRebuild()}getF32(t){return r(this._cpu.array[t])}getView(t,e){return this._cpu.getUint32View(t,e/Uint32Array.BYTES_PER_ELEMENT)}get bufferSize(){return this._cpu.length/this.strideInt}maxAvailableSpace(){return this.freeList.maxAvailableSpace()}markGpuUploadComplete(){this._dirtyStart=1/0,this._dirtyEnd=0,this._needsGpuRebuild=!1}markComputeUploadComplete(){this._needsComputeRebuild=!1}insert(i,r,s,n){const h=s*this.strideInt;if(!h)return 0;const a=r*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,d=new Uint32Array(e(i),a,h),u=this.freeList.firstFit(s);t(u,"First fit region must be defined");const o=u*this.strideInt,_=h;if(this._cpu.array.set(d,o),0!==n)for(let t=0;t<d.length;t++)this._cpu.array[t+o]+=n;return this._markDirtyRange(o,o+_),this.fillPointer=Math.max(this.fillPointer,o+_),this.memoryStats.bytesUsed+=s*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,this._markComputeRebuild(),u}copyFrom(e,i,r,s,n){const h=r*this.strideInt;if(!h)return 0;const a=i*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,d=e._cpu.getUint32View(a,h),u=this.freeList.firstFit(r);t(u,"First fit region must be defined");const o=u*this.strideInt,_=h;if(this._cpu.array.set(d,o),0!==s)for(let t=0;t<h;t++)this._cpu.array[o+t*this.strideInt+n]+=s;return this._markDirtyRange(o,o+_),this.fillPointer=Math.max(this.fillPointer,o+_),this.memoryStats.bytesUsed+=r*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,this._markComputeRebuild(),u}free(t,e,i){const r=t*this.strideInt,s=(t+e)*this.strideInt;if(!0===i)for(let n=t;n!==t+e;n++)this._cpu.array[n*this.strideInt]=d;this._markDirtyRange(r,s),this.freeList.free(t,e),this.memoryStats.bytesUsed-=e*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,this._markComputeRebuild()}reshuffle(t,e){if(0===e.length)return;const i=this._cpu.array.byteLength,r=t*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,n=i!==r,h=this._cpu,a=s.create(r);n||a.array.set(this._cpu.getUint32View(0,this.intSize));for(const s of e)if(n||s.srcFrom!==s.dstFrom||0!==s.mutate){this._markDirtyRange(s.dstFrom*this.strideInt,(s.dstFrom+s.count)*this.strideInt);for(let t=0;t<s.count;t++){const e=(s.dstFrom+t)*this.strideInt,i=(s.srcFrom+t)*this.strideInt;for(let t=0;t<this.strideInt;t++)a.array[e+t]=h.array[i+t]+s.mutate}}this._cpu.destroy(),this._cpu=a,n&&(this._needsGpuRebuild=!0),this.freeList.clear(),this.fillPointer=t*this.strideInt,this.memoryStats.bytesUsed=this.memoryStats.bytesReserved=r,this._markComputeRebuild()}_markDirtyRange(t,e){this._dirtyStart=Math.min(this._dirtyStart,t),this._dirtyEnd=Math.max(this._dirtyEnd,e)}_markComputeRebuild(){"index"===this.bufferType&&(this._needsComputeRebuild=!0)}}export{u as CpuBuffer};
2
+ import"../../../../../core/has.js";import{assertIsSome as t}from"../../../../../core/maybe.js";import{asArrayBuffer as e}from"../../../../../core/typedArrayUtil.js";import{toUint32 as i,toFloat32 as r}from"../number.js";import{ResizableUint32Array as s}from"../ResizableUint32Array.js";import{FreeList as n}from"./FreeList.js";const h=1.25,a=32767,d=a<<16|a;class u{constructor(t,e,i){this.bufferType=t,this.size=e,this.strideInt=i,this._dirtyStart=1/0,this._dirtyEnd=0,this._needsGpuRebuild=!1,this._needsComputeRebuild=!1,this._cpu=s.create(e*i*Uint32Array.BYTES_PER_ELEMENT),this.memoryStats={bytesUsed:0,bytesReserved:e*i*Uint32Array.BYTES_PER_ELEMENT},this.clear()}get array(){return this._cpu.array}get elementSize(){return this._cpu.length/this.strideInt}get intSize(){return this.fillPointer}get byteSize(){return this.fillPointer*Uint32Array.BYTES_PER_ELEMENT}get usedMemory(){return this._cpu.array.byteLength}get dirtyStart(){return this._dirtyStart}get dirtyEnd(){return this._dirtyEnd}get hasDirtyRange(){return this._dirtyStart!==1/0}get needsGpuRebuild(){return this._needsGpuRebuild}get needsComputeRebuild(){return this._needsComputeRebuild}destroy(){this._cpu.destroy()}clear(){this._dirtyStart=1/0,this._dirtyEnd=0,this._needsGpuRebuild=!1,this._needsComputeRebuild=!1,this.freeList=new n({start:0,end:this._cpu.length/this.strideInt}),this.fillPointer=0}ensure(t){if(this.maxAvailableSpace()>=t)return;if(t*this.strideInt>this._cpu.length-this.fillPointer){const e=this._cpu.length/this.strideInt,i=Math.round((e+t)*h),r=i*this.strideInt;this._cpu.expand(r*Uint32Array.BYTES_PER_ELEMENT),this.freeList.free(e,i-e),this.memoryStats.bytesReserved+=(i-e)*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,this._needsGpuRebuild=!0,this._markComputeRebuild()}}setU32(t,e){this._cpu.array[t]!==e&&(this._cpu.array[t]=e,this._markDirtyRange(t,t+1),this._markComputeRebuild())}setF32(t,e){this.setU32(t,i(e))}setF32Range(t,e,r){const s=i(r);this._cpu.array.fill(s,t,e),this._markDirtyRange(t,e),this._markComputeRebuild()}setU24StrideRange(t,e,i,r){const s=new Uint8Array(this._cpu.array.buffer),n=this.strideInt*Uint32Array.BYTES_PER_ELEMENT,h=255&r,a=r>>8&255,d=r>>16&255;for(let u=t;u<e;u++){const t=u*n+i;s[t]=h,s[t+1]=a,s[t+2]=d}this._markDirtyRange(t*this.strideInt,e*this.strideInt),this._markComputeRebuild()}getF32(t){return r(this._cpu.array[t])}getView(t,e){return this._cpu.getUint32View(t,e/Uint32Array.BYTES_PER_ELEMENT)}get bufferSize(){return this._cpu.length/this.strideInt}maxAvailableSpace(){return this.freeList.maxAvailableSpace()}markGpuUploadComplete(){this._dirtyStart=1/0,this._dirtyEnd=0,this._needsGpuRebuild=!1}markComputeUploadComplete(){this._needsComputeRebuild=!1}insert(i,r,s,n){const h=s*this.strideInt;if(!h)return 0;const a=r*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,d=new Uint32Array(e(i),a,h),u=this.freeList.firstFit(s);t(u,"First fit region must be defined");const _=u*this.strideInt,o=h;if(this._cpu.array.set(d,_),0!==n)for(let t=0;t<d.length;t++)this._cpu.array[t+_]+=n;return this._markDirtyRange(_,_+o),this.fillPointer=Math.max(this.fillPointer,_+o),this.memoryStats.bytesUsed+=s*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,this._markComputeRebuild(),u}copyFrom(e,i,r,s,n){const h=r*this.strideInt;if(!h)return 0;const a=i*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,d=e._cpu.getUint32View(a,h),u=this.freeList.firstFit(r);t(u,"First fit region must be defined");const _=u*this.strideInt,o=h;if(this._cpu.array.set(d,_),0!==s)for(let t=0;t<h;t++)this._cpu.array[_+t*this.strideInt+n]+=s;return this._markDirtyRange(_,_+o),this.fillPointer=Math.max(this.fillPointer,_+o),this.memoryStats.bytesUsed+=r*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,this._markComputeRebuild(),u}free(t,e,i){const r=t*this.strideInt,s=(t+e)*this.strideInt;if(!0===i)for(let n=t;n!==t+e;n++)this._cpu.array[n*this.strideInt]=d;this._markDirtyRange(r,s),this.freeList.free(t,e),this.memoryStats.bytesUsed-=e*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,this._markComputeRebuild()}reshuffle(t,e){if(0===e.length)return;const i=this._cpu.array.byteLength,r=t*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,n=i!==r,h=this._cpu,a=s.create(r);n||a.array.set(this._cpu.getUint32View(0,this.intSize));for(const s of e)if(n||s.srcFrom!==s.dstFrom||0!==s.mutate){this._markDirtyRange(s.dstFrom*this.strideInt,(s.dstFrom+s.count)*this.strideInt);for(let t=0;t<s.count;t++){const e=(s.dstFrom+t)*this.strideInt,i=(s.srcFrom+t)*this.strideInt;for(let t=0;t<this.strideInt;t++)a.array[e+t]=h.array[i+t]+s.mutate}}this._cpu.destroy(),this._cpu=a,n&&(this._needsGpuRebuild=!0),this.freeList.clear(),this.fillPointer=t*this.strideInt,this.memoryStats.bytesUsed=this.memoryStats.bytesReserved=r,this._markComputeRebuild()}_markDirtyRange(t,e){this._dirtyStart=Math.min(this._dirtyStart,t),this._dirtyEnd=Math.max(this._dirtyEnd,e)}_markComputeRebuild(){"index"===this.bufferType&&(this._needsComputeRebuild=!0)}}export{u as CpuBuffer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import"../../../../../core/has.js";import{destroyMaybe as e}from"../../../../../core/maybe.js";import{i1616to32 as t}from"../number.js";import{CpuBuffer as i}from"./CpuBuffer.js";import{unpackDataView as r}from"../shaderGraph/techniques/mesh/dataViewUtils.js";const s=1e3,f=4;class o{constructor(e,t){if(this._layout=e,this.useVisibility=t,this._position=this._layout.attributes.find(e=>"pos"===e.name||"position"===e.name),!this._position)throw new Error("InternalError: Unable to find position attribute");const r=this._layout.stride/Uint32Array.BYTES_PER_ELEMENT;this._indexBuffer=new i("index",s,1),this._vertexBuffer=new i("vertex",s,r),this._visibilityBuffer=this.useVisibility?new i("vertex",s,f/Uint32Array.BYTES_PER_ELEMENT):null}destroy(){this._indexBuffer=e(this._indexBuffer),this._vertexBuffer=e(this._vertexBuffer),this._visibilityBuffer=e(this._visibilityBuffer)}get layout(){return this._layout}get usedMemory(){let e=0;return e+=this._indexBuffer.usedMemory,e+=this._vertexBuffer.usedMemory,null!=this._visibilityBuffer&&(e+=this._visibilityBuffer.usedMemory),e}get memoryStats(){return{bytesUsed:this._vertexBuffer.memoryStats.bytesUsed+this._indexBuffer.memoryStats.bytesUsed,bytesReserved:this._vertexBuffer.memoryStats.bytesReserved+this._indexBuffer.memoryStats.bytesReserved,vertex:this._vertexBuffer.memoryStats,index:this._indexBuffer.memoryStats}}get vertexBuffer(){return this._vertexBuffer}get indexBuffer(){return this._indexBuffer}get visibilityBuffer(){return this._visibilityBuffer}getAttributePrecisionPackFactors(){const e={};for(const t of this.layout.attributes)t.packPrecisionFactor&&(e[t.name]=t.packPrecisionFactor);return e}getDebugVertexInfo(e=!1,t){const i=this._layout,s=i.stride,f=this._vertexBuffer.getView(0,this._vertexBuffer.byteSize),o=this._createComputeDebugAttributes(e,t),n=this._visibilityBuffer?.getView(0,this._visibilityBuffer.byteSize),u=new DataView(f.slice().buffer),a=n?new DataView(n.slice().buffer):null;let c=f.byteLength/s;e&&(c=this._indexBuffer.fillPointer/3);const l=this._indexBuffer.getView(0,this._indexBuffer.byteSize);let h=0;const y=[];for(let _=0;_<c;_++){let t=_;e&&(t=l[3*_],h=t*s);const f={};for(const e of[...i.attributes,...o]){let t=`${e.offset} ${e.name}`;const i=r(u,e,h);if(e.packPrecisionFactor)if(t+=` (precision: ${e.packPrecisionFactor})`,"number"==typeof i)f[t]=i/e.packPrecisionFactor;else{const r=[...i];for(let t=0;t<r.length;t++)r[t]/=e.packPrecisionFactor;f[t]=r}else f[t]=i;if("id"===e.name&&3===e.count&&Array.isArray(i)){const t=i[0]|i[1]<<8|i[2]<<16;f.id=e.packPrecisionFactor?t/e.packPrecisionFactor:t}}a&&(f["visibility (buffer)"]=a.getFloat32(t*Float32Array.BYTES_PER_ELEMENT,!0)),h+=s,y.push(f)}return{vertices:y,layout:i}}append(e){const t=e.layout.stride,i=e.indices.byteLength/Uint32Array.BYTES_PER_ELEMENT,r=e.vertices.byteLength/t;this._ensure(i,r);const{vertices:s,indices:o}=e,n=this._vertexBuffer.insert(s,0,s.byteLength/t,0),u=new Uint32Array(r);new Float32Array(u.buffer).fill(255),this._visibilityBuffer&&this._visibilityBuffer.insert(u,0,u.byteLength/f,0);return{vertexFrom:n,indexFrom:this._indexBuffer.insert(o,0,o.byteLength/4,n)}}setRecordVisibility(e,t,i,r){if(null==this._visibilityBuffer)throw new Error("Internal Error: Visibility buffer not defined");const{recordStart:s,recordCount:f}=t;if(!(s+f>e.length))for(let o=s;o<s+f;o++){const{vertexStart:t,vertexCount:r}=e[o];this._visibilityBuffer.setF32Range(t,t+r,i)}}getEntityRecordVisibility(e,t){if(null==this._visibilityBuffer)return 0;const i=e.records[t];return this._visibilityBuffer.getF32(i.vertexStart)}copyRecordFrom(e,i,r,s){const{indexStart:f,indexCount:o,vertexStart:n,vertexCount:u}=i;this._ensure(o,u);const a=e._position,c=r*(a.packPrecisionFactor??1),l=s*(a.packPrecisionFactor??1),h=a.offset,y=t(c,l),_=this._vertexBuffer.copyFrom(e._vertexBuffer,n,u,y,h);this._visibilityBuffer&&e._visibilityBuffer&&this._visibilityBuffer.copyFrom(e._visibilityBuffer,n,u,0,0);const d=this._indexBuffer.copyFrom(e._indexBuffer,f,o,_-n,0),v=i.clone();return v.vertexStart=_,v.indexStart=d,v.overlaps=0,v}remove(e,t,i,r){this._indexBuffer.free(e,t),this._vertexBuffer.free(i,r),this._visibilityBuffer&&this._visibilityBuffer.free(i,r)}reshuffle(e){this._vertexBuffer.reshuffle(e.vertex.count,e.vertex.operations),this._indexBuffer.reshuffle(e.index.count,e.index.operations),this._visibilityBuffer&&this._visibilityBuffer.reshuffle(e.vertex.count,e.vertex.operations)}_createComputeDebugAttributes(e,t){const i=[];if(!e)return i;if(null==t)return console.log("must provide location info to see compute attributes"),i;for(const r of this._layout.attributes){const e=t.computeAttributeMap[r.name];null!=e&&2===e.length&&(i.push({...r,name:e[0],offset:r.offset+this._layout.stride}),i.push({...r,name:e[1],offset:r.offset+2*this._layout.stride}))}return i}_validateRecordVertexIds(e,t,i){const s=this._layout.attributes.find(e=>"id"===e.name&&3===e.count);if(null==s)return;const f=this._vertexBuffer.array,o=new DataView(f.buffer,f.byteOffset,this._vertexBuffer.byteSize),{recordStart:n,recordCount:u}=t;for(let a=n;a<n+u;a++){const{vertexStart:t,vertexCount:f}=e[a];for(let e=t;e<t+f;e++){const t=r(o,s,e*this._layout.stride);if(!Array.isArray(t)||3!==t.length)throw new Error("InternalError: expected packed vec3 id");const f=t[0]|t[1]<<8|t[2]<<16,n=s.packPrecisionFactor?f/s.packPrecisionFactor:f;n!==i&&console.error(`InternalError: visibility write id mismatch (expected ${i}, found ${n} at vertex ${e})`)}}}_ensure(e,t){this._indexBuffer.ensure(Math.max(e,s)),this._vertexBuffer.ensure(Math.max(t,s)),this._visibilityBuffer&&this._visibilityBuffer.ensure(Math.max(t,s))}}export{o as CpuMeshData};
2
+ import{destroyMaybe as e}from"../../../../../core/maybe.js";import{i1616to32 as t}from"../number.js";import{CpuBuffer as r}from"./CpuBuffer.js";import{unpackDataView as s}from"../shaderGraph/techniques/mesh/dataViewUtils.js";const i=1e3;class o{constructor(e){if(this._layout=e,this._position=this._layout.attributes.find(e=>"pos"===e.name||"position"===e.name),this._id=this._layout.attributes.find(e=>"id"===e.name&&3===e.count),!this._position||!this._id)throw new Error("InternalError: Unable to find required mesh attributes");const t=this._layout.stride/Uint32Array.BYTES_PER_ELEMENT;this._indexBuffer=new r("index",i,1),this._vertexBuffer=new r("vertex",i,t)}destroy(){this._indexBuffer=e(this._indexBuffer),this._vertexBuffer=e(this._vertexBuffer)}get layout(){return this._layout}get usedMemory(){let e=0;return e+=this._indexBuffer.usedMemory,e+=this._vertexBuffer.usedMemory,e}get memoryStats(){return{bytesUsed:this._vertexBuffer.memoryStats.bytesUsed+this._indexBuffer.memoryStats.bytesUsed,bytesReserved:this._vertexBuffer.memoryStats.bytesReserved+this._indexBuffer.memoryStats.bytesReserved,vertex:this._vertexBuffer.memoryStats,index:this._indexBuffer.memoryStats}}get vertexBuffer(){return this._vertexBuffer}get indexBuffer(){return this._indexBuffer}getAttributePrecisionPackFactors(){const e={};for(const t of this.layout.attributes)t.packPrecisionFactor&&(e[t.name]=t.packPrecisionFactor);return e}getDebugVertexInfo(e=!1,t){const r=this._layout,i=r.stride,o=this._vertexBuffer.getView(0,this._vertexBuffer.byteSize),n=this._createComputeDebugAttributes(e,t),f=new DataView(o.slice().buffer);let u=o.byteLength/i;e&&(u=this._indexBuffer.fillPointer/3);const a=this._indexBuffer.getView(0,this._indexBuffer.byteSize);let c=0;const h=[];for(let d=0;d<u;d++){let t=d;e&&(t=a[3*d],c=t*i);const o={};for(const e of[...r.attributes,...n]){let t=`${e.offset} ${e.name}`;const r=s(f,e,c);if(e.packPrecisionFactor)if(t+=` (precision: ${e.packPrecisionFactor})`,"number"==typeof r)o[t]=r/e.packPrecisionFactor;else{const s=[...r];for(let t=0;t<s.length;t++)s[t]/=e.packPrecisionFactor;o[t]=s}else o[t]=r;if("id"===e.name&&3===e.count&&Array.isArray(r)){const t=r[0]|r[1]<<8|r[2]<<16;o.id=e.packPrecisionFactor?t/e.packPrecisionFactor:t}}c+=i,h.push(o)}return{vertices:h,layout:r}}append(e){const t=e.layout.stride,r=e.indices.byteLength/Uint32Array.BYTES_PER_ELEMENT,s=e.vertices.byteLength/t;this._ensure(r,s);const{vertices:i,indices:o}=e,n=this._vertexBuffer.insert(i,0,i.byteLength/t,0);return{vertexFrom:n,indexFrom:this._indexBuffer.insert(o,0,o.byteLength/4,n)}}setRecordLabelId(e,t,r){const{recordStart:s,recordCount:i}=t;if(s+i>e.length)throw new Error("InternalError: label record range is out of bounds");for(let o=s;o<s+i;o++){const{vertexStart:t,vertexCount:s}=e[o];this._vertexBuffer.setU24StrideRange(t,t+s,this._id.offset,r)}}getRecordId(e){const t=e.vertexStart*this._vertexBuffer.strideInt+this._id.offset/Uint32Array.BYTES_PER_ELEMENT;return 16777215&this._vertexBuffer.array[t]}copyRecordFrom(e,r,s,i){const{indexStart:o,indexCount:n,vertexStart:f,vertexCount:u}=r;this._ensure(n,u);const a=e._position,c=s*(a.packPrecisionFactor??1),h=i*(a.packPrecisionFactor??1),d=a.offset,_=t(c,h),x=this._vertexBuffer.copyFrom(e._vertexBuffer,f,u,_,d),m=this._indexBuffer.copyFrom(e._indexBuffer,o,n,x-f,0),l=r.clone();return l.vertexStart=x,l.indexStart=m,l.overlaps=0,l}remove(e,t,r,s){this._indexBuffer.free(e,t),this._vertexBuffer.free(r,s)}reshuffle(e){this._vertexBuffer.reshuffle(e.vertex.count,e.vertex.operations),this._indexBuffer.reshuffle(e.index.count,e.index.operations)}_createComputeDebugAttributes(e,t){const r=[];if(!e)return r;if(null==t)return console.log("must provide location info to see compute attributes"),r;for(const s of this._layout.attributes){const e=t.computeAttributeMap[s.name];null!=e&&2===e.length&&(r.push({...s,name:e[0],offset:s.offset+this._layout.stride}),r.push({...s,name:e[1],offset:s.offset+2*this._layout.stride}))}return r}_ensure(e,t){this._indexBuffer.ensure(Math.max(e,i)),this._vertexBuffer.ensure(Math.max(t,i))}}export{o as CpuMeshData};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{unique as e}from"../../../../../core/arrayUtils.js";import{vertexLayoutHash as t}from"../shaderGraph/techniques/mesh/utils.js";import{BufferObject as i}from"../../../../webgl/BufferObject.js";import{DataType as r}from"../../../../webgl/enums.js";import{VertexArrayObject as s}from"../../../../webgl/VertexArrayObject.js";import{VertexBuffer as u}from"../../../../webgl/VertexBuffer.js";import{VertexElementDescriptor as o}from"../../../../webgl/VertexElementDescriptor.js";const f=4,n=[{name:"visibility",offset:0,type:r.FLOAT,count:1}],a={hash:t(n),attributes:n,stride:f};function l(t,i){return e(t.attributes,(e,t)=>e.name===t.name).filter(e=>i.locations.has(e.name)).map(e=>new o(e.name,e.count,e.type,e.offset,t.stride,e.normalized??!1)).sort((e,t)=>i.locations.get(e.name)-i.locations.get(t.name))}function h(t,i){const r=[],s=e(t.attributes,(e,t)=>e.name===t.name).filter(e=>i.locations.has(e.name));for(const e of s){r.push(new o(e.name,e.count,e.type,e.offset,t.stride,e.normalized??!1));const s=i.computeAttributeMap[e.name];null!=s&&2===s.length&&(r.push(new o(s[0],e.count,e.type,e.offset+t.stride,t.stride,e.normalized??!1)),r.push(new o(s[1],e.count,e.type,e.offset+2*t.stride,t.stride,e.normalized??!1)))}return r.sort((e,t)=>i.locations.get(e.name)-i.locations.get(t.name))}class d{constructor(e){this._layout=e}destroy(){this._uploadedMeshData=null,this._vertexBuffer?.dispose(),this._computeVertexBuffer?.dispose(),this._visibilityBuffer?.dispose(),this._indexBuffer?.dispose(),this._computeIndexBuffer?.dispose(),this._computeVAO?.disposeVAOOnly(),this._geometryVAO?.disposeVAOOnly()}upload(e){if(e.layout.hash!==this._layout.hash)throw new Error("InternalError: Tried to update buffer with differing layout");const t=e.vertexBuffer,i=e.indexBuffer;if(!t||!i||!t.bufferSize)return;this._uploadedMeshData=e;const r=this._syncVertexGpuBuffer(t),s=this._syncIndexGpuBuffer(i),u=r||s,o=this._syncComputeBuffers(t,i);u&&(this._geometryVAO?.disposeVAOOnly(),this._geometryVAO=null),o&&(this._computeVAO?.disposeVAOOnly(),this._computeVAO=null),t.markGpuUploadComplete(),i.markGpuUploadComplete(),i.markComputeUploadComplete()}uploadVisibility(e){if(e.layout.hash!==this._layout.hash)throw new Error("InternalError: Tried to update buffer with differing layout");const t=e.visibilityBuffer;if(!t)return;this._uploadedMeshData=e;this._syncVisibilityGpuBuffer(t)&&(this._geometryVAO?.disposeVAOOnly(),this._geometryVAO=null,this._computeVAO?.disposeVAOOnly(),this._computeVAO=null),t.markGpuUploadComplete()}getAttributePrecisionPackFactors(){const e={};for(const t of this._layout.attributes)t.packPrecisionFactor&&(e[t.name]=t.packPrecisionFactor);return e}getDebugVertexInfo(e=!1,t){return this._uploadedMeshData?.getDebugVertexInfo(e,t)??null}getGeometryVAO(e,t){const r=this._uploadedMeshData;if(!r)return null;const o=r.vertexBuffer,f=r.indexBuffer,n=r.visibilityBuffer;if(!o||!f||!o.bufferSize)return null;if(this._vertexBuffer??=new u(e,l(this._layout,t),o.array,35048),this._indexBuffer??=i.createIndex(e,35048,f.array),n&&null==this._visibilityBuffer&&(this._visibilityBuffer=new u(e,l(a,t),n.array,35048)),!this._geometryVAO){const t=new Map([["geometry",this._vertexBuffer]]);this._visibilityBuffer&&t.set("visibility",this._visibilityBuffer),this._geometryVAO=new s(e,t,this._indexBuffer)}return this._geometryVAO}getComputeVAO(e,t){const i=this._uploadedMeshData;if(!i)return null;const r=i.vertexBuffer,o=i.indexBuffer,f=i.visibilityBuffer;if(!r||!o||!r.bufferSize)return null;if(this._computeVertexBuffer??=new u(e,h(this._layout,t),r.array,35048),this._computeIndexBuffer??=this._createComputeIndexBuffer(e,o),f&&null==this._visibilityBuffer&&(this._visibilityBuffer=new u(e,l(a,t),f.array,35048)),!this._computeVAO){const t=new Map([["geometry",this._computeVertexBuffer]]);this._visibilityBuffer&&t.set("visibility",this._visibilityBuffer),this._computeVAO=new s(e,t,this._computeIndexBuffer)}return this._computeVAO}_syncVertexGpuBuffer(e){let t=!1;return e.needsGpuRebuild?(this._vertexBuffer?.dispose(),this._computeVertexBuffer?.dispose(),this._vertexBuffer=null,this._computeVertexBuffer=null,t=!0):e.hasDirtyRange&&(this._vertexBuffer?.setSubData(e.array,e.dirtyStart,e.dirtyStart,e.dirtyEnd),this._computeVertexBuffer?.setSubData(e.array,e.dirtyStart,e.dirtyStart,e.dirtyEnd)),t}_syncVisibilityGpuBuffer(e){return e.needsGpuRebuild?(this._visibilityBuffer?.dispose(),this._visibilityBuffer=null,!0):(e.hasDirtyRange&&this._visibilityBuffer?.setSubData(e.array,e.dirtyStart,e.dirtyStart,e.dirtyEnd),!1)}_syncIndexGpuBuffer(e){return e.needsGpuRebuild?(this._indexBuffer?.dispose(),this._indexBuffer=null,!0):(e.hasDirtyRange&&this._indexBuffer?.setSubData(e.array,e.dirtyStart,e.dirtyStart,e.dirtyEnd),!1)}_syncComputeBuffers(e,t){let i=!1;return e.needsGpuRebuild&&(this._computeVertexBuffer?.dispose(),this._computeVertexBuffer=null,i=!0),(t.needsGpuRebuild||t.needsComputeRebuild)&&(this._computeIndexBuffer?.dispose(),this._computeIndexBuffer=null,i=!0),i}_createComputeIndexBuffer(e,t){const r=new Uint32Array(t.fillPointer/3);for(let i=0;i<t.fillPointer;i+=3)r[i/3]=t.array[i];return i.createIndex(e,35048,r)}}export{d as GpuMeshState};
2
+ import{unique as e}from"../../../../../core/arrayUtils.js";import{BufferObject as t}from"../../../../webgl/BufferObject.js";import{VertexArrayObject as r}from"../../../../webgl/VertexArrayObject.js";import{VertexBuffer as s}from"../../../../webgl/VertexBuffer.js";import{VertexElementDescriptor as u}from"../../../../webgl/VertexElementDescriptor.js";function i(t,r){return e(t.attributes,(e,t)=>e.name===t.name).filter(e=>r.locations.has(e.name)).map(e=>new u(e.name,e.count,e.type,e.offset,t.stride,e.normalized??!1)).sort((e,t)=>r.locations.get(e.name)-r.locations.get(t.name))}function o(t,r){const s=[],i=e(t.attributes,(e,t)=>e.name===t.name).filter(e=>r.locations.has(e.name));for(const e of i){s.push(new u(e.name,e.count,e.type,e.offset,t.stride,e.normalized??!1));const i=r.computeAttributeMap[e.name];null!=i&&2===i.length&&(s.push(new u(i[0],e.count,e.type,e.offset+t.stride,t.stride,e.normalized??!1)),s.push(new u(i[1],e.count,e.type,e.offset+2*t.stride,t.stride,e.normalized??!1)))}return s.sort((e,t)=>r.locations.get(e.name)-r.locations.get(t.name))}class n{constructor(e){this._layout=e}destroy(){this._uploadedMeshData=null,this._vertexBuffer?.dispose(),this._computeVertexBuffer?.dispose(),this._indexBuffer?.dispose(),this._computeIndexBuffer?.dispose(),this._computeVAO?.disposeVAOOnly(),this._geometryVAO?.disposeVAOOnly()}upload(e){if(e.layout.hash!==this._layout.hash)throw new Error("InternalError: Tried to update buffer with differing layout");const t=e.vertexBuffer,r=e.indexBuffer;if(!t||!r||!t.bufferSize)return;this._uploadedMeshData=e;const s=this._syncVertexGpuBuffer(t),u=this._syncIndexGpuBuffer(r),i=s||u,o=this._syncComputeBuffers(t,r);i&&(this._geometryVAO?.disposeVAOOnly(),this._geometryVAO=null),o&&(this._computeVAO?.disposeVAOOnly(),this._computeVAO=null),t.markGpuUploadComplete(),r.markGpuUploadComplete(),r.markComputeUploadComplete()}getAttributePrecisionPackFactors(){const e={};for(const t of this._layout.attributes)t.packPrecisionFactor&&(e[t.name]=t.packPrecisionFactor);return e}getDebugVertexInfo(e=!1,t){return this._uploadedMeshData?.getDebugVertexInfo(e,t)??null}getGeometryVAO(e,u){const o=this._uploadedMeshData;if(!o)return null;const n=o.vertexBuffer,f=o.indexBuffer;if(!n||!f||!n.bufferSize)return null;if(this._vertexBuffer??=new s(e,i(this._layout,u),n.array,35048),this._indexBuffer??=t.createIndex(e,35048,f.array),!this._geometryVAO){const t=new Map([["geometry",this._vertexBuffer]]);this._geometryVAO=new r(e,t,this._indexBuffer)}return this._geometryVAO}getComputeVAO(e,t){const u=this._uploadedMeshData;if(!u)return null;const i=u.vertexBuffer,n=u.indexBuffer;if(!i||!n||!i.bufferSize)return null;if(this._computeVertexBuffer??=new s(e,o(this._layout,t),i.array,35048),this._computeIndexBuffer??=this._createComputeIndexBuffer(e,n),!this._computeVAO){const t=new Map([["geometry",this._computeVertexBuffer]]);this._computeVAO=new r(e,t,this._computeIndexBuffer)}return this._computeVAO}_syncVertexGpuBuffer(e){let t=!1;return e.needsGpuRebuild?(this._vertexBuffer?.dispose(),this._computeVertexBuffer?.dispose(),this._vertexBuffer=null,this._computeVertexBuffer=null,t=!0):e.hasDirtyRange&&(this._vertexBuffer?.setSubData(e.array,e.dirtyStart,e.dirtyStart,e.dirtyEnd),this._computeVertexBuffer?.setSubData(e.array,e.dirtyStart,e.dirtyStart,e.dirtyEnd)),t}_syncIndexGpuBuffer(e){return e.needsGpuRebuild?(this._indexBuffer?.dispose(),this._indexBuffer=null,!0):(e.hasDirtyRange&&this._indexBuffer?.setSubData(e.array,e.dirtyStart,e.dirtyStart,e.dirtyEnd),!1)}_syncComputeBuffers(e,t){let r=!1;return e.needsGpuRebuild&&(this._computeVertexBuffer?.dispose(),this._computeVertexBuffer=null,r=!0),(t.needsGpuRebuild||t.needsComputeRebuild)&&(this._computeIndexBuffer?.dispose(),this._computeIndexBuffer=null,r=!0),r}_createComputeIndexBuffer(e,r){const s=new Uint32Array(r.fillPointer/3);for(let t=0;t<r.fillPointer;t+=3)s[t/3]=r.array[t];return t.createIndex(e,35048,s)}}export{n as GpuMeshState};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- 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=.25,v=4,w=10,x=1,b=16,j=16,k=o/s,q=8,u=50,y=10,z=24,A=3,B=24,C=8,D=3,E=24,F=8,G=4,H={metrics:{width:15,height:17,left:0,top:-7,advance:14}},I=1024,J=0,K=0,L=0,M=1,N=2,O=3,P=4,Q=5,R=6,S=11,T=12,U=13,V=5,W=6,X=5,Y=6,Z=6,$=Z+1,_=1<<Z,tt=1<<$,et=!1,ct=1.05,ht=3,it=1,ot=3,at=3,dt=512,nt=5,pt=6,rt=1.15,st=2,ft=4,gt=128,lt=256,mt=lt-2*ft,vt=2,wt=128,xt=1,bt=8,jt=500,kt=4,qt=128,ut=1024,yt=2,zt=0,At=1,Bt=4,Ct=8,Dt=16,Et=4,Ft=1,Gt=4,Ht=8,It=32,Jt=64,Kt=128,Lt=4,Mt=1,Nt=1<<20,Ot=.75,Pt=10,Qt=.75,Rt=12,St=256,Tt=32,Ut=512,Vt=0,Wt=1;export{Mt as MAX_TILE_RESHUFFLES_PER_FRAME,Pt as RESHUFFLING_EXEMPT_DRAW_CALLS,Nt as RESHUFFLING_EXEMPT_MEMORY_BYTES,Qt as RESHUFFLING_TARGET_DRAW_EFFICIENCY,Ot as RESHUFFLING_TARGET_MEMORY_EFFICIENCY,N as animationUnit,St as attributeStoreInitialSize,I as attributeStoreTextureSize,H as averageGlyphMosaicItem,Wt as backbufferStencilClipped,Vt as backbufferStencilVisible,It as bitsetFillHasPatternHeightPrecisionFactor,Jt as bitsetFillHasPatternWidthPrecisionFactor,Ht as bitsetFillHasUnresolvedReplacementColor,Gt as bitsetFillRandomPatternOffset,Dt as bitsetGenericConsiderAlphaOnly,yt as bitsetGenericLockColor,Et as bitsetLineScaleDash,At as bitsetMarkerAlignmentMap,zt as bitsetMarkerAlignmentScreen,Bt as bitsetMarkerOutlineAllowColorOverride,Ct as bitsetMarkerScaleSymbolsProportionally,Ft as bitsetTypeFillOutline,qt as bufferDataMinimumSize,kt as bufferDataPoolSize,g as chartMaxFields,j as collisionBoxPadding,s as collisionBucketSize,b as collisionEarlyRejectBucketSize,x as collisionMaxZoomDelta,q as collisionPlacementPadding,k as collisionTileBoxSize,n as compressionFactorForU16,P as dataDrivenUnit0,Q as dataDrivenUnit1,R as dataDrivenUnit2,r as debugLabels,gt as defaultSdfTextureSize,bt as displayRecordIntPerElement,f as dotDensityMaxFields,$ as effectBitIndex,tt as effectFlag0,et as enableEarlyLabelDiscard,h as extrudeScale,_ as filterFlag0,M as filterFlagsUnit,z as glyphSize,T as gpgpuUnit,xt as gradientTextureExternalPadding,y as heuristicGlyphsPerFeature,u as heuristicGlyphsPerLine,dt as hittestMaskTextureSize,S as hittestMaskTextureUnit,at as hittestSmallSymbolThreshold,it as hittestToleranceDesktop,ht as hittestToleranceMobile,ot as hittestToleranceSmallSymbol,G as labelPlacementOffsetPadding,w as labelU16ZoomPrecisionFactor,U as localTimeOriginUnit,l as magicLabelLineHeight,Rt as maxGeohashLevel,st as maxGpuUploadsPerFrame,Z as maxHighlightGroups,v as maxLineHeightRatio,p as maxRepresentableInt,Ut as maxTextLineWidth,m as minLineHeightRatio,Tt as minTextLineWidth,c as nanMagicNumber,d as packDegreesU8,jt as patchPixelBufferAllocSize,vt as patternFillRasterizationScale,i as pictureFillColor,ut as randomInsidePolygonTextureSize,a as rasterTileSize,wt as rasterizedVectorMarkerMinSize,D as sdfBufferGlyphSDFCreator,A as sdfBufferServer,F as sdfRadiusComplex,C as sdfRadiusSimple,E as sdfSizeComplex,B as sdfSizeSimple,ft as spritePadding,mt as svgSdfTextureInnerSize,lt as svgSdfTextureSize,L as textureBindingBitmap,K as textureBindingGlyphAtlas,V as textureBindingHighlight0,W as textureBindingHighlight1,X as textureBindingRenderer0,Y as textureBindingRenderer1,J as textureBindingSpriteAtlas,Lt as textureUploadManagerBudget,Kt as textureUploadManagerChunkSize,ct as thinLineHalfWidthThreshold,o as tileSize,O as visualVariableUnit,rt as vtlHighResCutoff,pt as vtlTextureBindingUnitGlyphs,nt as vtlTextureBindingUnitSprites,e as webglMaxInnerStops,t as webglMaxStops};
2
+ 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=.25,v=4,w=10,x=1,b=16,j=16,k=o/s,q=8,u=50,y=10,z=24,A=3,B=24,C=8,D=3,E=24,F=8,G=4,H={metrics:{width:15,height:17,left:0,top:-7,advance:14}},I=1024,J=0,K=0,L=0,M=1,N=2,O=3,P=4,Q=5,R=6,S=7,T=8,U=11,V=12,W=13,X=5,Y=6,Z=5,$=6,_=6,tt=_+1,et=1<<_,ct=1<<tt,ht=!1,it=1.05,ot=3,at=1,dt=3,nt=3,pt=512,rt=5,st=6,ft=1.15,gt=2,lt=4,mt=128,vt=256,wt=vt-2*lt,xt=2,bt=128,jt=1,kt=8,qt=500,ut=4,yt=128,zt=1024,At=2,Bt=0,Ct=1,Dt=4,Et=8,Ft=16,Gt=4,Ht=1,It=4,Jt=8,Kt=32,Lt=64,Mt=128,Nt=4,Ot=1,Pt=1<<20,Qt=.75,Rt=10,St=.75,Tt=12,Ut=256,Vt=32,Wt=512,Xt=0,Yt=1;export{Ot as MAX_TILE_RESHUFFLES_PER_FRAME,Rt as RESHUFFLING_EXEMPT_DRAW_CALLS,Pt as RESHUFFLING_EXEMPT_MEMORY_BYTES,St as RESHUFFLING_TARGET_DRAW_EFFICIENCY,Qt as RESHUFFLING_TARGET_MEMORY_EFFICIENCY,N as animationUnit,Ut as attributeStoreInitialSize,I as attributeStoreTextureSize,H as averageGlyphMosaicItem,Yt as backbufferStencilClipped,Xt as backbufferStencilVisible,Kt as bitsetFillHasPatternHeightPrecisionFactor,Lt as bitsetFillHasPatternWidthPrecisionFactor,Jt as bitsetFillHasUnresolvedReplacementColor,It as bitsetFillRandomPatternOffset,Ft as bitsetGenericConsiderAlphaOnly,At as bitsetGenericLockColor,Gt as bitsetLineScaleDash,Ct as bitsetMarkerAlignmentMap,Bt as bitsetMarkerAlignmentScreen,Dt as bitsetMarkerOutlineAllowColorOverride,Et as bitsetMarkerScaleSymbolsProportionally,Ht as bitsetTypeFillOutline,yt as bufferDataMinimumSize,ut as bufferDataPoolSize,g as chartMaxFields,j as collisionBoxPadding,s as collisionBucketSize,b as collisionEarlyRejectBucketSize,x as collisionMaxZoomDelta,q as collisionPlacementPadding,k as collisionTileBoxSize,n as compressionFactorForU16,P as dataDrivenUnit0,Q as dataDrivenUnit1,R as dataDrivenUnit2,r as debugLabels,mt as defaultSdfTextureSize,kt as displayRecordIntPerElement,f as dotDensityMaxFields,tt as effectBitIndex,ct as effectFlag0,ht as enableEarlyLabelDiscard,h as extrudeScale,et as filterFlag0,M as filterFlagsUnit,z as glyphSize,V as gpgpuUnit,jt as gradientTextureExternalPadding,y as heuristicGlyphsPerFeature,u as heuristicGlyphsPerLine,pt as hittestMaskTextureSize,U as hittestMaskTextureUnit,nt as hittestSmallSymbolThreshold,at as hittestToleranceDesktop,ot as hittestToleranceMobile,dt as hittestToleranceSmallSymbol,T as labelAnchorStoreUnit,G as labelPlacementOffsetPadding,S as labelStoreUnit,w as labelU16ZoomPrecisionFactor,W as localTimeOriginUnit,l as magicLabelLineHeight,Tt as maxGeohashLevel,gt as maxGpuUploadsPerFrame,_ as maxHighlightGroups,v as maxLineHeightRatio,p as maxRepresentableInt,Wt as maxTextLineWidth,m as minLineHeightRatio,Vt as minTextLineWidth,c as nanMagicNumber,d as packDegreesU8,qt as patchPixelBufferAllocSize,xt as patternFillRasterizationScale,i as pictureFillColor,zt as randomInsidePolygonTextureSize,a as rasterTileSize,bt as rasterizedVectorMarkerMinSize,D as sdfBufferGlyphSDFCreator,A as sdfBufferServer,F as sdfRadiusComplex,C as sdfRadiusSimple,E as sdfSizeComplex,B as sdfSizeSimple,lt as spritePadding,wt as svgSdfTextureInnerSize,vt as svgSdfTextureSize,L as textureBindingBitmap,K as textureBindingGlyphAtlas,X as textureBindingHighlight0,Y as textureBindingHighlight1,Z as textureBindingRenderer0,$ as textureBindingRenderer1,J as textureBindingSpriteAtlas,Nt as textureUploadManagerBudget,Mt as textureUploadManagerChunkSize,it as thinLineHalfWidthThreshold,o as tileSize,O as visualVariableUnit,ft as vtlHighResCutoff,st as vtlTextureBindingUnitGlyphs,rt as vtlTextureBindingUnitSprites,e as webglMaxInnerStops,t as webglMaxStops};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import t from"../DisplayEntity.js";import e from"../DisplayRecord.js";import{VertexDataWriter as r}from"./VertexDataWriter.js";import i from"../util/Writer.js";class n{constructor(e,r=0){this._id=e,this._sizeHint=r,this._entityRecordCountOffset=0,this._entityCountOffset=0,this._entityIdIndex=0,this._entitySortKeyIndex=0,this._didEntityStart=!1,this._instanceIdToVertexData=new Map,this._recordIndexStart=0,this._recordIndexCount=0,this._recordVertexStart=0,this._recordVertexCount=0,this._current={metric:null,writer:null,start:0,sortKey:0,instanceId:0,layoutHash:0,indexStart:0,vertexStart:0,textureKey:0,metricBoxLenPointer:0},this._requiresRefresh=!1,this._entities=new i(Uint32Array,this._sizeHint*t.byteSizeHint),this._entityCountOffset=this._entities.push(0)}get id(){return this._id}serialize(){const t=new Array,e=[],r=this._entities.buffer();for(const i of this._instanceIdToVertexData.values())e.push(i.serialize(t));return{message:{data:e,entities:r},transferList:t}}get requiresRefresh(){return this._requiresRefresh}set requiresRefresh(t){this._requiresRefresh=t}vertexStart(){return this._current.vertexStart??0}vertexCount(){return this._current.writer?.vertexCount??0}indexCount(){return this._current.writer?.indexCount??0}vertexEnsureSize(t){this._current.writer.vertexEnsureSize(t)}indexEnsureSize(t){this._current.writer.indexEnsureSize(t)}vertexWrite(t){this._current.writer.writeVertex(t)}vertexWriteRegion(t){this._current.writer.writeVertexRegion(t)}vertexWriteF32(t){this._current.writer.writeVertexF32(t)}recordBounds(t,e,r,i){}indexWrite(t){this._current.writer.writeIndex(t)}metricStart(t){this._current.metric=t,this._current.metric.recordStart=this.recordCount()}metricEnd(){const t=this._current.writer;this._current.metric&&(this._current.metric.recordCount=this.recordCount()-this._current.metric.recordStart),this._current.metric?.bounds.length&&this._current.metric?.recordCount?(t.writeMetric(this._current.metric),this._current.metric=null):this._current.metric=null}metricBoxWrite(t){this._current.metric.bounds.push(t)}entityStart(t,e=t){this._entityIdIndex=this._entities.push(t),this._entitySortKeyIndex=this._entities.writeF32(e),this._entityRecordCountOffset=this._entities.push(0),this._didEntityStart=!0}entityRecordCount(){return this._entities.getValue(this._entityRecordCountOffset)}entityEnd(){if(!this._didEntityStart)return;0===this.entityRecordCount()?this._entities.seek(this._entityIdIndex):this._entities.incr(this._entityCountOffset),this._didEntityStart=!1}recordCount(){return this._entities.getValue(this._entityRecordCountOffset)}recordStart(t,e,r=0){this._current.writer=this._getVertexWriter(t,e),this._current.indexStart=this._current.writer.indexCount,this._current.vertexStart=this._current.writer.vertexCount,this._current.instanceId=t,this._current.layoutHash=e.hash,this._current.textureKey=r}recordEnd(t=0){const r=this._current.vertexStart,i=this._current.writer.vertexCount-r;if(!i)return!1;const n=this._current.indexStart,s=this._current.writer.indexCount-n;return this._recordIndexStart=n,this._recordIndexCount=s,this._recordVertexStart=r,this._recordVertexCount=i,this._entities.incr(this._entityRecordCountOffset),e.write(this._entities,this._current.instanceId,this._current.textureKey,n,s,r,i,t),!0}copyLast(t,r){const i=this._recordVertexStart+this._recordVertexCount;this._entities.incr(this._entityRecordCountOffset),e.write(this._entities,this._current.instanceId,this._current.textureKey,this._recordIndexStart+this._recordIndexCount,this._recordIndexCount,i,this._recordVertexCount,0);const n=this._current.writer.indexWriter,s=this._current.writer.vertexWriter,c=this._recordIndexStart+this._recordIndexCount,u=this._recordVertexCount;for(let e=this._recordIndexStart;e!==c;e++){const t=n.getValue(e);n.push(t+u)}const o=this._current.writer.layout.stride/Uint32Array.BYTES_PER_ELEMENT,h=this._recordVertexStart*o,_=(this._recordVertexStart+this._recordVertexCount)*o;for(let e=h;e!==_;e++){const t=s.getValue(e);s.push(t)}const d=this._current.writer.layout.position,a=d.packPrecisionFactor??1,x=d.offset/Uint32Array.BYTES_PER_ELEMENT,y=t*a,S=r*a;for(let e=i*o;e<=s.length;e+=o)s.i1616Add(e+x,y,S)}copyLastFrom(t,e,r){const i=t._entities.getValue(t._entityIdIndex),n=this._entities.getValue(this._entityIdIndex);if(!this._didEntityStart||i!==n){const e=t._entities.getValueF32(t._entitySortKeyIndex);this.entityStart(i,e)}this.recordStart(t._current.instanceId,t._current.writer.layout,t._current.textureKey);const s=this._current.writer.layout.stride/Uint32Array.BYTES_PER_ELEMENT,c=this._current.vertexStart,u=t._current.vertexStart-c,o=this._current.writer.indexWriter,h=this._current.writer.vertexWriter,_=t._current.writer.indexWriter,d=t._current.writer.vertexWriter;for(let l=t._current.indexStart;l!==_.length;l++){const t=_.getValue(l);o.push(t-u)}for(let l=t._current.vertexStart*s;l!==d.length;l++){const t=d.getValue(l);h.push(t)}const a=this._current.writer.layout.position,x=a.packPrecisionFactor??1,y=a.offset/Uint32Array.BYTES_PER_ELEMENT,S=e*x,f=r*x;for(let l=c*s;l<=h.length;l+=s)h.i1616Add(l+y,S,f);this.recordEnd()}_getVertexWriter(t,e){const i=this._instanceIdToVertexData;return i.has(t)||i.set(t,new r(t,e,this._sizeHint)),i.get(t)}}export{n as MeshData};
2
+ import t from"../DisplayEntity.js";import e from"../DisplayRecord.js";import{VertexDataWriter as r}from"./VertexDataWriter.js";import i from"../util/Writer.js";class n{constructor(e,r=0){this._id=e,this._sizeHint=r,this._entityRecordCountOffset=0,this._entityCountOffset=0,this._entityIdIndex=0,this._entitySortKeyIndex=0,this._didEntityStart=!1,this._instanceIdToVertexData=new Map,this._recordIndexStart=0,this._recordIndexCount=0,this._recordVertexStart=0,this._recordVertexCount=0,this._pendingMetrics=[],this._current={metric:null,writer:null,start:0,sortKey:0,instanceId:0,layoutHash:0,indexStart:0,vertexStart:0,textureKey:0,metricBoxLenPointer:0},this._requiresRefresh=!1,this._entities=new i(Uint32Array,this._sizeHint*t.byteSizeHint),this._entityCountOffset=this._entities.push(0)}get id(){return this._id}serialize(){const t=new Array,e=[],r=this._entities.buffer();for(const i of this._instanceIdToVertexData.values())e.push(i.serialize(t));return{message:{data:e,entities:r},transferList:t}}get requiresRefresh(){return this._requiresRefresh}set requiresRefresh(t){this._requiresRefresh=t}vertexStart(){return this._current.vertexStart??0}vertexCount(){return this._current.writer?.vertexCount??0}indexCount(){return this._current.writer?.indexCount??0}vertexEnsureSize(t){this._current.writer.vertexEnsureSize(t)}indexEnsureSize(t){this._current.writer.indexEnsureSize(t)}vertexWrite(t){this._current.writer.writeVertex(t)}vertexWriteRegion(t){this._current.writer.writeVertexRegion(t)}vertexWriteF32(t){this._current.writer.writeVertexF32(t)}recordBounds(t,e,r,i){}indexWrite(t){this._current.writer.writeIndex(t)}metricStart(t){this._current.metric=t,this._current.metric.recordStart=this.recordCount()}metricEnd(){const t=this._current.writer;this._current.metric&&(this._current.metric.recordCount=this.recordCount()-this._current.metric.recordStart),this._current.metric?.bounds.length&&this._current.metric?.recordCount?(this._pendingMetrics.push({metric:this._current.metric,writer:t}),this._current.metric=null):this._current.metric=null}metricBoxWrite(t){this._current.metric.bounds.push(t)}entityStart(t,e=t){this._entityIdIndex=this._entities.push(t),this._entitySortKeyIndex=this._entities.writeF32(e),this._entityRecordCountOffset=this._entities.push(0),this._didEntityStart=!0}entityRecordCount(){return this._entities.getValue(this._entityRecordCountOffset)}entityEnd(){if(!this._didEntityStart)return;for(const{metric:t,writer:e}of this._pendingMetrics)e.writeMetric(t);this._pendingMetrics.length=0;0===this.entityRecordCount()?this._entities.seek(this._entityIdIndex):this._entities.incr(this._entityCountOffset),this._didEntityStart=!1}recordCount(){return this._entities.getValue(this._entityRecordCountOffset)}recordStart(t,e,r=0){this._current.writer=this._getVertexWriter(t,e),this._current.indexStart=this._current.writer.indexCount,this._current.vertexStart=this._current.writer.vertexCount,this._current.instanceId=t,this._current.layoutHash=e.hash,this._current.textureKey=r}withRecord(t,e,r,i){return this.recordStart(t,e,r??void 0),i(),this.recordEnd()}writeWithoutBuffering(t){t()}recordEnd(t=0){const r=this._current.vertexStart,i=this._current.writer.vertexCount-r;if(!i)return!1;const n=this._current.indexStart,s=this._current.writer.indexCount-n;return this._recordIndexStart=n,this._recordIndexCount=s,this._recordVertexStart=r,this._recordVertexCount=i,this._entities.incr(this._entityRecordCountOffset),e.write(this._entities,this._current.instanceId,this._current.textureKey,n,s,r,i,t),!0}copyLast(t,r){const i=this._recordVertexStart+this._recordVertexCount;this._entities.incr(this._entityRecordCountOffset),e.write(this._entities,this._current.instanceId,this._current.textureKey,this._recordIndexStart+this._recordIndexCount,this._recordIndexCount,i,this._recordVertexCount,0);const n=this._current.writer.indexWriter,s=this._current.writer.vertexWriter,c=this._recordIndexStart+this._recordIndexCount,o=this._recordVertexCount;for(let e=this._recordIndexStart;e!==c;e++){const t=n.getValue(e);n.push(t+o)}const u=this._current.writer.layout.stride/Uint32Array.BYTES_PER_ELEMENT,h=this._recordVertexStart*u,_=(this._recordVertexStart+this._recordVertexCount)*u;for(let e=h;e!==_;e++){const t=s.getValue(e);s.push(t)}const d=this._current.writer.layout.position,a=d.packPrecisionFactor??1,x=d.offset/Uint32Array.BYTES_PER_ELEMENT,y=t*a,f=r*a;for(let e=i*u;e<=s.length;e+=u)s.i1616Add(e+x,y,f)}copyLastFrom(t,e,r){const i=t._entities.getValue(t._entityIdIndex),n=this._entities.getValue(this._entityIdIndex);if(!this._didEntityStart||i!==n){const e=t._entities.getValueF32(t._entitySortKeyIndex);this.entityStart(i,e)}this.recordStart(t._current.instanceId,t._current.writer.layout,t._current.textureKey);const s=this._current.writer.layout.stride/Uint32Array.BYTES_PER_ELEMENT,c=this._current.vertexStart,o=t._current.vertexStart-c,u=this._current.writer.indexWriter,h=this._current.writer.vertexWriter,_=t._current.writer.indexWriter,d=t._current.writer.vertexWriter;for(let l=t._current.indexStart;l!==_.length;l++){const t=_.getValue(l);u.push(t-o)}for(let l=t._current.vertexStart*s;l!==d.length;l++){const t=d.getValue(l);h.push(t)}const a=this._current.writer.layout.position,x=a.packPrecisionFactor??1,y=a.offset/Uint32Array.BYTES_PER_ELEMENT,f=e*x,S=r*x;for(let l=c*s;l<=h.length;l+=s)h.i1616Add(l+y,f,S);this.recordEnd()}_getVertexWriter(t,e){const i=this._instanceIdToVertexData;return i.has(t)||i.set(t,new r(t,e,this._sizeHint)),i.get(t)}}export{n as MeshData};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import has from"../../../../../core/has.js";import"../../../tiling/TileInfoView.js";import e from"../../../tiling/TileKey.js";import"../../../tiling/TileQueue.js";import"../../../tiling/TileStrategy.js";import{tileSize as s}from"../definitions.js";import{MeshData as t}from"./MeshData.js";const r=!!has("featurelayer-pixel-buffering-enabled"),i=1,n=2,h=4,o=8,c=16,a=32,f=64,l=128;function u(e){switch(e){case i:case o:case a:return-1;case n:case f:return 0;case h:case c:case l:return 1}}function m(e){switch(e){case i:case n:case h:return-1;case o:case c:return 0;case a:case f:case l:return 1}}const _=i|o|a,d=h|c|l,p=i|n|h,g=a|f|l;class y{constructor(e,s,i,n=0){this.tileKey=e,this._sizeHint=n,this._meshes={self:new t(this.id,this._sizeHint),neighbors:new Array},this._currentRecordOverlaps=0,this._currentEntityOverlaps=0;const h=i?1:0;this._copyBufferedDataIntoSelf=s&&r&&e.level===h}get id(){return this.tileKey.id}get requiresRefresh(){return this._meshes.self.requiresRefresh||this._meshes.neighbors.some(e=>e.requiresRefresh)}set requiresRefresh(e){this._meshes.self.requiresRefresh=e}vertexStart(){return this._meshes.self.vertexStart()??0}vertexCount(){return this._meshes.self.vertexCount()}indexCount(){return this._meshes.self.indexCount()}indexEnsureSize(e){this._meshes.self.indexEnsureSize(e)}entityStart(e,s=e){this._currentEntityOverlaps=0,this._meshes.self.entityStart(e,s)}entityRecordCount(){return this._meshes.self.entityRecordCount()}entityEnd(){if(this._meshes.self.entityEnd(),r){if(this._copyBufferedDataIntoSelf)return;for(let e=0;e<8;e++){const s=1<<e;!!(this._currentEntityOverlaps&s)&&this._meshes.neighbors[e].entityEnd()}}}recordStart(e,s,t){this._currentRecordOverlaps=0,this._meshes.self.recordStart(e,s,t)}recordEnd(e=0){const s=this._meshes.self.recordEnd(this._currentRecordOverlaps);return s&&0!==this._currentRecordOverlaps?(this._copyIntoNeighbors(),this._currentEntityOverlaps|=this._currentRecordOverlaps,!0):s}recordBounds(e,s,t,i){r&&this._addOverlap(e,s,t,i)}recordCount(){return this._meshes.self.recordCount()}metricStart(e){this._meshes.self.metricStart(e)}metricBoxWrite(e){this._meshes.self.metricBoxWrite(e)}metricEnd(){this._meshes.self.metricEnd()}vertexWrite(e){this._meshes.self.vertexWrite(e)}vertexWriteF32(e){this._meshes.self.vertexWriteF32(e)}vertexWriteRegion(e){this._meshes.self.vertexWriteRegion(e)}indexWrite(e){this._meshes.self.indexWrite(e)}serialize(s){const t={message:[],transferList:[]},r=this._meshes.self.serialize();return t.message.push({tileId:this.tileKey.id,requiresRefresh:this.requiresRefresh,...r.message}),t.transferList.push(...r.transferList),this._meshes.neighbors.forEach((r,i)=>{const n=r.serialize(),h=1<<i,o=u(h),c=m(h),a=new e(this.tileKey).getNormalizedNeighbor(o,c,s);t.message.push({tileId:a.id,requiresRefresh:this.requiresRefresh,...n.message}),t.transferList.push(...n.transferList)}),t}_addOverlap(e,t,r,i){const n=Math.min(s/2,r),h=Math.min(s/2,i),o=255^((e<0+n?d:e>=s-n?_:d|_)|(t<0+h?g:t>=s-h?p:g|p));this._currentRecordOverlaps|=o}_copyIntoNeighbors(){for(let e=0;e<8;e++){const r=1<<e;if(!!(this._currentRecordOverlaps&r)){if(this._copyBufferedDataIntoSelf){const e=-u(r)*s,t=-m(r)*s;if(0!==t)continue;this._meshes.self.copyLast(e,t);continue}if(!this._meshes.neighbors[e]){const s=Math.floor(this._sizeHint/16);this._meshes.neighbors[e]=new t(r,s)}const i=this._meshes.neighbors[e],n=-u(r)*s,h=-m(r)*s;i.copyLastFrom(this._meshes.self,n,h)}}}}export{y as MultiTileMeshData};
2
+ import has from"../../../../../core/has.js";import"../../../tiling/TileInfoView.js";import e from"../../../tiling/TileKey.js";import"../../../tiling/TileQueue.js";import"../../../tiling/TileStrategy.js";import{tileSize as s}from"../definitions.js";import{MeshData as t}from"./MeshData.js";const r=!!has("featurelayer-pixel-buffering-enabled"),i=1,n=2,h=4,o=8,c=16,f=32,u=64,a=128;function l(e){switch(e){case i:case o:case f:return-1;case n:case u:return 0;case h:case c:case a:return 1}}function m(e){switch(e){case i:case n:case h:return-1;case o:case c:return 0;case f:case u:case a:return 1}}const _=i|o|f,d=h|c|a,p=i|n|h,g=f|u|a;class y{constructor(e,s,i,n=0){this.tileKey=e,this._sizeHint=n,this._meshes={self:new t(this.id,this._sizeHint),neighbors:new Array},this._currentRecordOverlaps=0,this._currentEntityOverlaps=0,this._suppressPixelBuffering=!1;const h=i?1:0;this._copyBufferedDataIntoSelf=s&&r&&e.level===h}get id(){return this.tileKey.id}get requiresRefresh(){return this._meshes.self.requiresRefresh||this._meshes.neighbors.some(e=>e.requiresRefresh)}set requiresRefresh(e){this._meshes.self.requiresRefresh=e}vertexStart(){return this._meshes.self.vertexStart()??0}vertexCount(){return this._meshes.self.vertexCount()}indexCount(){return this._meshes.self.indexCount()}indexEnsureSize(e){this._meshes.self.indexEnsureSize(e)}entityStart(e,s=e){this._currentEntityOverlaps=0,this._meshes.self.entityStart(e,s)}entityRecordCount(){return this._meshes.self.entityRecordCount()}entityEnd(){if(this._meshes.self.entityEnd(),r){if(this._copyBufferedDataIntoSelf)return;for(let e=0;e<8;e++){const s=1<<e;!!(this._currentEntityOverlaps&s)&&this._meshes.neighbors[e].entityEnd()}}}recordStart(e,s,t){this._currentRecordOverlaps=0,this._meshes.self.recordStart(e,s,t)}withRecord(e,s,t,r){return this.recordStart(e,s,t??void 0),r(),this.recordEnd()}writeWithoutBuffering(e){const s=this._suppressPixelBuffering;this._suppressPixelBuffering=!0;try{e()}finally{this._suppressPixelBuffering=s}}recordEnd(e=0){const s=this._meshes.self.recordEnd(this._currentRecordOverlaps);return s&&!this._suppressPixelBuffering&&0!==this._currentRecordOverlaps?(this._copyIntoNeighbors(),this._currentEntityOverlaps|=this._currentRecordOverlaps,!0):s}recordBounds(e,s,t,i){r&&!this._suppressPixelBuffering&&this._addOverlap(e,s,t,i)}recordCount(){return this._meshes.self.recordCount()}metricStart(e){this._meshes.self.metricStart(e)}metricBoxWrite(e){this._meshes.self.metricBoxWrite(e)}metricEnd(){this._meshes.self.metricEnd()}vertexWrite(e){this._meshes.self.vertexWrite(e)}vertexWriteF32(e){this._meshes.self.vertexWriteF32(e)}vertexWriteRegion(e){this._meshes.self.vertexWriteRegion(e)}indexWrite(e){this._meshes.self.indexWrite(e)}serialize(s){const t={message:[],transferList:[]},r=this._meshes.self.serialize();return t.message.push({tileId:this.tileKey.id,requiresRefresh:this.requiresRefresh,...r.message}),t.transferList.push(...r.transferList),this._meshes.neighbors.forEach((r,i)=>{const n=r.serialize(),h=1<<i,o=l(h),c=m(h),f=new e(this.tileKey).getNormalizedNeighbor(o,c,s);t.message.push({tileId:f.id,requiresRefresh:this.requiresRefresh,...n.message}),t.transferList.push(...n.transferList)}),t}_addOverlap(e,t,r,i){const n=Math.min(s/2,r),h=Math.min(s/2,i),o=255^((e<0+n?d:e>=s-n?_:d|_)|(t<0+h?g:t>=s-h?p:g|p));this._currentRecordOverlaps|=o}_copyIntoNeighbors(){for(let e=0;e<8;e++){const r=1<<e;if(!!(this._currentRecordOverlaps&r)){if(this._copyBufferedDataIntoSelf){const e=-l(r)*s,t=-m(r)*s;if(0!==t)continue;this._meshes.self.copyLast(e,t);continue}if(!this._meshes.neighbors[e]){const s=Math.floor(this._sizeHint/16);this._meshes.neighbors[e]=new t(r,s)}const i=this._meshes.neighbors[e],n=-l(r)*s,h=-m(r)*s;i.copyLastFrom(this._meshes.self,n,h)}}}}export{y as MultiTileMeshData};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ const t=t=>new o(t.out,t.scaleFactor);class o{constructor(t,o){this._out=t,this._scaleFactor=o}handles(t){return null!=t.calloutReference}coordinateWrite(t,o,l,e){const s=o.calloutReference,u=s?.getCalloutVisualCount?.()??1;for(let n=0;n<u;n++)s?.setCalloutVisualIndex?.(n),this._writeVisual(t,s,e)}_writeVisual(t,o,l){const e=this._out.recordCount();o?.calloutRecordsUseLabelPhase?this._out.writeWithoutBuffering(l):l();const s=this._out.recordCount()-e;if(0===s)return;o?.includeCalloutRecordRange?.(e,s);const u=t.getCalloutCollisionBounds(this._scaleFactor);u&&o?.includeCalloutCollisionBounds?.(u);for(const n of t.getCalloutPartCollisionBounds(this._scaleFactor))o?.includeCalloutPartCollisionBounds?.(n)}}export{t as createCalloutMeshWriterCoordinator};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{AMeshFactory as e}from"./MeshFactory.js";import{createMatcher as s}from"../../util/createMatcher.js";class t extends e{static async create(e,o){const r=await s(e,o.symbology),i=o.labels?await s(e,o.labels):null;return new t(r,i)}constructor(e,s){super(),this._symbology=e,this._labels=s}destroy(){}async enqueueMatcherRequests(e,s,t,o){await Promise.all([this._symbology.fetchResources(e,s,t,o),this._labels?.fetchResources(e,s,t,o)])}enqueueWriterRequests(e,s,t,o,r){const i=this._symbology.match(s,t,o,r);if(i){for(const o of i)o.enqueueRequest(e,s,t);if(this._labels){const i=this._labels.match(s,t,o,r);if(!i)return;for(const o of i)o.enqueueRequest(e,s,t)}}}write(e,s,t,o,r,i,c,a){const l=null!=a?a/o.$view.scale:void 0,n=this._symbology.match(t,o,r,e.id);if(!n)return;for(const y of n)y.write(e,s,t,o,i,c,l,this._symbology);this._symbology.cleanup(s,t,e.id,o,r);if(e.entityRecordCount()>=1&&this._labels){const a=this._labels.match(t,o,r,e.id);if(!a)return;for(const r of a)r.setReferences(n),r.write(e,s,t,o,i,c,l)}}getSortKey(e,s){return this._symbology.getSortKey(e,s)}hasArcadeDependency(e){return!(!this._symbology.hasArcadeDependency(e)&&!this._labels?.hasArcadeDependency(e))}}export{t as FeatureMeshFactory};
2
+ import{createCalloutMeshWriterCoordinator as e}from"./CalloutMeshWriterCoordinator.js";import{AMeshFactory as t}from"./MeshFactory.js";import{MeshWriterGroupCoordinator as o}from"./MeshWriterGroupCoordinator.js";import{createMatcher as r}from"../../util/createMatcher.js";class s extends t{static async create(e,t){const o=await r(e,t.symbology),i=t.labels?await r(e,t.labels):null;return new s(o,i)}constructor(e,t){super(),this._symbology=e,this._labels=t}destroy(){}async enqueueMatcherRequests(e,t,o,r){await Promise.all([this._symbology.fetchResources(e,t,o,r),this._labels?.fetchResources(e,t,o,r)])}enqueueWriterRequests(e,t,o,r,s){const i=this._symbology.match(t,o,r,s);if(i){for(const r of i.writers)r.enqueueRequest(e,t,o);if(this._labels)for(const i of this._labels.matchGroups(t,o,r,s))for(const r of i.writers)r.enqueueRequest(e,t,o)}}write(t,r,s,i,n,a,c,l){const u=null!=l?l/i.$view.scale:void 0,h=this._symbology.match(s,i,n,t.id);if(!h)return;let y=null;h.requiresCoordination?(y=new o({out:t,proxy:r,feature:s,options:i,level:a,viewExtent:c,scaleFactor:u,coordinatorFactories:[e]}),y.coordinateAndWrite(h,{matcher:this._symbology})):this._writeUncoordinated(h,t,r,s,i,a,c,u,this._symbology),this._symbology.cleanup(r,s,t.id,i,n);if(t.entityRecordCount()>=1&&this._labels)for(const d of this._labels.matchGroups(s,i,n,t.id))d.requiresCoordination?(y??=new o({out:t,proxy:r,feature:s,options:i,level:a,viewExtent:c,scaleFactor:u,coordinatorFactories:[e]}),y.coordinateAndWrite(d,{externalReferences:h.exports})):this._writeUncoordinated(d,t,r,s,i,a,c,u)}getSortKey(e,t){return this._symbology.getSortKey(e,t)}hasArcadeDependency(e){return!(!this._symbology.hasArcadeDependency(e)&&!this._labels?.hasArcadeDependency(e))}_writeUncoordinated(e,t,o,r,s,i,n,a,c){for(const l of e.writers)l.setReferences(null),l.write(t,o,r,s,i,n,a,c)}}export{s as FeatureMeshFactory};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ class e{constructor(e){this._context=e,this._coordinators=(e.coordinatorFactories??[]).map(t=>t({out:e.out,scaleFactor:e.scaleFactor}))}coordinateAndWrite(e,t={}){const r=[...e.writers],n=new Set;for(;r.length>0;){const o=this._getNextWriter(e,r,n,t.externalReferences);if(!o)throw new Error("InternalError: mesh writer dependency graph contains a cycle");const[s]=r.splice(o.index,1),c=o.references;s.setReferences(c.writers.length?[...c.writers]:null),this._coordinateWrite(s,c,t.matcher),n.add(s)}}_getNextWriter(e,t,r,n){for(let o=0;o<t.length;o++){const s=t[o],c=this._getReferences(e,s,n);if(c.internal.every(e=>r.has(e)))return{index:o,references:c}}return null}_write(e,t){const{out:r,proxy:n,feature:o,options:s,level:c,viewExtent:i,scaleFactor:a}=this._context;e.write(r,n,o,s,c,i,a,t)}_coordinateWrite(e,t,r){const n=this._coordinators.filter(e=>e.handles(t)),o=s=>{const c=n[s];c?c.coordinateWrite(e,t,r,()=>o(s+1)):this._write(e,r)};o(0)}_getReferences(e,t,r){const n=[],o=[];let s=null;for(const c of e.dependencies.get(t)??[]){if(c.external){const e=r?.get(c.type);if(!e)continue;n.push(e);continue}const e=c.writer;o.push(e),n.push(e),"callout-body"===c.type&&(s=e)}return{writers:n,internal:o,calloutReference:s}}}export{e as MeshWriterGroupCoordinator};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- function t(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t}function e(t,e){return Math.sqrt(t*t+e*e)}function n(t){const n=e(t[0],t[1]);t[0]/=n,t[1]/=n}function s(t,n){return e(t[0]-n[0],t[1]-n[1])}function i(t,e){return t[e+1]}function r(t){return t.length-1}function h(t){let e=0;for(let n=0;n<r(t);n++)e+=a(t,n);return e}function a(t,e,n=1){let[s,r]=i(t,e);return[s,r]=[Math.round(s),Math.round(r)],Math.sqrt(s*s+r*r)*n}class d{constructor(t,e,n,s,i){this._segments=t,this._index=e,this._distance=n,this._xStart=s,this._yStart=i,this._done=!1}static create(t){return new d(t,0,0,t[0][0],t[0][1])}clone(){return new d(this._segments,this._index,this._distance,this.xStart,this.yStart)}equals(t){return this._index===t._index||t._index===this._index-1&&(0===this._distance||1===t._distance)||t._index===this._index+1&&(1===this._distance||0===t._distance)}leq(t){return this._index<t._index||this._index===t._index&&this._distance<=t._distance}geq(t){return this._index>t._index||this._index===t._index&&this._distance>=t._distance}get _segment(){return this._segments[this._index+1]}get angle(){const t=this.dy,e=(0*t+-1*-this.dx)/(1*this.length);let n=Math.acos(e);return t>0&&(n=2*Math.PI-n),n}get xStart(){return this._xStart}get yStart(){return this._yStart}get x(){return this.xStart+this.distance*this.dx}get y(){return this.yStart+this.distance*this.dy}get dx(){return this._segment[0]}get dy(){return this._segment[1]}get xMidpoint(){return this.xStart+.5*this.dx}get yMidpoint(){return this.yStart+.5*this.dy}get xEnd(){return this.xStart+this.dx}get yEnd(){return this.yStart+this.dy}get length(){const{dx:t,dy:e}=this;return Math.sqrt(t*t+e*e)}get remainingLength(){return this.length*(1-this._distance)}get backwardLength(){return this.length*this._distance}get distance(){return this._distance}get done(){return this._done}hasPrev(){return this._index-1>=0}hasNext(){return this._index+1<r(this._segments)}next(){return this.hasNext()?(this._xStart+=this.dx,this._yStart+=this.dy,this._distance=0,this._index+=1,this):null}prev(){return this.hasPrev()?(this._index-=1,this._xStart-=this.dx,this._yStart-=this.dy,this._distance=1,this):(this._done=!0,null)}_seekBackwards(t,e){const n=this.backwardLength;if(t<=n)return this._distance=(n-t)/this.length,this;let s=this.backwardLength;for(;this.prev();){if(s+this.length>t)return this._seekBackwards(t-s);s+=this.length}return this._distance=0,e?this:null}seek(t,e=!1){if(t<0)return this._seekBackwards(Math.abs(t),e);if(t<=this.remainingLength)return this._distance=(this.backwardLength+t)/this.length,this;let n=this.remainingLength;for(;this.next();){if(n+this.length>t)return this.seek(t-n,e);n+=this.length}return this._distance=1,e?this:null}}function u(t,e,n,s=!0){const i=h(t);if(0===i)return;const r=d.create(t),a=i/2;if(!s)return r.seek(a),void n(r.clone(),0,a+0*e,i);const u=Math.max((i-e)/2,0),c=Math.floor(u/e),o=a-c*e;r.seek(o);for(let h=-c;h<=c;h++)n(r.clone(),h,a+h*e,i),r.seek(e)}function c(t,e){const n=e;for(let s=0;s<t.length;s++){let e=t[s];o(e,n);const i=[];i.push(e[0]);for(let t=1;t<e.length;t++){const[n,s]=e[t-1],[r,h]=e[t],a=r-n,d=h-s;i.push([a,d])}t[s]=i,e=i}return t}function o(e,i){const r=1e-6;if(i<=0)return;const h=e.length;if(h<3)return;const a=[];let d=0;a.push(0);for(let t=1;t<h;t++)d+=s(e[t],e[t-1]),a.push(d);i=Math.min(i,.2*d);const u=[];u.push(e[0][0]),u.push(e[0][1]);const c=e[h-1][0],o=e[h-1][1],_=t([0,0],e[0],e[1]);n(_),e[0][0]+=i*_[0],e[0][1]+=i*_[1],t(_,e[h-1],e[h-2]),n(_),e[h-1][0]+=i*_[0],e[h-1][1]+=i*_[1];for(let t=1;t<h;t++)a[t]+=i;a[h-1]+=i;const g=.5*i;for(let t=1;t<h-1;t++){let n=0,s=0,d=0;for(let h=t-1;h>=0&&!(a[h+1]<a[t]-g);h--){const u=g+a[h+1]-a[t],c=a[h+1]-a[h],o=a[t]-a[h]<g?1:u/c;if(Math.abs(o)<r)break;const _=o*o,l=o*u-.5*_*c,x=o*c/i,f=e[h+1],y=e[h][0]-f[0],S=e[h][1]-f[1];n+=x/l*(f[0]*o*u+.5*_*(u*y-c*f[0])-_*o*c*y/3),s+=x/l*(f[1]*o*u+.5*_*(u*S-c*f[1])-_*o*c*S/3),d+=x}for(let u=t+1;u<h&&!(a[u-1]>a[t]+g);u++){const h=g-a[u-1]+a[t],c=a[u]-a[u-1],o=a[u]-a[t]<g?1:h/c;if(Math.abs(o)<r)break;const _=o*o,l=o*h-.5*_*c,x=o*c/i,f=e[u-1],y=e[u][0]-f[0],S=e[u][1]-f[1];n+=x/l*(f[0]*o*h+.5*_*(h*y-c*f[0])-_*o*c*y/3),s+=x/l*(f[1]*o*h+.5*_*(h*S-c*f[1])-_*o*c*S/3),d+=x}u.push(n/d),u.push(s/d)}u.push(c),u.push(o);for(let t=0,n=0;t<h;t++)e[t][0]=u[n++],e[t][1]=u[n++]}export{d as SegmentCursor,u as pathDivide,h as pathLength,i as segmentAt,r as segmentCount,a as segmentLength,c as smoothPaths};
2
+ function t(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t}function e(t,e){return Math.sqrt(t*t+e*e)}function n(t){const n=e(t[0],t[1]);t[0]/=n,t[1]/=n}function s(t,n){return e(t[0]-n[0],t[1]-n[1])}function i(t,e,n){let s=e,i=n,r=1/0;for(const h of t)for(let t=0;t<h.length;t++){const a=h[t],d=h[t+1];if(!d){const t=e-a[0],h=n-a[1],d=t*t+h*h;d<r&&(s=a[0],i=a[1],r=d);continue}const u=d[0]-a[0],c=d[1]-a[1],o=u*u+c*c,_=0===o?0:Math.max(0,Math.min(1,((e-a[0])*u+(n-a[1])*c)/o)),g=a[0]+_*u,l=a[1]+_*c,x=e-g,f=n-l,y=x*x+f*f;y<r&&(s=g,i=l,r=y)}return[s,i]}function r(t,e){return t[e+1]}function h(t){return t.length-1}function a(t){let e=0;for(let n=0;n<h(t);n++)e+=d(t,n);return e}function d(t,e,n=1){let[s,i]=r(t,e);return[s,i]=[Math.round(s),Math.round(i)],Math.sqrt(s*s+i*i)*n}class u{constructor(t,e,n,s,i){this._segments=t,this._index=e,this._distance=n,this._xStart=s,this._yStart=i,this._done=!1}static create(t){return new u(t,0,0,t[0][0],t[0][1])}clone(){return new u(this._segments,this._index,this._distance,this.xStart,this.yStart)}equals(t){return this._index===t._index||t._index===this._index-1&&(0===this._distance||1===t._distance)||t._index===this._index+1&&(1===this._distance||0===t._distance)}leq(t){return this._index<t._index||this._index===t._index&&this._distance<=t._distance}geq(t){return this._index>t._index||this._index===t._index&&this._distance>=t._distance}get _segment(){return this._segments[this._index+1]}get angle(){const t=this.dy,e=(0*t+-1*-this.dx)/(1*this.length);let n=Math.acos(e);return t>0&&(n=2*Math.PI-n),n}get xStart(){return this._xStart}get yStart(){return this._yStart}get x(){return this.xStart+this.distance*this.dx}get y(){return this.yStart+this.distance*this.dy}get dx(){return this._segment[0]}get dy(){return this._segment[1]}get xMidpoint(){return this.xStart+.5*this.dx}get yMidpoint(){return this.yStart+.5*this.dy}get xEnd(){return this.xStart+this.dx}get yEnd(){return this.yStart+this.dy}get length(){const{dx:t,dy:e}=this;return Math.sqrt(t*t+e*e)}get remainingLength(){return this.length*(1-this._distance)}get backwardLength(){return this.length*this._distance}get distance(){return this._distance}get done(){return this._done}hasPrev(){return this._index-1>=0}hasNext(){return this._index+1<h(this._segments)}next(){return this.hasNext()?(this._xStart+=this.dx,this._yStart+=this.dy,this._distance=0,this._index+=1,this):null}prev(){return this.hasPrev()?(this._index-=1,this._xStart-=this.dx,this._yStart-=this.dy,this._distance=1,this):(this._done=!0,null)}_seekBackwards(t,e){const n=this.backwardLength;if(t<=n)return this._distance=(n-t)/this.length,this;let s=this.backwardLength;for(;this.prev();){if(s+this.length>t)return this._seekBackwards(t-s);s+=this.length}return this._distance=0,e?this:null}seek(t,e=!1){if(t<0)return this._seekBackwards(Math.abs(t),e);if(t<=this.remainingLength)return this._distance=(this.backwardLength+t)/this.length,this;let n=this.remainingLength;for(;this.next();){if(n+this.length>t)return this.seek(t-n,e);n+=this.length}return this._distance=1,e?this:null}}function c(t,e,n,s=!0){const i=a(t);if(0===i)return;const r=u.create(t),h=i/2;if(!s)return r.seek(h),void n(r.clone(),0,h+0*e,i);const d=Math.max((i-e)/2,0),c=Math.floor(d/e),o=h-c*e;r.seek(o);for(let a=-c;a<=c;a++)n(r.clone(),a,h+a*e,i),r.seek(e)}function o(t,e){const n=e;for(let s=0;s<t.length;s++){let e=t[s];_(e,n);const i=[];i.push(e[0]);for(let t=1;t<e.length;t++){const[n,s]=e[t-1],[r,h]=e[t],a=r-n,d=h-s;i.push([a,d])}t[s]=i,e=i}return t}function _(e,i){const r=1e-6;if(i<=0)return;const h=e.length;if(h<3)return;const a=[];let d=0;a.push(0);for(let t=1;t<h;t++)d+=s(e[t],e[t-1]),a.push(d);i=Math.min(i,.2*d);const u=[];u.push(e[0][0]),u.push(e[0][1]);const c=e[h-1][0],o=e[h-1][1],_=t([0,0],e[0],e[1]);n(_),e[0][0]+=i*_[0],e[0][1]+=i*_[1],t(_,e[h-1],e[h-2]),n(_),e[h-1][0]+=i*_[0],e[h-1][1]+=i*_[1];for(let t=1;t<h;t++)a[t]+=i;a[h-1]+=i;const g=.5*i;for(let t=1;t<h-1;t++){let n=0,s=0,d=0;for(let h=t-1;h>=0&&!(a[h+1]<a[t]-g);h--){const u=g+a[h+1]-a[t],c=a[h+1]-a[h],o=a[t]-a[h]<g?1:u/c;if(Math.abs(o)<r)break;const _=o*o,l=o*u-.5*_*c,x=o*c/i,f=e[h+1],y=e[h][0]-f[0],S=e[h][1]-f[1];n+=x/l*(f[0]*o*u+.5*_*(u*y-c*f[0])-_*o*c*y/3),s+=x/l*(f[1]*o*u+.5*_*(u*S-c*f[1])-_*o*c*S/3),d+=x}for(let u=t+1;u<h&&!(a[u-1]>a[t]+g);u++){const h=g-a[u-1]+a[t],c=a[u]-a[u-1],o=a[u]-a[t]<g?1:h/c;if(Math.abs(o)<r)break;const _=o*o,l=o*h-.5*_*c,x=o*c/i,f=e[u-1],y=e[u][0]-f[0],S=e[u][1]-f[1];n+=x/l*(f[0]*o*h+.5*_*(h*y-c*f[0])-_*o*c*y/3),s+=x/l*(f[1]*o*h+.5*_*(h*S-c*f[1])-_*o*c*S/3),d+=x}u.push(n/d),u.push(s/d)}u.push(c),u.push(o);for(let t=0,n=0;t<h;t++)e[t][0]=u[n++],e[t][1]=u[n++]}export{u as SegmentCursor,i as closestPointOnPaths,c as pathDivide,a as pathLength,r as segmentAt,h as segmentCount,d as segmentLength,o as smoothPaths};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{pt2px as t}from"../../../../../../core/screenUtils.js";import{fromRotation as e,multiply as n,translate as i,rotate as o}from"../../../../../../core/libs/gl-matrix-2/math/mat2d.js";import{create as s}from"../../../../../../core/libs/gl-matrix-2/factories/mat2df32.js";import{transformMat2d as h,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 l,getYAnchorDirection as c}from"../../alignmentUtils.js";import{magicLabelLineHeight as d}from"../../definitions.js";import f from"../../Rect.js";import g from"../../collisions/BoundingBox.js";const u=22,m=4,p=2,y=u-6,x=Math.PI/180,w=8,b=1.5;class M{static fromGlyph(t,e,n,i,o){const{mosaicItem:s,rect:h,shaping:r,code:a}=n,l=s.rect;return new M({width:0===a?h.width:l.width*i,height:0===a?h.height:l.height*i,x:i*(t+r.xOffset+h.left),y:i*(e+r.yOffset-h.top),textureBinding:s.textureBinding,texcoords:{topLeft:[l.x,l.y],topRight:[l.x+l.width,l.y],bottomLeft:[l.x,l.y+l.height],bottomRight:[l.x+l.width,l.y+l.height]},fontSize:o?.fontSize,color:o?.color})}constructor(t){this._rotationT=s(),this._transform=s(),this._angle=0,this._bounds=null,this.width=t.width,this.height=t.height,this.x=t.x,this.y=t.y,this.textureBinding=t.textureBinding,this.texcoords=t.texcoords,this.fontSize=t.fontSize,this.color=t.color}set angle(t){this._angle=t,e(this._rotationT,-t),this._offsets=this._bounds=null}get angle(){return this._angle}get offsets(){if(!this._offsets){const{x:t,y:i,width:o,height:r}=this,a=e(s(),-this.angle),l=n(s(),a,this._transform);this._offsets={topLeft:h([0,0],[t,i],l),topRight:h([0,0],[t+o,i],l),bottomLeft:h([0,0],[t,i+r],l),bottomRight:h([0,0],[t+o,i+r],l)}}return this._offsets}get bounds(){if(this.width<=0)return null;if(!this._bounds){const t=this.offsets;let e=1/0,n=1/0,i=-1/0,o=-1/0;for(const[l,c]of[t.topLeft,t.topRight,t.bottomLeft,t.bottomRight])e=Math.min(e,l),n=Math.min(n,c),i=Math.max(i,l),o=Math.max(o,c);const s=i-e,h=o-n,r=e+s/2,a=n+h/2;this._bounds=new g(r,a,s,h)}return this._bounds}setTransform(t){this._transform=t,this._offsets=null}}const _=(t,e)=>({code:0,mosaicItem:{rect:new f(0,0,11,8),sdf:!0,page:0,textureBinding:e},rect:{height:4,width:t,left:0,top:0},shaping:{xOffset:0,yOffset:0,xAdvance:0,yAdvance:0}});function A(e){return"underline"===e?t(p):0}function v(t,e,n,i,o){switch(t){case"underline":return(n??o?.baseline??u)+m+A(t)/e;case"line-through":return i??o?.midline??y;default:return 0}}function z(t,e){return t.forEach(t=>h(t,t,e)),{topLeft:t[0],topRight:t[1],bottomLeft:t[2],bottomRight:t[3]}}class B{constructor(t,e,n,i){this._rotation=0,this._decorate(t,e,n,i),this.glyphs=t,this.bounds=this._createBounds(t),this.isMultiline=e.length>1,this._hasRotation=0!==n.angle,this._transform=this._createGlyphTransform(this.bounds,n),this._borderLineSizePx=n.borderLineSizePx,(n.borderLineSizePx||n.hasBackground)&&([this.bounds,this.textBox]=this.shapeBackground(this._transform));for(const o of t)o.setTransform(this._transform)}setRotation(t){if(0===t&&0===this._rotation)return;this._rotation=t;const i=this._transform,o=e(s(),t);n(i,o,i);for(const e of this.glyphs)e.setTransform(this._transform)}_decorate(t,e,n,i){if(!n.decoration||"none"===n.decoration||!t.length)return;const o=n.scale,s=t[0].textureBinding;for(const h of e){const e=h.scale??o,r=v(n.decoration,e,h.baseline,h.midline,i),a=h.startX*e,l=h.startY*e,c=(h.width+h.glyphWidthEnd)*e;t.push(M.fromGlyph(a,l+r*e,_(c,s),1))}}shapeBackground(t){const e=this._borderLineSizePx||0,n=(b+e)/2,i=this._borderLineSizePx?n:0,{xmin:o,ymin:s,xmax:h,ymax:r,x:a,y:l,width:c,height:d}=this.bounds,f=[o-w,s-w],u=[h+w,s-w],m=[o-w,r+w],p=[h+w,r+w],y=z([[f[0]-n,f[1]-n],[u[0]+n,u[1]-n],[f[0]+i,f[1]+i],[u[0]-i,u[1]+i]],t),x=z([[m[0]+i,m[1]-i],[p[0]-i,p[1]-i],[m[0]-n,m[1]+n],[p[0]+n,p[1]+n]],t),M=z([[f[0]-n,f[1]-n],[f[0]+i,f[1]+i],[m[0]-n,m[1]+n],[m[0]+i,m[1]-i]],t),_=z([[u[0]-i,u[1]+i],[u[0]+n,u[1]-n],[p[0]-i,p[1]-i],[p[0]+n,p[1]+n]],t),A={main:z([f,u,m,p],t),top:y,bot:x,left:M,right:_};return[new g(a,l,c+2*n,d+2*n),A]}get boundsT(){const t=this.bounds,e=r(a(),t.x,t.y);if(h(e,e,this._transform),this._hasRotation){const n=Math.max(t.width,t.height);return new g(e[0],e[1],n,n)}return new g(e[0],e[1],t.width,t.height)}_createBounds(t){let e=1/0,n=1/0,i=0,o=0;for(const r of t)e=Math.min(e,r.offsets.topLeft[0]),n=Math.min(n,r.offsets.topLeft[1]),i=Math.max(i,r.offsets.bottomRight[0]),o=Math.max(o,r.offsets.bottomRight[1]);const s=i-e,h=o-n;return new g(e+s/2,n+h/2,s,h)}_createGlyphTransform(t,e){const n=x*e.angle,h=s(),l=a();return i(h,h,r(l,e.xOffset,-e.yOffset)),e.useCIMAngleBehavior?o(h,h,n):(i(h,h,r(l,t.x,t.y)),o(h,h,n),i(h,h,r(l,-t.x,-t.y))),h}}class L{constructor(t,e,n,i,o,s){this.glyphWidthEnd=0,this.startX=0,this.startY=0,this.start=Math.max(0,Math.min(e,n)),this.end=Math.max(0,Math.max(e,n)),this.end<t.length&&(this.glyphWidthEnd=t[this.end].rect.width),this.width=i,this.yMin=o,this.yMax=s}}const R=t=>10===t,S=t=>32===t;function X(t,e,n){const i=new Array,o=1/n.scale,s=n.maxLineWidth*o,h=e?t.length-1:0,r=e?-1:t.length,a=e?-1:1;let l=h,c=0,d=0,f=l,g=f,u=0,m=1/0,p=0;for(;l!==r;){const{code:e,rect:n,shaping:o}=t[l],r=Math.abs(n.top);if(R(e)||S(e)||(m=Math.min(m,r),p=Math.max(p,r+n.height)),R(e))l!==h&&(i.push(new L(t,f,l-a,c,m===1/0?0:m,p)),m=1/0,p=0),c=0,f=l+a,g=l+a,d=0;else if(S(e))g=l+a,d=0,u=o.xAdvance,c+=o.xAdvance;else if(c>s){if(g!==f){const e=g-2*a;c-=u,i.push(new L(t,f,e,c-d,m,p)),m=1/0,p=0,f=g,c=d}else i.push(new L(t,f,l-a,c,m,p)),m=1/0,p=0,f=l,g=l,c=0;c+=o.xAdvance,d+=o.xAdvance}else c+=o.xAdvance,d+=o.xAdvance;l+=a}const y=new L(t,f,l-a,c,m,p);return y.start>=0&&y.end<t.length&&i.push(y),i}function O(t,e){let n=0;for(let s=0;s<t.length;s++){const{width:e}=t[s];n=Math.max(e,n)}const i="underline"===e.decoration?m:0,o=t[0].yMin;return{x:0,y:o,height:t[t.length-1].yMax+e.lineHeight*(t.length-1)+i-o,width:n}}function W(t,e,n){let i=0;for(let o=e;o<n;o++)S(t[o].code)&&!R(t[o+1].code)&&i++;return i}function E(t,e){const n=e.scale,i=new Array,o=t.sdfPadding,{faceInfo:s,glyphs:h,isRightToLeft:r}=t,a="justify"===e.horizontalAlignment||"Justify"===e.horizontalAlignment,d=X(h,r,e),f=d.length?O(d,e):{y:0,height:0,width:0},g=a?r?1:-1:l(e.horizontalAlignment),m=c(e.verticalAlignment),p=2===m?1:0,y=p?0:m-1,x=s?.baseline??u,w=d.length>1,b=p?w?-f.y-f.height:-x:-f.y+y*(f.height/2);for(let l=0;l<d.length;l++){const{start:s,end:r,width:c}=d[l],u=a&&l<d.length-1?W(h,s,r):0,m=u>0?(f.width-c)/u:0;let p=-1*(g+1)*((m>0?f.width:c)/2)-o;const y=(t.isRightToLeft?d.length-1-l:l)*e.lineHeight+b-o;d[l].startX=p,d[l].startY=y;for(let t=s;t<=r;t++){const e=h[t];if(R(e.code))continue;const o=M.fromGlyph(p,y,e,n);p+=e.shaping.xAdvance,m>0&&S(e.code)&&(p+=m),i.push(o)}}return new B(i,d,e,s)}function H(t,e){const n=e.scale,{faceInfo:i,glyphs:o}=t,s=o.reduce((t,e)=>Math.max(t,e.rect.height),0),h=o.map(t=>M.fromGlyph(-t.rect.width/2,-s,t,n));return new B(h,[],e,i)}function Y(t,e){return"glyphs"===t.type?E(t,e):I(t,e)}function j(t,e){return"glyphs"===t.type?H(t,e):T(t,e)}function I(t,e){const n=G(t,e),i=P(n,e),o=i.length?J(i):{width:0},s=new Array,h="underline"===e.decoration?"none":e.decoration,r="justify"===e.horizontalAlignment||"Justify"===e.horizontalAlignment,a=r?-1:l(e.horizontalAlignment),d=c(e.verticalAlignment),f=2===d,g=i.length?i[0].yMin:0,u=i.length?U(i[i.length-1]):0,m=u-g,p=f?i.length>1?-u:-(i[0]?.baseline??0):1===d?-g:-1===d?-u:-(g+m/2);for(let l=0;l<i.length;l++){const t=i[l],e=r&&l<i.length-1?C(n,t.start,t.end):0,h=e>0?(o.width-t.width)/e:0;let c=-1*(a+1)*((h>0?o.width:t.width)/2);const d=t.startY+p;let f=null;t.startX=c,t.startY=d;for(let i=t.start;i<=t.end;i++){const e=n[i],{glyph:o,scale:r,fontSize:a}=e,l=c;if(R(o.code)){f=q(s,f,d,t.baseline);continue}("underline"!==e.decoration||f&&f.underlineOffset!==e.underlineOffset||f&&!D(f.color,e.color))&&(f=q(s,f,d,t.baseline));const g=d+t.baseline-e.baseline;s.push(M.fromGlyph(c/r,g/r,o,r,{fontSize:a,color:e.color})),c+=e.xAdvance,"underline"===e.decoration&&(f??={startX:l,endX:c,glyphWidthEnd:o.rect.width*r,textureBinding:o.mosaicItem.textureBinding,underlineOffset:e.underlineOffset,color:e.color},f.endX=c,f.glyphWidthEnd=o.rect.width*r,f.textureBinding=f.textureBinding??o.mosaicItem.textureBinding),h>0&&S(o.code)&&(c+=h,f&&(f.endX=c))}q(s,f,d,t.baseline)}return new B(s,i,{...e,decoration:h})}function T(t,e){const n=G(t,e),i=n.reduce((t,e)=>Math.max(t,e.glyph.rect.height*e.scale),0),o=n.filter(t=>!R(t.glyph.code)).map(t=>M.fromGlyph(-t.glyph.rect.width/2,-i/t.scale,t.glyph,t.scale,{fontSize:t.fontSize,color:t.color}));return new B(o,[],e)}function G(e,n){const i=n.lineHeightRatio??1,o=[];for(const s of e.runs){const e=t(s.fontSize),n=e/s.glyphs.sdfSize,h=e*(d/24)*i,r=(s.glyphs.faceInfo?.baseline??u)*n,a=(s.glyphs.faceInfo?.midline??y)*n,l=m*n+A(s.decoration),c=1+(s.characterSpacing??0);for(const t of s.glyphs.glyphs){const i=t.shaping.xAdvance*n,d=Math.abs(t.rect.top)*n,f=d+t.rect.height*n;o.push({glyph:t,scale:n,fontSize:e,decoration:s.decoration,underlineOffset:l,color:s.color,xAdvance:R(t.code)||S(t.code)?i:i*c,top:d,bottom:f,lineHeight:h,baseline:r,midline:a})}}return o}function P(t,e){const n=[],i=e.maxLineWidth;let o=0,s=0,h=0,r=0,a=0,l=0;for(;o<t.length;){const e=t[o],{glyph:c}=e;if(R(c.code))0!==o&&n.push({width:s,start:r,end:o-1,glyphWidthEnd:t[o-1]?.glyph.rect.width*t[o-1]?.scale||0,yMin:0,yMax:0,lineHeight:0,baseline:0,midline:0,startX:0,startY:0,scale:1}),s=0,r=o+1,a=r,h=0,l=0;else if(S(c.code))a=o+1,h=0,l=e.xAdvance,s+=e.xAdvance;else if(s>i){if(a!==r){const e=a-2;s-=l,n.push({width:s-h,start:r,end:e,glyphWidthEnd:t[e]?.glyph.rect.width*t[e]?.scale||0,yMin:0,yMax:0,lineHeight:0,baseline:0,midline:0,startX:0,startY:0,scale:1}),r=a,s=h}else n.push({width:s,start:r,end:o-1,glyphWidthEnd:t[o-1]?.glyph.rect.width*t[o-1]?.scale||0,yMin:0,yMax:0,lineHeight:0,baseline:0,midline:0,startX:0,startY:0,scale:1}),r=o,a=o,s=0;s+=e.xAdvance,h+=e.xAdvance}else s+=e.xAdvance,h+=e.xAdvance;o++}if(r<t.length){const e=t.length-1;n.push({width:s,start:r,end:e,glyphWidthEnd:t[e]?.glyph.rect.width*t[e]?.scale||0,yMin:0,yMax:0,lineHeight:0,baseline:0,midline:0,startX:0,startY:0,scale:1})}return k(t,n)}function k(t,e){for(let n=0;n<e.length;n++){const i=e[n];let o=0,s=1/0,h=0,r=0;for(let e=i.start;e<=i.end;e++){const n=t[e];"underline"===n.decoration&&(r=Math.max(r,n.underlineOffset)),R(n.glyph.code)||S(n.glyph.code)||(o=Math.max(o,n.baseline),h=Math.max(h,n.lineHeight))}let a=1/0,l=-1/0;for(let e=i.start;e<=i.end;e++){const n=t[e];R(n.glyph.code)||S(n.glyph.code)||(a=Math.min(a,o-n.baseline+n.top),l=Math.max(l,o-n.baseline+n.bottom),s=Math.min(s,o-n.baseline+n.midline))}r>0&&(l=Math.max(l,o+r)),i.baseline=o,i.midline=s===1/0?o:s,i.lineHeight=Math.max(h,l),i.yMin=a===1/0?0:a,i.yMax=l===-1/0?0:l,i.startY=n>0?e[n-1].startY+e[n-1].lineHeight:0}return e}function J(t){let e=0;for(const i of t)e=Math.max(i.width+i.glyphWidthEnd,e);const n=t[0].yMin;return{x:0,y:n,height:U(t[t.length-1])-n,width:e}}function U(t){return t.startY+t.lineHeight}function C(t,e,n){let i=0;for(let o=e;o<n;o++)S(t[o].glyph.code)&&!R(t[o+1].glyph.code)&&i++;return i}function q(t,e,n,i){return e?(t.push(M.fromGlyph(e.startX,n+i+e.underlineOffset,_(e.endX-e.startX+e.glyphWidthEnd,e.textureBinding),1,{color:e.color})),null):null}function D(t,e){return t===e||!!t&&!!e&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]}export{M as ShapedGlyph,B as ShapingInfo,E as shapeGlyphs,H as shapeGlyphsForMultipoint,I as shapeRichText,T as shapeRichTextForMultipoint,Y as shapeTextResource,j as shapeTextResourceForMultipoint};
2
+ import{pt2px as t}from"../../../../../../core/screenUtils.js";import{fromRotation as e,multiply as n,translate as i,rotate as o}from"../../../../../../core/libs/gl-matrix-2/math/mat2d.js";import{create as s}from"../../../../../../core/libs/gl-matrix-2/factories/mat2df32.js";import{transformMat2d as h,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 l,getYAnchorDirection as c}from"../../alignmentUtils.js";import{magicLabelLineHeight as d}from"../../definitions.js";import f from"../../Rect.js";import g from"../../collisions/BoundingBox.js";const u=22,m=4,p=2,y=u-6,x=Math.PI/180,w=8,b=1.5;class M{static fromGlyph(t,e,n,i,o){const{mosaicItem:s,rect:h,shaping:r,code:a}=n,l=s.rect;return new M({width:0===a?h.width:l.width*i,height:0===a?h.height:l.height*i,x:i*(t+r.xOffset+h.left),y:i*(e+r.yOffset-h.top),textureBinding:s.textureBinding,texcoords:{topLeft:[l.x,l.y],topRight:[l.x+l.width,l.y],bottomLeft:[l.x,l.y+l.height],bottomRight:[l.x+l.width,l.y+l.height]},fontSize:o?.fontSize,color:o?.color})}constructor(t){this._rotationT=s(),this._transform=s(),this._angle=0,this._bounds=null,this.width=t.width,this.height=t.height,this.x=t.x,this.y=t.y,this.textureBinding=t.textureBinding,this.texcoords=t.texcoords,this.fontSize=t.fontSize,this.color=t.color}set angle(t){this._angle=t,e(this._rotationT,-t),this._offsets=this._bounds=null}get angle(){return this._angle}get offsets(){if(!this._offsets){const{x:t,y:i,width:o,height:r}=this,a=e(s(),-this.angle),l=n(s(),a,this._transform);this._offsets={topLeft:h([0,0],[t,i],l),topRight:h([0,0],[t+o,i],l),bottomLeft:h([0,0],[t,i+r],l),bottomRight:h([0,0],[t+o,i+r],l)}}return this._offsets}get bounds(){if(this.width<=0)return null;if(!this._bounds){const t=this.offsets;let e=1/0,n=1/0,i=-1/0,o=-1/0;for(const[l,c]of[t.topLeft,t.topRight,t.bottomLeft,t.bottomRight])e=Math.min(e,l),n=Math.min(n,c),i=Math.max(i,l),o=Math.max(o,c);const s=i-e,h=o-n,r=e+s/2,a=n+h/2;this._bounds=new g(r,a,s,h)}return this._bounds}setTransform(t){this._transform=t,this._offsets=null}}const _=(t,e)=>({code:0,mosaicItem:{rect:new f(0,0,11,8),sdf:!0,page:0,textureBinding:e},rect:{height:4,width:t,left:0,top:0},shaping:{xOffset:0,yOffset:0,xAdvance:0,yAdvance:0}});function A(e){return"underline"===e?t(p):0}function v(t,e,n,i,o){switch(t){case"underline":return(n??o?.baseline??u)+m+A(t)/e;case"line-through":return i??o?.midline??y;default:return 0}}function B(t,e){return t.forEach(t=>h(t,t,e)),{topLeft:t[0],topRight:t[1],bottomLeft:t[2],bottomRight:t[3]}}class z{constructor(t,e,n,i){this._rotation=0,this._decorate(t,e,n,i),this.glyphs=t,this.bounds=this._createBounds(t),this.isMultiline=e.length>1,this._hasRotation=0!==n.angle,this._transform=this._createGlyphTransform(this.bounds,n),this._borderLineSizePx=n.borderLineSizePx,(n.borderLineSizePx||n.hasBackground)&&([this.bounds,this.textBox]=this.shapeBackground(this._transform));for(const o of t)o.setTransform(this._transform)}setRotation(t){if(0===t&&0===this._rotation)return;this._rotation=t;const i=this._transform,o=e(s(),t);n(i,o,i);for(const e of this.glyphs)e.setTransform(this._transform)}_decorate(t,e,n,i){if(!n.decoration||"none"===n.decoration||!t.length)return;const o=n.scale,s=t[0].textureBinding;for(const h of e){const e=h.scale??o,r=v(n.decoration,e,h.baseline,h.midline,i),a=h.startX*e,l=h.startY*e,c=(h.width+h.glyphWidthEnd)*e;t.push(M.fromGlyph(a,l+r*e,_(c,s),1))}}shapeBackground(t){const e=this._borderLineSizePx||0,n=(b+e)/2,i=this._borderLineSizePx?n:0,{xmin:o,ymin:s,xmax:h,ymax:r,x:a,y:l,width:c,height:d}=this.bounds,f=[o-w,s-w],u=[h+w,s-w],m=[o-w,r+w],p=[h+w,r+w],y=B([[f[0]-n,f[1]-n],[u[0]+n,u[1]-n],[f[0]+i,f[1]+i],[u[0]-i,u[1]+i]],t),x=B([[m[0]+i,m[1]-i],[p[0]-i,p[1]-i],[m[0]-n,m[1]+n],[p[0]+n,p[1]+n]],t),M=B([[f[0]-n,f[1]-n],[f[0]+i,f[1]+i],[m[0]-n,m[1]+n],[m[0]+i,m[1]-i]],t),_=B([[u[0]-i,u[1]+i],[u[0]+n,u[1]-n],[p[0]-i,p[1]-i],[p[0]+n,p[1]+n]],t),A={main:B([f,u,m,p],t),top:y,bot:x,left:M,right:_};return[new g(a,l,c+2*n,d+2*n),A]}get boundsT(){const t=this.bounds,e=r(a(),t.x,t.y);if(h(e,e,this._transform),this._hasRotation){const n=Math.max(t.width,t.height);return new g(e[0],e[1],n,n)}return new g(e[0],e[1],t.width,t.height)}_createBounds(t){let e=1/0,n=1/0,i=0,o=0;for(const r of t)e=Math.min(e,r.offsets.topLeft[0]),n=Math.min(n,r.offsets.topLeft[1]),i=Math.max(i,r.offsets.bottomRight[0]),o=Math.max(o,r.offsets.bottomRight[1]);const s=i-e,h=o-n;return new g(e+s/2,n+h/2,s,h)}_createGlyphTransform(t,e){const n=x*e.angle,h=s(),l=a();return i(h,h,r(l,e.xOffset,-e.yOffset)),e.useCIMAngleBehavior?o(h,h,n):(i(h,h,r(l,t.x,t.y)),o(h,h,n),i(h,h,r(l,-t.x,-t.y))),h}}class L{constructor(t,e,n,i,o,s){this.glyphWidthEnd=0,this.startX=0,this.startY=0,this.start=Math.max(0,Math.min(e,n)),this.end=Math.max(0,Math.max(e,n)),this.end<t.length&&(this.glyphWidthEnd=t[this.end].rect.width),this.width=i,this.yMin=o,this.yMax=s}}const R=t=>10===t,S=t=>32===t;function X(t,e,n){const i=new Array,o=1/n.scale,s=n.maxLineWidth*o,h=e?t.length-1:0,r=e?-1:t.length,a=e?-1:1;let l=h,c=0,d=0,f=l,g=f,u=0,m=1/0,p=0;for(;l!==r;){const{code:e,rect:n,shaping:o}=t[l],r=Math.abs(n.top);if(R(e)||S(e)||(m=Math.min(m,r),p=Math.max(p,r+n.height)),R(e))l!==h&&(i.push(new L(t,f,l-a,c,m===1/0?0:m,p)),m=1/0,p=0),c=0,f=l+a,g=l+a,d=0;else if(S(e))g=l+a,d=0,u=o.xAdvance,c+=o.xAdvance;else if(c>s){if(g!==f){const e=g-2*a;c-=u,i.push(new L(t,f,e,c-d,m,p)),m=1/0,p=0,f=g,c=d}else i.push(new L(t,f,l-a,c,m,p)),m=1/0,p=0,f=l,g=l,c=0;c+=o.xAdvance,d+=o.xAdvance}else c+=o.xAdvance,d+=o.xAdvance;l+=a}const y=new L(t,f,l-a,c,m,p);return y.start>=0&&y.end<t.length&&i.push(y),i}function O(t,e){let n=0;for(let s=0;s<t.length;s++){const{width:e}=t[s];n=Math.max(e,n)}const i="underline"===e.decoration?m:0,o=t[0].yMin;return{x:0,y:o,height:t[t.length-1].yMax+e.lineHeight*(t.length-1)+i-o,width:n}}function W(t,e,n){let i=0;for(let o=e;o<n;o++)S(t[o].code)&&!R(t[o+1].code)&&i++;return i}function E(t,e){const n=e.scale,i=new Array,o=t.sdfPadding,{faceInfo:s,glyphs:h,isRightToLeft:r}=t,a="justify"===e.horizontalAlignment||"Justify"===e.horizontalAlignment,d=X(h,r,e),f=d.length?O(d,e):{y:0,height:0,width:0},g=a?r?1:-1:l(e.horizontalAlignment),m=c(e.verticalAlignment),p=2===m?1:0,y=p?0:m-1,x=s?.baseline??u,w=d.length>1,b=p?w?-f.y-f.height:-x:-f.y+y*(f.height/2);for(let l=0;l<d.length;l++){const{start:s,end:r,width:c}=d[l],u=a&&l<d.length-1?W(h,s,r):0,m=u>0?(f.width-c)/u:0;let p=-1*(g+1)*((m>0?f.width:c)/2)-o;const y=(t.isRightToLeft?d.length-1-l:l)*e.lineHeight+b-o;d[l].startX=p,d[l].startY=y;for(let t=s;t<=r;t++){const e=h[t];if(R(e.code))continue;const o=M.fromGlyph(p,y,e,n);p+=e.shaping.xAdvance,m>0&&S(e.code)&&(p+=m),i.push(o)}}return new z(i,d,e,s)}function H(t,e){const n=e.scale,{faceInfo:i,glyphs:o}=t,s=o.reduce((t,e)=>Math.max(t,e.rect.height),0),h=o.filter(t=>!R(t.code)&&t.mosaicItem.textureBinding).map(t=>M.fromGlyph(-t.rect.width/2,-s,t,n));return new z(h,[],e,i)}function I(t,e){return"glyphs"===t.type?E(t,e):j(t,e)}function Y(t,e){return"glyphs"===t.type?H(t,e):T(t,e)}function j(t,e){const n=G(t,e),i=P(n,e),o=i.length?J(i):{width:0},s=new Array,h="underline"===e.decoration?"none":e.decoration,r="justify"===e.horizontalAlignment||"Justify"===e.horizontalAlignment,a=r?-1:l(e.horizontalAlignment),d=c(e.verticalAlignment),f=2===d,g=i.length?i[0].yMin:0,u=i.length?U(i[i.length-1]):0,m=u-g,p=f?i.length>1?-u:-(i[0]?.baseline??0):1===d?-g:-1===d?-u:-(g+m/2);for(let l=0;l<i.length;l++){const t=i[l],e=r&&l<i.length-1?C(n,t.start,t.end):0,h=e>0?(o.width-t.width)/e:0;let c=-1*(a+1)*((h>0?o.width:t.width)/2);const d=t.startY+p;let f=null;t.startX=c,t.startY=d;for(let i=t.start;i<=t.end;i++){const e=n[i],{glyph:o,scale:r,fontSize:a}=e,l=c;if(R(o.code)){f=q(s,f,d,t.baseline);continue}("underline"!==e.decoration||f&&f.underlineOffset!==e.underlineOffset||f&&!D(f.color,e.color))&&(f=q(s,f,d,t.baseline));const g=d+t.baseline-e.baseline;s.push(M.fromGlyph(c/r,g/r,o,r,{fontSize:a,color:e.color})),c+=e.xAdvance,"underline"===e.decoration&&(f??={startX:l,endX:c,glyphWidthEnd:o.rect.width*r,textureBinding:o.mosaicItem.textureBinding,underlineOffset:e.underlineOffset,color:e.color},f.endX=c,f.glyphWidthEnd=o.rect.width*r,f.textureBinding=f.textureBinding??o.mosaicItem.textureBinding),h>0&&S(o.code)&&(c+=h,f&&(f.endX=c))}q(s,f,d,t.baseline)}return new z(s,i,{...e,decoration:h})}function T(t,e){const n=G(t,e),i=n.reduce((t,e)=>Math.max(t,e.glyph.rect.height*e.scale),0),o=n.filter(t=>!R(t.glyph.code)&&t.glyph.mosaicItem.textureBinding).map(t=>M.fromGlyph(-t.glyph.rect.width/2,-i/t.scale,t.glyph,t.scale,{fontSize:t.fontSize,color:t.color}));return new z(o,[],e)}function G(e,n){const i=n.lineHeightRatio??1,o=[];for(const s of e.runs){const e=t(s.fontSize),n=e/s.glyphs.sdfSize,h=e*(d/24)*i,r=(s.glyphs.faceInfo?.baseline??u)*n,a=(s.glyphs.faceInfo?.midline??y)*n,l=m*n+A(s.decoration),c=1+(s.characterSpacing??0);for(const t of s.glyphs.glyphs){const i=t.shaping.xAdvance*n,d=Math.abs(t.rect.top)*n,f=d+t.rect.height*n;o.push({glyph:t,scale:n,fontSize:e,decoration:s.decoration,underlineOffset:l,color:s.color,xAdvance:R(t.code)||S(t.code)?i:i*c,top:d,bottom:f,lineHeight:h,baseline:r,midline:a})}}return o}function P(t,e){const n=[],i=e.maxLineWidth;let o=0,s=0,h=0,r=0,a=0,l=0;for(;o<t.length;){const e=t[o],{glyph:c}=e;if(R(c.code))0!==o&&n.push({width:s,start:r,end:o-1,glyphWidthEnd:t[o-1]?.glyph.rect.width*t[o-1]?.scale||0,yMin:0,yMax:0,lineHeight:0,baseline:0,midline:0,startX:0,startY:0,scale:1}),s=0,r=o+1,a=r,h=0,l=0;else if(S(c.code))a=o+1,h=0,l=e.xAdvance,s+=e.xAdvance;else if(s>i){if(a!==r){const e=a-2;s-=l,n.push({width:s-h,start:r,end:e,glyphWidthEnd:t[e]?.glyph.rect.width*t[e]?.scale||0,yMin:0,yMax:0,lineHeight:0,baseline:0,midline:0,startX:0,startY:0,scale:1}),r=a,s=h}else n.push({width:s,start:r,end:o-1,glyphWidthEnd:t[o-1]?.glyph.rect.width*t[o-1]?.scale||0,yMin:0,yMax:0,lineHeight:0,baseline:0,midline:0,startX:0,startY:0,scale:1}),r=o,a=o,s=0;s+=e.xAdvance,h+=e.xAdvance}else s+=e.xAdvance,h+=e.xAdvance;o++}if(r<t.length){const e=t.length-1;n.push({width:s,start:r,end:e,glyphWidthEnd:t[e]?.glyph.rect.width*t[e]?.scale||0,yMin:0,yMax:0,lineHeight:0,baseline:0,midline:0,startX:0,startY:0,scale:1})}return k(t,n)}function k(t,e){for(let n=0;n<e.length;n++){const i=e[n];let o=0,s=1/0,h=0,r=0;for(let e=i.start;e<=i.end;e++){const n=t[e];"underline"===n.decoration&&(r=Math.max(r,n.underlineOffset)),R(n.glyph.code)||S(n.glyph.code)||(o=Math.max(o,n.baseline),h=Math.max(h,n.lineHeight))}let a=1/0,l=-1/0;for(let e=i.start;e<=i.end;e++){const n=t[e];R(n.glyph.code)||S(n.glyph.code)||(a=Math.min(a,o-n.baseline+n.top),l=Math.max(l,o-n.baseline+n.bottom),s=Math.min(s,o-n.baseline+n.midline))}r>0&&(l=Math.max(l,o+r)),i.baseline=o,i.midline=s===1/0?o:s,i.lineHeight=Math.max(h,l),i.yMin=a===1/0?0:a,i.yMax=l===-1/0?0:l,i.startY=n>0?e[n-1].startY+e[n-1].lineHeight:0}return e}function J(t){let e=0;for(const i of t)e=Math.max(i.width+i.glyphWidthEnd,e);const n=t[0].yMin;return{x:0,y:n,height:U(t[t.length-1])-n,width:e}}function U(t){return t.startY+t.lineHeight}function C(t,e,n){let i=0;for(let o=e;o<n;o++)S(t[o].glyph.code)&&!R(t[o+1].glyph.code)&&i++;return i}function q(t,e,n,i){return e?(t.push(M.fromGlyph(e.startX,n+i+e.underlineOffset,_(e.endX-e.startX+e.glyphWidthEnd,e.textureBinding),1,{color:e.color})),null):null}function D(t,e){return t===e||!!t&&!!e&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]}export{M as ShapedGlyph,z as ShapingInfo,E as shapeGlyphs,H as shapeGlyphsForMultipoint,j as shapeRichText,T as shapeRichTextForMultipoint,I as shapeTextResource,Y as shapeTextResourceForMultipoint};