@arcgis/core 5.1.0-next.83 → 5.1.0-next.85

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 (296) hide show
  1. package/assets/esri/core/workers/RemoteClient.js +1 -1
  2. package/assets/esri/core/workers/chunks/{e89dc473f46a5584d2ef.js → 004af103a94d21cb4889.js} +3 -3
  3. package/assets/esri/core/workers/chunks/53d13e13d8729bd4dcf2.js +1 -0
  4. package/assets/esri/core/workers/chunks/{45c83eb7c2a06166e3b0.js → 56717ff315c6ec874142.js} +1 -1
  5. package/assets/esri/core/workers/chunks/{1e2c0c6d724f7639d4c1.js → 713ab619060bd5087479.js} +13 -13
  6. package/assets/esri/core/workers/chunks/{a9b5ce00323cd5574bf7.js → 7160e3e7340beb7fdb42.js} +1 -1
  7. package/assets/esri/core/workers/chunks/79eca9ccd4dc52da1d59.js +1 -0
  8. package/assets/esri/core/workers/chunks/{bd8cb64b6e08839398f3.js → c7da0981822182e15f3a.js} +1 -1
  9. package/assets/esri/core/workers/chunks/f9fe3c9867b0bdb2aec6.js +596 -0
  10. package/assets/esri/themes/base/widgets/_BatchAttributeForm.scss +6 -0
  11. package/assets/esri/themes/dark/main.css +1 -1
  12. package/assets/esri/themes/light/main.css +1 -1
  13. package/assets/esri/themes/light/view.css +1 -1
  14. package/assets/esri/views/3d/analysis/ShadowCast/t9n/ShadowCastAnalysis.json +1 -1
  15. package/assets/esri/views/3d/analysis/ShadowCast/t9n/ShadowCastAnalysis_en.json +1 -1
  16. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ar.json +1 -1
  17. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_bg.json +1 -1
  18. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_bs.json +1 -1
  19. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ca.json +1 -1
  20. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_cs.json +1 -1
  21. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_da.json +1 -1
  22. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_de.json +1 -1
  23. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_el.json +1 -1
  24. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_es.json +1 -1
  25. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_et.json +1 -1
  26. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_fi.json +1 -1
  27. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_fr.json +1 -1
  28. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_he.json +1 -1
  29. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_hr.json +1 -1
  30. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_hu.json +1 -1
  31. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_id.json +1 -1
  32. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_it.json +1 -1
  33. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ja.json +1 -1
  34. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ko.json +1 -1
  35. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_lt.json +1 -1
  36. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_lv.json +1 -1
  37. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_nl.json +1 -1
  38. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_no.json +1 -1
  39. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_pl.json +1 -1
  40. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_pt-BR.json +1 -1
  41. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_pt-PT.json +1 -1
  42. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ro.json +1 -1
  43. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ru.json +1 -1
  44. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sk.json +1 -1
  45. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sl.json +1 -1
  46. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sr.json +1 -1
  47. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sv.json +1 -1
  48. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_th.json +1 -1
  49. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_tr.json +1 -1
  50. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_uk.json +1 -1
  51. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_vi.json +1 -1
  52. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_zh-CN.json +1 -1
  53. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_zh-HK.json +1 -1
  54. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_zh-TW.json +1 -1
  55. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ar.json +1 -1
  56. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_bg.json +1 -1
  57. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_bs.json +1 -1
  58. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ca.json +1 -1
  59. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_cs.json +1 -1
  60. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_da.json +1 -1
  61. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_de.json +1 -1
  62. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_el.json +1 -1
  63. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_es.json +1 -1
  64. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_et.json +1 -1
  65. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_fi.json +1 -1
  66. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_fr.json +1 -1
  67. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_he.json +1 -1
  68. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_hr.json +1 -1
  69. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_hu.json +1 -1
  70. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_id.json +1 -1
  71. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_it.json +1 -1
  72. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ja.json +1 -1
  73. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ko.json +1 -1
  74. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_lt.json +1 -1
  75. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_lv.json +1 -1
  76. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_nl.json +1 -1
  77. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_no.json +1 -1
  78. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_pl.json +1 -1
  79. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_pt-BR.json +1 -1
  80. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_pt-PT.json +1 -1
  81. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ro.json +1 -1
  82. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ru.json +1 -1
  83. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sk.json +1 -1
  84. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sl.json +1 -1
  85. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sr.json +1 -1
  86. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sv.json +1 -1
  87. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_th.json +1 -1
  88. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_tr.json +1 -1
  89. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_uk.json +1 -1
  90. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_vi.json +1 -1
  91. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_zh-CN.json +1 -1
  92. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_zh-HK.json +1 -1
  93. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_zh-TW.json +1 -1
  94. package/chunks/EdgeShader.glsl.js +13 -9
  95. package/chunks/Fog.glsl.js +1 -1
  96. package/chunks/GlowBlur.glsl.js +9 -13
  97. package/chunks/GlowComposition.glsl.js +10 -10
  98. package/chunks/ShadowCastVisualize.glsl.js +10 -10
  99. package/config.js +1 -1
  100. package/core/arrayUtils.js +1 -1
  101. package/core/has.js +1 -1
  102. package/core/screenUtils.js +1 -1
  103. package/form/types.d.ts +1 -1
  104. package/geohash/GeohashCell.js +1 -1
  105. package/geohash/GeohashTree.js +1 -1
  106. package/kernel.js +1 -1
  107. package/layers/scene/ModelFileInfo.js +1 -1
  108. package/layers/scene/modelQuerySupport.js +1 -1
  109. package/package.json +1 -1
  110. package/popup/Features.d.ts +10 -0
  111. package/popup/Features.js +1 -1
  112. package/rest/knowledgeGraph/GraphQueryStreamingResult.d.ts +4 -1
  113. package/support/revision.js +1 -1
  114. package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
  115. package/views/2d/FrameTask.js +1 -1
  116. package/views/2d/LabelManager.js +1 -1
  117. package/views/2d/engine/DisplayObject.js +1 -1
  118. package/views/2d/engine/Stage.js +1 -1
  119. package/views/2d/engine/flow/FlowContainer.js +1 -1
  120. package/views/2d/engine/flow/FlowView2D.js +1 -1
  121. package/views/2d/engine/flow/styles/AFlowResources.js +1 -1
  122. package/views/2d/engine/flow/styles/Imagery.js +1 -1
  123. package/views/2d/engine/flow/styles/Particles.js +1 -1
  124. package/views/2d/engine/flow/styles/Stack.js +1 -1
  125. package/views/2d/engine/flow/styles/Streamlines.js +1 -1
  126. package/views/2d/engine/transitions/FadeTransition.js +1 -1
  127. package/views/2d/engine/vectorTiles/VTLPainter3D.js +1 -1
  128. package/views/2d/engine/vectorTiles/decluttering/SymbolDeclutterer.js +1 -1
  129. package/views/2d/engine/vectorTiles/decluttering/SymbolFader.js +1 -1
  130. package/views/2d/engine/vectorTiles/decluttering/SymbolRepository.js +1 -1
  131. package/views/2d/engine/webgl/AFeatureTile.js +1 -1
  132. package/views/2d/engine/webgl/AttributeStoreView.js +1 -1
  133. package/views/2d/engine/webgl/FeatureTile.js +1 -1
  134. package/views/2d/engine/webgl/ResizableUint32Array.js +2 -0
  135. package/views/2d/engine/webgl/TileCpuState.js +2 -0
  136. package/views/2d/engine/webgl/TileGpuState.js +2 -0
  137. package/views/2d/engine/webgl/cpuMapped/CpuBuffer.js +2 -0
  138. package/views/2d/engine/webgl/cpuMapped/CpuMeshData.js +2 -0
  139. package/views/2d/engine/webgl/cpuMapped/GpuMeshState.js +2 -0
  140. package/views/2d/engine/webgl/effects/HittestEffect.js +1 -1
  141. package/views/2d/engine/webgl/shaderGraph/techniques/TechniqueDebugContainer.js +1 -1
  142. package/views/2d/engine/webgl/shaderGraph/techniques/TestDisplayObject.js +1 -1
  143. package/views/2d/engine/webgl/shaderGraph/techniques/tile/TileDebugInfoTechnique.js +1 -1
  144. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  145. package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
  146. package/views/2d/layers/GeoRSSLayerView2D.js +1 -1
  147. package/views/2d/layers/GraphicsLayerView2D.js +1 -1
  148. package/views/2d/layers/ImageryLayerView2D.js +1 -1
  149. package/views/2d/layers/ImageryTileLayerView2D.js +1 -1
  150. package/views/2d/layers/KMLLayerView2D.js +1 -1
  151. package/views/2d/layers/LayerView2D.js +1 -1
  152. package/views/2d/layers/MapNotesLayerView2D.js +1 -1
  153. package/views/2d/layers/MediaLayerView2D.js +1 -1
  154. package/views/2d/layers/RouteLayerView2D.js +1 -1
  155. package/views/2d/layers/TileLayerView2D.js +1 -1
  156. package/views/2d/layers/features/FeatureContainer.js +1 -1
  157. package/views/2d/layers/features/FeaturePipelineWorker.js +1 -1
  158. package/views/2d/layers/features/FeatureTilePresentStrategy.js +2 -0
  159. package/views/2d/layers/features/Processor.js +1 -1
  160. package/views/2d/layers/features/RenderState.js +1 -1
  161. package/views/2d/layers/features/aggregation/AAggregateSpatialIndex.js +1 -1
  162. package/views/2d/layers/features/aggregation/GeohashSpatialIndex.js +1 -1
  163. package/views/2d/layers/features/aggregation/GridCell.js +1 -1
  164. package/views/2d/layers/features/aggregation/GridIndexCell.js +2 -0
  165. package/views/2d/layers/features/aggregation/GridSpatialIndex.js +1 -1
  166. package/views/2d/layers/features/layerAdapters/CatalogFootprintLayerAdapter.js +1 -1
  167. package/views/2d/layers/features/layerAdapters/FeatureLayerAdapter.js +1 -1
  168. package/views/2d/layers/features/layerAdapters/InMemoryLayerAdapter.js +1 -1
  169. package/views/2d/layers/features/layerAdapters/KnowledgeGraphSublayerAdapter.js +1 -1
  170. package/views/2d/layers/features/layerAdapters/OGCFeatureLayerAdapter.js +1 -1
  171. package/views/2d/layers/features/layerAdapters/OrientedImageryLayerAdapter.js +1 -1
  172. package/views/2d/layers/features/layerAdapters/ParquetLayerAdapter.js +1 -1
  173. package/views/2d/layers/features/layerAdapters/StreamLayerAdapter.js +1 -1
  174. package/views/2d/layers/features/layerAdapters/SubtypeGroupLayerAdapter.js +1 -1
  175. package/views/2d/layers/features/processor/AProcessorStrategy.js +1 -1
  176. package/views/2d/layers/features/processor/BinningStrategy.js +1 -1
  177. package/views/2d/layers/features/processor/ClusterStrategy.js +1 -1
  178. package/views/2d/layers/features/processor/FeatureUpdateStrategy.js +1 -1
  179. package/views/2d/layers/features/processor/TrackStrategy.js +1 -1
  180. package/views/2d/layers/features/sources/FeatureSourceMessage.js +1 -1
  181. package/views/2d/layers/features/sources/strategies/chunks/ASourceChunk.js +1 -1
  182. package/views/2d/layers/features/support/Hashed.js +2 -0
  183. package/views/2d/layers/graphics/AGraphicContainer.js +1 -1
  184. package/views/2d/layers/graphics/GraphicStore.js +1 -1
  185. package/views/2d/layers/graphics/GraphicsView2D.js +1 -1
  186. package/views/2d/layers/imagery/ImageryView2D.js +1 -1
  187. package/views/2d/layers/support/vectorTileDebugUtils.js +1 -1
  188. package/views/2d/support/hitTestUtils.js +1 -1
  189. package/views/2d/tiling/FeatureTileSubscriptionManager.js +1 -1
  190. package/views/2d/tiling/TileCombinedCoverage.js +2 -0
  191. package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
  192. package/views/3d/analysis/LineOfSight/LineOfSightTool2.js +2 -0
  193. package/views/3d/analysis/LineOfSightAnalysisView3D.js +1 -1
  194. package/views/3d/analysis/ShadowCast/ShadowCastTooltip.js +1 -1
  195. package/views/3d/analysis/ShadowCastAnalysisView3D.js +1 -1
  196. package/views/3d/analysis/Viewshed/ViewshedEditTool.js +2 -0
  197. package/views/3d/analysis/Viewshed/ViewshedSubTool.js +1 -1
  198. package/views/3d/analysis/Viewshed/ViewshedTool.js +1 -1
  199. package/views/3d/analysis/Viewshed/ViewshedTool2.js +2 -0
  200. package/views/3d/analysis/Viewshed/viewshedSubToolUtils.js +2 -0
  201. package/views/3d/analysis/Viewshed/viewshedToolUtils.js +1 -1
  202. package/views/3d/analysis/ViewshedAnalysisView3D.js +1 -1
  203. package/views/3d/environment/CloudyWeather.js +1 -1
  204. package/views/3d/environment/FoggyWeather.js +1 -1
  205. package/views/3d/environment/RainyWeather.js +1 -1
  206. package/views/3d/environment/SnowyWeather.js +1 -1
  207. package/views/3d/environment/SunnyWeather.js +1 -1
  208. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  209. package/views/3d/layers/graphics/tessellationUtils.js +1 -1
  210. package/views/3d/layers/i3s/I3SIndex.js +1 -1
  211. package/views/3d/support/gaussianSplatting/GaussianSplatTextureAtlas.js +1 -1
  212. package/views/3d/webgl/ManagedColorAttachment.js +1 -1
  213. package/views/3d/webgl/ManagedDepthAttachment.js +1 -1
  214. package/views/3d/webgl-engine/collections/Component/Material/ComponentTechnique.js +1 -1
  215. package/views/3d/webgl-engine/core/FBOCache.js +1 -1
  216. package/views/3d/webgl-engine/core/FBOCacheFormats.js +1 -1
  217. package/views/3d/webgl-engine/core/FBOCacheUsage.js +1 -1
  218. package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
  219. package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js +11 -11
  220. package/views/3d/webgl-engine/effects/focusArea/FocusAreaMaskNode.js +1 -1
  221. package/views/3d/webgl-engine/effects/fog/Fog.glsl.js +1 -1
  222. package/views/3d/webgl-engine/effects/fog/Fog.js +1 -1
  223. package/views/3d/webgl-engine/effects/geometry/RenderOccludedRenderNode.js +1 -1
  224. package/views/3d/webgl-engine/effects/glow/Glow.js +2 -0
  225. package/views/3d/webgl-engine/effects/glow/GlowBlur.glsl.js +1 -1
  226. package/views/3d/webgl-engine/effects/glow/GlowComposition.glsl.js +1 -1
  227. package/views/3d/webgl-engine/effects/raymarching/{RayDistanceFalloff.glsl.js → DistanceFalloff.glsl.js} +2 -2
  228. package/views/3d/webgl-engine/lib/CutFillComputationRenderNode.js +1 -1
  229. package/views/3d/webgl-engine/lib/CutFillVisualizationRenderNode.js +1 -1
  230. package/views/3d/webgl-engine/lib/GPUPointOcclusionQuery.js +1 -1
  231. package/views/3d/webgl-engine/lib/MainFramebuffer.js +1 -1
  232. package/views/3d/webgl-engine/lib/ManagedTexture.js +1 -1
  233. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  234. package/views/3d/webgl-engine/lib/ShadowAccumulator.js +1 -1
  235. package/views/3d/webgl-engine/lib/ShadowCastRenderer.js +1 -1
  236. package/views/3d/webgl-engine/lib/ShadowMap.js +1 -1
  237. package/views/3d/webgl-engine/lib/StencilUtils.js +1 -1
  238. package/views/3d/webgl-engine/lib/ViewshedShadowMap.js +1 -1
  239. package/views/3d/webgl-engine/lib/edgeRendering/EdgeShader.glsl.js +1 -1
  240. package/views/3d/webgl-engine/lib/verticalOffsetUtils.js +1 -1
  241. package/views/3d/webgl-engine/materials/MeasurementArrowMaterial.js +1 -1
  242. package/views/3d/webgl-engine/materials/PathTechnique.js +1 -1
  243. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  244. package/views/3d/webgl-engine/shaders/ColorMaterialTechnique.js +1 -1
  245. package/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js +1 -1
  246. package/views/3d/webgl-engine/shaders/ImageMaterialTechnique.js +1 -1
  247. package/views/3d/webgl-engine/shaders/LineMarkerTechnique.js +1 -1
  248. package/views/3d/webgl-engine/shaders/MeasurementArrowTechnique.js +1 -1
  249. package/views/3d/webgl-engine/shaders/MeasurementArrowTechniqueConfiguration.js +1 -1
  250. package/views/3d/webgl-engine/shaders/NativeLineTechnique.js +1 -1
  251. package/views/3d/webgl-engine/shaders/PatternTechnique.js +1 -1
  252. package/views/3d/webgl-engine/shaders/PointRendererTechnique.js +1 -1
  253. package/views/3d/webgl-engine/shaders/RibbonLineTechnique.js +1 -1
  254. package/views/3d/webgl-engine/shaders/ScreenSpacePassAtmosphere.glsl.js +1 -7
  255. package/views/3d/webgl-engine/shaders/ShadowCastVisualizeTechnique.js +1 -1
  256. package/views/3d/webgl-engine/shaders/ShadowCastVisualizeTechniqueConfiguration.js +1 -1
  257. package/views/VideoView.js +1 -1
  258. package/views/View2D.js +1 -1
  259. package/views/draw/support/GraphicMover.js +1 -1
  260. package/views/support/rasterHitTestUtils.js +1 -1
  261. package/views/support/waitForResources.js +1 -1
  262. package/views/video/VideoOperationalDataView.js +1 -1
  263. package/views/webgl/FramebufferObject.js +1 -1
  264. package/views/webgl/RenderingContext.js +1 -1
  265. package/views/webgl/Texture.js +1 -1
  266. package/views/webgl/textureUtils.js +1 -1
  267. package/widgets/BatchAttributeForm/css.js +1 -1
  268. package/widgets/BatchAttributeForm/inputs/UtilityNetworkAssociationsElementInput.d.ts +61 -0
  269. package/widgets/BatchAttributeForm/inputs/UtilityNetworkAssociationsElementInput.js +2 -0
  270. package/widgets/BatchAttributeForm/inputs/support/createBatchFormInputs.js +1 -1
  271. package/widgets/BatchAttributeForm/inputs/support/inputUtils.js +1 -1
  272. package/widgets/BatchAttributeForm/inputs/types.d.ts +9 -4
  273. package/widgets/BatchAttributeForm/templates/UtilityNetworkAssociationsElementTemplate.js +2 -0
  274. package/widgets/BatchAttributeForm/templates/support/createBatchFormTemplate.js +1 -1
  275. package/widgets/BatchAttributeForm/templates/support/hashElementTemplate.js +1 -1
  276. package/widgets/BatchAttributeForm/templates/support/templateUtils.js +1 -1
  277. package/widgets/BatchAttributeForm.js +1 -1
  278. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  279. package/widgets/FeatureTable/Grid/Column.d.ts +17 -2
  280. package/widgets/FeatureTable/Grid/Column.js +1 -1
  281. package/widgets/FeatureTable/Grid/Grid.js +1 -1
  282. package/widgets/FeatureTable/Grid/GridViewModel.js +1 -1
  283. package/widgets/FeatureTable/Grid/GroupColumn.d.ts +7 -1
  284. package/widgets/FeatureTable/Grid/GroupColumn.js +1 -1
  285. package/widgets/FeatureTable/support/ColumnTemplateBase.d.ts +9 -1
  286. package/widgets/FeatureTable/support/ColumnTemplateBase.js +1 -1
  287. package/widgets/FeatureTable/support/types.d.ts +8 -0
  288. package/widgets/FeatureTable.js +1 -1
  289. package/assets/esri/core/workers/chunks/38f1a86b8dd9ee684ee5.js +0 -596
  290. package/assets/esri/core/workers/chunks/8f4cd30ce23e41c1a42c.js +0 -1
  291. package/assets/esri/core/workers/chunks/cbf1a03f54bd8d2a2b47.js +0 -1
  292. package/views/2d/engine/webgl/PooledUint32Array.js +0 -2
  293. package/views/2d/engine/webgl/cpuMapped/Buffer.js +0 -2
  294. package/views/2d/engine/webgl/cpuMapped/MappedMesh.js +0 -2
  295. package/views/3d/webgl-engine/effects/glow/GlowRenderNode.js +0 -2
  296. package/views/3d/webgl-engine/shaders/sources/edgeRenderer/DistanceFalloff.glsl.js +0 -4
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import i from"../../../../core/Accessor.js";import{isSome as t}from"../../../../core/arrayUtils.js";import{createTask as a}from"../../../../core/asyncUtils.js";import{cyclicalDegrees as n,Cyclical as o}from"../../../../core/Cyclical.js";import{handlesGroup as r}from"../../../../core/handleUtils.js";import"../../../../core/has.js";import{deg2rad as s}from"../../../../core/mathUtils.js";import{abortMaybe as l,destroyMaybe as p}from"../../../../core/maybe.js";import{after as h,throwIfAborted as u}from"../../../../core/promiseUtils.js";import{watch as d,syncAndInitial as c,initial as v}from"../../../../core/reactiveUtils.js";import{property as m,subclass as g}from"../../../../core/accessorSupport/decorators.js";import{sub as f,len as M,dot as b}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as _}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{tryProject as w}from"../../../../geometry/projectionUtils.js";import{viewingModeFromString as O}from"../../../ViewingMode.js";import{viewshedToolManipulatorConfiguration as V}from"./ViewshedConfiguration.js";import{ViewshedFieldOfViewManipulation as y,isSideHorizontal as D,flipSide as T}from"./ViewshedFieldOfViewManipulation.js";import{ViewshedScaleOrientManipulation as H}from"./ViewshedScaleOrientManipulation.js";import{ViewshedObserverManipulator as C}from"./viewshedToolManipulatorUtils.js";import{discRadiusSmall as j}from"../../interactive/editingTools/manipulations/config.js";import{MoveManipulation as F}from"../../interactive/editingTools/manipulations/MoveManipulation.js";import{resetProperties as S,dragManipulatedObject as A}from"../../../interactive/dragEventPipeline.js";import{EditGeometryOperations as P}from"../../../interactive/editGeometry/EditGeometryOperations.js";const k=Symbol("dragHandles"),x=Symbol("hideManipulators"),E=Symbol("hideFoVManipulators"),z=Symbol("hideObserverManipulator");let U=class extends i{constructor(e){super(e),this._moveManipulation=null,this._observerManipulator=null,this._fieldOfViewManipulation=null,this._scaleOrientManipulation=null,this._forceHoveringTask=null,this._forceHoveringTestPromise=null,this._grabbing=!1,this.viewshedComputedData=null}initialize(){this._moveManipulation=this._createMoveManipulation(),this._fieldOfViewManipulation=new y({view:this.view,tool:this.parentTool}),this._scaleOrientManipulation=new H({view:this.view,tool:this.parentTool}),this._observerManipulator=new C(this.view,this.parentTool),this.addHandles([d(()=>this.elevationAlignedObserverRenderSpace,e=>{null!=e&&(this._moveManipulation.renderLocation=e,this._observerManipulator.renderLocation=e)},c),d(()=>this.viewshedComputedData?.heading,e=>{e&&(this._moveManipulation.angle=s(90-e))},v),d(()=>{const{viewshedComputedData:e}=this;return{viewshedComputedData:e,observer:this.elevationAlignedObserverRenderSpace}},({viewshedComputedData:e,observer:i},a)=>{this._grabbing&&i!==a?.observer||(this.removeHandles(k),e?.valid&&this.addHandles([this._buildObserverDragPipeline(e),this._buildFOVDragPipeline(e),this._buildScaleOrientDragPipeline(e)].filter(t),k))},v),d(()=>{const e=this.viewshedComputedData;return e?.valid?{viewshedCompData:e,target:e.elevationAlignedTargetRenderSpace,hFOV:e.horizontalFieldOfView,vFOV:e.verticalFieldOfView}:null},e=>{null!=e&&this._fieldOfViewManipulation.updateManipulatorsTransform(e.viewshedCompData)},v),d(()=>{const e=this.viewshedComputedData;return e?.valid?{viewshedCompData:e,hFOV:e.horizontalFieldOfView,vFOV:e.verticalFieldOfView,tilt:e.tilt}:null},e=>{null!=e&&this._fieldOfViewManipulation.updateManipulatorVisuals(e.viewshedCompData)},v),d(()=>{const e=this.analysisViewData.visible&&(this.viewshedComputedData?.valid??!1),i=this.parentTool.selectedViewshedComputedData===this.viewshedComputedData;return{fovManipulationAvailable:e&&!this.parentTool.isPlacingTarget,nonFOVManipulationAvailable:e&&(!this.parentTool.creating||i)}},({fovManipulationAvailable:e,nonFOVManipulationAvailable:i})=>{this._moveManipulation.available=i,this._scaleOrientManipulation.available=i,this._observerManipulator.available=i,this._fieldOfViewManipulation.available=e},v),d(()=>{const e=this.viewshedComputedData;if(!e?.valid)return null;const{observer:i,target:t,verticalFieldOfView:a,horizontalFieldOfView:n}=e;return{viewshedCompData:e,observer:i,target:t,verticalFieldOfView:a,horizontalFieldOfView:n}},e=>{null!=e&&this._scaleOrientManipulation.updateManipulators(e.viewshedCompData)},v)]);const e=e=>{const i=this.analysisViewData;this.addHandles([e.events.on("focus-changed",()=>{const e=this._someManipulatorHovering();e&&this.parentTool.subToolHandles.forEach(({subTool:e})=>{e._resetHoveringTask()}),this._someManipulatorSelected()||e||(this._forceHoveringTask=a(async e=>{await(this._forceHoveringTestPromise??h(V.hoverTimeoutMilliseconds,e)),u(e),this._forceHoveringTask=null,this._updateManipulatorVisibility()}))}),e.events.on("grab-changed",t=>{this._grabbing="start"===t.action,"end"===t.action&&i.tool?.updateInteractionVisualsVisibility(),this.parentTool.subToolHandles.forEach(({subTool:e})=>{e!==this&&e._setInteractive(!this._grabbing)}),this._setInteractive(i=>i.hasManipulator(e)||!this._grabbing)}),e.events.on("drag",e=>{"start"===e.action&&i.tool?.updateInteractionVisualsVisibility()})])};this._forEachManipulator(e)}destroy(){this._forceHoveringTask=l(this._forceHoveringTask),this._moveManipulation=p(this._moveManipulation),this._fieldOfViewManipulation=p(this._fieldOfViewManipulation),this._scaleOrientManipulation=p(this._scaleOrientManipulation),this.parentTool.manipulators.remove(this._observerManipulator),this._observerManipulator=p(this._observerManipulator)}get updating(){return null!=this._forceHoveringTask&&!this._forceHoveringTask.finished}get viewshed(){return this.viewshedComputedData?.viewshed}get grabbing(){return this._grabbing}get observer(){return this.viewshed?.observer}set observer(e){const i=this.viewshed;null!=i&&(i.observer=e)}get elevationAlignedObserverRenderSpace(){return this.viewshedComputedData?.elevationAlignedObserverRenderSpace}get discManipulator(){return this._moveManipulation.xyManipulation.discManipulator}get moveInteractionState(){const{dragging:e,grabbing:i}=this._moveManipulation;return{dragging:e,grabbing:i}}get scaleOrientInteractionState(){const{dragging:e,grabbing:i}=this._scaleOrientManipulation;return{dragging:e,grabbing:i}}_setInteractive(e){const i="boolean"==typeof e;this._forEachManipulation(t=>t.interactive=i?e:e(t))}onManipulatorSelectionChanged(){if(this._updateManipulatorVisibility(),!this._someManipulatorSelected()){this.analysisViewData.selectedViewshed===this.viewshed&&(this.analysisViewData.selectedViewshed=null),this._resetHoveringTask()}}hasManipulator(e){let i=!1;return this._forEachManipulator(t=>{i=i||t===e}),i}_someManipulatorSelected(){return this._moveManipulation.selected||this._fieldOfViewManipulation.selected||this._scaleOrientManipulation.selected}_someManipulatorHovering(){return this._moveManipulation.hovering||this._fieldOfViewManipulation.hovering||this._scaleOrientManipulation.hovering}_createMoveManipulation(){return new F({view:this.view,tool:this.parentTool,snapToScene:!1,xyAvailable:!0,xyAxisAvailable:!0,zAvailable:!0,radius:j})}_buildObserverDragPipeline(e){const i={mode:"absolute-height",offset:0},t=e.observer;if(null==t)return null;const a=this.view.spatialReference;return this._moveManipulation.createDragPipeline((e,i,n,o,r)=>{o=o.next(S(this,["observer"]));const s=w(t,a);if(null==s)return{steps:n,cancel:o};const l=P.fromGeometry(s,O(this.view.viewingMode));return{steps:n.next(A({operations:l})).next(e=>(this.observer=l.data.geometry,e)),cancel:o}},i,a,void 0)}_buildFOVDragPipeline(e){let i=0,t=0;return this._fieldOfViewManipulation.createDragPipeline((a,o,r)=>{if(null==e)return{steps:o,cancel:r};const s=e.viewshed;let l=null;r=r.next(S(s,["horizontalFieldOfView","verticalFieldOfView"]));return{steps:o.next(a=>{"start"===a.action&&(l=null,i=e.horizontalFieldOfView,t=e.verticalFieldOfView);const o=a.deltaAngle;if(null==l&&0!==o){const e="bottom"===a.side||"left"===a.side?o>0:o<0;l=D(a.side)?0===i&&e||360===i&&!e:0===t&&e}const r=l?T(a.side):a.side;let p=0;switch(r){case"left":p=i/2-o;break;case"right":p=i/2+o;break;case"top":p=t+2*o;break;case"bottom":p=t-2*o}return D(r)?(p=n.normalize(p),p=p>270?0:p>180?180:p,s.horizontalFieldOfView=2*p):s.verticalFieldOfView=p,a}),cancel:r}},e)}_buildScaleOrientDragPipeline(e){let i=0,t=0;const a=(i,t)=>(a,n,o)=>{if(null==e)return{steps:n,cancel:o};const r=e.viewshed;return o=o.next(S(r,[i])),{steps:n=n.next(t(r,e)),cancel:o}};return r([this._scaleOrientManipulation.createHeadingDragPipeline(a("heading",(i,a)=>a=>("start"===a.action&&(t=e.heading),i.heading=n.normalize(t+a.deltaAngle),a)),e),this._scaleOrientManipulation.createTiltDragPipeline(a("tilt",(t,a)=>a=>{"start"===a.action&&(i=e.tilt);let n=i+a.deltaAngle;return n<-90?n=180:n>270&&(n=0),t.tilt=I.clamp(n),a}),e),this._scaleOrientManipulation.createDistanceDragPipeline(a("farDistance",(e,i)=>t=>{const a=f(R,t.renderEnd,i.elevationAlignedObserverRenderSpace),n=M(a)*i.metersPerUnit,o=b(a,i.targetDirection)<0?V.scaleOrientMinDistance:n;return e.farDistance=o,t}),e)])}_updateManipulatorVisibility(){const e=this._someManipulatorSelected(),i=null!=this._forceHoveringTask||this._someManipulatorHovering(),t=this._fieldOfViewManipulation.hovering,a=this.parentTool.creating;let n=[];const o=e=>{n.push(e.disableDisplay())};e||!a&&i?this.removeHandles(x):(this._scaleOrientManipulation.forEachManipulator(o),this._moveManipulation.forEachManipulator(o),this.addHandles(n,x),n=[]),e||!a&&i||a&&t?this.removeHandles(E):(this._fieldOfViewManipulation.forEachManipulator(o),this.addHandles(n,E)),e||!a?this.removeHandles(z):this.addHandles(this._observerManipulator.disableDisplay(),z)}_resetHoveringTask(){this._forceHoveringTask=l(this._forceHoveringTask),this._updateManipulatorVisibility()}_forEachManipulator(e){this._forEachManipulation(i=>{i.forEachManipulator(e)}),e(this._observerManipulator)}_forEachManipulation(e){e(this._moveManipulation),e(this._fieldOfViewManipulation),e(this._scaleOrientManipulation)}get test(){return{moveManipulation:this._moveManipulation,fieldOfViewManipulation:this._fieldOfViewManipulation,scaleOrientManipulation:this._scaleOrientManipulation,viewshedComputedData:this.viewshedComputedData,setHoveringTimeoutPromise:e=>{this._forceHoveringTestPromise=e}}}};e([m({constructOnly:!0})],U.prototype,"analysis",void 0),e([m({constructOnly:!0})],U.prototype,"analysisViewData",void 0),e([m({constructOnly:!0})],U.prototype,"parentTool",void 0),e([m({constructOnly:!0,nonNullable:!0})],U.prototype,"view",void 0),e([m()],U.prototype,"_forceHoveringTask",void 0),e([m()],U.prototype,"updating",null),e([m()],U.prototype,"viewshed",null),e([m()],U.prototype,"_grabbing",void 0),e([m()],U.prototype,"grabbing",null),e([m()],U.prototype,"viewshedComputedData",void 0),e([m()],U.prototype,"observer",null),e([m()],U.prototype,"elevationAlignedObserverRenderSpace",null),U=e([g("esri.views.3d.analysis.Viewshed.ViewshedSubTool")],U);const R=_(),I=new o(0,180);export{U as ViewshedSubTool};
2
+ import{__decorate as e}from"tslib";import i from"../../../../core/Accessor.js";import{isSome as t}from"../../../../core/arrayUtils.js";import{createTask as a}from"../../../../core/asyncUtils.js";import{cyclicalDegrees as n,Cyclical as o}from"../../../../core/Cyclical.js";import{handlesGroup as r}from"../../../../core/handleUtils.js";import"../../../../core/has.js";import{deg2rad as s}from"../../../../core/mathUtils.js";import{abortMaybe as l,destroyMaybe as p}from"../../../../core/maybe.js";import{after as h,throwIfAborted as u}from"../../../../core/promiseUtils.js";import{watch as d,syncAndInitial as c,initial as v}from"../../../../core/reactiveUtils.js";import{property as m,subclass as g}from"../../../../core/accessorSupport/decorators.js";import{sub as f,len as M,dot as b}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as _}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{tryProject as w}from"../../../../geometry/projectionUtils.js";import{viewingModeFromString as O}from"../../../ViewingMode.js";import{viewshedToolManipulatorConfiguration as V}from"./ViewshedConfiguration.js";import{ViewshedFieldOfViewManipulation as y,isSideHorizontal as T,flipSide as D}from"./ViewshedFieldOfViewManipulation.js";import{ViewshedScaleOrientManipulation as H}from"./ViewshedScaleOrientManipulation.js";import{ViewshedObserverManipulator as C}from"./viewshedToolManipulatorUtils.js";import{discRadiusSmall as j}from"../../interactive/editingTools/manipulations/config.js";import{MoveManipulation as F}from"../../interactive/editingTools/manipulations/MoveManipulation.js";import{resetProperties as S,dragManipulatedObject as A}from"../../../interactive/dragEventPipeline.js";import{EditGeometryOperations as P}from"../../../interactive/editGeometry/EditGeometryOperations.js";const k=Symbol("dragHandles"),x=Symbol("hideManipulators"),E=Symbol("hideFoVManipulators"),z=Symbol("hideObserverManipulator");let U=class extends i{constructor(e){super(e),this._moveManipulation=null,this._observerManipulator=null,this._fieldOfViewManipulation=null,this._scaleOrientManipulation=null,this._forceHoveringTask=null,this._forceHoveringTestPromise=null,this._grabbing=!1,this.viewshedComputedData=null}initialize(){this._moveManipulation=this._createMoveManipulation(),this._fieldOfViewManipulation=new y({view:this.view,tool:this.parentTool}),this._scaleOrientManipulation=new H({view:this.view,tool:this.parentTool}),this._observerManipulator=new C(this.view,this.parentTool),this.addHandles([d(()=>this.elevationAlignedObserverRenderSpace,e=>{null!=e&&(this._moveManipulation.renderLocation=e,this._observerManipulator.renderLocation=e)},c),d(()=>this.viewshedComputedData?.heading,e=>{e&&(this._moveManipulation.angle=s(90-e))},v),d(()=>{const{viewshedComputedData:e}=this;return{viewshedComputedData:e,observer:this.elevationAlignedObserverRenderSpace}},({viewshedComputedData:e,observer:i},a)=>{this._grabbing&&i!==a?.observer||(this.removeHandles(k),e?.valid&&this.addHandles([this._buildObserverDragPipeline(e),this._buildFOVDragPipeline(e),this._buildScaleOrientDragPipeline(e)].filter(t),k))},v),d(()=>{const e=this.viewshedComputedData;return e?.valid?{viewshedCompData:e,target:e.elevationAlignedTargetRenderSpace,hFOV:e.horizontalFieldOfView,vFOV:e.verticalFieldOfView}:null},e=>{null!=e&&this._fieldOfViewManipulation.updateManipulatorsTransform(e.viewshedCompData)},v),d(()=>{const e=this.viewshedComputedData;return e?.valid?{viewshedCompData:e,hFOV:e.horizontalFieldOfView,vFOV:e.verticalFieldOfView,tilt:e.tilt}:null},e=>{null!=e&&this._fieldOfViewManipulation.updateManipulatorVisuals(e.viewshedCompData)},v),d(()=>{const e=this.analysisViewData.visible&&(this.viewshedComputedData?.valid??!1),i=this.parentTool.selectedViewshedComputedData===this.viewshedComputedData;return{fovManipulationAvailable:e&&!this.parentTool.isPlacingTarget,nonFOVManipulationAvailable:e&&(!this.parentTool.creating||i)}},({fovManipulationAvailable:e,nonFOVManipulationAvailable:i})=>{this._moveManipulation.available=i,this._scaleOrientManipulation.available=i,this._observerManipulator.available=i,this._fieldOfViewManipulation.available=e},v),d(()=>{const e=this.viewshedComputedData;if(!e?.valid)return null;const{observer:i,target:t,verticalFieldOfView:a,horizontalFieldOfView:n}=e;return{viewshedCompData:e,observer:i,target:t,verticalFieldOfView:a,horizontalFieldOfView:n}},e=>{null!=e&&this._scaleOrientManipulation.updateManipulators(e.viewshedCompData)},v)]);const e=e=>{this.addHandles([e.events.on("focus-changed",()=>{const e=this._someManipulatorHovering();e&&this.parentTool.subToolHandles.forEach(({subTool:e})=>{e._resetHoveringTask()}),this._someManipulatorSelected()||e||(this._forceHoveringTask=a(async e=>{await(this._forceHoveringTestPromise??h(V.hoverTimeoutMilliseconds,e)),u(e),this._forceHoveringTask=null,this._updateManipulatorVisibility()}))}),e.events.on("grab-changed",i=>{this._grabbing="start"===i.action,"end"===i.action&&this.parentTool.updateInteractionVisualsVisibility(),this.parentTool.subToolHandles.forEach(({subTool:e})=>{e!==this&&e._setInteractive(!this._grabbing)}),this._setInteractive(i=>i.hasManipulator(e)||!this._grabbing)}),e.events.on("drag",e=>{"start"===e.action&&this.parentTool.updateInteractionVisualsVisibility()})])};this._forEachManipulator(e)}destroy(){this._forceHoveringTask=l(this._forceHoveringTask),this._moveManipulation=p(this._moveManipulation),this._fieldOfViewManipulation=p(this._fieldOfViewManipulation),this._scaleOrientManipulation=p(this._scaleOrientManipulation),this.parentTool.manipulators.remove(this._observerManipulator),this._observerManipulator=p(this._observerManipulator)}get updating(){return null!=this._forceHoveringTask&&!this._forceHoveringTask.finished}get viewshed(){return this.viewshedComputedData?.viewshed}get grabbing(){return this._grabbing}get observer(){return this.viewshed?.observer}set observer(e){const i=this.viewshed;null!=i&&(i.observer=e)}get elevationAlignedObserverRenderSpace(){return this.viewshedComputedData?.elevationAlignedObserverRenderSpace}get discManipulator(){return this._moveManipulation.xyManipulation.discManipulator}get moveInteractionState(){const{dragging:e,grabbing:i}=this._moveManipulation;return{dragging:e,grabbing:i}}get scaleOrientInteractionState(){const{dragging:e,grabbing:i}=this._scaleOrientManipulation;return{dragging:e,grabbing:i}}_setInteractive(e){const i="boolean"==typeof e;this._forEachManipulation(t=>t.interactive=i?e:e(t))}onManipulatorSelectionChanged(){if(this._updateManipulatorVisibility(),!this._someManipulatorSelected()){this.analysisViewData.selectedViewshed===this.viewshed&&(this.analysisViewData.selectedViewshed=null),this._resetHoveringTask()}}hasManipulator(e){let i=!1;return this._forEachManipulator(t=>{i=i||t===e}),i}_someManipulatorSelected(){return this._moveManipulation.selected||this._fieldOfViewManipulation.selected||this._scaleOrientManipulation.selected}_someManipulatorHovering(){return this._moveManipulation.hovering||this._fieldOfViewManipulation.hovering||this._scaleOrientManipulation.hovering}_createMoveManipulation(){return new F({view:this.view,tool:this.parentTool,snapToScene:!1,xyAvailable:!0,xyAxisAvailable:!0,zAvailable:!0,radius:j})}_buildObserverDragPipeline(e){const i={mode:"absolute-height",offset:0},t=e.observer;if(null==t)return null;const a=this.view.spatialReference;return this._moveManipulation.createDragPipeline((e,i,n,o,r)=>{o=o.next(S(this,["observer"]));const s=w(t,a);if(null==s)return{steps:n,cancel:o};const l=P.fromGeometry(s,O(this.view.viewingMode));return{steps:n.next(A({operations:l})).next(e=>(this.observer=l.data.geometry,e)),cancel:o}},i,a,void 0)}_buildFOVDragPipeline(e){let i=0,t=0;return this._fieldOfViewManipulation.createDragPipeline((a,o,r)=>{if(null==e)return{steps:o,cancel:r};const s=e.viewshed;let l=null;r=r.next(S(s,["horizontalFieldOfView","verticalFieldOfView"]));return{steps:o.next(a=>{"start"===a.action&&(l=null,i=e.horizontalFieldOfView,t=e.verticalFieldOfView);const o=a.deltaAngle;if(null==l&&0!==o){const e="bottom"===a.side||"left"===a.side?o>0:o<0;l=T(a.side)?0===i&&e||360===i&&!e:0===t&&e}const r=l?D(a.side):a.side;let p=0;switch(r){case"left":p=i/2-o;break;case"right":p=i/2+o;break;case"top":p=t+2*o;break;case"bottom":p=t-2*o}return T(r)?(p=n.normalize(p),p=p>270?0:p>180?180:p,s.horizontalFieldOfView=2*p):s.verticalFieldOfView=p,a}),cancel:r}},e)}_buildScaleOrientDragPipeline(e){let i=0,t=0;const a=(i,t)=>(a,n,o)=>{if(null==e)return{steps:n,cancel:o};const r=e.viewshed;return o=o.next(S(r,[i])),{steps:n=n.next(t(r,e)),cancel:o}};return r([this._scaleOrientManipulation.createHeadingDragPipeline(a("heading",(i,a)=>a=>("start"===a.action&&(t=e.heading),i.heading=n.normalize(t+a.deltaAngle),a)),e),this._scaleOrientManipulation.createTiltDragPipeline(a("tilt",(t,a)=>a=>{"start"===a.action&&(i=e.tilt);let n=i+a.deltaAngle;return n<-90?n=180:n>270&&(n=0),t.tilt=I.clamp(n),a}),e),this._scaleOrientManipulation.createDistanceDragPipeline(a("farDistance",(e,i)=>t=>{const a=f(R,t.renderEnd,i.elevationAlignedObserverRenderSpace),n=M(a)*i.metersPerUnit,o=b(a,i.targetDirection)<0?V.scaleOrientMinDistance:n;return e.farDistance=o,t}),e)])}_updateManipulatorVisibility(){const e=this._someManipulatorSelected(),i=null!=this._forceHoveringTask||this._someManipulatorHovering(),t=this._fieldOfViewManipulation.hovering,a=this.parentTool.creating;let n=[];const o=e=>{n.push(e.disableDisplay())};e||!a&&i?this.removeHandles(x):(this._scaleOrientManipulation.forEachManipulator(o),this._moveManipulation.forEachManipulator(o),this.addHandles(n,x),n=[]),e||!a&&i||a&&t?this.removeHandles(E):(this._fieldOfViewManipulation.forEachManipulator(o),this.addHandles(n,E)),e||!a?this.removeHandles(z):this.addHandles(this._observerManipulator.disableDisplay(),z)}_resetHoveringTask(){this._forceHoveringTask=l(this._forceHoveringTask),this._updateManipulatorVisibility()}_forEachManipulator(e){this._forEachManipulation(i=>{i.forEachManipulator(e)}),e(this._observerManipulator)}_forEachManipulation(e){e(this._moveManipulation),e(this._fieldOfViewManipulation),e(this._scaleOrientManipulation)}get test(){return{moveManipulation:this._moveManipulation,fieldOfViewManipulation:this._fieldOfViewManipulation,scaleOrientManipulation:this._scaleOrientManipulation,viewshedComputedData:this.viewshedComputedData,setHoveringTimeoutPromise:e=>{this._forceHoveringTestPromise=e}}}};e([m({constructOnly:!0})],U.prototype,"analysis",void 0),e([m({constructOnly:!0})],U.prototype,"analysisViewData",void 0),e([m({constructOnly:!0})],U.prototype,"parentTool",void 0),e([m({constructOnly:!0,nonNullable:!0})],U.prototype,"view",void 0),e([m()],U.prototype,"_forceHoveringTask",void 0),e([m()],U.prototype,"updating",null),e([m()],U.prototype,"viewshed",null),e([m()],U.prototype,"_grabbing",void 0),e([m()],U.prototype,"grabbing",null),e([m()],U.prototype,"viewshedComputedData",void 0),e([m()],U.prototype,"observer",null),e([m()],U.prototype,"elevationAlignedObserverRenderSpace",null),U=e([g("esri.views.3d.analysis.Viewshed.ViewshedSubTool")],U);const R=_(),I=new o(0,180);export{U as ViewshedSubTool};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../../analysis/Viewshed.js";import{makeHandle as i}from"../../../../core/handleUtils.js";import"../../../../core/has.js";import{mapCollection as s}from"../../../../core/mapCollectionUtils.js";import{rad2deg as n}from"../../../../core/mathUtils.js";import{destroyMaybe as a}from"../../../../core/maybe.js";import{when as o,syncAndInitial as l,watch as r,sync as d,initial as c}from"../../../../core/reactiveUtils.js";import{property as h,subclass as u}from"../../../../core/accessorSupport/decorators.js";import{create as p}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{sub as g,len as m,set as v,angle as w,dot as _}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as V}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import f from"../../../../geometry/Point.js";import{fromPositionAndNormal as b,projectPoint as y,create as S}from"../../../../geometry/support/plane.js";import{creationElevationInfo as T}from"./ViewshedConfiguration.js";import{ViewshedSubTool as C}from"./ViewshedSubTool.js";import{Manipulator3D as D}from"../../interactive/Manipulator3D.js";import{Settings as M}from"../../interactive/editingTools/settings.js";import{ExtendedLineVisualElement as H}from"../../interactive/visualElements/ExtendedLineVisualElement.js";import{LaserlineVisualElement as I}from"../../interactive/visualElements/LaserlineVisualElement.js";import{toGraphic as j}from"../../webgl-engine/lib/intersectorUtilsConversions.js";import{AnalysisToolBase as P}from"../../../interactive/AnalysisToolBase.js";import{sketchKeys as E}from"../../../interactive/keybindings.js";import{newToolIntersector as L}from"../../../interactive/ToolIntersector.js";import{createScreenPointArrayFromEvent as k}from"../../../support/screenUtils.js";const A=Symbol("interactionVisuals");let O=class extends P{constructor(e){super(e),this.removeIncompleteOnCancel=!1,this.automaticManipulatorSelection=!1,this.multiTouchEnabled=!1,this._stagedViewshed=null,this._stagedViewshedComputedData=null,this._placementMode=G,this._creationState=!1,this._interactionVisualElements=null,this._settings=new M({getTheme:()=>this.view.effectiveTheme}),this._selectedManipulator=null}initialize(){this._intersector=L(this.view.state.viewingMode),this._createInteractionVisuals();const e=this.analysisViewData.viewshedComputedDataHandles;this.subToolHandles=s(()=>e,({viewshedComputedData:e})=>{const t=new C({analysis:this.analysis,analysisViewData:this.analysisViewData,parentTool:this,view:this.view,viewshedComputedData:e});return{subTool:t,remove:()=>{this.selectedViewshed===e.viewshed&&(this.selectedViewshed=null),t.destroy()}}}),this.addHandles([o(()=>this._valid,()=>this.finishToolCreation(),l),r(()=>this._stagedViewshed,e=>{const t=this.analysisViewData.viewshedComputedDataHandles;this._stagedViewshedComputedData=null!=e&&null!=t?this._findSubTool(e)?.viewshedComputedData:null},l),this.analysis.viewsheds.on("after-remove",e=>{const t=this._stagedViewshed;null!=t&&e.item===t&&this.analysis.viewsheds.add(t)}),r(()=>this.firstGrabbedManipulator,e=>{if(null!=e){const t=this._findSubTool(e)?.viewshed;this.selectedViewshed=t,this._selectManipulator(e)}else this._selectedSubTool?.onManipulatorSelectionChanged()},d),r(()=>this.view.activeTool,e=>{e!==this&&null!=e&&(this.selectedViewshed=null)}),o(()=>{const e=this.selectedViewshedComputedData;return null==e?null:{subTool:this._selectedSubTool,observer:e.elevationAlignedObserverRenderSpace,target:e.elevationAlignedTargetRenderSpace}},e=>{const{subTool:t,observer:i,target:s}=e;t?.moveInteractionState.dragging?this._updateInteractionVisualsLocation(i,!0):t?.scaleOrientInteractionState.dragging&&this._updateInteractionVisualsLocation(s,!1)},c),r(()=>this.creating,()=>this.updateInteractionVisualsVisibility()),r(()=>this.selectedViewshed,e=>{const t=this._selectedManipulator,i=this._selectedSubTool;null==e?this._selectManipulator(null):null!=t&&i.hasManipulator(t)||this._selectManipulator(i.discManipulator)},c)])}destroy(){this.subToolHandles=a(this.subToolHandles),this.removeHandles(A)}onDeactivate(){this.removeStaged(),this._creationState=!1}get updating(){return this.subToolHandles.some(({subTool:e})=>e.updating)}get _valid(){return this.analysisViewData.viewshedComputedDataHandles?.some(e=>e.viewshedComputedData.valid)??!1}get cursor(){return this.creating?"crosshair":null}get _selectedSubTool(){return this._findSubTool(this.selectedViewshed)}_selectManipulator(e){const t=this._selectedManipulator;t!==e&&(this._selectedManipulator=e,null!=t&&(t.selected=!1),null!=e&&(e.selected=!0),this._findSubTool(t)?.onManipulatorSelectionChanged(),this._selectedSubTool?.onManipulatorSelectionChanged())}get selectedViewshed(){return this.analysisViewData.selectedViewshed}set selectedViewshed(e){this.analysisViewData.selectedViewshed=e}get selectedViewshedComputedData(){return this._selectedSubTool?.viewshedComputedData}get stagedViewshed(){return this._stagedViewshed}get grabbing(){return this.subToolHandles.some(({subTool:e})=>e.grabbing)}get creating(){return this._creationState&&this.active}get isPlacingTarget(){return"placing-target"===this._creationState}place(e){this.selectedViewshed=null,this._placementMode=e,this._creationState="placing-observer",this._finishToolCreationIfValid()}onManipulatorSelectionChanged(){this.subToolHandles.forEach(e=>e.subTool.onManipulatorSelectionChanged())}onInputEvent(e){switch(e.type){case"immediate-double-click":this._doubleClickHandler(e);break;case"pointer-move":this._pointerMoveHandler(e);break;case"key-down":E.cancel===e.key?this._cancelKeyHandler(e):E.delete.includes(e.key)&&this._deleteKeyHandler();break;case"hold":this.updateInteractionVisualsVisibility(!0)}}onInputEventAfter(e){if("immediate-click"===e.type)this._clickPlacementHandler(e)}onActivate(){this._placementMode=G}_clickPlacementHandler(e){if(!this.creating||this.hasFocusedManipulators)return;const i=this._intersectScreen(e,B);if(null!=i){if("placing-observer"===this._creationState){const e=new t({observer:i.mapPoint.clone(),elevationInfo:T.clone(),feature:i.feature});this.analysis.viewsheds.add(e),this._stagedViewshed=e,this._creationState="placing-target",this._updateStagedViewshed(i.scenePoint)}else if("placing-target"===this._creationState){this._updateStagedViewshed(i.scenePoint);const e=this._stagedViewshed;this._stagedViewshed=null,"multiple"===this._placementMode?this._creationState="placing-observer":(this._creationState=!1,this._stagedViewshed=null,this._finishToolCreationIfValid(),this.view.activeTool=null),this.selectedViewshed=e}e.stopPropagation()}}_doubleClickHandler(e){this.creating&&(this.removeStaged(),this._creationState=!1,this.view.activeTool=null,e.stopPropagation())}_pointerMoveHandler(e){if(!this.creating)return;const t=this._intersectScreen(e,B);null!=t&&(this._updateInteractionVisualsLocation(t.scenePoint,!1),this._updateStagedViewshed(t.scenePoint))}_cancelKeyHandler(e){this.creating?this._onCancelWhileCreating(e):this.grabbing||(this.selectedViewshed=null,e.stopPropagation())}_onCancelWhileCreating(e){const t=this.removeStaged();this._finishToolCreationIfValid(),t?(this._creationState="placing-observer",this.selectedViewshed=null,"multiple"===this._placementMode&&e.stopPropagation()):this._creationState=!1}_deleteKeyHandler(){this.creating&&(this.removeStaged(),this._creationState="placing-observer"),null!=this.selectedViewshed&&this.analysis.viewsheds.remove(this.selectedViewshed)}_finishToolCreationIfValid(){this._valid&&this.finishToolCreation()}_updateStagedViewshed(e){const t=this._stagedViewshed,i=this._stagedViewshedComputedData;if(null==t||null==i)return;const{heading:s,tilt:n,farDistance:a}=x(this.view,i,e);t.farDistance=a,t.tilt=n,t.heading=s}removeStaged(){const e=this._stagedViewshed;return null!=e&&(this._stagedViewshed=null,this.analysis.viewsheds.remove(e),!0)}_intersectScreen(e,t){const i=k(e);this.view.sceneIntersectionHelper.intersectToolIntersectorScreen(i,this._intersector);const s=this._intersector.results.min,n=t.scenePoint;if(!s.getIntersectionPoint(n))return null;const a=t.mapPoint;return a.spatialReference=this.view.spatialReference,this.view.renderCoordsHelper.fromRenderCoords(n,a),null==a?null:(t.feature=j(s,this.view),t)}_createInteractionVisuals(){this.removeHandles(A);const e=this._settings.visualElements,t=new I({view:this.view,attached:!1,style:{glowWidth:e.heightPlane.glowWidth,innerWidth:e.heightPlane.innerWidth},isDecoration:!0}),s=new H({view:this.view,extensionType:e.zVerticalLine.extensionType,attached:!1,innerWidth:1,writeDepthEnabled:!1,renderOccluded:4,isDecoration:!0});this._interactionVisualElements={laserline:t,verticalLine:s},this.addHandles([r(()=>e.zVerticalLine,e=>e.apply(s),l),r(()=>e.heightPlane,e=>e.apply(t),l),i(()=>{t.destroy(),s.destroy(),this._interactionVisualElements=null})],A)}updateInteractionVisualsVisibility(e=!1){const t=this.creating,i=this.analysisViewData.visible,s=this._selectedSubTool,n=this.selectedViewshedComputedData,a=(e,t)=>{const i=this._interactionVisualElements;null!=i&&(i.verticalLine.attached=t,i.laserline.attached=e)};if(t)return void a(i,!1);if(null==s||null==n)return void a(!1,!1);const o=s.moveInteractionState,l=e?o.grabbing:o.dragging,r=s.scaleOrientInteractionState,d=e?r.grabbing:r.dragging,c=i&&(l||d);if(a(c,l),c){const e=l?n.elevationAlignedObserverRenderSpace:n.elevationAlignedTargetRenderSpace;this._updateInteractionVisualsLocation(e,l)}}_updateInteractionVisualsLocation(e,t){const i=this._interactionVisualElements;if(null==i)return;const{laserline:s,verticalLine:n}=i;s.heightManifoldTarget=e,s.intersectsWorldUpAtLocation=t?e:null,null!=e&&n.setStartEndFromWorldDownAtLocation(e)}_findSubTool(e){if(null==e)return null;const t=e instanceof D?t=>t.subTool.hasManipulator(e):t=>t.subTool.viewshed===e;return this.subToolHandles?.find(t)?.subTool}get test(){}};function x(e,t,i){const s=t.elevationAlignedObserverRenderSpace,a=g(W,i,s),o=m(a)*t.metersPerUnit,l=e.renderCoordsHelper.basisMatrixAtPosition(s,z),r=v(R,l[8],l[9],l[10]),d=b(s,r,F),c=y(d,i,U),h=g(c,c,s),u=(m(h)<1e-4?90:n(w(a,h)))*(_(r,a)<0?-1:1)+90,p=v(K,l[4],l[5],l[6]),V=n(w(p,h)),f=v(K,l[0],l[1],l[2]);return{heading:_(h,f)<0?360-V:V,tilt:u,farDistance:o}}e([h()],O.prototype,"updating",null),e([h({constructOnly:!0})],O.prototype,"view",void 0),e([h()],O.prototype,"analysisViewData",void 0),e([h()],O.prototype,"removeIncompleteOnCancel",void 0),e([h()],O.prototype,"automaticManipulatorSelection",void 0),e([h()],O.prototype,"multiTouchEnabled",void 0),e([h({constructOnly:!0})],O.prototype,"analysis",void 0),e([h()],O.prototype,"subToolHandles",void 0),e([h()],O.prototype,"_stagedViewshed",void 0),e([h()],O.prototype,"_stagedViewshedComputedData",void 0),e([h()],O.prototype,"_placementMode",void 0),e([h()],O.prototype,"_creationState",void 0),e([h()],O.prototype,"_valid",null),e([h({readOnly:!0})],O.prototype,"cursor",null),e([h()],O.prototype,"_selectedManipulator",void 0),e([h()],O.prototype,"_selectedSubTool",null),e([h()],O.prototype,"selectedViewshed",null),e([h()],O.prototype,"selectedViewshedComputedData",null),e([h()],O.prototype,"stagedViewshed",null),e([h()],O.prototype,"grabbing",null),e([h()],O.prototype,"creating",null),e([h()],O.prototype,"isPlacingTarget",null),O=e([u("esri.views.3d.analysis.Viewshed.ViewshedTool")],O);const W=V(),R=V(),U=V(),K=V(),z=p(),F=S(),B={mapPoint:new f,scenePoint:V(),feature:null},G="multiple";export{O as default};
2
+ import{__decorate as e}from"tslib";import t from"../../../../analysis/Viewshed.js";import{makeHandle as i}from"../../../../core/handleUtils.js";import"../../../../core/has.js";import{mapCollection as s}from"../../../../core/mapCollectionUtils.js";import{destroyMaybe as n}from"../../../../core/maybe.js";import{when as a,syncAndInitial as o,watch as l,sync as r,initial as d}from"../../../../core/reactiveUtils.js";import{property as c,subclass as h}from"../../../../core/accessorSupport/decorators.js";import{create as u}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import p from"../../../../geometry/Point.js";import{creationElevationInfo as g}from"./ViewshedConfiguration.js";import{ViewshedSubTool as m}from"./ViewshedSubTool.js";import{computeParametersFromTargetPoint as v}from"./viewshedToolUtils.js";import{Manipulator3D as w}from"../../interactive/Manipulator3D.js";import{Settings as _}from"../../interactive/editingTools/settings.js";import{ExtendedLineVisualElement as V}from"../../interactive/visualElements/ExtendedLineVisualElement.js";import{LaserlineVisualElement as b}from"../../interactive/visualElements/LaserlineVisualElement.js";import{toGraphic as f}from"../../webgl-engine/lib/intersectorUtilsConversions.js";import{AnalysisToolBase as y}from"../../../interactive/AnalysisToolBase.js";import{sketchKeys as S}from"../../../interactive/keybindings.js";import{newToolIntersector as T}from"../../../interactive/ToolIntersector.js";import{createScreenPointArrayFromEvent as C}from"../../../support/screenUtils.js";const D=Symbol("interactionVisuals");let M=class extends y{constructor(e){super(e),this.removeIncompleteOnCancel=!1,this.automaticManipulatorSelection=!1,this.multiTouchEnabled=!1,this._stagedViewshed=null,this._stagedViewshedComputedData=null,this._placementMode=I,this._creationState=!1,this._interactionVisualElements=null,this._settings=new _({getTheme:()=>this.view.effectiveTheme}),this._selectedManipulator=null}initialize(){this._intersector=T(this.view.state.viewingMode),this._createInteractionVisuals();const e=this.analysisViewData.viewshedComputedDataHandles;this.subToolHandles=s(()=>e,({viewshedComputedData:e})=>{const t=new m({analysis:this.analysis,analysisViewData:this.analysisViewData,parentTool:this,view:this.view,viewshedComputedData:e});return{subTool:t,remove:()=>{this.selectedViewshed===e.viewshed&&(this.selectedViewshed=null),t.destroy()}}}),this.addHandles([a(()=>this._valid,()=>this.finishToolCreation(),o),l(()=>this._stagedViewshed,e=>{const t=this.analysisViewData.viewshedComputedDataHandles;this._stagedViewshedComputedData=null!=e&&null!=t?this._findSubTool(e)?.viewshedComputedData:null},o),this.analysis.viewsheds.on("after-remove",e=>{const t=this._stagedViewshed;null!=t&&e.item===t&&this.analysis.viewsheds.add(t)}),l(()=>this.firstGrabbedManipulator,e=>{if(null!=e){const t=this._findSubTool(e)?.viewshed;this.selectedViewshed=t,this._selectManipulator(e)}else this._selectedSubTool?.onManipulatorSelectionChanged()},r),l(()=>this.view.activeTool,e=>{e!==this&&null!=e&&(this.selectedViewshed=null)}),a(()=>{const e=this.selectedViewshedComputedData;return null==e?null:{subTool:this._selectedSubTool,observer:e.elevationAlignedObserverRenderSpace,target:e.elevationAlignedTargetRenderSpace}},e=>{const{subTool:t,observer:i,target:s}=e;t?.moveInteractionState.dragging?this._updateInteractionVisualsLocation(i,!0):t?.scaleOrientInteractionState.dragging&&this._updateInteractionVisualsLocation(s,!1)},d),l(()=>this.creating,()=>this.updateInteractionVisualsVisibility()),l(()=>this.selectedViewshed,e=>{const t=this._selectedManipulator,i=this._selectedSubTool;null==e?this._selectManipulator(null):null!=t&&i.hasManipulator(t)||this._selectManipulator(i.discManipulator)},d)])}destroy(){this.subToolHandles=n(this.subToolHandles),this.removeHandles(D)}onDeactivate(){this.removeStaged(),this._creationState=!1}get updating(){return this.subToolHandles.some(({subTool:e})=>e.updating)}get _valid(){return this.analysisViewData.viewshedComputedDataHandles?.some(e=>e.viewshedComputedData.valid)??!1}get cursor(){return this.creating?"crosshair":null}get _selectedSubTool(){return this._findSubTool(this.selectedViewshed)}_selectManipulator(e){const t=this._selectedManipulator;t!==e&&(this._selectedManipulator=e,null!=t&&(t.selected=!1),null!=e&&(e.selected=!0),this._findSubTool(t)?.onManipulatorSelectionChanged(),this._selectedSubTool?.onManipulatorSelectionChanged())}get selectedViewshed(){return this.analysisViewData.selectedViewshed}set selectedViewshed(e){this.analysisViewData.selectedViewshed=e}get selectedViewshedComputedData(){return this._selectedSubTool?.viewshedComputedData}get stagedViewshed(){return this._stagedViewshed}get grabbing(){return this.subToolHandles.some(({subTool:e})=>e.grabbing)}get creating(){return this._creationState&&this.active}get isPlacingTarget(){return"placing-target"===this._creationState}place(e){this.selectedViewshed=null,this._placementMode=e,this._creationState="placing-observer",this._finishToolCreationIfValid()}onManipulatorSelectionChanged(){this.subToolHandles.forEach(e=>e.subTool.onManipulatorSelectionChanged())}onInputEvent(e){switch(e.type){case"immediate-double-click":this._doubleClickHandler(e);break;case"pointer-move":this._pointerMoveHandler(e);break;case"key-down":S.cancel===e.key?this._cancelKeyHandler(e):S.delete.includes(e.key)&&this._deleteKeyHandler();break;case"hold":this.updateInteractionVisualsVisibility(!0)}}onInputEventAfter(e){if("immediate-click"===e.type)this._clickPlacementHandler(e)}onActivate(){this._placementMode=I}_clickPlacementHandler(e){if(!this.creating||this.hasFocusedManipulators)return;const i=this._intersectScreen(e,H);if(null!=i){if("placing-observer"===this._creationState){const e=new t({observer:i.mapPoint.clone(),elevationInfo:g.clone(),feature:i.feature});this.analysis.viewsheds.add(e),this._stagedViewshed=e,this._creationState="placing-target",this._updateStagedViewshed(i.scenePoint)}else if("placing-target"===this._creationState){this._updateStagedViewshed(i.scenePoint);const e=this._stagedViewshed;this._stagedViewshed=null,"multiple"===this._placementMode?this._creationState="placing-observer":(this._creationState=!1,this._stagedViewshed=null,this._finishToolCreationIfValid(),this.view.activeTool=null),this.selectedViewshed=e}e.stopPropagation()}}_doubleClickHandler(e){this.creating&&(this.removeStaged(),this._creationState=!1,this.view.activeTool=null,e.stopPropagation())}_pointerMoveHandler(e){if(!this.creating)return;const t=this._intersectScreen(e,H);null!=t&&(this._updateInteractionVisualsLocation(t.scenePoint,!1),this._updateStagedViewshed(t.scenePoint))}_cancelKeyHandler(e){this.creating?this._onCancelWhileCreating(e):this.grabbing||(this.selectedViewshed=null,e.stopPropagation())}_onCancelWhileCreating(e){const t=this.removeStaged();this._finishToolCreationIfValid(),t?(this._creationState="placing-observer",this.selectedViewshed=null,"multiple"===this._placementMode&&e.stopPropagation()):this._creationState=!1}_deleteKeyHandler(){this.creating&&(this.removeStaged(),this._creationState="placing-observer"),null!=this.selectedViewshed&&this.analysis.viewsheds.remove(this.selectedViewshed)}_finishToolCreationIfValid(){this._valid&&this.finishToolCreation()}_updateStagedViewshed(e){const t=this._stagedViewshed,i=this._stagedViewshedComputedData;if(null==t||null==i)return;const{heading:s,tilt:n,farDistance:a}=v(this.view,i,e);t.farDistance=a,t.tilt=n,t.heading=s}removeStaged(){const e=this._stagedViewshed;return null!=e&&(this._stagedViewshed=null,this.analysis.viewsheds.remove(e),!0)}_intersectScreen(e,t){const i=C(e);this.view.sceneIntersectionHelper.intersectToolIntersectorScreen(i,this._intersector);const s=this._intersector.results.min,n=t.scenePoint;if(!s.getIntersectionPoint(n))return null;const a=t.mapPoint;return a.spatialReference=this.view.spatialReference,this.view.renderCoordsHelper.fromRenderCoords(n,a),null==a?null:(t.feature=f(s,this.view),t)}_createInteractionVisuals(){this.removeHandles(D);const e=this._settings.visualElements,t=new b({view:this.view,attached:!1,style:{glowWidth:e.heightPlane.glowWidth,innerWidth:e.heightPlane.innerWidth},isDecoration:!0}),s=new V({view:this.view,extensionType:e.zVerticalLine.extensionType,attached:!1,innerWidth:1,writeDepthEnabled:!1,renderOccluded:4,isDecoration:!0});this._interactionVisualElements={laserline:t,verticalLine:s},this.addHandles([l(()=>e.zVerticalLine,e=>e.apply(s),o),l(()=>e.heightPlane,e=>e.apply(t),o),i(()=>{t.destroy(),s.destroy(),this._interactionVisualElements=null})],D)}updateInteractionVisualsVisibility(e=!1){const t=this.creating,i=this.analysisViewData.visible,s=this._selectedSubTool,n=this.selectedViewshedComputedData,a=(e,t)=>{const i=this._interactionVisualElements;null!=i&&(i.verticalLine.attached=t,i.laserline.attached=e)};if(t)return void a(i,!1);if(null==s||null==n)return void a(!1,!1);const o=s.moveInteractionState,l=e?o.grabbing:o.dragging,r=s.scaleOrientInteractionState,d=e?r.grabbing:r.dragging,c=i&&(l||d);if(a(c,l),c){const e=l?n.elevationAlignedObserverRenderSpace:n.elevationAlignedTargetRenderSpace;this._updateInteractionVisualsLocation(e,l)}}_updateInteractionVisualsLocation(e,t){const i=this._interactionVisualElements;if(null==i)return;const{laserline:s,verticalLine:n}=i;s.heightManifoldTarget=e,s.intersectsWorldUpAtLocation=t?e:null,null!=e&&n.setStartEndFromWorldDownAtLocation(e)}_findSubTool(e){if(null==e)return null;const t=e instanceof w?t=>t.subTool.hasManipulator(e):t=>t.subTool.viewshed===e;return this.subToolHandles?.find(t)?.subTool}get test(){}};e([c()],M.prototype,"updating",null),e([c({constructOnly:!0})],M.prototype,"view",void 0),e([c()],M.prototype,"analysisViewData",void 0),e([c()],M.prototype,"removeIncompleteOnCancel",void 0),e([c()],M.prototype,"automaticManipulatorSelection",void 0),e([c()],M.prototype,"multiTouchEnabled",void 0),e([c({constructOnly:!0})],M.prototype,"analysis",void 0),e([c()],M.prototype,"subToolHandles",void 0),e([c()],M.prototype,"_stagedViewshed",void 0),e([c()],M.prototype,"_stagedViewshedComputedData",void 0),e([c()],M.prototype,"_placementMode",void 0),e([c()],M.prototype,"_creationState",void 0),e([c()],M.prototype,"_valid",null),e([c({readOnly:!0})],M.prototype,"cursor",null),e([c()],M.prototype,"_selectedManipulator",void 0),e([c()],M.prototype,"_selectedSubTool",null),e([c()],M.prototype,"selectedViewshed",null),e([c()],M.prototype,"selectedViewshedComputedData",null),e([c()],M.prototype,"stagedViewshed",null),e([c()],M.prototype,"grabbing",null),e([c()],M.prototype,"creating",null),e([c()],M.prototype,"isPlacingTarget",null),M=e([h("esri.views.3d.analysis.Viewshed.ViewshedTool")],M);const H={mapPoint:new p,scenePoint:u(),feature:null},I="multiple";export{M as default};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
+ import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{destroyMaybe as i}from"../../../../core/maybe.js";import{watch as s,syncAndInitial as a}from"../../../../core/reactiveUtils.js";import{property as o,subclass as d}from"../../../../core/accessorSupport/decorators.js";import{ViewshedEditTool as l}from"./ViewshedEditTool.js";let n=class extends t{constructor(e){super(e),this._editTool=null}initialize(){const{view:e}=this;this.addHandles([s(()=>({interactive:this.analysisViewData.interactive,selectedViewshed:this.analysisViewData.selectedViewshed,selectedViewshedComputedData:this._selectedViewshedComputedData}),({interactive:t,selectedViewshed:s,selectedViewshedComputedData:a})=>{t?null==s||null!=a?this._editTool||(this._editTool=new l({analysis:this.analysis,analysisViewData:this.analysisViewData,view:e}),e.addAndActivateTool(this._editTool)):this.analysisViewData.selectedViewshed=null:this._editTool=i(this._editTool)},a),s(()=>e.activeTool,e=>{null!=e&&e!==this._editTool&&(this.analysisViewData.selectedViewshed=null)})])}destroy(){this._editTool=i(this._editTool)}get selectedViewshedComputedData(){return this._selectedViewshedComputedData}async place(e,t){if(this.analysisViewData.interactive=!0,"single"===e)return{}}get _selectedViewshedComputedData(){const e=this.analysisViewData.selectedViewshed;return null==e?null:this._findViewshedComputedData(e)}_findViewshedComputedData(e){return this.analysisViewData.viewshedComputedDataHandles?.find(t=>t.viewshedComputedData.viewshed===e)?.viewshedComputedData}};e([o({constructOnly:!0})],n.prototype,"view",void 0),e([o({constructOnly:!0})],n.prototype,"analysis",void 0),e([o({constructOnly:!0})],n.prototype,"analysisViewData",void 0),e([o()],n.prototype,"_editTool",void 0),e([o()],n.prototype,"selectedViewshedComputedData",null),e([o()],n.prototype,"_selectedViewshedComputedData",null),n=e([d("esri.views.3d.analysis.Viewshed.ViewshedTool2")],n);export{n as default};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
+ import o from"../../../../core/Collection.js";import{mapCollection as e}from"../../../../core/mapCollectionUtils.js";import{ViewshedSubTool as t}from"./ViewshedSubTool.js";import{Manipulator3D as a}from"../../interactive/Manipulator3D.js";function i({analysis:a,analysisViewData:i,onBeforeSubToolRemove:n,parentTool:s,view:l,viewshedComputedDataHandles:r}){return null==r?new o:e(()=>r,({viewshedComputedData:o})=>{const e=new t({analysis:a,analysisViewData:i,parentTool:s,view:l,viewshedComputedData:o});return{subTool:e,remove:()=>{n(o.viewshed),e.destroy()}}})}function n(o,e){return e?o.find(e instanceof a?({subTool:o})=>o.hasManipulator(e):({subTool:o})=>o.viewshed===e)?.subTool??null:null}export{i as createSubToolHandles,n as findSubTool};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{rad2deg as r,clamp as e}from"../../../../core/mathUtils.js";import{fromRotation as t}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as n}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{transformMat4 as o,normalize as i,copy as a,angle as s,dot as c,sub as m,add as l,scale as p}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as d}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getNormal as f,fromPositionAndNormal as g,create as u}from"../../../../geometry/support/plane.js";import{viewshedToolManipulatorConfiguration as h}from"./ViewshedConfiguration.js";import{calculateTranslateRotateFromBases as j,calculateInputRotationTransform as b}from"../../interactive/manipulatorUtils.js";import{screenToRenderPlane as v}from"../../interactive/editingTools/dragEventPipeline3D.js";import{headingTiltToDirectionUp as x}from"../../support/cameraUtils.js";import{createDirectionUp as S}from"../../support/cameraUtilsInternal.js";function R({tiltedUpVector:r,rightVector:e,elevationAlignedObserverRenderSpace:t},n){const o=j(r,e,t,n);return o[12]=0,o[13]=0,o[14]=0,o}function U(t,n,o,s){const j=d(),x=f(o.plane),S=A(n,x);let R;if(Math.abs(S)>h.viewAngleThreshold)R=t.next(v(n,o.plane));else{const r=g(s.elevationAlignedTargetRenderSpace,o.basis1,u()),a=i(C,o.basis1),f=i(D,o.basis2);R=t.next(v(n,r)).next(r=>{const t=r=>{const t=c(m(M,r,o.origin),f),n=Math.acos(e(t/s.farDistanceRenderSpace,-1,1)),i=Math.sin(n)*s.farDistanceRenderSpace;return l(d(),o.origin,l(d(),p(M,a,i),p(T,f,t)))},n=t(r.renderStart),i=t(r.renderEnd);return{...r,renderStart:n,renderEnd:i}})}return R.next(e=>{"start"===e.action&&a(j,e.renderStart);const t=r(b(j,e.renderEnd,o.origin,x));return{...e,deltaAngle:t}})}function A(e,t){const n=C;e.renderCoordsHelper.toRenderCoords(e.camera.position,n);const o=x(e,n,e.camera.heading,e.camera.tilt,S()).direction;return r(s(o,t))-90}function E(r,e,n,i){return t(V,n,i),o(r,e,V)}const C=d(),D=d(),M=d(),T=d(),V=n();export{R as getViewshedRotationMatrix,E as rotateBy,U as screenToCircleAngle};
2
+ import{rad2deg as e,clamp as r}from"../../../../core/mathUtils.js";import{fromRotation as t}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as n}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{transformMat4 as i,sub as o,len as a,set as s,angle as c,dot as m,normalize as l,copy as d,add as p,scale as f}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as g}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromPositionAndNormal as u,projectPoint as h,create as b,getNormal as j}from"../../../../geometry/support/plane.js";import{viewshedToolManipulatorConfiguration as v}from"./ViewshedConfiguration.js";import{calculateTranslateRotateFromBases as x,calculateInputRotationTransform as S}from"../../interactive/manipulatorUtils.js";import{screenToRenderPlane as A}from"../../interactive/editingTools/dragEventPipeline3D.js";import{headingTiltToDirectionUp as R}from"../../support/cameraUtils.js";import{createDirectionUp as U}from"../../support/cameraUtilsInternal.js";function C({tiltedUpVector:e,rightVector:r,elevationAlignedObserverRenderSpace:t},n){const i=x(e,r,t,n);return i[12]=0,i[13]=0,i[14]=0,i}function D(t,n,i,a){const s=g(),c=j(i.plane),h=E(n,c);let x;if(Math.abs(h)>v.viewAngleThreshold)x=t.next(A(n,i.plane));else{const e=u(a.elevationAlignedTargetRenderSpace,i.basis1,b()),s=l(T,i.basis1),c=l(V,i.basis2);x=t.next(A(n,e)).next(e=>{const t=e=>{const t=m(o(w,e,i.origin),c),n=Math.acos(r(t/a.farDistanceRenderSpace,-1,1)),l=Math.sin(n)*a.farDistanceRenderSpace;return p(g(),i.origin,p(g(),f(w,s,l),f(H,c,t)))},n=t(e.renderStart),l=t(e.renderEnd);return{...e,renderStart:n,renderEnd:l}})}return x.next(r=>{"start"===r.action&&d(s,r.renderStart);const t=e(S(s,r.renderEnd,i.origin,c));return{...r,deltaAngle:t}})}function E(r,t){const n=T;r.renderCoordsHelper.toRenderCoords(r.camera.position,n);const i=R(r,n,r.camera.heading,r.camera.tilt,U()).direction;return e(c(i,t))-90}function M(e,r,n,o){return t(O,n,o),i(e,r,O)}function P(r,t,n){const i=t.elevationAlignedObserverRenderSpace,l=o(y,n,i),d=a(l)*t.metersPerUnit,p=r.renderCoordsHelper.basisMatrixAtPosition(i,B),f=s(I,p[8],p[9],p[10]),g=u(i,f,F),b=h(g,n,k),j=o(b,b,i),v=(a(j)<1e-4?90:e(c(l,j)))*(m(f,l)<0?-1:1)+90,x=s(q,p[4],p[5],p[6]),S=e(c(x,j)),A=s(z,p[0],p[1],p[2]);return{heading:m(j,A)<0?360-S:S,tilt:v,farDistance:d}}const T=g(),V=g(),w=g(),H=g(),O=n(),y=g(),I=g(),k=g(),q=g(),z=g(),B=n(),F=b();export{P as computeParametersFromTargetPoint,C as getViewshedRotationMatrix,M as rotateBy,D as screenToCircleAngle};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{getFeatureId as t,updatePointsFromFeatureReference as s}from"../../../analysis/featureReferenceUtils.js";import"../../../core/has.js";import i from"../../../core/Logger.js";import{mapCollection as r}from"../../../core/mapCollectionUtils.js";import{abortMaybe as o,destroyMaybe as a}from"../../../core/maybe.js";import{watch as d,initial as n,when as l,syncAndInitial as h}from"../../../core/reactiveUtils.js";import{property as p,subclass as c}from"../../../core/accessorSupport/decorators.js";import{copy as v,exactEquals as m}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as u}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{canProjectWithoutEngine as w,isLoaded as V}from"../../../geometry/projectionUtils.js";import f from"./AnalysisView3D.js";import{logFailedGeometryProjectionError as y}from"./support/projectionUtils.js";import{ViewshedComputedData as g}from"./Viewshed/ViewshedComputedData.js";import _ from"./Viewshed/ViewshedTool.js";import{ViewshedVisualization as b}from"./Viewshed/ViewshedVisualization.js";import{createElevationUpdateHandle as j}from"../support/elevationUpdateUtils.js";import{Intersector as R}from"../webgl-engine/lib/Intersector.js";import{Viewshed as D}from"../webgl-engine/lib/Viewshed.js";import{connectAnalysisViewToTool as O,removeAnalysisViewTool as C,startPlaceOperation as F}from"../../analysis/analysisViewUtils.js";let A=class extends f{constructor(e){super(e),this.type="viewshed-view-3d",this.analysis=null,this.tool=null,this._selectedViewshed=null,this.viewshedComputedDataHandles=null,this.userOperation=null,this._viewshedRenderNode=null,this._intersector=null}get visible(){return super.visible}set visible(e){super.visible=e}get interactive(){return super.interactive}set interactive(e){super.interactive=e}get selectedViewshed(){return this._selectedViewshed}set selectedViewshed(e){this._unselectOtherViewsheds(e),this._selectedViewshed=e}get selectedViewshedComputedData(){return this.tool?.selectedViewshedComputedData}get _isDecoration(){return!this.parent}initialize(){const e=this.view;this._viewshedRenderNode=new D({view:e,selectedViewshed:()=>this.selectedViewshed??this.tool?.stagedViewshed,isDecoration:this._isDecoration}),this._intersector=new R(this.view.state.viewingMode),this._intersector.options.hud=!1,this._intersector.options.store=0,this.viewshedComputedDataHandles=r(()=>this.analysis.viewsheds,t=>{const s=new g({view:e,viewshed:t}),r=Symbol();return this.addHandles([d(()=>({valid:s.valid,canProject:w(s.observer?.spatialReference,this.view.spatialReference)||V()}),({valid:e,canProject:t},r)=>{this.visible&&(e&&t?this._addViewshedsToRenderer(s):r?.valid&&r?.canProject&&this._removeViewshedsFromRenderer(s),t||y(this.analysis,s.observer.spatialReference,i.getLogger(this)))},n),j({view:e,geometry:s.observer,onElevationChanges:()=>s.onElevationChange()}),d(()=>[e.state.camera,e.slice.plane,s.elevationAlignedObserverRenderSpace,s.elevationAlignedTargetRenderSpace,s.verticalFieldOfView,s.horizontalFieldOfView,s.feature],()=>{this._updateObserverFromFeature(e,s)},n)],r),{viewshedComputedData:s,remove:()=>{this.removeHandles(r),this._removeViewshedsFromRenderer(s),s.destroy()}}}),this._visualization=new b({view:e,analysisViewData:this,isDecoration:this._isDecoration}),this.addHandles([d(()=>this.visible,e=>{const t=this.viewshedComputedDataHandles;if(null==t)return;e||(this.selectedViewshed=null);const s=t.map(e=>e.viewshedComputedData).filter(e=>e.valid).toArray();e?this._addViewshedsToRenderer(s):this._removeViewshedsFromRenderer(s)}),O(this,_),l(()=>this.interactive,()=>{this._unselectOtherViewsheds(this.selectedViewshed)},h)])}destroy(){this.userOperation=o(this.userOperation),C(this),this._visualization=a(this._visualization);const e=this.viewshedComputedDataHandles;null!=e&&this._removeViewshedsFromRenderer(e.map(e=>e.viewshedComputedData).toArray())}async createViewsheds(e){await F(this,{placementOptions:e,onToolActivated:e=>e.place("multiple")})}place(e){return F(this,{placementOptions:e,onToolActivated:e=>e.place("single")})}_addViewshedsToRenderer(e){this._viewshedRenderNode.updateViewsheds({adds:e})}_removeViewshedsFromRenderer(e){this._viewshedRenderNode.updateViewsheds({removes:e})}_updateObserverFromFeature(e,i){const r=i.elevationAlignedObserverRenderSpace,o=i.elevationAlignedTargetRenderSpace,a=v(u(),r),d={observer:r,observerSurfaceNormal:null,observerAdjusted:a,observerFeatureId:t(i.feature),target:o,targetSurfaceNormal:null,targetAdjusted:v(u(),o),targetFeatureId:null};s(e,this._intersector,d,e=>Math.min(e,.05*i.farDistanceRenderSpace)),i.observerRenderSpaceOverride=m(a,r)?null:a}_unselectOtherViewsheds(e){if(null!=e)for(const t of this.view.tools.items)t!==this.tool&&t instanceof _&&(t.analysisViewData.selectedViewshed=null)}get test(){}};e([p({readOnly:!0})],A.prototype,"type",void 0),e([p({constructOnly:!0,nonNullable:!0})],A.prototype,"analysis",void 0),e([p()],A.prototype,"tool",void 0),e([p()],A.prototype,"_selectedViewshed",void 0),e([p()],A.prototype,"selectedViewshed",null),e([p()],A.prototype,"selectedViewshedComputedData",null),e([p()],A.prototype,"viewshedComputedDataHandles",void 0),e([p()],A.prototype,"userOperation",void 0),e([p()],A.prototype,"_visualization",void 0),e([p()],A.prototype,"_viewshedRenderNode",void 0),A=e([c("esri.views.3d.analysis.ViewshedAnalysisView3D")],A);const S=A;export{S as default};
2
+ import{__decorate as e}from"tslib";import{getFeatureId as t,updatePointsFromFeatureReference as s}from"../../../analysis/featureReferenceUtils.js";import has from"../../../core/has.js";import i from"../../../core/Logger.js";import{mapCollection as o}from"../../../core/mapCollectionUtils.js";import{abortMaybe as r,destroyMaybe as a}from"../../../core/maybe.js";import{watch as l,initial as d,when as n,syncAndInitial as h}from"../../../core/reactiveUtils.js";import{property as p,subclass as c}from"../../../core/accessorSupport/decorators.js";import{copy as w,exactEquals as v}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as u}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{canProjectWithoutEngine as m,isLoaded as V}from"../../../geometry/projectionUtils.js";import _ from"./AnalysisView3D.js";import{logFailedGeometryProjectionError as f}from"./support/projectionUtils.js";import{ViewshedComputedData as y}from"./Viewshed/ViewshedComputedData.js";import g from"./Viewshed/ViewshedTool.js";import b from"./Viewshed/ViewshedTool2.js";import{ViewshedVisualization as j}from"./Viewshed/ViewshedVisualization.js";import{createElevationUpdateHandle as D}from"../support/elevationUpdateUtils.js";import{Intersector as R}from"../webgl-engine/lib/Intersector.js";import{Viewshed as O}from"../webgl-engine/lib/Viewshed.js";import{connectAnalysisViewToTool as C,removeAnalysisViewTool as T,startPlaceOperation as N}from"../../analysis/analysisViewUtils.js";let F=class extends _{constructor(e){super(e),this.type="viewshed-view-3d",this.analysis=null,this.tool=null,this._tool=null,this._selectedViewshed=null,this.viewshedComputedDataHandles=null,this.userOperation=null,this._useNewViewshedTool=!!has("enable-feature:analysis-new-viewshed-tool"),this._viewshedRenderNode=null,this._intersector=null}get visible(){return super.visible}set visible(e){super.visible=e}get interactive(){return super.interactive}set interactive(e){super.interactive=e}get selectedViewshed(){return this._selectedViewshed}set selectedViewshed(e){this._unselectOtherViewsheds(e),this._selectedViewshed=e}get selectedViewshedComputedData(){return this._tool?.selectedViewshedComputedData??this.tool?.selectedViewshedComputedData??null}get _isDecoration(){return!this.parent}initialize(){const e=this.view;this._viewshedRenderNode=new O({view:e,selectedViewshed:()=>this.selectedViewshed??this.tool?.stagedViewshed,isDecoration:this._isDecoration}),this._intersector=new R(this.view.state.viewingMode),this._intersector.options.hud=!1,this._intersector.options.store=0,this.viewshedComputedDataHandles=o(()=>this.analysis.viewsheds,t=>{const s=new y({view:e,viewshed:t}),o=Symbol();return this.addHandles([l(()=>({valid:s.valid,canProject:m(s.observer?.spatialReference,this.view.spatialReference)||V()}),({valid:e,canProject:t},o)=>{this.visible&&(e&&t?this._addViewshedsToRenderer(s):o?.valid&&o?.canProject&&this._removeViewshedsFromRenderer(s),t||f(this.analysis,s.observer.spatialReference,i.getLogger(this)))},d),D({view:e,geometry:s.observer,onElevationChanges:()=>s.onElevationChange()}),l(()=>[e.state.camera,e.slice.plane,s.elevationAlignedObserverRenderSpace,s.elevationAlignedTargetRenderSpace,s.verticalFieldOfView,s.horizontalFieldOfView,s.feature],()=>{this._updateObserverFromFeature(e,s)},d)],o),{viewshedComputedData:s,remove:()=>{this.removeHandles(o),this._removeViewshedsFromRenderer(s),s.destroy()}}}),this._visualization=new j({view:e,analysisViewData:this,isDecoration:this._isDecoration}),this._useNewViewshedTool&&(this._tool=new b({analysis:this.analysis,analysisViewData:this,view:e})),this.addHandles([l(()=>this.visible,e=>{const t=this.viewshedComputedDataHandles;if(null==t)return;e||(this.selectedViewshed=null);const s=t.map(e=>e.viewshedComputedData).filter(e=>e.valid).toArray();e?this._addViewshedsToRenderer(s):this._removeViewshedsFromRenderer(s)}),...this._useNewViewshedTool?[]:[C(this,g)],n(()=>this.interactive,()=>{this._unselectOtherViewsheds(this.selectedViewshed)},h)])}destroy(){this.userOperation=r(this.userOperation),this._useNewViewshedTool?this._tool=a(this._tool):T(this),this._visualization=a(this._visualization);const e=this.viewshedComputedDataHandles;null!=e&&this._removeViewshedsFromRenderer(e.map(e=>e.viewshedComputedData).toArray())}async createViewsheds(e){if(this._useNewViewshedTool)return this._tool.place("multiple",e);await N(this,{placementOptions:e,onToolActivated:e=>e.place("multiple")})}place(e){return this._useNewViewshedTool?this._tool.place("single",e):N(this,{placementOptions:e,onToolActivated:e=>e.place("single")})}_addViewshedsToRenderer(e){this._viewshedRenderNode.updateViewsheds({adds:e})}_removeViewshedsFromRenderer(e){this._viewshedRenderNode.updateViewsheds({removes:e})}_updateObserverFromFeature(e,i){const o=i.elevationAlignedObserverRenderSpace,r=i.elevationAlignedTargetRenderSpace,a=w(u(),o),l={observer:o,observerSurfaceNormal:null,observerAdjusted:a,observerFeatureId:t(i.feature),target:r,targetSurfaceNormal:null,targetAdjusted:w(u(),r),targetFeatureId:null};s(e,this._intersector,l,e=>Math.min(e,.05*i.farDistanceRenderSpace)),i.observerRenderSpaceOverride=v(a,o)?null:a}_unselectOtherViewsheds(e){if(null!=e)for(const t of this.view.tools.items)t!==this.tool&&t instanceof g&&(t.analysisViewData.selectedViewshed=null)}get test(){}};e([p({readOnly:!0})],F.prototype,"type",void 0),e([p({constructOnly:!0,nonNullable:!0})],F.prototype,"analysis",void 0),e([p()],F.prototype,"tool",void 0),e([p()],F.prototype,"_tool",void 0),e([p()],F.prototype,"_selectedViewshed",void 0),e([p()],F.prototype,"selectedViewshed",null),e([p()],F.prototype,"selectedViewshedComputedData",null),e([p()],F.prototype,"viewshedComputedDataHandles",void 0),e([p()],F.prototype,"userOperation",void 0),e([p()],F.prototype,"_visualization",void 0),e([p()],F.prototype,"_viewshedRenderNode",void 0),F=e([c("esri.views.3d.analysis.ViewshedAnalysisView3D")],F);const A=F;export{A as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as o}from"tslib";import{JSONSupport as r}from"../../../core/JSONSupport.js";import{property as e,subclass as t}from"../../../core/accessorSupport/decorators.js";import{enumeration as s}from"../../../core/accessorSupport/decorators/enumeration.js";var c;let i=c=class extends r{constructor(o){super(o),this.type="cloudy",this.cloudCover=.5}clone(){return new c({cloudCover:this.cloudCover})}};o([s({cloudy:"cloudy"}),e({json:{write:{isRequired:!0}}})],i.prototype,"type",void 0),o([e({type:Number,nonNullable:!0,range:{min:0,max:1},json:{write:!0}})],i.prototype,"cloudCover",void 0),i=c=o([t("esri.views.3d.environment.CloudyWeather")],i);const p=i;export{p as default};
2
+ import{__decorate as o}from"tslib";import{JSONSupport as r}from"../../../core/JSONSupport.js";import{property as e,subclass as t}from"../../../core/accessorSupport/decorators.js";import{enumeration as s}from"../../../core/accessorSupport/decorators/enumeration.js";var c;let i=c=class extends r{constructor(o){super(o),this.type="cloudy",this.cloudCover=.5,this.fogOpacity=0}clone(){return new c({cloudCover:this.cloudCover})}};o([s({cloudy:"cloudy"}),e({json:{write:{isRequired:!0}}})],i.prototype,"type",void 0),o([e({type:Number,nonNullable:!0,range:{min:0,max:1},json:{write:!0}})],i.prototype,"cloudCover",void 0),i=c=o([t("esri.views.3d.environment.CloudyWeather")],i);const p=i;export{p as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as o}from"tslib";import{JSONSupport as r}from"../../../core/JSONSupport.js";import{property as t,subclass as e}from"../../../core/accessorSupport/decorators.js";import{enumeration as s}from"../../../core/accessorSupport/decorators/enumeration.js";var n;let i=n=class extends r{constructor(o){super(o),this.type="foggy",this.fogStrength=.5}clone(){return new n({fogStrength:this.fogStrength})}};o([s({foggy:"foggy"}),t({json:{write:{isRequired:!0}}})],i.prototype,"type",void 0),o([t({type:Number,nonNullable:!0,range:{min:0,max:1},json:{write:!0}})],i.prototype,"fogStrength",void 0),i=n=o([e("esri.views.3d.environment.FoggyWeather")],i);const p=i;export{p as default};
2
+ import{__decorate as t}from"tslib";import{JSONSupport as o}from"../../../core/JSONSupport.js";import{lerp as r}from"../../../core/mathUtils.js";import{property as e,subclass as s}from"../../../core/accessorSupport/decorators.js";import{enumeration as i}from"../../../core/accessorSupport/decorators/enumeration.js";var n;let g=n=class extends o{constructor(t){super(t),this.type="foggy",this.fogStrength=.5}clone(){return new n({fogStrength:this.fogStrength})}get fogOpacity(){return r(3e-5,.005,this.fogStrength**3)}};t([i({foggy:"foggy"}),e({json:{write:{isRequired:!0}}})],g.prototype,"type",void 0),t([e({type:Number,nonNullable:!0,range:{min:0,max:1},json:{write:!0}})],g.prototype,"fogStrength",void 0),g=n=t([s("esri.views.3d.environment.FoggyWeather")],g);const p=g;export{p as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as o}from"tslib";import{JSONSupport as r}from"../../../core/JSONSupport.js";import{property as e,subclass as t}from"../../../core/accessorSupport/decorators.js";import{enumeration as i}from"../../../core/accessorSupport/decorators/enumeration.js";var n;let p=n=class extends r{constructor(o){super(o),this.type="rainy",this.cloudCover=.5,this.precipitation=.5}clone(){return new n({cloudCover:this.cloudCover,precipitation:this.precipitation})}};o([i({rainy:"rainy"}),e({json:{write:{isRequired:!0}}})],p.prototype,"type",void 0),o([e({type:Number,nonNullable:!0,range:{min:0,max:1},json:{write:!0}})],p.prototype,"cloudCover",void 0),o([e({type:Number,nonNullable:!0,range:{min:0,max:1},json:{write:!0}})],p.prototype,"precipitation",void 0),p=n=o([t("esri.views.3d.environment.RainyWeather")],p);const s=p;export{s as default};
2
+ import{__decorate as r}from"tslib";import{JSONSupport as o}from"../../../core/JSONSupport.js";import{lerp as e}from"../../../core/mathUtils.js";import{property as t,subclass as i}from"../../../core/accessorSupport/decorators.js";import{enumeration as p}from"../../../core/accessorSupport/decorators/enumeration.js";var n;let s=n=class extends o{constructor(r){super(r),this.type="rainy",this.cloudCover=.5,this.precipitation=.5}clone(){return new n({cloudCover:this.cloudCover,precipitation:this.precipitation})}get fogOpacity(){return e(4e-6,2e-4,this.precipitation**3)}};r([p({rainy:"rainy"}),t({json:{write:{isRequired:!0}}})],s.prototype,"type",void 0),r([t({type:Number,nonNullable:!0,range:{min:0,max:1},json:{write:!0}})],s.prototype,"cloudCover",void 0),r([t({type:Number,nonNullable:!0,range:{min:0,max:1},json:{write:!0}})],s.prototype,"precipitation",void 0),s=n=r([i("esri.views.3d.environment.RainyWeather")],s);const a=s;export{a as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as o}from"tslib";import{JSONSupport as e}from"../../../core/JSONSupport.js";import{property as r,subclass as t}from"../../../core/accessorSupport/decorators.js";import{enumeration as i}from"../../../core/accessorSupport/decorators/enumeration.js";var s;let n=s=class extends e{constructor(o){super(o),this.type="snowy",this.cloudCover=.5,this.precipitation=.5,this.snowCover="disabled"}clone(){return new s({cloudCover:this.cloudCover,precipitation:this.precipitation,snowCover:this.snowCover})}};o([i({snowy:"snowy"}),r({json:{write:{isRequired:!0}}})],n.prototype,"type",void 0),o([r({type:Number,nonNullable:!0,range:{min:0,max:1},json:{write:!0}})],n.prototype,"cloudCover",void 0),o([r({type:Number,nonNullable:!0,range:{min:0,max:1},json:{write:!0}})],n.prototype,"precipitation",void 0),o([r({type:["enabled","disabled"],nonNullable:!0,json:{write:!0}})],n.prototype,"snowCover",void 0),n=s=o([t("esri.views.3d.environment.SnowyWeather")],n);const p=n;export{p as default};
2
+ import{__decorate as o}from"tslib";import{JSONSupport as e}from"../../../core/JSONSupport.js";import{lerp as r}from"../../../core/mathUtils.js";import{property as t,subclass as i}from"../../../core/accessorSupport/decorators.js";import{enumeration as s}from"../../../core/accessorSupport/decorators/enumeration.js";var n;let p=n=class extends e{constructor(o){super(o),this.type="snowy",this.cloudCover=.5,this.precipitation=.5,this.snowCover="disabled"}clone(){return new n({cloudCover:this.cloudCover,precipitation:this.precipitation,snowCover:this.snowCover})}get fogOpacity(){return r(4e-6,2e-4,this.precipitation**3)}};o([s({snowy:"snowy"}),t({json:{write:{isRequired:!0}}})],p.prototype,"type",void 0),o([t({type:Number,nonNullable:!0,range:{min:0,max:1},json:{write:!0}})],p.prototype,"cloudCover",void 0),o([t({type:Number,nonNullable:!0,range:{min:0,max:1},json:{write:!0}})],p.prototype,"precipitation",void 0),o([t({type:["enabled","disabled"],nonNullable:!0,json:{write:!0}})],p.prototype,"snowCover",void 0),p=n=o([i("esri.views.3d.environment.SnowyWeather")],p);const a=p;export{a as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as o}from"tslib";import{JSONSupport as r}from"../../../core/JSONSupport.js";import{property as e,subclass as t}from"../../../core/accessorSupport/decorators.js";import{enumeration as s}from"../../../core/accessorSupport/decorators/enumeration.js";var n;let i=n=class extends r{constructor(o){super(o),this.type="sunny",this.cloudCover=.5}clone(){return new n({cloudCover:this.cloudCover})}};o([s({sunny:"sunny"}),e({json:{write:{isRequired:!0}}})],i.prototype,"type",void 0),o([e({type:Number,nonNullable:!0,range:{min:0,max:1},json:{write:!0}})],i.prototype,"cloudCover",void 0),i=n=o([t("esri.views.3d.environment.SunnyWeather")],i);const p=i;export{p as default};
2
+ import{__decorate as o}from"tslib";import{JSONSupport as r}from"../../../core/JSONSupport.js";import{property as e,subclass as t}from"../../../core/accessorSupport/decorators.js";import{enumeration as s}from"../../../core/accessorSupport/decorators/enumeration.js";var n;let i=n=class extends r{constructor(o){super(o),this.type="sunny",this.cloudCover=.5,this.fogOpacity=0}clone(){return new n({cloudCover:this.cloudCover})}};o([s({sunny:"sunny"}),e({json:{write:{isRequired:!0}}})],i.prototype,"type",void 0),o([e({type:Number,nonNullable:!0,range:{min:0,max:1},json:{write:!0}})],i.prototype,"cloudCover",void 0),i=n=o([t("esri.views.3d.environment.SunnyWeather")],i);const p=i;export{p as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import has from"../../../core/has.js";import t from"../../../core/Logger.js";import{destroyMaybe as i,removeMaybe as s}from"../../../core/maybe.js";import{throwIfAborted as r}from"../../../core/promiseUtils.js";import{initial as o,watch as a,when as n}from"../../../core/reactiveUtils.js";import{schedule as l}from"../../../core/scheduling.js";import{property as c,subclass as d}from"../../../core/accessorSupport/decorators.js";import{fromMat4 as h,invert as m}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as u,IDENTITY as p}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{create as b}from"../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{fromValues as f}from"../../../core/libs/gl-matrix-2/factories/quatf64.js";import{normalize as y,sub as g,dot as _,set as v}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as w,freeze as x,clone as T,fromValues as j,ZEROS as C}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromValues as O,clone as M,ONES as E}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{isMoon as R,isMars as V,getReferenceEllipsoid as U,SphericalECEFSpatialReferenceLike as H}from"../../../geometry/ellipsoidUtils.js";import{computeTranslationToOriginAndRotation as S}from"../../../geometry/projection/computeTranslationToOriginAndRotation.js";import{localLinearScaleFactors as D}from"../../../geometry/projection/localLinearScaleFactors.js";import{projectVectorToVector as I}from"../../../geometry/projection/projectVectorToVector.js";import{create as P}from"../../../geometry/support/aaBoundingRect.js";import{isCGCS2000 as L}from"../../../geometry/support/spatialReferenceUtils.js";import{BufferViewVec4f as k,BufferViewVec4u8 as A,BufferViewVec4u16 as F,BufferViewVec3f as G,BufferViewVec3u8 as B,BufferViewVec3u16 as z,BufferViewVec2f as N,BufferViewUint32 as W,BufferViewUint16 as q}from"../../../geometry/support/buffer/BufferView.js";import $ from"../../../layers/support/SceneModification.js";import{getElevationOffsetInMeters as Z}from"../../../support/elevationInfoUtils.js";import{IntegratedMesh3DTilesLayerWorkerHandle as J}from"./IntegratedMesh3DTilesLayerWorkerHandle.js";import{LayerView3D as X}from"./LayerView3D.js";import{Lyr3DViewPerformanceInfo as Y}from"./Lyr3DViewPerformanceInfo.js";import{addLayerViewToWasm as Q,removeLayerViewFromWasm as K,getLyr3DWasm as ee}from"./Lyr3DWasm.js";import{toWasmModification as te}from"./SceneLayerWorkerHandle.js";import{LayerElevationProvider as ie}from"./i3s/LayerElevationProvider.js";import{IntegratedMesh3DTilesLayerView3DSymbol as se}from"./support/integratedMesh3DTilesLayerViewInstanceUtils.js";import{primTypeConversion as re,alphaModeConversion as oe,faceCullingConversion as ae,wrapModeConversion as ne}from"./support/lyr3dTypeConversions.js";import{makeScheduleFunction as le}from"./support/makeScheduleFunction.js";import{Tiles3DMeshIntersectionHandler as ce}from"./support/Tiles3DMeshIntersectionHandler.js";import{Frustum as de}from"../state/Frustum.js";import{ElevationRange as he}from"../support/ElevationRange.js";import{toBoundingRect as me}from"../support/extentUtils.js";import{Obb as ue}from"../support/orientedBoundingBox.js";import{glLayout as pe}from"../support/buffer/glUtil.js";import{ComponentGeometryParameters as be,SourceGeometry as fe}from"../webgl-engine/collections/Component/SourceGeometry.js";import{Transform as ye}from"../webgl-engine/collections/Component/Transform.js";import{RenderTexture as ge}from"../webgl-engine/core/material/RenderTexture.js";import{ManagedTexture as _e}from"../webgl-engine/lib/ManagedTexture.js";import{compressNormals as ve}from"../webgl-engine/lib/Normals.js";import{advancedMRRFactors as we}from"../webgl-engine/materials/pbrUtils.js";import xe from"../../layers/LayerView.js";import{spatialReferenceIncompatibleError as Te,isInEffectiveScaleRange as je,validateScaleRange as Ce}from"../../support/layerViewUtils.js";import{TaskPriority as Oe}from"../../support/Scheduler.js";import{TextureCompressionTracker as Me}from"../../support/TextureCompressionTracker.js";import{alphaCutoff as Ee}from"../../../webscene/support/AlphaCutoff.js";var Re;let Ve=class extends(X(xe)){static{Re=se}constructor(e){super(e),this[Re]=!0,this.type="integrated-mesh-3dtiles",this._modifications=new Array,this._visibleGeometryChangedSchedulerHandle=null,this._wasmLayerId=-1,this.ignoresMemoryFactor=!1,this._usedMemory=0,this._cacheMemory=0,this.drapeTargetType=1,this._replacesTerrain=!1,this._isUsedAsGroundLayer=!1,this._applySSAO=!has("disable-feature:im-ssao"),this._imShading=!!has("enable-feature:im-shading"),this._imVertexNormals=!!has("enable-feature:im-vertex-normals"),this._lyrHandleToObjects=new Map,this._visibleObjects=new Set,this._loadedObjects=new Set,this._compressionTracker=new Me,this._dbgFlags=new Set;const t=e.view.resourceController;this._memCache=t.memoryController.newCache(`IM3DTiles-${this.uid}`,e=>this._deletePerObjectData(e)),this._replacesTerrain=e.layer.replacesTerrain,this._isUsedAsGroundLayer=e.layer.isUsedAsGroundLayer,this._frameTask=t.scheduler.registerTask(Oe.TILES3D,this),this._frustum=new de(e.view.renderCoordsHelper)}tryRecycleWith(e,t){return this.canRecycleWith(e)?e.load(t).then(()=>{r(t);const i=this.layer.queryElevationCallback;this.layer=e,this.layer.queryElevationCallback=i}):null}canRecycleWith(e){return e.url===this.layer.url&&"integrated-mesh-3dtiles"===e.type&&e.replacesTerrain===this._replacesTerrain&&e.isUsedAsGroundLayer===this._isUsedAsGroundLayer}initialize(){this._dbg(2,"Tiles3DLayerView3D initialize() called");const{view:e}=this;if(this._workerHandle=new J(le(e.resourceController)),this._updatingHandles.add(()=>this.layer.modifications,()=>this._loadModifications(),o),!this._canProjectWithoutEngine())throw Te("layer",this.layer.spatialReference.wkid,e.renderSpatialReference?.wkid);const t=Q(this).then(t=>{this._wasmLayerId=t,this._intersectionHandler=new ce(this),e.sceneIntersectionHelper.addIntersectionHandler(this._intersectionHandler),this._updatingHandles.add(()=>this.slicePlaneEnabled,e=>this._slicePlaneEnabledChange(e)),this._updatingHandles.add(()=>this._modifications,()=>this._modificationsChanged()),this._updatingHandles.add(()=>this.fullOpacity,()=>this._opacityChange()),this._updatingHandles.add(()=>e.clippingArea,()=>this._clippingAreaChanged(),o),this._updatingHandles.add(()=>e.state.contentCamera,()=>this._cameraChanged(),o),this._elevationProvider=new ie({view:e,layerElevationSource:this,intersectionHandler:this._intersectionHandler});const i=this._replacesTerrain?0:1;e.elevationProvider.register(i,this._elevationProvider),e.overlayManager.registerDrapeTarget(this),this.addHandles([a(()=>this.layer.elevationInfo,e=>this._elevationInfoChanged(e)),n(()=>this.fullOpacity,()=>this._opacityChange()),a(()=>this.suspended,e=>this._wasm?.setEnabled(this,!e),o)])});this.layer.queryElevationCallback=(e,t)=>this._wasm.queryElevation(this,e,t),this.addResolvingPromise(t)}destroy(){this._dbg(2,"Tiles3DLayerView3D destroy() called"),this._workerHandle?.destroyContextAndSelf(this.uid),K(this),this.layer.queryElevationCallback=null,this._intersectionHandler&&(this.view.sceneIntersectionHelper.removeIntersectionHandler(this._intersectionHandler),this._intersectionHandler.destroy(),this._intersectionHandler=null),this._elevationProvider&&(this._elevationProvider.notifyObjectsChangedFunctional(e=>this.forEachComponentObject(t=>e(t.obb))),this.view.elevationProvider.unregister(this._elevationProvider),this._elevationProvider=null),this.view.overlayManager.unregisterDrapeTarget(this),this._lyrHandleToObjects.forEach(e=>this.freeObject(e)),this._lyrHandleToObjects.clear(),this._visibleObjects.clear(),this._loadedObjects.clear(),this._usedMemory=0,this._cacheMemory=0,this._memCache.destroy(),this._frameTask.remove(),this._updatingHandles=i(this._updatingHandles),this.emit("visible-geometry-changed"),this._visibleGeometryChangedSchedulerHandle=s(this._visibleGeometryChangedSchedulerHandle)}get fullOpacity(){return this.layer.replacesTerrain?this.view.map.ground.opacity:1}get hasModifications(){return this._modifications&&this._modifications.length>0}_opacityChange(){const{fullOpacity:e}=this;this.forEachComponentObject(t=>this._collection.updateObjectOpacity(t,e))}_cameraChanged(){const e=this._frustum;e.update(this.view.state.contentCamera);const t=this._visibleObjects;let i=!1;this._loadedObjects.forEach(s=>{const r=s.obb?.intersectsFrustum(e)??!1;r!==s.isVisible&&(s.isVisible=r,r?t.add(s):t.delete(s),s.componentObjects.forEach(e=>this._collection.setObjectVisibility(e,r)),i||=this._isVisibileElevationRangeModifiedByChangedTileVisbility(r,s.elevationRange))}),i&&this._setVisibleElevationRangeDirty()}intersect(e,t,i,s){this._intersectionHandler.intersect(e,t,i,s,null,!1)}get ready(){return!this.layer.replacesTerrain||!!this._wasm?.isTerrainReady}_modificationsChanged(){const e=this.layer.spatialReference,t=te(this._layerClippingArea,this._modifications,e);this._wasm?.setMeshModifications(this,t)}_clippingAreaChanged(){const e=this.layer.spatialReference,t=P();this._layerClippingArea=me(this.view.clippingArea,t,e)?t:null,this._modificationsChanged()}_visibleGeometryChanged(){this._visibleGeometryChangedSchedulerHandle??=l(()=>{this.emit("visible-geometry-changed"),this._visibleGeometryChangedSchedulerHandle=null})}_slicePlaneEnabledChange(e){this._intersectionHandler&&(this._intersectionHandler.slicePlaneEnabled=e&&!this.layer.replacesTerrain),this.forEachComponentObject(t=>t.updateMaterial({slicePlaneEnabled:e}))}_elevationInfoChanged(e){this._wasm?.setLayerOffset(this,Z(e))}get _wasm(){return ee(this.view)}get wasmLayerId(){return this._wasmLayerId}get usedMemory(){return this._usedMemory}get unloadedMemory(){return 0}get cachedMemory(){return this._cacheMemory}get visibleAtCurrentScale(){return this.layer.isUsedAsGroundLayer||je(this.layer.effectiveScaleRange,this.view.scale)}canResume(){const e=this.layer&&"effectiveScaleRange"in this.layer?this.layer.effectiveScaleRange:null;return this.visible&&this.layer?.loaded&&this.parent&&!this.parent.suspended&&this.view?.ready&&(this.layer.isUsedAsGroundLayer||Ce(e)&&this.visibleAtCurrentScale)&&this.visibleAtCurrentTimeExtent||!1}get performanceInfo(){let e=0,t=0,i=0,s=0,r=0,o=0;return this._lyrHandleToObjects.forEach(a=>{a.isLoaded?(e+=a.textureMemoryUsage,t+=a.vboMemoryUsage,r++):(i+=a.textureMemoryUsage,s+=a.vboMemoryUsage,o++)}),new Y(this.usedMemory,r,o,Se(t),Se(e),Se(s),Se(i))}_canProjectWithoutEngine(){if(this.view.state.isLocal){const e=this.view.renderSpatialReference?.isWebMercator?3857:this.view.renderSpatialReference?.wkid??-1;if(3857!==e&&32662!==e)return!1}return!0}get _stage(){return this.view.stage}get _collection(){return this._stage.renderView.componentObjectCollection}get elevationProvider(){return this._elevationProvider}get elevationOffset(){return Z(this.layer.elevationInfo)}get elevationRange(){const e=this.fullExtent;return e?.zmin&&e?.zmax?new he(e.zmin,e.zmax):null}getElevationRange(e){return this._intersectionHandler.getElevationRange(e)}get visibleElevationRange(){const e=new he;0===this._visibleObjects.size?e.setElevationRangeValues(0,0):(e.setElevationRangeValues(1/0,-1/0),this._forEachRelevantVisibleTile(t=>e.expandElevationRange(t.elevationRange)),e.minElevation===1/0&&e.setElevationRangeValues(0,0));const t=this._get("visibleElevationRange");return t&&t.minElevation===e.minElevation&&t.maxElevation===e.maxElevation?t:e}_setVisibleElevationRangeDirty(){this.notifyChange("visibleElevationRange")}_forEachRelevantVisibleTile(e){const{view:t}=this,{spatialReference:i}=t,s=i.isWGS84||i.isWebMercator||L(i)||R(i)||V(i);if(this.view.state.isGlobal||!s)return this.forEachVisibleTile(e);const r=U(i).radius,{eye:o,viewForward:a,near:n}=t.state.camera,l=y(w(),a),c=500,d=Math.max(o[2],c),h=d+r,m=Math.sqrt(h**2-r**2),u=Math.abs(Math.atan2(m,r))*r,p=d>.5*r?.5*Math.PI*r:u,b=w();this.forEachVisibleTile(t=>{const{mbsRadius:i,mbsCenter:s}=t;if(i<0)return;g(b,s,o);const r=_(b,l);Math.abs(r)<p&&r+i>n&&r-i<p&&e(t)})}get fullExtent(){return this.layer.fullExtent}forEachComponentObject(e){this._forEachObject(this._lyrHandleToObjects.values(),e)}forEachVisibleTile(e){for(const t of this._visibleObjects)e(t)}forEachTile(e){for(const t of this._loadedObjects)e(t)}forEachVisibleComponentObject(e){this._forEachObject(this._visibleObjects,e)}_forEachObject(e,t){for(const{componentObjects:i}of e)for(const e of i)t(e)}isUpdating(){const e=this._wasm;return this._wasmLayerId>=0&&null!=e&&(e.isUpdating(this._wasmLayerId)||this._compressionTracker.compressing)}get readyToRun(){return!!this._frameTask?.readyToRun}runTask(e){this._frameTask.processQueue(e)}updatingFlagChanged(){this.notifyChange("updating")}async createRenderable(e){if(this.destroyed||this.destroying)throw new Error("IntegratedMesh3DTilesLayerView3D: createRenderable called after destroy");const{meshData:t}=e;if(!ke(t))throw new Error("meshData not valid");const i=new Map;let s;try{s=this._createPrimitiveTextureBundles(t,i)}catch(o){throw i.forEach(e=>this._stage.removeTexture(e)),o}let r=null;try{if(r=await this._createRenderableMain(t,s),this.destroyed)throw new Error("IntegratedMesh3DTilesLayerView3D: createRenderable aborted due to destroyed instance");const{tileObb:o,componentObjects:a,elevationRange:n}=r;let l=0,c=0,d=0;for(const e of a){const{texture:t,textureMetallicRoughness:i,textureEmissive:s,textureOcclusion:r,textureNormal:o}=e.renderable.drawParameters;l+=(t?.usedMemory??0)+(i?.usedMemory??0)+(s?.usedMemory??0)+(r?.usedMemory??0)+(o?.usedMemory??0),c+=this._collection.getObjectGPUMemoryUsage(e),d+=e.intersectionGeometry.usedMemory}const h=Array.from(i.values()),m=new He(e.handle,a,h,d,c,l,o,e.stableNodeId,e.nodeDepth,n);this._lyrHandleToObjects.set(e.handle,m),this._memCache.put(Ie(m.handle),m);const{usedMemory:u}=m;return this._cacheMemory+=u,{memUsageBytes:u}}catch(o){throw s.forEach(e=>e.cleanup()),r?.componentObjects.forEach(e=>this._collection.destroyObject(e)),i.forEach(e=>this._stage.removeTexture(e)),o}}_createPrimitiveTextureBundles(e,t){const i=new Array,s=e.desc.prims.length;try{const r=e.desc;for(let o=0;o<s;o++){const s=r.prims[o].materialId,a=r.materials&&null!=s?r.materials[s]:null;let n=Promise.resolve(Pe),l=null,c=null,d=null,h=null,m=null;if(a){const i="Pbr"===a.lightingModel;l=this._getTexture(a.baseColorTex,e,t),c=i?this._getTexture(a.metalTex,e,t):null,d=i?this._getTexture(a.emissiveTex,e,t):null,h=i?this._getTexture(a.occlusionTex,e,t):null,m=i?this._getTexture(a.normalTex,e,t):null;const s=[l,c,d,h,m].map(e=>e?.loadPromise??null);n=Promise.all(s)}i.push(new Le(n,l,c,d,h,m))}}catch(r){throw i.forEach(e=>e.cleanup()),r}return i}async _createRenderableMain(e,t){if(this.destroyed||this.destroying)throw new Error("IntegratedMesh3DTilesLayerView3D: createRenderableMain called after destroy");const i=new Array,s=e.desc,r=e.data.buffer,o=s.prims.length,a=x(...s.origin),n=this.view.basemapTerrain.spatialReference,l=this.view.state.isGlobal;let c=p;if(l){const e=b();S(H,a,e,n),c=h(u(),e)}if(null==s.obb)throw new Error("meshData.desc.obb undefined");const d=De(s.obb),f=l?U(this.view.spatialReference).radius:0,y=new Array;try{for(let i=0;i<o;i++){const e=s.prims[i],o=t[i];this._dbgFlags.has(2)&&this._dbg(2,JSON.stringify(e));if(null==re[e.ptype]){this._dbg(2,"[Unsupported Feature] Unsupported primitive mode ("+e.ptype+"). Skipping primitive."),o.cleanup();continue}const{positionView:a,normalsData:n,colorView:l,texCoord0Data:c,indicesView:d}=this.getBufferViews(e,r);if(null==a||null==d){o.cleanup();continue}const h=a.count,m=(e,t)=>null==e||e===h||(this._dbg(3,`${t} !== numPos. Skipping primitive.`),!1);m(null!=c?c.length/2:void 0,"numTexcoord")&&m(l?.count,"numColors")&&m(n?.length,"normals")?y.push({componentIndex:i,positionView:a,indicesView:d,texCoord0Data:c,colorView:l,normalsData:n}):o.cleanup()}const{vertexProcessingOutputs:e,obbHalfSizeAccumulator:h,elevationRange:b}=await this._workerHandle.processTiles3DVertices(y,a,f,l,c,d,this._imVertexNormals);if(this.destroyed)throw new Error("IntegratedMesh3DTilesLayerView3D: createRenderableMain aborted due to destroyed instance");const g=s.materials,_=c!==p,v=_?m(u(),c)??p:p;if(await Promise.all(t.map(e=>e.materialPromise)),this.destroyed)throw new Error("IntegratedMesh3DTilesLayerView3D: createRenderableMain aborted due to destroyed instance");for(const r of e){const{componentIndex:e,positionView:o,indicesView:l,layout:c,textureCoordinateType:h,interleavedVertexData:m,indices:u}=r,p=s.prims[e],b=t[e],f=d.clone(),y=pe(c),x=new Uint32Array([0,l.typedBuffer.length]),T=new be(y,this._imShading?2:0,h,_?1:0,0),j=new fe({interleavedVertexData:m,vertexCount:m.byteLength/y[0].stride,indexData:u},{positions:o.typedBuffer,indices:l.typedBuffer},x,T),C=this.view.renderSpatialReference,M=w(),E=[1,1,1];D(a,C,E,n)||this._dbg(3,"Unsupported coordinate system for IM overlay"),I(a,C,M,n);const R=g&&null!=p.materialId?g[p.materialId]:null,V=this._createComponentMaterialInitParameters(R,b);V.baseColorTexture||this._dbg(3,"No colour texture 1");const U=this._collection.createObject({toMapSpace:O(M[0],M[1],E[0],E[1]),transform:new ye(a,v),obb:f,geometry:j,elevationAlignable:!1},V);i.push(U)}i.length>0&&d.setHalfSize(h[0],h[1],h[2]);const{fullExtent:x}=this.layer;return x?.hasZ&&x.zmax&&x.zmin&&(b.minElevation=Math.max(b.minElevation,x.zmin),b.maxElevation=Math.min(b.maxElevation,x.zmax)),{tileObb:d,componentObjects:i,elevationRange:b}}catch(g){throw i.forEach(e=>this._collection.destroyObject(e)),g}}_createComponentMaterialInitParameters(e,t){const i="Pbr"===(null!=e?e.lightingModel:"Unlit");let s=E,r=Ee,o=1,a=!1,n=2,l=j(0,0,0);const c=T(we),d=t.baseColorTexture,h=t.metallicRoughnessTexture,m=t.emissionTexture,u=t.occlusionTexture,p=t.normalTexture;return e&&(s=M(e.baseColorFactor),r=e.alphaCutoff??Ee,i&&(v(c,e.metallicFactor,e.roughnessFactor,0),e.emissiveFactor&&(l=e.emissiveFactor)),o=oe[e.alphaMode],a=e.isDoubleSided,n=ae[e.faceCulling??"NotSet"]),{isIntegratedMesh:!0,baseColor:s,textureAlphaCutoff:r,mrrFactors:c,baseColorTexture:d,metallicRoughnessTexture:h,normalTexture:p,occlusionTexture:u,emissionTexture:m,hasParametersFromSource:!1,sphereDepthInterpolate:this.layer.hasGoogleUrl,alphaDiscardMode:o,doubleSided:a,cullFace:n,isGround:this.layer.replacesTerrain,emissiveBaseColor:l,usePBR:i,slicePlaneEnabled:this.slicePlaneEnabled,opacity:this.fullOpacity,polygonOffset:0,ellipsoidMode:1,applySSAO:this._applySSAO}}freeRenderable(e){const t=this._lyrHandleToObjects.get(e);t?(t.isLoaded?(this._loadedObjects.delete(t),this._visibleObjects.delete(t),this._intersectionHandler.removeTile(t),this._usedMemory-=t.usedMemory):this._cacheMemory-=t.usedMemory,this.freeObject(t),this._lyrHandleToObjects.delete(e)):this._dbg(3,`freeRendedrable on non-existent renderable ${e}`)}freeObject(e){const t=Ie(e.handle);this._memCache.pop(t),e.textures.forEach(e=>this._stage.removeTexture(e)),e.componentObjects.forEach(e=>this._collection.destroyObject(e))}setRenderableVisibility(e,t,i){if(this.destroyed||this.destroying)return;const s=this._frustum,r=new Array;let o=!1,a=!1;for(let n=0;n<i;++n){if(!t[n])continue;const i=e[n],l=this._lyrHandleToObjects.get(i);if(l){if(l.isLoaded){this._dbg(3,`Already loaded object marked loaded again ${l.stableNodeId}`);continue}o=!0,l.isLoaded=!0,this._loadedObjects.add(l),this._intersectionHandler.addTile(l),this._usedMemory+=l.usedMemory,this._cacheMemory-=l.usedMemory;const e=l.obb?.intersectsFrustum(s)??!0;l.isVisible=e,e&&(this._visibleObjects.add(l),a||=this._isVisibileElevationRangeModifiedByChangedTileVisbility(e,l.elevationRange)),e&&l.obb&&r.push(l.obb),l.componentObjects.forEach(t=>{this._collection.setObjectVisibility(t,e)}),this._memCache.pop(Ie(i))}else this._dbg(3,`Tried to mark Non existent object ${i} as loaded`)}for(let n=0;n<i;++n){const i=e[n];if(t[n])continue;const s=this._lyrHandleToObjects.get(i);if(s){if(!s.isLoaded){this._dbg(3,`Tried to unload not-loaded object ${s.stableNodeId}`);continue}const e=s.isVisible;this._visibleObjects.delete(s),s.isVisible=!1,s.isLoaded=!1,this._loadedObjects.delete(s),this._intersectionHandler.removeTile(s),e&&(this._visibleGeometryChanged(),a||=this._isVisibileElevationRangeModifiedByChangedTileVisbility(!1,s.elevationRange)),this._usedMemory-=s.usedMemory,this._cacheMemory+=s.usedMemory,e&&s.obb&&r.push(s.obb),s.componentObjects.forEach(e=>{this._collection.setObjectVisibility(e,!1)}),this._memCache.put(Ie(i),s)}else this._dbg(3,`Tried to mark Non existent object ${i} as not loaded`)}o&&this._visibleGeometryChanged(),this._elevationProvider.notifyObjectsChanged(r),a&&this._setVisibleElevationRangeDirty()}setLodPixelThreshold(e){this._wasm?.setLodPixelThreshold(this,e)}_isVisibileElevationRangeModifiedByChangedTileVisbility(e,t){const{visibleElevationRange:i}=this,{minElevation:s,maxElevation:r}=t;return e?s<i.minElevation||r>i.maxElevation:s===i.minElevation||r===i.maxElevation}_getTexture(e,t,i){const s=e&&t.desc?.images?.[e.imageId];if(!s||!t.data?.buffer)return null;const r=i.get(s)??this._createTexture(e,t,i);return r?new ge(this._stage.renderView.textures,r.id):null}_createTexture(e,t,i){const s=e&&t.desc?.images?.[e.imageId];if(!s||!t.data?.buffer)return null;const r=this._stage.renderView.renderingContext.parameters.maxMaxAnisotropy,o=!!s.mipCount||r>1,a=ne[e.wrapMode??"None"];let n=s.alpha?6408:6407;const l=new Uint8Array(t.data.buffer,s.data.byteOffset,s.data.byteCount);let c=null,d=null,h=null;switch(s.format){case"Raw":"R8"===s.pixelFormat?(c=l,n=6403,d=""):"Rgb8"===s.pixelFormat?(c=l,n=6407,d=""):"Rgba8"===s.pixelFormat&&(c=l,n=6408,d="");break;case"Dxt1":c=l,n=6407,d="image/vnd-ms.dds";break;case"Dxt5":c=l,n=6408,d="image/vnd-ms.dds";break;case"Basis":c=l,n=6407,d="image/ktx2";break;case"Png":d="image/png",h=document.createElement("img");break;case"Jpeg":d="image/jpeg",h=document.createElement("img");break;case"Etc2":d="image/ktx",h=document.createElement("img");break;case"Astc":this._dbg(3,"Astc texture not supported");break;case"Pvrtc":this._dbg(3,"Pvrtc texture not supported")}if(h&&d){const e=new Blob([l],{type:d});h.src=URL.createObjectURL(e),c=h}if(c&&null!=d){const e=has("enable-feature:esri-compress-IM-textures")?{compressionTracker:this._compressionTracker}:void 0,t=new _e(c,{mipmap:o,maxAnisotropy:r,encoding:d,wrap:a,pixelFormat:n,compressionOptions:e,noUnpackFlip:!0,width:s.mip0Width,height:s.mip0Height});return this._stage.addTexture(t),i.set(s,t),t}return null}getBufferViews(e,t){let i,s,r,o,a;for(let l=0;l<e.atrbs.length;l++){const a=e.atrbs[l],{view:c}=a,d=void 0,h=c.byteOffset+c.byteCount;try{switch(a.sem){case"Position":3!==c.ncomp||"F32"!==c.type?this._dbg(3,"[Unsupported Feature] Unsupported view for Position ("+c+")"):i=new G(t,c.byteOffset,d,h);break;case"Normal":if(3!==c.ncomp||"F32"!==c.type)this._dbg(3,"[Unsupported Feature] Unsupported view for Normal ("+c+")");else{const e=new G(t,c.byteOffset,d,h);o=new Uint32Array(e.count),ve(e.typedBuffer,new Int16Array(o.buffer,o.byteOffset,2*o.length))}break;case"TexCoord":2!==c.ncomp||"F32"!==c.type?this._dbg(3,"[Unsupported Feature] Unsupported view for Texcoord ("+c+")"):void 0===r&&(r=new N(t,c.byteOffset,d,h).typedBuffer);break;case"Color":4===c.ncomp?("F32"===c.type&&(s=new k(t,c.byteOffset,d,h)),"U8"===c.type&&(s=new A(t,c.byteOffset,d,h)),"U16"===c.type&&(s=new F(t,c.byteOffset,d,h))):3===c.ncomp&&("F32"===c.type&&(s=new G(t,c.byteOffset,d,h)),"U8"===c.type&&(s=new B(t,c.byteOffset,d,h)),"U16"===c.type&&(s=new z(t,c.byteOffset,d,h))),null==s&&this._dbg(2,"[Unsupported Feature] Unsupported view for Color ("+c+")");break;case"FeatureIndex":break;default:this._dbg(2,"[Unsupported Feature] Unsupported semantic ("+a.sem+"). Skipping vertex attribute.")}}catch(n){this._dbg(2,"Error Creating buffer ("+n+"). Skipping vertex attribute.")}}if(e.index){const i=e.index.view,s=void 0,r=i.byteOffset+i.byteCount;switch(e.index.view.type){case"U16":a=new q(t,i.byteOffset,s,r);break;case"U32":a=new W(t,i.byteOffset,s,r);break;default:this._dbg(3,"[Unsupported Feature] index type not supported ("+i.type+").")}}if(null==a&&null!=i){const e=i.count;a=a=e<65535?new q(new Uint16Array(e).buffer):new W(new Uint32Array(e).buffer);for(let t=0;t<e;t++)a.set(t,t)}return{positionView:i,colorView:s,texCoord0Data:r,indicesView:a,normalsData:o}}_loadModifications(){if(this.removeHandles("modifications"),null==this.layer.modifications)return void(this._modifications=[]);const e=this.layer.modifications;this.addHandles(this._updatingHandles.addOnCollectionChange(()=>e,()=>{this._modifications=e.filter(e=>!(this.layer.isUsedAsGroundLayer&&"replace"!==e.type)).toArray(),this._modifications.length<e.length&&t.getLogger(this).info("Ground layers only support replace modifications. Other modification types have been ignored.")},o),"modifications")}_deletePerObjectData(e){this._wasm?.onRenderableEvicted(this,e.handle,e.usedMemory),this.freeRenderable(e.handle)}_dbg(e,i){this._dbgFlags.has(e)&&(3===e?t.getLogger(this).error(i):t.getLogger(this).warn(i))}};e([c()],Ve.prototype,"fullOpacity",null),e([c({readOnly:!0})],Ve.prototype,"ready",null),e([c({type:[$]})],Ve.prototype,"_modifications",void 0),e([c()],Ve.prototype,"_visibleGeometryChangedSchedulerHandle",void 0),e([c()],Ve.prototype,"layer",void 0),e([c({readOnly:!0})],Ve.prototype,"visibleAtCurrentScale",null),e([c({readOnly:!0})],Ve.prototype,"_collection",null),e([c()],Ve.prototype,"elevationOffset",null),e([c({readOnly:!0})],Ve.prototype,"visibleElevationRange",null),Ve=e([d("esri.views.3d.layers.IntegratedMesh3DTilesLayerView3D")],Ve);const Ue=Ve;class He{constructor(e,t,i,s,r,o,a,n,l,c){this.handle=e,this.componentObjects=t,this.textures=i,this.cpuMemoryUsage=s,this.vboMemoryUsage=r,this.textureMemoryUsage=o,this.obb=a,this.stableNodeId=n,this.nodeDepth=l,this.elevationRange=c,this.bvhIntersectionGeneration=0,this.isLoaded=!1,this.isVisible=!1;const d=w();a?.getCenter(d),this._obbCenterX=d[0],this._obbCenterY=d[1],this._obbCenterZ=d[2];const h=a?.radius??-1;this._obbRadius=h,this._obbRadiusSquared=h*h;const m=a?.halfSize;this._obbShortestHalfsize=m?Math.min(m[0],m[1],m[2]):0,this._mbsCenter=a?T(a.center):C}get usedMemory(){return this.textureMemoryUsage+this.vboMemoryUsage+this.cpuMemoryUsage}get mbsRadius(){return this._obbRadius}get mbsCenter(){return this._mbsCenter}boundingVolumeIntersectsRay(e,t){if(!this.obb)return!0;const{_obbCenterX:i,_obbCenterY:s,_obbCenterZ:r}=this,o=i-e[0],a=s-e[1],n=r-e[2],l=o*t[0]+a*t[1]+n*t[2];return o*o+a*a+n*n-l*l<=this._obbRadiusSquared&&this.obb.intersectRay(e,t)}boundingVolumeIntersectsSphere(e){const t=this._obbRadius;if(t<0)return!0;const i=e.center,s=e.radius,r=t+s,o=this._obbCenterX-i[0];if(o>r)return!1;const a=this._obbCenterY-i[1];if(a>r)return!1;const n=this._obbCenterZ-i[2];if(n>r)return!1;const l=o*o+a*a+n*n;if(l>r*r)return!1;if(l<=(this._obbShortestHalfsize+s)**2)return!0;return Math.sqrt(l)+t<=s||(this.obb?.intersectSphere(e)??!0)}}function Se(e){return Math.round(e/1048.576)/1e3}function De(e){return new ue(e.center,e.halfSize,f(...e.quaternion))}function Ie(e){return`${e}`}const Pe=new Array;class Le{constructor(e,t,i,s,r,o){this.materialPromise=e,this.baseColorTexture=t,this.metallicRoughnessTexture=i,this.emissionTexture=s,this.occlusionTexture=r,this.normalTexture=o}cleanup(){this.baseColorTexture?.dispose(),this.metallicRoughnessTexture?.dispose(),this.emissionTexture?.dispose(),this.occlusionTexture?.dispose(),this.normalTexture?.dispose()}}function ke(e){return null!=e.data&&("string"==typeof e.desc&&(e.desc=JSON.parse(e.desc)),null!=e.desc)}export{Ue as default};
2
+ import{__decorate as e}from"tslib";import has from"../../../core/has.js";import t from"../../../core/Logger.js";import{destroyMaybe as i,removeMaybe as s}from"../../../core/maybe.js";import{throwIfAborted as r}from"../../../core/promiseUtils.js";import{initial as o,watch as a,when as n}from"../../../core/reactiveUtils.js";import{schedule as l}from"../../../core/scheduling.js";import{property as c,subclass as d}from"../../../core/accessorSupport/decorators.js";import{fromMat4 as h,invert as u}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as m,IDENTITY as p}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{create as b}from"../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{fromValues as f}from"../../../core/libs/gl-matrix-2/factories/quatf64.js";import{normalize as g,sub as y,dot as _,set as v}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as w,freeze as x,clone as T,fromValues as j,ZEROS as C}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromValues as O,clone as E,ONES as M}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{isMoon as R,isMars as V,getReferenceEllipsoid as S,SphericalECEFSpatialReferenceLike as U}from"../../../geometry/ellipsoidUtils.js";import{computeTranslationToOriginAndRotation as H}from"../../../geometry/projection/computeTranslationToOriginAndRotation.js";import{localLinearScaleFactors as D}from"../../../geometry/projection/localLinearScaleFactors.js";import{projectVectorToVector as P}from"../../../geometry/projection/projectVectorToVector.js";import{create as I}from"../../../geometry/support/aaBoundingRect.js";import{isCGCS2000 as k}from"../../../geometry/support/spatialReferenceUtils.js";import{BufferViewVec4f as L,BufferViewVec4u8 as A,BufferViewVec4u16 as F,BufferViewVec3f as G,BufferViewVec3u8 as B,BufferViewVec3u16 as z,BufferViewVec2f as N,BufferViewUint32 as W,BufferViewUint16 as q}from"../../../geometry/support/buffer/BufferView.js";import $ from"../../../layers/support/SceneModification.js";import{getElevationOffsetInMeters as X}from"../../../support/elevationInfoUtils.js";import{IntegratedMesh3DTilesLayerWorkerHandle as Z}from"./IntegratedMesh3DTilesLayerWorkerHandle.js";import{LayerView3D as J}from"./LayerView3D.js";import{Lyr3DViewPerformanceInfo as Y}from"./Lyr3DViewPerformanceInfo.js";import{addLayerViewToWasm as Q,removeLayerViewFromWasm as K,getLyr3DWasm as ee}from"./Lyr3DWasm.js";import{toWasmModification as te}from"./SceneLayerWorkerHandle.js";import{LayerElevationProvider as ie}from"./i3s/LayerElevationProvider.js";import{IntegratedMesh3DTilesLayerView3DSymbol as se}from"./support/integratedMesh3DTilesLayerViewInstanceUtils.js";import{primTypeConversion as re,alphaModeConversion as oe,faceCullingConversion as ae,wrapModeConversion as ne}from"./support/lyr3dTypeConversions.js";import{makeScheduleFunction as le}from"./support/makeScheduleFunction.js";import{Tiles3DMeshIntersectionHandler as ce}from"./support/Tiles3DMeshIntersectionHandler.js";import{Frustum as de}from"../state/Frustum.js";import{ElevationRange as he}from"../support/ElevationRange.js";import{toBoundingRect as ue}from"../support/extentUtils.js";import{Obb as me}from"../support/orientedBoundingBox.js";import{glLayout as pe}from"../support/buffer/glUtil.js";import{ComponentGeometryParameters as be,SourceGeometry as fe}from"../webgl-engine/collections/Component/SourceGeometry.js";import{Transform as ge}from"../webgl-engine/collections/Component/Transform.js";import{RenderTexture as ye}from"../webgl-engine/core/material/RenderTexture.js";import{ManagedTexture as _e}from"../webgl-engine/lib/ManagedTexture.js";import{compressNormals as ve}from"../webgl-engine/lib/Normals.js";import{advancedMRRFactors as we}from"../webgl-engine/materials/pbrUtils.js";import xe from"../../layers/LayerView.js";import{spatialReferenceIncompatibleError as Te,isInEffectiveScaleRange as je,validateScaleRange as Ce}from"../../support/layerViewUtils.js";import{TaskPriority as Oe}from"../../support/Scheduler.js";import{TextureCompressionTracker as Ee}from"../../support/TextureCompressionTracker.js";import{CompressedTextureFormat as Me,SizedPixelFormat as Re}from"../../webgl/enums.js";import{alphaCutoff as Ve}from"../../../webscene/support/AlphaCutoff.js";var Se;function Ue(e,t,i){if("image/vnd-ms.dds"===t)switch(i){case"Dxt1":return Me.COMPRESSED_RGB_S3TC_DXT1_EXT;case"Dxt5":return Me.COMPRESSED_RGBA_S3TC_DXT5_EXT;default:return null}if("image/ktx2"===t)return null;switch(e){case 33319:return Re.RG8;case 6407:return Re.RGB8;case 6408:return Re.RGBA8;case 6403:return Re.R8;default:return null}}let He=class extends(J(xe)){static{Se=se}constructor(e){super(e),this[Se]=!0,this.type="integrated-mesh-3dtiles",this._modifications=new Array,this._visibleGeometryChangedSchedulerHandle=null,this._wasmLayerId=-1,this.ignoresMemoryFactor=!1,this._usedMemory=0,this._cacheMemory=0,this.drapeTargetType=1,this._replacesTerrain=!1,this._isUsedAsGroundLayer=!1,this._applySSAO=!has("disable-feature:im-ssao"),this._imShading=!!has("enable-feature:im-shading"),this._imVertexNormals=!!has("enable-feature:im-vertex-normals"),this._lyrHandleToObjects=new Map,this._visibleObjects=new Set,this._loadedObjects=new Set,this._compressionTracker=new Ee,this._dbgFlags=new Set;const t=e.view.resourceController;this._memCache=t.memoryController.newCache(`IM3DTiles-${this.uid}`,e=>this._deletePerObjectData(e)),this._replacesTerrain=e.layer.replacesTerrain,this._isUsedAsGroundLayer=e.layer.isUsedAsGroundLayer,this._frameTask=t.scheduler.registerTask(Oe.TILES3D,this),this._frustum=new de(e.view.renderCoordsHelper)}tryRecycleWith(e,t){return this.canRecycleWith(e)?e.load(t).then(()=>{r(t);const i=this.layer.queryElevationCallback;this.layer=e,this.layer.queryElevationCallback=i}):null}canRecycleWith(e){return e.url===this.layer.url&&"integrated-mesh-3dtiles"===e.type&&e.replacesTerrain===this._replacesTerrain&&e.isUsedAsGroundLayer===this._isUsedAsGroundLayer}initialize(){this._dbg(2,"Tiles3DLayerView3D initialize() called");const{view:e}=this;if(this._workerHandle=new Z(le(e.resourceController)),this._updatingHandles.add(()=>this.layer.modifications,()=>this._loadModifications(),o),!this._canProjectWithoutEngine())throw Te("layer",this.layer.spatialReference.wkid,e.renderSpatialReference?.wkid);const t=Q(this).then(t=>{this._wasmLayerId=t,this._intersectionHandler=new ce(this),e.sceneIntersectionHelper.addIntersectionHandler(this._intersectionHandler),this._updatingHandles.add(()=>this.slicePlaneEnabled,e=>this._slicePlaneEnabledChange(e)),this._updatingHandles.add(()=>this._modifications,()=>this._modificationsChanged()),this._updatingHandles.add(()=>this.fullOpacity,()=>this._opacityChange()),this._updatingHandles.add(()=>e.clippingArea,()=>this._clippingAreaChanged(),o),this._updatingHandles.add(()=>e.state.contentCamera,()=>this._cameraChanged(),o),this._elevationProvider=new ie({view:e,layerElevationSource:this,intersectionHandler:this._intersectionHandler});const i=this._replacesTerrain?0:1;e.elevationProvider.register(i,this._elevationProvider),e.overlayManager.registerDrapeTarget(this),this.addHandles([a(()=>this.layer.elevationInfo,e=>this._elevationInfoChanged(e)),n(()=>this.fullOpacity,()=>this._opacityChange()),a(()=>this.suspended,e=>this._wasm?.setEnabled(this,!e),o)])});this.layer.queryElevationCallback=(e,t)=>this._wasm.queryElevation(this,e,t),this.addResolvingPromise(t)}destroy(){this._dbg(2,"Tiles3DLayerView3D destroy() called"),this._workerHandle?.destroyContextAndSelf(this.uid),K(this),this.layer.queryElevationCallback=null,this._intersectionHandler&&(this.view.sceneIntersectionHelper.removeIntersectionHandler(this._intersectionHandler),this._intersectionHandler.destroy(),this._intersectionHandler=null),this._elevationProvider&&(this._elevationProvider.notifyObjectsChangedFunctional(e=>this.forEachComponentObject(t=>e(t.obb))),this.view.elevationProvider.unregister(this._elevationProvider),this._elevationProvider=null),this.view.overlayManager.unregisterDrapeTarget(this),this._lyrHandleToObjects.forEach(e=>this.freeObject(e)),this._lyrHandleToObjects.clear(),this._visibleObjects.clear(),this._loadedObjects.clear(),this._usedMemory=0,this._cacheMemory=0,this._memCache.destroy(),this._frameTask.remove(),this._updatingHandles=i(this._updatingHandles),this.emit("visible-geometry-changed"),this._visibleGeometryChangedSchedulerHandle=s(this._visibleGeometryChangedSchedulerHandle)}get fullOpacity(){return this.layer.replacesTerrain?this.view.map.ground.opacity:1}get hasModifications(){return this._modifications&&this._modifications.length>0}_opacityChange(){const{fullOpacity:e}=this;this.forEachComponentObject(t=>this._collection.updateObjectOpacity(t,e))}_cameraChanged(){const e=this._frustum;e.update(this.view.state.contentCamera);const t=this._visibleObjects;let i=!1;this._loadedObjects.forEach(s=>{const r=s.obb?.intersectsFrustum(e)??!1;r!==s.isVisible&&(s.isVisible=r,r?t.add(s):t.delete(s),s.componentObjects.forEach(e=>this._collection.setObjectVisibility(e,r)),i||=this._isVisibileElevationRangeModifiedByChangedTileVisbility(r,s.elevationRange))}),i&&this._setVisibleElevationRangeDirty()}intersect(e,t,i,s){this._intersectionHandler.intersect(e,t,i,s,null,!1)}get ready(){return!this.layer.replacesTerrain||!!this._wasm?.isTerrainReady}_modificationsChanged(){const e=this.layer.spatialReference,t=te(this._layerClippingArea,this._modifications,e);this._wasm?.setMeshModifications(this,t)}_clippingAreaChanged(){const e=this.layer.spatialReference,t=I();this._layerClippingArea=ue(this.view.clippingArea,t,e)?t:null,this._modificationsChanged()}_visibleGeometryChanged(){this._visibleGeometryChangedSchedulerHandle??=l(()=>{this.emit("visible-geometry-changed"),this._visibleGeometryChangedSchedulerHandle=null})}_slicePlaneEnabledChange(e){this._intersectionHandler&&(this._intersectionHandler.slicePlaneEnabled=e&&!this.layer.replacesTerrain),this.forEachComponentObject(t=>t.updateMaterial({slicePlaneEnabled:e}))}_elevationInfoChanged(e){this._wasm?.setLayerOffset(this,X(e))}get _wasm(){return ee(this.view)}get wasmLayerId(){return this._wasmLayerId}get usedMemory(){return this._usedMemory}get unloadedMemory(){return 0}get cachedMemory(){return this._cacheMemory}get visibleAtCurrentScale(){return this.layer.isUsedAsGroundLayer||je(this.layer.effectiveScaleRange,this.view.scale)}canResume(){const e=this.layer&&"effectiveScaleRange"in this.layer?this.layer.effectiveScaleRange:null;return this.visible&&this.layer?.loaded&&this.parent&&!this.parent.suspended&&this.view?.ready&&(this.layer.isUsedAsGroundLayer||Ce(e)&&this.visibleAtCurrentScale)&&this.visibleAtCurrentTimeExtent||!1}get performanceInfo(){let e=0,t=0,i=0,s=0,r=0,o=0;return this._lyrHandleToObjects.forEach(a=>{a.isLoaded?(e+=a.textureMemoryUsage,t+=a.vboMemoryUsage,r++):(i+=a.textureMemoryUsage,s+=a.vboMemoryUsage,o++)}),new Y(this.usedMemory,r,o,Ie(t),Ie(e),Ie(s),Ie(i))}_canProjectWithoutEngine(){if(this.view.state.isLocal){const e=this.view.renderSpatialReference?.isWebMercator?3857:this.view.renderSpatialReference?.wkid??-1;if(3857!==e&&32662!==e)return!1}return!0}get _stage(){return this.view.stage}get _collection(){return this._stage.renderView.componentObjectCollection}get elevationProvider(){return this._elevationProvider}get elevationOffset(){return X(this.layer.elevationInfo)}get elevationRange(){const e=this.fullExtent;return e?.zmin&&e?.zmax?new he(e.zmin,e.zmax):null}getElevationRange(e){return this._intersectionHandler.getElevationRange(e)}get visibleElevationRange(){const e=new he;0===this._visibleObjects.size?e.setElevationRangeValues(0,0):(e.setElevationRangeValues(1/0,-1/0),this._forEachRelevantVisibleTile(t=>e.expandElevationRange(t.elevationRange)),e.minElevation===1/0&&e.setElevationRangeValues(0,0));const t=this._get("visibleElevationRange");return t&&t.minElevation===e.minElevation&&t.maxElevation===e.maxElevation?t:e}_setVisibleElevationRangeDirty(){this.notifyChange("visibleElevationRange")}_forEachRelevantVisibleTile(e){const{view:t}=this,{spatialReference:i}=t,s=i.isWGS84||i.isWebMercator||k(i)||R(i)||V(i);if(this.view.state.isGlobal||!s)return this.forEachVisibleTile(e);const r=S(i).radius,{eye:o,viewForward:a,near:n}=t.state.camera,l=g(w(),a),c=500,d=Math.max(o[2],c),h=d+r,u=Math.sqrt(h**2-r**2),m=Math.abs(Math.atan2(u,r))*r,p=d>.5*r?.5*Math.PI*r:m,b=w();this.forEachVisibleTile(t=>{const{mbsRadius:i,mbsCenter:s}=t;if(i<0)return;y(b,s,o);const r=_(b,l);Math.abs(r)<p&&r+i>n&&r-i<p&&e(t)})}get fullExtent(){return this.layer.fullExtent}forEachComponentObject(e){this._forEachObject(this._lyrHandleToObjects.values(),e)}forEachVisibleTile(e){for(const t of this._visibleObjects)e(t)}forEachTile(e){for(const t of this._loadedObjects)e(t)}forEachVisibleComponentObject(e){this._forEachObject(this._visibleObjects,e)}_forEachObject(e,t){for(const{componentObjects:i}of e)for(const e of i)t(e)}isUpdating(){const e=this._wasm;return this._wasmLayerId>=0&&null!=e&&(e.isUpdating(this._wasmLayerId)||this._compressionTracker.compressing)}get readyToRun(){return!!this._frameTask?.readyToRun}runTask(e){this._frameTask.processQueue(e)}updatingFlagChanged(){this.notifyChange("updating")}async createRenderable(e){if(this.destroyed||this.destroying)throw new Error("IntegratedMesh3DTilesLayerView3D: createRenderable called after destroy");const{meshData:t}=e;if(!Ge(t))throw new Error("meshData not valid");const i=new Map;let s;try{s=this._createPrimitiveTextureBundles(t,i)}catch(o){throw i.forEach(e=>this._stage.removeTexture(e)),o}let r=null;try{if(r=await this._createRenderableMain(t,s),this.destroyed)throw new Error("IntegratedMesh3DTilesLayerView3D: createRenderable aborted due to destroyed instance");const{tileObb:o,componentObjects:a,elevationRange:n}=r;let l=0,c=0,d=0;for(const e of a){const{texture:t,textureMetallicRoughness:i,textureEmissive:s,textureOcclusion:r,textureNormal:o}=e.renderable.drawParameters;l+=(t?.usedMemory??0)+(i?.usedMemory??0)+(s?.usedMemory??0)+(r?.usedMemory??0)+(o?.usedMemory??0),c+=this._collection.getObjectGPUMemoryUsage(e),d+=e.intersectionGeometry.usedMemory}const h=Array.from(i.values()),u=new Pe(e.handle,a,h,d,c,l,o,e.stableNodeId,e.nodeDepth,n);this._lyrHandleToObjects.set(e.handle,u),this._memCache.put(Le(u.handle),u);const{usedMemory:m}=u;return this._cacheMemory+=m,{memUsageBytes:m}}catch(o){throw s.forEach(e=>e.cleanup()),r?.componentObjects.forEach(e=>this._collection.destroyObject(e)),i.forEach(e=>this._stage.removeTexture(e)),o}}_createPrimitiveTextureBundles(e,t){const i=new Array,s=e.desc.prims.length;try{const r=e.desc;for(let o=0;o<s;o++){const s=r.prims[o].materialId,a=r.materials&&null!=s?r.materials[s]:null;let n=Promise.resolve(Ae),l=null,c=null,d=null,h=null,u=null;if(a){const i="Pbr"===a.lightingModel;l=this._getTexture(a.baseColorTex,e,t),c=i?this._getTexture(a.metalTex,e,t):null,d=i?this._getTexture(a.emissiveTex,e,t):null,h=i?this._getTexture(a.occlusionTex,e,t):null,u=i?this._getTexture(a.normalTex,e,t):null;const s=[l,c,d,h,u].map(e=>e?.loadPromise??null);n=Promise.all(s)}i.push(new Fe(n,l,c,d,h,u))}}catch(r){throw i.forEach(e=>e.cleanup()),r}return i}async _createRenderableMain(e,t){if(this.destroyed||this.destroying)throw new Error("IntegratedMesh3DTilesLayerView3D: createRenderableMain called after destroy");const i=new Array,s=e.desc,r=e.data.buffer,o=s.prims.length,a=x(...s.origin),n=this.view.basemapTerrain.spatialReference,l=this.view.state.isGlobal;let c=p;if(l){const e=b();H(U,a,e,n),c=h(m(),e)}if(null==s.obb)throw new Error("meshData.desc.obb undefined");const d=ke(s.obb),f=l?S(this.view.spatialReference).radius:0,g=new Array;try{for(let i=0;i<o;i++){const e=s.prims[i],o=t[i];this._dbgFlags.has(2)&&this._dbg(2,JSON.stringify(e));if(null==re[e.ptype]){this._dbg(2,"[Unsupported Feature] Unsupported primitive mode ("+e.ptype+"). Skipping primitive."),o.cleanup();continue}const{positionView:a,normalsData:n,colorView:l,texCoord0Data:c,indicesView:d}=this.getBufferViews(e,r);if(null==a||null==d){o.cleanup();continue}const h=a.count,u=(e,t)=>null==e||e===h||(this._dbg(3,`${t} !== numPos. Skipping primitive.`),!1);u(null!=c?c.length/2:void 0,"numTexcoord")&&u(l?.count,"numColors")&&u(n?.length,"normals")?g.push({componentIndex:i,positionView:a,indicesView:d,texCoord0Data:c,colorView:l,normalsData:n}):o.cleanup()}const{vertexProcessingOutputs:e,obbHalfSizeAccumulator:h,elevationRange:b}=await this._workerHandle.processTiles3DVertices(g,a,f,l,c,d,this._imVertexNormals);if(this.destroyed)throw new Error("IntegratedMesh3DTilesLayerView3D: createRenderableMain aborted due to destroyed instance");const y=s.materials,_=c!==p,v=_?u(m(),c)??p:p;if(await Promise.all(t.map(e=>e.materialPromise)),this.destroyed)throw new Error("IntegratedMesh3DTilesLayerView3D: createRenderableMain aborted due to destroyed instance");for(const r of e){const{componentIndex:e,positionView:o,indicesView:l,layout:c,textureCoordinateType:h,interleavedVertexData:u,indices:m}=r,p=s.prims[e],b=t[e],f=d.clone(),g=pe(c),x=new Uint32Array([0,l.typedBuffer.length]),T=new be(g,this._imShading?2:0,h,_?1:0,0),j=new fe({interleavedVertexData:u,vertexCount:u.byteLength/g[0].stride,indexData:m},{positions:o.typedBuffer,indices:l.typedBuffer},x,T),C=this.view.renderSpatialReference,E=w(),M=[1,1,1];D(a,C,M,n)||this._dbg(3,"Unsupported coordinate system for IM overlay"),P(a,C,E,n);const R=y&&null!=p.materialId?y[p.materialId]:null,V=this._createComponentMaterialInitParameters(R,b);V.baseColorTexture||this._dbg(3,"No colour texture 1");const S=this._collection.createObject({toMapSpace:O(E[0],E[1],M[0],M[1]),transform:new ge(a,v),obb:f,geometry:j,elevationAlignable:!1},V);i.push(S)}i.length>0&&d.setHalfSize(h[0],h[1],h[2]);const{fullExtent:x}=this.layer;return x?.hasZ&&x.zmax&&x.zmin&&(b.minElevation=Math.max(b.minElevation,x.zmin),b.maxElevation=Math.min(b.maxElevation,x.zmax)),{tileObb:d,componentObjects:i,elevationRange:b}}catch(y){throw i.forEach(e=>this._collection.destroyObject(e)),y}}_createComponentMaterialInitParameters(e,t){const i="Pbr"===(null!=e?e.lightingModel:"Unlit");let s=M,r=Ve,o=1,a=!1,n=2,l=j(0,0,0);const c=T(we),d=t.baseColorTexture,h=t.metallicRoughnessTexture,u=t.emissionTexture,m=t.occlusionTexture,p=t.normalTexture;return e&&(s=E(e.baseColorFactor),r=e.alphaCutoff??Ve,i&&(v(c,e.metallicFactor,e.roughnessFactor,0),e.emissiveFactor&&(l=e.emissiveFactor)),o=oe[e.alphaMode],a=e.isDoubleSided,n=ae[e.faceCulling??"NotSet"]),{isIntegratedMesh:!0,baseColor:s,textureAlphaCutoff:r,mrrFactors:c,baseColorTexture:d,metallicRoughnessTexture:h,normalTexture:p,occlusionTexture:m,emissionTexture:u,hasParametersFromSource:!1,sphereDepthInterpolate:this.layer.hasGoogleUrl,alphaDiscardMode:o,doubleSided:a,cullFace:n,isGround:this.layer.replacesTerrain,emissiveBaseColor:l,usePBR:i,slicePlaneEnabled:this.slicePlaneEnabled,opacity:this.fullOpacity,polygonOffset:0,ellipsoidMode:1,applySSAO:this._applySSAO}}freeRenderable(e){const t=this._lyrHandleToObjects.get(e);t?(t.isLoaded?(this._loadedObjects.delete(t),this._visibleObjects.delete(t),this._intersectionHandler.removeTile(t),this._usedMemory-=t.usedMemory):this._cacheMemory-=t.usedMemory,this.freeObject(t),this._lyrHandleToObjects.delete(e)):this._dbg(3,`freeRendedrable on non-existent renderable ${e}`)}freeObject(e){const t=Le(e.handle);this._memCache.pop(t),e.textures.forEach(e=>this._stage.removeTexture(e)),e.componentObjects.forEach(e=>this._collection.destroyObject(e))}setRenderableVisibility(e,t,i){if(this.destroyed||this.destroying)return;const s=this._frustum,r=new Array;let o=!1,a=!1;for(let n=0;n<i;++n){if(!t[n])continue;const i=e[n],l=this._lyrHandleToObjects.get(i);if(l){if(l.isLoaded){this._dbg(3,`Already loaded object marked loaded again ${l.stableNodeId}`);continue}o=!0,l.isLoaded=!0,this._loadedObjects.add(l),this._intersectionHandler.addTile(l),this._usedMemory+=l.usedMemory,this._cacheMemory-=l.usedMemory;const e=l.obb?.intersectsFrustum(s)??!0;l.isVisible=e,e&&(this._visibleObjects.add(l),a||=this._isVisibileElevationRangeModifiedByChangedTileVisbility(e,l.elevationRange)),e&&l.obb&&r.push(l.obb),l.componentObjects.forEach(t=>{this._collection.setObjectVisibility(t,e)}),this._memCache.pop(Le(i))}else this._dbg(3,`Tried to mark Non existent object ${i} as loaded`)}for(let n=0;n<i;++n){const i=e[n];if(t[n])continue;const s=this._lyrHandleToObjects.get(i);if(s){if(!s.isLoaded){this._dbg(3,`Tried to unload not-loaded object ${s.stableNodeId}`);continue}const e=s.isVisible;this._visibleObjects.delete(s),s.isVisible=!1,s.isLoaded=!1,this._loadedObjects.delete(s),this._intersectionHandler.removeTile(s),e&&(this._visibleGeometryChanged(),a||=this._isVisibileElevationRangeModifiedByChangedTileVisbility(!1,s.elevationRange)),this._usedMemory-=s.usedMemory,this._cacheMemory+=s.usedMemory,e&&s.obb&&r.push(s.obb),s.componentObjects.forEach(e=>{this._collection.setObjectVisibility(e,!1)}),this._memCache.put(Le(i),s)}else this._dbg(3,`Tried to mark Non existent object ${i} as not loaded`)}o&&this._visibleGeometryChanged(),this._elevationProvider.notifyObjectsChanged(r),a&&this._setVisibleElevationRangeDirty()}setLodPixelThreshold(e){this._wasm?.setLodPixelThreshold(this,e)}_isVisibileElevationRangeModifiedByChangedTileVisbility(e,t){const{visibleElevationRange:i}=this,{minElevation:s,maxElevation:r}=t;return e?s<i.minElevation||r>i.maxElevation:s===i.minElevation||r===i.maxElevation}_getTexture(e,t,i){const s=e&&t.desc?.images?.[e.imageId];if(!s||!t.data?.buffer)return null;const r=i.get(s)??this._createTexture(e,t,i);return r?new ye(this._stage.renderView.textures,r.id):null}_createTexture(e,t,i){const s=e&&t.desc?.images?.[e.imageId];if(!s||!t.data?.buffer)return null;const r=this._stage.renderView.renderingContext.parameters.maxMaxAnisotropy,o=!!s.mipCount||r>1,a=ne[e.wrapMode??"None"];let n=s.alpha?6408:6407;const l=new Uint8Array(t.data.buffer,s.data.byteOffset,s.data.byteCount);let c=null,d=null,h=null;switch(s.format){case"Raw":"R8"===s.pixelFormat?(c=l,n=6403,d=""):"Rg8"===s.pixelFormat||"Ga8"===s.pixelFormat?(c=l,n=33319,d=""):"Rgb8"===s.pixelFormat?(c=l,n=6407,d=""):"Rgba8"===s.pixelFormat&&(c=l,n=6408,d="");break;case"Dxt1":c=l,n=6407,d="image/vnd-ms.dds";break;case"Dxt5":c=l,n=6408,d="image/vnd-ms.dds";break;case"Basis":c=l,n=6407,d="image/ktx2";break;case"Png":d="image/png",h=document.createElement("img");break;case"Jpeg":d="image/jpeg",h=document.createElement("img");break;case"Etc2":d="image/ktx",h=document.createElement("img");break;case"Astc":this._dbg(3,"Astc texture not supported");break;case"Pvrtc":this._dbg(3,"Pvrtc texture not supported")}if(h&&d){const e=new Blob([l],{type:d});h.src=URL.createObjectURL(e),c=h}if(c&&null!=d){const e=has("enable-feature:esri-compress-IM-textures")?{compressionTracker:this._compressionTracker}:void 0,t=Ue(n,d,s.format),l=new _e(c,{mipmap:o,maxAnisotropy:r,encoding:d,wrap:a,pixelFormat:n,internalFormat:t??void 0,immutable:null!=t,compressionOptions:e,noUnpackFlip:!0,width:s.mip0Width,height:s.mip0Height});return this._stage.addTexture(l),i.set(s,l),l}return null}getBufferViews(e,t){let i,s,r,o,a;for(let l=0;l<e.atrbs.length;l++){const a=e.atrbs[l],{view:c}=a,d=void 0,h=c.byteOffset+c.byteCount;try{switch(a.sem){case"Position":3!==c.ncomp||"F32"!==c.type?this._dbg(3,"[Unsupported Feature] Unsupported view for Position ("+c+")"):i=new G(t,c.byteOffset,d,h);break;case"Normal":if(3!==c.ncomp||"F32"!==c.type)this._dbg(3,"[Unsupported Feature] Unsupported view for Normal ("+c+")");else{const e=new G(t,c.byteOffset,d,h);o=new Uint32Array(e.count),ve(e.typedBuffer,new Int16Array(o.buffer,o.byteOffset,2*o.length))}break;case"TexCoord":2!==c.ncomp||"F32"!==c.type?this._dbg(3,"[Unsupported Feature] Unsupported view for Texcoord ("+c+")"):void 0===r&&(r=new N(t,c.byteOffset,d,h).typedBuffer);break;case"Color":4===c.ncomp?("F32"===c.type&&(s=new L(t,c.byteOffset,d,h)),"U8"===c.type&&(s=new A(t,c.byteOffset,d,h)),"U16"===c.type&&(s=new F(t,c.byteOffset,d,h))):3===c.ncomp&&("F32"===c.type&&(s=new G(t,c.byteOffset,d,h)),"U8"===c.type&&(s=new B(t,c.byteOffset,d,h)),"U16"===c.type&&(s=new z(t,c.byteOffset,d,h))),null==s&&this._dbg(2,"[Unsupported Feature] Unsupported view for Color ("+c+")");break;case"FeatureIndex":break;default:this._dbg(2,"[Unsupported Feature] Unsupported semantic ("+a.sem+"). Skipping vertex attribute.")}}catch(n){this._dbg(2,"Error Creating buffer ("+n+"). Skipping vertex attribute.")}}if(e.index){const i=e.index.view,s=void 0,r=i.byteOffset+i.byteCount;switch(e.index.view.type){case"U16":a=new q(t,i.byteOffset,s,r);break;case"U32":a=new W(t,i.byteOffset,s,r);break;default:this._dbg(3,"[Unsupported Feature] index type not supported ("+i.type+").")}}if(null==a&&null!=i){const e=i.count;a=a=e<65535?new q(new Uint16Array(e).buffer):new W(new Uint32Array(e).buffer);for(let t=0;t<e;t++)a.set(t,t)}return{positionView:i,colorView:s,texCoord0Data:r,indicesView:a,normalsData:o}}_loadModifications(){if(this.removeHandles("modifications"),null==this.layer.modifications)return void(this._modifications=[]);const e=this.layer.modifications;this.addHandles(this._updatingHandles.addOnCollectionChange(()=>e,()=>{this._modifications=e.filter(e=>!(this.layer.isUsedAsGroundLayer&&"replace"!==e.type)).toArray(),this._modifications.length<e.length&&t.getLogger(this).info("Ground layers only support replace modifications. Other modification types have been ignored.")},o),"modifications")}_deletePerObjectData(e){this._wasm?.onRenderableEvicted(this,e.handle,e.usedMemory),this.freeRenderable(e.handle)}_dbg(e,i){this._dbgFlags.has(e)&&(3===e?t.getLogger(this).error(i):t.getLogger(this).warn(i))}};e([c()],He.prototype,"fullOpacity",null),e([c({readOnly:!0})],He.prototype,"ready",null),e([c({type:[$]})],He.prototype,"_modifications",void 0),e([c()],He.prototype,"_visibleGeometryChangedSchedulerHandle",void 0),e([c()],He.prototype,"layer",void 0),e([c({readOnly:!0})],He.prototype,"visibleAtCurrentScale",null),e([c({readOnly:!0})],He.prototype,"_collection",null),e([c()],He.prototype,"elevationOffset",null),e([c({readOnly:!0})],He.prototype,"visibleElevationRange",null),He=e([d("esri.views.3d.layers.IntegratedMesh3DTilesLayerView3D")],He);const De=He;class Pe{constructor(e,t,i,s,r,o,a,n,l,c){this.handle=e,this.componentObjects=t,this.textures=i,this.cpuMemoryUsage=s,this.vboMemoryUsage=r,this.textureMemoryUsage=o,this.obb=a,this.stableNodeId=n,this.nodeDepth=l,this.elevationRange=c,this.bvhIntersectionGeneration=0,this.isLoaded=!1,this.isVisible=!1;const d=w();a?.getCenter(d),this._obbCenterX=d[0],this._obbCenterY=d[1],this._obbCenterZ=d[2];const h=a?.radius??-1;this._obbRadius=h,this._obbRadiusSquared=h*h;const u=a?.halfSize;this._obbShortestHalfsize=u?Math.min(u[0],u[1],u[2]):0,this._mbsCenter=a?T(a.center):C}get usedMemory(){return this.textureMemoryUsage+this.vboMemoryUsage+this.cpuMemoryUsage}get mbsRadius(){return this._obbRadius}get mbsCenter(){return this._mbsCenter}boundingVolumeIntersectsRay(e,t){if(!this.obb)return!0;const{_obbCenterX:i,_obbCenterY:s,_obbCenterZ:r}=this,o=i-e[0],a=s-e[1],n=r-e[2],l=o*t[0]+a*t[1]+n*t[2];return o*o+a*a+n*n-l*l<=this._obbRadiusSquared&&this.obb.intersectRay(e,t)}boundingVolumeIntersectsSphere(e){const t=this._obbRadius;if(t<0)return!0;const i=e.center,s=e.radius,r=t+s,o=this._obbCenterX-i[0];if(o>r)return!1;const a=this._obbCenterY-i[1];if(a>r)return!1;const n=this._obbCenterZ-i[2];if(n>r)return!1;const l=o*o+a*a+n*n;if(l>r*r)return!1;if(l<=(this._obbShortestHalfsize+s)**2)return!0;return Math.sqrt(l)+t<=s||(this.obb?.intersectSphere(e)??!0)}}function Ie(e){return Math.round(e/1048.576)/1e3}function ke(e){return new me(e.center,e.halfSize,f(...e.quaternion))}function Le(e){return`${e}`}const Ae=new Array;class Fe{constructor(e,t,i,s,r,o){this.materialPromise=e,this.baseColorTexture=t,this.metallicRoughnessTexture=i,this.emissionTexture=s,this.occlusionTexture=r,this.normalTexture=o}cleanup(){this.baseColorTexture?.dispose(),this.metallicRoughnessTexture?.dispose(),this.emissionTexture?.dispose(),this.occlusionTexture?.dispose(),this.normalTexture?.dispose()}}function Ge(e){return null!=e.data&&("string"==typeof e.desc&&(e.desc=JSON.parse(e.desc)),null!=e.desc)}export{De as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import"../../../../core/has.js";import"../../../../core/Logger.js";import{trackAccess as t}from"../../../../core/accessorSupport/tracking.js";import{SimpleObservable as n}from"../../../../core/accessorSupport/tracking/SimpleObservable.js";import{e}from"../../../../chunks/earcut.js";import{loadLibtessF64 as o,isLibtessF64Loaded as s,triangulateIndexedF64 as i}from"../../../../geometry/libtess.js";import{isClockwise as r}from"../../../../geometry/support/coordsUtils.js";import{newDoubleArray as u,doubleSubArray as c}from"../../../../geometry/support/DoubleArray.js";import{compactMeshIndices as l,newIndexArray as h}from"../../../../geometry/support/Indices.js";import{leastSignificantAxis as g}from"../../../../geometry/support/polygonUtils.js";const f=1e-5,p={method:"auto",projectionAxis:void 0,outlines:void 0};function d(t,n){const{hasZ:e,ccwRingsAsHoles:o,spatialReference:s}=n,i=n.axis??a(t,e,s),r=t.length,l=[],h=[],g=[],f=t.reduce((t,n)=>t+n.length,0);let p=0;const d=u(3*f);let x=0;const y=o&&t[0]&&m(t[0],e,i);for(let u=r-1;u>=0;u--){const n=t[u],s=S(n,e);if(s<3){s>1&&(g.push({index:x,count:n.length}),x=B(n,d,x,n.length,e,y));continue}const r=!!o&&m(n,e,i);if(y?!r:r)l[p++]=n;else{let t=n.length;for(let n=0;n<p;++n)t+=l[n].length;const o={index:x,pathLengths:new Array(p+1),count:t,holeIndices:new Array(p)};o.pathLengths[0]=n.length,n.length>0&&g.push({index:x,count:n.length}),x=B(n,d,x,n.length,e,y);for(let n=0;n<p;++n){const t=l[n];o.holeIndices[n]=x,o.pathLengths[n+1]=t.length,t.length>0&&g.push({index:x,count:t.length}),x=B(t,d,x,t.length,e,y)}p=0,o.count>0&&h.push(o)}}return{positions:3*x===d.length?d:c(d,0,3*x),polygons:h,outlines:g}}function a(t,n,e){if(!n)return 2;const o=t.map(t=>{const o=S(t,n);return o<3?2:g(t,o,e)}),s=o[0];return o.every(t=>t===s)?s:2}function m(t,n,e){if(!n)return!r(t);if(t.length<3)return!1;switch(e){case 0:return!r(t,1,2);case 1:return!r(t,0,2);case 2:return!r(t,0,1)}}const x=new n;function y(n,e){const o=v(n,e);if(o.succeeded)return o;return"libtess-not-loaded"===o.message?(t(x),j()):o}async function j(){try{await o(),x.notify()}catch(t){throw t}}function v(t,n){const e={method:n?.method??p.method,projectionAxis:n?.projectionAxis??p.projectionAxis,outlines:n?.outlines??p.outlines},{projectionAxis:o}=e,s=null!=o&&2!==o;s&&I(t.positions,o,2);const i=L(t,e);if(s){const n=i.succeeded?i.positions:null;null!=n&&n!==t.positions&&I(n,2,o),I(t.positions,2,o)}return i}function L(t,n){if("libtess"===n.method)return A(t,n);const o=Array();let s=0;for(const u of t.polygons){const i=R(t.positions,u),r=(u.holeIndices??[]).map(t=>t-u.index),c=r.length>0?r:null,l=e(i,c,3),h=e.deviation(i,r,3,l);if("auto"===n.method&&h>f)return A(t,n);for(let t=0;t<l.length;t++)o.push(l[t]+u.index);s=Math.max(s,h)}const{outlineIndexBuffer:i,outlineRingLengths:r}=null!=n.outlines?b(n.outlines,t.positions):{outlineIndexBuffer:void 0,outlineRingLengths:void 0};return{succeeded:!0,positions:t.positions,indices:l(o),outlineIndexBuffer:i,outlineRingLengths:r,vertexCount:t.positions.length/3,method:"earcut",deviation:s}}function A(t,n){if(!s())return C("libtess-not-loaded");const e=null!=n.outlines,o=w(t.polygons),{vertices:r,indices:u,outlineIndices:c,outlineRingLengths:l}=i(t.positions,o,3,e);return r.length%3!=0?C("positions-not-multiple-of-3"):{succeeded:!0,positions:r,indices:u,outlineIndexBuffer:e?c:void 0,outlineRingLengths:e?l:void 0,vertexCount:r.length/3,method:"libtess"}}function I(t,n,e){for(let o=0;o<t.length;o+=3){const s=t[o+n];t[o+n]=t[o+e],t[o+e]=s}}function b(t,n){const e=h(t.length);let o=0;for(let r=0;r<t.length;r++){const s=t[r],i=s.count;if(i<=0){e[r]=0;continue}const u=3*s.index,c=3*(s.index+i-1),l=i>1&&n[u]===n[c]&&n[u+1]===n[c+1]&&n[u+2]===n[c+2]?i-1:i,h=l>0?l+1:0;e[r]=h,o+=h}const s=h(o);let i=0;for(let r=0;r<t.length;r++){const n=e[r];if(0===n)continue;const o=t[r].index,u=n-1;for(let t=0;t<u;t++)s[i++]=o+t;s[i++]=o}return{outlineIndexBuffer:s,outlineRingLengths:e}}function w(t){const n=t.reduce((t,n)=>t+n.pathLengths.length,0),e=new Array(n);let o=0;for(let s=0;s<t.length;s++){const n=t[s].pathLengths;for(let t=0;t<n.length;t++)e[o++]=n[t]}return e}function R(t,{index:n,count:e}){return c(t,3*n,3*e)}function B(t,n,e,o,s,i){let r=i?t.length-1:0;const u=i?-1:1;e*=3;for(let c=0;c<o;++c){const o=t[r];n[e++]=o[0],n[e++]=o[1],n[e++]=s&&null!=o[2]?o[2]:0,r+=u}return e/3}function k(t,n){const e=t.length;if(e<2)return!1;const o=t[0],s=t[e-1];return o[0]===s[0]&&o[1]===s[1]&&(!n||o[2]===s[2])}function S(t,n){return k(t,n)?t.length-1:t.length}function C(t){return{succeeded:!1,message:t}}export{a as axisFromRings,m as isCounterClockwise,j as load,d as ringsToOutlinedTessellationInfo,v as tessellate,y as tessellateOrLoad};
2
+ import"../../../../core/has.js";import"../../../../core/Logger.js";import{trackAccess as t}from"../../../../core/accessorSupport/tracking.js";import{SimpleObservable as n}from"../../../../core/accessorSupport/tracking/SimpleObservable.js";import{e}from"../../../../chunks/earcut.js";import{loadLibtessF64 as o,isLibtessF64Loaded as s,triangulateIndexedF64 as i}from"../../../../geometry/libtess.js";import{isClockwise as r}from"../../../../geometry/support/coordsUtils.js";import{newDoubleArray as u,doubleSubArray as c}from"../../../../geometry/support/DoubleArray.js";import{compactMeshIndices as l,newIndexArray as h}from"../../../../geometry/support/Indices.js";import{leastSignificantAxis as g}from"../../../../geometry/support/polygonUtils.js";const p=1e-5,f={method:"auto",projectionAxis:void 0,outlines:void 0};function d(t,n){const{hasZ:e,ccwRingsAsHoles:o,spatialReference:s}=n,i=n.axis??a(t,e,s),r=t.length,l=[],h=[],g=[],p=[],f=t.reduce((t,n)=>t+n.length,0);let d=0;const x=u(3*f);let y=0;const j=o&&t[0]&&m(t[0],e,i);for(let u=r-1;u>=0;u--){const n=t[u],s=k(n,e);if(s<3){s>1&&p.push(n);continue}const r=!!o&&m(n,e,i);if(j?!r:r)l[d++]=n;else{let t=n.length;for(let n=0;n<d;++n)t+=l[n].length;const o={index:y,pathLengths:new Array(d+1),count:t,holeIndices:new Array(d)};o.pathLengths[0]=n.length,n.length>0&&g.push({index:y,count:n.length}),y=B(n,x,y,n.length,e,j);for(let n=0;n<d;++n){const t=l[n];o.holeIndices[n]=y,o.pathLengths[n+1]=t.length,t.length>0&&g.push({index:y,count:t.length}),y=B(t,x,y,t.length,e,j)}d=0,o.count>0&&h.push(o)}}const L=y;for(const u of p)g.push({index:y,count:u.length}),y=B(u,x,y,u.length,e,j);return{positions:3*y===x.length?x:c(x,0,3*y),polygonVertexCount:L,polygons:h,outlines:g}}function a(t,n,e){if(!n)return 2;const o=t.map(t=>{const o=k(t,n);return o<3?2:g(t,o,e)}),s=o[0];return o.every(t=>t===s)?s:2}function m(t,n,e){if(!n)return!r(t);if(t.length<3)return!1;switch(e){case 0:return!r(t,1,2);case 1:return!r(t,0,2);case 2:return!r(t,0,1)}}const x=new n;function y(n,e){const o=L(n,e);if(o.succeeded)return o;return"libtess-not-loaded"===o.message?(t(x),j()):o}async function j(){try{await o(),x.notify()}catch(t){throw t}}function L(t,n){const e={method:n?.method??f.method,projectionAxis:n?.projectionAxis??f.projectionAxis,outlines:n?.outlines??f.outlines},{projectionAxis:o}=e,s=null!=o&&2!==o;s&&I(t.positions,o,2);const i=v(t,e);if(s){const n=i.succeeded?i.positions:null;null!=n&&n!==t.positions&&I(n,2,o),I(t.positions,2,o)}return i}function v(t,n){if("libtess"===n.method)return A(t,n);const o=Array();let s=0;for(const u of t.polygons){const i=R(t.positions,u),r=(u.holeIndices??[]).map(t=>t-u.index),c=r.length>0?r:null,l=e(i,c,3),h=e.deviation(i,r,3,l);if("auto"===n.method&&h>p)return A(t,n);for(let t=0;t<l.length;t++)o.push(l[t]+u.index);s=Math.max(s,h)}const{outlineIndexBuffer:i,outlineRingLengths:r}=null!=n.outlines?b(n.outlines,t.positions):{outlineIndexBuffer:void 0,outlineRingLengths:void 0};return{succeeded:!0,positions:t.positions,indices:l(o),outlineIndexBuffer:i,outlineRingLengths:r,vertexCount:t.positions.length/3,method:"earcut",deviation:s}}function A(t,n){if(!s())return P("libtess-not-loaded");const e=null!=n.outlines,{positions:o,mergedPathLengths:r}=S(t),{vertices:u,indices:c,outlineIndices:l,outlineRingLengths:h}=i(o,r,3,e);return u.length%3!=0?P("positions-not-multiple-of-3"):{succeeded:!0,positions:u,indices:c,outlineIndexBuffer:e?l:void 0,outlineRingLengths:e?h:void 0,vertexCount:u.length/3,method:"libtess"}}function I(t,n,e){for(let o=0;o<t.length;o+=3){const s=t[o+n];t[o+n]=t[o+e],t[o+e]=s}}function b(t,n){const e=h(t.length);let o=0;for(let r=0;r<t.length;r++){const s=t[r],i=s.count;if(i<=0){e[r]=0;continue}const u=3*s.index,c=3*(s.index+i-1),l=i>1&&n[u]===n[c]&&n[u+1]===n[c+1]&&n[u+2]===n[c+2]?i-1:i,h=l>0?l+1:0;e[r]=h,o+=h}const s=h(o);let i=0;for(let r=0;r<t.length;r++){const n=e[r];if(0===n)continue;const o=t[r].index,u=n-1;for(let t=0;t<u;t++)s[i++]=o+t;s[i++]=o}return{outlineIndexBuffer:s,outlineRingLengths:e}}function w(t){const n=t.reduce((t,n)=>t+n.pathLengths.length,0),e=new Array(n);let o=0;for(let s=0;s<t.length;s++){const n=t[s].pathLengths;for(let t=0;t<n.length;t++)e[o++]=n[t]}return e}function R(t,{index:n,count:e}){return c(t,3*n,3*e)}function B(t,n,e,o,s,i){let r=i?t.length-1:0;const u=i?-1:1;e*=3;for(let c=0;c<o;++c){const o=t[r];n[e++]=o[0],n[e++]=o[1],n[e++]=s&&null!=o[2]?o[2]:0,r+=u}return e/3}function C(t,n){const e=t.length;if(e<2)return!1;const o=t[0],s=t[e-1];return o[0]===s[0]&&o[1]===s[1]&&(!n||o[2]===s[2])}function k(t,n){return C(t,n)?t.length-1:t.length}function P(t){return{succeeded:!1,message:t}}function S(t){const n=w(t.polygons),e=3*t.polygonVertexCount;return e===t.positions.length?{positions:t.positions,mergedPathLengths:n}:{positions:c(t.positions,0,e),mergedPathLengths:n}}export{a as axisFromRings,m as isCounterClockwise,j as load,d as ringsToOutlinedTessellationInfo,L as tessellate,y as tessellateOrLoad};