@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.
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{e89dc473f46a5584d2ef.js → 004af103a94d21cb4889.js} +3 -3
- package/assets/esri/core/workers/chunks/53d13e13d8729bd4dcf2.js +1 -0
- package/assets/esri/core/workers/chunks/{45c83eb7c2a06166e3b0.js → 56717ff315c6ec874142.js} +1 -1
- package/assets/esri/core/workers/chunks/{1e2c0c6d724f7639d4c1.js → 713ab619060bd5087479.js} +13 -13
- package/assets/esri/core/workers/chunks/{a9b5ce00323cd5574bf7.js → 7160e3e7340beb7fdb42.js} +1 -1
- package/assets/esri/core/workers/chunks/79eca9ccd4dc52da1d59.js +1 -0
- package/assets/esri/core/workers/chunks/{bd8cb64b6e08839398f3.js → c7da0981822182e15f3a.js} +1 -1
- package/assets/esri/core/workers/chunks/f9fe3c9867b0bdb2aec6.js +596 -0
- package/assets/esri/themes/base/widgets/_BatchAttributeForm.scss +6 -0
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/ShadowCastAnalysis.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/ShadowCastAnalysis_en.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ar.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_bg.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_bs.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ca.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_cs.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_da.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_de.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_el.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_es.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_et.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_fi.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_fr.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_he.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_hr.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_hu.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_id.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_it.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ja.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ko.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_lt.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_lv.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_nl.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_no.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_pl.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_pt-BR.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_pt-PT.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ro.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ru.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sk.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sl.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sr.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sv.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_th.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_tr.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_uk.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_vi.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_zh-CN.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_zh-HK.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_zh-TW.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ar.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_bg.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_bs.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ca.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_cs.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_da.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_de.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_el.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_es.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_et.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_fi.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_fr.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_he.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_hr.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_hu.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_id.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_it.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ja.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ko.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_lt.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_lv.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_nl.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_no.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_pl.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_pt-BR.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_pt-PT.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ro.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ru.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sk.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sl.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sr.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sv.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_th.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_tr.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_uk.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_vi.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_zh-CN.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_zh-HK.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_zh-TW.json +1 -1
- package/chunks/EdgeShader.glsl.js +13 -9
- package/chunks/Fog.glsl.js +1 -1
- package/chunks/GlowBlur.glsl.js +9 -13
- package/chunks/GlowComposition.glsl.js +10 -10
- package/chunks/ShadowCastVisualize.glsl.js +10 -10
- package/config.js +1 -1
- package/core/arrayUtils.js +1 -1
- package/core/has.js +1 -1
- package/core/screenUtils.js +1 -1
- package/form/types.d.ts +1 -1
- package/geohash/GeohashCell.js +1 -1
- package/geohash/GeohashTree.js +1 -1
- package/kernel.js +1 -1
- package/layers/scene/ModelFileInfo.js +1 -1
- package/layers/scene/modelQuerySupport.js +1 -1
- package/package.json +1 -1
- package/popup/Features.d.ts +10 -0
- package/popup/Features.js +1 -1
- package/rest/knowledgeGraph/GraphQueryStreamingResult.d.ts +4 -1
- package/support/revision.js +1 -1
- package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
- package/views/2d/FrameTask.js +1 -1
- package/views/2d/LabelManager.js +1 -1
- package/views/2d/engine/DisplayObject.js +1 -1
- package/views/2d/engine/Stage.js +1 -1
- package/views/2d/engine/flow/FlowContainer.js +1 -1
- package/views/2d/engine/flow/FlowView2D.js +1 -1
- package/views/2d/engine/flow/styles/AFlowResources.js +1 -1
- package/views/2d/engine/flow/styles/Imagery.js +1 -1
- package/views/2d/engine/flow/styles/Particles.js +1 -1
- package/views/2d/engine/flow/styles/Stack.js +1 -1
- package/views/2d/engine/flow/styles/Streamlines.js +1 -1
- package/views/2d/engine/transitions/FadeTransition.js +1 -1
- package/views/2d/engine/vectorTiles/VTLPainter3D.js +1 -1
- package/views/2d/engine/vectorTiles/decluttering/SymbolDeclutterer.js +1 -1
- package/views/2d/engine/vectorTiles/decluttering/SymbolFader.js +1 -1
- package/views/2d/engine/vectorTiles/decluttering/SymbolRepository.js +1 -1
- package/views/2d/engine/webgl/AFeatureTile.js +1 -1
- package/views/2d/engine/webgl/AttributeStoreView.js +1 -1
- package/views/2d/engine/webgl/FeatureTile.js +1 -1
- package/views/2d/engine/webgl/ResizableUint32Array.js +2 -0
- package/views/2d/engine/webgl/TileCpuState.js +2 -0
- package/views/2d/engine/webgl/TileGpuState.js +2 -0
- package/views/2d/engine/webgl/cpuMapped/CpuBuffer.js +2 -0
- package/views/2d/engine/webgl/cpuMapped/CpuMeshData.js +2 -0
- package/views/2d/engine/webgl/cpuMapped/GpuMeshState.js +2 -0
- package/views/2d/engine/webgl/effects/HittestEffect.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/TechniqueDebugContainer.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/TestDisplayObject.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/tile/TileDebugInfoTechnique.js +1 -1
- package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
- package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
- package/views/2d/layers/GeoRSSLayerView2D.js +1 -1
- package/views/2d/layers/GraphicsLayerView2D.js +1 -1
- package/views/2d/layers/ImageryLayerView2D.js +1 -1
- package/views/2d/layers/ImageryTileLayerView2D.js +1 -1
- package/views/2d/layers/KMLLayerView2D.js +1 -1
- package/views/2d/layers/LayerView2D.js +1 -1
- package/views/2d/layers/MapNotesLayerView2D.js +1 -1
- package/views/2d/layers/MediaLayerView2D.js +1 -1
- package/views/2d/layers/RouteLayerView2D.js +1 -1
- package/views/2d/layers/TileLayerView2D.js +1 -1
- package/views/2d/layers/features/FeatureContainer.js +1 -1
- package/views/2d/layers/features/FeaturePipelineWorker.js +1 -1
- package/views/2d/layers/features/FeatureTilePresentStrategy.js +2 -0
- package/views/2d/layers/features/Processor.js +1 -1
- package/views/2d/layers/features/RenderState.js +1 -1
- package/views/2d/layers/features/aggregation/AAggregateSpatialIndex.js +1 -1
- package/views/2d/layers/features/aggregation/GeohashSpatialIndex.js +1 -1
- package/views/2d/layers/features/aggregation/GridCell.js +1 -1
- package/views/2d/layers/features/aggregation/GridIndexCell.js +2 -0
- package/views/2d/layers/features/aggregation/GridSpatialIndex.js +1 -1
- package/views/2d/layers/features/layerAdapters/CatalogFootprintLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/FeatureLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/InMemoryLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/KnowledgeGraphSublayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/OGCFeatureLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/OrientedImageryLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/ParquetLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/StreamLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/SubtypeGroupLayerAdapter.js +1 -1
- package/views/2d/layers/features/processor/AProcessorStrategy.js +1 -1
- package/views/2d/layers/features/processor/BinningStrategy.js +1 -1
- package/views/2d/layers/features/processor/ClusterStrategy.js +1 -1
- package/views/2d/layers/features/processor/FeatureUpdateStrategy.js +1 -1
- package/views/2d/layers/features/processor/TrackStrategy.js +1 -1
- package/views/2d/layers/features/sources/FeatureSourceMessage.js +1 -1
- package/views/2d/layers/features/sources/strategies/chunks/ASourceChunk.js +1 -1
- package/views/2d/layers/features/support/Hashed.js +2 -0
- package/views/2d/layers/graphics/AGraphicContainer.js +1 -1
- package/views/2d/layers/graphics/GraphicStore.js +1 -1
- package/views/2d/layers/graphics/GraphicsView2D.js +1 -1
- package/views/2d/layers/imagery/ImageryView2D.js +1 -1
- package/views/2d/layers/support/vectorTileDebugUtils.js +1 -1
- package/views/2d/support/hitTestUtils.js +1 -1
- package/views/2d/tiling/FeatureTileSubscriptionManager.js +1 -1
- package/views/2d/tiling/TileCombinedCoverage.js +2 -0
- package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightTool2.js +2 -0
- package/views/3d/analysis/LineOfSightAnalysisView3D.js +1 -1
- package/views/3d/analysis/ShadowCast/ShadowCastTooltip.js +1 -1
- package/views/3d/analysis/ShadowCastAnalysisView3D.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedEditTool.js +2 -0
- package/views/3d/analysis/Viewshed/ViewshedSubTool.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedTool.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedTool2.js +2 -0
- package/views/3d/analysis/Viewshed/viewshedSubToolUtils.js +2 -0
- package/views/3d/analysis/Viewshed/viewshedToolUtils.js +1 -1
- package/views/3d/analysis/ViewshedAnalysisView3D.js +1 -1
- package/views/3d/environment/CloudyWeather.js +1 -1
- package/views/3d/environment/FoggyWeather.js +1 -1
- package/views/3d/environment/RainyWeather.js +1 -1
- package/views/3d/environment/SnowyWeather.js +1 -1
- package/views/3d/environment/SunnyWeather.js +1 -1
- package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
- package/views/3d/layers/graphics/tessellationUtils.js +1 -1
- package/views/3d/layers/i3s/I3SIndex.js +1 -1
- package/views/3d/support/gaussianSplatting/GaussianSplatTextureAtlas.js +1 -1
- package/views/3d/webgl/ManagedColorAttachment.js +1 -1
- package/views/3d/webgl/ManagedDepthAttachment.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/ComponentTechnique.js +1 -1
- package/views/3d/webgl-engine/core/FBOCache.js +1 -1
- package/views/3d/webgl-engine/core/FBOCacheFormats.js +1 -1
- package/views/3d/webgl-engine/core/FBOCacheUsage.js +1 -1
- package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js +11 -11
- package/views/3d/webgl-engine/effects/focusArea/FocusAreaMaskNode.js +1 -1
- package/views/3d/webgl-engine/effects/fog/Fog.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/fog/Fog.js +1 -1
- package/views/3d/webgl-engine/effects/geometry/RenderOccludedRenderNode.js +1 -1
- package/views/3d/webgl-engine/effects/glow/Glow.js +2 -0
- package/views/3d/webgl-engine/effects/glow/GlowBlur.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/glow/GlowComposition.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/raymarching/{RayDistanceFalloff.glsl.js → DistanceFalloff.glsl.js} +2 -2
- package/views/3d/webgl-engine/lib/CutFillComputationRenderNode.js +1 -1
- package/views/3d/webgl-engine/lib/CutFillVisualizationRenderNode.js +1 -1
- package/views/3d/webgl-engine/lib/GPUPointOcclusionQuery.js +1 -1
- package/views/3d/webgl-engine/lib/MainFramebuffer.js +1 -1
- package/views/3d/webgl-engine/lib/ManagedTexture.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowAccumulator.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowCastRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowMap.js +1 -1
- package/views/3d/webgl-engine/lib/StencilUtils.js +1 -1
- package/views/3d/webgl-engine/lib/ViewshedShadowMap.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeShader.glsl.js +1 -1
- package/views/3d/webgl-engine/lib/verticalOffsetUtils.js +1 -1
- package/views/3d/webgl-engine/materials/MeasurementArrowMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/PathTechnique.js +1 -1
- package/views/3d/webgl-engine/parts/RenderView.js +1 -1
- package/views/3d/webgl-engine/shaders/ColorMaterialTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/ImageMaterialTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/LineMarkerTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/MeasurementArrowTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/MeasurementArrowTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/NativeLineTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/PatternTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/PointRendererTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLineTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/ScreenSpacePassAtmosphere.glsl.js +1 -7
- package/views/3d/webgl-engine/shaders/ShadowCastVisualizeTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/ShadowCastVisualizeTechniqueConfiguration.js +1 -1
- package/views/VideoView.js +1 -1
- package/views/View2D.js +1 -1
- package/views/draw/support/GraphicMover.js +1 -1
- package/views/support/rasterHitTestUtils.js +1 -1
- package/views/support/waitForResources.js +1 -1
- package/views/video/VideoOperationalDataView.js +1 -1
- package/views/webgl/FramebufferObject.js +1 -1
- package/views/webgl/RenderingContext.js +1 -1
- package/views/webgl/Texture.js +1 -1
- package/views/webgl/textureUtils.js +1 -1
- package/widgets/BatchAttributeForm/css.js +1 -1
- package/widgets/BatchAttributeForm/inputs/UtilityNetworkAssociationsElementInput.d.ts +61 -0
- package/widgets/BatchAttributeForm/inputs/UtilityNetworkAssociationsElementInput.js +2 -0
- package/widgets/BatchAttributeForm/inputs/support/createBatchFormInputs.js +1 -1
- package/widgets/BatchAttributeForm/inputs/support/inputUtils.js +1 -1
- package/widgets/BatchAttributeForm/inputs/types.d.ts +9 -4
- package/widgets/BatchAttributeForm/templates/UtilityNetworkAssociationsElementTemplate.js +2 -0
- package/widgets/BatchAttributeForm/templates/support/createBatchFormTemplate.js +1 -1
- package/widgets/BatchAttributeForm/templates/support/hashElementTemplate.js +1 -1
- package/widgets/BatchAttributeForm/templates/support/templateUtils.js +1 -1
- package/widgets/BatchAttributeForm.js +1 -1
- package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
- package/widgets/FeatureTable/Grid/Column.d.ts +17 -2
- package/widgets/FeatureTable/Grid/Column.js +1 -1
- package/widgets/FeatureTable/Grid/Grid.js +1 -1
- package/widgets/FeatureTable/Grid/GridViewModel.js +1 -1
- package/widgets/FeatureTable/Grid/GroupColumn.d.ts +7 -1
- package/widgets/FeatureTable/Grid/GroupColumn.js +1 -1
- package/widgets/FeatureTable/support/ColumnTemplateBase.d.ts +9 -1
- package/widgets/FeatureTable/support/ColumnTemplateBase.js +1 -1
- package/widgets/FeatureTable/support/types.d.ts +8 -0
- package/widgets/FeatureTable.js +1 -1
- package/assets/esri/core/workers/chunks/38f1a86b8dd9ee684ee5.js +0 -596
- package/assets/esri/core/workers/chunks/8f4cd30ce23e41c1a42c.js +0 -1
- package/assets/esri/core/workers/chunks/cbf1a03f54bd8d2a2b47.js +0 -1
- package/views/2d/engine/webgl/PooledUint32Array.js +0 -2
- package/views/2d/engine/webgl/cpuMapped/Buffer.js +0 -2
- package/views/2d/engine/webgl/cpuMapped/MappedMesh.js +0 -2
- package/views/3d/webgl-engine/effects/glow/GlowRenderNode.js +0 -2
- package/views/3d/webgl-engine/shaders/sources/edgeRenderer/DistanceFalloff.glsl.js +0 -4
package/views/2d/LabelManager.js
CHANGED
|
@@ -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"../../core/Accessor.js";import has from"../../core/has.js";import{property as s,subclass as r}from"../../core/accessorSupport/decorators.js";import{SymbolFader as
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../core/Accessor.js";import has from"../../core/has.js";import{property as s,subclass as r}from"../../core/accessorSupport/decorators.js";import{SymbolFader as l}from"./engine/vectorTiles/decluttering/SymbolFader.js";import{tileSize as o}from"./engine/webgl/definitions.js";const i=8;class n{constructor(){this.styles=new Map,this.layerContexts=new Map}get cachedStyles(){return this.styles}setLabelClassStyle(e,t,s){this.layerContexts.set(e,t),this.styles.set(e,s)}clear(){this.layerContexts.clear(),this.styles.clear()}}let a=class extends t{constructor(e){super(e),this._styleRepository=new n,this.decluttering=!1,this.declutterRequested=!1,this.featuresTilingScheme=null;const t=(e,t)=>{};this.symbolFader=new l("feature-tile",this._styleRepository,t,[],o,i,()=>this.requestDeclutter())}get updating(){const e=this.decluttering||this.declutterRequested;return has("esri-2d-log-updating")&&console.log(`Updating LabelManager ${e}:\n-> declutterRequested: ${this.declutterRequested}\n-> decluttering: ${this.decluttering}`),e}requestDeclutter(){this.declutterRequested=!0}declutter(e,t){if(this.declutterRequested&&!this.decluttering&&(this._updateRepository(e),this.symbolFader.restartDeclutter(),this.decluttering=!0,this.declutterRequested=!1),this.decluttering){for(const s of this.symbolFader.tiles)s.setTransform(t);const e=this.symbolFader.update(this.featuresTilingScheme.scaleToZoom(t.scale),t);this.decluttering=!e}return this.decluttering}_updateRepository(e){this._styleRepository.clear(),this.symbolFader.tiles.length=0,this.symbolFader.symbolRepository?.flushFeatureTileUpdateMessages();for(const t of e)if(t.labelSchema){const e=this._getLabelSchemaStyles(t);if(!e.length)continue;for(const s of e){const e=c(s);this._styleRepository.setLabelClassStyle(s.labelClassId,t,e)}for(const s of t.tiles||[])s.decluttering&&this.symbolFader.tiles.push(s)}}_getLabelSchemaStyles(e){const t=e.labelSchema;if(!t)return[];switch(t.type){case"label":return t.classes;case"subtype":return Array.from(Object.values(t.renderers).flatMap(e=>e.classes));case"cluster":return[...t.cluster.classes,...t.feature.classes];case"track":return[...t.latestObservation.classes,...t.previousObservation.classes,...t.trackLine.classes]}}};function c(e){const t="esriGeometryPolyline"===e.geometryType?0:1,s="esriGeometryPolyline"===e.geometryType?0:1;return{geometryType:e.geometryType,iconAllowOverlap:!e.deconflictionEnabled,iconIgnorePlacement:!1,textAllowOverlap:!e.deconflictionEnabled,textIgnorePlacement:!1,iconRotationAlignment:t,textRotationAlignment:t,iconTranslateAnchor:s,iconTranslate:[0,0],textTranslateAnchor:s,textTranslate:[0,0]}}e([s()],a.prototype,"decluttering",void 0),e([s()],a.prototype,"declutterRequested",void 0),e([s()],a.prototype,"updating",null),e([s()],a.prototype,"featuresTilingScheme",void 0),a=e([r("esri.views.2d.LabelManager")],a);export{n as LabelClassStyleRepository,a as LabelManager};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{remove as t}from"../../../core/arrayUtils.js";import{Evented as i}from"../../../core/Evented.js";import{FadeTransition as s}from"./transitions/FadeTransition.js";class e extends i{constructor(){super(...arguments),this._transitionables=null,this._clips=[],this._fadeTransition=null,this._isReady=!1,this._opacity=1,this.parent=null,this._stage=null,this._visible=!0}get computedOpacity(){return this._fadeTransition?.computedOpacity??this.opacity}get clips(){return this._clips}set clips(t){this._clips=t,this.requestRender()}get effectiveVisible(){return this.visible&&!0===this.parent?.effectiveVisible}get fadeTransitionEnabled(){return null!==this._fadeTransition}set fadeTransitionEnabled(t){!this._fadeTransition&&t?(this._fadeTransition=new s({opacity:this.opacity,visible:this.visible}),this.addTransitionable(this._fadeTransition)):this._fadeTransition&&!t&&(this.removeTransitionable(this._fadeTransition),this._fadeTransition=null)}get inFadeTransition(){return this._fadeTransition?.transitioning??!1}get isReady(){return this._isReady}get opacity(){return this._opacity}set opacity(t){this._opacity!==t&&(this._opacity=Math.min(1,Math.max(t,0)),this._fadeTransition&&(this._fadeTransition.opacity=this._opacity),this.requestRender())}get stage(){return this._stage}set stage(t){if(this._stage===t)return;const i=this._stage;this._stage=t,t?this._stage?.untrashDisplayObject(this)||(this.onAttach(),this.emit("attach")):i?.trashDisplayObject(this)}get transforms(){return null==this._transforms&&(this._transforms=this._createTransforms()),this._transforms}get transitioning(){return this.isTransitioning()}get usedMemory(){return 0}get visible(){return this._visible}set visible(t){this._visible!==t&&(this._visible=t,this._fadeTransition&&(this._fadeTransition.visible=this._visible),this.requestRender())}get hasLabels(){return!1}get hasHighlight(){return!1}get hasBlending(){return!1}addTransitionable(t){this._transitionables??=[],this._transitionables.push(t),this.requestRender()}removeTransitionable(i){i.endTransition(),this._transitionables&&t(this._transitionables,i),this.requestRender()}fadeIn(){this.fadeTransitionEnabled=!0;const t=this._fadeTransition.fadeIn();return this.opacity=1,this.requestRender(),t}fadeOut(){this.fadeTransitionEnabled=!0;const t=this._fadeTransition.fadeOut();return this.opacity=0,this.requestRender(),t}endTransitions(){if(this._transitionables){for(const t of this._transitionables)t.endTransition();this.requestRender()}}beforeRender(t){this.transitionStep(t.deltaTime,t.state.scale),this.setTransform(t.state)}afterRender(t){this.transitioning&&this.requestRender()}remove(){this.parent?.removeChild(this)}setTransform(t){}processRender(t){this.stage&&(this._fadeTransition?.computedVisible??this.visible)&&this.doRender(t)}requestRender(){this.stage&&this.stage.requestRender()}processDetach(){this.endTransitions(),this.onDetach(),this.emit("detach")}isTransitioning(){return this._transitionables?.some(t=>t.transitioning)??!1}transitionStep(t,i){if(this._transitionables)for(const s of this._transitionables)s.transitionStep(t,i)}onAttach(){}onDetach(){}doRender(t){}ready(){this._isReady||(this._isReady=!0,this.emit("isReady"),this.requestRender())}}export{e as DisplayObject};
|
|
2
|
+
import{remove as t}from"../../../core/arrayUtils.js";import{Evented as i}from"../../../core/Evented.js";import{FadeTransition as s}from"./transitions/FadeTransition.js";class e extends i{constructor(){super(...arguments),this._transitionables=null,this._clips=[],this._fadeTransition=null,this._isReady=!1,this._opacity=1,this.parent=null,this._stage=null,this._visible=!0}get computedOpacity(){return this._fadeTransition?.computedOpacity??this.opacity}get clips(){return this._clips}set clips(t){this._clips=t,this.requestRender()}get effectiveVisible(){return this.visible&&!0===this.parent?.effectiveVisible}get fadeTransitionEnabled(){return null!==this._fadeTransition}set fadeTransitionEnabled(t){!this._fadeTransition&&t?(this._fadeTransition=new s({opacity:this.opacity,visible:this.visible}),this.addTransitionable(this._fadeTransition)):this._fadeTransition&&!t&&(this.removeTransitionable(this._fadeTransition),this._fadeTransition=null)}get inFadeTransition(){return this._fadeTransition?.transitioning??!1}get isReady(){return this._isReady}get opacity(){return this._opacity}set opacity(t){this._opacity!==t&&(this._opacity=Math.min(1,Math.max(t,0)),this._fadeTransition&&(this._fadeTransition.opacity=this._opacity),this.requestRender())}get stage(){return this._stage}set stage(t){if(this._stage===t)return;const i=this._stage;this._stage=t,t?this._stage?.untrashDisplayObject(this)||(this.onAttach(),this.emit("attach")):i?.trashDisplayObject(this)}get transforms(){return null==this._transforms&&(this._transforms=this._createTransforms()),this._transforms}get transitioning(){return this.isTransitioning()}get usedMemory(){return 0}get visible(){return this._visible}set visible(t){this._visible!==t&&(this._visible=t,this._fadeTransition&&(this._fadeTransition.visible=this._visible),this.requestRender())}get hasLabels(){return!1}get hasHighlight(){return!1}get hasBlending(){return!1}addTransitionable(t){this._transitionables??=[],this._transitionables.push(t),this.requestRender()}removeTransitionable(i){i.endTransition(),this._transitionables&&t(this._transitionables,i),this.requestRender()}fadeIn(){this.fadeTransitionEnabled=!0;const t=this._fadeTransition.fadeIn();return this.opacity=1,this.requestRender(),t}fadeOut(){this.fadeTransitionEnabled=!0;const t=this._fadeTransition.fadeOut();return this.opacity=0,this.requestRender(),t}endTransitions(){if(this._transitionables){for(const t of this._transitionables)t.endTransition();this.requestRender()}}beforeRender(t){this.transitionStep(t.deltaTime,t.state.scale),this.setTransform(t.state)}afterRender(t){this.transitioning&&this.requestRender()}remove(){this.parent?.removeChild(this)}setTransform(t){}processRender(t){this.stage&&(this._fadeTransition?.computedVisible??this.visible)&&this.doRender(t)}requestRender(){this.stage&&this.stage.requestRender()}requestDeclutter(){this.stage&&this.stage.requestDeclutter()}processDetach(){this.endTransitions(),this.onDetach(),this.emit("detach")}isTransitioning(){return this._transitionables?.some(t=>t.transitioning)??!1}transitionStep(t,i){if(this._transitionables)for(const s of this._transitionables)s.transitionStep(t,i)}onAttach(){}onDetach(){}doRender(t){}ready(){this._isReady||(this._isReady=!0,this.emit("isReady"),this.requestRender())}}export{e as DisplayObject};
|
package/views/2d/engine/Stage.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import e from"../../../core/Error.js";import has from"../../../core/has.js";import{removeMaybe as
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../core/Error.js";import has from"../../../core/has.js";import{removeMaybe as r}from"../../../core/maybe.js";import{addFrameTask as s}from"../../../core/scheduling.js";import{signal as i}from"../../../core/signal.js";import{property as a}from"../../../core/accessorSupport/decorators.js";import{create as n}from"../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{CIMAnalyzer as o}from"../../../symbols/cim/cimAnalyzer.js";import{LabelManager as h}from"../LabelManager.js";import{Container as d}from"./Container.js";import{MAX_TILE_RESHUFFLES_PER_FRAME as l}from"./webgl/definitions.js";import m from"./webgl/Painter.js";import{Profiler as u}from"./webgl/Profiler.js";import{TileReshuffleManager as c}from"./webgl/TileReshuffleManager.js";import{startup as p,shutdown as g}from"./webgl/shaderGraph/techniques/TechniqueRegistry.js";import{MeshWriterRegistry as f}from"./webgl/shaderGraph/techniques/mesh/MeshWriterRegistry.js";import{FeatureContainer as _}from"../layers/features/FeatureContainer.js";import{Timeline as b}from"../support/Timeline.js";import{SizedPixelFormat as w,SizedDepthStencilFormat as R,PixelType as y}from"../../webgl/enums.js";import{DisposableFramebufferObject as x}from"../../webgl/FramebufferObject.js";import{RenderbufferDescriptor as C}from"../../webgl/RenderbufferDescriptor.js";import{RenderingContext as j}from"../../webgl/RenderingContext.js";import{RenderingContextOptions as M}from"../../webgl/RenderingContextOptions.js";import{TextureDescriptor as P}from"../../webgl/TextureDescriptor.js";const T=2e3;class q extends d{constructor(e,r,a){super(),this._trash=new Set,this._renderRemainingTime=0,this._lastFrameRenderTime=0,this._stationary=!0,this._animationsEnabled=!0,this._renderRequested=i(!1),this._reshuffleManager=new c,this.stage=this,this.meshWriterRegistry=new f,this.labelManager=new h({featuresTilingScheme:r.featuresTilingScheme}),this._managedCanvas=a,this.context=new j(this._managedCanvas.gl,r.contextOptions??new M),this.painter=new m(this.context,this),this._cimAnalyzer=new o(this.painter.textureManager.resourceManager),has("esri-2d-profiler")&&null!=e&&(this._debugOutput=document.createElement("div"),this._debugOutput.setAttribute("style","margin: 24px 64px; position: absolute; color: red;"),e.appendChild(this._debugOutput));const n=()=>this.highlightGradient;this._renderParameters={drawPhase:0,state:this.state,pixelRatio:window.devicePixelRatio,stationary:!1,globalOpacity:1,blendMode:null,deltaTime:-1,time:0,inFadeTransition:!1,effects:null,context:this.context,painter:this.painter,timeline:r.timeline||new b,renderingOptions:r.renderingOptions,requestRender:()=>this.requestRender(),allowDelayedRender:!1,requireFBO:!1,profiler:new u(this.context,this._debugOutput),dataUploadCounter:0,get highlightGradient(){return n()},reshuffleManager:this._reshuffleManager,backgroundColor:r.backgroundColor,animationsEnabled:!0};let d=e=>this.renderFrame(e);null!=r.renderFrame&&(d=r.renderFrame),this._taskHandle=s({render:e=>d(e)}),this._taskHandle.pause(),this._lostWebGLContextHandle=this._managedCanvas.events.on("webgl-context-lost",e=>this.emit("webgl-error",{error:new t("webgl-context-lost",e.statusMessage||"WebGL context lost")})),p()}destroy(){super.destroy(),g(this.context),this.labelManager.destroy(),this.removeAllChildren(),this._emptyTrash(),this._taskHandle=r(this._taskHandle),this._lostWebGLContextHandle=r(this._lostWebGLContextHandle),this._managedCanvas.destroy(),this._debugOutput?.parentNode?.removeChild(this._debugOutput),this.painter.dispose(),this.context.dispose(),this._managedCanvas=null}get updating(){const e=this.labelManager.updating;return has("esri-2d-log-updating")&&console.log(`Updating Stage: ${e}\n-> labelManager.updating: ${this.labelManager.updating}\n`),e}get textureManager(){return this.painter.textureManager}get profiler(){return this._renderParameters.profiler}get backgroundColor(){return this._renderParameters.backgroundColor}set backgroundColor(e){this._renderParameters.backgroundColor=e,this.requestRender()}get canvas(){return this._managedCanvas.canvas}get cimAnalyzer(){return this._cimAnalyzer}get effectiveVisible(){return this.visible}get renderingOptions(){return this._renderingOptions}set renderingOptions(e){this._renderingOptions=e,this.requestRender()}get renderRequested(){return this._renderRequested.value}get state(){return this._state}set state(e){this._state=e,this.requestDeclutter(),this.requestRender()}get stationary(){return this._stationary}set stationary(e){this._stationary!==e&&(this._stationary=e,this.requestRender())}get animationsEnabled(){return this._animationsEnabled}set animationsEnabled(e){this._animationsEnabled!==e&&(this._animationsEnabled=e,this._animationsEnabled&&this.requestRender())}trashDisplayObject(e){this._trash.add(e),this.requestRender()}untrashDisplayObject(e){return this._trash.delete(e)}requestRender(){this._renderRemainingTime=T,this.renderRequested||(this._renderRequested.value=!0,this._taskHandle.resume())}requestDeclutter(){this.labelManager.requestDeclutter(),this.requestRender()}renderFrame(e){const t=this._lastFrameRenderTime?e.time-this._lastFrameRenderTime:0;this._renderRemainingTime-=t,this._renderRemainingTime<=0&&this._taskHandle.pause(),this._lastFrameRenderTime=e.time,this._renderRequested.value=!1,this._renderParameters.state=this._state,this._renderParameters.stationary=this.stationary,this._renderParameters.pixelRatio=window.devicePixelRatio,this._renderParameters.globalOpacity=1,this._renderParameters.time=e.time,this._renderParameters.deltaTime=e.deltaTime,this._renderParameters.effects=null,this._renderParameters.animationsEnabled=this._animationsEnabled,this.processRender(this._renderParameters),this._emptyTrash()}_createTransforms(){return{displayViewScreenMat3:n()}}renderChildren(e){this._reshuffleManager.reshuffle(l);const t=[];this._prepareFeatureContainers(t,this);const r=this.labelManager.declutter(t,e.state);r&&this.requestRender(),this._managedCanvas.render(e,()=>this._renderChildren(this.children,e,r))}_renderChildren(e,t,r=!1){t.decluttering=r;for(const i of e)i.beforeRender(t);const s=this.context;this.painter.textureUploadManager.upload(),s.resetInfo(),t.profiler.recordStart("drawLayers"),t.dataUploadCounter=0,this.painter.beforeRenderPhases(t,t.backgroundColor,this.state.padding),t.drawPhase=1;for(const i of e)i.processRender(t);if(this.children.some(e=>e.hasHighlight)){t.drawPhase=16;for(const r of e)r.processRender(t)}if(this.children.some(e=>e.hasLabels)){t.drawPhase=2;for(const r of e)r.processRender(t)}if(has("esri-tiles-debug")){t.drawPhase=64;for(const r of e)r.processRender(t)}t.drawPhase=128;for(const i of e)i.processRender(t);this.painter.afterRenderPhases(t),t.profiler.recordEnd("drawLayers"),s.logInfo();for(const i of e)i.afterRender(t)}_prepareFeatureContainers(e,t){for(const r of t.children)r instanceof _?e.push(r):r instanceof d&&this._prepareFeatureContainers(e,r)}doRender(e){const t=this.context,{state:r,pixelRatio:s}=e;this._managedCanvas.resize(e),t.setViewport(0,0,s*r.size[0],s*r.size[1]),t.setDepthWriteEnabled(!0),t.setStencilWriteMask(255),this.renderChildren(e)}async takeScreenshot(e,t,r,s){const i=Math.round(this.state.size[0]*e.resolutionScale),a=Math.round(this.state.size[1]*e.resolutionScale),n=e.resolutionScale,o=this.context,h=this._state.clone();if(null!=s){const e=h.viewpoint;h.viewpoint.rotation=s,h.viewpoint=e}const d={...this._renderParameters,drawPhase:null,globalOpacity:1,stationary:!0,state:h,pixelRatio:n,time:performance.now(),deltaTime:0,blendMode:null,effects:null,inFadeTransition:!1,backgroundColor:r},l=new P(i,a);l.wrapMode=33071,l.internalFormat=w.RGBA8,l.isImmutable=!0;const m=new x(o,l,new C(R.DEPTH24_STENCIL8,i,a)),u=o.boundFramebuffer,c=o.getViewport();o.bindFramebuffer(m),o.setViewport(0,0,i,a),this._renderChildren(t??this.children,d);const p=this._readbackScreenshot(m,{...e.cropArea,y:a-(e.cropArea.y+e.cropArea.height)});o.bindFramebuffer(u),o.setViewport(c.x,c.y,c.width,c.height),this.requestRender();const g=await p;let f;return 1===e.outputScale?f=g:(f=new ImageData(Math.round(g.width*e.outputScale),Math.round(g.height*e.outputScale)),(await import("../../support/screenshotUtils.js")).resampleHermite(g,f,!0)),m.dispose(),f}async _readbackScreenshot(e,t){const r=(await import("../../support/screenshotUtils.js")).createEmptyImageData(t.width,t.height,document.createElement("canvas"));return await e.readPixelsAsync(t.x,t.y,t.width,t.height,6408,y.UNSIGNED_BYTE,new Uint8Array(r.data.buffer)),r}_emptyTrash(){for(;this._trash.size>0;){const e=Array.from(this._trash);this._trash.clear();for(const t of e)t.processDetach()}}}e([a()],q.prototype,"updating",null);export{q as Stage,T as extraRenderTime};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{isForeverZero as e,getEndValue as t}from"./animatedValues.js";import s from"../webgl/WGLContainer.js";import{Techniques as r}from"../webgl/shaderGraph/techniques/TechniqueRegistry.js";class
|
|
2
|
+
import{isForeverZero as e,getEndValue as t}from"./animatedValues.js";import s from"../webgl/WGLContainer.js";import{Techniques as r}from"../webgl/shaderGraph/techniques/TechniqueRegistry.js";class i extends s{constructor(){super(...arguments),this.flowStyle=null}renderChildren(e){if(super.renderChildren(e),this.visible&&1===e.drawPhase)for(const t of this.children)this._renderDisplayObject(e,t)}_renderDisplayObject(s,i){const{requestRender:a}=s,n=[];for(const o of i.items){o.attached||(o.resources.attach({context:s.context}),o.attached=!0);const c=s.time/1e3;(s.animationsEnabled?e(o.displayOpacity,c)||c>o.endTime+o.style.slideoutDuration:0===t(o.displayOpacity))?o.attached&&(o.resources.detach(),o.attached=!1):(n.push(o),i.updateMatrix(s.state,o.resources.query),r.flow.render(s,{item:o,dvsMat3:i.transforms.displayViewScreenMat3}),o.style.animated&&null!=a&&s.animationsEnabled&&a())}i.items.splice(0,i.items.length,...n)}getFlowResources(e,t=!1){const s=this.children.filter(e=>e.visible).flatMap(e=>e.items.map(e=>e.resources)).find(t=>t.query.extent.contains(e));return s&&t&&"stack"===s.kind?s.resources.find(e=>"imagery"!==e.kind&&"stack"!==e.kind):s}}export{i as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{__decorate as t}from"tslib";import e from"../../../../
|
|
2
|
+
import{__decorate as t}from"tslib";import e from"../../../../core/Accessor.js";import{watch as i}from"../../../../core/reactiveUtils.js";import{property as o,subclass as a}from"../../../../core/accessorSupport/decorators.js";import s from"./createFlowStyle.js";import r from"./FlowContainer.js";import n from"./FlowStrategy.js";import{readFromFlowData as l}from"../../../support/rasterHitTestUtils.js";import{loadImagery as d}from"../../../support/flow/dataUtils.js";let h=class extends e{constructor(){super(...arguments),this._loadImagery=(t,e,i,o,a)=>d(this.layer,t,e,i,o,a),this._createFlowMesh=(t,e,i,o,a)=>this.layer.createFlowMesh({meshType:t,flowData:i,simulationSettings:e,startInfo:o},{signal:a}),this.attached=!1,this.type="flow",this.timeExtent=null,this.redrawOrRefetch=async()=>{this._updateVisualization()}}get updating(){return!this.attached||this._strategy.updating}attach(){const{layer:t}=this,e=()=>{this._loadImagery=(e,i,o,a,s)=>d(t,e,i,o,a,s),this._updateVisualization()};"multidimensionalDefinition"in t?this.addHandles(i(()=>t.multidimensionalDefinition,e)):this.addHandles([i(()=>t.mosaicRule,e),i(()=>t.rasterFunction,e),i(()=>t.definitionExpression,e)]),this.addHandles(i(()=>this.layerView.view.animationsEnabled,()=>this.layerView.requestUpdate())),this.container=new r,this._strategy=new n({flowContainer:this.container}),this._updateVisualization()}detach(){this._strategy.destroy(),this.container?.removeAllChildren(),this.container=null,this.removeHandles()}update(t){t.stationary?this._strategy.update(t,this.layerView.view.animationsEnabled):this.layerView.requestUpdate()}hitTest(t){const e=this.container?.getFlowResources(t,!0);if(!e?.flowData)return null;const{flowData:i,query:{extent:o}}=e;return l({mapPoint:t,layer:this.layer,sourceData:{flowData:i,extent:o}})}moveEnd(){}async doRefresh(){}_updateVisualization(){const t=this.layer.renderer;if(null==t||"flow"!==t.type)return;const e=s(t,{loadImagery:this._loadImagery,createFlowMesh:this._createFlowMesh,timeExtent:this.timeExtent});this.container.flowStyle=e,this.layerView.requestUpdate()}};t([o()],h.prototype,"_strategy",void 0),t([o()],h.prototype,"attached",void 0),t([o()],h.prototype,"container",void 0),t([o()],h.prototype,"layer",void 0),t([o()],h.prototype,"layerView",void 0),t([o()],h.prototype,"scheduler",void 0),t([o()],h.prototype,"type",void 0),t([o()],h.prototype,"updating",null),t([o()],h.prototype,"timeExtent",void 0),h=t([a("esri.views.2d.engine.flow.FlowView2D")],h);export{h as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
class
|
|
2
|
+
class t{constructor(t,s,o){this.query=t,this.flowPaths=s,this.flowData=o}}export{t as AFlowResources};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{throwIfAborted as t}from"../../../../../core/promiseUtils.js";import{timeExtentsEqual as a,getFlowFloatUniforms as s,getFlowColorUniforms as e}from"../utils.js";import{AFlowResources as i}from"./AFlowResources.js";import{Mesh as r}from"../../webgl/meshing/Mesh.js";import{FlowImageryShader as o}from"../../webgl/shaderGraph/techniques/shaders/flow/FlowImageryShader.js";import{PrimitiveType as m,DataType as n}from"../../../../webgl/enums.js";import l from"../../../../webgl/Texture.js";import{TextureDescriptor as p}from"../../../../webgl/TextureDescriptor.js";import{VertexElementDescriptor as h}from"../../../../webgl/VertexElementDescriptor.js";class c{constructor(t){this._params=t,this.supportsContinuation=!1,this.slideoutDuration=0,this.animated=!1}isCompatible(t){if(!(t instanceof c))return!1;if(!a(this._params.timeExtent,t._params.timeExtent))return!1;let s=!0;return s=s&&this._params.loadImagery===t._params.loadImagery,s=s&&this._params.color.kind===t._params.color.kind,s=s&&this._params.opacity.kind===t._params.opacity.kind,s}updateResource(t){t.updateValues(this._params.color,this._params.opacity)}async load(a,s,e){const{extent:i,size:r}=a;t(e);const o=await this._params.loadImagery(i,r[0],r[1],this._params.timeExtent,e);return new d(o,a,[],{color:this._params.color,opacity:this._params.opacity})}}const u=[new h("position",2,n.UNSIGNED_SHORT,0,8),new h("texcoord",2,n.UNSIGNED_SHORT,4,8)];class d extends i{static{this._shader=new o}constructor(t,a,s,e){super(a,s),this._flowData=t,this._values=
|
|
2
|
+
import{throwIfAborted as t}from"../../../../../core/promiseUtils.js";import{timeExtentsEqual as a,getFlowFloatUniforms as s,getFlowColorUniforms as e}from"../utils.js";import{AFlowResources as i}from"./AFlowResources.js";import{Mesh as r}from"../../webgl/meshing/Mesh.js";import{FlowImageryShader as o}from"../../webgl/shaderGraph/techniques/shaders/flow/FlowImageryShader.js";import{PrimitiveType as m,DataType as n}from"../../../../webgl/enums.js";import l from"../../../../webgl/Texture.js";import{TextureDescriptor as p}from"../../../../webgl/TextureDescriptor.js";import{VertexElementDescriptor as h}from"../../../../webgl/VertexElementDescriptor.js";class c{constructor(t){this._params=t,this.supportsContinuation=!1,this.slideoutDuration=0,this.animated=!1}isCompatible(t){if(!(t instanceof c))return!1;if(!a(this._params.timeExtent,t._params.timeExtent))return!1;let s=!0;return s=s&&this._params.loadImagery===t._params.loadImagery,s=s&&this._params.color.kind===t._params.color.kind,s=s&&this._params.opacity.kind===t._params.opacity.kind,s}updateResource(t){t.updateValues(this._params.color,this._params.opacity)}async load(a,s,e){const{extent:i,size:r}=a;t(e);const o=await this._params.loadImagery(i,r[0],r[1],this._params.timeExtent,e);return new d(o,a,[],o,{color:this._params.color,opacity:this._params.opacity})}}const u=[new h("position",2,n.UNSIGNED_SHORT,0,8),new h("texcoord",2,n.UNSIGNED_SHORT,4,8)];class d extends i{static{this._shader=new o}constructor(t,a,s,e,i){super(a,s,e),this._flowData=t,this._values=i,this.kind="imagery"}attach(t){const{context:a}=t,{width:s,height:e}=this._flowData;this.mesh=new r(a,{vertex:{geometry:{data:new Uint16Array([0,0,0,1,s,0,1,1,0,e,0,0,s,e,1,0]),layout:u}},groups:[{primitive:m.TRIANGLE_STRIP}],parts:[{group:0,start:0,count:4}]});let i=1e6,o=-1e6;for(let r=0;r<e;r++)for(let t=0;t<s;t++)if(0!==this._flowData.mask[r*s+t]){const a=this._flowData.data[2*(r*s+t)],e=this._flowData.data[2*(r*s+t)+1],m=Math.sqrt(a*a+e*e);i=Math.min(i,m),o=Math.max(o,m)}const n=new Uint8Array(4*s*e);for(let r=0;r<e;r++)for(let t=0;t<s;t++)if(0!==this._flowData.mask[r*s+t]){const a=this._flowData.data[2*(r*s+t)],e=this._flowData.data[2*(r*s+t)+1],m=(Math.sqrt(a*a+e*e)-i)/(o-i);n[4*(r*s+t)]=255*m,n[4*(r*s+t)+1]=0,n[4*(r*s+t)+2]=0,n[4*(r*s+t)+3]=255}else n[4*(r*s+t)]=0,n[4*(r*s+t)+1]=0,n[4*(r*s+t)+2]=0,n[4*(r*s+t)+3]=0;const h=new p(s,e);h.internalFormat=6408,h.wrapMode=33071,h.flipped=!0;const c=new l(a,h,n);this.texture=c,this.min=i,this.max=o,this._flowData=null}detach(){this.mesh.destroy(),this.texture.dispose()}get ready(){return!0}updateValues(t,a){this._values={color:t,opacity:a}}getProgramSpec(t){return{shader:d._shader,uniforms:{state:{time:t.time,dvsMat3:t.dvsMat3,displayViewMat3:t.displayViewMat3,displayOpacity:t.displayOpacity,startTime:t.startTime,endTime:t.endTime},config:{min:this.min,max:this.max},color:e(this._values.color),opacity:s(this._values.opacity)},textures:{texture:{texture:this.texture,unit:0}},defines:{vvColor:"ramp"===this._values.color.kind,vvOpacity:"ramp"===this._values.opacity.kind},optionalAttributes:null}}}export{c as Imagery,d as ImageryResources};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{throwIfAborted as t}from"../../../../../core/promiseUtils.js";import{deserializeFlowPaths as
|
|
2
|
+
import{throwIfAborted as t}from"../../../../../core/promiseUtils.js";import{deserializeFlowPaths as a}from"../flowPathsIO.js";import{areStreamlinesCompatible as s,getFlowFloatUniforms as e,getFlowColorUniforms as i}from"../utils.js";import{AFlowResources as r}from"./AFlowResources.js";import{Mesh as o}from"../../webgl/meshing/Mesh.js";import{FlowParticlesShader as p}from"../../webgl/shaderGraph/techniques/shaders/flow/FlowParticlesShader.js";import{getPositions as n}from"../../../../support/flow/utils.js";import{PrimitiveType as m,DataType as h}from"../../../../webgl/enums.js";import{VertexElementDescriptor as l}from"../../../../webgl/VertexElementDescriptor.js";class d{constructor(t){this._params=t,this.supportsContinuation=!1,this.slideoutDuration=0}get animated(){return this._params.flowSpeed>0}isCompatible(t){return t instanceof d&&s(this._params,t._params)}updateResource(t){t.updateParams(this._params.flowSpeed,this._params.trailLength)}async load(s,e,i){const{extent:r,size:o}=s;t(i);const p=await this._params.loadImagery(r,o[0],o[1],this._params.timeExtent,i),m={...p,data:p.data.slice(),mask:p.mask?.slice()},h=e&&this._params.simulationSettings.continuous?n(e.flowPaths,e.query,s,this._params.flowSpeed):[],{vertexData:l,indexData:d,pathData:c}=await this._params.createFlowMesh("Particles",this._params.simulationSettings,p,{positions:h},i),_=a(c);return new u(l,d,s,_,m,{color:this._params.color,opacity:this._params.opacity,size:this._params.size},this._params)}}const c=[new l("xyts0",4,h.FLOAT,0,64),new l("xyts1",4,h.FLOAT,16,64),new l("typeIdFirstTimeLastTime",4,h.FLOAT,32,64),new l("extrudeInfo",4,h.FLOAT,48,64)];class u extends r{static{this._shader=new p}constructor(t,a,s,e,i,r,o){super(s,e,i),this._vertexData=t,this._indexData=a,this._values=r,this._params=o,this.kind="particles"}attach(t){const{context:a}=t;this.mesh=new o(a,{vertex:{geometry:{data:this._vertexData,layout:c}},index:{indices:{data:this._indexData}},groups:[{index:"indices",primitive:m.TRIANGLES}],parts:[{group:0,start:0,count:this._indexData.length}]}),this._vertexData=null,this._indexData=null}detach(){this.mesh.destroy()}get ready(){return!0}updateParams(t,a){this._params.flowSpeed=t,this._params.trailLength=a}getProgramSpec(t){return{shader:u._shader,uniforms:{state:{time:t.time,dvsMat3:t.dvsMat3,displayViewMat3:t.displayViewMat3,displayOpacity:t.displayOpacity,startTime:t.startTime,endTime:t.endTime},config:{trailLength:this._params.trailLength,flowSpeed:this._params.flowSpeed,featheringSize:this._params.featheringSize,featheringOffset:this._params.featheringOffset,introFade:this._params.introFade?1:0,fadeToZero:this._params.fadeToZero?1:0,decayRate:this._params.decayRate},color:i(this._values.color),opacity:e(this._values.opacity),size:e(this._values.size)},textures:{},defines:{vvColor:"ramp"===this._values.color.kind,vvOpacity:"ramp"===this._values.opacity.kind,vvSize:"ramp"===this._values.size.kind},optionalAttributes:null}}}export{d as Particles,u as ParticlesResources};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{AFlowResources as s}from"./AFlowResources.js";class t{constructor(s){this._styles=s,this.supportsContinuation=!1,this.slideoutDuration=0}get animated(){return this._styles.reduce((s,t)=>s||t.animated,!1)}isCompatible(s){if(!(s instanceof t))return!1;if(this._styles.length!==s._styles.length)return!1;const e=this._styles.length;for(let t=0;t<e;t++)if(!this._styles[t].isCompatible(s._styles[t]))return!1;return!0}updateResource(s){const t=Math.min(this._styles.length,s.resources.length);for(let e=0;e<t;e++)this._styles[e].updateResource(s.resources[e])}async load(s,t,r){const o=await Promise.all(this._styles.map(t=>t.load(s,null,r)));return new e(o,s,[])}}class e extends s{constructor(s,t,e){super(t,e),this.resources=s,this.kind="stack"}attach(s){for(const t of this.resources)t.attach(s)}detach(){for(const s of this.resources)s.detach()}get ready(){return this.resources.reduce((s,t)=>s&&t.ready,!0)}}export{t as Stack,e as StackResources};
|
|
2
|
+
import{AFlowResources as s}from"./AFlowResources.js";class t{constructor(s){this._styles=s,this.supportsContinuation=!1,this.slideoutDuration=0}get animated(){return this._styles.reduce((s,t)=>s||t.animated,!1)}isCompatible(s){if(!(s instanceof t))return!1;if(this._styles.length!==s._styles.length)return!1;const e=this._styles.length;for(let t=0;t<e;t++)if(!this._styles[t].isCompatible(s._styles[t]))return!1;return!0}updateResource(s){const t=Math.min(this._styles.length,s.resources.length);for(let e=0;e<t;e++)this._styles[e].updateResource(s.resources[e])}async load(s,t,r){const o=await Promise.all(this._styles.map(t=>t.load(s,null,r)));return new e(o,s,[])}}class e extends s{constructor(s,t,e){super(t,e,null),this.resources=s,this.kind="stack"}attach(s){for(const t of this.resources)t.attach(s)}detach(){for(const s of this.resources)s.detach()}get ready(){return this.resources.reduce((s,t)=>s&&t.ready,!0)}}export{t as Stack,e as StackResources};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{throwIfAborted as t}from"../../../../../core/promiseUtils.js";import{deserializeFlowPaths as e}from"../flowPathsIO.js";import{areStreamlinesCompatible as s,getFlowFloatUniforms as a,getFlowColorUniforms as i}from"../utils.js";import{AFlowResources as r}from"./AFlowResources.js";import{Mesh as o}from"../../webgl/meshing/Mesh.js";import{FlowStreamlinesShader as n}from"../../webgl/shaderGraph/techniques/shaders/flow/FlowStreamlinesShader.js";import{getPositions as
|
|
2
|
+
import{throwIfAborted as t}from"../../../../../core/promiseUtils.js";import{deserializeFlowPaths as e}from"../flowPathsIO.js";import{areStreamlinesCompatible as s,getFlowFloatUniforms as a,getFlowColorUniforms as i}from"../utils.js";import{AFlowResources as r}from"./AFlowResources.js";import{Mesh as o}from"../../webgl/meshing/Mesh.js";import{FlowStreamlinesShader as n}from"../../webgl/shaderGraph/techniques/shaders/flow/FlowStreamlinesShader.js";import{getPositions as m}from"../../../../support/flow/utils.js";import{PrimitiveType as p,DataType as h}from"../../../../webgl/enums.js";import{VertexElementDescriptor as l}from"../../../../webgl/VertexElementDescriptor.js";class d{constructor(t){this._params=t,this.supportsContinuation=!1,this.slideoutDuration=20}get animated(){return this._params.flowSpeed>0}isCompatible(t){return t instanceof d&&s(this._params,t._params)}updateResource(t){t.updateParams(this._params.flowSpeed,this._params.trailLength)}async load(s,a,i){const{extent:r,size:o}=s;t(i);const n=await this._params.loadImagery(r,o[0],o[1],this._params.timeExtent,i),p={...n,data:n.data.slice(),mask:n.mask?.slice()},h=a&&this._params.simulationSettings.continuous?m(a.flowPaths,a.query,s,this._params.flowSpeed):[],{vertexData:l,indexData:d,pathData:u}=await this._params.createFlowMesh("Streamlines",this._params.simulationSettings,n,{positions:h},i),_=e(u);return new c(l,d,s,_,p,{color:this._params.color,opacity:this._params.opacity,size:this._params.size},this._params)}}const u=[new l("positionAndSide",3,h.FLOAT,0,36),new l("timeInfo",3,h.FLOAT,12,36),new l("extrude",2,h.FLOAT,24,36),new l("speed",1,h.FLOAT,32,36)];class c extends r{static{this._shader=new n}constructor(t,e,s,a,i,r,o){super(s,a,i),this._vertexData=t,this._indexData=e,this._values=r,this._params=o,this.kind="streamlines"}attach(t){const{context:e}=t;this.mesh=new o(e,{vertex:{geometry:{data:this._vertexData,layout:u}},index:{indices:{data:this._indexData}},groups:[{index:"indices",primitive:p.TRIANGLES}],parts:[{group:0,start:0,count:this._indexData.length}]}),this._vertexData=null,this._indexData=null}detach(){this.mesh.destroy()}get ready(){return!0}updateParams(t,e){this._params.flowSpeed=t,this._params.trailLength=e}getProgramSpec(t){return{shader:c._shader,uniforms:{state:{time:t.time-this.query.time,dvsMat3:t.dvsMat3,displayViewMat3:t.displayViewMat3,displayOpacity:t.displayOpacity,startTime:t.startTime-this.query.time,endTime:t.endTime-this.query.time},config:{trailLength:this._params.trailLength,flowSpeed:this._params.flowSpeed,featheringSize:this._params.featheringSize,featheringOffset:this._params.featheringOffset,introFade:this._params.introFade?1:0,fadeToZero:this._params.fadeToZero?1:0,decayRate:this._params.decayRate},color:i(this._values.color),opacity:a(this._values.opacity),size:a(this._values.size)},textures:{},defines:{vvColor:"ramp"===this._values.color.kind,vvOpacity:"ramp"===this._values.opacity.kind,vvSize:"ramp"===this._values.size.kind},optionalAttributes:null}}}export{d 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 t from"../../../../core/Accessor.js";import has from"../../../../core/has.js";import{property as i,subclass as s}from"../../../../core/accessorSupport/decorators.js";let o=class extends t{constructor(e){super(e),this.computedOpacity=1,this.computedVisible=!0,this.opacity=1,this.visible=!0,this._fadeOutResolver=null,this._fadeInResolver=null}get transitioning(){return
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import has from"../../../../core/has.js";import{property as i,subclass as s}from"../../../../core/accessorSupport/decorators.js";let o=class extends t{constructor(e){super(e),this.computedOpacity=1,this.computedVisible=!0,this.opacity=1,this.visible=!0,this._fadeOutResolver=null,this._fadeInResolver=null}get transitioning(){return this.opacity!==this.computedOpacity}endTransition(){this._fadeInResolver?.resolve(),this._fadeOutResolver?.resolve(),this._fadeInResolver=this._fadeOutResolver=null,this.computedOpacity=this.visible?this.opacity:0}fadeIn(){return this._fadeInResolver||(this.opacity=1,this.computedOpacity=0,this._fadeOutResolver?.resolve(),this._fadeOutResolver=null,this._fadeInResolver=Promise.withResolvers()),this._fadeInResolver.promise}fadeOut(){return this._fadeOutResolver||(this.opacity=0,this._fadeInResolver?.resolve(),this._fadeInResolver=null,this._fadeOutResolver=Promise.withResolvers()),this._fadeOutResolver.promise}transitionStep(e,t){const i=has("mapview-transitions-duration"),s=i?1/i:0;if(0===s)this.computedOpacity=this.opacity,this.computedVisible=this.visible;else{const t=this._fadeOutResolver||!this.visible?0:this.opacity,i=this.computedOpacity;if(i===t)this.computedVisible=this.visible;else{const o=e*s;this.computedOpacity=i>t?Math.max(t,i-o):Math.min(t,i+o),this.computedVisible=this.computedOpacity>0}}this.transitioning||(this._fadeInResolver?.resolve(),this._fadeOutResolver?.resolve(),this._fadeOutResolver=this._fadeInResolver=null)}};e([i()],o.prototype,"computedOpacity",void 0),e([i()],o.prototype,"computedVisible",void 0),e([i()],o.prototype,"opacity",void 0),e([i()],o.prototype,"visible",void 0),e([i()],o.prototype,"transitioning",null),e([i()],o.prototype,"_fadeOutResolver",void 0),e([i()],o.prototype,"_fadeInResolver",void 0),o=e([s("esri.views.2d.engine.transitions.FadeTransition")],o);export{o as FadeTransition};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{RenderingDevice as e}from"../webgl/RenderingDevice.js";import{simplePipelineState as t}from"../webgl/shaderGraph/utils.js";import{VTLTechniquesRepo as i}from"../webgl/shaderGraph/techniques/vectorTiles/VTLTechniques.js";const r=1e-6;class n{constructor(t,r){this.spriteMosaic=t,this.glyphMosaic=r,this._vtlTechniques=new i,this._context=null,this._vtlTechniques.startup(),this._renderingDevice=new e}dispose(){this._vtlTechniques&&this._vtlTechniques.shutdown(this._context),this.spriteMosaic.dispose(),this.glyphMosaic.dispose(),this._renderingDevice.dispose(),this._context=null}drawSymbols(e,t,i){const n=i.layers;e.renderPass="translucent";const
|
|
2
|
+
import{RenderingDevice as e}from"../webgl/RenderingDevice.js";import{simplePipelineState as t}from"../webgl/shaderGraph/utils.js";import{VTLTechniquesRepo as i}from"../webgl/shaderGraph/techniques/vectorTiles/VTLTechniques.js";const r=1e-6;class n{constructor(t,r){this.spriteMosaic=t,this.glyphMosaic=r,this._vtlTechniques=new i,this._context=null,this._vtlTechniques.startup(),this._renderingDevice=new e}dispose(){this._vtlTechniques&&this._vtlTechniques.shutdown(this._context),this.spriteMosaic.dispose(),this.glyphMosaic.dispose(),this._renderingDevice.dispose(),this._context=null}drawSymbols(e,t,i){const n=i.layers;e.renderPass="translucent";const a=this._vtlTechniques.getTechnique(3);s[0]=t;for(let o=0;o<n.length;o++){const t=n[o];if(3!==t.type)continue;const i=t.getLayoutProperty("visibility");if(i&&1===i.getValue())continue;const l=e.displayLevel;void 0!==t.minzoom&&t.minzoom>l+r||void 0!==t.maxzoom&&t.maxzoom<=l-r||(e.styleLayerUID=t.uid,e.styleLayer=t,a.render(e,{tiles:s}))}s[0]=null}drawBackground(e,t,i){if(0===i.backgroundBucketIds.length)return;const{displayLevel:n,requiredLevel:a}=e;t.key.level=a,this._renderingDevice.setPipelineState({color:{write:[!0,!0,!0,!0],blendMode:"composite"},stencil:!1,depth:{write:!1,test:519}}),e.renderPass="background";const o=this._vtlTechniques.getTechnique(0);s[0]=t,i.backgroundBucketIds.forEach(t=>{const a=i.getLayerById(t);if(0!==a.type)return;const l=a.getLayoutProperty("visibility");l&&1===l.getValue()||void 0!==a.minzoom&&a.minzoom>n+r||void 0!==a.maxzoom&&a.maxzoom<=n-r||(e.styleLayerUID=a.uid,e.styleLayer=a,o.render(e,{tiles:s}))}),s[0]=null}drawTile(e,i,r,n){const s=r.layers,a=n?e=>n!==e.type||!i.layerData.has(e.uid):e=>!i.layerData.has(e.uid),o=s.filter(e=>{if(a(e))return!1;const t=e.getLayoutProperty("visibility");return 1!==t?.getValue()}),{context:l}=e,c=l.getPipelineState(),{depthWrite:d}=c;i.disposeLayerData();let h=0,u=1;void 0!==d?.zNear&&void 0!==d.zFar&&(h=d.zNear,u=d.zFar),this._renderingDevice.setPipelineState({color:{write:[!0,!0,!0,!0],blendMode:"none"},stencil:!1,depth:{write:{zNear:h,zFar:u},test:515}}),e.renderPass="opaque";for(let t=o.length-1;t>=0;--t)this._renderStyleLayer(o[t],e,i);this._renderingDevice.setPipelineState({color:{write:[!0,!0,!0,!0],blendMode:"composite"},stencil:!1,depth:{write:!1,test:515}}),e.renderPass="translucent",o.forEach(t=>this._renderStyleLayer(t,e,i)),this._renderingDevice.setPipelineState(t),l.setPipelineState(c),this._context||(this._context=e.context)}setShader(e){return this._renderingDevice.setShader(e)}setPipelineState(e){return this._renderingDevice.setPipelineState(e)}getPipelineState(){return this._renderingDevice.getPipelineState()}submitDraw(e,t,i){return this._renderingDevice.submitDraw(e,t,i)}submitDrawMesh(e,t,i,r){this._renderingDevice.submitDrawMesh(e,t,i,r)}submitDrawMeshUntyped(e,t,i,r){this._renderingDevice.submitDrawMeshUntyped(e,t,i,r)}updatePipelineState(e){return this._renderingDevice.updatePipelineState(e)}setStencilRef(e,t){return this._renderingDevice.setStencilRef(e,t)}_renderStyleLayer(e,t,i){const{renderPass:n}=t;let a;switch(e.type){case 0:if("background"!==n)return;a=this._vtlTechniques.getTechnique(0);break;case 1:if("opaque"!==n&&"translucent"!==n)return;a=this._vtlTechniques.getTechnique(1);break;case 2:if("translucent"!==n)return;a=this._vtlTechniques.getTechnique(2);break;case 4:if("translucent"!==n)return;a=this._vtlTechniques.getTechnique(4);break;case 3:if("translucent"!==n)return;a=this._vtlTechniques.getTechnique(3)}const{displayLevel:o}=t,{minzoom:l,maxzoom:c}=e;if(void 0!==l&&l>o+r||void 0!==c&&c<=o-r||!a)return;const d=this._renderingDevice.getPipelineState();3===e.type&&this._renderingDevice.setPipelineState({color:{write:[!0,!0,!0,!0],blendMode:"composite"},stencil:!1,depth:!1}),t.styleLayerUID=e.uid,t.styleLayer=e,s[0]=i,a.render(t,{tiles:s}),s[0]=null,3===e.type&&this._renderingDevice.setPipelineState(d)}}const s=[null];export{n as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{VectorTile as e}from"../VectorTile.js";import{fadeDuration as t}from"./config.js";function o(e){return(e.uniqueSymbol?.show&&e.uniqueSymbol?.lastShow)??!1}function i(e,t){if(e.priority-t.priority)return e.priority-t.priority;if(o(e)&&!o(t))return-1;if(o(t)&&!o(e))return 1;const i=e.tile.key,s=t.tile.key;return i.world-s.world?i.world-s.world:i.level-s.level?i.level-s.level:i.row-s.row?i.row-s.row:i.col-s.col?i.col-s.col:e.xTile-t.xTile?e.xTile-t.xTile:e.yTile-t.yTile}class s{get running(){return this._running}constructor(e,t,o,i,s,r,n,l){this.selectionMode=e,this._visibleTiles=t,this._symbolRepository=o,this._styleRepository=i,this._createCollisionJob=s,this._assignTileSymbolsOpacity=r,this._symbolLayerSorter=n,this._isLayerVisible=l,this._selectionJob=null,this._selectionJobCompleted=!1,this._collisionJob=null,this._collisionJobCompleted=!1,this._opacityJob=null,this._opacityJobCompleted=!1,this._running=!0}setScreenSize(e,t){this._screenWidth===e&&this._screenHeight===t||this.restart(),this._screenWidth=e,this._screenHeight=t}restart(){this._selectionJob=null,this._selectionJobCompleted=!1,this._collisionJob=null,this._collisionJobCompleted=!1,this._opacityJob=null,this._opacityJobCompleted=!1,this._running=!0}continue(e){if(this._selectionJob||(this._selectionJob=this._createSelectionJob()),!this._selectionJobCompleted){const t=performance.now();if(!this._selectionJob.work(e))return!1;if(this._selectionJobCompleted=!0,0===(e=Math.max(0,e-(performance.now()-t))))return!1}if(this._collisionJob||(this._collisionJob=this._createCollisionJob(this._selectionJob.sortedSymbols,this._screenWidth,this._screenHeight)),!this._collisionJobCompleted){const t=performance.now();if(!this._collisionJob.work(e))return!1;if(this._collisionJobCompleted=!0,0===(e=Math.max(0,e-(performance.now()-t))))return!1}if(this._opacityJob||(this._opacityJob=this._createOpacityJob()),!this._opacityJobCompleted){const t=performance.now();if(!this._opacityJob.work(e))return!1;if(this._opacityJobCompleted=!0,0===(e=Math.max(0,e-(performance.now()-t))))return!1}return this._running=!1,!0}_getFilteredByLayer(){let e;if(this._styleRepository?.layerContexts)for(const t of this._symbolRepository.uniqueSymbols){const o=this._styleRepository.layerContexts?.get(t.styleLayerUID);if(o?.attributeView)for(const i of t.uniqueSymbols){e??=new Map,e.get(t.styleLayerUID)||e.set(t.styleLayerUID,new Set);const s=e.get(t.styleLayerUID);o.isFeatureFiltered(i.id)&&s.add(i.id)}}return e}_resetSelection(){for(let e=0;e<this._symbolRepository.uniqueSymbols.length;e++){const t=this._symbolRepository.uniqueSymbols[e];for(let e=0;e<t.uniqueSymbols.length;e++){const o=t.uniqueSymbols[e];for(const e of o.tileSymbols)e.selectedForRendering=!1}}}_createSelectionJob(){const e="feature-tile"===this.selectionMode?n:l,t=this._symbolRepository.uniqueSymbols;this._resetSelection();const o=[];let s=0,r=0;const c=this._isLayerVisible,y=this._getFilteredByLayer(),a=this._styleRepository?.layerContexts;function h(n){let l;const h=performance.now();for(;r<t.length;r++,s=0){const i=t[r],u=i.styleLayerUID,f=y?.get(u);let b=0;if(a){b=a.get(u).layerOrder}if(!c(u)){o[r]||(o[r]={styleLayerUID:u,layerOrder:b,symbols:[]});continue}o[r]||={styleLayerUID:u,symbols:[],layerOrder:b};const m=o[r];for(;s<i.uniqueSymbols.length;s++){if(l=i.uniqueSymbols[s],s%100==99&&performance.now()-h>n)return!1;if(l.lastShow=l.show,l.id&&f?.has(l.id)){l.show=!1,l.parts[0].show=!1,l.parts[1].show=!1;continue}const t=e(l);if(t){t.selectedForRendering=!0,m.symbols.push(t),l.show=!0;for(const e of l.parts)e.show=!0}else l.show=!1}}for(const e of o)e.symbols.sort(i);return o.sort((e,t)=>t.layerOrder-e.layerOrder),!0}const u=this._symbolLayerSorter;return{work:h,get sortedSymbols(){return o.sort(u)}}}_createOpacityJob(){const t=this._assignTileSymbolsOpacity,o=this._visibleTiles;let i=0;function s(e,o){for(const t of e.symbols.values())r(t,o);t(e,o);for(const t of e.childrenTiles)s(t,o)}return{work(r){const n=performance.now();for(;i<o.length;i++){if(performance.now()-n>r)return!1;const l=o[i];if(null!=l.parentTile)continue;const c=performance.now();l instanceof e?s(l,c):t(l,c)}return!0}}}}function r(e,o){for(const i of e){const e=i.uniqueSymbol;for(const i of e.parts){const s=i.targetOpacity>.5?1:-1;i.startOpacity+=s*((o-i.startTime)/t),i.startOpacity=Math.min(Math.max(i.startOpacity,0),1),i.startTime=o,i.targetOpacity=e.show&&i.show?1:0}}}function n(e){
|
|
2
|
+
import{VectorTile as e}from"../VectorTile.js";import{fadeDuration as t}from"./config.js";function o(e){return(e.uniqueSymbol?.show&&e.uniqueSymbol?.lastShow)??!1}function i(e,t){if(e.priority-t.priority)return e.priority-t.priority;if(o(e)&&!o(t))return-1;if(o(t)&&!o(e))return 1;const i=e.tile.key,s=t.tile.key;return i.world-s.world?i.world-s.world:i.level-s.level?i.level-s.level:i.row-s.row?i.row-s.row:i.col-s.col?i.col-s.col:e.xTile-t.xTile?e.xTile-t.xTile:e.yTile-t.yTile}class s{get running(){return this._running}constructor(e,t,o,i,s,r,n,l){this.selectionMode=e,this._visibleTiles=t,this._symbolRepository=o,this._styleRepository=i,this._createCollisionJob=s,this._assignTileSymbolsOpacity=r,this._symbolLayerSorter=n,this._isLayerVisible=l,this._selectionJob=null,this._selectionJobCompleted=!1,this._collisionJob=null,this._collisionJobCompleted=!1,this._opacityJob=null,this._opacityJobCompleted=!1,this._running=!0}setScreenSize(e,t){this._screenWidth===e&&this._screenHeight===t||this.restart(),this._screenWidth=e,this._screenHeight=t}restart(){this._selectionJob=null,this._selectionJobCompleted=!1,this._collisionJob=null,this._collisionJobCompleted=!1,this._opacityJob=null,this._opacityJobCompleted=!1,this._running=!0}continue(e){if(this._selectionJob||(this._selectionJob=this._createSelectionJob()),!this._selectionJobCompleted){const t=performance.now();if(!this._selectionJob.work(e))return!1;if(this._selectionJobCompleted=!0,0===(e=Math.max(0,e-(performance.now()-t))))return!1}if(this._collisionJob||(this._collisionJob=this._createCollisionJob(this._selectionJob.sortedSymbols,this._screenWidth,this._screenHeight)),!this._collisionJobCompleted){const t=performance.now();if(!this._collisionJob.work(e))return!1;if(this._collisionJobCompleted=!0,0===(e=Math.max(0,e-(performance.now()-t))))return!1}if(this._opacityJob||(this._opacityJob=this._createOpacityJob()),!this._opacityJobCompleted){const t=performance.now();if(!this._opacityJob.work(e))return!1;if(this._opacityJobCompleted=!0,0===(e=Math.max(0,e-(performance.now()-t))))return!1}return this._running=!1,!0}_getFilteredByLayer(){let e;if(this._styleRepository?.layerContexts)for(const t of this._symbolRepository.uniqueSymbols){const o=this._styleRepository.layerContexts?.get(t.styleLayerUID);if(o?.attributeView)for(const i of t.uniqueSymbols){e??=new Map,e.get(t.styleLayerUID)||e.set(t.styleLayerUID,new Set);const s=e.get(t.styleLayerUID);o.isFeatureFiltered(i.id)&&s.add(i.id)}}return e}_resetSelection(){for(let e=0;e<this._symbolRepository.uniqueSymbols.length;e++){const t=this._symbolRepository.uniqueSymbols[e];for(let e=0;e<t.uniqueSymbols.length;e++){const o=t.uniqueSymbols[e];for(const e of o.tileSymbols)e.selectedForRendering=!1}}}_createSelectionJob(){const e="feature-tile"===this.selectionMode?n:l,t=this._symbolRepository.uniqueSymbols;this._resetSelection();const o=[];let s=0,r=0;const c=this._isLayerVisible,y=this._getFilteredByLayer(),a=this._styleRepository?.layerContexts;function h(n){let l;const h=performance.now();for(;r<t.length;r++,s=0){const i=t[r],u=i.styleLayerUID,f=y?.get(u);let b=0;if(a){b=a.get(u).layerOrder}if(!c(u)){o[r]||(o[r]={styleLayerUID:u,layerOrder:b,symbols:[]});continue}o[r]||={styleLayerUID:u,symbols:[],layerOrder:b};const m=o[r];for(;s<i.uniqueSymbols.length;s++){if(l=i.uniqueSymbols[s],s%100==99&&performance.now()-h>n)return!1;if(l.lastShow=l.show,l.id&&f?.has(l.id)){l.show=!1,l.parts[0].show=!1,l.parts[1].show=!1;continue}const t=e(l);if(t){t.selectedForRendering=!0,m.symbols.push(t),l.show=!0;for(const e of l.parts)e.show=!0}else l.show=!1}}for(const e of o)e.symbols.sort(i);return o.sort((e,t)=>t.layerOrder-e.layerOrder),!0}const u=this._symbolLayerSorter;return{work:h,get sortedSymbols(){return o.sort(u)}}}_createOpacityJob(){const t=this._assignTileSymbolsOpacity,o=this._visibleTiles;let i=0;function s(e,o){for(const t of e.symbols.values())r(t,o);t(e,o);for(const t of e.childrenTiles)s(t,o)}return{work(r){const n=performance.now();for(;i<o.length;i++){if(performance.now()-n>r)return!1;const l=o[i];if(null!=l.parentTile)continue;const c=performance.now();l instanceof e?s(l,c):t(l,c)}return!0}}}}function r(e,o){for(const i of e){const e=i.uniqueSymbol;for(const i of e.parts){const s=i.targetOpacity>.5?1:-1;i.startOpacity+=s*((o-i.startTime)/t),i.startOpacity=Math.min(Math.max(i.startOpacity,0),1),i.startTime=o,i.targetOpacity=e.show&&i.show?1:0}}}function n(e){for(const t of e.tileSymbols)if(t.tile.decluttering)return t;return null}function l(e){let t=null,o=!1,i=!1;for(const s of e.tileSymbols)if(!i||!o){const e=s.tile;(!t||e.isCoverage||e.neededForCoverage&&!o)&&(t=s,(e.neededForCoverage||e.isCoverage)&&(i=!0),e.isCoverage&&(o=!0))}return i?t:null}export{s as SymbolDeclutterer};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{signal as
|
|
2
|
+
import{signal as e}from"../../../../../core/signal.js";import{CollisionJob as t}from"./CollisionJob.js";import{declutterBudget as i,fadeDuration as s}from"./config.js";import{SymbolDeclutterer as r}from"./SymbolDeclutterer.js";import{SymbolRepository as o}from"./SymbolRepository.js";const l=.5,a=1e-6;class n{constructor(t,s,l,n,c,h=i,u=()=>{}){this.styleRepository=s,this.tiles=n,this._declutterBudget=h,this._requestFeatureDeclutter=u,this._tileToHandle=new Map,this._viewState={scale:0,rotation:0,center:[0,0],size:[0,0]},this._declutterViewState={scale:0,rotation:0,center:[0,0],size:[0,0]},this._offsetFromScreenCenter=[0,0],this._completed=!1,this._fading=e(!1);const y=(e,t,i)=>this._createCollisionJob(e,t,i),_=e=>{const t=this.styleRepository.getStyleLayerByUID?.(e);if(t){if(this._zoom+a<t.minzoom||this._zoom-a>=t.maxzoom)return!1;const e=t.getLayoutProperty?.("visibility");if(e&&1===e.getValue())return!1}const i=this.styleRepository.layerContexts?.get(e);return!1!==i?.effectiveVisible},m=(e,t)=>(this.styleRepository.getStyleLayerByUID?.(e.styleLayerUID)?.z??0)-(this.styleRepository.getStyleLayerByUID?.(t.styleLayerUID)?.z??0);this._symbolRepository=new o(c,n),this._symbolDeclutterer=new r(t,n,this._symbolRepository,this.styleRepository,y,l,m,_)}get symbolRepository(){return this._symbolRepository}_createCollisionJob(e,i,s){return this.updateDecluttererViewState(),new t(e,i,s,this.styleRepository,this._zoom,this._viewState.rotation)}get fading(){return this._fading.value}get decluttererOffset(){return this._offsetFromScreenCenter}registerFeatureTile(e){this.symbolRepository?(this.symbolRepository.registerFeatureTile(e),this._requestFeatureDeclutter()):console.error("InternalError: Symbol repository not yet initialized")}unregisterFeatureTile(e){this.symbolRepository?(this._symbolRepository.unregisterFeatureTile(e),this._requestFeatureDeclutter()):console.error("InternalError: Symbol repository not yet initialized")}insertFeatureTileMetrics(e,t){this.symbolRepository?(this.symbolRepository.insertFeatureTileMetrics(e,t),this._requestFeatureDeclutter()):console.error("InternalError: Symbol repository not yet initialized")}removeFeatureTileMetrics(e,t){this.symbolRepository?(this.symbolRepository.removeFeatureTileMetrics(e,t),this._requestFeatureDeclutter()):console.error("InternalError: Symbol repository not yet initialized")}addTile(e){e.decluttered=!1,this._tileToHandle.set(e,e.on("symbols-changed",()=>{this._symbolRepository.registerVectorTile(e),this.restartDeclutter()})),this._symbolRepository.registerVectorTile(e),this.restartDeclutter()}removeTile(e){const t=this._tileToHandle.get(e);t&&(this._symbolRepository.unregisterVectorTile(e),this.restartDeclutter(),t.remove(),this._tileToHandle.delete(e))}update(e,t){this._zoom=e,this._viewState={scale:t.scale,rotation:t.rotation,center:[t.center[0],t.center[1]],size:[t.size[0],t.size[1]]};const i=[0,0];t.toScreen(i,t.center);const s=[0,0];return t.toScreen(s,this._declutterViewState.center),this._offsetFromScreenCenter[0]=i[0]-s[0],this._offsetFromScreenCenter[1]=i[1]-s[1],this._continueDeclutter(),this._completed}restartDeclutter(){this._completed=!1,this._symbolDeclutterer.restart(),this._notifyUnstable()}clear(){this._completed=!1,this._symbolRepository=null,this._symbolDeclutterer.restart(),this._tileToHandle.forEach(e=>e.remove()),this._tileToHandle.clear()}get stale(){return this._zoom!==this._declutterZoom||this._viewState.size[0]!==this._declutterViewState.size[0]||this._viewState.size[1]!==this._declutterViewState.size[1]||this._viewState.scale!==this._declutterViewState.scale||this._viewState.rotation!==this._declutterViewState.rotation}deleteStyleLayers(e){this._symbolRepository.deleteStyleLayers(e)}_continueDeclutter(){this._completed&&!this.stale||(this._symbolDeclutterer.running||(this.updateDecluttererViewState(),this._symbolDeclutterer.restart()),this._symbolDeclutterer.setScreenSize(this._viewState.size[0],this._viewState.size[1]),this._completed=this._symbolDeclutterer.continue(this._declutterBudget),this._completed&&this._scheduleNotifyStable())}_scheduleNotifyStable(){null!=this._stableNotificationHandle&&clearTimeout(this._stableNotificationHandle),this._stableNotificationHandle=setTimeout(()=>{this._stableNotificationHandle=null,this._fading.value=!1},(1+l)*s)}_notifyUnstable(){null!=this._stableNotificationHandle&&(clearTimeout(this._stableNotificationHandle),this._stableNotificationHandle=null),this._fading.value=!0}updateDecluttererViewState(){this._declutterZoom=this._zoom,this._declutterViewState.center[0]=this._viewState.center[0],this._declutterViewState.center[1]=this._viewState.center[1],this._declutterViewState.rotation=this._viewState.rotation,this._declutterViewState.scale=this._viewState.scale,this._declutterViewState.size[0]=this._viewState.size[0],this._declutterViewState.size[1]=this._viewState.size[1],this._offsetFromScreenCenter[0]=0,this._offsetFromScreenCenter[1]=0}}export{n as SymbolFader};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{UniqueSymbol as e}from"./core.js";import{isSearchCircleOverlapingSymbol as t,tileCoordChangeX as s,tileCoordChangeY as i,GridIndex as l}from"./util.js";class o{static fromSymbols(e,t){let s=e.length;if(s>=
|
|
2
|
+
import{UniqueSymbol as e}from"./core.js";import{isSearchCircleOverlapingSymbol as t,tileCoordChangeX as s,tileCoordChangeY as i,GridIndex as l}from"./util.js";class o{static fromSymbols(e,t){let s=e.length;if(s>=r){let i=t;do{i/=2,s/=4}while(s>n&&i>y);const r=new l(t,t,i);for(const t of e)r.getCell(t.xTile,t.yTile).push(t);return new o(t,e,r)}return new o(t,e,null)}constructor(e,t,s){this.tileCoordRange=e,this._symbols=t,this._index=s}addSymbols(e){for(const t of e)this._symbols.push(t);if(this._index)for(const t of e)this._index.getCell(t.xTile,t.yTile).push(t)}removeSymbols(e){const t=new Set(e);if(this._symbols=this._symbols.filter(e=>!t.has(e)),this._index)for(const s of this._index.cells)for(let e=0;e<s.length;e++)s[e]=s[e].filter(e=>!t.has(e))}getSymbols(){return this._symbols}getCandidate(e,t,s,i){if(!this._index){for(const l of this._symbols)if(s===l.hash&&Math.abs(e-l.xTile)<=i&&Math.abs(t-l.yTile)<=i)return l;return null}const l=this._index.getCellSpan(e-i,t-i,e+i,t+i),[o,r,n,y]=l;for(let a=r;a<=y;a++)for(let l=o;l<=n;l++){const o=this._index.cells[a][l];for(const l of o)if(s===l.hash&&Math.abs(e-l.xTile)<=i&&Math.abs(t-l.yTile)<=i)return l}return null}}const r=32,n=8,y=64,a=20;class u{constructor(e,t){this.tileCoordRange=e,this._visibleTiles=t,this._indexMapByTile=new Map,this._uniqueSymbolsByStyleLayerId=new Map,this._featureMetricUpdates=[]}get uniqueSymbols(){return null==this._uniqueSymbolLayerArray&&(this._uniqueSymbolLayerArray=this._createUniqueSymbolLayerArray()),this._uniqueSymbolLayerArray}registerVectorTile(e,t){const s=this._ensureIndexMap(e),i=t?.values()??s.keys();for(const l of i){const e=s.get(l);e&&(this._removeSymbols(l,e.getSymbols()),s.delete(l))}this._addSymbols(e.key,s,e.symbols),this._invalidate()}unregisterVectorTile(e){this._removeTile(e),this._invalidate()}flushFeatureTileUpdateMessages(){for(const e of this._featureMetricUpdates)switch(e.type){case"tile-add":this._ensureIndexMap(e.tile);break;case"tile-remove":this._removeTile(e.tile);break;case"metrics-add":{const{tile:t,metrics:s}=e,i=this._indexMapByTile.get(t);if(!i)throw new Error(`tile ${t.id} not registered!`);this._addSymbols(t.key,i,h(s));break}case"metrics-remove":{const{tile:t,metrics:s}=e,i=this._indexMapByTile.get(t);if(!i)continue;const l=h(s);for(const[e,o]of i.entries()){const t=l.get(e);t&&(o.removeSymbols(t),this._removeSymbols(e,t))}break}}this._featureMetricUpdates.length=0,this._invalidate()}registerFeatureTile(e){this._featureMetricUpdates.push({type:"tile-add",tile:e})}unregisterFeatureTile(e){this._featureMetricUpdates.push({type:"tile-remove",tile:e})}insertFeatureTileMetrics(e,t){this._featureMetricUpdates.push({type:"metrics-add",tile:e,metrics:t})}removeFeatureTileMetrics(e,t){this._featureMetricUpdates.push({type:"metrics-remove",tile:e,metrics:t})}deleteStyleLayers(e){for(const t of this._indexMapByTile.values())for(const s of e){const e=t.get(s);e&&(this._removeSymbols(s,e.getSymbols()),t.delete(s))}this._invalidate()}querySymbols(e,s,i,l){const o=[];for(const[r,n]of this._uniqueSymbolsByStyleLayerId.entries())for(const l of n){const n=l.tileSymbols.find(e=>e.selectedForRendering);n&&t(n,e,s,i)&&o.push({vtlSymbol:n,styleLayerUID:r,tileKey:n.tile.key})}return o}_ensureIndexMap(e){let t=this._indexMapByTile.get(e);return t||(t=new Map,this._indexMapByTile.set(e,t)),t}_invalidate(){this._uniqueSymbolLayerArray=null}_addSymbols(e,t,s){for(const[i,l]of s){let e=t.get(i);e?e.addSymbols(l):(e=o.fromSymbols(l,this.tileCoordRange),t.set(i,e))}this._updateUniqueSymbols(e,s)}_removeTile(e){const t=this._indexMapByTile.get(e);if(t){for(const[e,s]of t.entries())this._removeSymbols(e,s.getSymbols());this._indexMapByTile.delete(e),this._invalidate()}}_removeSymbols(e,t){for(const s of t){const t=s.uniqueSymbol;if(t){if(t.tileSymbols=t.tileSymbols.filter(e=>e!==s),0===t.tileSymbols.length){const s=this._uniqueSymbolsByStyleLayerId.get(e);s.delete(t),0===s.size&&this._uniqueSymbolsByStyleLayerId.delete(e)}s.uniqueSymbol=null}}}_updateUniqueSymbols(t,s){if(0!==s.size){for(const e of this._visibleTiles)e.parentTile||e.key.world!==t.world||e.key.level===t.level&&!e.key.equals(t)||this._matchSymbols(e,t,s);for(const[t,i]of s)for(const s of i)if(!s.uniqueSymbol){s.uniqueSymbol=new e(s);let i=this._uniqueSymbolsByStyleLayerId.get(t);i||(i=new Set,this._uniqueSymbolsByStyleLayerId.set(t,i)),i.add(s.uniqueSymbol)}}}_matchSymbols(e,t,l){if(e.key.level>t.level){const s=e.key.level-t.level;if(e.key.row>>s!==t.row||e.key.col>>s!==t.col)return}if(t.level>e.key.level){const s=t.level-e.key.level;if(t.row>>s!==e.key.row||t.col>>s!==e.key.col)return}const o=new Map;for(const[r,n]of l){const l=[],y=e.key.level<t.level?1:1<<Math.abs(e.key.level-t.level),u=this._indexMapByTile.get(e),h=u?.get(r);if(h)for(const o of n){if(o.uniqueSymbol)continue;const r=s(this.tileCoordRange,o.xTile,t,e.key),n=i(this.tileCoordRange,o.yTile,t,e.key),u=-a,c=this.tileCoordRange+a;if(!(r>=u&&r<c&&n>=u&&n<c)){l.push(o);continue}const m=h.getCandidate(r,n,o.hash,y),f=m?.uniqueSymbol;f?(o.uniqueSymbol=f,f.tileSymbols.push(o)):l.push(o)}l.length>0&&o.set(r,l)}for(const s of e.childrenTiles||[])this._matchSymbols(s,t,o)}_createUniqueSymbolLayerArray(){const e=this._uniqueSymbolsByStyleLayerId,t=new Array(e.size);let s,i=0;for(const[l,o]of e){const e=new Array(o.size);s=0;for(const t of o)e[s++]=t;t[i]={styleLayerUID:l,uniqueSymbols:e},i++}return t}}function h(e){const t=new Map;for(const s of e){const e=s.labelClassId;let i=t.get(e);i||(i=[],t.set(e,i)),i.push(s)}return t}export{u as SymbolRepository};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{set as t,multiply as s
|
|
2
|
+
import{set as t,multiply as s,identity as i,translate as r,rotate as e,scale as o,invert as n}from"../../../../core/libs/gl-matrix-2/math/mat3.js";import{create as a}from"../../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{set as h,transformMat3 as c}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as l}from"../../../../core/libs/gl-matrix-2/factories/vec3f32.js";import{segmentIntersects as m}from"../../../../geometry/support/intersectsBase.js";import{tileSize as f}from"./definitions.js";import{TiledDisplayObject as p}from"./TiledDisplayObject.js";const u=a(),g=l();class d extends p{constructor(t,s,i,r){super(t,s,i,r,f,f)}setTransform(n){const a=this.resolution/n.resolution,h=this.transforms.tileMat3,[c,l]=n.toScreenNoRotation([0,0],[this.x,this.y]),m=this.width/this.rangeX*a,f=this.height/this.rangeY*a;t(h,m,0,0,0,f,0,c,l,1),s(this.transforms.displayViewScreenMat3,n.displayViewMat3,h);const p=[0,0];n.toScreen(p,[this.x,this.y]);const u=this.transforms.tileUnitsToPixels;i(u),r(u,u,p),e(u,u,Math.PI*n.rotation/180),o(u,u,[m,f,1])}_createTransforms(){return{tileMat3:a(),displayViewScreenMat3:a(),tileUnitsToPixels:a()}}containsScreenPoint(t,i,r){const e=s(u,t.viewMat3,this.transforms.tileMat3),o=n(u,e);if(null==o)return!0;h(g,...i,1);const a=c(g,g,o),l=r*(this.resolution/t.resolution);return a[0]>=-l&&a[0]<this.width+l&&a[1]>=-l&&a[1]<this.height+l}containsScreenRect(t,i){const r=i[0],e=i[1],o=i[2],n=i[3],f=[[r,e],[r,n],[o,e],[o,n]];if(f.some(s=>this.containsScreenPoint(t,[s[0],s[1]],0)))return!0;const p=s(a(),t.viewMat3,this.transforms.tileMat3),u=[[0,0],[this.width,0],[this.width,this.height],[0,this.height]],g=[],d=l();for(const[s,a]of u)h(d,s,a,1),c(d,d,p),g.push([d[0],d[1]]);const x=g.length,M=f.length;for(let s=0;s<x;s++){const t=g[s],i=g[(s+1)%x];for(let s=0;s<M;s++){const r=f[s],e=f[(s+1)%M];if(m(t,i,r,e))return!0}}return!1}}export{d as AFeatureTile};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import t from"../../../../core/Error.js";import has from"../../../../core/has.js";import e from"../../../../core/Logger.js";import{estimateNumberArrayMemory as i}from"../../../../core/memoryEstimations.js";import{dataDrivenUnit2 as
|
|
2
|
+
import t from"../../../../core/Error.js";import has from"../../../../core/has.js";import e from"../../../../core/Logger.js";import{estimateNumberArrayMemory as i}from"../../../../core/memoryEstimations.js";import{signal as s}from"../../../../core/signal.js";import{dataDrivenUnit2 as r,dataDrivenUnit1 as a,dataDrivenUnit0 as n,visualVariableUnit as u,localTimeOriginUnit as h,gpgpuUnit as o,animationUnit as d,filterFlagsUnit as l}from"./definitions.js";import{getDisplayIdTexel as g}from"./DisplayId.js";import{getPixelArrayCtor as p,getPixelBytes as _}from"./Utils.js";import{DisposableFramebufferObject as c}from"../../../webgl/FramebufferObject.js";import x from"../../../webgl/Texture.js";import{TextureDescriptor as f}from"../../../webgl/TextureDescriptor.js";const b=()=>e.getLogger("esri.views.2d.engine.webgl.AttributeStoreView");class m{constructor(t,e,i){this._texture=null,this._lastTexture=null,this._fbos={},this.texelSize=4;const{buffer:s,pixelType:r,textureOnly:a}=t,n=p(r);this.blockIndex=i,this.pixelType=r,this.size=e,this.textureOnly=a,a||(this.data=new n(s)),this._resetRange()}destroy(){this._texture?.dispose();for(const t in this._fbos){const e=this._fbos[t];e&&("0"===t&&e.detachColorTexture(),e.dispose()),this._fbos[t]=null}this._texture=null}get _textureDesc(){const t=new f(this.size);return t.wrapMode=33071,t.samplingMode=9728,t.dataType=this.pixelType,t}get usedMemory(){return null!=this.data?i(this.data):0}setData(t,e,i){const s=g(t),r=this.data,a=s*this.texelSize+e;!r||a>=r.length||(r[a]=i,this.dirtyStart=Math.min(this.dirtyStart,s),this.dirtyEnd=Math.max(this.dirtyEnd,s))}getData(t,e){if(null==this.data)return null;const i=g(t)*this.texelSize+e;return!this.data||i>=this.data.length?null:this.data[i]}getTexture(t){return this._texture??this._initTexture(t)}getFBO(t,e=0){if(!this._fbos[e]){const i=0===e?this.getTexture(t):this._textureDesc;this._fbos[e]=new c(t,i)}return this._fbos[e]}get hasDirty(){const t=this.dirtyStart;return this.dirtyEnd>=t}updateTexture(e,i){try{const s=this.dirtyStart,r=this.dirtyEnd;if(!this.hasDirty)return;has("esri-2d-update-debug")&&console.debug(`Version[${i}] AttributeStoreView.updateTexture`,{start:s,end:r,firstBytes:new Uint8Array(this.data.buffer.slice(0,16)),block:this}),this._resetRange();const a=this.data.buffer,n=this.getTexture(e),u=4,h=(s-s%this.size)/this.size,o=(r-r%this.size)/this.size,d=h,l=this.size,g=o,_=h*this.size*u,c=(l+g*this.size)*u-_,x=p(this.pixelType),f=new x(a,_*x.BYTES_PER_ELEMENT,c),m=this.size,T=g-d+1;if(T>this.size)return void b().error(new t("mapview-webgl","Out-of-bounds index when updating AttributeData"));n.updateData(0,0,d,m,T,f)}catch(s){}}update(t){const{data:e,start:i,end:s}=t;if(null!=e&&null!=this.data){const s=this.data,r=i*this.texelSize;for(let i=0;i<e.length;i++){const a=1<<i%this.texelSize;t.layout&a&&(s[r+i]=e[i])}}this.dirtyStart=Math.min(this.dirtyStart,i),this.dirtyEnd=Math.max(this.dirtyEnd,s)}resize(t,e){const i=this.size;if(this.size=e,this.textureOnly)return void(i!==this.size&&(this._lastTexture=this._texture,this._texture=null));const s=p(this.pixelType);this.destroy(),this.data=new s(t.buffer)}_resetRange(){this.dirtyStart=2147483647,this.dirtyEnd=0}_initTexture(t){const e=new x(t,this._textureDesc,this.data??void 0);if(null!=this._lastTexture&&this._fbos[0]){const i=this._lastTexture.descriptor.width,s=this._lastTexture.descriptor.height,r=this._lastTexture.descriptor.dataType,a=this._lastTexture.descriptor.pixelFormat,n=this.getFBO(t),u=_(r),h=new(p(r))(new ArrayBuffer(i*s*u*this.texelSize)),o=t.boundFramebuffer,{x:d,y:l,width:g,height:c}=t.getViewport();t.bindFramebuffer(n),n.readPixels(0,0,i,s,a,r,h),e.updateData(0,0,0,2*i,s/2,h),t.setViewport(d,l,g,c),t.bindFramebuffer(o)}return this.destroy(),this._texture=e,this._texture}}class T{constructor(){this.size=0,this._pendingAttributeUpdates=[],this._version=0,this._epoch=0,this._hasPendingUpdate=s(!1),this._locked=!1}get updating(){return this._hasPendingUpdate.value}get locked(){return this._locked}get usedMemory(){let t=0;for(const e of this._data??[])null!=e&&(t+=e.usedMemory);return t}_initialize(t){if(!t)throw new Error("InternalError: initArgs must be defined");const e=t.blockDescriptors;if(this.size=t.blockSize,has("esri-2d-update-debug")&&console.debug("AttributeStoreView.initialize",{message:t}),null==this._data)this._data=e.map((t,e)=>null!=t?new m(t,this.size,e):null);else for(let i=0;i<this._data.length;i++){const t=this._data[i],s=e[i];null!=s&&(null==t?this._data[i]=new m(s,this.size,i):t.resize(s,this.size))}}destroy(){for(const t of this._data??[])t?.destroy();this._defaultTexture?.dispose(),this._defaultTexture=null,this._pendingAttributeUpdates=[]}isEmpty(){return null==this._data}getBlock(t){if(null==this._data)return null;return this._data[t]}setLabelMinZoom(t,e){this.setData(t,0,1,e)}setLocalTimeOrigin(t,e){this.setData(t,7,0,e)}getLabelMinZoom(t){return this.getData(t,0,1,255)}getFilterFlags(t){return this.getData(t,0,0,0)}getVisualVariableData(t,e){return this.getData(t,3,e,0)}getData(t,e,i,s){if(!this._data)return 0;const r=this._data[e];if(null==r)return 0;const a=r.getData(t,i);return null!=a?a:s}setData(t,e,i,s){this._data[e].setData(t,i,s)}lockTextureUploads(){this._locked=!0}unlockTextureUploads(){this._locked=!1,this.update()}requestUpdate(t){this._version=t.version,this._pendingAttributeUpdates.push(t),this._hasPendingUpdate.value=!0,has("esri-2d-update-debug")&&console.debug(`Version[${this._version}] AttributeStoreView.requestUpdate`,{message:t})}get currentEpoch(){return this._epoch}get hasPendingUpdates(){return this._pendingAttributeUpdates.length>0}update(){if(this._locked)return;const t=this._pendingAttributeUpdates;this._pendingAttributeUpdates=[];for(const e of t){const{blockData:t,initArgs:i,sendUpdateEpoch:s,version:r}=e;has("esri-2d-update-debug")&&console.debug(`Version[${this._version}] Epoch[${s}] AttributeStoreView.applyUpdate`),this._version=r,this._epoch=s,null!=i&&this._initialize(i);const a=this._data;for(let e=0;e<t.length;e++){const i=t[e],s=a[e];null!=s&&null!=i&&(has("esri-2d-update-debug")&&console.debug(`Version[${this._version}] CpuBlock[${e}] AttributeStoreView.update`,{block:i}),s.update(i))}}this._hasPendingUpdate.value=!1}getUniforms(){return{size:this.size}}getTextures(t){return{filterFlags:{texture:this._getTexture(t,0),unit:l},animation:{texture:this._getTexture(t,1),unit:d},gpgpu:{texture:this._getTexture(t,2),unit:o},localTimeOrigin:{texture:this._getTexture(t,7),unit:h},visualVariableData:{texture:this._getTexture(t,3),unit:u},dataDriven0:{texture:this._getTexture(t,4),unit:n},dataDriven1:{texture:this._getTexture(t,5),unit:a},dataDriven2:{texture:this._getTexture(t,6),unit:r}}}_getTexture(t,e){const i=this._data?.[e];return i?(i.updateTexture(t,this._version),i.getTexture(t)):this._getDefaultTexture(t)}_getDefaultTexture(t){if(null==this._defaultTexture){const e=new f(1);e.wrapMode=33071,e.samplingMode=9728,this._defaultTexture=new x(t,e,new Uint8Array(4))}return this._defaultTexture}}export{T as AttributeStoreView};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import has from"../../../../core/has.js";import e from"../../../../core/Logger.js";import{create as t}from"../../../../core/libs/gl-matrix-2/factories/
|
|
2
|
+
import has from"../../../../core/has.js";import e from"../../../../core/Logger.js";import{create as t}from"../../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{AFeatureTile as s}from"./AFeatureTile.js";import{RESHUFFLING_EXEMPT_MEMORY_BYTES as i,RESHUFFLING_TARGET_MEMORY_EFFICIENCY as r,RESHUFFLING_EXEMPT_DRAW_CALLS as a,RESHUFFLING_TARGET_DRAW_EFFICIENCY as d,tileSize as o}from"./definitions.js";import n from"./DisplayEntity.js";import{TileCpuState as h}from"./TileCpuState.js";import{TileGpuState as u}from"./TileGpuState.js";import{debugMeshDataInfo as p}from"./mesh/meshDebugUtils.js";import l from"./util/Reader.js";import{deserializeList as m}from"./util/serializationUtils.js";const g=()=>e.getLogger("esri.views.2d.engine.webgl.FeatureTile");class c extends s{constructor(e,s,i,r,a,d){super(e,s,i,r),this._fader=a,this._labelInstanceId=d,this._cpuState=new h,this._gpuState=new u,this._requiresRefresh=!1,this._ended=!1,this._geometryInvalidated=!1,this.decluttering=!1,this.presenting=!1,this.visible=!0,this.transforms.tileUnitsToPixels=t()}destroy(){super.destroy();const e=this._cpuState.takeMetrics();this._fader?.removeFeatureTileMetrics(this,e),this._cpuState.destroy(),this._gpuState.destroy()}beforeRender(e){super.beforeRender(e),this._needsReshuffle&&e.reshuffleManager.schedule(this)}get symbols(){const e=new Map;for(const t of this._cpuState.metrics)e.get(t.labelClassId)||e.set(t.labelClassId,[]),e.get(t.labelClassId).push(t);return e}get id(){return this.key.id}get hasData(){return!!this._cpuState.meshes.size}get requiresRefresh(){return this._requiresRefresh}get ended(){return this._ended}get hasAnimations(){return this._cpuState.hasAnimations}get hasMetrics(){return this._cpuState.metrics.length>0}get entityIds(){return this._cpuState.getEntityObjectIds()}get usedMemory(){return this._cpuState.usedMemory+this._gpuState.usedMemory}get isReady(){return this.presenting}getDisplayList(){return this._gpuState.displayList}getMesh(e){const t=this._gpuState.getMesh(e);if(null==t)throw new Error(`InternalError: Unable to find VAO for instance: ${e}`);return t}getSortKeys(e){return this._cpuState.getSortKeys(e)}update(e){switch(e.type){case"append":this._onAppendMessage(e);break;case"update":this._onUpdateMessage(e)}e.objectIdMap&&this._cpuState.mergeObjectIdMap(e.objectIdMap),this._aggregateMemoryStats(),e.end&&(has("esri-2d-update-debug")&&console.debug(`Tile[${this.key.id}] FeatureTile.end`),this._ended=!0),this._geometryInvalidated=!0}reshuffle(e=!1){this.destroyed||(this._geometryInvalidated=!0,this._cpuState.reshuffle(e),this._aggregateMemoryStats(),has("esri-2d-update-debug")&&g().info(`Tile ${this.key.id} was reshuffled.`))}upload(e,t){this.presenting&&(this.hasMetrics&&(this._cpuState.setMetricVisibility(this._labelInstanceId),this._gpuState.uploadVisibility(this._cpuState)),this._geometryInvalidated&&(this._geometryInvalidated=!1,this._cpuState.prepareForUpload(t),this._aggregateMemoryStats(),this._gpuState.uploadGeometry(this,e,t,this._cpuState)))}copyPixelBufferedEntitesFrom(e,t,s,i){const r=s*o,a=i*o,d=this._cpuState.copyPixelBufferedEntitiesFrom(e._cpuState,t,r,a);this._geometryInvalidated||=d}_onAppendMessage(e){if(has("esri-2d-update-debug")&&console.debug(`Tile[${this.key.id}] FeatureTile.append`,{append:p(e?.append)}),!e.append)return;this._requiresRefresh||=e.append.requiresRefresh;const t=m(new l(e.append.entities),n),{insertedMetrics:s}=this._cpuState.append(t,e.append.data,!1,this);this._fader?.insertFeatureTileMetrics(this,s)}_onUpdateMessage(e){has("esri-2d-update-debug")&&console.debug(`Tile[${this.key.id}] FeatureTile.update`,{isPixelBuffer:e.isPixelBuffer,modify:p(e.modify),remove:e.remove});const t=m(new l(e.modify.entities),n),s=t.map(e=>e.id),i=e.isPixelBuffer??!1,r=[...e.remove,...s];if(i){const e=this._cpuState.removeByIdsFromBuffer(r);this._fader?.removeFeatureTileMetrics(this,e)}else{const e=this._cpuState.removeByIds(r);this._fader?.removeFeatureTileMetrics(this,e)}const{insertedMetrics:a}=this._cpuState.append(t,e.modify.data,i,this);this._fader?.insertFeatureTileMetrics(this,a)}_aggregateMemoryStats(){this.debugInfo.memory.bytesUsed=0,this.debugInfo.memory.bytesReserved=0;for(const e of this._cpuState.meshes.values())this.debugInfo.memory.bytesUsed+=e.memoryStats.bytesUsed,this.debugInfo.memory.bytesReserved+=e.memoryStats.bytesReserved}get _needsReshuffle(){if(this.destroyed)return!1;const{bytesUsed:e,bytesReserved:t}=this.debugInfo.memory,s=e/t,{minOrderedLength:o,length:n}=this.debugInfo.display;return t>i&&s<r||n>a&&o/n<d}}export{c as FeatureTile};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
+
class r{static create(t){return new r(new Uint32Array(t/Uint32Array.BYTES_PER_ELEMENT))}constructor(r){this._array=r}get array(){return this._array}get length(){return this._array.length}getUint32View(r,t){return new Uint32Array(this._array.buffer,r+this._array.byteOffset,t)}expand(r){if(r<=this._array.byteLength)return;const t=new Uint32Array(r/Uint32Array.BYTES_PER_ELEMENT);t.set(this._array),this._array=t}destroy(){}}export{r as ResizableUint32Array};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
+
import has from"../../../../core/has.js";import t from"./DisplayEntity.js";import{ReshufflePlan as e}from"./ReshufflePlan.js";import{LabelMetric as s}from"./collisions/LabelMetric.js";import{CpuMeshData as i}from"./cpuMapped/CpuMeshData.js";import r from"./util/Reader.js";import{deserializeList as n}from"./util/serializationUtils.js";class o{constructor(){this.meshes=new Map,this.entityIndex=new Map,this.entityIds=new Set,this.entityIdsFromBuffer=new Set,this.entities=[],this.metrics=[],this.objectIdMap=null}destroy(){for(const t of this.meshes.values())t.destroy();if(this.metrics.length)throw new Error("InternalError: Leaking metrics. Was `takeMetrics` called before removal?");this.meshes.clear(),this.entityIndex.clear(),this.entityIds.clear(),this.entityIdsFromBuffer.clear(),this.entities=[],this.objectIdMap=null}get usedMemory(){let e=0;for(const t of this.meshes.values())e+=t.usedMemory;if(this.entities.length){let s=0;const i=Math.min(this.entities.length,10);for(let t=0;t<i;t++)s+=this.entities[0].records.length;const r=s/i;e+=t.estimateMemory(r)*this.entities.length,e+=4*this.entities.length}return e+=25*this.entityIndex.size,e+=18*this.entityIds.size,e+=25*this.entityIdsFromBuffer.size,this.objectIdMap&&(e+=25*this.entities.length),e}get hasAnimations(){return!!this.objectIdMap}getEntityObjectIds(){return this.objectIdMap?this.entities.map(({id:t})=>({objectId:this.objectIdMap[t],displayId:t})):[]}getMesh(t){return this.meshes.get(t)}getSortKeys(t){const e=new Map;for(const{id:s,sortKey:i}of this.entities)if(t.has(s)&&e.set(s,i),e.size===t.size)break;return e}takeMetrics(){const t=this.metrics;return this.metrics=[],t}mergeObjectIdMap(t){this.objectIdMap??={};for(const e in t)this.objectIdMap[e]=t[e]}ensureMesh(t,e,s){let r=this.meshes.get(t);return null==r&&(r=new i(e,s),this.meshes.set(t,r)),r}append(t,e,s,i){if(!t.length)return{insertedMetrics:[]};this._removeDuplicatedBufferedEntities(t);const{offsetsByInstance:r,insertedMetrics:n}=this._insertVertexData(e,i);for(const o of t){for(const t of o.records)t.updateBaseOffsets(r.get(t.instanceId));s?this._tryInsertBufferedEntity(o):this._insertEntity(o)}return{insertedMetrics:n}}removeByIds(t){if(0===t.length)return[];const e=new Set(t),s=[];for(const r of this.entities)e.has(r.id)?(this._remove(r),this.entityIndex.delete(r.id)):s.push(r);this.entities=s;const i=this.metrics.filter(t=>e.has(t.displayId));return this.metrics=this.metrics.filter(t=>!e.has(t.displayId)),i}setMetricVisibility(t){if(null==t||0===this.metrics.length)return;const e=this.getMesh(t);if(!e)throw new Error("InternalError: expected to find label mesh");for(const s of this.metrics){const t=this.entityIndex.get(s.id);if(null==t)throw new Error("InternalError: expected to find entity for label");if(!s.uniqueSymbol)throw new Error("InternalError: expected to find uniqueSymbol");const i=s.uniqueSymbol.show&&s.selectedForRendering;e.setRecordVisibility(t.records,s,i?0:255,t.id)}}copyPixelBufferedEntitiesFrom(e,s,i,r){let n=!1;for(const o of e.entities){let h=null;for(const d of o.records){if(!(d.overlaps&s))continue;n||=!0;const c=e.getMesh(d.instanceId),f=this.ensureMesh(d.instanceId,c.layout,c.useVisibility).copyRecordFrom(c,d,i,r);null==h&&(h=new t(o.id,o.sortKey),this.entityIdsFromBuffer.add(o.id),this.entityIndex.set(h.id,h),this.entities.push(h)),h.records.push(f)}}return n}removeByIdsFromBuffer(t){return this.removeByIds(t.filter(t=>this.entityIdsFromBuffer.has(t)))}reshuffle(t=!1){const s=new Map;for(const i of this.entities)for(const r of i.records){const i=r.instanceId;let n=s.get(i);null==n&&(n=new e(t),s.set(i,n)),n.copyRecord(r)}for(const[e,i]of s)this.getMesh(e).reshuffle(i)}prepareForUpload(t){this.entities.sort((t,e)=>{const s=t.sortKey,i=e.sortKey;return s===i?t.id-e.id:s-i}),0===t&&this.reshuffle(!0)}_insertVertexData(t,e){const i=new Map,o=[];for(const h of t){const{instanceId:t,layout:d}=h,c=d.attributes.some(t=>"visibility"===t.name),f=this.ensureMesh(t,d,c).append(h);if(h.metrics){const t=n(new r(h.metrics),s)??[];o.push(...this._insertMetrics(t,e))}i.set(t,f)}return{offsetsByInstance:i,insertedMetrics:o}}_insertMetrics(t,e){for(const s of t)s.tile=e;return this.metrics.push(...t),t}_insertEntity(t){has("esri-2d-update-debug")&&this.entityIds.has(t.id)&&console.error(`insertEntity: Already have entityId ${t.id}`),this.entityIds.add(t.id),this.entityIndex.set(t.id,t),this.entities.push(t)}_tryInsertBufferedEntity(t){this.entityIds.has(t.id)?this._removeRecordsFromMesh(t.records):(this.entityIdsFromBuffer.add(t.id),this.entityIndex.set(t.id,t),this.entities.push(t))}_removeDuplicatedBufferedEntities(t){if(!this.entityIdsFromBuffer.size)return;const e=[];for(const s of t)this.entityIdsFromBuffer.has(s.id)&&e.push(s.id);this.removeByIds(e)}_remove(t){this._removeRecordsFromMesh(t.records),this.entityIds.delete(t.id),this.entityIdsFromBuffer.delete(t.id)}_removeRecordsFromMesh(t){for(const e of t){const{instanceId:t,indexStart:s,indexCount:i,vertexStart:r,vertexCount:n}=e;this.getMesh(t)?.remove(s,i,r,n)}}}export{o as TileCpuState};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
+
import{DisplayList as s}from"./FeatureDisplayList.js";import{GpuMeshState as e}from"./cpuMapped/GpuMeshState.js";class t{constructor(){this.meshes=new Map,this.displayList=null}get usedMemory(){return this.displayList?.usedMemory??0}destroy(){for(const s of this.meshes.values())s.destroy();this.meshes.clear(),this.displayList=null}uploadGeometry(e,t,i,o){for(const[s,r]of o.meshes)this._ensureMesh(s,r.layout).upload(r);this.displayList=s.fromDisplayEntities(o.entities,e,t,i)}uploadVisibility(s){for(const[e,t]of s.meshes)this._ensureMesh(e,t.layout).uploadVisibility(t)}getMesh(s){return this.meshes.get(s)}_ensureMesh(s,t){let i=this.meshes.get(s);return null==i&&(i=new e(t),this.meshes.set(s,i)),i}}export{t as TileGpuState};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
+
import"../../../../../core/has.js";import{assertIsSome as t}from"../../../../../core/maybe.js";import{asArrayBuffer as e}from"../../../../../core/typedArrayUtil.js";import{toUint32 as i,toFloat32 as r}from"../number.js";import{ResizableUint32Array as s}from"../ResizableUint32Array.js";import{FreeList as n}from"./FreeList.js";const h=1.25,a=32767,d=a<<16|a;class u{constructor(t,e,i){this.bufferType=t,this.size=e,this.strideInt=i,this._dirtyStart=1/0,this._dirtyEnd=0,this._needsGpuRebuild=!1,this._needsComputeRebuild=!1,this._cpu=s.create(e*i*Uint32Array.BYTES_PER_ELEMENT),this.memoryStats={bytesUsed:0,bytesReserved:e*i*Uint32Array.BYTES_PER_ELEMENT},this.clear()}get array(){return this._cpu.array}get elementSize(){return this._cpu.length/this.strideInt}get intSize(){return this.fillPointer}get byteSize(){return this.fillPointer*Uint32Array.BYTES_PER_ELEMENT}get usedMemory(){return this._cpu.array.byteLength}get dirtyStart(){return this._dirtyStart}get dirtyEnd(){return this._dirtyEnd}get hasDirtyRange(){return this._dirtyStart!==1/0}get needsGpuRebuild(){return this._needsGpuRebuild}get needsComputeRebuild(){return this._needsComputeRebuild}destroy(){this._cpu.destroy()}clear(){this._dirtyStart=1/0,this._dirtyEnd=0,this._needsGpuRebuild=!1,this._needsComputeRebuild=!1,this.freeList=new n({start:0,end:this._cpu.length/this.strideInt}),this.fillPointer=0}ensure(t){if(this.maxAvailableSpace()>=t)return;if(t*this.strideInt>this._cpu.length-this.fillPointer){const e=this._cpu.length/this.strideInt,i=Math.round((e+t)*h),r=i*this.strideInt;this._cpu.expand(r*Uint32Array.BYTES_PER_ELEMENT),this.freeList.free(e,i-e),this.memoryStats.bytesReserved+=(i-e)*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,this._needsGpuRebuild=!0,this._markComputeRebuild()}}setU32(t,e){this._cpu.array[t]!==e&&(this._cpu.array[t]=e,this._markDirtyRange(t,t+1),this._markComputeRebuild())}setF32(t,e){this.setU32(t,i(e))}setF32Range(t,e,r){const s=i(r);this._cpu.array.fill(s,t,e),this._markDirtyRange(t,e),this._markComputeRebuild()}getF32(t){return r(this._cpu.array[t])}getView(t,e){return this._cpu.getUint32View(t,e/Uint32Array.BYTES_PER_ELEMENT)}get bufferSize(){return this._cpu.length/this.strideInt}maxAvailableSpace(){return this.freeList.maxAvailableSpace()}markGpuUploadComplete(){this._dirtyStart=1/0,this._dirtyEnd=0,this._needsGpuRebuild=!1}markComputeUploadComplete(){this._needsComputeRebuild=!1}insert(i,r,s,n){const h=s*this.strideInt;if(!h)return 0;const a=r*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,d=new Uint32Array(e(i),a,h),u=this.freeList.firstFit(s);t(u,"First fit region must be defined");const o=u*this.strideInt,_=h;if(this._cpu.array.set(d,o),0!==n)for(let t=0;t<d.length;t++)this._cpu.array[t+o]+=n;return this._markDirtyRange(o,o+_),this.fillPointer=Math.max(this.fillPointer,o+_),this.memoryStats.bytesUsed+=s*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,this._markComputeRebuild(),u}copyFrom(e,i,r,s,n){const h=r*this.strideInt;if(!h)return 0;const a=i*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,d=e._cpu.getUint32View(a,h),u=this.freeList.firstFit(r);t(u,"First fit region must be defined");const o=u*this.strideInt,_=h;if(this._cpu.array.set(d,o),0!==s)for(let t=0;t<h;t++)this._cpu.array[o+t*this.strideInt+n]+=s;return this._markDirtyRange(o,o+_),this.fillPointer=Math.max(this.fillPointer,o+_),this.memoryStats.bytesUsed+=r*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,this._markComputeRebuild(),u}free(t,e,i){const r=t*this.strideInt,s=(t+e)*this.strideInt;if(!0===i)for(let n=t;n!==t+e;n++)this._cpu.array[n*this.strideInt]=d;this._markDirtyRange(r,s),this.freeList.free(t,e),this.memoryStats.bytesUsed-=e*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,this._markComputeRebuild()}reshuffle(t,e){if(0===e.length)return;const i=this._cpu.array.byteLength,r=t*this.strideInt*Uint32Array.BYTES_PER_ELEMENT,n=i!==r,h=this._cpu,a=s.create(r);n||a.array.set(this._cpu.getUint32View(0,this.intSize));for(const s of e)if(n||s.srcFrom!==s.dstFrom||0!==s.mutate){this._markDirtyRange(s.dstFrom*this.strideInt,(s.dstFrom+s.count)*this.strideInt);for(let t=0;t<s.count;t++){const e=(s.dstFrom+t)*this.strideInt,i=(s.srcFrom+t)*this.strideInt;for(let t=0;t<this.strideInt;t++)a.array[e+t]=h.array[i+t]+s.mutate}}this._cpu.destroy(),this._cpu=a,n&&(this._needsGpuRebuild=!0),this.freeList.clear(),this.fillPointer=t*this.strideInt,this.memoryStats.bytesUsed=this.memoryStats.bytesReserved=r,this._markComputeRebuild()}_markDirtyRange(t,e){this._dirtyStart=Math.min(this._dirtyStart,t),this._dirtyEnd=Math.max(this._dirtyEnd,e)}_markComputeRebuild(){"index"===this.bufferType&&(this._needsComputeRebuild=!0)}}export{u as CpuBuffer};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
+
import"../../../../../core/has.js";import{destroyMaybe as e}from"../../../../../core/maybe.js";import{i1616to32 as t}from"../number.js";import{CpuBuffer as i}from"./CpuBuffer.js";import{unpackDataView as r}from"../shaderGraph/techniques/mesh/dataViewUtils.js";const s=1e3,f=4;class o{constructor(e,t){if(this._layout=e,this.useVisibility=t,this._position=this._layout.attributes.find(e=>"pos"===e.name||"position"===e.name),!this._position)throw new Error("InternalError: Unable to find position attribute");const r=this._layout.stride/Uint32Array.BYTES_PER_ELEMENT;this._indexBuffer=new i("index",s,1),this._vertexBuffer=new i("vertex",s,r),this._visibilityBuffer=this.useVisibility?new i("vertex",s,f/Uint32Array.BYTES_PER_ELEMENT):null}destroy(){this._indexBuffer=e(this._indexBuffer),this._vertexBuffer=e(this._vertexBuffer),this._visibilityBuffer=e(this._visibilityBuffer)}get layout(){return this._layout}get usedMemory(){let e=0;return e+=this._indexBuffer.usedMemory,e+=this._vertexBuffer.usedMemory,null!=this._visibilityBuffer&&(e+=this._visibilityBuffer.usedMemory),e}get memoryStats(){return{bytesUsed:this._vertexBuffer.memoryStats.bytesUsed+this._indexBuffer.memoryStats.bytesUsed,bytesReserved:this._vertexBuffer.memoryStats.bytesReserved+this._indexBuffer.memoryStats.bytesReserved,vertex:this._vertexBuffer.memoryStats,index:this._indexBuffer.memoryStats}}get vertexBuffer(){return this._vertexBuffer}get indexBuffer(){return this._indexBuffer}get visibilityBuffer(){return this._visibilityBuffer}getAttributePrecisionPackFactors(){const e={};for(const t of this.layout.attributes)t.packPrecisionFactor&&(e[t.name]=t.packPrecisionFactor);return e}getDebugVertexInfo(e=!1,t){const i=this._layout,s=i.stride,f=this._vertexBuffer.getView(0,this._vertexBuffer.byteSize),o=this._createComputeDebugAttributes(e,t),n=this._visibilityBuffer?.getView(0,this._visibilityBuffer.byteSize),u=new DataView(f.slice().buffer),a=n?new DataView(n.slice().buffer):null;let c=f.byteLength/s;e&&(c=this._indexBuffer.fillPointer/3);const l=this._indexBuffer.getView(0,this._indexBuffer.byteSize);let h=0;const y=[];for(let _=0;_<c;_++){let t=_;e&&(t=l[3*_],h=t*s);const f={};for(const e of[...i.attributes,...o]){let t=`${e.offset} ${e.name}`;const i=r(u,e,h);if(e.packPrecisionFactor)if(t+=` (precision: ${e.packPrecisionFactor})`,"number"==typeof i)f[t]=i/e.packPrecisionFactor;else{const r=[...i];for(let t=0;t<r.length;t++)r[t]/=e.packPrecisionFactor;f[t]=r}else f[t]=i;if("id"===e.name&&3===e.count&&Array.isArray(i)){const t=i[0]|i[1]<<8|i[2]<<16;f.id=e.packPrecisionFactor?t/e.packPrecisionFactor:t}}a&&(f["visibility (buffer)"]=a.getFloat32(t*Float32Array.BYTES_PER_ELEMENT,!0)),h+=s,y.push(f)}return{vertices:y,layout:i}}append(e){const t=e.layout.stride,i=e.indices.byteLength/Uint32Array.BYTES_PER_ELEMENT,r=e.vertices.byteLength/t;this._ensure(i,r);const{vertices:s,indices:o}=e,n=this._vertexBuffer.insert(s,0,s.byteLength/t,0),u=new Uint32Array(r);new Float32Array(u.buffer).fill(255),this._visibilityBuffer&&this._visibilityBuffer.insert(u,0,u.byteLength/f,0);return{vertexFrom:n,indexFrom:this._indexBuffer.insert(o,0,o.byteLength/4,n)}}setRecordVisibility(e,t,i,r){if(null==this._visibilityBuffer)throw new Error("Internal Error: Visibility buffer not defined");const{recordStart:s,recordCount:f}=t;if(!(s+f>e.length))for(let o=s;o<s+f;o++){const{vertexStart:t,vertexCount:r}=e[o];this._visibilityBuffer.setF32Range(t,t+r,i)}}getEntityRecordVisibility(e,t){if(null==this._visibilityBuffer)return 0;const i=e.records[t];return this._visibilityBuffer.getF32(i.vertexStart)}copyRecordFrom(e,i,r,s){const{indexStart:f,indexCount:o,vertexStart:n,vertexCount:u}=i;this._ensure(o,u);const a=e._position,c=r*(a.packPrecisionFactor??1),l=s*(a.packPrecisionFactor??1),h=a.offset,y=t(c,l),_=this._vertexBuffer.copyFrom(e._vertexBuffer,n,u,y,h);this._visibilityBuffer&&e._visibilityBuffer&&this._visibilityBuffer.copyFrom(e._visibilityBuffer,n,u,0,0);const d=this._indexBuffer.copyFrom(e._indexBuffer,f,o,_-n,0),v=i.clone();return v.vertexStart=_,v.indexStart=d,v.overlaps=0,v}remove(e,t,i,r){this._indexBuffer.free(e,t),this._vertexBuffer.free(i,r),this._visibilityBuffer&&this._visibilityBuffer.free(i,r)}reshuffle(e){this._vertexBuffer.reshuffle(e.vertex.count,e.vertex.operations),this._indexBuffer.reshuffle(e.index.count,e.index.operations),this._visibilityBuffer&&this._visibilityBuffer.reshuffle(e.vertex.count,e.vertex.operations)}_createComputeDebugAttributes(e,t){const i=[];if(!e)return i;if(null==t)return console.log("must provide location info to see compute attributes"),i;for(const r of this._layout.attributes){const e=t.computeAttributeMap[r.name];null!=e&&2===e.length&&(i.push({...r,name:e[0],offset:r.offset+this._layout.stride}),i.push({...r,name:e[1],offset:r.offset+2*this._layout.stride}))}return i}_validateRecordVertexIds(e,t,i){const s=this._layout.attributes.find(e=>"id"===e.name&&3===e.count);if(null==s)return;const f=this._vertexBuffer.array,o=new DataView(f.buffer,f.byteOffset,this._vertexBuffer.byteSize),{recordStart:n,recordCount:u}=t;for(let a=n;a<n+u;a++){const{vertexStart:t,vertexCount:f}=e[a];for(let e=t;e<t+f;e++){const t=r(o,s,e*this._layout.stride);if(!Array.isArray(t)||3!==t.length)throw new Error("InternalError: expected packed vec3 id");const f=t[0]|t[1]<<8|t[2]<<16,n=s.packPrecisionFactor?f/s.packPrecisionFactor:f;n!==i&&console.error(`InternalError: visibility write id mismatch (expected ${i}, found ${n} at vertex ${e})`)}}}_ensure(e,t){this._indexBuffer.ensure(Math.max(e,s)),this._vertexBuffer.ensure(Math.max(t,s)),this._visibilityBuffer&&this._visibilityBuffer.ensure(Math.max(t,s))}}export{o as CpuMeshData};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
+
import{unique as e}from"../../../../../core/arrayUtils.js";import{vertexLayoutHash as t}from"../shaderGraph/techniques/mesh/utils.js";import{BufferObject as i}from"../../../../webgl/BufferObject.js";import{DataType as r}from"../../../../webgl/enums.js";import{VertexArrayObject as s}from"../../../../webgl/VertexArrayObject.js";import{VertexBuffer as u}from"../../../../webgl/VertexBuffer.js";import{VertexElementDescriptor as o}from"../../../../webgl/VertexElementDescriptor.js";const f=4,n=[{name:"visibility",offset:0,type:r.FLOAT,count:1}],a={hash:t(n),attributes:n,stride:f};function l(t,i){return e(t.attributes,(e,t)=>e.name===t.name).filter(e=>i.locations.has(e.name)).map(e=>new o(e.name,e.count,e.type,e.offset,t.stride,e.normalized??!1)).sort((e,t)=>i.locations.get(e.name)-i.locations.get(t.name))}function d(t,i){const r=[],s=e(t.attributes,(e,t)=>e.name===t.name).filter(e=>i.locations.has(e.name));for(const e of s){r.push(new o(e.name,e.count,e.type,e.offset,t.stride,e.normalized??!1));const s=i.computeAttributeMap[e.name];null!=s&&2===s.length&&(r.push(new o(s[0],e.count,e.type,e.offset+t.stride,t.stride,e.normalized??!1)),r.push(new o(s[1],e.count,e.type,e.offset+2*t.stride,t.stride,e.normalized??!1)))}return r.sort((e,t)=>i.locations.get(e.name)-i.locations.get(t.name))}class p{constructor(e){this._layout=e}destroy(){this._uploadedMeshData=null,this._vertexBuffer?.dispose(),this._computeVertexBuffer?.dispose(),this._visibilityBuffer?.dispose(),this._indexBuffer?.dispose(),this._computeIndexBuffer?.dispose(),this._computeVAO?.disposeVAOOnly(),this._geometryVAO?.disposeVAOOnly()}upload(e){if(e.layout!==this._layout)throw new Error("InternalError: Tried to update buffer with differing layout");const t=e.vertexBuffer,i=e.indexBuffer;if(!t||!i||!t.bufferSize)return;this._uploadedMeshData=e;const r=this._syncVertexGpuBuffer(t),s=this._syncIndexGpuBuffer(i),u=r||s,o=this._syncComputeBuffers(t,i);u&&(this._geometryVAO?.disposeVAOOnly(),this._geometryVAO=null),o&&(this._computeVAO?.disposeVAOOnly(),this._computeVAO=null),t.markGpuUploadComplete(),i.markGpuUploadComplete(),i.markComputeUploadComplete()}uploadVisibility(e){if(e.layout!==this._layout)throw new Error("InternalError: Tried to update buffer with differing layout");const t=e.visibilityBuffer;if(!t)return;this._uploadedMeshData=e;this._syncVisibilityGpuBuffer(t)&&(this._geometryVAO?.disposeVAOOnly(),this._geometryVAO=null,this._computeVAO?.disposeVAOOnly(),this._computeVAO=null),t.markGpuUploadComplete()}getAttributePrecisionPackFactors(){const e={};for(const t of this._layout.attributes)t.packPrecisionFactor&&(e[t.name]=t.packPrecisionFactor);return e}getDebugVertexInfo(e=!1,t){return this._uploadedMeshData?.getDebugVertexInfo(e,t)??null}getGeometryVAO(e,t){const r=this._uploadedMeshData;if(!r)return null;const o=r.vertexBuffer,f=r.indexBuffer,n=r.visibilityBuffer;if(!o||!f||!o.bufferSize)return null;if(this._vertexBuffer??=new u(e,l(this._layout,t),o.array,35048),this._indexBuffer??=i.createIndex(e,35048,f.array),n&&null==this._visibilityBuffer&&(this._visibilityBuffer=new u(e,l(a,t),n.array,35048)),!this._geometryVAO){const t=new Map([["geometry",this._vertexBuffer]]);this._visibilityBuffer&&t.set("visibility",this._visibilityBuffer),this._geometryVAO=new s(e,t,this._indexBuffer)}return this._geometryVAO}getComputeVAO(e,t){const i=this._uploadedMeshData;if(!i)return null;const r=i.vertexBuffer,o=i.indexBuffer,f=i.visibilityBuffer;if(!r||!o||!r.bufferSize)return null;if(this._computeVertexBuffer??=new u(e,d(this._layout,t),r.array,35048),this._computeIndexBuffer??=this._createComputeIndexBuffer(e,o),f&&null==this._visibilityBuffer&&(this._visibilityBuffer=new u(e,l(a,t),f.array,35048)),!this._computeVAO){const t=new Map([["geometry",this._computeVertexBuffer]]);this._visibilityBuffer&&t.set("visibility",this._visibilityBuffer),this._computeVAO=new s(e,t,this._computeIndexBuffer)}return this._computeVAO}_syncVertexGpuBuffer(e){let t=!1;return e.needsGpuRebuild?(this._vertexBuffer?.dispose(),this._computeVertexBuffer?.dispose(),this._vertexBuffer=null,this._computeVertexBuffer=null,t=!0):e.hasDirtyRange&&(this._vertexBuffer?.setSubData(e.array,e.dirtyStart,e.dirtyStart,e.dirtyEnd),this._computeVertexBuffer?.setSubData(e.array,e.dirtyStart,e.dirtyStart,e.dirtyEnd)),t}_syncVisibilityGpuBuffer(e){return e.needsGpuRebuild?(this._visibilityBuffer?.dispose(),this._visibilityBuffer=null,!0):(e.hasDirtyRange&&this._visibilityBuffer?.setSubData(e.array,e.dirtyStart,e.dirtyStart,e.dirtyEnd),!1)}_syncIndexGpuBuffer(e){return e.needsGpuRebuild?(this._indexBuffer?.dispose(),this._indexBuffer=null,!0):(e.hasDirtyRange&&this._indexBuffer?.setSubData(e.array,e.dirtyStart,e.dirtyStart,e.dirtyEnd),!1)}_syncComputeBuffers(e,t){let i=!1;return e.needsGpuRebuild&&(this._computeVertexBuffer?.dispose(),this._computeVertexBuffer=null,i=!0),(t.needsGpuRebuild||t.needsComputeRebuild)&&(this._computeIndexBuffer?.dispose(),this._computeIndexBuffer=null,i=!0),i}_createComputeIndexBuffer(e,t){const r=new Uint32Array(t.fillPointer/3);for(let i=0;i<t.fillPointer;i+=3)r[i/3]=t.array[i];return i.createIndex(e,35048,r)}}export{p as GpuMeshState};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import has from"../../../../../core/has.js";import{hittestSmallSymbolThreshold as t,hittestToleranceMobile as e,hittestToleranceDesktop as
|
|
2
|
+
import has from"../../../../../core/has.js";import{hittestSmallSymbolThreshold as t,hittestToleranceMobile as e,hittestToleranceDesktop as s,hittestToleranceSmallSymbol as i}from"../definitions.js";import{Effect as o}from"./Effect.js";import{PixelType as n}from"../../../../webgl/enums.js";class r extends o{constructor(){super(...arguments),this.name=this.constructor.name,this.defines=["hittest"]}dispose(){null!=this._fbo&&this._fbo.dispose()}createOptions({pixelRatio:o},n){if(!n.length)return null;const r=n.shift();this._outstanding=r;const l=has("esri-mobile"),h=(l?e:s)*o,a=(l?e:i)*o,c=t,{query:u}=r,f=u.hittestType;let d=[-1,-1,-1,-1],m=[],p=[-1,-1];if("rect"===f){const t=u.input;m=[[t.x,t.y],[t.x,t.y+t.height],[t.x+t.width,t.y+t.height],[t.x+t.width,t.y]];let e=1/0,s=1/0,i=-1/0,o=-1/0;for(const[n,r]of m)e=Math.min(e,n),s=Math.min(s,r),i=Math.max(i,n),o=Math.max(o,r);d=[e,s,i,o]}else if("point"===f){const t=u.input;p=[t.x,t.y]}return{type:"hittest",distance:h,smallSymbolDistance:a,smallSymbolSizeThreshold:c,position:p,tlbr:d,hittestType:f}}bind(t){const{context:e,attributeView:s}=t;if(!s.size)return;const i=s.getBlock(2);if(null==i)return;const o=i.getFBO(e);e.setViewport(0,0,s.size,s.size),e.bindFramebuffer(o),e.setColorMask(!0,!0,!0,!0),e.setClearColor(0,0,0,0),e.clear(16640)}unbind(){}draw(t){if(null==this._outstanding)return;const e=this._outstanding;this._outstanding=null,this._resolve(t,e.resolvers)}async _resolve(t,e){const{context:s,attributeView:i}=t,o=i.getBlock(2);if(null==o)return void e.forEach(t=>t.resolve([]));const r=o.getFBO(s),l=new Uint8Array(r.width*r.height*4);try{await r.readPixelsAsync(0,0,r.width,r.height,6408,n.UNSIGNED_BYTE,l)}catch(a){return void e.forEach(t=>t.resolve([]))}const h=[];for(let n=0;n<l.length;n+=4){const t=n/4;l[n]&&h.push(t)}e.forEach(t=>t.resolve(h))}}export{r as HittestEffect};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{Container as e}from"../../../Container.js";import{TestDisplayObject as s}from"./TestDisplayObject.js";class r extends e{constructor(e,s){super(),this.store=e,this.meshData=s}whenRender(){return null==this._resolver&&(this._resolver=Promise.withResolvers(),this.requestRender()),this._resolver.promise}doRender(e){const r=
|
|
2
|
+
import{Container as e}from"../../../Container.js";import{TestDisplayObject as s}from"./TestDisplayObject.js";class r extends e{constructor(e,s){super(),this.store=e,this.meshData=s}whenRender(){return null==this._resolver&&(this._resolver=Promise.withResolvers(),this.requestRender()),this._resolver.promise}doRender(e){const r=s.fromMeshData(this.meshData,this.store);for(const[s,t]of this.store.entries())r.setActiveMesh(s),t.techniqueRef.render(e,r);r.destroy(),this._resolver&&(this._resolver.resolve(),this._resolver=null)}}export{r as TechniqueDebugContainer};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{DisplayObject as t}from"../../../DisplayObject.js";import e from"../../DisplayEntity.js";import{
|
|
2
|
+
import{DisplayObject as t}from"../../../DisplayObject.js";import e from"../../DisplayEntity.js";import{CpuMeshData as s}from"../../cpuMapped/CpuMeshData.js";import{GpuMeshState as n}from"../../cpuMapped/GpuMeshState.js";import r from"../../util/Reader.js";import{deserializeList as a}from"../../util/serializationUtils.js";import{PrimitiveType as o,DataType as i}from"../../../../../webgl/enums.js";class c extends t{static fromMeshData(t,o){const i=new Map,d=new Map;for(const e of t.data){const t=new s(e.layout,!1),r=new n(e.layout);t.append(e),r.upload(t),i.set(e.instanceId,t),d.set(e.instanceId,r)}const p=new r(t.entities),u=a(p,e,{})??[];return new c(u,i,d,o)}constructor(t,e,s,n){super(),this.displayObjects=t,this._instanceIdToCpuMeshData=e,this._instanceIdToGpuMeshState=s,this._store=n}draw(t,e){if(null==this._activeInstanceId)throw new Error("InternalError: No active instanceId");for(const s of this.displayObjects)for(const n of s.records){if(n.instanceId!==this._activeInstanceId)continue;const s=t.context,r=this._instanceIdToGpuMeshState.get(this._activeInstanceId).getGeometryVAO(s,e),a=n.indexStart*Uint32Array.BYTES_PER_ELEMENT;s.bindVAO(r),s.drawElements(o.TRIANGLES,n.indexCount,i.UNSIGNED_INT,a),s.bindVAO(null)}}getStencilReference(){return 0}getAttributePrecisionPackFactors(){return{}}destroy(){super.destroy();for(const t of this._instanceIdToGpuMeshState.values())t.destroy();for(const t of this._instanceIdToCpuMeshData.values())t.destroy();this._instanceIdToCpuMeshData.clear(),this._instanceIdToGpuMeshState.clear()}setActiveMesh(t){this._activeInstanceId=t}getInput(){if(null==this._activeInstanceId)throw new Error("InternalError: No active instanceId");return this._store.getInstance(this._activeInstanceId).getInput()}_createTransforms(){throw new Error("Method not implemented.")}}export{c as TestDisplayObject};
|