@arcgis/core 5.2.0-next.124 → 5.2.0-next.126

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 (417) hide show
  1. package/analysis/ElevationProfile/ElevationProfileDisplayUnits.d.ts +3 -2
  2. package/analysis/VolumeMeasurement/VolumeMeasurementDisplayUnits.d.ts +1 -0
  3. package/arcade/functions/string.js +1 -1
  4. package/arcgisGlobal.d.ts +2 -0
  5. package/assets/esri/core/workers/RemoteClient.js +1 -1
  6. package/assets/esri/core/workers/chunks/05afa8c2b5929ce0545a.js +1 -0
  7. package/assets/esri/core/workers/chunks/0a20f84b5f004a77a9f9.js +1 -0
  8. package/assets/esri/core/workers/chunks/{97cd4145c016cf379120.js → 0a2b7c691a577cb3d189.js} +1 -1
  9. package/assets/esri/core/workers/chunks/0ccd4200c5a2a5de6e16.js +1 -0
  10. package/assets/esri/core/workers/chunks/{064445e6f9512817ac87.js → 12b5a645c0987a0efe54.js} +2 -2
  11. package/assets/esri/core/workers/chunks/{bdf012e591a8476db467.js → 1406a884241809b62bff.js} +1 -1
  12. package/assets/esri/core/workers/chunks/168b45c5d8233f23793e.js +2 -0
  13. package/assets/esri/core/workers/chunks/17218d714cb07b607c2f.js +1 -0
  14. package/assets/esri/core/workers/chunks/1d040aa8951fff3141d9.js +1 -0
  15. package/assets/esri/core/workers/chunks/{ce08e3369641da0d7a27.js → 1dbb3e25e005a8220779.js} +2 -2
  16. package/assets/esri/core/workers/chunks/{c39ebd8d469f1e8bb61e.js → 25e212fe9a2ea37c9e81.js} +1 -1
  17. package/assets/esri/core/workers/chunks/{216d8cb86548e92a8196.js → 2e3fd81653dc0d86456c.js} +1 -1
  18. package/assets/esri/core/workers/chunks/30604a29df320d7a4c6b.js +1 -0
  19. package/assets/esri/core/workers/chunks/3a40146568e6dd0b1828.js +1 -0
  20. package/assets/esri/core/workers/chunks/3ef367c9b7bf1588307d.js +1 -0
  21. package/assets/esri/core/workers/chunks/4327d2c39a660bd89da7.js +1 -0
  22. package/assets/esri/core/workers/chunks/4678a8170d8a3ccd1a7b.js +1 -0
  23. package/assets/esri/core/workers/chunks/{45d87af48a21644590c2.js → 4716693eca44e8f89f5c.js} +1 -1
  24. package/assets/esri/core/workers/chunks/474d9541d387b31ad275.js +1 -0
  25. package/assets/esri/core/workers/chunks/{20e4277a4a6c57957202.js → 4d18451e0ea6ca54101a.js} +1 -1
  26. package/assets/esri/core/workers/chunks/{26bc509a031788bfa678.js → 4f464047c6f6c9486efd.js} +1 -1
  27. package/assets/esri/core/workers/chunks/{58528ccb7f72ae76d52b.js → 540f60e31b19d85e9371.js} +1 -1
  28. package/assets/esri/core/workers/chunks/{44857a76be2c0ac65bb9.js → 55a560fd872f7463b33d.js} +1 -1
  29. package/assets/esri/core/workers/chunks/56acda1eed3a013430e2.js +1 -0
  30. package/assets/esri/core/workers/chunks/56e97b98dcb8a3f2bcb7.js +1 -0
  31. package/assets/esri/core/workers/chunks/{eb7f45736c852725b0bb.js → 57ab87e70ef85b9405f9.js} +122 -122
  32. package/assets/esri/core/workers/chunks/{59cd139712d919e6a738.js → 5adf2792416b22cd602f.js} +1 -1
  33. package/assets/esri/core/workers/chunks/5fe5ef5ccf480634d159.js +1 -0
  34. package/assets/esri/core/workers/chunks/67678054342178b601cf.js +1 -0
  35. package/assets/esri/core/workers/chunks/67dcf9b873cb037b2647.js +1 -0
  36. package/assets/esri/core/workers/chunks/6c3535aa7250c08b9e5b.js +1 -0
  37. package/assets/esri/core/workers/chunks/6e8187a77846239ed112.js +2 -0
  38. package/assets/esri/core/workers/chunks/76548469fe1b9c3b2051.js +1 -0
  39. package/assets/esri/core/workers/chunks/{52744dfd430cd0c0edfb.js → 78abd6c42f39e6f6ffbb.js} +1 -1
  40. package/assets/esri/core/workers/chunks/{5993db944b9e7825e0bc.js → 7926faab76a721a2e1c4.js} +1 -1
  41. package/assets/esri/core/workers/chunks/7d6da4e89aa951e6523f.js +1 -0
  42. package/assets/esri/core/workers/chunks/7dd94567833386dc74de.js +1 -0
  43. package/assets/esri/core/workers/chunks/{dc0816f064be576a2fa6.js → 7fcee3a1b900ddc9a5e3.js} +1 -1
  44. package/assets/esri/core/workers/chunks/806f96ad09e882be41af.js +1 -0
  45. package/assets/esri/core/workers/chunks/8190fcb1dd10ad20feed.js +1 -0
  46. package/assets/esri/core/workers/chunks/84db05e872dbf35c80a2.js +1 -0
  47. package/assets/esri/core/workers/chunks/85739ed6af0f0a3cb302.js +1 -0
  48. package/assets/esri/core/workers/chunks/{b22de8bf4a4a739bc36d.js → 97602019a1ccad22a03a.js} +1 -1
  49. package/assets/esri/core/workers/chunks/9ca98fffd43e63d5ade3.js +1 -0
  50. package/assets/esri/core/workers/chunks/9d6a96e4c7ccedcb0c13.js +1 -0
  51. package/assets/esri/core/workers/chunks/9ec04faad97be55309b8.js +1 -0
  52. package/assets/esri/core/workers/chunks/a08385ebf1715414c1a6.js +1 -0
  53. package/assets/esri/core/workers/chunks/{e22a013ec38989caf9de.js → a790fc6b22acf651574b.js} +1 -1
  54. package/assets/esri/core/workers/chunks/{2f52ad525744b8793d49.js → a8258636096416c837a2.js} +1 -1
  55. package/assets/esri/core/workers/chunks/{770ca70d363184e39d60.js → ab8a1140bf31f46f8ebf.js} +1 -1
  56. package/assets/esri/core/workers/chunks/{813dd84933b407c8fe86.js → b34305474a861aaf6ccb.js} +1 -1
  57. package/assets/esri/core/workers/chunks/{dc923e50958b68a50014.js → b96358d475dc98034aa4.js} +1 -1
  58. package/assets/esri/core/workers/chunks/ba435cc73956d9c64a11.js +1 -0
  59. package/assets/esri/core/workers/chunks/c5b733c3a5b2680042a2.js +1 -0
  60. package/assets/esri/core/workers/chunks/{f0709c48daca93e759c8.js → c692e583e87af58f6d91.js} +1 -1
  61. package/assets/esri/core/workers/chunks/{39985c51465b79ff0910.js → c77496c350004ee66eb2.js} +1 -1
  62. package/assets/esri/core/workers/chunks/{9e5b30b907102bc0c201.js → cb7cb7d57c4e7f76600f.js} +1 -1
  63. package/assets/esri/core/workers/chunks/{58a17fb3c0dd07c63d57.js → cfaba0470619786e1ef8.js} +2 -2
  64. package/assets/esri/core/workers/chunks/d371d9279b30548efa02.js +1 -0
  65. package/assets/esri/core/workers/chunks/d5f0fed415b5b155d57c.js +1 -0
  66. package/assets/esri/core/workers/chunks/{d3d48401462ef3bf0ad9.js → d5f72670634e73c0b53a.js} +1 -1
  67. package/assets/esri/core/workers/chunks/d6e914f6ed45ea59034e.js +1 -0
  68. package/assets/esri/core/workers/chunks/{5afc12671a9a1bb6c56c.js → dc52e036547612949d32.js} +1 -1
  69. package/assets/esri/core/workers/chunks/e0894a308c84d5c158b0.js +1 -0
  70. package/assets/esri/core/workers/chunks/e1ae83ff3e0225708d4d.js +1 -0
  71. package/assets/esri/core/workers/chunks/e35eb93c0fb1f6de8db0.js +1 -0
  72. package/assets/esri/core/workers/chunks/{df79c00b5ddbef7148a0.js → eaa7cb3ffa8c11706a09.js} +1 -1
  73. package/assets/esri/core/workers/chunks/eebbc86a15ae3adb5f38.js +1 -0
  74. package/assets/esri/core/workers/chunks/{eb780f2dafa14f776166.js → f71ec8a260405ed07958.js} +1 -1
  75. package/assets/esri/core/workers/chunks/fdbda3d2afea25142b86.js +1 -0
  76. package/assets/esri/libs/pdfjs/pdf.worker.mjs +4 -63051
  77. package/assets/esri/themes/base/_FocusRegionOverlayItem.scss +18 -0
  78. package/assets/esri/themes/base/_View.scss +4 -0
  79. package/assets/esri/themes/base/_core.scss +1 -0
  80. package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +13 -0
  81. package/assets/esri/themes/dark/main.css +1 -1
  82. package/assets/esri/themes/light/main.css +1 -1
  83. package/assets/esri/themes/light/view.css +1 -1
  84. package/assets/esri/widgets/Editor/t9n/messages.ar.json +1 -1
  85. package/assets/esri/widgets/Editor/t9n/messages.bg.json +1 -1
  86. package/assets/esri/widgets/Editor/t9n/messages.bs.json +1 -1
  87. package/assets/esri/widgets/Editor/t9n/messages.ca.json +1 -1
  88. package/assets/esri/widgets/Editor/t9n/messages.cs.json +1 -1
  89. package/assets/esri/widgets/Editor/t9n/messages.da.json +1 -1
  90. package/assets/esri/widgets/Editor/t9n/messages.de.json +1 -1
  91. package/assets/esri/widgets/Editor/t9n/messages.el.json +1 -1
  92. package/assets/esri/widgets/Editor/t9n/messages.en.json +1 -1
  93. package/assets/esri/widgets/Editor/t9n/messages.es.json +1 -1
  94. package/assets/esri/widgets/Editor/t9n/messages.et.json +1 -1
  95. package/assets/esri/widgets/Editor/t9n/messages.fi.json +1 -1
  96. package/assets/esri/widgets/Editor/t9n/messages.fr.json +1 -1
  97. package/assets/esri/widgets/Editor/t9n/messages.he.json +1 -1
  98. package/assets/esri/widgets/Editor/t9n/messages.hr.json +1 -1
  99. package/assets/esri/widgets/Editor/t9n/messages.hu.json +1 -1
  100. package/assets/esri/widgets/Editor/t9n/messages.id.json +1 -1
  101. package/assets/esri/widgets/Editor/t9n/messages.it.json +1 -1
  102. package/assets/esri/widgets/Editor/t9n/messages.ja.json +1 -1
  103. package/assets/esri/widgets/Editor/t9n/messages.ko.json +1 -1
  104. package/assets/esri/widgets/Editor/t9n/messages.lt.json +1 -1
  105. package/assets/esri/widgets/Editor/t9n/messages.lv.json +1 -1
  106. package/assets/esri/widgets/Editor/t9n/messages.nl.json +1 -1
  107. package/assets/esri/widgets/Editor/t9n/messages.no.json +1 -1
  108. package/assets/esri/widgets/Editor/t9n/messages.pl.json +1 -1
  109. package/assets/esri/widgets/Editor/t9n/messages.pt-BR.json +1 -1
  110. package/assets/esri/widgets/Editor/t9n/messages.pt-PT.json +1 -1
  111. package/assets/esri/widgets/Editor/t9n/messages.ro.json +1 -1
  112. package/assets/esri/widgets/Editor/t9n/messages.ru.json +1 -1
  113. package/assets/esri/widgets/Editor/t9n/messages.sk.json +1 -1
  114. package/assets/esri/widgets/Editor/t9n/messages.sl.json +1 -1
  115. package/assets/esri/widgets/Editor/t9n/messages.sr.json +1 -1
  116. package/assets/esri/widgets/Editor/t9n/messages.sv.json +1 -1
  117. package/assets/esri/widgets/Editor/t9n/messages.th.json +1 -1
  118. package/assets/esri/widgets/Editor/t9n/messages.tr.json +1 -1
  119. package/assets/esri/widgets/Editor/t9n/messages.uk.json +1 -1
  120. package/assets/esri/widgets/Editor/t9n/messages.vi.json +1 -1
  121. package/assets/esri/widgets/Editor/t9n/messages.zh-CN.json +1 -1
  122. package/assets/esri/widgets/Editor/t9n/messages.zh-HK.json +1 -1
  123. package/assets/esri/widgets/Editor/t9n/messages.zh-TW.json +1 -1
  124. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.ar.json +1 -1
  125. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.bg.json +1 -1
  126. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.bs.json +1 -1
  127. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.ca.json +1 -1
  128. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.cs.json +1 -1
  129. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.da.json +1 -1
  130. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.de.json +1 -1
  131. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.el.json +1 -1
  132. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.es.json +1 -1
  133. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.et.json +1 -1
  134. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.fi.json +1 -1
  135. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.fr.json +1 -1
  136. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.he.json +1 -1
  137. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.hr.json +1 -1
  138. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.hu.json +1 -1
  139. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.id.json +1 -1
  140. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.it.json +1 -1
  141. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.ja.json +1 -1
  142. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.ko.json +1 -1
  143. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.lt.json +1 -1
  144. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.lv.json +1 -1
  145. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.nl.json +1 -1
  146. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.no.json +1 -1
  147. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.pl.json +1 -1
  148. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.pt-BR.json +1 -1
  149. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.pt-PT.json +1 -1
  150. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.ro.json +1 -1
  151. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.ru.json +1 -1
  152. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.sk.json +1 -1
  153. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.sl.json +1 -1
  154. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.sr.json +1 -1
  155. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.sv.json +1 -1
  156. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.th.json +1 -1
  157. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.tr.json +1 -1
  158. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.uk.json +1 -1
  159. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.vi.json +1 -1
  160. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.zh-CN.json +1 -1
  161. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.zh-HK.json +1 -1
  162. package/assets/esri/widgets/support/SelectionToolbar/t9n/messages.zh-TW.json +1 -1
  163. package/chunks/GaussianSplatColorComposition.glsl.js +2 -0
  164. package/chunks/GaussianSplatEmissionComposition.glsl.js +11 -0
  165. package/chunks/GlobalIllumination.glsl.js +9 -9
  166. package/chunks/GlobalIlluminationBlur.glsl.js +8 -8
  167. package/chunks/HeatmapDensity.glsl.js +5 -5
  168. package/chunks/Pattern.glsl.js +30 -30
  169. package/chunks/RibbonLine.glsl.js +19 -19
  170. package/chunks/earcut.js +1 -1
  171. package/chunks/portal.js +1 -1
  172. package/config.js +1 -1
  173. package/core/accessorSupport/types.d.ts +5 -1
  174. package/graphic/MapImageGraphicOrigin.js +1 -1
  175. package/graphic/TileGraphicOrigin.js +1 -1
  176. package/interfaces.d.ts +8 -0
  177. package/kernel.js +1 -1
  178. package/layers/OrientedImageryLayer.js +1 -1
  179. package/layers/ParquetLayer.d.ts +3 -2
  180. package/layers/ParquetLayer.js +1 -1
  181. package/layers/SceneLayer.js +1 -1
  182. package/layers/geospatialPDF/GeospatialPDFFrame.js +1 -1
  183. package/layers/geospatialPDF/GeospatialPDFLayerWorker.js +2 -2
  184. package/layers/geospatialPDF/GeospatialPDFWorkerClient.js +1 -1
  185. package/layers/geospatialPDF/LGIDictMapFrame.js +1 -1
  186. package/layers/geospatialPDF/ViewportMeasureFrame.js +1 -1
  187. package/layers/geospatialPDF/geospatialPDFParserUtils.js +2 -0
  188. package/layers/geospatialPDF/projectionToWKTUtils.js +2 -0
  189. package/layers/geospatialPDF/renderExtentUtils.js +1 -1
  190. package/layers/geospatialPDF/sharedUtils.js +1 -1
  191. package/layers/mixins/ArcGISImageService.js +1 -1
  192. package/layers/mixins/TemporalLayer.js +1 -1
  193. package/layers/orientedImagery/transformations/imageToWorld.js +1 -1
  194. package/layers/orientedImagery/transformations/utils.js +1 -1
  195. package/layers/raster/datasets/GeospatialPDFRaster.js +1 -1
  196. package/layers/raster/types.d.ts +6 -0
  197. package/layers/support/TimeInfo.js +1 -1
  198. package/layers/support/TimeSeriesCalculation.d.ts +32 -0
  199. package/layers/support/TimeSeriesCalculation.js +2 -0
  200. package/layers/support/TimeSeriesInfo.d.ts +19 -0
  201. package/layers/support/TimeSeriesInfo.js +1 -1
  202. package/layers/support/commonProperties.js +1 -1
  203. package/layers/support/layersMapping.js +1 -1
  204. package/layers/support/timeSeriesUtils.d.ts +25 -1
  205. package/layers/support/timeSeriesUtils.js +1 -1
  206. package/layers/types.d.ts +1 -0
  207. package/package.json +2 -2
  208. package/popup/FeatureContentCollection.d.ts +12 -2
  209. package/popup/FeatureContentCollection.js +1 -1
  210. package/popup/types.d.ts +14 -3
  211. package/portal/schemas/definitions.js +1 -1
  212. package/portal/schemas/sceneLayerItem.js +1 -1
  213. package/renderers/support/AuthoringInfo.d.ts +8 -1
  214. package/renderers/support/AuthoringInfo.js +1 -1
  215. package/renderers/support/AuthoringInfoVisualVariable.d.ts +8 -1
  216. package/renderers/support/AuthoringInfoVisualVariable.js +1 -1
  217. package/rest/imageService/fetchRasterInfo.js +1 -1
  218. package/rest/knowledgeGraph/DataModel.js +1 -1
  219. package/smartMapping/renderers/color.d.ts +12 -0
  220. package/smartMapping/renderers/color.js +1 -1
  221. package/smartMapping/renderers/opacity.d.ts +6 -0
  222. package/smartMapping/renderers/opacity.js +1 -1
  223. package/smartMapping/renderers/size.d.ts +12 -0
  224. package/smartMapping/renderers/size.js +1 -1
  225. package/smartMapping/renderers/support/regenerateUtils.js +1 -1
  226. package/smartMapping/renderers/support/rendererUtils.js +1 -1
  227. package/smartMapping/renderers/support/timeSeriesUtils.js +1 -1
  228. package/smartMapping/renderers/type.d.ts +6 -0
  229. package/smartMapping/renderers/type.js +1 -1
  230. package/smartMapping/renderers/univariateColorSize.d.ts +6 -0
  231. package/smartMapping/renderers/univariateColorSize.js +1 -1
  232. package/support/revision.js +1 -1
  233. package/symbols/support/gfxUtils.js +1 -1
  234. package/symbols/support/previewSymbol3D.js +1 -1
  235. package/symbols/support/svgUtils.js +1 -1
  236. package/time/timeZoneUtils.js +1 -1
  237. package/views/2d/analysis/AreaMeasurement/AreaMeasurementTool.js +1 -1
  238. package/views/2d/analysis/AreaMeasurementAnalysisView2D.d.ts +8 -0
  239. package/views/2d/analysis/AreaMeasurementAnalysisView2D.js +1 -1
  240. package/views/2d/analysis/DistanceMeasurement/DistanceMeasurementTool.js +1 -1
  241. package/views/2d/analysis/DistanceMeasurementAnalysisView2D.d.ts +8 -0
  242. package/views/2d/analysis/DistanceMeasurementAnalysisView2D.js +1 -1
  243. package/views/2d/analysis/ElevationProfileAnalysisView2D.d.ts +3 -2
  244. package/views/3d/analysis/AreaMeasurementAnalysisView3D.js +1 -1
  245. package/views/3d/analysis/Dimension/DimensionController.js +1 -1
  246. package/views/3d/analysis/DirectLineMeasurementAnalysisView3D.js +1 -1
  247. package/views/3d/analysis/ElevationProfileAnalysisView3D.d.ts +3 -2
  248. package/views/3d/analysis/LineOfSight/LineOfSightEditTool.js +1 -1
  249. package/views/3d/analysis/LineOfSight/LineOfSightItemTool.js +1 -1
  250. package/views/3d/analysis/LineOfSight/lineOfSightPlacementUtils.js +1 -1
  251. package/views/3d/analysis/Viewshed/ViewshedEditTool.js +1 -1
  252. package/views/3d/analysis/Viewshed/ViewshedPlacementController.js +1 -1
  253. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementShiftTool.js +1 -1
  254. package/views/3d/analysis/VolumeMeasurementAnalysisView3D.d.ts +1 -0
  255. package/views/3d/analysis/VolumeMeasurementAnalysisView3D.js +1 -1
  256. package/views/3d/input/handlers/DragRotate.js +1 -1
  257. package/views/3d/input/handlers/PinchAndPanNavigation.js +1 -1
  258. package/views/3d/input/handlers/ground/GroundDoubleClickMove.js +1 -1
  259. package/views/3d/input/handlers/ground/GroundNavigation.js +1 -1
  260. package/views/3d/interactive/measurementTools/areaMeasurement3D/AreaMeasurement3DTool.js +1 -1
  261. package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DTool.js +1 -1
  262. package/views/3d/interactive/placementTools/GroundNavigationPlacementTool3D.js +2 -0
  263. package/views/3d/navigation/Navigation3D.d.ts +7 -0
  264. package/views/3d/navigation/Navigation3D.js +1 -1
  265. package/views/3d/navigation/modes/navigationModeUtils.d.ts +32 -0
  266. package/views/3d/navigation/modes/navigationModeUtils.js +2 -0
  267. package/views/3d/state/Constraints.js +1 -1
  268. package/views/3d/state/controllers/GroundNavigationController.js +1 -1
  269. package/views/3d/state/controllers/RotateController.js +1 -1
  270. package/views/3d/state/utils/groundNavigationUtils.js +1 -1
  271. package/views/3d/support/engineContent/line.js +1 -1
  272. package/views/3d/support/planarDistanceToGroundRatio.js +2 -0
  273. package/views/3d/terrain/OverlayManager.js +1 -1
  274. package/views/3d/terrain/OverlayRenderer.js +1 -1
  275. package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +13 -13
  276. package/views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js +2 -2
  277. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.glsl.js +1 -1
  278. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
  279. package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
  280. package/views/3d/webgl-engine/lib/GaussianSplatRenderUtils.js +1 -1
  281. package/views/3d/webgl-engine/lib/GaussianSplatRenderer.js +1 -1
  282. package/views/3d/webgl-engine/lib/GaussianSplatShadows.js +1 -1
  283. package/views/3d/webgl-engine/lib/SortedRenderGeometryRenderer.js +1 -1
  284. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  285. package/views/3d/webgl-engine/shaders/GaussianSplatColorComposition.glsl.js +2 -0
  286. package/views/3d/webgl-engine/shaders/GaussianSplatColorCompositionTechnique.js +2 -0
  287. package/views/3d/webgl-engine/shaders/GaussianSplatDepthPolicy.js +1 -1
  288. package/views/3d/webgl-engine/shaders/{GaussianSplatComposition.glsl.js → GaussianSplatEmissionComposition.glsl.js} +1 -1
  289. package/views/3d/webgl-engine/shaders/GaussianSplatEmissionCompositionTechnique.js +2 -0
  290. package/views/3d/webgl-engine/shaders/GaussianSplatTechnique.js +1 -1
  291. package/views/DOMContainer.d.ts +27 -0
  292. package/views/DOMContainer.js +1 -1
  293. package/views/PopupView.d.ts +1 -1
  294. package/views/View.d.ts +10 -1
  295. package/views/View.js +1 -1
  296. package/views/analysis/ElevationProfile/ElevationProfileController.js +1 -1
  297. package/views/analysis/LengthDimensionResult.d.ts +4 -1
  298. package/views/draw/support/managers/TooltipManager.js +1 -1
  299. package/views/input/types.d.ts +46 -0
  300. package/views/interactive/options/SnappingOptions.d.ts +4 -2
  301. package/views/interactive/options/SnappingOptions.js +1 -1
  302. package/views/interactive/options/ViewOptions.d.ts +18 -0
  303. package/views/interactive/options/bindViewToolOptions.js +2 -0
  304. package/views/interactive/snapping/SnappingManagerPool.js +1 -1
  305. package/views/interactive/snapping/allLayerSnapping.js +1 -1
  306. package/views/overlay/FocusRegionOverlayItem.js +2 -0
  307. package/views/selection/SelectionOperation.d.ts +27 -1
  308. package/views/selection/types.d.ts +8 -20
  309. package/views/webgl/renderState.js +1 -1
  310. package/widgets/AreaMeasurement2D/AreaMeasurement2DViewModel.d.ts +1 -0
  311. package/widgets/AreaMeasurement2D/AreaMeasurement2DViewModel.js +1 -1
  312. package/widgets/AreaMeasurement2D.js +1 -1
  313. package/widgets/BasemapLayerList/BasemapLayerListViewModel.d.ts +1 -0
  314. package/widgets/BasemapLayerList.d.ts +1 -0
  315. package/widgets/BatchAttributeForm/expressions/types.d.ts +1 -0
  316. package/widgets/BatchAttributeForm/inputs/FieldInput.d.ts +2 -0
  317. package/widgets/BatchAttributeForm/types.d.ts +5 -1
  318. package/widgets/BatchAttributeForm.d.ts +1 -0
  319. package/widgets/Bookmarks/BookmarksViewModel.d.ts +1 -0
  320. package/widgets/Bookmarks.d.ts +1 -0
  321. package/widgets/CatalogLayerList/CatalogLayerListViewModel.d.ts +1 -0
  322. package/widgets/CatalogLayerList.d.ts +1 -0
  323. package/widgets/DistanceMeasurement2D/DistanceMeasurement2DViewModel.d.ts +1 -0
  324. package/widgets/DistanceMeasurement2D/DistanceMeasurement2DViewModel.js +1 -1
  325. package/widgets/DistanceMeasurement2D.js +1 -1
  326. package/widgets/Editor.d.ts +1 -0
  327. package/widgets/Editor.js +1 -1
  328. package/widgets/FeatureForm.d.ts +1 -0
  329. package/widgets/FeatureTable/FeatureTableViewModel.d.ts +37 -1
  330. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  331. package/widgets/FeatureTable/support/FeatureStore.d.ts +26 -2
  332. package/widgets/FeatureTable/support/FeatureStore.js +1 -1
  333. package/widgets/FeatureTable.d.ts +12 -1
  334. package/widgets/FeatureTable.js +1 -1
  335. package/widgets/FeatureTemplates.d.ts +1 -0
  336. package/widgets/Features/FeaturesViewModel.d.ts +1 -0
  337. package/widgets/Features.d.ts +2 -1
  338. package/widgets/HistogramRangeSlider.d.ts +1 -0
  339. package/widgets/Home/HomeViewModel.d.ts +1 -0
  340. package/widgets/Home.d.ts +1 -0
  341. package/widgets/LayerList/LayerListViewModel.d.ts +1 -0
  342. package/widgets/LayerList.d.ts +1 -0
  343. package/widgets/Locate/LocateViewModel.d.ts +1 -0
  344. package/widgets/Locate.d.ts +1 -0
  345. package/widgets/OrientedImageryViewer/adapters/view/SceneViewAdapter.js +1 -1
  346. package/widgets/OrientedImageryViewer/components/Alert.js +1 -1
  347. package/widgets/OrientedImageryViewer/navigation/NavigationManagerPanoramic.js +1 -1
  348. package/widgets/OrientedImageryViewer/types.d.ts +4 -1
  349. package/widgets/OrientedImageryViewer.d.ts +4 -1
  350. package/widgets/OrientedImageryViewer.js +1 -1
  351. package/widgets/Popup/types.d.ts +7 -0
  352. package/widgets/Popup.d.ts +1 -0
  353. package/widgets/Print/PrintViewModel.d.ts +1 -0
  354. package/widgets/Print.d.ts +1 -0
  355. package/widgets/Search.d.ts +1 -0
  356. package/widgets/Sketch.d.ts +1 -0
  357. package/widgets/Slider.d.ts +4 -0
  358. package/widgets/TimeSlider.d.ts +1 -0
  359. package/widgets/Track/TrackViewModel.d.ts +1 -0
  360. package/widgets/Track.d.ts +1 -0
  361. package/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel.d.ts +1 -0
  362. package/widgets/UtilityNetworkTrace.d.ts +1 -0
  363. package/widgets/ValuePicker/types.d.ts +1 -0
  364. package/widgets/ValuePicker.d.ts +1 -0
  365. package/widgets/smartMapping/SmartMappingSliderBase.d.ts +1 -0
  366. package/widgets/support/SelectionList/types.d.ts +2 -0
  367. package/widgets/support/SelectionToolbar/SelectionToolbarViewModel.d.ts +2 -1
  368. package/assets/esri/core/workers/chunks/0148cb611bf7c8c5fe8a.js +0 -1
  369. package/assets/esri/core/workers/chunks/033debcbf6b3683dc4fe.js +0 -2
  370. package/assets/esri/core/workers/chunks/0acc754907395e83bbc6.js +0 -1
  371. package/assets/esri/core/workers/chunks/1c38ce72160d5a4e4b3d.js +0 -1
  372. package/assets/esri/core/workers/chunks/1e46703cb566c25458ad.js +0 -1
  373. package/assets/esri/core/workers/chunks/23279303cd7698314c56.js +0 -1
  374. package/assets/esri/core/workers/chunks/25c90092def215949db9.js +0 -1
  375. package/assets/esri/core/workers/chunks/29ae19206bbeb480be0f.js +0 -1
  376. package/assets/esri/core/workers/chunks/2f829321bfbd3bacd64f.js +0 -1
  377. package/assets/esri/core/workers/chunks/38890ac5917942374ab8.js +0 -1
  378. package/assets/esri/core/workers/chunks/463d69f596d1d34ef275.js +0 -2
  379. package/assets/esri/core/workers/chunks/475906b079f4f1ddacf2.js +0 -1
  380. package/assets/esri/core/workers/chunks/49affbed22e201f7c32b.js +0 -1
  381. package/assets/esri/core/workers/chunks/4c4ba466e23159991322.js +0 -1
  382. package/assets/esri/core/workers/chunks/4f58e0322707f63f5bf2.js +0 -1
  383. package/assets/esri/core/workers/chunks/606ac9358f508bda94f2.js +0 -1
  384. package/assets/esri/core/workers/chunks/724ea2e2843e6dac0a90.js +0 -1
  385. package/assets/esri/core/workers/chunks/7285a37cd5359aa4bac5.js +0 -1
  386. package/assets/esri/core/workers/chunks/753d1ff177ecee8e2377.js +0 -1
  387. package/assets/esri/core/workers/chunks/781fa83e8063b8f685dc.js +0 -1
  388. package/assets/esri/core/workers/chunks/78c1b75b1a8937eaa3cd.js +0 -1
  389. package/assets/esri/core/workers/chunks/7ff536284942c5284a16.js +0 -1
  390. package/assets/esri/core/workers/chunks/83c7c4218bc6ba2f16ee.js +0 -1
  391. package/assets/esri/core/workers/chunks/8984d02c0ce828fd223a.js +0 -1
  392. package/assets/esri/core/workers/chunks/8e102a2e134ce6ce0724.js +0 -1
  393. package/assets/esri/core/workers/chunks/92c852700ad1006f1e76.js +0 -1
  394. package/assets/esri/core/workers/chunks/9af36ee6a0df224859bc.js +0 -1
  395. package/assets/esri/core/workers/chunks/a3ab53b534e2872131be.js +0 -1
  396. package/assets/esri/core/workers/chunks/ac7af417ebf7721d7400.js +0 -1
  397. package/assets/esri/core/workers/chunks/aed479c14d93955f4798.js +0 -1
  398. package/assets/esri/core/workers/chunks/bb5ed2a796a45c41b0b4.js +0 -1
  399. package/assets/esri/core/workers/chunks/be52c319a0a81ce1ba36.js +0 -1
  400. package/assets/esri/core/workers/chunks/c0ec87800faf99cbd8bd.js +0 -1
  401. package/assets/esri/core/workers/chunks/c3008b20cb5fd38bd900.js +0 -1
  402. package/assets/esri/core/workers/chunks/ca5a4f62b09cc8579dc0.js +0 -1
  403. package/assets/esri/core/workers/chunks/d090baaa974e1e83fa44.js +0 -1
  404. package/assets/esri/core/workers/chunks/d25210574168ead2f813.js +0 -1
  405. package/assets/esri/core/workers/chunks/e4e1db4e9e5f13167401.js +0 -1
  406. package/assets/esri/core/workers/chunks/e9f8325a4cf89ae816cc.js +0 -1
  407. package/assets/esri/core/workers/chunks/ed7d4e8725aaa0ca4589.js +0 -1
  408. package/chunks/GaussianSplatComposition.glsl.js +0 -22
  409. package/layers/geospatialPDF/GeospatialPDFParserUtils.js +0 -2
  410. package/layers/geospatialPDF/Projection.js +0 -2
  411. package/views/3d/webgl-engine/shaders/GaussianSplatCompositionTechnique.js +0 -2
  412. package/views/3d/webgl-engine/shaders/GaussianSplatCompositionTechniqueConfiguration.js +0 -2
  413. /package/assets/esri/core/workers/chunks/{064445e6f9512817ac87.js.LICENSE.txt → 12b5a645c0987a0efe54.js.LICENSE.txt} +0 -0
  414. /package/assets/esri/core/workers/chunks/{033debcbf6b3683dc4fe.js.LICENSE.txt → 168b45c5d8233f23793e.js.LICENSE.txt} +0 -0
  415. /package/assets/esri/core/workers/chunks/{463d69f596d1d34ef275.js.LICENSE.txt → 1dbb3e25e005a8220779.js.LICENSE.txt} +0 -0
  416. /package/assets/esri/core/workers/chunks/{ce08e3369641da0d7a27.js.LICENSE.txt → 6e8187a77846239ed112.js.LICENSE.txt} +0 -0
  417. /package/assets/esri/core/workers/chunks/{58a17fb3c0dd07c63d57.js.LICENSE.txt → cfaba0470619786e1ef8.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import"../../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../../core/shaderLibrary/output/ReadDepthLastFrame.glsl.js";import"../../core/shaderLibrary/shading/Gamma.glsl.js";import"../../core/shaderLibrary/shading/MainLighting.glsl.js";import"../../core/shaderLibrary/shading/ScreenSpaceRayMarching.glsl.js";import"../../core/shaderLibrary/util/CameraSpace.glsl.js";import"../../core/shaderLibrary/util/cameraUniforms.js";import"../../core/shaderModules/FloatBindUniform.js";import"../../core/shaderModules/FloatPassUniform.js";import"../../core/shaderModules/glsl.js";import"../../core/shaderModules/Matrix4BindUniform.js";import"../../core/shaderModules/Texture2DBindUniform.js";import"../../core/shaderModules/Texture2DPassUniform.js";import"./GlobalIlluminationColorQuantization.glsl.js";import"../../shaders/floatBlendScale.glsl.js";import"../../shaders/ToneMapping.glsl.js";import"../../../../webgl/enums.js";import"../../../../webgl/NoParameters.js";import"../../../../webgl/ShaderBuilder.js";export{G as GlobalIlluminationPassParameters,c as build,e as defaultColorBleedWeight,d as defaultRayMarchMaxReach,f as defaultRayMarchMaxReachEmissionWeight,b as defaultRayMarchMaxSteps,g as defaultRayMarchMinReach,h as defaultRayMarchMinReachEmissionWeight,i as defaultRayMarchWorldReach}from"../../../../../chunks/GlobalIllumination.glsl.js";
2
+ import"../../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../../core/shaderLibrary/output/ReadDepthLastFrame.glsl.js";import"../../core/shaderLibrary/shading/Gamma.glsl.js";import"../../core/shaderLibrary/shading/MainLighting.glsl.js";import"../../core/shaderLibrary/shading/ScreenSpaceRayMarching.glsl.js";import"../../core/shaderLibrary/util/CameraSpace.glsl.js";import"../../core/shaderLibrary/util/cameraUniforms.js";import"../../core/shaderModules/FloatBindUniform.js";import"../../core/shaderModules/FloatPassUniform.js";import"../../core/shaderModules/glsl.js";import"../../core/shaderModules/Matrix4BindUniform.js";import"../../core/shaderModules/Texture2DBindUniform.js";import"../../core/shaderModules/Texture2DPassUniform.js";import"./GlobalIlluminationColorQuantization.glsl.js";import"../../shaders/floatBlendScale.glsl.js";import"../../shaders/ToneMapping.glsl.js";import"../../../../webgl/enums.js";import"../../../../webgl/NoParameters.js";import"../../../../webgl/ShaderBuilder.js";export{G as GlobalIlluminationPassParameters,c as build,e as defaultColorBleedWeight,f as defaultEmissionBoostFactor,d as defaultRayMarchMaxReach,g as defaultRayMarchMaxReachEmissionWeight,b as defaultRayMarchMaxSteps,h as defaultRayMarchMinReach,i as defaultRayMarchMinReachEmissionWeight,j as defaultRayMarchWorldReach}from"../../../../../chunks/GlobalIllumination.glsl.js";
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{releaseMaybe as e}from"../../../../../core/maybe.js";import{watch as s,syncAndInitial as r}from"../../../../../core/reactiveUtils.js";import{subclass as a}from"../../../../../core/accessorSupport/decorators.js";import{set as i}from"../../../../../core/libs/gl-matrix-2/math/vec2.js";import{UNIT_W as l,ZEROS as o}from"../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{InternalRenderCategory as u}from"../../../webgl.js";import{AmbientIllumination as n}from"../AmbientIllumination.js";import{G as m}from"../../../../../chunks/GlobalIllumination.glsl.js";import{G as h}from"../../../../../chunks/GlobalIlluminationBlur.glsl.js";import{GlobalIlluminationBlurTechnique as c}from"./GlobalIlluminationBlurTechnique.js";import{GlobalIlluminationTechnique as p}from"./GlobalIlluminationTechnique.js";import{GlobalIlluminationTechniqueConfiguration as _}from"./GlobalIlluminationTechniqueConfiguration.js";import{G as d}from"../../../../../chunks/GlobalIlluminationUpscale.glsl.js";import{GlobalIlluminationUpscaleTechnique as f}from"./GlobalIlluminationUpscaleTechnique.js";import{DepthStencilAttachment as b,ColorAttachment1 as g}from"../../../../webgl/enums.js";const w=1,P=256,I=100;let T=class extends n{constructor(t){super(t),this._passParameters=new m,this._drawParameters=new h,this._drawParametersUpscale=new d,this._lowQualityResolutionScale=.35,this._configuration=new _,this._lastOutput=null,this._isGlobalIlluminationUpdate=!1,this._resetBuffer=!1}initialize(){this.addHandles(s(()=>this._mode,t=>{0===t?this._disable():this._enable()},r))}destroy(){this._lastOutput=e(this._lastOutput)}_disable(){super._disable(),this._resetAccumulation(),this._passParameters.temporalSampleFrame=0}get hasHighQuality(){return 2===this._mode}resetAccumulation(){this._isGlobalIlluminationUpdate||!(this._passParameters.accumulatedFrames>I)&&this._configuration.hasEmission||this._resetAccumulation()}_resetAccumulation(){this._passParameters.accumulatedFrames=0,this._lastOutput=e(this._lastOutput)}precompile(){this.techniques.getCompiled(f)}render(t){if(this._passParameters.accumulatedFrames>=P)return this._lastOutput?.retain(),this._lastOutput;const e=t.find(({name:t})=>"normals"===t),s=e?.getTexture(),r=e?.getTexture(b),a=this._mode;if(!s||!r)return this._emptyOutput;if(0===a)return this._resetBuffer=!1,this._emptyOutput;if(!this._canRender)return this._resetBuffer=!1,this._requestRender(),this._emptyOutput;const l=this.bindParameters;this._configuration.hasEmission=!!l.reprojection.lastFrameEmission;const o=this.techniques.getCompiled(p,this._configuration),n=this.techniques.getCompiled(c),m=1===a,h=m?this._lowQualityResolutionScale:1,_=m?this.techniques.getCompiled(f):null;if(!o||!n||m&&!_)return this._requestRender(),this._emptyOutput;const d=this.renderingContext,{camera:I}=l;this._passParameters.normalTexture=s,this._passParameters.depthTexture=r,this._passParameters.projScale=1/I.computeScreenPixelSizeAtDist(1),this._passParameters.scaleGlobalIllumination=h;const{fullWidth:T,fullHeight:q}=I,x=Math.max(1,Math.floor(T*h)),O=Math.max(1,Math.floor(q*h)),C=this.fboCache.acquire(x,O,"global illumination input").acquireColor(g,2);d.bindFramebuffer(C.fbo),d.setViewport(0,0,x,O),d.bindTechnique(o,l,this._passParameters,this._drawParameters),d.screen.draw();const j=Math.max(1,Math.round(x/w)),F=Math.max(1,Math.round(O/w)),G=this.fboCache.acquire(j,F,"global illumination blur horizontal");d.bindFramebuffer(G.fbo);const M=C.obtainAttachment(g);this._drawParameters.texture=C.getTexture(),this._drawParameters.weightTexture=M.attachment,i(this._drawParameters.blurSize,0,w/O),d.bindTechnique(n,l,this._passParameters,this._drawParameters),d.setViewport(0,0,j,F),d.screen.draw(),C.release();const U=m?"global illumination blur vertical":u.AMBIENT_ILLUMINATION,A=this.fboCache.acquire(j,F,U);d.bindFramebuffer(A.fbo),d.setViewport(0,0,j,F),d.setClearColor(1,1,1,0),d.clear(16384),this._drawParameters.texture=G.getTexture(),this._drawParameters.weightTexture=M.attachment,i(this._drawParameters.blurSize,w/j,0),d.bindTechnique(n,l,this._passParameters,this._drawParameters),d.setViewport(0,0,j,F),d.screen.draw(),G.release(),A.attachColor(M,g),M.release();let B=A;return _&&(B=this.fboCache.acquire(T,q,u.AMBIENT_ILLUMINATION).acquireColor(g,2),d.bindFramebuffer(B.fbo),d.setViewport(0,0,T,q),d.setClearColor(1,1,1,0),d.clear(16384),this._drawParametersUpscale.colorTexture=A.getTexture(),this._drawParametersUpscale.weightTexture=A.getTexture(g),d.bindTechnique(_,l,this._passParameters,this._drawParametersUpscale),d.screen.draw(),A.release()),d.setViewport4fv(I.fullViewport),this._passParameters.temporalSampleFrame=(this._passParameters.temporalSampleFrame+1)%64,++this._passParameters.accumulatedFrames,this._storeOutput(B),this._passParameters.accumulatedFrames<P&&this._requestRender(),B}_requestRender(){this._isGlobalIlluminationUpdate=!0,this.requestRender(1),this._isGlobalIlluminationUpdate=!1}_storeOutput(t){this._lastOutput!==t&&(this._lastOutput=e(this._lastOutput),this._lastOutput=t,this._lastOutput.retain())}get _emptyOutput(){const t=this.renderingContext,{fullWidth:e,fullHeight:s}=this.bindParameters.camera,r=this.fboCache.acquire(e,s,u.AMBIENT_ILLUMINATION).acquireColor(g,2);return t.bindFramebuffer(r.fbo),t.setViewport(0,0,e,s),t.clearBuffer(0,l),t.clearBuffer(1,o),r}get _canRender(){const{reprojection:t,hasEmission:e,globalIllumination:s}=this.bindParameters;return!(!t.lastFrameColor||e&&!t.lastFrameEmission||!t.lastFrameDepth||!s||this._resetBuffer)}get _mode(){return this._useGlobalIllumination?this.view.stage.renderer.isFeatureEnabled(10)?2:1:0}get test(){const t=this;return{passParameters:this._passParameters,configuration:this._configuration,get mode(){return t._mode}}}};T=t([a("esri.views.3d.webgl-engine.effects.globalIllumination.GlobalIllumination")],T);export{T as GlobalIllumination,w as blurSizePixels,P as maxFrames};
2
+ import{__decorate as e}from"tslib";import{releaseMaybe as t}from"../../../../../core/maybe.js";import{watch as s,syncAndInitial as a}from"../../../../../core/reactiveUtils.js";import{waitRender as r}from"../../../../../core/scheduling.js";import{subclass as i}from"../../../../../core/accessorSupport/decorators.js";import{set as l}from"../../../../../core/libs/gl-matrix-2/math/vec2.js";import{UNIT_W as o,ZEROS as u}from"../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{InternalRenderCategory as n}from"../../../webgl.js";import{AmbientIllumination as m}from"../AmbientIllumination.js";import{G as h}from"../../../../../chunks/GlobalIllumination.glsl.js";import{G as c}from"../../../../../chunks/GlobalIlluminationBlur.glsl.js";import{GlobalIlluminationBlurTechnique as p}from"./GlobalIlluminationBlurTechnique.js";import{GlobalIlluminationTechnique as _}from"./GlobalIlluminationTechnique.js";import{GlobalIlluminationTechniqueConfiguration as d}from"./GlobalIlluminationTechniqueConfiguration.js";import{G as f}from"../../../../../chunks/GlobalIlluminationUpscale.glsl.js";import{GlobalIlluminationUpscaleTechnique as b}from"./GlobalIlluminationUpscaleTechnique.js";import{DepthStencilAttachment as g,ColorAttachment1 as w}from"../../../../webgl/enums.js";const P=1,x=100;let I=class extends m{constructor(e){super(e),this._passParameters=new h,this._drawParameters=new c,this._drawParametersUpscale=new f,this._configuration=new d,this._lastOutput=null,this._isGlobalIlluminationUpdate=!1,this._resetBuffer=!1,this._lowQualityResolutionScale=.35,this._maxFrames=256}initialize(){this.addHandles(s(()=>this._mode,e=>{0===e?this._disable():this._enable()},a))}destroy(){this._lastOutput=t(this._lastOutput)}_disable(){super._disable(),this._resetAccumulation(),this._passParameters.temporalSampleFrame=0}get hasHighQuality(){return 2===this._mode}resetAccumulation(){this._isGlobalIlluminationUpdate||!(this._passParameters.accumulatedFrames>x)&&this._configuration.hasEmission||this._resetAccumulation()}_resetAccumulation(){this._passParameters.accumulatedFrames=0,this._lastOutput=t(this._lastOutput)}precompile(){this.techniques.getCompiled(b)}render(e){if(this._passParameters.accumulatedFrames>=this._maxFrames)return this._lastOutput?.retain(),this._lastOutput;const t=e.find(({name:e})=>"normals"===e),s=t?.getTexture(),a=t?.getTexture(g),r=this._mode;if(!s||!a)return this._emptyOutput;if(0===r)return this._resetBuffer=!1,this._emptyOutput;if(!this._canRender)return this._resetBuffer=!1,this._requestRender(),this._emptyOutput;const i=this.bindParameters;this._configuration.hasEmission=!!i.reprojection.lastFrameEmission;const o=this.techniques.getCompiled(_,this._configuration),u=this.techniques.getCompiled(p),m=1===r,h=m?this._lowQualityResolutionScale:1,c=m?this.techniques.getCompiled(b):null;if(!o||!u||m&&!c)return this._requestRender(),this._emptyOutput;const d=this.renderingContext,{camera:f}=i;this._passParameters.normalTexture=s,this._passParameters.depthTexture=a,this._passParameters.projScale=1/f.computeScreenPixelSizeAtDist(1),this._passParameters.resolutionScale=h;const{fullWidth:x,fullHeight:I}=f,T=Math.max(1,Math.floor(x*h)),q=Math.max(1,Math.floor(I*h)),F=this.fboCache.acquire(T,q,"global illumination input").acquireColor(w,2);d.bindFramebuffer(F.fbo),d.setViewport(0,0,T,q),d.bindTechnique(o,i,this._passParameters,this._drawParameters),d.screen.draw();const O=Math.max(1,Math.round(T/P)),C=Math.max(1,Math.round(q/P)),j=this.fboCache.acquire(O,C,"global illumination blur horizontal");d.bindFramebuffer(j.fbo);const G=F.obtainAttachment(w);this._drawParameters.texture=F.getTexture(),this._drawParameters.weightTexture=G.attachment,l(this._drawParameters.blurSize,0,P/q),d.bindTechnique(u,i,this._passParameters,this._drawParameters),d.setViewport(0,0,O,C),d.screen.draw(),F.release();const S=m?"global illumination blur vertical":n.AMBIENT_ILLUMINATION,y=this.fboCache.acquire(O,C,S);d.bindFramebuffer(y.fbo),d.setViewport(0,0,O,C),d.setClearColor(1,1,1,0),d.clear(16384),this._drawParameters.texture=j.getTexture(),this._drawParameters.weightTexture=G.attachment,l(this._drawParameters.blurSize,P/O,0),d.bindTechnique(u,i,this._passParameters,this._drawParameters),d.setViewport(0,0,O,C),d.screen.draw(),j.release(),y.attachColor(G,w),G.release();let A=y;return c&&(A=this.fboCache.acquire(x,I,n.AMBIENT_ILLUMINATION).acquireColor(w,2),d.bindFramebuffer(A.fbo),d.setViewport(0,0,x,I),d.setClearColor(1,1,1,0),d.clear(16384),this._drawParametersUpscale.colorTexture=y.getTexture(),this._drawParametersUpscale.weightTexture=y.getTexture(w),d.bindTechnique(c,i,this._passParameters,this._drawParametersUpscale),d.screen.draw(),y.release()),d.setViewport4fv(f.fullViewport),this._passParameters.temporalSampleFrame=(this._passParameters.temporalSampleFrame+1)%64,++this._passParameters.accumulatedFrames,this._storeOutput(A),this._passParameters.accumulatedFrames<this._maxFrames&&this._requestRender(),A}_requestRender(){this._isGlobalIlluminationUpdate=!0,this.requestRender(1),this._isGlobalIlluminationUpdate=!1}_storeOutput(e){this._lastOutput!==e&&(this._lastOutput=t(this._lastOutput),this._lastOutput=e,this._lastOutput.retain())}get _emptyOutput(){const e=this.renderingContext,{fullWidth:t,fullHeight:s}=this.bindParameters.camera,a=this.fboCache.acquire(t,s,n.AMBIENT_ILLUMINATION).acquireColor(w,2);return e.bindFramebuffer(a.fbo),e.setViewport(0,0,t,s),e.clearBuffer(0,o),e.clearBuffer(1,u),a}get _canRender(){const{reprojection:e,hasEmission:t,globalIllumination:s}=this.bindParameters;return!(!e.lastFrameColor||t&&!e.lastFrameEmission||!e.lastFrameDepth||!s||this._resetBuffer)}get _mode(){return this._useGlobalIllumination?this.view.stage.renderer.isFeatureEnabled(10)?2:1:0}get test(){const e=this;return{get maxFrames(){return e._maxFrames},set maxFrames(t){e._maxFrames=t},get lowQualityResolutionScale(){return e._lowQualityResolutionScale},set lowQualityResolutionScale(t){e._lowQualityResolutionScale=t},passParameters:this._passParameters,configuration:this._configuration,get mode(){return e._mode},async restartAccumulation(){"disabled"!==e.produces&&(e._disable(),await r(),e._enable())}}}};I=e([i("esri.views.3d.webgl-engine.effects.globalIllumination.GlobalIllumination")],I);export{I as GlobalIllumination,P as blurSizePixels};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{releaseMaybe as i}from"../../../../core/maybe.js";import{signal as t}from"../../../../core/signal.js";import{create as s}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import e from"../../webgl/RenderCamera.js";import{isColor as h}from"../core/shaderLibrary/ShaderOutput.js";import{CloudsParameters as n}from"../effects/clouds/CloudsParameters.js";import{ReprojectionUniforms as r}from"./ReprojectionUniforms.js";import{ScreenSpaceReflectionsUniforms as a}from"./ScreenSpaceReflectionsUniforms.js";import{SceneLighting as o}from"../lighting/SceneLighting.js";class l{constructor(i,t){this.width=i,this.height=t}}const g=5e5;class c{constructor(i){this.shadowMap=i,this.output=0,this.slot=2,this.slicePlane=null,this.hasOccludees=!1,this._emissions=t(0),this.transparentWithoutDepthEmissionDimmingPass=!1,this.useFloatBlend=t(!0),this.enableFillLights=!0,this.alignPixelEnabled=!1,this.decorations=!0,this.frameRendererTarget=0,this.overlayStretch=1,this.viewshedEnabled=!1,this.laserlinesEnabled=!1,this.shadowAnalysisEnabled=!1,this.cutFillComputationEnabled=!1,this.cutFillVisualizationEnabled=!1,this.renderingShadowAnalysisMap=!1,this._camera=t(new e),this._inverseViewport=s(),this._oldLighting=new o,this._newLighting=new o,this._fadedLighting=new o,this._lighting=this._newLighting,this.screenSpaceReflections=new a,this.reprojection=new r,this.highlights=new Array,this.highlightMixOrigin=s(),this.highlightMixTexture=null,this.globalIlluminationEnabled=!1,this.hudRenderStyle=0,this.snowCover=0,this.clouds=new n,this.hasShadowHighlights=!1}destroy(){this._camera=this.contentCamera=null,this.mainDepth=this.overlay=this.ssao=this.shadowHighlight=null,this.depth=i(this.depth),this.shadowMap?.dispose()}get emissions(){return this._emissions.value}set emissions(i){this._emissions.value=i}get hasEmission(){switch(this.output){case 0:return this.hasOpaqueEmission;case 1:case 2:return this.hasTransparentEmission;default:return!1}}get hasOpaqueEmission(){return 1===this.emissions||3===this.emissions}get hasTransparentEmission(){return 2===this.emissions||3===this.emissions}get hasEmissions(){return 0!==this.emissions}get camera(){return this._camera.value}set camera(i){this._camera.value=i,this._inverseViewport[0]=1/i.fullViewport[2],this._inverseViewport[1]=1/i.fullViewport[3]}get enableOITOffset(){return this.camera.relativeElevation<g}get inverseViewport(){return this._inverseViewport}get lighting(){return this._lighting}fadeLighting(){switch(this.clouds.fadeFactor){case 0:this._lighting=this._oldLighting;break;default:this._fadedLighting.lerpLighting(this._oldLighting,this._newLighting,this.clouds.fadeFactor),this._lighting=this._fadedLighting;break;case 1:this._lighting=this._newLighting,this._oldLighting.copyFrom(this._newLighting)}}updateLighting(i,t,s,e){this._oldLighting.copyFrom(this.lighting),this._newLighting.noonFactor=t,this._newLighting.globalFactor=s,this._newLighting.set(i),this._oldLighting.updateLegacy(),1===e&&this.clouds.requestFade(),this.fadeLighting()}get hasScreenSpaceReflections(){return h(this.output)&&this.screenSpaceReflections.enabled&&null!=this.reprojection.lastFrameColor}get highlight(){return null==this.highlightLevel?null:this.highlights[this.highlightLevel]}get depth(){return this._depth}set depth(i){i&&(i.name="geometry depth"),this._depth=i}get occluder(){return 10===this.slot||11===this.slot?this.slot:null}}export{c as BindParameters,l as ViewportSize};
2
+ import{releaseMaybe as i}from"../../../../core/maybe.js";import{signal as t}from"../../../../core/signal.js";import{create as s}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import e from"../../webgl/RenderCamera.js";import{isColor as h}from"../core/shaderLibrary/ShaderOutput.js";import{CloudsParameters as n}from"../effects/clouds/CloudsParameters.js";import{ReprojectionUniforms as r}from"./ReprojectionUniforms.js";import{ScreenSpaceReflectionsUniforms as a}from"./ScreenSpaceReflectionsUniforms.js";import{SceneLighting as o}from"../lighting/SceneLighting.js";class l{constructor(i,t){this.width=i,this.height=t}}const g=5e5;class c{constructor(i){this.shadowMap=i,this.output=0,this.slot=2,this.slicePlane=null,this.planarDistanceToGroundRatio=1,this.hasOccludees=!1,this._emissions=t(0),this.transparentWithoutDepthEmissionDimmingPass=!1,this.useFloatBlend=t(!0),this.enableFillLights=!0,this.alignPixelEnabled=!1,this.decorations=!0,this.frameRendererTarget=0,this.overlayStretch=1,this.viewshedEnabled=!1,this.laserlinesEnabled=!1,this.shadowAnalysisEnabled=!1,this.cutFillComputationEnabled=!1,this.cutFillVisualizationEnabled=!1,this.renderingShadowAnalysisMap=!1,this._camera=t(new e),this._inverseViewport=s(),this._oldLighting=new o,this._newLighting=new o,this._fadedLighting=new o,this._lighting=this._newLighting,this.screenSpaceReflections=new a,this.reprojection=new r,this.highlights=new Array,this.highlightMixOrigin=s(),this.highlightMixTexture=null,this.globalIlluminationEnabled=!1,this.hudRenderStyle=0,this.snowCover=0,this.clouds=new n,this.hasShadowHighlights=!1}destroy(){this._camera=this.contentCamera=null,this.mainDepth=this.overlay=this.ssao=this.shadowHighlight=null,this.depth=i(this.depth),this.shadowMap?.dispose()}get emissions(){return this._emissions.value}set emissions(i){this._emissions.value=i}get hasEmission(){switch(this.output){case 0:return this.hasOpaqueEmission;case 1:case 2:return this.hasTransparentEmission;default:return!1}}get hasOpaqueEmission(){return 1===this.emissions||3===this.emissions}get hasTransparentEmission(){return 2===this.emissions||3===this.emissions}get hasEmissions(){return 0!==this.emissions}get camera(){return this._camera.value}set camera(i){this._camera.value=i,this._inverseViewport[0]=1/i.fullViewport[2],this._inverseViewport[1]=1/i.fullViewport[3]}get enableOITOffset(){return this.camera.relativeElevation<g}get inverseViewport(){return this._inverseViewport}get lighting(){return this._lighting}fadeLighting(){switch(this.clouds.fadeFactor){case 0:this._lighting=this._oldLighting;break;default:this._fadedLighting.lerpLighting(this._oldLighting,this._newLighting,this.clouds.fadeFactor),this._lighting=this._fadedLighting;break;case 1:this._lighting=this._newLighting,this._oldLighting.copyFrom(this._newLighting)}}updateLighting(i,t,s,e){this._oldLighting.copyFrom(this.lighting),this._newLighting.noonFactor=t,this._newLighting.globalFactor=s,this._newLighting.set(i),this._oldLighting.updateLegacy(),1===e&&this.clouds.requestFade(),this.fadeLighting()}get hasScreenSpaceReflections(){return h(this.output)&&this.screenSpaceReflections.enabled&&null!=this.reprojection.lastFrameColor}get highlight(){return null==this.highlightLevel?null:this.highlights[this.highlightLevel]}get depth(){return this._depth}set depth(i){i&&(i.name="geometry depth"),this._depth=i}get occluder(){return 10===this.slot||11===this.slot?this.slot:null}}export{c as BindParameters,l as ViewportSize};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{set as e}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{copy as t,scale as a,floor as i,subtract as r,set as l}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{positiveInfinity as n}from"../../../../geometry/support/aaBoundingBox.js";function s(e){return e.visibleGaussians>0&&null!=e.orderTexture.texture&&null!=e.textureAtlas.texture&&null!=e.headerTexture.texture}function o(e){return e.laserlinesEnabled||e.viewshedEnabled||e.shadowAnalysisEnabled}function u(e){return e.viewshedEnabled||e.shadowMap.ready}function d(a,i,r){m(a,i,r,r.eye),a.splatFading=i.data.fadingTexture.texture;const{fullHeight:l,fullWidth:n}=r,s=Math.tan(.5*r.fovY),o=s/l*n;e(a.tanFov,o,s),a.focalLength=l/(2*s),t(a.origin,r.eye)}function m(e,t,s,o){const u=t.data;e.splatOrder=u.orderTexture.texture,e.splatAtlas=u.textureAtlas.texture,e.splatHeader=u.headerTexture.texture;const{fullHeight:d,fullWidth:m}=s,x=t.view.qualitySettings.gaussianSplat.minimumPixelRadius;e.minSplatRadius=x*Math.sqrt(m*d)/Math.sqrt(2073600),a(e.tileCameraPosition,o,1/c),i(e.tileCameraPosition,e.tileCameraPosition),a(e.cameraDelta,e.tileCameraPosition,c),r(e.cameraDelta,o,e.cameraDelta),e.slicePlaneLocalOrigin=o;const p=t.clippingBox||n,[h,f,g,v,b,y]=p,[C,M,P]=o;l(e.clipMinCameraRelative,h-C,f-M,g-P),l(e.clipMaxCameraRelative,v-C,b-M,y-P)}const c=2.048;export{s as canRenderGaussianSplats,c as gaussianSplatTileSize,d as prepareGaussianSplatPerspectiveParameters,m as prepareGaussianSplatRenderParameters,u as requiresPreciseColorDepth,o as requiresPreciseDepth};
2
+ import{set as e}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{copy as t,scale as a,floor as i,subtract as r,set as l}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{positiveInfinity as n}from"../../../../geometry/support/aaBoundingBox.js";function s(e){return e.visibleGaussians>0&&null!=e.orderTexture.texture&&null!=e.textureAtlas.texture&&null!=e.headerTexture.texture}function o(e){return e.laserlinesEnabled||e.viewshedEnabled}function u(e){return e.viewshedEnabled}function m(a,i,r){c(a,i,r,r.eye),a.splatFading=i.data.fadingTexture.texture;const{fullHeight:l,fullWidth:n}=r,s=Math.tan(.5*r.fovY),o=s/l*n;e(a.tanFov,o,s),a.focalLength=l/(2*s),t(a.origin,r.eye)}function c(e,t,s,o){const u=t.data;e.splatOrder=u.orderTexture.texture,e.splatAtlas=u.textureAtlas.texture,e.splatHeader=u.headerTexture.texture;const{fullHeight:m,fullWidth:c}=s,d=t.view.qualitySettings.gaussianSplat.minimumPixelRadius;e.minSplatRadius=d*Math.sqrt(c*m)/Math.sqrt(2073600),a(e.tileCameraPosition,o,1/x),i(e.tileCameraPosition,e.tileCameraPosition),a(e.cameraDelta,e.tileCameraPosition,x),r(e.cameraDelta,o,e.cameraDelta),e.slicePlaneLocalOrigin=o;const p=t.clippingBox||n,[f,g,h,v,b,C]=p,[P,M,T]=o;l(e.clipMinCameraRelative,f-P,g-M,h-T),l(e.clipMaxCameraRelative,v-P,b-M,C-T)}const x=2.048;export{s as canRenderGaussianSplats,x as gaussianSplatTileSize,m as prepareGaussianSplatPerspectiveParameters,c as prepareGaussianSplatRenderParameters,u as requiresPreciseColorDepth,o as requiresPreciseDepth};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{watch as i}from"../../../../core/reactiveUtils.js";import{property as t,subclass as s}from"../../../../core/accessorSupport/decorators.js";import{copy as r}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as a}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as o,set as n,positiveInfinity as h,equals as l}from"../../../../geometry/support/aaBoundingBox.js";import{InternalRenderCategory as u}from"../../webgl.js";import{addWraparound as c}from"../../layers/i3s/I3SUtil.js";import p from"../../webgl/RenderNode.js";import{canRenderGaussianSplats as m,requiresPreciseColorDepth as d,prepareGaussianSplatPerspectiveParameters as _}from"./GaussianSplatRenderUtils.js";import{G as g}from"../../../../chunks/GaussianSplatComposition.glsl.js";import{GaussianSplatCompositionTechnique as f}from"../shaders/GaussianSplatCompositionTechnique.js";import{GaussianSplatCompositionTechniqueConfiguration as C}from"../shaders/GaussianSplatCompositionTechniqueConfiguration.js";import{G as b}from"../../../../chunks/GaussianSplatDepthComposition.glsl.js";import{GaussianSplatDepthCompositionTechnique as P}from"../shaders/GaussianSplatDepthCompositionTechnique.js";import{GaussianSplatPassParameters as S}from"../shaders/GaussianSplatPassParameters.js";import{GaussianSplatTechnique as q}from"../shaders/GaussianSplatTechnique.js";import{GaussianSplatTechniqueConfiguration as v}from"../shaders/GaussianSplatTechniqueConfiguration.js";import{ColorAttachment1 as w,DepthStencilAttachment as R,PrimitiveType as x}from"../../../webgl/enums.js";let y=class extends p{constructor(e){super(e),this.consumes={required:[u.GAUSSIAN_SPLAT]},this.produces=u.GAUSSIAN_SPLAT,this._slicePlaneEnabled=!1,this.layerView=null,this._passParameters=new S,this._compositionPassParameters=new g,this._depthCompositionPassParameters=new b,this._compositionConfiguration=new C,this._clipBox=o(),this._previousSortRequestCameraDirection=a(),this._cameraSortDirty=!1,this._tileCullingRevision=0,this._sortRequestDirectionEpsilon=.01,this._configuration=new v(e.view.state.isGlobal),n(this._clipBox,h)}async initialize(){this.addHandles([i(()=>this.view.state.camera,()=>this._onCameraChange()),i(()=>2===this.view.state.mode,e=>{e&&this._cameraSortDirty&&this._requestCameraSort(this.view.state.camera.ray.direction),this.requestRender(1)})])}precompile(){this._canRender&&(this._updateConfigurations(),this._compositionConfiguration.useFloatBlend=this.bindParameters.useFloatBlend.value,this._compositionConfiguration.hasEmission=this.bindParameters.hasOpaqueEmission,this.techniques.precompile(q,this._configuration),this.techniques.precompile(f,this._compositionConfiguration),this.techniques.precompile(P))}render(){const e=this.input;if(this._updateConfigurations(),this._fadeHelper.updateForFrame(this.view.stage.renderView.renderer.renderContext.time),!this._canRender)return e;const i=e.getAttachment(w);this._compositionConfiguration.useFloatBlend=this.bindParameters.useFloatBlend.value,this._compositionConfiguration.hasEmission=null!=i;const{fullWidth:t,fullHeight:s}=this.bindParameters.camera;this._prepareParameters();const r=this.renderingContext,a=this.fboCache,o=a.acquire(t,s,"gaussian color output"),n=e.getAttachment(R);o.attachDepth(n);const h=this.techniques.get(q,this._configuration);this._renderGaussianColorAndDepth(o,h);const l=a.acquire(t,s,this.produces);this._depthCompositionPassParameters.splatDepth=o.getTexture(w),l.attachDepth(e.getAttachment(R)),r.bindFramebuffer(l.fbo);const u=this.techniques.get(P);r.bindTechnique(u,this.bindParameters,this._depthCompositionPassParameters),r.screen.draw(),this._compositionPassParameters.color=e.getTexture(),this._compositionPassParameters.splatColor=o.getTexture(),i?(l.acquireColor(w,8,"emissive"),this._compositionPassParameters.emission=e.getTexture(w)):this._compositionPassParameters.emission=null,r.bindFramebuffer(l.fbo);const c=this.techniques.get(f,this._compositionConfiguration);return r.bindTechnique(c,this.bindParameters,this._compositionPassParameters),r.screen.draw(),o.release(),l}get slicePlaneEnabled(){return this._slicePlaneEnabled}set slicePlaneEnabled(e){this._slicePlaneEnabled!==e&&(this._slicePlaneEnabled=e,this.requestRender(1))}set clippingBox(e){const i=e||h;this._hasSameClipBox(i)||(n(this._clipBox,i),this._tileCullingRevision=c(this._tileCullingRevision,1),this._data.requestSort(),this.requestRender(1))}get clippingBox(){return this._clippingEnabled?this._clipBox:null}get tileCullingRevision(){return this._tileCullingRevision}get _clippingEnabled(){return!l(this._clipBox,h,(e,i)=>e===i)}get _isIdle(){return 2===this.view.state.mode}get _data(){return this.layerView.data}get _canRender(){return m(this._data)}get _fadeHelper(){return this.layerView.fadeHelper}_updateConfigurations(){this._configuration.alphaCutoff=this.view.qualitySettings.gaussianSplat.minimumOpacity,this._configuration.fadingEnabled=this._fadeHelper.fadingEnabled,this._configuration.receiveShadows=this.bindParameters.shadowMap.ready,this._configuration.preciseDepth=d(this.bindParameters),this._configuration.hasShadowHighlights=this._configuration.receiveShadows&&this.bindParameters.hasShadowHighlights,this._configuration.clippingEnabled=this._clippingEnabled,this._configuration.hasSlicePlane=this._slicePlaneEnabled&&null!=this.bindParameters.slicePlane}_onCameraChange(){this._tileCullingRevision=c(this._tileCullingRevision,1);const e=this.view.state.camera.ray.direction;this._cameraSortDirty=!0,(this._isIdle||this._shouldRequestSort(e))&&this._requestCameraSort(e)}_shouldRequestSort(e){return Math.abs(e[0]-this._previousSortRequestCameraDirection[0])>this._sortRequestDirectionEpsilon||Math.abs(e[1]-this._previousSortRequestCameraDirection[1])>this._sortRequestDirectionEpsilon||Math.abs(e[2]-this._previousSortRequestCameraDirection[2])>this._sortRequestDirectionEpsilon}_requestCameraSort(e){this._data.requestSort(),r(this._previousSortRequestCameraDirection,e),this._cameraSortDirty=!1}_prepareParameters(){_(this._passParameters,this.layerView,this.camera)}_hasSameClipBox(e){return l(this._clipBox,e,(e,i)=>e===i)}_renderGaussianColorAndDepth(e,i){const t=this.renderingContext;e.acquireColor(w,5,"gaussian depth output"),t.bindFramebuffer(e.fbo),t.setClearColor(0,0,0,0),t.clear(16384),this.renderingContext.bindTechnique(i,this.bindParameters,this._passParameters),this.renderingContext.drawArraysInstanced(x.TRIANGLE_STRIP,0,4,this._data.visibleGaussians)}};e([t()],y.prototype,"consumes",void 0),e([t()],y.prototype,"produces",void 0),e([t({constructOnly:!0})],y.prototype,"layerView",void 0),y=e([s("esri.views.3d.webgl-engine.lib.GaussianSplatRenderer")],y);export{y as GaussianSplatRenderer};
2
+ import{__decorate as e}from"tslib";import{watch as i}from"../../../../core/reactiveUtils.js";import{property as t,subclass as s}from"../../../../core/accessorSupport/decorators.js";import{copy as r}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as a}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as o,set as n,positiveInfinity as h,equals as l}from"../../../../geometry/support/aaBoundingBox.js";import{InternalRenderCategory as p}from"../../webgl.js";import{addWraparound as u}from"../../layers/i3s/I3SUtil.js";import c from"../../webgl/RenderNode.js";import{canRenderGaussianSplats as m,requiresPreciseColorDepth as d,prepareGaussianSplatPerspectiveParameters as _}from"./GaussianSplatRenderUtils.js";import{G as g}from"../../../../chunks/GaussianSplatColorComposition.glsl.js";import{GaussianSplatColorCompositionTechnique as f}from"../shaders/GaussianSplatColorCompositionTechnique.js";import{G as C}from"../../../../chunks/GaussianSplatDepthComposition.glsl.js";import{GaussianSplatDepthCompositionTechnique as b}from"../shaders/GaussianSplatDepthCompositionTechnique.js";import{G as P}from"../../../../chunks/GaussianSplatEmissionComposition.glsl.js";import{GaussianSplatEmissionCompositionTechnique as S}from"../shaders/GaussianSplatEmissionCompositionTechnique.js";import{GaussianSplatPassParameters as q}from"../shaders/GaussianSplatPassParameters.js";import{GaussianSplatTechnique as w}from"../shaders/GaussianSplatTechnique.js";import{GaussianSplatTechniqueConfiguration as v}from"../shaders/GaussianSplatTechniqueConfiguration.js";import{ColorAttachment1 as R,DepthStencilAttachment as x,ColorAttachment0 as D,DrawBufferNone as y,PrimitiveType as E}from"../../../webgl/enums.js";let G=class extends c{constructor(e){super(e),this.consumes={required:[p.GAUSSIAN_SPLAT]},this.produces=p.GAUSSIAN_SPLAT,this._slicePlaneEnabled=!1,this.layerView=null,this._passParameters=new q,this._colorCompositionPassParameters=new g,this._emissionCompositionPassParameters=new P,this._depthCompositionPassParameters=new C,this._clipBox=o(),this._previousSortRequestCameraDirection=a(),this._cameraSortDirty=!1,this._tileCullingRevision=0,this._sortRequestDirectionEpsilon=.01,this._configuration=new v(e.view.state.isGlobal),n(this._clipBox,h)}async initialize(){this.addHandles([i(()=>this.view.state.camera,()=>this._onCameraChange()),i(()=>2===this.view.state.mode,e=>{e&&this._cameraSortDirty&&this._requestCameraSort(this.view.state.camera.ray.direction),this.requestRender(1)})])}precompile(){this._canRender&&(this._updateConfigurations(),this.techniques.precompile(w,this._configuration),this.techniques.precompile(f),this.bindParameters.hasOpaqueEmission&&this.techniques.precompile(S),this.techniques.precompile(b))}render(){const e=this.input;if(this._updateConfigurations(),this._fadeHelper.updateForFrame(this.view.stage.renderView.renderer.renderContext.time),!this._canRender)return e;const i=e.getAttachment(R),{fullWidth:t,fullHeight:s}=this.bindParameters.camera;this._prepareParameters();const r=this.renderingContext,a=this.fboCache.acquire(t,s,"gaussian color output"),o=e.getAttachment(x);a.attachDepth(o);const n=this.techniques.get(w,this._configuration);this._renderGaussianColorAndDepth(a,n),this._depthCompositionPassParameters.splatDepth=a.getTexture(R),r.bindFramebuffer(e.fbo);const h=this.techniques.get(b);r.bindTechnique(h,this.bindParameters,this._depthCompositionPassParameters),r.screen.draw(),this._colorCompositionPassParameters.splatColor=a.getTexture();const l=this.techniques.get(f);r.bindTechnique(l,this.bindParameters,this._colorCompositionPassParameters);const p=r.setDrawBuffers([D]);if(r.screen.draw(),i){this._emissionCompositionPassParameters.splatColor=a.getTexture();const e=this.techniques.get(S);r.bindTechnique(e,this.bindParameters,this._emissionCompositionPassParameters),r.setDrawBuffers([y,R]),r.screen.draw()}return r.setDrawBuffers(p),a.release(),e}get slicePlaneEnabled(){return this._slicePlaneEnabled}set slicePlaneEnabled(e){this._slicePlaneEnabled!==e&&(this._slicePlaneEnabled=e,this.requestRender(1))}set clippingBox(e){const i=e||h;this._hasSameClipBox(i)||(n(this._clipBox,i),this._tileCullingRevision=u(this._tileCullingRevision,1),this._data.requestSort(),this.requestRender(1))}get clippingBox(){return this._clippingEnabled?this._clipBox:null}get tileCullingRevision(){return this._tileCullingRevision}get _clippingEnabled(){return!l(this._clipBox,h,(e,i)=>e===i)}get _isIdle(){return 2===this.view.state.mode}get _data(){return this.layerView.data}get _canRender(){return m(this._data)}get _fadeHelper(){return this.layerView.fadeHelper}_updateConfigurations(){this._configuration.alphaCutoff=this.view.qualitySettings.gaussianSplat.minimumOpacity,this._configuration.fadingEnabled=this._fadeHelper.fadingEnabled,this._configuration.receiveShadows=this.bindParameters.shadowMap.ready,this._configuration.preciseDepth=d(this.bindParameters),this._configuration.hasShadowHighlights=this._configuration.receiveShadows&&this.bindParameters.hasShadowHighlights,this._configuration.clippingEnabled=this._clippingEnabled,this._configuration.hasSlicePlane=this._slicePlaneEnabled&&null!=this.bindParameters.slicePlane}_onCameraChange(){this._tileCullingRevision=u(this._tileCullingRevision,1);const e=this.view.state.camera.ray.direction;this._cameraSortDirty=!0,(this._isIdle||this._shouldRequestSort(e))&&this._requestCameraSort(e)}_shouldRequestSort(e){return Math.abs(e[0]-this._previousSortRequestCameraDirection[0])>this._sortRequestDirectionEpsilon||Math.abs(e[1]-this._previousSortRequestCameraDirection[1])>this._sortRequestDirectionEpsilon||Math.abs(e[2]-this._previousSortRequestCameraDirection[2])>this._sortRequestDirectionEpsilon}_requestCameraSort(e){this._data.requestSort(),r(this._previousSortRequestCameraDirection,e),this._cameraSortDirty=!1}_prepareParameters(){_(this._passParameters,this.layerView,this.camera)}_hasSameClipBox(e){return l(this._clipBox,e,(e,i)=>e===i)}_renderGaussianColorAndDepth(e,i){const t=this.renderingContext;e.acquireColor(R,5,"gaussian depth output"),t.bindFramebuffer(e.fbo),t.setClearColor(0,0,0,0),t.clear(16384),this.renderingContext.bindTechnique(i,this.bindParameters,this._passParameters),this.renderingContext.drawArraysInstanced(E.TRIANGLE_STRIP,0,4,this._data.visibleGaussians)}};e([t()],G.prototype,"consumes",void 0),e([t()],G.prototype,"produces",void 0),e([t({constructOnly:!0})],G.prototype,"layerView",void 0),G=e([s("esri.views.3d.webgl-engine.lib.GaussianSplatRenderer")],G);export{G as GaussianSplatRenderer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{property as i,subclass as t}from"../../../../core/accessorSupport/decorators.js";import{invert as s}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{set as a}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as r}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{InternalRenderCategory as n}from"../../webgl.js";import o from"../../webgl/RenderNode.js";import{canRenderGaussianSplats as h,prepareGaussianSplatRenderParameters as p}from"./GaussianSplatRenderUtils.js";import{gaussianSplatDepthPolicy as l}from"../shaders/GaussianSplatDepthPolicy.js";import{G as d}from"../../../../chunks/GaussianSplatShadow.glsl.js";import{GaussianSplatShadowTechnique as u}from"../shaders/GaussianSplatShadowTechnique.js";import{GaussianSplatTechniqueConfiguration as c}from"../shaders/GaussianSplatTechniqueConfiguration.js";import{PrimitiveType as m}from"../../../webgl/enums.js";let g=class extends o{constructor(e){super(e),this.consumes={required:[n.SHADOWMAP]},this.produces=n.SHADOWMAP,this.layerView=null,this._passParameters=new d,this._cameraPosition=r(),this._configuration=new c(e.view.state.isGlobal)}precompile(){this._canRender&&(this._updateConfiguration(),this.techniques.precompile(u,this._configuration))}render(){const e=this.bindRenderTarget();return this._canRender&&this._render(),e}queryDepthRange(e){return this.layerView.suspended?null:this._data.queryVisibleTileDepthRange(e,this.layerView.clippingBox)}get _data(){return this.layerView.data}get _clippingEnabled(){return null!=this.layerView.clippingBox}get _canRender(){return!this.layerView.suspended&&h(this._data)}_render(){this._updateConfiguration();const e=this.techniques.get(u,this._configuration);this._prepareShadowParameters(this.bindParameters.camera),this.renderingContext.bindTechnique(e,this.bindParameters,this._passParameters),this.renderingContext.drawArraysInstanced(m.TRIANGLE_STRIP,0,4,this._data.visibleGaussians)}_updateConfiguration(){this._configuration.preciseDepth=!0,this._configuration.clippingEnabled=this._clippingEnabled,this._configuration.hasSlicePlane=this.layerView.slicePlaneEnabled&&null!=this.bindParameters.slicePlane,this._configuration.output=8===this.bindParameters.output?8:5}_prepareShadowParameters(e){s(this._passParameters.inverseProjectionMatrix,e.projectionMatrix);const i=8===this.bindParameters.output?l.viewshed:this.bindParameters.renderingShadowAnalysisMap?l.accumulated:l.direct;this._passParameters.alphaCutoff=i.alphaCutoff,this._passParameters.depthBias=i.depthBias,this._updateShadowCameraPosition(e),p(this._passParameters,this.layerView,e,this._cameraPosition)}_updateShadowCameraPosition(e){const i=e.viewInverseTransposeMatrix;a(this._cameraPosition,i[3],i[7],i[11])}};e([i()],g.prototype,"consumes",void 0),e([i()],g.prototype,"produces",void 0),e([i({constructOnly:!0})],g.prototype,"layerView",void 0),g=e([t("esri.views.3d.webgl-engine.lib.GaussianSplatShadows")],g);export{g as GaussianSplatShadows};
2
+ import{__decorate as e}from"tslib";import{property as i,subclass as t}from"../../../../core/accessorSupport/decorators.js";import{invert as s}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{set as a}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as r}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{InternalRenderCategory as n}from"../../webgl.js";import o from"../../webgl/RenderNode.js";import{canRenderGaussianSplats as p,prepareGaussianSplatRenderParameters as h}from"./GaussianSplatRenderUtils.js";import{gaussianSplatDepthPolicy as l}from"../shaders/GaussianSplatDepthPolicy.js";import{G as d}from"../../../../chunks/GaussianSplatShadow.glsl.js";import{GaussianSplatShadowTechnique as u}from"../shaders/GaussianSplatShadowTechnique.js";import{GaussianSplatTechniqueConfiguration as c}from"../shaders/GaussianSplatTechniqueConfiguration.js";import{PrimitiveType as m}from"../../../webgl/enums.js";let g=class extends o{constructor(e){super(e),this.consumes={required:[n.SHADOWMAP]},this.produces=n.SHADOWMAP,this.layerView=null,this._passParameters=new d,this._cameraPosition=r(),this._configuration=new c(e.view.state.isGlobal)}precompile(){this._canRender&&(this._updateConfiguration(),this.techniques.precompile(u,this._configuration))}render(){const e=this.bindRenderTarget();return this._canRender&&this._render(),e}queryDepthRange(e){return this.layerView.suspended?null:this._data.queryVisibleTileDepthRange(e,this.layerView.clippingBox)}get _data(){return this.layerView.data}get _clippingEnabled(){return null!=this.layerView.clippingBox}get _canRender(){return!this.layerView.suspended&&p(this._data)}_render(){this._updateConfiguration();const e=this.techniques.get(u,this._configuration);this._prepareShadowParameters(this.bindParameters.camera),this.renderingContext.bindTechnique(e,this.bindParameters,this._passParameters),this.renderingContext.drawArraysInstanced(m.TRIANGLE_STRIP,0,4,this._data.visibleGaussians)}_updateConfiguration(){this._configuration.preciseDepth=8===this.bindParameters.output,this._configuration.clippingEnabled=this._clippingEnabled,this._configuration.hasSlicePlane=this.layerView.slicePlaneEnabled&&null!=this.bindParameters.slicePlane,this._configuration.output=8===this.bindParameters.output?8:5}_prepareShadowParameters(e){s(this._passParameters.inverseProjectionMatrix,e.projectionMatrix);const i=this.bindParameters.renderingShadowAnalysisMap?l.accumulated:l.direct;this._passParameters.alphaCutoff=i.alphaCutoff,this._passParameters.depthBias=i.depthBias,this._updateShadowCameraPosition(e),h(this._passParameters,this.layerView,e,this._cameraPosition)}_updateShadowCameraPosition(e){const i=e.viewInverseTransposeMatrix;a(this._cameraPosition,i[3],i[7],i[11])}};e([i()],g.prototype,"consumes",void 0),e([i()],g.prototype,"produces",void 0),e([i({constructOnly:!0})],g.prototype,"layerView",void 0),g=e([t("esri.views.3d.webgl-engine.lib.GaussianSplatShadows")],g);export{g as GaussianSplatShadows};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{addMany as r,filterInPlace as t}from"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{someMap as i,everyMap as s}from"../../../../core/MapUtils.js";import n from"../../../../core/PooledArray.js";import{property as o,subclass as a}from"../../../../core/accessorSupport/decorators.js";import{set as d}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as h}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{OverlayTarget as c}from"../../terrain/Intersector.js";import{ChangeSet as l,RenderGeometryUpdate as g}from"./ChangeSet.js";import{IntersectorResultRay as m}from"./IntersectorResult.js";import{RendererBase as p}from"./RendererBase.js";import{noBudget as u}from"../../../support/Scheduler.js";let y=class extends p{constructor(e){super(e),this._pending=new _,this._changes=new l,this._sortedRenderers=new n,this._geometries=new Map,this._hasHighlights=!1,this._hasWater=!1}destroy(){this.destroyed||(this._changes.prune(),this._sortedRenderers.prune(),this._geometries.clear(),this._pending.clear())}get updating(){return!this._pending.empty||this._changes.updates.length>0}get rctx(){return this.rendererContext.rctx}get _localOriginFactory(){return this.rendererContext.localOriginFactory}get hasHighlights(){return this._hasHighlights}hasHighlight(e){return i(this.renderers,r=>r.hasHighlight(e))}get hasWater(){return this._hasWater}get hasOccluders(){return this.renderers&&i(this.renderers,e=>e.hasOnlyOccluders)}get hasOnlyOccluders(){return s(this.renderers,e=>e.hasOnlyOccluders)}get isEmpty(){return!this.updating&&0===this.renderers.size&&0===this._geometries.size}get _screenToWorldRatio(){return this.rendererContext.screenToWorldRatio}get sortedRenderers(){return this._sortedRenderers}commitChanges(){return!!this.updating&&(this._processAddsRemoves(),this.commit(this._changes,u,this.rendererContext.pluginContext)&&(this._updateSortedMaterialRenderers(),this._hasHighlights=i(this.renderers,e=>{const r=e.produces.get(18);return!!r&&r(10)}),this._hasWater=i(this.renderers,e=>{const r=e.produces.get(19);return!!r&&r(4)})),this.notifyChange("updating"),!0)}addRenderer(){this._sortedRenderers.clear()}removeRenderer(){this._sortedRenderers.clear()}addGeometries(e,r){if(0===e.length)return;const t=this._validateRenderGeometries(e);for(const s of t)this._geometries.set(s.id,s);const i=this._pending.empty;for(const s of t)this._pending.adds.add(s);switch(i&&this.notifyChange("updating"),r){case 0:this._notifyGraphicVisibilityChanged(e);break;case 1:this._notifyGraphicGeometryChanged(e)}}removeGeometries(e,r){if(this.destroyed)return;const t=this._pending.empty,i=this._pending.adds;for(const s of e)i.has(s)?(this._pending.removed.add(s),i.delete(s)):this._pending.removed.has(s)||this._pending.removes.add(s),this._geometries.delete(s.id);t&&!this._pending.empty&&this.notifyChange("updating"),1===r&&this._notifyGraphicGeometryChanged(e)}modifyGeometries(e,r){const t=0===this._changes.updates.length;for(const i of e){const e=new g;this._changes.updates.push(e),e.renderGeometry=this._ensureValidRenderGeometry(i),e.updateType=r}switch(t&&this._changes.updates.length>0&&this.notifyChange("updating"),r){case 4:case 2:return this._notifyGraphicGeometryChanged(e);case 1:return this._notifyGraphicVisibilityChanged(e)}}updateAnimation(e){let r=!1;return this._sortedRenderers.forAll(t=>r=!!t.updateAnimation&&t.updateAnimation(e)||r),r}precompile(e){return this._sortedRenderers.reduce((r,t)=>t.precompile(e)||r,!1)}render(e){this._sortedRenderers.forAll(r=>{const t=r.acquireTechniques(e);t&&r.render(e,t)})}intersectRay(e,r,t,i,s){for(const n of this._geometries.values()){if(!i(n))continue;this._intersectRenderGeometry(n,t,r,0,e,s);const o=this.rendererContext.longitudeCyclical;if(o){const i=n.boundingSphere.center,a=this._effectiveGeometryRadius(n);i[0]-a<o.min&&this._intersectRenderGeometry(n,t,r,o.range,e,s),i[0]+a>o.max&&this._intersectRenderGeometry(n,t,r,-o.range,e,s)}s++}return s}*intersectScreenPolygon(e,r,t,i){for(const s of this._geometries.values()){if(!t(s))continue;this._intersectScreenPolygonRenderGeometry(s,r,0,e,i);const n=this.rendererContext.longitudeCyclical;if(n){const t=s.boundingSphere.center,o=this._effectiveGeometryRadius(s);t[0]-o<n.min&&this._intersectScreenPolygonRenderGeometry(s,r,n.range,e,i),t[0]+o>n.max&&this._intersectScreenPolygonRenderGeometry(s,r,-n.range,e,i)}i++,yield}return i}_effectiveGeometryRadius(e){const r=e.boundingSphere.radius;return r||this._screenToWorldRatio*C}_updateSortedMaterialRenderers(){if(!(this._sortedRenderers.length>0)){for(const e of this.renderers.values())this._sortedRenderers.push(e);this._sortedRenderers.sort((e,r)=>r.material?.renderPriority===e.material?.renderPriority?e.drapedPriority-r.drapedPriority:(r.material?.renderPriority||0)-(e.material?.renderPriority||0))}}_processAddsRemoves(){this._changes.adds.length=0,this._changes.removes.length=0,r(this._changes.adds,Array.from(this._pending.adds)),r(this._changes.removes,Array.from(this._pending.removes)),t(this._changes.updates,({renderGeometry:e})=>!this._pending.has(e)),this._pending.clear()}_intersectRenderGeometry(e,r,t,i,s,n){if(!e.visible||!e.material.visible||!e.material.intersectRayDraped)return;let o=0;0===e.type?(i+=e.transformation[12],o=e.transformation[13]):(i+=e.localOrigin.vec3[0],o=e.localOrigin.vec3[1]),v[0]=t[0]-i,v[1]=t[1]-o,e.material.intersectRayDraped(e,s,v,(t,i,o,a)=>{f(r,a,n,e.material.renderPriority,s,e.layerViewUid,e.graphicUid)},r,this._screenToWorldRatio)}_intersectScreenPolygonRenderGeometry(e,r,t,i,s){if(!e.visible||!e.material.visible||!e.material.intersectScreenPolygonDraped)return;0===e.type?d(G,t+e.transformation[12],e.transformation[13]):d(G,t+e.localOrigin.vec3[0],e.localOrigin.vec3[1]);const n=this._screenToWorldRatio;for(const o of r){const r=e.material.intersectScreenPolygonDraped(e,G,i,o,n);if(r)return void R(o.distance,r.primitiveIndex,s,e.material.renderPriority,i,e.layerViewUid,e.graphicUid)}}_notifyGraphicGeometryChanged(e){if(null==this.drapeSource.notifyGraphicGeometryChanged)return;let r;for(const{graphicUid:t}of e)null!=t&&t!==r&&(this.drapeSource.notifyGraphicGeometryChanged(t),r=t)}_notifyGraphicVisibilityChanged(e){if(null==this.drapeSource.notifyGraphicVisibilityChanged)return;let r;for(const{graphicUid:t}of e)null!=t&&t!==r&&(this.drapeSource.notifyGraphicVisibilityChanged(t),r=t)}_validateRenderGeometries(e){for(const r of e)this._ensureValidRenderGeometry(r);return e}_ensureValidRenderGeometry(e){return 1===e.type||null==e.localOrigin&&(e.localOrigin=this._localOriginFactory.getOrigin(e.boundingSphere.center)),e}get test(){}};e([o({constructOnly:!0})],y.prototype,"drapeSource",void 0),e([o({constructOnly:!0})],y.prototype,"rendererContext",void 0),e([o()],y.prototype,"updating",null),e([o()],y.prototype,"rctx",null),e([o()],y.prototype,"_localOriginFactory",null),e([o({readOnly:!0})],y.prototype,"isEmpty",null),e([o()],y.prototype,"_geometries",void 0),y=e([a("esri.views.3d.webgl-engine.lib.SortedRenderGeometryRenderer")],y);class _{constructor(){this.adds=new Set,this.removes=new Set,this.removed=new Set}get empty(){return 0===this.adds.size&&0===this.removes.size&&0===this.removed.size}has(e){return this.adds.has(e)||this.removes.has(e)||this.removed.has(e)}clear(){this.adds.clear(),this.removes.clear(),this.removed.clear()}}function f(e,r,t,i,s,n,o){const a=new c(n,o,r),d=r=>{r.set(5,a,e.distance,e.renderDistance,e.normal,e.transformation,t,i)};if((null==s.results.min.drapedLayerOrder||t>=s.results.min.drapedLayerOrder)&&(null==s.results.min.renderDistance||s.results.ground.renderDistance<=s.results.min.renderDistance)&&d(s.results.min),0!==s.options.store&&(null==s.results.max.drapedLayerOrder||t<s.results.max.drapedLayerOrder)&&(null==s.results.max.renderDistance||s.results.ground.renderDistance>s.results.max.renderDistance)&&d(s.results.max),2===s.options.store){const e=new m(s.ray);d(e),s.results.all.push(e)}}function R(e,r,t,i,s,n,o){s.polygonResults.add(5,new c(n,o,r),e,t,i)}const v=h(),G=h(),C=128;export{y as SortedRenderGeometryRenderer};
2
+ import{__decorate as e}from"tslib";import{addMany as r,filterInPlace as t}from"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{someMap as i,everyMap as s}from"../../../../core/MapUtils.js";import n from"../../../../core/PooledArray.js";import{property as o,subclass as a}from"../../../../core/accessorSupport/decorators.js";import{set as d}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as h}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{OverlayTarget as c}from"../../terrain/Intersector.js";import{ChangeSet as l,RenderGeometryUpdate as p}from"./ChangeSet.js";import{IntersectorResultRay as m}from"./IntersectorResult.js";import{RendererBase as g}from"./RendererBase.js";import{noBudget as u}from"../../../support/Scheduler.js";let y=class extends g{constructor(e){super(e),this._pending=new _,this._changes=new l,this._sortedRenderers=new n,this._geometries=new Map,this._hasHighlights=!1,this._hasWater=!1}destroy(){this.destroyed||(this._changes.prune(),this._sortedRenderers.prune(),this._geometries.clear(),this._pending.clear())}get updating(){return!this._pending.empty||this._changes.updates.length>0}get rctx(){return this.rendererContext.rctx}get _localOriginFactory(){return this.rendererContext.localOriginFactory}get hasHighlights(){return this._hasHighlights}hasHighlight(e){return i(this.renderers,r=>r.hasHighlight(e))}get hasWater(){return this._hasWater}get hasOccluders(){return this.renderers&&i(this.renderers,e=>e.hasOnlyOccluders)}get hasOnlyOccluders(){return s(this.renderers,e=>e.hasOnlyOccluders)}get isEmpty(){return!this.updating&&0===this.renderers.size&&0===this._geometries.size}get _screenToMapUnitsRatio(){return this.rendererContext.screenToMapUnitsRatio}get _mapUnitsToGroundRatio(){return this.rendererContext.mapUnitsToGroundRatio}get sortedRenderers(){return this._sortedRenderers}commitChanges(){return!!this.updating&&(this._processAddsRemoves(),this.commit(this._changes,u,this.rendererContext.pluginContext)&&(this._updateSortedMaterialRenderers(),this._hasHighlights=i(this.renderers,e=>{const r=e.produces.get(18);return!!r&&r(10)}),this._hasWater=i(this.renderers,e=>{const r=e.produces.get(19);return!!r&&r(4)})),this.notifyChange("updating"),!0)}addRenderer(){this._sortedRenderers.clear()}removeRenderer(){this._sortedRenderers.clear()}addGeometries(e,r){if(0===e.length)return;const t=this._validateRenderGeometries(e);for(const s of t)this._geometries.set(s.id,s);const i=this._pending.empty;for(const s of t)this._pending.adds.add(s);switch(i&&this.notifyChange("updating"),r){case 0:this._notifyGraphicVisibilityChanged(e);break;case 1:this._notifyGraphicGeometryChanged(e)}}removeGeometries(e,r){if(this.destroyed)return;const t=this._pending.empty,i=this._pending.adds;for(const s of e)i.has(s)?(this._pending.removed.add(s),i.delete(s)):this._pending.removed.has(s)||this._pending.removes.add(s),this._geometries.delete(s.id);t&&!this._pending.empty&&this.notifyChange("updating"),1===r&&this._notifyGraphicGeometryChanged(e)}modifyGeometries(e,r){const t=0===this._changes.updates.length;for(const i of e){const e=new p;this._changes.updates.push(e),e.renderGeometry=this._ensureValidRenderGeometry(i),e.updateType=r}switch(t&&this._changes.updates.length>0&&this.notifyChange("updating"),r){case 4:case 2:return this._notifyGraphicGeometryChanged(e);case 1:return this._notifyGraphicVisibilityChanged(e)}}updateAnimation(e){let r=!1;return this._sortedRenderers.forAll(t=>r=!!t.updateAnimation&&t.updateAnimation(e)||r),r}precompile(e){return this._sortedRenderers.reduce((r,t)=>t.precompile(e)||r,!1)}render(e){this._sortedRenderers.forAll(r=>{const t=r.acquireTechniques(e);t&&r.render(e,t)})}intersectRay(e,r,t,i,s){for(const n of this._geometries.values()){if(!i(n))continue;this._intersectRenderGeometry(n,t,r,0,e,s);const o=this.rendererContext.longitudeCyclical;if(o){const i=n.boundingSphere.center,a=this._effectiveGeometryRadius(n);i[0]-a<o.min&&this._intersectRenderGeometry(n,t,r,o.range,e,s),i[0]+a>o.max&&this._intersectRenderGeometry(n,t,r,-o.range,e,s)}s++}return s}*intersectScreenPolygon(e,r,t,i){for(const s of this._geometries.values()){if(!t(s))continue;this._intersectScreenPolygonRenderGeometry(s,r,0,e,i);const n=this.rendererContext.longitudeCyclical;if(n){const t=s.boundingSphere.center,o=this._effectiveGeometryRadius(s);t[0]-o<n.min&&this._intersectScreenPolygonRenderGeometry(s,r,n.range,e,i),t[0]+o>n.max&&this._intersectScreenPolygonRenderGeometry(s,r,-n.range,e,i)}i++,yield}return i}_effectiveGeometryRadius(e){const r=e.boundingSphere.radius;return r||this._screenToMapUnitsRatio*C}_updateSortedMaterialRenderers(){if(!(this._sortedRenderers.length>0)){for(const e of this.renderers.values())this._sortedRenderers.push(e);this._sortedRenderers.sort((e,r)=>r.material?.renderPriority===e.material?.renderPriority?e.drapedPriority-r.drapedPriority:(r.material?.renderPriority||0)-(e.material?.renderPriority||0))}}_processAddsRemoves(){this._changes.adds.length=0,this._changes.removes.length=0,r(this._changes.adds,Array.from(this._pending.adds)),r(this._changes.removes,Array.from(this._pending.removes)),t(this._changes.updates,({renderGeometry:e})=>!this._pending.has(e)),this._pending.clear()}_intersectRenderGeometry(e,r,t,i,s,n){if(!e.visible||!e.material.visible||!e.material.intersectRayDraped)return;let o=0;0===e.type?(i+=e.transformation[12],o=e.transformation[13]):(i+=e.localOrigin.vec3[0],o=e.localOrigin.vec3[1]),G[0]=t[0]-i,G[1]=t[1]-o,e.material.intersectRayDraped(e,s,G,(t,i,o,a)=>{f(r,a,n,e.material.renderPriority,s,e.layerViewUid,e.graphicUid)},r,this._screenToMapUnitsRatio,this._mapUnitsToGroundRatio)}_intersectScreenPolygonRenderGeometry(e,r,t,i,s){if(!e.visible||!e.material.visible||!e.material.intersectScreenPolygonDraped)return;0===e.type?d(v,t+e.transformation[12],e.transformation[13]):d(v,t+e.localOrigin.vec3[0],e.localOrigin.vec3[1]);const n=this._screenToMapUnitsRatio;for(const o of r){const r=e.material.intersectScreenPolygonDraped(e,v,i,o,n,this._mapUnitsToGroundRatio);if(r)return void R(o.distance,r.primitiveIndex,s,e.material.renderPriority,i,e.layerViewUid,e.graphicUid)}}_notifyGraphicGeometryChanged(e){if(null==this.drapeSource.notifyGraphicGeometryChanged)return;let r;for(const{graphicUid:t}of e)null!=t&&t!==r&&(this.drapeSource.notifyGraphicGeometryChanged(t),r=t)}_notifyGraphicVisibilityChanged(e){if(null==this.drapeSource.notifyGraphicVisibilityChanged)return;let r;for(const{graphicUid:t}of e)null!=t&&t!==r&&(this.drapeSource.notifyGraphicVisibilityChanged(t),r=t)}_validateRenderGeometries(e){for(const r of e)this._ensureValidRenderGeometry(r);return e}_ensureValidRenderGeometry(e){return 1===e.type||null==e.localOrigin&&(e.localOrigin=this._localOriginFactory.getOrigin(e.boundingSphere.center)),e}get test(){}};e([o({constructOnly:!0})],y.prototype,"drapeSource",void 0),e([o({constructOnly:!0})],y.prototype,"rendererContext",void 0),e([o()],y.prototype,"updating",null),e([o()],y.prototype,"rctx",null),e([o()],y.prototype,"_localOriginFactory",null),e([o({readOnly:!0})],y.prototype,"isEmpty",null),e([o()],y.prototype,"_geometries",void 0),y=e([a("esri.views.3d.webgl-engine.lib.SortedRenderGeometryRenderer")],y);class _{constructor(){this.adds=new Set,this.removes=new Set,this.removed=new Set}get empty(){return 0===this.adds.size&&0===this.removes.size&&0===this.removed.size}has(e){return this.adds.has(e)||this.removes.has(e)||this.removed.has(e)}clear(){this.adds.clear(),this.removes.clear(),this.removed.clear()}}function f(e,r,t,i,s,n,o){const a=new c(n,o,r),d=r=>{r.set(5,a,e.distance,e.renderDistance,e.normal,e.transformation,t,i)};if((null==s.results.min.drapedLayerOrder||t>=s.results.min.drapedLayerOrder)&&(null==s.results.min.renderDistance||s.results.ground.renderDistance<=s.results.min.renderDistance)&&d(s.results.min),0!==s.options.store&&(null==s.results.max.drapedLayerOrder||t<s.results.max.drapedLayerOrder)&&(null==s.results.max.renderDistance||s.results.ground.renderDistance>s.results.max.renderDistance)&&d(s.results.max),2===s.options.store){const e=new m(s.ray);d(e),s.results.all.push(e)}}function R(e,r,t,i,s,n,o){s.polygonResults.add(5,new c(n,o,r),e,t,i)}const G=h(),v=h(),C=128;export{y as SortedRenderGeometryRenderer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"../../../../core/Logger.js";import{clamp as t}from"../../../../core/mathUtils.js";import{createRenderScreenPointArray3 as r,createScreenPointArray as i}from"../../../../core/screenUtils.js";import{secondsFromMilliseconds as s,Seconds as n}from"../../../../core/time.js";import{copy as o,set as a}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as l}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{set as p,subtract as c,dot as m,scale as u,add as h,copy as f,length as d,distance as g,lerp as b,transformMat4 as _,normalize as S}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as P}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{ONES as y}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{fromPoints as w,distance2 as E,closestLineSegmentPoint as v,projectPoint as x,projectPointFraction as T,create as j}from"../../../../geometry/support/lineSegment.js";import{fromPoints as z,signedDistance as L,getNormal as A,create as C}from"../../../../geometry/support/plane.js";import{BufferViewVec3f as M,BufferViewFloat as F,BufferViewVec4Unorm8 as R,BufferViewVec4f16 as O,BufferViewUint32 as B}from"../../../../geometry/support/buffer/BufferView.js";import{isHighlightOrOLID as U,isColor as V,isDepth as I,isColorHighlightOLIDOrDepth as N,is2DGeometryOutput as k}from"../core/shaderLibrary/ShaderOutput.js";import{olidEnabled as W}from"../effects/geometry/olidUtils.js";import D from"../lib/GLMaterial.js";import{LineMaterial as Y}from"../lib/LineMaterial.js";import{projectWorldLineSegmentToRenderScreen as J,screenPolygonIntersectsBufferedSegment as q}from"../lib/screenPolygonOverlapUtils.js";import{Hit as X,DrapedHit as G}from"../lib/screenPolygonTriangleIntersections.js";import{ScreenSizePerspectiveEvaluator as H}from"../lib/screenSizePerspectiveUtils.js";import{isTranslationMatrix as K,assert as Q}from"../lib/Util.js";import{isImagePattern as Z}from"./lineStippleUtils.js";import{VisualVariablePassParameters as $}from"./VisualVariablePassParameters.js";import{writeColor as ee}from"./internal/bufferWriterUtils.js";import{n as te}from"../../../../chunks/RibbonLine.glsl.js";import{getLayout as re,getTextureBufferLayout as ie}from"../shaders/RibbonLineLayouts.js";import{RibbonLineTechnique as se}from"../shaders/RibbonLineTechnique.js";import{RibbonLineTechniqueConfiguration as ne}from"../shaders/RibbonLineTechniqueConfiguration.js";import{alphaCutoff as oe}from"../../../../webscene/support/AlphaCutoff.js";class ae extends Y{constructor(e,t){super(e,pe),this.produces=new Map([[2,e=>U(e)||V(e)&&8===this.parameters.renderOccluded],[3,e=>I(e)],[10,e=>N(e)&&8===this.parameters.renderOccluded],[11,e=>N(e)&&8===this.parameters.renderOccluded],[4,e=>V(e)&&this.parameters.writeDepth&&8!==this.parameters.renderOccluded],[8,e=>V(e)&&!this.parameters.writeDepth&&8!==this.parameters.renderOccluded],[18,e=>k(e)]]),this._configuration=new ne(t)}updateConfiguration(e){super.updateConfiguration(e);const{draped:t}=this._configuration,r=null!=this.parameters.stipplePattern&&null!=this.parameters.stippleTexture&&10!==e.output,i=r&&this.parameters.isImagePattern(),s=t&&(this.parameters.worldSized||i);this._configuration.polygonOffset=this.parameters.polygonOffset,this._configuration.stippleEnabled=r,this._configuration.stippleOffColorEnabled=r&&null!=this.parameters.stippleOffColor,this._configuration.stipplePreferContinuous=r&&this.parameters.stipplePreferContinuous,this._configuration.numJoinSubdivisions=ge(this.parameters.join,r),this._configuration.hasSlicePlane=this.parameters.hasSlicePlane,this._configuration.roundJoins="round"===this.parameters.join,this._configuration.capType=this.parameters.cap,this._configuration.applyMarkerOffset=null!=this.parameters.markerParameters&&de(this.parameters.markerParameters),this._configuration.polygonOffsetIndex=this.parameters.polygonOffsetIndex,this._configuration.writeDepth=this.parameters.writeDepth,this._configuration.innerColorEnabled=this.parameters.innerWidth>0&&null!=this.parameters.innerColor,this._configuration.falloffEnabled=this.parameters.falloff>0,this._configuration.wireframe=this.parameters.wireframe,this._configuration.animation=this.parameters.animation,this._configuration.emissionSource=this.emissions?1:0,this._configuration.hasScreenSizePerspective=!!this.parameters.screenSizePerspective&&!s,this._configuration.worldSized=s,this._configuration.imagePattern=i}get visible(){return this.parameters.color[3]>=oe||null!=this.parameters.stipplePattern&&(this.parameters.stippleOffColor?.[3]??0)>oe}get emissions(){return this.parameters.emissiveStrength>0?8!==this.parameters.renderOccluded?2:1:0}setParameters(e,t){e.animation=this.parameters.animation,super.setParameters(e,t)}intersectRayDraped({attributes:e},r,i,s,n,o){if(!r.options.selectionMode)return;const a=this._getLineSize(e,!0),l=i[0],p=i[1],c=he(a,o,this.parameters.worldSized);let m=Number.MAX_VALUE,u=0;for(const h of fe(Pe,ye,this.parameters,e)){const e=l-Pe[0],r=p-Pe[1],i=ye[0]-Pe[0],s=ye[1]-Pe[1],n=t((i*e+s*r)/(i*i+s*s),0,1),o=i*n-e,a=s*n-r,c=o*o+a*a;c<m&&(m=c,u=h)}m<c*c&&s(n.distance,n.renderDistance,n.normal,u)}intersectRay(t,r,i,s,n,a){const{options:l,camera:b,rayBegin:_,rayEnd:S}=i;if(!l.selectionMode||!t.visible||!b)return;if(!K(r))return void e.getLogger("esri.views.3d.webgl-engine.materials.RibbonLineMaterial").error("intersection assumes a translation-only matrix");const P=t.attributes,y=P.get("position").data,x=this._getLineSize(P),T=je;o(T,i.point);const j=x*b.pixelRatio,C=Ye*b.pixelRatio,M=j/2+C;p(Ve[0],T[0]-M,T[1]+M,0),p(Ve[1],T[0]+M,T[1]+M,0),p(Ve[2],T[0]+M,T[1]-M,0),p(Ve[3],T[0]-M,T[1]-M,0);for(let e=0;e<4;e++)if(!b.unprojectFromRenderScreen(Ve[e],Ie[e]))return;z(b.eye,Ie[0],Ie[1],Ne),z(b.eye,Ie[1],Ie[2],ke),z(b.eye,Ie[2],Ie[3],We),z(b.eye,Ie[3],Ie[0],De);let F=Number.MAX_VALUE,R=0;for(const e of this._forEachTransformedLineSegment(_e,Se,y,r,ue(this.parameters,P))){if(L(Ne,_e)<0&&L(Ne,Se)<0||L(ke,_e)<0&&L(ke,Se)<0||L(We,_e)<0&&L(We,Se)<0||L(De,_e)<0&&L(De,Se)<0)continue;const t=b.projectToRenderScreen(_e,ze),r=b.projectToRenderScreen(Se,Le);if(null==t||null==r)continue;if(t[2]<0&&r[2]>0){c(xe,_e,Se);const e=b.frustum,r=-L(e[4],_e)/m(xe,A(e[4]));if(u(xe,xe,r),h(_e,_e,xe),!b.projectToRenderScreen(_e,t))continue}else if(t[2]>0&&r[2]<0){c(xe,Se,_e);const e=b.frustum,t=-L(e[4],Se)/m(xe,A(e[4]));if(u(xe,xe,t),h(Se,Se,xe),!b.projectToRenderScreen(Se,r))continue}else if(t[2]<0&&r[2]<0)continue;t[2]=0,r[2]=0;const i=w(t,r,Re),s=E(i,T);if(!(s>=F)){if(this.parameters.screenSizePerspective){const e=this.computeScreenSizePerspectiveWidth(i,_e,Se,T,b,x,C);if(s>=e*e)continue}F=s,f(Me,_e),f(Fe,Se),R=e}}if(F<M*M){let e=Number.MAX_VALUE;if(v(w(Me,Fe,Re),w(_,S,Oe),Te)){c(Te,Te,_);const t=d(Te);u(Te,Te,1/t),e=t/g(_,S)}a(e,e,Te,R)}}intersectScreenPolygon(t,r,i,s){const{options:n,camera:o,screenPolygonPrimitiveProcessor:a}=i;if(!n.selectionMode||!t.visible)return null;if(!K(r))return e.getLogger("esri.views.3d.webgl-engine.materials.RibbonLineMaterial").error("intersection assumes a translation-only matrix"),null;const l=t.attributes,p=l.get("position").data,c=this._getLineSize(l),m=Ye,u=m*o.pixelRatio,h=new X(4);for(const e of this._forEachTransformedLineSegment(_e,Se,p,r,ue(this.parameters,l)))for(const[t,r]of a.processLineSegment(Je,_e,Se)){if(!J(o,t,r,ze,Le))continue;const i=w(ze,Le,Re);let n=c/2+m;this.parameters.screenSizePerspective&&(b(je,ze,Le,.5),n=Math.max(n,this.computeScreenSizePerspectiveWidth(i,t,r,je,o,c,u)/o.pixelRatio)),o.renderToScreen(ze,Ae),o.renderToScreen(Le,Ce),q(s,Ae,Ce,n)&&(x(w(t,r,Oe),o.eye,we),h.updateIfCloserFromValues(g(o.eye,we),e,we,null))}return h}intersectScreenPolygonDraped({attributes:e},t,r,i,s){if(!r.options.selectionMode)return null;const n=he(this._getLineSize(e,!0),s,this.parameters.worldSized);for(const o of fe(Pe,ye,this.parameters,e,t))if(q(i,Pe,ye,n))return new G(o);return null}createBufferWriter(){return new ce(re(this.parameters),ie(this.parameters),this.parameters)}createGLMaterial(e){return new le(e)}validateParameters(e){"miter"!==e.join&&(e.miterLimit=0),null!=e.markerParameters&&(e.markerScale=e.markerParameters.width/e.width)}update(e){return!!this.parameters.hasAnimation&&(this.setParameters({timeElapsed:s(e.time)},!1),0!==e.dt)}computeScreenSizePerspectiveWidth(e,t,r,i,s,n,o){const a=T(e,i);b(we,t,r,a),_(Ee,we,s.viewMatrix);const l=d(Ee),p=this.computeCameraAbsCosAngle(we,s,this._configuration.spherical);be.update(p,l,this.parameters.screenSizePerspective,this.parameters.screenSizePerspectiveMinPixelReferenceSize);return be.apply(n)*s.pixelRatio/2+o}computeCameraAbsCosAngle(e,t,r){return r?S(Te,e):p(Te,0,0,1),c(ve,e,t.eye),S(ve,ve),Math.abs(m(Te,ve))}_getLineSize(e,r=!1){let i=this.parameters.width;if(this.parameters.vvSize){const s=e.get("sizeFeatureAttribute").data[0];Number.isNaN(s)?r&&(i*=this.parameters.vvSize.fallback[0]):i*=t(this.parameters.vvSize.offset[0]+s*this.parameters.vvSize.factor[0],this.parameters.vvSize.minSize[0],this.parameters.vvSize.maxSize[0])}else e.has("size")&&(i*=e.get("size").data[0]);return i}*_forEachTransformedLineSegment(e,t,r,i,s){const n=s?r.length-2:r.length-5;for(let o=0;o<n;o+=3){e[0]=r[o]+i[12],e[1]=r[o+1]+i[13],e[2]=r[o+2]+i[14];const s=(o+3)%r.length;t[0]=r[s]+i[12],t[1]=r[s+1]+i[13],t[2]=r[s+2]+i[14],yield o/3}}}class le extends D{constructor(){super(...arguments),this._stipplePattern=null}dispose(){super.dispose(),this._stippleTextures?.release(this._stipplePattern),this._stipplePattern=null}beginSlot(e){const{stipplePattern:t}=this._material.parameters;return this._stipplePattern!==t&&(this._material.setParameters({stippleTexture:this._stippleTextures.swap(t,this._stipplePattern)}),this._stipplePattern=t),this.getTechnique(se,e)}}class pe extends ${constructor(){super(...arguments),this._width=0,this.color=y,this.join="miter",this.cap=0,this.miterLimit=5,this.shadingEnabled=!1,this.writeDepth=!0,this.polygonOffset=0,this.polygonOffsetIndex=0,this.stippleTexture=null,this.stipplePreferContinuous=!0,this.markerParameters=null,this.markerScale=1,this.hasSlicePlane=!1,this.vvFastUpdate=!1,this.isClosed=!1,this.falloff=0,this.innerWidth=0,this.wireframe=!1,this.timeElapsed=n(0),this.animation=0,this.animationSpeed=1,this.trailLength=1,this.startTime=n(0),this.endTime=n(1/0),this.worldSized=!1}get width(){return this.isImagePattern()?this.stipplePattern.width:this._width}set width(e){this._width=e}get transparent(){return this.color[3]<1||this.hasAnimation||null!=this.stipplePattern&&(this.stippleOffColor?.[3]??0)<1}get hasAnimation(){return 0!==this.animation}isImagePattern(){return Z(this.stipplePattern)&&null!=this.stippleTexture}}class ce{constructor(e,t,r){this.layout=e,this.textureBufferLayout=t,this._parameters=r,this.numJoinSubdivisions=ge(this._parameters.join,null!=this._parameters.stipplePattern)}_isClosed(e){return ue(this._parameters,e)}allocate(e){return this.layout.createBuffer(e)}elementCountTextureBuffer(e){return e.get("position").data.length/3+(this._isClosed(e)?3:2)}elementCount(e){const t=2,r=e.get("position").indices.length/2+1,i=this._isClosed(e);let s=i?2:2*t;return s+=((i?r:r-1)-(i?0:1))*(2*this.numJoinSubdivisions+4),s+=2,this._parameters.wireframe&&(s=2+4*(s-2)),s}write(e,t,r,i,s,n){null!=n&&this._writeTextureBuffer(e,r,n),null!=i&&this._writeVertexBuffer(e,r,i,s)}_writeTextureBuffer(e,t,r){const i=t.get("position"),s=i.data.length/3,n=this._isClosed(t),{buffer:o,offset:a}=r,l=o.getField("position",M),p=o.getField("u0",F),c=o.getField("sizeFeatureAttribute",F),m=o.getField("size",F),u=o.getField("colorFeatureAttribute",F),h=o.getField("color",R),d=o.getField("olidColor",R),b=o.getField("timeStamps",O),_=o.getField("opacityFeatureAttribute",F),S=t.get("sizeFeatureAttribute")?.data,P=t.get("size")?.data,y=t.get("colorFeatureAttribute")?.data,w=t.get("color")?.data,E=t.get("opacityFeatureAttribute")?.data,v=t.get("distanceToStart")?.data,x=t.get("timeStamps");Q(null!==l,"Expected valid position field in texture buffer"),Q(null!==p,"Expected valid u0 field in texture buffer");let T=0;for(let z=0;z<s;++z){this._getTransformedPosition(Ue,i.data,z,e),z>0&&(null!=v?T=v[z]??T:T+=g(Be,Ue));const t=a+z+1;if(l.setVec(t,Ue),p.set(t,T),f(Be,Ue),c&&c.set(t,1===S?.length?S[0]:S?.[z]??0),m&&m.set(t,1===P?.length?P[0]:P?.[z]??1),u&&u.set(t,1===y?.length?y[0]:y?.[z]??0),h)if(null!=w){const e=Math.min(4*z,w.length-4);h.setValues(t,w[e],w[e+1],w[e+2],w[e+3])}else h.setValues(t,1,1,1,1);_&&_.set(t,1===E?.length?E[0]:E?.[z]??0)}if(null!=b&&null!=x){Q(4===x.size);const e=x.data;for(let t=0;t<s;++t){const r=4*t,i=a+t+1;b.set(i,0,e[r]),b.set(i,1,e[r+1]),b.set(i,2,e[r+2]),b.set(i,3,e[r+3])}}if(n){const e=a,t=a+1,r=a+2,i=a+s,n=i+1,c=i+2;o.copyItem(i,e),o.copyItem(t,n),o.copyItem(r,c),l.getVec(i,Be),l.getVec(t,Ue);const m=v?.[s]??T+g(Be,Ue);p.set(n,m)}else{const e=a,t=a+1,r=a+s,i=r+1;o.copyItem(t,e),o.copyItem(r,i)}const j=t.get("olidColor");W()&&null!=j&&null!=d&&ee(j,4,d,a)}_writeVertexBuffer(e,t,r,i){const{buffer:s,offset:n}=r,{layout:o}=this,a=t.get("position"),l=a.indices,p=a.data.length/3,c=this._isClosed(t),m=p+(c?3:2);l&&l.length!==2*(p-1)&&console.warn("RibbonLineMaterial does not support indices");const u=s.getField("textureElementIndex",B);Q(null!=u,"Missing texture buffer index field"),Q(null!=i,"Using a texture layout, but the texture range for this instance was not provided");const h=i.from;Q(i.numElements===m,"Expected number of elements in TextureBuffer to equal number of points");const f=new Float32Array(s.buffer),d=new Float16Array(s.buffer),g=new Uint32Array(s.buffer),b=o.stride/4;let _=n*b;const S=_,P=f.BYTES_PER_ELEMENT/d.BYTES_PER_ELEMENT,y=(e,t,r)=>{const i=r+1;g[_]=h+i,_++;let s=_*P;d[s++]=e,d[s++]=t,_=Math.ceil(s/P)};_+=b;let w=0,E=0;c?(w=0,E=p):(y(1,-4,0),y(1,4,0),w=1,E=p-1);for(let v=w;v<E;v++){y(0,-1,v),y(0,1,v);const e=this.numJoinSubdivisions;for(let t=0;t<e;++t){const r=(t+1)/(e+1);y(r,-1,v),y(r,1,v)}y(1,-2,v),y(1,2,v)}c?(y(0,-1,E),y(0,1,E)):(y(0,-5,E),y(0,5,E)),me(f,S+b,f,S,b);_=me(f,_-b,f,_,b),this._parameters.wireframe&&this._addWireframeVertices(s,S,_,b)}_getTransformedPosition(e,t,r,i){const s=3*r;p(e,t[s+0],t[s+1],t[s+2]),i&&_(e,e,i)}_addWireframeVertices(e,t,r,i){const s=new Uint8Array(e.buffer,r*Float32Array.BYTES_PER_ELEMENT),n=new Uint8Array(e.buffer,t*Float32Array.BYTES_PER_ELEMENT,(r-t)*Float32Array.BYTES_PER_ELEMENT),o=i*Float32Array.BYTES_PER_ELEMENT;let a=0;const l=e=>a=me(n,e,s,a,o);for(let p=0;p<=n.length-4*o;p+=2*o)l(p),l(p+2*o),l(p+1*o),l(p+2*o),l(p+1*o),l(p+3*o)}}function me(e,t,r,i,s){for(let n=0;n<s;n++)r[i++]=e[t++];return i}function ue(e,t){if(!e.isClosed)return!1;return t.get("position").indices.length>2}function he(e,t,r){return r?e/2+Ye*t:(e/2+Ye)*t}function*fe(e,t,r,i,s){const n=i.get("position").data,l=ue(r,i)?n.length-2:n.length-5,p=s?.[0]??0,c=s?.[1]??0;a(e,n[0]+p,n[1]+c);for(let m=3;m<l+3;m+=3){const r=m%n.length;a(t,n[r]+p,n[r+1]+c),yield m/3,o(e,t)}}function de(e){return 1===e.anchor&&e.hideOnShortSegments&&"begin-end"===e.placement&&e.worldSpace}function ge(e,t){const r=t?1:0;switch(e){case"miter":case"bevel":return r;case"round":return te+r}}const be=new H,_e=P(),Se=P(),Pe=l(),ye=l(),we=P(),Ee=P(),ve=P(),xe=P(),Te=P(),je=P(),ze=r(),Le=r(),Ae=i(),Ce=i(),Me=P(),Fe=P(),Re=j(),Oe=j(),Be=P(),Ue=P(),Ve=[r(),r(),r(),r()],Ie=[P(),P(),P(),P()],Ne=C(),ke=C(),We=C(),De=C(),Ye=4,Je=[P(),P()];export{pe as Parameters,ae as RibbonLineMaterial};
2
+ import e from"../../../../core/Logger.js";import{clamp as t}from"../../../../core/mathUtils.js";import{createRenderScreenPointArray3 as i,createScreenPointArray as r}from"../../../../core/screenUtils.js";import{secondsFromMilliseconds as s,Seconds as n}from"../../../../core/time.js";import{copy as a,set as o}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as l}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{set as p,subtract as c,dot as u,scale as m,add as h,copy as f,length as d,distance as g,lerp as b,transformMat4 as _,normalize as S}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as P}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{ONES as y}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{fromPoints as w,distance2 as E,closestLineSegmentPoint as v,projectPoint as x,projectPointFraction as T,create as z}from"../../../../geometry/support/lineSegment.js";import{fromPoints as j,signedDistance as L,getNormal as A,create as C}from"../../../../geometry/support/plane.js";import{BufferViewVec3f as M,BufferViewFloat as R,BufferViewVec4Unorm8 as F,BufferViewVec4f16 as O,BufferViewUint32 as B}from"../../../../geometry/support/buffer/BufferView.js";import{isHighlightOrOLID as W,isColor as U,isDepth as V,isColorHighlightOLIDOrDepth as I,is2DGeometryOutput as N}from"../core/shaderLibrary/ShaderOutput.js";import{olidEnabled as k}from"../effects/geometry/olidUtils.js";import D from"../lib/GLMaterial.js";import{LineMaterial as Y}from"../lib/LineMaterial.js";import{projectWorldLineSegmentToRenderScreen as J,screenPolygonIntersectsBufferedSegment as q}from"../lib/screenPolygonOverlapUtils.js";import{Hit as X,DrapedHit as G}from"../lib/screenPolygonTriangleIntersections.js";import{ScreenSizePerspectiveEvaluator as H}from"../lib/screenSizePerspectiveUtils.js";import{isTranslationMatrix as K,assert as Q}from"../lib/Util.js";import{isImagePattern as Z}from"./lineStippleUtils.js";import{VisualVariablePassParameters as $}from"./VisualVariablePassParameters.js";import{writeColor as ee}from"./internal/bufferWriterUtils.js";import{n as te}from"../../../../chunks/RibbonLine.glsl.js";import{getLayout as ie,getTextureBufferLayout as re}from"../shaders/RibbonLineLayouts.js";import{RibbonLineTechnique as se}from"../shaders/RibbonLineTechnique.js";import{RibbonLineTechniqueConfiguration as ne}from"../shaders/RibbonLineTechniqueConfiguration.js";import{alphaCutoff as ae}from"../../../../webscene/support/AlphaCutoff.js";class oe extends Y{constructor(e,t){super(e,pe),this.produces=new Map([[2,e=>W(e)||U(e)&&8===this.parameters.renderOccluded],[3,e=>V(e)],[10,e=>I(e)&&8===this.parameters.renderOccluded],[11,e=>I(e)&&8===this.parameters.renderOccluded],[4,e=>U(e)&&this.parameters.writeDepth&&8!==this.parameters.renderOccluded],[8,e=>U(e)&&!this.parameters.writeDepth&&8!==this.parameters.renderOccluded],[18,e=>N(e)]]),this._configuration=new ne(t)}updateConfiguration(e){super.updateConfiguration(e);const{draped:t}=this._configuration,i=null!=this.parameters.stipplePattern&&null!=this.parameters.stippleTexture&&10!==e.output,r=i&&this.parameters.isImagePattern(),s=t&&this.parameters.usesWorldSizedWidth(r);this._configuration.polygonOffset=this.parameters.polygonOffset,this._configuration.stippleEnabled=i,this._configuration.stippleOffColorEnabled=i&&null!=this.parameters.stippleOffColor,this._configuration.stipplePreferContinuous=i&&this.parameters.stipplePreferContinuous,this._configuration.numJoinSubdivisions=ge(this.parameters.join,i),this._configuration.hasSlicePlane=this.parameters.hasSlicePlane,this._configuration.roundJoins="round"===this.parameters.join,this._configuration.capType=this.parameters.cap,this._configuration.applyMarkerOffset=null!=this.parameters.markerParameters&&de(this.parameters.markerParameters),this._configuration.polygonOffsetIndex=this.parameters.polygonOffsetIndex,this._configuration.writeDepth=this.parameters.writeDepth,this._configuration.innerColorEnabled=this.parameters.innerWidth>0&&null!=this.parameters.innerColor,this._configuration.falloffEnabled=this.parameters.falloff>0,this._configuration.wireframe=this.parameters.wireframe,this._configuration.animation=this.parameters.animation,this._configuration.emissionSource=this.emissions?1:0,this._configuration.hasScreenSizePerspective=!!this.parameters.screenSizePerspective&&!s,this._configuration.worldSized=s,this._configuration.imagePattern=r}get visible(){return this.parameters.color[3]>=ae||null!=this.parameters.stipplePattern&&(this.parameters.stippleOffColor?.[3]??0)>ae}get emissions(){return this.parameters.emissiveStrength>0?8!==this.parameters.renderOccluded?2:1:0}setParameters(e,t){e.animation=this.parameters.animation,super.setParameters(e,t)}intersectRayDraped({attributes:e},i,r,s,n,a,o){if(!i.options.selectionMode)return;const l=this._getLineSize(e,!0),p=r[0],c=r[1],u=he(l,a,o,this.parameters.usesWorldSizedWidth());let m=Number.MAX_VALUE,h=0;for(const f of fe(Pe,ye,this.parameters,e)){const e=p-Pe[0],i=c-Pe[1],r=ye[0]-Pe[0],s=ye[1]-Pe[1],n=t((r*e+s*i)/(r*r+s*s),0,1),a=r*n-e,o=s*n-i,l=a*a+o*o;l<m&&(m=l,h=f)}m<u*u&&s(n.distance,n.renderDistance,n.normal,h)}intersectRay(t,i,r,s,n,o){const{options:l,camera:b,rayBegin:_,rayEnd:S}=r;if(!l.selectionMode||!t.visible||!b)return;if(!K(i))return void e.getLogger("esri.views.3d.webgl-engine.materials.RibbonLineMaterial").error("intersection assumes a translation-only matrix");const P=t.attributes,y=P.get("position").data,x=this._getLineSize(P),T=ze;a(T,r.point);const z=x*b.pixelRatio,C=Ye*b.pixelRatio,M=z/2+C;p(Ue[0],T[0]-M,T[1]+M,0),p(Ue[1],T[0]+M,T[1]+M,0),p(Ue[2],T[0]+M,T[1]-M,0),p(Ue[3],T[0]-M,T[1]-M,0);for(let e=0;e<4;e++)if(!b.unprojectFromRenderScreen(Ue[e],Ve[e]))return;j(b.eye,Ve[0],Ve[1],Ie),j(b.eye,Ve[1],Ve[2],Ne),j(b.eye,Ve[2],Ve[3],ke),j(b.eye,Ve[3],Ve[0],De);let R=Number.MAX_VALUE,F=0;for(const e of this._forEachTransformedLineSegment(_e,Se,y,i,me(this.parameters,P))){if(L(Ie,_e)<0&&L(Ie,Se)<0||L(Ne,_e)<0&&L(Ne,Se)<0||L(ke,_e)<0&&L(ke,Se)<0||L(De,_e)<0&&L(De,Se)<0)continue;const t=b.projectToRenderScreen(_e,je),i=b.projectToRenderScreen(Se,Le);if(null==t||null==i)continue;if(t[2]<0&&i[2]>0){c(xe,_e,Se);const e=b.frustum,i=-L(e[4],_e)/u(xe,A(e[4]));if(m(xe,xe,i),h(_e,_e,xe),!b.projectToRenderScreen(_e,t))continue}else if(t[2]>0&&i[2]<0){c(xe,Se,_e);const e=b.frustum,t=-L(e[4],Se)/u(xe,A(e[4]));if(m(xe,xe,t),h(Se,Se,xe),!b.projectToRenderScreen(Se,i))continue}else if(t[2]<0&&i[2]<0)continue;t[2]=0,i[2]=0;const r=w(t,i,Fe),s=E(r,T);if(!(s>=R)){if(this.parameters.screenSizePerspective){const e=this.computeScreenSizePerspectiveWidth(r,_e,Se,T,b,x,C);if(s>=e*e)continue}R=s,f(Me,_e),f(Re,Se),F=e}}if(R<M*M){let e=Number.MAX_VALUE;if(v(w(Me,Re,Fe),w(_,S,Oe),Te)){c(Te,Te,_);const t=d(Te);m(Te,Te,1/t),e=t/g(_,S)}o(e,e,Te,F)}}intersectScreenPolygon(t,i,r,s){const{options:n,camera:a,screenPolygonPrimitiveProcessor:o}=r;if(!n.selectionMode||!t.visible)return null;if(!K(i))return e.getLogger("esri.views.3d.webgl-engine.materials.RibbonLineMaterial").error("intersection assumes a translation-only matrix"),null;const l=t.attributes,p=l.get("position").data,c=this._getLineSize(l),u=Ye,m=u*a.pixelRatio,h=new X(4);for(const e of this._forEachTransformedLineSegment(_e,Se,p,i,me(this.parameters,l)))for(const[t,i]of o.processLineSegment(qe,_e,Se)){if(!J(a,t,i,je,Le))continue;const r=w(je,Le,Fe);let n=c/2+u;this.parameters.screenSizePerspective&&(b(ze,je,Le,.5),n=Math.max(n,this.computeScreenSizePerspectiveWidth(r,t,i,ze,a,c,m)/a.pixelRatio)),a.renderToScreen(je,Ae),a.renderToScreen(Le,Ce),q(s,Ae,Ce,n)&&(x(w(t,i,Oe),a.eye,we),h.updateIfCloserFromValues(g(a.eye,we),e,we,null))}return h}intersectScreenPolygonDraped({attributes:e},t,i,r,s,n){if(!i.options.selectionMode)return null;const a=he(this._getLineSize(e,!0),s,n,this.parameters.usesWorldSizedWidth());for(const o of fe(Pe,ye,this.parameters,e,t))if(q(r,Pe,ye,a))return new G(o);return null}createBufferWriter(){return new ce(ie(this.parameters),re(this.parameters),this.parameters)}createGLMaterial(e){return new le(e)}validateParameters(e){"miter"!==e.join&&(e.miterLimit=0),null!=e.markerParameters&&(e.markerScale=e.markerParameters.width/e.width)}update(e){return!!this.parameters.hasAnimation&&(this.setParameters({timeElapsed:s(e.time)},!1),0!==e.dt)}computeScreenSizePerspectiveWidth(e,t,i,r,s,n,a){const o=T(e,r);b(we,t,i,o),_(Ee,we,s.viewMatrix);const l=d(Ee),p=this.computeCameraAbsCosAngle(we,s,this._configuration.spherical);be.update(p,l,this.parameters.screenSizePerspective,this.parameters.screenSizePerspectiveMinPixelReferenceSize);return be.apply(n)*s.pixelRatio/2+a}computeCameraAbsCosAngle(e,t,i){return i?S(Te,e):p(Te,0,0,1),c(ve,e,t.eye),S(ve,ve),Math.abs(u(Te,ve))}_getLineSize(e,i=!1){let r=this.parameters.width;if(this.parameters.vvSize){const s=e.get("sizeFeatureAttribute").data[0];Number.isNaN(s)?i&&(r*=this.parameters.vvSize.fallback[0]):r*=t(this.parameters.vvSize.offset[0]+s*this.parameters.vvSize.factor[0],this.parameters.vvSize.minSize[0],this.parameters.vvSize.maxSize[0])}else e.has("size")&&(r*=e.get("size").data[0]);return r}*_forEachTransformedLineSegment(e,t,i,r,s){const n=s?i.length-2:i.length-5;for(let a=0;a<n;a+=3){e[0]=i[a]+r[12],e[1]=i[a+1]+r[13],e[2]=i[a+2]+r[14];const s=(a+3)%i.length;t[0]=i[s]+r[12],t[1]=i[s+1]+r[13],t[2]=i[s+2]+r[14],yield a/3}}}class le extends D{constructor(){super(...arguments),this._stipplePattern=null}dispose(){super.dispose(),this._stippleTextures?.release(this._stipplePattern),this._stipplePattern=null}beginSlot(e){const{stipplePattern:t}=this._material.parameters;return this._stipplePattern!==t&&(this._material.setParameters({stippleTexture:this._stippleTextures.swap(t,this._stipplePattern)}),this._stipplePattern=t),this.getTechnique(se,e)}}class pe extends ${constructor(){super(...arguments),this._width=0,this.color=y,this.join="miter",this.cap=0,this.miterLimit=5,this.shadingEnabled=!1,this.writeDepth=!0,this.polygonOffset=0,this.polygonOffsetIndex=0,this.stippleTexture=null,this.stipplePreferContinuous=!0,this.markerParameters=null,this.markerScale=1,this.hasSlicePlane=!1,this.vvFastUpdate=!1,this.isClosed=!1,this.falloff=0,this.innerWidth=0,this.wireframe=!1,this.timeElapsed=n(0),this.animation=0,this.animationSpeed=1,this.trailLength=1,this.startTime=n(0),this.endTime=n(1/0),this.worldSized=!1}get width(){return this.isImagePattern()?this.stipplePattern.width:this._width}set width(e){this._width=e}get transparent(){return this.color[3]<1||this.hasAnimation||null!=this.stipplePattern&&(this.stippleOffColor?.[3]??0)<1}get hasAnimation(){return 0!==this.animation}usesWorldSizedWidth(e=this.isImagePattern()){return this.worldSized||e}isImagePattern(){return Z(this.stipplePattern)&&null!=this.stippleTexture}}class ce{constructor(e,t,i){this.layout=e,this.textureBufferLayout=t,this._parameters=i,this.numJoinSubdivisions=ge(this._parameters.join,null!=this._parameters.stipplePattern)}_isClosed(e){return me(this._parameters,e)}allocate(e){return this.layout.createBuffer(e)}elementCountTextureBuffer(e){return e.get("position").data.length/3+(this._isClosed(e)?3:2)}elementCount(e){const t=2,i=e.get("position").indices.length/2+1,r=this._isClosed(e);let s=r?2:2*t;return s+=((r?i:i-1)-(r?0:1))*(2*this.numJoinSubdivisions+4),s+=2,this._parameters.wireframe&&(s=2+4*(s-2)),s}write(e,t,i,r,s,n){null!=n&&this._writeTextureBuffer(e,i,n),null!=r&&this._writeVertexBuffer(e,i,r,s)}_writeTextureBuffer(e,t,i){const r=t.get("position"),s=r.data.length/3,n=this._isClosed(t),{buffer:a,offset:o}=i,l=a.getField("position",M),p=a.getField("u0",R),c=a.getField("sizeFeatureAttribute",R),u=a.getField("size",R),m=a.getField("colorFeatureAttribute",R),h=a.getField("color",F),d=a.getField("olidColor",F),b=a.getField("timeStamps",O),_=a.getField("opacityFeatureAttribute",R),S=t.get("sizeFeatureAttribute")?.data,P=t.get("size")?.data,y=t.get("colorFeatureAttribute")?.data,w=t.get("color")?.data,E=t.get("opacityFeatureAttribute")?.data,v=t.get("distanceToStart")?.data,x=t.get("timeStamps");Q(null!==l,"Expected valid position field in texture buffer"),Q(null!==p,"Expected valid u0 field in texture buffer");let T=0;for(let j=0;j<s;++j){this._getTransformedPosition(We,r.data,j,e),j>0&&(null!=v?T=v[j]??T:T+=g(Be,We));const t=o+j+1;if(l.setVec(t,We),p.set(t,T),f(Be,We),c&&c.set(t,1===S?.length?S[0]:S?.[j]??0),u&&u.set(t,1===P?.length?P[0]:P?.[j]??1),m&&m.set(t,1===y?.length?y[0]:y?.[j]??0),h)if(null!=w){const e=Math.min(4*j,w.length-4);h.setValues(t,w[e],w[e+1],w[e+2],w[e+3])}else h.setValues(t,1,1,1,1);_&&_.set(t,1===E?.length?E[0]:E?.[j]??0)}if(null!=b&&null!=x){Q(4===x.size);const e=x.data;for(let t=0;t<s;++t){const i=4*t,r=o+t+1;b.set(r,0,e[i]),b.set(r,1,e[i+1]),b.set(r,2,e[i+2]),b.set(r,3,e[i+3])}}if(n){const e=o,t=o+1,i=o+2,r=o+s,n=r+1,c=r+2;a.copyItem(r,e),a.copyItem(t,n),a.copyItem(i,c),l.getVec(r,Be),l.getVec(t,We);const u=v?.[s]??T+g(Be,We);p.set(n,u)}else{const e=o,t=o+1,i=o+s,r=i+1;a.copyItem(t,e),a.copyItem(i,r)}const z=t.get("olidColor");k()&&null!=z&&null!=d&&ee(z,4,d,o)}_writeVertexBuffer(e,t,i,r){const{buffer:s,offset:n}=i,{layout:a}=this,o=t.get("position"),l=o.indices,p=o.data.length/3,c=this._isClosed(t),u=p+(c?3:2);l&&l.length!==2*(p-1)&&console.warn("RibbonLineMaterial does not support indices");const m=s.getField("textureElementIndex",B);Q(null!=m,"Missing texture buffer index field"),Q(null!=r,"Using a texture layout, but the texture range for this instance was not provided");const h=r.from;Q(r.numElements===u,"Expected number of elements in TextureBuffer to equal number of points");const f=new Float32Array(s.buffer),d=new Float16Array(s.buffer),g=new Uint32Array(s.buffer),b=a.stride/4;let _=n*b;const S=_,P=f.BYTES_PER_ELEMENT/d.BYTES_PER_ELEMENT,y=(e,t,i)=>{const r=i+1;g[_]=h+r,_++;let s=_*P;d[s++]=e,d[s++]=t,_=Math.ceil(s/P)};_+=b;let w=0,E=0;c?(w=0,E=p):(y(1,-4,0),y(1,4,0),w=1,E=p-1);for(let v=w;v<E;v++){y(0,-1,v),y(0,1,v);const e=this.numJoinSubdivisions;for(let t=0;t<e;++t){const i=(t+1)/(e+1);y(i,-1,v),y(i,1,v)}y(1,-2,v),y(1,2,v)}c?(y(0,-1,E),y(0,1,E)):(y(0,-5,E),y(0,5,E)),ue(f,S+b,f,S,b);_=ue(f,_-b,f,_,b),this._parameters.wireframe&&this._addWireframeVertices(s,S,_,b)}_getTransformedPosition(e,t,i,r){const s=3*i;p(e,t[s+0],t[s+1],t[s+2]),r&&_(e,e,r)}_addWireframeVertices(e,t,i,r){const s=new Uint8Array(e.buffer,i*Float32Array.BYTES_PER_ELEMENT),n=new Uint8Array(e.buffer,t*Float32Array.BYTES_PER_ELEMENT,(i-t)*Float32Array.BYTES_PER_ELEMENT),a=r*Float32Array.BYTES_PER_ELEMENT;let o=0;const l=e=>o=ue(n,e,s,o,a);for(let p=0;p<=n.length-4*a;p+=2*a)l(p),l(p+2*a),l(p+1*a),l(p+2*a),l(p+1*a),l(p+3*a)}}function ue(e,t,i,r,s){for(let n=0;n<s;n++)i[r++]=e[t++];return r}function me(e,t){if(!e.isClosed)return!1;return t.get("position").indices.length>2}function he(e,t,i,r){return r?e/(2*i)+Ye*t:(e/2+Ye)*t}function*fe(e,t,i,r,s){const n=r.get("position").data,l=me(i,r)?n.length-2:n.length-5,p=s?.[0]??0,c=s?.[1]??0;o(e,n[0]+p,n[1]+c);for(let u=3;u<l+3;u+=3){const i=u%n.length;o(t,n[i]+p,n[i+1]+c),yield u/3,a(e,t)}}function de(e){return 1===e.anchor&&e.hideOnShortSegments&&"begin-end"===e.placement&&e.worldSpace}function ge(e,t){const i=t?1:0;switch(e){case"miter":case"bevel":return i;case"round":return te+i}}const be=new H,_e=P(),Se=P(),Pe=l(),ye=l(),we=P(),Ee=P(),ve=P(),xe=P(),Te=P(),ze=P(),je=i(),Le=i(),Ae=r(),Ce=r(),Me=P(),Re=P(),Fe=z(),Oe=z(),Be=P(),We=P(),Ue=[i(),i(),i(),i()],Ve=[P(),P(),P(),P()],Ie=C(),Ne=C(),ke=C(),De=C(),Ye=4,Je={getDrapedRibbonLineMaxDistance:he},qe=[P(),P()];export{pe as Parameters,oe as RibbonLineMaterial,Je as test};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import"../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../core/shaderModules/glsl.js";import"../core/shaderModules/Texture2DPassUniform.js";import"../../../webgl/NoParameters.js";import"../../../webgl/ShaderBuilder.js";export{G as GaussianSplatColorCompositionPassParameters,b as build}from"../../../../chunks/GaussianSplatColorComposition.glsl.js";
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import{__decorate as e}from"tslib";import{subclass as o}from"../../../../core/accessorSupport/decorators.js";import{ReloadableShader as r}from"../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as s}from"../core/shaderTechnique/ShaderTechnique.js";import{S as i}from"../../../../chunks/GaussianSplatColorComposition.glsl.js";import{makePipelineState as t,defaultDepthWrite as a,defaultColorWrite as l,premultipliedAlpha as n}from"../../../webgl/renderState.js";let p=class extends s{constructor(){super(...arguments),this.shader=new r(i,()=>import("./GaussianSplatColorComposition.glsl.js"))}initializePipeline(){return t({blending:n,colorWrite:l,depthTest:null,depthWrite:a})}};p=e([o("esri.views.3d.webgl-engine.shaders.GaussianSplatColorCompositionTechnique")],p);export{p as GaussianSplatColorCompositionTechnique};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- const a=.25,t=80*15259e-9,e={direct:{alphaCutoff:a,depthBias:t},accumulated:{alphaCutoff:.5,depthBias:4*t},viewshed:{alphaCutoff:.25,depthBias:8*t}};export{e as gaussianSplatDepthPolicy,a as gaussianSplatFirstHitAlpha};
2
+ const a=.25,t=80*15259e-9,e={direct:{alphaCutoff:a,depthBias:t},accumulated:{alphaCutoff:.5,depthBias:4*t}};export{e as gaussianSplatDepthPolicy,a as gaussianSplatFirstHitAlpha};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import"../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../core/shaderLibrary/util/emissionFilter.glsl.js";import"../core/shaderModules/glsl.js";import"../core/shaderModules/Texture2DPassUniform.js";import"../../../webgl/NoParameters.js";import"../../../webgl/ShaderBuilder.js";export{G as GaussianSplatCompositionPassParameters,b as build}from"../../../../chunks/GaussianSplatComposition.glsl.js";
2
+ import"../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../core/shaderLibrary/util/emissionFilter.glsl.js";import"../core/shaderModules/glsl.js";import"../core/shaderModules/Texture2DPassUniform.js";import"../../../webgl/NoParameters.js";import"../../../webgl/ShaderBuilder.js";export{G as GaussianSplatEmissionCompositionPassParameters,b as build}from"../../../../chunks/GaussianSplatEmissionComposition.glsl.js";
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import{__decorate as e}from"tslib";import{subclass as s}from"../../../../core/accessorSupport/decorators.js";import{ReloadableShader as i}from"../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as o}from"../core/shaderTechnique/ShaderTechnique.js";import{S as r}from"../../../../chunks/GaussianSplatEmissionComposition.glsl.js";import{makePipelineState as t,defaultDepthWrite as n,defaultColorWrite as a,modulateDestinationPreserveAlpha as l}from"../../../webgl/renderState.js";let p=class extends o{constructor(){super(...arguments),this.shader=new i(r,()=>import("./GaussianSplatEmissionComposition.glsl.js"))}initializePipeline(){return t({blending:l,colorWrite:a,depthTest:null,depthWrite:n})}};p=e([s("esri.views.3d.webgl-engine.shaders.GaussianSplatEmissionCompositionTechnique")],p);export{p as GaussianSplatEmissionCompositionTechnique};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{subclass as r}from"../../../../core/accessorSupport/decorators.js";import{ReloadableShader as s}from"../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as i}from"../core/shaderTechnique/ShaderTechnique.js";import{G as o}from"../../../../chunks/GaussianSplat.glsl.js";import{makePipelineState as t,defaultColorWrite as a,separateBlendingParams as n}from"../../../webgl/renderState.js";let l=class extends i{constructor(){super(...arguments),this.shader=new s(o,()=>import("./GaussianSplat.glsl.js"))}initializePipeline(){return t({blending:n(773,773,1,1,32774,32774),depthTest:{func:515},colorWrite:a})}};l=e([r("esri.views.3d.webgl-engine.shaders.GaussianSplatTechnique")],l);export{l as GaussianSplatTechnique};
2
+ import{__decorate as e}from"tslib";import{subclass as r}from"../../../../core/accessorSupport/decorators.js";import{ReloadableShader as s}from"../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as i}from"../core/shaderTechnique/ShaderTechnique.js";import{G as o}from"../../../../chunks/GaussianSplat.glsl.js";import{makePipelineState as t,defaultColorWrite as a,premultipliedAlphaFrontToBack as n}from"../../../webgl/renderState.js";let l=class extends i{constructor(){super(...arguments),this.shader=new s(o,()=>import("./GaussianSplat.glsl.js"))}initializePipeline(){return t({blending:n,depthTest:{func:515},colorWrite:a})}};l=e([r("esri.views.3d.webgl-engine.shaders.GaussianSplatTechnique")],l);export{l as GaussianSplatTechnique};
@@ -1,4 +1,5 @@
1
1
  import type DefaultUI from "./ui/DefaultUI.js";
