@arcgis/core 6.0.0-next.26 → 6.0.0-next.28
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/Map.d.ts +6 -0
- package/analysis/AreaMeasurementAnalysis.d.ts +4 -2
- package/analysis/DirectLineMeasurementAnalysis.d.ts +8 -4
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/0363d29fc665d169ebc4.js +1 -0
- package/assets/esri/core/workers/chunks/037c67ef5c4398d5954d.js +1 -0
- package/assets/esri/core/workers/chunks/03f33cb78b5405ab7e23.js +1 -0
- package/assets/esri/core/workers/chunks/07b726a46864501b90a0.js +1 -0
- package/assets/esri/core/workers/chunks/0864da8f8f147016cf1c.js +1 -0
- package/assets/esri/core/workers/chunks/{768389f7f8dba6080df7.js → 0cc7fba402a93e6d2455.js} +2 -2
- package/assets/esri/core/workers/chunks/0cfdeb53fb7d5532cf01.js +1 -0
- package/assets/esri/core/workers/chunks/112ed86f812e4400a7e0.js +1 -0
- package/assets/esri/core/workers/chunks/177f353ce72133e2eeed.js +1 -0
- package/assets/esri/core/workers/chunks/1dc6f093028530a492e6.js +1 -0
- package/assets/esri/core/workers/chunks/2294254af2c6afb560ee.js +1 -0
- package/assets/esri/core/workers/chunks/23a4806b4cdf7cc32e4d.js +1 -0
- package/assets/esri/core/workers/chunks/2447d2e2a4a3ab8fcf94.js +1 -0
- package/assets/esri/core/workers/chunks/271ae7deccb94112c2df.js +1 -0
- package/assets/esri/core/workers/chunks/2df37a9a95ceebb87a5f.js +1 -0
- package/assets/esri/core/workers/chunks/2e00c155e447e4930442.js +1 -0
- package/assets/esri/core/workers/chunks/2e9a1673b1d51aa082b6.js +1 -0
- package/assets/esri/core/workers/chunks/344f5334ad95c7974349.js +1 -0
- package/assets/esri/core/workers/chunks/348f1def9cd2ddf92e87.js +1 -0
- package/assets/esri/core/workers/chunks/{8e4206068c6953bb7df2.js → 3a47fc97c400fca2c736.js} +1 -1
- package/assets/esri/core/workers/chunks/47c97640ec525676918b.js +1 -0
- package/assets/esri/core/workers/chunks/50763ea061d5fb3f2e49.js +1 -0
- package/assets/esri/core/workers/chunks/518ab22f80c3300bcfff.js +1 -0
- package/assets/esri/core/workers/chunks/58609bf94f72bc4f1952.js +1 -0
- package/assets/esri/core/workers/chunks/586a929bc037e23857af.js +1 -0
- package/assets/esri/core/workers/chunks/58d10e0b35968680fd9f.js +1 -0
- package/assets/esri/core/workers/chunks/59bc55880e6fd8ce20c0.js +1 -0
- package/assets/esri/core/workers/chunks/{7c75a8ee266c36baa902.js → 5eec1c1162779574f46e.js} +1 -1
- package/assets/esri/core/workers/chunks/62a0abcf45a2bd14ecbe.js +1 -0
- package/assets/esri/core/workers/chunks/63c4412c16d8a44a5668.js +1 -0
- package/assets/esri/core/workers/chunks/6b4c3411f63a9ad9354c.js +1 -0
- package/assets/esri/core/workers/chunks/{f528ac5c648ca6a98582.js → 711cfb84659cb4437679.js} +1 -1
- package/assets/esri/core/workers/chunks/{9dd1fc56eb1ea6eb705e.js → 76e27e36050a3dd9d249.js} +1 -1
- package/assets/esri/core/workers/chunks/76f877e2d2493d56afab.js +1 -0
- package/assets/esri/core/workers/chunks/77463141652bf1ca6fb2.js +1 -0
- package/assets/esri/core/workers/chunks/7d3f7940815fa5dc244e.js +1 -0
- package/assets/esri/core/workers/chunks/914a0b5d9fef683cdf9c.js +1 -0
- package/assets/esri/core/workers/chunks/96f87c8efd4b11b37686.js +1 -0
- package/assets/esri/core/workers/chunks/97ec46605f16333144b7.js +1 -0
- package/assets/esri/core/workers/chunks/{7b482afb9fd1229f5707.js → 9934e8e19f94e9169eea.js} +1 -1
- package/assets/esri/core/workers/chunks/99f51d5d9da6e9bfc430.js +1 -0
- package/assets/esri/core/workers/chunks/9aebe876b1a2fb075f9c.js +1 -0
- package/assets/esri/core/workers/chunks/9c3db7a7c05fa0e81f0a.js +1 -0
- package/assets/esri/core/workers/chunks/{6f1d6453184e0a1530ad.js → 9c4961213ac6ec283dd9.js} +25 -25
- package/assets/esri/core/workers/chunks/a2cc53ad1a514167e4b8.js +1 -0
- package/assets/esri/core/workers/chunks/a33ba23aee3f8f40200f.js +1 -0
- package/assets/esri/core/workers/chunks/{45ba4aa87a4732198596.js → b13d8f4e4e80ef00b1bd.js} +1 -1
- package/assets/esri/core/workers/chunks/b3801d58c024224917df.js +1 -0
- package/assets/esri/core/workers/chunks/b3aa29589dcfb5b93106.js +1 -0
- package/assets/esri/core/workers/chunks/b3dbcf43f136ba2dadc5.js +1 -0
- package/assets/esri/core/workers/chunks/b9596d862da1ec342cd3.js +1 -0
- package/assets/esri/core/workers/chunks/bc1fcc9c897461e68e29.js +1 -0
- package/assets/esri/core/workers/chunks/{8b4e9fd88c0c313416d4.js → be04f40f8b403befd0ef.js} +1 -1
- package/assets/esri/core/workers/chunks/{150e7a7bd5df25693da7.js → c90388932a7825d9d933.js} +1 -1
- package/assets/esri/core/workers/chunks/ca21786e519c914fc9e1.js +1 -0
- package/assets/esri/core/workers/chunks/cdb5c26fed7d9a97db49.js +1 -0
- package/assets/esri/core/workers/chunks/cdf0c7706d3e1221f49b.js +1 -0
- package/assets/esri/core/workers/chunks/d63e181f0e48bde73395.js +1 -0
- package/assets/esri/core/workers/chunks/d77888c84a8b49478807.js +1 -0
- package/assets/esri/core/workers/chunks/d7f2f1708d2a2668676c.js +1 -0
- package/assets/esri/core/workers/chunks/{13c64087be3b2985a21b.js → dbda982485d3fe26c729.js} +1 -1
- package/assets/esri/core/workers/chunks/dc7aa0a1eb6c6e361f9f.js +1 -0
- package/assets/esri/core/workers/chunks/ec1c4d66142b6efb0e8b.js +1 -0
- package/assets/esri/core/workers/chunks/ef2c3febcceedc44b3ac.js +1 -0
- package/assets/esri/core/workers/chunks/f08a2a262a3b55149396.js +1 -0
- package/assets/esri/core/workers/chunks/f2d56f5c15d5977e1d19.js +1 -0
- package/assets/esri/core/workers/chunks/ffe2077a9df7c838ea27.js +1 -0
- package/assets/esri/layers/raster/formats/lerc-wasm.wasm +0 -0
- package/chunks/BlendLayers.glsl.js +1 -1
- package/chunks/Component.glsl.js +9 -12
- package/chunks/GaussianSplat.glsl.js +65 -21
- package/chunks/GaussianSplatDepth.glsl.js +45 -4
- package/chunks/GaussianSplatShadow.glsl.js +73 -19
- package/chunks/GlobalIllumination.glsl.js +17 -47
- package/chunks/LineMarker.glsl.js +32 -31
- package/chunks/OITAddEmission.glsl.js +1 -1
- package/chunks/RasterColorizer.glsl.js +1 -1
- package/chunks/RibbonLine.glsl.js +36 -36
- package/chunks/Terrain.glsl.js +3 -4
- package/chunks/Water.glsl.js +22 -23
- package/config.js +1 -1
- package/core/ReentrantObjectPool.js +1 -1
- package/core/memoryEstimations.js +1 -1
- package/core/workers/workers.js +2 -2
- package/core/workers.d.ts +1 -1
- package/form/elements/inputs/DynamicChoiceInput.d.ts +2 -2
- package/form/elements/inputs.d.ts +126 -25
- package/form/elements/inputs.js +1 -1
- package/form/elements.d.ts +1 -0
- package/geometry/operators/containsOperator.d.ts +1 -1
- package/geometry/operators/densifyOperator.d.ts +1 -1
- package/geometry/operators/differenceOperator.d.ts +6 -4
- package/geometry/operators/distanceOperator.d.ts +1 -1
- package/geometry/operators/geodesicProximityOperator.d.ts +8 -8
- package/geometry/operators/graphicBufferOperator.d.ts +6 -6
- package/geometry/operators/integrateOperator.d.ts +2 -2
- package/geometry/operators/intersectsOperator.d.ts +3 -3
- package/geometry/operators/linesToPolygonsOperator.d.ts +2 -2
- package/geometry/operators/locateBetweenOperator.d.ts +2 -2
- package/geometry/operators/minimumBoundingCircleOperator.d.ts +1 -1
- package/geometry/operators/multiPartToSinglePartOperator.d.ts +2 -2
- package/geometry/operators/polygonSlicerOperator.d.ts +2 -2
- package/geometry/operators/projectOperator.d.ts +2 -2
- package/geometry/operators/proximityOperator.d.ts +15 -15
- package/geometry/operators/shapePreservingProjectOperator.d.ts +2 -2
- package/geometry/operators/simplifyOperator.d.ts +2 -2
- package/geometry/operators/support/GeographicTransformationStep.d.ts +3 -3
- package/geometry/operators/support/Transformation.d.ts +8 -8
- package/geometry/operators/support/geographicTransformationUtils.d.ts +3 -3
- package/geometry/operators/symmetricDifferenceOperator.d.ts +2 -2
- package/geometry/operators/withinOperator.d.ts +3 -3
- package/geometry/support/Indices.js +1 -1
- package/graphic/MapNotesGraphicOrigin.d.ts +1 -0
- package/kernel.js +1 -1
- package/layers/GeospatialPDFLayer.d.ts +2 -2
- package/layers/GeospatialPDFLayer.js +1 -1
- package/layers/MapNotesLayer.d.ts +3 -2
- package/layers/ParquetLayer.d.ts +1 -1
- package/layers/VectorTileLayer.d.ts +10 -1
- package/layers/buildingSublayers/BuildingGroupSublayer.d.ts +2 -1
- package/layers/geospatialPDF/CIM2DLayerview.js +2 -0
- package/layers/geospatialPDF/GeospatialPDFFrame.js +1 -1
- package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
- package/layers/mixins/SublayersOwner.js +1 -1
- package/layers/orientedImagery/transformations/imageToWorld.js +1 -1
- package/layers/orientedImagery/transformations/rectifyMapPoint.js +1 -1
- package/layers/support/Sublayer.d.ts +2 -2
- package/layers/support/Sublayer.js +1 -1
- package/layers/support/SubtypeSublayer.js +1 -1
- package/layers/support/layerUtils.js +1 -1
- package/package.json +3 -3
- package/popup/FeaturesModel.js +1 -1
- package/popup/support/featureUtils.js +1 -1
- package/rest/featureService/FeatureService.d.ts +0 -5
- package/rest/networks/support/TraceLocation.d.ts +2 -1
- package/rest/networks/support/TraceResult.d.ts +0 -4
- package/rest/support/AttributeBinsQuery.d.ts +3 -2
- package/rest/support/ImageGPSInfoParameters.d.ts +2 -1
- package/rest/support/OutDistance.d.ts +2 -2
- package/rest/support/Query.d.ts +3 -2
- package/rest/support/TopFeaturesQuery.d.ts +2 -1
- package/rest/support/types.d.ts +10 -1
- package/smartMapping/raster/renderers/flow.d.ts +2 -1
- package/smartMapping/renderers/color.d.ts +11 -8
- package/smartMapping/renderers/location.d.ts +7 -4
- package/smartMapping/renderers/predominance.d.ts +7 -4
- package/smartMapping/renderers/relationship.d.ts +7 -4
- package/smartMapping/renderers/size.d.ts +6 -4
- package/smartMapping/renderers/type.d.ts +7 -4
- package/smartMapping/renderers/types.d.ts +15 -0
- package/smartMapping/renderers/univariateColorSize.d.ts +4 -2
- package/smartMapping/statistics/histogramForTimeSeries.js +1 -1
- package/smartMapping/statistics/summaryStatisticsForTimeSeries.js +1 -1
- package/smartMapping/symbology/flow.d.ts +2 -1
- package/smartMapping/symbology/types.d.ts +2 -1
- package/support/BasemapStyle.d.ts +2 -2
- package/symbols/cim/CIMCursor.js +1 -1
- package/symbols/cim/types.d.ts +7 -9
- package/tables/elements.d.ts +1 -0
- package/views/2d/engine/vectorTiles/TileHandler3D.js +1 -1
- package/views/2d/engine/webgl/animations/instructions.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/mesh/MeshWriterVertexPack.js +1 -1
- package/views/2d/engine/webgl/textureUtils.js +1 -1
- package/views/2d/layers/GeospatialPDFLayerView2D.js +1 -1
- package/views/2d/layers/MediaLayerView2D.js +1 -1
- package/views/2d/layers/TileLayerView2D.js +1 -1
- package/views/2d/layers/features/schema/processor/symbols/ComplexSymbolSchema.js +1 -1
- package/views/3d/analysis/AreaMeasurement/support/AreaMeasurementPathHelper.js +1 -1
- package/views/3d/analysis/AreaMeasurement/support/MeasurementData.js +1 -1
- package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementController.js +1 -1
- package/views/3d/analysis/support/projectionUtils.js +1 -1
- package/views/3d/environment/SunLighting.d.ts +15 -2
- package/views/3d/environment/VirtualLighting.d.ts +15 -2
- package/views/3d/input/SceneInputManager.js +1 -1
- package/views/3d/input/handlers/ground/GroundMouseWheelMove.js +2 -0
- package/views/3d/interactive/editingTools/reshape/ReshapeOperation.js +1 -1
- package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DTool.js +1 -1
- package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DView.js +1 -1
- package/views/3d/layers/GeospatialPDFLayerView3D.js +1 -1
- package/views/3d/layers/ImageryTileLayerView3D.js +1 -1
- package/views/3d/layers/graphics/Graphics3DBufferGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
- package/views/3d/layers/graphics/Graphics3DDrapedGraphicLayerBase.js +1 -1
- package/views/3d/layers/graphics/Graphics3DExtrudeSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DFeatureStore.js +1 -1
- package/views/3d/layers/graphics/Graphics3DGraphic.js +1 -1
- package/views/3d/layers/graphics/Graphics3DGraphicCreationContext.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLodInstanceGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DMeshObject3DGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DObject3DGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DStageObjectGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DSymbol.js +1 -1
- package/views/3d/layers/graphics/Labeler.js +1 -1
- package/views/3d/layers/graphics/defaultSymbolComplexity.js +1 -1
- package/views/3d/layers/support/FeatureTileFetcher3D.js +1 -1
- package/views/3d/layers/support/StageLayerElevationProvider.js +1 -1
- package/views/3d/layers/support/featureReference.js +1 -1
- package/views/3d/navigation/Navigation3D.js +1 -1
- package/views/3d/state/controllers/GroundMouseWheelController.js +2 -0
- package/views/3d/state/utils/OffsetCorrectionController.js +1 -1
- package/views/3d/state/utils/groundNavigationUtils.js +1 -1
- package/views/3d/terrain/BlendLayers.glsl.js +1 -1
- package/views/3d/terrain/PatchRenderData.js +1 -1
- package/views/3d/terrain/RasterColorizer.glsl.js +1 -1
- package/views/3d/terrain/TerrainData.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/terrain/TextureFader.js +1 -1
- package/views/3d/terrain/TextureReference.js +1 -1
- package/views/3d/terrain/TileCompositor.js +1 -1
- package/views/3d/terrain/TileRenderInfo.js +1 -1
- package/views/3d/terrain/TileRenderer.js +1 -1
- package/views/3d/terrain/terrainUtils.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTangent.glsl.js +7 -8
- package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +25 -25
- package/views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js +3 -5
- package/views/3d/webgl-engine/core/shaderLibrary/shading/forwardLocalUp.glsl.js +6 -0
- package/views/3d/webgl-engine/core/shaderLibrary/shading/getLocalUp.glsl.js +4 -0
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/TerrainTexture.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/{TileBackground.glsl.js → blendLayers.glsl.js} +10 -11
- package/views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatEvaluation.glsl.js +8 -2
- package/views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
- package/views/3d/webgl-engine/lib/BoundingInfo.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/DirtyEvents.js +1 -1
- package/views/3d/webgl-engine/lib/Geometry.js +1 -1
- package/views/3d/webgl-engine/lib/ManagedTexture.js +1 -1
- package/views/3d/webgl-engine/lib/ModelDirtySet.js +1 -1
- package/views/3d/webgl-engine/lib/Object3D.js +1 -1
- package/views/3d/webgl-engine/lib/PathGeometry.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/TextureBackedBuffer/TextureBuffer.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
- package/views/3d/webgl-engine/lib/geometryMemoryUtils.js +2 -0
- package/views/3d/webgl-engine/materials/Water.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplat.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplatDepth.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +61 -108
- package/views/3d/webgl-engine/shaders/GaussianSplatShadow.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/LineMarker.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/Terrain.glsl.js +1 -1
- package/views/VideoView.js +1 -1
- package/views/draw/DrawOperation.js +1 -1
- package/views/draw/DrawScreenTool.js +1 -1
- package/views/input/types.d.ts +2 -4
- package/views/interactive/options/LabelOptions.d.ts +5 -5
- package/views/interactive/options/SnappingOptions.d.ts +2 -2
- package/views/selection/SelectionOperation.js +1 -1
- package/views/selection/types.d.ts +43 -3
- package/views/support/layerViewUtils.js +1 -1
- package/views/support/selectionUtils.js +1 -1
- package/widgets/BatchAttributeForm/inputs/FieldInput.d.ts +0 -1
- package/widgets/Editor/VisibleElements.d.ts +4 -0
- package/widgets/Editor.d.ts +2 -0
- package/widgets/FeatureTable.js +1 -1
- package/widgets/Features/FeaturesViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/adapters/view/SceneViewAdapter.js +1 -1
- package/widgets/OrientedImageryViewer/services/SuperimposeService.js +1 -1
- package/widgets/OrientedImageryViewer/support/NonPanoramicMedia.js +1 -1
- package/widgets/OrientedImageryViewer/support/dataCaptureUtils.js +1 -1
- package/widgets/OrientedImageryViewer.js +2 -2
- package/widgets/PanoramicViewer/utils.js +1 -1
- package/widgets/Print.js +1 -1
- package/widgets/Search/LayerSearchSource.d.ts +1 -1
- package/widgets/Sketch/VisibleElements.d.ts +4 -0
- package/widgets/Sketch.d.ts +2 -0
- package/widgets/support/SelectionList/GroupLayerItem.d.ts +6 -0
- package/widgets/support/SelectionList/GroupLayerItem.js +1 -1
- package/widgets/support/SelectionList/ItemBase.js +1 -1
- package/widgets/support/SelectionToolbar/SelectionToolbarViewModel.d.ts +6 -1
- package/widgets/support/SelectionToolbar/SelectionToolbarViewModel.js +1 -1
- package/widgets/support/SelectionToolbar.d.ts +8 -1
- package/widgets/support/SelectionToolbar.js +1 -1
- package/widgets/support/Selector2D/selectorUtils.js +1 -1
- package/assets/esri/core/workers/chunks/0320cbd825f9a4222042.js +0 -1
- package/assets/esri/core/workers/chunks/067de1910190da228291.js +0 -1
- package/assets/esri/core/workers/chunks/09bd5df07eab80ae7b15.js +0 -1
- package/assets/esri/core/workers/chunks/164e74d586297946a717.js +0 -1
- package/assets/esri/core/workers/chunks/1c0c5cb13c2590aae906.js +0 -1
- package/assets/esri/core/workers/chunks/1c77de1e79860f8d2228.js +0 -1
- package/assets/esri/core/workers/chunks/24dac4970526a4e0ae63.js +0 -1
- package/assets/esri/core/workers/chunks/2acf2952cef69e382a35.js +0 -1
- package/assets/esri/core/workers/chunks/30dcf2cfb31cb70de7df.js +0 -1
- package/assets/esri/core/workers/chunks/371e2ddb88cc6b9a41e8.js +0 -1
- package/assets/esri/core/workers/chunks/42f6194633c2d879c8da.js +0 -1
- package/assets/esri/core/workers/chunks/44f90e75c1dc3d726a95.js +0 -1
- package/assets/esri/core/workers/chunks/4abd3753cd9b80e4d937.js +0 -1
- package/assets/esri/core/workers/chunks/4bb9a5f4ca944d3fc206.js +0 -1
- package/assets/esri/core/workers/chunks/4c389472b8cdb0c55154.js +0 -1
- package/assets/esri/core/workers/chunks/4d93bed14945e3d34d5c.js +0 -1
- package/assets/esri/core/workers/chunks/4e3f651ac76fcd53df2b.js +0 -1
- package/assets/esri/core/workers/chunks/505227797bcf2a1d908d.js +0 -1
- package/assets/esri/core/workers/chunks/58da3f8cf0f7f6a7e4fa.js +0 -1
- package/assets/esri/core/workers/chunks/5a19a9c3e01d3d415188.js +0 -1
- package/assets/esri/core/workers/chunks/5a830bc35adbedd33783.js +0 -1
- package/assets/esri/core/workers/chunks/6db0f8fe1402643fbe1a.js +0 -1
- package/assets/esri/core/workers/chunks/7124ad8dc5ad40dc66f3.js +0 -1
- package/assets/esri/core/workers/chunks/7446d0dfebf93e86c098.js +0 -1
- package/assets/esri/core/workers/chunks/7c631e2947243e2c9bde.js +0 -1
- package/assets/esri/core/workers/chunks/7f0f9dddc44b1f1600f0.js +0 -1
- package/assets/esri/core/workers/chunks/7fb7493f483cd9878bfa.js +0 -1
- package/assets/esri/core/workers/chunks/8e310e9cb9d84ac3ca2f.js +0 -1
- package/assets/esri/core/workers/chunks/950d4578dc450467404c.js +0 -1
- package/assets/esri/core/workers/chunks/99a0a434ea2162166754.js +0 -1
- package/assets/esri/core/workers/chunks/9afc87474cef1fc4fe4a.js +0 -1
- package/assets/esri/core/workers/chunks/9cbde13e536676767900.js +0 -1
- package/assets/esri/core/workers/chunks/9cd3fcb5fca6f9dbbcd8.js +0 -1
- package/assets/esri/core/workers/chunks/a025ee38d402504193df.js +0 -1
- package/assets/esri/core/workers/chunks/a4b822ee45810c4c292a.js +0 -1
- package/assets/esri/core/workers/chunks/a51576d84edca88e41dd.js +0 -1
- package/assets/esri/core/workers/chunks/ac24b4370dc7194a3107.js +0 -1
- package/assets/esri/core/workers/chunks/ace41659a5ca0e5abfc3.js +0 -1
- package/assets/esri/core/workers/chunks/b01804aa6c47a220a603.js +0 -1
- package/assets/esri/core/workers/chunks/b3273f847405799e3362.js +0 -1
- package/assets/esri/core/workers/chunks/ba3d5abff65aefcb8dee.js +0 -1
- package/assets/esri/core/workers/chunks/bca6b469940b7b954123.js +0 -1
- package/assets/esri/core/workers/chunks/c0d7ae314ebfad1e3791.js +0 -1
- package/assets/esri/core/workers/chunks/c337fc0e6dc69c233e6d.js +0 -1
- package/assets/esri/core/workers/chunks/c8eae00b0ec87d8b2ff3.js +0 -1
- package/assets/esri/core/workers/chunks/cd9aa950cb74b09008fe.js +0 -1
- package/assets/esri/core/workers/chunks/e0d9dc97985561320bd4.js +0 -1
- package/assets/esri/core/workers/chunks/e2775b4b753306dc8477.js +0 -1
- package/assets/esri/core/workers/chunks/eaddffcc7004101fc230.js +0 -1
- package/assets/esri/core/workers/chunks/ebbf425af348e6ede814.js +0 -1
- package/assets/esri/core/workers/chunks/efc53007cd2e4991d7d4.js +0 -1
- package/assets/esri/core/workers/chunks/f46e92c67986c8c09bdd.js +0 -1
- package/assets/esri/core/workers/chunks/f8bc474434fd365ab174.js +0 -1
- package/assets/esri/core/workers/chunks/f8d2225f333524ce1d88.js +0 -1
- package/assets/esri/core/workers/chunks/f95a1f878c9c1146180e.js +0 -1
- package/assets/esri/core/workers/chunks/fb37f0848196c28b7fd7.js +0 -1
- /package/assets/esri/core/workers/chunks/{768389f7f8dba6080df7.js.LICENSE.txt → 0cc7fba402a93e6d2455.js.LICENSE.txt} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__addDisposableResource as e,__disposeResources as t}from"tslib";import{toConst as n}from"../../../../core/compilerUtils.js";import r from"../../../../core/Error.js";import i from"../../../../core/Handles.js";import has from"../../../../core/has.js";import a from"../../../../core/Logger.js";import{onAbortOrThrow as o,throwIfAborted as s}from"../../../../core/promiseUtils.js";import{QueueProcessor as c}from"../../../../core/QueueProcessor.js";import{parseWhereClause as l}from"../../../../core/sql.js";import{getMetersPerUnitForSR as u}from"../../../../core/units.js";import d from"../../../../geometry/SpatialReference.js";import{set as f,create as p,expandWithAABB as m,expandWithRect as ee,negativeInfinity as h}from"../../../../geometry/support/aaBoundingBox.js";import{copy as te,create as g,expandWithRect as ne,negativeInfinity as re}from"../../../../geometry/support/aaBoundingRect.js";import{isWebMercator as _,isWGS84 as v}from"../../../../geometry/support/spatialReferenceUtils.js";import{normalizeColumnPath as y,readParquetFileAttribute as b}from"../../../parquet.js";import{convertToGeometry as x}from"../../featureConversionUtils.js";import{getFieldNamesFromStatistics as S}from"../../data/attributeSupport.js";import{getQueryResultExtent as C,getQueryBoundingRects as w,QueryEngine as T}from"../../data/QueryEngine.js";import{queryCapabilities as ie}from"../../data/QueryEngineCapabilities.js";import{QueryEngineResult as E}from"../../data/QueryEngineResult.js";import{normalizeQueryLike as D}from"../../data/queryUtils.js";import{createFileProvider as O}from"../parquet/createFileProvider.js";import{readFieldStatistic as k}from"../parquet/ParquetFileStatistics.js";import{createDrawingInfo as ae}from"./clientSideDefaults.js";import{getParquetFileId as oe,getParquetRowId as se,getParquetObjectId as ce}from"./parquetIdUtils.js";import A from"../../../support/Field.js";import j from"../../../support/FieldsIndex.js";import{isNumericField as M}from"../../../support/fieldUtils.js";import{fromParquetGeometryEncodingJSON as N}from"../../../support/parquetEncodingUtils.js";import{completeParquetLayerInfo as P,fromParquetJSONGeometryType as F,toParquetJSONGeometryType as I}from"../../../support/parquetUtils.js";import{loadParquetModule as L}from"../../../../libs/librust-parquet/loadParquetModule.js";import{utc as R}from"../../../../time/constants.js";import{FeatureStoreQueryAdapter as z}from"../../../../views/2d/layers/features/FeatureStoreQueryAdapter.js";import{FeatureSnapshotSourceChunk as B}from"../../../../views/2d/layers/features/sources/strategies/chunks/FeatureSnapshotSourceChunk.js";import{FeatureSourceChunkStore as V}from"../../../../views/2d/layers/features/sources/strategies/chunks/SourceChunkStore.js";import{FeatureMetadata as H}from"../../../../views/2d/layers/features/support/FeatureMetadata.js";import{FeatureSetReaderParquet as U}from"../../../../views/2d/layers/features/support/FeatureSetReaderParquet.js";const W=new z,G=`__OBJECTID`,K=8e3;class le{constructor(e,t){this._files=e,this._createFileStream=t,this._fileIndex=0,this._streamIndex=0,this._streams=[],this._pending=new Set,this._resolvedCount=0}async next(e){for(await this._fill(e);this._pending.size>0;){s(e),await this._fill(e);let t=await ue(this._pending);if(this._pending.delete(t.read),this._resolvedCount++,t.chunk!=null)return t.chunk}return null}async _fill(e){for(this._removeDone();this._pending.size<8;){let t=this._getOrCreateNextStream(e);if(t==null)return;this._pending.add(t.read(e))}}_getOrCreateNextStream(e){let t=this._resolvedCount>=8?8:2;if(this._fileIndex<this._files.length&&this._streams.length<t){let t=this._files[this._fileIndex++],n=new de(t.id,this._createFileStream(t,e));return this._streams.push(n),n}return this._getNextStream()}_getNextStream(){let e=this._streams.length;for(let t=0;t<e;t++){let n=(this._streamIndex+t)%e,r=this._streams[n];if(r.canRead)return this._streamIndex=(n+1)%e,r}return null}_removeDone(){let e=this._streamIndex;for(let t=this._streams.length-1;t>=0;t--)this._streams[t].done&&(this._streams.splice(t,1),t<e&&e--);this._streamIndex=this._streams.length>0?e%this._streams.length:0}}function ue(e){return Promise.race(Array.from(e,async e=>({read:e,chunk:await e})))}class de{constructor(e,t){this._fileId=e,this._stream=t,this._readCount=0,this._reachedEnd=!1}get canRead(){return!this._reachedEnd}get done(){return this._reachedEnd&&this._readCount===0}async read(e){this._readCount++;try{let t=await(await this._stream).next(e);return t==null?(this._reachedEnd=!0,null):{fileId:this._fileId,chunk:t}}finally{this._readCount--}}}class fe{constructor(){this._hasZ=!1,this._hasM=!1,this._queue=new c({concurrency:4,process:(e,t)=>this._executeQuery(e,t)}),this._streams=new Map,this._streamIdCounter=0,this._indexMap={},this._handles=new i}async load(e){let t=e.spatialReference?d.fromJSON(e.spatialReference):void 0;if(t&&!t.isWGS84&&!t.isWebMercator)throw new r(`parquet:unsupported-projection`,`Only WGS84 and Web Mercator are supported`);this._customParameters=e.customParameters,this._loadParameters=e,await this._updateProvider(O(e.provider,null,()=>this._customParameters));let n=await this._provider.getMetadata(),i=await P(n,{fields:e.fields?.map(e=>A.fromJSON(e)),geometryEncoding:e.geometryEncoding?N(e.geometryEncoding):null,geometryType:e.geometryType?F(e.geometryType):null,displayOptimization:e.displayOptimization,spatialReference:t});if(this._hasZ=!!n?.hasZ,this._hasM=!!n?.hasM,!i.fields)throw new r(`parquet:unsupported`,`Fields must be defined`);let o;if(i.spatialReference&&i.geometryType){if(!i.spatialReference)throw new r(`parquet:unsupported`,`SpatialReference must be defined`);if(!i.spatialReference.isGeographic&&!i.spatialReference.isWebMercator)throw new r(`parquet:unsupported-projection`,`Only WGS84 and Web Mercator are supported`);i.spatialReference.isGeographic&&!i.spatialReference.isWGS84&&(a.getLogger(`parquet:unsupported-projection`).warn(`Found a geographic projection that is not WGS84. Handling as WGS84.`,{spatialReference:i.spatialReference}),i.spatialReference=d.WGS84),o={geometry:i.geometryEncoding?{geometryType:I(i.geometryType),spatialReference:i.spatialReference.toJSON(),encoding:i.geometryEncoding.toJSON()}:null,displayOptimization:i.displayOptimization}}this.setCustomParameters(e.customParameters),this._displayOptimization=i.displayOptimization,await this._provider.updateGeometryInfo(o),this._capabilities=$(await this._getFileStatistics(),this._hasZ,this._hasM);let s=await this._provider.getFiles();if(!s.length)return{layerDefinition:{},capabilities:$(null,this._hasZ,this._hasM)};let c=await s[0].file;i.file=c;let{fields:l}=i;if(l==null)throw new r(`parquet-layer:missing-metadata`,`Unable to create parquet source: cannot infer fields`,l);l.push(new A({name:G,type:`oid`,alias:G}));for(let e of l){let t=c.getColumnId(e.name);t!=null&&(this._indexMap[e.name]=t)}let u=j.fromLayerJSON({fields:l.map(e=>e.toJSON()),dateFieldsTimeReference:{timeZoneIANA:`UTC`}});this._fieldsIndex=u;let f=I(i.geometryType??`point`);return this._metadata=H.createFeature({fieldsIndex:u.toJSON(),geometryType:f,hasZ:this._hasZ,hasM:this._hasM,featureIdInfo:{type:`object-id`,fieldName:G},subtypes:null,subtypeField:null,types:null,typeIdField:null,globalIdField:null,spatialReference:i.spatialReference,outSpatialReference:null,attributeSpatialReference:null,timeInfo:null,timeReferenceUnknownClient:null,dateFieldsTimeZone:R}),this._queryEngineParams={fieldsIndex:this._metadata.fieldsIndex,geometryType:f,featureIdInfo:{type:`object-id`,fieldName:G},hasM:this._hasM,hasZ:this._hasZ,spatialReference:i.spatialReference?.toJSON()??{wkid:4326},aggregateAdapter:null,timeInfo:null,definitionExpression:null},this._fullExtent=n?.extent?n.extent:await this._tryDeriveParquetFullExtent(i),{capabilities:this._capabilities,layerDefinition:{fields:i.fields?.map(e=>e.toJSON()),drawingInfo:ae(f),extent:this._fullExtent??void 0,geometryType:f,hasZ:this._hasZ,hasM:this._hasM,geometryEncoding:i.geometryEncoding?.toJSON(),displayOptimization:i.displayOptimization}}}destroy(){this._provider.destroy(),this._queue.destroy();for(let{handle:e}of this._streams.values())e.remove();this._streams.clear(),this._indexMap={},this._handles.removeAll()}async reload(e){this.destroy(),await this.load(e)}set remoteClient(e){this._source=e.createInvokeProxy(``)}setCustomParameters(e){this._customParameters=e}getIndexMap(){return this._indexMap}async updateFileProvider(e){this._loadParameters={...this._loadParameters,provider:e};let t=O(e,this._provider.getGeometryInfo(),()=>this._customParameters);await this._updateProvider(t)}async getDiagnosticsSnapshot(){let e=await this._provider.getFiles();return{files:await Promise.all(e.map(e=>e.getDiagnosticsSnapshot()))}}async getColumnIndex(e){return(await this._getFileInfoById(e.fileId)).getColumnIndex(e.rowGroupIndex,e.columnIndex)}async getOffsetIndex(e){return(await this._getFileInfoById(e.fileId)).getOffsetIndex(e.rowGroupIndex,e.columnIndex)}async queryFeatures(e,t){let n=await D(e,null,this._queryEngineParams.spatialReference);return this._validateQuery(n),we(n)||(n.resultRecordCount=n.resultRecordCount?Math.min(n.resultRecordCount,K):K,n.resultOffset=n.resultOffset??0),n.outStatistics?this._queryStatistics(n,t):(n.returnDistinctValues&&(n.returnGeometry=void 0),(await this._enqueueQuery(n,t)).createQueryResponse())}async queryFeatureCount(e,t){let n=await D(e,null,this._queryEngineParams.spatialReference);return this._validateQuery(n),!q(n)&&!n.returnDistinctValues&&!n.groupByFieldsForStatistics?.length&&!n.outStatistics?.length?this._getFeatureCount():(n.returnDistinctValues||(n.outFields=void 0),n.returnGeometry=void 0,(await this._enqueueQuery(n,t)).createQueryResponseForCount())}async queryObjectIds(e,t){let n=await D(e,null,this._queryEngineParams.spatialReference);return this._validateQuery(n),q(n)?(n.resultRecordCount=n.resultRecordCount?Math.min(n.resultRecordCount,8e3):8e3,n.resultOffset=n.resultOffset??0,n.returnGeometry=void 0,n.outFields=void 0,n.returnDistinctValues=void 0,(await this._enqueueQuery(n,t)).items.map(e=>e.getObjectId())):Array.from({length:await this._getFeatureCount()},(e,t)=>t)}async queryAttributeBins(e,t={}){throw new r(`parquet:unsupported`,`queryAttributeBins not supported.`)}async queryExtent(e,t){let r=await D(e,null,this._queryEngineParams.spatialReference);if(this._validateQuery(r),this._fullExtent&&!q(r))return{count:await this._getFeatureCount(),extent:this._fullExtent};let i=n(this._metadata.spatialReference);r.returnGeometry=!0,r.outFields=void 0;let a=f(p(),h),o=p(),s=await this._enqueueQuery(r,t),c=0;for(let e of s.items)e.getBounds(o)&&(m(a,o),c+=1);let l=C(a,i,r.outSR?n(r.outSR):i.toJSON(),i,!1);return{count:c,extent:l}}async queryStream(e,t){if(!t.signal)throw Error(`InternalError: AbortSignal must be passed`);let n=await this._getCandidateFiles(e),r=new le(n,async(t,n)=>{let r=await t.file,i=await this._createParquetDisplayQuery(r,t.id,e);return r.executeQuery(i,K,n)}),i=this._streamIdCounter++,a=o(t.signal,e=>{let t=this._streams.get(i);t!=null&&(t.handle.remove(),this._streams.delete(i))});return this._streams.set(i,{stream:r,handle:a}),i}async getStreamNext(e,t){if(!t.signal)throw Error(`InternalError: AbortSignal must be passed`);let n=this._streams.get(e);if(!n)return{result:null};let r=await n.stream.next(t.signal);if(r==null)return n.handle.remove(),this._streams.delete(e),{result:null};let i=r.chunk.serialize().buffer,a={fileId:r.fileId,buffer:i};return i instanceof ArrayBuffer?{result:a,transferList:[i]}:{result:a}}async getStreamNextFeatures(e,t){let{result:n}=await this.getStreamNext(e,t);if(n==null)return null;let r=(await L()).ParquetChunk.deserialize(new Uint8Array(n.buffer)),i=new U(this._metadata,this._indexMap,r,n.fileId),a=[];for(;i.next();){let e=x(i.readGeometryWorldSpace(),i.geometryType,i.hasZ,i.hasM),t=i.readAttributes();a.push({attributes:t,geometry:e})}return{features:a}}async createPatch(e,t,n,r,i){if(!i.signal)throw Error(`InternalError: AbortSignal must be passed`);return(await(await(await this._getFileInfoById(e)).file).createChunkPatch(t,n,r,i.signal)).serialize().buffer}async _updateProvider(e){let t=this._provider;this._handles.removeAll(),this._provider=e,this._handles.add([e.events.on(`rangeRead`,e=>{this._source.onRangeRead(e)}),e.events.on(`sourceChanged`,async()=>{await this.reload(this._loadParameters),await this._source.onSourceChange()})]),await t?.destroy()}async _getCandidateFiles(e){let t=await this._provider.getFiles(),n=await this._getSpatialFilePruning(e);if(n==null)return t;let r=t.filter(e=>this._mayIncludeFileForSpatialPruning(e,n));return n.type===`xz`?Ce(r,n):r}async _queryStatistics(e,t){let n=await D({...e},null,this._queryEngineParams.spatialReference);if(n.returnGeometry=void 0,ve(n,this._fieldsIndex)){let e=await this._getStatisticsFromFiles(n);if(e)return e}return(await this._enqueueQuery(n,t)).createQueryResponse()}async _getStatisticsFromFiles(e){let t=await this._provider.getFiles(),n={},r=[];for(let i of e.outStatistics??[]){let e=xe(i,t);if(!e.available)return null;n[i.outStatisticFieldName]=e.value,r.push(be(i,this._fieldsIndex))}return{fields:r,features:[{attributes:n}]}}async _getSpatialFilePruning(e){if(e.type!==`tile`&&(e.type!==`arcade`||e.extent==null))return null;let t=this._displayOptimization?.index;if(t==null)return null;let n=e.outSpatialReference.wkid;if(t.wkid==null||n==null)return null;let r=t.wkid,i=await L();switch(t.type){case`xz`:return{type:`xz`,fieldName:y(t.code),intersects:(a,o)=>i.queryIntersectsXZStatistics(t.fullExtent,e.extent,n,r,t.maxLevel,a,o)};case`z`:return{type:`xy`,xFieldName:y(t.xColumn),yFieldName:y(t.yColumn),intersects:(t,a,o,s)=>i.queryIntersectsXYStatistics(e.extent,n,r,t,a,o,s)}}}_mayIncludeFileForSpatialPruning(e,t){switch(t.type){case`xz`:{let n=Z(e,t);return n?.type===`null-only`?!1:n?.type!==`bounds`||t.intersects(n.minValue,n.maxValue)}case`xy`:{let n=e.statistics.statistics.get(t.xFieldName),r=e.statistics.statistics.get(t.yFieldName);return n?.type===`null-only`||r?.type===`null-only`?!1:n?.type!==`bounds`||r?.type!==`bounds`||t.intersects(n.minValue,n.maxValue,r.minValue,r.maxValue)}}}async _tryDeriveParquetFullExtent(n){if(!n.spatialReference)return null;if(this._fullExtent==null&&n.geometryEncoding?.type===`location`){let r=await this._provider.getFiles(),{xField:i,yField:a}=n.geometryEncoding,o=f(p(),h),s=!1;for(let n of r){let r=await n.file;for(let n of r.rowGroups()){let r={stack:[],error:void 0,hasError:!1};try{let t=e(r,n.columnDescriptorForAttribute(i),!1),c=e(r,n.columnDescriptorForAttribute(a),!1),l=k(t),u=k(c);if(l?.type===`bounds`&&u?.type===`bounds`){let e=[l.minValue,u.minValue,l.maxValue,u.maxValue];ee(o,e),s=!0}n.free()}catch(e){r.error=e,r.hasError=!0}finally{t(r)}}}return s?{xmin:o[0],ymin:o[1],xmax:o[3],ymax:o[4],spatialReference:n.spatialReference?.toJSON()}:null}return null}async _getFileInfoById(e){let t=await this._provider.getFiles();for(let n of t)if(n.id===e)return n;throw Error(`InternalError: File ${e} does not exist`)}async _getFileStatistics(){return{featureCount:await this._getFeatureCount(),byteLength:await this._getByteLength()}}async _getFile(e){return(await this._getFileInfoById(e)).file}async _createParquetQuery(e,t,n,r,i){let a=(await L()).Query.new();n!=null&&a.setPreFilterStart(n),r!=null&&a.setPreFilterCount(r),i!=null&&a.setPostFilterCount(i);let o=await this._getRequiredFields(e);a.setOutFields(o),(e.geometry||e.returnGeometry)&&a.setReturnGeometry(!0),a.setReturnZ(!!e.returnZ),a.setReturnM(!!e.returnM);let s=this._tryGetGeneralizedGeometryResolution(e);s!=null&&a.setSourceResolution(s);let c=e.geometry?.spatialReference??this._queryEngineParams.spatialReference,l=c.wkid;if(e.geometry&&(_(c)||v(c))){let t=te(g(),re);for(let n of w(e.geometry))ne(t,n);a.setOutSpatialReference(l),a.setExtent({xmin:t[0],ymin:t[1],xmax:t[2],ymax:t[3]})}if(e.where){let{id:n,file:r}=t;await this._setWhereClause(a,await r,n,e.where)}return a}async _createParquetDisplayQuery(e,t,n){let r=(await L()).Query.new();if(n.type===`tile`){r.setExtent(n.extent),r.setQuantizationTransform(n.transform);let e=this._sourceResolution(n.resolution,n.outSpatialReference);e!=null&&r.setSourceResolution(e)}else n.type===`arcade`&&n.extent!=null&&r.setExtent(n.extent);return r.setOutFields(n.outFields.filter(e=>this._indexMap[e]!=null)),r.setOutSpatialReference(n.outSpatialReference.wkid),r.setReturnGeometry(n.returnGeometry),r.setReturnZ(n.returnZ),r.setReturnM(n.returnM),n.where&&await this._setWhereClause(r,e,t,n.where),r}async _getFeatureCount(){return(await this._provider.getFiles()).map(e=>e.statistics.rowCount).reduce((e,t)=>e+t,0)}async _getByteLength(){return(await this._provider.getFiles()).map(e=>e.statistics.byteSize).reduce((e,t)=>e+t,0)}_validateQuery(e){if(!this._capabilities.query.supportsStatistics&&e.outStatistics)throw new r(`parquet:unsupported`,`Statistics queries are not supported`,{query:e});if(!this._capabilities.query.supportsOrderBy&&e.orderByFields?.length)throw new r(`parquet:unsupported`,`Queries using orderBy are not supported`,{query:e});if(!this._capabilities.query.supportsDistinct&&e.returnDistinctValues)throw new r(`parquet:unsupported`,`Queries using returnDistinctValues are not supported`,{query:e})}async _setWhereClause(e,t,n,i){let a=this._indexMap,o=this._fieldsIndex,s={getAttribute(e,r){let i=a[r];if(i==null){if(o.get(r)?.name===`__OBJECTID`){let t=e.row+e.rowGroupStart;return ce(n,t)}return null}let s=o.get(r);return b(t,e.rowGroup,e.row,i,s.type)}},c=await l(i,this._fieldsIndex);if(!c.isStandardized)throw new r(`sql-parse-error`,`expression is not standardized`);let u=(e,t,n)=>c.testFeatureCompiled({rowGroup:e,row:t,rowGroupStart:n},s,null),d=c.fieldNames.map(e=>o.get(e)).filter(e=>e&&this._indexMap[e?.name]!=null);e.setWhere(i),e.setWhereEvaluator(u),e.setWhereFields(d.map(e=>e.name))}async*_streamFeatures(e,t,n,r,i){let a=await this._provider.getFiles(),o=0;for(let s of a){let a=o,c=o+s.statistics.rowCount;if(o+=s.statistics.rowCount,t!=null&&t>=c)continue;let l=t==null?null:Math.max(t-a,0),u=n;if(n!=null){let e=t??0,r=e+n;u=Math.max(Math.min(r,c)-Math.max(e,a),0)}if(u===0)continue;let d=await this._createParquetQuery(e,s,l,u,r),f=await(await s.file).executeQuery(d,K),p=async()=>{let e=await f.next(i);if(!e)return null;let t=new U(this._metadata,this._indexMap,e,s.id);return X([new B(t,null,0,!1)],this._queryEngineParams)},m=await p();for(;m!=null;)yield m,m=await p()}}async _queryFeaturesWithQueryEnginePagination(e,t){let n=[],r=this._streamFeatures(e,null,null,null,t),i=await r.next();for(;!i.done;){let a=await i.value.executeQueryForOpaqueFeatures({...e,where:void 0},t);for(let e of a)n.push(e);i=await r.next()}return n}async _queryFeaturesWithUpfrontPagination(e,t){let n=e.resultOffset??0,r=e.resultRecordCount??K,i,a,o;ge(e)?_e(e)||(o=n+r):(n&&=(i=n,0),a=e.resultRecordCount);let s=[],c=this._streamFeatures(e,i,a,o,t),l=await c.next();for(;!l.done&&r>0;){let i=await l.value.executeQueryForOpaqueFeatures({...e,where:void 0},t);for(let e of i)if(n>0)n--;else if(s.push(e),--r<=0)return s;l=await c.next()}return s}_enqueueQuery(e,t){return this._queue.push(e,t)}async _executeQuery(e,t){if(e.objectIds?.length){let n=new Map;for(let t of e.objectIds){let e=oe(t),r=se(t),i=n.get(e);i||(i=[],n.set(e,i)),i.push(r)}let r=[];for(let[i,a]of n.entries()){let n=await this._executeFileIdQuery(e,i,a,t);for(let e of n)r.push(e)}return new E(r,e,{fieldsIndex:this._fieldsIndex,geometryType:this._metadata.geometryType,spatialReference:this._queryEngineParams.spatialReference,hasM:this._hasM,hasZ:this._hasZ,featureAdapter:W,featureIdInfo:this._queryEngineParams.featureIdInfo})}if(e.where===`1=1`&&(e.where=null),e.resultOffset??=0,e.resultRecordCount??=await this._getFeatureCount(),e.resultRecordCount>2e7&&!(this._displayOptimization&&e.geometry))throw new r(`parquet:cannot-execute-query`,`Unable to execute query, dataset is too large.`);let n=!!e.orderByFields?.length||!!e.outStatistics?.length||!!e.returnDistinctValues,i=n?await this._queryFeaturesWithQueryEnginePagination(e,t):await this._queryFeaturesWithUpfrontPagination(e,t);return n||(e.resultOffset=0),new E(i,e,{fieldsIndex:this._fieldsIndex,geometryType:this._metadata.geometryType,spatialReference:this._queryEngineParams.spatialReference,hasM:this._hasM,hasZ:this._hasZ,featureAdapter:W,featureIdInfo:this._queryEngineParams.featureIdInfo})}async _executeFileIdQuery(e,t,n,r){let i=await this._getRequiredFields(e),a=(await L()).Query.new();a.setOutFields(i),a.setReturnGeometry(!!e.returnGeometry),a.setReturnZ(!!e.returnZ),a.setReturnM(!!e.returnM),a.setIds(new Uint32Array(n));let o=await(await this._getFile(t)).executeQuery(a,K,r),s=await o.next(r),c=0,l=[];for(;s!=null;){let e=new U(this._metadata,this._indexMap,s,t),n=new B(e,null,c++,!1);l.push(n),s=await o.next(r)}return X(l,this._queryEngineParams).executeQueryForOpaqueFeatures(e,r)}async _getRequiredFields(e){let t=new Set;if(e.outStatistics)for(let n of S(this._fieldsIndex,e.outStatistics,e.groupByFieldsForStatistics))t.add(n);else if(e.outFields)for(let n of e.outFields)t.add(n);return(t.has(`*`)?this._fieldsIndex.fields.map(e=>e.name):Array.from(t)).filter(e=>this._indexMap[e]!=null)}_tryGetGeneralizedGeometryResolution(e){if(!this._displayOptimization)return null;let t=e.outSR??this._queryEngineParams.spatialReference;if(!_(t)&&!v(t))return null;let n=e.quantizationParameters?.tolerance??e.maxAllowableOffset;return n?this._sourceResolution(n,t):null}_sourceResolution(e,t){let n=this._queryEngineParams.spatialReference,r=u(t)/u(n)*e;return!Number.isFinite(r)||r<=0?null:r}}function pe(e){switch(e){case`fullText`:case`having`:case`timeExtent`:case`historicMoment`:case`aggregateIds`:case`uniqueIds`:case`gdbVersion`:case`objectIds`:case`where`:case`geometry`:case`resultOffset`:case`resultRecordCount`:return!0;default:return!1}}function me(e){switch(e){case`fullText`:case`having`:case`timeExtent`:case`historicMoment`:case`aggregateIds`:case`uniqueIds`:case`gdbVersion`:case`objectIds`:case`where`:case`geometry`:return!0;default:return!1}}function he(e){switch(e){case`fullText`:case`having`:case`timeExtent`:return!0;case`historicMoment`:case`aggregateIds`:case`uniqueIds`:case`gdbVersion`:return!1;case`objectIds`:case`where`:case`resultOffset`:case`geometry`:case`resultRecordCount`:return!1}return!1}function q(e){for(let t in e){let n=t;if(pe(n)&&e[n]!==null)return!0}return!1}function ge(e){for(let t in e){let n=t;if(me(n)&&e[n]!==null)return!0}return!1}function _e(e){for(let t in e){let n=t;if(he(n)&&e[n]!==null)return!0}return!1}function ve(e,t){return!!e.outStatistics?.length&&!q(e)&&!e.groupByFieldsForStatistics?.length&&!e.orderByFields?.length&&!e.returnDistinctValues&&!e.returnAggIds&&e.outStatistics.every(e=>ye(e,t))}function ye(e,t){switch(e.statisticType){case`count`:return e.onStatisticField===`1`||t.get(e.onStatisticField)!=null;case`min`:case`max`:{let n=t.get(e.onStatisticField);return n!=null&&M(n)}default:return!1}}function be(e,t){let n=e.statisticType===`exceedslimit`?null:t.get(e.onStatisticField),r=(e.statisticType===`min`||e.statisticType===`max`)&&n?.type===`esriFieldTypeDate`?n.type:`esriFieldTypeDouble`;return{name:e.outStatisticFieldName,alias:e.outStatisticFieldName,type:r}}function xe(e,t){switch(e.statisticType){case`count`:return J(e,t);case`min`:return Y(e,t,Math.min);case`max`:return Y(e,t,Math.max);default:return{available:!1,value:null}}}function J(e,t){if(e.statisticType!==`count`)return{available:!1,value:null};if(e.onStatisticField===`1`)return{available:!0,value:t.reduce((e,t)=>e+t.statistics.rowCount,0)};let n=0;for(let r of t){let t=r.statistics.statistics.get(e.onStatisticField);if(t==null||t.nullCount==null)return{available:!1,value:null};n+=r.statistics.rowCount-t.nullCount}return{available:!0,value:n}}function Y(e,t,n){if(e.statisticType!==`min`&&e.statisticType!==`max`)return{available:!1,value:null};let r=null,i=e.statisticType===`min`?`minValue`:`maxValue`;for(let a of t){let t=a.statistics.statistics.get(e.onStatisticField);if(t==null)return{available:!1,value:null};switch(t.type){case`null-only`:continue;case`unknown`:return{available:!1,value:null};case`bounds`:{let e=Se(t[i]);if(e==null)return{available:!1,value:null};r=r==null?e:n(r,e);break}}}return{available:!0,value:r}}function Se(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function X(e,t){let n=new V;for(let t of e)n.insert(t);return new T({...t,featureStore:n})}function Z(e,t){return e.statistics.statistics.get(t.fieldName)??null}function Ce(e,t){return e.slice().sort((e,n)=>{let r=Q(e,t),i=Q(n,t);return r===i?0:r<i?-1:1})}function Q(e,t){let n=Z(e,t);return n?.type===`bounds`?n.maxValue-n.minValue:1/0}function $(e,t,n){let r=e?.featureCount,i=!1;return r!=null&&r<has(`parquetlayer-full-query-feature-count`)&&(i=!0),{analytics:{supportsCacheHint:!1},attachment:null,data:{isVersioned:!1,isBranchVersioned:!1,supportedCurveTypes:[],supportsAttachment:!1,supportsM:n,supportsTrueCurve:!1,supportsZ:t},metadata:{supportsAdvancedFieldProperties:!1},operations:{supportsCalculate:!1,supportsTruncate:!1,supportsValidateSql:!1,supportsAdd:!1,supportsDelete:!1,supportsEditing:!1,supportsChangeTracking:!1,supportsQuery:!0,supportsQueryBins:!1,supportsQueryPivot:!1,supportsQueryAnalytics:!1,supportsQueryAttachments:!1,supportsQueryTopFeatures:!1,supportsResizeAttachments:!1,supportsSync:!1,supportsUpdate:!1,supportsExceedsLimitStatistics:!1,supportsAsyncConvert3D:!1},query:{...ie,maxRecordCount:K,supportsOrderBy:i,supportsDistinct:!0,supportsStatistics:!0,supportsSpatialAggregationStatistics:!1,supportedSpatialAggregationStatistics:{envelope:!1,centroid:!1,convexHull:!1}},queryAttributeBins:{supportsDate:!1,supportsFixedInterval:!1,supportsAutoInterval:!1,supportsFixedBoundaries:!1,supportsStackBy:!1,supportsSplitBy:!1,supportsSnapToData:!1,supportsReturnFullIntervalBin:!1,supportsFirstDayOfWeek:!1,supportsNormalization:!1},queryRelated:{supportsCount:!1,supportsOrderBy:!1,supportsPagination:!1,supportsCacheHint:!1},queryTopFeatures:{supportsCacheHint:!1},editing:{supportsDeleteByAnonymous:!1,supportsDeleteByOthers:!1,supportsGeometryUpdate:!1,supportsGlobalId:!1,supportsTrueCurveUpdate:!1,supportsTrueCurveUpdateByTrueCurveClientsOnly:!0,supportsReturnServiceEditsInSourceSpatialReference:!1,supportsRollbackOnFailure:!1,supportsUpdateByAnonymous:!1,supportsUpdateByOthers:!1,supportsUploadWithItemId:!1,supportsUpdateWithoutM:!1,supportsAsyncApplyEdits:!1,zDefault:void 0}}}function we(e){return!!e.objectIds?.length||!!e.outStatistics||!!e.orderByFields?.length||!!e.returnDistinctValues}export{fe as default};
|
|
2
|
+
import{__addDisposableResource as e,__disposeResources as t}from"tslib";import{toConst as n}from"../../../../core/compilerUtils.js";import r from"../../../../core/Error.js";import i from"../../../../core/Handles.js";import has from"../../../../core/has.js";import a from"../../../../core/Logger.js";import{onAbortOrThrow as o,throwIfAborted as s}from"../../../../core/promiseUtils.js";import{QueueProcessor as c}from"../../../../core/QueueProcessor.js";import{parseWhereClause as l}from"../../../../core/sql.js";import{getMetersPerUnitForSR as u}from"../../../../core/units.js";import d from"../../../../geometry/SpatialReference.js";import{set as f,create as p,expandWithAABB as m,expandWithRect as ee,negativeInfinity as h}from"../../../../geometry/support/aaBoundingBox.js";import{copy as te,create as g,expandWithRect as ne,negativeInfinity as re}from"../../../../geometry/support/aaBoundingRect.js";import{isWebMercator as _,isWGS84 as v}from"../../../../geometry/support/spatialReferenceUtils.js";import{normalizeColumnPath as y,readParquetFileAttribute as b}from"../../../parquet.js";import{convertToGeometry as x}from"../../featureConversionUtils.js";import{getFieldNamesFromStatistics as S}from"../../data/attributeSupport.js";import{getQueryResultExtent as C,getQueryBoundingRects as w,QueryEngine as T}from"../../data/QueryEngine.js";import{queryCapabilities as ie}from"../../data/QueryEngineCapabilities.js";import{QueryEngineResult as E}from"../../data/QueryEngineResult.js";import{normalizeQueryLike as D}from"../../data/queryUtils.js";import{createFileProvider as O}from"../parquet/createFileProvider.js";import{readFieldStatistic as k}from"../parquet/ParquetFileStatistics.js";import{createDrawingInfo as ae}from"./clientSideDefaults.js";import{getParquetFileId as oe,getParquetRowId as se,getParquetObjectId as ce}from"./parquetIdUtils.js";import A from"../../../support/Field.js";import j from"../../../support/FieldsIndex.js";import{isNumericField as M}from"../../../support/fieldUtils.js";import{fromParquetGeometryEncodingJSON as N}from"../../../support/parquetEncodingUtils.js";import{completeParquetLayerInfo as P,fromParquetJSONGeometryType as F,toParquetJSONGeometryType as I}from"../../../support/parquetUtils.js";import{loadParquetModule as L}from"../../../../libs/librust-parquet/loadParquetModule.js";import{utc as R}from"../../../../time/constants.js";import{FeatureStoreQueryAdapter as z}from"../../../../views/2d/layers/features/FeatureStoreQueryAdapter.js";import{FeatureSnapshotSourceChunk as B}from"../../../../views/2d/layers/features/sources/strategies/chunks/FeatureSnapshotSourceChunk.js";import{FeatureSourceChunkStore as V}from"../../../../views/2d/layers/features/sources/strategies/chunks/SourceChunkStore.js";import{FeatureMetadata as H}from"../../../../views/2d/layers/features/support/FeatureMetadata.js";import{FeatureSetReaderParquet as U}from"../../../../views/2d/layers/features/support/FeatureSetReaderParquet.js";const W=new z,G=`__OBJECTID`,K=8e3;class le{constructor(e,t){this._files=e,this._createFileStream=t,this._fileIndex=0,this._streamIndex=0,this._streams=[],this._pending=new Set,this._resolvedCount=0}async next(e){for(await this._fill(e);this._pending.size>0;){s(e),await this._fill(e);let t=await ue(this._pending);if(this._pending.delete(t.read),this._resolvedCount++,t.chunk!=null)return t.chunk}return null}async _fill(e){for(this._removeDone();this._pending.size<8;){let t=this._getOrCreateNextStream(e);if(t==null)return;this._pending.add(t.read(e))}}_getOrCreateNextStream(e){let t=this._resolvedCount>=8?8:2;if(this._fileIndex<this._files.length&&this._streams.length<t){let t=this._files[this._fileIndex++],n=new de(t.id,this._createFileStream(t,e));return this._streams.push(n),n}return this._getNextStream()}_getNextStream(){let e=this._streams.length;for(let t=0;t<e;t++){let n=(this._streamIndex+t)%e,r=this._streams[n];if(r.canRead)return this._streamIndex=(n+1)%e,r}return null}_removeDone(){let e=this._streamIndex;for(let t=this._streams.length-1;t>=0;t--)this._streams[t].done&&(this._streams.splice(t,1),t<e&&e--);this._streamIndex=this._streams.length>0?e%this._streams.length:0}}function ue(e){return Promise.race(Array.from(e,async e=>({read:e,chunk:await e})))}class de{constructor(e,t){this._fileId=e,this._stream=t,this._readCount=0,this._reachedEnd=!1}get canRead(){return!this._reachedEnd}get done(){return this._reachedEnd&&this._readCount===0}async read(e){this._readCount++;try{let t=await(await this._stream).next(e);return t==null?(this._reachedEnd=!0,null):{fileId:this._fileId,chunk:t}}finally{this._readCount--}}}class fe{constructor(){this._hasZ=!1,this._hasM=!1,this._queue=new c({concurrency:4,process:(e,t)=>this._executeQuery(e,t)}),this._streams=new Map,this._streamIdCounter=0,this._indexMap={},this._handles=new i}async load(e){let t=e.spatialReference?d.fromJSON(e.spatialReference):void 0;if(t&&!t.isWGS84&&!t.isWebMercator)throw new r(`parquet:unsupported-projection`,`Only WGS84 and Web Mercator are supported`);this._customParameters=e.customParameters,this._loadParameters=e,await this._updateProvider(O(e.provider,null,()=>this._customParameters));let n=await this._provider.getMetadata(),i=await P(n,{fields:e.fields?.map(e=>A.fromJSON(e)),geometryEncoding:e.geometryEncoding?N(e.geometryEncoding):null,geometryType:e.geometryType?F(e.geometryType):null,displayOptimization:e.displayOptimization,spatialReference:t});if(this._hasZ=!!n?.hasZ,this._hasM=!!n?.hasM,!i.fields)throw new r(`parquet:unsupported`,`Fields must be defined`);let o;if(i.spatialReference&&i.geometryType){if(!i.spatialReference)throw new r(`parquet:unsupported`,`SpatialReference must be defined`);if(!i.spatialReference.isGeographic&&!i.spatialReference.isWebMercator)throw new r(`parquet:unsupported-projection`,`Only WGS84 and Web Mercator are supported`);i.spatialReference.isGeographic&&!i.spatialReference.isWGS84&&(a.getLogger(`parquet:unsupported-projection`).warn(`Found a geographic projection that is not WGS84. Handling as WGS84.`,{spatialReference:i.spatialReference}),i.spatialReference=d.WGS84),o={geometry:i.geometryEncoding?{geometryType:I(i.geometryType),spatialReference:i.spatialReference.toJSON(),encoding:i.geometryEncoding.toJSON()}:null,displayOptimization:i.displayOptimization}}this.setCustomParameters(e.customParameters),this._displayOptimization=i.displayOptimization,await this._provider.updateGeometryInfo(o),this._capabilities=$(await this._getFileStatistics(),this._hasZ,this._hasM);let s=await this._provider.getFiles();if(!s.length)return{layerDefinition:{},capabilities:$(null,this._hasZ,this._hasM)};let c=await s[0].file;i.file=c;let{fields:l}=i;if(l==null)throw new r(`parquet-layer:missing-metadata`,`Unable to create parquet source: cannot infer fields`,l);l.push(new A({name:G,type:`oid`,alias:G}));for(let e of l){let t=c.getColumnId(e.name);t!=null&&(this._indexMap[e.name]=t)}let u=j.fromLayerJSON({fields:l.map(e=>e.toJSON()),dateFieldsTimeReference:{timeZoneIANA:`UTC`}});this._fieldsIndex=u;let f=I(i.geometryType??`point`);return this._metadata=H.createFeature({fieldsIndex:u.toJSON(),geometryType:f,hasZ:this._hasZ,hasM:this._hasM,featureIdInfo:{type:`object-id`,fieldName:G},subtypes:null,subtypeField:null,types:null,typeIdField:null,globalIdField:null,spatialReference:i.spatialReference,outSpatialReference:null,attributeSpatialReference:null,timeInfo:null,timeReferenceUnknownClient:null,dateFieldsTimeZone:R}),this._queryEngineParams={fieldsIndex:this._metadata.fieldsIndex,geometryType:f,featureIdInfo:{type:`object-id`,fieldName:G},hasM:this._hasM,hasZ:this._hasZ,spatialReference:i.spatialReference?.toJSON()??{wkid:4326},aggregateAdapter:null,timeInfo:null,definitionExpression:null},this._fullExtent=n?.extent?n.extent:await this._tryDeriveParquetFullExtent(i),{capabilities:this._capabilities,layerDefinition:{fields:i.fields?.map(e=>e.toJSON()),drawingInfo:ae(f),extent:this._fullExtent??void 0,geometryType:f,hasZ:this._hasZ,hasM:this._hasM,geometryEncoding:i.geometryEncoding?.toJSON(),displayOptimization:i.displayOptimization}}}destroy(){this._provider.destroy(),this._queue.destroy();for(let{handle:e}of this._streams.values())e.remove();this._streams.clear(),this._indexMap={},this._handles.removeAll()}async reload(e){this.destroy(),await this.load(e)}set remoteClient(e){this._source=e.createInvokeProxy(``)}setCustomParameters(e){this._customParameters=e}getIndexMap(){return this._indexMap}async updateFileProvider(e){this._loadParameters={...this._loadParameters,provider:e};let t=O(e,this._provider.getGeometryInfo(),()=>this._customParameters);await this._updateProvider(t)}async getDiagnosticsSnapshot(){let e=await this._provider.getFiles();return{files:await Promise.all(e.map(e=>e.getDiagnosticsSnapshot()))}}async getColumnIndex(e){return(await this._getFileInfoById(e.fileId)).getColumnIndex(e.rowGroupIndex,e.columnIndex)}async getOffsetIndex(e){return(await this._getFileInfoById(e.fileId)).getOffsetIndex(e.rowGroupIndex,e.columnIndex)}async queryFeatures(e,t){let n=await D(e,null,this._queryEngineParams.spatialReference);return this._validateQuery(n),we(n)||(n.resultRecordCount=n.resultRecordCount?Math.min(n.resultRecordCount,K):K,n.resultOffset=n.resultOffset??0),n.outStatistics?this._queryStatistics(n,t):(n.returnDistinctValues&&(n.returnGeometry=void 0),(await this._enqueueQuery(n,t)).createQueryResponse())}async queryFeatureCount(e,t){let n=await D(e,null,this._queryEngineParams.spatialReference);return this._validateQuery(n),!q(n)&&!n.returnDistinctValues&&!n.groupByFieldsForStatistics?.length&&!n.outStatistics?.length?this._getFeatureCount():(n.returnDistinctValues||(n.outFields=void 0),n.returnGeometry=void 0,(await this._enqueueQuery(n,t)).createQueryResponseForCount())}async queryObjectIds(e,t){let n=await D(e,null,this._queryEngineParams.spatialReference);return this._validateQuery(n),q(n)?(n.resultRecordCount=n.resultRecordCount?Math.min(n.resultRecordCount,8e3):8e3,n.resultOffset=n.resultOffset??0,n.returnGeometry=void 0,n.outFields=void 0,n.returnDistinctValues=void 0,(await this._enqueueQuery(n,t)).items.map(e=>e.getObjectId())):Array.from({length:await this._getFeatureCount()},(e,t)=>t)}async queryAttributeBins(e,t={}){throw new r(`parquet:unsupported`,`queryAttributeBins not supported.`)}async queryExtent(e,t){let r=await D(e,null,this._queryEngineParams.spatialReference);if(this._validateQuery(r),this._fullExtent&&!q(r))return{count:await this._getFeatureCount(),extent:this._fullExtent};let i=n(this._metadata.spatialReference);r.returnGeometry=!0,r.outFields=void 0;let a=f(p(),h),o=p(),s=await this._enqueueQuery(r,t),c=0;for(let e of s.items)e.getBounds(o)&&(m(a,o),c+=1);let l=C(a,i,r.outSR?n(r.outSR):i.toJSON(),i,!1);return{count:c,extent:l}}async queryStream(e,t){if(!t.signal)throw Error(`InternalError: AbortSignal must be passed`);let n=await this._getCandidateFiles(e),r=new le(n,async(t,n)=>{let r=await t.file,i=await this._createParquetDisplayQuery(r,t.id,e);return r.executeQuery(i,K,n)}),i=this._streamIdCounter++,a=o(t.signal,e=>{let t=this._streams.get(i);t!=null&&(t.handle.remove(),this._streams.delete(i))});return this._streams.set(i,{stream:r,handle:a}),i}async getStreamNext(e,t){if(!t.signal)throw Error(`InternalError: AbortSignal must be passed`);let n=this._streams.get(e);if(!n)return{result:null};let r=await n.stream.next(t.signal);if(r==null)return n.handle.remove(),this._streams.delete(e),{result:null};let i=r.chunk.serialize().buffer,a={fileId:r.fileId,buffer:i};return i instanceof ArrayBuffer?{result:a,transferList:[i]}:{result:a}}async getStreamNextFeatures(e,t){let{result:n}=await this.getStreamNext(e,t);if(n==null)return null;let r=(await L()).ParquetChunk.deserialize(new Uint8Array(n.buffer)),i=new U(this._metadata,this._indexMap,r,n.fileId),a=[];for(;i.next();){let e=x(i.readGeometryWorldSpace(),i.geometryType,i.hasZ,i.hasM),t=i.readAttributes();a.push({attributes:t,geometry:e})}return{features:a}}async createPatch(e,t,n,r,i){if(!i.signal)throw Error(`InternalError: AbortSignal must be passed`);return(await(await(await this._getFileInfoById(e)).file).createChunkPatch(t,n,r,i.signal)).serialize().buffer}async _updateProvider(e){let t=this._provider;this._handles.removeAll(),this._provider=e,this._handles.add([e.events.on(`rangeRead`,e=>{this._source.onRangeRead(e)}),e.events.on(`sourceChanged`,async()=>{await this.reload(this._loadParameters),await this._source.onSourceChange()})]),await t?.destroy()}async _getCandidateFiles(e){let t=await this._provider.getFiles(),n=await this._getSpatialFilePruning(e);if(n==null)return t;let r=t.filter(e=>this._mayIncludeFileForSpatialPruning(e,n));return n.type===`xz`?Ce(r,n):r}async _queryStatistics(e,t){let n=await D({...e},null,this._queryEngineParams.spatialReference);if(n.returnGeometry=void 0,ve(n,this._fieldsIndex)){let e=await this._getStatisticsFromFiles(n);if(e)return e}return(await this._enqueueQuery(n,t)).createQueryResponse()}async _getStatisticsFromFiles(e){let t=await this._provider.getFiles(),n={},r=[];for(let i of e.outStatistics??[]){let e=xe(i,t);if(!e.available)return null;n[i.outStatisticFieldName]=e.value,r.push(be(i,this._fieldsIndex))}return{fields:r,features:[{attributes:n}]}}async _getSpatialFilePruning(e){if(e.type!==`tile`&&(e.type!==`arcade`||e.extent==null))return null;let t=this._displayOptimization?.index;if(t==null)return null;let n=e.outSpatialReference.wkid;if(t.wkid==null||n==null)return null;let r=t.wkid,i=await L();switch(t.type){case`xz`:return{type:`xz`,fieldName:y(t.code),intersects:(a,o)=>i.queryIntersectsXZStatistics(t.fullExtent,e.extent,n,r,t.maxLevel,a,o)};case`z`:return{type:`xy`,xFieldName:y(t.xColumn),yFieldName:y(t.yColumn),intersects:(t,a,o,s)=>i.queryIntersectsXYStatistics(e.extent,n,r,t,a,o,s)}}}_mayIncludeFileForSpatialPruning(e,t){switch(t.type){case`xz`:{let n=Z(e,t);return n?.type===`null-only`?!1:n?.type!==`bounds`||t.intersects(n.minValue,n.maxValue)}case`xy`:{let n=e.statistics.statistics.get(t.xFieldName),r=e.statistics.statistics.get(t.yFieldName);return n?.type===`null-only`||r?.type===`null-only`?!1:n?.type!==`bounds`||r?.type!==`bounds`||t.intersects(n.minValue,n.maxValue,r.minValue,r.maxValue)}}}async _tryDeriveParquetFullExtent(n){if(!n.spatialReference)return null;if(this._fullExtent==null&&n.geometryEncoding?.type===`location`){let r=await this._provider.getFiles(),{xField:i,yField:a}=n.geometryEncoding,o=f(p(),h),s=!1;for(let n of r){let r=await n.file;for(let n of r.rowGroups()){let r={stack:[],error:void 0,hasError:!1};try{let t=e(r,n.columnDescriptorForAttribute(i),!1),c=e(r,n.columnDescriptorForAttribute(a),!1),l=k(t),u=k(c);if(l?.type===`bounds`&&u?.type===`bounds`){let e=[l.minValue,u.minValue,l.maxValue,u.maxValue];ee(o,e),s=!0}n.free()}catch(e){r.error=e,r.hasError=!0}finally{t(r)}}}return s?{xmin:o[0],ymin:o[1],xmax:o[3],ymax:o[4],spatialReference:n.spatialReference?.toJSON()}:null}return null}async _getFileInfoById(e){let t=await this._provider.getFiles();for(let n of t)if(n.id===e)return n;throw Error(`InternalError: File ${e} does not exist`)}async _getFileStatistics(){return{featureCount:await this._getFeatureCount(),byteLength:await this._getByteLength()}}async _getFile(e){return(await this._getFileInfoById(e)).file}async _createParquetQuery(e,t,n,r,i){let a=(await L()).Query.new();n!=null&&a.setPreFilterStart(n),r!=null&&a.setPreFilterCount(r),i!=null&&a.setPostFilterCount(i);let o=await this._getRequiredFields(e);a.setOutFields(o),(e.geometry||e.returnGeometry)&&a.setReturnGeometry(!0),a.setReturnZ(!!e.returnZ),a.setReturnM(!!e.returnM);let s=this._tryGetGeneralizedGeometryResolution(e);s!=null&&a.setSourceResolution(s);let c=e.geometry?.spatialReference??this._queryEngineParams.spatialReference,l=c.wkid;if(e.geometry&&(_(c)||v(c))){let t=te(g(),re);for(let n of w(e.geometry))ne(t,n);a.setOutSpatialReference(l),a.setExtent({xmin:t[0],ymin:t[1],xmax:t[2],ymax:t[3]})}if(e.where){let{id:n,file:r}=t;await this._setWhereClause(a,await r,n,e.where)}return a}async _createParquetDisplayQuery(e,t,n){let r=(await L()).Query.new();if(n.type===`tile`){r.setExtent(n.extent),r.setQuantizationTransform(n.transform);let e=this._sourceResolution(n.resolution,n.outSpatialReference);e!=null&&r.setSourceResolution(e)}else n.type===`arcade`&&n.extent!=null&&r.setExtent(n.extent);return r.setOutFields(n.outFields.filter(e=>this._indexMap[e]!=null)),r.setOutSpatialReference(n.outSpatialReference.wkid),r.setReturnGeometry(n.returnGeometry),r.setReturnZ(n.returnZ),r.setReturnM(n.returnM),n.where&&await this._setWhereClause(r,e,t,n.where),r}async _getFeatureCount(){return(await this._provider.getFiles()).map(e=>e.statistics.rowCount).reduce((e,t)=>e+t,0)}async _getByteLength(){return(await this._provider.getFiles()).map(e=>e.statistics.byteSize).reduce((e,t)=>e+t,0)}_validateQuery(e){if(!this._capabilities.query.supportsStatistics&&e.outStatistics)throw new r(`parquet:unsupported`,`Statistics queries are not supported`,{query:e});if(!this._capabilities.query.supportsOrderBy&&e.orderByFields?.length)throw new r(`parquet:unsupported`,`Queries using orderBy are not supported`,{query:e});if(!this._capabilities.query.supportsDistinct&&e.returnDistinctValues)throw new r(`parquet:unsupported`,`Queries using returnDistinctValues are not supported`,{query:e})}async _setWhereClause(e,t,n,i){let a=this._indexMap,o=this._fieldsIndex,s={getAttribute(e,r){let i=a[r];if(i==null){if(o.get(r)?.name===`__OBJECTID`){let t=e.row+e.rowGroupStart;return ce(n,t)}return null}let s=o.get(r);return b(t,e.rowGroup,e.row,i,s.type)}},c=await l(i,this._fieldsIndex);if(!c.isStandardized)throw new r(`sql-parse-error`,`expression is not standardized`);let u=(e,t,n)=>c.testFeatureCompiled({rowGroup:e,row:t,rowGroupStart:n},s,null),d=c.fieldNames.map(e=>o.get(e)).filter(e=>e&&this._indexMap[e?.name]!=null);e.setWhere(i),e.setWhereEvaluator(u),e.setWhereFields(d.map(e=>e.name))}async*_streamFeatures(e,t,n,r,i){let a=await this._provider.getFiles(),o=0;for(let s of a){let a=o,c=o+s.statistics.rowCount;if(o+=s.statistics.rowCount,t!=null&&t>=c)continue;let l=t==null?null:Math.max(t-a,0),u=n;if(n!=null){let e=t??0,r=e+n;u=Math.max(Math.min(r,c)-Math.max(e,a),0)}if(u===0)continue;let d=await this._createParquetQuery(e,s,l,u,r),f=await(await s.file).executeQuery(d,K),p=async()=>{let e=await f.next(i);if(!e)return null;let t=new U(this._metadata,this._indexMap,e,s.id);return X([new B(t,null,0,!1)],this._queryEngineParams)},m=await p();for(;m!=null;)yield m,m=await p()}}async _queryFeaturesWithQueryEnginePagination(e,t){let n=[],r=this._streamFeatures(e,null,null,null,t),i=await r.next();for(;!i.done;){let a=await i.value.executeQueryForOpaqueFeatures({...e,where:void 0},t);for(let e of a)n.push(e);i=await r.next()}return n}async _queryFeaturesWithUpfrontPagination(e,t){let n=e.resultOffset??0,r=e.resultRecordCount??K,i,a,o;ge(e)?_e(e)||(o=n+r):(n&&=(i=n,0),a=e.resultRecordCount);let s=[],c=this._streamFeatures(e,i,a,o,t),l=await c.next();for(;!l.done&&r>0;){let i=await l.value.executeQueryForOpaqueFeatures({...e,where:void 0},t);for(let e of i)if(n>0)n--;else if(s.push(e),--r<=0)return s;l=await c.next()}return s}_enqueueQuery(e,t){return this._queue.push(e,t)}async _executeQuery(e,t){if(e.objectIds?.length){let n=new Map;for(let t of e.objectIds){let e=oe(t),r=se(t),i=n.get(e);i||(i=[],n.set(e,i)),i.push(r)}let r=[];for(let[i,a]of n.entries()){let n=await this._executeFileIdQuery(e,i,a,t);for(let e of n)r.push(e)}return new E(r,e,{fieldsIndex:this._fieldsIndex,geometryType:this._metadata.geometryType,spatialReference:this._queryEngineParams.spatialReference,hasM:this._hasM,hasZ:this._hasZ,featureAdapter:W,featureIdInfo:this._queryEngineParams.featureIdInfo})}if(e.where===`1=1`&&(e.where=null),e.resultOffset??=0,e.resultRecordCount??=await this._getFeatureCount(),e.resultRecordCount>2e7&&!(this._displayOptimization&&e.geometry))throw new r(`parquet:cannot-execute-query`,`Unable to execute query, dataset is too large.`);let n=!!e.orderByFields?.length||!!e.outStatistics?.length||!!e.returnDistinctValues,i=n?await this._queryFeaturesWithQueryEnginePagination(e,t):await this._queryFeaturesWithUpfrontPagination(e,t);return n||(e.resultOffset=0),new E(i,e,{fieldsIndex:this._fieldsIndex,geometryType:this._metadata.geometryType,spatialReference:this._queryEngineParams.spatialReference,hasM:this._hasM,hasZ:this._hasZ,featureAdapter:W,featureIdInfo:this._queryEngineParams.featureIdInfo})}async _executeFileIdQuery(e,t,n,r){let i=new Set(await this._getRequiredFields(e));if(e.where){let t=await l(e.where,this._fieldsIndex);for(let e of t.fieldNames){let t=this._fieldsIndex.get(e);t&&this._indexMap[t.name]!=null&&i.add(t.name)}}let a=(await L()).Query.new();a.setOutFields(Array.from(i)),a.setReturnGeometry(!!e.returnGeometry),a.setReturnZ(!!e.returnZ),a.setReturnM(!!e.returnM),a.setIds(new Uint32Array(n));let o=await(await this._getFile(t)).executeQuery(a,K,r),s=await o.next(r),c=0,u=[];for(;s!=null;){let e=new U(this._metadata,this._indexMap,s,t),n=new B(e,null,c++,!1);u.push(n),s=await o.next(r)}return X(u,this._queryEngineParams).executeQueryForOpaqueFeatures(e,r)}async _getRequiredFields(e){let t=new Set;if(e.outStatistics)for(let n of S(this._fieldsIndex,e.outStatistics,e.groupByFieldsForStatistics))t.add(n);else if(e.outFields)for(let n of e.outFields)t.add(n);return(t.has(`*`)?this._fieldsIndex.fields.map(e=>e.name):Array.from(t)).filter(e=>this._indexMap[e]!=null)}_tryGetGeneralizedGeometryResolution(e){if(!this._displayOptimization)return null;let t=e.outSR??this._queryEngineParams.spatialReference;if(!_(t)&&!v(t))return null;let n=e.quantizationParameters?.tolerance??e.maxAllowableOffset;return n?this._sourceResolution(n,t):null}_sourceResolution(e,t){let n=this._queryEngineParams.spatialReference,r=u(t)/u(n)*e;return!Number.isFinite(r)||r<=0?null:r}}function pe(e){switch(e){case`fullText`:case`having`:case`timeExtent`:case`historicMoment`:case`aggregateIds`:case`uniqueIds`:case`gdbVersion`:case`objectIds`:case`where`:case`geometry`:case`resultOffset`:case`resultRecordCount`:return!0;default:return!1}}function me(e){switch(e){case`fullText`:case`having`:case`timeExtent`:case`historicMoment`:case`aggregateIds`:case`uniqueIds`:case`gdbVersion`:case`objectIds`:case`where`:case`geometry`:return!0;default:return!1}}function he(e){switch(e){case`fullText`:case`having`:case`timeExtent`:return!0;case`historicMoment`:case`aggregateIds`:case`uniqueIds`:case`gdbVersion`:return!1;case`objectIds`:case`where`:case`resultOffset`:case`geometry`:case`resultRecordCount`:return!1}return!1}function q(e){for(let t in e){let n=t;if(pe(n)&&e[n]!==null)return!0}return!1}function ge(e){for(let t in e){let n=t;if(me(n)&&e[n]!==null)return!0}return!1}function _e(e){for(let t in e){let n=t;if(he(n)&&e[n]!==null)return!0}return!1}function ve(e,t){return!!e.outStatistics?.length&&!q(e)&&!e.groupByFieldsForStatistics?.length&&!e.orderByFields?.length&&!e.returnDistinctValues&&!e.returnAggIds&&e.outStatistics.every(e=>ye(e,t))}function ye(e,t){switch(e.statisticType){case`count`:return e.onStatisticField===`1`||t.get(e.onStatisticField)!=null;case`min`:case`max`:{let n=t.get(e.onStatisticField);return n!=null&&M(n)}default:return!1}}function be(e,t){let n=e.statisticType===`exceedslimit`?null:t.get(e.onStatisticField),r=(e.statisticType===`min`||e.statisticType===`max`)&&n?.type===`esriFieldTypeDate`?n.type:`esriFieldTypeDouble`;return{name:e.outStatisticFieldName,alias:e.outStatisticFieldName,type:r}}function xe(e,t){switch(e.statisticType){case`count`:return J(e,t);case`min`:return Y(e,t,Math.min);case`max`:return Y(e,t,Math.max);default:return{available:!1,value:null}}}function J(e,t){if(e.statisticType!==`count`)return{available:!1,value:null};if(e.onStatisticField===`1`)return{available:!0,value:t.reduce((e,t)=>e+t.statistics.rowCount,0)};let n=0;for(let r of t){let t=r.statistics.statistics.get(e.onStatisticField);if(t==null||t.nullCount==null)return{available:!1,value:null};n+=r.statistics.rowCount-t.nullCount}return{available:!0,value:n}}function Y(e,t,n){if(e.statisticType!==`min`&&e.statisticType!==`max`)return{available:!1,value:null};let r=null,i=e.statisticType===`min`?`minValue`:`maxValue`;for(let a of t){let t=a.statistics.statistics.get(e.onStatisticField);if(t==null)return{available:!1,value:null};switch(t.type){case`null-only`:continue;case`unknown`:return{available:!1,value:null};case`bounds`:{let e=Se(t[i]);if(e==null)return{available:!1,value:null};r=r==null?e:n(r,e);break}}}return{available:!0,value:r}}function Se(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function X(e,t){let n=new V;for(let t of e)n.insert(t);return new T({...t,featureStore:n})}function Z(e,t){return e.statistics.statistics.get(t.fieldName)??null}function Ce(e,t){return e.slice().sort((e,n)=>{let r=Q(e,t),i=Q(n,t);return r===i?0:r<i?-1:1})}function Q(e,t){let n=Z(e,t);return n?.type===`bounds`?n.maxValue-n.minValue:1/0}function $(e,t,n){let r=e?.featureCount,i=!1;return r!=null&&r<has(`parquetlayer-full-query-feature-count`)&&(i=!0),{analytics:{supportsCacheHint:!1},attachment:null,data:{isVersioned:!1,isBranchVersioned:!1,supportedCurveTypes:[],supportsAttachment:!1,supportsM:n,supportsTrueCurve:!1,supportsZ:t},metadata:{supportsAdvancedFieldProperties:!1},operations:{supportsCalculate:!1,supportsTruncate:!1,supportsValidateSql:!1,supportsAdd:!1,supportsDelete:!1,supportsEditing:!1,supportsChangeTracking:!1,supportsQuery:!0,supportsQueryBins:!1,supportsQueryPivot:!1,supportsQueryAnalytics:!1,supportsQueryAttachments:!1,supportsQueryTopFeatures:!1,supportsResizeAttachments:!1,supportsSync:!1,supportsUpdate:!1,supportsExceedsLimitStatistics:!1,supportsAsyncConvert3D:!1},query:{...ie,maxRecordCount:K,supportsOrderBy:i,supportsDistinct:!0,supportsStatistics:!0,supportsSpatialAggregationStatistics:!1,supportedSpatialAggregationStatistics:{envelope:!1,centroid:!1,convexHull:!1}},queryAttributeBins:{supportsDate:!1,supportsFixedInterval:!1,supportsAutoInterval:!1,supportsFixedBoundaries:!1,supportsStackBy:!1,supportsSplitBy:!1,supportsSnapToData:!1,supportsReturnFullIntervalBin:!1,supportsFirstDayOfWeek:!1,supportsNormalization:!1},queryRelated:{supportsCount:!1,supportsOrderBy:!1,supportsPagination:!1,supportsCacheHint:!1},queryTopFeatures:{supportsCacheHint:!1},editing:{supportsDeleteByAnonymous:!1,supportsDeleteByOthers:!1,supportsGeometryUpdate:!1,supportsGlobalId:!1,supportsTrueCurveUpdate:!1,supportsTrueCurveUpdateByTrueCurveClientsOnly:!0,supportsReturnServiceEditsInSourceSpatialReference:!1,supportsRollbackOnFailure:!1,supportsUpdateByAnonymous:!1,supportsUpdateByOthers:!1,supportsUploadWithItemId:!1,supportsUpdateWithoutM:!1,supportsAsyncApplyEdits:!1,zDefault:void 0}}}function we(e){return!!e.objectIds?.length||!!e.outStatistics||!!e.orderByFields?.length||!!e.returnDistinctValues}export{fe 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"../../core/Collection.js";import n from"../../core/CollectionFlattener.js";import r from"../../core/Error.js";import i from"../../core/Logger.js";import{watch as a,sync as o}from"../../core/reactiveUtils.js";import{property as s,subclass as c}from"../../core/accessorSupport/decorators.js";import{nameToId as l,idToName as u}from"../../core/accessorSupport/PropertyOrigin.js";import{getProperties as d}from"../../core/accessorSupport/utils.js";import f from"../support/Sublayer.js";import{isSublayerOverhaul as p}from"../support/sublayerUtils.js";function m(e,t){let n=[],r={};return e&&e.forEach(e=>{let i=new f;if(i.read(e,t),r[i.id]=i,e.parentLayerId!=null&&e.parentLayerId!==-1){let t=r[e.parentLayerId];t.sublayers||=[],t.sublayers.unshift(i)}else n.unshift(i)}),n}const h=t.ofType(f);function g(e,t){e&&e.forEach(e=>{t(e),e.sublayers&&e.sublayers.length&&g(e.sublayers,t)})}const _=_=>{let v=_,y=class extends v{constructor(...e){super(...e),this.allSublayers=new n({getCollections:()=>[this.sublayers],getChildrenFunction(e){return e.sublayers}}),this.sublayersSourceJSON={2:{},3:{},4:{},5:{},6:{}},this.subtables=null,this.addHandles([a(()=>this.sublayers,(e,t)=>this._handleSublayersChange(e,t),o),a(()=>this.subtables,(e,t)=>this._handleSublayersChange(e,t),o)])}destroy(){this.allSublayers.destroy()}readSublayers(e,t){if(!t||!e)return;let{sublayersSourceJSON:n}=this,r=l(t.origin);if(r<2||(n[r]={context:t,visibleLayers:e.visibleLayers||n[r].visibleLayers,layers:e.layers||n[r].layers},r>2))return;this._set(`serviceSublayers`,this.createSublayersForOrigin(`service`).sublayers);let{sublayers:i,origin:a}=this.createSublayersForOrigin(`web-document`),o=d(this);o.setDefaultOrigin(a),this._set(`sublayers`,new h(i)),o.setDefaultOrigin(`user`)}findSublayerById(e){return this.allSublayers.find(t=>t.id===e)}createServiceSublayers(){return this.createSublayersForOrigin(`service`).sublayers}createSublayersForOrigin(e){let t,n=l(e===`web-document`?`web-map`:e),r=2,i=this.sublayersSourceJSON[2].layers,a=this.sublayersSourceJSON[2].context,o=null,s=[3,4,5].filter(e=>e<=n);for(let e of s){let t=this.sublayersSourceJSON[e];p(t.layers)&&(r=e,i=t.layers,a=t.context,t.visibleLayers&&(o={visibleLayers:t.visibleLayers,context:t.context}))}let c=[3,4,5].filter(e=>e>r&&e<=n),d=null;for(let e of c){let{layers:n,visibleLayers:r,context:i}=this.sublayersSourceJSON[e];n&&(d={layers:n,context:i},t??=e),r&&(o={visibleLayers:r,context:i})}let f=m(i,a),_=new Map,v=new Set;if(d)for(let e of d.layers)_.set(e.id,e);if(o?.visibleLayers)for(let e of o.visibleLayers)v.add(e);return g(f,e=>{d&&e.read(_.get(e.id),d.context),o&&e.read({defaultVisibility:v.has(e.id)},o.context)}),{origin:u(r),originWithPartialOverrides:t?u(t):null,sublayers:new h({items:f})}}read(e,t){super.read(e,t),this.readSublayers(e,t)}_handleSublayersChange(e,t){t&&(t.forEach(e=>{e.parent=null,e.layer=null}),this.removeHandles(`sublayers-owner`)),e&&(e.forEach(e=>{e.parent=this,e.layer=this}),this.addHandles([e.on(`after-add`,({item:e})=>{e.parent=this,e.layer=this}),e.on(`after-remove`,({item:e})=>{e.parent=null,e.layer=null})],`sublayers-owner`),this.type===`tile`&&this.addHandles(e.on(`before-changes`,e=>{i.getLogger(`esri.layers.TileLayer`).error(new r(`tilelayer:sublayers-non-modifiable`,`Sublayer can't be added, moved, or removed from the layer's sublayers`,{layer:this})),e.preventDefault()}),`sublayers-owner`))}};return e([s({readOnly:!0})],y.prototype,`allSublayers`,void 0),e([s({readOnly:!0})],y.prototype,`effectiveScaleRange`,void 0),e([s({readOnly:!0,type:t.ofType(f)})],y.prototype,`serviceSublayers`,void 0),e([s({value:null,type:h,json:{read:!1,write:{allowNull:!0,ignoreOrigin:!0}}})],y.prototype,`sublayers`,void 0),e([s({readOnly:!0})],y.prototype,`sublayersSourceJSON`,void 0),e([s({type:h,json:{read:{source:`tables`}}})],y.prototype,`subtables`,void 0),y=e([c(`esri.layers.mixins.SublayersOwner`)],y),y};export{_ as SublayersOwner,g as forEachSublayer};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../core/Collection.js";import n from"../../core/CollectionFlattener.js";import r from"../../core/Error.js";import i from"../../core/Logger.js";import{watch as a,sync as o}from"../../core/reactiveUtils.js";import{property as s,subclass as c}from"../../core/accessorSupport/decorators.js";import{nameToId as l,idToName as u}from"../../core/accessorSupport/PropertyOrigin.js";import{getProperties as d}from"../../core/accessorSupport/utils.js";import f from"../support/Sublayer.js";import{isSublayerOverhaul as p}from"../support/sublayerUtils.js";function m(e,t){let n=[],r={};return e&&e.forEach(e=>{let i=new f;if(i.read(e,t),r[i.id]=i,e.parentLayerId!=null&&e.parentLayerId!==-1){let t=r[e.parentLayerId];t.sublayers||=[],t.sublayers.unshift(i)}else n.unshift(i)}),n}const h=t.ofType(f);function g(e,t){e&&e.forEach(e=>{t(e),e.sublayers&&e.sublayers.length&&g(e.sublayers,t)})}const _=_=>{let v=_,y=class extends v{constructor(...e){super(...e),this.allSublayers=new n({getCollections:()=>[this.sublayers],getChildrenFunction(e){return e.sublayers}}),this.sublayersSourceJSON={2:{},3:{},4:{},5:{},6:{}},this.subtables=null,this.addHandles([a(()=>this.sublayers,(e,t)=>this._handleSublayersChange(e,t),o),a(()=>this.subtables,(e,t)=>this._handleSublayersChange(e,t),o)])}destroy(){this.allSublayers.destroy()}readSublayers(e,t){if(!t||!e)return;let{sublayersSourceJSON:n}=this,r=l(t.origin);if(r<2||(n[r]={context:t,visibleLayers:e.visibleLayers||n[r].visibleLayers,layers:e.layers||n[r].layers},r>2))return;this._set(`serviceSublayers`,this.createSublayersForOrigin(`service`).sublayers);let{sublayers:i,origin:a}=this.createSublayersForOrigin(`web-document`),o=d(this);o.setDefaultOrigin(a),this._set(`sublayers`,new h(i)),o.setDefaultOrigin(`user`)}findSublayerById(e){return this.allSublayers.find(t=>t.id===e)}createServiceSublayers(){return this.createSublayersForOrigin(`service`).sublayers}createSublayersForOrigin(e){let t,n=l(e===`web-document`?`web-map`:e),r=2,i=this.sublayersSourceJSON[2].layers,a=this.sublayersSourceJSON[2].context,o=null,s=[3,4,5].filter(e=>e<=n);for(let e of s){let t=this.sublayersSourceJSON[e];p(t.layers)&&(r=e,i=t.layers,a=t.context,t.visibleLayers&&(o={visibleLayers:t.visibleLayers,context:t.context}))}let c=[3,4,5].filter(e=>e>r&&e<=n),d=null;for(let e of c){let{layers:n,visibleLayers:r,context:i}=this.sublayersSourceJSON[e];n&&(d={layers:n,context:i},t??=e),r&&(o={visibleLayers:r,context:i})}let f=m(i,a),_=new Map,v=new Set;if(d)for(let e of d.layers)_.set(e.id,e);if(o?.visibleLayers)for(let e of o.visibleLayers)v.add(e);return g(f,e=>{d&&e.read(_.get(e.id),d.context),o&&e.read({defaultVisibility:v.has(e.id)},o.context)}),{origin:u(r),originWithPartialOverrides:t?u(t):null,sublayers:new h({items:f})}}read(e,t){super.read(e,t),this.readSublayers(e,t)}_handleSublayersChange(e,t){t&&(t.forEach(e=>{e.parent=null,e.layer=null}),this.removeHandles(`sublayers-owner`)),e&&(e.forEach(e=>{e.parent=this,e.layer=this}),this.addHandles([e.on(`after-add`,({item:e})=>{e.parent=this,e.layer=this}),e.on(`after-remove`,({item:e})=>{e.parent=null,e.layer=null})],`sublayers-owner`),this.type===`tile`&&this.addHandles(e.on(`before-changes`,e=>{i.getLogger(`esri.layers.TileLayer`).error(new r(`tilelayer:sublayers-non-modifiable`,`Sublayer can't be added, moved, or removed from the layer's sublayers`,{layer:this})),e.preventDefault()}),`sublayers-owner`))}};return e([s({readOnly:!0})],y.prototype,`allSublayers`,void 0),e([s({readOnly:!0})],y.prototype,`effectiveScaleRange`,void 0),e([s({readOnly:!0})],y.prototype,`effectiveVisible`,void 0),e([s({readOnly:!0,type:t.ofType(f)})],y.prototype,`serviceSublayers`,void 0),e([s({value:null,type:h,json:{read:!1,write:{allowNull:!0,ignoreOrigin:!0}}})],y.prototype,`sublayers`,void 0),e([s({readOnly:!0})],y.prototype,`sublayersSourceJSON`,void 0),e([s({type:h,json:{read:{source:`tables`}}})],y.prototype,`subtables`,void 0),y=e([c(`esri.layers.mixins.SublayersOwner`)],y),y};export{_ as SublayersOwner,g as forEachSublayer};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{isArrayLike as e}from"../../../core/arrayUtils.js";import{deg2rad as t}from"../../../core/mathUtils.js";import{clone as n,zeros as r}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import i from"../../../geometry/Point.js";import{rectifyMapPointPanoramic as a,rectifyMapPoint as o}from"./rectifyMapPoint.js";import{getWebMercatorScalingFactor as s,hasAngles as c,convertPixelToHeadingPitch as l,adjustHorizonAngles as u,reducerFn as d,scaleAndAddWithFactor as f,validatePixelsToTransform as p,validateRotationMatrix as m,computeFarplaneVertices as h,computeHFOVAndVFOV as g,vecToPoint as _,or as v,isUpdateElevationWithElevationSource as y,computeNewReferenceCoordinates as b,projectiveTransform as x}from"./utils.js";import{worldToImage as S}from"./worldToImage.js";import{viewingLimit as C}from"../../../widgets/OrientedImageryViewer/constants.js";async function w(e,t,n){let{verticalFieldOfView:r,imageBoundaries:i,scalingFactor:a,farPlaneVertices:o,cameraLocation:s,pixelsToTransform:c,vecToPoint:l,pixelDepths:u}=N(e,t),d=[];return await T(c,o,i,l,t,d,s,a,r,n,u),Array.isArray(e)?d:d[0]}async function T(e,t,n,r,a,s,c,l,u,d,f){let p=a.averageElevation,m=e.length;for(let h=0;h<m;h+=1){let m=e.at(h),g=k(t,n,m,r,a),_=f?.at(h);if(typeof _==`number`){let e=E(g,c,l),t=_*l,n=[c[0]+e[0]*t,c[1]+e[1]*t,c[2]+e[2]*_];s.push(new i(n,a.cameraLocation.spatialReference))}else d&&v(`elevationSample`in d,y(d))&&(p=(await o(r(g),{x:m[0],y:m[1]},{...a,...d,farPlaneVertices:t.map(r)}))[2]),s.push(r(D(g,c,l,p,a.cameraPitch,u)))}}function E(e,t,n){let i=e[0]-t[0],a=e[1]-t[1],o=e[2]-t[2],s=Math.hypot(i,a)/n,c=Math.hypot(o,s)*n,l=r();return l[0]=i/c,l[1]=a/c,l[2]=o/c,l[2]*=n,l}function D(e,t,r,i,a,o){let s=n(e),c=E(e,t,r);if(O(e[2],i,a,o)){let e=Math.abs((t[2]-i)/-c[2])*r;s=f(t,c,e,r)}else s[2]=i;return s}function O(e,t,n,r){return e<t||n+r/2<C}function k(e,t,n,r,i){let a=null,o=0,s,c=e,l=t;for(;o<=9;){let e=j(n,l,c,i);if(s=e.error,a=e.transformedPoint,v(s<=1,o===9))break;c=b(c,s,n,t),l=A(c,r,i),o++}return a}function A(e,t,n){return S(e.map(t),n).map(({x:e,y:t})=>[e,t,1])}function j(e,t,n,r){let{cameraLocation:a}=r,o=x(e,t,n),{x:s,y:c}=S(new i(o,a.spatialReference),r);return{transformedPoint:o,error:M(e,[s,c,1])}}function M(e,t){return Math.abs(e[0]-t[0])+Math.abs(e[1]-t[1])}function N(t,n){let r=e(t)||`items`in t?t:[t],{cameraLocation:a,rotationMatrix:o}=n;if(p(r,a),m(o),o?.length!==9)throw Error(`Rotation matrix is not provided or is not a valid 3x3 matrix`);let c=s(a.y,a.spatialReference),l=h({...n,scalingFactor:c}),u=S(l.map(e=>new i(e,a.spatialReference)),n),{vfov:d}=g(n.horizontalFieldOfView,n.verticalFieldOfView,n.cameraRoll);return{cameraLocation:a.toArray(),imageBoundaries:u.map(({x:e,y:t})=>[e,t,1]),verticalFieldOfView:d,farPlaneVertices:l,scalingFactor:c,pixelsToTransform:r.map(e=>[e.x,e.y,1]),vecToPoint:_(a.spatialReference),pixelDepths:r.map(e=>P(e)?e.depth:void 0)}}function P(e){return`depth`in e&&typeof e.depth==`number`}async function F(e,n,r){let{cameraLocation:o,farDistance:f,imageHeight:p,imageWidth:m,verticalFieldOfView:h,horizonPitch:g,horizonRoll:_,horizonYaw:v}=n,y=s(o.y,o.spatialReference),b=f*y,x=[],[S,C,w]=o.toArray(),T=Array.isArray(e)?e:[e];for(let e of T){let s,T,E=P(e),O=E?e.depth*y:b;if(c(e))s=e.heading,T=e.pitch;else{let t=l({x:e.x,y:e.y},m,p),n=u(t.heading,t.pitch,[g,_,v],!0);s=n[0],T=n[1]}let k=Math.sin(t(s))*Math.sin(t(T)),A=Math.cos(t(s))*Math.sin(t(T)),j=-Math.cos(t(T)),M=[S+k*O,C+A*O,w+j*(E?e.depth:f)];if(E){x.push(new i(M,o.spatialReference));continue}let N=n.averageElevation;r&&
|
|
2
|
+
import{isArrayLike as e}from"../../../core/arrayUtils.js";import{deg2rad as t}from"../../../core/mathUtils.js";import{clone as n,zeros as r}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import i from"../../../geometry/Point.js";import{rectifyMapPointPanoramic as a,rectifyMapPoint as o}from"./rectifyMapPoint.js";import{getWebMercatorScalingFactor as s,hasAngles as c,convertPixelToHeadingPitch as l,adjustHorizonAngles as u,reducerFn as d,scaleAndAddWithFactor as f,validatePixelsToTransform as p,validateRotationMatrix as m,computeFarplaneVertices as h,computeHFOVAndVFOV as g,vecToPoint as _,or as v,isUpdateElevationWithElevationSource as y,computeNewReferenceCoordinates as b,projectiveTransform as x}from"./utils.js";import{worldToImage as S}from"./worldToImage.js";import{viewingLimit as C}from"../../../widgets/OrientedImageryViewer/constants.js";async function w(e,t,n){let{verticalFieldOfView:r,imageBoundaries:i,scalingFactor:a,farPlaneVertices:o,cameraLocation:s,pixelsToTransform:c,vecToPoint:l,pixelDepths:u}=N(e,t),d=[];return await T(c,o,i,l,t,d,s,a,r,n,u),Array.isArray(e)?d:d[0]}async function T(e,t,n,r,a,s,c,l,u,d,f){let p=a.averageElevation,m=e.length;for(let h=0;h<m;h+=1){let m=e.at(h),g=k(t,n,m,r,a),_=f?.at(h);if(typeof _==`number`){let e=E(g,c,l),t=_*l,n=[c[0]+e[0]*t,c[1]+e[1]*t,c[2]+e[2]*_];s.push(new i(n,a.cameraLocation.spatialReference))}else d&&v(`elevationSample`in d,y(d))&&(p=(await o(r(g),{x:m[0],y:m[1]},{...a,...d,farPlaneVertices:t.map(r)}))[2]),s.push(r(D(g,c,l,p,a.cameraPitch,u)))}}function E(e,t,n){let i=e[0]-t[0],a=e[1]-t[1],o=e[2]-t[2],s=Math.hypot(i,a)/n,c=Math.hypot(o,s)*n,l=r();return l[0]=i/c,l[1]=a/c,l[2]=o/c,l[2]*=n,l}function D(e,t,r,i,a,o){let s=n(e),c=E(e,t,r);if(O(e[2],i,a,o)){let e=Math.abs((t[2]-i)/-c[2])*r;s=f(t,c,e,r)}else s[2]=i;return s}function O(e,t,n,r){return e<t||n+r/2<C}function k(e,t,n,r,i){let a=null,o=0,s,c=e,l=t;for(;o<=9;){let e=j(n,l,c,i);if(s=e.error,a=e.transformedPoint,v(s<=1,o===9))break;c=b(c,s,n,t),l=A(c,r,i),o++}return a}function A(e,t,n){return S(e.map(t),n).map(({x:e,y:t})=>[e,t,1])}function j(e,t,n,r){let{cameraLocation:a}=r,o=x(e,t,n),{x:s,y:c}=S(new i(o,a.spatialReference),r);return{transformedPoint:o,error:M(e,[s,c,1])}}function M(e,t){return Math.abs(e[0]-t[0])+Math.abs(e[1]-t[1])}function N(t,n){let r=e(t)||`items`in t?t:[t],{cameraLocation:a,rotationMatrix:o}=n;if(p(r,a),m(o),o?.length!==9)throw Error(`Rotation matrix is not provided or is not a valid 3x3 matrix`);let c=s(a.y,a.spatialReference),l=h({...n,scalingFactor:c}),u=S(l.map(e=>new i(e,a.spatialReference)),n),{vfov:d}=g(n.horizontalFieldOfView,n.verticalFieldOfView,n.cameraRoll);return{cameraLocation:a.toArray(),imageBoundaries:u.map(({x:e,y:t})=>[e,t,1]),verticalFieldOfView:d,farPlaneVertices:l,scalingFactor:c,pixelsToTransform:r.map(e=>[e.x,e.y,1]),vecToPoint:_(a.spatialReference),pixelDepths:r.map(e=>P(e)?e.depth:void 0)}}function P(e){return`depth`in e&&typeof e.depth==`number`}async function F(e,n,r){let{cameraLocation:o,farDistance:f,imageHeight:p,imageWidth:m,verticalFieldOfView:h,horizonPitch:g,horizonRoll:_,horizonYaw:v}=n,y=s(o.y,o.spatialReference),b=f*y,x=[],[S,C,w]=o.toArray(),T=Array.isArray(e)?e:[e];for(let e of T){let s,T,E=P(e),O=E?e.depth*y:b;if(c(e))s=e.heading,T=e.pitch;else{let t=l({x:e.x,y:e.y},m,p),n=u(t.heading,t.pitch,[g,_,v],!0);s=n[0],T=n[1]}let k=Math.sin(t(s))*Math.sin(t(T)),A=Math.cos(t(s))*Math.sin(t(T)),j=-Math.cos(t(T)),M=[S+k*O,C+A*O,w+j*(E?e.depth:f)];if(E){x.push(new i(M,o.spatialReference));continue}let N=n.averageElevation,F;if(r&&T<90){let e=await a(new i(M,o.spatialReference),{heading:s,pitch:T},{...n,...r,farPlaneVertices:d(f,f).map(([e,t])=>new i([o.x+e,o.y+t],o.spatialReference))});F=e,N=e?.[2]??N}let I=(N-w)/(M[2]-w),L=T>=90||!!r&&!F||!Number.isFinite(I)||I<0;x.push(new i(L?[M[0],M[1],N]:D(M,o.toArray(),y,N,T,h),o.spatialReference))}return Array.isArray(e)?x:x[0]}export{w as imageToWorld,F as imageToWorldPanoramic};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import"../../../core/RandomLCG.js";import"../../../core/Logger.js";import"../../../core/has.js";import{create as e}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import t from"../../../geometry/Point.js";import n from"../../../geometry/Polygon.js";import{fromArray as r,
|
|
2
|
+
import"../../../core/RandomLCG.js";import"../../../core/Logger.js";import"../../../core/has.js";import{create as e}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import t from"../../../geometry/Point.js";import n from"../../../geometry/Polygon.js";import{fromArray as r,intersectRay as i,fromPoints as a,intersectLine as o}from"../../../geometry/support/plane.js";import{fromPoints as s}from"../../../geometry/support/ray.js";import c from"./updateElevation.js";import{pointToArray as l,or as u}from"./utils.js";import{worldToImagePanoramic as d,worldToImage as f}from"./worldToImage.js";import{normalizeDegrees as p}from"../../../widgets/OrientedImageryViewer/components/imageNavigationUtils.js";async function m(n,r,i,s=g){let{cameraLocation:c,farPlaneVertices:d}=i,f=l(c),p=[];await v(d,i,p);let m=a(p[0],p[1],p[2]),h=n.clone();for(let d=0;d<s;d++){let s=e();if(!o(m,f,l(n),s))break;let d=0,g=null;if({error:d,imagePoint:g,pointWithZ:h}=await y(r,new t(s,c.spatialReference),i),d<=1)break;let[v,b]=_(c.spatialReference,p);if(u(v<=1,b<=1))break;p.splice(0,p.length,...await S(v,b,new t(s,c.spatialReference),i)),m=a(p[0],p[1],p[2])}return l(h)}async function h(n,a,o,c=g){let{cameraLocation:d,farPlaneVertices:f}=o,p=l(d),m=s(p,l(n)),h=[];await v(f,o,h);let y=[0,0,0,0],x=r(y,h.flat(),!1),C=n.clone();for(let n=0;n<c;n++){let n=e();if(!i(y,m,n)||!x)return;let s=0,c;if({error:s,imagePoint:c,pointWithZ:C}=await b(a,new t(n,d.spatialReference),o),s<=1)return l(C);let[f,p]=_(d.spatialReference,h);if(u(f<=1,p<=1))break;h.splice(0,h.length,...await S(f,p,new t(n,d.spatialReference),o)),x=r(y,h.flat(),!1)}}const g=10;function _(e,t){let r=new n({spatialReference:e});return r.addRing(t),[r.extent?.width?r.extent.width/10:1,r.extent?.height?r.extent.height/10:1]}async function v(e,t,n){let r=e.map(e=>e.clone()),i=await c(r,t);n.push(...i.map(l))}async function y(e,t,n){let r=await c(t,n),i=f(r,n);return{error:x(i,e),imagePoint:i,pointWithZ:r}}async function b(e,t,n){let r=await c(t,n),i=d(r,n),a=p(i.heading+n.cameraHeading);return{error:Math.abs(a-e.heading)+Math.abs(i.pitch-e.pitch),imagePoint:i,pointWithZ:r}}const x=(e,t)=>Math.abs(e.x-t.x)+Math.abs(e.y-t.y);async function S(e,n,r,i){let a=[[-e,-n],[e,-n],[e,n],[-e,n]].map(([e,n])=>new t([r.x+e,r.y+n],r.spatialReference));return c(a,i).then(e=>e.map(e=>e.toArray()))}export{m as rectifyMapPoint,h as rectifyMapPointPanoramic};
|
|
@@ -27,7 +27,7 @@ import type { Loadable, LoadableMixinProperties } from "../../core/Loadable.js";
|
|
|
27
27
|
import type { MultiOriginJSONSupportMixin } from "../../core/MultiOriginJSONSupport.js";
|
|
28
28
|
import type { AbortOptions } from "../../core/promiseUtils.js";
|
|
29
29
|
import type { FeatureGeometryType } from "../../geometry/types.js";
|
|
30
|
-
import type { FieldDomainOptions } from "../types.js";
|
|
30
|
+
import type { FieldDomainOptions, LayerListMode } from "../types.js";
|
|
31
31
|
import type { DomainUnion, SublayerCapabilities } from "./types.js";
|
|
32
32
|
import type { RendererUnion } from "../../renderers/types.js";
|
|
33
33
|
import type { AttachmentQueryProperties } from "../../rest/support/AttachmentQuery.js";
|
|
@@ -652,7 +652,7 @@ export default class Sublayer extends SublayerSuperclass {
|
|
|
652
652
|
* @default "show"
|
|
653
653
|
* @since 4.11
|
|
654
654
|
*/
|
|
655
|
-
accessor listMode:
|
|
655
|
+
accessor listMode: LayerListMode;
|
|
656
656
|
/**
|
|
657
657
|
* Indicates whether the sublayer's resources have loaded. When `true`,
|
|
658
658
|
* all the properties of the object can be accessed.
|
|
@@ -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"../../PopupTemplate.js";import n from"../../request.js";import r from"../../core/Collection.js";import i from"../../core/Error.js";import has from"../../core/has.js";import{IdentifiableMixin as a}from"../../core/Identifiable.js";import{clone as o}from"../../core/lang.js";import{Loadable as s}from"../../core/Loadable.js";import c from"../../core/Logger.js";import{MultiOriginJSONSupportMixin as l}from"../../core/MultiOriginJSONSupport.js";import{sqlAnd as u}from"../../core/sql.js";import{objectToQuery as d}from"../../core/urlUtils.js";import{property as f,cast as p,subclass as m}from"../../core/accessorSupport/decorators.js";import{ensureInteger as ee,ensureType as te,Integer as h,ensureClass as g}from"../../core/accessorSupport/ensureType.js";import{nameToId as ne}from"../../core/accessorSupport/PropertyOrigin.js";import{getProperties as _}from"../../core/accessorSupport/utils.js";import v from"../../geometry/Extent.js";import y from"../../geometry/SpatialReference.js";import{joinScaleRanges as b}from"../../geometry/support/scaleUtils.js";import{featureGeometryTypeKebabDictionary as x}from"../../geometry/support/typeUtils.js";import S from"../../graphic/MapImageGraphicOrigin.js";import C from"../../graphic/TileGraphicOrigin.js";import w from"../graphics/sources/support/QueryTask.js";import{readOrderByInfos as re}from"../mixins/OrderedLayer.js";import ie from"./EditFieldsInfo.js";import{getFeatureType as ae}from"./featureLayerUtils.js";import oe from"./FeatureType.js";import se from"./Field.js";import T from"./FieldsIndex.js";import{fixRendererFields as E}from"./fieldUtils.js";import D from"./LabelClass.js";import{validateLabelingInfo as O}from"./labelingInfo.js";import k from"./LayerFloorInfo.js";import A from"./OrderByInfo.js";import j from"./Relationship.js";import{getFeatureLayerCapabilities as M}from"./serviceCapabilitiesUtils.js";import{webSceneRendererTypes as N,rendererTypes as P}from"../../renderers/support/typeUtils.js";import{parseUrl as F}from"../../rest/utils.js";import I from"../../rest/layerSources/DynamicDataLayer.js";import L from"../../rest/layerSources/DynamicMapLayer.js";import R from"../../rest/layerSources/DynamicWorkspaceLayer.js";import z from"../../rest/support/AttachmentQuery.js";import ce from"../../rest/support/Query.js";import{createPopupTemplate as B}from"../../support/popupUtils.js";import{isSymbol3D as V}from"../../symbols/support/typeUtils.js";import H from"../../tables/AttributeTableTemplate.js";import{reader as U}from"../../core/accessorSupport/decorators/reader.js";import{writer as W}from"../../core/accessorSupport/decorators/writer.js";var G;function K(e){return e?.type===`esriSMS`}function q(e,t,n){let r=n.minimumWritableOrigin||n.origin;return r?e.originIdOf(t)>=ne(r):!1}function J(e,t,n){let r=q(this,t,n);return{ignoreOrigin:!0,allowNull:r,enabled:n?n.layer?.type===`map-image`&&(n.writeSublayerStructure||r):!1}}function Y(e,t,n){return{enabled:n?n.layer?.type===`tile`&&(q(this,t,n)||this._isOverridden(t)):!1}}function X(e,t,n){return{ignoreOrigin:!0,enabled:n&&n.writeSublayerStructure||!1}}function Z(e,t,n){return{ignoreOrigin:!0,enabled:n?.writeSublayerStructure?this.originIdOf(t)>2:!1}}function Q(e,t,n){return{ignoreOrigin:!0,enabled:n?n.writeSublayerStructure||q(this,t,n):!1}}let le=0;const ue=new Set([`layer`,`parent`,`loaded`,`loadStatus`,`loadError`,`loadWarnings`]);let $=class extends l(a(s)){static{G=this}constructor(e){super(e),this.attributeTableTemplate=null,this.capabilities=void 0,this.editFieldsInfo=null,this.maxScaleRange={minScale:0,maxScale:0},this.fields=null,this.fullExtent=null,this.geometryType=null,this.globalIdField=null,this.isTable=!1,this.legendEnabled=!0,this.objectIdField=null,this.parent=null,this.popupEnabled=!0,this.popupTemplate=null,this.relationships=null,this.sourceJSON=null,this.spatialReference=null,this.title=null,this.typeIdField=null,this.type=`sublayer`,this.types=null,this.uniqueIdFields=null,this._lastParsedUrl=null}async load(e){return this.addResolvingPromise(this.reload(e)),this}readCapabilities(e,t){t=t.layerDefinition||t;let{attachment:n,operations:{supportsQuery:r,supportsQueryAttachments:i},query:{supportsFormatPBF:a,supportsOrderBy:o,supportsPagination:s,relativeTimeBinWindow:c},data:{supportsAttachment:l},queryRelated:u}=M(t,this.url);return{attachment:{supportsOrderByFields:n?.supportsOrderByFields??!1,supportsResize:n?.supportsResize??!1,supportsTypeWildcard:n?.supportsTypeWildcard??!1},exportMap:{supportsModification:!!t.canModifyLayer},operations:{supportsQuery:r,supportsQueryAttachments:i},data:{supportsAttachment:l},query:{relativeTimeBinWindow:c,supportsFormatPBF:a,supportsOrderBy:o,supportsPagination:s},queryRelated:u}}get defaultPopupTemplate(){return this.createPopupTemplate()}set definitionExpression(e){this._setAndNotifyLayer(`definitionExpression`,e)}get effectiveScaleRange(){let e=this._get(`effectiveScaleRange`),{maxScale:t,minScale:n,parent:r}=this,i={minScale:n,maxScale:t};return r?.effectiveScaleRange!==void 0&&b(i,r.effectiveScaleRange),e&&e.minScale===i.minScale&&e.maxScale===i.maxScale?e:i}get effectiveUniqueIdFields(){return this.uniqueIdFields?[...this.uniqueIdFields]:this.objectIdField?[this.objectIdField]:[]}readMaxScaleRange(e,t){return t=t.layerDefinition||t,{minScale:t.minScale??0,maxScale:t.maxScale??0}}get fieldsIndex(){return new T(this.fields||[])}set floorInfo(e){this._setAndNotifyLayer(`floorInfo`,e)}readGlobalIdFieldFromService(e,t){if(t=t.layerDefinition||t,t.globalIdField)return t.globalIdField;if(t.fields){for(let e of t.fields)if(e.type===`esriFieldTypeGlobalID`)return e.name}}get graphicOrigin(){if(!this.layer)return null;switch(this.layer.type){case`tile`:return new C(this.layer,this);case`map-image`:return new S(this.layer,this)}}get id(){return this._get(`id`)??le++}set id(e){this._get(`id`)!==e&&(this.layer?.capabilities?.exportMap?.supportsDynamicLayers===!1?this._logLockedError(`id`,`capability not available 'layer.capabilities.exportMap.supportsDynamicLayers'`):this._set(`id`,e))}readIsTable(e,t){return t.type===`Table`}set labelingInfo(e){this._setAndNotifyLayer(`labelingInfo`,e)}writeLabelingInfo(e,t,n,r){e&&e.length&&(t.layerDefinition={drawingInfo:{labelingInfo:e.map(e=>e.write({},r))}})}set labelsVisible(e){this._setAndNotifyLayer(`labelsVisible`,e)}set layer(e){this._set(`layer`,e),this.sublayers?.forEach(t=>t.layer=e)}set listMode(e){this._set(`listMode`,e)}get loaded(){return super.loaded}set minScale(e){this._setAndNotifyLayer(`minScale`,e)}readMinScale(e,t){return t.minScale||t.layerDefinition?.minScale||0}set maxScale(e){this._setAndNotifyLayer(`maxScale`,e)}readMaxScale(e,t){return t.maxScale||t.layerDefinition?.maxScale||0}readObjectIdFieldFromService(e,t){return t=t.layerDefinition||t,t.objectIdField?t.objectIdField:t.fields?.find(e=>e.type===`esriFieldTypeOID`)?.name}set opacity(e){this._setAndNotifyLayer(`opacity`,e)}readOpacity(e,t){let{layerDefinition:n}=t;return 1-(n?.transparency??n?.drawingInfo?.transparency??0)*.01}writeOpacity(e,t,n,r){t.layerDefinition={drawingInfo:{transparency:100-e*100}}}set orderBy(e){this._setAndNotifyLayer(`orderBy`,e)}writeParent(e,t){t.parentLayerId=!this.parent||this.parent===this.layer?-1:ee(this.parent.id)}get queryTask(){if(!this.layer)return null;let{capabilities:e,fieldsIndex:t,layer:n,uniqueIdFields:r,url:i}=this,{spatialReference:a}=n,o=`gdbVersion`in n?n.gdbVersion:void 0,s=has(`featurelayer-pbf`)&&e?.query.supportsFormatPBF,c=e?.operations?.supportsQueryAttachments??!1,l=e?.query?.relativeTimeBinWindow??0;return new w({fieldsIndex:t,gdbVersion:o,pbfSupported:s,queryAttachmentsSupported:c,relativeTimeBinWindow:l,sourceSpatialReference:a,uniqueIdFields:r,url:i})}set renderer(e){if(E(e,this.fieldsIndex),e){for(let t of e.symbols)if(V(t)){c.getLogger(this).warn(`Sublayer renderer should use 2D symbols`);break}}this._setAndNotifyLayer(`renderer`,e)}get source(){return this._get(`source`)||new L({mapLayerId:this.id})}set source(e){this._setAndNotifyLayer(`source`,e)}get sublayers(){return this._get(`sublayers`)}set sublayers(e){this._handleSublayersChange(e,this._get(`sublayers`)),this._set(`sublayers`,e)}castSublayers(e){return te(r.ofType(G),e)}writeSublayers(e,t,n){this.sublayers?.length&&(t[n]=this.sublayers.map(e=>e.id).toArray().reverse())}readTitle(e,t){return t.layerDefinition?.name??t.name}readTypeIdField(e,t){t=t.layerDefinition||t;let n=t.typeIdField;if(n&&t.fields){n=n.toLowerCase();let e=t.fields.find(e=>e.name.toLowerCase()===n);e&&(n=e.name)}return n}readUniqueIdFields(e,t){return t.layerDefinition?.uniqueIdInfo?.OIDFieldContainsHashValue?t.layerDefinition.uniqueIdInfo.fields:null}get url(){let e=this.layer?.parsedUrl??this._lastParsedUrl,t=this.source;if(!e)return null;if(this._lastParsedUrl=e,t?.type===`map-layer`)return`${e.path}/${t.mapLayerId}`;let n={layer:JSON.stringify({source:this.source})};return`${e.path}/dynamicLayer?${d(n)}`}set url(e){this._overrideIfSome(`url`,e)}set visible(e){this._setAndNotifyLayer(`visible`,e)}writeVisible(e,t,n,r){t[n]=this.getAtOrigin(`defaultVisibility`,`service`)||e}clone(){let{store:e}=_(this),t=new G;return _(t).store=e.clone(ue),this.commitProperty(`url`),t._lastParsedUrl=this._lastParsedUrl,t}createPopupTemplate(e){return B(this,e)}createQuery(){return new ce({returnGeometry:!0,where:this.definitionExpression||`1=1`})}async createFeatureLayer(){if(this.sublayers)return null;let e=(await import(`../FeatureLayer.js`)).default,{layer:t,url:n}=this,r;if(n&&this.originIdOf(`url`)>2)r=new e({url:n});else if(t?.parsedUrl){let n=t.parsedUrl;r=new e({url:n.path}),n&&this.source&&(this.source.type===`map-layer`?r.layerId=this.source.mapLayerId:r.dynamicDataSource=this.source)}else throw new i(`createFeatureLayer:missing-information`,`Cannot create a FeatureLayer without a url or a parent layer`);return t?.refreshInterval!=null&&(r.refreshInterval=t.refreshInterval),this.definitionExpression&&(r.definitionExpression=this.definitionExpression),this.floorInfo&&(r.floorInfo=o(this.floorInfo)),this.originIdOf(`labelingInfo`)>2&&(r.labelingInfo=o(this.labelingInfo)),this.originIdOf(`labelsVisible`)>0&&(r.labelsVisible=this.labelsVisible),this.originIdOf(`legendEnabled`)>0&&(r.legendEnabled=this.legendEnabled),this.originIdOf(`visible`)>0&&(r.visible=this.visible),this.originIdOf(`minScale`)>0&&(r.minScale=this.minScale),this.originIdOf(`maxScale`)>0&&(r.maxScale=this.maxScale),this.originIdOf(`opacity`)>0&&(r.opacity=this.opacity),this.originIdOf(`popupTemplate`)>0&&(r.popupTemplate=o(this.popupTemplate)),this.originIdOf(`renderer`)>2&&(r.renderer=o(this.renderer)),this.source?.type===`data-layer`&&(r.dynamicDataSource=this.source.clone()),this.originIdOf(`title`)>0&&(r.title=this.title),t?.type===`map-image`&&t.originIdOf(`customParameters`)>0&&(r.customParameters=t.customParameters),t?.type===`tile`&&t.originIdOf(`customParameters`)>0&&(r.customParameters=t.customParameters),r}getField(e){return this.fieldsIndex.get(e)}getFeatureType(e){return ae(this.types,this.typeIdField,e)}getFieldDomain(e,t){let n=t?.feature,r=this.getFeatureType(n);if(r){let t=r.domains&&r.domains[e];if(t&&t.type!==`inherited`)return t}return this._getLayerDomain(e)}async queryAttachments(e,t){await this.load();let n=z.from(e),r=this.capabilities;if(!r?.data?.supportsAttachment)throw new i(`queryAttachments:not-supported`,`this layer doesn't support attachments`);let{attachmentTypes:a,objectIds:o,globalIds:s,num:c,size:l,start:u,where:d}=n;if(!r?.operations?.supportsQueryAttachments){let e=a?.length>0,t=s?.length>0,r=l?.length>0;if(e||t||r||c||u||d)throw new i(`queryAttachments:option-not-supported`,`when 'capabilities.operations.supportsQueryAttachments' is false, only objectIds is supported`,n)}if(!(o?.length||s?.length||d))throw new i(`queryAttachments:invalid-query`,`'objectIds', 'globalIds', or 'where' are required to perform attachment query`,n);return!r?.attachment?.supportsOrderByFields&&n.orderByFields?.length&&(n=n.clone(),n.orderByFields=null),this.queryTask.executeAttachmentQuery(n,t)}async queryFeatureCount(e=this.createQuery(),t){if(await this.load(),!this.capabilities.operations.supportsQuery)throw new i(`queryFeatureCount:not-supported`,`this layer doesn't support queries.`);if(!this.url)throw new i(`queryFeatureCount:not-supported`,`this layer has no url.`);let n=this.layer?.apiKey;return await this.queryTask.executeForCount(e,{...t,query:{...this.layer?.customParameters,token:n}})}async queryFeatures(e=this.createQuery(),t){if(await this.load(),!this.capabilities.operations.supportsQuery)throw new i(`queryFeatures:not-supported`,`this layer doesn't support queries.`);if(!this.url)throw new i(`queryFeatures:not-supported`,`this layer has no url.`);let n=await this.queryTask.execute(e,{...t,query:{...this.layer?.customParameters,token:this.layer?.apiKey}});if(n?.features){let e=this.graphicOrigin;for(let t of n.features)t.sourceLayer=this,t.origin=e}return n}async queryObjectIds(e=this.createQuery(),t){if(await this.load(),!this.capabilities.operations.supportsQuery)throw new i(`queryObjectIds:not-supported`,`this layer doesn't support queries.`);if(!this.url)throw new i(`queryObjectIds:not-supported`,`this layer has no url.`);let n=this.layer?.apiKey;return await this.queryTask.executeForIds(e,{...t,query:{...this.layer?.customParameters,token:n}})}async queryRelatedFeatures(e,t){if(await this.load(),!this.capabilities.operations.supportsQuery)throw new i(`queryRelatedFeatures:not-supported`,`this layer doesn't support queries.`);if(!this.url)throw new i(`queryRelatedFeatures:not-supported`,`this layer has no url.`);let n=this.layer?.apiKey;return await this.queryTask.executeRelationshipQuery(e,{...t,query:{...this.layer?.customParameters,token:n}})}async queryRelatedFeaturesCount(e,t){if(await this.load(),!this.capabilities.operations.supportsQuery)throw new i(`queryRelatedFeaturesCount:not-supported`,`this layer doesn't support queries.`);if(!this.capabilities.queryRelated.supportsCount)throw new i(`queryRelatedFeaturesCount:not-supported`,`this layer doesn't support query related counts.`);if(!this.url)throw new i(`queryRelatedFeaturesCount:not-supported`,`this layer has no url.`);let n=this.layer?.apiKey;return await this.queryTask.executeRelationshipQueryForCount(e,{...t,query:{...this.layer?.customParameters,token:n}})}async reload(e){if(this.loadStatus===`not-loaded`)return this.load(e).then(()=>{});let{layer:t,url:r}=this;if(!t&&!r)throw new i(`sublayer:missing-layer`,`Sublayer can't be loaded without being part of a layer`,{sublayer:this});let a=t?await t.fetchSublayerInfo(this,e):(await n(r,{query:{f:`json`},...e})).data;a&&(this.sourceJSON={...this.sourceJSON,...a},this.read({layerDefinition:a},{origin:`service`,layer:t,url:F(r)}))}toExportImageJSON(e){let t={id:this.id,source:this.source?.toJSON()||{mapLayerId:this.id,type:`mapLayer`}},n=u(e,this.definitionExpression);n!=null&&(t.definitionExpression=n);let r=[`renderer`,`labelingInfo`,`opacity`,`labelsVisible`].reduce((e,t)=>(e[t]=this.originIdOf(t),e),{});if(Object.keys(r).some(e=>r[e]>2)){let e=t.drawingInfo={};if(r.renderer>2&&(e.renderer=this.renderer?this.renderer.toJSON():null),r.labelsVisible>2&&(e.showLabels=this.labelsVisible),this.labelsVisible&&r.labelingInfo>2){if(!this.labelingInfo)e.showLabels=!1;else{!this.loaded&&this.labelingInfo?.some(e=>!e.labelPlacement)&&c.getLogger(this).warnOnce(`A Sublayer (title: ${this.title}, id: ${this.id}) has an undefined 'labelPlacement' and so labels cannot be displayed. Either define a valid 'labelPlacement' or call Sublayer.load() to use a default value based on geometry type.`,{sublayer:this});let t=this.labelingInfo;this.geometryType!=null&&(t=O(this.labelingInfo,x.toJSON(this.geometryType))),e.showLabels=!0,e.labelingInfo=t.filter(e=>e.labelPlacement).map(e=>e.toJSON({origin:`service`,layer:this.layer}))}}r.opacity>2&&(e.transparency=100-this.opacity*100),this._assignDefaultSymbolColors(e.renderer)}return(this.layer?.capabilities?.exportMap?.supportsSublayerOrderBy??!1)&&this.originIdOf(`orderBy`)>2&&(t.orderBy=this.orderBy?.map(e=>e.toJSON())??null),t}_assignDefaultSymbolColors(e){this._forEachSimpleMarkerSymbols(e,e=>{e.color||(e.style===`esriSMSX`||e.style===`esriSMSCross`)&&(e.color=e.outline?.color?e.outline.color:[0,0,0,0])})}_forEachSimpleMarkerSymbols(e,t){if(e){let n=(`uniqueValueInfos`in e?e.uniqueValueInfos:`classBreakInfos`in e?e.classBreakInfos:null)??[];for(let e of n)K(e.symbol)&&t(e.symbol);`symbol`in e&&K(e.symbol)&&t(e.symbol),`defaultSymbol`in e&&K(e.defaultSymbol)&&t(e.defaultSymbol)}}_setAndNotifyLayer(e,t){let n=this.layer,r=this._get(e),i,a;switch(e){case`definitionExpression`:case`floorInfo`:i=`supportsSublayerDefinitionExpression`;break;case`minScale`:case`maxScale`:case`visible`:i=`supportsSublayerVisibility`;break;case`labelingInfo`:case`labelsVisible`:case`opacity`:case`renderer`:case`source`:i=`supportsDynamicLayers`,a=`supportsModification`;break;case`orderBy`:i=`supportsSublayerOrderBy`,a=`supportsModification`}let o=_(this).getDefaultOrigin();if(o!==`service`){if(i&&this.layer?.capabilities?.exportMap?.[i]===!1){this._logLockedError(e,`capability not available 'layer.capabilities.exportMap.${i}'`);return}if(a&&this.capabilities?.exportMap[a]===!1){this._logLockedError(e,`capability not available 'capabilities.exportMap.${a}'`);return}}e===`source`&&this.loadStatus!==`not-loaded`?this._logLockedError(e,`'source' can't be changed after calling sublayer.load()`):(this._set(e,t),o!==`service`&&r!==t&&n?.emit&&n.emit(`sublayer-update`,{propertyName:e,target:this}))}_handleSublayersChange(e,t){t&&(t.forEach(e=>{e.parent=null,e.layer=null}),this.removeAllHandles()),e&&(e.forEach(e=>{e.parent=this,e.layer=this.layer}),this.addHandles([e.on(`after-add`,({item:e})=>{e.parent=this,e.layer=this.layer}),e.on(`after-remove`,({item:e})=>{e.parent=null,e.layer=null}),e.on(`before-changes`,e=>{(this.layer?.capabilities?.exportMap?.supportsSublayersChanges??!0)||(c.getLogger(this).error(new i(`sublayer:sublayers-non-modifiable`,`Sublayer can't be added, moved, or removed from the layer's sublayers`,{sublayer:this,layer:this.layer})),e.preventDefault())})]))}_logLockedError(e,t){let{layer:n,declaredClass:r}=this;c.getLogger(r).error(new i(`sublayer:locked`,`Property '${String(e)}' can't be changed on Sublayer from the layer '${n?.id}'`,{reason:t,sublayer:this,layer:n}))}_getLayerDomain(e){return this.fieldsIndex.get(e)?.domain??null}static{this.test={isMapImageLayerOverridePolicy:e=>e===Z||e===X||e===J,isTileImageLayerOverridePolicy:e=>e===Y}}};e([f({type:H,json:{name:`attributeTableInfo`,write:{overridePolicy:J},origins:{"web-scene":{write:!1}}}})],$.prototype,`attributeTableTemplate`,void 0),e([f({readOnly:!0})],$.prototype,`capabilities`,void 0),e([U(`service`,`capabilities`,[`layerDefinition.canModifyLayer`,`layerDefinition.capabilities`])],$.prototype,`readCapabilities`,null),e([f()],$.prototype,`defaultPopupTemplate`,null),e([f({type:String,value:null,json:{name:`layerDefinition.definitionExpression`,write:{allowNull:!0,overridePolicy:J}}})],$.prototype,`definitionExpression`,null),e([f({readOnly:!0,type:ie,json:{origins:{service:{read:{source:`layerDefinition.editFieldsInfo`}}}}})],$.prototype,`editFieldsInfo`,void 0),e([f({readOnly:!0})],$.prototype,`effectiveScaleRange`,null),e([f({readOnly:!0,type:[String]})],$.prototype,`effectiveUniqueIdFields`,null),e([U(`service`,`maxScaleRange`,[`minScale`,`maxScale`])],$.prototype,`readMaxScaleRange`,null),e([f({type:[se],json:{origins:{service:{read:{source:`layerDefinition.fields`}}}}})],$.prototype,`fields`,void 0),e([f({readOnly:!0})],$.prototype,`fieldsIndex`,null),e([f({type:k,value:null,json:{name:`layerDefinition.floorInfo`,read:{source:`layerDefinition.floorInfo`},write:{target:`layerDefinition.floorInfo`,overridePolicy:J},origins:{"web-scene":{read:!1,write:!1}}}})],$.prototype,`floorInfo`,null),e([f({type:v,json:{read:{source:`layerDefinition.extent`}}})],$.prototype,`fullExtent`,void 0),e([f({type:x.apiValues,json:{origins:{service:{name:`layerDefinition.geometryType`,read:{reader:x.read}}}}})],$.prototype,`geometryType`,void 0),e([f({type:String})],$.prototype,`globalIdField`,void 0),e([U(`service`,`globalIdField`,[`layerDefinition.globalIdField`,`layerDefinition.fields`])],$.prototype,`readGlobalIdFieldFromService`,null),e([f({readOnly:!0})],$.prototype,`graphicOrigin`,null),e([f({type:h,json:{write:{ignoreOrigin:!0}}})],$.prototype,`id`,null),e([f({readOnly:!0})],$.prototype,`isTable`,void 0),e([U(`service`,`isTable`,[`type`])],$.prototype,`readIsTable`,null),e([f({value:null,type:[D],json:{read:{source:`layerDefinition.drawingInfo.labelingInfo`},write:{target:`layerDefinition.drawingInfo.labelingInfo`,overridePolicy:Z}}})],$.prototype,`labelingInfo`,null),e([W(`labelingInfo`)],$.prototype,`writeLabelingInfo`,null),e([f({type:Boolean,value:!0,json:{read:{source:`layerDefinition.drawingInfo.showLabels`},write:{target:`layerDefinition.drawingInfo.showLabels`,overridePolicy:X}}})],$.prototype,`labelsVisible`,null),e([f({value:null})],$.prototype,`layer`,null),e([f({type:String,json:{write:{overridePolicy:Y}}})],$.prototype,`layerItemId`,void 0),e([f({type:Boolean,value:!0,json:{origins:{service:{read:{enabled:!1}}},read:{source:`showLegend`},write:{target:`showLegend`,overridePolicy:Q}}})],$.prototype,`legendEnabled`,void 0),e([f({type:[`show`,`hide`,`hide-children`],value:`show`,json:{read:!1,write:!1,origins:{"web-scene":{read:!0,write:!0}}}})],$.prototype,`listMode`,null),e([f({type:Number,value:0,json:{write:{overridePolicy:X}}})],$.prototype,`minScale`,null),e([U(`minScale`,[`minScale`,`layerDefinition.minScale`])],$.prototype,`readMinScale`,null),e([f({type:Number,value:0,json:{write:{overridePolicy:X}}})],$.prototype,`maxScale`,null),e([U(`maxScale`,[`maxScale`,`layerDefinition.maxScale`])],$.prototype,`readMaxScale`,null),e([f()],$.prototype,`objectIdField`,void 0),e([U(`service`,`objectIdField`,[`layerDefinition.objectIdField`,`layerDefinition.fields`])],$.prototype,`readObjectIdFieldFromService`,null),e([f({type:Number,value:1,json:{write:{target:`layerDefinition.drawingInfo.transparency`,overridePolicy:X}}})],$.prototype,`opacity`,null),e([U(`opacity`,[`layerDefinition.drawingInfo.transparency`,`layerDefinition.transparency`])],$.prototype,`readOpacity`,null),e([W(`opacity`)],$.prototype,`writeOpacity`,null),e([f({value:null,type:[A],json:{name:`layerDefinition.orderBy`,read:{reader:re},write:{overridePolicy:J},origins:{"web-scene":{read:!1,write:!1}}}})],$.prototype,`orderBy`,null),e([f({json:{type:h,write:{target:`parentLayerId`,writerEnsuresNonNull:!0,overridePolicy:X}}})],$.prototype,`parent`,void 0),e([W(`parent`)],$.prototype,`writeParent`,null),e([f({type:Boolean,value:!0,json:{read:{source:`disablePopup`,reader(e,t){return!t.disablePopup}},write:{target:`disablePopup`,overridePolicy:Q,writer(e,t,n){t[n]=!e}}}})],$.prototype,`popupEnabled`,void 0),e([f({type:t,json:{read:{source:`popupInfo`},write:{target:`popupInfo`,overridePolicy:Q}}})],$.prototype,`popupTemplate`,void 0),e([f({readOnly:!0})],$.prototype,`queryTask`,null),e([f({type:[j],readOnly:!0,json:{origins:{service:{read:{source:`layerDefinition.relationships`}}}}})],$.prototype,`relationships`,void 0),e([f({types:P,value:null,json:{name:`layerDefinition.drawingInfo.renderer`,write:{overridePolicy:Z},origins:{"web-scene":{types:N,name:`layerDefinition.drawingInfo.renderer`,write:{overridePolicy:Z}}}}})],$.prototype,`renderer`,null),e([f({types:{key:`type`,base:null,typeMap:{"data-layer":I,"map-layer":L,"workspace-layer":R}},cast(e){if(e){if(`mapLayerId`in e)return g(L,e);if(`dataSource`in e)return g(I,e);if(`workspaceId`in e&&`layerId`in e)return g(R,e)}return e},json:{name:`layerDefinition.source`,types:{key:`type`,base:null,typeMap:{"data-layer":I,"map-layer":L}},write:{overridePolicy:X}}})],$.prototype,`source`,null),e([f()],$.prototype,`sourceJSON`,void 0),e([f({type:y,json:{origins:{service:{read:{source:`layerDefinition.extent.spatialReference`}}}}})],$.prototype,`spatialReference`,void 0),e([f({value:null,json:{type:[h],write:{target:`subLayerIds`,allowNull:!0,overridePolicy:X}}})],$.prototype,`sublayers`,null),e([p(`sublayers`)],$.prototype,`castSublayers`,null),e([W(`sublayers`)],$.prototype,`writeSublayers`,null),e([f({type:String,json:{name:`name`,write:{overridePolicy:Q}}})],$.prototype,`title`,void 0),e([U(`service`,`title`,[`name`,`layerDefinition.name`])],$.prototype,`readTitle`,null),e([f({type:String})],$.prototype,`typeIdField`,void 0),e([f({json:{read:!1},readOnly:!0,value:`sublayer`})],$.prototype,`type`,void 0),e([U(`typeIdField`,[`layerDefinition.typeIdField`])],$.prototype,`readTypeIdField`,null),e([f({type:[oe],json:{origins:{service:{read:{source:`layerDefinition.types`}}}}})],$.prototype,`types`,void 0),e([f({type:[String],readOnly:!0})],$.prototype,`uniqueIdFields`,void 0),e([U(`service`,`uniqueIdFields`,[`layerDefinition.uniqueIdInfo.OIDFieldContainsHashValue`,`layerDefinition.uniqueIdInfo.fields`])],$.prototype,`readUniqueIdFields`,null),e([f({type:String,json:{name:`layerUrl`,write:{overridePolicy:Y}}})],$.prototype,`url`,null),e([f({type:Boolean,value:!0,json:{read:{source:`defaultVisibility`},write:{target:`defaultVisibility`,overridePolicy:X}}})],$.prototype,`visible`,null),e([W(`visible`)],$.prototype,`writeVisible`,null),$=G=e([m(`esri.layers.support.Sublayer`)],$);export{$ as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../PopupTemplate.js";import n from"../../request.js";import r from"../../core/Collection.js";import i from"../../core/Error.js";import has from"../../core/has.js";import{IdentifiableMixin as a}from"../../core/Identifiable.js";import{clone as o}from"../../core/lang.js";import{Loadable as s}from"../../core/Loadable.js";import c from"../../core/Logger.js";import{MultiOriginJSONSupportMixin as l}from"../../core/MultiOriginJSONSupport.js";import{sqlAnd as u}from"../../core/sql.js";import{objectToQuery as d}from"../../core/urlUtils.js";import{property as f,cast as p,subclass as m}from"../../core/accessorSupport/decorators.js";import{ensureInteger as ee,ensureType as te,Integer as h,ensureClass as g}from"../../core/accessorSupport/ensureType.js";import{nameToId as ne}from"../../core/accessorSupport/PropertyOrigin.js";import{getProperties as _}from"../../core/accessorSupport/utils.js";import v from"../../geometry/Extent.js";import y from"../../geometry/SpatialReference.js";import{joinScaleRanges as b}from"../../geometry/support/scaleUtils.js";import{featureGeometryTypeKebabDictionary as x}from"../../geometry/support/typeUtils.js";import S from"../../graphic/MapImageGraphicOrigin.js";import C from"../../graphic/TileGraphicOrigin.js";import w from"../graphics/sources/support/QueryTask.js";import{readOrderByInfos as re}from"../mixins/OrderedLayer.js";import ie from"./EditFieldsInfo.js";import{getFeatureType as ae}from"./featureLayerUtils.js";import oe from"./FeatureType.js";import se from"./Field.js";import T from"./FieldsIndex.js";import{fixRendererFields as E}from"./fieldUtils.js";import D from"./LabelClass.js";import{validateLabelingInfo as O}from"./labelingInfo.js";import k from"./LayerFloorInfo.js";import A from"./OrderByInfo.js";import j from"./Relationship.js";import{getFeatureLayerCapabilities as M}from"./serviceCapabilitiesUtils.js";import{webSceneRendererTypes as N,rendererTypes as P}from"../../renderers/support/typeUtils.js";import{parseUrl as F}from"../../rest/utils.js";import I from"../../rest/layerSources/DynamicDataLayer.js";import L from"../../rest/layerSources/DynamicMapLayer.js";import R from"../../rest/layerSources/DynamicWorkspaceLayer.js";import z from"../../rest/support/AttachmentQuery.js";import ce from"../../rest/support/Query.js";import{createPopupTemplate as B}from"../../support/popupUtils.js";import{isSymbol3D as V}from"../../symbols/support/typeUtils.js";import H from"../../tables/AttributeTableTemplate.js";import{reader as U}from"../../core/accessorSupport/decorators/reader.js";import{writer as W}from"../../core/accessorSupport/decorators/writer.js";var G;function K(e){return e?.type===`esriSMS`}function q(e,t,n){let r=n.minimumWritableOrigin||n.origin;return r?e.originIdOf(t)>=ne(r):!1}function J(e,t,n){let r=q(this,t,n);return{ignoreOrigin:!0,allowNull:r,enabled:n?n.layer?.type===`map-image`&&(n.writeSublayerStructure||r):!1}}function Y(e,t,n){return{enabled:n?n.layer?.type===`tile`&&(q(this,t,n)||this._isOverridden(t)):!1}}function X(e,t,n){return{ignoreOrigin:!0,enabled:n&&n.writeSublayerStructure||!1}}function Z(e,t,n){return{ignoreOrigin:!0,enabled:n?.writeSublayerStructure?this.originIdOf(t)>2:!1}}function Q(e,t,n){return{ignoreOrigin:!0,enabled:n?n.writeSublayerStructure||q(this,t,n):!1}}let le=0;const ue=new Set([`layer`,`parent`,`loaded`,`loadStatus`,`loadError`,`loadWarnings`]);let $=class extends l(a(s)){static{G=this}constructor(e){super(e),this.attributeTableTemplate=null,this.capabilities=void 0,this.editFieldsInfo=null,this.maxScaleRange={minScale:0,maxScale:0},this.fields=null,this.fullExtent=null,this.geometryType=null,this.globalIdField=null,this.isTable=!1,this.legendEnabled=!0,this.objectIdField=null,this.parent=null,this.popupEnabled=!0,this.popupTemplate=null,this.relationships=null,this.sourceJSON=null,this.spatialReference=null,this.title=null,this.typeIdField=null,this.type=`sublayer`,this.types=null,this.uniqueIdFields=null,this._lastParsedUrl=null}async load(e){return this.addResolvingPromise(this.reload(e)),this}readCapabilities(e,t){t=t.layerDefinition||t;let{attachment:n,operations:{supportsQuery:r,supportsQueryAttachments:i},query:{supportsFormatPBF:a,supportsOrderBy:o,supportsPagination:s,relativeTimeBinWindow:c},data:{supportsAttachment:l},queryRelated:u}=M(t,this.url);return{attachment:{supportsOrderByFields:n?.supportsOrderByFields??!1,supportsResize:n?.supportsResize??!1,supportsTypeWildcard:n?.supportsTypeWildcard??!1},exportMap:{supportsModification:!!t.canModifyLayer},operations:{supportsQuery:r,supportsQueryAttachments:i},data:{supportsAttachment:l},query:{relativeTimeBinWindow:c,supportsFormatPBF:a,supportsOrderBy:o,supportsPagination:s},queryRelated:u}}get defaultPopupTemplate(){return this.createPopupTemplate()}set definitionExpression(e){this._setAndNotifyLayer(`definitionExpression`,e)}get effectiveScaleRange(){let e=this._get(`effectiveScaleRange`),{maxScale:t,minScale:n,parent:r}=this,i={minScale:n,maxScale:t};return r?.effectiveScaleRange!==void 0&&b(i,r.effectiveScaleRange),e&&e.minScale===i.minScale&&e.maxScale===i.maxScale?e:i}get effectiveUniqueIdFields(){return this.uniqueIdFields?[...this.uniqueIdFields]:this.objectIdField?[this.objectIdField]:[]}get effectiveVisible(){return this.visible&&(this.parent?.effectiveVisible??!0)}readMaxScaleRange(e,t){return t=t.layerDefinition||t,{minScale:t.minScale??0,maxScale:t.maxScale??0}}get fieldsIndex(){return new T(this.fields||[])}set floorInfo(e){this._setAndNotifyLayer(`floorInfo`,e)}readGlobalIdFieldFromService(e,t){if(t=t.layerDefinition||t,t.globalIdField)return t.globalIdField;if(t.fields){for(let e of t.fields)if(e.type===`esriFieldTypeGlobalID`)return e.name}}get graphicOrigin(){if(!this.layer)return null;switch(this.layer.type){case`tile`:return new C(this.layer,this);case`map-image`:return new S(this.layer,this)}}get id(){return this._get(`id`)??le++}set id(e){this._get(`id`)!==e&&(this.layer?.capabilities?.exportMap?.supportsDynamicLayers===!1?this._logLockedError(`id`,`capability not available 'layer.capabilities.exportMap.supportsDynamicLayers'`):this._set(`id`,e))}readIsTable(e,t){return t.type===`Table`}set labelingInfo(e){this._setAndNotifyLayer(`labelingInfo`,e)}writeLabelingInfo(e,t,n,r){e&&e.length&&(t.layerDefinition={drawingInfo:{labelingInfo:e.map(e=>e.write({},r))}})}set labelsVisible(e){this._setAndNotifyLayer(`labelsVisible`,e)}set layer(e){this._set(`layer`,e),this.sublayers?.forEach(t=>t.layer=e)}set listMode(e){this._set(`listMode`,e)}get loaded(){return super.loaded}set minScale(e){this._setAndNotifyLayer(`minScale`,e)}readMinScale(e,t){return t.minScale||t.layerDefinition?.minScale||0}set maxScale(e){this._setAndNotifyLayer(`maxScale`,e)}readMaxScale(e,t){return t.maxScale||t.layerDefinition?.maxScale||0}readObjectIdFieldFromService(e,t){return t=t.layerDefinition||t,t.objectIdField?t.objectIdField:t.fields?.find(e=>e.type===`esriFieldTypeOID`)?.name}set opacity(e){this._setAndNotifyLayer(`opacity`,e)}readOpacity(e,t){let{layerDefinition:n}=t;return 1-(n?.transparency??n?.drawingInfo?.transparency??0)*.01}writeOpacity(e,t,n,r){t.layerDefinition={drawingInfo:{transparency:100-e*100}}}set orderBy(e){this._setAndNotifyLayer(`orderBy`,e)}writeParent(e,t){t.parentLayerId=!this.parent||this.parent===this.layer?-1:ee(this.parent.id)}get queryTask(){if(!this.layer)return null;let{capabilities:e,fieldsIndex:t,layer:n,uniqueIdFields:r,url:i}=this,{spatialReference:a}=n,o=`gdbVersion`in n?n.gdbVersion:void 0,s=has(`featurelayer-pbf`)&&e?.query.supportsFormatPBF,c=e?.operations?.supportsQueryAttachments??!1,l=e?.query?.relativeTimeBinWindow??0;return new w({fieldsIndex:t,gdbVersion:o,pbfSupported:s,queryAttachmentsSupported:c,relativeTimeBinWindow:l,sourceSpatialReference:a,uniqueIdFields:r,url:i})}set renderer(e){if(E(e,this.fieldsIndex),e){for(let t of e.symbols)if(V(t)){c.getLogger(this).warn(`Sublayer renderer should use 2D symbols`);break}}this._setAndNotifyLayer(`renderer`,e)}get source(){return this._get(`source`)||new L({mapLayerId:this.id})}set source(e){this._setAndNotifyLayer(`source`,e)}get sublayers(){return this._get(`sublayers`)}set sublayers(e){this._handleSublayersChange(e,this._get(`sublayers`)),this._set(`sublayers`,e)}castSublayers(e){return te(r.ofType(G),e)}writeSublayers(e,t,n){this.sublayers?.length&&(t[n]=this.sublayers.map(e=>e.id).toArray().reverse())}readTitle(e,t){return t.layerDefinition?.name??t.name}readTypeIdField(e,t){t=t.layerDefinition||t;let n=t.typeIdField;if(n&&t.fields){n=n.toLowerCase();let e=t.fields.find(e=>e.name.toLowerCase()===n);e&&(n=e.name)}return n}readUniqueIdFields(e,t){return t.layerDefinition?.uniqueIdInfo?.OIDFieldContainsHashValue?t.layerDefinition.uniqueIdInfo.fields:null}get url(){let e=this.layer?.parsedUrl??this._lastParsedUrl,t=this.source;if(!e)return null;if(this._lastParsedUrl=e,t?.type===`map-layer`)return`${e.path}/${t.mapLayerId}`;let n={layer:JSON.stringify({source:this.source})};return`${e.path}/dynamicLayer?${d(n)}`}set url(e){this._overrideIfSome(`url`,e)}set visible(e){this._setAndNotifyLayer(`visible`,e)}writeVisible(e,t,n,r){t[n]=this.getAtOrigin(`defaultVisibility`,`service`)||e}clone(){let{store:e}=_(this),t=new G;return _(t).store=e.clone(ue),this.commitProperty(`url`),t._lastParsedUrl=this._lastParsedUrl,t}createPopupTemplate(e){return B(this,e)}createQuery(){return new ce({returnGeometry:!0,where:this.definitionExpression||`1=1`})}async createFeatureLayer(){if(this.sublayers)return null;let e=(await import(`../FeatureLayer.js`)).default,{layer:t,url:n}=this,r;if(n&&this.originIdOf(`url`)>2)r=new e({url:n});else if(t?.parsedUrl){let n=t.parsedUrl;r=new e({url:n.path}),n&&this.source&&(this.source.type===`map-layer`?r.layerId=this.source.mapLayerId:r.dynamicDataSource=this.source)}else throw new i(`createFeatureLayer:missing-information`,`Cannot create a FeatureLayer without a url or a parent layer`);return t?.refreshInterval!=null&&(r.refreshInterval=t.refreshInterval),this.definitionExpression&&(r.definitionExpression=this.definitionExpression),this.floorInfo&&(r.floorInfo=o(this.floorInfo)),this.originIdOf(`labelingInfo`)>2&&(r.labelingInfo=o(this.labelingInfo)),this.originIdOf(`labelsVisible`)>0&&(r.labelsVisible=this.labelsVisible),this.originIdOf(`legendEnabled`)>0&&(r.legendEnabled=this.legendEnabled),this.originIdOf(`visible`)>0&&(r.visible=this.visible),this.originIdOf(`minScale`)>0&&(r.minScale=this.minScale),this.originIdOf(`maxScale`)>0&&(r.maxScale=this.maxScale),this.originIdOf(`opacity`)>0&&(r.opacity=this.opacity),this.originIdOf(`popupTemplate`)>0&&(r.popupTemplate=o(this.popupTemplate)),this.originIdOf(`renderer`)>2&&(r.renderer=o(this.renderer)),this.source?.type===`data-layer`&&(r.dynamicDataSource=this.source.clone()),this.originIdOf(`title`)>0&&(r.title=this.title),t?.type===`map-image`&&t.originIdOf(`customParameters`)>0&&(r.customParameters=t.customParameters),t?.type===`tile`&&t.originIdOf(`customParameters`)>0&&(r.customParameters=t.customParameters),r}getField(e){return this.fieldsIndex.get(e)}getFeatureType(e){return ae(this.types,this.typeIdField,e)}getFieldDomain(e,t){let n=t?.feature,r=this.getFeatureType(n);if(r){let t=r.domains&&r.domains[e];if(t&&t.type!==`inherited`)return t}return this._getLayerDomain(e)}async queryAttachments(e,t){await this.load();let n=z.from(e),r=this.capabilities;if(!r?.data?.supportsAttachment)throw new i(`queryAttachments:not-supported`,`this layer doesn't support attachments`);let{attachmentTypes:a,objectIds:o,globalIds:s,num:c,size:l,start:u,where:d}=n;if(!r?.operations?.supportsQueryAttachments){let e=a?.length>0,t=s?.length>0,r=l?.length>0;if(e||t||r||c||u||d)throw new i(`queryAttachments:option-not-supported`,`when 'capabilities.operations.supportsQueryAttachments' is false, only objectIds is supported`,n)}if(!(o?.length||s?.length||d))throw new i(`queryAttachments:invalid-query`,`'objectIds', 'globalIds', or 'where' are required to perform attachment query`,n);return!r?.attachment?.supportsOrderByFields&&n.orderByFields?.length&&(n=n.clone(),n.orderByFields=null),this.queryTask.executeAttachmentQuery(n,t)}async queryFeatureCount(e=this.createQuery(),t){if(await this.load(),!this.capabilities.operations.supportsQuery)throw new i(`queryFeatureCount:not-supported`,`this layer doesn't support queries.`);if(!this.url)throw new i(`queryFeatureCount:not-supported`,`this layer has no url.`);let n=this.layer?.apiKey;return await this.queryTask.executeForCount(e,{...t,query:{...this.layer?.customParameters,token:n}})}async queryFeatures(e=this.createQuery(),t){if(await this.load(),!this.capabilities.operations.supportsQuery)throw new i(`queryFeatures:not-supported`,`this layer doesn't support queries.`);if(!this.url)throw new i(`queryFeatures:not-supported`,`this layer has no url.`);let n=await this.queryTask.execute(e,{...t,query:{...this.layer?.customParameters,token:this.layer?.apiKey}});if(n?.features){let e=this.graphicOrigin;for(let t of n.features)t.sourceLayer=this,t.origin=e}return n}async queryObjectIds(e=this.createQuery(),t){if(await this.load(),!this.capabilities.operations.supportsQuery)throw new i(`queryObjectIds:not-supported`,`this layer doesn't support queries.`);if(!this.url)throw new i(`queryObjectIds:not-supported`,`this layer has no url.`);let n=this.layer?.apiKey;return await this.queryTask.executeForIds(e,{...t,query:{...this.layer?.customParameters,token:n}})}async queryRelatedFeatures(e,t){if(await this.load(),!this.capabilities.operations.supportsQuery)throw new i(`queryRelatedFeatures:not-supported`,`this layer doesn't support queries.`);if(!this.url)throw new i(`queryRelatedFeatures:not-supported`,`this layer has no url.`);let n=this.layer?.apiKey;return await this.queryTask.executeRelationshipQuery(e,{...t,query:{...this.layer?.customParameters,token:n}})}async queryRelatedFeaturesCount(e,t){if(await this.load(),!this.capabilities.operations.supportsQuery)throw new i(`queryRelatedFeaturesCount:not-supported`,`this layer doesn't support queries.`);if(!this.capabilities.queryRelated.supportsCount)throw new i(`queryRelatedFeaturesCount:not-supported`,`this layer doesn't support query related counts.`);if(!this.url)throw new i(`queryRelatedFeaturesCount:not-supported`,`this layer has no url.`);let n=this.layer?.apiKey;return await this.queryTask.executeRelationshipQueryForCount(e,{...t,query:{...this.layer?.customParameters,token:n}})}async reload(e){if(this.loadStatus===`not-loaded`)return this.load(e).then(()=>{});let{layer:t,url:r}=this;if(!t&&!r)throw new i(`sublayer:missing-layer`,`Sublayer can't be loaded without being part of a layer`,{sublayer:this});let a=t?await t.fetchSublayerInfo(this,e):(await n(r,{query:{f:`json`},...e})).data;a&&(this.sourceJSON={...this.sourceJSON,...a},this.read({layerDefinition:a},{origin:`service`,layer:t,url:F(r)}))}toExportImageJSON(e){let t={id:this.id,source:this.source?.toJSON()||{mapLayerId:this.id,type:`mapLayer`}},n=u(e,this.definitionExpression);n!=null&&(t.definitionExpression=n);let r=[`renderer`,`labelingInfo`,`opacity`,`labelsVisible`].reduce((e,t)=>(e[t]=this.originIdOf(t),e),{});if(Object.keys(r).some(e=>r[e]>2)){let e=t.drawingInfo={};if(r.renderer>2&&(e.renderer=this.renderer?this.renderer.toJSON():null),r.labelsVisible>2&&(e.showLabels=this.labelsVisible),this.labelsVisible&&r.labelingInfo>2){if(!this.labelingInfo)e.showLabels=!1;else{!this.loaded&&this.labelingInfo?.some(e=>!e.labelPlacement)&&c.getLogger(this).warnOnce(`A Sublayer (title: ${this.title}, id: ${this.id}) has an undefined 'labelPlacement' and so labels cannot be displayed. Either define a valid 'labelPlacement' or call Sublayer.load() to use a default value based on geometry type.`,{sublayer:this});let t=this.labelingInfo;this.geometryType!=null&&(t=O(this.labelingInfo,x.toJSON(this.geometryType))),e.showLabels=!0,e.labelingInfo=t.filter(e=>e.labelPlacement).map(e=>e.toJSON({origin:`service`,layer:this.layer}))}}r.opacity>2&&(e.transparency=100-this.opacity*100),this._assignDefaultSymbolColors(e.renderer)}return(this.layer?.capabilities?.exportMap?.supportsSublayerOrderBy??!1)&&this.originIdOf(`orderBy`)>2&&(t.orderBy=this.orderBy?.map(e=>e.toJSON())??null),t}_assignDefaultSymbolColors(e){this._forEachSimpleMarkerSymbols(e,e=>{e.color||(e.style===`esriSMSX`||e.style===`esriSMSCross`)&&(e.color=e.outline?.color?e.outline.color:[0,0,0,0])})}_forEachSimpleMarkerSymbols(e,t){if(e){let n=(`uniqueValueInfos`in e?e.uniqueValueInfos:`classBreakInfos`in e?e.classBreakInfos:null)??[];for(let e of n)K(e.symbol)&&t(e.symbol);`symbol`in e&&K(e.symbol)&&t(e.symbol),`defaultSymbol`in e&&K(e.defaultSymbol)&&t(e.defaultSymbol)}}_setAndNotifyLayer(e,t){let n=this.layer,r=this._get(e),i,a;switch(e){case`definitionExpression`:case`floorInfo`:i=`supportsSublayerDefinitionExpression`;break;case`minScale`:case`maxScale`:case`visible`:i=`supportsSublayerVisibility`;break;case`labelingInfo`:case`labelsVisible`:case`opacity`:case`renderer`:case`source`:i=`supportsDynamicLayers`,a=`supportsModification`;break;case`orderBy`:i=`supportsSublayerOrderBy`,a=`supportsModification`}let o=_(this).getDefaultOrigin();if(o!==`service`){if(i&&this.layer?.capabilities?.exportMap?.[i]===!1){this._logLockedError(e,`capability not available 'layer.capabilities.exportMap.${i}'`);return}if(a&&this.capabilities?.exportMap[a]===!1){this._logLockedError(e,`capability not available 'capabilities.exportMap.${a}'`);return}}e===`source`&&this.loadStatus!==`not-loaded`?this._logLockedError(e,`'source' can't be changed after calling sublayer.load()`):(this._set(e,t),o!==`service`&&r!==t&&n?.emit&&n.emit(`sublayer-update`,{propertyName:e,target:this}))}_handleSublayersChange(e,t){t&&(t.forEach(e=>{e.parent=null,e.layer=null}),this.removeAllHandles()),e&&(e.forEach(e=>{e.parent=this,e.layer=this.layer}),this.addHandles([e.on(`after-add`,({item:e})=>{e.parent=this,e.layer=this.layer}),e.on(`after-remove`,({item:e})=>{e.parent=null,e.layer=null}),e.on(`before-changes`,e=>{(this.layer?.capabilities?.exportMap?.supportsSublayersChanges??!0)||(c.getLogger(this).error(new i(`sublayer:sublayers-non-modifiable`,`Sublayer can't be added, moved, or removed from the layer's sublayers`,{sublayer:this,layer:this.layer})),e.preventDefault())})]))}_logLockedError(e,t){let{layer:n,declaredClass:r}=this;c.getLogger(r).error(new i(`sublayer:locked`,`Property '${String(e)}' can't be changed on Sublayer from the layer '${n?.id}'`,{reason:t,sublayer:this,layer:n}))}_getLayerDomain(e){return this.fieldsIndex.get(e)?.domain??null}static{this.test={isMapImageLayerOverridePolicy:e=>e===Z||e===X||e===J,isTileImageLayerOverridePolicy:e=>e===Y}}};e([f({type:H,json:{name:`attributeTableInfo`,write:{overridePolicy:J},origins:{"web-scene":{write:!1}}}})],$.prototype,`attributeTableTemplate`,void 0),e([f({readOnly:!0})],$.prototype,`capabilities`,void 0),e([U(`service`,`capabilities`,[`layerDefinition.canModifyLayer`,`layerDefinition.capabilities`])],$.prototype,`readCapabilities`,null),e([f()],$.prototype,`defaultPopupTemplate`,null),e([f({type:String,value:null,json:{name:`layerDefinition.definitionExpression`,write:{allowNull:!0,overridePolicy:J}}})],$.prototype,`definitionExpression`,null),e([f({readOnly:!0,type:ie,json:{origins:{service:{read:{source:`layerDefinition.editFieldsInfo`}}}}})],$.prototype,`editFieldsInfo`,void 0),e([f({readOnly:!0})],$.prototype,`effectiveScaleRange`,null),e([f({readOnly:!0,type:[String]})],$.prototype,`effectiveUniqueIdFields`,null),e([f({readOnly:!0})],$.prototype,`effectiveVisible`,null),e([U(`service`,`maxScaleRange`,[`minScale`,`maxScale`])],$.prototype,`readMaxScaleRange`,null),e([f({type:[se],json:{origins:{service:{read:{source:`layerDefinition.fields`}}}}})],$.prototype,`fields`,void 0),e([f({readOnly:!0})],$.prototype,`fieldsIndex`,null),e([f({type:k,value:null,json:{name:`layerDefinition.floorInfo`,read:{source:`layerDefinition.floorInfo`},write:{target:`layerDefinition.floorInfo`,overridePolicy:J},origins:{"web-scene":{read:!1,write:!1}}}})],$.prototype,`floorInfo`,null),e([f({type:v,json:{read:{source:`layerDefinition.extent`}}})],$.prototype,`fullExtent`,void 0),e([f({type:x.apiValues,json:{origins:{service:{name:`layerDefinition.geometryType`,read:{reader:x.read}}}}})],$.prototype,`geometryType`,void 0),e([f({type:String})],$.prototype,`globalIdField`,void 0),e([U(`service`,`globalIdField`,[`layerDefinition.globalIdField`,`layerDefinition.fields`])],$.prototype,`readGlobalIdFieldFromService`,null),e([f({readOnly:!0})],$.prototype,`graphicOrigin`,null),e([f({type:h,json:{write:{ignoreOrigin:!0}}})],$.prototype,`id`,null),e([f({readOnly:!0})],$.prototype,`isTable`,void 0),e([U(`service`,`isTable`,[`type`])],$.prototype,`readIsTable`,null),e([f({value:null,type:[D],json:{read:{source:`layerDefinition.drawingInfo.labelingInfo`},write:{target:`layerDefinition.drawingInfo.labelingInfo`,overridePolicy:Z}}})],$.prototype,`labelingInfo`,null),e([W(`labelingInfo`)],$.prototype,`writeLabelingInfo`,null),e([f({type:Boolean,value:!0,json:{read:{source:`layerDefinition.drawingInfo.showLabels`},write:{target:`layerDefinition.drawingInfo.showLabels`,overridePolicy:X}}})],$.prototype,`labelsVisible`,null),e([f({value:null})],$.prototype,`layer`,null),e([f({type:String,json:{write:{overridePolicy:Y}}})],$.prototype,`layerItemId`,void 0),e([f({type:Boolean,value:!0,json:{origins:{service:{read:{enabled:!1}}},read:{source:`showLegend`},write:{target:`showLegend`,overridePolicy:Q}}})],$.prototype,`legendEnabled`,void 0),e([f({type:[`show`,`hide`,`hide-children`],value:`show`,json:{read:!1,write:!1,origins:{"web-scene":{read:!0,write:!0}}}})],$.prototype,`listMode`,null),e([f({type:Number,value:0,json:{write:{overridePolicy:X}}})],$.prototype,`minScale`,null),e([U(`minScale`,[`minScale`,`layerDefinition.minScale`])],$.prototype,`readMinScale`,null),e([f({type:Number,value:0,json:{write:{overridePolicy:X}}})],$.prototype,`maxScale`,null),e([U(`maxScale`,[`maxScale`,`layerDefinition.maxScale`])],$.prototype,`readMaxScale`,null),e([f()],$.prototype,`objectIdField`,void 0),e([U(`service`,`objectIdField`,[`layerDefinition.objectIdField`,`layerDefinition.fields`])],$.prototype,`readObjectIdFieldFromService`,null),e([f({type:Number,value:1,json:{write:{target:`layerDefinition.drawingInfo.transparency`,overridePolicy:X}}})],$.prototype,`opacity`,null),e([U(`opacity`,[`layerDefinition.drawingInfo.transparency`,`layerDefinition.transparency`])],$.prototype,`readOpacity`,null),e([W(`opacity`)],$.prototype,`writeOpacity`,null),e([f({value:null,type:[A],json:{name:`layerDefinition.orderBy`,read:{reader:re},write:{overridePolicy:J},origins:{"web-scene":{read:!1,write:!1}}}})],$.prototype,`orderBy`,null),e([f({json:{type:h,write:{target:`parentLayerId`,writerEnsuresNonNull:!0,overridePolicy:X}}})],$.prototype,`parent`,void 0),e([W(`parent`)],$.prototype,`writeParent`,null),e([f({type:Boolean,value:!0,json:{read:{source:`disablePopup`,reader(e,t){return!t.disablePopup}},write:{target:`disablePopup`,overridePolicy:Q,writer(e,t,n){t[n]=!e}}}})],$.prototype,`popupEnabled`,void 0),e([f({type:t,json:{read:{source:`popupInfo`},write:{target:`popupInfo`,overridePolicy:Q}}})],$.prototype,`popupTemplate`,void 0),e([f({readOnly:!0})],$.prototype,`queryTask`,null),e([f({type:[j],readOnly:!0,json:{origins:{service:{read:{source:`layerDefinition.relationships`}}}}})],$.prototype,`relationships`,void 0),e([f({types:P,value:null,json:{name:`layerDefinition.drawingInfo.renderer`,write:{overridePolicy:Z},origins:{"web-scene":{types:N,name:`layerDefinition.drawingInfo.renderer`,write:{overridePolicy:Z}}}}})],$.prototype,`renderer`,null),e([f({types:{key:`type`,base:null,typeMap:{"data-layer":I,"map-layer":L,"workspace-layer":R}},cast(e){if(e){if(`mapLayerId`in e)return g(L,e);if(`dataSource`in e)return g(I,e);if(`workspaceId`in e&&`layerId`in e)return g(R,e)}return e},json:{name:`layerDefinition.source`,types:{key:`type`,base:null,typeMap:{"data-layer":I,"map-layer":L}},write:{overridePolicy:X}}})],$.prototype,`source`,null),e([f()],$.prototype,`sourceJSON`,void 0),e([f({type:y,json:{origins:{service:{read:{source:`layerDefinition.extent.spatialReference`}}}}})],$.prototype,`spatialReference`,void 0),e([f({value:null,json:{type:[h],write:{target:`subLayerIds`,allowNull:!0,overridePolicy:X}}})],$.prototype,`sublayers`,null),e([p(`sublayers`)],$.prototype,`castSublayers`,null),e([W(`sublayers`)],$.prototype,`writeSublayers`,null),e([f({type:String,json:{name:`name`,write:{overridePolicy:Q}}})],$.prototype,`title`,void 0),e([U(`service`,`title`,[`name`,`layerDefinition.name`])],$.prototype,`readTitle`,null),e([f({type:String})],$.prototype,`typeIdField`,void 0),e([f({json:{read:!1},readOnly:!0,value:`sublayer`})],$.prototype,`type`,void 0),e([U(`typeIdField`,[`layerDefinition.typeIdField`])],$.prototype,`readTypeIdField`,null),e([f({type:[oe],json:{origins:{service:{read:{source:`layerDefinition.types`}}}}})],$.prototype,`types`,void 0),e([f({type:[String],readOnly:!0})],$.prototype,`uniqueIdFields`,void 0),e([U(`service`,`uniqueIdFields`,[`layerDefinition.uniqueIdInfo.OIDFieldContainsHashValue`,`layerDefinition.uniqueIdInfo.fields`])],$.prototype,`readUniqueIdFields`,null),e([f({type:String,json:{name:`layerUrl`,write:{overridePolicy:Y}}})],$.prototype,`url`,null),e([f({type:Boolean,value:!0,json:{read:{source:`defaultVisibility`},write:{target:`defaultVisibility`,overridePolicy:X}}})],$.prototype,`visible`,null),e([W(`visible`)],$.prototype,`writeVisible`,null),$=G=e([m(`esri.layers.support.Sublayer`)],$);export{$ 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"../../PopupTemplate.js";import{ClonableMixin as n}from"../../core/Clonable.js";import r from"../../core/Error.js";import{IdentifiableMixin as i}from"../../core/Identifiable.js";import{clone as a}from"../../core/lang.js";import{Loadable as o}from"../../core/Loadable.js";import s from"../../core/Logger.js";import{destroyMaybe as c}from"../../core/maybe.js";import{MultiOriginJSONSupportMixin as l}from"../../core/MultiOriginJSONSupport.js";import{setDeepValue as u}from"../../core/object.js";import{sqlAnd as d}from"../../core/sql.js";import{property as f,subclass as p}from"../../core/accessorSupport/decorators.js";import{excludeTables as m}from"../../core/accessorSupport/layerContainerType.js";import h from"../../form/FormTemplate.js";import ee from"../../geometry/SpatialReference.js";import{joinScaleRanges as te}from"../../geometry/support/scaleUtils.js";import ne from"../../graphic/SubtypeGroupGraphicOrigin.js";import{labelsVisible as re,legendEnabled as ie,minScale as ae,maxScale as oe,popupEnabled as g}from"./commonProperties.js";import{createQuery as _,computeDomainFromSubtypes as v}from"./featureLayerUtils.js";import y from"./FeatureTemplate.js";import b from"./FieldConfiguration.js";import{popupTemplateWithFieldConfigurations as x,fieldConfigurationsFromPopupTemplate as S,fieldConfigurationsFromFields as C}from"./fieldConfigUtils.js";import{defineFieldProperties as w}from"./fieldProperties.js";import{fixRendererFields as T}from"./fieldUtils.js";import se from"./LabelClass.js";import{reader as E}from"./labelingInfo.js";import{rendererReader as D,supportedRendererTypes as O}from"./subtypeGroupLayerUtils.js";import k from"./TitleCreator.js";import A from"../../renderers/SimpleRenderer.js";import j from"../../rest/support/AttachmentQuery.js";import M from"../../rest/support/Query.js";import{createPopupTemplate as N}from"../../support/popupUtils.js";import{defaultPolygonSymbol2D as P,defaultPolylineSymbol2D as F,defaultPointSymbol2D as I}from"../../symbols/support/defaults.js";import L from"../../tables/AttributeTableTemplate.js";import{writer as R}from"../../core/accessorSupport/decorators/writer.js";import{reader as z}from"../../core/accessorSupport/decorators/reader.js";const B=w();let V=0;function H(e,t){let n=e.json.write;return typeof n!=`object`&&(n=e.json.write={}),n.ignoreOrigin=!0,t?.spatialOnly&&(n.layerContainerTypes=m),e}function U(e){let t={write:{ignoreOrigin:!0}};return e?.name&&(t.name=e.name),typeof t.write==`object`&&(e?.spatialOnly&&(t.write.layerContainerTypes=m),e?.target&&(t.write.target=e.target)),t}function W(e){return new A({symbol:G(e)})}function G(e){switch(e){case`point`:case`multipoint`:return I.clone();case`polyline`:return F.clone();case`polygon`:case`multipatch`:return P.clone();default:return null}}function ce(e,t){return t?e?.type===`unique-value`&&e.field!=null&&e.field.toLowerCase()===t.toLowerCase()&&!e.field2&&!e.field3&&!e.valueExpression:!1}function K(e){return J(e,`user`)===e}function q(e){return J(e,`service`)}function le(e){return J(e,`portal-item`)}function J(e,t){return(e.parent?.getAtOrigin(`sublayers`,t))?.find(({subtypeCode:t})=>t===e.subtypeCode)}function Y(e,t){return e==null?null:t.subtypes?.find(t=>t.code===e)}function ue(e,t){let n=t.geometryType,r=null;switch(n){case`esriGeometryPoint`:case`esriGeometryMultipoint`:r=`point`;break;case`esriGeometryPolyline`:r=`line`;break;case`esriGeometryPolygon`:case`esriGeometryMultiPatch`:r=`polygon`;break;default:t.type,r=null}let i={},a=Y(e,t);if(a!=null){let{defaultValues:e}=a;for(let t in e)i[t]=e[t]}return i[t.subtypeField]=e,new y({name:`New Feature`,drawingTool:r,prototype:{attributes:i}})}let X=class extends l(n(i(o))){constructor(e){super(e),this.attributeTableTemplate=null,this.charts=null,this.editingEnabled=!0,this.fieldOverrides=null,this.fieldsIndex=null,this.formTemplate=null,this.graphicOrigin=new ne(this),this.id=`${Date.now().toString(16)}-subtype-sublayer-${V++}`,this.type=`subtype-sublayer`,this.labelsVisible=!0,this.labelingInfo=null,this.layerType=`ArcGISFeatureLayer`,this.legendEnabled=!0,this.listMode=`show`,this.minScale=0,this.maxScale=0,this.opacity=1,this.parent=null,this.popupEnabled=!0,this.popupTemplate=null,this.subtypeCode=null,this.visible=!0}load(e){return T(this.renderer,this.fieldsIndex),Promise.resolve(this)}get _titleCreator(){let e=this._get(`_titleCreator`);return c(e),new k({fieldsIndex:this.fieldsIndex,objectIdField:this.objectIdField,displayField:this.parent?.displayField??``,fields:this.fields,effectivePopupTemplate:this.popupTemplate??this.defaultPopupTemplate})}get capabilities(){return this.parent?.capabilities}get effectiveCapabilities(){return this.parent?.effectiveCapabilities}get effectiveEditingEnabled(){let{parent:e}=this;return e?e.effectiveEditingEnabled&&this.editingEnabled:this.editingEnabled}get elevationInfo(){return this.parent?.elevationInfo}get featureTitleFields(){return[...this._titleCreator.requiredFields]}set fieldConfigurations(e){if(this._override(`fieldConfigurations`,e),!this.parent?.loaded)return;let t=x(this,e);t&&this._set(`popupTemplate`,t)}get fieldConfigurations(){return this._isOverridden(`fieldConfigurations`)?this._get(`fieldConfigurations`):S(this)||null}writeFieldOverrides(e,t,n){let{fields:r,parent:i}=this,o;if(r){o=[];let e=0;r.forEach(({name:t,alias:n,editable:r,visible:a})=>{if(!a)return;let s=i?.fields?.find(e=>e.name===t);if(!s)return;let c={name:t},l=!1;n!==s.alias&&(c.alias=n,l=!0),r!==s.editable&&(c.editable=r,l=!0),o.push(c),l&&e++}),e===0&&o.length===r.length&&(o=null)}else o=a(e);o?.length&&u(n,o,t)}get fields(){let{parent:e,fieldOverrides:t,subtypeCode:n}=this,r=e?.fields;if(!e||!r?.length)return null;let{subtypes:i,subtypeField:a}=e,o=i?.find(e=>e.code===n),s=o?.defaultValues,c=o?.domains,l=[];for(let e of r){let r=e.clone(),{name:i}=r,o=t?.find(e=>e.name===i);if(r.visible=!t?.length||!!o,o){let{alias:e,editable:t}=o;e&&(r.alias=e),t===!1&&(r.editable=!1)}let u=s?.[i]??null;r.defaultValue=i===a?n:u;let d=c?.[i]??null;r.domain=i===a?null:d?d.type===`inherited`?r.domain:d.clone():null,l.push(r)}return l}get floorInfo(){return this.parent?.floorInfo}get isTable(){return!!this.parent?.isTable}get geometryType(){return this.parent?.geometryType}get globalIdField(){return this.parent?this.parent.globalIdField:(s.getLogger(this).error($(`globalIdField`)),null)}get effectiveScaleRange(){let e=this._get(`effectiveScaleRange`),{maxScale:t,minScale:n,parent:r}=this,i={minScale:n,maxScale:t};return r?.effectiveScaleRange!==void 0&&te(i,r.effectiveScaleRange),e&&e.minScale===i.minScale&&e.maxScale===i.maxScale?e:i}get objectIdField(){return this.parent||s.getLogger(this).error($(`objectIdField`)),this.parent?.objectIdField}writePopupTemplate(e,t,n,r){e&&(t[n]=e.toJSON({...r,writeFieldFormat:!0}))}get defaultPopupTemplate(){return this.createPopupTemplate()}get relationships(){return this.parent?.relationships}set renderer(e){T(e,this.fieldsIndex),this._override(`renderer`,e)}get renderer(){if(this._isOverridden(`renderer`))return this._get(`renderer`);let{parent:e}=this;return e&&!e.isTable&&e.geometryType!==`mesh`?(K(this)?a(q(this)?.renderer):null)??W(e.geometryType):null}readRendererFromService(e,t,n){if(t.type===`Table`)return null;let r=t.drawingInfo?.renderer,i=D(r,t,n),a,{subtypeCode:o}=this;if(o!=null&&ce(i,t.subtypeField)){let e=i.uniqueValueInfos?.find(({value:e})=>(e=typeof e==`number`?String(e):e,e===String(o)));e&&(a=new A({symbol:e.symbol}))}else i?.type===`simple`&&!i.visualVariables?.length&&(a=i);return a}readRenderer(e,t,n){let r=t?.layerDefinition?.drawingInfo?.renderer;if(r)return D(r,t,n)||void 0}get spatialReference(){return this.parent?.spatialReference??ee.WGS84}get subtypeField(){return this.parent?.subtypeField}get templates(){return this._isOverridden(`templates`)?this._get(`templates`):a(K(this)?q(this)?.templates:le(this)?.templates||q(this)?.templates)}set templates(e){this._override(`templates`,e)}readTemplatesFromService(e,t){return[ue(this.subtypeCode,t)]}get title(){return this._isOverridden(`title`)?this._get(`title`):(K(this)?q(this):null)?.title}set title(e){this._override(`title`,e)}readTitleFromService(e,t){let n=Y(this.subtypeCode,t);return n==null?null:n.name}get url(){return this.parent?.url}get userHasUpdateItemPrivileges(){return!!this.parent?.userHasUpdateItemPrivileges}async addAttachment(e,t,n){let{parent:i}=this;if(!i)throw $(`addAttachment`);if(e.getAttribute(i.subtypeField)!==this.subtypeCode)throw new r(`subtype-sublayer:addAttachment`,`The feature provided does not belong to this SubtypeSublayer`);return i.addAttachment(e,t,n)}async updateAttachment(e,t,n,i){let{parent:a}=this;if(!a)throw $(`updateAttachment`);if(e.getAttribute(a.subtypeField)!==this.subtypeCode)throw new r(`subtype-sublayer:updateAttachment`,`The feature provided does not belong to this SubtypeSublayer`);return a.updateAttachment(e,t,n,i)}async deleteAttachments(e,t,n){let{parent:i}=this;if(!i)throw $(`deleteAttachments`);if(e.getAttribute(i.subtypeField)!==this.subtypeCode)throw new r(`subtype-sublayer:deleteAttachments`,`The feature provided does not belong to this SubtypeSublayer`);return i.deleteAttachments(e,t,n)}async applyEdits(e,t){if(!this.parent)throw $(`applyEdits`);return this.parent.applyEdits(e,t)}createFieldConfigurations(){return C(this)}createPopupTemplate(e){let t=this,{parent:n,fields:r,title:i}=this;if(n){let{displayField:e,editFieldsInfo:a,objectIdField:o}=n;t={displayField:e,editFieldsInfo:a,fields:r,objectIdField:o,title:i}}return N(t,e)}createQuery(){if(!this.parent)throw $(`createQuery`);let e=_(this.parent),t=`${this.parent.subtypeField}=${this.subtypeCode}`;return e.where=d(t,this.parent.definitionExpression),e}getFeatureTitle(e,t){return this._titleCreator.getTitle(this,e,t)}getFeatureTitles(e,t){return this._titleCreator.getTitles(this,e,t)}getField(e){return this.fieldsIndex.get(e)}getFieldAlias(e){let t=this.getField(e);if(t)return this.getFieldConfiguration(t.name)?.alias||t.alias}getFieldConfiguration(e){return e=e.toLowerCase(),this.fieldConfigurations?.find(t=>t.name.toLowerCase()===e)}getFieldDomain(e,t){if(!t?.excludeImpliedDomains&&this.parent){let t=v(this.parent,e);if(t)return t}return this._getLayerDomain(e)}async queryAttachments(e,t){let n=await this.load();if(!n.parent)throw $(`queryAttachments`);let r=e instanceof j?e.clone():new j(e);return r.where=Q(r.where,n.parent.subtypeField,n.subtypeCode),n.parent.queryAttachments(r,t)}async queryFeatureCount(e,t){let n=await this.load();if(!n.parent)throw $(`queryFeatureCount`);return n.parent.queryFeatureCount(Z(n.parent,n,e),t)}async queryFeatures(e,t){let n=await this.load();if(!n.parent)throw $(`queryFeatures`);return n.parent.queryFeatures(Z(n.parent,n,e),t)}async queryObjectIds(e,t){let n=await this.load();if(!n.parent)throw $(`queryObjectIds`);return n.parent.queryObjectIds(Z(n.parent,n,e),t)}async queryRelatedFeatures(e,t){let n=await this.load();if(!n.parent)throw $(`queryRelatedFeatures`);return n.parent.queryRelatedFeatures(e,t)}async queryRelatedFeaturesCount(e,t){let n=await this.load();if(!n.parent)throw $(`queryRelatedFeaturesCount`);return n.parent.queryRelatedFeaturesCount(e,t)}_getLayerDomain(e){let t=this.fieldsIndex.get(e);return t?t.domain:null}};e([f({clonable:!1,readOnly:!0})],X.prototype,`_titleCreator`,null),e([f({type:L,json:U({name:`attributeTableInfo`})})],X.prototype,`attributeTableTemplate`,void 0),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`capabilities`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`effectiveCapabilities`,null),e([f({json:U()})],X.prototype,`charts`,void 0),e([f({type:Boolean,nonNullable:!0,json:U({name:`enableEditing`})})],X.prototype,`editingEnabled`,void 0),e([f({type:Boolean,readOnly:!0})],X.prototype,`effectiveEditingEnabled`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`elevationInfo`,null),e([f({clonable:!1,readOnly:!0})],X.prototype,`featureTitleFields`,null),e([f({type:[b],json:{name:`layerDefinition.fieldConfigurations`,write:{ignoreOrigin:!0}}})],X.prototype,`fieldConfigurations`,null),e([f({json:{name:`layerDefinition.fieldOverrides`,origins:{service:{read:!1}},write:{ignoreOrigin:!0,allowNull:!0}}})],X.prototype,`fieldOverrides`,void 0),e([R(`fieldOverrides`)],X.prototype,`writeFieldOverrides`,null),e([f({...B.fields,readOnly:!0,json:{read:!1}})],X.prototype,`fields`,null),e([f(B.fieldsIndex)],X.prototype,`fieldsIndex`,void 0),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`floorInfo`,null),e([f({type:h,json:U({name:`formInfo`})})],X.prototype,`formTemplate`,void 0),e([f({readOnly:!0,clonable:!1})],X.prototype,`graphicOrigin`,void 0),e([f({type:String,clonable:!1,json:{origins:{service:{read:!1},"portal-item":{read:!1}},write:{ignoreOrigin:!0}}})],X.prototype,`id`,void 0),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`isTable`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`geometryType`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`globalIdField`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`type`,void 0),e([f(H(a(re)))],X.prototype,`labelsVisible`,void 0),e([f({type:[se],json:{name:`layerDefinition.drawingInfo.labelingInfo`,origins:{service:{read:!1}},read:{reader:E},write:{ignoreOrigin:!0,layerContainerTypes:m}}})],X.prototype,`labelingInfo`,void 0),e([f({type:[`ArcGISFeatureLayer`],readOnly:!0,json:{read:!1,write:{ignoreOrigin:!0,layerContainerTypes:m}}})],X.prototype,`layerType`,void 0),e([f(H(a(ie)))],X.prototype,`legendEnabled`,void 0),e([f({type:[`show`,`hide`]})],X.prototype,`listMode`,void 0),e([f((()=>{let e=a(ae);return e.json.origins.service.read=!1,H(e,{spatialOnly:!0})})())],X.prototype,`minScale`,void 0),e([f((()=>{let e=a(oe);return e.json.origins.service.read=!1,H(e,{spatialOnly:!0})})())],X.prototype,`maxScale`,void 0),e([f({readOnly:!0})],X.prototype,`effectiveScaleRange`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`objectIdField`,null),e([f({type:Number,range:{min:0,max:1},nonNullable:!0,json:U({spatialOnly:!0})})],X.prototype,`opacity`,void 0),e([f({clonable:!1})],X.prototype,`parent`,void 0),e([f(H(a(g)))],X.prototype,`popupEnabled`,void 0),e([f({type:t,json:U({name:`popupInfo`})})],X.prototype,`popupTemplate`,void 0),e([R(`popupTemplate`)],X.prototype,`writePopupTemplate`,null),e([f({readOnly:!0})],X.prototype,`defaultPopupTemplate`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`relationships`,null),e([f({types:O,json:U({target:`layerDefinition.drawingInfo.renderer`,spatialOnly:!0})})],X.prototype,`renderer`,null),e([z(`service`,`renderer`,[`drawingInfo.renderer`,`subtypeField`,`type`])],X.prototype,`readRendererFromService`,null),e([z(`renderer`,[`layerDefinition.drawingInfo.renderer`])],X.prototype,`readRenderer`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`spatialReference`,null),e([f({type:Number,json:{origins:{service:{read:!1}},write:{ignoreOrigin:!0}}})],X.prototype,`subtypeCode`,void 0),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`subtypeField`,null),e([f({type:[y],json:U({name:`layerDefinition.templates`})})],X.prototype,`templates`,null),e([z(`service`,`templates`,[`geometryType`,`subtypeField`,`subtypes`,`type`])],X.prototype,`readTemplatesFromService`,null),e([f({type:String,json:U()})],X.prototype,`title`,null),e([z(`service`,`title`,[`subtypes`])],X.prototype,`readTitleFromService`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`url`,null),e([f({readOnly:!0})],X.prototype,`userHasUpdateItemPrivileges`,null),e([f({type:Boolean,nonNullable:!0,json:U({name:`visibility`,spatialOnly:!0})})],X.prototype,`visible`,void 0),X=e([p(`esri.layers.support.SubtypeSublayer`)],X);const Z=(e,t,n)=>{if(!n)return t.createQuery();let r=M.from(n);return r.where=Q(r.where,e.subtypeField,t.subtypeCode),r},Q=(e,t,n)=>{let r=RegExp(`${t}\\s*=\\s*\\d+`),i=`${t}=${n}`,a=e??``;return r.test(a)?a.replace(r,i):d(i,a)},$=e=>new r(`subtype-sublayer:parent-missing`,`This sublayer must have a parent SubtypeGroupLayer in order to use ${e}`);export{X as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../PopupTemplate.js";import{ClonableMixin as n}from"../../core/Clonable.js";import r from"../../core/Error.js";import{IdentifiableMixin as i}from"../../core/Identifiable.js";import{clone as a}from"../../core/lang.js";import{Loadable as o}from"../../core/Loadable.js";import s from"../../core/Logger.js";import{destroyMaybe as c}from"../../core/maybe.js";import{MultiOriginJSONSupportMixin as l}from"../../core/MultiOriginJSONSupport.js";import{setDeepValue as u}from"../../core/object.js";import{sqlAnd as d}from"../../core/sql.js";import{property as f,subclass as p}from"../../core/accessorSupport/decorators.js";import{excludeTables as m}from"../../core/accessorSupport/layerContainerType.js";import h from"../../form/FormTemplate.js";import ee from"../../geometry/SpatialReference.js";import{joinScaleRanges as te}from"../../geometry/support/scaleUtils.js";import ne from"../../graphic/SubtypeGroupGraphicOrigin.js";import{labelsVisible as re,legendEnabled as ie,minScale as ae,maxScale as oe,popupEnabled as g}from"./commonProperties.js";import{createQuery as _,computeDomainFromSubtypes as v}from"./featureLayerUtils.js";import y from"./FeatureTemplate.js";import b from"./FieldConfiguration.js";import{popupTemplateWithFieldConfigurations as x,fieldConfigurationsFromPopupTemplate as S,fieldConfigurationsFromFields as C}from"./fieldConfigUtils.js";import{defineFieldProperties as w}from"./fieldProperties.js";import{fixRendererFields as T}from"./fieldUtils.js";import se from"./LabelClass.js";import{reader as E}from"./labelingInfo.js";import{rendererReader as D,supportedRendererTypes as O}from"./subtypeGroupLayerUtils.js";import k from"./TitleCreator.js";import A from"../../renderers/SimpleRenderer.js";import j from"../../rest/support/AttachmentQuery.js";import M from"../../rest/support/Query.js";import{createPopupTemplate as N}from"../../support/popupUtils.js";import{defaultPolygonSymbol2D as P,defaultPolylineSymbol2D as F,defaultPointSymbol2D as I}from"../../symbols/support/defaults.js";import L from"../../tables/AttributeTableTemplate.js";import{writer as R}from"../../core/accessorSupport/decorators/writer.js";import{reader as z}from"../../core/accessorSupport/decorators/reader.js";const B=w();let V=0;function H(e,t){let n=e.json.write;return typeof n!=`object`&&(n=e.json.write={}),n.ignoreOrigin=!0,t?.spatialOnly&&(n.layerContainerTypes=m),e}function U(e){let t={write:{ignoreOrigin:!0}};return e?.name&&(t.name=e.name),typeof t.write==`object`&&(e?.spatialOnly&&(t.write.layerContainerTypes=m),e?.target&&(t.write.target=e.target)),t}function W(e){return new A({symbol:G(e)})}function G(e){switch(e){case`point`:case`multipoint`:return I.clone();case`polyline`:return F.clone();case`polygon`:case`multipatch`:return P.clone();default:return null}}function ce(e,t){return t?e?.type===`unique-value`&&e.field!=null&&e.field.toLowerCase()===t.toLowerCase()&&!e.field2&&!e.field3&&!e.valueExpression:!1}function K(e){return J(e,`user`)===e}function q(e){return J(e,`service`)}function le(e){return J(e,`portal-item`)}function J(e,t){return(e.parent?.getAtOrigin(`sublayers`,t))?.find(({subtypeCode:t})=>t===e.subtypeCode)}function Y(e,t){return e==null?null:t.subtypes?.find(t=>t.code===e)}function ue(e,t){let n=t.geometryType,r=null;switch(n){case`esriGeometryPoint`:case`esriGeometryMultipoint`:r=`point`;break;case`esriGeometryPolyline`:r=`line`;break;case`esriGeometryPolygon`:case`esriGeometryMultiPatch`:r=`polygon`;break;default:t.type,r=null}let i={},a=Y(e,t);if(a!=null){let{defaultValues:e}=a;for(let t in e)i[t]=e[t]}return i[t.subtypeField]=e,new y({name:`New Feature`,drawingTool:r,prototype:{attributes:i}})}let X=class extends l(n(i(o))){constructor(e){super(e),this.attributeTableTemplate=null,this.charts=null,this.editingEnabled=!0,this.fieldOverrides=null,this.fieldsIndex=null,this.formTemplate=null,this.graphicOrigin=new ne(this),this.id=`${Date.now().toString(16)}-subtype-sublayer-${V++}`,this.type=`subtype-sublayer`,this.labelsVisible=!0,this.labelingInfo=null,this.layerType=`ArcGISFeatureLayer`,this.legendEnabled=!0,this.listMode=`show`,this.minScale=0,this.maxScale=0,this.opacity=1,this.parent=null,this.popupEnabled=!0,this.popupTemplate=null,this.subtypeCode=null,this.visible=!0}load(e){return T(this.renderer,this.fieldsIndex),Promise.resolve(this)}get _titleCreator(){let e=this._get(`_titleCreator`);return c(e),new k({fieldsIndex:this.fieldsIndex,objectIdField:this.objectIdField,displayField:this.parent?.displayField??``,fields:this.fields,effectivePopupTemplate:this.popupTemplate??this.defaultPopupTemplate})}get capabilities(){return this.parent?.capabilities}get effectiveCapabilities(){return this.parent?.effectiveCapabilities}get effectiveEditingEnabled(){let{parent:e}=this;return e?e.effectiveEditingEnabled&&this.editingEnabled:this.editingEnabled}get elevationInfo(){return this.parent?.elevationInfo}get featureTitleFields(){return[...this._titleCreator.requiredFields]}set fieldConfigurations(e){if(this._override(`fieldConfigurations`,e),!this.parent?.loaded)return;let t=x(this,e);t&&this._set(`popupTemplate`,t)}get fieldConfigurations(){return this._isOverridden(`fieldConfigurations`)?this._get(`fieldConfigurations`):S(this)||null}writeFieldOverrides(e,t,n){let{fields:r,parent:i}=this,o;if(r){o=[];let e=0;r.forEach(({name:t,alias:n,editable:r,visible:a})=>{if(!a)return;let s=i?.fields?.find(e=>e.name===t);if(!s)return;let c={name:t},l=!1;n!==s.alias&&(c.alias=n,l=!0),r!==s.editable&&(c.editable=r,l=!0),o.push(c),l&&e++}),e===0&&o.length===r.length&&(o=null)}else o=a(e);o?.length&&u(n,o,t)}get fields(){let{parent:e,fieldOverrides:t,subtypeCode:n}=this,r=e?.fields;if(!e||!r?.length)return null;let{subtypes:i,subtypeField:a}=e,o=i?.find(e=>e.code===n),s=o?.defaultValues,c=o?.domains,l=[];for(let e of r){let r=e.clone(),{name:i}=r,o=t?.find(e=>e.name===i);if(r.visible=!t?.length||!!o,o){let{alias:e,editable:t}=o;e&&(r.alias=e),t===!1&&(r.editable=!1)}let u=s?.[i]??null;r.defaultValue=i===a?n:u;let d=c?.[i]??null;r.domain=i===a?null:d?d.type===`inherited`?r.domain:d.clone():null,l.push(r)}return l}get floorInfo(){return this.parent?.floorInfo}get isTable(){return!!this.parent?.isTable}get geometryType(){return this.parent?.geometryType}get globalIdField(){return this.parent?this.parent.globalIdField:(s.getLogger(this).error($(`globalIdField`)),null)}get effectiveScaleRange(){let e=this._get(`effectiveScaleRange`),{maxScale:t,minScale:n,parent:r}=this,i={minScale:n,maxScale:t};return r?.effectiveScaleRange!==void 0&&te(i,r.effectiveScaleRange),e&&e.minScale===i.minScale&&e.maxScale===i.maxScale?e:i}get effectiveVisible(){return this.visible&&(this.parent?.effectiveVisible??!0)}get objectIdField(){return this.parent||s.getLogger(this).error($(`objectIdField`)),this.parent?.objectIdField}writePopupTemplate(e,t,n,r){e&&(t[n]=e.toJSON({...r,writeFieldFormat:!0}))}get defaultPopupTemplate(){return this.createPopupTemplate()}get relationships(){return this.parent?.relationships}set renderer(e){T(e,this.fieldsIndex),this._override(`renderer`,e)}get renderer(){if(this._isOverridden(`renderer`))return this._get(`renderer`);let{parent:e}=this;return e&&!e.isTable&&e.geometryType!==`mesh`?(K(this)?a(q(this)?.renderer):null)??W(e.geometryType):null}readRendererFromService(e,t,n){if(t.type===`Table`)return null;let r=t.drawingInfo?.renderer,i=D(r,t,n),a,{subtypeCode:o}=this;if(o!=null&&ce(i,t.subtypeField)){let e=i.uniqueValueInfos?.find(({value:e})=>(e=typeof e==`number`?String(e):e,e===String(o)));e&&(a=new A({symbol:e.symbol}))}else i?.type===`simple`&&!i.visualVariables?.length&&(a=i);return a}readRenderer(e,t,n){let r=t?.layerDefinition?.drawingInfo?.renderer;if(r)return D(r,t,n)||void 0}get spatialReference(){return this.parent?.spatialReference??ee.WGS84}get subtypeField(){return this.parent?.subtypeField}get templates(){return this._isOverridden(`templates`)?this._get(`templates`):a(K(this)?q(this)?.templates:le(this)?.templates||q(this)?.templates)}set templates(e){this._override(`templates`,e)}readTemplatesFromService(e,t){return[ue(this.subtypeCode,t)]}get title(){return this._isOverridden(`title`)?this._get(`title`):(K(this)?q(this):null)?.title}set title(e){this._override(`title`,e)}readTitleFromService(e,t){let n=Y(this.subtypeCode,t);return n==null?null:n.name}get url(){return this.parent?.url}get userHasUpdateItemPrivileges(){return!!this.parent?.userHasUpdateItemPrivileges}async addAttachment(e,t,n){let{parent:i}=this;if(!i)throw $(`addAttachment`);if(e.getAttribute(i.subtypeField)!==this.subtypeCode)throw new r(`subtype-sublayer:addAttachment`,`The feature provided does not belong to this SubtypeSublayer`);return i.addAttachment(e,t,n)}async updateAttachment(e,t,n,i){let{parent:a}=this;if(!a)throw $(`updateAttachment`);if(e.getAttribute(a.subtypeField)!==this.subtypeCode)throw new r(`subtype-sublayer:updateAttachment`,`The feature provided does not belong to this SubtypeSublayer`);return a.updateAttachment(e,t,n,i)}async deleteAttachments(e,t,n){let{parent:i}=this;if(!i)throw $(`deleteAttachments`);if(e.getAttribute(i.subtypeField)!==this.subtypeCode)throw new r(`subtype-sublayer:deleteAttachments`,`The feature provided does not belong to this SubtypeSublayer`);return i.deleteAttachments(e,t,n)}async applyEdits(e,t){if(!this.parent)throw $(`applyEdits`);return this.parent.applyEdits(e,t)}createFieldConfigurations(){return C(this)}createPopupTemplate(e){let t=this,{parent:n,fields:r,title:i}=this;if(n){let{displayField:e,editFieldsInfo:a,objectIdField:o}=n;t={displayField:e,editFieldsInfo:a,fields:r,objectIdField:o,title:i}}return N(t,e)}createQuery(){let{parent:e}=this;if(!e)throw $(`createQuery`);let t=_(e),n=`${e.fieldsIndex.get(e.subtypeField)?.name||e.subtypeField}=${this.subtypeCode}`;return t.where=d(n,e.definitionExpression),t}getFeatureTitle(e,t){return this._titleCreator.getTitle(this,e,t)}getFeatureTitles(e,t){return this._titleCreator.getTitles(this,e,t)}getField(e){return this.fieldsIndex.get(e)}getFieldAlias(e){let t=this.getField(e);if(t)return this.getFieldConfiguration(t.name)?.alias||t.alias}getFieldConfiguration(e){return e=e.toLowerCase(),this.fieldConfigurations?.find(t=>t.name.toLowerCase()===e)}getFieldDomain(e,t){if(!t?.excludeImpliedDomains&&this.parent){let t=v(this.parent,e);if(t)return t}return this._getLayerDomain(e)}async queryAttachments(e,t){let n=await this.load();if(!n.parent)throw $(`queryAttachments`);let r=e instanceof j?e.clone():new j(e);return r.where=Q(r.where,n.parent.subtypeField,n.subtypeCode),n.parent.queryAttachments(r,t)}async queryFeatureCount(e,t){let n=await this.load();if(!n.parent)throw $(`queryFeatureCount`);return n.parent.queryFeatureCount(Z(n.parent,n,e),t)}async queryFeatures(e,t){let n=await this.load();if(!n.parent)throw $(`queryFeatures`);return n.parent.queryFeatures(Z(n.parent,n,e),t)}async queryObjectIds(e,t){let n=await this.load();if(!n.parent)throw $(`queryObjectIds`);return n.parent.queryObjectIds(Z(n.parent,n,e),t)}async queryRelatedFeatures(e,t){let n=await this.load();if(!n.parent)throw $(`queryRelatedFeatures`);return n.parent.queryRelatedFeatures(e,t)}async queryRelatedFeaturesCount(e,t){let n=await this.load();if(!n.parent)throw $(`queryRelatedFeaturesCount`);return n.parent.queryRelatedFeaturesCount(e,t)}_getLayerDomain(e){let t=this.fieldsIndex.get(e);return t?t.domain:null}};e([f({clonable:!1,readOnly:!0})],X.prototype,`_titleCreator`,null),e([f({type:L,json:U({name:`attributeTableInfo`})})],X.prototype,`attributeTableTemplate`,void 0),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`capabilities`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`effectiveCapabilities`,null),e([f({json:U()})],X.prototype,`charts`,void 0),e([f({type:Boolean,nonNullable:!0,json:U({name:`enableEditing`})})],X.prototype,`editingEnabled`,void 0),e([f({type:Boolean,readOnly:!0})],X.prototype,`effectiveEditingEnabled`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`elevationInfo`,null),e([f({clonable:!1,readOnly:!0})],X.prototype,`featureTitleFields`,null),e([f({type:[b],json:{name:`layerDefinition.fieldConfigurations`,write:{ignoreOrigin:!0}}})],X.prototype,`fieldConfigurations`,null),e([f({json:{name:`layerDefinition.fieldOverrides`,origins:{service:{read:!1}},write:{ignoreOrigin:!0,allowNull:!0}}})],X.prototype,`fieldOverrides`,void 0),e([R(`fieldOverrides`)],X.prototype,`writeFieldOverrides`,null),e([f({...B.fields,readOnly:!0,json:{read:!1}})],X.prototype,`fields`,null),e([f(B.fieldsIndex)],X.prototype,`fieldsIndex`,void 0),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`floorInfo`,null),e([f({type:h,json:U({name:`formInfo`})})],X.prototype,`formTemplate`,void 0),e([f({readOnly:!0,clonable:!1})],X.prototype,`graphicOrigin`,void 0),e([f({type:String,clonable:!1,json:{origins:{service:{read:!1},"portal-item":{read:!1}},write:{ignoreOrigin:!0}}})],X.prototype,`id`,void 0),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`isTable`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`geometryType`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`globalIdField`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`type`,void 0),e([f(H(a(re)))],X.prototype,`labelsVisible`,void 0),e([f({type:[se],json:{name:`layerDefinition.drawingInfo.labelingInfo`,origins:{service:{read:!1}},read:{reader:E},write:{ignoreOrigin:!0,layerContainerTypes:m}}})],X.prototype,`labelingInfo`,void 0),e([f({type:[`ArcGISFeatureLayer`],readOnly:!0,json:{read:!1,write:{ignoreOrigin:!0,layerContainerTypes:m}}})],X.prototype,`layerType`,void 0),e([f(H(a(ie)))],X.prototype,`legendEnabled`,void 0),e([f({type:[`show`,`hide`]})],X.prototype,`listMode`,void 0),e([f((()=>{let e=a(ae);return e.json.origins.service.read=!1,H(e,{spatialOnly:!0})})())],X.prototype,`minScale`,void 0),e([f((()=>{let e=a(oe);return e.json.origins.service.read=!1,H(e,{spatialOnly:!0})})())],X.prototype,`maxScale`,void 0),e([f({readOnly:!0})],X.prototype,`effectiveScaleRange`,null),e([f({readOnly:!0})],X.prototype,`effectiveVisible`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`objectIdField`,null),e([f({type:Number,range:{min:0,max:1},nonNullable:!0,json:U({spatialOnly:!0})})],X.prototype,`opacity`,void 0),e([f({clonable:!1})],X.prototype,`parent`,void 0),e([f(H(a(g)))],X.prototype,`popupEnabled`,void 0),e([f({type:t,json:U({name:`popupInfo`})})],X.prototype,`popupTemplate`,void 0),e([R(`popupTemplate`)],X.prototype,`writePopupTemplate`,null),e([f({readOnly:!0})],X.prototype,`defaultPopupTemplate`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`relationships`,null),e([f({types:O,json:U({target:`layerDefinition.drawingInfo.renderer`,spatialOnly:!0})})],X.prototype,`renderer`,null),e([z(`service`,`renderer`,[`drawingInfo.renderer`,`subtypeField`,`type`])],X.prototype,`readRendererFromService`,null),e([z(`renderer`,[`layerDefinition.drawingInfo.renderer`])],X.prototype,`readRenderer`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`spatialReference`,null),e([f({type:Number,json:{origins:{service:{read:!1}},write:{ignoreOrigin:!0}}})],X.prototype,`subtypeCode`,void 0),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`subtypeField`,null),e([f({type:[y],json:U({name:`layerDefinition.templates`})})],X.prototype,`templates`,null),e([z(`service`,`templates`,[`geometryType`,`subtypeField`,`subtypes`,`type`])],X.prototype,`readTemplatesFromService`,null),e([f({type:String,json:U()})],X.prototype,`title`,null),e([z(`service`,`title`,[`subtypes`])],X.prototype,`readTitleFromService`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`url`,null),e([f({readOnly:!0})],X.prototype,`userHasUpdateItemPrivileges`,null),e([f({type:Boolean,nonNullable:!0,json:U({name:`visibility`,spatialOnly:!0})})],X.prototype,`visible`,void 0),X=e([p(`esri.layers.support.SubtypeSublayer`)],X);const Z=(e,t,n)=>{if(!n)return t.createQuery();let r=M.from(n);return r.where=Q(r.where,e.subtypeField,t.subtypeCode),r},Q=(e,t,n)=>{let r=RegExp(`${t}\\s*=\\s*\\d+`),i=`${t}=${n}`,a=e??``;return r.test(a)?a.replace(r,i):d(i,a)},$=e=>new r(`subtype-sublayer:parent-missing`,`This sublayer must have a parent SubtypeGroupLayer in order to use ${e}`);export{X as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{id as e}from"../../kernel.js";import t from"../../request.js";import n from"../../core/Collection.js";import"../../core/urlUtils.js";import{isLayerFromCatalog as r}from"../catalog/catalogUtils.js";import{isBasemap as i}from"../../support/userTypeGuards/isBasemap.js";function a(e,t){return typeof e==`object`&&!!e&&`type`in e&&e.type===t}function o(e){return
|
|
2
|
+
import{id as e}from"../../kernel.js";import t from"../../request.js";import n from"../../core/Collection.js";import"../../core/urlUtils.js";import{isLayerFromCatalog as r}from"../catalog/catalogUtils.js";import{isBasemap as i}from"../../support/userTypeGuards/isBasemap.js";function a(e,t){return typeof e==`object`&&!!e&&`type`in e&&e.type===t}function o(e){return b(e)||g(e)}function s(e){return a(e,`feature`)}function c(e){return e?.type===`gaussian-splat`}function l(e){return a(e,`oriented-imagery`)}function u(e){return a(e,`catalog-footprint`)}function d(e){return a(e,`graphics`)}function ee(e){return a(e,`map-image`)}function f(e){return a(e,`map-notes`)&&`sublayers`in e}function p(e){return a(e,`knowledge-graph`)&&`layers`in e}function m(e){return a(e,`knowledge-graph-sublayer`)}function h(e){return a(e,`link-chart`)&&`layers`in e}function g(e){return a(e,`scene`)}function _(e){return a(e,`sublayer`)}function v(e){return a(e,`subtype-group`)&&`sublayers`in e}function y(e){return e?.type===`subtype-sublayer`}function b(e){let t=e?.type;return t===`imagery-tile`||t===`tile`||t===`open-street-map`||t===`vector-tile`||t===`web-tile`||t===`wmts`}function x(e){let t=e?.type;return t===`base-tile`||t===`tile`||t===`elevation`||t===`imagery-tile`||t===`base-elevation`||t===`open-street-map`||t===`wcs`||t===`web-tile`||t===`wmts`||t===`vector-tile`}function S(e){return e?.type===`group`}function C(e){let t=e.parent;return S(t)&&t.tables.includes(e)}const w={Point:`SceneLayer`,"3DObject":`SceneLayer`,IntegratedMesh:`IntegratedMeshLayer`,PointCloud:`PointCloudLayer`,Building:`BuildingSceneLayer`};function T(e){let t=e?.type;return t===`building-scene`||t===`integrated-mesh`||t===`point-cloud`||t===`scene`}function E(e){return e.type===`integrated-mesh`||e.type===`integrated-mesh-3dtiles`}function D(e){return e.type===`integrated-mesh-3dtiles`}function O(e){let t=e?.type;return t===`integrated-mesh-3dtiles`||t===`gaussian-splat`}function k(e){return e?.type===`voxel`}function A(e){return e?.type===`imagery-tile`}function j(e,t){return i(e?.parent)&&e.parent[t].includes(e)}function M(e){return j(e,`baseLayers`)}function N(e){return j(e,`referenceLayers`)}function P(e){return e?.type===`feature`&&!e.url&&e.source?.type===`memory`}function F(e){let t=e?.type;return(t===`feature`||t===`subtype-group`||t===`oriented-imagery`||t===`annotation-feature`||t===`dimension-feature`)&&e?.source?.type===`feature-layer`}function I(e){return e?.type===`feature`&&e.source?.type===`feature-layer`}function te(e){return typeof e==`object`&&!!e&&`featureReduction`in e}function L(e){return u(e)||s(e)&&I(e)||l(e)||y(e)}function R(e){let t=e?.type;return t===`binning`||t===`cluster`}function z(e,t){if(!L(e))return;let n=t?.graphic,r=`featureReduction`in e?e.featureReduction:null;if(n){if(n.isAggregate){let e=n.origin;return e&&`featureReductionProvider`in e&&r?R(r)?r:null:void 0}return e}return t?.checkFeatureReduction&&r?R(r)?r:null:e}function B(e){let t=/[:;]/,n=[],r=!1;if(e&&(e.forEach((e,i)=>{n.push([i,e]),!r&&t.test(e)&&(r=!0)}),n.length>0)){let e;if(r){let t={};n.forEach(e=>{t[e[0]]=e[1]}),e=JSON.stringify(t)}else{let t=[];n.forEach(e=>{t.push(e[0]+`:`+e[1])}),e=t.join(`;`)}return e}return null}function V(e){if(!e)return;let t=[];if(e.forEach((e,n)=>{t.push(`"`+n+`":`+JSON.stringify(e))}),t.length)return`{`+t.join(`,`)+`}`}function H(e){if(e.activeLayer){let t=e.activeLayer.tileMatrixSet;if(t)return t;let n=e.activeLayer.tileMatrixSets;if(n)return n}return null}async function U(n,r){let i=e?.findServerInfo(n);if(i?.currentVersion!=null)return i.owningSystemUrl||null;let a=n.toLowerCase().indexOf(`/rest/services`);if(a===-1)return null;let o=`${n.slice(0,a)}/rest/info`,s=r==null?null:r.signal,{data:c}=await t(o,{query:{f:`json`},responseType:`json`,signal:s});return c?.owningSystemUrl||null}function W(e){if(!(`capabilities`in e))return!1;switch(e.type){case`annotation-feature`:case`catalog`:case`catalog-footprint`:case`csv`:case`dimension-feature`:case`feature`:case`geojson`:case`imagery`:case`knowledge-graph-sublayer`:case`ogc-feature`:case`oriented-imagery`:case`parquet`:case`scene`:case`sublayer`:case`subtype-group`:case`subtype-sublayer`:case`wfs`:return!0;default:return!1}}function G(e){return typeof e==`object`&&!!e&&`isTable`in e&&!!e.isTable}function K(e){return W(e)?`effectiveCapabilities`in e?e.effectiveCapabilities:e.capabilities:null}function q(e){if(!(`editingEnabled`in e))return!1;switch(e.type){case`csv`:case`feature`:case`geojson`:case`oriented-imagery`:case`scene`:case`subtype-group`:case`subtype-sublayer`:case`knowledge-graph-sublayer`:return!0;default:return!1}}function J(e){return q(e)?`effectiveEditingEnabled`in e?e.effectiveEditingEnabled:e.editingEnabled:!1}function Y(e){return e?(`subtypes`in e?e.subtypes:v(e.parent)?e.parent.subtypes:[])??[]:[]}function X(e){return(e.type===`imagery`||e.type===`imagery-tile`)&&e.renderer?.type===`flow`}function Z(e){let t=new n;for(let n of e.allLayers.concat(e.allTables))r(n)||C(n)||n.type===`annotation-feature`||n.type===`dimension-feature`||(`charts`in n&&t.push(n),n.type===`subtype-group`&&t.push(...n.sublayers));return t}function Q(e,t){return null}function ne(e){return null}function $(e){return!e||e.type===`Feature Service`&&!e.sourceUrl}function re(e,t){if(!t||!$(e))return;let n=Q(e.url);n&&(e.url=n)}export{re as applyPreferredHostToPortalItem,J as getEffectiveEditingEnabled,K as getEffectiveLayerCapabilities,z as getFieldConfigurationsContainer,Z as getLayersWithChartSupport,U as getOwningPortalUrl,ne as getPreferredHost,Q as getPreferredUrl,Y as getSubtypesFromLayer,H as getTileMaxtrixSetFromActiveLayer,O as is3DTilesLayer,M as isBaseLayer,o as isBasemap3DSupportedLayer,b as isBasemapSupportedTiledLayer,P as isFeatureCollectionLayer,s as isFeatureLayer,I as isFeatureServiceLayer,c as isGaussianSplatLayer,d as isGraphicsLayer,S as isGroupLayer,A as isImageryTileLayer,D as isIntegratedMesh3DTilesLayer,E as isIntegratedMeshLayer,p as isKnowledgeGraphLayer,m as isKnowledgeGraphSublayer,W as isLayerWithFeatureCapabilities,F as isLayerWithFeatureLayerSource,X as isLayerWithFlowRenderer,h as isLinkChartLayer,ee as isMapImageLayer,f as isMapNotesLayer,$ as isPreferredUrlApplicable,N as isReferenceLayer,g as isSceneLayer,T as isSceneServiceLayer,_ as isSublayer,v as isSubtypeGroupLayer,y as isSubtypeSublayer,G as isTable,x as isTiledLayer,k as isVoxelLayer,w as sceneServiceLayerTypeToClassName,B as serializeLayerDefinitions,V as serializeTimeOptions,te as supportsFeatureReduction,L as supportsFieldConfiguration};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arcgis/core",
|
|
3
|
-
"version": "6.0.0-next.
|
|
3
|
+
"version": "6.0.0-next.28",
|
|
4
4
|
"description": "ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ArcGIS",
|
|
@@ -20,10 +20,10 @@
|
|
|
20
20
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@amcharts/amcharts5": "~5.21.5",
|
|
23
|
-
"@arcgis/toolkit": "6.0.0-next.
|
|
23
|
+
"@arcgis/toolkit": "6.0.0-next.28",
|
|
24
24
|
"@esri/arcgis-html-sanitizer": "~4.2.0-next.2",
|
|
25
25
|
"@esri/calcite-components": "^5.2.0",
|
|
26
|
-
"@vaadin/grid": "~25.3.
|
|
26
|
+
"@vaadin/grid": "~25.3.5",
|
|
27
27
|
"@zip.js/zip.js": "~2.24.0",
|
|
28
28
|
"luxon": "~3.7.2",
|
|
29
29
|
"marked": "~18.1.2",
|
package/popup/FeaturesModel.js
CHANGED
|
@@ -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/Error.js";import{EventedAccessor as n}from"../core/Evented.js";import r from"../core/Logger.js";import{abortMaybe as i}from"../core/maybe.js";import{debounce as a,logOnError as o,isAbortError as s}from"../core/promiseUtils.js";import{watch as c,when as l}from"../core/reactiveUtils.js";import{throttle as u}from"../core/throttle.js";import{property as d,subclass as f}from"../core/accessorSupport/decorators.js";import p from"../geometry/Point.js";import{project as m}from"../geometry/projectionUtils.js";import h from"../geometry/SpatialReference.js";import{geographicToWebMercator as g}from"../geometry/support/webMercatorUtils.js";import{getGraphicLayer as _}from"../graphic/graphicOriginUtils.js";import{fallbackObjectIDAttribute as v}from"../layers/LayerConstants.js";import{ActionsCollection as y,createDefaultActions as b}from"./actions.js";import{getSelectedTarget as x}from"./actionUtils.js";import S from"./FeatureModel.js";import C from"./support/FeatureAbilities.js";import{getDisplayedSymbol as w}from"../symbols/support/symbolUtils.js";import{system as T}from"../time/constants.js";import{highlightsSupported as E}from"../views/support/layerViewUtils.js";import{GoTo as D}from"../widgets/support/GoTo.js";const O=Symbol(`feature-stream-flush`);let k=null;function A(e,t){switch(e){case`building-scene`:case`map-image`:case`tile`:case`imagery`:return!0;case`imagery-tile`:return t===`2d`;default:return!1}}let j=class extends D(n){constructor(e){super(e),this._centerAtLocationController=null,this._locationUpdateController=null,this._highlightPromises={"highlight-active-feature":null,"highlight-selected-feature":null},this._defaultFeatureAbilities=new C,this._activeFeatureStream=null,this._featureStreamHasYielded=!1,this.actions=new y,this.activeFeature=null,this.aggregatedFeaturesEnabled=!1,this.defaultPopupTemplateEnabled=!1,this.diagnostics=null,this.featuresPerPage=20,this.featureMenuOpen=!1,this.featureItemAbilities=null,this.featureModels=[],this.heading=null,this.highlightEnabled=!0,this.includeDefaultActions=!0,this.open=!1,this.updateLocationEnabled=!1,this.view=null,this.zoomFactor=4,this._debouncedLocationUpdate=a(async()=>{this._cancelLocationUpdate();let e=new AbortController,{signal:t}=e;this._locationUpdateController=e,await this._locationUpdate({signal:t}).catch(()=>{}).finally(()=>{this._locationUpdateController===e&&(this._locationUpdateController=null)})})}initialize(){this.addHandles([c(()=>this.view?.scale,()=>{this.open&&o(this._debouncedLocationUpdate(),r.getLogger(this))}),c(()=>[this.highlightEnabled,this.selectedFeature,this.open,this.view],()=>this._highlightSelectedFeature()),c(()=>[this.highlightEnabled,this.activeFeature,this.open,this.view],()=>this._highlightActiveFeature()),c(()=>this.location,e=>this._locationChange(e)),c(()=>!!this.view?.focusRegionVisible,()=>{this._initialDisplayMode===void 0&&this._syncSelectedFeatureIndex(this.features)}),c(()=>this.selectedFeature,e=>this._selectedFeatureChange(e)),c(()=>[this.featurePage,this.selectedFeatureIndex,this.featuresPerPage,this.featureMenuOpen,this.open,this.initialDisplayMode,this.featureItemAbilities?.attachmentsContent,this.featureItemAbilities?.chartAnimation,this.featureItemAbilities?.customContent,this.featureItemAbilities?.expressionContent,this.featureItemAbilities?.fieldsContent,this.featureItemAbilities?.mediaContent,this.featureItemAbilities?.relationshipContent,this.featureItemAbilities?.textContent,this.featureItemAbilities?.utilityNetworkAssociationsContent,this.actions,this.defaultPopupTemplateEnabled,this.includeDefaultActions,this.features,this.map,this.spatialReference,this.timeZone],(e,t)=>this._updateFeatureModels(t?.[1]??-1),{initial:!0}),l(()=>!this.open,()=>this.aggregatedFeaturesEnabled=!1)])}destroy(){this._cancelLocationUpdate(),this._cancelCenterAtLocation(),this._cancelFeatureStream(),this._destroyFeatureModels(),this.aggregatedFeaturesEnabled=!1,this.view=null,this.map=null,this.spatialReference=null,this.timeZone=null}get defaultActions(){let e=this._get(`defaultActions`)||new y;return e.removeAll(),e.addMany(this.selectedFeatureItem?.defaultActions.toArray()??b()),e}get active(){return this.open&&!this.waitingForResult}set content(e){this.featureStream=null,this._set(`diagnostics`,null),this.features=[],this._set(`content`,e)}get effectiveHeading(){return this.selectedFeatureItem?.heading??this.heading}get featureCount(){return this.features.length}get featurePage(){return this._get(`featurePage`)}set featurePage(e){e==null?this.featureCount||this._set(`featurePage`,null):!Number.isInteger(e)||e<1||e>Math.ceil(this.featureCount/this.featuresPerPage)||e!==1&&e!==(this.featurePage??0)+1||this._set(`featurePage`,e)}set features(e){if(this._get(`features`)===e)return;let t=e||[];this._set(`features`,t),this._activeFeatureStream&&t.length&&this.featurePage!=null||(this.featurePage=t.length?1:null),this._syncSelectedFeatureIndex(t)}get featureStream(){return this._get(`featureStream`)||null}set featureStream(e){this._setFeatureStream(e)}_setFeatureStream(e,t,n){this._set(`diagnostics`,n??null),this._get(`featureStream`)!==e&&(this._set(`featureStream`,e),this._cancelFeatureStream(),e&&(this._featureStreamHasYielded=!1,this._set(`pendingLocation`,t??null),this._activeFeatureStream=e,this._consumeFeatureStream(e,t).catch(()=>{})))}get initialDisplayMode(){return this._initialDisplayMode??(this.view?.focusRegionVisible?`list`:`feature`)}set initialDisplayMode(e){this._initialDisplayMode=e,this._syncSelectedFeatureIndex(this.features)}set location(e){let t=e?.spatialReference?.isWGS84&&this.spatialReference?.isWebMercator?g(e):e;this._set(`location`,t)}get map(){return this.view?.map??null}set map(e){this._override(`map`,e)}get pendingLocation(){return this._get(`pendingLocation`)??null}get streamingFeatures(){return this._activeFeatureStream!=null}get selectedFeature(){return this.selectedFeatureIndex===-1?null:this.features[this.selectedFeatureIndex]??null}get selectedFeatureIndex(){let e=this._get(`selectedFeatureIndex`);return typeof e==`number`?e:-1}set selectedFeatureIndex(e){let{featureCount:t}=this;(isNaN(e)||e<0||!t)&&(e=-1),this.activeFeature=null,this._set(`selectedFeatureIndex`,e)}get selectedFeatureItem(){return this.featureModels[this.selectedFeatureIndex]||null}get spatialReference(){return this.view?.spatialReference??null}set spatialReference(e){this._override(`spatialReference`,e)}get state(){return this.view?this.view.ready?`ready`:`disabled`:this.map?`ready`:`disabled`}get timeZone(){return this.view?.timeZone??T}set timeZone(e){this._overrideIfSome(`timeZone`,e)}get waitingForContents(){return this.featureModels.some(e=>e.waitingForContent)}get waitingForResult(){return this.streamingFeatures&&!this._featureStreamHasYielded}zoomTo(e){return this.callGoTo(e)}clear(){this._cancelFeatureStream(),this._set(`diagnostics`,null),this.set({featureStream:null,features:[],content:null,heading:null,location:null,activeFeature:null})}openFeatureStream(e){this._setFeatureStream(e.featureStream,e.location??null,e.diagnostics),this.open=!0}async fetchFeatures(e,n){let{view:r}=this;if(!r||!e)throw new t(`fetch-features:invalid-screenpoint-or-view`,`Cannot fetch features without a screen point/screen area and view.`,{screenPoint:e,view:r});let i={},a=r.fetchPopupFeatures(e,{diagnostics:i,pointerType:n?.event?.pointerType,defaultPopupTemplateEnabled:this.defaultPopupTemplateEnabled,signal:n?.signal});this._setFeatureStream(a,void 0,i)}next(){this.selectedFeatureIndex=this._getRoundRobinIndex(this.selectedFeatureIndex+1,this.featureCount)}previous(){this.selectedFeatureIndex=this._getRoundRobinIndex(this.selectedFeatureIndex-1,this.featureCount)}_syncSelectedFeatureIndex(e){let{selectedFeatureIndex:t}=this,n=this._activeFeatureStream!=null&&e.length>0;this.initialDisplayMode===`list`?n||(this.selectedFeatureIndex=-1):n&&t===-1?this.selectedFeatureIndex=0:n&&t!==-1||(this.selectedFeatureIndex=e.length?0:-1)}_centerAtLocation(){let{view:e}=this,n=x(this);this._cancelCenterAtLocation();let i=new AbortController,{signal:a}=i;return this._centerAtLocationController=i,!n||!e?Promise.reject(new t(`center-at-location:invalid-target-or-view`,`Cannot center at a location without a target and view.`,{target:n,view:e})):this.callGoTo({target:{target:n,scale:e.scale},options:{signal:a}}).catch(e=>{s(e)||r.getLogger(this).error(e)})}_getRoundRobinIndex(e,t){return(e+t)%t}_locationChange(e){let{selectedFeature:t,updateLocationEnabled:n,view:r}=this;r&&!this._locationUpdateController&&n&&e&&(!t||t.geometry)&&this._centerAtLocation()}async _selectedFeatureChange(e){let{location:t,updateLocationEnabled:n,view:r}=this;if(this.aggregatedFeaturesEnabled=!1,!e||!r)return;let i=_(e)?.type;if((i===`map-image`||i===`imagery`||i===`imagery-tile`)&&(e.symbol=await w(e)),(n||!t)&&e.geometry){if(e.geometry.type===`point`){this.location=e.geometry;return}let{labelPointExecute:t}=await import(`../geometry/operators/labelPointOperator.js`);this.location=t(e.geometry)}else if(n&&!e.geometry){await this._centerAtLocation();let e=r.center?.clone();e&&(this.location=e)}}_waitingForResultChange(){!this.featureCount&&this.featureStream&&(this.open=!1)}_destroyFeatureModels(){this.featureModels.forEach(e=>e&&!e.destroyed&&e.destroy()),this._set(`featureModels`,[])}_reconcileFeatureModels(e,t){let n=[],r=new Map;if(this.featureModels.forEach((t,i)=>{let a=t?.graphic;if(!a||t.destroyed)t.destroy();else if(e[i]===a)n[i]=t;else{let e=r.get(a);e?e.push(t):r.set(a,[t])}}),!r.size)return n;for(let e of r.values())e.reverse();for(let t=0;t<e.length&&r.size;t++){if(n[t])continue;let i=e[t],a=r.get(i);a&&(n[t]=a.pop(),a.length||r.delete(i))}let i=this.selectedFeatureIndex,a=e[i],o=this.featureModels[t],s=null;for(let e of r.values())for(let t of e)t===o?s=t:t.destroy();return s&&(a&&!n[i]?(s.graphic=a,n[i]=s):s.destroy()),n}_updateFeatureModels(e){let{selectedFeature:t,features:n}=this;if(!n.length){this._destroyFeatureModels();return}let r={abilities:this.featureItemAbilities??this._defaultFeatureAbilities,actions:this.actions,defaultPopupTemplateEnabled:this.defaultPopupTemplateEnabled,includeDefaultActions:this.includeDefaultActions,spatialReference:this.spatialReference,location:this.location,map:this.map,view:this.view,timeZone:this.timeZone},i=this._reconcileFeatureModels(n,e);i.forEach(e=>e.set(r));let a=e=>{let t=n[e];t&&!i[e]&&(i[e]=new S({...r,graphic:t}))};if(t&&a(this.selectedFeatureIndex),(this.featurePage??0)>1||this.open&&(this.featureMenuOpen||this.initialDisplayMode===`list`)){let e=Math.min((this.featurePage??0)*this.featuresPerPage,n.length);for(let t=0;t<e;t++)a(t)}this._set(`featureModels`,i)}_cancelCenterAtLocation(){this._centerAtLocationController=i(this._centerAtLocationController)}_cancelFeatureStream(){this.removeHandles(O);let e=this._activeFeatureStream;this._activeFeatureStream=null,this._set(`pendingLocation`,null),this._get(`featureStream`)===e&&this._set(`featureStream`,null),e?.return&&e.return(void 0).catch(()=>{})}async _locationUpdate(e){let{spatialReference:t}=this,n=this.selectedFeature,i=n?.geometry?.type,a=this.location;if(i&&i!==`mesh`&&t&&a&&n){if(i===`point`){let{labelPointExecute:t}=await import(`../geometry/operators/labelPointOperator.js`);if(e?.signal?.aborted||this.selectedFeature!==n||!n.geometry)return;this.location=t(n.geometry)}else try{let r=n.geometry,i=this._getHighlightLayer(n),o=n.getObjectId();if(!i||!this.view)return;if(o!=null){let n=this.view?.allLayerViews.find(e=>e.layer.uid===i.uid);if(!n||!(`queryFeatures`in n))return;let a=n.createQuery();a.outSpatialReference=t,a.objectIds=[o],a.returnGeometry=!0;let{features:s}=await n.queryFeatures(a,e);if(e?.signal?.aborted)return;r=s[0]?.geometry}if(!r||r.type===`mesh`)return;r=m(r,t),k??=await Promise.all([import(`../geometry/operators/intersectsOperator.js`),import(`../geometry/operators/proximityOperator.js`)]);let[{intersectsExecute:s},{proximityGetNearestCoordinate:c}]=k;if(!s(r,a)){let e=c(r,a).coordinate??a;this.selectedFeature===n&&(this.location=e)}}catch(e){s(e)||r.getLogger(this).error(e)}}}_cancelLocationUpdate(){this._locationUpdateController=i(this._locationUpdateController)}async _getLayerView(e,t){return await e.when(),e.whenLayerView(t)}_getHighlightLayer(e){let t=_(e),{layer:n}=e;return t&&`layer`in t&&t.layer?t.layer:t?.type===`map-notes`||t?.type===`sketch`||t?.type===`subtype-group`?t:n??t}_getHighlightLayerView(e,t){return t.type===`subtype-sublayer`&&t.parent&&this._mapIncludesLayer(t.parent)?this._getLayerView(e,t.parent):t&&this._mapIncludesLayer(t)?this._getLayerView(e,t):null}_getHighlightTarget(e,t,n){if(A(t.type,n))return e;let r=e.getObjectId();if(r!=null)return r;let i=t.type===`imagery`?void 0:`objectIdField`in t?t.objectIdField||v:null,a=e.attributes;return a&&i&&a[i]||e}_mapIncludesLayer(e){return!!this.map?.allLayers?.includes(e)}async _highlightFeature(e,t){this.removeHandles(e);let n=this[t];if(!n)return;let{highlightEnabled:r,view:i,open:a}=this;if(!i||!r||!a)return;let o=this._getHighlightLayer(n);if(!o)return;let s=this._getHighlightLayerView(i,o);if(!s)return;this._highlightPromises[e]=s;let c=await s;if(!c||!E(c)||this._highlightPromises[e]!==s||!this[t]||!this.highlightEnabled)return;let l=c.highlight(this._getHighlightTarget(n,o,i.type));this.addHandles(l,e)}async _highlightActiveFeature(){return this._highlightFeature(`highlight-active-feature`,`activeFeature`)}async _highlightSelectedFeature(){return this._highlightFeature(`highlight-selected-feature`,`selectedFeature`)}async _consumeFeatureStream(e,t){if(e!==this._activeFeatureStream)return;let n=[],r=u(()=>{let t=n;n=[],e===this._activeFeatureStream&&t.length&&this._addFeatures(t)},16);this.addHandles({remove:()=>{r.remove(),n=[]}},O);try{for await(let i of e){if(e!==this._activeFeatureStream)return;let a=!this._featureStreamHasYielded;a&&(this.features=[]),t!==void 0&&(this.location=t,t=void 0),this._set(`pendingLocation`,null),a?(this._addFeatures([i]),e===this._activeFeatureStream&&(this._featureStreamHasYielded=!0)):(n.push(i),r())}}finally{this._activeFeatureStream===e&&r.forceUpdate(),this._activeFeatureStream===e&&(this.removeHandles(O),this._featureStreamHasYielded||(this.features=[]),this._activeFeatureStream=null,this._set(`pendingLocation`,null),this._waitingForResultChange())}}_addFeatures(e){let{features:t}=this,n=new Set(t),r=e.filter(e=>!n.has(e)&&(n.add(e),!0));r.length&&(this.features=t.concat(r))}};e([d()],j.prototype,`_initialDisplayMode`,void 0),e([d()],j.prototype,`_activeFeatureStream`,void 0),e([d()],j.prototype,`_featureStreamHasYielded`,void 0),e([d({type:y})],j.prototype,`actions`,void 0),e([d({type:y,readOnly:!0})],j.prototype,`defaultActions`,null),e([d({readOnly:!0})],j.prototype,`active`,null),e([d()],j.prototype,`activeFeature`,void 0),e([d()],j.prototype,`aggregatedFeaturesEnabled`,void 0),e([d({value:null})],j.prototype,`content`,null),e([d({type:Boolean})],j.prototype,`defaultPopupTemplateEnabled`,void 0),e([d({readOnly:!0})],j.prototype,`diagnostics`,void 0),e([d({readOnly:!0})],j.prototype,`effectiveHeading`,null),e([d({readOnly:!0})],j.prototype,`featureCount`,null),e([d({value:null})],j.prototype,`featurePage`,null),e([d({value:[]})],j.prototype,`features`,null),e([d()],j.prototype,`featureStream`,null),e([d()],j.prototype,`featuresPerPage`,void 0),e([d()],j.prototype,`featureMenuOpen`,void 0),e([d({type:C})],j.prototype,`featureItemAbilities`,void 0),e([d({readOnly:!0})],j.prototype,`featureModels`,void 0),e([d()],j.prototype,`heading`,void 0),e([d()],j.prototype,`highlightEnabled`,void 0),e([d()],j.prototype,`includeDefaultActions`,void 0),e([d()],j.prototype,`initialDisplayMode`,null),e([d({type:p})],j.prototype,`location`,null),e([d()],j.prototype,`map`,null),e([d()],j.prototype,`open`,void 0),e([d({readOnly:!0})],j.prototype,`pendingLocation`,null),e([d({readOnly:!0})],j.prototype,`streamingFeatures`,null),e([d({value:null,readOnly:!0})],j.prototype,`selectedFeature`,null),e([d({value:-1})],j.prototype,`selectedFeatureIndex`,null),e([d({readOnly:!0})],j.prototype,`selectedFeatureItem`,null),e([d({type:h})],j.prototype,`spatialReference`,null),e([d({readOnly:!0})],j.prototype,`state`,null),e([d()],j.prototype,`timeZone`,null),e([d()],j.prototype,`updateLocationEnabled`,void 0),e([d()],j.prototype,`view`,void 0),e([d({readOnly:!0})],j.prototype,`waitingForContents`,null),e([d({readOnly:!0})],j.prototype,`waitingForResult`,null),e([d()],j.prototype,`zoomFactor`,void 0),j=e([f(`esri.popup.FeaturesModel`)],j);const M=j;export{M as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../core/Error.js";import{EventedAccessor as n}from"../core/Evented.js";import r from"../core/Logger.js";import{abortMaybe as i}from"../core/maybe.js";import{debounce as a,logOnError as o,isAbortError as s}from"../core/promiseUtils.js";import{watch as c,when as l}from"../core/reactiveUtils.js";import{throttle as u}from"../core/throttle.js";import{property as d,subclass as f}from"../core/accessorSupport/decorators.js";import p from"../geometry/Point.js";import{project as m}from"../geometry/projectionUtils.js";import h from"../geometry/SpatialReference.js";import{geographicToWebMercator as g}from"../geometry/support/webMercatorUtils.js";import{getGraphicLayer as _}from"../graphic/graphicOriginUtils.js";import{fallbackObjectIDAttribute as v}from"../layers/LayerConstants.js";import{ActionsCollection as y,createDefaultActions as b}from"./actions.js";import{getSelectedTarget as x}from"./actionUtils.js";import S from"./FeatureModel.js";import C from"./support/FeatureAbilities.js";import{getHighlightLayer as w,getHighlightLayerView as T}from"./support/featureUtils.js";import{getDisplayedSymbol as E}from"../symbols/support/symbolUtils.js";import{system as D}from"../time/constants.js";import{highlightsSupported as O}from"../views/support/layerViewUtils.js";import{GoTo as k}from"../widgets/support/GoTo.js";const A=Symbol(`feature-stream-flush`);let j=null;function M(e,t){switch(e){case`building-scene`:case`map-image`:case`tile`:case`imagery`:return!0;case`imagery-tile`:return t===`2d`;default:return!1}}let N=class extends k(n){constructor(e){super(e),this._centerAtLocationController=null,this._locationUpdateController=null,this._highlightPromises={"highlight-active-feature":null,"highlight-selected-feature":null},this._defaultFeatureAbilities=new C,this._activeFeatureStream=null,this._featureStreamHasYielded=!1,this.actions=new y,this.activeFeature=null,this.aggregatedFeaturesEnabled=!1,this.defaultPopupTemplateEnabled=!1,this.diagnostics=null,this.featuresPerPage=20,this.featureMenuOpen=!1,this.featureItemAbilities=null,this.featureModels=[],this.heading=null,this.highlightEnabled=!0,this.includeDefaultActions=!0,this.open=!1,this.updateLocationEnabled=!1,this.view=null,this.zoomFactor=4,this._debouncedLocationUpdate=a(async()=>{this._cancelLocationUpdate();let e=new AbortController,{signal:t}=e;this._locationUpdateController=e,await this._locationUpdate({signal:t}).catch(()=>{}).finally(()=>{this._locationUpdateController===e&&(this._locationUpdateController=null)})})}initialize(){this.addHandles([c(()=>this.view?.scale,()=>{this.open&&o(this._debouncedLocationUpdate(),r.getLogger(this))}),c(()=>[this.highlightEnabled,this.selectedFeature,this.open,this.view],()=>this._highlightSelectedFeature()),c(()=>[this.highlightEnabled,this.activeFeature,this.open,this.view],()=>this._highlightActiveFeature()),c(()=>this.location,e=>this._locationChange(e)),c(()=>!!this.view?.focusRegionVisible,()=>{this._initialDisplayMode===void 0&&this._syncSelectedFeatureIndex(this.features)}),c(()=>this.selectedFeature,e=>this._selectedFeatureChange(e)),c(()=>[this.featurePage,this.selectedFeatureIndex,this.featuresPerPage,this.featureMenuOpen,this.open,this.initialDisplayMode,this.featureItemAbilities?.attachmentsContent,this.featureItemAbilities?.chartAnimation,this.featureItemAbilities?.customContent,this.featureItemAbilities?.expressionContent,this.featureItemAbilities?.fieldsContent,this.featureItemAbilities?.mediaContent,this.featureItemAbilities?.relationshipContent,this.featureItemAbilities?.textContent,this.featureItemAbilities?.utilityNetworkAssociationsContent,this.actions,this.defaultPopupTemplateEnabled,this.includeDefaultActions,this.features,this.map,this.spatialReference,this.timeZone],(e,t)=>this._updateFeatureModels(t?.[1]??-1),{initial:!0}),l(()=>!this.open,()=>this.aggregatedFeaturesEnabled=!1)])}destroy(){this._cancelLocationUpdate(),this._cancelCenterAtLocation(),this._cancelFeatureStream(),this._destroyFeatureModels(),this.aggregatedFeaturesEnabled=!1,this.view=null,this.map=null,this.spatialReference=null,this.timeZone=null}get defaultActions(){let e=this._get(`defaultActions`)||new y;return e.removeAll(),e.addMany(this.selectedFeatureItem?.defaultActions.toArray()??b()),e}get active(){return this.open&&!this.waitingForResult}set content(e){this.featureStream=null,this._set(`diagnostics`,null),this.features=[],this._set(`content`,e)}get effectiveHeading(){return this.selectedFeatureItem?.heading??this.heading}get featureCount(){return this.features.length}get featurePage(){return this._get(`featurePage`)}set featurePage(e){e==null?this.featureCount||this._set(`featurePage`,null):!Number.isInteger(e)||e<1||e>Math.ceil(this.featureCount/this.featuresPerPage)||e!==1&&e!==(this.featurePage??0)+1||this._set(`featurePage`,e)}set features(e){if(this._get(`features`)===e)return;let t=e||[];this._set(`features`,t),this._activeFeatureStream&&t.length&&this.featurePage!=null||(this.featurePage=t.length?1:null),this._syncSelectedFeatureIndex(t)}get featureStream(){return this._get(`featureStream`)||null}set featureStream(e){this._setFeatureStream(e)}_setFeatureStream(e,t,n){this._set(`diagnostics`,n??null),this._get(`featureStream`)!==e&&(this._set(`featureStream`,e),this._cancelFeatureStream(),e&&(this._featureStreamHasYielded=!1,this._set(`pendingLocation`,t??null),this._activeFeatureStream=e,this._consumeFeatureStream(e,t).catch(()=>{})))}get initialDisplayMode(){return this._initialDisplayMode??(this.view?.focusRegionVisible?`list`:`feature`)}set initialDisplayMode(e){this._initialDisplayMode=e,this._syncSelectedFeatureIndex(this.features)}set location(e){let t=e?.spatialReference?.isWGS84&&this.spatialReference?.isWebMercator?g(e):e;this._set(`location`,t)}get map(){return this.view?.map??null}set map(e){this._override(`map`,e)}get pendingLocation(){return this._get(`pendingLocation`)??null}get streamingFeatures(){return this._activeFeatureStream!=null}get selectedFeature(){return this.selectedFeatureIndex===-1?null:this.features[this.selectedFeatureIndex]??null}get selectedFeatureIndex(){let e=this._get(`selectedFeatureIndex`);return typeof e==`number`?e:-1}set selectedFeatureIndex(e){let{featureCount:t}=this;(isNaN(e)||e<0||!t)&&(e=-1),this.activeFeature=null,this._set(`selectedFeatureIndex`,e)}get selectedFeatureItem(){return this.featureModels[this.selectedFeatureIndex]||null}get spatialReference(){return this.view?.spatialReference??null}set spatialReference(e){this._override(`spatialReference`,e)}get state(){return this.view?this.view.ready?`ready`:`disabled`:this.map?`ready`:`disabled`}get timeZone(){return this.view?.timeZone??D}set timeZone(e){this._overrideIfSome(`timeZone`,e)}get waitingForContents(){return this.featureModels.some(e=>e.waitingForContent)}get waitingForResult(){return this.streamingFeatures&&!this._featureStreamHasYielded}zoomTo(e){return this.callGoTo(e)}clear(){this._cancelFeatureStream(),this._set(`diagnostics`,null),this.set({featureStream:null,features:[],content:null,heading:null,location:null,activeFeature:null})}openFeatureStream(e){this._setFeatureStream(e.featureStream,e.location??null,e.diagnostics),this.open=!0}async fetchFeatures(e,n){let{view:r}=this;if(!r||!e)throw new t(`fetch-features:invalid-screenpoint-or-view`,`Cannot fetch features without a screen point/screen area and view.`,{screenPoint:e,view:r});let i={},a=r.fetchPopupFeatures(e,{diagnostics:i,pointerType:n?.event?.pointerType,defaultPopupTemplateEnabled:this.defaultPopupTemplateEnabled,signal:n?.signal});this._setFeatureStream(a,void 0,i)}next(){this.selectedFeatureIndex=this._getRoundRobinIndex(this.selectedFeatureIndex+1,this.featureCount)}previous(){this.selectedFeatureIndex=this._getRoundRobinIndex(this.selectedFeatureIndex-1,this.featureCount)}_syncSelectedFeatureIndex(e){let{selectedFeatureIndex:t}=this,n=this._activeFeatureStream!=null&&e.length>0;this.initialDisplayMode===`list`?n||(this.selectedFeatureIndex=-1):n&&t===-1?this.selectedFeatureIndex=0:n&&t!==-1||(this.selectedFeatureIndex=e.length?0:-1)}_centerAtLocation(){let{view:e}=this,n=x(this);this._cancelCenterAtLocation();let i=new AbortController,{signal:a}=i;return this._centerAtLocationController=i,!n||!e?Promise.reject(new t(`center-at-location:invalid-target-or-view`,`Cannot center at a location without a target and view.`,{target:n,view:e})):this.callGoTo({target:{target:n,scale:e.scale},options:{signal:a}}).catch(e=>{s(e)||r.getLogger(this).error(e)})}_getRoundRobinIndex(e,t){return(e+t)%t}_locationChange(e){let{selectedFeature:t,updateLocationEnabled:n,view:r}=this;r&&!this._locationUpdateController&&n&&e&&(!t||t.geometry)&&this._centerAtLocation()}async _selectedFeatureChange(e){let{location:t,updateLocationEnabled:n,view:r}=this;if(this.aggregatedFeaturesEnabled=!1,!e||!r)return;let i=_(e)?.type;if((i===`map-image`||i===`imagery`||i===`imagery-tile`)&&(e.symbol=await E(e)),(n||!t)&&e.geometry){if(e.geometry.type===`point`){this.location=e.geometry;return}let{labelPointExecute:t}=await import(`../geometry/operators/labelPointOperator.js`);this.location=t(e.geometry)}else if(n&&!e.geometry){await this._centerAtLocation();let e=r.center?.clone();e&&(this.location=e)}}_waitingForResultChange(){!this.featureCount&&this.featureStream&&(this.open=!1)}_destroyFeatureModels(){this.featureModels.forEach(e=>e&&!e.destroyed&&e.destroy()),this._set(`featureModels`,[])}_reconcileFeatureModels(e,t){let n=[],r=new Map;if(this.featureModels.forEach((t,i)=>{let a=t?.graphic;if(!a||t.destroyed)t.destroy();else if(e[i]===a)n[i]=t;else{let e=r.get(a);e?e.push(t):r.set(a,[t])}}),!r.size)return n;for(let e of r.values())e.reverse();for(let t=0;t<e.length&&r.size;t++){if(n[t])continue;let i=e[t],a=r.get(i);a&&(n[t]=a.pop(),a.length||r.delete(i))}let i=this.selectedFeatureIndex,a=e[i],o=this.featureModels[t],s=null;for(let e of r.values())for(let t of e)t===o?s=t:t.destroy();return s&&(a&&!n[i]?(s.graphic=a,n[i]=s):s.destroy()),n}_updateFeatureModels(e){let{selectedFeature:t,features:n}=this;if(!n.length){this._destroyFeatureModels();return}let r={abilities:this.featureItemAbilities??this._defaultFeatureAbilities,actions:this.actions,defaultPopupTemplateEnabled:this.defaultPopupTemplateEnabled,includeDefaultActions:this.includeDefaultActions,spatialReference:this.spatialReference,location:this.location,map:this.map,view:this.view,timeZone:this.timeZone},i=this._reconcileFeatureModels(n,e);i.forEach(e=>e.set(r));let a=e=>{let t=n[e];t&&!i[e]&&(i[e]=new S({...r,graphic:t}))};if(t&&a(this.selectedFeatureIndex),(this.featurePage??0)>1||this.open&&(this.featureMenuOpen||this.initialDisplayMode===`list`)){let e=Math.min((this.featurePage??0)*this.featuresPerPage,n.length);for(let t=0;t<e;t++)a(t)}this._set(`featureModels`,i)}_cancelCenterAtLocation(){this._centerAtLocationController=i(this._centerAtLocationController)}_cancelFeatureStream(){this.removeHandles(A);let e=this._activeFeatureStream;this._activeFeatureStream=null,this._set(`pendingLocation`,null),this._get(`featureStream`)===e&&this._set(`featureStream`,null),e?.return&&e.return(void 0).catch(()=>{})}async _locationUpdate(e){let{spatialReference:t}=this,n=this.selectedFeature,i=n?.geometry?.type,a=this.location;if(i&&i!==`mesh`&&t&&a&&n){if(i===`point`){let{labelPointExecute:t}=await import(`../geometry/operators/labelPointOperator.js`);if(e?.signal?.aborted||this.selectedFeature!==n||!n.geometry)return;this.location=t(n.geometry)}else try{let r=n.geometry,i=this._getHighlightLayer(n),o=n.getObjectId();if(!i||!this.view)return;if(o!=null){let n=this.view?.allLayerViews.find(e=>e.layer.uid===i.uid);if(!n||!(`queryFeatures`in n))return;let a=n.createQuery();a.outSpatialReference=t,a.objectIds=[o],a.returnGeometry=!0;let{features:s}=await n.queryFeatures(a,e);if(e?.signal?.aborted)return;r=s[0]?.geometry}if(!r||r.type===`mesh`)return;r=m(r,t),j??=await Promise.all([import(`../geometry/operators/intersectsOperator.js`),import(`../geometry/operators/proximityOperator.js`)]);let[{intersectsExecute:s},{proximityGetNearestCoordinate:c}]=j;if(!s(r,a)){let e=c(r,a).coordinate??a;this.selectedFeature===n&&(this.location=e)}}catch(e){s(e)||r.getLogger(this).error(e)}}}_cancelLocationUpdate(){this._locationUpdateController=i(this._locationUpdateController)}_getHighlightLayer(e){return w(e,this.map)}_getHighlightTarget(e,t,n){if(M(t.type,n))return e;let r=e.getObjectId();if(r!=null)return r;let i=t.type===`imagery`?void 0:`objectIdField`in t?t.objectIdField||v:null,a=e.attributes;return a&&i&&a[i]||e}async _highlightFeature(e,t){this.removeHandles(e);let n=this[t];if(!n)return;let{highlightEnabled:r,view:i,open:a}=this;if(!i||!r||!a)return;let o=this._getHighlightLayer(n);if(!o)return;let s=T(i,o,this.map);if(!s)return;this._highlightPromises[e]=s;let c=await s;if(!c||!O(c)||this._highlightPromises[e]!==s||!this[t]||!this.highlightEnabled)return;let l=c.highlight(this._getHighlightTarget(n,o,i.type));this.addHandles(l,e)}async _highlightActiveFeature(){return this._highlightFeature(`highlight-active-feature`,`activeFeature`)}async _highlightSelectedFeature(){return this._highlightFeature(`highlight-selected-feature`,`selectedFeature`)}async _consumeFeatureStream(e,t){if(e!==this._activeFeatureStream)return;let n=[],r=u(()=>{let t=n;n=[],e===this._activeFeatureStream&&t.length&&this._addFeatures(t)},16);this.addHandles({remove:()=>{r.remove(),n=[]}},A);try{for await(let i of e){if(e!==this._activeFeatureStream)return;let a=!this._featureStreamHasYielded;a&&(this.features=[]),t!==void 0&&(this.location=t,t=void 0),this._set(`pendingLocation`,null),a?(this._addFeatures([i]),e===this._activeFeatureStream&&(this._featureStreamHasYielded=!0)):(n.push(i),r())}}finally{this._activeFeatureStream===e&&r.forceUpdate(),this._activeFeatureStream===e&&(this.removeHandles(A),this._featureStreamHasYielded||(this.features=[]),this._activeFeatureStream=null,this._set(`pendingLocation`,null),this._waitingForResultChange())}}_addFeatures(e){let{features:t}=this,n=new Set(t),r=e.filter(e=>!n.has(e)&&(n.add(e),!0));r.length&&(this.features=t.concat(r))}};e([d()],N.prototype,`_initialDisplayMode`,void 0),e([d()],N.prototype,`_activeFeatureStream`,void 0),e([d()],N.prototype,`_featureStreamHasYielded`,void 0),e([d({type:y})],N.prototype,`actions`,void 0),e([d({type:y,readOnly:!0})],N.prototype,`defaultActions`,null),e([d({readOnly:!0})],N.prototype,`active`,null),e([d()],N.prototype,`activeFeature`,void 0),e([d()],N.prototype,`aggregatedFeaturesEnabled`,void 0),e([d({value:null})],N.prototype,`content`,null),e([d({type:Boolean})],N.prototype,`defaultPopupTemplateEnabled`,void 0),e([d({readOnly:!0})],N.prototype,`diagnostics`,void 0),e([d({readOnly:!0})],N.prototype,`effectiveHeading`,null),e([d({readOnly:!0})],N.prototype,`featureCount`,null),e([d({value:null})],N.prototype,`featurePage`,null),e([d({value:[]})],N.prototype,`features`,null),e([d()],N.prototype,`featureStream`,null),e([d()],N.prototype,`featuresPerPage`,void 0),e([d()],N.prototype,`featureMenuOpen`,void 0),e([d({type:C})],N.prototype,`featureItemAbilities`,void 0),e([d({readOnly:!0})],N.prototype,`featureModels`,void 0),e([d()],N.prototype,`heading`,void 0),e([d()],N.prototype,`highlightEnabled`,void 0),e([d()],N.prototype,`includeDefaultActions`,void 0),e([d()],N.prototype,`initialDisplayMode`,null),e([d({type:p})],N.prototype,`location`,null),e([d()],N.prototype,`map`,null),e([d()],N.prototype,`open`,void 0),e([d({readOnly:!0})],N.prototype,`pendingLocation`,null),e([d({readOnly:!0})],N.prototype,`streamingFeatures`,null),e([d({value:null,readOnly:!0})],N.prototype,`selectedFeature`,null),e([d({value:-1})],N.prototype,`selectedFeatureIndex`,null),e([d({readOnly:!0})],N.prototype,`selectedFeatureItem`,null),e([d({type:h})],N.prototype,`spatialReference`,null),e([d({readOnly:!0})],N.prototype,`state`,null),e([d()],N.prototype,`timeZone`,null),e([d()],N.prototype,`updateLocationEnabled`,void 0),e([d()],N.prototype,`view`,void 0),e([d({readOnly:!0})],N.prototype,`waitingForContents`,null),e([d({readOnly:!0})],N.prototype,`waitingForResult`,null),e([d()],N.prototype,`zoomFactor`,void 0),N=e([f(`esri.popup.FeaturesModel`)],N);const P=N;export{P as default};
|