@arcgis/core 6.0.0-next.7 → 6.0.0-next.9
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/arcade/featureSetUtils.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{85908e6e9c50749cee60.js → 037a8cc19debbaaa4e10.js} +1 -1
- package/assets/esri/core/workers/chunks/066550852483ab8f77bc.js +1 -0
- package/assets/esri/core/workers/chunks/0f725cf79ce00e790a7d.js +1 -0
- package/assets/esri/core/workers/chunks/12a7997a40c77f5c9160.js +1 -0
- package/assets/esri/core/workers/chunks/1b077c92345ffb5916c2.js +1 -0
- package/assets/esri/core/workers/chunks/{6dd0b79fa3a629ab4f27.js → 1bca39e0e651426bdbb5.js} +1 -1
- package/assets/esri/core/workers/chunks/1c0c5cb13c2590aae906.js +1 -0
- package/assets/esri/core/workers/chunks/1e0d2715d603f48a7e0b.js +1 -0
- package/assets/esri/core/workers/chunks/2686fe5b62dd0be699c0.js +1 -0
- package/assets/esri/core/workers/chunks/2a97268000c6d03ef720.js +1 -0
- package/assets/esri/core/workers/chunks/2d9a1f23ec6ce90723ac.js +1 -0
- package/assets/esri/core/workers/chunks/2e2e33ec50e97b91b178.js +1 -0
- package/assets/esri/core/workers/chunks/{7a05b18f655c1167ce0a.js → 2ef5237e4c876d6a4ee0.js} +1 -1
- package/assets/esri/core/workers/chunks/{776ae25a34352d3468bc.js → 3081ee6d8019494fc21e.js} +1 -1
- package/assets/esri/core/workers/chunks/37d6a264a3f1d8072aa0.js +1 -0
- package/assets/esri/core/workers/chunks/3b3e519f15ed52c83f0c.js +1 -0
- package/assets/esri/core/workers/chunks/3c0ed15b544df6fb0903.js +1 -0
- package/assets/esri/core/workers/chunks/3df5500a85345577480a.js +1 -0
- package/assets/esri/core/workers/chunks/{801e9e66edb4961461eb.js → 40a584cb952e94326e9e.js} +1 -1
- package/assets/esri/core/workers/chunks/{1ba0dfbe0958cdbd7c9f.js → 42fd2a7b22b03dacc6a7.js} +1 -1
- package/assets/esri/core/workers/chunks/444e5f214abce3d607cd.js +1 -0
- package/assets/esri/core/workers/chunks/{d201fbf3ceff946d2bd6.js → 44d5508042cacdfcac47.js} +1 -1
- package/assets/esri/core/workers/chunks/4503b20ca6a80fb63d72.js +1 -0
- package/assets/esri/core/workers/chunks/45367aa8e5c5d574de94.js +1 -0
- package/assets/esri/core/workers/chunks/45800373650fbc8262e6.js +1 -0
- package/assets/esri/core/workers/chunks/{6a7ab1ef9a37e87db5ae.js → 46a7da93a63663878583.js} +1 -1
- package/assets/esri/core/workers/chunks/{f43a50d4bd9636e68ae5.js → 46b4fb6a7fe4877b0efc.js} +63 -61
- package/assets/esri/core/workers/chunks/47d074136a7f8e551a9a.js +1 -0
- package/assets/esri/core/workers/chunks/{257910cca66dc5df465e.js → 4911ce62421a6c3320b0.js} +1 -1
- package/assets/esri/core/workers/chunks/4a1e23e021bac37a88ab.js +1 -0
- package/assets/esri/core/workers/chunks/4a6b92ecbb1f1c55cc43.js +1 -0
- package/assets/esri/core/workers/chunks/4debf2d9c3465250ef7a.js +1 -0
- package/assets/esri/core/workers/chunks/4e544de61f07ca660236.js +1 -0
- package/assets/esri/core/workers/chunks/4e8e322b469657ac22e2.js +1 -0
- package/assets/esri/core/workers/chunks/54b18559280a7d2a8d93.js +1 -0
- package/assets/esri/core/workers/chunks/567a65f4203f6e81f4b4.js +1 -0
- package/assets/esri/core/workers/chunks/5c7780f804d789cb37f5.js +1 -0
- package/assets/esri/core/workers/chunks/606ea251075fe81a1206.js +1 -0
- package/assets/esri/core/workers/chunks/{ceb680688fe7e570a774.js → 608be1172a908e92b9f1.js} +1 -1
- package/assets/esri/core/workers/chunks/{6f358116f79021ff9687.js → 612104dff305ff062dfa.js} +2 -2
- package/assets/esri/core/workers/chunks/6299be5e7e26bf3c6859.js +1 -0
- package/assets/esri/core/workers/chunks/6400446b7615b97c3521.js +1 -0
- package/assets/esri/core/workers/chunks/6431480ba0fa8c8d487f.js +1 -0
- package/assets/esri/core/workers/chunks/68be3fb88ca61f82fb90.js +1 -0
- package/assets/esri/core/workers/chunks/6c9266120d46e8c69dbf.js +1 -0
- package/assets/esri/core/workers/chunks/6c9acd9e4e201dc380e9.js +1 -0
- package/assets/esri/core/workers/chunks/709e019885822b1f6f3e.js +1 -0
- package/assets/esri/core/workers/chunks/7449568eb2305bf2d650.js +1 -0
- package/assets/esri/core/workers/chunks/745a153d0cd34faa124e.js +1 -0
- package/assets/esri/core/workers/chunks/7572c2bc5062e66f6330.js +1 -0
- package/assets/esri/core/workers/chunks/78472a57c2ba146fec65.js +1 -0
- package/assets/esri/core/workers/chunks/7f0f9dddc44b1f1600f0.js +1 -0
- package/assets/esri/core/workers/chunks/{56a24061589f4a968818.js → 814751e705c05099f864.js} +1 -1
- package/assets/esri/core/workers/chunks/8293600f94553afc8c38.js +1 -0
- package/assets/esri/core/workers/chunks/836bb3673ab30fc66f1e.js +1 -0
- package/assets/esri/core/workers/chunks/8487727f1197cf7dbf50.js +1 -0
- package/assets/esri/core/workers/chunks/{4d3f97a48046021713a6.js → 88e54449261ef94e390d.js} +1 -1
- package/assets/esri/core/workers/chunks/8b0d5551978ab0aac0d1.js +1 -0
- package/assets/esri/core/workers/chunks/8bea0d706ede6f84f8aa.js +1 -0
- package/assets/esri/core/workers/chunks/8d0c2de92770a1567536.js +1 -0
- package/assets/esri/core/workers/chunks/900181f68449d8f82eeb.js +1 -0
- package/assets/esri/core/workers/chunks/939942b00ba380e2957e.js +1 -0
- package/assets/esri/core/workers/chunks/{c76c42c74eedd43263d3.js → 9dd1fc56eb1ea6eb705e.js} +1 -1
- package/assets/esri/core/workers/chunks/{86a051e9fe71aa356108.js → 9e3e442a9874ed23a043.js} +1 -1
- package/assets/esri/core/workers/chunks/a40b6d8b5c73e06e14d4.js +1 -0
- package/assets/esri/core/workers/chunks/{1ba1f705b6ce5c8ea702.js → a655ebdb4bf0660615a2.js} +1 -1
- package/assets/esri/core/workers/chunks/aaba33611753c6aada68.js +1 -0
- package/assets/esri/core/workers/chunks/aeaaff7a4b1a99540f52.js +1 -0
- package/assets/esri/core/workers/chunks/af349c7bc8ef41a0e1bd.js +1 -0
- package/assets/esri/core/workers/chunks/{ecaac39dde7ec4213264.js → af75747b06d79446a855.js} +1 -1
- package/assets/esri/core/workers/chunks/b564ec4e03478f5659db.js +1 -0
- package/assets/esri/core/workers/chunks/bc0f54a2c15502b630ec.js +1 -0
- package/assets/esri/core/workers/chunks/c1c534e08fc21842670b.js +1 -0
- package/assets/esri/core/workers/chunks/{9ab25ee06041f907b9a2.js → c2c1f51a4668055c2838.js} +1 -1
- package/assets/esri/core/workers/chunks/c337fc0e6dc69c233e6d.js +1 -0
- package/assets/esri/core/workers/chunks/{a7985d20fa6e8d4878e7.js → d0f5bee9db1ad51ae687.js} +1 -1
- package/assets/esri/core/workers/chunks/d6ad4390df576198e45b.js +1 -0
- package/assets/esri/core/workers/chunks/dba280c370df13196711.js +1 -0
- package/assets/esri/core/workers/chunks/{c18189710d6198516175.js → de5ecb567bd69c613e9d.js} +1 -1
- package/assets/esri/core/workers/chunks/{534186fc921a0ccf58dc.js → e1f5d00878f27e1d413e.js} +1 -1
- package/assets/esri/core/workers/chunks/e65dfa19f030ec298437.js +1 -0
- package/assets/esri/core/workers/chunks/e932951598499befabf5.js +1 -0
- package/assets/esri/core/workers/chunks/f122c18af10e56f9ec2b.js +1 -0
- package/assets/esri/core/workers/chunks/f1df76f098a3cc924832.js +1 -0
- package/assets/esri/core/workers/chunks/f1f90adae13b04898008.js +1 -0
- package/assets/esri/core/workers/chunks/f4f9d08b2df856e3b694.js +1 -0
- package/assets/esri/core/workers/chunks/{711cfb84659cb4437679.js → f528ac5c648ca6a98582.js} +1 -1
- package/assets/esri/core/workers/chunks/f92364afaefbac7e8f77.js +1 -0
- package/assets/esri/core/workers/chunks/fc44227c1756f65b95df.js +1 -0
- package/assets/esri/core/workers/chunks/{72019baeba520edb6bb0.js → fc44d45598a7476bc606.js} +1 -1
- package/assets/esri/themes/base/_mixins.scss +2 -2
- package/assets/esri/themes/base/widgets/_Attribution.scss +1 -1
- package/assets/esri/themes/base/widgets/_BasemapLayerList.scss +2 -2
- package/assets/esri/themes/base/widgets/_BatchAttributeForm.scss +5 -5
- package/assets/esri/themes/base/widgets/_Bookmarks.scss +1 -1
- package/assets/esri/themes/base/widgets/_BuildingLevelPicker.scss +2 -2
- package/assets/esri/themes/base/widgets/_BuildingPhasePicker.scss +5 -5
- package/assets/esri/themes/base/widgets/_CatalogLayerList.scss +1 -1
- package/assets/esri/themes/base/widgets/_Compass.scss +0 -2
- package/assets/esri/themes/base/widgets/_DirectionalPad.scss +4 -10
- package/assets/esri/themes/base/widgets/_Directions.scss +40 -40
- package/assets/esri/themes/base/widgets/_Editor.scss +7 -7
- package/assets/esri/themes/base/widgets/_Expand.scss +1 -1
- package/assets/esri/themes/base/widgets/_Feature.scss +1 -1
- package/assets/esri/themes/base/widgets/_FeatureForm.scss +6 -6
- package/assets/esri/themes/base/widgets/_FeatureFormUtilityNetworkAssociationLayers.scss +1 -1
- package/assets/esri/themes/base/widgets/_FeatureFormUtilityNetworkAssociationList.scss +1 -1
- package/assets/esri/themes/base/widgets/_FeatureFormUtilityNetworkAssociationSettings.scss +3 -3
- package/assets/esri/themes/base/widgets/_FeatureTable.scss +27 -27
- package/assets/esri/themes/base/widgets/_FeatureTemplates.scss +1 -1
- package/assets/esri/themes/base/widgets/_Features.scss +5 -5
- package/assets/esri/themes/base/widgets/_FilterBuilder.scss +1 -1
- package/assets/esri/themes/base/widgets/_FilterCondition.scss +1 -1
- package/assets/esri/themes/base/widgets/_Grid.scss +18 -18
- package/assets/esri/themes/base/widgets/_GridControls.scss +11 -11
- package/assets/esri/themes/base/widgets/_LayerList.scss +1 -1
- package/assets/esri/themes/base/widgets/_Legend.scss +5 -5
- package/assets/esri/themes/base/widgets/_NavigationToggle.scss +4 -1
- package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +18 -19
- package/assets/esri/themes/base/widgets/_ResponsiveToolbar.scss +0 -2
- package/assets/esri/themes/base/widgets/_SearchResultRenderer.scss +1 -1
- package/assets/esri/themes/base/widgets/_SelectionList.scss +15 -15
- package/assets/esri/themes/base/widgets/_SelectionToolbar.scss +2 -2
- package/assets/esri/themes/base/widgets/_ShadowCast.scss +11 -11
- package/assets/esri/themes/base/widgets/_Sketch.scss +1 -1
- package/assets/esri/themes/base/widgets/_Slice.scss +3 -3
- package/assets/esri/themes/base/widgets/_SnappingControls.scss +1 -1
- package/assets/esri/themes/base/widgets/_TimeSlider.scss +5 -5
- package/assets/esri/themes/base/widgets/_TimeZoneLabel.scss +5 -4
- package/assets/esri/themes/base/widgets/_Tooltip.scss +14 -17
- package/assets/esri/themes/base/widgets/_UtilityNetworkAssociations.scss +2 -2
- package/assets/esri/themes/base/widgets/_UtilityNetworkTrace.scss +1 -1
- package/assets/esri/themes/base/widgets/_UtilityNetworkValidateTopology.scss +2 -2
- package/assets/esri/themes/base/widgets/_ValuePicker.scss +2 -2
- package/assets/esri/themes/base/widgets/_VideoPlayer.scss +5 -5
- package/assets/esri/themes/base/widgets/_Widget.scss +5 -1
- 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/chunks/AtmosphereCompositing.glsl.js +1 -1
- package/chunks/ChapmanAtmosphere.glsl.js +3 -3
- package/chunks/CloudsComposition.glsl.js +1 -1
- package/chunks/Component.glsl.js +41 -41
- package/chunks/DefaultMaterial.glsl.js +2 -2
- package/chunks/EdgeShader.glsl.js +9 -9
- package/chunks/Fog.glsl.js +5 -5
- package/chunks/GaussianSplat.glsl.js +2 -2
- package/chunks/GlobalIllumination.glsl.js +9 -9
- package/chunks/HUDMaterial.glsl.js +13 -13
- package/chunks/Haze.glsl.js +6 -6
- package/chunks/HazeCompositing.glsl.js +1 -1
- package/chunks/LaserlinePath.glsl.js +6 -6
- package/chunks/LineCallout.glsl.js +1 -1
- package/chunks/LineMarker.glsl.js +5 -5
- package/chunks/NavigationDepth.glsl.js +2 -2
- package/chunks/Path.glsl.js +1 -1
- package/chunks/Pattern.glsl.js +26 -26
- package/chunks/Precipitation.glsl.js +7 -7
- package/chunks/RealisticTree.glsl.js +2 -2
- package/chunks/RibbonLine.glsl.js +60 -60
- package/chunks/ShadowCastAccumulate.glsl.js +1 -1
- package/chunks/ShadowHighlight.glsl.js +5 -5
- package/chunks/ShadowHighlightBuffer.glsl.js +1 -1
- package/chunks/SimpleAtmosphere.glsl.js +4 -4
- package/chunks/Terrain.glsl.js +29 -32
- package/chunks/Viewshed.glsl.js +2 -2
- package/chunks/Water.glsl.js +2 -2
- package/config.js +1 -1
- package/core/Loadable.js +1 -1
- package/form/elements/inputs/DynamicChoiceInput.d.ts +35 -5
- package/geometry/HeightModelInfo.js +1 -1
- package/geometry/support/meshUtils.d.ts +1 -1
- package/geometry/support/scaleUtils.js +1 -1
- package/kernel.js +1 -1
- package/layers/BaseDynamicLayer.d.ts +1 -0
- package/layers/BaseElevationLayer.d.ts +2 -0
- package/layers/BaseTileLayer.d.ts +12 -9
- package/layers/CSVLayer.d.ts +0 -15
- package/layers/FeatureLayer.d.ts +2 -15
- package/layers/GeoJSONLayer.d.ts +0 -52
- package/layers/GeoRSSLayer.d.ts +0 -44
- package/layers/ParquetLayer.d.ts +93 -12
- package/layers/ParquetLayer.js +1 -1
- package/layers/SketchLayer.d.ts +0 -1
- package/layers/VectorTileLayer.d.ts +2 -12
- package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
- package/layers/mixins/PortalLayer.js +1 -1
- package/layers/mixins/RefreshableLayer.d.ts +1 -3
- package/layers/mixins/ScaleRangeLayer.js +1 -1
- package/layers/mixins/SublayersOwner.js +1 -1
- package/layers/raster/datasets/GeospatialPDFRaster.js +1 -1
- package/layers/raster/datasets/TIFFRaster.js +1 -1
- package/layers/raster/formats/tiffParser.js +1 -1
- package/layers/support/ParquetPortalItemData.d.ts +2 -0
- package/layers/support/ParquetPortalItemData.js +1 -1
- package/layers/support/PortalItemData.d.ts +21 -0
- package/layers/support/PortalItemData.js +1 -1
- package/layers/support/Sublayer.js +1 -1
- package/layers/support/SubtypeSublayer.js +1 -1
- package/layers/support/layersLoader.js +1 -1
- package/layers/support/parquetUtils.d.ts +1 -1
- package/layers/support/types.d.ts +1 -1
- package/package.json +2 -2
- package/popup/FeaturesModel.d.ts +27 -6
- package/popup/FeaturesModel.js +1 -1
- package/portal/support/layersLoader.js +1 -1
- package/portal/support/portalLayers.js +1 -1
- package/rest/print.js +1 -1
- package/rest/support/printTaskUtils.js +1 -1
- package/symbols/cim/CIMSymbolHelper.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/hittestUtils.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
- package/views/2d/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiles2D.js +1 -1
- package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
- package/views/2d/layers/LayerView2D.js +1 -1
- package/views/2d/layers/features/layerAdapters/ParquetLayerAdapter.js +1 -1
- package/views/2d/layers/features/sources/FeatureSource.js +1 -1
- package/views/2d/layers/features/sources/FeatureSourceQueryInfo.js +1 -1
- package/views/2d/layers/features/sources/strategies/ParquetTileLoadStrategy.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/ViewshedPlacementController.js +1 -1
- package/views/3d/analysis/Viewshed/types.d.ts +3 -1
- package/views/3d/environment/Environment.d.ts +2 -2
- package/views/3d/environment/Environment.js +1 -1
- package/views/3d/environment/EnvironmentView.js +2 -0
- package/views/3d/interactive/editingTools/originGeometryVisualElementUtils.js +1 -1
- package/views/3d/layers/BuildingComponentSublayerView3D.js +1 -1
- package/views/3d/layers/BuildingSceneLayerView3D.js +1 -1
- package/views/3d/layers/DynamicLayerView3D.js +1 -1
- package/views/3d/layers/FeatureLikeLayerViewBase3D.js +1 -1
- package/views/3d/layers/FlowSubView3D.js +1 -1
- package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
- package/views/3d/layers/GraphicsLayerView3D.js +1 -1
- package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
- package/views/3d/layers/IntegratedMeshLayerView3D.js +1 -1
- package/views/3d/layers/MediaLayerView3D.js +1 -1
- package/views/3d/layers/PointCloudLayerView3D.js +1 -1
- package/views/3d/layers/RouteLayerView3D.js +1 -1
- package/views/3d/layers/SceneLayerGraphicsView3D.js +1 -1
- package/views/3d/layers/SceneLayerView3D.js +1 -1
- package/views/3d/layers/TiledLayerView3D.js +1 -1
- package/views/3d/layers/VoxelLayerView3D.js +1 -1
- package/views/3d/layers/graphics/Deconflictor.js +1 -1
- package/views/3d/layers/graphics/ElevationAligners.js +1 -1
- package/views/3d/layers/graphics/Graphics3DBufferGraphicLayer.js +2 -0
- package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
- package/views/3d/layers/graphics/Graphics3DDrapedBufferGraphicLayer.js +2 -0
- package/views/3d/layers/graphics/Graphics3DDrapedGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DDrapedGraphicLayerBase.js +2 -0
- package/views/3d/layers/graphics/Graphics3DGraphic.js +1 -1
- package/views/3d/layers/graphics/Graphics3DIconSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DObject3DGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DScaleVisibility.js +1 -1
- package/views/3d/layers/graphics/Graphics3DStageObjectGraphicLayer.js +2 -0
- package/views/3d/layers/graphics/Graphics3DSymbol.js +1 -1
- package/views/3d/layers/graphics/LabelInfo.js +1 -1
- package/views/3d/layers/graphics/Labeler.js +1 -1
- package/views/3d/layers/graphics/elevationAlignmentUtils.js +1 -1
- package/views/3d/layers/graphics/pointUtils.js +1 -1
- package/views/3d/layers/support/FeatureTile.js +1 -1
- package/views/3d/layers/support/HeatmapFeatureProcessor.js +1 -1
- package/views/3d/layers/support/SampledGeometryMaxDistanceRatio.js +1 -1
- package/views/3d/support/popupHitTest.js +1 -1
- package/views/3d/terrain/OverlayManager.js +1 -1
- package/views/3d/terrain/OverlayRenderer.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/Component.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/Laserline.glsl.js +5 -5
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js +13 -13
- package/views/3d/webgl-engine/core/shaderLibrary/bindUniforms.js +2 -0
- package/views/3d/webgl-engine/core/shaderLibrary/hud/HUD.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/lastFrameUniforms.js +2 -0
- package/views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js +7 -7
- package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +29 -27
- package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +4 -4
- package/views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js +14 -14
- package/views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/ScreenSpaceRayMarching.glsl.js +5 -5
- package/views/3d/webgl-engine/core/shaderLibrary/shading/WaterColor.glsl.js +8 -8
- package/views/3d/webgl-engine/core/shaderLibrary/shading/evaluateSceneLightingFragment.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/lightingUniforms.js +2 -0
- package/views/3d/webgl-engine/core/shaderLibrary/shading/pbrGlobals.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/readShadow.glsl.js +6 -6
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/util/CloudsParallaxShading.glsl.js +3 -3
- package/views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js +1 -1
- package/views/3d/webgl-engine/effects/WeatherFader.js +1 -1
- package/views/3d/webgl-engine/effects/atmosphere/ChapmanApproximation.glsl.js +3 -3
- package/views/3d/webgl-engine/effects/atmosphere/ChapmanAtmosphere.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/atmosphere/ChapmanRaymarching.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/atmosphere/SimpleAtmosphere.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/clouds/CloudsComposition.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/clouds/CloudsComposition.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/globalIllumination/GlobalIllumination.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/glow/applyEmissiveGlow.glsl.js +5 -5
- package/views/3d/webgl-engine/effects/haze/Haze.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/haze/HazeCompositing.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/highlight/ShadowHighlight.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/highlight/ShadowHighlightBuffer.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/laserlines/LaserlinePath.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/raymarching/DistanceFalloff.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/shadowAccumulation/ShadowCastAccumulate.glsl.js +1 -1
- package/views/3d/webgl-engine/lib/BufferGeometry.js +1 -1
- package/views/3d/webgl-engine/lib/BufferObject3D.js +1 -1
- package/views/3d/webgl-engine/lib/EmissionComposite.js +1 -1
- package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/affectsGeometry.js +1 -1
- package/views/3d/webgl-engine/lib/bufferGeometryUtils.js +2 -0
- package/views/3d/webgl-engine/lib/edgeRendering/AdjustProjectedPosition.glsl.js +5 -5
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeShader.glsl.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeUtil.glsl.js +11 -11
- package/views/3d/webgl-engine/materials/Path.glsl.js +1 -1
- package/views/3d/webgl-engine/materials/Water.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/AtmosphereCompositing.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/DefaultMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplat.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/HUDMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/LineCallout.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/Pattern.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/RealisticTree.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/SphereDepthInterpolate.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/Terrain.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/Viewshed.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/lineUniforms.js +2 -0
- package/views/DOMContainer.d.ts +27 -9
- package/views/DOMContainer.js +1 -1
- package/views/PopupView.d.ts +6 -0
- package/views/SceneView.js +1 -1
- package/views/VideoView.d.ts +27 -9
- package/views/View.d.ts +16 -7
- package/views/View.js +1 -1
- package/views/View2D.d.ts +1 -1
- package/views/interactive/snapping/FeatureSnappingSourceInfo.js +1 -1
- package/views/interactive/snapping/SnappingManagerPool.js +1 -1
- package/views/interactive/snapping/SnappingOptions.d.ts +1 -1
- package/views/interactive/tooltip/components/ElevationModeSelect.js +1 -1
- package/views/interactive/tooltip/components/TooltipEditableField.js +1 -1
- package/views/layers/FeatureLikeLayerView.d.ts +1 -2
- package/views/layers/LayerView.js +1 -1
- package/views/layers/LineOfSightLayerView.d.ts +3 -4
- package/views/layers/ParquetLayerView.d.ts +15 -0
- package/views/layers/ParquetLayerView.js +1 -1
- package/views/layers/ViewshedLayerView.d.ts +5 -6
- package/views/support/layerViewUtils.js +1 -1
- package/webdoc/support/saveUtils.js +1 -1
- package/webdoc/support/unsupportedErrors.js +1 -1
- package/widgets/Editor.d.ts +10 -0
- package/widgets/FeatureForm.d.ts +2 -2
- package/widgets/Legend.d.ts +1 -0
- package/widgets/ShadowCast/ShadowCastViewModel.js +1 -1
- package/widgets/support/SnappingControls.d.ts +1 -1
- package/assets/esri/core/workers/chunks/00a600c71ceebe7bfeee.js +0 -1
- package/assets/esri/core/workers/chunks/00d24415bdeb0adae3df.js +0 -1
- package/assets/esri/core/workers/chunks/0193df3f9fb23633da87.js +0 -1
- package/assets/esri/core/workers/chunks/05963f57cbe5a5249496.js +0 -1
- package/assets/esri/core/workers/chunks/06e7400f5ebe0719b81c.js +0 -1
- package/assets/esri/core/workers/chunks/07aa6d36f1006b6ab7ff.js +0 -1
- package/assets/esri/core/workers/chunks/0b36abcbf03037b4073d.js +0 -1
- package/assets/esri/core/workers/chunks/122111703528381539cc.js +0 -1
- package/assets/esri/core/workers/chunks/1ef39aef6b33c530cbe4.js +0 -1
- package/assets/esri/core/workers/chunks/2164fcaced72b0fda31f.js +0 -1
- package/assets/esri/core/workers/chunks/25b0885d3bc190b28c04.js +0 -1
- package/assets/esri/core/workers/chunks/25d6c674b1c4829f040f.js +0 -1
- package/assets/esri/core/workers/chunks/25e6013e2c095629b236.js +0 -1
- package/assets/esri/core/workers/chunks/27da9ece2afaeec39f59.js +0 -1
- package/assets/esri/core/workers/chunks/2c90f7a6432cd716db8b.js +0 -1
- package/assets/esri/core/workers/chunks/2e6a2f4d686b71249c0e.js +0 -1
- package/assets/esri/core/workers/chunks/2f9033890c465acff698.js +0 -1
- package/assets/esri/core/workers/chunks/303fde8f3459dde16555.js +0 -1
- package/assets/esri/core/workers/chunks/347bf269c2b1583d2dca.js +0 -1
- package/assets/esri/core/workers/chunks/350540770781b281c39a.js +0 -1
- package/assets/esri/core/workers/chunks/3b017b718ea2d4ed498f.js +0 -1
- package/assets/esri/core/workers/chunks/43fc42405167a5537039.js +0 -1
- package/assets/esri/core/workers/chunks/4cddd217383b9333f32e.js +0 -1
- package/assets/esri/core/workers/chunks/4d82db661365daa513a6.js +0 -1
- package/assets/esri/core/workers/chunks/4fa59f8ed3b7b6239548.js +0 -1
- package/assets/esri/core/workers/chunks/518e8883b6ed613bf451.js +0 -1
- package/assets/esri/core/workers/chunks/5e4d6c283c2fa28db022.js +0 -1
- package/assets/esri/core/workers/chunks/5ea8809b6519c05ad9f6.js +0 -1
- package/assets/esri/core/workers/chunks/604344e45c0f27497188.js +0 -1
- package/assets/esri/core/workers/chunks/633a9051580c5302d2f7.js +0 -1
- package/assets/esri/core/workers/chunks/6469c0d18d3663e7da4b.js +0 -1
- package/assets/esri/core/workers/chunks/64770e2cf41211b63fd2.js +0 -1
- package/assets/esri/core/workers/chunks/669e39c3437d7273f0c7.js +0 -1
- package/assets/esri/core/workers/chunks/7038ead1fa1674416ab3.js +0 -1
- package/assets/esri/core/workers/chunks/7165d6f6a5078768bebb.js +0 -1
- package/assets/esri/core/workers/chunks/71f739bb3f7350704af6.js +0 -1
- package/assets/esri/core/workers/chunks/798a63653f82c0e842c5.js +0 -1
- package/assets/esri/core/workers/chunks/8313c626596a76c7449d.js +0 -1
- package/assets/esri/core/workers/chunks/841f67baf6a1634ada48.js +0 -1
- package/assets/esri/core/workers/chunks/84e9258a57d8c365f361.js +0 -1
- package/assets/esri/core/workers/chunks/84fcbf7a1d04f01685d1.js +0 -1
- package/assets/esri/core/workers/chunks/87b4e916b2668203a6b0.js +0 -1
- package/assets/esri/core/workers/chunks/8e511079918e2fd9261f.js +0 -1
- package/assets/esri/core/workers/chunks/8fcfd515ee1b18c902e5.js +0 -1
- package/assets/esri/core/workers/chunks/9001e9a1e81bce175ddd.js +0 -1
- package/assets/esri/core/workers/chunks/95b82cbbe355266c65d7.js +0 -1
- package/assets/esri/core/workers/chunks/9673a9efec86040b8c13.js +0 -1
- package/assets/esri/core/workers/chunks/97dbbedea9fe03bd1306.js +0 -1
- package/assets/esri/core/workers/chunks/9a7fc93cc693fd12b5d8.js +0 -1
- package/assets/esri/core/workers/chunks/9c0fd8baa00ee9733ba4.js +0 -1
- package/assets/esri/core/workers/chunks/a010d2e4e34eb7bc1fec.js +0 -1
- package/assets/esri/core/workers/chunks/a20526996d01386ec3b7.js +0 -1
- package/assets/esri/core/workers/chunks/a7edf7541569fef77cb3.js +0 -1
- package/assets/esri/core/workers/chunks/ac4cc49104d26c384e98.js +0 -1
- package/assets/esri/core/workers/chunks/b05a41a60e30935644be.js +0 -1
- package/assets/esri/core/workers/chunks/b1008bdfca995ebf98ed.js +0 -1
- package/assets/esri/core/workers/chunks/bfd85e8d54062a590f0e.js +0 -1
- package/assets/esri/core/workers/chunks/d21257d2e2a37266c0f7.js +0 -1
- package/assets/esri/core/workers/chunks/d270cc9807161033686e.js +0 -1
- package/assets/esri/core/workers/chunks/d4926545193414cf2f16.js +0 -1
- package/assets/esri/core/workers/chunks/da18d96b35af20e73b3b.js +0 -1
- package/assets/esri/core/workers/chunks/df0481bcc1613ee4b7af.js +0 -1
- package/assets/esri/core/workers/chunks/ec28e18275d36e71b438.js +0 -1
- package/assets/esri/core/workers/chunks/ec9a2425b4a498054a19.js +0 -1
- package/assets/esri/core/workers/chunks/f05de08e194a3f9b96f2.js +0 -1
- package/assets/esri/core/workers/chunks/f0a68d2900d24f56afa0.js +0 -1
- package/assets/esri/core/workers/chunks/f762f70e7d39634ce797.js +0 -1
- package/assets/esri/core/workers/chunks/fb4ff0ac2bc445fec413.js +0 -1
- package/assets/esri/core/workers/chunks/fd0254c6fc6c03ec11ba.js +0 -1
- package/assets/esri/core/workers/chunks/fd0a5c243f3426f2a0b5.js +0 -1
- package/views/3d/environment/EnvironmentManager.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../AggregateGraphic.js";import n from"../../../Graphic.js";import r from"../../../TrackGraphic.js";import{isSome as i}from"../../../core/arrayUtils.js";import a from"../../../core/Collection.js";import o from"../../../core/Error.js";import{makeHandle as s,handlesGroup as c}from"../../../core/handleUtils.js";import has from"../../../core/has.js";import l from"../../../core/Logger.js";import{destroyMaybe as u}from"../../../core/maybe.js";import{notDeepEqual as d}from"../../../core/object.js";import{createAbortError as f,ignoreAbortErrors as p,throwIfNotAbortError as m,isAbortError as h}from"../../../core/promiseUtils.js";import{watch as g,sync as _}from"../../../core/reactiveUtils.js";import{sqlAnd as v}from"../../../core/sql.js";import{getMetersPerUnitForSR as y}from"../../../core/units.js";import{property as b,subclass as x}from"../../../core/accessorSupport/decorators.js";import{UpdatingHandles as S}from"../../../core/support/UpdatingHandles.js";import C from"../../../geometry/Extent.js";import{fromJSON as ee}from"../../../geometry/support/jsonUtils.js";import w from"../../../geometry/support/rotate.js";import{isCurvedGeometry as T}from"../../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as E}from"../../../geometry/support/curves/densifyCurvedGeometry.js";import te from"../../../layers/effects/FeatureEffectView.js";import{convertFromFeature as D}from"../../../layers/graphics/featureConversionUtils.js";import O from"../../../layers/support/FeatureFilter.js";import{checkServiceCurrentUserSupport as k}from"../../../layers/support/featureLayerUtils.js";import{packFields as ne}from"../../../layers/support/fieldUtils.js";import{getEffectiveLayerCapabilities as re}from"../../../layers/support/layerUtils.js";import{combineTimeExtent as ie}from"../../../layers/support/timeSupport.js";import ae from"../../../rest/support/AggregateFeatureSet.js";import oe from"../../../rest/support/AttributeBinsFeatureSet.js";import se from"../../../rest/support/AttributeBinsQuery.js";import A from"../../../rest/support/FeatureSet.js";import j from"../../../rest/support/Query.js";import{HittestDrawHelper as M}from"../../../symbols/cim/CIMSymbolDrawHelper.js";import{symbolToCIM as N}from"../../../symbols/cim/CIMSymbolHelper.js";import{getDisplayedSymbol as P}from"../../../symbols/support/symbolUtils.js";import{LayerView2D as F}from"./LayerView2D.js";import{FeatureContainer as I}from"./features/FeatureContainer.js";import{createFeaturePipelineWorkerProxy as L}from"./features/FeaturePipelineWorkerProxy.js";import{FeatureSourceEventLog as R}from"./features/FeatureSourceEventLog.js";import{AnnotationLayerAdapter as z}from"./features/layerAdapters/AnnotationLayerAdapter.js";import{CatalogFootprintLayerAdapter as B}from"./features/layerAdapters/CatalogFootprintLayerAdapter.js";import{DimensionLayerAdapter as V}from"./features/layerAdapters/DimensionLayerAdapter.js";import{FeatureLayerAdapter as H}from"./features/layerAdapters/FeatureLayerAdapter.js";import{createFeatureIdInfo as U}from"./features/layerAdapters/featureServiceUtils.js";import{InMemoryLayerAdapter as W}from"./features/layerAdapters/InMemoryLayerAdapter.js";import{KnowledgeGraphSublayerAdapter as G}from"./features/layerAdapters/KnowledgeGraphSublayerAdapter.js";import{OGCFeatureLayerAdapter as K}from"./features/layerAdapters/OGCFeatureLayerAdapter.js";import{OrientedImageryLayerAdapter as ce}from"./features/layerAdapters/OrientedImageryLayerAdapter.js";import{ParquetLayerAdapter as le}from"./features/layerAdapters/ParquetLayerAdapter.js";import{StreamLayerAdapter as ue}from"./features/layerAdapters/StreamLayerAdapter.js";import{SubtypeGroupLayerAdapter as de}from"./features/layerAdapters/SubtypeGroupLayerAdapter.js";import{createComplexSymbolInstances as q}from"./features/schema/processor/symbols/ComplexSymbolSchema.js";import{DebouncedFeatureOverride as J}from"./support/DebouncedFeatureOverride.js";import{FeatureCommandQueue as fe}from"./support/FeatureCommandQueue.js";import{createFilterSchemas as pe}from"./support/FilterSchema.js";import{handleNoEngineError as Y}from"./support/handleNoEngineError.js";import{toJSONGeometryType as X}from"./support/util.js";import{getMapPointsFromScreen as me,getHittestType as he}from"../support/hitTestUtils.js";import{FeatureTileSubscriptionManager as ge}from"../tiling/FeatureTileSubscriptionManager.js";import{RefreshableLayerView as _e}from"../../layers/RefreshableLayerView.js";import{getHighlightName as ve}from"../../support/highlightOptionsUtils.js";function Z(e,t){let n=new Set;return e&&e.forEach(e=>n.add(e)),t&&t.forEach(e=>n.add(e)),n.has(`*`)?[`*`]:Array.from(n)}const Q=4294967294;function ye(e,t){return c(e.map(e=>g(()=>{let t=e();return t&&typeof t==`object`?`getTime`in t&&typeof t.getTime==`function`?t.getTime():JSON.stringify(t):t},t,_)))}function $(e){if(!e.geometry||!T(e.geometry))return e;let t=.001/y(e.geometry.spatialReference);return{geometry:E(e.geometry,{maxSegmentsPerCurve:12e3,maxSegmentLength:100*t,maxDeviation:0}),attributes:e.attributes}}const be=c=>{let _=_e(F(c)),y=class extends _{constructor(){super(...arguments),this._commandsQueue=new fe({process:e=>{switch(e.type){case`override-batch`:return this._doOverride(e);case`update`:return this._doUpdate()}}}),this._visibilityOverrides=new Set,this._lastAvailableFields=[],this._lastTargetState=null,this._stationaryRotation=0,this._lastSnappingComplexityExceeded=!0,this.eventLog=new R,this._sourceRefreshVersion=1,this._displayRefreshVersion=1,this._pipelineUpdating=!1,this._editUpdatingHandles=new S,this._fields=null,this._hittestDrawHelper=null,this._sourceUpdating=!1,this.featureEffectView=new te}destroy(){this._editUpdatingHandles.destroy(),this._workerProxy?.destroy(),this._workerAttached.reject(f()),this._commandsQueue.destroy(),this._hittestDrawHelper?.destroy()}initialize(){this._workerAttached=Promise.withResolvers(),p(this._workerAttached.promise),this.addResolvingPromise(this._initProxy()),this.featureEffectView.featureEffect=this.featureEffect,this.featureEffectView.endTransition()}async _initProxy(){let e=this.layer;if(`isTable`in e&&e.isTable)throw new o(`featurelayerview:table-not-supported`,`table feature layer can't be displayed`,{layer:e});if((e.type===`feature`||e.type===`subtype-group`)&&re(e)?.operations.supportsQuery===!1)throw new o(`featurelayerview:query-not-supported`,`layer view requires a layer with query capability`,{layer:e});this._workerProxy&&this._workerProxy.destroy();let t=this._createClientOptions();this._workerProxy=await L(t)}async _attachProxy(){let e=w(this.view.extent,this.view.rotation,this.view.center),t={tileInfoJSON:this.view?.featuresTilingScheme?.tileInfo?.toJSON(),initialViewExtent:e.toJSON()};try{await this._workerProxy.pipeline.onAttach(t),this._workerAttached.resolve()}catch(e){this._workerAttached.reject(f()),m(e)}}async _detachProxy(){return this._workerProxy.pipeline.onDetach()}async getWorker(){return await this._workerAttached.promise,this._workerProxy}get dataUpdating(){return this._sourceUpdating||this._editUpdatingHandles.updating}get hasAllFeatures(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryAllFeatures}get hasAllFeaturesInView(){let e=this.effectiveDisplayFilter?.where||null,t=!this.eventLog.willQueryAllFeatures&&e!=null&&e!==`1=1`;return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&!t}get hasFullGeometries(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryFullResolutionGeometry}get snappingComplexityExceeded(){if(this.eventLog.willQueryAllFeatures)return!1;let e=this.view.featuresTilingScheme.getClosestInfoForScale(this.view.scale).level,t=this.eventLog.getGeometryDensity(e),n=t?.sampleCount??0;return this.updating&&(this._lastSnappingComplexityExceeded||n<100)||(this._lastSnappingComplexityExceeded=t!=null&&n>0&&t.densePairCount/n>.95),this._lastSnappingComplexityExceeded}get layerAdapter(){switch(this.layer.type){case`annotation-feature`:return new z(this.layer);case`dimension-feature`:return new V(this.layer);case`feature`:return this.layer.source.type===`memory`?new W(this.layer):new H(this.layer);case`geojson`:case`csv`:case`wfs`:return new W(this.layer);case`parquet`:return new le(this.layer);case`subtype-group`:return new de(this.layer);case`ogc-feature`:return new K(this.layer);case`stream`:return new ue(this.layer);case`oriented-imagery`:return new ce(this.layer);case`knowledge-graph-sublayer`:return new G(this.layer);case`catalog-footprint`:return new B(this.layer);default:this.layer}return null}get timeExtent(){return ie(this.layerAdapter.timeOptions,this.view?.timeExtent,this._get(`timeExtent`))}get usedMemory(){return this.container.usedMemory+this.eventLog.pipelineStatistics.usedMemory}getDisplayStatistics(e,t){return this.featureContainer?.getDisplayStatistics(e,t)}highlight(e,t){let r=ve(t),o;if(e instanceof O)o=e;else{let t;e instanceof n?t=[e.getObjectId()]:typeof e==`number`||typeof e==`string`?t=[e]:a.isCollection(e)&&e.length>0?t=e.map(e=>e?.getObjectId()).toArray():Array.isArray(e)&&e.length>0&&(t=typeof e[0]==`number`||typeof e[0]==`string`?e:e.map(e=>e?.getObjectId()));let r=t?.filter(i);if(!r?.length)return s();o=new O({objectIds:r})}let c=this._addHighlightFilter(o,r);return s(()=>!this.destroyed&&this._removeHighlight(c))}async hitTest(e,i,a){let o=he(i);if(!o)return null;let s=o===`point`,{trueHitIds:c,candidateHitIds:l}=await this.featureContainer.hitTest(i,a??null),u=await this.getWorker(),[d,f]=await Promise.all([u.pipeline.getDisplayFeatures(l),u.pipeline.getDisplayFeatures(c)]),{features:p,aggregates:m,tracks:g}=d,{features:_,aggregates:v,tracks:y}=f,b=[];if(!s&&this.hasRenderer()){let e=new Map,t=new n;for(let n of p){t.attributes=n.attributes,t.geometry=ee(n.geometry),t.symbol=null;let r=this.layerAdapter.getRenderer(t);if(!r){b.push(n);continue}let i=await P(t,{renderer:r,scale:this.view.scale,resolution:this.view.resolution,spatialReference:this.view.spatialReference,viewingMode:`2d`,timeZone:this.view.timeZone});if(!i)continue;let a=null,o=N(i);if(o.type===`web-style`)try{let e=N(await o.fetchSymbol({acceptedFormats:[`cim`,`web`]}));a=e.type===`web-style`?null:e}catch(e){h(e);continue}else a=o;let s=a?.symbol;if(!s)continue;let c=this.view.stage.cimAnalyzer.analyzeSymbolReference(a,!1).some(e=>`alignment`in e&&e.alignment===0);e.set(n,{cimSymbol:s,isScreenAligned:c})}e.size>0&&!this._hittestDrawHelper&&(this._hittestDrawHelper=new M(this.view.stage.painter.textureManager.resourceManager));let{resolution:r,rotation:a}=this.view.state,s=me(this.view,i);for(let[t,{cimSymbol:n,isScreenAligned:i}]of e){if(!t)continue;let e={hittestType:o,textInfo:null,mapRotation:a,resolution:r,searchDist:0,isScreenAligned:i};this._hittestDrawHelper.hitTest(s,n,t.geometry,e)&&b.push(t)}}else b.push(...p);let x=[..._,...b],S=[...v,...m],C=[...y,...g],w=this.featureContainer.getSortKeys(x.map(e=>e.displayId)),T=({displayId:e},{displayId:t})=>w.has(e)&&w.has(t)?w.get(e)-w.get(t):e-t;return x.sort(T).reverse(),S.sort(T).reverse(),[...S.map(n=>this._createAggregateGraphicHit(e,t.fromJSON(n))),...C.map(t=>this._createTrackGraphicHit(e,r.fromJSON(t))),...x.map(t=>this._createFeatureGraphicHit(s?e:null,n.fromJSON(t)))]}async queryAggregateSummaryStatistics(e,t,n){let r={...t,scale:this.view.scale},i=(await this.getWorker()).aggregates.executeQueryForSummaryStatistics(this._cleanUpAggregateQuery(e),r,n);return Y(i,{})}async queryUniqueValues(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForUniqueValues(this._cleanUpQuery(e),i,n);return Y(a,{uniqueValueInfos:[]})}async queryAggregateUniqueValues(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForUniqueValues(this._cleanUpAggregateQuery(e),i,n);return Y(a,{uniqueValueInfos:[]})}async queryAggregateClassBreaks(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForClassBreaks(this._cleanUpAggregateQuery(e),i,n);return Y(a,{classBreakInfos:[]})}async queryHistogram(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForHistogram(this._cleanUpQuery(e),i,n);return Y(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}async queryAggregateCount(e,t){let n=(await this.getWorker()).aggregates.executeQueryForCount(this._cleanUpAggregateQuery(e),t);return Y(n,0)}async queryAggregateHistogram(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForHistogram(this._cleanUpAggregateQuery(e),i,n);return Y(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}async queryAggregateIds(e,t){let n=(await this.getWorker()).aggregates.executeQueryForIds(this._cleanUpAggregateQuery(e),t);return Y(n,[])}async queryAggregateJSON(e,t){let n=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t);return Y(n,{features:[]})}async queryAttributeBins(e,t){let n=(await this.getWorker()).features.executeAttributeBinsQuery(this._cleanUpAttributeBinsQuery(e),t),r=await Y(n,{features:[]});return oe.fromJSON(r)}async queryAggregates(e,t){let n=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t),r=await Y(n,{features:[]}),i=ae.fromJSON(r);return i.features.forEach(e=>this.layerAdapter.setAggregateGraphicOrigin?.(e)),i}async queryClassBreaks(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForClassBreaks(this._cleanUpQuery(e),i,n);return Y(a,{classBreakInfos:[]})}async queryExtent(e,t){let n=(await this.getWorker()).features.executeQueryForExtent(this._cleanUpQuery(e),t),r=await Y(n,{count:0,extent:null});return{count:r.count,extent:C.fromJSON(r.extent)}}async queryFeatureCount(e,t){let n=(await this.getWorker()).features.executeQueryForCount(this._cleanUpQuery(e),t);return Y(n,0)}queryFeatures(e,t){return this.queryFeaturesJSON(e,t).then(e=>{let t=A.fromJSON(e);return t.features.forEach(e=>this._setOriginForFeature(e)),t})}async queryFeaturesJSON(e,t){let n=(await this.getWorker()).features.executeQuery(this._cleanUpQuery(e),t);return Y(n,{features:[]})}async queryHeatmapStatistics(e){return(await this.getWorker()).pipeline.queryHeatmapStatistics(e)}async queryObjectIds(e,t){let n=(await this.getWorker()).features.executeQueryForIds(this._cleanUpQuery(e),t);return Y(n,[])}async queryStatistics(){let e=await this.getWorker();return Y(e.pipeline.queryStatistics(),{featureCount:0,ringCount:0,vertexCount:0})}async querySummaryStatistics(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForSummaryStatistics(this._cleanUpQuery(e),i,n);return Y(a,{})}async queryVisibleFeatures(e,t){let n=(await this.getWorker()).pipeline.queryVisibleFeatures(this._cleanUpQuery(e),t),r=await Y(n,{features:[]}),i=A.fromJSON(r);return i.features.forEach(e=>this._setOriginForFeature(e)),i}async getSampleFeatures(e){return(await this.getWorker()).pipeline.getSampleFeatures(e)}setVisibility(e,t){t?this._visibilityOverrides.delete(e):this._visibilityOverrides.add(e),this._update()}update(e){if(!this._subscriptions)return;this.view.animation&&!this._lastTargetState&&(this._lastTargetState=e.state.clone()),!this.view.animation&&this._lastTargetState&&(this._lastTargetState=null);let t=this.featureContainer.getPresenting(),n=this._subscriptions.update(e.targetState,this._lastTargetState,t);n&&(this.featureContainer.updateSubscriptions(n),p(this._updatingHandles.addPromise(this.getWorker().then(e=>e.pipeline.updateSubscriptions(n))))),this._subscriptions.coverage&&this.featureContainer.setCoverage(this._subscriptions.coverage)}attach(){has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.attach`),p(this._updatingHandles.addPromise(this._workerAttached.promise)),p(this._attachProxy()),this.featureContainer=new I(this),this.container.addChild(this.featureContainer),this.view.timeline.record(`${this.layer.title} (FeatureLayer) Attach`),this._subscriptions=new ge(this.view.featuresTilingScheme),this._stationaryRotation=this.view.rotation,this.requestUpdate(),this.addAttachHandles([ye([()=>this._displayRefreshVersion,()=>`displayFilterInfo`in this.layer&&this.layer.displayFilterInfo,()=>this.timeExtent,()=>this.clips,()=>this.filter,()=>this.effectiveDisplayFilterClause,()=>this.featureEffect,()=>this._sourceRefreshVersion,()=>this.view.timeZone,()=>this.view.timeExtent,...this.layerAdapter.getUpdateHashProperties(this.view)],()=>this._update()),g(()=>this.updateSuspended,e=>{e||this._subscriptions.resume(this.featureContainer.getPresenting())}),g(()=>this.view.stationary,e=>{if(!e)return;let t=this.view.rotation;t!==this._stationaryRotation&&(this._stationaryRotation=t,this._update()),this.getWorker().then(e=>{if(this.destroyed)return;let t=w(this.view.extent,this.view.rotation,this.view.center);return e.pipeline.updateViewExtent(t.toJSON(),this.featureContainer.requiresRefresh)}).catch(()=>{})})]),this._update(),this.layer.type!==`stream`&&this.layer.type!==`parquet`&&this.layer.type!==`catalog-footprint`&&this.addAttachHandles(this.layer.on(`edits`,e=>this._editUpdatingHandles.addPromise(this._edit(e))))}emitFirstDraw(e){this.emit(`first-draw`,{timestamp:e})}detach(){has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.detach`),this._detachProxy(),this._fields=null,this.featureContainer.destroy(),this.featureContainer=null,this._commandsQueue.clear(),this.container.removeAllChildren(),this._subscriptions=u(this._subscriptions),this._workerProxy.pipeline.onDetach(),this._workerAttached=Promise.withResolvers(),p(this._workerAttached.promise),this._lastAvailableFields=[],this._lastSchema=null}viewChange(){this.requestUpdate()}moveEnd(){this.requestUpdate()}addOverrides(e){return this._commandsQueue.push({type:`override`,options:{...e,release:[]}})}removeOverrides(e){for(let t of e)if(t==null)throw new o(`featurelayerview:bad-override`,`Tried to remove an override for an invalid objectId`,{objectId:t});let t={added:[],updated:[],removed:[],release:e,isWeak:!1,historicMoment:null};return this._commandsQueue.push({type:`override`,options:t})}onProxyClientEvent(e){}hasRenderer(){return`renderer`in this.layer&&this.layer.renderer!=null}isUpdating(){let e=this.hasRenderer(),t=this._commandsQueue.updateTracking.updating,n=this._updatingRequiredPromise!=null,r=this.featureContainer.updating;return this.updateRequested||e&&(t||n)||r||this._pipelineUpdating||this.dataUpdating}_createClientOptions(){let e=this;return{updateSchemaStart(){return e.updateSchemaStart()},updateSchemaEnd(t){return e.updateSchemaEnd(t)},openMemoryPorts:async()=>{if(this.layerAdapter?.openMessagePorts){let e=await this.layerAdapter.openMessagePorts();return{result:e,transferList:e}}throw Error(`InternalError: Layer adapter does not support opening message ports`)},openGlyphPorts:async()=>{let t=await e.container.stage.textureManager.openMessagePorts();return{result:t,transferList:t}},get container(){return e.featureContainer},setUpdating:e=>{this._set(`_pipelineUpdating`,e.pipeline),this._set(`_sourceUpdating`,e.source)},emitEvent:e=>{this.onProxyClientEvent(e)},get eventLog(){return e.eventLog},fetch:async t=>{if(has(`esri-2d-stabilize-glyphs`)){let n=[];for(let r of t)n.push(await e.view.stage.painter.textureManager.rasterizeItem(r));return n}return Promise.all(t.map(t=>e.view.stage.painter.textureManager.rasterizeItem(t)))},fetchDictionary:e=>Promise.all(e.map(e=>this._fetchDictionaryRequest(e))),fetchMesh:e=>Promise.all(e.map(e=>this._fetchMeshRequest(e)))}}async _fetchDictionaryRequest(e){try{if(!(`renderer`in this.layer)||!this.layer.renderer||this.layer.renderer.type!==`dictionary`)throw Error(`InternalError: Expected renderer to be of type 'dictionary'`);let t=this.layer.renderer,n=this._lastSchema.processor.mesh.factory.symbology;if(n.type!==`dictionary`)throw Error(`InternalError: Expected schema to be of type 'dictionary'`);let r={cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,store:this.featureContainer.instanceStore,scaleExpression:n.scaleExpression,viewRotation:this._stationaryRotation};this._fields||=this.layer.fields.map(e=>e.toJSON());let i=n.visualVariableUniforms,a=X(this.layer.geometryType),o=await t.getSymbolForControlString(e.controlString,a,!1);return!o||!o.data?{type:`dictionary-response`,meshes:[]}:{type:`dictionary-response`,meshes:await q({...o.data,hasTextStringTemplates:!0},{uniforms:i,path:`renderer`,schemaOptions:r})}}catch{return{type:`dictionary-response`,meshes:[]}}}async _fetchMeshRequest(e){let{layer:t}=this;try{let n={cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,store:this.featureContainer.instanceStore,scaleExpression:null,viewRotation:this._stationaryRotation};return this._fields||=t.fields.map(e=>e.toJSON()),{type:`mesh-response`,meshes:await q({...e.symbolReference,hasTextStringTemplates:!0},{path:`anno-like`,schemaOptions:n,uniforms:{visualVariableColor:null,visualVariableOpacity:null,visualVariableRotation:null,visualVariableSizeStops:null,visualVariableSizeScaleStops:null,visualVariableSizeOutlineScaleStops:null,visualVariableSizeUnitValue:null,visualVariableSizeMinMaxValue:null}})}}catch{return{type:`mesh-response`,meshes:[]}}}_cleanUpQuery(e){let t=j.from(e)||this.createQuery();return t.outSpatialReference||=this.view.spatialReference,`returnZ`in this.layer&&(t.returnZ??=this.layer.returnZ),`returnM`in this.layer&&(t.returnM??=this.layer.returnM),t.toJSON()}_cleanUpAttributeBinsQuery(e){let t=se.from(e);return t.outSpatialReference||=this.view.spatialReference,t.toJSON()}_cleanUpAggregateQuery(e){let t=j.from(e)||this.createAggregateQuery();t.outSpatialReference||=this.view.spatialReference;let n=t.objectIds??[];for(let e of t.aggregateIds??[])n.push(e);return t.objectIds=n,t.aggregateIds=[],t.toJSON()}async _update(){return this._commandsQueue.push({type:`update`})}_edit(e){return this._commandsQueue.push({type:`edit`,event:e})}async doRefresh(e){this.attached&&(!this.updateSuspended||!e)&&(e?this.incrementSourceRefreshVersion():this.incrementDisplayRefreshVersion())}incrementSourceRefreshVersion(){this._sourceRefreshVersion=(this._sourceRefreshVersion+1)%Q+1}incrementDisplayRefreshVersion(){this._displayRefreshVersion=(this._displayRefreshVersion+1)%Q+1}async _resolveIdenifiers(e){let t=[],n=[];for(let r of e)r.objectId!=null&&r.objectId!==-1?t.push(r.objectId):r.globalId==null?l.getLogger(this).warn(`mapview-apply-edits`,`A feature identifier must contain either a GlobalId or ObjectId. Ignoring`,{identifier:r}):n.push(r.globalId);let r=`globalIdField`in this.layer&&this.layer.globalIdField,i=r&&this.availableFields.includes(r);if(n.length&&!i)return l.getLogger(this).error(new o(`mapview-apply-edits`,`Editing the specified service requires the layer's globalIdField, ${r} to be included the layer's outFields for updates to be reflected on the map`)),t;if(n.length){let e=await this._workerProxy.pipeline.getObjectIdsFromGlobalIds(n);for(let n of e)t.push(n)}return t}_resolveOverrides(e){let t=X(this.layer.geometryType),n=U(this.layer),r=[];for(let i of e.added){let e=D($(i),t,!1,!1,n);if(e.objectId==null)throw new o(`featurelayerview:bad-override`,`Feature does not have an objectId`,{feature:i});r.push(e)}for(let i of e.updated){let e=D($(i),t,!1,!1,n);if(e.objectId==null)throw new o(`featurelayerview:bad-override`,`Feature does not have an objectId`,{feature:i});r.push(e)}for(let t of e.removed)if(t==null)throw new o(`featurelayerview:bad-override`,`Tried to remove an invalid objectId`,{objectId:t});return{type:`override`,updates:r,removed:e.removed,release:e.release,isWeak:e.isWeak??!1,historicMoment:e.historicMoment??null}}async _resolveEdit(e){let t=this.layer,n=e.historicMoment?.getTime()??null,r=`layerId`in t&&e.editedFeatures?.find(e=>e.layerId===t.layerId);if(r&&this._canEditByFeature(r)){let{adds:e,deletes:t,updates:i}=r.editedFeatures,a=this.layer.objectIdField,o=i.map(e=>e.current),s=t.map(e=>`attributes`in e?{objectId:a?e.attributes[a]:null}:e),c=await this._resolveIdenifiers(s);return this._resolveOverrides({added:e,updated:o,removed:c,historicMoment:n,isWeak:!0,release:[]})}let[i,a,o]=await Promise.all([this._resolveIdenifiers(e.addedFeatures),this._resolveIdenifiers(e.updatedFeatures),this._resolveIdenifiers(e.deletedFeatures)]);return{type:`override-by-id`,updates:[...i,...a],removed:o,historicMoment:n,isWeak:!0}}_canEditByFeature(e){let{adds:t,updates:n}=e.editedFeatures;return t.every(e=>this.view.spatialReference.equals(e.geometry?.spatialReference))&&n.every(e=>this.view.spatialReference.equals(e.current.geometry?.spatialReference))}async updateSchemaStart(){let e=this.layer;`featureReduction`in e&&e.featureReduction&&e.featureReduction!==this._lastFeatureReduction&&(e.featureReduction=e.featureReduction?.clone(),this._lastFeatureReduction=e.featureReduction);try{if(await Promise.allSettled([this._handleChange(),k(e)]),this.destroyed||!this.layerAdapter?.hasRequiredSupport||!this._subscriptions)return null;let t=this.featureContainer.updateStart(e.type===`subtype-group`);this._lastFeatureEffect=this.featureEffect;let n={store:t,cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,scaleExpression:void 0,viewRotation:this._stationaryRotation},r=await this._createViewSchemaConfig(),i={source:await this.layerAdapter.createSourceSchema(r,this._sourceRefreshVersion),processor:await this.layerAdapter.createProcessorSchema(n,r,this._displayRefreshVersion)};return d(this._lastSchema?.source.strategy,i.source.strategy)||d(this._lastSchema?.processor,i.processor)?(this._lastSchema=i,this._fields=null,i):null}catch{}return null}async updateSchemaEnd(e){try{this.featureEffectView.featureEffect=this._lastFeatureEffect,e&&this.featureEffectView.endTransition(),await this.featureContainer.updateEnd(this._lastSchema.processor,this.layerAdapter.getLabelingDeconflictionInfo(),e),has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.updateEnd`)}catch{}}async _doUpdate(){let e=Math.round(performance.now());await(await this.getWorker()).pipeline.updateSchema(e),this.requestUpdate()}async _doOverride(e){let t=await this.getWorker();try{let n=new J;for(let r of e.messages)switch(r.type){case`edit`:n.tryAdd(await this._resolveEdit(r.event))||(await t.pipeline.onOverride(n.toMessage()),n=new J,n.tryAdd(await this._resolveEdit(r.event)));break;case`override`:n.tryAdd(this._resolveOverrides(r.options))||(await t.pipeline.onOverride(n.toMessage()),n=new J,n.tryAdd(this._resolveOverrides(r.options)))}await t.pipeline.onOverride(n.toMessage())}catch(e){h(e)}}_getEffectiveAvailableFields(e){let t=Z(this._lastAvailableFields,e);return this._lastAvailableFields=t,ne(this.layer.fieldsIndex,t)}async _createViewSchemaConfig(){let e=this.requiresCurrentUser?await this.signedInUser:null,t=T(this.view,this.layerAdapter,this.timeExtent,this._visibilityOverrides,this.filter,this.effectiveDisplayFilterClause),n=this.featureEffect?.filter?.toJSON()??null,r=this._getHighlightFilterGroups().map(({order:e,filters:t})=>({order:e,filters:t.map(e=>e.toJSON())})),i=pe({layerFilter:t,effectFilter:n,highlightFilters:r});return{availableFields:this._getEffectiveAvailableFields(this.availableFields),displayFilterEnabled:this.displayFilterEnabled,filters:i,scale:this.view.scale,timeZone:this.view.timeZone,timeExtent:this.view.timeExtent,currentUser:e,spatialReference:this.view.spatialReference,extent:this.view.extent,returnZ:this.hasZ,returnM:this.hasM}}_onHighlightChange(){this._commandsQueue.push({type:`update`})}_setOriginForFeature(e){e.layer=e.sourceLayer=this.layer,this.layerAdapter.setGraphicOrigin(e)}_createFeatureGraphicHit(e,t){return this._setOriginForFeature(t),this._createGraphicHit(e,t)}_createTrackGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setTrackGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createAggregateGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setAggregateGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createGraphicHit(e,t){return t.geometry!=null&&(t.geometry.spatialReference=this.view.spatialReference),{type:`graphic`,graphic:t,layer:this.layer,mapPoint:e}}};e([b()],y.prototype,`_commandsQueue`,void 0),e([b()],y.prototype,`_sourceRefreshVersion`,void 0),e([b()],y.prototype,`_displayRefreshVersion`,void 0),e([b({readOnly:!0})],y.prototype,`_pipelineUpdating`,void 0),e([b()],y.prototype,`_sourceUpdating`,void 0),e([b({readOnly:!0})],y.prototype,`dataUpdating`,null),e([b({readOnly:!0})],y.prototype,`hasAllFeatures`,null),e([b({readOnly:!0})],y.prototype,`hasAllFeaturesInView`,null),e([b({readOnly:!0})],y.prototype,`hasFullGeometries`,null),e([b({readOnly:!0})],y.prototype,`snappingComplexityExceeded`,null),e([b()],y.prototype,`featureEffectView`,void 0),e([b()],y.prototype,`layerAdapter`,null),e([b({readOnly:!0})],y.prototype,`timeExtent`,null),y=e([x(`esri.views.2d.layers.FeatureLikeLayerView2D`)],y);function T(e,t,n,r,i,a){i&&=i.clone();let o=i==null?null:i.timeExtent,s=n!=null&&o!=null?n.intersection(o):n||o;s&&(i??=new O,i.timeExtent=s),i=t.addFilters?.(i,e)??i,a&&(i??=new O,i.where=v(i.where,a));let c=i?.toJSON()??null;return r.size&&(c??=new O().toJSON(),c.hiddenIds=Array.from(r)),c}return y};export{be as FeatureLikeLayerView2D};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../AggregateGraphic.js";import n from"../../../Graphic.js";import r from"../../../TrackGraphic.js";import{isSome as i}from"../../../core/arrayUtils.js";import a from"../../../core/Collection.js";import o from"../../../core/Error.js";import{makeHandle as s,handlesGroup as c}from"../../../core/handleUtils.js";import has from"../../../core/has.js";import l from"../../../core/Logger.js";import{destroyMaybe as u}from"../../../core/maybe.js";import{notDeepEqual as d}from"../../../core/object.js";import{createAbortError as f,ignoreAbortErrors as p,throwIfNotAbortError as m,isAbortError as h}from"../../../core/promiseUtils.js";import{watch as g,sync as _}from"../../../core/reactiveUtils.js";import{sqlAnd as v}from"../../../core/sql.js";import{getMetersPerUnitForSR as y}from"../../../core/units.js";import{property as b,subclass as x}from"../../../core/accessorSupport/decorators.js";import{UpdatingHandles as S}from"../../../core/support/UpdatingHandles.js";import C from"../../../geometry/Extent.js";import{fromJSON as w,getJsonType as T}from"../../../geometry/support/jsonUtils.js";import E from"../../../geometry/support/rotate.js";import{isCurvedGeometry as D}from"../../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as O}from"../../../geometry/support/curves/densifyCurvedGeometry.js";import ee from"../../../layers/effects/FeatureEffectView.js";import{convertFromFeature as k}from"../../../layers/graphics/featureConversionUtils.js";import A from"../../../layers/support/FeatureFilter.js";import{checkServiceCurrentUserSupport as te}from"../../../layers/support/featureLayerUtils.js";import{packFields as ne}from"../../../layers/support/fieldUtils.js";import{getEffectiveLayerCapabilities as re}from"../../../layers/support/layerUtils.js";import{combineTimeExtent as ie}from"../../../layers/support/timeSupport.js";import ae from"../../../rest/support/AggregateFeatureSet.js";import oe from"../../../rest/support/AttributeBinsFeatureSet.js";import se from"../../../rest/support/AttributeBinsQuery.js";import j from"../../../rest/support/FeatureSet.js";import M from"../../../rest/support/Query.js";import{HittestDrawHelper as N}from"../../../symbols/cim/CIMSymbolDrawHelper.js";import{resolveSymbolToCIM as P}from"../../../symbols/cim/CIMSymbolHelper.js";import{getDisplayedSymbol as F}from"../../../symbols/support/symbolUtils.js";import{LayerView2D as I}from"./LayerView2D.js";import{FeatureContainer as L}from"./features/FeatureContainer.js";import{createFeaturePipelineWorkerProxy as R}from"./features/FeaturePipelineWorkerProxy.js";import{FeatureSourceEventLog as z}from"./features/FeatureSourceEventLog.js";import{AnnotationLayerAdapter as B}from"./features/layerAdapters/AnnotationLayerAdapter.js";import{CatalogFootprintLayerAdapter as V}from"./features/layerAdapters/CatalogFootprintLayerAdapter.js";import{DimensionLayerAdapter as H}from"./features/layerAdapters/DimensionLayerAdapter.js";import{FeatureLayerAdapter as U}from"./features/layerAdapters/FeatureLayerAdapter.js";import{createFeatureIdInfo as W}from"./features/layerAdapters/featureServiceUtils.js";import{InMemoryLayerAdapter as G}from"./features/layerAdapters/InMemoryLayerAdapter.js";import{KnowledgeGraphSublayerAdapter as K}from"./features/layerAdapters/KnowledgeGraphSublayerAdapter.js";import{OGCFeatureLayerAdapter as ce}from"./features/layerAdapters/OGCFeatureLayerAdapter.js";import{OrientedImageryLayerAdapter as le}from"./features/layerAdapters/OrientedImageryLayerAdapter.js";import{ParquetLayerAdapter as ue}from"./features/layerAdapters/ParquetLayerAdapter.js";import{StreamLayerAdapter as de}from"./features/layerAdapters/StreamLayerAdapter.js";import{SubtypeGroupLayerAdapter as fe}from"./features/layerAdapters/SubtypeGroupLayerAdapter.js";import{createComplexSymbolInstances as q}from"./features/schema/processor/symbols/ComplexSymbolSchema.js";import{DebouncedFeatureOverride as J}from"./support/DebouncedFeatureOverride.js";import{FeatureCommandQueue as pe}from"./support/FeatureCommandQueue.js";import{createFilterSchemas as me}from"./support/FilterSchema.js";import{handleNoEngineError as Y}from"./support/handleNoEngineError.js";import{toJSONGeometryType as X}from"./support/util.js";import{getMapPointsFromScreen as he,getHittestType as Z}from"../support/hitTestUtils.js";import{FeatureTileSubscriptionManager as ge}from"../tiling/FeatureTileSubscriptionManager.js";import{RefreshableLayerView as _e}from"../../layers/RefreshableLayerView.js";import{getHighlightName as ve}from"../../support/highlightOptionsUtils.js";function ye(e,t){let n=new Set;return e&&e.forEach(e=>n.add(e)),t&&t.forEach(e=>n.add(e)),n.has(`*`)?[`*`]:Array.from(n)}const Q=4294967294;function be(e,t){return c(e.map(e=>g(()=>{let t=e();return t&&typeof t==`object`?`getTime`in t&&typeof t.getTime==`function`?t.getTime():JSON.stringify(t):t},t,_)))}function $(e){if(!e.geometry||!D(e.geometry))return e;let t=.001/y(e.geometry.spatialReference);return{geometry:O(e.geometry,{maxSegmentsPerCurve:12e3,maxSegmentLength:100*t,maxDeviation:0}),attributes:e.attributes}}const xe=c=>{let _=_e(I(c)),y=class extends _{constructor(){super(...arguments),this._commandsQueue=new pe({process:e=>{switch(e.type){case`override-batch`:return this._doOverride(e);case`update`:return this._doUpdate()}}}),this._visibilityOverrides=new Set,this._lastAvailableFields=[],this._lastTargetState=null,this._stationaryRotation=0,this._lastSnappingComplexityExceeded=!0,this.eventLog=new z,this._sourceRefreshVersion=1,this._displayRefreshVersion=1,this._pipelineUpdating=!1,this._editUpdatingHandles=new S,this._fields=null,this._hittestDrawHelper=null,this._sourceUpdating=!1,this.featureEffectView=new ee}destroy(){this._editUpdatingHandles.destroy(),this._workerProxy?.destroy(),this._workerAttached.reject(f()),this._commandsQueue.destroy(),this._hittestDrawHelper?.destroy()}initialize(){this._workerAttached=Promise.withResolvers(),p(this._workerAttached.promise),this.addResolvingPromise(this._initProxy()),this.featureEffectView.featureEffect=this.featureEffect,this.featureEffectView.endTransition()}async _initProxy(){let e=this.layer;if(`isTable`in e&&e.isTable)throw new o(`featurelayerview:table-not-supported`,`table feature layer can't be displayed`,{layer:e});if((e.type===`feature`||e.type===`subtype-group`)&&re(e)?.operations.supportsQuery===!1)throw new o(`featurelayerview:query-not-supported`,`layer view requires a layer with query capability`,{layer:e});this._workerProxy&&this._workerProxy.destroy();let t=this._createClientOptions();this._workerProxy=await R(t)}async _attachProxy(){let e=E(this.view.extent,this.view.rotation,this.view.center),t={tileInfoJSON:this.view?.featuresTilingScheme?.tileInfo?.toJSON(),initialViewExtent:e.toJSON()};try{await this._workerProxy.pipeline.onAttach(t),this._workerAttached.resolve()}catch(e){this._workerAttached.reject(f()),m(e)}}async _detachProxy(){return this._workerProxy.pipeline.onDetach()}async getWorker(){return await this._workerAttached.promise,this._workerProxy}get dataUpdating(){return this._sourceUpdating||this._editUpdatingHandles.updating}get hasAllFeatures(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryAllFeatures}get hasAllFeaturesInView(){let e=this.effectiveDisplayFilter?.where||null,t=!this.eventLog.willQueryAllFeatures&&e!=null&&e!==`1=1`;return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&!t}get hasFullGeometries(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryFullResolutionGeometry}get snappingComplexityExceeded(){if(this.eventLog.willQueryAllFeatures)return!1;let e=this.view.featuresTilingScheme.getClosestInfoForScale(this.view.scale).level,t=this.eventLog.getGeometryDensity(e),n=t?.sampleCount??0;return this.updating&&(this._lastSnappingComplexityExceeded||n<100)||(this._lastSnappingComplexityExceeded=t!=null&&n>0&&t.densePairCount/n>.95),this._lastSnappingComplexityExceeded}get layerAdapter(){switch(this.layer.type){case`annotation-feature`:return new B(this.layer);case`dimension-feature`:return new H(this.layer);case`feature`:return this.layer.source.type===`memory`?new G(this.layer):new U(this.layer);case`geojson`:case`csv`:case`wfs`:return new G(this.layer);case`parquet`:return new ue(this.layer);case`subtype-group`:return new fe(this.layer);case`ogc-feature`:return new ce(this.layer);case`stream`:return new de(this.layer);case`oriented-imagery`:return new le(this.layer);case`knowledge-graph-sublayer`:return new K(this.layer);case`catalog-footprint`:return new V(this.layer);default:this.layer}return null}get timeExtent(){return ie(this.layerAdapter.timeOptions,this.view?.timeExtent,this._get(`timeExtent`))}get usedMemory(){return this.container.usedMemory+this.eventLog.pipelineStatistics.usedMemory}getDisplayStatistics(e,t){return this.featureContainer?.getDisplayStatistics(e,t)}highlight(e,t){let r=ve(t),o;if(e instanceof A)o=e;else{let t;e instanceof n?t=[e.getObjectId()]:typeof e==`number`||typeof e==`string`?t=[e]:a.isCollection(e)&&e.length>0?t=e.map(e=>e?.getObjectId()).toArray():Array.isArray(e)&&e.length>0&&(t=typeof e[0]==`number`||typeof e[0]==`string`?e:e.map(e=>e?.getObjectId()));let r=t?.filter(i);if(!r?.length)return s();o=new A({objectIds:r})}let c=this._addHighlightFilter(o,r);return s(()=>!this.destroyed&&this._removeHighlight(c))}async hitTest(e,i,a){let o=Z(i);if(!o)return null;let s=o===`point`,{trueHitIds:c,candidateHitIds:l}=await this.featureContainer.hitTest(i,a??null),u=await this.getWorker(),[d,f]=await Promise.all([u.pipeline.getDisplayFeatures(l),u.pipeline.getDisplayFeatures(c)]),{features:p,aggregates:m,tracks:h}=d,{features:g,aggregates:_,tracks:v}=f,y=s?p:this.hasRenderer()?await this._filterCandidateHits(p,i,o):[],b=[...g,...y],x=[..._,...m],S=[...v,...h],C=this.featureContainer.getSortKeys(b.map(e=>e.displayId)),w=({displayId:e},{displayId:t})=>C.has(e)&&C.has(t)?C.get(e)-C.get(t):e-t;return b.sort(w).reverse(),x.sort(w).reverse(),[...x.map(n=>this._createAggregateGraphicHit(e,t.fromJSON(n))),...S.map(t=>this._createTrackGraphicHit(e,r.fromJSON(t))),...b.map(t=>this._createFeatureGraphicHit(s?e:null,n.fromJSON(t)))]}async _filterCandidateHits(e,t,r){let i=[],a=new n,{resolution:o,rotation:s}=this.view.state,c=he(this.view,t);for(let t of e){a.attributes=t.attributes,a.geometry=w(t.geometry),a.symbol=null;let e=this.layerAdapter.getRenderer(a);if(!e){i.push(t);continue}let n=await F(a,{renderer:e,scale:this.view.scale,resolution:this.view.resolution,spatialReference:this.view.spatialReference,viewingMode:`2d`,timeZone:this.view.timeZone});if(!n)continue;let l=await P(n,null,this.view.spatialReference,T(t.geometry),{scale:this.view.scale,viewingMode:`2d`});if(!l)continue;let u=this.view.stage.cimAnalyzer.analyzeSymbolReference({type:`CIMSymbolReference`,symbol:l},!1).some(e=>`alignment`in e&&e.alignment===0);this._hittestDrawHelper??=new N(this.view.stage.painter.textureManager.resourceManager);let d={hittestType:r,textInfo:null,mapRotation:s,resolution:o,searchDist:0,isScreenAligned:u};this._hittestDrawHelper.hitTest(c,l,t.geometry,d)&&i.push(t)}return i}async queryAggregateSummaryStatistics(e,t,n){let r={...t,scale:this.view.scale},i=(await this.getWorker()).aggregates.executeQueryForSummaryStatistics(this._cleanUpAggregateQuery(e),r,n);return Y(i,{})}async queryUniqueValues(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForUniqueValues(this._cleanUpQuery(e),i,n);return Y(a,{uniqueValueInfos:[]})}async queryAggregateUniqueValues(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForUniqueValues(this._cleanUpAggregateQuery(e),i,n);return Y(a,{uniqueValueInfos:[]})}async queryAggregateClassBreaks(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForClassBreaks(this._cleanUpAggregateQuery(e),i,n);return Y(a,{classBreakInfos:[]})}async queryHistogram(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForHistogram(this._cleanUpQuery(e),i,n);return Y(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}async queryAggregateCount(e,t){let n=(await this.getWorker()).aggregates.executeQueryForCount(this._cleanUpAggregateQuery(e),t);return Y(n,0)}async queryAggregateHistogram(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForHistogram(this._cleanUpAggregateQuery(e),i,n);return Y(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}async queryAggregateIds(e,t){let n=(await this.getWorker()).aggregates.executeQueryForIds(this._cleanUpAggregateQuery(e),t);return Y(n,[])}async queryAggregateJSON(e,t){let n=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t);return Y(n,{features:[]})}async queryAttributeBins(e,t){let n=(await this.getWorker()).features.executeAttributeBinsQuery(this._cleanUpAttributeBinsQuery(e),t),r=await Y(n,{features:[]});return oe.fromJSON(r)}async queryAggregates(e,t){let n=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t),r=await Y(n,{features:[]}),i=ae.fromJSON(r);return i.features.forEach(e=>this.layerAdapter.setAggregateGraphicOrigin?.(e)),i}async queryClassBreaks(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForClassBreaks(this._cleanUpQuery(e),i,n);return Y(a,{classBreakInfos:[]})}async queryExtent(e,t){let n=(await this.getWorker()).features.executeQueryForExtent(this._cleanUpQuery(e),t),r=await Y(n,{count:0,extent:null});return{count:r.count,extent:C.fromJSON(r.extent)}}async queryFeatureCount(e,t){let n=(await this.getWorker()).features.executeQueryForCount(this._cleanUpQuery(e),t);return Y(n,0)}queryFeatures(e,t){return this.queryFeaturesJSON(e,t).then(e=>{let t=j.fromJSON(e);return t.features.forEach(e=>this._setOriginForFeature(e)),t})}async queryFeaturesJSON(e,t){let n=(await this.getWorker()).features.executeQuery(this._cleanUpQuery(e),t);return Y(n,{features:[]})}async queryHeatmapStatistics(e){return(await this.getWorker()).pipeline.queryHeatmapStatistics(e)}async queryObjectIds(e,t){let n=(await this.getWorker()).features.executeQueryForIds(this._cleanUpQuery(e),t);return Y(n,[])}async queryStatistics(){let e=await this.getWorker();return Y(e.pipeline.queryStatistics(),{featureCount:0,ringCount:0,vertexCount:0})}async querySummaryStatistics(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForSummaryStatistics(this._cleanUpQuery(e),i,n);return Y(a,{})}async queryVisibleFeatures(e,t){let n=(await this.getWorker()).pipeline.queryVisibleFeatures(this._cleanUpQuery(e),t),r=await Y(n,{features:[]}),i=j.fromJSON(r);return i.features.forEach(e=>this._setOriginForFeature(e)),i}async getSampleFeatures(e){return(await this.getWorker()).pipeline.getSampleFeatures(e)}setVisibility(e,t){t?this._visibilityOverrides.delete(e):this._visibilityOverrides.add(e),this._update()}update(e){if(!this._subscriptions)return;this.view.animation&&!this._lastTargetState&&(this._lastTargetState=e.state.clone()),!this.view.animation&&this._lastTargetState&&(this._lastTargetState=null);let t=this.featureContainer.getPresenting(),n=this._subscriptions.update(e.targetState,this._lastTargetState,t);n&&(this.featureContainer.updateSubscriptions(n),p(this._updatingHandles.addPromise(this.getWorker().then(e=>e.pipeline.updateSubscriptions(n))))),this._subscriptions.coverage&&this.featureContainer.setCoverage(this._subscriptions.coverage)}attach(){has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.attach`),p(this._updatingHandles.addPromise(this._workerAttached.promise)),p(this._attachProxy()),this.featureContainer=new L(this),this.container.addChild(this.featureContainer),this.view.timeline.record(`${this.layer.title} (FeatureLayer) Attach`),this._subscriptions=new ge(this.view.featuresTilingScheme),this._stationaryRotation=this.view.rotation,this.requestUpdate(),this.addAttachHandles([be([()=>this._displayRefreshVersion,()=>`displayFilterInfo`in this.layer&&this.layer.displayFilterInfo,()=>this.timeExtent,()=>this.clips,()=>this.filter,()=>this.effectiveDisplayFilterClause,()=>this.featureEffect,()=>this._sourceRefreshVersion,()=>this.view.timeZone,()=>this.view.timeExtent,...this.layerAdapter.getUpdateHashProperties(this.view)],()=>this._update()),g(()=>this.updateSuspended,e=>{e||this._subscriptions.resume(this.featureContainer.getPresenting())}),g(()=>this.view.stationary,e=>{if(!e)return;let t=this.view.rotation;t!==this._stationaryRotation&&(this._stationaryRotation=t,this._update()),this.getWorker().then(e=>{if(this.destroyed)return;let t=E(this.view.extent,this.view.rotation,this.view.center);return e.pipeline.updateViewExtent(t.toJSON(),this.featureContainer.requiresRefresh)}).catch(()=>{})})]),this._update(),this.layer.type!==`stream`&&this.layer.type!==`parquet`&&this.layer.type!==`catalog-footprint`&&this.addAttachHandles(this.layer.on(`edits`,e=>this._editUpdatingHandles.addPromise(this._edit(e))))}emitFirstDraw(e){this.emit(`first-draw`,{timestamp:e})}detach(){has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.detach`),this._detachProxy(),this._fields=null,this.featureContainer.destroy(),this.featureContainer=null,this._commandsQueue.clear(),this.container.removeAllChildren(),this._subscriptions=u(this._subscriptions),this._workerProxy.pipeline.onDetach(),this._workerAttached=Promise.withResolvers(),p(this._workerAttached.promise),this._lastAvailableFields=[],this._lastSchema=null}viewChange(){this.requestUpdate()}moveEnd(){this.requestUpdate()}addOverrides(e){return this._commandsQueue.push({type:`override`,options:{...e,release:[]}})}removeOverrides(e){for(let t of e)if(t==null)throw new o(`featurelayerview:bad-override`,`Tried to remove an override for an invalid objectId`,{objectId:t});let t={added:[],updated:[],removed:[],release:e,isWeak:!1,historicMoment:null};return this._commandsQueue.push({type:`override`,options:t})}onProxyClientEvent(e){}hasRenderer(){return`renderer`in this.layer&&this.layer.renderer!=null}isUpdating(){let e=this.hasRenderer(),t=this._commandsQueue.updateTracking.updating,n=this._updatingRequiredPromise!=null,r=this.featureContainer.updating;return this.updateRequested||e&&(t||n)||r||this._pipelineUpdating||this.dataUpdating}_createClientOptions(){let e=this;return{updateSchemaStart(){return e.updateSchemaStart()},updateSchemaEnd(t){return e.updateSchemaEnd(t)},openMemoryPorts:async()=>{if(this.layerAdapter?.openMessagePorts){let e=await this.layerAdapter.openMessagePorts();return{result:e,transferList:e}}throw Error(`InternalError: Layer adapter does not support opening message ports`)},openGlyphPorts:async()=>{let t=await e.container.stage.textureManager.openMessagePorts();return{result:t,transferList:t}},get container(){return e.featureContainer},setUpdating:e=>{this._set(`_pipelineUpdating`,e.pipeline),this._set(`_sourceUpdating`,e.source)},emitEvent:e=>{this.onProxyClientEvent(e)},get eventLog(){return e.eventLog},fetch:async t=>{if(has(`esri-2d-stabilize-glyphs`)){let n=[];for(let r of t)n.push(await e.view.stage.painter.textureManager.rasterizeItem(r));return n}return Promise.all(t.map(t=>e.view.stage.painter.textureManager.rasterizeItem(t)))},fetchDictionary:e=>Promise.all(e.map(e=>this._fetchDictionaryRequest(e))),fetchMesh:e=>Promise.all(e.map(e=>this._fetchMeshRequest(e)))}}async _fetchDictionaryRequest(e){try{if(!(`renderer`in this.layer)||!this.layer.renderer||this.layer.renderer.type!==`dictionary`)throw Error(`InternalError: Expected renderer to be of type 'dictionary'`);let t=this.layer.renderer,n=this._lastSchema.processor.mesh.factory.symbology;if(n.type!==`dictionary`)throw Error(`InternalError: Expected schema to be of type 'dictionary'`);let r={cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,store:this.featureContainer.instanceStore,scaleExpression:n.scaleExpression,viewRotation:this._stationaryRotation};this._fields||=this.layer.fields.map(e=>e.toJSON());let i=n.visualVariableUniforms,a=X(this.layer.geometryType),o=await t.getSymbolForControlString(e.controlString,a,!1);return!o||!o.data?{type:`dictionary-response`,meshes:[]}:{type:`dictionary-response`,meshes:await q({...o.data,hasTextStringTemplates:!0},{uniforms:i,path:`renderer`,schemaOptions:r})}}catch{return{type:`dictionary-response`,meshes:[]}}}async _fetchMeshRequest(e){let{layer:t}=this;try{let n={cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,store:this.featureContainer.instanceStore,scaleExpression:null,viewRotation:this._stationaryRotation};return this._fields||=t.fields.map(e=>e.toJSON()),{type:`mesh-response`,meshes:await q({...e.symbolReference,hasTextStringTemplates:!0},{path:`anno-like`,schemaOptions:n,uniforms:{visualVariableColor:null,visualVariableOpacity:null,visualVariableRotation:null,visualVariableSizeStops:null,visualVariableSizeScaleStops:null,visualVariableSizeOutlineScaleStops:null,visualVariableSizeUnitValue:null,visualVariableSizeMinMaxValue:null}})}}catch{return{type:`mesh-response`,meshes:[]}}}_cleanUpQuery(e){let t=M.from(e)||this.createQuery();return t.outSpatialReference||=this.view.spatialReference,`returnZ`in this.layer&&(t.returnZ??=this.layer.returnZ),`returnM`in this.layer&&(t.returnM??=this.layer.returnM),t.toJSON()}_cleanUpAttributeBinsQuery(e){let t=se.from(e);return t.outSpatialReference||=this.view.spatialReference,t.toJSON()}_cleanUpAggregateQuery(e){let t=M.from(e)||this.createAggregateQuery();t.outSpatialReference||=this.view.spatialReference;let n=t.objectIds??[];for(let e of t.aggregateIds??[])n.push(e);return t.objectIds=n,t.aggregateIds=[],t.toJSON()}async _update(){return this._commandsQueue.push({type:`update`})}_edit(e){return this._commandsQueue.push({type:`edit`,event:e})}async doRefresh(e){this.attached&&(!this.updateSuspended||!e)&&(e?this.incrementSourceRefreshVersion():this.incrementDisplayRefreshVersion())}incrementSourceRefreshVersion(){this._sourceRefreshVersion=(this._sourceRefreshVersion+1)%Q+1}incrementDisplayRefreshVersion(){this._displayRefreshVersion=(this._displayRefreshVersion+1)%Q+1}async _resolveIdenifiers(e){let t=[],n=[];for(let r of e)r.objectId!=null&&r.objectId!==-1?t.push(r.objectId):r.globalId==null?l.getLogger(this).warn(`mapview-apply-edits`,`A feature identifier must contain either a GlobalId or ObjectId. Ignoring`,{identifier:r}):n.push(r.globalId);let r=`globalIdField`in this.layer&&this.layer.globalIdField,i=r&&this.availableFields.includes(r);if(n.length&&!i)return l.getLogger(this).error(new o(`mapview-apply-edits`,`Editing the specified service requires the layer's globalIdField, ${r} to be included the layer's outFields for updates to be reflected on the map`)),t;if(n.length){let e=await this._workerProxy.pipeline.getObjectIdsFromGlobalIds(n);for(let n of e)t.push(n)}return t}_resolveOverrides(e){let t=X(this.layer.geometryType),n=W(this.layer),r=[];for(let i of e.added){let e=k($(i),t,!1,!1,n);if(e.objectId==null)throw new o(`featurelayerview:bad-override`,`Feature does not have an objectId`,{feature:i});r.push(e)}for(let i of e.updated){let e=k($(i),t,!1,!1,n);if(e.objectId==null)throw new o(`featurelayerview:bad-override`,`Feature does not have an objectId`,{feature:i});r.push(e)}for(let t of e.removed)if(t==null)throw new o(`featurelayerview:bad-override`,`Tried to remove an invalid objectId`,{objectId:t});return{type:`override`,updates:r,removed:e.removed,release:e.release,isWeak:e.isWeak??!1,historicMoment:e.historicMoment??null}}async _resolveEdit(e){let t=this.layer,n=e.historicMoment?.getTime()??null,r=`layerId`in t&&e.editedFeatures?.find(e=>e.layerId===t.layerId);if(r&&this._canEditByFeature(r)){let{adds:e,deletes:t,updates:i}=r.editedFeatures,a=this.layer.objectIdField,o=i.map(e=>e.current),s=t.map(e=>`attributes`in e?{objectId:a?e.attributes[a]:null}:e),c=await this._resolveIdenifiers(s);return this._resolveOverrides({added:e,updated:o,removed:c,historicMoment:n,isWeak:!0,release:[]})}let[i,a,o]=await Promise.all([this._resolveIdenifiers(e.addedFeatures),this._resolveIdenifiers(e.updatedFeatures),this._resolveIdenifiers(e.deletedFeatures)]);return{type:`override-by-id`,updates:[...i,...a],removed:o,historicMoment:n,isWeak:!0}}_canEditByFeature(e){let{adds:t,updates:n}=e.editedFeatures;return t.every(e=>this.view.spatialReference.equals(e.geometry?.spatialReference))&&n.every(e=>this.view.spatialReference.equals(e.current.geometry?.spatialReference))}async updateSchemaStart(){let e=this.layer;`featureReduction`in e&&e.featureReduction&&e.featureReduction!==this._lastFeatureReduction&&(e.featureReduction=e.featureReduction?.clone(),this._lastFeatureReduction=e.featureReduction);try{if(await Promise.allSettled([this._handleChange(),te(e)]),this.destroyed||!this.layerAdapter?.hasRequiredSupport||!this._subscriptions)return null;let t=this.featureContainer.updateStart(e.type===`subtype-group`);this._lastFeatureEffect=this.featureEffect;let n={store:t,cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,scaleExpression:void 0,viewRotation:this._stationaryRotation},r=await this._createViewSchemaConfig(),i={source:await this.layerAdapter.createSourceSchema(r,this._sourceRefreshVersion),processor:await this.layerAdapter.createProcessorSchema(n,r,this._displayRefreshVersion)};return d(this._lastSchema?.source.strategy,i.source.strategy)||d(this._lastSchema?.processor,i.processor)?(this._lastSchema=i,this._fields=null,i):null}catch{}return null}async updateSchemaEnd(e){try{this.featureEffectView.featureEffect=this._lastFeatureEffect,e&&this.featureEffectView.endTransition(),await this.featureContainer.updateEnd(this._lastSchema.processor,this.layerAdapter.getLabelingDeconflictionInfo(),e),has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.updateEnd`)}catch{}}async _doUpdate(){let e=Math.round(performance.now());await(await this.getWorker()).pipeline.updateSchema(e),this.requestUpdate()}async _doOverride(e){let t=await this.getWorker();try{let n=new J;for(let r of e.messages)switch(r.type){case`edit`:n.tryAdd(await this._resolveEdit(r.event))||(await t.pipeline.onOverride(n.toMessage()),n=new J,n.tryAdd(await this._resolveEdit(r.event)));break;case`override`:n.tryAdd(this._resolveOverrides(r.options))||(await t.pipeline.onOverride(n.toMessage()),n=new J,n.tryAdd(this._resolveOverrides(r.options)))}await t.pipeline.onOverride(n.toMessage())}catch(e){h(e)}}_getEffectiveAvailableFields(e){let t=ye(this._lastAvailableFields,e);return this._lastAvailableFields=t,ne(this.layer.fieldsIndex,t)}async _createViewSchemaConfig(){let e=this.requiresCurrentUser?await this.signedInUser:null,t=D(this.view,this.layerAdapter,this.timeExtent,this._visibilityOverrides,this.filter,this.effectiveDisplayFilterClause),n=this.featureEffect?.filter?.toJSON()??null,r=this._getHighlightFilterGroups().map(({order:e,filters:t})=>({order:e,filters:t.map(e=>e.toJSON())})),i=me({layerFilter:t,effectFilter:n,highlightFilters:r});return{availableFields:this._getEffectiveAvailableFields(this.availableFields),displayFilterEnabled:this.displayFilterEnabled,filters:i,scale:this.view.scale,timeZone:this.view.timeZone,timeExtent:this.view.timeExtent,currentUser:e,spatialReference:this.view.spatialReference,extent:this.view.extent,returnZ:this.hasZ,returnM:this.hasM}}_onHighlightChange(){this._commandsQueue.push({type:`update`})}_setOriginForFeature(e){e.layer=e.sourceLayer=this.layer,this.layerAdapter.setGraphicOrigin(e)}_createFeatureGraphicHit(e,t){return this._setOriginForFeature(t),this._createGraphicHit(e,t)}_createTrackGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setTrackGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createAggregateGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setAggregateGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createGraphicHit(e,t){return t.geometry!=null&&(t.geometry.spatialReference=this.view.spatialReference),{type:`graphic`,graphic:t,layer:this.layer,mapPoint:e}}};e([b()],y.prototype,`_commandsQueue`,void 0),e([b()],y.prototype,`_sourceRefreshVersion`,void 0),e([b()],y.prototype,`_displayRefreshVersion`,void 0),e([b({readOnly:!0})],y.prototype,`_pipelineUpdating`,void 0),e([b()],y.prototype,`_sourceUpdating`,void 0),e([b({readOnly:!0})],y.prototype,`dataUpdating`,null),e([b({readOnly:!0})],y.prototype,`hasAllFeatures`,null),e([b({readOnly:!0})],y.prototype,`hasAllFeaturesInView`,null),e([b({readOnly:!0})],y.prototype,`hasFullGeometries`,null),e([b({readOnly:!0})],y.prototype,`snappingComplexityExceeded`,null),e([b()],y.prototype,`featureEffectView`,void 0),e([b()],y.prototype,`layerAdapter`,null),e([b({readOnly:!0})],y.prototype,`timeExtent`,null),y=e([x(`esri.views.2d.layers.FeatureLikeLayerView2D`)],y);function D(e,t,n,r,i,a){i&&=i.clone();let o=i==null?null:i.timeExtent,s=n!=null&&o!=null?n.intersection(o):n||o;s&&(i??=new A,i.timeExtent=s),i=t.addFilters?.(i,e)??i,a&&(i??=new A,i.where=v(i.where,a));let c=i?.toJSON()??null;return r.size&&(c??=new A().toJSON(),c.hiddenIds=Array.from(r)),c}return y};export{xe as FeatureLikeLayerView2D};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../core/Collection.js";import{referenceSetter as n}from"../../../core/collectionUtils.js";import{deprecatedFunction as r}from"../../../core/deprecate.js";import i from"../../../core/Error.js";import"../../../core/has.js";import a from"../../../core/Logger.js";import{watch as o,syncAndInitial as s,sync as c}from"../../../core/reactiveUtils.js";import{property as l,subclass as u}from"../../../core/accessorSupport/decorators.js";import{
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../core/Collection.js";import{referenceSetter as n}from"../../../core/collectionUtils.js";import{deprecatedFunction as r}from"../../../core/deprecate.js";import i from"../../../core/Error.js";import"../../../core/has.js";import a from"../../../core/Logger.js";import{watch as o,syncAndInitial as s,sync as c}from"../../../core/reactiveUtils.js";import{property as l,subclass as u}from"../../../core/accessorSupport/decorators.js";import{isInEffectiveScaleRange as d}from"../../../geometry/support/scaleUtils.js";import{isLinkChartView as f}from"../../../linkChart/guards.js";import{Container as p}from"../engine/Container.js";import{ClipMesh as m}from"../engine/webgl/ClipMesh.js";import{maxHighlightGroups as h}from"../engine/webgl/definitions.js";import{HighlightRegistry as g}from"./support/HighlightRegistry.js";import{createOrReuseHighlightGradient as _}from"./support/util.js";import v from"../../layers/support/ClipRect.js";import y from"../../layers/support/GeometryClipArea.js";import b from"../../layers/support/Path.js";import{defaultHighlightName as x}from"../../support/HighlightDefaults.js";import S from"../../support/HighlightOptions.js";const C=t.ofType({key:`type`,base:null,typeMap:{rect:v,path:b,geometry:y}}),w=new(t.ofType(S)),T=v=>{let y=v,b=class extends y{constructor(){super(...arguments),this._highlightRegistry=new g,this.attached=!1,this.clips=new C,this.highlights=null,this.lastUpdateId=-1,this.moving=!1,this.updateRequested=!1,this._visibleAtCurrentScale=!0}initialize(){let e=this.view?.spatialReferenceLocked??!0;this.view?.spatialReference&&e&&!this.spatialReferenceSupported?this.addResolvingPromise(Promise.reject(new i(`layerview:spatial-reference-incompatible`,`The spatial reference of this layer does not meet the requirements of the view`,{layer:this.layer}))):(this.container||=new p,this.container.fadeTransitionEnabled=!0,this.container.visible=!1,this.container.endTransitions(),this.addHandles([o(()=>this.suspended,e=>{this.container&&(this.container.visible=!e)},s),o(()=>this.updateSuspended,e=>{this.view&&!e&&this.updateRequested&&this.view.requestUpdate()},s),o(()=>this.layer?.opacity??1,e=>{this.container&&(this.container.opacity=e)},s),o(()=>this.layer&&`blendMode`in this.layer?this.layer.blendMode:`normal`,e=>{this.container&&(this.container.blendMode=e)},s),o(()=>this.layer&&`effect`in this.layer?this.layer.effect:null,e=>{this.container&&(this.container.effect=e)},s),o(()=>this._effectiveHighlightOptions.items.map(e=>({name:e.name,options:{fillColor:e.color,haloColor:e.haloColor,fillOpacity:e.fillOpacity,haloOpacity:e.haloOpacity,haloWidth:e.haloWidth,haloBlur:e.haloBlur}})),()=>{this.container.highlightGradient=_(this.container.highlightGradient,this._effectiveHighlightOptions.items)},s),o(()=>this._getHighlightFilterGroups(),()=>this._onHighlightChange(),c),o(()=>this.clips.map(e=>e.version),async()=>{if(this.container&&this.view?.spatialReference){let e=this.view.featuresTilingScheme,t=await this._updatingHandles.addPromise(Promise.all(this.clips.items.map(t=>m.create(t,e))));for(let e of this.container.clips)e.destroy();this.container.clips=t.filter(e=>!!e)}},s),o(()=>({scale:this.view?.scale,scaleRange:this.layer&&`effectiveScaleRange`in this.layer?this.layer.effectiveScaleRange:null}),({scale:e,scaleRange:t})=>{let n=d(t,e);n!==this._visibleAtCurrentScale&&(this._visibleAtCurrentScale=n)},s),o(()=>this.layer?.effectiveVisible,async e=>{this.container.requestDeclutter()})],`constructor`),this.view?.whenLayerView?this.view.whenLayerView(this.layer).then(e=>{e===this&&this.processAttach()},()=>{}):this.when().then(()=>{this.processAttach()},()=>{}))}destroy(){this.processDetach(),this.updateRequested=!1;for(let e of this.container?.clips??[])e.destroy()}get highlightOptions(){return this._logHighlightOptionsDeprecation(),this.highlights?.find(({name:e})=>e===x)}set highlightOptions(e){if(this._logHighlightOptionsDeprecation(),!this.highlights){if(!e)return;this.highlights=new t([new S])}let n=this.highlights.find(({name:e})=>e===x);e?n?.assignFrom(e):(this.highlights.remove(n),this.highlights.length===0&&(this.highlights=null))}_logHighlightOptionsDeprecation(){r(a.getLogger(this),"`LayerView.highlightOptions` is deprecated in favor of View.highlights",{replacement:`View.highlights`,version:`4.34`,see:`https://arcg.is/inbTa1#highlights`,warnOnce:!0})}get hasHighlight(){return this._highlightRegistry.size>0}get _effectiveHighlightOptions(){if(!this.view)return w;if(!this.highlights)return this.view.highlights;let e=this.view.highlights.clone();for(let t of this.highlights){let n=e.find(e=>e.name===t.name);n&&n.assignFrom(t)}return e}get highlightIds(){return this._highlightRegistry.highlightIds}get scheduler(){return this.view.scheduler}get spatialReferenceSupported(){let e=this.view?.spatialReference;return e==null||this.supportsSpatialReference(e)}get updating(){return this.spatialReferenceSupported?this.attached?this.suspended?!1:this.updateRequested||this.isUpdating()||this._updatingHandles?.updating||this.container.transitioning:!0:!1}get visibleAtCurrentScale(){return this._visibleAtCurrentScale}processAttach(){this.isResolved()&&!this.attached&&!this.destroyed&&this.spatialReferenceSupported&&(this.attach(),this.attached=!0,this.requestUpdate())}processDetach(){this.attached&&(this.attached=!1,this.removeHandles(`attach`),this.detach(),this.updateRequested=!1)}requestUpdate(){this.destroyed||this.updateRequested||(this.updateRequested=!0,this.updateSuspended||this.view.requestUpdate())}processUpdate(e){this.isFulfilled()&&!this.isResolved()?this.updateRequested=!1:(this._set(`updateParameters`,e),this.updateRequested&&!this.updateSuspended&&(this.updateRequested=!1,this.update(e)))}hitTest(e,t,n){return Promise.resolve(null)}supportsSpatialReference(e){return!0}canResume(){if(!this.spatialReferenceSupported)return!1;switch(this.layer?.type){case`link-chart`:case`knowledge-graph-sublayer`:case`graphics`:break;default:if(f(this.view)&&!this.view.inGeographicLayout)return!1}return super.canResume()?this.visibleAtCurrentScale:!1}getSuspendInfo(){let e=super.getSuspendInfo(),t=!this.spatialReferenceSupported;return t&&(e.spatialReferenceNotSupported=t),e}addAttachHandles(e){this.addHandles(e,`attach`)}_addHighlightFilter(e,t){return this._highlightRegistry.register(t,e)}_removeHighlight(e){this._highlightRegistry.unregister(e)}_onHighlightChange(){}_getHighlightFilterGroups(){let e=[];for(let{name:t,filters:n}of this._highlightRegistry.highlightGroups){let r=this._effectiveHighlightOptions.findIndex(e=>e.name===t);r<0||r>=h||e.push({order:r,filters:n})}return e}};return e([l()],b.prototype,`attached`,void 0),e([l({type:C,set(e){let t=n(e,this._get(`clips`),C);this._set(`clips`,t)}})],b.prototype,`clips`,void 0),e([l()],b.prototype,`container`,void 0),e([l({type:S})],b.prototype,`highlightOptions`,null),e([l({type:t.ofType(S)})],b.prototype,`highlights`,void 0),e([l()],b.prototype,`_effectiveHighlightOptions`,null),e([l()],b.prototype,`moving`,void 0),e([l({readOnly:!0})],b.prototype,`spatialReferenceSupported`,null),e([l({readOnly:!0})],b.prototype,`updateParameters`,void 0),e([l()],b.prototype,`updateRequested`,void 0),e([l()],b.prototype,`updating`,null),e([l()],b.prototype,`view`,void 0),e([l()],b.prototype,`_visibleAtCurrentScale`,void 0),e([l({readOnly:!0})],b.prototype,`visibleAtCurrentScale`,null),b=e([u(`esri.views.2d.layers.LayerView2D`)],b),b};export{T as LayerView2D};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import e from"../../../../../core/Error.js";import{toParquetJSONGeometryType as t}from"../../../../../layers/support/parquetUtils.js";import{getEffectiveFeatureReduction as n}from"./featureReductionUtils.js";import{getServiceGeometryType as r}from"./geometryUtils.js";import{createLabelVVEvaluator as i}from"./labelingUtils.js";import{createSimpleProcessorSchema as a}from"../schema/processor/SimpleProcessorSchema.js";import{isRendererSupported as o}from"../support/rendererUtils.js";class s{constructor(e){this.layer=e}get hasRequiredSupport(){return o(this.layer.renderer)}get timeOptions(){return null}getLabelingDeconflictionInfo(){return[{vvEvaluators:{0:i(this.layer.renderer)}}]}getUpdateHashProperties(e){return[()=>this.layer.data,()=>this.layer.outFields,()=>this.layer.definitionExpression,()=>this.layer.labelsVisible?this.layer.labelingInfo:null,()=>n(this.layer,e),()=>this.layer.customParameters,()=>this.layer.orderBy,()=>this.layer.returnZ,()=>this.layer.returnM,()=>this.layer.renderer,()=>this.layer.popupTemplate]}openMessagePorts(){return this.layer.source.openPorts()}async createSourceSchema(e,t){let n=this._createServiceInfo(e),r=e.availableFields.includes(`*`)?this.layer.fields.map(e=>e.name):e.availableFields,i={partial:{dataSourceHash:this.layer.data?JSON.stringify(this.layer.data.toJSON()):null,availableFields:r},full:{definitionExpression:this.layer.definitionExpression??null,sourceRefreshVersion:t,customParameters:this.layer.customParameters??null,returnZ:e.returnZ&&n.metadata.hasZ,returnM:e.returnM&&n.metadata.hasM}};return{type:`parquet`,service:n,strategy:this._createStrategy(n,i)}}_createStrategy(e,t){return e.geometryInfo.displayOptimization?{type:`xz`,...t}:{type:`snapshot`,...t}}createProcessorSchema(e,t,r){let i={fields:this.layer.fields.map(e=>e.toJSON()),renderer:this.layer.renderer?.clone(),labelingInfoSource:this.layer.id,featureReduction:n(this.layer,t),geometryType:this.layer.geometryType,labelingInfo:this.layer.labelingInfo,labelsVisible:this.layer.labelsVisible,objectIdField:this.layer.objectIdField,orderBy:this.layer.orderBy};return a(e,t,i,r)}getRenderer(){return this.layer.renderer}setGraphicOrigin(e){e.origin=this.layer.graphicOrigin}setAggregateGraphicOrigin(e){e.origin=this.layer.aggregateGraphicOrigin}_createServiceInfo(n){let i=r(this.layer),a=n.spatialReference.toJSON(),o=this.layer.geometryEncoding,s=this.layer.capabilities?.data?.supportsZ===!0,
|
|
2
|
+
import e from"../../../../../core/Error.js";import{toParquetJSONGeometryType as t}from"../../../../../layers/support/parquetUtils.js";import{getEffectiveFeatureReduction as n}from"./featureReductionUtils.js";import{getServiceGeometryType as r}from"./geometryUtils.js";import{createLabelVVEvaluator as i}from"./labelingUtils.js";import{createSimpleProcessorSchema as a}from"../schema/processor/SimpleProcessorSchema.js";import{isRendererSupported as o}from"../support/rendererUtils.js";class s{constructor(e){this.layer=e}get hasRequiredSupport(){return o(this.layer.renderer)}get timeOptions(){return null}getLabelingDeconflictionInfo(){return[{vvEvaluators:{0:i(this.layer.renderer)}}]}getUpdateHashProperties(e){return[()=>this.layer.data,()=>this.layer.outFields,()=>this.layer.definitionExpression,()=>this.layer.labelsVisible?this.layer.labelingInfo:null,()=>n(this.layer,e),()=>this.layer.customParameters,()=>this.layer.orderBy,()=>this.layer.returnZ,()=>this.layer.returnM,()=>this.layer.renderer,()=>this.layer.popupTemplate]}openMessagePorts(){return this.layer.source.openPorts()}async createSourceSchema(e,t){let n=this._createServiceInfo(e),r=e.availableFields.includes(`*`)?this.layer.fields.map(e=>e.name):e.availableFields,i={partial:{dataSourceHash:this.layer.data?JSON.stringify(this.layer.data.toJSON()):null,availableFields:r},full:{displayFilterInfo:n.geometryInfo.displayOptimization&&e.displayFilterEnabled?this.layer.displayFilterInfo?.toJSON()??null:null,definitionExpression:this.layer.definitionExpression??null,sourceRefreshVersion:t,customParameters:this.layer.customParameters??null,returnZ:e.returnZ&&n.metadata.hasZ,returnM:e.returnM&&n.metadata.hasM}};return{type:`parquet`,service:n,strategy:this._createStrategy(n,i)}}_createStrategy(e,t){return e.geometryInfo.displayOptimization?{type:`xz`,...t}:{type:`snapshot`,...t}}createProcessorSchema(e,t,r){let i={fields:this.layer.fields.map(e=>e.toJSON()),renderer:this.layer.renderer?.clone(),labelingInfoSource:this.layer.id,featureReduction:n(this.layer,t),geometryType:this.layer.geometryType,labelingInfo:this.layer.labelingInfo,labelsVisible:this.layer.labelsVisible,objectIdField:this.layer.objectIdField,orderBy:this.layer.orderBy};return a(e,t,i,r)}getRenderer(){return this.layer.renderer}setGraphicOrigin(e){e.origin=this.layer.graphicOrigin}setAggregateGraphicOrigin(e){e.origin=this.layer.aggregateGraphicOrigin}_createServiceInfo(n){let i=r(this.layer),a=n.spatialReference.toJSON(),o=this.layer.geometryEncoding,s=this.layer.capabilities.query,c=this.layer.capabilities?.data?.supportsZ===!0,l=this.layer.capabilities?.data?.supportsM===!0;if(o==null&&this.layer.displayOptimization==null)throw new e(`parquet-layer:unsupported`,`creating a parquet layer view requires an encoding`,{layer:this.layer});return{type:`parquet`,outSpatialReference:a,geometryInfo:{geometry:o?{geometryType:t(this.layer.geometryType),spatialReference:this.layer.spatialReference.toJSON(),encoding:o.toJSON()}:null,displayOptimization:this.layer.displayOptimization},metadata:{spatialReference:this.layer.spatialReference.toJSON(),outSpatialReference:a,attributeSpatialReference:null,fieldsIndex:this.layer.fieldsIndex.toJSON(),featureIdInfo:{type:`object-id`,fieldName:this.layer.objectIdField},geometryType:i,hasZ:c,hasM:l,types:null,subtypes:null,timeInfo:null,typeIdField:null,subtypeField:null,globalIdField:null,timeReferenceUnknownClient:null,dateFieldsTimeZone:this.layer.dateFieldsTimeZone},queryMetadata:{supportsCacheHint:s.supportsCacheHint,maxRecordCount:s.maxRecordCount,tileMaxRecordCount:s.tileMaxRecordCount,supportsCompactGeometry:s.supportsCompactGeometry,supportsDefaultSpatialReference:s.supportsDefaultSpatialReference,supportsFormatPBF:s.supportsFormatPBF,supportsMaxRecordCountFactor:s.supportsMaxRecordCountFactor,supportsQuantization:s.supportsQuantization,supportsCentroidOnDegeneratedQuantizedGeometry:s.supportsCentroidOnDegeneratedQuantizedGeometry,supportsDegeneratedQuantizedGeometry:s.supportsDegeneratedQuantizedGeometry,supportsReturnExceededLimitGeometries:s.supportsReturnExceededLimitGeometries,lastEditDate:null}}}}export{s as ParquetLayerAdapter};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import has from"../../../../../core/has.js";import{destroyMaybe as e}from"../../../../../core/maybe.js";import{notDeepEqual as t}from"../../../../../core/object.js";import{ignoreAbortErrors as n,throwIfNotAbortError as r}from"../../../../../core/promiseUtils.js";import{OptimizedFeature as i}from"../../../../../layers/graphics/OptimizedFeature.js";import{QueryEngine as a}from"../../../../../layers/graphics/data/QueryEngine.js";import{FeatureStoreStatistics as o}from"../FeatureStoreStatistics.js";import{StreamMessenger as s}from"./StreamMessenger.js";import{UpdateStatus as c}from"./strategies/ALoadStrategy.js";import{FeatureDrillDownTileLoadStrategy as l}from"./strategies/FeatureDrillDownTileLoadStrategy.js";import{FeatureHybridTileLoadStrategy as u}from"./strategies/FeatureHybridTileLoadStrategy.js";import{FeaturePagedTileLoadStrategy as d}from"./strategies/FeaturePagedTileLoadStrategy.js";import{FeatureSnapshotLoadStrategy as f}from"./strategies/FeatureSnapshotLoadStrategy.js";import{ParquetSnapshotLoadStrategy as p}from"./strategies/ParquetSnapshotLoadStrategy.js";import{ParquetTileLoadStrategy as m}from"./strategies/ParquetTileLoadStrategy.js";import{StreamLoadStrategy as h}from"./strategies/StreamLoadStrategy.js";import{FeatureSourceChunkStore as g}from"./strategies/chunks/SourceChunkStore.js";import _ from"../support/FeatureFilterEvaluator.js";import{UpdateTracking2D as v}from"../../support/UpdateTracking2D.js";class y{constructor(e,t,n){this._aggregateAdapter=e,this._subscriptions=t,this._connection=n,this._updateTracking=new v({debugName:`FeatureSource`}),this._filters=[],this.store=new g}destroy(){this._strategy?.destroy(),this._streamMessenger?.destroy(),this._updateTracking?.destroy(),this.store.destroy()}get metadata(){return this._strategy.metadata}get streamMessenger(){return this._streamMessenger??this._initStreamMessenger(),this._streamMessenger}get statistics(){return o.from(this.store)}get updateTracking(){return this._updateTracking}get usedMemory(){return this.store.usedMemory}get queryEngine(){if(!this._queryEngine){if(!this.store||!this._strategy)return null;this._queryEngine=new a({featureStore:this.store,fieldsIndex:this.metadata.fieldsIndex,geometryType:this.metadata.geometryType,featureIdInfo:this.metadata.featureIdInfo,hasZ:this.metadata.hasZ,hasM:this.metadata.hasM,spatialReference:this.metadata.outSpatialReference,aggregateAdapter:this._aggregateAdapter,timeInfo:this.metadata.timeInfo,definitionExpression:this._strategy?.definitionExpression,availableFields:this._strategy?.availableFields})}return this._queryEngine}get isStream(){return this._schema.type===`stream`}get hasQueryDisplayFilter(){if(!this._schema)return!1;switch(this._schema.type){case`feature`:return this._schema.strategy.full.displayFilterInfo!=null;case`parquet`:case`stream`:return!1}}chunks(){return Array.from(this.store.chunks())}async applyCacheUpdate(){this.hasQueryDisplayFilter&&await this._updateTracking.addPromise(this._strategy.applyCacheUpdate())}cleanup(){return this.store.cleanup()}onSubscribe(e){if(this._connection.onEvent({type:`subscribe`,tile:e.tile.id}),!this._strategy)return;let t=this._strategy.load(e);t.then(()=>this._connection.onEvent({type:`loaded`,tile:e.tile.id})).catch(t=>this._connection.onEvent({type:`error`,tile:e.tile.id,error:t})),this._updateTracking.consumePromise(t)}onResume(e){this._updateTracking.consumePromise(n(this._strategy?.load(e)))}onUnsubscribe(e){this._connection.onEvent({type:`unsubscribe`,tile:e.tile.id}),this._strategy?.unload(e)}async applyOverride(e){await this._strategy?.applyOverride(e)}takeOverrideUpdate(){return this._strategy?.takeOverrideUpdate()}async update(n,r,i){let a=this._schema,o=this._getCachedObjectIds(this._filters),s=this._getCachedObjectIds(r);if(this._schema=n,this._filters=r,
|
|
2
|
+
import has from"../../../../../core/has.js";import{destroyMaybe as e}from"../../../../../core/maybe.js";import{notDeepEqual as t}from"../../../../../core/object.js";import{ignoreAbortErrors as n,throwIfNotAbortError as r}from"../../../../../core/promiseUtils.js";import{OptimizedFeature as i}from"../../../../../layers/graphics/OptimizedFeature.js";import{QueryEngine as a}from"../../../../../layers/graphics/data/QueryEngine.js";import{FeatureStoreStatistics as o}from"../FeatureStoreStatistics.js";import{StreamMessenger as s}from"./StreamMessenger.js";import{UpdateStatus as c}from"./strategies/ALoadStrategy.js";import{FeatureDrillDownTileLoadStrategy as l}from"./strategies/FeatureDrillDownTileLoadStrategy.js";import{FeatureHybridTileLoadStrategy as u}from"./strategies/FeatureHybridTileLoadStrategy.js";import{FeaturePagedTileLoadStrategy as d}from"./strategies/FeaturePagedTileLoadStrategy.js";import{FeatureSnapshotLoadStrategy as f}from"./strategies/FeatureSnapshotLoadStrategy.js";import{ParquetSnapshotLoadStrategy as p}from"./strategies/ParquetSnapshotLoadStrategy.js";import{ParquetTileLoadStrategy as m}from"./strategies/ParquetTileLoadStrategy.js";import{StreamLoadStrategy as h}from"./strategies/StreamLoadStrategy.js";import{FeatureSourceChunkStore as g}from"./strategies/chunks/SourceChunkStore.js";import _ from"../support/FeatureFilterEvaluator.js";import{UpdateTracking2D as v}from"../../support/UpdateTracking2D.js";class y{constructor(e,t,n){this._aggregateAdapter=e,this._subscriptions=t,this._connection=n,this._updateTracking=new v({debugName:`FeatureSource`}),this._filters=[],this.store=new g}destroy(){this._strategy?.destroy(),this._streamMessenger?.destroy(),this._updateTracking?.destroy(),this.store.destroy()}get metadata(){return this._strategy.metadata}get streamMessenger(){return this._streamMessenger??this._initStreamMessenger(),this._streamMessenger}get statistics(){return o.from(this.store)}get updateTracking(){return this._updateTracking}get usedMemory(){return this.store.usedMemory}get queryEngine(){if(!this._queryEngine){if(!this.store||!this._strategy)return null;this._queryEngine=new a({featureStore:this.store,fieldsIndex:this.metadata.fieldsIndex,geometryType:this.metadata.geometryType,featureIdInfo:this.metadata.featureIdInfo,hasZ:this.metadata.hasZ,hasM:this.metadata.hasM,spatialReference:this.metadata.outSpatialReference,aggregateAdapter:this._aggregateAdapter,timeInfo:this.metadata.timeInfo,definitionExpression:this._strategy?.definitionExpression,availableFields:this._strategy?.availableFields})}return this._queryEngine}get isStream(){return this._schema.type===`stream`}get hasQueryDisplayFilter(){if(!this._schema)return!1;switch(this._schema.type){case`feature`:return this._schema.strategy.full.displayFilterInfo!=null;case`parquet`:return this._schema.strategy.type===`xz`&&this._schema.strategy.full.displayFilterInfo!=null;case`stream`:return!1}}chunks(){return Array.from(this.store.chunks())}async applyCacheUpdate(){this.hasQueryDisplayFilter&&await this._updateTracking.addPromise(this._strategy.applyCacheUpdate())}cleanup(){return this.store.cleanup()}onSubscribe(e){if(this._connection.onEvent({type:`subscribe`,tile:e.tile.id}),!this._strategy)return;let t=this._strategy.load(e);t.then(()=>this._connection.onEvent({type:`loaded`,tile:e.tile.id})).catch(t=>this._connection.onEvent({type:`error`,tile:e.tile.id,error:t})),this._updateTracking.consumePromise(t)}onResume(e){this._updateTracking.consumePromise(n(this._strategy?.load(e)))}onUnsubscribe(e){this._connection.onEvent({type:`unsubscribe`,tile:e.tile.id}),this._strategy?.unload(e)}async applyOverride(e){await this._strategy?.applyOverride(e)}takeOverrideUpdate(){return this._strategy?.takeOverrideUpdate()}async update(n,r,i){let a=this._schema,o=this._getCachedObjectIds(this._filters),s=this._getCachedObjectIds(r);if(this._schema=n,this._filters=r,a&&a.type!==n.type)throw Error(`InternalError: Reconfiguring source types is not supported.`);let l=new c;if(!a||t(a.service,n.service)||a.strategy.type!==n.strategy.type||t(n.strategy.full,a.strategy.full)||!await this._strategy.tryUpdate(l,n.strategy.partial)){await this._updateStrategyType(this._schema.service,n,i);let t=null;return`postQueryFilter`in this._schema.strategy.full&&this._schema.strategy.full.postQueryFilter&&(t=await _.create({geometryType:this.metadata.geometryType,hasM:!1,hasZ:!1,timeInfo:this.metadata.timeInfo,fieldsIndex:this.metadata.fieldsIndex,spatialReference:this.metadata.outSpatialReference,filterJSON:this._schema.strategy.full.postQueryFilter})),await this.store.update({metadata:this.metadata,definitionExpression:this._schema.strategy.full.definitionExpression,postQueryFilter:t}),this._queryEngine=e(this._queryEngine),!0}return this._updateFilterCache(o,s),this._queryEngine=e(this._queryEngine),l.requiresInvalidation}unsafeSetQueryHistoricMoment(e){this._schema.type===`feature`&&(this._schema.strategy.full.historicMoment=e,this._strategy.unsafeSetQueryHistoricMoment(new Date(e)))}_initStreamMessenger(){this._streamMessenger??=new s(this._connection)}async normalizeOverrides(e){let t={historicMoment:e.historicMoment,commands:{updateWeak:e.commands.updateWeak.map(i.fromJSON),removeWeak:e.commands.removeWeak,update:e.commands.update.map(i.fromJSON),remove:e.commands.remove,release:e.commands.release}},n=e.commands.updateByIdWeak,r=await this._queryOptimizedFeatures(n);if(r.length!==n.length){let e=new Set(r.map(e=>e.objectId));for(let r of n)e.has(r)||t.commands.removeWeak.push(r)}return t.commands.updateWeak.push(...r),t}async _queryOptimizedFeatures(e){if(e.length===0)return[];let t=[],n=(await this._strategy.queryByObjectId(e,[`*`])).getCursor();for(;n.next();)t.push(n.readOptimizedFeatureWorldSpace());return t}getObjectIdsFromGlobalIds(e){let t=this.metadata.globalIdField;if(t==null)throw Error(`InternalError: Recieved an edit with globalIds, but not supported by the service`);let n=this.store.mapObjectIdsFromGlobalIds(e,t).values();return Array.from(n)}_getCachedObjectIds(e){let t=new Set;for(let{ensureCached:n,filters:r}of e)if(n)for(let e of r)for(let n of e.objectIds??[])t.add(n);return t}_updateFilterCache(e,t){if(!this.hasQueryDisplayFilter)return;let n=new Set,r=new Set;for(let r of t)e.has(r)||n.add(r);for(let n of e)t.has(n)||r.add(n);this._strategy.prepareCacheUpdate(n,r)}async _updateStrategyType(e,t,n){let i=this._createStrategy(e,t);this._connection.onEvent({type:`updateStrategyStart`,about:i.about});let a=!!this._strategy;this.store.clear(),this._strategy?.destroy(),this._strategy=i,has(`esri-2d-update-debug`)&&console.debug(`Version[${n}] FeatureSource.updateStrategy`,{strategy:i});let o=Array.from(this._subscriptions.values());if(!o.length){this._connection.onEvent({type:`updateStrategyEnd`});return}let s=Promise.all(o.map(e=>this._strategy.load(e).then(()=>this._connection.onEvent({type:`loaded`,tile:e.tile.id})).catch(t=>this._connection.onEvent({type:`error`,tile:e.tile.id,error:t}))));this._updateTracking.consumePromise(s),this._strategy.prepareCacheUpdate(this._getCachedObjectIds(this._filters));try{a&&await s}catch(e){r(e)}this._connection.onEvent({type:`updateStrategyEnd`}),has(`esri-2d-update-debug`)&&console.debug(`Version[${n}] FeatureSource.updateStrategyEnd`,{strategy:i})}_createStrategy(e,t){let n={connection:this._connection,store:this.store};switch(t.type){case`feature`:return this._createFeatureLoadStrategy(e,t.strategy,n);case`parquet`:return this._createParquetLoadStrategy(e,t.strategy,n);case`stream`:return this._createStreamLoadStrategy(e,t.strategy,n)}}_createFeatureLoadStrategy(e,t,n){switch(t.type){case`drill-down`:return new l(e,t,n);case`hybrid-tile`:return new u(e,t,n);case`paged-tile`:return new d(e,t,n);case`snapshot`:return new f(e,t,n)}}_createParquetLoadStrategy(e,t,n){switch(t.type){case`xz`:return new m(e,t,n,this._connection);case`snapshot`:return new p(e,t,n,this._connection)}}_createStreamLoadStrategy(e,t,n){let r=new h(e,t,n);return this.streamMessenger.strategy=r,r}}export{y as FeatureSource};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import has from"../../../../../core/has.js";import{sqlAnd as e}from"../../../../../core/sql.js";import t from"../../../../../geometry/SpatialReference.js";import{getClauseForScaleRange as n}from"../../../../../layers/support/displayFilterUtils.js";import r from"../../../../../rest/support/Query.js";import i from"../../../../../time/TimeExtent.js";function a(e){switch(e.type){case`object-id`:return`${e.fieldName} ASC`;case`unique-id-simple`:return`${e.fieldName} ASC`;case`unique-id-composite`:return`${e.fieldNames.join(`,`)} ASC`}}function o(e,n,r){let o=a(r.featureIdInfo);return{returnCentroid:r.serviceGeometryType===`esriGeometryPolygon`&&!e.queryMetadata.supportsCentroidOnDegeneratedQuantizedGeometry&&!e.queryMetadata.supportsDegeneratedQuantizedGeometry,returnGeometry:!0,returnZ:n.returnZ,returnM:n.returnM,timeReferenceUnknownClient:r.timeReferenceUnknownClient??void 0,outSpatialReference:t.fromJSON(e.outSpatialReference),orderByFields:e.type===`memory`?[]:[o],where:n.definitionExpression??`1=1`,outFields:n.availableFields,multipatchOption:r.serviceGeometryType===`esriGeometryMultiPatch`?`xyFootprint`:null,gdbVersion:n.gdbVersion,historicMoment:n.historicMoment?new Date(n.historicMoment):null,timeExtent:n.timeExtent?i.fromJSON(n.timeExtent):null}}class s{static create(e,t,n){let r=t.queryScaleRanges,i=t.displayFilterInfo;return new s(o(e,t,n),i,r,n.subtypeField,t.customParameters,n.geometryType,e.queryMetadata)}constructor(e,t,n,r,i,a,o){this._queryParams=e,this._displayFilter=t,this._queryScaleRanges=n,this._subtypeField=r,this._customParameters=i,this._geometryType=a,this._queryMetadata=o}getPageSize(e){if(this._queryMetadata==null)throw Error(`InternalError: Service does not support paged queries`);let t=this._queryMetadata.supportsMaxRecordCountFactor?4:null,n=((e?this._queryMetadata.tileMaxRecordCount:this._queryMetadata.maxRecordCount)??this._queryMetadata.maxRecordCount??2e3)*(t??1),r=has(`featurelayer-query-max-page-size`)??8e3;return Math.min(r,n)}get objectIdsQueryPageSize(){return this._queryMetadata?.maxRecordCount??2e3}updateHistoricMoment(e){this._queryParams.historicMoment=e}updateFields(e){this._queryParams.outFields=e}createPatchFieldsQuery(e,t,n){if(!t.getSize())return null;let r=e.clone();if(this._queryParams.outFields[0]===`*`){if((r.outFields??[])[0]===`*`)return null;r.outFields=this._queryParams.outFields}else{let e=new Set(this._queryParams.outFields),n=[];for(let r of e)t.hasField(r)||n.push(r);if(n.length===0)return null;r.outFields=n}r.returnGeometry=!1,r.returnCentroid=!1,r.quantizationParameters=null,r.cacheHint=this._queryMetadata?.supportsCacheHint?!0:void 0;let i={inner:r,customParameters:this._customParameters};if(has(`esri-tiles-debug`)&&n!=null){let e=n.chunkId.toString().replaceAll(`/`,`.`);i.customParameters=i.customParameters?{...i.customParameters,chunkId:e}:{chunkId:e}}return i}createQuery(e={}){if(!this._queryParams)throw Error(`InternalError: queryInfo should be defined`);return{inner:new r({...this._queryParams,...e}),customParameters:this._customParameters}}createTileQuery(t,r){if(this._queryMetadata==null)throw Error(`InternalError: Service does not support tile queries`);let i=this.createQuery(r),a=i.inner;if(this._queryScaleRanges?.length){let n=this._queryScaleRanges.filter(e=>(!e.minScale||e.minScale>=t.maxScale)&&(!e.maxScale||e.maxScale<=t.minScale)).map(e=>e.subtypeCode);if(!n.length)return null;let r=`${this._subtypeField} IN (${n})`;a.where=e(a.where,r)}if(this._displayFilter&&(a.where=e(a.where,n(this._displayFilter,t.minScale,t.maxScale))),a.quantizationParameters=r.quantizationParameters??t.getQuantizationParameters(),a.resultType=`tile`,a.geometry=t.hydratedExtent,this._queryMetadata.supportsQuantization?this._geometryType===`esriGeometryPolyline`&&(a.maxAllowableOffset=t.resolution*has(`feature-polyline-generalization-factor`)):(this._geometryType===`esriGeometryPolyline`||this._geometryType===`esriGeometryPolygon`)&&(a.maxAllowableOffset=t.resolution,this._geometryType===`esriGeometryPolyline`&&(a.maxAllowableOffset*=has(`feature-polyline-generalization-factor`))),a.defaultSpatialReferenceEnabled=this._queryMetadata.supportsDefaultSpatialReference,a.compactGeometryEnabled=this._queryMetadata.supportsCompactGeometry,this._queryMetadata.supportsMaxRecordCountFactor&&(a.maxRecordCountFactor=4),has(`esri-tiles-debug`)){let e=t.id.replaceAll(`/`,`.`);i.customParameters=i.customParameters?{...i.customParameters,tileId:e}:{tileId:e}}return i}createPagedTileQuery(e,t){let n=this.getPageSize(!0);return this.createTileQuery(e,{start:n*t,num:n,returnExceededLimitFeatures:!0})}createPagedQuery(e,t){let n=this.getPageSize(!1);return this.createQuery({start:n*e,num:n,returnExceededLimitFeatures:!0,maxRecordCountFactor:4,quantizationParameters:t,cacheHint:this._queryMetadata?.supportsCacheHint?!0:void 0})}createObjectIdsQuery(e){return this.createQuery({objectIds:e,outFields:[`*`]})}}export{s as FeatureSourceQueryInfo};
|
|
2
|
+
import has from"../../../../../core/has.js";import{sqlAnd as e}from"../../../../../core/sql.js";import t from"../../../../../geometry/SpatialReference.js";import{getClauseForScaleRange as n}from"../../../../../layers/support/displayFilterUtils.js";import r from"../../../../../rest/support/Query.js";import i from"../../../../../time/TimeExtent.js";function a(e){switch(e.type){case`object-id`:return`${e.fieldName} ASC`;case`unique-id-simple`:return`${e.fieldName} ASC`;case`unique-id-composite`:return`${e.fieldNames.join(`,`)} ASC`}}function o(e,n,r){let o=a(r.featureIdInfo);return{returnCentroid:r.serviceGeometryType===`esriGeometryPolygon`&&!e.queryMetadata.supportsCentroidOnDegeneratedQuantizedGeometry&&!e.queryMetadata.supportsDegeneratedQuantizedGeometry,returnGeometry:!0,returnZ:n.returnZ,returnM:n.returnM,timeReferenceUnknownClient:r.timeReferenceUnknownClient??void 0,outSpatialReference:t.fromJSON(e.outSpatialReference),orderByFields:e.type===`memory`?[]:[o],where:n.definitionExpression??`1=1`,outFields:n.availableFields,multipatchOption:r.serviceGeometryType===`esriGeometryMultiPatch`?`xyFootprint`:null,gdbVersion:n.gdbVersion,historicMoment:n.historicMoment?new Date(n.historicMoment):null,timeExtent:n.timeExtent?i.fromJSON(n.timeExtent):null}}class s{static create(e,t,n){let r=t.queryScaleRanges,i=t.displayFilterInfo;return new s(o(e,t,n),i,r,n.subtypeField,t.customParameters,n.geometryType,e.queryMetadata)}static createParquet(e,t,n){return new s({returnGeometry:!0,returnZ:t.returnZ,returnM:t.returnM,outSpatialReference:n.outSpatialReference,where:t.definitionExpression??`1=1`,outFields:t.availableFields},t.displayFilterInfo,t.queryScaleRanges,n.subtypeField,t.customParameters,n.geometryType,e.queryMetadata)}constructor(e,t,n,r,i,a,o){this._queryParams=e,this._displayFilter=t,this._queryScaleRanges=n,this._subtypeField=r,this._customParameters=i,this._geometryType=a,this._queryMetadata=o}getPageSize(e){if(this._queryMetadata==null)throw Error(`InternalError: Service does not support paged queries`);let t=this._queryMetadata.supportsMaxRecordCountFactor?4:null,n=((e?this._queryMetadata.tileMaxRecordCount:this._queryMetadata.maxRecordCount)??this._queryMetadata.maxRecordCount??2e3)*(t??1),r=has(`featurelayer-query-max-page-size`)??8e3;return Math.min(r,n)}get objectIdsQueryPageSize(){return this._queryMetadata?.maxRecordCount??2e3}updateHistoricMoment(e){this._queryParams.historicMoment=e}updateFields(e){this._queryParams.outFields=e}createPatchFieldsQuery(e,t,n){if(!t.getSize())return null;let r=e.clone();if(this._queryParams.outFields[0]===`*`){if((r.outFields??[])[0]===`*`)return null;r.outFields=this._queryParams.outFields}else{let e=new Set(this._queryParams.outFields),n=[];for(let r of e)t.hasField(r)||n.push(r);if(n.length===0)return null;r.outFields=n}r.returnGeometry=!1,r.returnCentroid=!1,r.quantizationParameters=null,r.cacheHint=this._queryMetadata?.supportsCacheHint?!0:void 0;let i={inner:r,customParameters:this._customParameters};if(has(`esri-tiles-debug`)&&n!=null){let e=n.chunkId.toString().replaceAll(`/`,`.`);i.customParameters=i.customParameters?{...i.customParameters,chunkId:e}:{chunkId:e}}return i}createQuery(e={}){if(!this._queryParams)throw Error(`InternalError: queryInfo should be defined`);return{inner:new r({...this._queryParams,...e}),customParameters:this._customParameters}}createTileQuery(t,r){if(this._queryMetadata==null)throw Error(`InternalError: Service does not support tile queries`);let i=this.createQuery(r),a=i.inner;if(this._queryScaleRanges?.length){let n=this._queryScaleRanges.filter(e=>(!e.minScale||e.minScale>=t.maxScale)&&(!e.maxScale||e.maxScale<=t.minScale)).map(e=>e.subtypeCode);if(!n.length)return null;let r=`${this._subtypeField} IN (${n})`;a.where=e(a.where,r)}if(this._displayFilter&&(a.where=e(a.where,n(this._displayFilter,t.minScale,t.maxScale))),a.quantizationParameters=r.quantizationParameters??t.getQuantizationParameters(),a.resultType=`tile`,a.geometry=t.hydratedExtent,this._queryMetadata.supportsQuantization?this._geometryType===`esriGeometryPolyline`&&(a.maxAllowableOffset=t.resolution*has(`feature-polyline-generalization-factor`)):(this._geometryType===`esriGeometryPolyline`||this._geometryType===`esriGeometryPolygon`)&&(a.maxAllowableOffset=t.resolution,this._geometryType===`esriGeometryPolyline`&&(a.maxAllowableOffset*=has(`feature-polyline-generalization-factor`))),a.defaultSpatialReferenceEnabled=this._queryMetadata.supportsDefaultSpatialReference,a.compactGeometryEnabled=this._queryMetadata.supportsCompactGeometry,this._queryMetadata.supportsMaxRecordCountFactor&&(a.maxRecordCountFactor=4),has(`esri-tiles-debug`)){let e=t.id.replaceAll(`/`,`.`);i.customParameters=i.customParameters?{...i.customParameters,tileId:e}:{tileId:e}}return i}createPagedTileQuery(e,t){let n=this.getPageSize(!0);return this.createTileQuery(e,{start:n*t,num:n,returnExceededLimitFeatures:!0})}createPagedQuery(e,t){let n=this.getPageSize(!1);return this.createQuery({start:n*e,num:n,returnExceededLimitFeatures:!0,maxRecordCountFactor:4,quantizationParameters:t,cacheHint:this._queryMetadata?.supportsCacheHint?!0:void 0})}createObjectIdsQuery(e){return this.createQuery({objectIds:e,outFields:[`*`]})}}export{s as FeatureSourceQueryInfo};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{handlesGroup as e}from"../../../../../../core/handleUtils.js";import"../../../../../../core/has.js";import{getOrCreateMapValue as t}from"../../../../../../core/MapUtils.js";import{notDeepEqual as n}from"../../../../../../core/object.js";import{throwIfAborted as r,onAbort as i}from"../../../../../../core/promiseUtils.js";import{QueueProcessor as a}from"../../../../../../core/QueueProcessor.js";import{difference as o}from"../../../../../../core/SetUtils.js";import{openWithPorts as s}from"../../../../../../core/workers/workers.js";import{isFileProviderChangedError as c}from"../../../../../../layers/graphics/sources/parquet/fileProviderChangedError.js";import{loadParquetModule as l}from"../../../../../../libs/librust-parquet/loadParquetModule.js";import{
|
|
2
|
+
import{handlesGroup as e}from"../../../../../../core/handleUtils.js";import"../../../../../../core/has.js";import{getOrCreateMapValue as t}from"../../../../../../core/MapUtils.js";import{notDeepEqual as n}from"../../../../../../core/object.js";import{throwIfAborted as r,onAbort as i}from"../../../../../../core/promiseUtils.js";import{QueueProcessor as a}from"../../../../../../core/QueueProcessor.js";import{difference as o}from"../../../../../../core/SetUtils.js";import{openWithPorts as s}from"../../../../../../core/workers/workers.js";import{isFileProviderChangedError as c}from"../../../../../../layers/graphics/sources/parquet/fileProviderChangedError.js";import{loadParquetModule as l}from"../../../../../../libs/librust-parquet/loadParquetModule.js";import{FeatureCache as u}from"../FeatureCache.js";import{FeatureSourceQueryInfo as d}from"../FeatureSourceQueryInfo.js";import{ALoadStrategy as f}from"./ALoadStrategy.js";import{fetchQueueConcurrency as p}from"./constants.js";import{ParquetSourceChunk as m}from"./chunks/ParquetSourceChunk.js";import{FeatureSetReaderJSON as h}from"../../support/FeatureSetReaderJSON.js";import{FeatureSetReaderParquet as g}from"../../support/FeatureSetReaderParquet.js";class _{constructor(t,n){this.subscription=t,this.chunks=[],this.ids=[],this._controller=new AbortController,this._handles=e([i(t.signal,()=>this._controller.abort()),i(n,()=>this._controller.abort())])}destroy(){this._controller.abort(),this._handles.remove()}get options(){return{signal:this._controller.signal}}addBinaryData(e){this.chunks.push(e)}addSourceChunkId(e){this.ids.push(e)}}class v extends f{constructor(e,t,n,r){if(super(e.metadata,t,n),this._service=e,this._loadStates=new Map,this._queue=new a({concurrency:p,process:e=>this._loadTile(e)}),!e.geometryInfo.displayOptimization)throw Error(`InternalError: ParquetTileLoadStrategy only supports XZ-enabled parquet files`);this._loaded=this._load(r),this._queryInfo=d.createParquet(e,{...t.full,...t.partial,gdbVersion:null,historicMoment:null,queryScaleRanges:null,timeExtent:null},this.metadata),this._featureCache=new u(this.store,this._queryInfo,this._options,this._fetchCacheFeatures.bind(this))}destroy(){super.destroy(),this._loaded.finally(()=>{this._client.close(),this._client=null;for(let e of this._ports)e.close()}).catch(()=>{})}get about(){return{willQueryAllFeatures:!1,willQueryFullResolutionGeometry:!1}}get availableFields(){return this._schema.partial.availableFields}get definitionExpression(){return this._schema.full.definitionExpression}async tryUpdate(e,t){await this._loaded;let r=!0;return n(this.availableFields,t.availableFields)&&await this._updateFields(t.availableFields),this._schema.partial.dataSourceHash!==t.dataSourceHash&&(r=!1),this._schema.partial=t,r}async load(e){try{return await this._loaded,t(this._loadStates,e.key.id,()=>new _(e,this._options)),await this._queue.push(e)}catch(e){if(!y(e))throw e}}prepareCacheUpdate(e,t){this._featureCache.prepareCacheUpdate(e,t)}applyCacheUpdate(){return this._featureCache.applyCacheUpdate()}unload(e){let t=this._loadStates.get(e.tile.id);if(t!=null){for(let e of t.ids)this.store.removeById(e);t.destroy(),this._loadStates.delete(e.tile.id)}}async _load(e){this._ports=await e.layerView.openMemoryPorts(),this._client=await s(this._ports,{maxNumberOfConcurrentJobs:20}),this._proxy=this._client.createInvokeProxy(),this._indexMap=await this._proxy.getIndexMap()}_onOverride(){}async _updateFields(e){this._queryInfo.updateFields(e);let t=new Set(e),n=o(t,new Set(this.availableFields));if(this._service.metadata.fieldsIndex!=null&&n.size){let e=[];for(let t of this.store.insertedChunks())t instanceof m&&e.push(t.updateFields(this._proxy,Array.from(n),this._options));await Promise.all(e)}}async _loadTile(e){r(e.signal);let t=e.tile,n=this._loadStates.get(t.id);await this._downloadTileData(e),r(n.options);let i=new m(this.metadata,null,t,null,0,!0);n.addSourceChunkId(i.chunkId),this.store.insert(i)}async _downloadTileData(e){let t=e.tile,n=this._loadStates.get(t.id),{signal:i}=n.options,a=await l();r(i);let o=this._queryInfo.createTileQuery(t,{})?.inner;if(!o)return;let s=await this._proxy.queryStream({type:`tile`,extent:t.extent,transform:t.normalizedTransform,outFields:o.outFields,returnGeometry:o.returnGeometry,returnZ:!!o.returnZ,returnM:!!o.returnM,outSpatialReference:o.outSpatialReference.toJSON(),resolution:t.resolution,where:o.where},{signal:i}),c=0;for(;;){r(i);let e=await this._proxy.getStreamNext(s,{signal:i});if(r(i),e==null)break;let{fileId:o,buffer:l}=e,u=a.ParquetChunk.deserialize(new Uint8Array(l)),d=new g(this.metadata,this._indexMap,u,o,t.transform),f=new m(this.metadata,d,t,o,c++,!1);n.addBinaryData({data:u,fileId:o}),n.addSourceChunkId(f.chunkId),this.store.insert(f)}}async _fetchCacheFeatures(e,t){await this._loaded,r(t);let n=await this._proxy.queryFeatures(e.inner.toJSON(),t??void 0);return r(t),h.fromFeatureSet(n,this.metadata)}}function y(e){return c(e)||b(e)}function b(e){return typeof e==`object`&&!!e&&`message`in e&&e.message===`Protocol Violation: transport error`}export{v as ParquetTileLoadStrategy};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{createTask as n}from"../../../../core/asyncUtils.js";import{makeHandle as r}from"../../../../core/handleUtils.js";import"../../../../core/has.js";import{clamp as i,roundToNearest as a,roundUpToNearest as o}from"../../../../core/mathUtils.js";import{removeMaybe as s,abortMaybe as c}from"../../../../core/maybe.js";import{throwIfAborted as l}from"../../../../core/promiseUtils.js";import{initial as u}from"../../../../core/reactiveUtils.js";import{createScreenPoint as d}from"../../../../core/screenUtils.js";import{throttle as f}from"../../../../core/throttle.js";import{convertTime as p}from"../../../../core/timeUtils.js";import{property as m,subclass as h}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as g}from"../../../../core/support/UpdatingHandles.js";import{formatDuration as _}from"../../../../intl/duration.js";import{onLocaleChange as v,prefersRTL as y}from"../../../../intl/locale.js";import{fetchMessageBundle as b}from"../../../../intl/messages.js";import{substitute as x}from"../../../../intl/substitute.js";let S=class extends t{constructor(e){super(e),this.throttleDelay=N,this._tooltipElement=C(),this._tooltipContentElement=w(),this._updatingHandles=new g,this._messagesTask=null,this._screenPoint=null,this._shadowDurationTask=null,this.shadowDuration=null,this._throttledUpdateShadowDuration=null,this._onPointerMove=({x:e,y:t})=>{let n=d(e,t);this._screenPoint=n,this._throttledUpdateShadowDuration?.(this.view,n)},this._updateShadowDuration=(e,t)=>{this._abortShadowDurationTask(),this._shadowDurationTask=n(async n=>{let{results:r,ground:i}=await e.hitTest(t);if(l(n),r.length===0&&!i.mapPoint){this.shadowDuration=null;return}let a=await this.getDuration(t,n);l(n),this.shadowDuration=a<0?null:a})}}initialize(){this._tooltipElement.appendChild(this._tooltipContentElement);let e=()=>{this._messagesTask?.abort(),this._messagesTask=n(()=>b(`esri/views/3d/analysis/ShadowCast/t9n/ShadowCastAnalysis`))};e(),this.addHandles([v(e),this._updatingHandles.add(()=>({enabled:this.isVisible(),surface:this.view.surface}),({enabled:e,surface:t})=>{e&&t?(t.appendChild(this._tooltipElement),this._startTracking(this.view)):(this.removeHandles(j),this._tooltipElement.remove())},u),this._updatingHandles.add(()=>this._styles,e=>{Object.assign(this._tooltipElement.style,e)},u),this._updatingHandles.add(()=>this._formattedText,e=>{this._tooltipContentElement.innerText=e},u),this._updatingHandles.add(()=>this.throttleDelay,e=>{this._throttledUpdateShadowDuration=f(this._updateShadowDuration,e)},u),r(()=>{this._throttledUpdateShadowDuration=s(this._throttledUpdateShadowDuration)})])}destroy(){this._updatingHandles.destroy(),this._tooltipElement.remove()}get updating(){return this._updatingHandles.updating||this._shadowDurationTask!=null&&!this._shadowDurationTask?.finished||this._messagesTask!=null&&!this._messagesTask?.finished||this._throttledUpdateShadowDuration?.hasPendingUpdates()===!0}get _formattedText(){let e=this._messagesTask?.value,t=this.shadowDuration;return e==null||t==null?``:this.getMode()===`total-duration`&&this.getTotalDurationMode()===`hourly`?this._formatHourlyText(e,t):this._formatExactText(e,t)}_formatExactText(e,t){return x(this.getVisualizeSunlight()?e.sunlightDuration:e.shadowDuration,{duration:D(A(t))})}_formatHourlyText(e,t){let n=this.getTotalDuration();if(n<=0)return this._formatExactText(e,0);let r=this.getVisualizeSunlight(),a=i(t,0,n);if(a===0&&this.getShowsSeparateZeroBucketInHourlyMode())return x(r?e.sunlightDuration:e.shadowDuration,{duration:D(0)});let o=k(a,n),s=O(o,Math.min(n,o+I));if(o===0){let t=r?e.sunlightDurationLessThan:e.shadowDurationLessThan;return x(t,{duration:s})}let c=r?e.sunlightDurationRange:e.shadowDurationRange;return x(c,{minDuration:D(o),maxDuration:s})}get _styles(){let e=this._screenPoint;return e&&this._formattedText?{display:`block`,transform:`translate(${e.x}px, ${e.y}px)`}:{display:`none`}}get testData(){}_startTracking(e){if(this.hasHandles(j))return;let t=t=>{this.hasHandles(M)||(t&&this._onPointerMove(t),this.addHandles(e.on(`pointer-move`,this._onPointerMove),M))},n=()=>{this.removeHandles(M),this._abortShadowDurationTask(),this._screenPoint=null,this.shadowDuration=null};this.addHandles([e.on(`pointer-enter`,t),e.on(`pointer-leave`,n),e.on(`pointer-down`,n),e.on(`pointer-up`,t),e.on(`pointer-drag`,e=>{e.action===`end`?t(e):n()}),e.on(`click`,t=>{let n=d(t.x,t.y);this._screenPoint=n,this._updateShadowDuration(e,n)}),r(()=>this._abortShadowDurationTask())],j),t()}_abortShadowDurationTask(){this._shadowDurationTask=c(this._shadowDurationTask)}};e([m()],S.prototype,`view`,void 0),e([m()],S.prototype,`isVisible`,void 0),e([m()],S.prototype,`getDuration`,void 0),e([m()],S.prototype,`getMode`,void 0),e([m()],S.prototype,`getShowsSeparateZeroBucketInHourlyMode`,void 0),e([m()],S.prototype,`getTotalDurationMode`,void 0),e([m()],S.prototype,`getTotalDuration`,void 0),e([m()],S.prototype,`throttleDelay`,void 0),e([m()],S.prototype,`updating`,null),e([m()],S.prototype,`getVisualizeSunlight`,void 0),e([m()],S.prototype,`_messagesTask`,void 0),e([m()],S.prototype,`_screenPoint`,void 0),e([m()],S.prototype,`_shadowDurationTask`,void 0),e([m()],S.prototype,`shadowDuration`,void 0),e([m()],S.prototype,`_throttledUpdateShadowDuration`,void 0),e([m()],S.prototype,`_formattedText`,null),e([m()],S.prototype,`_styles`,null),S=e([h(`esri.views.3d.analysis.ShadowCast.ShadowCastTooltip`)],S);function C(){let e=E(document.createElement(`div`),{position:`absolute`,top:`0`,left:`0`,pointerEvents:`none`});return e.style.setProperty(`--tooltip-arrow-size`,`6px`),e.style.setProperty(`--tooltip-background`,`var(--calcite-color-
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{createTask as n}from"../../../../core/asyncUtils.js";import{makeHandle as r}from"../../../../core/handleUtils.js";import"../../../../core/has.js";import{clamp as i,roundToNearest as a,roundUpToNearest as o}from"../../../../core/mathUtils.js";import{removeMaybe as s,abortMaybe as c}from"../../../../core/maybe.js";import{throwIfAborted as l}from"../../../../core/promiseUtils.js";import{initial as u}from"../../../../core/reactiveUtils.js";import{createScreenPoint as d}from"../../../../core/screenUtils.js";import{throttle as f}from"../../../../core/throttle.js";import{convertTime as p}from"../../../../core/timeUtils.js";import{property as m,subclass as h}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as g}from"../../../../core/support/UpdatingHandles.js";import{formatDuration as _}from"../../../../intl/duration.js";import{onLocaleChange as v,prefersRTL as y}from"../../../../intl/locale.js";import{fetchMessageBundle as b}from"../../../../intl/messages.js";import{substitute as x}from"../../../../intl/substitute.js";let S=class extends t{constructor(e){super(e),this.throttleDelay=N,this._tooltipElement=C(),this._tooltipContentElement=w(),this._updatingHandles=new g,this._messagesTask=null,this._screenPoint=null,this._shadowDurationTask=null,this.shadowDuration=null,this._throttledUpdateShadowDuration=null,this._onPointerMove=({x:e,y:t})=>{let n=d(e,t);this._screenPoint=n,this._throttledUpdateShadowDuration?.(this.view,n)},this._updateShadowDuration=(e,t)=>{this._abortShadowDurationTask(),this._shadowDurationTask=n(async n=>{let{results:r,ground:i}=await e.hitTest(t);if(l(n),r.length===0&&!i.mapPoint){this.shadowDuration=null;return}let a=await this.getDuration(t,n);l(n),this.shadowDuration=a<0?null:a})}}initialize(){this._tooltipElement.appendChild(this._tooltipContentElement);let e=()=>{this._messagesTask?.abort(),this._messagesTask=n(()=>b(`esri/views/3d/analysis/ShadowCast/t9n/ShadowCastAnalysis`))};e(),this.addHandles([v(e),this._updatingHandles.add(()=>({enabled:this.isVisible(),surface:this.view.surface}),({enabled:e,surface:t})=>{e&&t?(t.appendChild(this._tooltipElement),this._startTracking(this.view)):(this.removeHandles(j),this._tooltipElement.remove())},u),this._updatingHandles.add(()=>this._styles,e=>{Object.assign(this._tooltipElement.style,e)},u),this._updatingHandles.add(()=>this._formattedText,e=>{this._tooltipContentElement.innerText=e},u),this._updatingHandles.add(()=>this.throttleDelay,e=>{this._throttledUpdateShadowDuration=f(this._updateShadowDuration,e)},u),r(()=>{this._throttledUpdateShadowDuration=s(this._throttledUpdateShadowDuration)})])}destroy(){this._updatingHandles.destroy(),this._tooltipElement.remove()}get updating(){return this._updatingHandles.updating||this._shadowDurationTask!=null&&!this._shadowDurationTask?.finished||this._messagesTask!=null&&!this._messagesTask?.finished||this._throttledUpdateShadowDuration?.hasPendingUpdates()===!0}get _formattedText(){let e=this._messagesTask?.value,t=this.shadowDuration;return e==null||t==null?``:this.getMode()===`total-duration`&&this.getTotalDurationMode()===`hourly`?this._formatHourlyText(e,t):this._formatExactText(e,t)}_formatExactText(e,t){return x(this.getVisualizeSunlight()?e.sunlightDuration:e.shadowDuration,{duration:D(A(t))})}_formatHourlyText(e,t){let n=this.getTotalDuration();if(n<=0)return this._formatExactText(e,0);let r=this.getVisualizeSunlight(),a=i(t,0,n);if(a===0&&this.getShowsSeparateZeroBucketInHourlyMode())return x(r?e.sunlightDuration:e.shadowDuration,{duration:D(0)});let o=k(a,n),s=O(o,Math.min(n,o+I));if(o===0){let t=r?e.sunlightDurationLessThan:e.shadowDurationLessThan;return x(t,{duration:s})}let c=r?e.sunlightDurationRange:e.shadowDurationRange;return x(c,{minDuration:D(o),maxDuration:s})}get _styles(){let e=this._screenPoint;return e&&this._formattedText?{display:`block`,transform:`translate(${e.x}px, ${e.y}px)`}:{display:`none`}}get testData(){}_startTracking(e){if(this.hasHandles(j))return;let t=t=>{this.hasHandles(M)||(t&&this._onPointerMove(t),this.addHandles(e.on(`pointer-move`,this._onPointerMove),M))},n=()=>{this.removeHandles(M),this._abortShadowDurationTask(),this._screenPoint=null,this.shadowDuration=null};this.addHandles([e.on(`pointer-enter`,t),e.on(`pointer-leave`,n),e.on(`pointer-down`,n),e.on(`pointer-up`,t),e.on(`pointer-drag`,e=>{e.action===`end`?t(e):n()}),e.on(`click`,t=>{let n=d(t.x,t.y);this._screenPoint=n,this._updateShadowDuration(e,n)}),r(()=>this._abortShadowDurationTask())],j),t()}_abortShadowDurationTask(){this._shadowDurationTask=c(this._shadowDurationTask)}};e([m()],S.prototype,`view`,void 0),e([m()],S.prototype,`isVisible`,void 0),e([m()],S.prototype,`getDuration`,void 0),e([m()],S.prototype,`getMode`,void 0),e([m()],S.prototype,`getShowsSeparateZeroBucketInHourlyMode`,void 0),e([m()],S.prototype,`getTotalDurationMode`,void 0),e([m()],S.prototype,`getTotalDuration`,void 0),e([m()],S.prototype,`throttleDelay`,void 0),e([m()],S.prototype,`updating`,null),e([m()],S.prototype,`getVisualizeSunlight`,void 0),e([m()],S.prototype,`_messagesTask`,void 0),e([m()],S.prototype,`_screenPoint`,void 0),e([m()],S.prototype,`_shadowDurationTask`,void 0),e([m()],S.prototype,`shadowDuration`,void 0),e([m()],S.prototype,`_throttledUpdateShadowDuration`,void 0),e([m()],S.prototype,`_formattedText`,null),e([m()],S.prototype,`_styles`,null),S=e([h(`esri.views.3d.analysis.ShadowCast.ShadowCastTooltip`)],S);function C(){let e=E(document.createElement(`div`),{position:`absolute`,top:`0`,left:`0`,pointerEvents:`none`});return e.style.setProperty(`--tooltip-arrow-size`,`6px`),e.style.setProperty(`--tooltip-background`,`var(--calcite-color-surface-2)`),e.appendChild(T()),e}function w(){return E(document.createElement(`div`),{color:`var(--calcite-color-text-1)`,fontSize:`var(--calcite-font-size-sm)`,position:`absolute`,width:`max-content`,transform:`translate(0, -100%)`,insetInlineStart:`calc(var(--calcite-space-lg) * -1)`,marginTop:`calc((var(--tooltip-arrow-size) * -1) - var(--calcite-space-2xs))`,background:`var(--tooltip-background)`,paddingInline:`var(--calcite-space-md)`,paddingBlock:`var(--calcite-space-xs)`,pointerEvents:`none`,borderRadius:`var(--calcite-corner-radius-sm)`})}function T(){return E(document.createElement(`div`),{display:`block`,position:`absolute`,width:`0`,height:`0`,bottom:`-1px`,left:`50%`,transform:`translate(-50%, 0)`,borderTop:`var(--tooltip-arrow-size) solid var(--tooltip-background)`,borderRight:`var(--tooltip-arrow-size) solid transparent`,borderBottom:`var(--tooltip-arrow-size) solid transparent`,borderLeft:`var(--tooltip-arrow-size) solid transparent`,pointerEvents:`none`})}function E(e,t){return Object.assign(e.style,t),e}function D(e){let t=_(e,void 0,{unitDisplay:`narrow`});return y()?`${L}${t}${R}`:t}function O(e,t){return D(e+A(Math.max(0,t-e)))}function k(e,t){if(e<=0)return 0;let n=o(e,I);return i(n-I,0,t)}function A(e){let t=e<F?a(e,P):a(e,F);return e>0&&t===0?P:t}const j=Symbol(`tracking`),M=Symbol(`pointer`),N=300,P=p(1,`minutes`,`milliseconds`),F=p(15,`minutes`,`milliseconds`),I=p(1,`hours`,`milliseconds`),L=``,R=``;export{S as ShadowCastTooltip};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import{isSome as t,equals as n}from"../../../core/arrayUtils.js";import{createTask as r}from"../../../core/asyncUtils.js";import i from"../../../core/Error.js";import"../../../core/has.js";import a from"../../../core/Logger.js";import{abortMaybe as o,destroyMaybe as s}from"../../../core/maybe.js";import{after as c,throwIfAborted as l,isPromiseLike as u}from"../../../core/promiseUtils.js";import{watch as d,syncAndInitial as f}from"../../../core/reactiveUtils.js";import{createScreenPointArray as p,createRenderScreenPointArray as m}from"../../../core/screenUtils.js";import{convertTime as h,offsetDateUTC as g,createZonedDate as _}from"../../../core/timeUtils.js";import{property as v,subclass as y}from"../../../core/accessorSupport/decorators.js";import{create as b}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromValues as x}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{UpdatingHandles as S}from"../../../core/support/UpdatingHandles.js";import{projectAsync as C}from"../../../geometry/projectionUtils.js";import{containsExecute as w}from"../../../geometry/operators/containsOperator.js";import{g as T}from"../../../chunks/boundedPlane.js";import{polygonToVolume as E}from"../focusAreaUtils.js";import D from"./AnalysisView3D.js";import{registerAnalysisView as O,hideOtherAnalysisViews as k}from"./ShadowCast/analysisViewRegister.js";import{ShadowCastTooltip as A}from"./ShadowCast/ShadowCastTooltip.js";import{ElevationContext as j}from"../layers/graphics/ElevationContext.js";import{longitudeToTimezone as M}from"../support/earthUtils.js";import{computeDirectionsOverTime as N}from"../support/sunUtils.js";import{maxColorRampSize as P}from"../webgl-engine/shaders/colorRampParameters.js";import{breadthFirstBinaryPartitioning as F}from"../../../widgets/support/traversalUtils.js";let I=class extends D{constructor(e){super(e),this.type=`shadow-cast-view-3d`,this.analysis=null,this._updatingHandles=new S,this._stopPreviewingTask=null,this._updatedRecently=!1,this._tooltip=null,this._previousVolume=null}initialize(){this.addHandles([O(this.view,this),d(()=>({dependencies:this._previewDependencies,sceneUpdating:this._sceneUpdating}),()=>{o(this._stopPreviewingTask),this._updatedRecently=!0,this._stopPreviewingTask=r(async e=>{await c(U,e),l(e),this._updatedRecently=!1})},{sync:!0,initial:!0,equals:(e,t)=>V(e.dependencies,t.dependencies)&&(e.sceneUpdating===t.sceneUpdating||!e.sceneUpdating)}),d(()=>({renderer:this._renderer,visible:this.visible}),({renderer:e,visible:t})=>{t&&k(this.view,this),e?.setParameters({shadowCast:{enabled:t}})},f),d(()=>({renderer:this._renderer,parameters:this._visualizationParameters,visible:this.visible}),({renderer:e,parameters:t,visible:n})=>{R(e,n,t)},f),d(()=>({renderer:this._renderer,lightDirections:this._lightDirections,lightDirectionsContext:this._lightDirectionsContext,visible:this.visible}),({renderer:e,lightDirections:t,lightDirectionsContext:n,visible:r})=>{R(e,r,{lightDirections:t,lightDirectionsContext:n})},f),d(()=>({renderer:this._renderer,previewing:this._previewing,visible:this.visible}),({renderer:e,previewing:t,visible:n})=>{R(e,n,{previewing:t})},{sync:!0,initial:!0,equals:()=>!1}),d(()=>({analysisVolume:this._analysisVolume,renderer:this._renderer,visible:this.visible}),({renderer:e,visible:t,analysisVolume:n})=>{R(e,t,{analysisVolume:n})},f)]),this.interactive=!0,this._tooltip=new A({getDuration:(e,t)=>this._getDurationAtScreen(e,t),getMode:()=>this.analysis.mode,getShowsSeparateZeroBucketInHourlyMode:()=>this._showsSeparateZeroBucketInHourlyMode,getTotalDuration:()=>this._totalDuration,getTotalDurationMode:()=>this.analysis.totalDurationOptions.mode,getVisualizeSunlight:()=>this.analysis.visualizeSunlight,isVisible:()=>this.interactive&&this.visible,view:this.view})}destroy(){this.visible&&R(this._renderer,!0,{enabled:!1}),this._tooltip=s(this._tooltip),this._stopPreviewingTask=o(this._stopPreviewingTask),this._updatingHandles=s(this._updatingHandles)}get interactive(){return super.interactive}set interactive(e){super.interactive=e}get updating(){return this._previewing||this._stopPreviewingTask!=null&&!this._stopPreviewingTask.finished||this._tooltip?.updating===!0||this._updatingHandles.updating}get visible(){return super.visible}set visible(e){super.visible=e}get _previewing(){let e=this._updatedRecently,t=this._sceneUpdating;return e||t}get _sceneUpdating(){let{view:e}=this;if(e?.allLayerViews==null)return!0;let{stationary:t,navigating:n,interacting:r,graphicsView:i}=e,a=!t||n||r,o=this._shadowLayerViews.some(e=>e.updating),s=!i?.suspended&&!!i?.updating;return a||o||s}get _effectiveUtcOffset(){return this.analysis.utcOffset??this._utcOffsetAuto}get _utcOffsetAuto(){let e=this._referencePosition;return e==null?0:M(e[0],!1)}get _dateUTCOffset(){let e=this.analysis.date;return e=g(e,-e.getTimezoneOffset(),`minutes`),e=g(e,-this._effectiveUtcOffset,`hours`),e}get _startDateTimeUTC(){return this._getDateTimeUTC(this.analysis.startTimeOfDay)}get _endDateTimeUTC(){return this._getDateTimeUTC(this.analysis.endTimeOfDay)}_getDateTimeUTC(e){let{date:t,timeZone:n}=this.analysis;if(n==null)return g(this._dateUTCOffset,e);let r=_({year:t.getFullYear(),month:t.getMonth()+1,day:t.getDate()},h(e,`milliseconds`,`minutes`),n);if(r==null)throw RangeError(`Invalid shadow cast date or time zone`);return r}get _referencePosition(){return this.view?.environmentManager?.referencePositionGeographic}get _totalDurationInterval(){return this._totalDuration>0?Math.floor(this._totalDuration/(W-1)):W}get _interval(){let e=this._totalDurationInterval;switch(this.analysis.mode){case`min-duration`:return this._totalDuration>0?e:0;case`total-duration`:return e;case`discrete`:return this.analysis.discreteOptions.interval||e}}get _intervalContext(){let{mode:e,minDurationOptions:t}=this.analysis;return e===`min-duration`&&t.contextEnabled?t.contextOptions.interval||this._totalDurationInterval:-1}get _totalDurationSampleCount(){return this._lightDirections.length}get _totalDuration(){return this._endDateTimeUTC.getTime()-this._startDateTimeUTC.getTime()}get _lightDirections(){return this._calculateLightDirections(this._interval)}get _lightDirectionsContext(){return this._calculateLightDirections(this._intervalContext)}_calculateLightDirections(e){let{view:t}=this;if(e<=0)return[];let n=t.viewingMode===`global`?G:this._referencePosition;if(n==null)return[];let r=N(this._startDateTimeUTC,this._endDateTimeUTC,e,n,t.state.viewingMode,W),i=r.length;K.length=0;let a=F(0,i,K),o=Array(i);for(let e=0;e<i;++e)o[e]=r[a[e]];return o}get _analysisVolume(){let{geometry:e}=this.analysis;if(e==null)return this._previousVolume=null,null;try{let t=E(e,this.view,q);return t==null?(this._previousVolume=null,null):u(t)?(this._updatingHandles.consumePromise(t),this._previousVolume):(this._previousVolume=t,t)}catch(t){return a.getLogger(this).error(new i(`shadowcastanalysisview3d:projection-failed`,`Failed to project analysis area geometry to view spatial reference`,{geometry:e,error:t})),null}}get _visualizationParameters(){if(!this.visible)return null;switch(this.analysis.mode){case`min-duration`:return this._minDurationVisualizationParameters;case`total-duration`:return this._durationVisualizationParameters;case`discrete`:return this._discreteVisualizationParameters}}get _minDurationVisualizationParameters(){let{color:e,minDuration:t}=this.analysis.minDurationOptions,n=this._totalDuration;return{rendersSunlight:this.analysis.visualizeSunlight,visualization:2,thresholdColor:e.toUnitRGBA(),threshold:n>0?t/this._totalDuration:0,...this._minDurationContextVisualizationParameters}}get _minDurationContextVisualizationParameters(){let{minDurationOptions:e,visualizeSunlight:t}=this.analysis;if(!e.contextEnabled||t)return{};let{color:n,colorStops:r}=e.contextOptions,i=1/this._lightDirectionsContext.length;return{visualization:3,gradientColorRamp:this._getEffectiveShadowCastColorRamp(n,r,i)}}get _durationVisualizationParameters(){let{color:e,colorStops:t,mode:n}=this.analysis.totalDurationOptions,r=this._totalDuration,i=r>0&&n===`hourly`?H/r:0,a=this._getEffectiveShadowCastColorRamp(e,t,1/r);return i===0?{...this._discreteVisualizationParameters,gradientColorRamp:a}:{rendersSunlight:this.analysis.visualizeSunlight,bandedGradientColorRamp:a,visualization:1,bandSize:i}}get _showsSeparateZeroBucketInHourlyMode(){let{colorStops:e}=this.analysis.totalDurationOptions;return e==null||e.length===0||e.reduce((e,t)=>Math.min(e,t.value),1/0)<=0}get _discreteVisualizationParameters(){let{color:e,colorStops:t}=this.analysis.discreteOptions,n=1/this._lightDirections.length;return{rendersSunlight:this.analysis.visualizeSunlight,gradientColorRamp:this._getEffectiveShadowCastColorRamp(e,t,n),visualization:0}}get _shadowLayerViews(){return this.view.allLayerViews.items.filter(B)}get _previewDependencies(){let{view:e}=this,n=e.slice.plane,r=this._shadowLayerViews,i=r.map(e=>e.layer).filter(t),a=r.map(e=>e.suspended),o=i.map(e=>e.visible),s=i.map(e=>e.opacity),c=!!e.graphicsView?.suspended,l=i.filter(e=>`definitionExpression`in e).map(e=>e.definitionExpression),u=r.filter(e=>`filter`in e).map(e=>e.filter);return{slicePlane:n,startDateUTC:this._startDateTimeUTC,endDateUTC:this._endDateTimeUTC,layerViewSuspended:a,graphicsViewSuspended:c,layerVisibilities:o,layerOpacities:s,filters:u,definitionExpressions:l}}get _renderer(){return this.view?.stage?.renderer}get testData(){}async getDurationAtScreen(e){return this._getDurationAtScreen(e)}async _getDurationAtScreen(e,t){if(!await this._isScreenPointInAnalysisArea(e,t))return-1;let{_renderer:n,_totalDurationSampleCount:r}=this;if(n==null||r===0)return 0;let i=this.view.state.camera.screenToRender(p(e.x,e.y),m()),a=n.readAccumulatedShadow(i);return(this.analysis.visualizeSunlight?1-a:a)*this._totalDuration}async _isScreenPointInAnalysisArea(e,t){let{geometry:n}=this.analysis;if(!n)return!0;let r=await this.view.hitTest(e);l(t);let i=r.results.find(e=>e.mapPoint)?.mapPoint??r?.ground?.mapPoint;if(!i)return!1;let a=await C(i,n.spatialReference,{signal:t});return l(t),a!=null&&w(n,a)}_getEffectiveShadowCastColorRamp(e,t,n){if(t!=null){t.length>P&&a.getLogger(this).warnOnce(`ShadowCastAnalysis supports at most 8 color stops`);let e=t.map(e=>[e.value*n,e.color.toUnitRGBA()]);return e.sort(([e],[t])=>e-t),e}return z(e)}};e([v({readOnly:!0,type:[`shadow-cast-view-3d`]})],I.prototype,`type`,void 0),e([v({constructOnly:!0,nonNullable:!0})],I.prototype,`analysis`,void 0),e([v({readOnly:!0})],I.prototype,`updating`,null),e([v()],I.prototype,`_stopPreviewingTask`,void 0),e([v()],I.prototype,`_updatedRecently`,void 0),e([v()],I.prototype,`_tooltip`,void 0),e([v()],I.prototype,`_sceneUpdating`,null),e([v()],I.prototype,`_effectiveUtcOffset`,null),e([v()],I.prototype,`_utcOffsetAuto`,null),e([v()],I.prototype,`_dateUTCOffset`,null),e([v()],I.prototype,`_startDateTimeUTC`,null),e([v()],I.prototype,`_endDateTimeUTC`,null),e([v()],I.prototype,`_referencePosition`,null),e([v()],I.prototype,`_interval`,null),e([v()],I.prototype,`_intervalContext`,null),e([v()],I.prototype,`_totalDurationSampleCount`,null),e([v()],I.prototype,`_totalDuration`,null),e([v()],I.prototype,`_lightDirections`,null),e([v()],I.prototype,`_lightDirectionsContext`,null),e([v()],I.prototype,`_analysisVolume`,null),e([v()],I.prototype,`_visualizationParameters`,null),e([v()],I.prototype,`_minDurationVisualizationParameters`,null),e([v()],I.prototype,`_minDurationContextVisualizationParameters`,null),e([v()],I.prototype,`_durationVisualizationParameters`,null),e([v()],I.prototype,`_showsSeparateZeroBucketInHourlyMode`,null),e([v()],I.prototype,`_discreteVisualizationParameters`,null),e([v()],I.prototype,`_shadowLayerViews`,null),e([v()],I.prototype,`_previewDependencies`,null),e([v()],I.prototype,`_renderer`,null),I=e([y(`esri.views.3d.analysis.ShadowCastAnalysisView3D`)],I);const L=I;function R(e,t,n){t&&n!=null&&e?.setParameters({shadowCast:n})}function z(e){let t=e.toUnitRGBA();return[[0,x(t[0],t[1],t[2],0)],[1,t]]}function B(e){if(e.suspended)return!1;switch(e.type){case`building-scene-3d`:case`csv-3d`:case`elevation-3d`:case`feature-3d`:case`gaussian-splat-3d`:case`geojson-3d`:case`integrated-mesh-3d`:case`integrated-mesh-3dtiles`:case`ogc-feature-3d`:case`route-3d`:case`scene-layer-3d`:case`scene-layer-graphics-3d`:case`stream-3d`:case`wms-3d`:case`catalog-footprint-3d`:return!0;case`base-dynamic-3d`:case`catalog-3d`:case`catalog-dynamic-group-3d`:case`dimension-3d`:case`imagery-3d`:case`imagery-tile-3d`:case`line-of-sight-3d`:case`map-image-3d`:case`point-cloud-3d`:case`tile-3d`:case`vector-tile-3d`:case`viewshed-3d`:case`voxel-3d`:case`wfs-3d`:case`wmts-3d`:case`media-3d`:return!1;case`group`:return!1;case`graphics-3d`:return e.layer.graphics.some(e=>{let{symbol:t}=e;return t==null||t.type!==`text`&&!(`symbolLayers`in t)||t.type!==`text`&&t.symbolLayers.some(e=>e.type!==`text`)});default:return!1}}function V(e,t){if(e===t||e==null&&t==null)return!0;if(e==null||t==null)return!1;let r=T(e.slicePlane,t.slicePlane),i=e.startDateUTC.valueOf()===t.startDateUTC.valueOf()&&e.endDateUTC.valueOf()===t.endDateUTC.valueOf(),a=n(e.layerViewSuspended,t.layerViewSuspended)&&e.graphicsViewSuspended===t.graphicsViewSuspended,o=n(e.layerVisibilities,t.layerVisibilities),s=n(e.layerOpacities,t.layerOpacities),c=n(e.filters,t.filters),l=n(e.definitionExpressions,t.definitionExpressions);return r&&i&&a&&o&&s&&c&&l}const H=h(1,`hours`,`milliseconds`),U=500,W=255,G=b(),K=[],q=new j;export{L as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import{isSome as t,equals as n}from"../../../core/arrayUtils.js";import{createTask as r}from"../../../core/asyncUtils.js";import i from"../../../core/Error.js";import"../../../core/has.js";import a from"../../../core/Logger.js";import{abortMaybe as o,destroyMaybe as s}from"../../../core/maybe.js";import{after as c,throwIfAborted as l,isPromiseLike as u}from"../../../core/promiseUtils.js";import{watch as d,syncAndInitial as f}from"../../../core/reactiveUtils.js";import{createScreenPointArray as p,createRenderScreenPointArray as m}from"../../../core/screenUtils.js";import{convertTime as h,offsetDateUTC as g,createZonedDate as _}from"../../../core/timeUtils.js";import{property as v,subclass as y}from"../../../core/accessorSupport/decorators.js";import{create as b}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromValues as x}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{UpdatingHandles as S}from"../../../core/support/UpdatingHandles.js";import{projectAsync as C}from"../../../geometry/projectionUtils.js";import{containsExecute as w}from"../../../geometry/operators/containsOperator.js";import{g as T}from"../../../chunks/boundedPlane.js";import{polygonToVolume as E}from"../focusAreaUtils.js";import D from"./AnalysisView3D.js";import{registerAnalysisView as O,hideOtherAnalysisViews as k}from"./ShadowCast/analysisViewRegister.js";import{ShadowCastTooltip as A}from"./ShadowCast/ShadowCastTooltip.js";import{ElevationContext as j}from"../layers/graphics/ElevationContext.js";import{longitudeToTimezone as M}from"../support/earthUtils.js";import{computeDirectionsOverTime as N}from"../support/sunUtils.js";import{maxColorRampSize as P}from"../webgl-engine/shaders/colorRampParameters.js";import{breadthFirstBinaryPartitioning as F}from"../../../widgets/support/traversalUtils.js";let I=class extends D{constructor(e){super(e),this.type=`shadow-cast-view-3d`,this.analysis=null,this._updatingHandles=new S,this._stopPreviewingTask=null,this._updatedRecently=!1,this._tooltip=null,this._previousVolume=null}initialize(){this.addHandles([O(this.view,this),d(()=>({dependencies:this._previewDependencies,sceneUpdating:this._sceneUpdating}),()=>{o(this._stopPreviewingTask),this._updatedRecently=!0,this._stopPreviewingTask=r(async e=>{await c(U,e),l(e),this._updatedRecently=!1})},{sync:!0,initial:!0,equals:(e,t)=>V(e.dependencies,t.dependencies)&&(e.sceneUpdating===t.sceneUpdating||!e.sceneUpdating)}),d(()=>({renderer:this._renderer,visible:this.visible}),({renderer:e,visible:t})=>{t&&k(this.view,this),e?.setParameters({shadowCast:{enabled:t}})},f),d(()=>({renderer:this._renderer,parameters:this._visualizationParameters,visible:this.visible}),({renderer:e,parameters:t,visible:n})=>{R(e,n,t)},f),d(()=>({renderer:this._renderer,lightDirections:this._lightDirections,lightDirectionsContext:this._lightDirectionsContext,visible:this.visible}),({renderer:e,lightDirections:t,lightDirectionsContext:n,visible:r})=>{R(e,r,{lightDirections:t,lightDirectionsContext:n})},f),d(()=>({renderer:this._renderer,previewing:this._previewing,visible:this.visible}),({renderer:e,previewing:t,visible:n})=>{R(e,n,{previewing:t})},{sync:!0,initial:!0,equals:()=>!1}),d(()=>({analysisVolume:this._analysisVolume,renderer:this._renderer,visible:this.visible}),({renderer:e,visible:t,analysisVolume:n})=>{R(e,t,{analysisVolume:n})},f)]),this.interactive=!0,this._tooltip=new A({getDuration:(e,t)=>this._getDurationAtScreen(e,t),getMode:()=>this.analysis.mode,getShowsSeparateZeroBucketInHourlyMode:()=>this._showsSeparateZeroBucketInHourlyMode,getTotalDuration:()=>this._totalDuration,getTotalDurationMode:()=>this.analysis.totalDurationOptions.mode,getVisualizeSunlight:()=>this.analysis.visualizeSunlight,isVisible:()=>this.interactive&&this.visible,view:this.view})}destroy(){this.visible&&R(this._renderer,!0,{enabled:!1}),this._tooltip=s(this._tooltip),this._stopPreviewingTask=o(this._stopPreviewingTask),this._updatingHandles=s(this._updatingHandles)}get interactive(){return super.interactive}set interactive(e){super.interactive=e}get updating(){return this._previewing||this._stopPreviewingTask!=null&&!this._stopPreviewingTask.finished||this._tooltip?.updating===!0||this._updatingHandles.updating}get visible(){return super.visible}set visible(e){super.visible=e}get _previewing(){let e=this._updatedRecently,t=this._sceneUpdating;return e||t}get _sceneUpdating(){let{view:e}=this;if(e?.allLayerViews==null)return!0;let{stationary:t,navigating:n,interacting:r,graphicsView:i}=e,a=!t||n||r,o=this._shadowLayerViews.some(e=>e.updating),s=!i?.suspended&&!!i?.updating;return a||o||s}get _effectiveUtcOffset(){return this.analysis.utcOffset??this._utcOffsetAuto}get _utcOffsetAuto(){let e=this._referencePosition;return e==null?0:M(e[0],!1)}get _dateUTCOffset(){let e=this.analysis.date;return e=g(e,-e.getTimezoneOffset(),`minutes`),e=g(e,-this._effectiveUtcOffset,`hours`),e}get _startDateTimeUTC(){return this._getDateTimeUTC(this.analysis.startTimeOfDay)}get _endDateTimeUTC(){return this._getDateTimeUTC(this.analysis.endTimeOfDay)}_getDateTimeUTC(e){let{date:t,timeZone:n}=this.analysis;if(n==null)return g(this._dateUTCOffset,e);let r=_({year:t.getFullYear(),month:t.getMonth()+1,day:t.getDate()},h(e,`milliseconds`,`minutes`),n);if(r==null)throw RangeError(`Invalid shadow cast date or time zone`);return r}get _referencePosition(){return this.view?.environmentView?.referencePositionGeographic}get _totalDurationInterval(){return this._totalDuration>0?Math.floor(this._totalDuration/(W-1)):W}get _interval(){let e=this._totalDurationInterval;switch(this.analysis.mode){case`min-duration`:return this._totalDuration>0?e:0;case`total-duration`:return e;case`discrete`:return this.analysis.discreteOptions.interval||e}}get _intervalContext(){let{mode:e,minDurationOptions:t}=this.analysis;return e===`min-duration`&&t.contextEnabled?t.contextOptions.interval||this._totalDurationInterval:-1}get _totalDurationSampleCount(){return this._lightDirections.length}get _totalDuration(){return this._endDateTimeUTC.getTime()-this._startDateTimeUTC.getTime()}get _lightDirections(){return this._calculateLightDirections(this._interval)}get _lightDirectionsContext(){return this._calculateLightDirections(this._intervalContext)}_calculateLightDirections(e){let{view:t}=this;if(e<=0)return[];let n=t.viewingMode===`global`?G:this._referencePosition;if(n==null)return[];let r=N(this._startDateTimeUTC,this._endDateTimeUTC,e,n,t.state.viewingMode,W),i=r.length;K.length=0;let a=F(0,i,K),o=Array(i);for(let e=0;e<i;++e)o[e]=r[a[e]];return o}get _analysisVolume(){let{geometry:e}=this.analysis;if(e==null)return this._previousVolume=null,null;try{let t=E(e,this.view,q);return t==null?(this._previousVolume=null,null):u(t)?(this._updatingHandles.consumePromise(t),this._previousVolume):(this._previousVolume=t,t)}catch(t){return a.getLogger(this).error(new i(`shadowcastanalysisview3d:projection-failed`,`Failed to project analysis area geometry to view spatial reference`,{geometry:e,error:t})),null}}get _visualizationParameters(){if(!this.visible)return null;switch(this.analysis.mode){case`min-duration`:return this._minDurationVisualizationParameters;case`total-duration`:return this._durationVisualizationParameters;case`discrete`:return this._discreteVisualizationParameters}}get _minDurationVisualizationParameters(){let{color:e,minDuration:t}=this.analysis.minDurationOptions,n=this._totalDuration;return{rendersSunlight:this.analysis.visualizeSunlight,visualization:2,thresholdColor:e.toUnitRGBA(),threshold:n>0?t/this._totalDuration:0,...this._minDurationContextVisualizationParameters}}get _minDurationContextVisualizationParameters(){let{minDurationOptions:e,visualizeSunlight:t}=this.analysis;if(!e.contextEnabled||t)return{};let{color:n,colorStops:r}=e.contextOptions,i=1/this._lightDirectionsContext.length;return{visualization:3,gradientColorRamp:this._getEffectiveShadowCastColorRamp(n,r,i)}}get _durationVisualizationParameters(){let{color:e,colorStops:t,mode:n}=this.analysis.totalDurationOptions,r=this._totalDuration,i=r>0&&n===`hourly`?H/r:0,a=this._getEffectiveShadowCastColorRamp(e,t,1/r);return i===0?{...this._discreteVisualizationParameters,gradientColorRamp:a}:{rendersSunlight:this.analysis.visualizeSunlight,bandedGradientColorRamp:a,visualization:1,bandSize:i}}get _showsSeparateZeroBucketInHourlyMode(){let{colorStops:e}=this.analysis.totalDurationOptions;return e==null||e.length===0||e.reduce((e,t)=>Math.min(e,t.value),1/0)<=0}get _discreteVisualizationParameters(){let{color:e,colorStops:t}=this.analysis.discreteOptions,n=1/this._lightDirections.length;return{rendersSunlight:this.analysis.visualizeSunlight,gradientColorRamp:this._getEffectiveShadowCastColorRamp(e,t,n),visualization:0}}get _shadowLayerViews(){return this.view.allLayerViews.items.filter(B)}get _previewDependencies(){let{view:e}=this,n=e.slice.plane,r=this._shadowLayerViews,i=r.map(e=>e.layer).filter(t),a=r.map(e=>e.suspended),o=i.map(e=>e.visible),s=i.map(e=>e.opacity),c=!!e.graphicsView?.suspended,l=i.filter(e=>`definitionExpression`in e).map(e=>e.definitionExpression),u=r.filter(e=>`filter`in e).map(e=>e.filter);return{slicePlane:n,startDateUTC:this._startDateTimeUTC,endDateUTC:this._endDateTimeUTC,layerViewSuspended:a,graphicsViewSuspended:c,layerVisibilities:o,layerOpacities:s,filters:u,definitionExpressions:l}}get _renderer(){return this.view?.stage?.renderer}get testData(){}async getDurationAtScreen(e){return this._getDurationAtScreen(e)}async _getDurationAtScreen(e,t){if(!await this._isScreenPointInAnalysisArea(e,t))return-1;let{_renderer:n,_totalDurationSampleCount:r}=this;if(n==null||r===0)return 0;let i=this.view.state.camera.screenToRender(p(e.x,e.y),m()),a=n.readAccumulatedShadow(i);return(this.analysis.visualizeSunlight?1-a:a)*this._totalDuration}async _isScreenPointInAnalysisArea(e,t){let{geometry:n}=this.analysis;if(!n)return!0;let r=await this.view.hitTest(e);l(t);let i=r.results.find(e=>e.mapPoint)?.mapPoint??r?.ground?.mapPoint;if(!i)return!1;let a=await C(i,n.spatialReference,{signal:t});return l(t),a!=null&&w(n,a)}_getEffectiveShadowCastColorRamp(e,t,n){if(t!=null){t.length>P&&a.getLogger(this).warnOnce(`ShadowCastAnalysis supports at most 8 color stops`);let e=t.map(e=>[e.value*n,e.color.toUnitRGBA()]);return e.sort(([e],[t])=>e-t),e}return z(e)}};e([v({readOnly:!0,type:[`shadow-cast-view-3d`]})],I.prototype,`type`,void 0),e([v({constructOnly:!0,nonNullable:!0})],I.prototype,`analysis`,void 0),e([v({readOnly:!0})],I.prototype,`updating`,null),e([v()],I.prototype,`_stopPreviewingTask`,void 0),e([v()],I.prototype,`_updatedRecently`,void 0),e([v()],I.prototype,`_tooltip`,void 0),e([v()],I.prototype,`_sceneUpdating`,null),e([v()],I.prototype,`_effectiveUtcOffset`,null),e([v()],I.prototype,`_utcOffsetAuto`,null),e([v()],I.prototype,`_dateUTCOffset`,null),e([v()],I.prototype,`_startDateTimeUTC`,null),e([v()],I.prototype,`_endDateTimeUTC`,null),e([v()],I.prototype,`_referencePosition`,null),e([v()],I.prototype,`_interval`,null),e([v()],I.prototype,`_intervalContext`,null),e([v()],I.prototype,`_totalDurationSampleCount`,null),e([v()],I.prototype,`_totalDuration`,null),e([v()],I.prototype,`_lightDirections`,null),e([v()],I.prototype,`_lightDirectionsContext`,null),e([v()],I.prototype,`_analysisVolume`,null),e([v()],I.prototype,`_visualizationParameters`,null),e([v()],I.prototype,`_minDurationVisualizationParameters`,null),e([v()],I.prototype,`_minDurationContextVisualizationParameters`,null),e([v()],I.prototype,`_durationVisualizationParameters`,null),e([v()],I.prototype,`_showsSeparateZeroBucketInHourlyMode`,null),e([v()],I.prototype,`_discreteVisualizationParameters`,null),e([v()],I.prototype,`_shadowLayerViews`,null),e([v()],I.prototype,`_previewDependencies`,null),e([v()],I.prototype,`_renderer`,null),I=e([y(`esri.views.3d.analysis.ShadowCastAnalysisView3D`)],I);const L=I;function R(e,t,n){t&&n!=null&&e?.setParameters({shadowCast:n})}function z(e){let t=e.toUnitRGBA();return[[0,x(t[0],t[1],t[2],0)],[1,t]]}function B(e){if(e.suspended)return!1;switch(e.type){case`building-scene-3d`:case`csv-3d`:case`elevation-3d`:case`feature-3d`:case`gaussian-splat-3d`:case`geojson-3d`:case`integrated-mesh-3d`:case`integrated-mesh-3dtiles`:case`ogc-feature-3d`:case`route-3d`:case`scene-layer-3d`:case`scene-layer-graphics-3d`:case`stream-3d`:case`wms-3d`:case`catalog-footprint-3d`:return!0;case`base-dynamic-3d`:case`catalog-3d`:case`catalog-dynamic-group-3d`:case`dimension-3d`:case`imagery-3d`:case`imagery-tile-3d`:case`line-of-sight-3d`:case`map-image-3d`:case`point-cloud-3d`:case`tile-3d`:case`vector-tile-3d`:case`viewshed-3d`:case`voxel-3d`:case`wfs-3d`:case`wmts-3d`:case`media-3d`:return!1;case`group`:return!1;case`graphics-3d`:return e.layer.graphics.some(e=>{let{symbol:t}=e;return t==null||t.type!==`text`&&!(`symbolLayers`in t)||t.type!==`text`&&t.symbolLayers.some(e=>e.type!==`text`)});default:return!1}}function V(e,t){if(e===t||e==null&&t==null)return!0;if(e==null||t==null)return!1;let r=T(e.slicePlane,t.slicePlane),i=e.startDateUTC.valueOf()===t.startDateUTC.valueOf()&&e.endDateUTC.valueOf()===t.endDateUTC.valueOf(),a=n(e.layerViewSuspended,t.layerViewSuspended)&&e.graphicsViewSuspended===t.graphicsViewSuspended,o=n(e.layerVisibilities,t.layerVisibilities),s=n(e.layerOpacities,t.layerOpacities),c=n(e.filters,t.filters),l=n(e.definitionExpressions,t.definitionExpressions);return r&&i&&a&&o&&s&&c&&l}const H=h(1,`hours`,`milliseconds`),U=500,W=255,G=b(),K=[],q=new j;export{L as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../../analysis/Viewshed.js";import n from"../../../../core/Accessor.js";import"../../../../core/has.js";import{createAbortError as r,throwIfAborted as i,onAbort as a}from"../../../../core/promiseUtils.js";import{watch as o,sync as s}from"../../../../core/reactiveUtils.js";import{property as c,subclass as l}from"../../../../core/accessorSupport/decorators.js";import{create as u}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getConvertedElevation as d,absoluteHeightElevationInfo as f}from"../../../../support/elevationInfoUtils.js";import p from"../../../../symbols/support/ElevationInfo.js";import{createDrawTool as m,getFeatureReference as h}from"./placementUtils.js";import{detachToolFromView as g}from"./toolLifecycleUtils.js";import _ from"./ViewshedPlacementOperation.js";import{createViewshedPlacementRootPluginConfiguration as v}from"./ViewshedPlacementRootPlugin.js";import{computeParametersFromTargetPoint as y}from"./viewshedToolUtils.js";import{vectorToRender as b}from"../../interactive/support/viewUtils.js";import{DrawManipulator3D as x}from"../../../draw/DrawManipulator3D.js";import{ViewEventPriorities as S}from"../../../input/InputManager.js";import{sketchKeys as C}from"../../../interactive/keybindings.js";import{bindViewToolOptions as w}from"../../../interactive/options/bindViewToolOptions.js";import T from"../../../interactive/options/InteractiveToolOptions.js";const E=Symbol(`hiddenManipulatorHandle`);let D=class extends n{constructor(e){super(e),this.placementMode=`multiple`,this.observerPlacementElevationInfo=null,this.stagedViewshed=null,this._placeOperation=null,this._drawTool=null,this._renderer=null,this._toolOptions=new T,this._observerScenePoint=u(),this._targetScenePoint=u(),this._mapPointVector=u(),this.creationState=null}initialize(){this.addHandles([w(this._toolOptions,()=>this.view.options),o(()=>[this._drawTool?.tooltipManager,this.creationState],([e,t])=>{e&&(e.enabled=t===`placing-observer`)}),o(()=>[this._drawTool?.activeTooltipInfo,this.creationState],([e,t])=>{e&&(e.elevationModeContext=t===`placing-observer`?this._elevationModeContext:null)}),this.view.on(`key-down`,e=>this._handleKeyDown(e),S.DEFAULT),o(()=>{let{stagedViewshed:e}=this;return{stagedViewshed:e,stagedViewshedInAnalysis:e!=null&&this.analysis.viewsheds.includes(e)}},({stagedViewshed:e,stagedViewshedInAnalysis:t})=>{e!=null&&!t&&this.analysis.viewsheds.add(e)},s)])}destroy(){this._cancelPlacementOperation()}get updating(){return!!this._drawTool?.updating}get active(){return!!this._drawTool?.active}get _elevationModeContext(){let e=this;return{get mode(){return e._observerDrawToolElevationInfo.mode},get disabled(){return!e._drawTool?.interactiveHandleManager?.focusedHandle?.outputMapPosition},onChange:e=>this.setElevationMode(e)}}setElevationMode(e){let t=this._drawTool,n=t?.interactiveHandleManager?.focusedHandle,r=n?.outputMapPosition;if(this.creationState!==`placing-observer`||!t||!n||!r||e===this._observerDrawToolElevationInfo.mode)return;let i=this.observerPlacementElevationInfo?.clone()??new p;i.mode=e;let a=r.clone();t.activeTooltipInfo?.getConstraintFieldByName(n,`elevation`)?.locked||(a.z=d(this.view,r,this._observerDrawToolElevationInfo,i)),t.defaultZ=a.z,this.observerPlacementElevationInfo=i,t.elevationInfo=i,n.inputMapPosition=a.clone(),n.selectedSnappingResult=null,n.outputMapPosition=a}startPlaceOperation(e,t){this._removeStaged(),this.creationState=null,this._rejectPlaceOperation(r()),i(t);let{resolve:n,reject:o,promise:s}=Promise.withResolvers(),c=a(t,()=>this._cancelPlacementOperation());return this._placeOperation=new _({abortHandle:c,reject:o,resolve:n}),this.placementMode=e,this.observerPlacementElevationInfo=t?.elevationInfo,this.callbacks.setSelectedViewshed(null),this._startObserverPlacement(),s}cancelPlaceOperation(){(this.creationState!=null||this._placeOperation!=null)&&(this._cancelPlacementOperation(),this.callbacks.cancelTool())}_handleDeleteDuringCreation(){return this.creationState!=null&&(this._destroyDrawTool(),this._removeStaged(),this.callbacks.setSelectedViewshed(null),this._startObserverPlacement(),!0)}_handleKeyDown(e){this.creationState!=null&&(C.cancel===e.key?(this._handleCancelDuringCreation(),e.stopPropagation(),e.preventDefault()):C.delete.includes(e.key)&&(this._handleDeleteDuringCreation(),e.stopPropagation(),e.preventDefault()))}_handleCancelDuringCreation(){this._removeStaged()&&this.placementMode===`multiple`?(this.callbacks.setSelectedViewshed(null),this._startObserverPlacement()):(this._destroyDrawTool(),this._abortCreation())}_removeStaged(){let{stagedViewshed:e}=this;return this.stagedViewshed=null,e?(this.analysis.viewsheds.remove(e),!0):!1}_cancelPlacementOperation(){this._destroyDrawTool(),this._removeStaged(),this.creationState=null,this._finishPlaceOperation()}_abortCreation(){this.callbacks.cancelTool(),this.creationState=null,this._finishPlaceOperation()}_handleObserverPlacementComplete(e,n,r){let i=new t({observer:e,elevationInfo:this.observerPlacementElevationInfo,feature:r});this.analysis.viewsheds.add(i),this.stagedViewshed=i,this.creationState=`placing-target`,this._updateStagedViewshed(n),this.callbacks.setSelectedViewshed(null)}_onCancel(e){let t=this._removeStaged();if(this.creationState===`placing-observer`){if(t&&this.placementMode===`multiple`){this.callbacks.setSelectedViewshed(null),this._startObserverPlacement();return}this._destroyDrawTool(e),this._abortCreation()}else t?(this.creationState=`placing-observer`,this.callbacks.setSelectedViewshed(null),this.placementMode===`multiple`?this._startPointPlacement():(this._destroyDrawTool(e),this._abortCreation())):(this._destroyDrawTool(e),this._abortCreation())}_handleTargetPlacementComplete(e){this._updateStagedViewshed(e);let t=this.stagedViewshed;return t?.valid?(this._placeOperation?.markPlacedViewshed(),this.stagedViewshed=null,this.callbacks.setSelectedViewshed(t),!0):!1}_finishPlaceOperation(){this._clearPlaceOperationAndRun(e=>e?.finish())}_rejectPlaceOperation(e){this._clearPlaceOperationAndRun(t=>t?.reject(e))}_clearPlaceOperationAndRun(e){let t=this._placeOperation;this._placeOperation=null,this.observerPlacementElevationInfo=null,e(t)}_startObserverPlacement(){this.creationState=`placing-observer`,this._startPointPlacement()}_startPointPlacement(){this._drawTool&&this._destroyDrawTool(this._drawTool);let{drawTool:e,renderer:t}=m({analysisViewData:this.analysisViewData,snappingManager:this.snappingManager,view:this.view,toolOptions:this._toolOptions,elevationInfo:this._observerDrawToolElevationInfo,onCancel:e=>this._onCancel(e),onComplete:e=>this._onComplete(e),onManipulatorCountChange:e=>this._onManipulatorCountChange(e),isPlacingObserver:()=>this.creationState===`placing-observer`});this._drawTool=e,this._renderer=t;try{this.view.addAndActivateTool(e),e.begin([v({mode:this.placementMode,onObserverComplete:(e,t)=>this._onObserverMapPointComplete(e,t),onTargetComplete:e=>this._onTargetMapPointComplete(e),onObserverPreview:e=>this._onObserverMapPointPreview(e),onTargetPreview:e=>this._onTargetMapPointPreview(e)})])}catch(t){this._destroyDrawTool(e),this._rejectPlaceOperation(t instanceof Error?t:Error(String(t)))}}_onComplete(e){this._removeStaged(),this._finishPlaceOperation(),this._destroyDrawTool(e),this.creationState=null}_onObserverMapPointComplete(e,t){let{intersector:n,snappingManager:r,view:i}=this,a=e.clone(),o=this._toScenePoint(e,this._targetScenePoint,this._observerDrawToolElevationInfo),s=h({intersector:n,snappingManager:r,screenPoint:t,view:i});this._renderer?.updatePlacementLocation(o),this._handleObserverPlacementComplete(a,o,s),this._setDrawToolElevationInfo(f)}_onTargetMapPointComplete(e){let t=this._toScenePoint(e,this._targetScenePoint);return this._renderer?.updatePlacementLocation(t),this._handleTargetPlacementComplete(t)?(this.placementMode===`multiple`&&(this.creationState=`placing-observer`,this._setDrawToolElevationInfo(this._observerDrawToolElevationInfo),this._onObserverMapPointPreview(e)),!0):!1}_onObserverMapPointPreview(e){let t=e.clone(),n=this._toScenePoint(t,this._observerScenePoint,this._observerDrawToolElevationInfo);this._renderer?.updatePlacementLocation(n)}_onTargetMapPointPreview(e){let t=this._toScenePoint(e,this._targetScenePoint);this._renderer?.updatePlacementLocation(t),this._updateStagedViewshed(t)}_setDrawToolElevationInfo(e){let t=this._drawTool;t&&(t.elevationInfo=e)}get _observerDrawToolElevationInfo(){return this.observerPlacementElevationInfo??f}_onManipulatorCountChange(e){e.removeHandles(E);let t=[];e.manipulators.forEach(({manipulator:e})=>{e instanceof x&&t.push(e.disableDisplay())}),e.addHandles(t,E)}_destroyDrawTool(e=this._drawTool){this._drawTool=null,this._renderer=null,e&&g(this.view,e)}_toScenePoint(e,t,n=f){let{x:r,y:i,z:a,spatialReference:o}=e,s=this._mapPointVector;return s[0]=r,s[1]=i,s[2]=a??0,b(s,o,n,this.view,t)}_updateStagedViewshed(e){let t=this.stagedViewshed;if(!t)return;let n=this.callbacks.findViewshedComputedData(t);if(!n)return;let{heading:r,tilt:i,farDistance:a}=y(this.view,n,e);t.farDistance=a,t.tilt=i,t.heading=r}get test(){}};e([c({constructOnly:!0})],D.prototype,`analysis`,void 0),e([c({constructOnly:!0})],D.prototype,`analysisViewData`,void 0),e([c({constructOnly:!0})],D.prototype,`intersector`,void 0),e([c({constructOnly:!0})],D.prototype,`snappingManager`,void 0),e([c({constructOnly:!0})],D.prototype,`view`,void 0),e([c({constructOnly:!0})],D.prototype,`callbacks`,void 0),e([c()],D.prototype,`placementMode`,void 0),e([c()],D.prototype,`observerPlacementElevationInfo`,void 0),e([c()],D.prototype,`stagedViewshed`,void 0),e([c()],D.prototype,`_placeOperation`,void 0),e([c()],D.prototype,`_drawTool`,void 0),e([c()],D.prototype,`_renderer`,void 0),e([c()],D.prototype,`_toolOptions`,void 0),e([c()],D.prototype,`updating`,null),e([c()],D.prototype,`active`,null),e([c()],D.prototype,`creationState`,void 0),e([c()],D.prototype,`_elevationModeContext`,null),D=e([l(`esri.views.3d.analysis.Viewshed.ViewshedPlacementController`)],D);export{D as ViewshedPlacementController};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../../analysis/Viewshed.js";import n from"../../../../core/Accessor.js";import"../../../../core/has.js";import{createAbortError as r,throwIfAborted as i,onAbort as a}from"../../../../core/promiseUtils.js";import{watch as o,sync as s}from"../../../../core/reactiveUtils.js";import{property as c,subclass as l}from"../../../../core/accessorSupport/decorators.js";import{create as u}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getConvertedElevation as d,absoluteHeightElevationInfo as f}from"../../../../support/elevationInfoUtils.js";import p from"../../../../symbols/support/ElevationInfo.js";import{createDrawTool as m,getFeatureReference as h}from"./placementUtils.js";import{detachToolFromView as g}from"./toolLifecycleUtils.js";import _ from"./ViewshedPlacementOperation.js";import{createViewshedPlacementRootPluginConfiguration as v}from"./ViewshedPlacementRootPlugin.js";import{computeParametersFromTargetPoint as y}from"./viewshedToolUtils.js";import{vectorToRender as b}from"../../interactive/support/viewUtils.js";import{DrawManipulator3D as x}from"../../../draw/DrawManipulator3D.js";import{ViewEventPriorities as S}from"../../../input/InputManager.js";import{sketchKeys as C}from"../../../interactive/keybindings.js";import{bindViewToolOptions as w}from"../../../interactive/options/bindViewToolOptions.js";import T from"../../../interactive/options/InteractiveToolOptions.js";const E=Symbol(`hiddenManipulatorHandle`);let D=class extends n{constructor(e){super(e),this.placementMode=`multiple`,this.observerPlacementElevationInfo=null,this.stagedViewshed=null,this._placeOperation=null,this._drawTool=null,this._renderer=null,this._toolOptions=new T,this._observerScenePoint=u(),this._targetScenePoint=u(),this._mapPointVector=u(),this.creationState=null}initialize(){this.addHandles([w(this._toolOptions,()=>this.view.options),o(()=>[this._drawTool?.tooltipManager,this.creationState],([e,t])=>{e&&(e.enabled=t===`placing-observer`)}),o(()=>[this._drawTool?.activeTooltipInfo,this.creationState],([e,t])=>{e&&(e.elevationModeContext=t===`placing-observer`?this._elevationModeContext:null)}),this.view.on(`key-down`,e=>this._handleKeyDown(e),S.DEFAULT),o(()=>{let{stagedViewshed:e}=this;return{stagedViewshed:e,stagedViewshedInAnalysis:e!=null&&this.analysis.viewsheds.includes(e)}},({stagedViewshed:e,stagedViewshedInAnalysis:t})=>{e!=null&&!t&&this.analysis.viewsheds.add(e)},s)])}destroy(){this._cancelPlacementOperation()}get updating(){return!!this._drawTool?.updating}get active(){return!!this._drawTool?.active}get _elevationModeContext(){let e=this;return{get mode(){return e._observerDrawToolElevationInfo.mode},get disabled(){return!e._drawTool?.interactiveHandleManager?.focusedHandle?.outputMapPosition},onChange:e=>this.setElevationMode(e)}}setElevationMode(e){let t=this._drawTool,n=t?.interactiveHandleManager?.focusedHandle,r=n?.outputMapPosition;if(this.creationState!==`placing-observer`||!t||!n||!r||e===this._observerDrawToolElevationInfo.mode)return;let i=this.observerPlacementElevationInfo?.clone()??new p;i.mode=e;let a=r.clone();t.activeTooltipInfo?.getConstraintFieldByName(n,`elevation`)?.locked||(a.z=d(this.view,r,this._observerDrawToolElevationInfo,i)),t.defaultZ=a.z,this.observerPlacementElevationInfo=i,t.elevationInfo=i,n.inputMapPosition=a.clone(),n.selectedSnappingResult=null,n.outputMapPosition=a}startPlaceOperation(e,t){this._removeStaged(),this.creationState=null,this._rejectPlaceOperation(r()),i(t);let{resolve:n,reject:o,promise:s}=Promise.withResolvers(),c=a(t,()=>this._cancelPlacementOperation());this._placeOperation=new _({abortHandle:c,reject:o,resolve:n}),this.placementMode=e;let l=t?.elevationInfo;return this.observerPlacementElevationInfo=l?new p({featureExpressionInfo:l.featureExpressionInfo,mode:l.mode,offset:l.offset,unit:l.unit}):null,this.callbacks.setSelectedViewshed(null),this._startObserverPlacement(),s}cancelPlaceOperation(){(this.creationState!=null||this._placeOperation!=null)&&(this._cancelPlacementOperation(),this.callbacks.cancelTool())}_handleDeleteDuringCreation(){return this.creationState!=null&&(this._destroyDrawTool(),this._removeStaged(),this.callbacks.setSelectedViewshed(null),this._startObserverPlacement(),!0)}_handleKeyDown(e){this.creationState!=null&&(C.cancel===e.key?(this._handleCancelDuringCreation(),e.stopPropagation(),e.preventDefault()):C.delete.includes(e.key)&&(this._handleDeleteDuringCreation(),e.stopPropagation(),e.preventDefault()))}_handleCancelDuringCreation(){this._removeStaged()&&this.placementMode===`multiple`?(this.callbacks.setSelectedViewshed(null),this._startObserverPlacement()):(this._destroyDrawTool(),this._abortCreation())}_removeStaged(){let{stagedViewshed:e}=this;return this.stagedViewshed=null,e?(this.analysis.viewsheds.remove(e),!0):!1}_cancelPlacementOperation(){this._destroyDrawTool(),this._removeStaged(),this.creationState=null,this._finishPlaceOperation()}_abortCreation(){this.callbacks.cancelTool(),this.creationState=null,this._finishPlaceOperation()}_handleObserverPlacementComplete(e,n,r){let i=new t({observer:e,elevationInfo:this.observerPlacementElevationInfo,feature:r});this.analysis.viewsheds.add(i),this.stagedViewshed=i,this.creationState=`placing-target`,this._updateStagedViewshed(n),this.callbacks.setSelectedViewshed(null)}_onCancel(e){let t=this._removeStaged();if(this.creationState===`placing-observer`){if(t&&this.placementMode===`multiple`){this.callbacks.setSelectedViewshed(null),this._startObserverPlacement();return}this._destroyDrawTool(e),this._abortCreation()}else t?(this.creationState=`placing-observer`,this.callbacks.setSelectedViewshed(null),this.placementMode===`multiple`?this._startPointPlacement():(this._destroyDrawTool(e),this._abortCreation())):(this._destroyDrawTool(e),this._abortCreation())}_handleTargetPlacementComplete(e){this._updateStagedViewshed(e);let t=this.stagedViewshed;return t?.valid?(this._placeOperation?.markPlacedViewshed(),this.stagedViewshed=null,this.callbacks.setSelectedViewshed(t),!0):!1}_finishPlaceOperation(){this._clearPlaceOperationAndRun(e=>e?.finish())}_rejectPlaceOperation(e){this._clearPlaceOperationAndRun(t=>t?.reject(e))}_clearPlaceOperationAndRun(e){let t=this._placeOperation;this._placeOperation=null,this.observerPlacementElevationInfo=null,e(t)}_startObserverPlacement(){this.creationState=`placing-observer`,this._startPointPlacement()}_startPointPlacement(){this._drawTool&&this._destroyDrawTool(this._drawTool);let{drawTool:e,renderer:t}=m({analysisViewData:this.analysisViewData,snappingManager:this.snappingManager,view:this.view,toolOptions:this._toolOptions,elevationInfo:this._observerDrawToolElevationInfo,onCancel:e=>this._onCancel(e),onComplete:e=>this._onComplete(e),onManipulatorCountChange:e=>this._onManipulatorCountChange(e),isPlacingObserver:()=>this.creationState===`placing-observer`});this._drawTool=e,this._renderer=t;try{this.view.addAndActivateTool(e),e.begin([v({mode:this.placementMode,onObserverComplete:(e,t)=>this._onObserverMapPointComplete(e,t),onTargetComplete:e=>this._onTargetMapPointComplete(e),onObserverPreview:e=>this._onObserverMapPointPreview(e),onTargetPreview:e=>this._onTargetMapPointPreview(e)})])}catch(t){this._destroyDrawTool(e),this._rejectPlaceOperation(t instanceof Error?t:Error(String(t)))}}_onComplete(e){this._removeStaged(),this._finishPlaceOperation(),this._destroyDrawTool(e),this.creationState=null}_onObserverMapPointComplete(e,t){let{intersector:n,snappingManager:r,view:i}=this,a=e.clone(),o=this._toScenePoint(e,this._targetScenePoint,this._observerDrawToolElevationInfo),s=h({intersector:n,snappingManager:r,screenPoint:t,view:i});this._renderer?.updatePlacementLocation(o),this._handleObserverPlacementComplete(a,o,s),this._setDrawToolElevationInfo(f)}_onTargetMapPointComplete(e){let t=this._toScenePoint(e,this._targetScenePoint);return this._renderer?.updatePlacementLocation(t),this._handleTargetPlacementComplete(t)?(this.placementMode===`multiple`&&(this.creationState=`placing-observer`,this._setDrawToolElevationInfo(this._observerDrawToolElevationInfo),this._onObserverMapPointPreview(e)),!0):!1}_onObserverMapPointPreview(e){let t=e.clone(),n=this._toScenePoint(t,this._observerScenePoint,this._observerDrawToolElevationInfo);this._renderer?.updatePlacementLocation(n)}_onTargetMapPointPreview(e){let t=this._toScenePoint(e,this._targetScenePoint);this._renderer?.updatePlacementLocation(t),this._updateStagedViewshed(t)}_setDrawToolElevationInfo(e){let t=this._drawTool;t&&(t.elevationInfo=e)}get _observerDrawToolElevationInfo(){return this.observerPlacementElevationInfo??f}_onManipulatorCountChange(e){e.removeHandles(E);let t=[];e.manipulators.forEach(({manipulator:e})=>{e instanceof x&&t.push(e.disableDisplay())}),e.addHandles(t,E)}_destroyDrawTool(e=this._drawTool){this._drawTool=null,this._renderer=null,e&&g(this.view,e)}_toScenePoint(e,t,n=f){let{x:r,y:i,z:a,spatialReference:o}=e,s=this._mapPointVector;return s[0]=r,s[1]=i,s[2]=a??0,b(s,o,n,this.view,t)}_updateStagedViewshed(e){let t=this.stagedViewshed;if(!t)return;let n=this.callbacks.findViewshedComputedData(t);if(!n)return;let{heading:r,tilt:i,farDistance:a}=y(this.view,n,e);t.farDistance=a,t.tilt=i,t.heading=r}get test(){}};e([c({constructOnly:!0})],D.prototype,`analysis`,void 0),e([c({constructOnly:!0})],D.prototype,`analysisViewData`,void 0),e([c({constructOnly:!0})],D.prototype,`intersector`,void 0),e([c({constructOnly:!0})],D.prototype,`snappingManager`,void 0),e([c({constructOnly:!0})],D.prototype,`view`,void 0),e([c({constructOnly:!0})],D.prototype,`callbacks`,void 0),e([c()],D.prototype,`placementMode`,void 0),e([c()],D.prototype,`observerPlacementElevationInfo`,void 0),e([c()],D.prototype,`stagedViewshed`,void 0),e([c()],D.prototype,`_placeOperation`,void 0),e([c()],D.prototype,`_drawTool`,void 0),e([c()],D.prototype,`_renderer`,void 0),e([c()],D.prototype,`_toolOptions`,void 0),e([c()],D.prototype,`updating`,null),e([c()],D.prototype,`active`,null),e([c()],D.prototype,`creationState`,void 0),e([c()],D.prototype,`_elevationModeContext`,null),D=e([l(`esri.views.3d.analysis.Viewshed.ViewshedPlacementController`)],D);export{D as ViewshedPlacementController};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type ElevationInfo from "../../../../symbols/support/ElevationInfo.js";
|
|
2
2
|
import type { AbortOptions } from "../../../../core/promiseUtils.js";
|
|
3
|
+
import type { ElevationInfoProperties } from "../../../../symbols/support/ElevationInfo.js";
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Options for placing a viewshed interactively.
|
|
@@ -9,10 +10,11 @@ import type { AbortOptions } from "../../../../core/promiseUtils.js";
|
|
|
9
10
|
export interface ViewshedPlacementOptions extends AbortOptions {
|
|
10
11
|
/**
|
|
11
12
|
* Specifies how the placed viewshed observer is positioned on the vertical axis (z).
|
|
13
|
+
* Accepts an [ElevationInfo](https://developers.arcgis.com/javascript/latest/references/core/symbols/support/ElevationInfo/) instance or a plain object with elevation information properties.
|
|
12
14
|
*
|
|
13
15
|
* @since 5.2
|
|
14
16
|
*/
|
|
15
|
-
elevationInfo?: ElevationInfo | null;
|
|
17
|
+
elevationInfo?: ElevationInfo | ElevationInfoProperties | null;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
/**
|
|
@@ -36,8 +36,8 @@ export default class Environment extends WebSceneEnvironment {
|
|
|
36
36
|
get lighting(): LightingUnion;
|
|
37
37
|
set lighting(value: ((SunLightingProperties & { type?: "sun" }) | (VirtualLightingProperties & { type: "virtual" })));
|
|
38
38
|
/**
|
|
39
|
-
* Indicates if weather visualization is available. This read-only property is
|
|
40
|
-
*
|
|
39
|
+
* Indicates if weather visualization is available. This read-only property is `true` only in global scenes at low
|
|
40
|
+
* altitudes. It is `false` in local scenes or at high altitudes.
|
|
41
41
|
*
|
|
42
42
|
* @since 5.0
|
|
43
43
|
*/
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import{destroyHandle as t}from"../../../core/handleUtils.js";import{clone as n}from"../../../core/lang.js";import{property as r,cast as i,subclass as a}from"../../../core/accessorSupport/decorators.js";import{ensureOneOfType as o}from"../../../core/accessorSupport/ensureType.js";import{lightingTypes as s}from"./lightingUtils.js";import c from"./SunLighting.js";import l from"./VirtualLighting.js";import u from"../../../webscene/Environment.js";import d from"../../../webscene/SunLighting.js";import f from"../../../webscene/VirtualLighting.js";var p;let m=class extends u{static{p=this}constructor(e){super(e),this.lighting=this.castLighting(),this.
|
|
2
|
+
import{__decorate as e}from"tslib";import{destroyHandle as t}from"../../../core/handleUtils.js";import{clone as n}from"../../../core/lang.js";import{property as r,cast as i,subclass as a}from"../../../core/accessorSupport/decorators.js";import{ensureOneOfType as o}from"../../../core/accessorSupport/ensureType.js";import{lightingTypes as s}from"./lightingUtils.js";import c from"./SunLighting.js";import l from"./VirtualLighting.js";import u from"../../../webscene/Environment.js";import d from"../../../webscene/SunLighting.js";import f from"../../../webscene/VirtualLighting.js";var p;let m=class extends u{static{p=this}constructor(e){super(e),this.lighting=this.castLighting(),this._weatherAvailable=!1,this.cachedCameraTrackingEnabled=null}static fromWebsceneEnvironment(e){let t=e.cloneConstructProperties();return new p({...t,lighting:t.lighting?t.lighting.type===`virtual`?l.fromWebsceneLighting(t.lighting):c.fromWebsceneLighting(t.lighting):void 0})}get weatherAvailable(){return this._weatherAvailable}setWeatherAvailable(e){this._weatherAvailable=e}castLighting(e){return this._convertLightingWithDestroy(e)}applyLighting(e){this.lighting=this._convertLightingWithDestroy(e)}_convertLightingWithDestroy(e){let n=this._convertLighting(e);return n!==e&&this.addHandles(t(n)),n}_convertLighting(e){return e?e instanceof c||e instanceof l?e:e instanceof d?this.lighting&&this.lighting.type!==`virtual`?this.lighting.cloneWithWebsceneLighting(e):new c({...e.cloneConstructProperties(),...this.lighting?.cloneNonPersistentConstructProperties()}):e instanceof f?this.lighting&&this.lighting.type===`virtual`?this.lighting.cloneWithWebsceneLighting(e):new l({...e.cloneConstructProperties(),...this.lighting?.cloneNonPersistentConstructProperties()}):o(s,e):new c}clone(){return new p({lighting:this.lighting.clone(),weather:this.weather.clone(),atmosphereEnabled:this.atmosphereEnabled,starsEnabled:this.starsEnabled,background:n(this.background)})}cloneWithWebsceneEnvironment(e){return new p({weather:this.weather.clone(),atmosphereEnabled:this.atmosphereEnabled,starsEnabled:this.starsEnabled,background:n(this.background),...e.cloneConstructProperties(),lighting:this._getLighting(e)})}_getLighting(e){switch(e.lighting.type){case`sun`:return this.lighting&&this.lighting.type===`sun`?this.lighting.cloneWithWebsceneLighting(e.lighting):c.fromWebsceneLighting(e.lighting);case`virtual`:return this.lighting&&this.lighting.type===`virtual`?this.lighting.cloneWithWebsceneLighting(e.lighting):l.fromWebsceneLighting(e.lighting);default:return e.lighting,c.fromWebsceneLighting(e.lighting)}}};e([r({types:{defaultKeyValue:`sun`,...s},nonNullable:!0})],m.prototype,`lighting`,void 0),e([r({readOnly:!0})],m.prototype,`weatherAvailable`,null),e([r()],m.prototype,`_weatherAvailable`,void 0),e([i(`lighting`)],m.prototype,`castLighting`,null),m=p=e([a(`esri.views.3d.environment.Environment`)],m);const h=m;export{h as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
+
import{__decorate as e}from"tslib";import{EventedAccessor as t}from"../../../core/Evented.js";import{watch as n,sync as r,syncAndInitial as i,when as a}from"../../../core/reactiveUtils.js";import{property as o,subclass as s}from"../../../core/accessorSupport/decorators.js";import{length as c,equals as l,copy as u,scale as d,lerp as f}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{clone as p,create as m,fromValues as h}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{isEarth as g,getReferenceEllipsoid as _}from"../../../geometry/ellipsoidUtils.js";import{isLoadedOrLoadFor as v}from"../../../geometry/projectionUtils.js";import y from"../../../geometry/SpatialReference.js";import{projectPointToVector as b}from"../../../geometry/projection/projectPointToVector.js";import{getGCSForPlanet as x}from"../../../geometry/support/planetGCSUtils.js";import{heightLimit as S}from"./weather.js";import{positionToTimezoneInfo as C}from"../support/earthUtils.js";import{ColorAndIntensity as w,computeShadowsEnabled as T,computeColorAndIntensity as E,computeVirtualLightDirection as D}from"../support/sunUtils.js";import{MainLight as O,AmbientLight as k,FillLight as A}from"../webgl-engine/lighting/Lightsources.js";let j=class extends t{constructor(){super(),this._view=null,this._tmpLightParameters=new w,this._defaultLightParameters=new w,this._tmpDate=new Date,this._tmpTz={hours:0,minutes:0,seconds:0},this._viewHandlesKey=`viewHandles`,this._trackingEnabled=!1,this._mainLight=new O,this._ambientLight=new k,this._moonLight=new A,this.shadowsAvailable=!1,this._resetReferencePosition()}destroy(){this.disconnectView()}get updating(){return!this._canProjectCameraPosition}get weatherEnabled(){return this._view?.stage?.renderer?.weatherFader!=null&&this._view.environment.atmosphereEnabled&&this._view.state.viewingMode===1&&g(this._view.spatialReference)}get _weatherAvailable(){let e=this._view;return e!=null&&this.weatherEnabled&&c(e.state.camera.eye)-_(e.spatialReference).radius<=S}get weather(){return this._weatherAvailable?this._view?.environment.weather:null}_modifyShadowsAvailable(){if(this._view==null)return;let e=this.referencePositionGeographic,t=e==null||T(e[2],this._view.state.viewingMode);this.shadowsAvailable=this._view.environment.lighting.directShadowsEnabled&&t}get referencePositionGeographic(){return this._referencePositionGeographic}get _canProjectCameraPosition(){let e=this._view?.stateManager?.camera?.position?.spatialReference??y.WGS84,t=x(e);return v(e,t)}connectView(e){this._view=e,this.addHandles([n(()=>e.environment.lighting,e=>this._updateLightingHandler(e),r),n(()=>e.environment.lighting.type===`virtual`?null:e.environment.lighting.date,e=>this._lightingDateHandler(e),r),n(()=>e.environment.lighting.directShadowsEnabled,()=>this._modifyShadowsAvailable(),r),n(()=>e.spatialReference,()=>this._resetReferencePosition(!0),r),n(()=>[e.environment.weather.type,this.weatherEnabled],()=>this._updateLighting(null,1),r),n(()=>this._weatherAvailable,t=>e.environment.setWeatherAvailable(t),i),n(()=>e.viewingMode,()=>this._resetReferencePosition(!0),i),n(()=>e.environment.lighting.type!==`virtual`&&e.environment.lighting.cameraTrackingEnabled,e=>this._updateCameraTracking(e),i),n(()=>e.state.camera,()=>this._cameraHandler(),i),a(()=>this._canProjectCameraPosition,()=>this._resetReferencePosition(!0),r)],this._viewHandlesKey),this._modifyShadowsAvailable(),this._updateLighting(),this._cameraHandler(),this.notifyChange(`updating`)}disconnectView(){this.removeHandles(this._viewHandlesKey),this._resetReferencePosition()}_updateLightingHandler(e){this._updateCameraTracking(e.type!==`virtual`&&e.cameraTrackingEnabled),this._lightingDateHandler(e.type===`virtual`?null:e.date),this._modifyShadowsAvailable()}_updateCameraTracking(e){if(this._trackingEnabled=e,e)this._cameraHandler();else{if(!this._view)return;let e=this._view.environment.lighting;e?.type!==`virtual`&&(e.positionTimezoneInfo.autoUpdated=!1)}}_lightingDateHandler(e){if(!this._view)return;let t=this._view.environment.lighting;if(t?.type===`virtual`)this._updateLighting();else if(e){if(!t.positionTimezoneInfo.autoUpdated&&(this._preupdateTracking(e),this._referencePositionGeographic!=null)){let e=C(this._referencePositionGeographic,this._tmpTz);e!=null&&(t.autoUpdate(null,e),this._trackingEnabled&&(t.positionTimezoneInfo.autoUpdated=!0))}this._updateLighting(e)}}_preupdateTracking(e){this._view&&!this._trackingEnabled&&this._view.environment.lighting.type!==`virtual`&&this._view.environment.lighting.cameraTrackingEnabled&&this._cameraHandler(e)}_cameraHandler(e=null){let t=this._view;if(!t||!t.ready)return;let n=t.stateManager.camera;if(!n)return;let r=n.position,i=r.spatialReference??y.WGS84,a=x(i);if(b(r,P,a,F))this._referencePositionGeographic?l(this._referencePositionGeographic,P)||(u(this._referencePositionGeographic,P),this.notifyChange(`referencePositionGeographic`)):this._referencePositionGeographic=p(P),this._autoUpdateTimezone(this._referencePositionGeographic,e)||this._updateLighting(e);else{if(this._referencePositionGeographic==null)return;this._referencePositionGeographic=null,this._updateLighting()}}_updateLighting(e,t=0){let n=this._view;if(!n)return;let{lighting:r}=n.environment,i=r.type===`virtual`,a=this._referencePositionGeographic,o=a==null?this._defaultLightParameters:this._tmpLightParameters;if(a){e??=i?null:r.date;let t=this.weather?.type??`disabled`;E(e,a,n.state.viewingMode,t,n.state.camera,o)}else i&&D(n.state.camera,n.state.viewingMode,o.direct.directionToLightSource);let s=this._mainLight,c=o.direct;d(s.intensity,c.color,c.intensity*Math.PI),u(s.direction,c.directionToLightSource),s.specularStrength=o.specularStrength,s.environmentStrength=o.environmentStrength;let l=this._ambientLight;d(l.intensity,o.ambient.color,o.ambient.intensity);let p=this._moonLight;f(p.intensity,M,N,o.globalFactor);let m=(1-.5*o.globalFactor)*(1-.4*o.noonFactor*(1-o.globalFactor));d(p.intensity,p.intensity,m),u(p.direction,c.directionToLightSource),n.stage.renderer.updateLighting([s,l,p],o.noonFactor,o.globalFactor,this.weather?t:0),this._modifyShadowsAvailable()}_autoUpdateTimezone(e,t=null){if(!this._view||this._view.environment.lighting.type===`virtual`||!this._view.environment.lighting.cameraTrackingEnabled||e==null)return!1;let n=this._tmpDate;n.setTime((t||this._view.environment.lighting.date).getTime());let r=C(e,this._tmpTz);if(r==null)return!1;let i=this._view.environment.lighting.positionTimezoneInfo;if(!i.autoUpdated)i=r;else if(i.hours===r.hours&&i.minutes===r.minutes&&i.seconds===r.seconds)return!1;let a=n.getUTCHours()-(r.hours-i.hours),o=n.getUTCMinutes()-(r.minutes-i.minutes),s=n.getUTCSeconds()-(r.seconds-i.seconds);return n.setUTCHours(a),n.setUTCMinutes(o),n.setUTCSeconds(s),!t&&this._view.environment.lighting.autoUpdate(n,r)}_resetReferencePosition(e=!1){this._referencePositionGeographic=null,e&&this._cameraHandler()}};e([o()],j.prototype,`_view`,void 0),e([o({type:Boolean,readOnly:!0})],j.prototype,`updating`,null),e([o()],j.prototype,`weatherEnabled`,null),e([o()],j.prototype,`_weatherAvailable`,null),e([o()],j.prototype,`shadowsAvailable`,void 0),e([o()],j.prototype,`referencePositionGeographic`,null),e([o()],j.prototype,`_referencePositionGeographic`,void 0),e([o()],j.prototype,`_canProjectCameraPosition`,null),j=e([s(`esri.views.3d.environment.EnvironmentView`)],j);const M=h(.22,.22,.33),N=h(.22,.22,.22),P=m(),F={zConversionDisabled:!0};export{j as EnvironmentView};
|