2
+ import type { ScreenRect } from "../core/types.js";
2
3
  import type { DefaultUIProperties } from "./ui/DefaultUI.js";
3
4
 
4
5
  export interface DOMContainerProperties extends Partial<Pick<DOMContainer, "aria" | "attributionMode">> {
@@ -18,6 +19,15 @@ export interface DOMContainerProperties extends Partial<Pick<DOMContainer, "aria
18
19
  * });
19
20
  */
20
21
  container?: HTMLDivElement | string | null;
22
+ /**
23
+ * Indicates whether the focus region is currently enabled.
24
+ *
25
+ * Set this property to `true` to show the centered focus region, or `false` to hide it.
26
+ *
27
+ * @default false
28
+ * @since 5.2
29
+ */
30
+ focusRegionEnabled?: boolean;
21
31
  /**
22
32
  * Exposes the default widgets available in the view and allows you to toggle them on
23
33
  * and off. See [DefaultUI](https://developers.arcgis.com/javascript/latest/references/core/views/ui/DefaultUI/) for more details.
@@ -105,6 +115,23 @@ export abstract class DOMContainer {
105
115
  * @since 4.7
106
116
  */
107
117
  get focused(): boolean;
118
+ /**
119
+ * The screen rectangle for the active focus region.
120
+ *
121
+ * The value is `null` when [focusRegionEnabled](https://developers.arcgis.com/javascript/latest/references/core/views/DOMContainer/#focusRegionEnabled) is `false`.
122
+ *
123
+ * @since 5.2
124
+ */
125
+ get focusRegion(): ScreenRect | null;
126
+ /**
127
+ * Indicates whether the focus region is currently enabled.
128
+ *
129
+ * Set this property to `true` to show the centered focus region, or `false` to hide it.
130
+ *
131
+ * @default false
132
+ * @since 5.2
133
+ */
134
+ accessor focusRegionEnabled: boolean;
108
135
  /**
109
136
  * The height of the view in pixels read from the view container element.
110
137
  *
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{byId as e,reparent as i}from"../core/domUtils.js";import{on as s}from"../core/events.js";import{makeHandle as r}from"../core/handleUtils.js";import n from"../core/Logger.js";import{destroyMaybe as o,removeMaybe as a}from"../core/maybe.js";import{watch as h,initial as l,syncAndInitial as d}from"../core/reactiveUtils.js";import{addFrameTask as u}from"../core/scheduling.js";import{property as c,subclass as p}from"../core/accessorSupport/decorators.js";import{Attribution as m}from"./Attribution.js";import f from"./overlay/ViewOverlay.js";const _=[0,0];function y(t){const e=(t.ownerDocument||window.document).defaultView,i=t.getBoundingClientRect();return _[0]=i.left+(e?.pageXOffset??0),_[1]=i.top+(e?.pageYOffset??0),_}function g(t){t&&(t.textContent="",t.parentNode&&t.parentNode.removeChild(t))}const v="test"===process.env.NODE_ENV,b=v?0:16,w=v?0:750,C=v?0:512,H=2,O=_=>{const v=_;let O=class extends v{constructor(...t){super(...t),this._freqInfo={freq:b,time:w},this._overlayRenderTaskHandle=null,this.aria={},this.attributionMode=null,this.height=0,this.messagesCommon=null,this.overlay=null,this.position=null,this.resizing=!1,this.root=null,this.surface=null,this.suspended=!0,this.userContent=null,this.width=0,this.widthBreakpoint=null,this.addHandles([h(()=>this.cursor,t=>{const{surface:e}=this;e&&e.setAttribute("data-cursor",t)}),h(()=>this.navigating,t=>{const{surface:e}=this;e&&e.setAttribute("data-navigating",t.toString())}),h(()=>[this.aria,this.surface],()=>this._updateAria(),{initial:!0})])}initialize(){const t=this;this.addHandles([h(()=>this.ui,(t,e)=>this._handleUIChange(t,e),l),t.on("focus",()=>this.notifyChange("focused")),t.on("blur",()=>this.notifyChange("focused"))])}destroy(){this.destroyed||(this.ui?.destroy(),this.container=null)}get attributionHeight(){return this._attribution?.height??0}get container(){return this._get("container")??null}set container(t){const s=this._get("container"),r=e(t);if(r||"string"!=typeof t||n.getLogger(this).error("#container",`element with id '${t}' not found`),s===r)return;if(this._stopMeasuring(),this.removeHandles("container"),s&&(s.classList.remove("esri-view"),this._overlayRenderTaskHandle&&(this._overlayRenderTaskHandle.remove(),this._overlayRenderTaskHandle=null),this.overlay&&(this.overlay.destroy(),this._set("overlay",null)),this._attribution=o(this._attribution),this.root&&(g(this.root),this._set("root",null)),this.userContent&&(i(this.userContent,s),g(this.userContent),this._set("userContent",null))),!r)return this._set("width",0),this._set("height",0),this._set("position",null),this._set("suspended",!0),this._set("surface",null),void this._set("container",null);r.classList.add("esri-view");const l=document.createElement("div");l.className="esri-view-user-storage",i(r,l),r.appendChild(l),this._set("userContent",l);const c=document.createElement("div");c.className="esri-view-root",r.insertBefore(c,r.firstChild),this._set("root",c);const p=document.createElement("div");p.className="esri-view-surface",p.setAttribute("role","application"),p.tabIndex=0,c.appendChild(p),this._set("surface",p);const _=new f;c.appendChild(_.surface),this._set("overlay",_),this.addHandles(h(()=>_.needsRender,t=>{t&&!this._overlayRenderTaskHandle?this._overlayRenderTaskHandle=u({render:()=>this.overlay?.render()}):this._overlayRenderTaskHandle=a(this._overlayRenderTaskHandle)}),"container"),this.addHandles([h(()=>({visible:this.attributionVisible,items:this.attributionItems,mode:this.attributionMode}),({visible:t,items:e,mode:i})=>{t?(this._attribution||(this._attribution=new m({attributionItems:this.attributionItems,mode:this.attributionMode})),this._attribution.appendBefore(c,this.ui?.container??null),this._attribution.attributionItems=e,this._attribution.mode=i):this._attribution=o(this._attribution)},d)],"container"),this.forceDOMReadyCycle(),this._set("container",r),this._startMeasuring()}get focused(){const t=document.activeElement===this.surface;return document.hasFocus()&&t}get size(){return[this.width,this.height]}get ui(){return this._get("ui")}set ui(t){const e=this._get("ui");e!==t&&e?.destroy(),this._set("ui",t)}blur(){this.surface?.blur()}focus(){this.surface?.focus()}pageToContainer(t,e,i){const s=this.position;return t-=s?s[0]:0,e-=s?s[1]:0,i?(i[0]=t,i[1]=e):i=[t,e],i}containerToPage(t,e,i){const s=this.position;return t+=s?s[0]:0,e+=s?s[1]:0,i?(i[0]=t,i[1]=e):i=[t,e],i}_updateAria(){const{surface:t,aria:e}=this;t&&(t.ariaLabelledByElements=e?.labelledByElements??null,t.ariaDescribedByElements=e?.describedByElements??null,t.ariaLabel=e?.label??null,t.ariaDescription=e?.description??null)}_handleUIChange(t,e){this.removeHandles("ui"),e&&e!==t&&e.destroy(),t&&(t.view=this,this.addHandles(h(()=>this.root,e=>{if(e){const i=document.createElement("div");e.insertBefore(i,this._attribution?.surface??null),t.container=i}else t.container=null},l),"ui")),this._set("ui",t)}_stopMeasuring(){this.removeHandles("measuring"),this._get("resizing")&&this._set("resizing",!1)}_startMeasuring(){const t=this._freqInfo;t.freq=b,t.time=w;const e=u({prepare:t=>{const i=this._measure(),s=this._freqInfo;if(s.time+=t.deltaTime,i&&(s.freq=b,this._get("resizing")||this._set("resizing",!0)),s.time<s.freq)return;s.time=0;const r=this._position();s.freq=r||i?b:Math.min(w,s.freq*H),!i&&s.freq>=C&&(e.pause(),this._get("resizing")&&this._set("resizing",!1))}}),i=new ResizeObserver(i=>{t.freq=b,t.time=w,e.resume()});null!=this.container&&i.observe(this.container);const n=r(()=>i.disconnect());this.addHandles([s(window,"resize",()=>{t.freq=b,t.time=w,e.resume()}),n,e],"measuring"),this._measure(),this._position()}_measure(){const t=this.container,e=t?t.clientWidth:0,i=t?t.clientHeight:0;if(0===e||0===i)return this.suspended||this._set("suspended",!0),!1;const s=this.width,r=this.height;if(e===s&&i===r)return this.suspended&&this._set("suspended",!1),!1;this._set("width",e),this._set("height",i),this.suspended&&this._set("suspended",!1);return this.emit("resize",{oldWidth:s,oldHeight:r,width:e,height:i}),!0}_position(){const t=this.container,e=this.position,i=t&&y(t);return!!i&&((!e||i[0]!==e[0]||i[1]!==e[1])&&(this._set("position",[i[0],i[1]]),!0))}forceDOMReadyCycle(){}};return t([c()],O.prototype,"_attribution",void 0),t([c()],O.prototype,"aria",void 0),t([c()],O.prototype,"attributionHeight",null),t([c()],O.prototype,"attributionMode",void 0),t([c()],O.prototype,"container",null),t([c({readOnly:!0})],O.prototype,"focused",null),t([c({readOnly:!0})],O.prototype,"height",void 0),t([c()],O.prototype,"messagesCommon",void 0),t([c({type:f})],O.prototype,"overlay",void 0),t([c({readOnly:!0})],O.prototype,"position",void 0),t([c({readOnly:!0})],O.prototype,"resizing",void 0),t([c({readOnly:!0})],O.prototype,"root",void 0),t([c({value:null,readOnly:!0})],O.prototype,"size",null),t([c({readOnly:!0})],O.prototype,"surface",void 0),t([c({readOnly:!0})],O.prototype,"suspended",void 0),t([c({nonNullable:!0})],O.prototype,"ui",null),t([c({readOnly:!0})],O.prototype,"userContent",void 0),t([c({readOnly:!0})],O.prototype,"width",void 0),t([c()],O.prototype,"widthBreakpoint",void 0),O=t([p("esri.views.DOMContainer")],O),O};export{O as DOMContainer};
2
+ import{__decorate as t}from"tslib";import{byId as e,reparent as i}from"../core/domUtils.js";import{on as s}from"../core/events.js";import{makeHandle as o}from"../core/handleUtils.js";import n from"../core/Logger.js";import{destroyMaybe as r,removeMaybe as a}from"../core/maybe.js";import{watch as l,initial as h,syncAndInitial as u}from"../core/reactiveUtils.js";import{addFrameTask as d}from"../core/scheduling.js";import{property as c,subclass as p}from"../core/accessorSupport/decorators.js";import{Attribution as g}from"./Attribution.js";import m from"./overlay/FocusRegionOverlayItem.js";import f from"./overlay/ViewOverlay.js";const y=[0,0];function v(t){const e=(t.ownerDocument||window.document).defaultView,i=t.getBoundingClientRect();return y[0]=i.left+(e?.pageXOffset??0),y[1]=i.top+(e?.pageYOffset??0),y}function _(t){t&&(t.textContent="",t.parentNode&&t.parentNode.removeChild(t))}const b="test"===process.env.NODE_ENV,R=b?0:16,w=b?0:750,O=b?0:512,E=2,I=50,C={left:0,top:0,right:0,bottom:0},H={toggle:"KeyO",resizeLarger:"ArrowUp",resizeSmaller:"ArrowDown",select:new Set(["Enter","Space"])},z=y=>{const b=y;let z=class extends b{constructor(...t){super(...t),this._freqInfo={freq:R,time:w},this._overlayRenderTaskHandle=null,this._focusRegionOverlayItem=new m,this.aria={},this.attributionMode=null,this.height=0,this.focusRegionEnabled=!1,this.messagesCommon=null,this.overlay=null,this.position=null,this.resizing=!1,this.root=null,this.surface=null,this.suspended=!0,this.userContent=null,this.width=0,this.widthBreakpoint=null,this.addHandles([l(()=>[this.focusRegionEnabled,this.overlay],()=>this._syncFocusRegionOverlayItemVisibility(this.focusRegionEnabled),{initial:!0}),l(()=>this.cursor,t=>{const{surface:e}=this;e&&e.setAttribute("data-cursor",t)}),l(()=>this.navigating,t=>{const{surface:e}=this;e&&e.setAttribute("data-navigating",t.toString())}),l(()=>[this.aria,this.surface],()=>this._updateAria(),{initial:!0}),l(()=>{const{left:t,top:e,right:i,bottom:s}=this.padding??C;return[this.width,this.height,t,e,i,s]},([t,e,i,s,o,n])=>{const{_focusRegionOverlayItem:r}=this;r.backgroundHeight=e,r.backgroundWidth=t,r.padding={left:i,top:s,right:o,bottom:n},r.updateBoxSize()})])}initialize(){const t=this;this.addHandles([l(()=>this.ui,(t,e)=>this._handleUIChange(t,e),h),t.on("focus",()=>this.notifyChange("focused")),t.on("blur",()=>this.notifyChange("focused")),t.on("key-down",e=>{const{shiftKey:i,altKey:s,code:o,defaultPrevented:n}=e.native,{toggle:r,resizeLarger:a,resizeSmaller:l,select:h}=H,u=this.focusRegionEnabled&&i&&s&&(o===a||o===l);if(!e.repeat||u){if(!n&&i&&s&&o===r)return this._toggleFocusRegion(),void e.preventDefault();if(!n&&u){const{_focusRegionOverlayItem:t}=this;return t.resizeBoxSize(o===a?I:-I),e.preventDefault(),e.native.stopPropagation(),void e.stopPropagation()}!n&&this.focusRegionEnabled&&h.has(o)&&this._selectFocusRegion(e,t)}})])}destroy(){this.destroyed||(this.focusRegionEnabled=!1,this._syncFocusRegionOverlayItemVisibility(!1),this.ui?.destroy(),this.container=null)}get attributionHeight(){return this._attribution?.height??0}get container(){return this._get("container")??null}set container(t){const s=this._get("container"),o=e(t);if(o||"string"!=typeof t||n.getLogger(this).error("#container",`element with id '${t}' not found`),s===o)return;if(this._stopMeasuring(),this.removeHandles("container"),s&&(s.classList.remove("esri-view"),this._overlayRenderTaskHandle&&(this._overlayRenderTaskHandle.remove(),this._overlayRenderTaskHandle=null),this.overlay&&(this.overlay.destroy(),this._set("overlay",null)),this._attribution=r(this._attribution),this.root&&(_(this.root),this._set("root",null)),this.userContent&&(i(this.userContent,s),_(this.userContent),this._set("userContent",null))),!o)return this._set("width",0),this._set("height",0),this._set("position",null),this._set("suspended",!0),this._set("surface",null),void this._set("container",null);o.classList.add("esri-view");const c=document.createElement("div");c.className="esri-view-user-storage",i(o,c),o.appendChild(c),this._set("userContent",c);const p=document.createElement("div");p.className="esri-view-root",o.insertBefore(p,o.firstChild),this._set("root",p);const m=document.createElement("div");m.className="esri-view-surface",m.setAttribute("role","application"),m.tabIndex=0,p.appendChild(m),this._set("surface",m);const y=new f;p.appendChild(y.surface),this._set("overlay",y),this._syncFocusRegionOverlayItemVisibility(this.focusRegionEnabled),this.addHandles(l(()=>y.needsRender,t=>{t&&!this._overlayRenderTaskHandle?this._overlayRenderTaskHandle=d({render:()=>this.overlay?.render()}):this._overlayRenderTaskHandle=a(this._overlayRenderTaskHandle)},h),"container"),this.addHandles([l(()=>({visible:this.attributionVisible,items:this.attributionItems,mode:this.attributionMode}),({visible:t,items:e,mode:i})=>{t?(this._attribution||(this._attribution=new g({attributionItems:this.attributionItems,mode:this.attributionMode})),this._attribution.appendBefore(p,this.ui?.container??null),this._attribution.attributionItems=e,this._attribution.mode=i):this._attribution=r(this._attribution)},u)],"container"),this.forceDOMReadyCycle(),this._set("container",o),this._startMeasuring()}get focused(){const t=document.activeElement===this.surface;return document.hasFocus()&&t}get focusRegion(){return this.focusRegionEnabled?this._focusRegionOverlayItem.getScreenRect():null}get size(){return[this.width,this.height]}get ui(){return this._get("ui")}set ui(t){const e=this._get("ui");e!==t&&e?.destroy(),this._set("ui",t)}blur(){this.surface?.blur()}focus(){this.surface?.focus()}pageToContainer(t,e,i){const s=this.position;return t-=s?s[0]:0,e-=s?s[1]:0,i?(i[0]=t,i[1]=e):i=[t,e],i}containerToPage(t,e,i){const s=this.position;return t+=s?s[0]:0,e+=s?s[1]:0,i?(i[0]=t,i[1]=e):i=[t,e],i}_updateAria(){const{surface:t,aria:e}=this;t&&(t.ariaLabelledByElements=e?.labelledByElements??null,t.ariaDescribedByElements=e?.describedByElements??null,t.ariaLabel=e?.label??null,t.ariaDescription=e?.description??null)}_selectFocusRegion(t,e){const i=this._makeFocusRegionSelectEvent(t);e.emit("focus-region-select",i),t.preventDefault()}_makeFocusRegionSelectEvent(t){const e={type:"focus-region-select",native:t.native,defaultPrevented:!1,preventDefault:()=>{e.defaultPrevented=!0},stopPropagation:()=>{t.stopPropagation()}};return e}_toggleFocusRegion(){this.focusRegionEnabled=!this.focusRegionEnabled}_updateFocusRegionOverlayItem(){const{_focusRegionOverlayItem:t}=this;t.backgroundHeight=this.height,t.backgroundWidth=this.width,t.padding=this.padding??C,t.updateBoxSize()}_syncFocusRegionOverlayItemVisibility(t){const{_focusRegionOverlayItem:e,overlay:i}=this,s=t;e.visible=s,i&&(i.removeItem(e),s&&(this._updateFocusRegionOverlayItem(),i.addItem(e)))}_handleUIChange(t,e){this.removeHandles("ui"),e&&e!==t&&e.destroy(),t&&(t.view=this,this.addHandles(l(()=>this.root,e=>{if(e){const i=document.createElement("div");e.insertBefore(i,this._attribution?.surface??null),t.container=i}else t.container=null},h),"ui")),this._set("ui",t)}_stopMeasuring(){this.removeHandles("measuring"),this._get("resizing")&&this._set("resizing",!1)}_startMeasuring(){const t=this._freqInfo;t.freq=R,t.time=w;const e=d({prepare:t=>{const i=this._measure(),s=this._freqInfo;if(s.time+=t.deltaTime,i&&(s.freq=R,this._get("resizing")||this._set("resizing",!0)),s.time<s.freq)return;s.time=0;const o=this._position();s.freq=o||i?R:Math.min(w,s.freq*E),!i&&s.freq>=O&&(e.pause(),this._get("resizing")&&this._set("resizing",!1))}}),i=new ResizeObserver(i=>{t.freq=R,t.time=w,e.resume()});null!=this.container&&i.observe(this.container);const n=o(()=>i.disconnect());this.addHandles([s(window,"resize",()=>{t.freq=R,t.time=w,e.resume()}),n,e],"measuring"),this._measure(),this._position()}_measure(){const t=this.container,e=t?t.clientWidth:0,i=t?t.clientHeight:0;if(0===e||0===i)return this.suspended||this._set("suspended",!0),!1;const s=this.width,o=this.height;if(e===s&&i===o)return this.suspended&&this._set("suspended",!1),!1;this._set("width",e),this._set("height",i),this.suspended&&this._set("suspended",!1);return this.emit("resize",{oldWidth:s,oldHeight:o,width:e,height:i}),!0}_position(){const t=this.container,e=this.position,i=t&&v(t);return!!i&&((!e||i[0]!==e[0]||i[1]!==e[1])&&(this._set("position",[i[0],i[1]]),!0))}forceDOMReadyCycle(){}};return t([c()],z.prototype,"_attribution",void 0),t([c()],z.prototype,"aria",void 0),t([c()],z.prototype,"attributionHeight",null),t([c()],z.prototype,"attributionMode",void 0),t([c()],z.prototype,"container",null),t([c({readOnly:!0})],z.prototype,"focused",null),t([c({readOnly:!0})],z.prototype,"height",void 0),t([c()],z.prototype,"focusRegionEnabled",void 0),t([c()],z.prototype,"focusRegion",null),t([c()],z.prototype,"messagesCommon",void 0),t([c({type:f})],z.prototype,"overlay",void 0),t([c({readOnly:!0})],z.prototype,"position",void 0),t([c({readOnly:!0})],z.prototype,"resizing",void 0),t([c({readOnly:!0})],z.prototype,"root",void 0),t([c({value:null,readOnly:!0})],z.prototype,"size",null),t([c({readOnly:!0})],z.prototype,"surface",void 0),t([c({readOnly:!0})],z.prototype,"suspended",void 0),t([c({nonNullable:!0})],z.prototype,"ui",null),t([c({readOnly:!0})],z.prototype,"userContent",void 0),t([c({readOnly:!0})],z.prototype,"width",void 0),t([c()],z.prototype,"widthBreakpoint",void 0),z=t([p("esri.views.DOMContainer")],z),z};export{z as DOMContainer};
@@ -245,7 +245,7 @@ export abstract class PopupView {
245
245
  openPopup(options?: ViewPopupOpenOptions): Promise<void>;
246
246
  }
247
247
 
248
- export type ViewPopupOpenOptions = Pick<PopupOpenOptions, "actions" | "content" | "features" | "fetchFeatures" | "location" | "promises" | "title" | "updateLocationEnabled">;
248
+ export type ViewPopupOpenOptions = Pick<PopupOpenOptions, "actions" | "content" | "diagnostics" | "features" | "featureStream" | "fetchFeatures" | "location" | "promises" | "title" | "updateLocationEnabled" | "shouldFocus">;
249
249
 
250
250
  /**
251
251
  * Options for the [fetchPopupFeatures()](https://developers.arcgis.com/javascript/latest/references/core/views/PopupView/#fetchPopupFeatures) method. See properties below for object specifications.
package/views/View.d.ts CHANGED
@@ -30,7 +30,7 @@ import type { TimeExtentProperties } from "../time/TimeExtent.js";
30
30
  import type { NavigationProperties } from "./navigation/Navigation.js";
31
31
  import type { ThemeProperties } from "./Theme.js";
32
32
 
33
- export interface ViewProperties<TLayerView extends LayerView = LayerView> extends Partial<Pick<View<TLayerView>, "animation" | "animationsEnabled" | "attributionVisible" | "basemapView" | "displayFilterEnabled" | "fatalError" | "padding">> {
33
+ export interface ViewProperties<TLayerView extends LayerView = LayerView> extends Partial<Pick<View<TLayerView>, "animation" | "animationsEnabled" | "attributionVisible" | "basemapView" | "displayFilterEnabled" | "fatalError" | "focusRegionEnabled" | "padding">> {
34
34
  /**
35
35
  * Allows for adding [graphics](https://developers.arcgis.com/javascript/latest/references/core/Graphic/) directly to the default graphics in the View.
36
36
  *
@@ -407,6 +407,15 @@ export default abstract class View<TLayerView extends LayerView = LayerView> ext
407
407
  * );
408
408
  */
