@arcgis/core 4.23.0-next.20220131 → 4.23.0-next.20220205

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 (402) hide show
  1. package/Graphic.js +1 -1
  2. package/TimeExtent.js +1 -1
  3. package/assets/components/assets/calcite-date-picker/nls/pt-BR.json +31 -0
  4. package/assets/components/assets/calcite-date-picker/nls/pt-PT.json +3 -3
  5. package/assets/components/assets/calcite-icon/clipboard16.json +1 -0
  6. package/assets/components/assets/calcite-icon/clipboard24.json +1 -0
  7. package/assets/components/assets/calcite-icon/clipboard32.json +1 -0
  8. package/assets/components/assets/calcite-icon/folders16.json +1 -0
  9. package/assets/components/assets/calcite-icon/folders24.json +1 -0
  10. package/assets/components/assets/calcite-icon/folders32.json +1 -0
  11. package/assets/components/assets/calcite-icon/initiative16.json +1 -0
  12. package/assets/components/assets/calcite-icon/initiative24.json +1 -0
  13. package/assets/components/assets/calcite-icon/initiative32.json +1 -0
  14. package/assets/components/assets/calcite-icon/initiativeTemplate16.json +1 -0
  15. package/assets/components/assets/calcite-icon/initiativeTemplate24.json +1 -0
  16. package/assets/components/assets/calcite-icon/initiativeTemplate32.json +1 -0
  17. package/assets/components/assets/calcite-icon/multipleVariables16.json +1 -0
  18. package/assets/components/assets/calcite-icon/multipleVariables24.json +1 -0
  19. package/assets/components/assets/calcite-icon/multipleVariables32.json +1 -0
  20. package/assets/components/assets/calcite-icon/paletteCheck16.json +1 -0
  21. package/assets/components/assets/calcite-icon/paletteCheck24.json +1 -0
  22. package/assets/components/assets/calcite-icon/paletteCheck32.json +1 -0
  23. package/assets/components/assets/calcite-icon/pentagon16.json +1 -0
  24. package/assets/components/assets/calcite-icon/pentagon24.json +1 -0
  25. package/assets/components/assets/calcite-icon/pentagon32.json +1 -0
  26. package/assets/components/assets/calcite-icon/puzzlePiece16.json +1 -0
  27. package/assets/components/assets/calcite-icon/puzzlePiece24.json +1 -0
  28. package/assets/components/assets/calcite-icon/puzzlePiece32.json +1 -0
  29. package/assets/components/assets/calcite-icon/ribbonRosette16.json +1 -0
  30. package/assets/components/assets/calcite-icon/ribbonRosette24.json +1 -0
  31. package/assets/components/assets/calcite-icon/ribbonRosette32.json +1 -0
  32. package/assets/components/assets/calcite-icon/speechBubbleExclamation16.json +1 -0
  33. package/assets/components/assets/calcite-icon/speechBubbleExclamation24.json +1 -0
  34. package/assets/components/assets/calcite-icon/speechBubbleExclamation32.json +1 -0
  35. package/assets/components/assets/calcite-icon/survey16.json +1 -0
  36. package/assets/components/assets/calcite-icon/survey24.json +1 -0
  37. package/assets/components/assets/calcite-icon/survey32.json +1 -0
  38. package/assets/esri/core/workers/RemoteClient.js +1 -1
  39. package/assets/esri/core/workers/chunks/{7a5f5acfbd4ca1a5c1f3.js → 06116433eb6e669f146b.js} +1 -1
  40. package/assets/esri/core/workers/chunks/0a4401a148c3cb73d6ff.js +1 -0
  41. package/assets/esri/core/workers/chunks/{83d00afae4406ec78bc9.js → 0c6be307709523eb8a05.js} +1 -1
  42. package/assets/esri/core/workers/chunks/{e0c8d61c7a85ce15499a.js → 0d9adefd00c44585be2e.js} +1 -1
  43. package/assets/esri/core/workers/chunks/{44f0c3663b293afbd172.js → 0e09691edb44641de5f0.js} +1 -1
  44. package/assets/esri/core/workers/chunks/0e215fa28a0448169132.js +1 -0
  45. package/assets/esri/core/workers/chunks/{391e96192d1ec4e55ce2.js → 101b4f02f0572afb666f.js} +1 -1
  46. package/assets/esri/core/workers/chunks/{db3c729ce0c0b2690dc9.js → 1180ffd523c6292bc04e.js} +1 -1
  47. package/assets/esri/core/workers/chunks/{826c983100569586b61f.js → 1571e8213feb518ff100.js} +1 -1
  48. package/assets/esri/core/workers/chunks/{929c9b7cdab7c4ca3d87.js → 17c51f5a13f471e6656a.js} +1 -1
  49. package/assets/esri/core/workers/chunks/{37c03cfc19086ce631c6.js → 18a8b9e2f6bd89827189.js} +1 -1
  50. package/assets/esri/core/workers/chunks/{ed0bcc66fb1e0ee75a4b.js → 1f34957ef42e5b5977d0.js} +1 -1
  51. package/assets/esri/core/workers/chunks/236de5f0476f6080ee62.js +1 -0
  52. package/assets/esri/core/workers/chunks/288ca064cd0472439276.js +1 -0
  53. package/assets/esri/core/workers/chunks/29aa6046534a43d7ce19.js +1 -0
  54. package/assets/esri/core/workers/chunks/2e1291cd831592216446.js +1 -0
  55. package/assets/esri/core/workers/chunks/{68a59ce98177d8513337.js → 3403cb53e4e60923c5fc.js} +1 -1
  56. package/assets/esri/core/workers/chunks/34bed896b68993cabaa1.js +1 -0
  57. package/assets/esri/core/workers/chunks/{99619fcb772807c74f3b.js → 444829a840b8ded16fd7.js} +1 -1
  58. package/assets/esri/core/workers/chunks/467b5faa1c90d9821609.js +1 -0
  59. package/assets/esri/core/workers/chunks/49353182a16218a84251.js +1 -0
  60. package/assets/esri/core/workers/chunks/{fc046a15466c25d081ff.js → 4a2e93b12d60e8d92491.js} +1 -1
  61. package/assets/esri/core/workers/chunks/4de996ebc432f5e149bc.js +1 -0
  62. package/assets/esri/core/workers/chunks/50976921acf7bd636123.js +1 -0
  63. package/assets/esri/core/workers/chunks/5144ef135e0deb48c7bf.js +1 -0
  64. package/assets/esri/core/workers/chunks/584bbb675ed225f68171.js +1 -0
  65. package/assets/esri/core/workers/chunks/5a90d121ba79613cc2aa.js +1 -0
  66. package/assets/esri/core/workers/chunks/5b286f3f3deea10bdd91.js +1 -0
  67. package/assets/esri/core/workers/chunks/{0463ba46df855a92b9c0.js → 65ccd204ec3053687a77.js} +1 -1
  68. package/assets/esri/core/workers/chunks/{1f8c6a179e39fd4c5e6f.js → 6a2b8d6a9bada45ab66d.js} +1 -1
  69. package/assets/esri/core/workers/chunks/6be326edd9829781d926.js +1 -0
  70. package/assets/esri/core/workers/chunks/6ea99a6e21b09674f6b3.js +1 -0
  71. package/assets/esri/core/workers/chunks/{5bcb3240b3c005e5fe72.js → 7215af7810d15e89aa5a.js} +1 -1
  72. package/assets/esri/core/workers/chunks/7509c1693ffedc0fa018.js +1 -0
  73. package/assets/esri/core/workers/chunks/7b0b75878370b3475fe5.js +1 -0
  74. package/assets/esri/core/workers/chunks/{bfedd6ebff817c9b31c0.js → 7b618c449d793aacd874.js} +1 -1
  75. package/assets/esri/core/workers/chunks/{2460f3b6ada6ae900dec.js → 7c0ff01f081c7e9050d2.js} +1 -1
  76. package/assets/esri/core/workers/chunks/806a7db0084214a53c79.js +1 -0
  77. package/assets/esri/core/workers/chunks/{8fa0a14165d43ffe87a5.js → 8325b577f52936f86cff.js} +1 -1
  78. package/assets/esri/core/workers/chunks/84d8e77d78d0d5134083.js +1 -0
  79. package/assets/esri/core/workers/chunks/{dd13772a5e2eccc6a2bc.js → 8598f762f15ca68d52b7.js} +1 -1
  80. package/assets/esri/core/workers/chunks/85b1ae51da3689bccf92.js +1 -0
  81. package/assets/esri/core/workers/chunks/873b0cbd343dc71755ed.js +1 -0
  82. package/assets/esri/core/workers/chunks/8804b8489eeab888275b.js +1 -0
  83. package/assets/esri/core/workers/chunks/{5ec98f4ddac707d0fbd1.js → 88815d533808aabb1fa9.js} +1 -1
  84. package/assets/esri/core/workers/chunks/8c8c0ecdf44fdbb56000.js +1 -0
  85. package/assets/esri/core/workers/chunks/{f2124f4d0f2b8a91f0ea.js → 90c5edcd8a609224ce55.js} +1 -1
  86. package/assets/esri/core/workers/chunks/{bac9fc90e6756e211160.js → 94d9951509c0db09547a.js} +1 -1
  87. package/assets/esri/core/workers/chunks/996d6ae7f2e2273f9bce.js +1 -0
  88. package/assets/esri/core/workers/chunks/{c1135cb02ec46c491459.js → 9ce961bc390202c87941.js} +1 -1
  89. package/assets/esri/core/workers/chunks/9fbc7d2e0326be41b382.js +1 -0
  90. package/assets/esri/core/workers/chunks/a363fb40096679b011f6.js +1 -0
  91. package/assets/esri/core/workers/chunks/a41522b0a853b85c8269.js +1 -0
  92. package/assets/esri/core/workers/chunks/a763c11d2b02b3ec36ad.js +1 -0
  93. package/assets/esri/core/workers/chunks/{aeaa1667c2d9f1b3366b.js → a85ed251d3d3668e474f.js} +1 -1
  94. package/assets/esri/core/workers/chunks/{69fd99b7c76e9992ccf3.js → b32bf9808cb4be3a6bd0.js} +1 -1
  95. package/assets/esri/core/workers/chunks/b33a6fbbc8de2969b1ca.js +1 -0
  96. package/assets/esri/core/workers/chunks/b548e6b3add4154ac4e6.js +1 -0
  97. package/assets/esri/core/workers/chunks/b6c55bdd8c957b062bc1.js +1 -0
  98. package/assets/esri/core/workers/chunks/b90509b2088fd444fc39.js +1 -0
  99. package/assets/esri/core/workers/chunks/{b9e9cb354822c6d995a4.js → bea473dba8e57617a71d.js} +1 -1
  100. package/assets/esri/core/workers/chunks/{0d02c6ad1f4688bfa374.js → bf7c44644fe7b0aa60cf.js} +1 -1
  101. package/assets/esri/core/workers/chunks/c1a70f025e90d97fac6d.js +1 -0
  102. package/assets/esri/core/workers/chunks/{d72488db62fcf39447b6.js → c23d965a55215168a1a2.js} +1 -1
  103. package/assets/esri/core/workers/chunks/c3192cfe115ce354ffbc.js +1 -0
  104. package/assets/esri/core/workers/chunks/c3d768801f2f6cb9d5d0.js +1 -0
  105. package/assets/esri/core/workers/chunks/d09a0b2dc3a6fc10fa41.js +1 -0
  106. package/assets/esri/core/workers/chunks/d21526570300597aa6ae.js +1 -0
  107. package/assets/esri/core/workers/chunks/d2ffb0f21363c0d3d2a9.js +1 -0
  108. package/assets/esri/core/workers/chunks/{ec10151a2a95e95a0bb5.js → d304fe0ac836afd46e3d.js} +1 -1
  109. package/assets/esri/core/workers/chunks/{37a7bd30352b1309b8f8.js → d3f05b8e4bd53eb1eb9d.js} +1 -1
  110. package/assets/esri/core/workers/chunks/{17de7a324dfa7f57ad5d.js → d780e946149b1c3d1246.js} +1 -1
  111. package/assets/esri/core/workers/chunks/dc037f1496bb4aa40d10.js +1 -0
  112. package/assets/esri/core/workers/chunks/{8cbb04a9065aa3756638.js → dc04a8ba6c770bdc2bd4.js} +1 -1
  113. package/assets/esri/core/workers/chunks/dd5a71818a989a6edb00.js +1 -0
  114. package/assets/esri/core/workers/chunks/{89820b200ee44e678af5.js → dd891a98105904f8a06b.js} +1 -1
  115. package/assets/esri/core/workers/chunks/e17edd48179d41ddf1e7.js +1 -0
  116. package/assets/esri/core/workers/chunks/e323086de328a164f7f0.js +1 -0
  117. package/assets/esri/core/workers/chunks/ea50a6a994e5ee578d97.js +1 -0
  118. package/assets/esri/core/workers/chunks/{655b55ac0cd533d7e9d7.js → ecf074743183c1749581.js} +1 -1
  119. package/assets/esri/core/workers/chunks/f067b4fc65b835437afd.js +1 -0
  120. package/assets/esri/core/workers/chunks/f0e5c82e9c4fbe3c9d0a.js +1 -0
  121. package/assets/esri/core/workers/chunks/f96b24c075771d028e20.js +1 -0
  122. package/assets/esri/core/workers/chunks/{5790d171072b3c7d108f.js → f9a6de00c628538f07f6.js} +1 -1
  123. package/assets/esri/core/workers/chunks/{2c607d30ff8ca1b61286.js → fe0c3b7c9b428d9c3f25.js} +1 -1
  124. package/assets/esri/core/workers/chunks/{49a1a633bb0d93764aae.js → fffea9587ec14c6d34e8.js} +1 -1
  125. package/assets/esri/themes/base/_mixins.scss +1 -1
  126. package/assets/esri/themes/base/widgets/_Directions.scss +0 -6
  127. package/assets/esri/themes/base/widgets/_Legend.scss +8 -7
  128. package/assets/esri/themes/dark/main.css +1 -1
  129. package/assets/esri/themes/dark-blue/main.css +1 -1
  130. package/assets/esri/themes/dark-green/main.css +1 -1
  131. package/assets/esri/themes/dark-purple/main.css +1 -1
  132. package/assets/esri/themes/dark-red/main.css +1 -1
  133. package/assets/esri/themes/light/main.css +1 -1
  134. package/assets/esri/themes/light/view.css +1 -1
  135. package/assets/esri/themes/light-blue/main.css +1 -1
  136. package/assets/esri/themes/light-green/main.css +1 -1
  137. package/assets/esri/themes/light-purple/main.css +1 -1
  138. package/assets/esri/themes/light-red/main.css +1 -1
  139. package/assets/esri/widgets/Directions/t9n/Directions.json +1 -1
  140. package/assets/esri/widgets/Directions/t9n/Directions_ar.json +1 -1
  141. package/assets/esri/widgets/Directions/t9n/Directions_bg.json +1 -1
  142. package/assets/esri/widgets/Directions/t9n/Directions_bs.json +1 -1
  143. package/assets/esri/widgets/Directions/t9n/Directions_ca.json +1 -1
  144. package/assets/esri/widgets/Directions/t9n/Directions_cs.json +1 -1
  145. package/assets/esri/widgets/Directions/t9n/Directions_da.json +1 -1
  146. package/assets/esri/widgets/Directions/t9n/Directions_de.json +1 -1
  147. package/assets/esri/widgets/Directions/t9n/Directions_el.json +1 -1
  148. package/assets/esri/widgets/Directions/t9n/Directions_en.json +1 -1
  149. package/assets/esri/widgets/Directions/t9n/Directions_es.json +1 -1
  150. package/assets/esri/widgets/Directions/t9n/Directions_et.json +1 -1
  151. package/assets/esri/widgets/Directions/t9n/Directions_fi.json +1 -1
  152. package/assets/esri/widgets/Directions/t9n/Directions_fr.json +1 -1
  153. package/assets/esri/widgets/Directions/t9n/Directions_he.json +1 -1
  154. package/assets/esri/widgets/Directions/t9n/Directions_hr.json +1 -1
  155. package/assets/esri/widgets/Directions/t9n/Directions_hu.json +1 -1
  156. package/assets/esri/widgets/Directions/t9n/Directions_id.json +1 -1
  157. package/assets/esri/widgets/Directions/t9n/Directions_it.json +1 -1
  158. package/assets/esri/widgets/Directions/t9n/Directions_ja.json +1 -1
  159. package/assets/esri/widgets/Directions/t9n/Directions_ko.json +1 -1
  160. package/assets/esri/widgets/Directions/t9n/Directions_lt.json +1 -1
  161. package/assets/esri/widgets/Directions/t9n/Directions_lv.json +1 -1
  162. package/assets/esri/widgets/Directions/t9n/Directions_nb.json +1 -1
  163. package/assets/esri/widgets/Directions/t9n/Directions_nl.json +1 -1
  164. package/assets/esri/widgets/Directions/t9n/Directions_pl.json +1 -1
  165. package/assets/esri/widgets/Directions/t9n/Directions_pt-BR.json +1 -1
  166. package/assets/esri/widgets/Directions/t9n/Directions_pt-PT.json +1 -1
  167. package/assets/esri/widgets/Directions/t9n/Directions_ro.json +1 -1
  168. package/assets/esri/widgets/Directions/t9n/Directions_ru.json +1 -1
  169. package/assets/esri/widgets/Directions/t9n/Directions_sk.json +1 -1
  170. package/assets/esri/widgets/Directions/t9n/Directions_sl.json +1 -1
  171. package/assets/esri/widgets/Directions/t9n/Directions_sr.json +1 -1
  172. package/assets/esri/widgets/Directions/t9n/Directions_sv.json +1 -1
  173. package/assets/esri/widgets/Directions/t9n/Directions_th.json +1 -1
  174. package/assets/esri/widgets/Directions/t9n/Directions_tr.json +1 -1
  175. package/assets/esri/widgets/Directions/t9n/Directions_uk.json +1 -1
  176. package/assets/esri/widgets/Directions/t9n/Directions_vi.json +1 -1
  177. package/assets/esri/widgets/Directions/t9n/Directions_zh-CN.json +1 -1
  178. package/assets/esri/widgets/Directions/t9n/Directions_zh-HK.json +1 -1
  179. package/assets/esri/widgets/Directions/t9n/Directions_zh-TW.json +1 -1
  180. package/chunks/Fog.glsl.js +12 -24
  181. package/chunks/Heatmap.glsl.js +10 -0
  182. package/chunks/HeatmapDensity.glsl.js +21 -0
  183. package/chunks/Precipitation.glsl.js +2 -2
  184. package/core/maybe.js +1 -1
  185. package/core/promiseUtils.js +1 -1
  186. package/interfaces.d.ts +2432 -231
  187. package/layers/ImageryTileLayer.js +1 -1
  188. package/layers/graphics/data/optimizedFeatureQueryEngineAdapter.js +1 -1
  189. package/layers/graphics/featureConversionUtils.js +1 -1
  190. package/layers/mixins/ArcGISImageService.js +1 -1
  191. package/layers/support/imageryRendererUtils.js +1 -1
  192. package/layers/support/rasterFunctions/pixelUtils.js +1 -1
  193. package/layers/support/rasterFunctions/vectorFieldUtils.js +1 -1
  194. package/package.json +2 -2
  195. package/rasterRenderers.js +1 -1
  196. package/renderers/DictionaryRenderer.js +1 -1
  197. package/renderers/FlowRenderer.d.ts +4 -0
  198. package/renderers/FlowRenderer.js +5 -0
  199. package/renderers/support/DictionaryLoader.js +5 -0
  200. package/renderers/support/RasterSymbolizer.js +1 -1
  201. package/renderers/support/rasterRendererHelper.js +1 -1
  202. package/renderers/support/rendererConversion.js +1 -1
  203. package/rest/geoprocessor/GPOptions.js +1 -1
  204. package/rest/print.js +1 -1
  205. package/rest/support/DirectionLine.js +1 -1
  206. package/rest/support/DirectionPoint.js +1 -1
  207. package/rest/support/FeatureSet.js +1 -1
  208. package/rest/support/LegendLayer.js +1 -1
  209. package/rest/support/LinearUnit.js +1 -1
  210. package/rest/support/PointBarrier.js +1 -1
  211. package/rest/support/PolygonBarrier.js +1 -1
  212. package/rest/support/PolylineBarrier.js +1 -1
  213. package/rest/support/RasterData.js +1 -1
  214. package/smartMapping/raster/renderers/flow.js +5 -0
  215. package/smartMapping/raster/support/utils.js +1 -1
  216. package/support/basemapUtils.js +1 -1
  217. package/support/featureFlags.js +1 -1
  218. package/support/revision.js +1 -1
  219. package/symbols/TextSymbol3DLayer.js +1 -1
  220. package/symbols/cim/effects/EffectArrow.js +1 -1
  221. package/symbols/support/Symbol3DHalo.js +1 -1
  222. package/symbols/support/Symbol3DTextBackground.js +5 -0
  223. package/symbols/support/previewSymbol2D.js +1 -1
  224. package/symbols/support/svgUtils.js +1 -1
  225. package/tasks/Geoprocessor.js +1 -1
  226. package/views/2d/FrameTask.js +1 -1
  227. package/views/2d/ViewState.js +1 -1
  228. package/views/2d/constraints/GeometryConstraint.js +1 -1
  229. package/views/2d/engine/BitmapTileContainer.js +1 -1
  230. package/views/2d/engine/DisplayObject.js +1 -1
  231. package/views/2d/engine/RasterTileContainer.js +1 -1
  232. package/views/2d/engine/RasterVFContainer.js +5 -0
  233. package/views/2d/engine/RasterVFDisplayObject.js +1 -1
  234. package/views/2d/engine/RasterVFTileContainer.js +1 -1
  235. package/views/2d/engine/Stage.js +1 -1
  236. package/views/2d/engine/flow/BrushFlow.js +1 -1
  237. package/views/2d/engine/flow/FlowDisplayData.js +1 -1
  238. package/views/2d/engine/flow/FlowGLResources.js +1 -1
  239. package/views/2d/engine/flow/FlowStyle.js +1 -1
  240. package/views/2d/engine/flow/FlowView2D.js +5 -0
  241. package/views/2d/engine/flow/dataUtils.js +1 -1
  242. package/views/2d/engine/flow/flowRendererUtils.js +5 -0
  243. package/views/2d/engine/webgl/AttributeStoreView.js +1 -1
  244. package/views/2d/engine/webgl/brushes/raster/BrushVectorField.js +1 -1
  245. package/views/2d/engine/webgl/cpuMapped/Buffer.js +1 -1
  246. package/views/2d/engine/webgl/mesh/templates/WGLBaseTextTemplate.js +1 -1
  247. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  248. package/views/2d/engine/webgl/util/Matcher.js +1 -1
  249. package/views/2d/input/handlers/DragPan.js +1 -1
  250. package/views/2d/layers/FeatureLayerView2D.js +1 -1
  251. package/views/2d/layers/ImageryLayerView2D.js +1 -1
  252. package/views/2d/layers/ImageryTileLayerView2D.js +1 -1
  253. package/views/2d/layers/KMLLayerView2D.js +1 -1
  254. package/views/2d/layers/LayerView2D.js +1 -1
  255. package/views/2d/layers/MapImageLayerView2D.js +1 -1
  256. package/views/2d/layers/TileLayerView2D.js +1 -1
  257. package/views/2d/layers/WMSLayerView2D.js +1 -1
  258. package/views/2d/layers/WMTSLayerView2D.js +1 -1
  259. package/views/2d/layers/features/Pipeline.js +1 -1
  260. package/views/2d/layers/features/createSymbolSchema.js +5 -0
  261. package/views/2d/layers/features/processors/HeatmapProcessor.js +1 -1
  262. package/views/2d/layers/features/processors/SymbolProcessor.js +1 -1
  263. package/views/2d/layers/features/schemaUtils.js +1 -1
  264. package/views/2d/layers/features/support/AttributeStore.js +1 -1
  265. package/views/2d/layers/features/support/ClusterStore.js +1 -1
  266. package/views/2d/layers/features/support/FeatureSetReaderJSON.js +1 -1
  267. package/views/2d/layers/features/tileRenderers/SymbolTileRenderer.js +1 -1
  268. package/views/2d/layers/graphics/GraphicsView2D.js +1 -1
  269. package/views/2d/layers/imagery/BaseImageryTileSubView2D.js +1 -1
  270. package/views/2d/layers/imagery/ImageryTileView2D.js +1 -1
  271. package/views/2d/layers/imagery/ImageryVFStrategy.js +5 -0
  272. package/views/2d/layers/imagery/ImageryView2D.js +1 -1
  273. package/views/2d/layers/imagery/VectorFieldTileView2D.js +1 -1
  274. package/views/2d/layers/imagery/VectorFieldView2D.js +5 -0
  275. package/views/2d/layers/support/FeatureCommandQueue.js +1 -1
  276. package/views/2d/navigation/MapViewNavigation.js +1 -1
  277. package/views/2d/navigation/actions/Pan.js +1 -1
  278. package/views/2d/viewpointUtils.js +1 -1
  279. package/views/3d/environment/EnvironmentRenderer.js +1 -1
  280. package/views/3d/environment/Fog.js +1 -1
  281. package/views/3d/environment/Precipitation.js +1 -1
  282. package/views/3d/environment/PrecipitationTechnique.js +1 -1
  283. package/views/3d/environment/SceneViewEnvironment.js +1 -1
  284. package/views/3d/environment/SimpleAtmosphere.js +1 -1
  285. package/views/3d/environment/weather.js +1 -1
  286. package/views/3d/interactive/analysisTools/lineOfSight/LineOfSightTool.js +1 -1
  287. package/views/3d/layerViewModuleImportUtils.js +1 -1
  288. package/views/3d/layers/FeatureLikeLayerView3D.js +1 -1
  289. package/views/3d/layers/GraphicsLayerView3D.js +1 -1
  290. package/views/3d/layers/IRouteLayerView3D.js +4 -0
  291. package/views/3d/layers/RouteLayerView3D.js +5 -0
  292. package/views/3d/layers/VectorTileLayerView3D.js +1 -1
  293. package/views/3d/layers/VoxelLayerView3D.js +1 -1
  294. package/views/3d/layers/graphics/Graphics3DFeatureProcessor.js +1 -1
  295. package/views/3d/layers/graphics/Graphics3DTextSymbolLayer.js +1 -1
  296. package/views/3d/layers/graphics/Graphics3DWebStyleSymbol.js +1 -1
  297. package/views/3d/layers/graphics/GraphicsProcessor.js +1 -1
  298. package/views/3d/layers/graphics/Labeler.js +1 -1
  299. package/views/3d/layers/graphics/graphicUtils.js +1 -1
  300. package/views/3d/layers/graphics/labelPlacement.js +1 -1
  301. package/views/3d/layers/support/HeatmapFeatureProcessor.js +1 -1
  302. package/views/3d/terrain/OverlayRenderer.js +1 -1
  303. package/views/3d/terrain/terrainUtils.js +1 -1
  304. package/views/3d/webgl-engine/lib/DrapedHeatmapRenderer.js +5 -0
  305. package/views/3d/webgl-engine/lib/TextRenderParameters.js +1 -1
  306. package/views/3d/webgl-engine/lib/TextRenderer.js +1 -1
  307. package/views/3d/webgl-engine/lib/TextTexture.js +1 -1
  308. package/views/3d/webgl-engine/materials/HeatmapDensityMaterial.js +5 -0
  309. package/views/3d/webgl-engine/shaders/Heatmap.glsl.js +5 -0
  310. package/views/3d/webgl-engine/shaders/HeatmapDensity.glsl.js +5 -0
  311. package/views/3d/webgl-engine/shaders/HeatmapDensityTechnique.js +5 -0
  312. package/views/3d/webgl-engine/shaders/HeatmapTechnique.js +5 -0
  313. package/views/MapView.js +1 -1
  314. package/views/ToolViewManager.js +1 -1
  315. package/views/View.js +1 -1
  316. package/views/draw/support/Box.js +1 -1
  317. package/views/draw/support/GraphicMover.js +1 -1
  318. package/views/draw/support/HighlightHelper.js +5 -0
  319. package/views/draw/support/Reshape.js +1 -1
  320. package/views/draw/support/layerUtils.js +1 -1
  321. package/views/interactive/InteractiveToolBase.js +1 -1
  322. package/views/support/WatchUpdatingTracking.js +1 -1
  323. package/views/support/projectionUtils.js +1 -1
  324. package/views/webgl/RenderingContext.js +1 -1
  325. package/views/webgl/enums.js +1 -1
  326. package/widgets/BasemapGallery/BasemapGalleryViewModel.js +1 -1
  327. package/widgets/BasemapGallery/support/BasemapGalleryItem.js +1 -1
  328. package/widgets/BasemapToggle/BasemapToggleViewModel.js +1 -1
  329. package/widgets/BasemapToggle.js +1 -1
  330. package/widgets/Directions/support/resources.js +1 -1
  331. package/widgets/Directions.js +1 -1
  332. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  333. package/widgets/FeatureTable/Grid/Grid.js +1 -1
  334. package/widgets/FeatureTable/support/FeatureStore.js +1 -1
  335. package/widgets/FeatureTable.js +1 -1
  336. package/widgets/Legend/styles/Card.js +1 -1
  337. package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
  338. package/widgets/Legend/support/sizeRampUtils.js +1 -1
  339. package/widgets/ShadowCast/ShadowCastViewModel.js +1 -1
  340. package/widgets/Sketch/SketchViewModel.js +1 -1
  341. package/widgets/Sketch.js +1 -1
  342. package/widgets/TimeSlider.js +1 -1
  343. package/widgets/Weather/WeatherViewModel.js +1 -1
  344. package/widgets/Weather.js +1 -1
  345. package/widgets/Widget.js +1 -1
  346. package/widgets/support/InteractiveAnalysisViewModel.js +1 -1
  347. package/widgets/support/vnodeCache.js +5 -0
  348. package/widgets/support/widgetUtils.js +1 -1
  349. package/assets/esri/core/workers/chunks/0453fad5cb819797b4f6.js +0 -1
  350. package/assets/esri/core/workers/chunks/0c15d77d8e817cf45a9a.js +0 -1
  351. package/assets/esri/core/workers/chunks/0cd0a6eef51fc5b9ea61.js +0 -1
  352. package/assets/esri/core/workers/chunks/0d684f16f37d5dc385dd.js +0 -1
  353. package/assets/esri/core/workers/chunks/16b6d0f8378582c051c3.js +0 -1
  354. package/assets/esri/core/workers/chunks/1877ab1b6a115dbba1c5.js +0 -1
  355. package/assets/esri/core/workers/chunks/197ec52641aed20029c6.js +0 -1
  356. package/assets/esri/core/workers/chunks/1b2a961f776a0b57e57a.js +0 -1
  357. package/assets/esri/core/workers/chunks/1b3fd66577b19aa5f2b6.js +0 -1
  358. package/assets/esri/core/workers/chunks/1c733b7db092a2a88ef3.js +0 -1
  359. package/assets/esri/core/workers/chunks/2629adf79e7fd9f25f07.js +0 -1
  360. package/assets/esri/core/workers/chunks/27474b007988855bea9d.js +0 -1
  361. package/assets/esri/core/workers/chunks/2b25fc7945a187c2bb9d.js +0 -1
  362. package/assets/esri/core/workers/chunks/34b59d7099904dcb28b5.js +0 -1
  363. package/assets/esri/core/workers/chunks/422537fc3df707bb62c9.js +0 -1
  364. package/assets/esri/core/workers/chunks/483d5d8593d96d0f0b15.js +0 -1
  365. package/assets/esri/core/workers/chunks/4ba6de8aa7e2960bad49.js +0 -1
  366. package/assets/esri/core/workers/chunks/4be35af7d6babbfe9d84.js +0 -1
  367. package/assets/esri/core/workers/chunks/5457962a70bd3c557a75.js +0 -1
  368. package/assets/esri/core/workers/chunks/57856b4a9b8784a69844.js +0 -1
  369. package/assets/esri/core/workers/chunks/57b349d1dbc0bed75b79.js +0 -1
  370. package/assets/esri/core/workers/chunks/5d11b97b667921d67ae7.js +0 -1
  371. package/assets/esri/core/workers/chunks/5dbe555a5a662ff3d9ce.js +0 -1
  372. package/assets/esri/core/workers/chunks/64b7e8d812ea8fcf269e.js +0 -1
  373. package/assets/esri/core/workers/chunks/75d812955a473d0e8960.js +0 -1
  374. package/assets/esri/core/workers/chunks/94515fb3ef38067eeadd.js +0 -1
  375. package/assets/esri/core/workers/chunks/952980635afc7ec81804.js +0 -1
  376. package/assets/esri/core/workers/chunks/96f148a556a2418038de.js +0 -1
  377. package/assets/esri/core/workers/chunks/9876a1bae350795fab36.js +0 -1
  378. package/assets/esri/core/workers/chunks/a1930e4f035bc9aa1ae5.js +0 -1
  379. package/assets/esri/core/workers/chunks/a8692bffb76444c34760.js +0 -1
  380. package/assets/esri/core/workers/chunks/b3f5e91116112b0b612a.js +0 -1
  381. package/assets/esri/core/workers/chunks/ba762bcfd74af0bb8218.js +0 -1
  382. package/assets/esri/core/workers/chunks/be588873c16770ceb9ef.js +0 -1
  383. package/assets/esri/core/workers/chunks/bf6dda4a2af14c4b7716.js +0 -1
  384. package/assets/esri/core/workers/chunks/c2253a9f29c1aabb2b75.js +0 -1
  385. package/assets/esri/core/workers/chunks/c984b3040e120e502b11.js +0 -1
  386. package/assets/esri/core/workers/chunks/cdbc005eebec1503b99d.js +0 -1
  387. package/assets/esri/core/workers/chunks/d04fca5d46cca02500b7.js +0 -1
  388. package/assets/esri/core/workers/chunks/d1fe53b597351dc58305.js +0 -1
  389. package/assets/esri/core/workers/chunks/d98dab12b71912fa397b.js +0 -1
  390. package/assets/esri/core/workers/chunks/dedc333a61081772ca7b.js +0 -1
  391. package/assets/esri/core/workers/chunks/e218bde41ffbcc5194f5.js +0 -1
  392. package/assets/esri/core/workers/chunks/e287f49184d076af17e2.js +0 -1
  393. package/assets/esri/core/workers/chunks/e9e5196b44b6923be1a3.js +0 -1
  394. package/assets/esri/core/workers/chunks/ea595b0df5050eda2a13.js +0 -1
  395. package/assets/esri/core/workers/chunks/eb82ff10cef2bde6e57f.js +0 -1
  396. package/assets/esri/core/workers/chunks/ee6e0db58dc64410e687.js +0 -1
  397. package/assets/esri/core/workers/chunks/f0a9f161805fc7a30fc5.js +0 -1
  398. package/renderers/AnimatedFlowRenderer.d.ts +0 -4
  399. package/renderers/AnimatedFlowRenderer.js +0 -5
  400. package/views/2d/engine/flow/AnimatedFlowView2D.js +0 -5
  401. package/views/2d/engine/flow/animatedFlowRendererUtils.js +0 -5
  402. package/views/2d/layers/imagery/ImageryGraphicsView2D.js +0 -5
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import{forEach as s,result as l}from"../../../../core/asyncUtils.js";import a from"../../../../core/Handles.js";import i from"../../../../core/Logger.js";import{someMap as r}from"../../../../core/MapUtils.js";import{destroyMaybe as o,disposeMaybe as n,isNone as c,isSome as h,unwrap as b}from"../../../../core/maybe.js";import{throwIfAborted as d,isAbortError as p}from"../../../../core/promiseUtils.js";import{property as u}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as g}from"../../../../core/accessorSupport/decorators/subclass.js";import{hydrateGraphic as y}from"../../../../layers/graphics/hydratedFeatures.js";import{createLabelFunction as f}from"../../../../layers/support/labelFormatUtils.js";import{areLabelsVisible as _}from"../../../../layers/support/layerUtils.js";import{isCalloutSupport as m}from"../../../../symbols/callouts/calloutUtils.js";import{VisibilityFlag as C,VisibilityGroup as x}from"./enums.js";import{make as v}from"./Graphics3DCalloutSymbolLayerFactory.js";import T from"./Graphics3DGraphicCreationContext.js";import{getGraphics3DSymbol as L}from"./graphicSymbolUtils.js";import{get as G}from"./labelPlacement.js";import D from"../../support/debugFlags.js";import{MaterialCollection as R}from"../../webgl-engine/lib/MaterialCollection.js";import{TextRenderer as A}from"../../webgl-engine/lib/TextRenderer.js";import{TextRenderParameters as w}from"../../webgl-engine/lib/TextRenderParameters.js";import S from"../../webgl-engine/lib/TextTextureAtlas.js";import{WebGLLayer as I}from"../../webgl-engine/lib/WebGLLayer.js";import{TaskPriority as O}from"../../../support/Scheduler.js";const j=i.getLogger("esri.views.3d.layers.graphics.Labeler");let E=class extends t{constructor(){super(...arguments),this._dirty=!1,this._labels=new Map,this._labelsToAdd=new Map,this._labelsToRemove=new Map,this._labelingContexts=new Array}setup(){this.dispose(),this._handles=new a,this._handles.add([this.view.watch("state.camera",(()=>this.setDirty())),this.view.watch("pixelRatio",(()=>this._resetAllLabels())),this.view.resourceController.scheduler.registerTask(O.LABELER,this)]),this._textTextureAtlas=new S({view:this.view}),this._hudMaterialCollection=new R(this.view._stage),this._calloutMaterialCollection=new R(this.view._stage)}dispose(){this._handles=o(this._handles),this._textTextureAtlas=n(this._textTextureAtlas),this._hudMaterialCollection=n(this._hudMaterialCollection),this._calloutMaterialCollection=n(this._calloutMaterialCollection),this._labelingContexts.length=0,this._labels.clear(),this._labelsToAdd.clear(),this._labelsToRemove.clear()}_activateLabelingContext(e){e.labels.forEach(((e,t)=>{this._labels.set(t,e),e.graphics3DGraphic.setVisibilityFlag(C.USER_SETTING,!0,x.LABEL)})),e.active=!0}_deactivateLabelingContext(e){e.labels.forEach(((e,t)=>{e.graphics3DGraphic.setVisibilityFlag(C.USER_SETTING,!1,x.LABEL),this.setLabelGraphicVisibility(e.graphics3DGraphic,!1),this._labels.delete(t)})),e.active=!1}_addLabelTextureToAtlas(e){for(const t of e.graphics3DGraphic.labelGraphics){if(!t._labelClass)continue;const s=e.textRenderers[t._labelIndex];s&&this._textTextureAtlas.addTextTexture(s,t.stageObject)}e.rendered=!0}_removeLabelTextureFromAtlas(e){for(const t of e.graphics3DGraphic.labelGraphics){if(!t._labelClass)continue;const s=e.textRenderers[t._labelIndex];s&&this._textTextureAtlas.removeTextTexture(s,t.stageObject)}e.rendered=!1}get running(){var e;return this.view.ready&&(this._dirty||(null==(e=this._textTextureAtlas)?void 0:e.updating)||this.deconflictor.running)}runTask(e){this._updateLabels(e),!this._dirty&&this.deconflictor.running&&this.deconflictor.runTask(e)}_updateLabels(e){if(this._dirty){this._dirty=!1;for(const t of this._labelingContexts)if(P(t)){if(!F(t)){if(M(t)){this._deactivateLabelingContext(t);continue}if(this._createLabelClassContext(t),V(t)){this._dirty=!0;continue}if(!F(t))continue}r(t.labelsToInitialize,((s,l)=>(this._ensureGraphics3DResources(s)&&(this._labels.set(l,s),this.deconflictor.setDirty(),e.madeProgress()),(s.visible&&s.hasTextTextureResources||!s.visible&&s.hasGraphics3DResources)&&(t.labelsToInitialize.delete(l),e.madeProgress()),e.done)))&&(this._dirty=!0)}this._labelsToRemove.forEach((e=>this._removeLabelTextureFromAtlas(e))),this._labelsToAdd.forEach((e=>this._addLabelTextureToAtlas(e))),this._labelsToRemove.clear(),this._labelsToAdd.clear(),this._dirty||this.notifyChange("updating")}}async _createLabelClassContextAsync(e){const t=e.labelClassAbortController.signal;await e.layer.when(),d(t),e.scaleVisibility&&e.scaleVisibility.updateScaleRangeActive();const a=e.graphics3DCore,i=a.layer,r=i.labelingInfo&&i.labelingInfo.filter((e=>!!e.symbol));if(!r||0===r.length)return;const o=new Array(r.length);let n=!1;await s(r,(async(s,i)=>{const r=s.symbol,h=L(a.getOrCreateGraphics3DSymbol(r));if(c(h))return void j.error("Failed to create Graphics3DSymbol for label");await h.load(),d(t);let b=null;m(r)&&r.hasVisibleCallout()&&(b=v(r,a.symbolCreationContext),await b.load(),d(t));const p=await l(f(s,e.layer.fieldsIndex,this.view.spatialReference));if(d(t),!0===p.ok){const e=await this._createTextRenderParameters(h.symbol);d(t),o[i]={labelClass:s,labelFunction:p.value,graphics3DSymbol:h,graphics3DCalloutSymbolLayer:b,calloutSymbolLayerIndex:0,textRenderParameters:e}}else j.error(`Label expression failed to evaluate: ${p.error}`),n=!0})),d(t),n||(e.labelClassContexts=o)}async _createLabelClassContext(e){return e.labelClassPromise||(e.labelClassPromise=this._createLabelClassContextAsync(e).catch((t=>{if(p(t))throw t;e.labelClassContexts=null})).then((()=>{e.labelClassAbortController=null,this.notifyChange("updating")})).catch((()=>{})),this.notifyChange("updating")),e.labelClassPromise}async _createTextRenderParameters(e){const t=e.symbolLayers.getItemAt(0);return t&&"text"===t.type?w.fromSymbol(t,this.view.pixelRatio):null}_destroyLabelClassContext(e){for(const s of e.labelClassContexts)--s.graphics3DSymbol.referenced,s.graphics3DSymbol=null;const t=e.labelClassAbortController;e.labelClassAbortController=new AbortController,t&&t.abort(),e.labelClassContexts=[],e.labelClassPromise=null,this.notifyChange("updating")}_createTextSymbolGraphic(e,t,s,l,a){const i={text:e.text,centerOffset:s.centerOffset,translation:s.translation,elevationOffset:s.elevationOffset,screenOffset:s.screenOffset,anchor:s.anchor,centerOffsetUnits:s.centerOffsetUnits,verticalOffset:s.verticalOffset,debugDrawLabelBorder:D.LABELS_SHOW_BORDER,displayWidth:e.displayWidth,displayHeight:e.displayHeight};return U.graphic=t,U.renderingInfo=null,U.layer=l,a.createLabel(U,i,this._hudMaterialCollection,this._textTextureAtlas)}_createLineCalloutGraphic(e,t,s,l,a){const i={symbol:t,translation:l.translation,elevationOffset:l.elevationOffset,screenOffset:l.screenOffset,centerOffset:l.centerOffset,centerOffsetUnits:l.centerOffsetUnits,materialCollection:this._calloutMaterialCollection};return U.graphic=e,U.renderingInfo=i,U.layer=a,s.createGraphics3DGraphic(U)}_ensureGraphics3DResources(e){if(e.hasGraphics3DResources)return!1;const t=e.graphics3DGraphic;if(t.destroyed)return!1;this._ensureTextTextureResources(e);const s=e.labelingContext,l=s.labelClassContexts;if(!l||0===l.length||!s.emptySymbolLabelSupported&&0===t.graphics.length)return!1;let a=!1;const i=t.graphic,r=s.layer,o=_(s.layer),n=this.view._stage;for(let b=0;b<l.length;b++){const d=e.textRenderers[b];if(!d)continue;const p=l[b],u=p.graphics3DSymbol;let g=null;u.symbol&&"label-3d"===u.symbol.type&&(g=u.symbol);const y=u.symbolLayers[0];if(!y)continue;const f=p.labelClass,_=s.disablePlacement,m=G({graphics3DGraphic:t,labelSymbol:g,labelClass:f,disablePlacement:_});if(c(m))continue;y.setElevationInfoOverride(s.elevationInfoOverride);const v=this._createTextSymbolGraphic(d,i,m,r,y);if(!v)return!1;v._labelClass=f,v._labelIndex=b,t.addLabelGraphic(v,n,s.stageLayer),t.setVisibilityFlag(C.USER_SETTING,o,x.LABEL),t.clearVisibilityFlag(C.SCALE_RANGE,x.LABEL),t.setVisibilityFlag(C.DECONFLICTION,!1,x.LABEL),a=!0;const T=p.graphics3DCalloutSymbolLayer;if(T&&m.hasLabelVerticalOffset){T.setElevationInfoOverride(s.elevationInfoOverride);const e=this._createLineCalloutGraphic(i,g,T,m,r);h(e)&&(p.calloutSymbolLayerIndex=t.labelGraphics.length,t.addLabelGraphic(e,n,s.stageLayer))}break}return s.scaleVisibility&&a&&s.scaleVisibility.updateGraphicLabelScaleVisibility(t),e.hasGraphics3DResources=!0,!0}_destroyGraphics3DResources(e){const t=e.labelingContext.labelClassContexts;for(const s of e.graphics3DGraphic.labelGraphics){if(null==s._labelClass)continue;const e=t[s._labelIndex].graphics3DSymbol.symbolLayers[0];null!=e&&e.onRemoveGraphic(s)}e.graphics3DGraphic.clearLabelGraphics(),e.hasGraphics3DResources=!1}_ensureTextTextureResources(e){if(e.hasTextTextureResources)return;const t=e.labelingContext,s=t.labelClassContexts;if(!s||0===s.length)return;const l=e.graphics3DGraphic.graphic;for(let i=0;i<s.length;i++){const r=s[i];if(e.textRenderers[i]=null,!r.textRenderParameters)continue;const o=r.labelFunction;let n;if("arcade"===o.type)try{const e=o.needsHydrationToEvaluate()?y(l,t.layer):l;n=o.evaluate(e)}catch(a){n=null}else n=o.evaluate(l);c(n)||""===n||/^\s+$/.test(n)||(e.textRenderers[i]=new A(n,r.textRenderParameters))}e.hasTextTextureResources=!0}_destroyTextTextureResources(e){e.textRenderers=[],e.hasTextTextureResources=!1}_addGraphic(e,t){const s={hasGraphics3DResources:!1,hasTextTextureResources:!1,visible:!1,rendered:!1,labelingContext:e,graphics3DGraphic:t,textRenderers:[]},l=t.graphic.uid;e.labels.set(l,s),e.labelsToInitialize.set(l,s),this.setDirty(),this.deconflictor.setDirty()}_removeGraphic(e,t){const s=t.graphic.uid,l=e.labels.get(s);l&&(this._destroyGraphic(l,s),e.labels.delete(s),e.labelsToInitialize.delete(s),this.setDirty(),this.deconflictor.setDirty())}_destroyGraphic(e,t){this._labels.has(t)&&(this._labels.delete(t),this._labelsToAdd.delete(t),this._labelsToRemove.delete(t)),e.hasTextTextureResources&&(this._removeLabelTextureFromAtlas(e),this._destroyTextTextureResources(e)),e.hasGraphics3DResources&&this._destroyGraphics3DResources(e)}async _labelingInfoChange(e,t){if(!t)return this._visibilityInfoChange(e),this._resetLabels(e),this._createLabelClassContext(e);for(const s of t){const t=e.labels.get(s);t&&(this._removeGraphic(e,t.graphics3DGraphic),this._addGraphic(e,t.graphics3DGraphic))}}_globalPropertyChanged(e,t){for(const s of t.labelClassContexts){const l=new Map;t.labels.forEach((e=>{const t=e.graphics3DGraphic;l.set(t.graphic.uid,t)}));const a=e=>e.labelGraphics[0];if(b(s.graphics3DSymbol.symbolLayers[0]).globalPropertyChanged(e,l,a),s.graphics3DCalloutSymbolLayer){const t=e=>e.labelGraphics[s.calloutSymbolLayerIndex];s.graphics3DCalloutSymbolLayer.globalPropertyChanged(e,l,t)}}}_visibilityInfoChange(e){const t=e.layer.labelsVisible;t&&!e.active&&this._activateLabelingContext(e),!t&&e.active&&this._deactivateLabelingContext(e),this.setDirty()}_resetAllLabels(){for(const e of this._labelingContexts)this._resetLabels(e)}_resetLabels(e){e.labels.forEach(((t,s)=>{this._destroyGraphic(t,s),t.visible=!1,t.rendered=!1,e.labelsToInitialize.set(s,t)})),this._destroyLabelClassContext(e),this.setDirty(),this.deconflictor.setDirty()}_findLabelingContext(e){for(const t of this._labelingContexts)if(t.graphics3DCore===e)return t;return null}addGraphicsOwner(e,t,s){const l=s&&s.emptySymbolLabelSupported||!1,a=s&&s.elevationInfoOverride||null,i=s&&s.disablePlacement||null;if(this._findLabelingContext(e))return;const r=e.layer,o={graphics3DCore:e,layer:r,scaleVisibility:t,emptySymbolLabelSupported:l,elevationInfoOverride:a,disablePlacement:i,active:r.labelsVisible,labelClassPromise:null,labelClassAbortController:new AbortController,labelClassContexts:[],labels:new Map,labelsToInitialize:new Map,stageLayer:new I({isPickable:!0},r.uid)};return this.view._stage.add(o.stageLayer),this._labelingContexts.push(o),this.setDirty(),{addGraphic:e=>this._addGraphic(o,e),removeGraphic:e=>this._removeGraphic(o,e),featureReductionChange:()=>{},layerLabelsEnabled:()=>_(o.layer),labelingInfoChange:e=>this._labelingInfoChange(o,e),elevationInfoChange:()=>this._globalPropertyChanged("elevationInfo",o),slicePlaneEnabledChange:()=>this._globalPropertyChanged("slicePlaneEnabled",o),visibilityInfoChange:()=>this._visibilityInfoChange(o),reset:()=>this._resetLabels(o),clear:()=>{}}}removeGraphicsOwner(e){const t=this._findLabelingContext(e);if(!t)return;const s=this._labelingContexts.indexOf(t);this._labelingContexts.splice(s,1),t.labels.forEach((e=>this._removeGraphic(t,e.graphics3DGraphic))),this.view._stage.remove(t.stageLayer),t.stageLayer=null,this.setDirty()}setLabelGraphicVisibility(e,t){const s=e.graphic.uid,l=this._labels.get(s);l&&l.visible!==t&&(t&&!l.rendered?(this._labelsToAdd.set(s,l),this._labelsToRemove.delete(s),l.hasTextTextureResources||l.labelingContext.labelsToInitialize.set(s,l)):!t&&l.rendered&&(this._labelsToRemove.set(s,l),this._labelsToAdd.delete(s)),l.visible=t,this.setDirty())}setDirty(){!this._dirty&&this._labelingContexts.length>0&&(this._dirty=!0,this.notifyChange("updating"))}get updating(){var e;return this._dirty||(null==(e=this._textTextureAtlas)?void 0:e.updating)||this.deconflictor.updating||this._labelingContexts.some((e=>V(e)))}get updatingProgress(){if(!this.updating||!this._textTextureAtlas)return 1;const e=this._labelingContexts.length>0?this._labelingContexts.reduce(((e,t)=>e+(V(t)?0:1)),0)/this._labelingContexts.length:1;return(this._dirty?0:.3)+(this._textTextureAtlas.updating?0:.1)+.1*e+.5*this.deconflictor.updatingProgress}get test(){return{textTextureAtlas:this._textTextureAtlas,resetAllLabels:()=>this._resetAllLabels()}}};function P(e){return e.active&&_(e.layer)}function V(e){return e.labelClassPromise&&!!e.labelClassAbortController}function F(e){return e.labelClassContexts&&e.labelClassContexts.length}function M(e){return null===e.labelClassContexts}e([u({constructOnly:!0})],E.prototype,"view",void 0),e([u({constructOnly:!0})],E.prototype,"deconflictor",void 0),e([u()],E.prototype,"_textTextureAtlas",void 0),e([u({type:Boolean,readOnly:!0})],E.prototype,"updating",null),E=e([g("esri.views.3d.layers.graphics.Labeler")],E);const U=new T(null,null,null);export{E as Labeler};
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import{forEach as s,result as l}from"../../../../core/asyncUtils.js";import i from"../../../../core/Handles.js";import a from"../../../../core/Logger.js";import{someMap as r}from"../../../../core/MapUtils.js";import{destroyMaybe as o,disposeMaybe as n,isSome as c,isNone as h,unwrap as b}from"../../../../core/maybe.js";import{throwIfAborted as d,isAbortError as p}from"../../../../core/promiseUtils.js";import{property as u}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as g}from"../../../../core/accessorSupport/decorators/subclass.js";import{hydrateGraphic as y}from"../../../../layers/graphics/hydratedFeatures.js";import{createLabelFunction as f}from"../../../../layers/support/labelFormatUtils.js";import{areLabelsVisible as m}from"../../../../layers/support/layerUtils.js";import{isCalloutSupport as _}from"../../../../symbols/callouts/calloutUtils.js";import{VisibilityFlag as x,VisibilityGroup as C}from"./enums.js";import{make as v}from"./Graphics3DCalloutSymbolLayerFactory.js";import L from"./Graphics3DGraphicCreationContext.js";import{getGraphics3DSymbol as T}from"./graphicSymbolUtils.js";import{textRenderAlignmentFromAnchorType as G}from"./graphicUtils.js";import{get as D}from"./labelPlacement.js";import R from"../../support/debugFlags.js";import{MaterialCollection as A}from"../../webgl-engine/lib/MaterialCollection.js";import{TextRenderer as w}from"../../webgl-engine/lib/TextRenderer.js";import{TextRenderParameters as S}from"../../webgl-engine/lib/TextRenderParameters.js";import I from"../../webgl-engine/lib/TextTextureAtlas.js";import{WebGLLayer as O}from"../../webgl-engine/lib/WebGLLayer.js";import{TaskPriority as P}from"../../../support/Scheduler.js";const j=a.getLogger("esri.views.3d.layers.graphics.Labeler");let E=class extends t{constructor(){super(...arguments),this._dirty=!1,this._labels=new Map,this._labelsToAdd=new Map,this._labelsToRemove=new Map,this._labelingContexts=new Array}setup(){this.dispose(),this._handles=new i,this._handles.add([this.view.watch("state.camera",(()=>this.setDirty())),this.view.watch("pixelRatio",(()=>this._resetAllLabels())),this.view.resourceController.scheduler.registerTask(P.LABELER,this)]),this._textTextureAtlas=new I({view:this.view}),this._hudMaterialCollection=new A(this.view._stage),this._calloutMaterialCollection=new A(this.view._stage)}dispose(){this._handles=o(this._handles),this._textTextureAtlas=n(this._textTextureAtlas),this._hudMaterialCollection=n(this._hudMaterialCollection),this._calloutMaterialCollection=n(this._calloutMaterialCollection),this._labelingContexts.length=0,this._labels.clear(),this._labelsToAdd.clear(),this._labelsToRemove.clear()}_activateLabelingContext(e){e.labels.forEach(((e,t)=>{this._labels.set(t,e),e.graphics3DGraphic.setVisibilityFlag(x.USER_SETTING,!0,C.LABEL)})),e.active=!0}_deactivateLabelingContext(e){e.labels.forEach(((e,t)=>{e.graphics3DGraphic.setVisibilityFlag(x.USER_SETTING,!1,C.LABEL),this.setLabelGraphicVisibility(e.graphics3DGraphic,!1),this._labels.delete(t)})),e.active=!1}_addLabelTextureToAtlas(e){for(const t of e.graphics3DGraphic.labelGraphics){if(!t._labelClass)continue;const s=e.textTextureResources.textRenderers[t._labelIndex];c(s)&&this._textTextureAtlas.addTextTexture(s,t.stageObject)}e.rendered=!0}_removeLabelTextureFromAtlas(e){for(const t of e.graphics3DGraphic.labelGraphics){if(!t._labelClass)continue;const s=e.textTextureResources.textRenderers[t._labelIndex];c(s)&&this._textTextureAtlas.removeTextTexture(s,t.stageObject)}e.rendered=!1}get running(){var e;return this.view.ready&&(this._dirty||(null==(e=this._textTextureAtlas)?void 0:e.updating)||this.deconflictor.running)}runTask(e){this._updateLabels(e),!this._dirty&&this.deconflictor.running&&this.deconflictor.runTask(e)}_updateLabels(e){if(this._dirty){this._dirty=!1;for(const t of this._labelingContexts)if(V(t)){if(!M(t)){if(U(t)){this._deactivateLabelingContext(t);continue}if(this._createLabelClassContext(t),F(t)){this._dirty=!0;continue}if(!M(t))continue}r(t.labelsToInitialize,((s,l)=>(this._ensureGraphics3DResources(s)&&(this._labels.set(l,s),this.deconflictor.setDirty(),e.madeProgress()),(s.visible&&s.textTextureResources.initialized||!s.visible&&s.hasGraphics3DResources)&&(t.labelsToInitialize.delete(l),e.madeProgress()),e.done)))&&(this._dirty=!0)}this._labelsToRemove.forEach((e=>this._removeLabelTextureFromAtlas(e))),this._labelsToAdd.forEach((e=>this._addLabelTextureToAtlas(e))),this._labelsToRemove.clear(),this._labelsToAdd.clear(),this._dirty||this.notifyChange("updating")}}async _createLabelClassContextAsync(e){const t=e.labelClassAbortController.signal;await e.layer.when(),d(t),e.scaleVisibility&&e.scaleVisibility.updateScaleRangeActive();const i=e.graphics3DCore,a=i.layer,r=a.labelingInfo&&a.labelingInfo.filter((e=>!!e.symbol));if(!r||0===r.length)return;const o=new Array(r.length);let n=!1;await s(r,(async(s,a)=>{const r=s.symbol,c=T(i.getOrCreateGraphics3DSymbol(r));if(h(c))return void j.error("Failed to create Graphics3DSymbol for label");await c.load(),d(t);let b=null;_(r)&&r.hasVisibleCallout()&&(b=v(r,i.symbolCreationContext),await b.load(),d(t));const p=await l(f(s,e.layer.fieldsIndex,this.view.spatialReference));if(d(t),!0===p.ok){const e=await this._createTextRenderParameters(c.symbol);d(t),o[a]={labelClass:s,labelFunction:p.value,graphics3DSymbol:c,graphics3DCalloutSymbolLayer:b,calloutSymbolLayerIndex:0,textRenderParameters:e}}else j.error(`Label expression failed to evaluate: ${p.error}`),n=!0})),d(t),n||(e.labelClassContexts=o)}async _createLabelClassContext(e){return e.labelClassPromise||(e.labelClassPromise=this._createLabelClassContextAsync(e).catch((t=>{if(p(t))throw t;e.labelClassContexts=null})).then((()=>{e.labelClassAbortController=null,this.notifyChange("updating")})).catch((()=>{})),this.notifyChange("updating")),e.labelClassPromise}async _createTextRenderParameters(e){const t=e.symbolLayers.getItemAt(0);return t&&"text"===t.type?S.fromSymbol(t,this.view.pixelRatio):null}_destroyLabelClassContext(e){for(const s of e.labelClassContexts)--s.graphics3DSymbol.referenced,s.graphics3DSymbol=null;const t=e.labelClassAbortController;e.labelClassAbortController=new AbortController,t&&t.abort(),e.labelClassContexts=[],e.labelClassPromise=null,this.notifyChange("updating")}_createTextSymbolGraphic(e,t,s,l,i){const a={text:e.text,centerOffset:s.centerOffset,translation:s.translation,elevationOffset:s.elevationOffset,screenOffset:s.screenOffset,anchor:s.anchor,centerOffsetUnits:s.centerOffsetUnits,verticalOffset:s.verticalOffset,debugDrawLabelBorder:R.LABELS_SHOW_BORDER,displayWidth:e.displayWidth,displayHeight:e.displayHeight};return z.graphic=t,z.renderingInfo=null,z.layer=l,i.createLabel(z,a,this._hudMaterialCollection,this._textTextureAtlas)}_createLineCalloutGraphic(e,t,s,l,i){const a={symbol:t,translation:l.translation,elevationOffset:l.elevationOffset,screenOffset:l.screenOffset,centerOffset:l.centerOffset,centerOffsetUnits:l.centerOffsetUnits,materialCollection:this._calloutMaterialCollection};return z.graphic=e,z.renderingInfo=a,z.layer=i,s.createGraphics3DGraphic(z)}_ensureGraphics3DResources(e){if(e.hasGraphics3DResources)return!1;const t=e.graphics3DGraphic;if(t.destroyed)return!1;this._ensureTextTextureResources(e);const{textTextureResources:s}=e,l=e.labelingContext,i=l.labelClassContexts;if(!i||0===i.length||!l.emptySymbolLabelSupported&&0===t.graphics.length)return!1;let a=!1;const r=t.graphic,o=l.layer,n=m(l.layer),b=this.view._stage;for(let d=0;d<i.length;d++){const e=s.textRenderers[d],p=s.labelPlacements[d];if(h(e)||h(p))continue;const u=i[d],g=u.graphics3DSymbol,y=g.symbol&&"label-3d"===g.symbol.type?g.symbol:null,f=g.symbolLayers[0];if(!f)continue;f.setElevationInfoOverride(l.elevationInfoOverride);const m=this._createTextSymbolGraphic(e,r,p,o,f);if(!m)return!1;m._labelClass=u.labelClass,m._labelIndex=d,t.addLabelGraphic(m,b,l.stageLayer),t.setVisibilityFlag(x.USER_SETTING,n,C.LABEL),t.clearVisibilityFlag(x.SCALE_RANGE,C.LABEL),t.setVisibilityFlag(x.DECONFLICTION,!1,C.LABEL),a=!0;const _=u.graphics3DCalloutSymbolLayer;if(_&&p.hasLabelVerticalOffset){_.setElevationInfoOverride(l.elevationInfoOverride);const e=this._createLineCalloutGraphic(r,y,_,p,o);c(e)&&(u.calloutSymbolLayerIndex=t.labelGraphics.length,t.addLabelGraphic(e,b,l.stageLayer))}break}return l.scaleVisibility&&a&&l.scaleVisibility.updateGraphicLabelScaleVisibility(t),e.hasGraphics3DResources=!0,!0}_destroyGraphics3DResources(e){const t=e.labelingContext.labelClassContexts;for(const s of e.graphics3DGraphic.labelGraphics){if(null==s._labelClass)continue;const e=t[s._labelIndex].graphics3DSymbol.symbolLayers[0];null!=e&&e.onRemoveGraphic(s)}e.graphics3DGraphic.clearLabelGraphics(),e.hasGraphics3DResources=!1}_ensureTextTextureResources(e){const{textTextureResources:t}=e;if(t.initialized)return;const s=e.labelingContext,l=s.labelClassContexts;if(!l||0===l.length)return;const i=e.graphics3DGraphic.graphic;for(let r=0;r<l.length;r++){const o=l[r];if(t.textRenderers[r]=null,t.labelPlacements[r]=null,!o.textRenderParameters)continue;const n=o.labelFunction;let c;if("arcade"===n.type)try{const e=n.needsHydrationToEvaluate()?y(i,s.layer):i;c=n.evaluate(e)}catch(a){c=null}else c=n.evaluate(i);if(h(c)||""===c||/^\s+$/.test(c))continue;const b=o.graphics3DSymbol,d=b.symbol&&"label-3d"===b.symbol.type?b.symbol:null;if(!b.symbolLayers[0])continue;const p=e.graphics3DGraphic,u=o.labelClass,g=s.disablePlacement,f=D({graphics3DGraphic:p,labelSymbol:d,labelClass:u,disablePlacement:g});if(h(f))continue;const m=G(f.anchor);t.textRenderers[r]=new w(c,m,o.textRenderParameters),t.labelPlacements[r]=f}t.initialized=!0}_destroyTextTextureResources(e){const{textTextureResources:t}=e;t.initialized=!1,t.textRenderers=[],t.labelPlacements=[]}_addGraphic(e,t){const s={hasGraphics3DResources:!1,visible:!1,rendered:!1,labelingContext:e,graphics3DGraphic:t,textTextureResources:{initialized:!1,textRenderers:[],labelPlacements:[]}},l=t.graphic.uid;e.labels.set(l,s),e.labelsToInitialize.set(l,s),this.setDirty(),this.deconflictor.setDirty()}_removeGraphic(e,t){const s=t.graphic.uid,l=e.labels.get(s);l&&(this._destroyGraphic(l,s),e.labels.delete(s),e.labelsToInitialize.delete(s),this.setDirty(),this.deconflictor.setDirty())}_destroyGraphic(e,t){this._labels.has(t)&&(this._labels.delete(t),this._labelsToAdd.delete(t),this._labelsToRemove.delete(t)),e.textTextureResources.initialized&&(this._removeLabelTextureFromAtlas(e),this._destroyTextTextureResources(e)),e.hasGraphics3DResources&&this._destroyGraphics3DResources(e)}async _labelingInfoChange(e,t){if(!t)return this._visibilityInfoChange(e),this._resetLabels(e),this._createLabelClassContext(e);for(const s of t){const t=e.labels.get(s);t&&(this._removeGraphic(e,t.graphics3DGraphic),this._addGraphic(e,t.graphics3DGraphic))}}_globalPropertyChanged(e,t){for(const s of t.labelClassContexts){const l=new Map;t.labels.forEach((e=>{const t=e.graphics3DGraphic;l.set(t.graphic.uid,t)}));const i=e=>e.labelGraphics[0];if(b(s.graphics3DSymbol.symbolLayers[0]).globalPropertyChanged(e,l,i),s.graphics3DCalloutSymbolLayer){const t=e=>e.labelGraphics[s.calloutSymbolLayerIndex];s.graphics3DCalloutSymbolLayer.globalPropertyChanged(e,l,t)}}}_visibilityInfoChange(e){const t=e.layer.labelsVisible;t&&!e.active&&this._activateLabelingContext(e),!t&&e.active&&this._deactivateLabelingContext(e),this.setDirty()}_resetAllLabels(){for(const e of this._labelingContexts)this._resetLabels(e)}_resetLabels(e){e.labels.forEach(((t,s)=>{this._destroyGraphic(t,s),t.visible=!1,t.rendered=!1,e.labelsToInitialize.set(s,t)})),this._destroyLabelClassContext(e),this.setDirty(),this.deconflictor.setDirty()}_findLabelingContext(e){for(const t of this._labelingContexts)if(t.graphics3DCore===e)return t;return null}addGraphicsOwner(e,t,s){const l=s&&s.emptySymbolLabelSupported||!1,i=s&&s.elevationInfoOverride||null,a=s&&s.disablePlacement||null;if(this._findLabelingContext(e))return;const r=e.layer,o={graphics3DCore:e,layer:r,scaleVisibility:t,emptySymbolLabelSupported:l,elevationInfoOverride:i,disablePlacement:a,active:r.labelsVisible,labelClassPromise:null,labelClassAbortController:new AbortController,labelClassContexts:[],labels:new Map,labelsToInitialize:new Map,stageLayer:new O({isPickable:!0},r.uid)};return this.view._stage.add(o.stageLayer),this._labelingContexts.push(o),this.setDirty(),{addGraphic:e=>this._addGraphic(o,e),removeGraphic:e=>this._removeGraphic(o,e),featureReductionChange:()=>{},layerLabelsEnabled:()=>m(o.layer),labelingInfoChange:e=>this._labelingInfoChange(o,e),elevationInfoChange:()=>this._globalPropertyChanged("elevationInfo",o),slicePlaneEnabledChange:()=>this._globalPropertyChanged("slicePlaneEnabled",o),visibilityInfoChange:()=>this._visibilityInfoChange(o),reset:()=>this._resetLabels(o),clear:()=>{}}}removeGraphicsOwner(e){const t=this._findLabelingContext(e);if(!t)return;const s=this._labelingContexts.indexOf(t);this._labelingContexts.splice(s,1),t.labels.forEach((e=>this._removeGraphic(t,e.graphics3DGraphic))),this.view._stage.remove(t.stageLayer),t.stageLayer=null,this.setDirty()}setLabelGraphicVisibility(e,t){const s=e.graphic.uid,l=this._labels.get(s);l&&l.visible!==t&&(t&&!l.rendered?(this._labelsToAdd.set(s,l),this._labelsToRemove.delete(s),l.textTextureResources.initialized||l.labelingContext.labelsToInitialize.set(s,l)):!t&&l.rendered&&(this._labelsToRemove.set(s,l),this._labelsToAdd.delete(s)),l.visible=t,this.setDirty())}setDirty(){!this._dirty&&this._labelingContexts.length>0&&(this._dirty=!0,this.notifyChange("updating"))}get updating(){var e;return this._dirty||(null==(e=this._textTextureAtlas)?void 0:e.updating)||this.deconflictor.updating||this._labelingContexts.some((e=>F(e)))}get updatingProgress(){if(!this.updating||!this._textTextureAtlas)return 1;const e=this._labelingContexts.length>0?this._labelingContexts.reduce(((e,t)=>e+(F(t)?0:1)),0)/this._labelingContexts.length:1;return(this._dirty?0:.3)+(this._textTextureAtlas.updating?0:.1)+.1*e+.5*this.deconflictor.updatingProgress}get test(){return{textTextureAtlas:this._textTextureAtlas,resetAllLabels:()=>this._resetAllLabels()}}};function V(e){return e.active&&m(e.layer)}function F(e){return e.labelClassPromise&&!!e.labelClassAbortController}function M(e){return e.labelClassContexts&&e.labelClassContexts.length}function U(e){return null===e.labelClassContexts}e([u({constructOnly:!0})],E.prototype,"view",void 0),e([u({constructOnly:!0})],E.prototype,"deconflictor",void 0),e([u()],E.prototype,"_textTextureAtlas",void 0),e([u({type:Boolean,readOnly:!0})],E.prototype,"updating",null),E=e([g("esri.views.3d.layers.graphics.Labeler")],E);const z=new L(null,null,null);export{E as Labeler};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{isSome as t,isNone as e}from"../../../../core/maybe.js";import{g as r,r as n,o}from"../../../../chunks/mat4.js";import{c as i}from"../../../../chunks/mat4f64.js";import{f as s}from"../../../../chunks/vec2f64.js";import{O as u,d as m}from"../../../../chunks/vec3f64.js";import{s as a}from"../../../../chunks/vec4.js";import{b as l,O as c}from"../../../../chunks/vec4f64.js";import{projectPoint as f}from"../../../../geometry/projection.js";import{isPoint as p,maximumDimension as h}from"../../../../geometry/support/aaBoundingBox.js";import{create as g}from"../../../../geometry/support/aaBoundingRect.js";import{ringsCentroid as y}from"../../../../geometry/support/centroid.js";import{getPointOnPath as d,getPathLength as j}from"../../../../geometry/support/coordsUtils.js";import{makeDehydratedPoint as x}from"../../../../layers/graphics/dehydratedFeatures.js";import{isHydratedGeometry as b,clonePoint as v}from"../../../../layers/graphics/hydratedFeatures.js";import{VertexAttribute as w}from"../../webgl-engine/lib/VertexAttribute.js";function R(t,e){if("point"===t.type)return P(t,e,!1);if(b(t))switch(t.type){case"extent":return P(t.center,e,!1);case"polygon":return P(t.centroid,e,!1);case"polyline":return P(A(t),e,!0);case"mesh":return P(t.origin,e,!1)}else switch(t.type){case"extent":return P(k(t),e,!0);case"polygon":return P(M(t),e,!0);case"polyline":return P(A(t),e,!0)}}function A(t){const e=t.paths[0];if(!e||0===e.length)return null;const r=d(e,j(e)/2);return x(r[0],r[1],r[2],t.spatialReference)}function k(t){const e=isFinite(t.zmin);return x(.5*(t.xmax+t.xmin),.5*(t.ymax+t.ymin),e?.5*(t.zmax+t.zmin):void 0,t.spatialReference)}function M(t){const e=t.rings[0];if(!e||0===e.length)return null;const r=y(t.rings,t.hasZ);return x(r[0],r[1],r[2],t.spatialReference)}function P(t,e,r){const n=r?t:v(t);return e&&t?f(t,n,e)?n:null:n}function F(t,e,r,n=0){if(t){e||(e=g());const o=t;let i=.5*o.width*(r-1),s=.5*o.height*(r-1);return o.width<1e-7*o.height?i+=s/20:o.height<1e-7*o.width&&(s+=i/20),a(e,o.xmin-i-n,o.ymin-s-n,o.xmax+i+n,o.ymax+s+n),e}return null}function z(t,e){for(let r=0;r<t.geometries.length;++r){const n=t.geometries[r].getMutableAttribute(w.AUXPOS1);n&&n.data[3]!==e&&(n.data[3]=e,t.geometryVertexAttrsUpdated(t.geometryRecords[r]))}}function B(e,r){const n=l(c);return t(e)&&(n[0]=e[0],n[1]=e[1],n[2]=e[2]),t(r)?n[3]=r:t(e)&&e.length>3&&(n[3]=e[3]),n}function D(e,r,n,o,i,s=[0,0,0,0]){for(let u=0;u<3;++u)t(e)&&null!=e[u]?s[u]=e[u]:t(n)&&null!=n[u]?s[u]=n[u]:s[u]=i[u];return t(r)?s[3]=r:t(o)?s[3]=o:s[3]=i[3],s}function I(t=u,r,n,o=1){const i=new Array(3);if(e(r)||e(n))i[0]=1,i[1]=1,i[2]=1;else{let e,o=0;for(let s=2;s>=0;s--){const u=t[s];let m;const a=null!=u,l=0===s&&!e&&!a,c=n[s];"symbol-value"===u||l?m=0!==c?r[s]/c:1:a&&"proportional"!==u&&isFinite(u)&&(m=0!==c?u/c:1),null!=m&&(i[s]=m,e=m,o=Math.max(o,Math.abs(m)))}for(let t=2;t>=0;t--)null==i[t]?i[t]=e:0===i[t]&&(i[t]=.001*o)}for(let e=2;e>=0;e--)i[e]/=o;return m(i)}function O(t){return null!=t.isPrimitive}function U(t){return O(t)&&(t=[t.width,t.depth,t.height]),S(t)?null:"Symbol sizes may not be negative values"}function S(t){if(Array.isArray(t)){for(const e of t)if(!S(e))return!1;return!0}return null==t||t>=0}function V(t,e,s,u=i()){const m=t||0,a=e||0,l=s||0;return 0!==m&&r(u,u,-m/180*Math.PI),0!==a&&n(u,u,a/180*Math.PI),0!==l&&o(u,u,l/180*Math.PI),u}function X(t,e){return null!=e.minDemResolution?e.minDemResolution:p(t)?e.minDemResolutionForPoints:.01*h(t)}const Z={"bottom-left":s(0,0),bottom:s(.5,0),"bottom-right":s(1,0),left:s(0,.5),center:s(.5,.5),right:s(1,.5),"top-left":s(0,1),top:s(.5,1),"top-right":s(1,1)};export{R as computeCentroid,V as computeObjectRotation,I as computeObjectScale,X as demResolutionForBoundingBox,F as enlargeExtent,S as isValidSize,B as mixinColorAndOpacity,Z as namedAnchorToHUDMaterialAnchorPos,D as overrideColor,z as updateVertexAttributeAuxpos1w,U as validateSymbolLayerSize};
5
+ import{isSome as t,isNone as e}from"../../../../core/maybe.js";import{g as r,r as n,o}from"../../../../chunks/mat4.js";import{c as i}from"../../../../chunks/mat4f64.js";import{f as s}from"../../../../chunks/vec2f64.js";import{O as u,d as a}from"../../../../chunks/vec3f64.js";import{s as c}from"../../../../chunks/vec4.js";import{b as l,O as m}from"../../../../chunks/vec4f64.js";import{projectPoint as f}from"../../../../geometry/projection.js";import{isPoint as p,maximumDimension as h}from"../../../../geometry/support/aaBoundingBox.js";import{create as g}from"../../../../geometry/support/aaBoundingRect.js";import{ringsCentroid as y}from"../../../../geometry/support/centroid.js";import{getPointOnPath as d,getPathLength as b}from"../../../../geometry/support/coordsUtils.js";import{makeDehydratedPoint as j}from"../../../../layers/graphics/dehydratedFeatures.js";import{isHydratedGeometry as x,clonePoint as w}from"../../../../layers/graphics/hydratedFeatures.js";import{TextRenderAlignment as R}from"../../webgl-engine/lib/TextRenderer.js";import{VertexAttribute as v}from"../../webgl-engine/lib/VertexAttribute.js";function A(t,e){if("point"===t.type)return F(t,e,!1);if(x(t))switch(t.type){case"extent":return F(t.center,e,!1);case"polygon":return F(t.centroid,e,!1);case"polyline":return F(k(t),e,!0);case"mesh":return F(t.origin,e,!1)}else switch(t.type){case"extent":return F(M(t),e,!0);case"polygon":return F(P(t),e,!0);case"polyline":return F(k(t),e,!0)}}function k(t){const e=t.paths[0];if(!e||0===e.length)return null;const r=d(e,b(e)/2);return j(r[0],r[1],r[2],t.spatialReference)}function M(t){const e=isFinite(t.zmin);return j(.5*(t.xmax+t.xmin),.5*(t.ymax+t.ymin),e?.5*(t.zmax+t.zmin):void 0,t.spatialReference)}function P(t){const e=t.rings[0];if(!e||0===e.length)return null;const r=y(t.rings,t.hasZ);return j(r[0],r[1],r[2],t.spatialReference)}function F(t,e,r){const n=r?t:w(t);return e&&t?f(t,n,e)?n:null:n}function z(t,e,r,n=0){if(t){e||(e=g());const o=t;let i=.5*o.width*(r-1),s=.5*o.height*(r-1);return o.width<1e-7*o.height?i+=s/20:o.height<1e-7*o.width&&(s+=i/20),c(e,o.xmin-i-n,o.ymin-s-n,o.xmax+i+n,o.ymax+s+n),e}return null}function B(t,e){for(let r=0;r<t.geometries.length;++r){const n=t.geometries[r].getMutableAttribute(v.AUXPOS1);n&&n.data[3]!==e&&(n.data[3]=e,t.geometryVertexAttrsUpdated(t.geometryRecords[r]))}}function D(e,r){const n=l(m);return t(e)&&(n[0]=e[0],n[1]=e[1],n[2]=e[2]),t(r)?n[3]=r:t(e)&&e.length>3&&(n[3]=e[3]),n}function I(e,r,n,o,i,s=[0,0,0,0]){for(let u=0;u<3;++u)t(e)&&null!=e[u]?s[u]=e[u]:t(n)&&null!=n[u]?s[u]=n[u]:s[u]=i[u];return t(r)?s[3]=r:t(o)?s[3]=o:s[3]=i[3],s}function O(t=u,r,n,o=1){const i=new Array(3);if(e(r)||e(n))i[0]=1,i[1]=1,i[2]=1;else{let e,o=0;for(let s=2;s>=0;s--){const u=t[s];let a;const c=null!=u,l=0===s&&!e&&!c,m=n[s];"symbol-value"===u||l?a=0!==m?r[s]/m:1:c&&"proportional"!==u&&isFinite(u)&&(a=0!==m?u/m:1),null!=a&&(i[s]=a,e=a,o=Math.max(o,Math.abs(a)))}for(let t=2;t>=0;t--)null==i[t]?i[t]=e:0===i[t]&&(i[t]=.001*o)}for(let e=2;e>=0;e--)i[e]/=o;return a(i)}function U(t){return null!=t.isPrimitive}function S(t){return U(t)&&(t=[t.width,t.depth,t.height]),V(t)?null:"Symbol sizes may not be negative values"}function V(t){if(Array.isArray(t)){for(const e of t)if(!V(e))return!1;return!0}return null==t||t>=0}function C(t,e,s,u=i()){const a=t||0,c=e||0,l=s||0;return 0!==a&&r(u,u,-a/180*Math.PI),0!==c&&n(u,u,c/180*Math.PI),0!==l&&o(u,u,l/180*Math.PI),u}function L(t,e){return null!=e.minDemResolution?e.minDemResolution:p(t)?e.minDemResolutionForPoints:.01*h(t)}const T={"bottom-left":s(0,0),bottom:s(.5,0),"bottom-right":s(1,0),left:s(0,.5),center:s(.5,.5),right:s(1,.5),"top-left":s(0,1),top:s(.5,1),"top-right":s(1,1)};function X(t){switch(t){case"bottom-left":case"left":case"top-left":return R.Left;case"bottom-right":case"right":case"top-right":return R.Right;default:return R.Center}}export{A as computeCentroid,C as computeObjectRotation,O as computeObjectScale,L as demResolutionForBoundingBox,z as enlargeExtent,V as isValidSize,D as mixinColorAndOpacity,T as namedAnchorToHUDMaterialAnchorPos,I as overrideColor,X as textRenderAlignmentFromAnchorType,B as updateVertexAttributeAuxpos1w,S as validateSymbolLayerSize};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import"../../../../core/has.js";import e from"../../../../core/Logger.js";import{isNone as t,isSome as r}from"../../../../core/maybe.js";import{a as n}from"../../../../chunks/vec2f64.js";import{s as a,l as c}from"../../../../chunks/vec3.js";import{f as l,c as o}from"../../../../chunks/vec3f64.js";import{f as s}from"../../../../chunks/vec4f64.js";import{create as i,center as f,height as p}from"../../../../geometry/support/aaBoundingBox.js";import{getGraphics3DSymbol as m}from"./graphicSymbolUtils.js";import{HUDMaterial as h}from"../../webgl-engine/materials/HUDMaterial.js";const u=e.getLogger("esri.views.3d.layers.graphics.labelPlacement");function b(e){const r=k(e);if(t(r))return null;const a=g(e,r);if(t(a))return null;const c=a.anchor,l=!!r.hasLabelVerticalOffset;return P({anchor:c,verticalOffset:r.verticalOffset,screenOffset:n(),centerOffset:s(0,0,0,-1),centerOffsetUnits:"world",translation:o(),elevationOffset:0,hasLabelVerticalOffset:l},a,e)}function g(e,t){if(t.anchor)return t;const r=e.labelClass.labelPlacement,n=V[r],a=n||y(e);return r&&!n&&u.warnOncePerTick(`the requested label placement '${r}' is not currently supported in SceneView`),d(a,e)}function O(e){const t=e.graphics3DGraphic.graphics3DSymbol,n=m(t);return r(n)?n.symbol.symbolLayers.getItemAt(0):null}function d(e,n){const a=n.graphics3DGraphic.graphic.geometry;if(t(a))return null;if(r(n.disablePlacement)){return n.labelClass.labelPlacement?(u.warnOncePerTick(v(e.placement,n.disablePlacement.logEntityDescription)),y(n)):e}const c=a.type;switch(c){case"polyline":case"polygon":case"extent":case"multipoint":if(n.labelClass.labelPlacement)return u.warnOncePerTick(v(e.placement,`'${c}' geometries`)),y(n);break;case"point":case"mesh":return e}return e}function v(e,t){return`the requested label placement '${e}' is currently unsupported for ${t} in SceneView`}function y(e){const n=e.graphics3DGraphic.graphic.geometry;if(t(n))return null;switch(n.type){case"polyline":case"extent":case"multipoint":return{placement:"center-center",normalizedOffset:null,anchor:"center"};case"polygon":{const t=O(e);return r(t)&&"extrude"===t.type?V["above-center"]:{placement:"center-center",normalizedOffset:null,anchor:"center"}}case"point":case"mesh":return V["above-center"];default:return}}function P(e,r,n){const a=n.graphics3DGraphic.graphic.geometry;if(t(a))return null;switch(a.type){case"point":L(e,r,n);break;case"polygon":w(e,r,n);break;case"mesh":S(e,r,n.graphics3DGraphic.graphics[0])}return e}function w(e,n,c){const l=O(c);if(!t(l))switch(l.type){case"extrude":{const t=c.graphics3DGraphic.graphics[0];r(t)?(t.getBoundingBoxObjectSpace(T),f(T,e.translation),e.translation[2]=p(T)/2):a(e.translation,0,0,0),S(e,n,t);break}}}function L(e,n,c){const l=O(c);if(t(l))return;const o=c.graphics3DGraphic.graphics[0];switch(r(o)?o.getCenterObjectSpace(e.translation):a(e.translation,0,0,0),l.type){case"icon":case"text":z(e,n,c,o);break;case"object":S(e,n,o)}}function z(e,t,n,a){const{graphics3DGraphic:c}=n,l=r(a)?a.getScreenSize():null;if(!c.isDraped&&r(l)){const r=j(n);G[0]=l[0]/2*(t.normalizedOffset[0]-r[0]),G[1]=l[1]/2*(t.normalizedOffset[1]-r[1]),e.screenOffset[0]=G[0],e.hasLabelVerticalOffset?(e.centerOffset[1]=G[1],e.centerOffsetUnits="screen"):e.screenOffset[1]=G[1]}else e.hasLabelVerticalOffset||"center"===e.anchor||(V[n.labelClass.labelPlacement]&&u.warnOncePerTick(`the requested placement '${t.placement}' is currently unsupported for draped graphics`),e.anchor="center")}function j(e,t=B){const{graphics3DGraphic:n}=e,a=n.graphics[0],c=r(a)?a.stageObject.geometryRecords[0].material:null;if(c&&c instanceof h){const e=c.parameters.anchorPos;t[0]=2*(e[0]-.5),t[1]=2*(e[1]-.5)}else t[0]=0,t[1]=0;return t}function S(e,t,n){const a=r(n)?n.getBoundingBoxObjectSpace(T):T,o=l(a[3]-a[0],a[4]-a[1],a[5]-a[2]),s=Math.sqrt(o[0]*o[0]+o[1]*o[1]);e.centerOffset[0]=s/2*t.normalizedOffset[0];const i=e.translation[2],f=o[2]/2*t.normalizedOffset[1];e.translation[2]=0,e.elevationOffset=i+f;const p=c(o);e.centerOffset[2]=p/2*t.normalizedOffset[2]}function D(e){return"above-center"===e}function k(e){const t=e.labelClass.labelPlacement,{labelSymbol:n,graphics3DGraphic:a}=e,c=m(a.graphics3DSymbol),l=r(c)?c.symbol:null,o=V[t]||y(e);return"point-3d"===l.type&&l.supportsCallout()&&l.hasVisibleVerticalOffset()&&!a.isDraped?{placement:null,hasLabelVerticalOffset:!1,verticalOffset:C(l.verticalOffset),anchor:null,normalizedOffset:null}:!n||!n.hasVisibleVerticalOffset()||"point-3d"===l.type&&l.supportsCallout()&&l.verticalOffset&&!a.isDraped?{placement:null,verticalOffset:null,anchor:null,normalizedOffset:null,hasLabelVerticalOffset:!1}:D(o.placement)?{placement:"above-center",verticalOffset:C(n.verticalOffset),anchor:"bottom",normalizedOffset:[0,o.normalizedOffset[1],0],hasLabelVerticalOffset:!0}:(u.errorOncePerTick("Callouts and vertical offset on labels are currently only supported with 'above-center' label placement (not with "+t+" placement)"),null)}function C(e){const{screenLength:t,minWorldLength:r,maxWorldLength:n}=e;return{screenLength:t,minWorldLength:r,maxWorldLength:n}}const V={"above-center":{placement:"above-center",normalizedOffset:[0,1,0],anchor:"bottom"},"above-left":{placement:"above-left",normalizedOffset:[-1,1,0],anchor:"bottom-right"},"above-right":{placement:"above-right",normalizedOffset:[1,1,0],anchor:"bottom-left"},"below-center":{placement:"below-center",normalizedOffset:[0,-1,2],anchor:"top"},"below-left":{placement:"below-left",normalizedOffset:[-1,-1,0],anchor:"top-right"},"below-right":{placement:"below-right",normalizedOffset:[1,-1,0],anchor:"top-left"},"center-center":{placement:"center-center",normalizedOffset:[0,0,1],anchor:"center"},"center-left":{placement:"center-left",normalizedOffset:[-1,0,0],anchor:"right"},"center-right":{placement:"center-right",normalizedOffset:[1,0,0],anchor:"left"}},x={"above-center":["default","esriServerPointLabelPlacementAboveCenter"],"above-left":["esriServerPointLabelPlacementAboveLeft"],"above-right":["esriServerPointLabelPlacementAboveRight"],"below-center":["esriServerPointLabelPlacementBelowCenter"],"below-left":["esriServerPointLabelPlacementBelowLeft"],"below-right":["esriServerPointLabelPlacementBelowRight"],"center-center":["esriServerPointLabelPlacementCenterCenter"],"center-left":["esriServerPointLabelPlacementCenterLeft"],"center-right":["esriServerPointLabelPlacementCenterRight"]};for(const $ in x){const e=x[$],t=V[$];e.forEach((e=>{V[e]=t}))}Object.freeze&&(Object.freeze(V),Object.keys(V).forEach((function(e){Object.freeze(V[e]),Object.freeze(V[e].normalizedOffset)})));const G=[0,0],B=[0,0],T=i();export{b as get};
5
+ import"../../../../core/has.js";import e from"../../../../core/Logger.js";import{isNone as t,isSome as r,applySome as n}from"../../../../core/maybe.js";import{a}from"../../../../chunks/vec2f64.js";import{s as c,l}from"../../../../chunks/vec3.js";import{f as o,c as s}from"../../../../chunks/vec3f64.js";import{f as i}from"../../../../chunks/vec4f64.js";import{create as f,center as m,height as p}from"../../../../geometry/support/aaBoundingBox.js";import{getGraphics3DSymbol as h}from"./graphicSymbolUtils.js";import{HUDMaterial as b}from"../../webgl-engine/materials/HUDMaterial.js";const u=e.getLogger("esri.views.3d.layers.graphics.labelPlacement");function g(e){const r=C(e);if(t(r))return null;const n=O(e,r);if(t(n))return null;const c=n.anchor,l=!!r.hasLabelVerticalOffset;return w({anchor:c,verticalOffset:r.verticalOffset,screenOffset:a(),centerOffset:i(0,0,0,-1),centerOffsetUnits:"world",translation:s(),elevationOffset:0,hasLabelVerticalOffset:l},n,e)}function O(e,t){if(t.anchor)return t;const r=e.labelClass.labelPlacement,n=x[r],a=n||P(e);return r&&!n&&u.warnOncePerTick(`the requested label placement '${r}' is not currently supported in SceneView`),v(a,e)}function d(e){const t=e.graphics3DGraphic.graphics3DSymbol,n=h(t);return r(n)?n.symbol.symbolLayers.getItemAt(0):null}function v(e,n){const a=n.graphics3DGraphic.graphic.geometry;if(t(a))return null;if(r(n.disablePlacement)){return n.labelClass.labelPlacement?(u.warnOncePerTick(y(e.placement,n.disablePlacement.logEntityDescription)),P(n)):e}const c=a.type;switch(c){case"polyline":case"polygon":case"extent":case"multipoint":if(n.labelClass.labelPlacement)return u.warnOncePerTick(y(e.placement,`'${c}' geometries`)),P(n);break;case"point":case"mesh":return e}return e}function y(e,t){return`the requested label placement '${e}' is currently unsupported for ${t} in SceneView`}function P(e){const n=e.graphics3DGraphic.graphic.geometry;if(t(n))return null;switch(n.type){case"polyline":case"extent":case"multipoint":return{placement:"center-center",normalizedOffset:null,anchor:"center"};case"polygon":{const t=d(e);return r(t)&&"extrude"===t.type?x["above-center"]:{placement:"center-center",normalizedOffset:null,anchor:"center"}}case"point":case"mesh":return x["above-center"];default:return}}function w(e,r,n){const a=n.graphics3DGraphic.graphic.geometry;if(t(a))return null;switch(a.type){case"point":z(e,r,n);break;case"polygon":L(e,r,n);break;case"mesh":D(e,r,n.graphics3DGraphic.graphics[0])}return e}function L(e,n,a){const l=d(a);if(!t(l))switch(l.type){case"extrude":{const t=a.graphics3DGraphic.graphics[0];r(t)?(t.getBoundingBoxObjectSpace($),m($,e.translation),e.translation[2]=p($)/2):c(e.translation,0,0,0),D(e,n,t);break}}}function z(e,n,a){const l=d(a);if(t(l))return;const o=a.graphics3DGraphic.graphics[0];switch(r(o)?o.getCenterObjectSpace(e.translation):c(e.translation,0,0,0),l.type){case"icon":case"text":j(e,n,a,o);break;case"object":D(e,n,o)}}function j(e,t,n,a){const{graphics3DGraphic:c}=n,l=r(a)?a.getScreenSize():null;if(!c.isDraped&&r(l)){const r=S(n);B[0]=l[0]/2*(t.normalizedOffset[0]-r[0]),B[1]=l[1]/2*(t.normalizedOffset[1]-r[1]),e.screenOffset[0]=B[0],e.hasLabelVerticalOffset?(e.centerOffset[1]=B[1],e.centerOffsetUnits="screen"):e.screenOffset[1]=B[1]}else e.hasLabelVerticalOffset||"center"===e.anchor||(x[n.labelClass.labelPlacement]&&u.warnOncePerTick(`the requested placement '${t.placement}' is currently unsupported for draped graphics`),e.anchor="center")}function S(e,t=T){const{graphics3DGraphic:n}=e,a=n.graphics[0],c=r(a)?a.stageObject.geometryRecords[0].material:null;if(c&&c instanceof b){const e=c.parameters.anchorPos;t[0]=2*(e[0]-.5),t[1]=2*(e[1]-.5)}else t[0]=0,t[1]=0;return t}function D(e,t,n){const a=r(n)?n.getBoundingBoxObjectSpace($):$,c=o(a[3]-a[0],a[4]-a[1],a[5]-a[2]),s=Math.sqrt(c[0]*c[0]+c[1]*c[1]);e.centerOffset[0]=s/2*t.normalizedOffset[0];const i=e.translation[2],f=c[2]/2*t.normalizedOffset[1];e.translation[2]=0,e.elevationOffset=i+f;const m=l(c);e.centerOffset[2]=m/2*t.normalizedOffset[2]}function k(e){return"above-center"===e}function C(e){const a=e.labelClass.labelPlacement,{labelSymbol:c,graphics3DGraphic:l}=e,o=h(l.graphics3DSymbol),s=n(o,(e=>"point-3d"===e.symbol.type?e.symbol:null)),i=x[a]||P(e);return r(s)&&s.supportsCallout()&&s.hasVisibleVerticalOffset()&&!l.isDraped?{placement:null,hasLabelVerticalOffset:!1,verticalOffset:V(s.verticalOffset),anchor:null,normalizedOffset:null}:c&&c.hasVisibleVerticalOffset()&&(t(s)||!s.supportsCallout()||!s.verticalOffset||l.isDraped)?k(i.placement)?{placement:"above-center",verticalOffset:V(c.verticalOffset),anchor:"bottom",normalizedOffset:[0,i.normalizedOffset[1],0],hasLabelVerticalOffset:!0}:(u.errorOncePerTick("Callouts and vertical offset on labels are currently only supported with 'above-center' label placement (not with "+a+" placement)"),null):{placement:null,verticalOffset:null,anchor:null,normalizedOffset:null,hasLabelVerticalOffset:!1}}function V(e){const{screenLength:t,minWorldLength:r,maxWorldLength:n}=e;return{screenLength:t,minWorldLength:r,maxWorldLength:n}}const x={"above-center":{placement:"above-center",normalizedOffset:[0,1,0],anchor:"bottom"},"above-left":{placement:"above-left",normalizedOffset:[-1,1,0],anchor:"bottom-right"},"above-right":{placement:"above-right",normalizedOffset:[1,1,0],anchor:"bottom-left"},"below-center":{placement:"below-center",normalizedOffset:[0,-1,2],anchor:"top"},"below-left":{placement:"below-left",normalizedOffset:[-1,-1,0],anchor:"top-right"},"below-right":{placement:"below-right",normalizedOffset:[1,-1,0],anchor:"top-left"},"center-center":{placement:"center-center",normalizedOffset:[0,0,1],anchor:"center"},"center-left":{placement:"center-left",normalizedOffset:[-1,0,0],anchor:"right"},"center-right":{placement:"center-right",normalizedOffset:[1,0,0],anchor:"left"}},G={"above-center":["default","esriServerPointLabelPlacementAboveCenter"],"above-left":["esriServerPointLabelPlacementAboveLeft"],"above-right":["esriServerPointLabelPlacementAboveRight"],"below-center":["esriServerPointLabelPlacementBelowCenter"],"below-left":["esriServerPointLabelPlacementBelowLeft"],"below-right":["esriServerPointLabelPlacementBelowRight"],"center-center":["esriServerPointLabelPlacementCenterCenter"],"center-left":["esriServerPointLabelPlacementCenterLeft"],"center-right":["esriServerPointLabelPlacementCenterRight"]};for(const q in G){const e=G[q],t=x[q];e.forEach((e=>{x[e]=t}))}Object.freeze&&(Object.freeze(x),Object.keys(x).forEach((function(e){Object.freeze(x[e]),Object.freeze(x[e].normalizedOffset)})));const B=[0,0],T=[0,0],$=f();export{g as get};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../chunks/tslib.es6.js";import{HandleOwner as t}from"../../../../core/HandleOwner.js";import{makeHandle as r}from"../../../../core/handleUtils.js";import{property as i}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as o}from"../../../../core/accessorSupport/decorators/subclass.js";import{UpdatePolicy as s}from"../../webgl-engine/lib/basicInterfaces.js";let n=class extends t{constructor(e){super(e),this.type="heatmap",this.filterVisibility={filterChanged(){},dirty:!1},this.preferredUpdatePolicy=s.ASYNC,this.dataExtent=null}initialize(){this.updatingHandles.addOnCollectionChange((()=>this.owner.loadedGraphics),(e=>{}))}destroy(){}get layer(){return this.owner.layer}get updating(){return this.updatingHandles.updating}get updatingRemaining(){return 0}get suspendInfo(){return{}}get legendEnabled(){return!0}get displayFeatureLimit(){return{minimumTotalNumberOfFeatures:0,maximumTotalNumberOfFeatures:1e10,maximumTotalNumberOfPrimitives:1e10,maximumNumberOfFeatures:1e10}}get scaleVisibilitySuspended(){return!1}get usedMemory(){return 0}get usedMemoryPerFeature(){return 0}get unprocessedMemoryEstimate(){return 0}get performanceInfo(){return{core:{visible:0,missing:0,pending:0},elevationUpdating:!1,visibilityFrustum:!0,visibilityScale:!0}}async whenGraphicBounds(){return null}computeAttachmentOrigin(){return null}highlight(){return a}maskOccludee(){return a}setObjectIdVisibility(){}};e([i()],n.prototype,"type",void 0),e([i()],n.prototype,"owner",void 0),e([i()],n.prototype,"layer",null),e([i()],n.prototype,"featureStore",void 0),e([i()],n.prototype,"updating",null),e([i()],n.prototype,"updatingRemaining",null),e([i()],n.prototype,"suspendInfo",null),e([i()],n.prototype,"legendEnabled",null),e([i()],n.prototype,"filterVisibility",void 0),e([i()],n.prototype,"displayFeatureLimit",null),e([i()],n.prototype,"preferredUpdatePolicy",void 0),e([i()],n.prototype,"dataExtent",void 0),n=e([o("esri.views.3d.layers.support.HeatmapFeatureProcessor")],n);const a=r();export{n as HeatmapFeatureProcessor};
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import{HandleOwner as r}from"../../../../core/HandleOwner.js";import{makeHandle as t}from"../../../../core/handleUtils.js";import{applySome as i,disposeMaybe as o,unwrap as a,mapSome as s}from"../../../../core/maybe.js";import{initial as n}from"../../../../core/reactiveUtils.js";import{property as l}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as p}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as d}from"../../../../chunks/vec3f64.js";import{projectPointToVector as m}from"../../../../geometry/projection.js";import{convertFromPoint as u}from"../../../../layers/graphics/featureConversionUtils.js";import h from"../../../../layers/graphics/OptimizedFeature.js";import y from"../../../../layers/graphics/OptimizedGeometry.js";import c from"../../../../layers/graphics/data/FeatureStore.js";import{DRAPED_Z as g}from"../../terrain/OverlayRenderer.js";import{UpdatePolicy as f,PrimitiveType as _}from"../../webgl-engine/lib/basicInterfaces.js";import{Geometry as v}from"../../webgl-engine/lib/Geometry.js";import{ModelDirty as b}from"../../webgl-engine/lib/ModelDirtyTypes.js";import{RenderGeometry as w}from"../../webgl-engine/lib/RenderGeometry.js";import{VertexAttribute as j}from"../../webgl-engine/lib/VertexAttribute.js";import{HeatmapDensityMaterial as G}from"../../webgl-engine/materials/HeatmapDensityMaterial.js";let R=class extends r{constructor(e){super(e),this.type="heatmap",this.filterVisibility={filterChanged(){},dirty:!1},this.preferredUpdatePolicy=f.ASYNC,this.dataExtent=null,this._renderGeometries=new Map,this._material=new G({})}initialize(){this._featureStore=new c({geometryType:"esriGeometryPoint",hasZ:this.hasZ,hasM:this.hasM}),this.updatingHandles.addOnCollectionChange((()=>this._loadedPointGraphics),(e=>this._onLoadedFeaturesChange(e))),this.updatingHandles.addWhen((()=>i(this._heatmapRenderer,(e=>e.blurRadius))),(e=>this._material.setParameters({searchRadius:e})),n)}destroy(){this._overlayRenderer.removeGeometries(Array.from(this._renderGeometries.values()),this.owner,b.Geometry.REMOVE),this._renderGeometries.clear(),this._material=o(this._material),this._featureStore.clear(),this._featureStore=null}get layer(){return this.owner.layer}get featureStore(){return this._featureStore}get updating(){return this.updatingHandles.updating}get updatingRemaining(){return 0}get suspendInfo(){return{}}get legendEnabled(){return!0}get displayFeatureLimit(){return{minimumTotalNumberOfFeatures:0,maximumTotalNumberOfFeatures:1e10,maximumTotalNumberOfPrimitives:1e10,maximumNumberOfFeatures:1e10}}get hasZ(){return"hasZ"in this.layer&&this.layer.hasZ}get hasM(){return"hasM"in this.layer&&this.layer.hasM}get scaleVisibilitySuspended(){return!1}get usedMemory(){return 0}get usedMemoryPerFeature(){return 0}get unprocessedMemoryEstimate(){return 0}get performanceInfo(){return{core:{visible:0,missing:0,pending:0},elevationUpdating:!1,visibilityFrustum:!0,visibilityScale:!0}}get _overlayRenderer(){return this.owner.view.basemapTerrain.overlayManager.renderer}get _overlaySpatialReference(){return a(this._overlayRenderer.spatialReference)}get _renderView(){return this.owner.view._stage.renderView}get _featuresArePoints(){return"point"===this.layer.geometryType}get _loadedPointGraphics(){return this.owner.loadedGraphics}get _heatmapRenderer(){const e=this.layer.renderer;return"heatmap"===(null==e?void 0:e.type)?e:null}async whenGraphicBounds(){return null}computeAttachmentOrigin(){return null}highlight(){return S}maskOccludee(){return S}setObjectIdVisibility(){}async setup(){}_onLoadedFeaturesChange(e){if(!this._featuresArePoints)return;this._featureStore.addMany(e.added.map((e=>new h(u(new y,e.geometry),e.attributes,i(e.centroid,(e=>u(new y,e))),e.objectId)))),this._featureStore.removeManyById(e.removed.map((({objectId:e})=>e)));const r=e.added,t=e.removed,o=s(t,(({uid:e})=>{const r=this._renderGeometries.get(e);return this._renderGeometries.delete(e),r})),a=r.map((e=>{const r=this._pointGraphicToRenderGeometry(e);return this._renderGeometries.set(e.uid,r),r}));a.length>0&&this._overlayRenderer.addGeometries(a,this.owner,b.Geometry.ADD,!0),o.length>0&&this._overlayRenderer.removeGeometries(o,this.owner,b.Geometry.REMOVE),(a.length>0||o.length>0)&&this._renderView.requestRender()}_pointGraphicToRenderGeometry(e){const r=this._material,t=d();m(e.geometry,t,this._overlaySpatialReference,g);return new w(new v([[j.POSITION,{data:t,size:t.length}]],null,_.Point),r,{layerUid:this.layer.uid,graphicUid:e.uid})}};e([l()],R.prototype,"type",void 0),e([l({constructOnly:!0})],R.prototype,"owner",void 0),e([l()],R.prototype,"layer",null),e([l()],R.prototype,"featureStore",null),e([l()],R.prototype,"updating",null),e([l()],R.prototype,"updatingRemaining",null),e([l()],R.prototype,"suspendInfo",null),e([l()],R.prototype,"legendEnabled",null),e([l()],R.prototype,"filterVisibility",void 0),e([l()],R.prototype,"displayFeatureLimit",null),e([l()],R.prototype,"preferredUpdatePolicy",void 0),e([l()],R.prototype,"hasZ",null),e([l()],R.prototype,"hasM",null),e([l()],R.prototype,"dataExtent",void 0),e([l()],R.prototype,"_featureStore",void 0),e([l()],R.prototype,"_overlayRenderer",null),e([l()],R.prototype,"_overlaySpatialReference",null),e([l()],R.prototype,"_renderGeometries",void 0),e([l()],R.prototype,"_material",void 0),e([l()],R.prototype,"_renderView",null),e([l()],R.prototype,"_featuresArePoints",null),e([l()],R.prototype,"_loadedPointGraphics",null),e([l()],R.prototype,"_heatmapRenderer",null),R=e([p("esri.views.3d.layers.support.HeatmapFeatureProcessor")],R);const S=t();export{R as HeatmapFeatureProcessor};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../chunks/tslib.es6.js";import r from"../../../core/Accessor.js";import t from"../../../core/Evented.js";import s from"../../../core/Handles.js";import i from"../../../core/Logger.js";import{someMap as a}from"../../../core/MapUtils.js";import{releaseMaybe as o,disposeMaybe as n,isSome as h,unwrapOr as l,isNone as d,unwrap as c}from"../../../core/maybe.js";import u from"../../../core/PooledArray.js";import{someSet as p}from"../../../core/SetUtils.js";import{init as g}from"../../../core/watchUtils.js";import{property as m}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as y}from"../../../core/accessorSupport/decorators/subclass.js";import{q as _,f}from"../../../chunks/mat4.js";import{a as R}from"../../../chunks/vec2f64.js";import{f as T,c as b}from"../../../chunks/vec3f64.js";import{I as w}from"../../../chunks/mat4f64.js";import{ViewingMode as v}from"../../ViewingMode.js";import{DrapeTargetType as x,DrapeSourceType as O}from"../layers/interfaces.js";import E from"../support/debugFlags.js";import{OverlayIndex as L,RenderTargetType as j}from"./interfaces.js";import{Overlay as A}from"./Overlay.js";import{OverlayFramebufferObject as S}from"./OverlayFramebufferObject.js";import{OverlayRenderTarget as C}from"./OverlayRenderTarget.js";import{ShaderTechniqueRepository as P}from"../webgl-engine/core/shaderTechnique/ShaderTechniqueRepository.js";import{autoDispose as D,AutoDisposableMixin as G}from"../webgl-engine/lib/AutoDisposable.js";import{TransparencyPassType as I,UpdatePolicy as M}from"../webgl-engine/lib/basicInterfaces.js";import V from"../webgl-engine/lib/Camera.js";import{GLMaterialRepository as U}from"../webgl-engine/lib/GLMaterialRepository.js";import{createEmptyDepthTexture as F,createQuadVAO as q}from"../webgl-engine/lib/glUtil3D.js";import{GridLocalOriginFactory as H}from"../webgl-engine/lib/GridLocalOriginFactory.js";import{newIntersectorResult as W}from"../webgl-engine/lib/Intersector.js";import{StoreResults as N,IntersectorType as B}from"../webgl-engine/lib/IntersectorInterfaces.js";import{RenderOccludedFlag as k}from"../webgl-engine/lib/Material.js";import{ModelDirty as z}from"../webgl-engine/lib/ModelDirtyTypes.js";import{OverlayRenderContext as Y}from"../webgl-engine/lib/RenderContext.js";import{RenderPass as X}from"../webgl-engine/lib/RenderPass.js";import{RenderSlot as Q}from"../webgl-engine/lib/RenderSlot.js";import{SortedRenderGeometryRenderer as J}from"../webgl-engine/lib/SortedRenderGeometryRenderer.js";import{TextureTechniqueConfiguration as K,TextureTechnique as Z}from"../webgl-engine/lib/TextureTechnique.js";import{AmbientLight as $}from"../webgl-engine/lighting/Lightsources.js";import{SceneLighting as ee}from"../webgl-engine/lighting/SceneLighting.js";import{StippleTextureRepository as re}from"../webgl-engine/materials/StippleTextureRepository.js";import{C as te}from"../../../chunks/Compositing.glsl.js";import{AlphaMode as se}from"../webgl-engine/shaders/CompositingTechnique.js";import{ImmediateTask as ie,TaskPriority as ae,noBudget as oe}from"../../support/Scheduler.js";import{ClearBufferBit as ne,PrimitiveType as he,TextureType as le,PixelFormat as de,PixelType as ce,TextureSamplingMode as ue}from"../../webgl/enums.js";import{Texture as pe}from"../../webgl/Texture.js";import{vertexCount as ge}from"../../webgl/Util.js";const me=i.getLogger("esri.views.3d.webgl-engine.lib.OverlayRenderer");let ye=class extends(G(r)){constructor(e){super(e),this._overlays=null,this._overlayRenderTarget=null,this._hasHighlights=!1,this._rendersOccluded=!1,this._hasWater=!1,this._lighting=new ee,this._handles=new s,this._frameTask=ie,this._layerRenderers=new Map,this._sortedLayerRenderersDirty=!1,this._sortedLayerRenderers=new u,this._geometries=new Map,this.worldToPCSRatio=1,this.events=new t,this.longitudeCyclical=null}initialize(){const e=this.view._stage.renderView;this._rctx=e.renderingContext,this._renderContext=new Y(this._rctx);const r=e.waterTextureRepository;this._stippleTextureRepository=new re(e.renderingContext),this._shaderTechniqueRepository=new P({rctx:this._rctx,viewingMode:v.Local,stippleTextureRepository:this._stippleTextureRepository,waterTextureRepository:r}),this._handles.add([g(r,"loadingState",(()=>this.events.emit("content-changed"))),g(this,"spatialReference",(e=>this._localOrigins=new H(e)))]),this._materialRepository=new U(e.textureRepository,this._shaderTechniqueRepository,(e=>{(e.renderOccluded&Oe)>0!==this._rendersOccluded&&this._updateRendersOccluded(),this.events.emit("content-changed"),this.notifyChange("updating")}),(()=>this.events.emit("content-changed"))),this._lighting.groundLightingFactor=1,this._lighting.globalFactor=0,this._lighting.set([new $(T(1,1,1))]),this._bindParameters={slot:Q.DRAPED_MATERIAL,highlightDepthTexture:F(this._rctx),camera:be,inverseViewport:R(),origin:null,screenToWorldRatio:null,screenToPCSRatio:null,shadowMappingEnabled:!1,slicePlane:null,ssaoEnabled:!1,hasOccludees:!1,linearDepthTexture:null,lastFrameColorTexture:null,reprojectionMatrix:w,ssrEnabled:!1,lighting:this._lighting,transparencyPassType:I.NONE,terrainLinearDepthTexture:null,geometryLinearDepthTexture:null,multipassTerrainEnabled:!1,cullAboveGround:!1,multipassGeometryEnabled:!1,highlightColorTexture:null,cloudsCompositionParams:null},this._frameTask=this.view.resourceController.scheduler.registerTask(ae.STAGE,this),this._handles.add(this._frameTask)}dispose(){this._handles.destroy(),this._layerRenderers.forEach((e=>e.dispose())),this._layerRenderers.clear(),this._debugTextureTechnique=o(this._debugTextureTechnique),this._debugPatternTexture=n(this._debugPatternTexture),this._bindParameters.highlightDepthTexture=n(this._bindParameters.highlightDepthTexture),this._shaderTechniqueRepository=n(this._shaderTechniqueRepository),this._temporaryFBO=n(this._temporaryFBO),this._quadVAO=n(this._quadVAO),this.disposeOverlays()}get updating(){return this._sortedLayerRenderersDirty||this._frameTask.updating||a(this._layerRenderers,(e=>e.updating))}get hasOverlays(){return h(this._overlays)&&h(this._overlayRenderTarget)}get gpuMemoryUsage(){return h(this._overlayRenderTarget)?this._overlayRenderTarget.gpuMemoryUsage:0}collectUnusedRenderTargetMemory(e){let r=!1;if(h(this._overlayRenderTarget))for(const t of this._overlayRenderTarget.renderTargets){const s=this.overlays[0].validTargets[t.type]||!this.overlays[1].validTargets[t.type];r=this._overlayRenderTarget.validateUsageForTarget(s,t,e)||r}return r}get overlays(){return l(this._overlays,[])}ensureDrapeTargets(e){h(this._overlays)&&this._overlays.forEach((r=>{r.hasTargetWithoutRasterImage=p(e,(e=>e.drapeTargetType===x.WithoutRasterImage))}))}ensureDrapeSources(e){h(this._overlays)&&this._overlays.forEach((r=>{r.hasDrapedFeatureSource=a(e,((e,r)=>r.drapeSourceType===O.Features)),r.hasDrapedRasterSource=a(e,((e,r)=>r.drapeSourceType===O.RasterImage))}))}ensureOverlays(e,r){d(this._overlays)&&(this._overlayRenderTarget=new C(this._rctx),this._overlays=[new A(L.INNER,this._overlayRenderTarget),new A(L.OUTER,this._overlayRenderTarget)]),this.ensureDrapeTargets(e),this.ensureDrapeSources(r)}disposeOverlays(){this._overlays=null,this._overlayRenderTarget=n(this._overlayRenderTarget),this.events.emit("textures-disposed")}get running(){return this.updating}runTask(e,r=(()=>!0)){this._frameTask.processQueue(e),e.done||this._processLayers(e,r)}_processLayers(e,r){let t=!1;for(const[s,i]of this._layerRenderers){if(e.done)break;(s.destroyed||r(s))&&(i.commitChanges()&&(t=!0,e.madeProgress()),i.isEmpty&&(t=!0,this._sortedLayerRenderersDirty=!0,this._layerRenderers.delete(s),this._handles.remove(s)))}this._updateSortedLayerRenderers(),t&&(h(this._overlays)&&0===this._layerRenderers.size&&this.disposeOverlays(),this.notifyChange("updating"),this.events.emit("content-changed"),this._updateHasHighlights(),this._updateRendersOccluded(),this._updateHasWater())}processSyncLayers(){this._processLayers(oe,(e=>e.updatePolicy===M.SYNC))}addGeometries(e,r,t){for(const s of e)d(s.origin)&&(s.origin=this._localOrigins.getOrigin(s.boundingSphere)),this._geometries.set(s.id,s);this._ensureLayerRenderer(r).add(e),t===z.Geometry.UPDATE&&this._notifyGraphicGeometryChanged(e,r)}removeGeometries(e,r,t){for(const i of e)this._geometries.delete(c(i.id));const s=this._layerRenderers.get(r);s&&(s.remove(e),t===z.Geometry.UPDATE&&this._notifyGraphicGeometryChanged(e,r))}updateGeometries(e,r,t){const s=this._layerRenderers.get(r);if(s)switch(s.modify(e,t),t){case z.State.TRANSFORMATION:case z.State.VERTEXATTRS:return this._notifyGraphicGeometryChanged(e,r);case z.State.VISIBILITIES:return this._notifyGraphicVisibilityChanged(e,r)}else me.warn("Attempted to update geometry for nonexistent layer")}_notifyGraphicGeometryChanged(e,r){if(d(r.notifyGraphicGeometryChanged))return;let t;for(const s of e){const e=s.graphicUid;h(e)&&e!==t&&(r.notifyGraphicGeometryChanged(e),t=e)}}_notifyGraphicVisibilityChanged(e,r){if(d(r.notifyGraphicVisibilityChanged))return;let t;for(const s of e){const e=s.graphicUid;h(e)&&e!==t&&(r.notifyGraphicVisibilityChanged(e),t=e)}}updateHighlights(e,r){const t=this._layerRenderers.get(r);t?t.modify(e,z.State.HIGHLIGHTS):me.warn("Attempted to update highlights for nonexistent layer")}isEmpty(){return 0===this._geometries.size&&!E.OVERLAY_DRAW_DEBUG_TEXTURE}get hasHighlights(){return this._hasHighlights}get hasWater(){return this._hasWater}get rendersOccluded(){return this._rendersOccluded}updateAnimation(e){let r=!1;return this._layerRenderers.forEach((t=>r=t.updateAnimation(e)||r)),r}updateLayerOrder(){this._sortedLayerRenderersDirty=!0}drawTarget(e,r,t){const s=e.canvasGeometries;if(0===s.numViews)return!1;this._screenToWorldRatio=t*e.mapUnitsPerPixel;const i=r.renderPass;if(this.isEmpty()||i===X.MATERIAL_HIGHLIGHT&&!this.hasHighlights||i===X.MATERIAL_NORMAL&&!this.hasWater||!e.hasSomeSizedView())return!1;const a=r.fbo;if(!a.isValid())return!1;const o=2*e.resolution,n=e.resolution;a.resize(o,n);const l=this._rctx;be.pixelRatio=e.pixelRatio*t,this._renderContext.pass=i,this._bindParameters.screenToWorldRatio=this._screenToWorldRatio,this._bindParameters.screenToPCSRatio=this._screenToWorldRatio*this.worldToPCSRatio,this._bindParameters.slot=i===X.MATERIAL_NORMAL?Q.DRAPED_WATER:Q.DRAPED_MATERIAL,e.applyViewport(this._rctx),a.bind(l),e.index===L.INNER&&(l.setClearColor(0,0,0,0),l.clearSafe(ne.COLOR_BUFFER_BIT));const d=r.type===j.ColorNoRasterImage?_e.ExcludeRasterImage:r.type===j.Occluded?_e.OccludedOnly:_e.Normal;if(d===_e.OccludedOnly&&(this._renderContext.renderOccludedMask=Oe),E.OVERLAY_DRAW_DEBUG_TEXTURE&&d!==_e.OccludedOnly)for(let h=0;h<s.numViews;h++)this._setViewParameters(s.extents[h],e,be),this._drawDebugTexture(e.resolution,Re[e.index]);return this._layerRenderers.size>0&&this._sortedLayerRenderers.forAll((({overlayLayer:r,renderer:t})=>{if(d===_e.ExcludeRasterImage&&r.drapeSourceType===O.RasterImage)return;const{fullOpacity:c}=r,u=h(c)&&c<1&&i===X.MATERIAL;u&&(this.bindTemporaryFramebuffer(this._rctx,o,n),l.clearSafe(ne.COLOR_BUFFER_BIT));for(let i=0;i<s.numViews;i++)this._setViewParameters(s.extents[i],e,be),t.render(this._renderContext,this._bindParameters);u&&h(this._temporaryFBO)&&(a.bind(l),this.view._stage.renderView.compositingHelper.composite(this._temporaryFBO.getTexture(),se.PremultipliedAlpha,c,te.OverlayWithTransparency,e.index))})),l.bindFramebuffer(null),a.generateMipMap(),this._renderContext.resetRenderOccludedMask(),!0}bindTemporaryFramebuffer(e,r,t){d(this._temporaryFBO)&&(this._temporaryFBO=new S(e,!1)),this._temporaryFBO.resize(r,t),this._temporaryFBO.bind(e)}async reloadShaders(){await this._shaderTechniqueRepository.reloadAll()}intersect(e,r,t,s){let i=0;this._geometries.forEach((a=>{if(s&&!s(a))return;this._intersectRenderGeometry(a,t,r,0,e,i);const o=this.longitudeCyclical;o&&(a.boundingSphere[0]-a.boundingSphere[3]<o.min&&this._intersectRenderGeometry(a,t,r,o.range,e,i),a.boundingSphere[0]+a.boundingSphere[3]>o.max&&this._intersectRenderGeometry(a,t,r,-o.range,e,i)),i++}))}_intersectRenderGeometry(e,r,t,s,i,a){if(!e.instanceParameters.visible)return;let o=0;h(e.transformation)&&(s+=e.transformation[12],o=e.transformation[13]),we[0]=t[0]-s,we[1]=t[1]-o,we[2]=1,ve[0]=t[0]-s,ve[1]=t[1]-o,ve[2]=0,e.screenToWorldRatio=this._screenToWorldRatio,e.material.intersect(e,null,e.getShaderTransformation(),i,we,ve,((t,s,o)=>{Te(r,o,e.material.renderPriority,a,i,e.layerUid,e.graphicUid)}),e.calculateShaderTransformation,r)}_ensureLayerRenderer(e){let r=this._layerRenderers.get(e);return r||(r=new J({rctx:this._rctx,materialRepository:this._materialRepository}),this._layerRenderers.set(e,r),this._sortedLayerRenderersDirty=!0,"fullOpacity"in e&&this._handles.add(e.watch("fullOpacity",(()=>this.events.emit("content-changed"))),e),this._handles.add(g(r,"updating",(()=>this.notifyChange("updating"))),e)),r}_updateSortedLayerRenderers(){if(!this._sortedLayerRenderersDirty)return;if(this._sortedLayerRenderersDirty=!1,this._sortedLayerRenderers.clear(),0===this._layerRenderers.size)return;const e=this.view.map.allLayers;this._layerRenderers.forEach(((r,t)=>{const s=e.indexOf(t.layer);this._sortedLayerRenderers.push(new fe(t,r,s<0?1/0:s))})),this._sortedLayerRenderers.sort(((e,r)=>e.index-r.index))}_setViewParameters(e,r,t){t.viewport[0]=t.viewport[1]=0,t.viewport[2]=t.viewport[3]=r.resolution,_(t.projectionMatrix,0,e[2]-e[0],0,e[3]-e[1],t.near,t.far),f(t.viewMatrix,[-e[0],-e[1],0]),this._renderContext.camera=t,this._bindParameters.camera=t,this._bindParameters.inverseViewport[0]=1/t.fullViewport[2],this._bindParameters.inverseViewport[1]=1/t.fullViewport[3]}_updateHasWater(){const e=a(this._layerRenderers,(e=>e.hasWater));e!==this._hasWater&&(this._hasWater=e,this.events.emit("has-water",e))}_updateHasHighlights(){const e=a(this._layerRenderers,(e=>e.hasHighlights));e!==this._hasHighlights&&(this._hasHighlights=e,this.events.emit("has-highlights",e))}_updateRendersOccluded(){const e=a(this._layerRenderers,(e=>e.rendersOccluded));e!==this._rendersOccluded&&(this._rendersOccluded=e,this.events.emit("renders-occluded",e))}_drawDebugTexture(e,r){this._ensureDebugPatternResources(e,e);const t=this._rctx,s=t.useTechnique(this._debugTextureTechnique);s.setUniform4f("uColor",r[0],r[1],r[2],1),s.bindTexture(this._debugPatternTexture,"tex"),t.bindVAO(this._quadVAO),t.drawArrays(he.TRIANGLE_STRIP,0,ge(this._quadVAO,"geometry"))}_ensureDebugPatternResources(e,r){if(this._debugPatternTexture)return;const t=new Uint8Array(e*r*4);let s=0;for(let a=0;a<r;a++)for(let i=0;i<e;i++){const o=Math.floor(i/10),n=Math.floor(a/10);o<2||n<2||10*o>e-20||10*n>r-20?(t[s++]=255,t[s++]=255,t[s++]=255,t[s++]=255):(t[s++]=255,t[s++]=255,t[s++]=255,t[s++]=1&o&&1&n?1&i^1&a?0:255:1&o^1&n?0:128)}this._debugPatternTexture=new pe(this._rctx,{target:le.TEXTURE_2D,pixelFormat:de.RGBA,dataType:ce.UNSIGNED_BYTE,samplingMode:ue.NEAREST,width:e,height:r},t);const i=new K;i.hasAlpha=!0,this._debugTextureTechnique=this._shaderTechniqueRepository.acquire(Z,i),this._quadVAO=q(this._rctx)}get test(){return{layerRenderers:this._layerRenderers}}};var _e;e([m()],ye.prototype,"_frameTask",void 0),e([m()],ye.prototype,"_sortedLayerRenderersDirty",void 0),e([D()],ye.prototype,"_shaderTechniqueRepository",void 0),e([D()],ye.prototype,"_stippleTextureRepository",void 0),e([m({constructOnly:!0})],ye.prototype,"view",void 0),e([m()],ye.prototype,"worldToPCSRatio",void 0),e([m()],ye.prototype,"spatialReference",void 0),e([m({type:Boolean,readOnly:!0})],ye.prototype,"updating",null),ye=e([y("esri.views.3d.terrain.OverlayRenderer")],ye),function(e){e[e.Normal=0]="Normal",e[e.OccludedOnly=1]="OccludedOnly",e[e.ExcludeRasterImage=2]="ExcludeRasterImage"}(_e||(_e={}));class fe{constructor(e,r,t){this.overlayLayer=e,this.renderer=r,this.index=t}}const Re=[[1,.5,.5],[.5,.5,1]];function Te(e,r,t,s,i,a,o){const n={layerUid:a,graphicUid:o,triangleNr:r},h=r=>{r.set(B.OVERLAY,n,e.dist,e.normal,e.transformation,t,s)};if((null==i.results.min.drapedLayerOrder||t>=i.results.min.drapedLayerOrder)&&(null==i.results.min.dist||i.results.ground.dist<=i.results.min.dist)&&h(i.results.min),i.options.store!==N.MIN&&(null==i.results.max.drapedLayerOrder||t<i.results.max.drapedLayerOrder)&&(null==i.results.max.dist||i.results.ground.dist>i.results.max.dist)&&h(i.results.max),i.options.store===N.ALL){const e=W(i.ray);h(e),i.results.all.push(e)}}const be=new V;be.near=1,be.far=1e4,be.relativeElevation=null;const we=b(),ve=b(),xe=-2,Oe=k.OccludeAndTransparent;export{xe as DRAPED_Z,_e as DrawPassOption,ye as OverlayRenderer,Oe as overlayRenderOccludedFlag};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import r from"../../../core/Accessor.js";import t from"../../../core/Evented.js";import s from"../../../core/Handles.js";import i from"../../../core/Logger.js";import{someMap as a}from"../../../core/MapUtils.js";import{releaseMaybe as o,disposeMaybe as n,isSome as h,unwrapOr as l,isNone as d,unwrap as c}from"../../../core/maybe.js";import p from"../../../core/PooledArray.js";import{someSet as u}from"../../../core/SetUtils.js";import{init as m}from"../../../core/watchUtils.js";import{property as g}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as y}from"../../../core/accessorSupport/decorators/subclass.js";import{q as _,f}from"../../../chunks/mat4.js";import{a as R}from"../../../chunks/vec2f64.js";import{f as T,c as b}from"../../../chunks/vec3f64.js";import{I as w}from"../../../chunks/mat4f64.js";import{ViewingMode as x}from"../../ViewingMode.js";import{DrapeTargetType as v,DrapeSourceType as O}from"../layers/interfaces.js";import E from"../support/debugFlags.js";import{OverlayIndex as L,RenderTargetType as j}from"./interfaces.js";import{Overlay as A}from"./Overlay.js";import{OverlayFramebufferObject as S}from"./OverlayFramebufferObject.js";import{OverlayRenderTarget as C}from"./OverlayRenderTarget.js";import{ShaderTechniqueRepository as P}from"../webgl-engine/core/shaderTechnique/ShaderTechniqueRepository.js";import{autoDispose as D,AutoDisposableMixin as G}from"../webgl-engine/lib/AutoDisposable.js";import{TransparencyPassType as I,UpdatePolicy as M}from"../webgl-engine/lib/basicInterfaces.js";import V from"../webgl-engine/lib/Camera.js";import{DrapedHeatmapRenderer as U}from"../webgl-engine/lib/DrapedHeatmapRenderer.js";import{GLMaterialRepository as F}from"../webgl-engine/lib/GLMaterialRepository.js";import{createEmptyDepthTexture as q,createQuadVAO as H}from"../webgl-engine/lib/glUtil3D.js";import{GridLocalOriginFactory as W}from"../webgl-engine/lib/GridLocalOriginFactory.js";import{newIntersectorResult as N}from"../webgl-engine/lib/Intersector.js";import{StoreResults as B,IntersectorType as k}from"../webgl-engine/lib/IntersectorInterfaces.js";import{RenderOccludedFlag as z}from"../webgl-engine/lib/Material.js";import{ModelDirty as Y}from"../webgl-engine/lib/ModelDirtyTypes.js";import{OverlayRenderContext as X}from"../webgl-engine/lib/RenderContext.js";import{RenderPass as Q}from"../webgl-engine/lib/RenderPass.js";import{RenderSlot as J}from"../webgl-engine/lib/RenderSlot.js";import{SortedRenderGeometryRenderer as K}from"../webgl-engine/lib/SortedRenderGeometryRenderer.js";import{TextureTechniqueConfiguration as Z,TextureTechnique as $}from"../webgl-engine/lib/TextureTechnique.js";import{AmbientLight as ee}from"../webgl-engine/lighting/Lightsources.js";import{SceneLighting as re}from"../webgl-engine/lighting/SceneLighting.js";import{StippleTextureRepository as te}from"../webgl-engine/materials/StippleTextureRepository.js";import{C as se}from"../../../chunks/Compositing.glsl.js";import{AlphaMode as ie}from"../webgl-engine/shaders/CompositingTechnique.js";import{ImmediateTask as ae,TaskPriority as oe,noBudget as ne}from"../../support/Scheduler.js";import{ClearBufferBit as he,PrimitiveType as le,TextureType as de,PixelFormat as ce,PixelType as pe,TextureSamplingMode as ue}from"../../webgl/enums.js";import{Texture as me}from"../../webgl/Texture.js";import{vertexCount as ge}from"../../webgl/Util.js";const ye=i.getLogger("esri.views.3d.webgl-engine.lib.OverlayRenderer");let _e=class extends(G(r)){constructor(e){super(e),this._overlays=null,this._overlayRenderTarget=null,this._hasHighlights=!1,this._rendersOccluded=!1,this._hasWater=!1,this._lighting=new re,this._handles=new s,this._frameTask=ae,this._layerRenderers=new Map,this._sortedLayerRenderersDirty=!1,this._sortedLayerRenderers=new p,this._geometries=new Map,this.worldToPCSRatio=1,this.events=new t,this.longitudeCyclical=null}initialize(){const e=this.view._stage.renderView;this._rctx=e.renderingContext,this._renderContext=new X(this._rctx);const r=e.waterTextureRepository;this._stippleTextureRepository=new te(e.renderingContext),this._shaderTechniqueRepository=new P({rctx:this._rctx,viewingMode:x.Local,stippleTextureRepository:this._stippleTextureRepository,waterTextureRepository:r}),this._handles.add([m(r,"loadingState",(()=>this.events.emit("content-changed"))),m(this,"spatialReference",(e=>this._localOrigins=new W(e)))]),this._materialRepository=new F(e.textureRepository,this._shaderTechniqueRepository,(e=>{(e.renderOccluded&Ee)>0!==this._rendersOccluded&&this._updateRendersOccluded(),this.events.emit("content-changed"),this.notifyChange("updating")}),(()=>this.events.emit("content-changed"))),this._lighting.groundLightingFactor=1,this._lighting.globalFactor=0,this._lighting.set([new ee(T(1,1,1))]),this._bindParameters={slot:J.DRAPED_MATERIAL,highlightDepthTexture:q(this._rctx),camera:we,inverseViewport:R(),origin:null,screenToWorldRatio:null,screenToPCSRatio:null,shadowMappingEnabled:!1,slicePlane:null,ssaoEnabled:!1,hasOccludees:!1,linearDepthTexture:null,lastFrameColorTexture:null,reprojectionMatrix:w,ssrEnabled:!1,lighting:this._lighting,transparencyPassType:I.NONE,terrainLinearDepthTexture:null,geometryLinearDepthTexture:null,multipassTerrainEnabled:!1,cullAboveGround:!1,multipassGeometryEnabled:!1,highlightColorTexture:null,cloudsCompositionParams:null},this._frameTask=this.view.resourceController.scheduler.registerTask(oe.STAGE,this),this._handles.add(this._frameTask)}dispose(){this._handles.destroy(),this._layerRenderers.forEach((e=>e.dispose())),this._layerRenderers.clear(),this._debugTextureTechnique=o(this._debugTextureTechnique),this._debugPatternTexture=n(this._debugPatternTexture),this._bindParameters.highlightDepthTexture=n(this._bindParameters.highlightDepthTexture),this._shaderTechniqueRepository=n(this._shaderTechniqueRepository),this._temporaryFBO=n(this._temporaryFBO),this._quadVAO=n(this._quadVAO),this.disposeOverlays()}get updating(){return this._sortedLayerRenderersDirty||this._frameTask.updating||a(this._layerRenderers,(e=>e.updating))}get hasOverlays(){return h(this._overlays)&&h(this._overlayRenderTarget)}get gpuMemoryUsage(){return h(this._overlayRenderTarget)?this._overlayRenderTarget.gpuMemoryUsage:0}collectUnusedRenderTargetMemory(e){let r=!1;if(h(this._overlayRenderTarget))for(const t of this._overlayRenderTarget.renderTargets){const s=this.overlays[0].validTargets[t.type]||!this.overlays[1].validTargets[t.type];r=this._overlayRenderTarget.validateUsageForTarget(s,t,e)||r}return r}get overlays(){return l(this._overlays,[])}ensureDrapeTargets(e){h(this._overlays)&&this._overlays.forEach((r=>{r.hasTargetWithoutRasterImage=u(e,(e=>e.drapeTargetType===v.WithoutRasterImage))}))}ensureDrapeSources(e){h(this._overlays)&&this._overlays.forEach((r=>{r.hasDrapedFeatureSource=a(e,((e,r)=>r.drapeSourceType===O.Features)),r.hasDrapedRasterSource=a(e,((e,r)=>r.drapeSourceType===O.RasterImage))}))}ensureOverlays(e,r){d(this._overlays)&&(this._overlayRenderTarget=new C(this._rctx),this._overlays=[new A(L.INNER,this._overlayRenderTarget),new A(L.OUTER,this._overlayRenderTarget)]),this.ensureDrapeTargets(e),this.ensureDrapeSources(r)}disposeOverlays(){this._overlays=null,this._overlayRenderTarget=n(this._overlayRenderTarget),this.events.emit("textures-disposed")}get running(){return this.updating}runTask(e,r=(()=>!0)){this._frameTask.processQueue(e),e.done||this._processLayers(e,r)}_processLayers(e,r){let t=!1;for(const[s,i]of this._layerRenderers){if(e.done)break;(s.destroyed||r(s))&&(i.commitChanges()&&(t=!0,e.madeProgress()),i.isEmpty&&(t=!0,this._sortedLayerRenderersDirty=!0,this._layerRenderers.delete(s),this._handles.remove(s)))}this._updateSortedLayerRenderers(),t&&(h(this._overlays)&&0===this._layerRenderers.size&&this.disposeOverlays(),this.notifyChange("updating"),this.events.emit("content-changed"),this._updateHasHighlights(),this._updateRendersOccluded(),this._updateHasWater())}processSyncLayers(){this._processLayers(ne,(e=>e.updatePolicy===M.SYNC))}addGeometries(e,r,t,s=!1){for(const i of e)d(i.origin)&&(i.origin=this._localOrigins.getOrigin(i.boundingSphere)),this._geometries.set(i.id,i);this._ensureLayerRenderer(r,s).add(e),t===Y.Geometry.UPDATE&&this._notifyGraphicGeometryChanged(e,r)}removeGeometries(e,r,t){for(const i of e)this._geometries.delete(c(i.id));const s=this._layerRenderers.get(r);s&&(s.remove(e),t===Y.Geometry.UPDATE&&this._notifyGraphicGeometryChanged(e,r))}updateGeometries(e,r,t){const s=this._layerRenderers.get(r);if(s)switch(s.modify(e,t),t){case Y.State.TRANSFORMATION:case Y.State.VERTEXATTRS:return this._notifyGraphicGeometryChanged(e,r);case Y.State.VISIBILITIES:return this._notifyGraphicVisibilityChanged(e,r)}else ye.warn("Attempted to update geometry for nonexistent layer")}_notifyGraphicGeometryChanged(e,r){if(d(r.notifyGraphicGeometryChanged))return;let t;for(const s of e){const e=s.graphicUid;h(e)&&e!==t&&(r.notifyGraphicGeometryChanged(e),t=e)}}_notifyGraphicVisibilityChanged(e,r){if(d(r.notifyGraphicVisibilityChanged))return;let t;for(const s of e){const e=s.graphicUid;h(e)&&e!==t&&(r.notifyGraphicVisibilityChanged(e),t=e)}}updateHighlights(e,r){const t=this._layerRenderers.get(r);t?t.modify(e,Y.State.HIGHLIGHTS):ye.warn("Attempted to update highlights for nonexistent layer")}isEmpty(){return 0===this._geometries.size&&!E.OVERLAY_DRAW_DEBUG_TEXTURE}get hasHighlights(){return this._hasHighlights}get hasWater(){return this._hasWater}get rendersOccluded(){return this._rendersOccluded}updateAnimation(e){let r=!1;return this._layerRenderers.forEach((t=>r=t.updateAnimation(e)||r)),r}updateLayerOrder(){this._sortedLayerRenderersDirty=!0}drawTarget(e,r,t){const s=e.canvasGeometries;if(0===s.numViews)return!1;this._screenToWorldRatio=t*e.mapUnitsPerPixel;const i=r.renderPass;if(this.isEmpty()||i===Q.MATERIAL_HIGHLIGHT&&!this.hasHighlights||i===Q.MATERIAL_NORMAL&&!this.hasWater||!e.hasSomeSizedView())return!1;const a=r.fbo;if(!a.isValid())return!1;const o=2*e.resolution,n=e.resolution;a.resize(o,n);const l=this._rctx;we.pixelRatio=e.pixelRatio*t,this._renderContext.pass=i,this._bindParameters.screenToWorldRatio=this._screenToWorldRatio,this._bindParameters.screenToPCSRatio=this._screenToWorldRatio*this.worldToPCSRatio,this._bindParameters.slot=i===Q.MATERIAL_NORMAL?J.DRAPED_WATER:J.DRAPED_MATERIAL,e.applyViewport(this._rctx),a.bind(l),e.index===L.INNER&&(l.setClearColor(0,0,0,0),l.clearSafe(he.COLOR_BUFFER_BIT));const d=r.type===j.ColorNoRasterImage?fe.ExcludeRasterImage:r.type===j.Occluded?fe.OccludedOnly:fe.Normal;if(d===fe.OccludedOnly&&(this._renderContext.renderOccludedMask=Ee),E.OVERLAY_DRAW_DEBUG_TEXTURE&&d!==fe.OccludedOnly)for(let h=0;h<s.numViews;h++)this._setViewParameters(s.extents[h],e,we),this._drawDebugTexture(e.resolution,Te[e.index]);return this._layerRenderers.size>0&&this._sortedLayerRenderers.forAll((({overlayLayer:r,renderer:t})=>{if(d===fe.ExcludeRasterImage&&r.drapeSourceType===O.RasterImage)return;const{fullOpacity:c}=r,p=h(c)&&c<1&&i===Q.MATERIAL;p&&(this.bindTemporaryFramebuffer(this._rctx,o,n),l.clearSafe(he.COLOR_BUFFER_BIT));for(let i=0;i<s.numViews;i++)this._setViewParameters(s.extents[i],e,we),t.render(this._renderContext,this._bindParameters);p&&h(this._temporaryFBO)&&(a.bind(l),this.view._stage.renderView.compositingHelper.composite(this._temporaryFBO.getTexture(),ie.PremultipliedAlpha,c,se.OverlayWithTransparency,e.index))})),l.bindFramebuffer(null),a.generateMipMap(),this._renderContext.resetRenderOccludedMask(),!0}bindTemporaryFramebuffer(e,r,t){d(this._temporaryFBO)&&(this._temporaryFBO=new S(e,!1)),this._temporaryFBO.resize(r,t),this._temporaryFBO.bind(e)}async reloadShaders(){await this._shaderTechniqueRepository.reloadAll()}intersect(e,r,t,s){let i=0;this._geometries.forEach((a=>{if(s&&!s(a))return;this._intersectRenderGeometry(a,t,r,0,e,i);const o=this.longitudeCyclical;o&&(a.boundingSphere[0]-a.boundingSphere[3]<o.min&&this._intersectRenderGeometry(a,t,r,o.range,e,i),a.boundingSphere[0]+a.boundingSphere[3]>o.max&&this._intersectRenderGeometry(a,t,r,-o.range,e,i)),i++}))}_intersectRenderGeometry(e,r,t,s,i,a){if(!e.instanceParameters.visible)return;let o=0;h(e.transformation)&&(s+=e.transformation[12],o=e.transformation[13]),xe[0]=t[0]-s,xe[1]=t[1]-o,xe[2]=1,ve[0]=t[0]-s,ve[1]=t[1]-o,ve[2]=0,e.screenToWorldRatio=this._screenToWorldRatio,e.material.intersect(e,null,e.getShaderTransformation(),i,xe,ve,((t,s,o)=>{be(r,o,e.material.renderPriority,a,i,e.layerUid,e.graphicUid)}),e.calculateShaderTransformation,r)}_ensureLayerRenderer(e,r){let t=this._layerRenderers.get(e);return t&&r===t instanceof U||(t=r?new U({rctx:this._rctx,materialRepository:this._materialRepository}):new K({rctx:this._rctx,materialRepository:this._materialRepository}),this._layerRenderers.set(e,t),this._sortedLayerRenderersDirty=!0,"fullOpacity"in e&&this._handles.add(e.watch("fullOpacity",(()=>this.events.emit("content-changed"))),e),this._handles.add(m(t,"updating",(()=>this.notifyChange("updating"))),e)),t}_updateSortedLayerRenderers(){if(!this._sortedLayerRenderersDirty)return;if(this._sortedLayerRenderersDirty=!1,this._sortedLayerRenderers.clear(),0===this._layerRenderers.size)return;const e=this.view.map.allLayers;this._layerRenderers.forEach(((r,t)=>{const s=e.indexOf(t.layer);this._sortedLayerRenderers.push(new Re(t,r,s<0?1/0:s))})),this._sortedLayerRenderers.sort(((e,r)=>e.index-r.index))}_setViewParameters(e,r,t){t.viewport[0]=t.viewport[1]=0,t.viewport[2]=t.viewport[3]=r.resolution,_(t.projectionMatrix,0,e[2]-e[0],0,e[3]-e[1],t.near,t.far),f(t.viewMatrix,[-e[0],-e[1],0]),this._renderContext.camera=t,this._bindParameters.camera=t,this._bindParameters.inverseViewport[0]=1/t.fullViewport[2],this._bindParameters.inverseViewport[1]=1/t.fullViewport[3]}_updateHasWater(){const e=a(this._layerRenderers,(e=>e.hasWater));e!==this._hasWater&&(this._hasWater=e,this.events.emit("has-water",e))}_updateHasHighlights(){const e=a(this._layerRenderers,(e=>e.hasHighlights));e!==this._hasHighlights&&(this._hasHighlights=e,this.events.emit("has-highlights",e))}_updateRendersOccluded(){const e=a(this._layerRenderers,(e=>e.rendersOccluded));e!==this._rendersOccluded&&(this._rendersOccluded=e,this.events.emit("renders-occluded",e))}_drawDebugTexture(e,r){this._ensureDebugPatternResources(e,e);const t=this._rctx,s=t.useTechnique(this._debugTextureTechnique);s.setUniform4f("uColor",r[0],r[1],r[2],1),s.bindTexture(this._debugPatternTexture,"tex"),t.bindVAO(this._quadVAO),t.drawArrays(le.TRIANGLE_STRIP,0,ge(this._quadVAO,"geometry"))}_ensureDebugPatternResources(e,r){if(this._debugPatternTexture)return;const t=new Uint8Array(e*r*4);let s=0;for(let a=0;a<r;a++)for(let i=0;i<e;i++){const o=Math.floor(i/10),n=Math.floor(a/10);o<2||n<2||10*o>e-20||10*n>r-20?(t[s++]=255,t[s++]=255,t[s++]=255,t[s++]=255):(t[s++]=255,t[s++]=255,t[s++]=255,t[s++]=1&o&&1&n?1&i^1&a?0:255:1&o^1&n?0:128)}this._debugPatternTexture=new me(this._rctx,{target:de.TEXTURE_2D,pixelFormat:ce.RGBA,dataType:pe.UNSIGNED_BYTE,samplingMode:ue.NEAREST,width:e,height:r},t);const i=new Z;i.hasAlpha=!0,this._debugTextureTechnique=this._shaderTechniqueRepository.acquire($,i),this._quadVAO=H(this._rctx)}get test(){return{layerRenderers:this._layerRenderers}}};var fe;e([g()],_e.prototype,"_frameTask",void 0),e([g()],_e.prototype,"_sortedLayerRenderersDirty",void 0),e([D()],_e.prototype,"_shaderTechniqueRepository",void 0),e([D()],_e.prototype,"_stippleTextureRepository",void 0),e([g({constructOnly:!0})],_e.prototype,"view",void 0),e([g()],_e.prototype,"worldToPCSRatio",void 0),e([g()],_e.prototype,"spatialReference",void 0),e([g({type:Boolean,readOnly:!0})],_e.prototype,"updating",null),_e=e([y("esri.views.3d.terrain.OverlayRenderer")],_e),function(e){e[e.Normal=0]="Normal",e[e.OccludedOnly=1]="OccludedOnly",e[e.ExcludeRasterImage=2]="ExcludeRasterImage"}(fe||(fe={}));class Re{constructor(e,r,t){this.overlayLayer=e,this.renderer=r,this.index=t}}const Te=[[1,.5,.5],[.5,.5,1]];function be(e,r,t,s,i,a,o){const n={layerUid:a,graphicUid:o,triangleNr:r},h=r=>{r.set(k.OVERLAY,n,e.dist,e.normal,e.transformation,t,s)};if((null==i.results.min.drapedLayerOrder||t>=i.results.min.drapedLayerOrder)&&(null==i.results.min.dist||i.results.ground.dist<=i.results.min.dist)&&h(i.results.min),i.options.store!==B.MIN&&(null==i.results.max.drapedLayerOrder||t<i.results.max.drapedLayerOrder)&&(null==i.results.max.dist||i.results.ground.dist>i.results.max.dist)&&h(i.results.max),i.options.store===B.ALL){const e=N(i.ray);h(e),i.results.all.push(e)}}const we=new V;we.near=1,we.far=1e4,we.relativeElevation=null;const xe=b(),ve=b(),Oe=-2,Ee=z.OccludeAndTransparent;export{Oe as DRAPED_Z,fe as DrawPassOption,_e as OverlayRenderer,Ee as overlayRenderOccludedFlag};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{unwrapOr as t,isSome as e}from"../../../core/maybe.js";import{ViewingMode as n}from"../../ViewingMode.js";import{ImageWithType as l}from"../support/StreamDataLoader.js";import{t as i}from"../../../chunks/terrainUtilsPlanar.js";import{t as o}from"../../../chunks/terrainUtilsSpherical.js";const r={[n.Global]:o,[n.Local]:i};function u(t,e){t||console.warn("Terrain: "+e)}const a=1.2,c=80/180*Math.PI,f=110/180*Math.PI;function s(n,l,i){const o=r[n.viewingMode];let u;if(o.isInsideExtent(n,l))u=t(n.getElevation(l[0],l[1],l[1],n.spatialReference),0);else{if(!o.isInsideExtent(n,l,a))return 0;const t=n.getTileWithElevation(l[0],l[1],l[1],n.spatialReference);u=.5*((e(t)?t.elevationBounds[0]:n.elevationBounds.min)+(e(t)?t.elevationBounds[1]:n.elevationBounds.max));const i=o.tiltToExtentEdge(n,l,u);if(i>c&&i<f)return 0}const s=l[2]-u;return Math.abs(s)<i?0:s<0?-1:1}function d(t){return v(t)?{fullExtent:t.fullExtent,minScale:t.layer.minScale,maxScale:t.layer.maxScale,tilemapCache:null}:t.layer}function p(t){return"vector-tile"===(null==t?void 0:t.type)}function m(t){return"imagery-tile"===(null==t?void 0:t.type)||"wcs"===(null==t?void 0:t.type)}function v(t){return"imagery-tile-3d"===(null==t?void 0:t.type)}function y(t){return"tile-3d"===(null==t?void 0:t.type)}function I(t){return"vector-tile-3d"===(null==t?void 0:t.type)}function x(t){return"wmts-3d"===(null==t?void 0:t.type)}function E(t){return"elevation-3d"===(null==t?void 0:t.type)}function g(t){return t&&(y(t)||v(t)||E(t)||I(t)||x(t))}function h(t){var n;const l=null==t||null==(n=t.sourceLayerInfo)?void 0:n.data;return e(l)&&"type"in l&&"raster-tile"===l.type}function L(t){var n;const l=null==t||null==(n=t.sourceLayerInfo)?void 0:n.data;return e(l)&&"type"in l&&"vector-tile"===l.type}function T(t){var n;const l=null==t||null==(n=t.sourceLayerInfo)?void 0:n.data;return e(l)&&"type"in l&&"tile-texture"===l.type}function S(t){var e;const n=null==t||null==(e=t.sourceLayerInfo)?void 0:e.data;return n instanceof HTMLImageElement||n instanceof l||n instanceof HTMLCanvasElement||n instanceof ImageData}function M(t){return e(t)&&"release"in t&&t.release(),null}function w(t){return t.fetchTile&&!1!==t.hasOverriddenFetchTile}function b(t,e,n,l){return r[l].checkIfTileInfoSupportedForViewSR(t,n,e)}function C(t,l,i){let o=null,r=null;if("wmts"===t.type){const e=t.activeLayer;if(e){const t=e.tileMatrixSet;if(t)o=t.tileInfo,r=t.fullExtent;else{const t=e.tileMatrixSets;if(t){const e=t.find((t=>null==b(t.tileInfo,t.fullExtent,l,i)));if(e)return{tileInfo:e.tileInfo,fullExtent:e.fullExtent}}}}}else r=m(t)?t.getCompatibleFullExtent(l):t.fullExtent,o=p(t)&&!j.force512VTL?t.tileInfo.getOrCreateCompatible(256):m(t)?t.getCompatibleTileInfo(l,r,i===n.Local):t.tileInfo;return e(o)&&e(r)&&null==b(o,r,l,i)?{tileInfo:o,fullExtent:r}:null}const j={force512VTL:!1};export{b as checkIfTileInfoSupportedForView,s as computeSkirtScale,d as getLayerWithExtentRange,C as getTiledLayerInfo,E as isElevationLayerView,v as isImageryTileLayerView,h as isImageryTileRenderInfo,m as isProjectableRasterLayer,S as isRasterTileRenderInfo,g as isSurfaceLayerView,T as isTextureTileRenderInfo,y as isTileLayerView,p as isVectorTileLayer,I as isVectorTileLayerView,L as isVectorTileRenderInfo,x as isWMTSLayerView,M as releaseTileData,j as test,w as useFetchTileForLayer,u as weakAssert};
5
+ import{unwrapOr as e,isSome as t}from"../../../core/maybe.js";import{isCGCS2000 as n,isEarth as l}from"../../../geometry/support/spatialReferenceUtils.js";import{ViewingMode as i}from"../../ViewingMode.js";import{ImageWithType as o}from"../support/StreamDataLoader.js";import{t as r}from"../../../chunks/terrainUtilsPlanar.js";import{t as u}from"../../../chunks/terrainUtilsSpherical.js";const a={[i.Global]:u,[i.Local]:r};function c(e,t){e||console.warn("Terrain: "+t)}const f=1.2,s=80/180*Math.PI,p=110/180*Math.PI;function d(n,l,i){const o=a[n.viewingMode];let r;if(o.isInsideExtent(n,l))r=e(n.getElevation(l[0],l[1],l[1],n.spatialReference),0);else{if(!o.isInsideExtent(n,l,f))return 0;const e=n.getTileWithElevation(l[0],l[1],l[1],n.spatialReference);r=.5*((t(e)?e.elevationBounds[0]:n.elevationBounds.min)+(t(e)?e.elevationBounds[1]:n.elevationBounds.max));const i=o.tiltToExtentEdge(n,l,r);if(i>s&&i<p)return 0}const u=l[2]-r;return Math.abs(u)<i?0:u<0?-1:1}function m(e){return I(e)?{fullExtent:e.fullExtent,minScale:e.layer.minScale,maxScale:e.layer.maxScale,tilemapCache:null}:e.layer}function v(e){return"vector-tile"===(null==e?void 0:e.type)}function y(e){return"imagery-tile"===(null==e?void 0:e.type)||"wcs"===(null==e?void 0:e.type)}function I(e){return"imagery-tile-3d"===(null==e?void 0:e.type)}function x(e){return"tile-3d"===(null==e?void 0:e.type)}function E(e){return"vector-tile-3d"===(null==e?void 0:e.type)}function g(e){return"wmts-3d"===(null==e?void 0:e.type)}function h(e){return"elevation-3d"===(null==e?void 0:e.type)}function L(e){return e&&(x(e)||I(e)||h(e)||E(e)||g(e))}function S(e){var n;const l=null==e||null==(n=e.sourceLayerInfo)?void 0:n.data;return t(l)&&"type"in l&&"raster-tile"===l.type}function T(e){var n;const l=null==e||null==(n=e.sourceLayerInfo)?void 0:n.data;return t(l)&&"type"in l&&"vector-tile"===l.type}function M(e){var n;const l=null==e||null==(n=e.sourceLayerInfo)?void 0:n.data;return t(l)&&"type"in l&&"tile-texture"===l.type}function b(e){var t;const n=null==e||null==(t=e.sourceLayerInfo)?void 0:t.data;return n instanceof HTMLImageElement||n instanceof o||n instanceof HTMLCanvasElement||n instanceof ImageData}function w(e){return t(e)&&"release"in e&&e.release(),null}function j(e){return e.fetchTile&&!1!==e.hasOverriddenFetchTile}function C(e,t,n,l){return a[l].checkIfTileInfoSupportedForViewSR(e,n,t)}function B(e,n,l){let o=null,r=null;if("wmts"===e.type){const t=e.activeLayer;if(t){const e=t.tileMatrixSet;if(e)o=e.tileInfo,r=e.fullExtent;else{const e=t.tileMatrixSets;if(e){const t=e.find((e=>null==C(e.tileInfo,e.fullExtent,n,l)));if(t)return{tileInfo:t.tileInfo,fullExtent:t.fullExtent}}}}}else{r=y(e)?e.getCompatibleFullExtent(n):e.fullExtent;const t=l===i.Local;if(y(e))o=e.getCompatibleTileInfo(n,r,t);else if(v(e)){o=t&&!R(n)||V.force512VTL?e.tileInfo:e.tileInfo.getOrCreateCompatible(256)}else o=e.tileInfo}return t(o)&&t(r)&&null==C(o,r,n,l)?{tileInfo:o,fullExtent:r}:null}function R(e){return e.isWGS84||e.isWebMercator||n(e)||!l(e)}const V={force512VTL:!1};export{C as checkIfTileInfoSupportedForView,d as computeSkirtScale,m as getLayerWithExtentRange,B as getTiledLayerInfo,h as isElevationLayerView,I as isImageryTileLayerView,S as isImageryTileRenderInfo,y as isProjectableRasterLayer,b as isRasterTileRenderInfo,L as isSurfaceLayerView,M as isTextureTileRenderInfo,x as isTileLayerView,v as isVectorTileLayer,E as isVectorTileLayerView,T as isVectorTileRenderInfo,g as isWMTSLayerView,w as releaseTileData,V as test,j as useFetchTileForLayer,R as vtlAssumes256PixelSizeAsDefault,c as weakAssert};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
+ */
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import"../../../../core/Logger.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/set.js";import{subclass as t}from"../../../../core/accessorSupport/decorators/subclass.js";import{ViewingMode as r}from"../../../ViewingMode.js";import{createQuadVAO as i}from"./glUtil3D.js";import{SortedRenderGeometryRenderer as s}from"./SortedRenderGeometryRenderer.js";import{isHeatMapDensityMaterial as a}from"../materials/HeatmapDensityMaterial.js";import{HeatmapTechnique as o}from"../shaders/HeatmapTechnique.js";import{TargetType as n,DepthStencilTargetType as h,TextureType as p,PixelFormat as d,SizedPixelFormat as m,PixelType as c,TextureSamplingMode as l,TextureWrapMode as u,ClearBufferBit as g}from"../../../webgl/enums.js";import{FramebufferObject as R}from"../../../webgl/FramebufferObject.js";import{Texture as f}from"../../../webgl/Texture.js";import{vertexCount as w}from"../../../webgl/Util.js";let x=class extends s{constructor(){super(...arguments),this.type="draped-heatmap",this.pointCount=0}initialize(){super.initialize();const e={colorTarget:n.TEXTURE,depthStencilTarget:h.NONE,width:0,height:0},t={target:p.TEXTURE_2D,pixelFormat:d.RED,internalFormat:m.R32F,dataType:c.FLOAT,samplingMode:l.LINEAR,wrapMode:u.CLAMP_TO_EDGE,width:0,height:0};this.densityMap=new R(this.rctx,e,t),this.quad=i(this.rctx);const s={target:p.TEXTURE_2D,pixelFormat:d.RGBA,dataType:c.UNSIGNED_BYTE,samplingMode:l.LINEAR,wrapMode:u.CLAMP_TO_EDGE,width:8,height:1},a=new f(this.rctx,s,new Uint8ClampedArray([34,34,64,0,78,46,88,255,127,56,100,255,175,68,98,255,212,91,84,255,235,126,63,255,238,168,39,255,221,214,34,255]));this.colorRamp=a,this.technique=new o({rctx:this.rctx,viewingMode:r.Local},null),this.heatmapParameters={colorRamp:a,densityMap:this.densityMap.colorTexture,searchRadius:1,pointCount:this.pointCount}}dispose(){super.dispose(),this.technique.dispose(),this.densityMap.dispose(),this.quad.dispose(),this.colorRamp.dispose()}get hasHighlights(){return!1}get hasWater(){return!1}get rendersOccluded(){return!1}get _heatmapDensityMaterialRenderers(){return this._sortedMaterialRenderers.data.filter(T)}add(e){this.pointCount+=e.length,super.add(e)}remove(e){this.pointCount-=e.length,super.remove(e)}render(e,t){const r=this._heatmapDensityMaterialRenderers;if(r.length<1)return;const i=this.rctx.getBoundFramebufferObject(),s=this.rctx.getViewport();this.densityMap.resize(s.width,s.height),this.rctx.bindFramebuffer(this.densityMap),this.rctx.clear(g.COLOR_BUFFER_BIT);let a=!1;const o=r[0].material.parameters.searchRadius;this.heatmapParameters.pointCount=this.pointCount,this.heatmapParameters.searchRadius=o;for(let n=0;n<r.length;n++){const{material:i,materialRenderer:s}=r[n];i.shouldRender(e)&&(a=a||s.render(t.slot,e.pass,t))}this.rctx.bindFramebuffer(i),a&&(this.rctx.bindVAO(this.quad),this.rctx.useProgram(this.technique.program),this.technique.bindPipelineState(this.rctx),this.technique.bindPass(this.heatmapParameters,t),this.rctx.drawArrays(this.technique.primitiveType,0,w(this.quad,"geometry")))}};function T(e){return a(e.material)}x=e([t("esri.views.3d.webgl-engine.lib.DrapedHeatmapRenderer")],x);export{x as DrapedHeatmapRenderer};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import o from"../../../../Color.js";import t from"../../../../core/Logger.js";import{get as r,mapOr as e,isSome as i}from"../../../../core/maybe.js";import{pt2px as s}from"../../../../core/screenUtils.js";import{Z as l}from"../../../../chunks/vec4f64.js";const n=t.getLogger("esri.views.3d.webgl-engine.lib.TextRenderParameters");class a{constructor(o){this.definition=o,this.key=JSON.stringify(o),this.haloSize=Math.round(o.halo.size),this.fillStyle=this._colorToRGBA(o.color),this.haloStyle=this._colorToRGB(o.halo.color)}fontString(o){const t=this.definition.font;return`${t.style} ${t.weight} ${o}px ${t.family}, sans-serif`}_colorToRGB(o){return`rgb(${o.slice(0,3).map((o=>Math.floor(255*o))).toString()})`}_colorToRGBA(o){return`rgba(${o.slice(0,3).map((o=>Math.floor(255*o))).toString()},${o[3]})`}static async fromSymbol(t,c=1){const f=r(t,"material","color"),m=e(f,l,o.toUnitRGBA),h=e(t.size,12,s),g=t.lineHeight,y={family:e(t.font,"sans-serif",(o=>o.family)),weight:e(t.font,"normal",(o=>o.weight)),style:e(t.font,"normal",(o=>o.style))},d=t.halo,p=i(d)&&i(d.color)&&d.size>0?{size:s(d.size),color:o.toUnitRGBA(d.color)}:{size:0,color:l},S=new a({color:m,size:h,lineSpacingFactor:g,font:y,halo:p,pixelRatio:c}),u=S.fontString(h);try{await document.fonts.load(u)}catch(b){n.warnOnce(`Failed to preload font '${u}'. Some text symbology may be rendered using the default browser font.`)}return S}}export{a as TextRenderParameters};
5
+ import o from"../../../../Color.js";import r from"../../../../core/Logger.js";import{get as t,mapOr as e,isSome as i}from"../../../../core/maybe.js";import{pt2px as n}from"../../../../core/screenUtils.js";import{Z as s}from"../../../../chunks/vec4f64.js";import{enableTextBackgrounds3D as l}from"../../../../support/featureFlags.js";const a=r.getLogger("esri.views.3d.webgl-engine.lib.TextRenderParameters");class c{constructor(o){this.definition=o,this.key=JSON.stringify(o),this.haloSize=Math.round(o.halo.size),this.textStyle=this._colorToRGBA(o.color),this.haloStyle=this._colorToRGB(o.halo.color),this.backgroundStyle=l()&&0!==o.background.color[3]?this._colorToRGBA(o.background.color):null}fontString(o){const r=this.definition.font;return`${r.style} ${r.weight} ${o}px ${r.family}, sans-serif`}_colorToRGB(o){return`rgb(${o.slice(0,3).map((o=>Math.floor(255*o))).toString()})`}_colorToRGBA(o){return`rgba(${o.slice(0,3).map((o=>Math.floor(255*o))).toString()},${o[3]})`}static async fromSymbol(r,f=1){const g=t(r,"material","color"),m=e(g,s,o.toUnitRGBA),d=e(r.size,12,n),h=r.lineHeight,u=l(),b=u&&i(r.background)?o.toUnitRGBA(r.background.color):s,y={family:e(r.font,"sans-serif",(o=>o.family)),decoration:e(r.font,"none",(o=>o.decoration)),weight:e(r.font,"normal",(o=>o.weight)),style:e(r.font,"normal",(o=>o.style))},p=r.halo,S=i(p)&&i(p.color)&&p.size>0?{size:n(p.size),color:o.toUnitRGBA(p.color)}:{size:0,color:s},R=new c({color:m,size:d,background:{color:b,padding:u&&i(r.background)?[.65*d,.5*d]:[0,0],borderRadius:u&&i(r.background)?d*(6/16):0},lineSpacingFactor:h,font:y,halo:S,pixelRatio:f}),k=R.fontString(d);try{await document.fonts.load(k)}catch(w){a.warnOnce(`Failed to preload font '${k}'. Some text symbology may be rendered using the default browser font.`)}return R}}export{c as TextRenderParameters};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{isNone as t,isSome as e}from"../../../../core/maybe.js";import i from"../../support/debugFlags.js";class s{constructor(t,e,i=2048){this.text=t,this._parameters=e,this.maxSize=i,this._lineWidths=new Array,this._renderPixelRatio=null,this._displayWidth=null,this._textHeight=null,this._baselinePosition=null,this.key=`${this._parameters.key}--${t}`,this._lines=t.split(/\r?\n/)}get displayWidth(){return Math.ceil(this._ensureTextWidth())}get displayHeight(){const t=this.lineSpacing*(this._lines.length-1),e=this.textHeight;return Math.ceil(t+e+2*this.haloSize)}get renderedWidth(){return Math.ceil(this._toRenderUnit(this.displayWidth))}get renderedHeight(){return Math.ceil(this._toRenderUnit(this.displayHeight))}get lineSpacing(){return(this.textHeight+this.linePadding)*this._parameters.definition.lineSpacingFactor}get textHeight(){return this._ensureHeightMetrics().textHeight}get linePadding(){return this.textHeight*l}get baselinePosition(){return this._ensureHeightMetrics().baselinePosition}get renderedFontSize(){return this._toRenderUnit(this.fontSize)}get fontSize(){return this._parameters.definition.size}get renderedHaloSize(){return this._toRenderUnit(this.haloSize)}get haloSize(){return this._parameters.haloSize}get renderPixelRatio(){if(t(this._renderPixelRatio)){const t=this._parameters.definition.pixelRatio;this.maxSize>0?this._renderPixelRatio=Math.min(t,Math.min(this.maxSize/(this.displayWidth*t),this.maxSize/(this.displayHeight*t))):this._renderPixelRatio=t}return this._renderPixelRatio}_getLineXOffset(t){return(this.displayWidth-this._lineWidths[t])/2}render(t,e=0,s=0){t.save();const h=e/=this.renderPixelRatio,r=s/=this.renderPixelRatio,o=n(t.textAlign,this.displayWidth)+this.haloSize,l=this.haloSize;s+=l+this.baselinePosition,e+=o,this.haloSize>0&&this._renderHalo(t,h,r,o,l),this._setFontProperties(t,this.renderedFontSize);for(let i=0;i<this._lines.length;++i){t.globalCompositeOperation="destination-out",t.fillStyle="rgb(0, 0, 0)";const n=this._lines[i],h=this._getLineXOffset(i);this._fillText(t,n,e+h,s),t.globalCompositeOperation="source-over",t.fillStyle=this._parameters.fillStyle,this._fillText(t,n,e+this._getLineXOffset(i),s),s+=this.lineSpacing}if(i.TEXT_SHOW_BASELINE){t.strokeStyle=d,t.setLineDash([2,2]),t.lineWidth=1;let e=r+l;for(let i=0;i<this._lines.length;++i){const i=e+this.baselinePosition;this._drawLine(t,[h,i],[h+this.displayWidth,i]),e+=this.lineSpacing}}i.TEXT_SHOW_BORDER&&(t.strokeStyle=d,t.setLineDash([]),t.lineWidth=1,this._drawBox(t,[h,r],[this.displayWidth,this.displayHeight])),t.restore()}_renderHalo(t,e,i,s,n){const h=this.renderedWidth,l=this.renderedHeight,d=r(o,Math.max(h,a),Math.max(l,a)),_=d.getContext("2d");_.clearRect(0,0,h,l),this._setFontProperties(_,this.renderedFontSize),_.fillStyle=this._parameters.haloStyle,_.strokeStyle=this._parameters.haloStyle;const g=this.renderedHaloSize<3;_.lineJoin=g?"miter":"round",g?this._renderHaloEmulated(_,s,n):this._renderHaloNative(_,s,n),t.globalAlpha=this._parameters.definition.halo.color[3],t.drawImage(d,0,0,h,l,this._toRenderUnit(e),this._toRenderUnit(i),h,l),t.globalAlpha=1}_renderHaloEmulated(t,e,i){i+=this.baselinePosition;for(let s=0;s<this._lines.length;++s){const n=this._lines[s],r=this._getLineXOffset(s);for(const[s,o]of h)this._fillText(t,n,e+r+this.haloSize*s,i+this.haloSize*o);i+=this.lineSpacing}}_renderHaloNative(t,e,i){const s=2*this.haloSize;i+=this.baselinePosition;for(let n=0;n<this._lines.length;++n){const h=this._lines[n],r=this._getLineXOffset(n),o=5,l=.1;for(let n=0;n<o;n++){const a=1-(o-1)*l+n*l;t.lineWidth=this._toRenderUnit(a*s),this._strokeText(t,h,e+r,i)}i+=this.lineSpacing}}_setFontProperties(t,e){t.font=this._parameters.fontString(e),t.textAlign="left",t.textBaseline="alphabetic"}_ensureTextWidth(){if(e(this._displayWidth))return this._displayWidth;const t=r(o,a,a).getContext("2d");this._setFontProperties(t,this.fontSize);let i=0,s=2*this.haloSize;this._lineWidths.length=0;const n=this._parameters.definition.font;("italic"===n.style||"oblique"===n.style||"string"==typeof n.weight&&("bold"===n.weight||"bolder"===n.weight)||"number"==typeof n.weight&&n.weight>600)&&(s+=.3*t.measureText("A").width);for(const e of this._lines){const n=t.measureText(e).width+s;this._lineWidths.push(n),i=Math.max(i,n)}return this._displayWidth=i,this._displayWidth}_ensureHeightMetrics(){if(t(this._textHeight)||t(this._baselinePosition)){const t=this.text+_,e=r(o,a,a).getContext("2d");this._setFontProperties(e,this.fontSize);const i=e.measureText(t),s=i.actualBoundingBoxAscent+i.actualBoundingBoxDescent;this._textHeight=s,this._baselinePosition=i.actualBoundingBoxAscent}return{textHeight:this._textHeight,baselinePosition:this._baselinePosition}}_toRenderUnit(t){return t*this.renderPixelRatio}_toRoundedRenderUnit(t){return Math.round(t*this.renderPixelRatio)}_fillText(t,e,i,s){t.fillText(e,this._toRenderUnit(i),this._toRenderUnit(s))}_strokeText(t,e,i,s){t.strokeText(e,this._toRenderUnit(i),this._toRenderUnit(s))}_drawLine(t,e,i){t.beginPath(),t.moveTo(this._toRoundedRenderUnit(e[0])+.5,this._toRoundedRenderUnit(e[1])+.5),t.lineTo(this._toRoundedRenderUnit(i[0])+.5,this._toRoundedRenderUnit(i[1])+.5),t.stroke()}_drawBox(t,e,i){const s=this._toRenderUnit(e[0]),n=this._toRenderUnit(e[1]),h=this._toRenderUnit(i[0]),r=this._toRenderUnit(i[1]),o=Math.floor(s)+.5,l=Math.ceil(s+h)-.5,a=Math.floor(n)+.5,d=Math.ceil(n+r)-.5;t.beginPath(),t.moveTo(o,a),t.lineTo(l,a),t.lineTo(l,d),t.lineTo(o,d),t.lineTo(o,a),t.stroke()}}function n(t,e){return"center"===t?.5*e:"right"===t?e:0}const h=[];{const t=16;for(let e=0;e<360;e+=360/t)h.push([Math.cos(Math.PI*e/180),Math.sin(Math.PI*e/180)])}function r(t,e,i){return t.canvas||(t.canvas=document.createElement("canvas")),t.canvas.width=e,t.canvas.height=i,t.canvas}const o={canvas:null},l=.2,a=512,d="rgb(255, 0, 255, 0.5)",_=(()=>{let t="";for(let e=32;e<127;e++)t+=String.fromCharCode(e);return t})();export{s as TextRenderer,s as default,r as getTextHelperCanvas};
5
+ import{clamp as t}from"../../../../core/mathUtils.js";import{isNone as e,isSome as i}from"../../../../core/maybe.js";import{enableTextBackgrounds3D as n}from"../../../../support/featureFlags.js";import s from"../../support/debugFlags.js";class r{constructor(t,e,i,n=2048){this.text=t,this._alignment=e,this._parameters=i,this.maxSize=n,this._textWidths=[],this._lineWidths=[],this._renderPixelRatio=null,this._displayWidth=null,this._heightMetrics=null,this._backgroundEnabled=null,this.key=`${this._parameters.key}-${this._alignment}--${t}`,this._lines=t.split(/\r?\n/)}get displayWidth(){return Math.ceil(this._ensureTextWidth()+2*this.backgroundHorizontalPadding)}get displayHeight(){const t=this.lineSpacing*(this._lines.length-1),e=this.lineHeight;return Math.ceil(t+e+2*this.haloSize+this.backgroundTopPadding+this.backgroundBottomPadding)}get renderedWidth(){return Math.ceil(this._toRenderUnit(this.displayWidth))}get renderedHeight(){return Math.ceil(this._toRenderUnit(this.displayHeight))}get heightMetrics(){return this._ensureHeightMetrics()}get lineSpacing(){return(this.lineHeight+this.linePadding)*this._parameters.definition.lineSpacingFactor}get lineHeight(){return this.heightMetrics.lineHeight}get linePadding(){return this.lineHeight*l}get baselinePosition(){return this.heightMetrics.baselinePosition}get renderedFontSize(){return this._toRenderUnit(this.fontSize)}get fontSize(){return this._parameters.definition.size}get renderedHaloSize(){return this._toRenderUnit(this.haloSize)}get haloSize(){return this._parameters.haloSize}get backgroundHorizontalPadding(){return this.backgroundEnabled?this._parameters.definition.background.padding[0]:0}get backgroundVerticalPadding(){return this.backgroundEnabled?this._parameters.definition.background.padding[1]:0}get backgroundTopPadding(){return Math.max(0,this.backgroundVerticalPadding-this.heightMetrics.paddingTop)}get backgroundBottomPadding(){return Math.max(0,this.backgroundVerticalPadding-this.heightMetrics.paddingBottom)}get backgroundEnabled(){return e(this._backgroundEnabled)&&(this._backgroundEnabled=n()),this._backgroundEnabled}get hasBackground(){return this.backgroundEnabled&&!!this._parameters.backgroundStyle}get renderPixelRatio(){if(e(this._renderPixelRatio)){const t=this._parameters.definition.pixelRatio;this.maxSize>0?this._renderPixelRatio=Math.min(t,Math.min(this.maxSize/this.displayWidth,this.maxSize/this.displayHeight)):this._renderPixelRatio=t}return this._renderPixelRatio}_getLineXOffset(t){switch(this._alignment){case o.Left:return this.backgroundHorizontalPadding;case o.Center:return(this.displayWidth-this._lineWidths[t])/2;case o.Right:return this.displayWidth-this.backgroundHorizontalPadding-this._lineWidths[t]}}render(t,e=0,i=0){t.save();const n=e/=this.renderPixelRatio,r=i/=this.renderPixelRatio,h=this.haloSize,o=this.haloSize+this.backgroundTopPadding;i+=o+this.baselinePosition,e+=h;const a=this.haloSize>0;a&&this._renderHalo(t,n,r,h,o),this._setFontProperties(t,this.renderedFontSize);for(let s=0;s<this._lines.length;++s){const n=this._lines[s],r=this._getLineXOffset(s);a&&(t.globalCompositeOperation="destination-out",t.fillStyle="rgb(0, 0, 0)",this._fillText(t,n,e+r,i),this._renderLineDecoration(t,e+r,i,this._textWidths[s])),t.globalCompositeOperation="source-over",t.fillStyle=this._parameters.textStyle,this._fillText(t,n,e+this._getLineXOffset(s),i),this._renderLineDecoration(t,e+r,i,this._textWidths[s]),i+=this.lineSpacing}if(s.TEXT_SHOW_BASELINE){t.strokeStyle=c,t.setLineDash([2,2]),t.lineWidth=1;let e=r+o;for(let i=0;i<this._lines.length;++i){const i=e+this.baselinePosition;this._drawLine(t,[n,i],[n+this.displayWidth,i]),e+=this.lineSpacing}}if(s.TEXT_SHOW_BORDER&&(t.strokeStyle=c,t.setLineDash([]),t.lineWidth=1,this._drawBox(t,[n,r],[this.displayWidth,this.displayHeight])),this.hasBackground){const e=this._parameters.definition.background.borderRadius*this.renderPixelRatio;this._roundedRect(t,n,r,e),t.globalCompositeOperation="destination-over",t.fillStyle=this._parameters.backgroundStyle,t.fill()}t.restore()}_renderLineDecoration(t,e,i,n,s=!1){if("none"===this._parameters.definition.font.decoration||0===n)return;const r=1,h=Math.max(this._parameters.definition.size/16,r);switch(this._parameters.definition.font.decoration){case"underline":i+=2*h;break;case"line-through":i-=.33*this.baselinePosition}const o=s?this.haloSize:0;t.strokeStyle=s?this._parameters.haloStyle:this._parameters.textStyle,t.lineWidth=this._toRenderUnit(h+2*o),t.beginPath(),t.moveTo(this._toRenderUnit(e-o),this._toRenderUnit(i)),t.lineTo(this._toRenderUnit(e+n+o),this._toRenderUnit(i)),t.stroke()}_roundedRect(e,i,n,s){i=this._toRenderUnit(i),n=this._toRenderUnit(n);const r=this.renderedWidth,h=this.renderedHeight;0!==s?(s=t(s,0,Math.floor(h/2)),e.beginPath(),e.moveTo(i,n+s),e.arcTo(i,n,i+s,n,s),e.lineTo(i+r-s,n),e.arcTo(i+r,n,i+r,n+s,s),e.lineTo(i+r,n+h-s),e.arcTo(i+r,n+h,i+r-s,n+h,s),e.lineTo(i+s,n+h),e.arcTo(i,n+h,i,n+h-s,s),e.closePath()):e.rect(i,n,r,h)}_renderHalo(t,e,i,n,s){const r=this.renderedWidth,h=this.renderedHeight,o=a(d,Math.max(r,g),Math.max(h,g)),l=o.getContext("2d");l.clearRect(0,0,r,h),this._setFontProperties(l,this.renderedFontSize),l.fillStyle=this._parameters.haloStyle,l.strokeStyle=this._parameters.haloStyle;const c=this.renderedHaloSize<3;l.lineJoin=c?"miter":"round",c?this._renderHaloEmulated(l,n,s):this._renderHaloNative(l,n,s);let _=s+this.baselinePosition;for(let a=0;a<this._lines.length;++a){const t=this._getLineXOffset(a);this._renderLineDecoration(l,n+t,_,this._textWidths[a],!0),_+=this.lineSpacing}t.globalAlpha=this._parameters.definition.halo.color[3],t.drawImage(o,0,0,r,h,this._toRenderUnit(e),this._toRenderUnit(i),r,h),t.globalAlpha=1}_renderHaloEmulated(t,e,i){i+=this.baselinePosition;for(let n=0;n<this._lines.length;++n){const s=this._lines[n],r=this._getLineXOffset(n);for(const[n,o]of h)this._fillText(t,s,e+r+this.haloSize*n,i+this.haloSize*o);i+=this.lineSpacing}}_renderHaloNative(t,e,i){const n=2*this.haloSize;i+=this.baselinePosition;for(let s=0;s<this._lines.length;++s){const r=this._lines[s],h=this._getLineXOffset(s),o=5,a=.1;for(let s=0;s<o;s++){const d=1-(o-1)*a+s*a;t.lineWidth=this._toRenderUnit(d*n),this._strokeText(t,r,e+h,i)}i+=this.lineSpacing}}_setFontProperties(t,e){t.font=this._parameters.fontString(e),t.textAlign="left",t.textBaseline="alphabetic"}_ensureTextWidth(){if(i(this._displayWidth))return this._displayWidth;const t=a(d,g,g).getContext("2d");this._setFontProperties(t,this.fontSize);let e=2*this.haloSize;const n=this._parameters.definition.font;"italic"!==n.style&&"oblique"!==n.style&&"bold"!==n.weight&&"bolder"!==n.weight||(e+=.3*t.measureText("A").width),this._textWidths.length=0,this._lineWidths.length=0;let s=0;for(const i of this._lines){const n=t.measureText(i).width,r=n+e;this._textWidths.push(n),this._lineWidths.push(r),s=Math.max(s,r)}return this._displayWidth=s,this._displayWidth}_ensureHeightMetrics(){if(e(this._heightMetrics)){const t=a(d,g,g).getContext("2d");this._setFontProperties(t,this.fontSize);const e=t.measureText(this.text+_),i=this.hasBackground?t.measureText(this._lines[0]):e,n=1===this._lines.length?i:this.hasBackground?t.measureText(this._lines[this._lines.length-1]):e,s=e.actualBoundingBoxAscent+e.actualBoundingBoxDescent;this._heightMetrics={paddingTop:e.actualBoundingBoxAscent-i.actualBoundingBoxAscent,paddingBottom:e.actualBoundingBoxDescent-n.actualBoundingBoxDescent,lineHeight:s,baselinePosition:e.actualBoundingBoxAscent}}return this._heightMetrics}_toRenderUnit(t){return t*this.renderPixelRatio}_toRoundedRenderUnit(t){return Math.round(t*this.renderPixelRatio)}_fillText(t,e,i,n){t.fillText(e,this._toRenderUnit(i),this._toRenderUnit(n))}_strokeText(t,e,i,n){t.strokeText(e,this._toRenderUnit(i),this._toRenderUnit(n))}_drawLine(t,e,i){t.beginPath(),t.moveTo(this._toRoundedRenderUnit(e[0])+.5,this._toRoundedRenderUnit(e[1])+.5),t.lineTo(this._toRoundedRenderUnit(i[0])+.5,this._toRoundedRenderUnit(i[1])+.5),t.stroke()}_drawBox(t,e,i){const n=this._toRenderUnit(e[0]),s=this._toRenderUnit(e[1]),r=this._toRenderUnit(i[0]),h=this._toRenderUnit(i[1]),o=Math.floor(n)+.5,a=Math.ceil(n+r)-.5,d=Math.floor(s)+.5,l=Math.ceil(s+h)-.5;t.beginPath(),t.moveTo(o,d),t.lineTo(a,d),t.lineTo(a,l),t.lineTo(o,l),t.lineTo(o,d),t.stroke()}}const h=[];{const t=16;for(let e=0;e<360;e+=360/t)h.push([Math.cos(Math.PI*e/180),Math.sin(Math.PI*e/180)])}var o;function a(t,e,i){return t.canvas||(t.canvas=document.createElement("canvas")),t.canvas.width=e,t.canvas.height=i,t.canvas}!function(t){t[t.Left=0]="Left",t[t.Center=1]="Center",t[t.Right=2]="Right"}(o||(o={}));const d={canvas:null},l=.2,g=512,c="rgb(255, 0, 255, 0.5)",_=(()=>{let t="";for(let e=32;e<127;e++)t+=String.fromCharCode(e);return t})();export{o as TextRenderAlignment,r as TextRenderer,r as default,a as getTextHelperCanvas};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../../core/Evented.js";import{nextHighestPowerOfTwo as t}from"../../../../core/mathUtils.js";import{isSome as r}from"../../../../core/maybe.js";import{ContentObject as i}from"./ContentObject.js";import{ContentObjectType as s}from"./ContentObjectType.js";import{TextRenderer as h,getTextHelperCanvas as n}from"./TextRenderer.js";import{TextureType as o,PixelFormat as d,PixelType as u,TextureWrapMode as l,TextureSamplingMode as g}from"../../../webgl/enums.js";import{Texture as a}from"../../../webgl/Texture.js";import p from"../../../webgl/capabilities/isWebGL2Context.js";class m extends i{constructor(t,r,i){super(),this.type=s.Texture,this._glTexture=null,this.events=new e,this._requiresPowerOfTwo=!p(t.gl),this._renderer=new h(r,i)}get width(){return this._renderer.renderedWidth}get height(){return this._renderer.renderedHeight}get textureWidth(){const e=this.width;return this._requiresPowerOfTwo?t(e):e}get textureHeight(){const e=this.height;return this._requiresPowerOfTwo?t(e):e}get displayWidth(){return this._renderer.displayWidth}get displayHeight(){return this._renderer.displayHeight}get texcoordScale(){return[this._renderer.renderedWidth/this.textureWidth,this._renderer.renderedHeight/this.textureHeight]}get requiresFrameUpdates(){return!1}_createDescriptor(e){return{target:o.TEXTURE_2D,pixelFormat:d.RGBA,dataType:u.UNSIGNED_BYTE,wrapMode:l.CLAMP_TO_EDGE,flipped:!0,samplingMode:g.LINEAR_MIPMAP_LINEAR,hasMipmap:!0,preMultiplyAlpha:!0,maxAnisotropy:e.parameters.maxMaxAnisotropy}}get glTexture(){return this._glTexture}load(e){if(r(this._glTexture))return this._glTexture;const t=n(x,this.textureWidth,this.textureHeight),i=t.getContext("2d");return i.save(),this._renderer.render(i,0,this.textureHeight-this._renderer.renderedHeight),this._glTexture=new a(e,this._createDescriptor(e),t),i.restore(),this._glTexture}unload(){r(this._glTexture)&&(this._glTexture.dispose(),this._glTexture=null),this.events.emit("unloaded")}}const x={canvas:null};export{m as default};
5
+ import e from"../../../../core/Evented.js";import{nextHighestPowerOfTwo as t}from"../../../../core/mathUtils.js";import{isSome as r}from"../../../../core/maybe.js";import{ContentObject as i}from"./ContentObject.js";import{ContentObjectType as s}from"./ContentObjectType.js";import{TextRenderer as h,getTextHelperCanvas as n}from"./TextRenderer.js";import{TextureType as o,PixelFormat as d,PixelType as u,TextureWrapMode as l,TextureSamplingMode as g}from"../../../webgl/enums.js";import{Texture as a}from"../../../webgl/Texture.js";import p from"../../../webgl/capabilities/isWebGL2Context.js";class m extends i{constructor(t,r,i,n){super(),this.type=s.Texture,this._glTexture=null,this.events=new e,this._requiresPowerOfTwo=!p(t.gl),this._renderer=new h(r,i,n)}get width(){return this._renderer.renderedWidth}get height(){return this._renderer.renderedHeight}get textureWidth(){const e=this.width;return this._requiresPowerOfTwo?t(e):e}get textureHeight(){const e=this.height;return this._requiresPowerOfTwo?t(e):e}get displayWidth(){return this._renderer.displayWidth}get displayHeight(){return this._renderer.displayHeight}get texcoordScale(){return[this._renderer.renderedWidth/this.textureWidth,this._renderer.renderedHeight/this.textureHeight]}get requiresFrameUpdates(){return!1}_createDescriptor(e){return{target:o.TEXTURE_2D,pixelFormat:d.RGBA,dataType:u.UNSIGNED_BYTE,wrapMode:l.CLAMP_TO_EDGE,flipped:!0,samplingMode:g.LINEAR_MIPMAP_LINEAR,hasMipmap:!0,preMultiplyAlpha:!0,maxAnisotropy:e.parameters.maxMaxAnisotropy}}get glTexture(){return this._glTexture}load(e){if(r(this._glTexture))return this._glTexture;const t=n(x,this.textureWidth,this.textureHeight),i=t.getContext("2d");return i.save(),this._renderer.render(i,0,this.textureHeight-this._renderer.renderedHeight),this._glTexture=new a(e,this._createDescriptor(e),t),i.restore(),this._glTexture}unload(){r(this._glTexture)&&(this._glTexture.dispose(),this._glTexture=null),this.events.emit("unloaded")}}const x={canvas:null};export{m as default};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
+ */
5
+ import{newLayout as e}from"../../support/buffer/InterleavedLayout.js";import{ShaderTechniqueConfiguration as t}from"../core/shaderTechnique/ShaderTechniqueConfiguration.js";import r from"../lib/GLMaterial.js";import{Material as s,DefaultMaterialParameters as i}from"../lib/Material.js";import{RenderPass as n}from"../lib/RenderPass.js";import{RenderSlot as a}from"../lib/RenderSlot.js";import{VertexAttribute as o}from"../lib/VertexAttribute.js";import{writePosition as u}from"./internal/bufferWriterUtils.js";import{HeatmapDensityTechnique as c}from"../shaders/HeatmapDensityTechnique.js";class l extends s{constructor(e){super(e,m)}requiresSlot(e,t){return e===a.DRAPED_MATERIAL&&t===n.MATERIAL}getTechniqueConfig(){return new t}createGLMaterial(e){return new f(e)}intersect(){}createBufferWriter(){return new p}}class f extends r{constructor(e){super(e)}beginSlot(e){return this.updateParameters(e)}updateParameters(e){return this.ensureTechnique(c,e)}bind(e,t){t.bindPass(this._material.parameters,e)}}const m={searchRadius:128,...i};class p{constructor(){this.vertexBufferLayout=d}allocate(e){return this.vertexBufferLayout.createBuffer(e)}elementCount(e){return e.indices.get(o.POSITION).length*h}write(e,t,r,s){u(t.indices.get(o.POSITION),t.vertexAttributes.get(o.POSITION).data,e.transformation,r.position,s,h);const i=t.indices.get(o.POSITION).length,n=r.uv0;let a=s;for(let o=0;o<i;++o)n.setValues(a++,-1,-1),n.setValues(a++,1,-1),n.setValues(a++,1,1),n.setValues(a++,1,1),n.setValues(a++,-1,1),n.setValues(a++,-1,-1)}}const d=e().vec3f(o.POSITION).vec2f(o.UV0),h=6;function I(e){return e instanceof l}export{l as HeatmapDensityMaterial,I as isHeatMapDensityMaterial};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
+ */
5
+ import"../core/shaderLibrary/ScreenSpacePass.js";import"../core/shaderLibrary/util/AlphaDiscard.glsl.js";import"../core/shaderModules/interfaces.js";import"../core/shaderModules/ShaderBuilder.js";import"../lib/basicInterfaces.js";export{b as build}from"../../../../chunks/Heatmap.glsl.js";
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
+ */
5
+ import"../core/shaderModules/interfaces.js";import"../core/shaderModules/ShaderBuilder.js";import"../lib/VertexAttribute.js";export{b as build}from"../../../../chunks/HeatmapDensity.glsl.js";
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
+ */
5
+ import{bindProjectionMatrix as r,bindView as e}from"../core/shaderLibrary/util/View.glsl.js";import{ReloadableShaderModule as i}from"../core/shaderTechnique/ReloadableShaderModule.js";import{ShaderTechnique as t}from"../core/shaderTechnique/ShaderTechnique.js";import{Default3D as a}from"../lib/DefaultVertexAttributeLocations.js";import{Program as o}from"../lib/Program.js";import{H as s}from"../../../../chunks/HeatmapDensity.glsl.js";import{BlendOperation as l,BlendFactor as m}from"../../../webgl/enums.js";import{makePipelineState as n,simpleBlendingParams as p,defaultColorWriteParams as d}from"../../../webgl/renderState.js";class c extends t{initializeProgram(r){const e=c.shader.get().build();return new o(r.rctx,e,a)}initializePipeline(){return n({blending:p(m.ONE,m.ONE,l.ADD),colorWrite:d,depthTest:null,depthWrite:null})}bindPass(e,i){r(this.program,i.camera.projectionMatrix),this.program.setUniform1f("radius",e.searchRadius*i.camera.pixelRatio/i.camera.fullViewport[2])}bindDraw(r){e(this.program,r)}}c.shader=new i(s,(()=>import("./HeatmapDensity.glsl.js")));export{c as HeatmapDensityTechnique};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
+ */
5
+ import{ReloadableShaderModule as e}from"../core/shaderTechnique/ReloadableShaderModule.js";import{ShaderTechnique as r}from"../core/shaderTechnique/ShaderTechnique.js";import{Default3D as t}from"../lib/DefaultVertexAttributeLocations.js";import{blendingDefault as i}from"../lib/OrderIndependentTransparency.js";import{Program as o}from"../lib/Program.js";import{H as n}from"../../../../chunks/Heatmap.glsl.js";import{PrimitiveType as s}from"../../../webgl/enums.js";import{makePipelineState as a,defaultColorWriteParams as m}from"../../../webgl/renderState.js";class l extends r{initializeProgram(e){const r=l.shader.get().build();return new o(e.rctx,r,t)}initializePipeline(e){return a({blending:i,colorWrite:m,depthTest:null,depthWrite:null})}bindPass(e,r){this.program.bindTexture(e.densityMap,"densityMap"),this.program.bindTexture(e.colorRamp,"tex");const t=3/(.05*e.pointCount);this.program.setUniform1f("densityNormalizer",t)}get primitiveType(){return s.TRIANGLE_STRIP}}l.shader=new e(n,(()=>import("./Heatmap.glsl.js")));export{l as HeatmapTechnique};