409
409
  accessor fatalError: EsriError | null | undefined;
410
+ /**
411
+ * Indicates whether the focus region is currently enabled.
412
+ *
413
+ * Set this property to `true` to show the centered focus region, or `false` to hide it.
414
+ *
415
+ * @default false
416
+ * @since 5.2
417
+ */
418
+ accessor focusRegionEnabled: boolean;
410
419
  /**
411
420
  * Allows for adding [graphics](https://developers.arcgis.com/javascript/latest/references/core/Graphic/) directly to the default graphics in the View.
412
421
  *
package/views/View.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../Map.js";import{createTask as i}from"../core/asyncUtils.js";import r from"../core/Collection.js";import s from"../core/CollectionFlattener.js";import{referenceSetter as a}from"../core/collectionUtils.js";import o from"../core/Error.js";import{EventedMixin as n}from"../core/Evented.js";import l from"../core/Handles.js";import{makeHandle as p}from"../core/handleUtils.js";import has from"../core/has.js";import{isLoadable as h}from"../core/Loadable.js";import d from"../core/Logger.js";import{destroyMaybe as y,abortMaybe as u}from"../core/maybe.js";import{EsriPromise as m}from"../core/Promise.js";import{after as c}from"../core/promiseUtils.js";import g from"../core/ReactiveSet.js";import{watch as f,sync as w,whenOnce as v,when as _,syncAndInitial as M}from"../core/reactiveUtils.js";import{property as V,subclass as b}from"../core/accessorSupport/decorators.js";import{owningCollectionProperty as R}from"../core/support/OwningCollection.js";import{UpdatingHandles as S}from"../core/support/UpdatingHandles.js";import T from"../geometry/Extent.js";import j from"../geometry/HeightModelInfo.js";import E from"../geometry/SpatialReference.js";import{equals as L}from"../geometry/support/spatialReferenceUtils.js";import{AnalysesCollection as F}from"../support/AnalysesCollection.js";import{GraphicsCollection as x}from"../support/GraphicsCollection.js";import{system as C}from"../time/constants.js";import O from"../time/TimeExtent.js";import{isTimeZoneValid as k}from"../time/timeZoneUtils.js";import H from"./BasemapView.js";import I from"./Magnifier.js";import Z from"./SelectionManager.js";import q from"./Theme.js";import{ToolViewManager as W}from"./ToolViewManager.js";import{GlyphMosaic as A}from"./2d/engine/webgl/GlyphMosaic.js";import{makeDefaultHighlightOptions as P}from"./3d/support/DefaultHighlights.js";import D from"./input/Input.js";import{ViewEvents as U}from"./input/ViewEvents.js";import z from"./interactive/options/ViewOptions.js";import N from"./navigation/Navigation.js";import{deduplicateAttributionItems as G}from"./support/attributionUtils.js";import{DefaultsFromMap as $}from"./support/DefaultsFromMap.js";import{defaultHighlightName as B}from"./support/HighlightDefaults.js";import J from"./support/HighlightOptions.js";import K from"./support/LayerViewManager.js";import Q from"./support/RequiredFieldsOptions.js";import{checkWebAssemblyRequirements as X}from"./support/WebAssemblyRequirements.js";import{checkWebGLRequirements as Y}from"./support/WebGLRequirements.js";var ee;let te=class extends(n(m)){static{ee=this}constructor(e){super(e),this._userSpatialReference=null,this.handles=new l,this.updatingHandles=new S,this.allLayerViews=new s({getCollections:()=>this.layerviewCollections,getChildrenFunction:re}),this.animationsEnabled=!0,this.attributionVisible=!0,this.basemapView=null,this.dependencies={popup:void 0},this.displayFilterEnabled=!0,this.fatalError=null,this.graphics=new x,this.typeSpecificPreconditionsReady=!0,this.layerViews=new r,this.magnifier=new I,this.options=new z,this.padding={left:0,top:0,right:0,bottom:0},this.ready=!1,this._readyStateWaitingTask=null,this.type=null,this.scale=null,this.updating=!1,this.initialExtentRequired=!0,this._lowPriorityCursorHandles=new r,this._highPriorityCursorHandles=new r,this.input=new D,this.navigation=new N,this.layerViewManager=null,this.analysisViewManager=null,this.isHeightModelInfoRequired=!1,this.width=null,this.height=null,this.resizing=!1,this.suspended=!1,this.viewEvents=new U(this),this.requiredFieldsOptions=new Q,this._isValid=!1,this._readyCycleForced=!1,this._lockedSpatialReference=null,this._userTimeZone=null,this._lockedTimeZone=null,this._userTimeExtent=null,this._lockedTimeExtent=null,this._glyphMosaic=null,this.theme=null,this.registeredComponents=new g,this.handles.add(f(()=>this.preconditionsReady,e=>{const t=this.ready;if(e?(this._lockedSpatialReference=this.spatialReference,this._lockedTimeZone=this.timeZone,this._lockedTimeExtent=this.timeExtent,ee.views.add(this)):(this._lockedSpatialReference=null,ee.views.remove(this)),this.notifyChange("spatialReference"),!e&&t)this.toolViewManager?.detach(),this.analysisViewManager?.detach(),this.layerViewManager?.clear(),this._glyphMosaic?.dispose(),this._teardown();else if(e&&!t){try{this._startup()}catch(i){return void queueMicrotask(()=>{this.fatalError=new o("view:startup-error","View._startup failed",i)})}this._glyphMosaic=new A(1024,1024,!0),this.analysisViewManager?.attach(),this.toolViewManager.attach()}},w)),this.analyses=new F}initialize(){this.addResolvingPromise(Promise.all([this.loadAsyncDependencies(),this.validate()]).then(()=>(this._isValid=!0,v(()=>this.ready)))),this.basemapView=new H({view:this}),this.layerViewManager=new K({view:this,layerViewFilter:e=>this.layerViewFilter?.(e)??!0,layerViewImporter:{importLayerView:e=>this.importLayerView(e),hasLayerViewModule:e=>this.hasLayerViewModule(e)},layerviewMapping:this._layerToLayerviewMapping}),this.toolViewManager=new W({view:this}),this.selectionManager=new Z({view:this}),this.addHandles([_(()=>"map-content-error"===this.readyState&&!this.spatialReference,()=>{d.getLogger(this).warn("#spatialReference","no spatial reference could be derived from the currently added map layers")}),f(()=>this.initialExtentRequired,e=>this.defaultsFromMap.required={...this.defaultsFromMap.required,extent:e},M),f(()=>this.ready,e=>{this.defaultsFromMap&&(this.defaultsFromMap.viewReady=e)},w),f(()=>this.defaultsFromMapInputSpatialReference(),e=>{this.defaultsFromMap&&(this.defaultsFromMap.inputSpatialReference=e)},M),f(()=>this.defaultsFromMapInputHeightModelInfo(),e=>{this.defaultsFromMap&&(this.defaultsFromMap.inputHeightModelInfo=e)},M)])}get _layerToLayerviewMapping(){return ee._layerToLayerview}static{this._layerToLayerview=[["view.map.basemap.baseLayers","view.basemapView.baseLayerViews"],["view.map.basemap.groundLayers","view.basemapView.groundLayerViews"],["view.map.basemap.referenceLayers","view.basemapView.referenceLayerViews"],["view.map.layers","view.layerViews"]]}destroy(){this.destroyed||(ee.views.remove(this),this.viewEvents.destroy(),this.allLayerViews.destroy(),this.navigation&&(this.navigation.destroy(),this._set("navigation",null)),this.graphics=y(this.graphics),this.analyses=y(this.analyses),this.defaultsFromMap.destroy(),this._set("defaultsFromMap",null),this.analysisViewManager=y(this.analysisViewManager),this.toolViewManager=y(this.toolViewManager),this.layerViewManager=y(this.layerViewManager),this.selectionManager=y(this.selectionManager),this.basemapView=y(this.basemapView),this.layerViews.destroyAll(),this.invalidate(),this.handles.destroy(),this.map=y(this.map),this.updatingHandles.destroy())}_startup(){this._set("ready",!0)}_teardown(){this._set("ready",!1)}whenReady(){return Promise.resolve(this)}toMap(){return d.getLogger(this).error("#toMap()","Not implemented on this instance of View"),null}get activeTool(){return this.toolViewManager?.activeTool}set activeTool(e){this.toolViewManager&&(this.toolViewManager.activeTool=e)}get layerviewCollections(){return[this.basemapView?.baseLayerViews,this.basemapView?.groundLayerViews,this.layerViews,this.basemapView?.referenceLayerViews]}get analyses(){return this._get("analyses")}set analyses(e){this._set("analyses",e)}get animation(){return this._get("animation")}set animation(e){this._set("animation",e)}get attributionItems(){return this.suspended?[]:G(this._get("attributionItems"),this.getAttributionItems())}get center(){return null}get defaultsFromMapSettings(){return{}}get defaultsFromMap(){return new $({required:{tileInfo:!1,heightModelInfo:!1,extent:!1},map:()=>this.map,getSpatialReferenceSupport:(e,t)=>this.getSpatialReferenceSupport(e,t),...this.defaultsFromMapSettings})}get extent(){return this._get("extent")}set extent(e){this._set("extent",e)}get heightModelInfo(){return this.getDefaultHeightModelInfo()}glyphMosaic(){return this._glyphMosaic}get highlights(){return this._get("highlights")??P()}set highlights(e){this._set("highlights",a(e,this._get("highlights"),r.ofType(J)))}get defaultHighlight(){return this.highlights.find(({name:e})=>e===B)}get interacting(){return this.navigating}get navigating(){return!1}get preconditionsReady(){if(this.destroying||this.destroyed)return!1;const{map:e,spatialReference:t}=this;return!(this.fatalError||!this._isValid||this._readyCycleForced||!e||h(e)&&!e.loaded||0===this.width||0===this.height||!t||!this._validateSpatialReference(t)||!this._lockedSpatialReference&&!this.defaultsFromMap?.ready||!this.typeSpecificPreconditionsReady)}get resolution(){return 0}set map(e){e!==this._get("map")&&(e?.destroyed&&(d.getLogger(this).warn("#map","The provided map is already destroyed",{map:e}),e=null),h(e)&&e.load().catch(()=>{}),this.constructed&&!this.destroyed&&(this.forceReadyCycle(),this._lockedSpatialReference=null),this._set("map",e))}get canZoomIn(){return!!this.ready}get canZoomOut(){return!!this.ready}get readyState(){if(this.destroyed)return this._get("readyState");if(!this.map)return"missing-map";if("container"in this&&!this.container)return"missing-container";if(this.fatalError)return"rendering-error";if((this.defaultsFromMap?.ready??!1)&&!this.spatialReference){const e=!("loaded"in this.map)||this.map.loaded,t=this.map.ground.loaded,r=this.map.basemap?.loaded??!0;return e&&r&&t&&!this.map?.allLayers.length?"empty-map":(this._readyStateWaitingTask||(this._readyStateWaitingTask=i(e=>c(has("view-readyState-waiting-delay"),null,e)),this.addHandles(this._readyStateWaitingTask),this.addHandles(this._readyStateWaitingTask,"ready-state-task")),this._readyStateWaitingTask?.finished?"map-content-error":"loading")}return this._readyStateWaitingTask=u(this._readyStateWaitingTask),this.removeHandles("ready-state-task"),this.ready?"ready":"loading"}get spatialReference(){const{_userSpatialReference:e}=this;if(e&&null!==e.vcsWkid)return e;const t=e??this._lockedSpatialReference??this.getWebDocumentSpatialReference()??this.defaultsFromMap?.spatialReference??null,i=this.defaultsFromMap?.combinedHorizontalAndVerticalSpatialReference;return i?.equals(t)?i:t}set spatialReference(e){const t=!L(e,this._get("spatialReference"));this._set("_userSpatialReference",e),t&&(this._set("spatialReference",e),this._spatialReferenceChanged(this.spatialReference))}_spatialReferenceChanged(e){}getWebDocumentSpatialReference(){return null}defaultsFromMapInputSpatialReference(){return this._userSpatialReference??this.getWebDocumentSpatialReference()??(this.ready?this._lockedSpatialReference:null)}defaultsFromMapInputHeightModelInfo(){return this.map?.heightModelInfo??null}get stationary(){return!this.animation&&!this.navigating&&!this.resizing}get timeExtent(){return this._userTimeExtent??this._lockedTimeExtent??this.getDefaultTimeExtent()??null}set timeExtent(e){this._userTimeExtent=e}get timeZone(){return this._userTimeZone??this._lockedTimeZone??this.getDefaultTimeZone()??C}set timeZone(e){this._userTimeZone=e,k(e)||d.getLogger(this).warn("#timeZone",`the parsed value '${e}' may not be a valid IANA time zone`)}get tools(){return this.toolViewManager?.tools}get initialExtent(){return this.defaultsFromMap?.extent}get cursor(){return this.toolViewManager?.cursor??this._highPriorityCursorHandles.at(-1)?.cursor??this._lowPriorityCursorHandles.at(-1)?.cursor??"default"}acquireCursor(e,t="low"){const i="high"===t?this._highPriorityCursorHandles:this._lowPriorityCursorHandles,r={cursor:e},s=p(()=>i.remove(r));return i.add(r),this.addHandles(s),s}get size(){return[this.width,this.height]}get effectiveTheme(){return this.theme??new q}registerComponent(e){this.registeredComponents.add(e)}unregisterComponent(e){this.registeredComponents.delete(e)}whenLayerView(e){return this.layerViewManager?.whenLayerView(e)??Promise.reject()}getAttributionItems(){return this.allLayerViews.items.flatMap(e=>e.attributionItems)}getDefaultHeightModelInfo(){return(this.map&&"heightModelInfo"in this.map?this.map.heightModelInfo:void 0)??this.defaultsFromMap?.heightModelInfo??null}getDefaultTimeZone(){return null}getDefaultTimeExtent(){return null}getSurface(){return null}importLayerView(e){throw new o("view:importLayerView-missing","importLayerView() not implemented")}hasLayerViewModule(e){return!1}async validate(){const e=Y(this.type);if(e)throw this._displayWebGLError(),d.getLogger(this).warn("#validate()",e.message),e;const t=await X();if(t)throw d.getLogger(this).warn("#validate()",t.message),t}async loadAsyncDependencies(){}invalidate(){this._isValid=!1}getSpatialReferenceSupport(){return{constraints:null}}_validateSpatialReference(e){return null!=this.getSpatialReferenceSupport(e)}when(e,t){return this.isResolved()&&!this.ready&&d.getLogger(this).warn("#when()","Calling view.when() while the view is no longer ready but was already resolved once will resolve immediately. Use reactiveUtils.whenOnce(() => view.ready).then(...) instead."),super.when(e,t)}forceReadyCycle(){this.ready&&(_(()=>this.destroyed||!1===this.preconditionsReady,()=>this._readyCycleForced=!1,{once:!0}),this._readyCycleForced=!0)}on(e,t){return super.on(e,t)}addAndActivateTool(e){this.toolViewManager.tools.add(e),this.activeTool=e}tryFatalErrorRecovery(){this.fatalError=null}static{this.views=new r}_displayWebGLError(){const e=document.createElement("div");e.setAttribute("style","display: flex; flex-direction: column; gap: 8px; padding: 20px; height: 100%; justify-content: center; color: black; background: white; font-family: sans-serif;");const t=document.createElement("div");t.innerHTML="Unable to display map. WebGL2 support is required.",t.setAttribute("style","font-size: 24px; font-weight: bold;");const i=document.createElement("div");i.innerHTML="Ensure that your browser and hardware meet the minimum requirements.",i.setAttribute("style","font-size: 18px;");const r=document.createElement("a");r.innerHTML="https://esriurl.com/webgl-faq",r.target="_blank",r.setAttribute("style","font-size: 18px;"),r.href="https://esriurl.com/webgl-faq",e.appendChild(t),e.appendChild(i),e.appendChild(r);const s=this.getSurface();s&&s.appendChild(e)}};e([V()],te.prototype,"_userSpatialReference",void 0),e([V()],te.prototype,"activeTool",null),e([V({readOnly:!0})],te.prototype,"allLayerViews",void 0),e([V({readOnly:!0})],te.prototype,"layerviewCollections",null),e([V(R(F,"analyses"))],te.prototype,"analyses",null),e([V()],te.prototype,"animation",null),e([V()],te.prototype,"animationsEnabled",void 0),e([V({readOnly:!0})],te.prototype,"attributionItems",null),e([V()],te.prototype,"attributionVisible",void 0),e([V()],te.prototype,"basemapView",void 0),e([V()],te.prototype,"center",null),e([V()],te.prototype,"defaultsFromMapSettings",null),e([V()],te.prototype,"defaultsFromMap",null),e([V()],te.prototype,"dependencies",void 0),e([V()],te.prototype,"displayFilterEnabled",void 0),e([V({type:T})],te.prototype,"extent",null),e([V()],te.prototype,"fatalError",void 0),e([V(R(x,"graphics"))],te.prototype,"graphics",void 0),e([V({readOnly:!0,type:j})],te.prototype,"heightModelInfo",null),e([V({type:r.ofType(J)})],te.prototype,"highlights",null),e([V({readOnly:!0})],te.prototype,"interacting",null),e([V({constructOnly:!0})],te.prototype,"layerViewFilter",void 0),e([V({readOnly:!0})],te.prototype,"navigating",null),e([V({readOnly:!0})],te.prototype,"preconditionsReady",null),e([V({readOnly:!0})],te.prototype,"typeSpecificPreconditionsReady",void 0),e([V({type:r,readOnly:!0})],te.prototype,"layerViews",void 0),e([V()],te.prototype,"resolution",null),e([V({type:I})],te.prototype,"magnifier",void 0),e([V({nonNullable:!0,type:z})],te.prototype,"options",void 0),e([V({value:null,type:t})],te.prototype,"map",null),e([V()],te.prototype,"padding",void 0),e([V({readOnly:!0})],te.prototype,"ready",void 0),e([V({readOnly:!0})],te.prototype,"canZoomIn",null),e([V({readOnly:!0})],te.prototype,"canZoomOut",null),e([V()],te.prototype,"_readyStateWaitingTask",void 0),e([V({readOnly:!0})],te.prototype,"readyState",null),e([V({type:E})],te.prototype,"spatialReference",null),e([V()],te.prototype,"stationary",null),e([V({type:O})],te.prototype,"timeExtent",null),e([V({type:String,nonNullable:!0})],te.prototype,"timeZone",null),e([V()],te.prototype,"tools",null),e([V()],te.prototype,"toolViewManager",void 0),e([V({readOnly:!0})],te.prototype,"type",void 0),e([V({type:Number})],te.prototype,"scale",void 0),e([V({readOnly:!0})],te.prototype,"updating",void 0),e([V({readOnly:!0})],te.prototype,"initialExtentRequired",void 0),e([V({readOnly:!0})],te.prototype,"initialExtent",null),e([V()],te.prototype,"cursor",null),e([V({readOnly:!0})],te.prototype,"input",void 0),e([V({type:N,nonNullable:!0})],te.prototype,"navigation",void 0),e([V()],te.prototype,"layerViewManager",void 0),e([V()],te.prototype,"analysisViewManager",void 0),e([V()],te.prototype,"selectionManager",void 0),e([V()],te.prototype,"width",void 0),e([V()],te.prototype,"height",void 0),e([V({readOnly:!0})],te.prototype,"resizing",void 0),e([V({value:null,readOnly:!0})],te.prototype,"size",null),e([V({readOnly:!0})],te.prototype,"suspended",void 0),e([V({readOnly:!0})],te.prototype,"viewEvents",void 0),e([V()],te.prototype,"_isValid",void 0),e([V()],te.prototype,"_readyCycleForced",void 0),e([V()],te.prototype,"_lockedSpatialReference",void 0),e([V()],te.prototype,"_userTimeZone",void 0),e([V()],te.prototype,"_lockedTimeZone",void 0),e([V()],te.prototype,"_userTimeExtent",void 0),e([V()],te.prototype,"_lockedTimeExtent",void 0),e([V({type:q})],te.prototype,"theme",void 0),e([V({readOnly:!0,type:q})],te.prototype,"effectiveTheme",null),e([V({readOnly:!0})],te.prototype,"registeredComponents",void 0),te=ee=e([b("esri.views.View")],te);const ie=globalThis.$arcgis;function re(e){return e.layerViews}ie&&!ie.views&&Object.defineProperty(ie,"views",{configurable:!1,enumerable:!0,writable:!1,value:te.views});export{te as default};
2
+ import{__decorate as e}from"tslib";import t from"../Map.js";import{createTask as i}from"../core/asyncUtils.js";import r from"../core/Collection.js";import s from"../core/CollectionFlattener.js";import{referenceSetter as a}from"../core/collectionUtils.js";import o from"../core/Error.js";import{EventedMixin as n}from"../core/Evented.js";import l from"../core/Handles.js";import{makeHandle as p}from"../core/handleUtils.js";import has from"../core/has.js";import{isLoadable as h}from"../core/Loadable.js";import d from"../core/Logger.js";import{destroyMaybe as u,abortMaybe as y}from"../core/maybe.js";import{EsriPromise as m}from"../core/Promise.js";import{after as c}from"../core/promiseUtils.js";import g from"../core/ReactiveSet.js";import{watch as f,sync as w,whenOnce as v,when as _,syncAndInitial as M}from"../core/reactiveUtils.js";import{property as V,subclass as b}from"../core/accessorSupport/decorators.js";import{owningCollectionProperty as R}from"../core/support/OwningCollection.js";import{UpdatingHandles as S}from"../core/support/UpdatingHandles.js";import T from"../geometry/Extent.js";import j from"../geometry/HeightModelInfo.js";import E from"../geometry/SpatialReference.js";import{equals as L}from"../geometry/support/spatialReferenceUtils.js";import{AnalysesCollection as F}from"../support/AnalysesCollection.js";import{GraphicsCollection as x}from"../support/GraphicsCollection.js";import{system as C}from"../time/constants.js";import O from"../time/TimeExtent.js";import{isTimeZoneValid as k}from"../time/timeZoneUtils.js";import H from"./BasemapView.js";import I from"./Magnifier.js";import Z from"./SelectionManager.js";import q from"./Theme.js";import{ToolViewManager as W}from"./ToolViewManager.js";import{GlyphMosaic as A}from"./2d/engine/webgl/GlyphMosaic.js";import{makeDefaultHighlightOptions as P}from"./3d/support/DefaultHighlights.js";import D from"./input/Input.js";import{ViewEvents as U}from"./input/ViewEvents.js";import z from"./interactive/options/ViewOptions.js";import N from"./navigation/Navigation.js";import{deduplicateAttributionItems as G}from"./support/attributionUtils.js";import{DefaultsFromMap as $}from"./support/DefaultsFromMap.js";import{defaultHighlightName as B}from"./support/HighlightDefaults.js";import J from"./support/HighlightOptions.js";import K from"./support/LayerViewManager.js";import Q from"./support/RequiredFieldsOptions.js";import{checkWebAssemblyRequirements as X}from"./support/WebAssemblyRequirements.js";import{checkWebGLRequirements as Y}from"./support/WebGLRequirements.js";var ee;let te=class extends(n(m)){static{ee=this}constructor(e){super(e),this._userSpatialReference=null,this.handles=new l,this.updatingHandles=new S,this.allLayerViews=new s({getCollections:()=>this.layerviewCollections,getChildrenFunction:re}),this.animationsEnabled=!0,this.focusRegionEnabled=!1,this.attributionVisible=!0,this.basemapView=null,this.dependencies={popup:void 0},this.displayFilterEnabled=!0,this.fatalError=null,this.graphics=new x,this.typeSpecificPreconditionsReady=!0,this.layerViews=new r,this.magnifier=new I,this.options=new z,this.padding={left:0,top:0,right:0,bottom:0},this.ready=!1,this._readyStateWaitingTask=null,this.type=null,this.scale=null,this.updating=!1,this.initialExtentRequired=!0,this._lowPriorityCursorHandles=new r,this._highPriorityCursorHandles=new r,this.input=new D,this.navigation=new N,this.layerViewManager=null,this.analysisViewManager=null,this.isHeightModelInfoRequired=!1,this.width=null,this.height=null,this.resizing=!1,this.suspended=!1,this.viewEvents=new U(this),this.requiredFieldsOptions=new Q,this._isValid=!1,this._readyCycleForced=!1,this._lockedSpatialReference=null,this._userTimeZone=null,this._lockedTimeZone=null,this._userTimeExtent=null,this._lockedTimeExtent=null,this._glyphMosaic=null,this.theme=null,this.registeredComponents=new g,this.handles.add(f(()=>this.preconditionsReady,e=>{const t=this.ready;if(e?(this._lockedSpatialReference=this.spatialReference,this._lockedTimeZone=this.timeZone,this._lockedTimeExtent=this.timeExtent,ee.views.add(this)):(this._lockedSpatialReference=null,ee.views.remove(this)),this.notifyChange("spatialReference"),!e&&t)this.toolViewManager?.detach(),this.analysisViewManager?.detach(),this.layerViewManager?.clear(),this._glyphMosaic?.dispose(),this._teardown();else if(e&&!t){try{this._startup()}catch(i){return void queueMicrotask(()=>{this.fatalError=new o("view:startup-error","View._startup failed",i)})}this._glyphMosaic=new A(1024,1024,!0),this.analysisViewManager?.attach(),this.toolViewManager.attach()}},w)),this.analyses=new F}initialize(){this.addResolvingPromise(Promise.all([this.loadAsyncDependencies(),this.validate()]).then(()=>(this._isValid=!0,v(()=>this.ready)))),this.basemapView=new H({view:this}),this.layerViewManager=new K({view:this,layerViewFilter:e=>this.layerViewFilter?.(e)??!0,layerViewImporter:{importLayerView:e=>this.importLayerView(e),hasLayerViewModule:e=>this.hasLayerViewModule(e)},layerviewMapping:this._layerToLayerviewMapping}),this.toolViewManager=new W({view:this}),this.selectionManager=new Z({view:this}),this.addHandles([_(()=>"map-content-error"===this.readyState&&!this.spatialReference,()=>{d.getLogger(this).warn("#spatialReference","no spatial reference could be derived from the currently added map layers")}),f(()=>this.initialExtentRequired,e=>this.defaultsFromMap.required={...this.defaultsFromMap.required,extent:e},M),f(()=>this.ready,e=>{this.defaultsFromMap&&(this.defaultsFromMap.viewReady=e)},w),f(()=>this.defaultsFromMapInputSpatialReference(),e=>{this.defaultsFromMap&&(this.defaultsFromMap.inputSpatialReference=e)},M),f(()=>this.defaultsFromMapInputHeightModelInfo(),e=>{this.defaultsFromMap&&(this.defaultsFromMap.inputHeightModelInfo=e)},M)])}get _layerToLayerviewMapping(){return ee._layerToLayerview}static{this._layerToLayerview=[["view.map.basemap.baseLayers","view.basemapView.baseLayerViews"],["view.map.basemap.groundLayers","view.basemapView.groundLayerViews"],["view.map.basemap.referenceLayers","view.basemapView.referenceLayerViews"],["view.map.layers","view.layerViews"]]}destroy(){this.destroyed||(ee.views.remove(this),this.viewEvents.destroy(),this.allLayerViews.destroy(),this.navigation&&(this.navigation.destroy(),this._set("navigation",null)),this.graphics=u(this.graphics),this.analyses=u(this.analyses),this.defaultsFromMap.destroy(),this._set("defaultsFromMap",null),this.analysisViewManager=u(this.analysisViewManager),this.toolViewManager=u(this.toolViewManager),this.layerViewManager=u(this.layerViewManager),this.selectionManager=u(this.selectionManager),this.basemapView=u(this.basemapView),this.layerViews.destroyAll(),this.invalidate(),this.handles.destroy(),this.map=u(this.map),this.updatingHandles.destroy())}_startup(){this._set("ready",!0)}_teardown(){this._set("ready",!1)}whenReady(){return Promise.resolve(this)}toMap(){return d.getLogger(this).error("#toMap()","Not implemented on this instance of View"),null}get activeTool(){return this.toolViewManager?.activeTool}set activeTool(e){this.toolViewManager&&(this.toolViewManager.activeTool=e)}get layerviewCollections(){return[this.basemapView?.baseLayerViews,this.basemapView?.groundLayerViews,this.layerViews,this.basemapView?.referenceLayerViews]}get analyses(){return this._get("analyses")}set analyses(e){this._set("analyses",e)}get animation(){return this._get("animation")}set animation(e){this._set("animation",e)}get attributionItems(){return this.suspended?[]:G(this._get("attributionItems"),this.getAttributionItems())}get center(){return null}get defaultsFromMapSettings(){return{}}get defaultsFromMap(){return new $({required:{tileInfo:!1,heightModelInfo:!1,extent:!1},map:()=>this.map,getSpatialReferenceSupport:(e,t)=>this.getSpatialReferenceSupport(e,t),...this.defaultsFromMapSettings})}get extent(){return this._get("extent")}set extent(e){this._set("extent",e)}get heightModelInfo(){return this.getDefaultHeightModelInfo()}glyphMosaic(){return this._glyphMosaic}get highlights(){return this._get("highlights")??P()}set highlights(e){this._set("highlights",a(e,this._get("highlights"),r.ofType(J)))}get defaultHighlight(){return this.highlights.find(({name:e})=>e===B)}get interacting(){return this.navigating}get navigating(){return!1}get preconditionsReady(){if(this.destroying||this.destroyed)return!1;const{map:e,spatialReference:t}=this;return!(this.fatalError||!this._isValid||this._readyCycleForced||!e||h(e)&&!e.loaded||0===this.width||0===this.height||!t||!this._validateSpatialReference(t)||!this._lockedSpatialReference&&!this.defaultsFromMap?.ready||!this.typeSpecificPreconditionsReady)}get resolution(){return 0}set map(e){e!==this._get("map")&&(e?.destroyed&&(d.getLogger(this).warn("#map","The provided map is already destroyed",{map:e}),e=null),h(e)&&e.load().catch(()=>{}),this.constructed&&!this.destroyed&&(this.forceReadyCycle(),this._lockedSpatialReference=null),this._set("map",e))}get canZoomIn(){return!!this.ready}get canZoomOut(){return!!this.ready}get readyState(){if(this.destroyed)return this._get("readyState");if(!this.map)return"missing-map";if("container"in this&&!this.container)return"missing-container";if(this.fatalError)return"rendering-error";if((this.defaultsFromMap?.ready??!1)&&!this.spatialReference){const e=!("loaded"in this.map)||this.map.loaded,t=this.map.ground.loaded,r=this.map.basemap?.loaded??!0;return e&&r&&t&&!this.map?.allLayers.length?"empty-map":(this._readyStateWaitingTask||(this._readyStateWaitingTask=i(e=>c(has("view-readyState-waiting-delay"),null,e)),this.addHandles(this._readyStateWaitingTask),this.addHandles(this._readyStateWaitingTask,"ready-state-task")),this._readyStateWaitingTask?.finished?"map-content-error":"loading")}return this._readyStateWaitingTask=y(this._readyStateWaitingTask),this.removeHandles("ready-state-task"),this.ready?"ready":"loading"}get spatialReference(){const{_userSpatialReference:e}=this;if(e&&null!==e.vcsWkid)return e;const t=e??this._lockedSpatialReference??this.getWebDocumentSpatialReference()??this.defaultsFromMap?.spatialReference??null,i=this.defaultsFromMap?.combinedHorizontalAndVerticalSpatialReference;return i?.equals(t)?i:t}set spatialReference(e){const t=!L(e,this._get("spatialReference"));this._set("_userSpatialReference",e),t&&(this._set("spatialReference",e),this._spatialReferenceChanged(this.spatialReference))}_spatialReferenceChanged(e){}getWebDocumentSpatialReference(){return null}defaultsFromMapInputSpatialReference(){return this._userSpatialReference??this.getWebDocumentSpatialReference()??(this.ready?this._lockedSpatialReference:null)}defaultsFromMapInputHeightModelInfo(){return this.map?.heightModelInfo??null}get stationary(){return!this.animation&&!this.navigating&&!this.resizing}get timeExtent(){return this._userTimeExtent??this._lockedTimeExtent??this.getDefaultTimeExtent()??null}set timeExtent(e){this._userTimeExtent=e}get timeZone(){return this._userTimeZone??this._lockedTimeZone??this.getDefaultTimeZone()??C}set timeZone(e){this._userTimeZone=e,k(e)||d.getLogger(this).warn("#timeZone",`the parsed value '${e}' may not be a valid IANA time zone`)}get tools(){return this.toolViewManager?.tools}get initialExtent(){return this.defaultsFromMap?.extent}get cursor(){return this.toolViewManager?.cursor??this._highPriorityCursorHandles.at(-1)?.cursor??this._lowPriorityCursorHandles.at(-1)?.cursor??"default"}acquireCursor(e,t="low"){const i="high"===t?this._highPriorityCursorHandles:this._lowPriorityCursorHandles,r={cursor:e},s=p(()=>i.remove(r));return i.add(r),this.addHandles(s),s}get size(){return[this.width,this.height]}get effectiveTheme(){return this.theme??new q}registerComponent(e){this.registeredComponents.add(e)}unregisterComponent(e){this.registeredComponents.delete(e)}whenLayerView(e){return this.layerViewManager?.whenLayerView(e)??Promise.reject()}getAttributionItems(){return this.allLayerViews.items.flatMap(e=>e.attributionItems)}getDefaultHeightModelInfo(){return(this.map&&"heightModelInfo"in this.map?this.map.heightModelInfo:void 0)??this.defaultsFromMap?.heightModelInfo??null}getDefaultTimeZone(){return null}getDefaultTimeExtent(){return null}getSurface(){return null}importLayerView(e){throw new o("view:importLayerView-missing","importLayerView() not implemented")}hasLayerViewModule(e){return!1}async validate(){const e=Y(this.type);if(e)throw this._displayWebGLError(),d.getLogger(this).warn("#validate()",e.message),e;const t=await X();if(t)throw d.getLogger(this).warn("#validate()",t.message),t}async loadAsyncDependencies(){}invalidate(){this._isValid=!1}getSpatialReferenceSupport(){return{constraints:null}}_validateSpatialReference(e){return null!=this.getSpatialReferenceSupport(e)}when(e,t){return this.isResolved()&&!this.ready&&d.getLogger(this).warn("#when()","Calling view.when() while the view is no longer ready but was already resolved once will resolve immediately. Use reactiveUtils.whenOnce(() => view.ready).then(...) instead."),super.when(e,t)}forceReadyCycle(){this.ready&&(_(()=>this.destroyed||!1===this.preconditionsReady,()=>this._readyCycleForced=!1,{once:!0}),this._readyCycleForced=!0)}on(e,t){return super.on(e,t)}addAndActivateTool(e){this.toolViewManager.tools.add(e),this.activeTool=e}tryFatalErrorRecovery(){this.fatalError=null}static{this.views=new r}_displayWebGLError(){const e=document.createElement("div");e.setAttribute("style","display: flex; flex-direction: column; gap: 8px; padding: 20px; height: 100%; justify-content: center; color: black; background: white; font-family: sans-serif;");const t=document.createElement("div");t.innerHTML="Unable to display map. WebGL2 support is required.",t.setAttribute("style","font-size: 24px; font-weight: bold;");const i=document.createElement("div");i.innerHTML="Ensure that your browser and hardware meet the minimum requirements.",i.setAttribute("style","font-size: 18px;");const r=document.createElement("a");r.innerHTML="https://esriurl.com/webgl-faq",r.target="_blank",r.setAttribute("style","font-size: 18px;"),r.href="https://esriurl.com/webgl-faq",e.appendChild(t),e.appendChild(i),e.appendChild(r);const s=this.getSurface();s&&s.appendChild(e)}};e([V()],te.prototype,"_userSpatialReference",void 0),e([V()],te.prototype,"activeTool",null),e([V({readOnly:!0})],te.prototype,"allLayerViews",void 0),e([V({readOnly:!0})],te.prototype,"layerviewCollections",null),e([V(R(F,"analyses"))],te.prototype,"analyses",null),e([V()],te.prototype,"animation",null),e([V()],te.prototype,"animationsEnabled",void 0),e([V()],te.prototype,"focusRegionEnabled",void 0),e([V({readOnly:!0})],te.prototype,"attributionItems",null),e([V()],te.prototype,"attributionVisible",void 0),e([V()],te.prototype,"basemapView",void 0),e([V()],te.prototype,"center",null),e([V()],te.prototype,"defaultsFromMapSettings",null),e([V()],te.prototype,"defaultsFromMap",null),e([V()],te.prototype,"dependencies",void 0),e([V()],te.prototype,"displayFilterEnabled",void 0),e([V({type:T})],te.prototype,"extent",null),e([V()],te.prototype,"fatalError",void 0),e([V(R(x,"graphics"))],te.prototype,"graphics",void 0),e([V({readOnly:!0,type:j})],te.prototype,"heightModelInfo",null),e([V({type:r.ofType(J)})],te.prototype,"highlights",null),e([V({readOnly:!0})],te.prototype,"interacting",null),e([V({constructOnly:!0})],te.prototype,"layerViewFilter",void 0),e([V({readOnly:!0})],te.prototype,"navigating",null),e([V({readOnly:!0})],te.prototype,"preconditionsReady",null),e([V({readOnly:!0})],te.prototype,"typeSpecificPreconditionsReady",void 0),e([V({type:r,readOnly:!0})],te.prototype,"layerViews",void 0),e([V()],te.prototype,"resolution",null),e([V({type:I})],te.prototype,"magnifier",void 0),e([V({nonNullable:!0,type:z})],te.prototype,"options",void 0),e([V({value:null,type:t})],te.prototype,"map",null),e([V()],te.prototype,"padding",void 0),e([V({readOnly:!0})],te.prototype,"ready",void 0),e([V({readOnly:!0})],te.prototype,"canZoomIn",null),e([V({readOnly:!0})],te.prototype,"canZoomOut",null),e([V()],te.prototype,"_readyStateWaitingTask",void 0),e([V({readOnly:!0})],te.prototype,"readyState",null),e([V({type:E})],te.prototype,"spatialReference",null),e([V()],te.prototype,"stationary",null),e([V({type:O})],te.prototype,"timeExtent",null),e([V({type:String,nonNullable:!0})],te.prototype,"timeZone",null),e([V()],te.prototype,"tools",null),e([V()],te.prototype,"toolViewManager",void 0),e([V({readOnly:!0})],te.prototype,"type",void 0),e([V({type:Number})],te.prototype,"scale",void 0),e([V({readOnly:!0})],te.prototype,"updating",void 0),e([V({readOnly:!0})],te.prototype,"initialExtentRequired",void 0),e([V({readOnly:!0})],te.prototype,"initialExtent",null),e([V()],te.prototype,"cursor",null),e([V({readOnly:!0})],te.prototype,"input",void 0),e([V({type:N,nonNullable:!0})],te.prototype,"navigation",void 0),e([V()],te.prototype,"layerViewManager",void 0),e([V()],te.prototype,"analysisViewManager",void 0),e([V()],te.prototype,"selectionManager",void 0),e([V()],te.prototype,"width",void 0),e([V()],te.prototype,"height",void 0),e([V({readOnly:!0})],te.prototype,"resizing",void 0),e([V({value:null,readOnly:!0})],te.prototype,"size",null),e([V({readOnly:!0})],te.prototype,"suspended",void 0),e([V({readOnly:!0})],te.prototype,"viewEvents",void 0),e([V()],te.prototype,"_isValid",void 0),e([V()],te.prototype,"_readyCycleForced",void 0),e([V()],te.prototype,"_lockedSpatialReference",void 0),e([V()],te.prototype,"_userTimeZone",void 0),e([V()],te.prototype,"_lockedTimeZone",void 0),e([V()],te.prototype,"_userTimeExtent",void 0),e([V()],te.prototype,"_lockedTimeExtent",void 0),e([V({type:q})],te.prototype,"theme",void 0),e([V({readOnly:!0,type:q})],te.prototype,"effectiveTheme",null),e([V({readOnly:!0})],te.prototype,"registeredComponents",void 0),te=ee=e([b("esri.views.View")],te);const ie=globalThis.$arcgis;function re(e){return e.layerViews}ie&&!ie.views&&Object.defineProperty(ie,"views",{configurable:!1,enumerable:!0,writable:!1,value:te.views});export{te as default};