@arcgis/core 6.0.0-next.6 → 6.0.0-next.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/arcade/functions/knowledgegraph.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{f09c9d9a554c33a753b4.js → 02253bdffbd580af22d8.js} +1 -1
- package/assets/esri/core/workers/chunks/06ab24a083c3229228dd.js +1 -0
- package/assets/esri/core/workers/chunks/09a63cc1987f8636c5b0.js +1 -0
- package/assets/esri/core/workers/chunks/{8ba32d3a0df4a206ef1c.js → 15cc2c295682f48030f9.js} +1 -1
- package/assets/esri/core/workers/chunks/17b76e0d401c7e396d10.js +1 -0
- package/assets/esri/core/workers/chunks/{c18189710d6198516175.js → 19b9d393046a780e6c3f.js} +1 -1
- package/assets/esri/core/workers/chunks/1b35ec54968fbeec17ce.js +1 -0
- package/assets/esri/core/workers/chunks/1c0c5cb13c2590aae906.js +1 -0
- package/assets/esri/core/workers/chunks/1e0d2715d603f48a7e0b.js +1 -0
- package/assets/esri/core/workers/chunks/{83589144eeeb08f45557.js → 2aeb5cc32284dd3e4d22.js} +1 -1
- package/assets/esri/core/workers/chunks/{9a7fc93cc693fd12b5d8.js → 2b6c74646ff475a6e302.js} +1 -1
- package/assets/esri/core/workers/chunks/2d9a1f23ec6ce90723ac.js +1 -0
- package/assets/esri/core/workers/chunks/340621182db9e8edbec2.js +1 -0
- package/assets/esri/core/workers/chunks/{71f739bb3f7350704af6.js → 384ae10053d35940de73.js} +1 -1
- package/assets/esri/core/workers/chunks/3b3e519f15ed52c83f0c.js +1 -0
- package/assets/esri/core/workers/chunks/{72019baeba520edb6bb0.js → 3b737dae6efed627406e.js} +1 -1
- package/assets/esri/core/workers/chunks/3c0ed15b544df6fb0903.js +1 -0
- package/assets/esri/core/workers/chunks/3ffda5bf0b91700dc308.js +1 -0
- package/assets/esri/core/workers/chunks/{1317ecdfd0cfa683a493.js → 42323093827adffe56d3.js} +1 -1
- package/assets/esri/core/workers/chunks/451d7d456df0f4466563.js +1 -0
- package/assets/esri/core/workers/chunks/4a6b92ecbb1f1c55cc43.js +1 -0
- package/assets/esri/core/workers/chunks/4e544de61f07ca660236.js +1 -0
- package/assets/esri/core/workers/chunks/{67ac6b326bf80fc3d33d.js → 53be85d04cd2da4f391d.js} +1 -1
- package/assets/esri/core/workers/chunks/54778dec1598818d93cb.js +1 -0
- package/assets/esri/core/workers/chunks/{06e7400f5ebe0719b81c.js → 5a5d80c2519aa3ea8878.js} +1 -1
- package/assets/esri/core/workers/chunks/{fb4ff0ac2bc445fec413.js → 5b434e8c98e7119d4a3b.js} +1 -1
- package/assets/esri/core/workers/chunks/606ea251075fe81a1206.js +1 -0
- package/assets/esri/core/workers/chunks/{3ac9dcbb0571a2580236.js → 62c8c9ad09e0166207fd.js} +1 -1
- package/assets/esri/core/workers/chunks/6588725275c75fae0d9c.js +1 -0
- package/assets/esri/core/workers/chunks/{ac4cc49104d26c384e98.js → 658b2642ab6880770e4e.js} +1 -1
- package/assets/esri/core/workers/chunks/68be3fb88ca61f82fb90.js +1 -0
- package/assets/esri/core/workers/chunks/6c9266120d46e8c69dbf.js +1 -0
- package/assets/esri/core/workers/chunks/6ebe73f69ae822053b70.js +1 -0
- package/assets/esri/core/workers/chunks/6ef647b7769d27529f9c.js +1 -0
- package/assets/esri/core/workers/chunks/709e019885822b1f6f3e.js +1 -0
- package/assets/esri/core/workers/chunks/70cc2d79653d66e85b58.js +1 -0
- package/assets/esri/core/workers/chunks/{cbe6c0f32608cb504695.js → 776ae25a34352d3468bc.js} +1 -1
- package/assets/esri/core/workers/chunks/8730e7e6e0296f43f10b.js +1 -0
- package/assets/esri/core/workers/chunks/8bea0d706ede6f84f8aa.js +1 -0
- package/assets/esri/core/workers/chunks/900181f68449d8f82eeb.js +1 -0
- package/assets/esri/core/workers/chunks/939942b00ba380e2957e.js +1 -0
- package/assets/esri/core/workers/chunks/{1ef39aef6b33c530cbe4.js → 966d0832a3c1f03668a0.js} +1 -1
- package/assets/esri/core/workers/chunks/9a28a66807a1e3557018.js +1 -0
- package/assets/esri/core/workers/chunks/{2f9033890c465acff698.js → 9bf48a907f91ea004648.js} +1 -1
- package/assets/esri/core/workers/chunks/9c7fa9d324fa0bf64d9c.js +1 -0
- package/assets/esri/core/workers/chunks/9ce91a909eccc4dfe388.js +1 -0
- package/assets/esri/core/workers/chunks/{1ba1f705b6ce5c8ea702.js → a655ebdb4bf0660615a2.js} +1 -1
- package/assets/esri/core/workers/chunks/ad76f7ab2f3e6d5a5b3c.js +1 -0
- package/assets/esri/core/workers/chunks/af349c7bc8ef41a0e1bd.js +1 -0
- package/assets/esri/core/workers/chunks/{250d3be6d3849d71fed8.js → c29c474c4b1049352d3e.js} +1 -1
- package/assets/esri/core/workers/chunks/c8ba0673d1b87216e619.js +1 -0
- package/assets/esri/core/workers/chunks/{4d3f97a48046021713a6.js → ceb112fe7aef354f8051.js} +1 -1
- package/assets/esri/core/workers/chunks/d6ad4390df576198e45b.js +1 -0
- package/assets/esri/core/workers/chunks/ddf0671976648f621269.js +1 -0
- package/assets/esri/core/workers/chunks/ded8b64a46992c3ae693.js +1 -0
- package/assets/esri/core/workers/chunks/{0b36abcbf03037b4073d.js → e1af43e2a8f2ef1059e3.js} +1 -1
- package/assets/esri/core/workers/chunks/eaf6d587477399a83088.js +1 -0
- package/assets/esri/core/workers/chunks/ecaac39dde7ec4213264.js +1 -0
- package/assets/esri/core/workers/chunks/f122c18af10e56f9ec2b.js +1 -0
- package/assets/esri/core/workers/chunks/f31b424a3667686af10c.js +1 -0
- package/assets/esri/core/workers/chunks/{711cfb84659cb4437679.js → f528ac5c648ca6a98582.js} +1 -1
- package/assets/esri/core/workers/chunks/f92364afaefbac7e8f77.js +1 -0
- package/assets/esri/core/workers/chunks/fb444954be74c1962ced.js +1 -0
- package/assets/esri/core/workers/chunks/fecaf0bc28aeea4d15db.js +1 -0
- package/assets/esri/themes/base/widgets/_FeatureFormUtilityNetworkAssociationSettings.scss +1 -1
- package/assets/esri/themes/base/widgets/_Features.scss +1 -1
- package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +5 -9
- package/assets/esri/themes/base/widgets/_SelectionToolbar.scss +2 -4
- package/assets/esri/themes/base/widgets/_Tooltip.scss +1 -1
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.en.json +1 -1
- package/chunks/GlobalIllumination.glsl.js +4 -2
- package/chunks/GlobalIlluminationBlur.glsl.js +3 -5
- package/chunks/GlobalIlluminationUpscale.glsl.js +1 -1
- package/config.js +1 -1
- package/core/colorUtils.js +1 -1
- package/core/has.js +1 -1
- package/core/workers/workerFactory.js +1 -1
- package/form/elements/inputs/DynamicChoiceInput.d.ts +35 -5
- package/geometry/projectionUtils.js +1 -1
- package/geometry/support/scaleUtils.js +1 -1
- package/kernel.js +1 -1
- package/layers/ParquetLayer.d.ts +3 -2
- package/layers/ParquetLayer.js +1 -1
- package/layers/graphics/data/FeatureStore.js +1 -1
- package/layers/graphics/data/QueryEngineResult.js +1 -1
- package/layers/graphics/data/geometryUtils.js +1 -1
- package/layers/graphics/data/projectionSupport.js +1 -1
- package/layers/knowledgeGraph/layerUtils.js +1 -1
- package/layers/knowledgeGraph/nodeMovementUtils.js +1 -1
- package/layers/mixins/ScaleRangeLayer.js +1 -1
- package/layers/mixins/SublayersOwner.js +1 -1
- package/layers/raster/datasets/TIFFRaster.js +1 -1
- package/layers/support/Sublayer.js +1 -1
- package/layers/support/SubtypeSublayer.js +1 -1
- package/package.json +2 -2
- package/popup/FeaturesModel.d.ts +26 -5
- package/popup/FeaturesModel.js +1 -1
- package/rest/support/printTaskUtils.js +1 -1
- package/symbols/cim/CIMSymbolHelper.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/hittestUtils.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
- package/views/2d/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiles2D.js +1 -1
- package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
- package/views/2d/layers/LayerView2D.js +1 -1
- package/views/2d/layers/features/FeatureSourceEventLog.js +1 -1
- package/views/2d/layers/features/layerAdapters/ParquetLayerAdapter.js +1 -1
- package/views/2d/layers/features/sources/FeatureSource.js +1 -1
- package/views/2d/layers/features/sources/FeatureSourceQueryInfo.js +1 -1
- package/views/2d/layers/features/sources/strategies/AFeatureTileLoadStrategy.js +1 -1
- package/views/2d/layers/features/sources/strategies/ParquetTileLoadStrategy.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReader.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReaderIndirect.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReaderJSON.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReaderPBF.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReaderPBFHeader.js +1 -1
- package/views/3d/analysis/ShadowCastAnalysisView3D.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedPlacementController.js +1 -1
- package/views/3d/analysis/Viewshed/types.d.ts +3 -1
- package/views/3d/environment/Environment.d.ts +2 -2
- package/views/3d/environment/Environment.js +1 -1
- package/views/3d/environment/EnvironmentView.js +2 -0
- package/views/3d/layers/BuildingComponentSublayerView3D.js +1 -1
- package/views/3d/layers/BuildingSceneLayerView3D.js +1 -1
- package/views/3d/layers/DynamicLayerView3D.js +1 -1
- package/views/3d/layers/FeatureLikeLayerViewBase3D.js +1 -1
- package/views/3d/layers/FlowSubView3D.js +1 -1
- package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
- package/views/3d/layers/GraphicsLayerView3D.js +1 -1
- package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
- package/views/3d/layers/IntegratedMeshLayerView3D.js +1 -1
- package/views/3d/layers/MediaLayerView3D.js +1 -1
- package/views/3d/layers/PointCloudLayerView3D.js +1 -1
- package/views/3d/layers/RouteLayerView3D.js +1 -1
- package/views/3d/layers/SceneLayerGraphicsView3D.js +1 -1
- package/views/3d/layers/SceneLayerView3D.js +1 -1
- package/views/3d/layers/TiledLayerView3D.js +1 -1
- package/views/3d/layers/VoxelLayerView3D.js +1 -1
- package/views/3d/layers/graphics/Graphics3DScaleVisibility.js +1 -1
- package/views/3d/layers/graphics/Labeler.js +1 -1
- package/views/3d/layers/support/FeatureTile.js +1 -1
- package/views/3d/layers/support/HeatmapFeatureProcessor.js +1 -1
- package/views/3d/layers/support/ImageHighlightHelper3D.js +1 -1
- package/views/3d/layers/support/SampledGeometryMaxDistanceRatio.js +1 -1
- package/views/3d/support/elevationUpdateUtils.js +1 -1
- package/views/3d/support/popupHitTest.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/webgl-engine/effects/WeatherFader.js +1 -1
- package/views/3d/webgl-engine/effects/clouds/CloudsComposition.js +1 -1
- package/views/3d/webgl-engine/effects/fog/Fog.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationColorQuantization.glsl.js +2 -2
- package/views/3d/webgl-engine/lib/EmissionComposite.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/SceneView.js +1 -1
- package/views/draw/Draw.d.ts +1 -1
- package/views/draw/support/InteractiveHandle.js +1 -1
- package/views/interactive/options/SnappingOptions.d.ts +1 -0
- package/views/interactive/options/TooltipOptions.d.ts +1 -0
- package/views/interactive/options/ViewOptions.d.ts +1 -0
- package/views/interactive/snapping/FeatureSnappingSourceInfo.js +1 -1
- package/views/interactive/support/Units.d.ts +1 -0
- package/views/interactive/tooltip/components/DrawHeaderActions.js +1 -1
- package/views/interactive/tooltip/components/ElevationModeSelect.js +1 -1
- package/views/layers/LayerView.js +1 -1
- package/views/layers/LineOfSightLayerView.d.ts +3 -4
- package/views/layers/ViewshedLayerView.d.ts +5 -6
- package/views/support/layerViewUtils.js +1 -1
- package/views/support/projectionUtils.js +1 -1
- package/widgets/BasemapLayerList.js +1 -1
- package/widgets/BatchAttributeForm.js +1 -1
- package/widgets/DirectionalPad.js +1 -1
- package/widgets/Editor/components/UpdateFeaturePanelContent.js +1 -1
- package/widgets/Editor.d.ts +10 -0
- package/widgets/Expand.js +1 -1
- package/widgets/FeatureForm.d.ts +2 -2
- package/widgets/FeatureForm.js +1 -1
- package/widgets/FeatureTable/FieldColumn.js +1 -1
- package/widgets/FeatureTable.js +1 -1
- package/widgets/Features/FeaturesDrillIn.js +1 -1
- package/widgets/Features.js +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/adapters/view/SceneViewAdapter.js +1 -1
- package/widgets/OrientedImageryViewer/components/SequentialNavigationUI.js +1 -1
- package/widgets/OrientedImageryViewer/components/SketchTools.js +1 -1
- package/widgets/PanoramicVideoViewer.js +1 -1
- package/widgets/Print.js +1 -1
- package/widgets/ScaleRangeSlider.js +1 -1
- package/widgets/Search/SearchResultRenderer.js +1 -1
- package/widgets/ShadowCast/ShadowCastViewModel.js +1 -1
- package/widgets/Sketch/SketchViewModel.d.ts +1 -1
- package/widgets/Sketch/support/ResponsiveToolbar/ResponsiveToolbar.js +1 -1
- package/widgets/Sketch.d.ts +1 -1
- package/widgets/Track/TrackViewModel.d.ts +1 -1
- package/widgets/UtilityNetworkAssociations.js +1 -1
- package/widgets/UtilityNetworkTrace/UtilityNetworkTraceFeature.js +1 -1
- package/widgets/UtilityNetworkTrace/UtilityNetworkTraceFeaturesDrillIn.js +1 -1
- package/widgets/UtilityNetworkTrace/types.d.ts +2 -2
- package/widgets/UtilityNetworkTrace.js +1 -1
- package/widgets/UtilityNetworkValidateTopology.js +1 -1
- package/widgets/ValuePicker.js +1 -1
- package/widgets/VideoPlayer/components/PlayerActionsGroup.js +1 -1
- package/widgets/VideoPlayer/components/PlayerControlsGroup.js +1 -1
- package/widgets/support/GridControls.js +1 -1
- package/widgets/support/PluginSettingsControls.js +1 -1
- package/widgets/support/SelectionToolbar.js +1 -1
- package/widgets/support/SnappingControls.js +1 -1
- package/widgets/support/componentsUtils.js +1 -1
- package/assets/esri/core/workers/chunks/00a600c71ceebe7bfeee.js +0 -1
- package/assets/esri/core/workers/chunks/00d24415bdeb0adae3df.js +0 -1
- package/assets/esri/core/workers/chunks/0193df3f9fb23633da87.js +0 -1
- package/assets/esri/core/workers/chunks/02d4f91652a79d2b637e.js +0 -1
- package/assets/esri/core/workers/chunks/07aa6d36f1006b6ab7ff.js +0 -1
- package/assets/esri/core/workers/chunks/107b025dc5b09465a78f.js +0 -1
- package/assets/esri/core/workers/chunks/1f43e06dcfe56229bb0f.js +0 -1
- package/assets/esri/core/workers/chunks/25d6c674b1c4829f040f.js +0 -1
- package/assets/esri/core/workers/chunks/25e6013e2c095629b236.js +0 -1
- package/assets/esri/core/workers/chunks/2a570ce6b99dac6ee996.js +0 -1
- package/assets/esri/core/workers/chunks/2c90f7a6432cd716db8b.js +0 -1
- package/assets/esri/core/workers/chunks/2e6a2f4d686b71249c0e.js +0 -1
- package/assets/esri/core/workers/chunks/303fde8f3459dde16555.js +0 -1
- package/assets/esri/core/workers/chunks/350540770781b281c39a.js +0 -1
- package/assets/esri/core/workers/chunks/3880d2c7fb14955d7f93.js +0 -1
- package/assets/esri/core/workers/chunks/3b017b718ea2d4ed498f.js +0 -1
- package/assets/esri/core/workers/chunks/43fc42405167a5537039.js +0 -1
- package/assets/esri/core/workers/chunks/4d82db661365daa513a6.js +0 -1
- package/assets/esri/core/workers/chunks/56851011276de0b3e318.js +0 -1
- package/assets/esri/core/workers/chunks/5f3ab77a79c408423fde.js +0 -1
- package/assets/esri/core/workers/chunks/633a9051580c5302d2f7.js +0 -1
- package/assets/esri/core/workers/chunks/6469c0d18d3663e7da4b.js +0 -1
- package/assets/esri/core/workers/chunks/65654e481cce9ae40e54.js +0 -1
- package/assets/esri/core/workers/chunks/669e39c3437d7273f0c7.js +0 -1
- package/assets/esri/core/workers/chunks/798a63653f82c0e842c5.js +0 -1
- package/assets/esri/core/workers/chunks/84fcbf7a1d04f01685d1.js +0 -1
- package/assets/esri/core/workers/chunks/8b54589f173259c1ba55.js +0 -1
- package/assets/esri/core/workers/chunks/8e511079918e2fd9261f.js +0 -1
- package/assets/esri/core/workers/chunks/95b82cbbe355266c65d7.js +0 -1
- package/assets/esri/core/workers/chunks/9673a9efec86040b8c13.js +0 -1
- package/assets/esri/core/workers/chunks/a010d2e4e34eb7bc1fec.js +0 -1
- package/assets/esri/core/workers/chunks/b05a41a60e30935644be.js +0 -1
- package/assets/esri/core/workers/chunks/bff767ec5bb4c0d6b324.js +0 -1
- package/assets/esri/core/workers/chunks/c906f984b2b6e7578c06.js +0 -1
- package/assets/esri/core/workers/chunks/d21257d2e2a37266c0f7.js +0 -1
- package/assets/esri/core/workers/chunks/d270cc9807161033686e.js +0 -1
- package/assets/esri/core/workers/chunks/de02a6a1f4810f99e9bb.js +0 -1
- package/assets/esri/core/workers/chunks/e5943f3a4bbc12c06c4d.js +0 -1
- package/assets/esri/core/workers/chunks/ec9a2425b4a498054a19.js +0 -1
- package/assets/esri/core/workers/chunks/f0a68d2900d24f56afa0.js +0 -1
- package/assets/esri/core/workers/chunks/f0aaa646b17ffdbdcefa.js +0 -1
- package/assets/esri/core/workers/chunks/f46a0d7cf588ba1b4157.js +0 -1
- package/assets/esri/core/workers/chunks/f762f70e7d39634ce797.js +0 -1
- package/assets/esri/core/workers/chunks/fccbb902fe08448f91de.js +0 -1
- package/assets/esri/core/workers/chunks/fd0254c6fc6c03ec11ba.js +0 -1
- package/views/3d/environment/EnvironmentManager.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{bidiText as e}from"../../core/BidiText.js";import{clone as t}from"../../core/lang.js";import n from"../../core/Logger.js";import r from"../../core/RandomLCG.js";import{px2pt as i}from"../../core/screenUtils.js";import{create as a,expandPointInPlace as o}from"../../geometry/support/aaBoundingRect.js";import{getBoundsXY as s}from"../../geometry/support/boundsUtils.js";import{isCurvedGeometry as c}from"../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as l}from"../../geometry/support/curves/densifyCurvedGeometry.js";import u from"../Font.js";import{loadGeometryOperatorsForEffect as d,loadGeometryOperatorsForPlacement as f}from"./CIMEffects.js";import{Placement as p}from"./CIMPlacements.js";import{EnvDrawHelper as m,CanvasDrawHelper as h,Transformation as g,lineGapType2LineHeight as _}from"./CIMSymbolDrawHelper.js";import{defaultCIMValues as v}from"./defaultCIMValues.js";import{fromCIMFontStyle as y}from"./fromCIMFontStyle.js";import{getNumericValue as b,fromCIMFontDecoration as x,getEffectsInflateSize as S}from"./utils.js";import{defaultPolylineSymbol2D as C}from"../support/defaults.js";import{cInfinity as w}from"../../views/2d/engine/vectorTiles/GeometryUtils.js";import{magicLabelLineHeight as T,glyphSize as E,randomInsidePolygonTextureSize as D}from"../../views/2d/engine/webgl/definitions.js";import{shapeTextResource as O}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";import{roundPtToWholePixel as k,getLineWidth as ee}from"../../views/2d/layers/graphics/graphicsUtils.js";const A=Math.PI,j=A/2,M=Math.PI/180,N=96/72,P=()=>n.getLogger(`esri.symbols.cim.CIMSymbolHelper`);function F(e){let t;switch(e.type){case`cim`:return e.data;case`web-style`:return e;case`simple-marker`:{let n=B.fromSimpleMarker(e);if(!n)throw Error(`InternalError: Cannot convert symbol to CIM`);t=n;break}case`picture-marker`:t=B.fromPictureMarker(e);break;case`simple-line`:t=B.fromSimpleLineSymbol(e);break;case`simple-fill`:t=B.fromSimpleFillSymbol(e);break;case`picture-fill`:t=B.fromPictureFillSymbol(e);break;case`text`:t=B.fromTextSymbol(e)}return{type:`CIMSymbolReference`,symbol:t}}function I(e,t,n){switch(t.type){case`CIMSymbolReference`:return I(e,t.symbol,n);case`CIMPointSymbol`:n??={x:0,y:0},e.drawSymbol(t,n);break;case`CIMLineSymbol`:n??={paths:[[[0,0],[10,0]]]},e.drawSymbol(t,n);break;case`CIMPolygonSymbol`:n??={rings:[[[0,0],[0,10],[10,10],[10,0],[0,0]]]},e.drawSymbol(t,n);break;case`CIMTextSymbol`:e.drawSymbol(t,{x:0,y:0});break;case`CIMVectorMarker`:{let n=new p;e.drawMarker(t,n);break}}return e.envelope()}function L(e){if(!e)return 0;switch(e.type){case`CIMMarkerPlacementAlongLineSameSize`:case`CIMMarkerPlacementAlongLineRandomSize`:case`CIMMarkerPlacementAtExtremities`:case`CIMMarkerPlacementAtMeasuredUnits`:case`CIMMarkerPlacementAtRatioPositions`:case`CIMMarkerPlacementOnLine`:case`CIMMarkerPlacementOnVertices`:return Math.abs(e.offset??0);default:return 0}}class R{static getSymbolInflateSize(e,t,n,r,i){return e||=[0,0,0,0],t?this._getInflateSize(e,t,n,r,i):e}static safeSize(e){let t=Math.max(Math.abs(e[0]),Math.abs(e[2])),n=Math.max(Math.abs(e[1]),Math.abs(e[3]));return Math.sqrt(t*t+n*n)}static getPointSymbolHaloPadding(e,t){let n=b(e.haloSize);if(n<=0||!e.haloSymbol?.symbolLayers?.some(e=>e.enable!==!1))return 0;let r=this.getSymbolInflateSize([0,0,0,0],e.haloSymbol,t,0,null);return n+this.safeSize(r)}static _vectorMarkerBounds(e,t,n,r){let i=!0,o=a();if(t?.markerGraphics)for(let a of t.markerGraphics){let t=[0,0,0,0];a.geometry&&(s(o,a.geometry),t[0]=0,t[1]=0,t[2]=0,t[3]=0,this.getSymbolInflateSize(t,a.symbol,n,0,r),o[0]+=t[0],o[1]+=t[1],o[2]+=t[2],o[3]+=t[3],i?(e[0]=o[0],e[1]=o[1],e[2]=o[2],e[3]=o[3],i=!1):(e[0]=Math.min(e[0],o[0]),e[1]=Math.min(e[1],o[1]),e[2]=Math.max(e[2],o[2]),e[3]=Math.max(e[3],o[3])))}return e}static _getInflateSize(e,t,n,r,i){if(Z(t)){let a=this._getLayersInflateSize(e,t.symbolLayers,n,r,i),o=S(t.effects);if(o>0&&(a[0]-=o,a[1]-=o,a[2]+=o,a[3]+=o),t.type===`CIMPointSymbol`){let e=this.getPointSymbolHaloPadding(t,n);e>0&&(a[0]-=e,a[1]-=e,a[2]+=e,a[3]+=e)}return a}return this._getTextInflatedSize(e,t,i)}static _getLayersInflateSize(e,t,n,r,i){let s=!0;if(!t)return e;for(let c of t){if(!c)continue;let t=[0,0,0,0];switch(c.type){case`CIMSolidFill`:case`CIMPictureFill`:case`CIMHatchFill`:case`CIMGradientFill`:break;case`CIMSolidStroke`:case`CIMPictureStroke`:case`CIMGradientStroke`:{let e=c,n=e.width;n!=null&&(e.capStyle===`Square`||e.joinStyle===`Miter`?n/=1.4142135623730951:n/=2,t[0]=-n,t[1]=-n,t[2]=n,t[3]=n);break}case`CIMCharacterMarker`:case`CIMVectorMarker`:case`CIMPictureMarker`:{let e=c;if(c.type===`CIMVectorMarker`){let e=c;if(t=this._vectorMarkerBounds(t,e,n,i),e.frame){let n=(e.frame.xmin+e.frame.xmax)/2,r=(e.frame.ymin+e.frame.ymax)/2;if(t[0]-=n,t[1]-=r,t[2]-=n,t[3]-=r,e.size!=null){let n=e.size/(e.frame.ymax-e.frame.ymin);t[0]*=n,t[1]*=n,t[2]*=n,t[3]*=n}}}else if(c.type===`CIMPictureMarker`){let r=c,i=n.getResource(r.url),a=1;if(i!=null&&i.height&&(a=i.width/i.height),e.size!=null){let n=e.size/2,i=e.size*a*(r.scaleX??1)/2;t=[-i,-n,i,n]}}else if(e.size!=null){let n=e.size/2;t=[-n,-n,n,n]}if(e.anchorPoint){let n,r;e.anchorPointUnits===`Absolute`?(n=e.anchorPoint.x,r=e.anchorPoint.y):(n=e.anchorPoint.x*(t[2]-t[0]),r=e.anchorPoint.y*(t[3]-t[1]));let i=1.25*Math.sqrt(n*n+r*r);t[0]-=i,t[1]-=i,t[2]+=i,t[3]+=i}let s=b(e.rotation);if(e.rotateClockwise&&(s=-s),r&&(s-=r),s){let e=M*s,n=Math.cos(e),r=Math.sin(e),i=a([w,w,-w,-w]);o(i,[t[0]*n-t[1]*r,t[0]*r+t[1]*n]),o(i,[t[0]*n-t[3]*r,t[0]*r+t[3]*n]),o(i,[t[2]*n-t[1]*r,t[2]*r+t[1]*n]),o(i,[t[2]*n-t[3]*r,t[2]*r+t[3]*n]),t=i}let l=b(e.offsetX),u=b(e.offsetY);if(r){let e=M*r,t=Math.cos(e),n=Math.sin(e),i=l*t-u*n,a=l*n+u*t;l=i,u=a}t[0]+=l,t[1]+=u,t[2]+=l,t[3]+=u;let d=L(e.markerPlacement);d>0&&(t[0]-=d,t[1]-=d,t[2]+=d,t[3]+=d);break}}let l=S(c.effects);l>0&&(t[0]-=l,t[1]-=l,t[2]+=l,t[3]+=l),s?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],s=!1):(e[0]=Math.min(e[0],t[0]),e[1]=Math.min(e[1],t[1]),e[2]=Math.max(e[2],t[2]),e[3]=Math.max(e[3],t[3]))}return e}static _getTextInflatedSize(e,t,n){let r=k(t.height??v.CIMTextSymbol.height);if(e[0]=-r/2,e[1]=-r/2,e[2]=r/2,e[3]=r/2,!n)return e;let i=n.get(t);if(!i||!z(i.glyphMosaicItems))return e;let{lineGapType:a,lineGap:o}=t,s=a?_(a,o??0,r):0,c=t.horizontalAlignment??v.CIMTextSymbol.horizontalalignment,l=t.verticalAlignment??v.CIMTextSymbol.verticalalignment,u=t.callout?.type===`CIMBackgroundCallout`,d=O(i.glyphMosaicItems,{scale:r/E,angle:b(t.angle),xOffset:b(t.offsetX),yOffset:b(t.offsetY),horizontalAlignment:c,verticalAlignment:l,maxLineWidth:ee(t.lineWidth),lineHeight:T*Math.max(.25,Math.min(s||1,4)),decoration:t.font.decoration||`none`,useCIMAngleBehavior:!0,hasBackground:u}).boundsT,f=Math.sqrt(d.width*d.width+d.height*d.height);return e[0]-=d.x+f,e[1]-=d.y-f,e[2]+=d.x+f,e[3]+=-d.y+f,e}}function z(e){return e.type===`glyphs`?e.glyphs.length>0:e.runs.some(e=>e.glyphs.glyphs.length>0)}class B{static getEnvelope(e,t,n,r){if(!e)return null;let i=new m(n,r);if(Array.isArray(e)){let n;for(let r of e)n?n.union(I(i,r,t)):n=I(i,r,t);return n}return I(i,e,t)}static expandEnvelopeForPointSymbolHalo(e,t,n,r=0){let i=R.getPointSymbolHaloPadding(t,n);if(i<=0)return;let a=i+r;e.x-=a,e.y-=a,e.width+=2*a,e.height+=2*a}static getTextureInfo(e,t,n,r,i,a=0){let o=r??this.getEnvelope(e,null,t);if(!o)return[0,0,0,0,1];let s=Math.max(o.width,o.height)*N,c=i==null?1:Math.max(i/s,1);c*=N,o.x*=c,o.y*=c,o.width*=c,o.height*=c,o.width=Math.max(Math.ceil(o.x+o.width)-Math.floor(o.x),1)-1,o.height=Math.max(Math.ceil(o.y+o.height)-Math.floor(o.y),1)-1;let l=o.x+o.width*.5,u=o.y+o.height*.5;if(l+=o.x-Math.floor(o.x),u+=o.y-Math.floor(o.y),!r){let e=Math.ceil(a*c);o.width+=n+2*e,o.height+=n+2*e,l+=n/2,u+=n/2}return[o.width,o.height,l,u,c]}static getTextureAnchor(e,t,n,r=0){let[i,a,o,s,c]=this.getTextureInfo(e,t,2,null,n,r);return[-o/i,-s/a,a/c*N]}static rasterize(e,t,n,r,i=!0,a,o=0){let[s,c,l,u,d]=this.getTextureInfo(t,r,2,n,a,o);e.width=s,e.height=c;let f=e.getContext(`2d`,{willReadFrequently:!0}),m=g.createScale(d,-d);m.translate(s*.5-l,c*.5+u);let _=new h(f,r,m);switch(t.type){case`CIMPointSymbol`:_.drawSymbol(t,{type:`point`,x:0,y:0});break;case`CIMVectorMarker`:{let e=new p;_.drawMarker(t,e);break}}let v=f.getImageData(0,0,e.width,e.height),y=new Uint8Array(v.data);if(i){let e;for(let t=0;t<y.length;t+=4)e=y[t+3]/255,y[t]=y[t]*e,y[t+1]=y[t+1]*e,y[t+2]=y[t+2]*e}return[y,e.width,e.height,-l/s,-u/c,d]}static fromTextSymbol(e){let{text:t}=e;return{type:`CIMPointSymbol`,symbolLayers:[{type:`CIMVectorMarker`,enable:!0,anchorPointUnits:`Relative`,dominantSizeAxis3D:`Y`,size:10,billboardMode3D:`FaceNearPlane`,frame:{xmin:-5,ymin:-5,xmax:5,ymax:5},markerGraphics:[{type:`CIMMarkerGraphic`,geometry:{x:0,y:0},symbol:B.createCIMTextSymbolfromTextSymbol(e),textString:t}],scaleSymbolsProportionally:!0,respectFrame:!0}],scaleX:1,angleAlignment:`Display`}}static fromPictureFillSymbol(e){let{height:t,outline:n,width:r,xoffset:i,xscale:a,yoffset:o,yscale:s}=e,c=[],l={type:`CIMPolygonSymbol`,symbolLayers:c};if(n){let e=$(n);e&&c.push(e)}let u=e.url;e.type===`esriPFS`&&e.imageData&&(u=e.imageData);let d=`angle`in e?e.angle??0:0,f=(r??0)*(a||1),p=(t??0)*(s||1);return c.push({type:`CIMPictureFill`,enable:!0,invertBackfaceTexture:!1,scaleX:1,textureFilter:`Picture`,tintColor:null,url:u,height:p,width:f,offsetX:b(i),offsetY:b(o),rotation:b(-d),colorSubstitutions:null}),l}static fromSimpleFillSymbol(e){let{color:n,style:r,outline:a}=e,o=[],s={type:`CIMPolygonSymbol`,symbolLayers:o};if(a){let e=$(a);e&&o.push(e)}if(r&&r!==`solid`&&r!==`none`&&r!==`esriSFSSolid`&&r!==`esriSFSNull`){let e={type:`CIMLineSymbol`,symbolLayers:[{type:`CIMSolidStroke`,color:K(n),capStyle:`Butt`,joinStyle:`Miter`,width:.75}]},a=0,s=i(te(r)?8:10);switch(r){case`vertical`:case`esriSFSVertical`:a=90;break;case`forward-diagonal`:case`esriSFSForwardDiagonal`:a=-45;break;case`backward-diagonal`:case`esriSFSBackwardDiagonal`:a=45;break;case`cross`:case`esriSFSCross`:a=0;break;case`diagonal-cross`:case`esriSFSDiagonalCross`:a=-45}o.push({type:`CIMHatchFill`,lineSymbol:e,offsetX:0,offsetY:0,rotation:a,separation:s}),r===`cross`||r===`esriSFSCross`?o.push({type:`CIMHatchFill`,lineSymbol:t(e),offsetX:0,offsetY:0,rotation:90,separation:s}):(r===`diagonal-cross`||r===`esriSFSDiagonalCross`)&&o.push({type:`CIMHatchFill`,lineSymbol:t(e),offsetX:0,offsetY:0,rotation:45,separation:s})}else r&&(r===`solid`||r===`esriSFSSolid`)&&o.push({type:`CIMSolidFill`,enable:!0,color:K(n)});return s}static fromSimpleLineSymbol(e){let{cap:t,color:n,join:r,marker:i,miterLimit:a,style:o,width:s}=e,c=o!==`solid`&&o!==`none`&&o!==`esriSLSSolid`&&o!==`esriSLSNull`,l=null;c&&(l=[{type:`CIMGeometricEffectDashes`,dashTemplate:X(o,t),lineDashEnding:`NoConstraint`,scaleDash:!0,offsetAlongLine:null}]);let u=[];if(i){let e;switch(i.placement){case`begin-end`:e=`Both`;break;case`begin`:e=`JustBegin`;break;case`end`:e=`JustEnd`;break;default:e=`None`}let t=B.fromSimpleMarker(i,s,n).symbolLayers[0];t.markerPlacement={type:`CIMMarkerPlacementAtExtremities`,placePerPart:!1,angleToLine:!0,keepUpright:!1,offset:0,extremityPlacement:e,offsetAlongLine:0},u.push(t)}return u.push({type:`CIMSolidStroke`,color:o!==`none`&&o!==`esriSLSNull`?K(n):[0,0,0,0],capStyle:H(t),joinStyle:U(r),miterLimit:a,width:s,effects:l}),{type:`CIMLineSymbol`,symbolLayers:u}}static fromPictureMarker(e){let{angle:t,height:n,width:r,xoffset:i,yoffset:a}=e,o=e.url;return e.type===`esriPMS`&&e.imageData&&(o=e.imageData),{type:`CIMPointSymbol`,symbolLayers:[{type:`CIMPictureMarker`,invertBackfaceTexture:!1,scaleX:1,textureFilter:`Picture`,tintColor:null,url:o,size:n,width:r,offsetX:b(i),offsetY:b(a),rotation:b(-t)}]}}static createCIMTextSymbolfromTextSymbol(t){let{angle:n,color:r,font:i,haloColor:a,haloSize:o,horizontalAlignment:s,kerning:c,lineWidth:l,text:u,verticalAlignment:d,xoffset:f,yoffset:p,backgroundColor:m,borderLineColor:h,borderLineSize:g}=t,_,v,y,x,S,C;i&&(_=i.family,v=i.style,y=i.weight,x=i.size,S=i.decoration);let w=!1;return u&&(w=e(u)[1]),(m||g)&&(C={type:`CIMBackgroundCallout`,margin:null,backgroundSymbol:{type:`CIMPolygonSymbol`,symbolLayers:[{type:`CIMSolidFill`,enable:!0,color:K(m)},{type:`CIMSolidStroke`,enable:!0,color:K(h),width:g??0}]},accentBarSymbol:null,gap:null,leaderLineSymbol:null,lineStyle:null}),{type:`CIMTextSymbol`,angle:n,blockProgression:2,depth3D:1,extrapolateBaselines:!0,fontEffects:0,fontEncoding:1,fontFamilyName:_||`Arial`,fontStyleName:q(v,y),fontType:0,haloSize:o,height:x,hinting:1,horizontalAlignment:W(s??`center`),kerning:c,letterWidth:100,ligatures:!0,lineGapType:`Multiple`,lineWidth:l,offsetX:b(f),offsetY:b(p),strikethrough:S===`line-through`,underline:S===`underline`,symbol:{type:`CIMPolygonSymbol`,symbolLayers:[{type:`CIMSolidFill`,enable:!0,color:K(r)}]},haloSymbol:{type:`CIMPolygonSymbol`,symbolLayers:[{type:`CIMSolidFill`,enable:!0,color:K(a)}]},shadowColor:[0,0,0,255],shadowOffsetX:1,shadowOffsetY:1,textCase:`Normal`,textDirection:+!!w,verticalAlignment:G(d??`baseline`),verticalGlyphOrientation:0,wordSpacing:100,billboardMode3D:2,callout:C}}static createPictureMarkerRasterizationParam(e){let{angle:t,height:n,width:r,xoffset:i,yoffset:a}=e,o=e.url??e.source?.url??e.source?.imageData;return o?{type:`sprite-rasterization-param`,overrides:[],resource:{type:`CIMPictureMarker`,enable:!0,invertBackfaceTexture:!1,scaleX:1,textureFilter:`Picture`,tintColor:null,url:o,size:n,width:r,offsetX:b(i),offsetY:b(a),rotation:b(-t)}}:null}static createPictureFillRasterizationParam(e){let{width:t,height:n,xoffset:r,yoffset:i,url:a}=e;return a?{type:`sprite-rasterization-param`,overrides:[],resource:{type:`CIMPictureFill`,enable:!0,scaleX:1,textureFilter:`Picture`,tintColor:null,url:a,width:t,height:n,offsetX:b(r),offsetY:b(i),rotation:0}}:null}static fromSimpleMarker(e,t,n){let{style:r}=e,i=e.color??n;if(r===`path`||r===`esriSMSPath`){let t=[];if(`outline`in e&&e.outline){let n=e.outline;t.push({type:`CIMSolidStroke`,enable:!0,width:n.width,color:K(n.color),path:e.path})}t.push({type:`CIMSolidFill`,enable:!0,color:K(i),path:e.path});let[n,r]=Q(`square`);return{type:`CIMPointSymbol`,symbolLayers:[{type:`CIMVectorMarker`,enable:!0,rotation:-b(e.angle),size:b(e.size||6),offsetX:b(e.xoffset),offsetY:b(e.yoffset),scaleSymbolsProportionally:!1,frame:n,markerGraphics:[{type:`CIMMarkerGraphic`,geometry:r,symbol:{type:`CIMPolygonSymbol`,symbolLayers:t}}]}]}}let a=[],o=e.size,s,c;if(`outline`in e&&e.outline&&e.outline.style!==`none`&&e.outline.style!==`esriSLSNull`){let t=e.outline,n=t.style!==`solid`&&t.style!==`esriSLSSolid`;[s,c]=n?Q(r,e.size):Q(r);let i=t.width??C.width;if(n){let t=i/e.size,n=(s.xmax-s.xmin)*t/2,r=(s.ymax-s.ymin)*t/2;s.xmin-=n,s.xmax+=n,s.ymin-=r,s.ymax+=r,o&&(o+=i)}let l=(e.style===`cross`||e.style===`x`)&&e?.outline.style!==`dot`&&e?.outline.style!==`short-dot`?`FullPattern`:`HalfGap`,u=n?[{type:`CIMGeometricEffectAddControlPoints`},{type:`CIMGeometricEffectDashes`,dashTemplate:X(t.style,null).map(e=>t.width&&t.width>0?e*t.width:e),lineDashEnding:l,controlPointEnding:`FullPattern`}]:void 0;a.push({type:`CIMSolidStroke`,capStyle:n?`Round`:`Butt`,enable:!0,width:i,color:K(t.color),effects:u})}else t&&e.type===`line-marker`&&(e.style===`cross`||e.style===`x`)?([s,c]=Q(r),a.push({type:`CIMSolidStroke`,enable:!0,width:t,color:K(i)})):[s,c]=Q(r);a.push({type:`CIMSolidFill`,enable:!0,color:K(i)});let l={type:`CIMPolygonSymbol`,symbolLayers:a};return{type:`CIMPointSymbol`,symbolLayers:[{type:`CIMVectorMarker`,enable:!0,rotation:b(-e.angle),size:b(o||t*6),offsetX:b(e.xoffset),offsetY:b(e.yoffset),scaleSymbolsProportionally:!1,frame:s,markerGraphics:[{type:`CIMMarkerGraphic`,geometry:c,symbol:l}]}]}}static fromCIMHatchFill(e,n){let r=n*(e.separation??v.CIMHatchFill.separation),i=r/2,a=t(e.lineSymbol);a.symbolLayers?.forEach(e=>{switch(e.type){case`CIMSolidStroke`:e.width!=null&&(e.width*=n),e.effects?.forEach(e=>{e.type===`CIMGeometricEffectDashes`&&(e.dashTemplate=e.dashTemplate?.map(e=>e*n))});break;case`CIMVectorMarker`:{e.size!=null&&(e.size*=n);let t=e.markerPlacement;t!=null&&`placementTemplate`in t&&(t.placementTemplate=t.placementTemplate.map(e=>e*n));break}}});let o=this._getLineSymbolPeriod(a)||4;for(;o<4;)o*=2;let s=o/2;return{type:`CIMVectorMarker`,enable:!0,frame:{xmin:-s,xmax:s,ymin:-i,ymax:i},markerGraphics:[{type:`CIMMarkerGraphic`,geometry:{paths:[[[-s,0],[s,0]]]},symbol:a}],size:r}}static async normalizeSymbolAndFetchResources(e,t,n=null){if(!e)return;let r=[];if(`effects`in e&&e.effects)for(let t of e.effects)r.push(d(t));r.push(a(e));let i=e=>{if(e.effects)for(let t of e.effects)r.push(d(t));if(e.type===`CIMVectorMarker`){for(let t of e.markerGraphics)c(t.geometry)&&(t.geometry=l(t.geometry,{maxDeviation:.01}));e.markerPlacement&&r.push(f(e.markerPlacement))}`url`in e&&e.url&&r.push(t.fetchResource(e.url,{signal:n})),`symbol`in e&&r.push(a(e.symbol))};V(e,i),`haloSymbol`in e&&V(e.haloSymbol,i),await Promise.all(r);async function a(e){if(e.type!==`CIMTextSymbol`)return;let{fontFamilyName:n,fontStyleName:r}=e;if(n?.toLowerCase()===`calcitewebcoreicons`)return;let{style:i,weight:a}=y(r),o=x(e),s=new u({family:n,style:i,weight:a,decoration:o});try{await t.loadFont(s)}catch{P().error(`Unsupported font ${n} in CIM symbol`)}}}static _getLineSymbolPeriod(e){if(e){let t=this._getEffectsRepeat(e.effects);if(t)return t;if(e.symbolLayers){for(let t of e.symbolLayers)if(t){let e=this._getEffectsRepeat(t.effects);if(e)return e;switch(t.type){case`CIMCharacterMarker`:case`CIMPictureMarker`:case`CIMVectorMarker`:case`CIMObjectMarker3D`:case`CIMglTFMarker3D`:{let e=this._getPlacementRepeat(t.markerPlacement);if(e)return e}}}}}return 0}static _getEffectsRepeat(e){if(e){for(let t of e)if(t)switch(t.type){case`CIMGeometricEffectDashes`:{let e=t.dashTemplate;if(e&&e.length){let t=0;for(let n of e)t+=n;return e.length&1&&(t*=2),t}break}case`CIMGeometricEffectWave`:return t.period;default:P().error(`unsupported geometric effect type ${t.type}`)}}return 0}static _getPlacementRepeat(e){if(e)switch(e.type){case`CIMMarkerPlacementAlongLineSameSize`:case`CIMMarkerPlacementAlongLineRandomSize`:case`CIMMarkerPlacementAlongLineVariableSize`:{let t=e.placementTemplate;if(t&&t.length){let e=0;for(let n of t)e+=+n;return t.length&1&&(e*=2),e}break}}return 0}static fromCIMInsidePolygon(e){let t=e.markerPlacement,n={...e};n.markerPlacement=null,n.anchorPoint=null;let a=Math.abs(t.stepX),o=Math.abs(t.stepY),s=(t.randomness??100)/100,c,l,u,d;if(t.gridType===`Random`){let e=i(D),n=Math.max(Math.floor(e/a),1),f=Math.max(Math.floor(e/o),1);c=n*a/2,l=f*o/2,u=l*2;let p=new r(t.seed),m=s*a/1.5,h=s*o/1.5;d=[];for(let e=0;e<n;e++)for(let t=0;t<f;t++){let n=e*a-c+m*(.5-p.getFloat()),r=t*o-l+h*(.5-p.getFloat());d.push({x:n,y:r}),e===0&&d.push({x:n+c*2,y:r}),t===0&&d.push({x:n,y:r+l*2})}}else t.shiftOddRows===!0?(c=a/2,l=o,u=o*2,d=[{x:-c,y:0},{x:c,y:0},{x:0,y:l},{x:0,y:-l}]):(c=a/2,l=o/2,u=o,d=[{x:-a,y:0},{x:0,y:-o},{x:-a,y:-o},{x:0,y:0},{x:a,y:0},{x:0,y:o},{x:a,y:o},{x:-a,y:o},{x:a,y:-o}]);let f=d.map(e=>({type:`CIMMarkerGraphic`,geometry:e,symbol:{type:`CIMPointSymbol`,symbolLayers:[n]}}));return{type:`CIMVectorMarker`,enable:!0,frame:{xmin:-c,xmax:c,ymin:-l,ymax:l},markerGraphics:f,size:u}}}function V(e,t){if(e)switch(e.type){case`CIMPointSymbol`:case`CIMLineSymbol`:case`CIMPolygonSymbol`:{let n=e.symbolLayers;if(!n)return;for(let e of n)if(t(e),e.type===`CIMVectorMarker`){let n=e.markerGraphics;if(!n)continue;for(let e of n)if(e){let n=e.symbol;n&&V(n,t)}}break}}}const H=e=>{if(!e)return`Butt`;switch(e){case`butt`:return`Butt`;case`square`:return`Square`;case`round`:return`Round`}},U=e=>{if(!e)return`Miter`;switch(e){case`miter`:return`Miter`;case`round`:return`Round`;case`bevel`:return`Bevel`}},W=e=>{if(e==null)return`Center`;switch(e){case`left`:return`Left`;case`right`:return`Right`;case`center`:return`Center`;case`justify`:return`Justify`}},G=e=>{if(e==null)return`Center`;switch(e){case`baseline`:return`Baseline`;case`top`:return`Top`;case`middle`:return`Center`;case`bottom`:return`Bottom`}},K=e=>{if(!e)return[0,0,0,0];let{r:t,g:n,b:r,a:i}=e;return[t,n,r,i*255]},q=(e,t)=>{let n=J(t),r=Y(e);return n&&r?`${n}-${r}`:`${n}${r}`},J=e=>{if(!e)return``;switch(e.toLowerCase()){case`bold`:case`bolder`:return`bold`}return``},Y=e=>{if(!e)return``;switch(e.toLowerCase()){case`italic`:case`oblique`:return`italic`}return``},X=(e,t)=>{let n=.001,r=t===`butt`;switch(e){case`dash`:case`esriSLSDash`:return r?[4,3]:[3,4];case`dash-dot`:case`esriSLSDashDot`:return r?[4,3,1,3]:[3,4,n,4];case`dot`:case`esriSLSDot`:return r?[1,3]:[n,4];case`long-dash`:case`esriSLSLongDash`:return r?[8,3]:[7,4];case`long-dash-dot`:case`esriSLSLongDashDot`:return r?[8,3,1,3]:[7,4,n,4];case`long-dash-dot-dot`:case`esriSLSDashDotDot`:return r?[8,3,1,3,1,3]:[7,4,n,4,n,4];case`short-dash`:case`esriSLSShortDash`:return r?[4,1]:[3,2];case`short-dash-dot`:case`esriSLSShortDashDot`:return r?[4,1,1,1]:[3,2,n,2];case`short-dash-dot-dot`:case`esriSLSShortDashDotDot`:return r?[4,1,1,1,1,1]:[3,2,n,2,n,2];case`short-dot`:case`esriSLSShortDot`:return r?[1,1]:[n,2];case`solid`:case`esriSLSSolid`:case`none`:return P().error(`Unexpected: style does not require rasterization`),[0,0];default:return P().error(`Tried to rasterize SLS, but found an unexpected style: ${e}!`),[0,0]}};function Z(e){return e.symbolLayers!==void 0}const Q=(e,t=100)=>{let n=t/2,r,i,a=e;if(a===`circle`||a===`esriSMSCircle`){let e=Math.acos(1-.25/n),t=Math.ceil(A/e/4);t===0&&(t=1),e=j/t,t*=4;let a=[];a.push([n,0]);for(let r=1;r<t;r++)a.push([n*Math.cos(r*e),-n*Math.sin(r*e)]);a.push([n,0]),r={rings:[a]},i={xmin:-n,ymin:-n,xmax:n,ymax:n}}else if(a===`cross`||a===`esriSMSCross`)r={paths:[[[0,n],[0,-n]],[[n,0],[-n,0]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n};else if(a===`diamond`||a===`esriSMSDiamond`)r={rings:[[[-n,0],[0,n],[n,0],[0,-n],[-n,0]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n};else if(a===`square`||a===`esriSMSSquare`)r={rings:[[[-n,-n],[-n,n],[n,n],[n,-n],[-n,-n]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n};else if(a===`x`||a===`esriSMSX`)r={paths:[[[n,n],[-n,-n]],[[n,-n],[-n,n]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n};else if(a===`triangle`||a===`esriSMSTriangle`){let e=t*.5773502691896257,n=-e,a=2/3*t,o=a-t;r={rings:[[[n,o],[0,a],[e,o],[n,o]]]},i={xmin:n,ymin:o,xmax:e,ymax:a}}else a===`arrow`&&(r={rings:[[[-50,50],[50,0],[-50,-50],[-33,-20],[-33,20],[-50,50]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n});return[i,r]},te=e=>e===`vertical`||e===`horizontal`||e===`cross`||e===`esriSFSCross`||e===`esriSFSVertical`||e===`esriSFSHorizontal`;function $(e){if(!e)return null;let t=null,{cap:n,color:r,join:i,miterLimit:a,style:o,width:s}=e;return o!==`solid`&&o!==`none`&&o!==`esriSLSSolid`&&o!==`esriSLSNull`&&(t=[{type:`CIMGeometricEffectDashes`,dashTemplate:X(o,n),lineDashEnding:`NoConstraint`,scaleDash:!0,offsetAlongLine:null}]),{type:`CIMSolidStroke`,color:o!==`esriSLSNull`&&o!==`none`?K(r):[0,0,0,0],capStyle:H(n),joinStyle:U(i),miterLimit:a,width:s,effects:t}}export{B as CIMSymbolHelper,R as CIMSymbolInflatedSizeHelper,H as capTypeToEnum,V as forEachSymbolLayer,X as slsDashToTemplateArray,F as symbolToCIM};
|
|
2
|
+
import{bidiText as e}from"../../core/BidiText.js";import"../../core/has.js";import{clone as t}from"../../core/lang.js";import n from"../../core/Logger.js";import{isAbortError as r}from"../../core/promiseUtils.js";import i from"../../core/RandomLCG.js";import{px2pt as a}from"../../core/screenUtils.js";import{create as o,expandPointInPlace as s}from"../../geometry/support/aaBoundingRect.js";import{getBoundsXY as c}from"../../geometry/support/boundsUtils.js";import{isCurvedGeometry as l}from"../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as u}from"../../geometry/support/curves/densifyCurvedGeometry.js";import d from"../Font.js";import{loadGeometryOperatorsForEffect as f,loadGeometryOperatorsForPlacement as p}from"./CIMEffects.js";import{Placement as m}from"./CIMPlacements.js";import{EnvDrawHelper as h,CanvasDrawHelper as g,Transformation as _,lineGapType2LineHeight as v}from"./CIMSymbolDrawHelper.js";import{defaultCIMValues as y}from"./defaultCIMValues.js";import{fromCIMFontStyle as b}from"./fromCIMFontStyle.js";import{OverrideHelper as x}from"./OverrideHelper.js";import{getNumericValue as S,fromCIMFontDecoration as C,getEffectsInflateSize as w}from"./utils.js";import{defaultPolylineSymbol2D as T}from"../support/defaults.js";import{cInfinity as E}from"../../views/2d/engine/vectorTiles/GeometryUtils.js";import{magicLabelLineHeight as D,glyphSize as O,randomInsidePolygonTextureSize as k}from"../../views/2d/engine/webgl/definitions.js";import{shapeTextResource as A}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";import{roundPtToWholePixel as ee,getLineWidth as j}from"../../views/2d/layers/graphics/graphicsUtils.js";const M=Math.PI,N=M/2,P=Math.PI/180,F=96/72,I=()=>n.getLogger(`esri.symbols.cim.CIMSymbolHelper`);function L(e){let t;switch(e.type){case`cim`:return e.data;case`web-style`:return e;case`simple-marker`:{let n=V.fromSimpleMarker(e);if(!n)throw Error(`InternalError: Cannot convert symbol to CIM`);t=n;break}case`picture-marker`:t=V.fromPictureMarker(e);break;case`simple-line`:t=V.fromSimpleLineSymbol(e);break;case`simple-fill`:t=V.fromSimpleFillSymbol(e);break;case`picture-fill`:t=V.fromPictureFillSymbol(e);break;case`text`:t=V.fromTextSymbol(e)}return{type:`CIMSymbolReference`,symbol:t}}async function te(e,t,n,i,a){let o,s=L(e);if(s.type===`web-style`)try{let e=L(await s.fetchSymbol({acceptedFormats:[`cim`,`web`]}));if(e.type===`web-style`)return null;o=e}catch(e){return r(e),null}else o=s;return x.resolveSymbolOverrides(o,t,n,null,i,null,a)}function R(e,t,n){switch(t.type){case`CIMSymbolReference`:return R(e,t.symbol,n);case`CIMPointSymbol`:n??={x:0,y:0},e.drawSymbol(t,n);break;case`CIMLineSymbol`:n??={paths:[[[0,0],[10,0]]]},e.drawSymbol(t,n);break;case`CIMPolygonSymbol`:n??={rings:[[[0,0],[0,10],[10,10],[10,0],[0,0]]]},e.drawSymbol(t,n);break;case`CIMTextSymbol`:e.drawSymbol(t,{x:0,y:0});break;case`CIMVectorMarker`:{let n=new m;e.drawMarker(t,n);break}}return e.envelope()}function ne(e){if(!e)return 0;switch(e.type){case`CIMMarkerPlacementAlongLineSameSize`:case`CIMMarkerPlacementAlongLineRandomSize`:case`CIMMarkerPlacementAtExtremities`:case`CIMMarkerPlacementAtMeasuredUnits`:case`CIMMarkerPlacementAtRatioPositions`:case`CIMMarkerPlacementOnLine`:case`CIMMarkerPlacementOnVertices`:return Math.abs(e.offset??0);default:return 0}}class z{static getSymbolInflateSize(e,t,n,r,i){return e||=[0,0,0,0],t?this._getInflateSize(e,t,n,r,i):e}static safeSize(e){let t=Math.max(Math.abs(e[0]),Math.abs(e[2])),n=Math.max(Math.abs(e[1]),Math.abs(e[3]));return Math.sqrt(t*t+n*n)}static getPointSymbolHaloPadding(e,t){let n=S(e.haloSize);if(n<=0||!e.haloSymbol?.symbolLayers?.some(e=>e.enable!==!1))return 0;let r=this.getSymbolInflateSize([0,0,0,0],e.haloSymbol,t,0,null);return n+this.safeSize(r)}static _vectorMarkerBounds(e,t,n,r){let i=!0,a=o();if(t?.markerGraphics)for(let o of t.markerGraphics){let t=[0,0,0,0];o.geometry&&(c(a,o.geometry),t[0]=0,t[1]=0,t[2]=0,t[3]=0,this.getSymbolInflateSize(t,o.symbol,n,0,r),a[0]+=t[0],a[1]+=t[1],a[2]+=t[2],a[3]+=t[3],i?(e[0]=a[0],e[1]=a[1],e[2]=a[2],e[3]=a[3],i=!1):(e[0]=Math.min(e[0],a[0]),e[1]=Math.min(e[1],a[1]),e[2]=Math.max(e[2],a[2]),e[3]=Math.max(e[3],a[3])))}return e}static _getInflateSize(e,t,n,r,i){if(re(t)){let a=this._getLayersInflateSize(e,t.symbolLayers,n,r,i),o=w(t.effects);if(o>0&&(a[0]-=o,a[1]-=o,a[2]+=o,a[3]+=o),t.type===`CIMPointSymbol`){let e=this.getPointSymbolHaloPadding(t,n);e>0&&(a[0]-=e,a[1]-=e,a[2]+=e,a[3]+=e)}return a}return this._getTextInflatedSize(e,t,i)}static _getLayersInflateSize(e,t,n,r,i){let a=!0;if(!t)return e;for(let c of t){if(!c)continue;let t=[0,0,0,0];switch(c.type){case`CIMSolidFill`:case`CIMPictureFill`:case`CIMHatchFill`:case`CIMGradientFill`:break;case`CIMSolidStroke`:case`CIMPictureStroke`:case`CIMGradientStroke`:{let e=c,n=e.width;n!=null&&(e.capStyle===`Square`||e.joinStyle===`Miter`?n/=1.4142135623730951:n/=2,t[0]=-n,t[1]=-n,t[2]=n,t[3]=n);break}case`CIMCharacterMarker`:case`CIMVectorMarker`:case`CIMPictureMarker`:{let e=c;if(c.type===`CIMVectorMarker`){let e=c;if(t=this._vectorMarkerBounds(t,e,n,i),e.frame){let n=(e.frame.xmin+e.frame.xmax)/2,r=(e.frame.ymin+e.frame.ymax)/2;if(t[0]-=n,t[1]-=r,t[2]-=n,t[3]-=r,e.size!=null){let n=e.size/(e.frame.ymax-e.frame.ymin);t[0]*=n,t[1]*=n,t[2]*=n,t[3]*=n}}}else if(c.type===`CIMPictureMarker`){let r=c,i=n.getResource(r.url),a=1;if(i!=null&&i.height&&(a=i.width/i.height),e.size!=null){let n=e.size/2,i=e.size*a*(r.scaleX??1)/2;t=[-i,-n,i,n]}}else if(e.size!=null){let n=e.size/2;t=[-n,-n,n,n]}if(e.anchorPoint){let n,r;e.anchorPointUnits===`Absolute`?(n=e.anchorPoint.x,r=e.anchorPoint.y):(n=e.anchorPoint.x*(t[2]-t[0]),r=e.anchorPoint.y*(t[3]-t[1]));let i=1.25*Math.sqrt(n*n+r*r);t[0]-=i,t[1]-=i,t[2]+=i,t[3]+=i}let a=S(e.rotation);if(e.rotateClockwise&&(a=-a),r&&(a-=r),a){let e=P*a,n=Math.cos(e),r=Math.sin(e),i=o([E,E,-E,-E]);s(i,[t[0]*n-t[1]*r,t[0]*r+t[1]*n]),s(i,[t[0]*n-t[3]*r,t[0]*r+t[3]*n]),s(i,[t[2]*n-t[1]*r,t[2]*r+t[1]*n]),s(i,[t[2]*n-t[3]*r,t[2]*r+t[3]*n]),t=i}let l=S(e.offsetX),u=S(e.offsetY);if(r){let e=P*r,t=Math.cos(e),n=Math.sin(e),i=l*t-u*n,a=l*n+u*t;l=i,u=a}t[0]+=l,t[1]+=u,t[2]+=l,t[3]+=u;let d=ne(e.markerPlacement);d>0&&(t[0]-=d,t[1]-=d,t[2]+=d,t[3]+=d);break}}let l=w(c.effects);l>0&&(t[0]-=l,t[1]-=l,t[2]+=l,t[3]+=l),a?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],a=!1):(e[0]=Math.min(e[0],t[0]),e[1]=Math.min(e[1],t[1]),e[2]=Math.max(e[2],t[2]),e[3]=Math.max(e[3],t[3]))}return e}static _getTextInflatedSize(e,t,n){let r=ee(t.height??y.CIMTextSymbol.height);if(e[0]=-r/2,e[1]=-r/2,e[2]=r/2,e[3]=r/2,!n)return e;let i=n.get(t);if(!i||!B(i.glyphMosaicItems))return e;let{lineGapType:a,lineGap:o}=t,s=a?v(a,o??0,r):0,c=t.horizontalAlignment??y.CIMTextSymbol.horizontalalignment,l=t.verticalAlignment??y.CIMTextSymbol.verticalalignment,u=t.callout?.type===`CIMBackgroundCallout`,d=A(i.glyphMosaicItems,{scale:r/O,angle:S(t.angle),xOffset:S(t.offsetX),yOffset:S(t.offsetY),horizontalAlignment:c,verticalAlignment:l,maxLineWidth:j(t.lineWidth),lineHeight:D*Math.max(.25,Math.min(s||1,4)),decoration:t.font.decoration||`none`,useCIMAngleBehavior:!0,hasBackground:u}).boundsT,f=Math.sqrt(d.width*d.width+d.height*d.height);return e[0]-=d.x+f,e[1]-=d.y-f,e[2]+=d.x+f,e[3]+=-d.y+f,e}}function B(e){return e.type===`glyphs`?e.glyphs.length>0:e.runs.some(e=>e.glyphs.glyphs.length>0)}class V{static getEnvelope(e,t,n,r){if(!e)return null;let i=new h(n,r);if(Array.isArray(e)){let n;for(let r of e)n?n.union(R(i,r,t)):n=R(i,r,t);return n}return R(i,e,t)}static expandEnvelopeForPointSymbolHalo(e,t,n,r=0){let i=z.getPointSymbolHaloPadding(t,n);if(i<=0)return;let a=i+r;e.x-=a,e.y-=a,e.width+=2*a,e.height+=2*a}static getTextureInfo(e,t,n,r,i,a=0){let o=r??this.getEnvelope(e,null,t);if(!o)return[0,0,0,0,1];let s=Math.max(o.width,o.height)*F,c=i==null?1:Math.max(i/s,1);c*=F,o.x*=c,o.y*=c,o.width*=c,o.height*=c,o.width=Math.max(Math.ceil(o.x+o.width)-Math.floor(o.x),1)-1,o.height=Math.max(Math.ceil(o.y+o.height)-Math.floor(o.y),1)-1;let l=o.x+o.width*.5,u=o.y+o.height*.5;if(l+=o.x-Math.floor(o.x),u+=o.y-Math.floor(o.y),!r){let e=Math.ceil(a*c);o.width+=n+2*e,o.height+=n+2*e,l+=n/2,u+=n/2}return[o.width,o.height,l,u,c]}static getTextureAnchor(e,t,n,r=0){let[i,a,o,s,c]=this.getTextureInfo(e,t,2,null,n,r);return[-o/i,-s/a,a/c*F]}static rasterize(e,t,n,r,i=!0,a,o=0){let[s,c,l,u,d]=this.getTextureInfo(t,r,2,n,a,o);e.width=s,e.height=c;let f=e.getContext(`2d`,{willReadFrequently:!0}),p=_.createScale(d,-d);p.translate(s*.5-l,c*.5+u);let h=new g(f,r,p);switch(t.type){case`CIMPointSymbol`:h.drawSymbol(t,{type:`point`,x:0,y:0});break;case`CIMVectorMarker`:{let e=new m;h.drawMarker(t,e);break}}let v=f.getImageData(0,0,e.width,e.height),y=new Uint8Array(v.data);if(i){let e;for(let t=0;t<y.length;t+=4)e=y[t+3]/255,y[t]=y[t]*e,y[t+1]=y[t+1]*e,y[t+2]=y[t+2]*e}return[y,e.width,e.height,-l/s,-u/c,d]}static fromTextSymbol(e){let{text:t}=e;return{type:`CIMPointSymbol`,symbolLayers:[{type:`CIMVectorMarker`,enable:!0,anchorPointUnits:`Relative`,dominantSizeAxis3D:`Y`,size:10,billboardMode3D:`FaceNearPlane`,frame:{xmin:-5,ymin:-5,xmax:5,ymax:5},markerGraphics:[{type:`CIMMarkerGraphic`,geometry:{x:0,y:0},symbol:V.createCIMTextSymbolfromTextSymbol(e),textString:t}],scaleSymbolsProportionally:!0,respectFrame:!0}],scaleX:1,angleAlignment:`Display`}}static fromPictureFillSymbol(e){let{height:t,outline:n,width:r,xoffset:i,xscale:a,yoffset:o,yscale:s}=e,c=[],l={type:`CIMPolygonSymbol`,symbolLayers:c};if(n){let e=$(n);e&&c.push(e)}let u=e.url;e.type===`esriPFS`&&e.imageData&&(u=e.imageData);let d=`angle`in e?e.angle??0:0,f=(r??0)*(a||1),p=(t??0)*(s||1);return c.push({type:`CIMPictureFill`,enable:!0,invertBackfaceTexture:!1,scaleX:1,textureFilter:`Picture`,tintColor:null,url:u,height:p,width:f,offsetX:S(i),offsetY:S(o),rotation:S(-d),colorSubstitutions:null}),l}static fromSimpleFillSymbol(e){let{color:n,style:r,outline:i}=e,o=[],s={type:`CIMPolygonSymbol`,symbolLayers:o};if(i){let e=$(i);e&&o.push(e)}if(r&&r!==`solid`&&r!==`none`&&r!==`esriSFSSolid`&&r!==`esriSFSNull`){let e={type:`CIMLineSymbol`,symbolLayers:[{type:`CIMSolidStroke`,color:q(n),capStyle:`Butt`,joinStyle:`Miter`,width:.75}]},i=0,s=a(ie(r)?8:10);switch(r){case`vertical`:case`esriSFSVertical`:i=90;break;case`forward-diagonal`:case`esriSFSForwardDiagonal`:i=-45;break;case`backward-diagonal`:case`esriSFSBackwardDiagonal`:i=45;break;case`cross`:case`esriSFSCross`:i=0;break;case`diagonal-cross`:case`esriSFSDiagonalCross`:i=-45}o.push({type:`CIMHatchFill`,lineSymbol:e,offsetX:0,offsetY:0,rotation:i,separation:s}),r===`cross`||r===`esriSFSCross`?o.push({type:`CIMHatchFill`,lineSymbol:t(e),offsetX:0,offsetY:0,rotation:90,separation:s}):(r===`diagonal-cross`||r===`esriSFSDiagonalCross`)&&o.push({type:`CIMHatchFill`,lineSymbol:t(e),offsetX:0,offsetY:0,rotation:45,separation:s})}else r&&(r===`solid`||r===`esriSFSSolid`)&&o.push({type:`CIMSolidFill`,enable:!0,color:q(n)});return s}static fromSimpleLineSymbol(e){let{cap:t,color:n,join:r,marker:i,miterLimit:a,style:o,width:s}=e,c=o!==`solid`&&o!==`none`&&o!==`esriSLSSolid`&&o!==`esriSLSNull`,l=null;c&&(l=[{type:`CIMGeometricEffectDashes`,dashTemplate:Z(o,t),lineDashEnding:`NoConstraint`,scaleDash:!0,offsetAlongLine:null}]);let u=[];if(i){let e;switch(i.placement){case`begin-end`:e=`Both`;break;case`begin`:e=`JustBegin`;break;case`end`:e=`JustEnd`;break;default:e=`None`}let t=V.fromSimpleMarker(i,s,n).symbolLayers[0];t.markerPlacement={type:`CIMMarkerPlacementAtExtremities`,placePerPart:!1,angleToLine:!0,keepUpright:!1,offset:0,extremityPlacement:e,offsetAlongLine:0},u.push(t)}return u.push({type:`CIMSolidStroke`,color:o!==`none`&&o!==`esriSLSNull`?q(n):[0,0,0,0],capStyle:U(t),joinStyle:W(r),miterLimit:a,width:s,effects:l}),{type:`CIMLineSymbol`,symbolLayers:u}}static fromPictureMarker(e){let{angle:t,height:n,width:r,xoffset:i,yoffset:a}=e,o=e.url;return e.type===`esriPMS`&&e.imageData&&(o=e.imageData),{type:`CIMPointSymbol`,symbolLayers:[{type:`CIMPictureMarker`,invertBackfaceTexture:!1,scaleX:1,textureFilter:`Picture`,tintColor:null,url:o,size:n,width:r,offsetX:S(i),offsetY:S(a),rotation:S(-t)}]}}static createCIMTextSymbolfromTextSymbol(t){let{angle:n,color:r,font:i,haloColor:a,haloSize:o,horizontalAlignment:s,kerning:c,lineWidth:l,text:u,verticalAlignment:d,xoffset:f,yoffset:p,backgroundColor:m,borderLineColor:h,borderLineSize:g}=t,_,v,y,b,x,C;i&&(_=i.family,v=i.style,y=i.weight,b=i.size,x=i.decoration);let w=!1;return u&&(w=e(u)[1]),(m||g)&&(C={type:`CIMBackgroundCallout`,margin:null,backgroundSymbol:{type:`CIMPolygonSymbol`,symbolLayers:[{type:`CIMSolidFill`,enable:!0,color:q(m)},{type:`CIMSolidStroke`,enable:!0,color:q(h),width:g??0}]},accentBarSymbol:null,gap:null,leaderLineSymbol:null,lineStyle:null}),{type:`CIMTextSymbol`,angle:n,blockProgression:2,depth3D:1,extrapolateBaselines:!0,fontEffects:0,fontEncoding:1,fontFamilyName:_||`Arial`,fontStyleName:J(v,y),fontType:0,haloSize:o,height:b,hinting:1,horizontalAlignment:G(s??`center`),kerning:c,letterWidth:100,ligatures:!0,lineGapType:`Multiple`,lineWidth:l,offsetX:S(f),offsetY:S(p),strikethrough:x===`line-through`,underline:x===`underline`,symbol:{type:`CIMPolygonSymbol`,symbolLayers:[{type:`CIMSolidFill`,enable:!0,color:q(r)}]},haloSymbol:{type:`CIMPolygonSymbol`,symbolLayers:[{type:`CIMSolidFill`,enable:!0,color:q(a)}]},shadowColor:[0,0,0,255],shadowOffsetX:1,shadowOffsetY:1,textCase:`Normal`,textDirection:+!!w,verticalAlignment:K(d??`baseline`),verticalGlyphOrientation:0,wordSpacing:100,billboardMode3D:2,callout:C}}static createPictureMarkerRasterizationParam(e){let{angle:t,height:n,width:r,xoffset:i,yoffset:a}=e,o=e.url??e.source?.url??e.source?.imageData;return o?{type:`sprite-rasterization-param`,overrides:[],resource:{type:`CIMPictureMarker`,enable:!0,invertBackfaceTexture:!1,scaleX:1,textureFilter:`Picture`,tintColor:null,url:o,size:n,width:r,offsetX:S(i),offsetY:S(a),rotation:S(-t)}}:null}static createPictureFillRasterizationParam(e){let{width:t,height:n,xoffset:r,yoffset:i,url:a}=e;return a?{type:`sprite-rasterization-param`,overrides:[],resource:{type:`CIMPictureFill`,enable:!0,scaleX:1,textureFilter:`Picture`,tintColor:null,url:a,width:t,height:n,offsetX:S(r),offsetY:S(i),rotation:0}}:null}static fromSimpleMarker(e,t,n){let{style:r}=e,i=e.color??n;if(r===`path`||r===`esriSMSPath`){let t=[];if(`outline`in e&&e.outline){let n=e.outline;t.push({type:`CIMSolidStroke`,enable:!0,width:n.width,color:q(n.color),path:e.path})}t.push({type:`CIMSolidFill`,enable:!0,color:q(i),path:e.path});let[n,r]=Q(`square`);return{type:`CIMPointSymbol`,symbolLayers:[{type:`CIMVectorMarker`,enable:!0,rotation:-S(e.angle),size:S(e.size||6),offsetX:S(e.xoffset),offsetY:S(e.yoffset),scaleSymbolsProportionally:!1,frame:n,markerGraphics:[{type:`CIMMarkerGraphic`,geometry:r,symbol:{type:`CIMPolygonSymbol`,symbolLayers:t}}]}]}}let a=[],o=e.size,s,c;if(`outline`in e&&e.outline&&e.outline.style!==`none`&&e.outline.style!==`esriSLSNull`){let t=e.outline,n=t.style!==`solid`&&t.style!==`esriSLSSolid`;[s,c]=n?Q(r,e.size):Q(r);let i=t.width??T.width;if(n){let t=i/e.size,n=(s.xmax-s.xmin)*t/2,r=(s.ymax-s.ymin)*t/2;s.xmin-=n,s.xmax+=n,s.ymin-=r,s.ymax+=r,o&&(o+=i)}let l=(e.style===`cross`||e.style===`x`)&&e?.outline.style!==`dot`&&e?.outline.style!==`short-dot`?`FullPattern`:`HalfGap`,u=n?[{type:`CIMGeometricEffectAddControlPoints`},{type:`CIMGeometricEffectDashes`,dashTemplate:Z(t.style,null).map(e=>t.width&&t.width>0?e*t.width:e),lineDashEnding:l,controlPointEnding:`FullPattern`}]:void 0;a.push({type:`CIMSolidStroke`,capStyle:n?`Round`:`Butt`,enable:!0,width:i,color:q(t.color),effects:u})}else t&&e.type===`line-marker`&&(e.style===`cross`||e.style===`x`)?([s,c]=Q(r),a.push({type:`CIMSolidStroke`,enable:!0,width:t,color:q(i)})):[s,c]=Q(r);a.push({type:`CIMSolidFill`,enable:!0,color:q(i)});let l={type:`CIMPolygonSymbol`,symbolLayers:a};return{type:`CIMPointSymbol`,symbolLayers:[{type:`CIMVectorMarker`,enable:!0,rotation:S(-e.angle),size:S(o||t*6),offsetX:S(e.xoffset),offsetY:S(e.yoffset),scaleSymbolsProportionally:!1,frame:s,markerGraphics:[{type:`CIMMarkerGraphic`,geometry:c,symbol:l}]}]}}static fromCIMHatchFill(e,n){let r=n*(e.separation??y.CIMHatchFill.separation),i=r/2,a=t(e.lineSymbol);a.symbolLayers?.forEach(e=>{switch(e.type){case`CIMSolidStroke`:e.width!=null&&(e.width*=n),e.effects?.forEach(e=>{e.type===`CIMGeometricEffectDashes`&&(e.dashTemplate=e.dashTemplate?.map(e=>e*n))});break;case`CIMVectorMarker`:{e.size!=null&&(e.size*=n);let t=e.markerPlacement;t!=null&&`placementTemplate`in t&&(t.placementTemplate=t.placementTemplate.map(e=>e*n));break}}});let o=this._getLineSymbolPeriod(a)||4;for(;o<4;)o*=2;let s=o/2;return{type:`CIMVectorMarker`,enable:!0,frame:{xmin:-s,xmax:s,ymin:-i,ymax:i},markerGraphics:[{type:`CIMMarkerGraphic`,geometry:{paths:[[[-s,0],[s,0]]]},symbol:a}],size:r}}static async normalizeSymbolAndFetchResources(e,t,n=null){if(!e)return;let r=[];if(`effects`in e&&e.effects)for(let t of e.effects)r.push(f(t));r.push(a(e));let i=e=>{if(e.effects)for(let t of e.effects)r.push(f(t));if(e.type===`CIMVectorMarker`){for(let t of e.markerGraphics)l(t.geometry)&&(t.geometry=u(t.geometry,{maxDeviation:.01}));e.markerPlacement&&r.push(p(e.markerPlacement))}`url`in e&&e.url&&r.push(t.fetchResource(e.url,{signal:n})),`symbol`in e&&r.push(a(e.symbol))};H(e,i),`haloSymbol`in e&&H(e.haloSymbol,i),await Promise.all(r);async function a(e){if(e.type!==`CIMTextSymbol`)return;let{fontFamilyName:n,fontStyleName:r}=e;if(n?.toLowerCase()===`calcitewebcoreicons`)return;let{style:i,weight:a}=b(r),o=C(e),s=new d({family:n,style:i,weight:a,decoration:o});try{await t.loadFont(s)}catch{I().error(`Unsupported font ${n} in CIM symbol`)}}}static _getLineSymbolPeriod(e){if(e){let t=this._getEffectsRepeat(e.effects);if(t)return t;if(e.symbolLayers){for(let t of e.symbolLayers)if(t){let e=this._getEffectsRepeat(t.effects);if(e)return e;switch(t.type){case`CIMCharacterMarker`:case`CIMPictureMarker`:case`CIMVectorMarker`:case`CIMObjectMarker3D`:case`CIMglTFMarker3D`:{let e=this._getPlacementRepeat(t.markerPlacement);if(e)return e}}}}}return 0}static _getEffectsRepeat(e){if(e){for(let t of e)if(t)switch(t.type){case`CIMGeometricEffectDashes`:{let e=t.dashTemplate;if(e&&e.length){let t=0;for(let n of e)t+=n;return e.length&1&&(t*=2),t}break}case`CIMGeometricEffectWave`:return t.period;default:I().error(`unsupported geometric effect type ${t.type}`)}}return 0}static _getPlacementRepeat(e){if(e)switch(e.type){case`CIMMarkerPlacementAlongLineSameSize`:case`CIMMarkerPlacementAlongLineRandomSize`:case`CIMMarkerPlacementAlongLineVariableSize`:{let t=e.placementTemplate;if(t&&t.length){let e=0;for(let n of t)e+=+n;return t.length&1&&(e*=2),e}break}}return 0}static fromCIMInsidePolygon(e){let t=e.markerPlacement,n={...e};n.markerPlacement=null,n.anchorPoint=null;let r=Math.abs(t.stepX),o=Math.abs(t.stepY),s=(t.randomness??100)/100,c,l,u,d;if(t.gridType===`Random`){let e=a(k),n=Math.max(Math.floor(e/r),1),f=Math.max(Math.floor(e/o),1);c=n*r/2,l=f*o/2,u=l*2;let p=new i(t.seed),m=s*r/1.5,h=s*o/1.5;d=[];for(let e=0;e<n;e++)for(let t=0;t<f;t++){let n=e*r-c+m*(.5-p.getFloat()),i=t*o-l+h*(.5-p.getFloat());d.push({x:n,y:i}),e===0&&d.push({x:n+c*2,y:i}),t===0&&d.push({x:n,y:i+l*2})}}else t.shiftOddRows===!0?(c=r/2,l=o,u=o*2,d=[{x:-c,y:0},{x:c,y:0},{x:0,y:l},{x:0,y:-l}]):(c=r/2,l=o/2,u=o,d=[{x:-r,y:0},{x:0,y:-o},{x:-r,y:-o},{x:0,y:0},{x:r,y:0},{x:0,y:o},{x:r,y:o},{x:-r,y:o},{x:r,y:-o}]);let f=d.map(e=>({type:`CIMMarkerGraphic`,geometry:e,symbol:{type:`CIMPointSymbol`,symbolLayers:[n]}}));return{type:`CIMVectorMarker`,enable:!0,frame:{xmin:-c,xmax:c,ymin:-l,ymax:l},markerGraphics:f,size:u}}}function H(e,t){if(e)switch(e.type){case`CIMPointSymbol`:case`CIMLineSymbol`:case`CIMPolygonSymbol`:{let n=e.symbolLayers;if(!n)return;for(let e of n)if(t(e),e.type===`CIMVectorMarker`){let n=e.markerGraphics;if(!n)continue;for(let e of n)if(e){let n=e.symbol;n&&H(n,t)}}break}}}const U=e=>{if(!e)return`Butt`;switch(e){case`butt`:return`Butt`;case`square`:return`Square`;case`round`:return`Round`}},W=e=>{if(!e)return`Miter`;switch(e){case`miter`:return`Miter`;case`round`:return`Round`;case`bevel`:return`Bevel`}},G=e=>{if(e==null)return`Center`;switch(e){case`left`:return`Left`;case`right`:return`Right`;case`center`:return`Center`;case`justify`:return`Justify`}},K=e=>{if(e==null)return`Center`;switch(e){case`baseline`:return`Baseline`;case`top`:return`Top`;case`middle`:return`Center`;case`bottom`:return`Bottom`}},q=e=>{if(!e)return[0,0,0,0];let{r:t,g:n,b:r,a:i}=e;return[t,n,r,i*255]},J=(e,t)=>{let n=Y(t),r=X(e);return n&&r?`${n}-${r}`:`${n}${r}`},Y=e=>{if(!e)return``;switch(e.toLowerCase()){case`bold`:case`bolder`:return`bold`}return``},X=e=>{if(!e)return``;switch(e.toLowerCase()){case`italic`:case`oblique`:return`italic`}return``},Z=(e,t)=>{let n=.001,r=t===`butt`;switch(e){case`dash`:case`esriSLSDash`:return r?[4,3]:[3,4];case`dash-dot`:case`esriSLSDashDot`:return r?[4,3,1,3]:[3,4,n,4];case`dot`:case`esriSLSDot`:return r?[1,3]:[n,4];case`long-dash`:case`esriSLSLongDash`:return r?[8,3]:[7,4];case`long-dash-dot`:case`esriSLSLongDashDot`:return r?[8,3,1,3]:[7,4,n,4];case`long-dash-dot-dot`:case`esriSLSDashDotDot`:return r?[8,3,1,3,1,3]:[7,4,n,4,n,4];case`short-dash`:case`esriSLSShortDash`:return r?[4,1]:[3,2];case`short-dash-dot`:case`esriSLSShortDashDot`:return r?[4,1,1,1]:[3,2,n,2];case`short-dash-dot-dot`:case`esriSLSShortDashDotDot`:return r?[4,1,1,1,1,1]:[3,2,n,2,n,2];case`short-dot`:case`esriSLSShortDot`:return r?[1,1]:[n,2];case`solid`:case`esriSLSSolid`:case`none`:return I().error(`Unexpected: style does not require rasterization`),[0,0];default:return I().error(`Tried to rasterize SLS, but found an unexpected style: ${e}!`),[0,0]}};function re(e){return e.symbolLayers!==void 0}const Q=(e,t=100)=>{let n=t/2,r,i,a=e;if(a===`circle`||a===`esriSMSCircle`){let e=Math.acos(1-.25/n),t=Math.ceil(M/e/4);t===0&&(t=1),e=N/t,t*=4;let a=[];a.push([n,0]);for(let r=1;r<t;r++)a.push([n*Math.cos(r*e),-n*Math.sin(r*e)]);a.push([n,0]),r={rings:[a]},i={xmin:-n,ymin:-n,xmax:n,ymax:n}}else if(a===`cross`||a===`esriSMSCross`)r={paths:[[[0,n],[0,-n]],[[n,0],[-n,0]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n};else if(a===`diamond`||a===`esriSMSDiamond`)r={rings:[[[-n,0],[0,n],[n,0],[0,-n],[-n,0]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n};else if(a===`square`||a===`esriSMSSquare`)r={rings:[[[-n,-n],[-n,n],[n,n],[n,-n],[-n,-n]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n};else if(a===`x`||a===`esriSMSX`)r={paths:[[[n,n],[-n,-n]],[[n,-n],[-n,n]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n};else if(a===`triangle`||a===`esriSMSTriangle`){let e=t*.5773502691896257,n=-e,a=2/3*t,o=a-t;r={rings:[[[n,o],[0,a],[e,o],[n,o]]]},i={xmin:n,ymin:o,xmax:e,ymax:a}}else a===`arrow`&&(r={rings:[[[-50,50],[50,0],[-50,-50],[-33,-20],[-33,20],[-50,50]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n});return[i,r]},ie=e=>e===`vertical`||e===`horizontal`||e===`cross`||e===`esriSFSCross`||e===`esriSFSVertical`||e===`esriSFSHorizontal`;function $(e){if(!e)return null;let t=null,{cap:n,color:r,join:i,miterLimit:a,style:o,width:s}=e;return o!==`solid`&&o!==`none`&&o!==`esriSLSSolid`&&o!==`esriSLSNull`&&(t=[{type:`CIMGeometricEffectDashes`,dashTemplate:Z(o,n),lineDashEnding:`NoConstraint`,scaleDash:!0,offsetAlongLine:null}]),{type:`CIMSolidStroke`,color:o!==`esriSLSNull`&&o!==`none`?q(r):[0,0,0,0],capStyle:U(n),joinStyle:W(i),miterLimit:a,width:s,effects:t}}export{V as CIMSymbolHelper,z as CIMSymbolInflatedSizeHelper,U as capTypeToEnum,H as forEachSymbolLayer,te as resolveSymbolToCIM,Z as slsDashToTemplateArray,L as symbolToCIM};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{hittestMaskTextureSize as e}from"../../../definitions.js";import{equal as t,Float as n,min as r,max as i,ifElse as a,Bool as o,or as s,greaterThan as c,lessThan as l,Vec2 as u,negate as d,distance as f,texture2D as p,clamp as m,length as h,greaterThanEqual as g,not as _,Vec3 as v,dot as y,and as b,cond as x,normalize as S,abs as C,step as w,Mat3 as T}from"../../graph/glsl.js";import{noHit as
|
|
2
|
+
import{hittestMaskTextureSize as e}from"../../../definitions.js";import{equal as t,Float as n,min as r,max as i,ifElse as a,Bool as o,or as s,greaterThan as c,lessThan as l,Vec2 as u,negate as d,distance as f,texture2D as p,clamp as m,length as h,greaterThanEqual as g,not as _,Vec3 as v,dot as y,and as b,cond as x,normalize as S,abs as C,step as w,Mat3 as T,lessThanEqual as E}from"../../graph/glsl.js";import{noHit as D,trueHit as O,epsilonHitTest as k,candidateHit as A}from"./constants.js";import{cross2 as j}from"./utils.js";function M(e,t){return y(e,S(t))}function N(e,t,r){let i=r.subtract(t),a=M(e.subtract(t),i),o=m(a.divide(h(i)),new n(0),new n(1));return f(e,t.add(o.multiply(r.subtract(t))))}function P(e){let t=C(e);return w(t.x.add(t.y).add(t.z),new n(1.05))}function F(e,t,r,i){let a=new T(r.x.multiply(i.y).subtract(i.x.multiply(r.y)),i.x.multiply(t.y).subtract(t.x.multiply(i.y)),t.x.multiply(r.y).subtract(r.x.multiply(t.y)),r.y.subtract(i.y),i.y.subtract(t.y),t.y.subtract(r.y),i.x.subtract(r.x),t.x.subtract(i.x),r.x.subtract(t.x)),o=t.x.multiply(r.y.subtract(i.y)),s=r.x.multiply(i.y.subtract(t.y)),c=i.x.multiply(t.y.subtract(r.y)),l=o.add(s).add(c);return new n(1).divide(l).multiply(a.multiply(new v(1,e)))}function I(e,r,i,a){return t(P(F(e,r,i,a)),new n(1))}function L(e,t,i,a){let o=i.subtract(t),s=a.subtract(t),u=j(o,s),d=b(l(u,new n(k)),c(u,new n(-k)));return x([b(_(d),I(e.xy,t,i,a)),new n(-1)],[!0,()=>{let n=N(e,t,i),o=N(e,i,a),s=N(e,a,t);return r(r(n,o),s)}])}function R(e,t,n){let r=e.tile.getViewScreenMat3(e.view),i=r.multiply(new v(t.pos,1)),a=r.multiply(new v(n.nextPos1,1)),o=r.multiply(new v(n.nextPos2,1));return L(e.hittestRequest.position,i.xy,a.xy,o.xy)}function z(e,t,n){return f(e,n).subtract(t)}function B(e){return t(e.hittestType,new n(0))}function V(e){return t(e.hittestType,new n(1))}function H(e){return t(e.hittestType,new n(2))}function U(t,r,o){let{pos0:d,pos1:v,pos2:y}=t,b=d.add(v).add(y).divide(3),x=i(i(f(b,d),f(b,v)),f(b,y)),S=new u(b.x.divide(r.x),new n(1).subtract(b.y.divide(r.y))),C=s(s(l(S.x,new n(0)),c(S.x,new n(1))),s(l(S.y,new n(0)),c(S.y,new n(1)))),w=p(o,m(S,new u(0),new u(1))),T=S.subtract(w.xy).multiply(r),E=h(T),j=h(r.divide(e)).multiply(.5).add(k),M=c(w.b,new n(.5)),N=c(w.a,new n(.5)),P=g(x.add(j),E);return a(C,new n(D),a(_(N),a(M,new n(O),new n(D)),a(P,new n(A),a(M,new n(O),new n(D)))))}function W(e,t,r){let{pos0:i,pos1:l,pos2:d}=e,f=i.add(l).add(d).divide(3),m=new o(!1);for(let e of[f,i,l,d]){let i=new u(e.x.divide(t.x),new n(1).subtract(e.y.divide(t.y))),a=b(b(g(i.x,new n(0)),E(i.x,new n(1))),b(g(i.y,new n(0)),E(i.y,new n(1)))),o=c(p(r,i).b,new n(.5));m=s(m,b(a,o))}return a(m,new n(O),new n(D))}function G(e,t,o,s){let l=s.subtract(o).multiply(new n(.5)),d=o.add(s).multiply(new n(.5)),f=C(e.subtract(d)).subtract(l),p=new u(i(f.x,new n(0)),i(f.y,new n(0))),m=r(i(f.x,f.y),new n(0)),g=h(p).add(m).subtract(t);return a(c(g,new n(0)),new n(D),new n(O))}function K(t,r,i,o){let d=t,f=new u(d.x.divide(i.x),new n(1).subtract(d.y.divide(i.y))),v=s(s(l(f.x,new n(0)),c(f.x,new n(1))),s(l(f.y,new n(0)),c(f.y,new n(1)))),y=p(o,m(f,new u(0),new u(1))),b=f.subtract(y.xy).multiply(i),x=h(b),S=h(i.divide(e)).multiply(.5).add(k),C=c(y.b,new n(.5)),w=c(y.a,new n(.5)),T=g(r.add(S),x);return a(v,new n(D),a(_(w),a(C,new n(O),new n(D)),a(T,new n(A),a(C,new n(O),new n(D)))))}function q(e,t,r){let{pos0:o,pos1:s,pos2:u}=e,d=o.add(s).add(u).divide(3),p=i(f(d,o),i(f(d,s),f(d,u))),m=X(d,t,r);return a(l(m.add(p),new n(0)),new n(O),a(c(m.subtract(p),new n(0)),new n(D),new n(A)))}function J(e,{pos0:t,pos1:n,pos2:a},o,c){let d=y(t,e),f=y(n,e),p=y(a,e),m=r(d,r(f,p)),h=i(d,i(f,p)),g=y(o,e),_=y(new u(c.x,o.y),e),v=y(c,e),b=y(new u(o.x,c.y),e),x=r(r(g,_),r(v,b)),S=i(i(g,_),i(v,b));return s(l(h,x),l(S,m))}function Y(e,t,f){let{pos0:p,pos1:m,pos2:h}=e,g=r(p.x,r(m.x,h.x)),_=r(p.y,r(m.y,h.y)),v=i(p.x,i(m.x,h.x)),y=i(p.y,i(m.y,h.y)),b=t.x,x=f.x,S=t.y,C=f.y,w=a(s(l(v,b),s(c(g,x),s(l(y,S),c(_,C)))),new o(!1),new o(!0));return a(w,()=>{let r=p.subtract(m),i=m.subtract(h),o=h.subtract(p),c=new u(d(r.y),r.x),l=new u(d(i.y),i.x),g=new u(d(o.y),o.x);return a(s(J(c,e,t,f),J(l,e,t,f),J(g,e,t,f)),new n(D),new n(O))},new n(D))}function X(e,t,a){let o=new n(.5).multiply(t.add(a)),s=new n(.5).multiply(a.subtract(t)),c=C(e.subtract(o)).subtract(s);return h(i(c,new u(0))).add(r(i(c.x,c.y),new n(0)))}export{N as distPointSegment,L as distPointTriangle,z as hittestCircle,R as hittestFill,W as hittestLabelPolygon,q as hittestMarkerRect,U as hittestPolygon,K as hittestPolygonCircle,Y as hittestRect,G as hittestRectCircle,P as inTriangle,B as isPointHittest,H as isPolygonHittest,V as isRectHittest,M as projectScalar,F as xyToBarycentric};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e,__param as t}from"tslib";import{labelU16ZoomPrecisionFactor as n,labelPlacementOffsetPadding as r,packDegreesU8 as i}from"../../../definitions.js";import{location as a,option as o,uniform as s,texture as c,define as l,input as u,ComputeVertexInput as d}from"../../GraphShaderModule.js";import{Vec4 as f,Vec2 as p,Float as m,Sampler2D as h,mod as g,floor as _,step as v,and as y,lessThan as b,greaterThanEqual as x,Vec3 as S,Mat3 as ee,equal as C,ifElse as w,greaterThan as T,Bool as E,texture2D as D,smoothstep as O,Int as k,bitRShift as A,bitAnd as j}from"../../graph/glsl.js";import{FeatureVertexInput as M,AFeatureShader as te,FeatureFragmentInput as N}from"../shaders/AFeatureShader.js";import{bitsetTextIsBackground as
|
|
2
|
+
import{__decorate as e,__param as t}from"tslib";import{labelU16ZoomPrecisionFactor as n,labelPlacementOffsetPadding as r,packDegreesU8 as i}from"../../../definitions.js";import{location as a,option as o,uniform as s,texture as c,define as l,input as u,ComputeVertexInput as d}from"../../GraphShaderModule.js";import{Vec4 as f,Vec2 as p,Float as m,Sampler2D as h,mod as g,floor as _,step as v,and as y,lessThan as b,greaterThanEqual as x,Vec3 as S,Mat3 as ee,equal as C,ifElse as w,greaterThan as T,Bool as E,texture2D as D,smoothstep as O,Int as k,bitRShift as A,bitAnd as j}from"../../graph/glsl.js";import{FeatureVertexInput as M,AFeatureShader as te,FeatureFragmentInput as N}from"../shaders/AFeatureShader.js";import{bitsetTextIsBackground as ne,bitsetTextIsMapAligned as P,noHit as F,trueHit as re}from"../shaders/constants.js";import{isPointHittest as ie,distPointTriangle as ae,isRectHittest as I,hittestRect as L,isPolygonHittest as R,hittestLabelPolygon as z,hittestPolygon as B}from"../shaders/hittestUtils.js";import{MosaicInfo as V}from"../shaders/MosaicInfo.js";import{getBit as H}from"../shaders/utils.js";import{VisualVariableColor as U}from"../shaders/VisualVariableColor.js";import{VisualVariableOpacity as W}from"../shaders/VisualVariableOpacity.js";import{VisualVariableRotation as G}from"../shaders/VisualVariableRotation.js";import{VisualVariableSizeMinMaxValue as K}from"../shaders/VisualVariableSizeMinMaxValue.js";import{VisualVariableSizeScaleStops as q}from"../shaders/VisualVariableSizeScaleStops.js";import{VisualVariableSizeStops as oe}from"../shaders/VisualVariableSizeStops.js";import{VisualVariableSizeUnitValue as se}from"../shaders/VisualVariableSizeUnitValue.js";import{getVisualVariableSize as J,getVisualVariableRotation as Y}from"../shaders/vvUtils.js";const ce=1/i;class X extends M{}e([a(3,f)],X.prototype,`color`,void 0),e([a(4,p)],X.prototype,`offset`,void 0),e([a(5,p)],X.prototype,`textureUV`,void 0),e([a(6,f)],X.prototype,`fontAndReferenceSize`,void 0),e([a(7,f)],X.prototype,`outlineColor`,void 0),e([a(8,f)],X.prototype,`haloColor`,void 0),e([a(9,p)],X.prototype,`outlineAndHaloSize`,void 0),e([a(10,p)],X.prototype,`zoomRange`,void 0),e([a(11,m)],X.prototype,`clipAngle`,void 0),e([a(12,f)],X.prototype,`referenceSymbol`,void 0);class Z extends d{}e([a(13,p)],Z.prototype,`offsetNextVertex1`,void 0),e([a(14,p)],Z.prototype,`offsetNextVertex2`,void 0);class Q extends N{}class $ extends te{constructor(){super(...arguments),this.type=`TextShader`,this.computeAttributes={offset:[`offsetNextVertex1`,`offsetNextVertex2`]},this.textRenderPassType=0,this.isBackgroundPass=!1,this.isLabel=!1}clipLabel(e,t){let{clipAngle:r,zoomRange:i}=e,a=r.multiply(ce),o=g(a.subtract(this.view.getRotation()),new m(360)),s=new m(0),c=n,l=_(this.tileInfo.currentZoom.multiply(c)).divide(c),u=i.x,d=i.y,f=new m(1).subtract(v(u,l)).multiply(2),p=new m(y(x(o,new m(90)),b(o,new m(270)))).multiply(2),h=new m(2).multiply(new m(1).subtract(v(l,d)));return s=s.add(t.multiply(f)),s=s.add(t.multiply(p)),s=s.add(h),s=s.add(new m(2).multiply(this.getLabelHidden(e.id,e.bitset))),s}vertex(e,t){let n=H(e.bitset,ne),i=new m(1).subtract(n),a=this.getFeatureId(e.id,e.bitset),o=e.fontAndReferenceSize[0],s=e.fontAndReferenceSize[1],c=e.fontAndReferenceSize[2],l=e.fontAndReferenceSize[3],u=o.divide(c),d=this.textRenderPassType===1?e.outlineColor:this.textRenderPassType===2?e.haloColor:this._getVertexColor(e,a),h=this.tile.getDisplayViewScreenMat3(this.view).multiply(new S(e.pos,1)),g=e.offset,_=new m(1),v=ee.identity(),y=new p(0);if(this.isLabel){if(!e.referenceSymbol)throw Error(`InternalError: Optional attribute 'referenceSymbol' expected for labels`);let t=e.referenceSymbol,n=t.xy,i=t.z,o=this._unpackDirection(t.w),s=this.getLabelReferenceSymbolVVOffset(e.id),c=C(s.x,new m(0)).and(C(s.y,new m(0))),l=w(c,J(this,a,i).divide(2),i.divide(2)),u=o.multiply(l.add(r)).add(s);y=n.add(u),g=g.add(y)}else _=J(this,a,s).divide(s),o=o.multiply(_),u=u.multiply(_),g=g.multiply(_),v=Y(this,a),g=v.multiply(new S(g,0)).xy;let b=H(e.bitset,P),x=this._getViewRotationMatrix(b).multiply(new S(g,0)).multiply(this.tileInfo.scaleFactor),D=this.isLabel?this.clipLabel(e,b):this.clip(e.id,e.bitset,e.zoomRange);D=this.isBackgroundPass?D.add(i.multiply(2)):D.add(n.multiply(2));let O=new m(0);if(this.textRenderPassType===1&&(D=D.add(w(C(e.outlineAndHaloSize.x,new m(0)),new m(2),new m(0))),O=new m(e.outlineAndHaloSize.x).divide(u).divide(l)),this.textRenderPassType===2){let t=e.outlineAndHaloSize.x,n=new m(e.outlineAndHaloSize.y);D=D.add(w(C(n,new m(0)),new m(2),new m(0))),O=n.add(t).divide(u).divide(l)}let k=this.isLabel?T(D,new m(1)):new E(!1),A=new f(h.xy.add(x.xy),D,1),j=e.textureUV.divide(this.mosaicInfo.size),M=new m(.105).multiply(c).divide(o).divide(this.view.pixelRatio);return{glPosition:A,color:d,size:u,textureUV:j,antialiasingWidth:M,outlineDistanceOffset:O,...this.maybeRunHittest(e,t,{vvSizeAdjustment:_,vvRotation:v,labelOffset:y,labelClipped:k,scaleFactor:this.tileInfo.scaleFactor})}}_getViewRotationMatrix(e){let t=this.view.getDisplayViewMat3(),n=this.view.displayMat3,r=new m(1).subtract(e);return t.multiply(e).add(n.multiply(r))}_getHittestAlignmentMatrix(e){let t=this.tile.getTileMat3(this.view),n=this.view.viewMat3.multiply(t),r=t,i=new m(1).subtract(e);return n.multiply(e).add(r.multiply(i))}fragment(e){let t=new m(2/8),n=new m(1).subtract(t),r=D(this.mosaicTexture,e.textureUV).a,i=n.subtract(e.outlineDistanceOffset);this.highlight&&(i=i.divide(2));let a=e.antialiasingWidth,o=O(i.subtract(a),i.add(a),r);return this.getFragmentOutput(e.color.multiply(o),e)}computeHittestTriangle(e,t,{vvSizeAdjustment:n,vvRotation:r,labelOffset:i,scaleFactor:a}){let o,s,c;this.isLabel?(o=new S(e.offset.multiply(a).add(i),0),s=new S(t.offsetNextVertex1.multiply(a).add(i),0),c=new S(t.offsetNextVertex2.multiply(a).add(i),0)):(o=r.multiply(new S(e.offset.multiply(a).multiply(n),0)),s=r.multiply(new S(t.offsetNextVertex1.multiply(a).multiply(n),0)),c=r.multiply(new S(t.offsetNextVertex2.multiply(a).multiply(n),0)));let l=this.tile.getViewScreenMat3(this.view).multiply(new S(e.pos,1)),u=H(e.bitset,P),d=this._getHittestAlignmentMatrix(u);return{pos0:l.add(d.multiply(o)).xy,pos1:l.add(d.multiply(s)).xy,pos2:l.add(d.multiply(c)).xy}}hittest(e,t,n){let{vvSizeAdjustment:r,vvRotation:i,labelOffset:a,labelClipped:o,scaleFactor:s}=n,{pos0:c,pos1:l,pos2:u}=this.computeHittestTriangle(e,t,{vvSizeAdjustment:r,vvRotation:i,labelOffset:a,scaleFactor:s}),d={pos0:c,pos1:l,pos2:u},f=this.isLabel?o:new E(!1);return w(f,new m(F),()=>w(ie(this.hittestRequest),()=>{let e=ae(this.hittestRequest.position,c,l,u);return w(T(e,this.hittestRequest.distance),new m(F),new m(re))},()=>w(I(this.hittestRequest),L(d,this.hittestRequest.rect.xy,this.hittestRequest.rect.zw),w(R(this.hittestRequest),this.isLabel?z(d,this.hittestRequest.viewSize,this.hittestMaskTexture):B(d,this.hittestRequest.viewSize,this.hittestMaskTexture),new m(F)))))}_unpackDirection(e){let t=new k(e),n=A(t,new k(2)),r=j(t,new k(3));return new p(new m(n).subtract(1),new m(r).subtract(1))}_getVertexColor(e,t){let n=e.color;if(this.visualVariableColor){let r=this.getColorValue(t);n=this.visualVariableColor.getColor(r,e.color,new E(!1))}if(this.visualVariableOpacity){let e=this.getOpacityValue(t),r=this.visualVariableOpacity.getOpacity(e);n=n.multiply(r)}return n}}e([o(U)],$.prototype,`visualVariableColor`,void 0),e([o(W)],$.prototype,`visualVariableOpacity`,void 0),e([o(G)],$.prototype,`visualVariableRotation`,void 0),e([o(K)],$.prototype,`visualVariableSizeMinMaxValue`,void 0),e([o(q)],$.prototype,`visualVariableSizeScaleStops`,void 0),e([o(oe)],$.prototype,`visualVariableSizeStops`,void 0),e([o(se)],$.prototype,`visualVariableSizeUnitValue`,void 0),e([s(V)],$.prototype,`mosaicInfo`,void 0),e([c(h)],$.prototype,`mosaicTexture`,void 0),e([l],$.prototype,`textRenderPassType`,void 0),e([l],$.prototype,`isBackgroundPass`,void 0),e([l],$.prototype,`isLabel`,void 0),e([t(0,u(X)),t(1,u(Z))],$.prototype,`vertex`,null),e([t(0,u(Q))],$.prototype,`fragment`,null);export{Q as TextFragmentInput,$ as TextShader,X as TextVertexInput};
|
package/views/2d/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiles2D.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/Accessor.js";import{watch as n,sync as r}from"../../../../../../core/reactiveUtils.js";import{property as i,subclass as a}from"../../../../../../core/accessorSupport/decorators.js";import{
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../../../../core/Accessor.js";import{watch as n,sync as r}from"../../../../../../core/reactiveUtils.js";import{property as i,subclass as a}from"../../../../../../core/accessorSupport/decorators.js";import{scaleBoundsPredicate as o}from"../../../../../../geometry/support/scaleUtils.js";import{TileKey as s}from"../../../../../../layers/support/TileKey.js";import{distanceToTile as c}from"../../../../../interactive/snapping/featureSources/featureServiceSource/tileUtils.js";let l=class extends t{get tiles(){let e=this.tilesCoveringView,t=this.pointOfInterest==null?this.view.center:this.pointOfInterest;return e.sort((e,n)=>c(t,e)-c(t,n)),e}_scaleEnabled(){return o(this.view.scale,this.layer.minScale||0,this.layer.maxScale||0)}get tilesCoveringView(){if(!this.view.ready||!this.view.featuresTilingScheme||!this.view.state||this.tileInfo==null||!this._scaleEnabled)return[];let{spans:e,lodInfo:t}=this.view.featuresTilingScheme.getTileCoverage(this.view.state,0),{level:n}=t,r=[];for(let{row:i,colFrom:a,colTo:o}of e)for(let e=a;e<=o;e++){let a=t.normalizeCol(e),o=new s(n,i,a);this.tileInfo.updateTileInfo(o),r.push(o)}return r}get tileInfo(){return this.view.tileInfo??null}get tileSize(){return this.tileInfo==null?256:this.tileInfo.size[0]}constructor(e){super(e),this.pointOfInterest=null,this.updating=!1}initialize(){this.addHandles(n(()=>this.view?.state?.viewpoint,()=>this.notifyChange(`tilesCoveringView`),r))}};e([i({readOnly:!0})],l.prototype,`tiles`,null),e([i({readOnly:!0})],l.prototype,`_scaleEnabled`,null),e([i({readOnly:!0})],l.prototype,`tilesCoveringView`,null),e([i({readOnly:!0})],l.prototype,`tileInfo`,null),e([i({readOnly:!0})],l.prototype,`tileSize`,null),e([i({constructOnly:!0})],l.prototype,`view`,void 0),e([i({constructOnly:!0})],l.prototype,`layer`,void 0),e([i()],l.prototype,`pointOfInterest`,void 0),e([i()],l.prototype,`updating`,void 0),l=e([a(`esri.views.2d.interactive.snapping.featureSources.featureServiceSource.FeatureServiceTiles2D`)],l);export{l as FeatureServiceTiles2D};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../AggregateGraphic.js";import n from"../../../Graphic.js";import r from"../../../TrackGraphic.js";import{isSome as i}from"../../../core/arrayUtils.js";import a from"../../../core/Collection.js";import o from"../../../core/Error.js";import{makeHandle as s,handlesGroup as c}from"../../../core/handleUtils.js";import has from"../../../core/has.js";import l from"../../../core/Logger.js";import{destroyMaybe as u}from"../../../core/maybe.js";import{notDeepEqual as d}from"../../../core/object.js";import{createAbortError as f,ignoreAbortErrors as p,throwIfNotAbortError as m,isAbortError as h}from"../../../core/promiseUtils.js";import{watch as g,sync as _}from"../../../core/reactiveUtils.js";import{sqlAnd as v}from"../../../core/sql.js";import{getMetersPerUnitForSR as y}from"../../../core/units.js";import{property as b,subclass as x}from"../../../core/accessorSupport/decorators.js";import{UpdatingHandles as S}from"../../../core/support/UpdatingHandles.js";import C from"../../../geometry/Extent.js";import{fromJSON as ee}from"../../../geometry/support/jsonUtils.js";import w from"../../../geometry/support/rotate.js";import{isCurvedGeometry as T}from"../../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as E}from"../../../geometry/support/curves/densifyCurvedGeometry.js";import te from"../../../layers/effects/FeatureEffectView.js";import{convertFromFeature as D}from"../../../layers/graphics/featureConversionUtils.js";import O from"../../../layers/support/FeatureFilter.js";import{checkServiceCurrentUserSupport as k}from"../../../layers/support/featureLayerUtils.js";import{packFields as ne}from"../../../layers/support/fieldUtils.js";import{getEffectiveLayerCapabilities as re}from"../../../layers/support/layerUtils.js";import{combineTimeExtent as ie}from"../../../layers/support/timeSupport.js";import ae from"../../../rest/support/AggregateFeatureSet.js";import oe from"../../../rest/support/AttributeBinsFeatureSet.js";import se from"../../../rest/support/AttributeBinsQuery.js";import A from"../../../rest/support/FeatureSet.js";import j from"../../../rest/support/Query.js";import{HittestDrawHelper as M}from"../../../symbols/cim/CIMSymbolDrawHelper.js";import{symbolToCIM as N}from"../../../symbols/cim/CIMSymbolHelper.js";import{getDisplayedSymbol as P}from"../../../symbols/support/symbolUtils.js";import{LayerView2D as F}from"./LayerView2D.js";import{FeatureContainer as I}from"./features/FeatureContainer.js";import{createFeaturePipelineWorkerProxy as L}from"./features/FeaturePipelineWorkerProxy.js";import{FeatureSourceEventLog as R}from"./features/FeatureSourceEventLog.js";import{AnnotationLayerAdapter as z}from"./features/layerAdapters/AnnotationLayerAdapter.js";import{CatalogFootprintLayerAdapter as B}from"./features/layerAdapters/CatalogFootprintLayerAdapter.js";import{DimensionLayerAdapter as V}from"./features/layerAdapters/DimensionLayerAdapter.js";import{FeatureLayerAdapter as H}from"./features/layerAdapters/FeatureLayerAdapter.js";import{createFeatureIdInfo as U}from"./features/layerAdapters/featureServiceUtils.js";import{InMemoryLayerAdapter as W}from"./features/layerAdapters/InMemoryLayerAdapter.js";import{KnowledgeGraphSublayerAdapter as G}from"./features/layerAdapters/KnowledgeGraphSublayerAdapter.js";import{OGCFeatureLayerAdapter as K}from"./features/layerAdapters/OGCFeatureLayerAdapter.js";import{OrientedImageryLayerAdapter as ce}from"./features/layerAdapters/OrientedImageryLayerAdapter.js";import{ParquetLayerAdapter as le}from"./features/layerAdapters/ParquetLayerAdapter.js";import{StreamLayerAdapter as ue}from"./features/layerAdapters/StreamLayerAdapter.js";import{SubtypeGroupLayerAdapter as de}from"./features/layerAdapters/SubtypeGroupLayerAdapter.js";import{createComplexSymbolInstances as q}from"./features/schema/processor/symbols/ComplexSymbolSchema.js";import{DebouncedFeatureOverride as J}from"./support/DebouncedFeatureOverride.js";import{FeatureCommandQueue as fe}from"./support/FeatureCommandQueue.js";import{createFilterSchemas as pe}from"./support/FilterSchema.js";import{handleNoEngineError as Y}from"./support/handleNoEngineError.js";import{toJSONGeometryType as X}from"./support/util.js";import{getMapPointsFromScreen as me,getHittestType as he}from"../support/hitTestUtils.js";import{FeatureTileSubscriptionManager as ge}from"../tiling/FeatureTileSubscriptionManager.js";import{RefreshableLayerView as _e}from"../../layers/RefreshableLayerView.js";import{getHighlightName as ve}from"../../support/highlightOptionsUtils.js";function Z(e,t){let n=new Set;return e&&e.forEach(e=>n.add(e)),t&&t.forEach(e=>n.add(e)),n.has(`*`)?[`*`]:Array.from(n)}const Q=4294967294;function ye(e,t){return c(e.map(e=>g(()=>{let t=e();return t&&typeof t==`object`?`getTime`in t&&typeof t.getTime==`function`?t.getTime():JSON.stringify(t):t},t,_)))}function $(e){if(!e.geometry||!T(e.geometry))return e;let t=.001/y(e.geometry.spatialReference);return{geometry:E(e.geometry,{maxSegmentsPerCurve:12e3,maxSegmentLength:100*t,maxDeviation:0}),attributes:e.attributes}}const be=c=>{let _=_e(F(c)),y=class extends _{constructor(){super(...arguments),this._commandsQueue=new fe({process:e=>{switch(e.type){case`override-batch`:return this._doOverride(e);case`update`:return this._doUpdate()}}}),this._visibilityOverrides=new Set,this._lastAvailableFields=[],this._lastTargetState=null,this._stationaryRotation=0,this.eventLog=new R,this._sourceRefreshVersion=1,this._displayRefreshVersion=1,this._pipelineUpdating=!1,this._editUpdatingHandles=new S,this._fields=null,this._hittestDrawHelper=null,this._sourceUpdating=!1,this.featureEffectView=new te}destroy(){this._editUpdatingHandles.destroy(),this._workerProxy?.destroy(),this._workerAttached.reject(f()),this._commandsQueue.destroy(),this._hittestDrawHelper?.destroy()}initialize(){this._workerAttached=Promise.withResolvers(),p(this._workerAttached.promise),this.addResolvingPromise(this._initProxy()),this.featureEffectView.featureEffect=this.featureEffect,this.featureEffectView.endTransition()}async _initProxy(){let e=this.layer;if(`isTable`in e&&e.isTable)throw new o(`featurelayerview:table-not-supported`,`table feature layer can't be displayed`,{layer:e});if((e.type===`feature`||e.type===`subtype-group`)&&re(e)?.operations.supportsQuery===!1)throw new o(`featurelayerview:query-not-supported`,`layer view requires a layer with query capability`,{layer:e});this._workerProxy&&this._workerProxy.destroy();let t=this._createClientOptions();this._workerProxy=await L(t)}async _attachProxy(){let e=w(this.view.extent,this.view.rotation,this.view.center),t={tileInfoJSON:this.view?.featuresTilingScheme?.tileInfo?.toJSON(),initialViewExtent:e.toJSON()};try{await this._workerProxy.pipeline.onAttach(t),this._workerAttached.resolve()}catch(e){this._workerAttached.reject(f()),m(e)}}async _detachProxy(){return this._workerProxy.pipeline.onDetach()}async getWorker(){return await this._workerAttached.promise,this._workerProxy}get dataUpdating(){return this._sourceUpdating||this._editUpdatingHandles.updating}get hasAllFeatures(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryAllFeatures}get hasAllFeaturesInView(){let e=this.effectiveDisplayFilter?.where||null,t=!this.eventLog.willQueryAllFeatures&&e!=null&&e!==`1=1`;return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&!t}get hasFullGeometries(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryFullResolutionGeometry}get layerAdapter(){switch(this.layer.type){case`annotation-feature`:return new z(this.layer);case`dimension-feature`:return new V(this.layer);case`feature`:return this.layer.source.type===`memory`?new W(this.layer):new H(this.layer);case`geojson`:case`csv`:case`wfs`:return new W(this.layer);case`parquet`:return new le(this.layer);case`subtype-group`:return new de(this.layer);case`ogc-feature`:return new K(this.layer);case`stream`:return new ue(this.layer);case`oriented-imagery`:return new ce(this.layer);case`knowledge-graph-sublayer`:return new G(this.layer);case`catalog-footprint`:return new B(this.layer);default:this.layer}return null}get timeExtent(){return ie(this.layerAdapter.timeOptions,this.view?.timeExtent,this._get(`timeExtent`))}get usedMemory(){return this.container.usedMemory+this.eventLog.pipelineStatistics.usedMemory}getDisplayStatistics(e,t){return this.featureContainer?.getDisplayStatistics(e,t)}highlight(e,t){let r=ve(t),o;if(e instanceof O)o=e;else{let t;e instanceof n?t=[e.getObjectId()]:typeof e==`number`||typeof e==`string`?t=[e]:a.isCollection(e)&&e.length>0?t=e.map(e=>e?.getObjectId()).toArray():Array.isArray(e)&&e.length>0&&(t=typeof e[0]==`number`||typeof e[0]==`string`?e:e.map(e=>e?.getObjectId()));let r=t?.filter(i);if(!r?.length)return s();o=new O({objectIds:r})}let c=this._addHighlightFilter(o,r);return s(()=>!this.destroyed&&this._removeHighlight(c))}async hitTest(e,i,a){let o=he(i);if(!o)return null;let s=o===`point`,{trueHitIds:c,candidateHitIds:l}=await this.featureContainer.hitTest(i,a??null),u=await this.getWorker(),[d,f]=await Promise.all([u.pipeline.getDisplayFeatures(l),u.pipeline.getDisplayFeatures(c)]),{features:p,aggregates:m,tracks:g}=d,{features:_,aggregates:v,tracks:y}=f,b=[];if(!s&&this.hasRenderer()){let e=new Map,t=new n;for(let n of p){t.attributes=n.attributes,t.geometry=ee(n.geometry),t.symbol=null;let r=this.layerAdapter.getRenderer(t);if(!r){b.push(n);continue}let i=await P(t,{renderer:r,scale:this.view.scale,resolution:this.view.resolution,spatialReference:this.view.spatialReference,viewingMode:`2d`,timeZone:this.view.timeZone});if(!i)continue;let a=null,o=N(i);if(o.type===`web-style`)try{let e=N(await o.fetchSymbol({acceptedFormats:[`cim`,`web`]}));a=e.type===`web-style`?null:e}catch(e){h(e);continue}else a=o;let s=a?.symbol;if(!s)continue;let c=this.view.stage.cimAnalyzer.analyzeSymbolReference(a,!1).some(e=>`alignment`in e&&e.alignment===0);e.set(n,{cimSymbol:s,isScreenAligned:c})}e.size>0&&!this._hittestDrawHelper&&(this._hittestDrawHelper=new M(this.view.stage.painter.textureManager.resourceManager));let{resolution:r,rotation:a}=this.view.state,s=me(this.view,i);for(let[t,{cimSymbol:n,isScreenAligned:i}]of e){if(!t)continue;let e={hittestType:o,textInfo:null,mapRotation:a,resolution:r,searchDist:0,isScreenAligned:i};this._hittestDrawHelper.hitTest(s,n,t.geometry,e)&&b.push(t)}}else b.push(...p);let x=[..._,...b],S=[...v,...m],C=[...y,...g],w=this.featureContainer.getSortKeys(x.map(e=>e.displayId)),T=({displayId:e},{displayId:t})=>w.has(e)&&w.has(t)?w.get(e)-w.get(t):e-t;return x.sort(T).reverse(),S.sort(T).reverse(),[...S.map(n=>this._createAggregateGraphicHit(e,t.fromJSON(n))),...C.map(t=>this._createTrackGraphicHit(e,r.fromJSON(t))),...x.map(t=>this._createFeatureGraphicHit(s?e:null,n.fromJSON(t)))]}async queryAggregateSummaryStatistics(e,t,n){let r={...t,scale:this.view.scale},i=(await this.getWorker()).aggregates.executeQueryForSummaryStatistics(this._cleanUpAggregateQuery(e),r,n);return Y(i,{})}async queryUniqueValues(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForUniqueValues(this._cleanUpQuery(e),i,n);return Y(a,{uniqueValueInfos:[]})}async queryAggregateUniqueValues(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForUniqueValues(this._cleanUpAggregateQuery(e),i,n);return Y(a,{uniqueValueInfos:[]})}async queryAggregateClassBreaks(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForClassBreaks(this._cleanUpAggregateQuery(e),i,n);return Y(a,{classBreakInfos:[]})}async queryHistogram(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForHistogram(this._cleanUpQuery(e),i,n);return Y(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}async queryAggregateCount(e,t){let n=(await this.getWorker()).aggregates.executeQueryForCount(this._cleanUpAggregateQuery(e),t);return Y(n,0)}async queryAggregateHistogram(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForHistogram(this._cleanUpAggregateQuery(e),i,n);return Y(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}async queryAggregateIds(e,t){let n=(await this.getWorker()).aggregates.executeQueryForIds(this._cleanUpAggregateQuery(e),t);return Y(n,[])}async queryAggregateJSON(e,t){let n=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t);return Y(n,{features:[]})}async queryAttributeBins(e,t){let n=(await this.getWorker()).features.executeAttributeBinsQuery(this._cleanUpAttributeBinsQuery(e),t),r=await Y(n,{features:[]});return oe.fromJSON(r)}async queryAggregates(e,t){let n=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t),r=await Y(n,{features:[]}),i=ae.fromJSON(r);return i.features.forEach(e=>this.layerAdapter.setAggregateGraphicOrigin?.(e)),i}async queryClassBreaks(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForClassBreaks(this._cleanUpQuery(e),i,n);return Y(a,{classBreakInfos:[]})}async queryExtent(e,t){let n=(await this.getWorker()).features.executeQueryForExtent(this._cleanUpQuery(e),t),r=await Y(n,{count:0,extent:null});return{count:r.count,extent:C.fromJSON(r.extent)}}async queryFeatureCount(e,t){let n=(await this.getWorker()).features.executeQueryForCount(this._cleanUpQuery(e),t);return Y(n,0)}queryFeatures(e,t){return this.queryFeaturesJSON(e,t).then(e=>{let t=A.fromJSON(e);return t.features.forEach(e=>this._setOriginForFeature(e)),t})}async queryFeaturesJSON(e,t){let n=(await this.getWorker()).features.executeQuery(this._cleanUpQuery(e),t);return Y(n,{features:[]})}async queryHeatmapStatistics(e){return(await this.getWorker()).pipeline.queryHeatmapStatistics(e)}async queryObjectIds(e,t){let n=(await this.getWorker()).features.executeQueryForIds(this._cleanUpQuery(e),t);return Y(n,[])}async queryStatistics(){let e=await this.getWorker();return Y(e.pipeline.queryStatistics(),{featureCount:0,ringCount:0,vertexCount:0})}async querySummaryStatistics(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForSummaryStatistics(this._cleanUpQuery(e),i,n);return Y(a,{})}async queryVisibleFeatures(e,t){let n=(await this.getWorker()).pipeline.queryVisibleFeatures(this._cleanUpQuery(e),t),r=await Y(n,{features:[]}),i=A.fromJSON(r);return i.features.forEach(e=>this._setOriginForFeature(e)),i}async getSampleFeatures(e){return(await this.getWorker()).pipeline.getSampleFeatures(e)}setVisibility(e,t){t?this._visibilityOverrides.delete(e):this._visibilityOverrides.add(e),this._update()}update(e){if(!this._subscriptions)return;this.view.animation&&!this._lastTargetState&&(this._lastTargetState=e.state.clone()),!this.view.animation&&this._lastTargetState&&(this._lastTargetState=null);let t=this.featureContainer.getPresenting(),n=this._subscriptions.update(e.targetState,this._lastTargetState,t);n&&(this.featureContainer.updateSubscriptions(n),p(this._updatingHandles.addPromise(this.getWorker().then(e=>e.pipeline.updateSubscriptions(n))))),this._subscriptions.coverage&&this.featureContainer.setCoverage(this._subscriptions.coverage)}attach(){has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.attach`),p(this._updatingHandles.addPromise(this._workerAttached.promise)),p(this._attachProxy()),this.featureContainer=new I(this),this.container.addChild(this.featureContainer),this.view.timeline.record(`${this.layer.title} (FeatureLayer) Attach`),this._subscriptions=new ge(this.view.featuresTilingScheme),this._stationaryRotation=this.view.rotation,this.requestUpdate(),this.addAttachHandles([ye([()=>this._displayRefreshVersion,()=>`displayFilterInfo`in this.layer&&this.layer.displayFilterInfo,()=>this.timeExtent,()=>this.clips,()=>this.filter,()=>this.effectiveDisplayFilterClause,()=>this.featureEffect,()=>this._sourceRefreshVersion,()=>this.view.timeZone,()=>this.view.timeExtent,...this.layerAdapter.getUpdateHashProperties(this.view)],()=>this._update()),g(()=>this.updateSuspended,e=>{e||this._subscriptions.resume(this.featureContainer.getPresenting())}),g(()=>this.view.stationary,e=>{if(!e)return;let t=this.view.rotation;t!==this._stationaryRotation&&(this._stationaryRotation=t,this._update()),this.getWorker().then(e=>{if(this.destroyed)return;let t=w(this.view.extent,this.view.rotation,this.view.center);return e.pipeline.updateViewExtent(t.toJSON(),this.featureContainer.requiresRefresh)}).catch(()=>{})})]),this._update(),this.layer.type!==`stream`&&this.layer.type!==`parquet`&&this.layer.type!==`catalog-footprint`&&this.addAttachHandles(this.layer.on(`edits`,e=>this._editUpdatingHandles.addPromise(this._edit(e))))}emitFirstDraw(e){this.emit(`first-draw`,{timestamp:e})}detach(){has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.detach`),this._detachProxy(),this._fields=null,this.featureContainer.destroy(),this.featureContainer=null,this._commandsQueue.clear(),this.container.removeAllChildren(),this._subscriptions=u(this._subscriptions),this._workerProxy.pipeline.onDetach(),this._workerAttached=Promise.withResolvers(),p(this._workerAttached.promise),this._lastAvailableFields=[],this._lastSchema=null}viewChange(){this.requestUpdate()}moveEnd(){this.requestUpdate()}addOverrides(e){return this._commandsQueue.push({type:`override`,options:{...e,release:[]}})}removeOverrides(e){for(let t of e)if(t==null)throw new o(`featurelayerview:bad-override`,`Tried to remove an override for an invalid objectId`,{objectId:t});let t={added:[],updated:[],removed:[],release:e,isWeak:!1,historicMoment:null};return this._commandsQueue.push({type:`override`,options:t})}onProxyClientEvent(e){}hasRenderer(){return`renderer`in this.layer&&this.layer.renderer!=null}isUpdating(){let e=this.hasRenderer(),t=this._commandsQueue.updateTracking.updating,n=this._updatingRequiredPromise!=null,r=this.featureContainer.updating;return this.updateRequested||e&&(t||n)||r||this._pipelineUpdating||this.dataUpdating}_createClientOptions(){let e=this;return{updateSchemaStart(){return e.updateSchemaStart()},updateSchemaEnd(t){return e.updateSchemaEnd(t)},openMemoryPorts:async()=>{if(this.layerAdapter?.openMessagePorts){let e=await this.layerAdapter.openMessagePorts();return{result:e,transferList:e}}throw Error(`InternalError: Layer adapter does not support opening message ports`)},openGlyphPorts:async()=>{let t=await e.container.stage.textureManager.openMessagePorts();return{result:t,transferList:t}},get container(){return e.featureContainer},setUpdating:e=>{this._set(`_pipelineUpdating`,e.pipeline),this._set(`_sourceUpdating`,e.source)},emitEvent:e=>{this.onProxyClientEvent(e)},get eventLog(){return e.eventLog},fetch:async t=>{if(has(`esri-2d-stabilize-glyphs`)){let n=[];for(let r of t)n.push(await e.view.stage.painter.textureManager.rasterizeItem(r));return n}return Promise.all(t.map(t=>e.view.stage.painter.textureManager.rasterizeItem(t)))},fetchDictionary:e=>Promise.all(e.map(e=>this._fetchDictionaryRequest(e))),fetchMesh:e=>Promise.all(e.map(e=>this._fetchMeshRequest(e)))}}async _fetchDictionaryRequest(e){try{if(!(`renderer`in this.layer)||!this.layer.renderer||this.layer.renderer.type!==`dictionary`)throw Error(`InternalError: Expected renderer to be of type 'dictionary'`);let t=this.layer.renderer,n=this._lastSchema.processor.mesh.factory.symbology;if(n.type!==`dictionary`)throw Error(`InternalError: Expected schema to be of type 'dictionary'`);let r={cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,store:this.featureContainer.instanceStore,scaleExpression:n.scaleExpression,viewRotation:this._stationaryRotation};this._fields||=this.layer.fields.map(e=>e.toJSON());let i=n.visualVariableUniforms,a=X(this.layer.geometryType),o=await t.getSymbolForControlString(e.controlString,a,!1);return!o||!o.data?{type:`dictionary-response`,meshes:[]}:{type:`dictionary-response`,meshes:await q({...o.data,hasTextStringTemplates:!0},{uniforms:i,path:`renderer`,schemaOptions:r})}}catch{return{type:`dictionary-response`,meshes:[]}}}async _fetchMeshRequest(e){let{layer:t}=this;try{let n={cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,store:this.featureContainer.instanceStore,scaleExpression:null,viewRotation:this._stationaryRotation};return this._fields||=t.fields.map(e=>e.toJSON()),{type:`mesh-response`,meshes:await q({...e.symbolReference,hasTextStringTemplates:!0},{path:`anno-like`,schemaOptions:n,uniforms:{visualVariableColor:null,visualVariableOpacity:null,visualVariableRotation:null,visualVariableSizeStops:null,visualVariableSizeScaleStops:null,visualVariableSizeOutlineScaleStops:null,visualVariableSizeUnitValue:null,visualVariableSizeMinMaxValue:null}})}}catch{return{type:`mesh-response`,meshes:[]}}}_cleanUpQuery(e){let t=j.from(e)||this.createQuery();return t.outSpatialReference||=this.view.spatialReference,`returnZ`in this.layer&&(t.returnZ??=this.layer.returnZ),`returnM`in this.layer&&(t.returnM??=this.layer.returnM),t.toJSON()}_cleanUpAttributeBinsQuery(e){let t=se.from(e);return t.outSpatialReference||=this.view.spatialReference,t.toJSON()}_cleanUpAggregateQuery(e){let t=j.from(e)||this.createAggregateQuery();t.outSpatialReference||=this.view.spatialReference;let n=t.objectIds??[];for(let e of t.aggregateIds??[])n.push(e);return t.objectIds=n,t.aggregateIds=[],t.toJSON()}async _update(){return this._commandsQueue.push({type:`update`})}_edit(e){return this._commandsQueue.push({type:`edit`,event:e})}async doRefresh(e){this.attached&&(!this.updateSuspended||!e)&&(e?this.incrementSourceRefreshVersion():this.incrementDisplayRefreshVersion())}incrementSourceRefreshVersion(){this._sourceRefreshVersion=(this._sourceRefreshVersion+1)%Q+1}incrementDisplayRefreshVersion(){this._displayRefreshVersion=(this._displayRefreshVersion+1)%Q+1}async _resolveIdenifiers(e){let t=[],n=[];for(let r of e)r.objectId!=null&&r.objectId!==-1?t.push(r.objectId):r.globalId==null?l.getLogger(this).warn(`mapview-apply-edits`,`A feature identifier must contain either a GlobalId or ObjectId. Ignoring`,{identifier:r}):n.push(r.globalId);let r=`globalIdField`in this.layer&&this.layer.globalIdField,i=r&&this.availableFields.includes(r);if(n.length&&!i)return l.getLogger(this).error(new o(`mapview-apply-edits`,`Editing the specified service requires the layer's globalIdField, ${r} to be included the layer's outFields for updates to be reflected on the map`)),t;if(n.length){let e=await this._workerProxy.pipeline.getObjectIdsFromGlobalIds(n);for(let n of e)t.push(n)}return t}_resolveOverrides(e){let t=X(this.layer.geometryType),n=U(this.layer),r=[];for(let i of e.added){let e=D($(i),t,!1,!1,n);if(e.objectId==null)throw new o(`featurelayerview:bad-override`,`Feature does not have an objectId`,{feature:i});r.push(e)}for(let i of e.updated){let e=D($(i),t,!1,!1,n);if(e.objectId==null)throw new o(`featurelayerview:bad-override`,`Feature does not have an objectId`,{feature:i});r.push(e)}for(let t of e.removed)if(t==null)throw new o(`featurelayerview:bad-override`,`Tried to remove an invalid objectId`,{objectId:t});return{type:`override`,updates:r,removed:e.removed,release:e.release,isWeak:e.isWeak??!1,historicMoment:e.historicMoment??null}}async _resolveEdit(e){let t=this.layer,n=e.historicMoment?.getTime()??null,r=`layerId`in t&&e.editedFeatures?.find(e=>e.layerId===t.layerId);if(r&&this._canEditByFeature(r)){let{adds:e,deletes:t,updates:i}=r.editedFeatures,a=this.layer.objectIdField,o=i.map(e=>e.current),s=t.map(e=>`attributes`in e?{objectId:a?e.attributes[a]:null}:e),c=await this._resolveIdenifiers(s);return this._resolveOverrides({added:e,updated:o,removed:c,historicMoment:n,isWeak:!0,release:[]})}let[i,a,o]=await Promise.all([this._resolveIdenifiers(e.addedFeatures),this._resolveIdenifiers(e.updatedFeatures),this._resolveIdenifiers(e.deletedFeatures)]);return{type:`override-by-id`,updates:[...i,...a],removed:o,historicMoment:n,isWeak:!0}}_canEditByFeature(e){let{adds:t,updates:n}=e.editedFeatures;return t.every(e=>this.view.spatialReference.equals(e.geometry?.spatialReference))&&n.every(e=>this.view.spatialReference.equals(e.current.geometry?.spatialReference))}async updateSchemaStart(){let e=this.layer;`featureReduction`in e&&e.featureReduction&&e.featureReduction!==this._lastFeatureReduction&&(e.featureReduction=e.featureReduction?.clone(),this._lastFeatureReduction=e.featureReduction);try{if(await Promise.allSettled([this._handleChange(),k(e)]),this.destroyed||!this.layerAdapter?.hasRequiredSupport||!this._subscriptions)return null;let t=this.featureContainer.updateStart(e.type===`subtype-group`);this._lastFeatureEffect=this.featureEffect;let n={store:t,cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,scaleExpression:void 0,viewRotation:this._stationaryRotation},r=await this._createViewSchemaConfig(),i={source:await this.layerAdapter.createSourceSchema(r,this._sourceRefreshVersion),processor:await this.layerAdapter.createProcessorSchema(n,r,this._displayRefreshVersion)};return d(this._lastSchema?.source.strategy,i.source.strategy)||d(this._lastSchema?.processor,i.processor)?(this._lastSchema=i,this._fields=null,i):null}catch{}return null}async updateSchemaEnd(e){try{this.featureEffectView.featureEffect=this._lastFeatureEffect,e&&this.featureEffectView.endTransition(),await this.featureContainer.updateEnd(this._lastSchema.processor,this.layerAdapter.getLabelingDeconflictionInfo(),e),has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.updateEnd`)}catch{}}async _doUpdate(){let e=Math.round(performance.now());await(await this.getWorker()).pipeline.updateSchema(e),this.requestUpdate()}async _doOverride(e){let t=await this.getWorker();try{let n=new J;for(let r of e.messages)switch(r.type){case`edit`:n.tryAdd(await this._resolveEdit(r.event))||(await t.pipeline.onOverride(n.toMessage()),n=new J,n.tryAdd(await this._resolveEdit(r.event)));break;case`override`:n.tryAdd(this._resolveOverrides(r.options))||(await t.pipeline.onOverride(n.toMessage()),n=new J,n.tryAdd(this._resolveOverrides(r.options)))}await t.pipeline.onOverride(n.toMessage())}catch(e){h(e)}}_getEffectiveAvailableFields(e){let t=Z(this._lastAvailableFields,e);return this._lastAvailableFields=t,ne(this.layer.fieldsIndex,t)}async _createViewSchemaConfig(){let e=this.requiresCurrentUser?await this.signedInUser:null,t=T(this.view,this.layerAdapter,this.timeExtent,this._visibilityOverrides,this.filter,this.effectiveDisplayFilterClause),n=this.featureEffect?.filter?.toJSON()??null,r=this._getHighlightFilterGroups().map(({order:e,filters:t})=>({order:e,filters:t.map(e=>e.toJSON())})),i=pe({layerFilter:t,effectFilter:n,highlightFilters:r});return{availableFields:this._getEffectiveAvailableFields(this.availableFields),displayFilterEnabled:this.displayFilterEnabled,filters:i,scale:this.view.scale,timeZone:this.view.timeZone,timeExtent:this.view.timeExtent,currentUser:e,spatialReference:this.view.spatialReference,extent:this.view.extent,returnZ:this.hasZ,returnM:this.hasM}}_onHighlightChange(){this._commandsQueue.push({type:`update`})}_setOriginForFeature(e){e.layer=e.sourceLayer=this.layer,this.layerAdapter.setGraphicOrigin(e)}_createFeatureGraphicHit(e,t){return this._setOriginForFeature(t),this._createGraphicHit(e,t)}_createTrackGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setTrackGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createAggregateGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setAggregateGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createGraphicHit(e,t){return t.geometry!=null&&(t.geometry.spatialReference=this.view.spatialReference),{type:`graphic`,graphic:t,layer:this.layer,mapPoint:e}}};e([b()],y.prototype,`_commandsQueue`,void 0),e([b()],y.prototype,`_sourceRefreshVersion`,void 0),e([b()],y.prototype,`_displayRefreshVersion`,void 0),e([b({readOnly:!0})],y.prototype,`_pipelineUpdating`,void 0),e([b()],y.prototype,`_sourceUpdating`,void 0),e([b({readOnly:!0})],y.prototype,`dataUpdating`,null),e([b({readOnly:!0})],y.prototype,`hasAllFeatures`,null),e([b({readOnly:!0})],y.prototype,`hasAllFeaturesInView`,null),e([b({readOnly:!0})],y.prototype,`hasFullGeometries`,null),e([b()],y.prototype,`featureEffectView`,void 0),e([b()],y.prototype,`layerAdapter`,null),e([b({readOnly:!0})],y.prototype,`timeExtent`,null),y=e([x(`esri.views.2d.layers.FeatureLikeLayerView2D`)],y);function T(e,t,n,r,i,a){i&&=i.clone();let o=i==null?null:i.timeExtent,s=n!=null&&o!=null?n.intersection(o):n||o;s&&(i??=new O,i.timeExtent=s),i=t.addFilters?.(i,e)??i,a&&(i??=new O,i.where=v(i.where,a));let c=i?.toJSON()??null;return r.size&&(c??=new O().toJSON(),c.hiddenIds=Array.from(r)),c}return y};export{be as FeatureLikeLayerView2D};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../AggregateGraphic.js";import n from"../../../Graphic.js";import r from"../../../TrackGraphic.js";import{isSome as i}from"../../../core/arrayUtils.js";import a from"../../../core/Collection.js";import o from"../../../core/Error.js";import{makeHandle as s,handlesGroup as c}from"../../../core/handleUtils.js";import has from"../../../core/has.js";import l from"../../../core/Logger.js";import{destroyMaybe as u}from"../../../core/maybe.js";import{notDeepEqual as d}from"../../../core/object.js";import{createAbortError as f,ignoreAbortErrors as p,throwIfNotAbortError as m,isAbortError as h}from"../../../core/promiseUtils.js";import{watch as g,sync as _}from"../../../core/reactiveUtils.js";import{sqlAnd as v}from"../../../core/sql.js";import{getMetersPerUnitForSR as y}from"../../../core/units.js";import{property as b,subclass as x}from"../../../core/accessorSupport/decorators.js";import{UpdatingHandles as S}from"../../../core/support/UpdatingHandles.js";import C from"../../../geometry/Extent.js";import{fromJSON as w,getJsonType as T}from"../../../geometry/support/jsonUtils.js";import E from"../../../geometry/support/rotate.js";import{isCurvedGeometry as D}from"../../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as O}from"../../../geometry/support/curves/densifyCurvedGeometry.js";import ee from"../../../layers/effects/FeatureEffectView.js";import{convertFromFeature as k}from"../../../layers/graphics/featureConversionUtils.js";import A from"../../../layers/support/FeatureFilter.js";import{checkServiceCurrentUserSupport as te}from"../../../layers/support/featureLayerUtils.js";import{packFields as ne}from"../../../layers/support/fieldUtils.js";import{getEffectiveLayerCapabilities as re}from"../../../layers/support/layerUtils.js";import{combineTimeExtent as ie}from"../../../layers/support/timeSupport.js";import ae from"../../../rest/support/AggregateFeatureSet.js";import oe from"../../../rest/support/AttributeBinsFeatureSet.js";import se from"../../../rest/support/AttributeBinsQuery.js";import j from"../../../rest/support/FeatureSet.js";import M from"../../../rest/support/Query.js";import{HittestDrawHelper as N}from"../../../symbols/cim/CIMSymbolDrawHelper.js";import{resolveSymbolToCIM as P}from"../../../symbols/cim/CIMSymbolHelper.js";import{getDisplayedSymbol as F}from"../../../symbols/support/symbolUtils.js";import{LayerView2D as I}from"./LayerView2D.js";import{FeatureContainer as L}from"./features/FeatureContainer.js";import{createFeaturePipelineWorkerProxy as R}from"./features/FeaturePipelineWorkerProxy.js";import{FeatureSourceEventLog as z}from"./features/FeatureSourceEventLog.js";import{AnnotationLayerAdapter as B}from"./features/layerAdapters/AnnotationLayerAdapter.js";import{CatalogFootprintLayerAdapter as V}from"./features/layerAdapters/CatalogFootprintLayerAdapter.js";import{DimensionLayerAdapter as H}from"./features/layerAdapters/DimensionLayerAdapter.js";import{FeatureLayerAdapter as U}from"./features/layerAdapters/FeatureLayerAdapter.js";import{createFeatureIdInfo as W}from"./features/layerAdapters/featureServiceUtils.js";import{InMemoryLayerAdapter as G}from"./features/layerAdapters/InMemoryLayerAdapter.js";import{KnowledgeGraphSublayerAdapter as K}from"./features/layerAdapters/KnowledgeGraphSublayerAdapter.js";import{OGCFeatureLayerAdapter as ce}from"./features/layerAdapters/OGCFeatureLayerAdapter.js";import{OrientedImageryLayerAdapter as le}from"./features/layerAdapters/OrientedImageryLayerAdapter.js";import{ParquetLayerAdapter as ue}from"./features/layerAdapters/ParquetLayerAdapter.js";import{StreamLayerAdapter as de}from"./features/layerAdapters/StreamLayerAdapter.js";import{SubtypeGroupLayerAdapter as fe}from"./features/layerAdapters/SubtypeGroupLayerAdapter.js";import{createComplexSymbolInstances as q}from"./features/schema/processor/symbols/ComplexSymbolSchema.js";import{DebouncedFeatureOverride as J}from"./support/DebouncedFeatureOverride.js";import{FeatureCommandQueue as pe}from"./support/FeatureCommandQueue.js";import{createFilterSchemas as me}from"./support/FilterSchema.js";import{handleNoEngineError as Y}from"./support/handleNoEngineError.js";import{toJSONGeometryType as X}from"./support/util.js";import{getMapPointsFromScreen as he,getHittestType as Z}from"../support/hitTestUtils.js";import{FeatureTileSubscriptionManager as ge}from"../tiling/FeatureTileSubscriptionManager.js";import{RefreshableLayerView as _e}from"../../layers/RefreshableLayerView.js";import{getHighlightName as ve}from"../../support/highlightOptionsUtils.js";function ye(e,t){let n=new Set;return e&&e.forEach(e=>n.add(e)),t&&t.forEach(e=>n.add(e)),n.has(`*`)?[`*`]:Array.from(n)}const Q=4294967294;function be(e,t){return c(e.map(e=>g(()=>{let t=e();return t&&typeof t==`object`?`getTime`in t&&typeof t.getTime==`function`?t.getTime():JSON.stringify(t):t},t,_)))}function $(e){if(!e.geometry||!D(e.geometry))return e;let t=.001/y(e.geometry.spatialReference);return{geometry:O(e.geometry,{maxSegmentsPerCurve:12e3,maxSegmentLength:100*t,maxDeviation:0}),attributes:e.attributes}}const xe=c=>{let _=_e(I(c)),y=class extends _{constructor(){super(...arguments),this._commandsQueue=new pe({process:e=>{switch(e.type){case`override-batch`:return this._doOverride(e);case`update`:return this._doUpdate()}}}),this._visibilityOverrides=new Set,this._lastAvailableFields=[],this._lastTargetState=null,this._stationaryRotation=0,this._lastSnappingComplexityExceeded=!0,this.eventLog=new z,this._sourceRefreshVersion=1,this._displayRefreshVersion=1,this._pipelineUpdating=!1,this._editUpdatingHandles=new S,this._fields=null,this._hittestDrawHelper=null,this._sourceUpdating=!1,this.featureEffectView=new ee}destroy(){this._editUpdatingHandles.destroy(),this._workerProxy?.destroy(),this._workerAttached.reject(f()),this._commandsQueue.destroy(),this._hittestDrawHelper?.destroy()}initialize(){this._workerAttached=Promise.withResolvers(),p(this._workerAttached.promise),this.addResolvingPromise(this._initProxy()),this.featureEffectView.featureEffect=this.featureEffect,this.featureEffectView.endTransition()}async _initProxy(){let e=this.layer;if(`isTable`in e&&e.isTable)throw new o(`featurelayerview:table-not-supported`,`table feature layer can't be displayed`,{layer:e});if((e.type===`feature`||e.type===`subtype-group`)&&re(e)?.operations.supportsQuery===!1)throw new o(`featurelayerview:query-not-supported`,`layer view requires a layer with query capability`,{layer:e});this._workerProxy&&this._workerProxy.destroy();let t=this._createClientOptions();this._workerProxy=await R(t)}async _attachProxy(){let e=E(this.view.extent,this.view.rotation,this.view.center),t={tileInfoJSON:this.view?.featuresTilingScheme?.tileInfo?.toJSON(),initialViewExtent:e.toJSON()};try{await this._workerProxy.pipeline.onAttach(t),this._workerAttached.resolve()}catch(e){this._workerAttached.reject(f()),m(e)}}async _detachProxy(){return this._workerProxy.pipeline.onDetach()}async getWorker(){return await this._workerAttached.promise,this._workerProxy}get dataUpdating(){return this._sourceUpdating||this._editUpdatingHandles.updating}get hasAllFeatures(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryAllFeatures}get hasAllFeaturesInView(){let e=this.effectiveDisplayFilter?.where||null,t=!this.eventLog.willQueryAllFeatures&&e!=null&&e!==`1=1`;return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&!t}get hasFullGeometries(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryFullResolutionGeometry}get snappingComplexityExceeded(){if(this.eventLog.willQueryAllFeatures)return!1;let e=this.view.featuresTilingScheme.getClosestInfoForScale(this.view.scale).level,t=this.eventLog.getGeometryDensity(e),n=t?.sampleCount??0;return this.updating&&(this._lastSnappingComplexityExceeded||n<100)||(this._lastSnappingComplexityExceeded=t!=null&&n>0&&t.densePairCount/n>.95),this._lastSnappingComplexityExceeded}get layerAdapter(){switch(this.layer.type){case`annotation-feature`:return new B(this.layer);case`dimension-feature`:return new H(this.layer);case`feature`:return this.layer.source.type===`memory`?new G(this.layer):new U(this.layer);case`geojson`:case`csv`:case`wfs`:return new G(this.layer);case`parquet`:return new ue(this.layer);case`subtype-group`:return new fe(this.layer);case`ogc-feature`:return new ce(this.layer);case`stream`:return new de(this.layer);case`oriented-imagery`:return new le(this.layer);case`knowledge-graph-sublayer`:return new K(this.layer);case`catalog-footprint`:return new V(this.layer);default:this.layer}return null}get timeExtent(){return ie(this.layerAdapter.timeOptions,this.view?.timeExtent,this._get(`timeExtent`))}get usedMemory(){return this.container.usedMemory+this.eventLog.pipelineStatistics.usedMemory}getDisplayStatistics(e,t){return this.featureContainer?.getDisplayStatistics(e,t)}highlight(e,t){let r=ve(t),o;if(e instanceof A)o=e;else{let t;e instanceof n?t=[e.getObjectId()]:typeof e==`number`||typeof e==`string`?t=[e]:a.isCollection(e)&&e.length>0?t=e.map(e=>e?.getObjectId()).toArray():Array.isArray(e)&&e.length>0&&(t=typeof e[0]==`number`||typeof e[0]==`string`?e:e.map(e=>e?.getObjectId()));let r=t?.filter(i);if(!r?.length)return s();o=new A({objectIds:r})}let c=this._addHighlightFilter(o,r);return s(()=>!this.destroyed&&this._removeHighlight(c))}async hitTest(e,i,a){let o=Z(i);if(!o)return null;let s=o===`point`,{trueHitIds:c,candidateHitIds:l}=await this.featureContainer.hitTest(i,a??null),u=await this.getWorker(),[d,f]=await Promise.all([u.pipeline.getDisplayFeatures(l),u.pipeline.getDisplayFeatures(c)]),{features:p,aggregates:m,tracks:h}=d,{features:g,aggregates:_,tracks:v}=f,y=s?p:this.hasRenderer()?await this._filterCandidateHits(p,i,o):[],b=[...g,...y],x=[..._,...m],S=[...v,...h],C=this.featureContainer.getSortKeys(b.map(e=>e.displayId)),w=({displayId:e},{displayId:t})=>C.has(e)&&C.has(t)?C.get(e)-C.get(t):e-t;return b.sort(w).reverse(),x.sort(w).reverse(),[...x.map(n=>this._createAggregateGraphicHit(e,t.fromJSON(n))),...S.map(t=>this._createTrackGraphicHit(e,r.fromJSON(t))),...b.map(t=>this._createFeatureGraphicHit(s?e:null,n.fromJSON(t)))]}async _filterCandidateHits(e,t,r){let i=[],a=new n,{resolution:o,rotation:s}=this.view.state,c=he(this.view,t);for(let t of e){a.attributes=t.attributes,a.geometry=w(t.geometry),a.symbol=null;let e=this.layerAdapter.getRenderer(a);if(!e){i.push(t);continue}let n=await F(a,{renderer:e,scale:this.view.scale,resolution:this.view.resolution,spatialReference:this.view.spatialReference,viewingMode:`2d`,timeZone:this.view.timeZone});if(!n)continue;let l=await P(n,null,this.view.spatialReference,T(t.geometry),{scale:this.view.scale,viewingMode:`2d`});if(!l)continue;let u=this.view.stage.cimAnalyzer.analyzeSymbolReference({type:`CIMSymbolReference`,symbol:l},!1).some(e=>`alignment`in e&&e.alignment===0);this._hittestDrawHelper??=new N(this.view.stage.painter.textureManager.resourceManager);let d={hittestType:r,textInfo:null,mapRotation:s,resolution:o,searchDist:0,isScreenAligned:u};this._hittestDrawHelper.hitTest(c,l,t.geometry,d)&&i.push(t)}return i}async queryAggregateSummaryStatistics(e,t,n){let r={...t,scale:this.view.scale},i=(await this.getWorker()).aggregates.executeQueryForSummaryStatistics(this._cleanUpAggregateQuery(e),r,n);return Y(i,{})}async queryUniqueValues(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForUniqueValues(this._cleanUpQuery(e),i,n);return Y(a,{uniqueValueInfos:[]})}async queryAggregateUniqueValues(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForUniqueValues(this._cleanUpAggregateQuery(e),i,n);return Y(a,{uniqueValueInfos:[]})}async queryAggregateClassBreaks(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForClassBreaks(this._cleanUpAggregateQuery(e),i,n);return Y(a,{classBreakInfos:[]})}async queryHistogram(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForHistogram(this._cleanUpQuery(e),i,n);return Y(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}async queryAggregateCount(e,t){let n=(await this.getWorker()).aggregates.executeQueryForCount(this._cleanUpAggregateQuery(e),t);return Y(n,0)}async queryAggregateHistogram(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForHistogram(this._cleanUpAggregateQuery(e),i,n);return Y(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}async queryAggregateIds(e,t){let n=(await this.getWorker()).aggregates.executeQueryForIds(this._cleanUpAggregateQuery(e),t);return Y(n,[])}async queryAggregateJSON(e,t){let n=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t);return Y(n,{features:[]})}async queryAttributeBins(e,t){let n=(await this.getWorker()).features.executeAttributeBinsQuery(this._cleanUpAttributeBinsQuery(e),t),r=await Y(n,{features:[]});return oe.fromJSON(r)}async queryAggregates(e,t){let n=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t),r=await Y(n,{features:[]}),i=ae.fromJSON(r);return i.features.forEach(e=>this.layerAdapter.setAggregateGraphicOrigin?.(e)),i}async queryClassBreaks(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForClassBreaks(this._cleanUpQuery(e),i,n);return Y(a,{classBreakInfos:[]})}async queryExtent(e,t){let n=(await this.getWorker()).features.executeQueryForExtent(this._cleanUpQuery(e),t),r=await Y(n,{count:0,extent:null});return{count:r.count,extent:C.fromJSON(r.extent)}}async queryFeatureCount(e,t){let n=(await this.getWorker()).features.executeQueryForCount(this._cleanUpQuery(e),t);return Y(n,0)}queryFeatures(e,t){return this.queryFeaturesJSON(e,t).then(e=>{let t=j.fromJSON(e);return t.features.forEach(e=>this._setOriginForFeature(e)),t})}async queryFeaturesJSON(e,t){let n=(await this.getWorker()).features.executeQuery(this._cleanUpQuery(e),t);return Y(n,{features:[]})}async queryHeatmapStatistics(e){return(await this.getWorker()).pipeline.queryHeatmapStatistics(e)}async queryObjectIds(e,t){let n=(await this.getWorker()).features.executeQueryForIds(this._cleanUpQuery(e),t);return Y(n,[])}async queryStatistics(){let e=await this.getWorker();return Y(e.pipeline.queryStatistics(),{featureCount:0,ringCount:0,vertexCount:0})}async querySummaryStatistics(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForSummaryStatistics(this._cleanUpQuery(e),i,n);return Y(a,{})}async queryVisibleFeatures(e,t){let n=(await this.getWorker()).pipeline.queryVisibleFeatures(this._cleanUpQuery(e),t),r=await Y(n,{features:[]}),i=j.fromJSON(r);return i.features.forEach(e=>this._setOriginForFeature(e)),i}async getSampleFeatures(e){return(await this.getWorker()).pipeline.getSampleFeatures(e)}setVisibility(e,t){t?this._visibilityOverrides.delete(e):this._visibilityOverrides.add(e),this._update()}update(e){if(!this._subscriptions)return;this.view.animation&&!this._lastTargetState&&(this._lastTargetState=e.state.clone()),!this.view.animation&&this._lastTargetState&&(this._lastTargetState=null);let t=this.featureContainer.getPresenting(),n=this._subscriptions.update(e.targetState,this._lastTargetState,t);n&&(this.featureContainer.updateSubscriptions(n),p(this._updatingHandles.addPromise(this.getWorker().then(e=>e.pipeline.updateSubscriptions(n))))),this._subscriptions.coverage&&this.featureContainer.setCoverage(this._subscriptions.coverage)}attach(){has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.attach`),p(this._updatingHandles.addPromise(this._workerAttached.promise)),p(this._attachProxy()),this.featureContainer=new L(this),this.container.addChild(this.featureContainer),this.view.timeline.record(`${this.layer.title} (FeatureLayer) Attach`),this._subscriptions=new ge(this.view.featuresTilingScheme),this._stationaryRotation=this.view.rotation,this.requestUpdate(),this.addAttachHandles([be([()=>this._displayRefreshVersion,()=>`displayFilterInfo`in this.layer&&this.layer.displayFilterInfo,()=>this.timeExtent,()=>this.clips,()=>this.filter,()=>this.effectiveDisplayFilterClause,()=>this.featureEffect,()=>this._sourceRefreshVersion,()=>this.view.timeZone,()=>this.view.timeExtent,...this.layerAdapter.getUpdateHashProperties(this.view)],()=>this._update()),g(()=>this.updateSuspended,e=>{e||this._subscriptions.resume(this.featureContainer.getPresenting())}),g(()=>this.view.stationary,e=>{if(!e)return;let t=this.view.rotation;t!==this._stationaryRotation&&(this._stationaryRotation=t,this._update()),this.getWorker().then(e=>{if(this.destroyed)return;let t=E(this.view.extent,this.view.rotation,this.view.center);return e.pipeline.updateViewExtent(t.toJSON(),this.featureContainer.requiresRefresh)}).catch(()=>{})})]),this._update(),this.layer.type!==`stream`&&this.layer.type!==`parquet`&&this.layer.type!==`catalog-footprint`&&this.addAttachHandles(this.layer.on(`edits`,e=>this._editUpdatingHandles.addPromise(this._edit(e))))}emitFirstDraw(e){this.emit(`first-draw`,{timestamp:e})}detach(){has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.detach`),this._detachProxy(),this._fields=null,this.featureContainer.destroy(),this.featureContainer=null,this._commandsQueue.clear(),this.container.removeAllChildren(),this._subscriptions=u(this._subscriptions),this._workerProxy.pipeline.onDetach(),this._workerAttached=Promise.withResolvers(),p(this._workerAttached.promise),this._lastAvailableFields=[],this._lastSchema=null}viewChange(){this.requestUpdate()}moveEnd(){this.requestUpdate()}addOverrides(e){return this._commandsQueue.push({type:`override`,options:{...e,release:[]}})}removeOverrides(e){for(let t of e)if(t==null)throw new o(`featurelayerview:bad-override`,`Tried to remove an override for an invalid objectId`,{objectId:t});let t={added:[],updated:[],removed:[],release:e,isWeak:!1,historicMoment:null};return this._commandsQueue.push({type:`override`,options:t})}onProxyClientEvent(e){}hasRenderer(){return`renderer`in this.layer&&this.layer.renderer!=null}isUpdating(){let e=this.hasRenderer(),t=this._commandsQueue.updateTracking.updating,n=this._updatingRequiredPromise!=null,r=this.featureContainer.updating;return this.updateRequested||e&&(t||n)||r||this._pipelineUpdating||this.dataUpdating}_createClientOptions(){let e=this;return{updateSchemaStart(){return e.updateSchemaStart()},updateSchemaEnd(t){return e.updateSchemaEnd(t)},openMemoryPorts:async()=>{if(this.layerAdapter?.openMessagePorts){let e=await this.layerAdapter.openMessagePorts();return{result:e,transferList:e}}throw Error(`InternalError: Layer adapter does not support opening message ports`)},openGlyphPorts:async()=>{let t=await e.container.stage.textureManager.openMessagePorts();return{result:t,transferList:t}},get container(){return e.featureContainer},setUpdating:e=>{this._set(`_pipelineUpdating`,e.pipeline),this._set(`_sourceUpdating`,e.source)},emitEvent:e=>{this.onProxyClientEvent(e)},get eventLog(){return e.eventLog},fetch:async t=>{if(has(`esri-2d-stabilize-glyphs`)){let n=[];for(let r of t)n.push(await e.view.stage.painter.textureManager.rasterizeItem(r));return n}return Promise.all(t.map(t=>e.view.stage.painter.textureManager.rasterizeItem(t)))},fetchDictionary:e=>Promise.all(e.map(e=>this._fetchDictionaryRequest(e))),fetchMesh:e=>Promise.all(e.map(e=>this._fetchMeshRequest(e)))}}async _fetchDictionaryRequest(e){try{if(!(`renderer`in this.layer)||!this.layer.renderer||this.layer.renderer.type!==`dictionary`)throw Error(`InternalError: Expected renderer to be of type 'dictionary'`);let t=this.layer.renderer,n=this._lastSchema.processor.mesh.factory.symbology;if(n.type!==`dictionary`)throw Error(`InternalError: Expected schema to be of type 'dictionary'`);let r={cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,store:this.featureContainer.instanceStore,scaleExpression:n.scaleExpression,viewRotation:this._stationaryRotation};this._fields||=this.layer.fields.map(e=>e.toJSON());let i=n.visualVariableUniforms,a=X(this.layer.geometryType),o=await t.getSymbolForControlString(e.controlString,a,!1);return!o||!o.data?{type:`dictionary-response`,meshes:[]}:{type:`dictionary-response`,meshes:await q({...o.data,hasTextStringTemplates:!0},{uniforms:i,path:`renderer`,schemaOptions:r})}}catch{return{type:`dictionary-response`,meshes:[]}}}async _fetchMeshRequest(e){let{layer:t}=this;try{let n={cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,store:this.featureContainer.instanceStore,scaleExpression:null,viewRotation:this._stationaryRotation};return this._fields||=t.fields.map(e=>e.toJSON()),{type:`mesh-response`,meshes:await q({...e.symbolReference,hasTextStringTemplates:!0},{path:`anno-like`,schemaOptions:n,uniforms:{visualVariableColor:null,visualVariableOpacity:null,visualVariableRotation:null,visualVariableSizeStops:null,visualVariableSizeScaleStops:null,visualVariableSizeOutlineScaleStops:null,visualVariableSizeUnitValue:null,visualVariableSizeMinMaxValue:null}})}}catch{return{type:`mesh-response`,meshes:[]}}}_cleanUpQuery(e){let t=M.from(e)||this.createQuery();return t.outSpatialReference||=this.view.spatialReference,`returnZ`in this.layer&&(t.returnZ??=this.layer.returnZ),`returnM`in this.layer&&(t.returnM??=this.layer.returnM),t.toJSON()}_cleanUpAttributeBinsQuery(e){let t=se.from(e);return t.outSpatialReference||=this.view.spatialReference,t.toJSON()}_cleanUpAggregateQuery(e){let t=M.from(e)||this.createAggregateQuery();t.outSpatialReference||=this.view.spatialReference;let n=t.objectIds??[];for(let e of t.aggregateIds??[])n.push(e);return t.objectIds=n,t.aggregateIds=[],t.toJSON()}async _update(){return this._commandsQueue.push({type:`update`})}_edit(e){return this._commandsQueue.push({type:`edit`,event:e})}async doRefresh(e){this.attached&&(!this.updateSuspended||!e)&&(e?this.incrementSourceRefreshVersion():this.incrementDisplayRefreshVersion())}incrementSourceRefreshVersion(){this._sourceRefreshVersion=(this._sourceRefreshVersion+1)%Q+1}incrementDisplayRefreshVersion(){this._displayRefreshVersion=(this._displayRefreshVersion+1)%Q+1}async _resolveIdenifiers(e){let t=[],n=[];for(let r of e)r.objectId!=null&&r.objectId!==-1?t.push(r.objectId):r.globalId==null?l.getLogger(this).warn(`mapview-apply-edits`,`A feature identifier must contain either a GlobalId or ObjectId. Ignoring`,{identifier:r}):n.push(r.globalId);let r=`globalIdField`in this.layer&&this.layer.globalIdField,i=r&&this.availableFields.includes(r);if(n.length&&!i)return l.getLogger(this).error(new o(`mapview-apply-edits`,`Editing the specified service requires the layer's globalIdField, ${r} to be included the layer's outFields for updates to be reflected on the map`)),t;if(n.length){let e=await this._workerProxy.pipeline.getObjectIdsFromGlobalIds(n);for(let n of e)t.push(n)}return t}_resolveOverrides(e){let t=X(this.layer.geometryType),n=W(this.layer),r=[];for(let i of e.added){let e=k($(i),t,!1,!1,n);if(e.objectId==null)throw new o(`featurelayerview:bad-override`,`Feature does not have an objectId`,{feature:i});r.push(e)}for(let i of e.updated){let e=k($(i),t,!1,!1,n);if(e.objectId==null)throw new o(`featurelayerview:bad-override`,`Feature does not have an objectId`,{feature:i});r.push(e)}for(let t of e.removed)if(t==null)throw new o(`featurelayerview:bad-override`,`Tried to remove an invalid objectId`,{objectId:t});return{type:`override`,updates:r,removed:e.removed,release:e.release,isWeak:e.isWeak??!1,historicMoment:e.historicMoment??null}}async _resolveEdit(e){let t=this.layer,n=e.historicMoment?.getTime()??null,r=`layerId`in t&&e.editedFeatures?.find(e=>e.layerId===t.layerId);if(r&&this._canEditByFeature(r)){let{adds:e,deletes:t,updates:i}=r.editedFeatures,a=this.layer.objectIdField,o=i.map(e=>e.current),s=t.map(e=>`attributes`in e?{objectId:a?e.attributes[a]:null}:e),c=await this._resolveIdenifiers(s);return this._resolveOverrides({added:e,updated:o,removed:c,historicMoment:n,isWeak:!0,release:[]})}let[i,a,o]=await Promise.all([this._resolveIdenifiers(e.addedFeatures),this._resolveIdenifiers(e.updatedFeatures),this._resolveIdenifiers(e.deletedFeatures)]);return{type:`override-by-id`,updates:[...i,...a],removed:o,historicMoment:n,isWeak:!0}}_canEditByFeature(e){let{adds:t,updates:n}=e.editedFeatures;return t.every(e=>this.view.spatialReference.equals(e.geometry?.spatialReference))&&n.every(e=>this.view.spatialReference.equals(e.current.geometry?.spatialReference))}async updateSchemaStart(){let e=this.layer;`featureReduction`in e&&e.featureReduction&&e.featureReduction!==this._lastFeatureReduction&&(e.featureReduction=e.featureReduction?.clone(),this._lastFeatureReduction=e.featureReduction);try{if(await Promise.allSettled([this._handleChange(),te(e)]),this.destroyed||!this.layerAdapter?.hasRequiredSupport||!this._subscriptions)return null;let t=this.featureContainer.updateStart(e.type===`subtype-group`);this._lastFeatureEffect=this.featureEffect;let n={store:t,cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,scaleExpression:void 0,viewRotation:this._stationaryRotation},r=await this._createViewSchemaConfig(),i={source:await this.layerAdapter.createSourceSchema(r,this._sourceRefreshVersion),processor:await this.layerAdapter.createProcessorSchema(n,r,this._displayRefreshVersion)};return d(this._lastSchema?.source.strategy,i.source.strategy)||d(this._lastSchema?.processor,i.processor)?(this._lastSchema=i,this._fields=null,i):null}catch{}return null}async updateSchemaEnd(e){try{this.featureEffectView.featureEffect=this._lastFeatureEffect,e&&this.featureEffectView.endTransition(),await this.featureContainer.updateEnd(this._lastSchema.processor,this.layerAdapter.getLabelingDeconflictionInfo(),e),has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.updateEnd`)}catch{}}async _doUpdate(){let e=Math.round(performance.now());await(await this.getWorker()).pipeline.updateSchema(e),this.requestUpdate()}async _doOverride(e){let t=await this.getWorker();try{let n=new J;for(let r of e.messages)switch(r.type){case`edit`:n.tryAdd(await this._resolveEdit(r.event))||(await t.pipeline.onOverride(n.toMessage()),n=new J,n.tryAdd(await this._resolveEdit(r.event)));break;case`override`:n.tryAdd(this._resolveOverrides(r.options))||(await t.pipeline.onOverride(n.toMessage()),n=new J,n.tryAdd(this._resolveOverrides(r.options)))}await t.pipeline.onOverride(n.toMessage())}catch(e){h(e)}}_getEffectiveAvailableFields(e){let t=ye(this._lastAvailableFields,e);return this._lastAvailableFields=t,ne(this.layer.fieldsIndex,t)}async _createViewSchemaConfig(){let e=this.requiresCurrentUser?await this.signedInUser:null,t=D(this.view,this.layerAdapter,this.timeExtent,this._visibilityOverrides,this.filter,this.effectiveDisplayFilterClause),n=this.featureEffect?.filter?.toJSON()??null,r=this._getHighlightFilterGroups().map(({order:e,filters:t})=>({order:e,filters:t.map(e=>e.toJSON())})),i=me({layerFilter:t,effectFilter:n,highlightFilters:r});return{availableFields:this._getEffectiveAvailableFields(this.availableFields),displayFilterEnabled:this.displayFilterEnabled,filters:i,scale:this.view.scale,timeZone:this.view.timeZone,timeExtent:this.view.timeExtent,currentUser:e,spatialReference:this.view.spatialReference,extent:this.view.extent,returnZ:this.hasZ,returnM:this.hasM}}_onHighlightChange(){this._commandsQueue.push({type:`update`})}_setOriginForFeature(e){e.layer=e.sourceLayer=this.layer,this.layerAdapter.setGraphicOrigin(e)}_createFeatureGraphicHit(e,t){return this._setOriginForFeature(t),this._createGraphicHit(e,t)}_createTrackGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setTrackGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createAggregateGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setAggregateGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createGraphicHit(e,t){return t.geometry!=null&&(t.geometry.spatialReference=this.view.spatialReference),{type:`graphic`,graphic:t,layer:this.layer,mapPoint:e}}};e([b()],y.prototype,`_commandsQueue`,void 0),e([b()],y.prototype,`_sourceRefreshVersion`,void 0),e([b()],y.prototype,`_displayRefreshVersion`,void 0),e([b({readOnly:!0})],y.prototype,`_pipelineUpdating`,void 0),e([b()],y.prototype,`_sourceUpdating`,void 0),e([b({readOnly:!0})],y.prototype,`dataUpdating`,null),e([b({readOnly:!0})],y.prototype,`hasAllFeatures`,null),e([b({readOnly:!0})],y.prototype,`hasAllFeaturesInView`,null),e([b({readOnly:!0})],y.prototype,`hasFullGeometries`,null),e([b({readOnly:!0})],y.prototype,`snappingComplexityExceeded`,null),e([b()],y.prototype,`featureEffectView`,void 0),e([b()],y.prototype,`layerAdapter`,null),e([b({readOnly:!0})],y.prototype,`timeExtent`,null),y=e([x(`esri.views.2d.layers.FeatureLikeLayerView2D`)],y);function D(e,t,n,r,i,a){i&&=i.clone();let o=i==null?null:i.timeExtent,s=n!=null&&o!=null?n.intersection(o):n||o;s&&(i??=new A,i.timeExtent=s),i=t.addFilters?.(i,e)??i,a&&(i??=new A,i.where=v(i.where,a));let c=i?.toJSON()??null;return r.size&&(c??=new A().toJSON(),c.hiddenIds=Array.from(r)),c}return y};export{xe as FeatureLikeLayerView2D};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../core/Collection.js";import{referenceSetter as n}from"../../../core/collectionUtils.js";import{deprecatedFunction as r}from"../../../core/deprecate.js";import i from"../../../core/Error.js";import"../../../core/has.js";import a from"../../../core/Logger.js";import{watch as o,syncAndInitial as s,sync as c}from"../../../core/reactiveUtils.js";import{property as l,subclass as u}from"../../../core/accessorSupport/decorators.js";import{
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../core/Collection.js";import{referenceSetter as n}from"../../../core/collectionUtils.js";import{deprecatedFunction as r}from"../../../core/deprecate.js";import i from"../../../core/Error.js";import"../../../core/has.js";import a from"../../../core/Logger.js";import{watch as o,syncAndInitial as s,sync as c}from"../../../core/reactiveUtils.js";import{property as l,subclass as u}from"../../../core/accessorSupport/decorators.js";import{isInEffectiveScaleRange as d}from"../../../geometry/support/scaleUtils.js";import{isLinkChartView as f}from"../../../linkChart/guards.js";import{Container as p}from"../engine/Container.js";import{ClipMesh as m}from"../engine/webgl/ClipMesh.js";import{maxHighlightGroups as h}from"../engine/webgl/definitions.js";import{HighlightRegistry as g}from"./support/HighlightRegistry.js";import{createOrReuseHighlightGradient as _}from"./support/util.js";import v from"../../layers/support/ClipRect.js";import y from"../../layers/support/GeometryClipArea.js";import b from"../../layers/support/Path.js";import{defaultHighlightName as x}from"../../support/HighlightDefaults.js";import S from"../../support/HighlightOptions.js";const C=t.ofType({key:`type`,base:null,typeMap:{rect:v,path:b,geometry:y}}),w=new(t.ofType(S)),T=v=>{let y=v,b=class extends y{constructor(){super(...arguments),this._highlightRegistry=new g,this.attached=!1,this.clips=new C,this.highlights=null,this.lastUpdateId=-1,this.moving=!1,this.updateRequested=!1,this._visibleAtCurrentScale=!0}initialize(){let e=this.view?.spatialReferenceLocked??!0;this.view?.spatialReference&&e&&!this.spatialReferenceSupported?this.addResolvingPromise(Promise.reject(new i(`layerview:spatial-reference-incompatible`,`The spatial reference of this layer does not meet the requirements of the view`,{layer:this.layer}))):(this.container||=new p,this.container.fadeTransitionEnabled=!0,this.container.visible=!1,this.container.endTransitions(),this.addHandles([o(()=>this.suspended,e=>{this.container&&(this.container.visible=!e)},s),o(()=>this.updateSuspended,e=>{this.view&&!e&&this.updateRequested&&this.view.requestUpdate()},s),o(()=>this.layer?.opacity??1,e=>{this.container&&(this.container.opacity=e)},s),o(()=>this.layer&&`blendMode`in this.layer?this.layer.blendMode:`normal`,e=>{this.container&&(this.container.blendMode=e)},s),o(()=>this.layer&&`effect`in this.layer?this.layer.effect:null,e=>{this.container&&(this.container.effect=e)},s),o(()=>this._effectiveHighlightOptions.items.map(e=>({name:e.name,options:{fillColor:e.color,haloColor:e.haloColor,fillOpacity:e.fillOpacity,haloOpacity:e.haloOpacity,haloWidth:e.haloWidth,haloBlur:e.haloBlur}})),()=>{this.container.highlightGradient=_(this.container.highlightGradient,this._effectiveHighlightOptions.items)},s),o(()=>this._getHighlightFilterGroups(),()=>this._onHighlightChange(),c),o(()=>this.clips.map(e=>e.version),async()=>{if(this.container&&this.view?.spatialReference){let e=this.view.featuresTilingScheme,t=await this._updatingHandles.addPromise(Promise.all(this.clips.items.map(t=>m.create(t,e))));for(let e of this.container.clips)e.destroy();this.container.clips=t.filter(e=>!!e)}},s),o(()=>({scale:this.view?.scale,scaleRange:this.layer&&`effectiveScaleRange`in this.layer?this.layer.effectiveScaleRange:null}),({scale:e,scaleRange:t})=>{let n=d(t,e);n!==this._visibleAtCurrentScale&&(this._visibleAtCurrentScale=n)},s),o(()=>this.layer?.effectiveVisible,async e=>{this.container.requestDeclutter()})],`constructor`),this.view?.whenLayerView?this.view.whenLayerView(this.layer).then(e=>{e===this&&this.processAttach()},()=>{}):this.when().then(()=>{this.processAttach()},()=>{}))}destroy(){this.processDetach(),this.updateRequested=!1;for(let e of this.container?.clips??[])e.destroy()}get highlightOptions(){return this._logHighlightOptionsDeprecation(),this.highlights?.find(({name:e})=>e===x)}set highlightOptions(e){if(this._logHighlightOptionsDeprecation(),!this.highlights){if(!e)return;this.highlights=new t([new S])}let n=this.highlights.find(({name:e})=>e===x);e?n?.assignFrom(e):(this.highlights.remove(n),this.highlights.length===0&&(this.highlights=null))}_logHighlightOptionsDeprecation(){r(a.getLogger(this),"`LayerView.highlightOptions` is deprecated in favor of View.highlights",{replacement:`View.highlights`,version:`4.34`,see:`https://arcg.is/inbTa1#highlights`,warnOnce:!0})}get hasHighlight(){return this._highlightRegistry.size>0}get _effectiveHighlightOptions(){if(!this.view)return w;if(!this.highlights)return this.view.highlights;let e=this.view.highlights.clone();for(let t of this.highlights){let n=e.find(e=>e.name===t.name);n&&n.assignFrom(t)}return e}get highlightIds(){return this._highlightRegistry.highlightIds}get scheduler(){return this.view.scheduler}get spatialReferenceSupported(){let e=this.view?.spatialReference;return e==null||this.supportsSpatialReference(e)}get updating(){return this.spatialReferenceSupported?this.attached?this.suspended?!1:this.updateRequested||this.isUpdating()||this._updatingHandles?.updating||this.container.transitioning:!0:!1}get visibleAtCurrentScale(){return this._visibleAtCurrentScale}processAttach(){this.isResolved()&&!this.attached&&!this.destroyed&&this.spatialReferenceSupported&&(this.attach(),this.attached=!0,this.requestUpdate())}processDetach(){this.attached&&(this.attached=!1,this.removeHandles(`attach`),this.detach(),this.updateRequested=!1)}requestUpdate(){this.destroyed||this.updateRequested||(this.updateRequested=!0,this.updateSuspended||this.view.requestUpdate())}processUpdate(e){this.isFulfilled()&&!this.isResolved()?this.updateRequested=!1:(this._set(`updateParameters`,e),this.updateRequested&&!this.updateSuspended&&(this.updateRequested=!1,this.update(e)))}hitTest(e,t,n){return Promise.resolve(null)}supportsSpatialReference(e){return!0}canResume(){if(!this.spatialReferenceSupported)return!1;switch(this.layer?.type){case`link-chart`:case`knowledge-graph-sublayer`:case`graphics`:break;default:if(f(this.view)&&!this.view.inGeographicLayout)return!1}return super.canResume()?this.visibleAtCurrentScale:!1}getSuspendInfo(){let e=super.getSuspendInfo(),t=!this.spatialReferenceSupported;return t&&(e.spatialReferenceNotSupported=t),e}addAttachHandles(e){this.addHandles(e,`attach`)}_addHighlightFilter(e,t){return this._highlightRegistry.register(t,e)}_removeHighlight(e){this._highlightRegistry.unregister(e)}_onHighlightChange(){}_getHighlightFilterGroups(){let e=[];for(let{name:t,filters:n}of this._highlightRegistry.highlightGroups){let r=this._effectiveHighlightOptions.findIndex(e=>e.name===t);r<0||r>=h||e.push({order:r,filters:n})}return e}};return e([l()],b.prototype,`attached`,void 0),e([l({type:C,set(e){let t=n(e,this._get(`clips`),C);this._set(`clips`,t)}})],b.prototype,`clips`,void 0),e([l()],b.prototype,`container`,void 0),e([l({type:S})],b.prototype,`highlightOptions`,null),e([l({type:t.ofType(S)})],b.prototype,`highlights`,void 0),e([l()],b.prototype,`_effectiveHighlightOptions`,null),e([l()],b.prototype,`moving`,void 0),e([l({readOnly:!0})],b.prototype,`spatialReferenceSupported`,null),e([l({readOnly:!0})],b.prototype,`updateParameters`,void 0),e([l()],b.prototype,`updateRequested`,void 0),e([l()],b.prototype,`updating`,null),e([l()],b.prototype,`view`,void 0),e([l()],b.prototype,`_visibleAtCurrentScale`,void 0),e([l({readOnly:!0})],b.prototype,`visibleAtCurrentScale`,null),b=e([u(`esri.views.2d.layers.LayerView2D`)],b),b};export{T as LayerView2D};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import n from"../../../../core/CircularArray.js";import{EventEmitter as r}from"../../../../core/Evented.js";import i from"../../../../core/Logger.js";import a from"../../../../core/ReactiveMap.js";import{property as o,subclass as s}from"../../../../core/accessorSupport/decorators.js";let c=class extends t{constructor(){super(...arguments),this.events=new r,this._updatingStrategy=!0,this._tileToEvent=new a,this._fetchStatus={outstanding:0,done:0},this._pipelineStatistics={type:`performance`,usedMemory:0}}get hasAllData(){return!this._updatingStrategy&&this._hasAllTileData()}get pipelineStatistics(){return this._pipelineStatistics}get willQueryAllFeatures(){return this._strategyInfo?.willQueryAllFeatures??!1}get willQueryFullResolutionGeometry(){return this._strategyInfo?.willQueryAllFeatures??!1}onEvent(e){switch(e.type){case`subscribe`:case`unsubscribe`:case`loaded`:case`error`:this._handleTileEvent(e);break;case`updateStrategyStart`:this._updatingStrategy=!0,this._fetchStatus={done:0,outstanding:0},this._strategyInfo=e.about;break;case`updateStrategyEnd`:this._updatingStrategy=!1;break;case`updateFieldsStart`:this._fetchStatus={done:0,outstanding:0};break;case`updateFieldsEnd`:break;case`updateFieldsError`:this.events.emit(`error`,e);break;case`fetchStart`:this._fetchStatus.outstanding+=1,this.events.emit(`status`,this._fetchStatus);break;case`fetchEnd`:this._fetchStatus.done+=1,this.events.emit(`status`,this._fetchStatus),e.done&&(this._fetchStatus={done:0,outstanding:0});break;case`performance`:this._pipelineStatistics=e}}_hasAllTileData(){for(let e of this._tileToEvent.values())if(e.peekLast()?.type!==`loaded`)return!1;return!0}_handleTileEvent(e){switch(e.type){case`subscribe`:{let t=new n(10);t.enqueue(e),this._tileToEvent.set(e.tile,t);break}case`unsubscribe`:this._tileToEvent.delete(e.tile);break;case`loaded`:{let t=this._tileToEvent.get(e.tile);if(!t)return;t.enqueue(e),this._tileToEvent.set(e.tile,t);break}case`error`:{let t=this._tileToEvent.get(e.tile);if(!t)return;t.enqueue(e),this._tileToEvent.set(e.tile,t),this.events.emit(`error`,e),i.getLogger(this).error(`Failed to load tile ${e.tile}.`,{error:e.error});break}}}};e([o({readOnly:!0})],c.prototype,`hasAllData`,null),e([o()],c.prototype,`pipelineStatistics`,null),e([o()],c.prototype,`willQueryAllFeatures`,null),e([o()],c.prototype,`willQueryFullResolutionGeometry`,null),e([o()],c.prototype,`_updatingStrategy`,void 0),e([o()],c.prototype,`_strategyInfo`,void 0),e([o()],c.prototype,`_tileToEvent`,void 0),e([o()],c.prototype,`_pipelineStatistics`,void 0),c=e([s(`esri.views.2d.layers.features.FeatureSourceEventLog`)],c);export{c as FeatureSourceEventLog};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import n from"../../../../core/CircularArray.js";import{EventEmitter as r}from"../../../../core/Evented.js";import i from"../../../../core/Logger.js";import a from"../../../../core/ReactiveMap.js";import{property as o,subclass as s}from"../../../../core/accessorSupport/decorators.js";let c=class extends t{constructor(){super(...arguments),this.events=new r,this._updatingStrategy=!0,this._tileToEvent=new a,this._fetchStatus={outstanding:0,done:0},this._pipelineStatistics={type:`performance`,usedMemory:0},this._densityByLevel=new a}get hasAllData(){return!this._updatingStrategy&&this._hasAllTileData()}get pipelineStatistics(){return this._pipelineStatistics}get willQueryAllFeatures(){return this._strategyInfo?.willQueryAllFeatures??!1}get willQueryFullResolutionGeometry(){return this._strategyInfo?.willQueryAllFeatures??!1}getGeometryDensity(e){return this._densityByLevel.get(e)}onEvent(e){switch(e.type){case`subscribe`:case`unsubscribe`:case`loaded`:case`error`:this._handleTileEvent(e);break;case`updateStrategyStart`:this._updatingStrategy=!0,this._fetchStatus={done:0,outstanding:0},this._strategyInfo=e.about,this._densityByLevel.clear();break;case`updateStrategyEnd`:this._updatingStrategy=!1;break;case`updateFieldsStart`:this._fetchStatus={done:0,outstanding:0};break;case`updateFieldsEnd`:break;case`updateFieldsError`:this.events.emit(`error`,e);break;case`fetchStart`:this._fetchStatus.outstanding+=1,this.events.emit(`status`,this._fetchStatus);break;case`fetchEnd`:this._fetchStatus.done+=1,this.events.emit(`status`,this._fetchStatus),e.done&&(this._fetchStatus={done:0,outstanding:0});break;case`performance`:this._pipelineStatistics=e;break;case`chunk`:{let t=this._densityByLevel.get(e.level);this._densityByLevel.set(e.level,{sampleCount:(t?.sampleCount??0)+e.density.sampleCount,densePairCount:(t?.densePairCount??0)+e.density.densePairCount});break}}}_hasAllTileData(){for(let e of this._tileToEvent.values())if(e.peekLast()?.type!==`loaded`)return!1;return!0}_handleTileEvent(e){switch(e.type){case`subscribe`:{let t=new n(10);t.enqueue(e),this._tileToEvent.set(e.tile,t);break}case`unsubscribe`:this._tileToEvent.delete(e.tile);break;case`loaded`:{let t=this._tileToEvent.get(e.tile);if(!t)return;t.enqueue(e),this._tileToEvent.set(e.tile,t);break}case`error`:{let t=this._tileToEvent.get(e.tile);if(!t)return;t.enqueue(e),this._tileToEvent.set(e.tile,t),this.events.emit(`error`,e),i.getLogger(this).error(`Failed to load tile ${e.tile}.`,{error:e.error});break}}}};e([o({readOnly:!0})],c.prototype,`hasAllData`,null),e([o()],c.prototype,`pipelineStatistics`,null),e([o()],c.prototype,`willQueryAllFeatures`,null),e([o()],c.prototype,`willQueryFullResolutionGeometry`,null),e([o()],c.prototype,`_updatingStrategy`,void 0),e([o()],c.prototype,`_strategyInfo`,void 0),e([o()],c.prototype,`_tileToEvent`,void 0),e([o()],c.prototype,`_pipelineStatistics`,void 0),c=e([s(`esri.views.2d.layers.features.FeatureSourceEventLog`)],c);export{c as FeatureSourceEventLog};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import e from"../../../../../core/Error.js";import{toParquetJSONGeometryType as t}from"../../../../../layers/support/parquetUtils.js";import{getEffectiveFeatureReduction as n}from"./featureReductionUtils.js";import{getServiceGeometryType as r}from"./geometryUtils.js";import{createLabelVVEvaluator as i}from"./labelingUtils.js";import{createSimpleProcessorSchema as a}from"../schema/processor/SimpleProcessorSchema.js";import{isRendererSupported as o}from"../support/rendererUtils.js";class s{constructor(e){this.layer=e}get hasRequiredSupport(){return o(this.layer.renderer)}get timeOptions(){return null}getLabelingDeconflictionInfo(){return[{vvEvaluators:{0:i(this.layer.renderer)}}]}getUpdateHashProperties(e){return[()=>this.layer.data,()=>this.layer.outFields,()=>this.layer.definitionExpression,()=>this.layer.labelsVisible?this.layer.labelingInfo:null,()=>n(this.layer,e),()=>this.layer.customParameters,()=>this.layer.orderBy,()=>this.layer.returnZ,()=>this.layer.returnM,()=>this.layer.renderer,()=>this.layer.popupTemplate]}openMessagePorts(){return this.layer.source.openPorts()}async createSourceSchema(e,t){let n=this._createServiceInfo(e),r=e.availableFields.includes(`*`)?this.layer.fields.map(e=>e.name):e.availableFields,i={partial:{dataSourceHash:this.layer.data?JSON.stringify(this.layer.data.toJSON()):null,availableFields:r},full:{definitionExpression:this.layer.definitionExpression??null,sourceRefreshVersion:t,customParameters:this.layer.customParameters??null,returnZ:e.returnZ&&n.metadata.hasZ,returnM:e.returnM&&n.metadata.hasM}};return{type:`parquet`,service:n,strategy:this._createStrategy(n,i)}}_createStrategy(e,t){return e.geometryInfo.displayOptimization?{type:`xz`,...t}:{type:`snapshot`,...t}}createProcessorSchema(e,t,r){let i={fields:this.layer.fields.map(e=>e.toJSON()),renderer:this.layer.renderer?.clone(),labelingInfoSource:this.layer.id,featureReduction:n(this.layer,t),geometryType:this.layer.geometryType,labelingInfo:this.layer.labelingInfo,labelsVisible:this.layer.labelsVisible,objectIdField:this.layer.objectIdField,orderBy:this.layer.orderBy};return a(e,t,i,r)}getRenderer(){return this.layer.renderer}setGraphicOrigin(e){e.origin=this.layer.graphicOrigin}setAggregateGraphicOrigin(e){e.origin=this.layer.aggregateGraphicOrigin}_createServiceInfo(n){let i=r(this.layer),a=n.spatialReference.toJSON(),o=this.layer.geometryEncoding,s=this.layer.capabilities?.data?.supportsZ===!0,
|
|
2
|
+
import e from"../../../../../core/Error.js";import{toParquetJSONGeometryType as t}from"../../../../../layers/support/parquetUtils.js";import{getEffectiveFeatureReduction as n}from"./featureReductionUtils.js";import{getServiceGeometryType as r}from"./geometryUtils.js";import{createLabelVVEvaluator as i}from"./labelingUtils.js";import{createSimpleProcessorSchema as a}from"../schema/processor/SimpleProcessorSchema.js";import{isRendererSupported as o}from"../support/rendererUtils.js";class s{constructor(e){this.layer=e}get hasRequiredSupport(){return o(this.layer.renderer)}get timeOptions(){return null}getLabelingDeconflictionInfo(){return[{vvEvaluators:{0:i(this.layer.renderer)}}]}getUpdateHashProperties(e){return[()=>this.layer.data,()=>this.layer.outFields,()=>this.layer.definitionExpression,()=>this.layer.labelsVisible?this.layer.labelingInfo:null,()=>n(this.layer,e),()=>this.layer.customParameters,()=>this.layer.orderBy,()=>this.layer.returnZ,()=>this.layer.returnM,()=>this.layer.renderer,()=>this.layer.popupTemplate]}openMessagePorts(){return this.layer.source.openPorts()}async createSourceSchema(e,t){let n=this._createServiceInfo(e),r=e.availableFields.includes(`*`)?this.layer.fields.map(e=>e.name):e.availableFields,i={partial:{dataSourceHash:this.layer.data?JSON.stringify(this.layer.data.toJSON()):null,availableFields:r},full:{displayFilterInfo:n.geometryInfo.displayOptimization&&e.displayFilterEnabled?this.layer.displayFilterInfo?.toJSON()??null:null,definitionExpression:this.layer.definitionExpression??null,sourceRefreshVersion:t,customParameters:this.layer.customParameters??null,returnZ:e.returnZ&&n.metadata.hasZ,returnM:e.returnM&&n.metadata.hasM}};return{type:`parquet`,service:n,strategy:this._createStrategy(n,i)}}_createStrategy(e,t){return e.geometryInfo.displayOptimization?{type:`xz`,...t}:{type:`snapshot`,...t}}createProcessorSchema(e,t,r){let i={fields:this.layer.fields.map(e=>e.toJSON()),renderer:this.layer.renderer?.clone(),labelingInfoSource:this.layer.id,featureReduction:n(this.layer,t),geometryType:this.layer.geometryType,labelingInfo:this.layer.labelingInfo,labelsVisible:this.layer.labelsVisible,objectIdField:this.layer.objectIdField,orderBy:this.layer.orderBy};return a(e,t,i,r)}getRenderer(){return this.layer.renderer}setGraphicOrigin(e){e.origin=this.layer.graphicOrigin}setAggregateGraphicOrigin(e){e.origin=this.layer.aggregateGraphicOrigin}_createServiceInfo(n){let i=r(this.layer),a=n.spatialReference.toJSON(),o=this.layer.geometryEncoding,s=this.layer.capabilities.query,c=this.layer.capabilities?.data?.supportsZ===!0,l=this.layer.capabilities?.data?.supportsM===!0;if(o==null&&this.layer.displayOptimization==null)throw new e(`parquet-layer:unsupported`,`creating a parquet layer view requires an encoding`,{layer:this.layer});return{type:`parquet`,outSpatialReference:a,geometryInfo:{geometry:o?{geometryType:t(this.layer.geometryType),spatialReference:this.layer.spatialReference.toJSON(),encoding:o.toJSON()}:null,displayOptimization:this.layer.displayOptimization},metadata:{spatialReference:this.layer.spatialReference.toJSON(),outSpatialReference:a,attributeSpatialReference:null,fieldsIndex:this.layer.fieldsIndex.toJSON(),featureIdInfo:{type:`object-id`,fieldName:this.layer.objectIdField},geometryType:i,hasZ:c,hasM:l,types:null,subtypes:null,timeInfo:null,typeIdField:null,subtypeField:null,globalIdField:null,timeReferenceUnknownClient:null,dateFieldsTimeZone:this.layer.dateFieldsTimeZone},queryMetadata:{supportsCacheHint:s.supportsCacheHint,maxRecordCount:s.maxRecordCount,tileMaxRecordCount:s.tileMaxRecordCount,supportsCompactGeometry:s.supportsCompactGeometry,supportsDefaultSpatialReference:s.supportsDefaultSpatialReference,supportsFormatPBF:s.supportsFormatPBF,supportsMaxRecordCountFactor:s.supportsMaxRecordCountFactor,supportsQuantization:s.supportsQuantization,supportsCentroidOnDegeneratedQuantizedGeometry:s.supportsCentroidOnDegeneratedQuantizedGeometry,supportsDegeneratedQuantizedGeometry:s.supportsDegeneratedQuantizedGeometry,supportsReturnExceededLimitGeometries:s.supportsReturnExceededLimitGeometries,lastEditDate:null}}}}export{s as ParquetLayerAdapter};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import has from"../../../../../core/has.js";import{destroyMaybe as e}from"../../../../../core/maybe.js";import{notDeepEqual as t}from"../../../../../core/object.js";import{ignoreAbortErrors as n,throwIfNotAbortError as r}from"../../../../../core/promiseUtils.js";import{OptimizedFeature as i}from"../../../../../layers/graphics/OptimizedFeature.js";import{QueryEngine as a}from"../../../../../layers/graphics/data/QueryEngine.js";import{FeatureStoreStatistics as o}from"../FeatureStoreStatistics.js";import{StreamMessenger as s}from"./StreamMessenger.js";import{UpdateStatus as c}from"./strategies/ALoadStrategy.js";import{FeatureDrillDownTileLoadStrategy as l}from"./strategies/FeatureDrillDownTileLoadStrategy.js";import{FeatureHybridTileLoadStrategy as u}from"./strategies/FeatureHybridTileLoadStrategy.js";import{FeaturePagedTileLoadStrategy as d}from"./strategies/FeaturePagedTileLoadStrategy.js";import{FeatureSnapshotLoadStrategy as f}from"./strategies/FeatureSnapshotLoadStrategy.js";import{ParquetSnapshotLoadStrategy as p}from"./strategies/ParquetSnapshotLoadStrategy.js";import{ParquetTileLoadStrategy as m}from"./strategies/ParquetTileLoadStrategy.js";import{StreamLoadStrategy as h}from"./strategies/StreamLoadStrategy.js";import{FeatureSourceChunkStore as g}from"./strategies/chunks/SourceChunkStore.js";import _ from"../support/FeatureFilterEvaluator.js";import{UpdateTracking2D as v}from"../../support/UpdateTracking2D.js";class y{constructor(e,t,n){this._aggregateAdapter=e,this._subscriptions=t,this._connection=n,this._updateTracking=new v({debugName:`FeatureSource`}),this._filters=[],this.store=new g}destroy(){this._strategy?.destroy(),this._streamMessenger?.destroy(),this._updateTracking?.destroy(),this.store.destroy()}get metadata(){return this._strategy.metadata}get streamMessenger(){return this._streamMessenger??this._initStreamMessenger(),this._streamMessenger}get statistics(){return o.from(this.store)}get updateTracking(){return this._updateTracking}get usedMemory(){return this.store.usedMemory}get queryEngine(){if(!this._queryEngine){if(!this.store||!this._strategy)return null;this._queryEngine=new a({featureStore:this.store,fieldsIndex:this.metadata.fieldsIndex,geometryType:this.metadata.geometryType,featureIdInfo:this.metadata.featureIdInfo,hasZ:this.metadata.hasZ,hasM:this.metadata.hasM,spatialReference:this.metadata.outSpatialReference,aggregateAdapter:this._aggregateAdapter,timeInfo:this.metadata.timeInfo,definitionExpression:this._strategy?.definitionExpression,availableFields:this._strategy?.availableFields})}return this._queryEngine}get isStream(){return this._schema.type===`stream`}get hasQueryDisplayFilter(){if(!this._schema)return!1;switch(this._schema.type){case`feature`:return this._schema.strategy.full.displayFilterInfo!=null;case`parquet`:case`stream`:return!1}}chunks(){return Array.from(this.store.chunks())}async applyCacheUpdate(){this.hasQueryDisplayFilter&&await this._updateTracking.addPromise(this._strategy.applyCacheUpdate())}cleanup(){return this.store.cleanup()}onSubscribe(e){if(this._connection.onEvent({type:`subscribe`,tile:e.tile.id}),!this._strategy)return;let t=this._strategy.load(e);t.then(()=>this._connection.onEvent({type:`loaded`,tile:e.tile.id})).catch(t=>this._connection.onEvent({type:`error`,tile:e.tile.id,error:t})),this._updateTracking.consumePromise(t)}onResume(e){this._updateTracking.consumePromise(n(this._strategy?.load(e)))}onUnsubscribe(e){this._connection.onEvent({type:`unsubscribe`,tile:e.tile.id}),this._strategy?.unload(e)}async applyOverride(e){await this._strategy?.applyOverride(e)}takeOverrideUpdate(){return this._strategy?.takeOverrideUpdate()}async update(n,r,i){let a=this._schema,o=this._getCachedObjectIds(this._filters),s=this._getCachedObjectIds(r);if(this._schema=n,this._filters=r,this._queryEngine=e(this._queryEngine),a&&a.type!==n.type)throw Error(`InternalError: Reconfiguring source types is not supported.`);let l=new c;if(!a||t(a.service,n.service)||a.strategy.type!==n.strategy.type||t(n.strategy.full,a.strategy.full)||!await this._strategy.tryUpdate(l,n.strategy.partial)){await this._updateStrategyType(this._schema.service,n,i);let e=null;return`postQueryFilter`in this._schema.strategy.full&&this._schema.strategy.full.postQueryFilter&&(e=await _.create({geometryType:this.metadata.geometryType,hasM:!1,hasZ:!1,timeInfo:this.metadata.timeInfo,fieldsIndex:this.metadata.fieldsIndex,spatialReference:this.metadata.outSpatialReference,filterJSON:this._schema.strategy.full.postQueryFilter})),await this.store.update({metadata:this.metadata,definitionExpression:this._schema.strategy.full.definitionExpression,postQueryFilter:e}),!0}return this._updateFilterCache(o,s),l.requiresInvalidation}unsafeSetQueryHistoricMoment(e){this._schema.type===`feature`&&(this._schema.strategy.full.historicMoment=e,this._strategy.unsafeSetQueryHistoricMoment(new Date(e)))}_initStreamMessenger(){this._streamMessenger??=new s(this._connection)}async normalizeOverrides(e){let t={historicMoment:e.historicMoment,commands:{updateWeak:e.commands.updateWeak.map(i.fromJSON),removeWeak:e.commands.removeWeak,update:e.commands.update.map(i.fromJSON),remove:e.commands.remove,release:e.commands.release}},n=e.commands.updateByIdWeak,r=await this._queryOptimizedFeatures(n);if(r.length!==n.length){let e=new Set(r.map(e=>e.objectId));for(let r of n)e.has(r)||t.commands.removeWeak.push(r)}return t.commands.updateWeak.push(...r),t}async _queryOptimizedFeatures(e){if(e.length===0)return[];let t=[],n=(await this._strategy.queryByObjectId(e,[`*`])).getCursor();for(;n.next();)t.push(n.readOptimizedFeatureWorldSpace());return t}getObjectIdsFromGlobalIds(e){let t=this.metadata.globalIdField;if(t==null)throw Error(`InternalError: Recieved an edit with globalIds, but not supported by the service`);let n=this.store.mapObjectIdsFromGlobalIds(e,t).values();return Array.from(n)}_getCachedObjectIds(e){let t=new Set;for(let{ensureCached:n,filters:r}of e)if(n)for(let e of r)for(let n of e.objectIds??[])t.add(n);return t}_updateFilterCache(e,t){if(!this.hasQueryDisplayFilter)return;let n=new Set,r=new Set;for(let r of t)e.has(r)||n.add(r);for(let n of e)t.has(n)||r.add(n);this._strategy.prepareCacheUpdate(n,r)}async _updateStrategyType(e,t,n){let i=this._createStrategy(e,t);this._connection.onEvent({type:`updateStrategyStart`,about:i.about});let a=!!this._strategy;this.store.clear(),this._strategy?.destroy(),this._strategy=i,has(`esri-2d-update-debug`)&&console.debug(`Version[${n}] FeatureSource.updateStrategy`,{strategy:i});let o=Array.from(this._subscriptions.values());if(!o.length){this._connection.onEvent({type:`updateStrategyEnd`});return}let s=Promise.all(o.map(e=>this._strategy.load(e).then(()=>this._connection.onEvent({type:`loaded`,tile:e.tile.id})).catch(t=>this._connection.onEvent({type:`error`,tile:e.tile.id,error:t}))));this._updateTracking.consumePromise(s),this._strategy.prepareCacheUpdate(this._getCachedObjectIds(this._filters));try{a&&await s}catch(e){r(e)}this._connection.onEvent({type:`updateStrategyEnd`}),has(`esri-2d-update-debug`)&&console.debug(`Version[${n}] FeatureSource.updateStrategyEnd`,{strategy:i})}_createStrategy(e,t){let n={connection:this._connection,store:this.store};switch(t.type){case`feature`:return this._createFeatureLoadStrategy(e,t.strategy,n);case`parquet`:return this._createParquetLoadStrategy(e,t.strategy,n);case`stream`:return this._createStreamLoadStrategy(e,t.strategy,n)}}_createFeatureLoadStrategy(e,t,n){switch(t.type){case`drill-down`:return new l(e,t,n);case`hybrid-tile`:return new u(e,t,n);case`paged-tile`:return new d(e,t,n);case`snapshot`:return new f(e,t,n)}}_createParquetLoadStrategy(e,t,n){switch(t.type){case`xz`:return new m(e,t,n,this._connection);case`snapshot`:return new p(e,t,n,this._connection)}}_createStreamLoadStrategy(e,t,n){let r=new h(e,t,n);return this.streamMessenger.strategy=r,r}}export{y as FeatureSource};
|
|
2
|
+
import has from"../../../../../core/has.js";import{destroyMaybe as e}from"../../../../../core/maybe.js";import{notDeepEqual as t}from"../../../../../core/object.js";import{ignoreAbortErrors as n,throwIfNotAbortError as r}from"../../../../../core/promiseUtils.js";import{OptimizedFeature as i}from"../../../../../layers/graphics/OptimizedFeature.js";import{QueryEngine as a}from"../../../../../layers/graphics/data/QueryEngine.js";import{FeatureStoreStatistics as o}from"../FeatureStoreStatistics.js";import{StreamMessenger as s}from"./StreamMessenger.js";import{UpdateStatus as c}from"./strategies/ALoadStrategy.js";import{FeatureDrillDownTileLoadStrategy as l}from"./strategies/FeatureDrillDownTileLoadStrategy.js";import{FeatureHybridTileLoadStrategy as u}from"./strategies/FeatureHybridTileLoadStrategy.js";import{FeaturePagedTileLoadStrategy as d}from"./strategies/FeaturePagedTileLoadStrategy.js";import{FeatureSnapshotLoadStrategy as f}from"./strategies/FeatureSnapshotLoadStrategy.js";import{ParquetSnapshotLoadStrategy as p}from"./strategies/ParquetSnapshotLoadStrategy.js";import{ParquetTileLoadStrategy as m}from"./strategies/ParquetTileLoadStrategy.js";import{StreamLoadStrategy as h}from"./strategies/StreamLoadStrategy.js";import{FeatureSourceChunkStore as g}from"./strategies/chunks/SourceChunkStore.js";import _ from"../support/FeatureFilterEvaluator.js";import{UpdateTracking2D as v}from"../../support/UpdateTracking2D.js";class y{constructor(e,t,n){this._aggregateAdapter=e,this._subscriptions=t,this._connection=n,this._updateTracking=new v({debugName:`FeatureSource`}),this._filters=[],this.store=new g}destroy(){this._strategy?.destroy(),this._streamMessenger?.destroy(),this._updateTracking?.destroy(),this.store.destroy()}get metadata(){return this._strategy.metadata}get streamMessenger(){return this._streamMessenger??this._initStreamMessenger(),this._streamMessenger}get statistics(){return o.from(this.store)}get updateTracking(){return this._updateTracking}get usedMemory(){return this.store.usedMemory}get queryEngine(){if(!this._queryEngine){if(!this.store||!this._strategy)return null;this._queryEngine=new a({featureStore:this.store,fieldsIndex:this.metadata.fieldsIndex,geometryType:this.metadata.geometryType,featureIdInfo:this.metadata.featureIdInfo,hasZ:this.metadata.hasZ,hasM:this.metadata.hasM,spatialReference:this.metadata.outSpatialReference,aggregateAdapter:this._aggregateAdapter,timeInfo:this.metadata.timeInfo,definitionExpression:this._strategy?.definitionExpression,availableFields:this._strategy?.availableFields})}return this._queryEngine}get isStream(){return this._schema.type===`stream`}get hasQueryDisplayFilter(){if(!this._schema)return!1;switch(this._schema.type){case`feature`:return this._schema.strategy.full.displayFilterInfo!=null;case`parquet`:return this._schema.strategy.type===`xz`&&this._schema.strategy.full.displayFilterInfo!=null;case`stream`:return!1}}chunks(){return Array.from(this.store.chunks())}async applyCacheUpdate(){this.hasQueryDisplayFilter&&await this._updateTracking.addPromise(this._strategy.applyCacheUpdate())}cleanup(){return this.store.cleanup()}onSubscribe(e){if(this._connection.onEvent({type:`subscribe`,tile:e.tile.id}),!this._strategy)return;let t=this._strategy.load(e);t.then(()=>this._connection.onEvent({type:`loaded`,tile:e.tile.id})).catch(t=>this._connection.onEvent({type:`error`,tile:e.tile.id,error:t})),this._updateTracking.consumePromise(t)}onResume(e){this._updateTracking.consumePromise(n(this._strategy?.load(e)))}onUnsubscribe(e){this._connection.onEvent({type:`unsubscribe`,tile:e.tile.id}),this._strategy?.unload(e)}async applyOverride(e){await this._strategy?.applyOverride(e)}takeOverrideUpdate(){return this._strategy?.takeOverrideUpdate()}async update(n,r,i){let a=this._schema,o=this._getCachedObjectIds(this._filters),s=this._getCachedObjectIds(r);if(this._schema=n,this._filters=r,this._queryEngine=e(this._queryEngine),a&&a.type!==n.type)throw Error(`InternalError: Reconfiguring source types is not supported.`);let l=new c;if(!a||t(a.service,n.service)||a.strategy.type!==n.strategy.type||t(n.strategy.full,a.strategy.full)||!await this._strategy.tryUpdate(l,n.strategy.partial)){await this._updateStrategyType(this._schema.service,n,i);let e=null;return`postQueryFilter`in this._schema.strategy.full&&this._schema.strategy.full.postQueryFilter&&(e=await _.create({geometryType:this.metadata.geometryType,hasM:!1,hasZ:!1,timeInfo:this.metadata.timeInfo,fieldsIndex:this.metadata.fieldsIndex,spatialReference:this.metadata.outSpatialReference,filterJSON:this._schema.strategy.full.postQueryFilter})),await this.store.update({metadata:this.metadata,definitionExpression:this._schema.strategy.full.definitionExpression,postQueryFilter:e}),!0}return this._updateFilterCache(o,s),l.requiresInvalidation}unsafeSetQueryHistoricMoment(e){this._schema.type===`feature`&&(this._schema.strategy.full.historicMoment=e,this._strategy.unsafeSetQueryHistoricMoment(new Date(e)))}_initStreamMessenger(){this._streamMessenger??=new s(this._connection)}async normalizeOverrides(e){let t={historicMoment:e.historicMoment,commands:{updateWeak:e.commands.updateWeak.map(i.fromJSON),removeWeak:e.commands.removeWeak,update:e.commands.update.map(i.fromJSON),remove:e.commands.remove,release:e.commands.release}},n=e.commands.updateByIdWeak,r=await this._queryOptimizedFeatures(n);if(r.length!==n.length){let e=new Set(r.map(e=>e.objectId));for(let r of n)e.has(r)||t.commands.removeWeak.push(r)}return t.commands.updateWeak.push(...r),t}async _queryOptimizedFeatures(e){if(e.length===0)return[];let t=[],n=(await this._strategy.queryByObjectId(e,[`*`])).getCursor();for(;n.next();)t.push(n.readOptimizedFeatureWorldSpace());return t}getObjectIdsFromGlobalIds(e){let t=this.metadata.globalIdField;if(t==null)throw Error(`InternalError: Recieved an edit with globalIds, but not supported by the service`);let n=this.store.mapObjectIdsFromGlobalIds(e,t).values();return Array.from(n)}_getCachedObjectIds(e){let t=new Set;for(let{ensureCached:n,filters:r}of e)if(n)for(let e of r)for(let n of e.objectIds??[])t.add(n);return t}_updateFilterCache(e,t){if(!this.hasQueryDisplayFilter)return;let n=new Set,r=new Set;for(let r of t)e.has(r)||n.add(r);for(let n of e)t.has(n)||r.add(n);this._strategy.prepareCacheUpdate(n,r)}async _updateStrategyType(e,t,n){let i=this._createStrategy(e,t);this._connection.onEvent({type:`updateStrategyStart`,about:i.about});let a=!!this._strategy;this.store.clear(),this._strategy?.destroy(),this._strategy=i,has(`esri-2d-update-debug`)&&console.debug(`Version[${n}] FeatureSource.updateStrategy`,{strategy:i});let o=Array.from(this._subscriptions.values());if(!o.length){this._connection.onEvent({type:`updateStrategyEnd`});return}let s=Promise.all(o.map(e=>this._strategy.load(e).then(()=>this._connection.onEvent({type:`loaded`,tile:e.tile.id})).catch(t=>this._connection.onEvent({type:`error`,tile:e.tile.id,error:t}))));this._updateTracking.consumePromise(s),this._strategy.prepareCacheUpdate(this._getCachedObjectIds(this._filters));try{a&&await s}catch(e){r(e)}this._connection.onEvent({type:`updateStrategyEnd`}),has(`esri-2d-update-debug`)&&console.debug(`Version[${n}] FeatureSource.updateStrategyEnd`,{strategy:i})}_createStrategy(e,t){let n={connection:this._connection,store:this.store};switch(t.type){case`feature`:return this._createFeatureLoadStrategy(e,t.strategy,n);case`parquet`:return this._createParquetLoadStrategy(e,t.strategy,n);case`stream`:return this._createStreamLoadStrategy(e,t.strategy,n)}}_createFeatureLoadStrategy(e,t,n){switch(t.type){case`drill-down`:return new l(e,t,n);case`hybrid-tile`:return new u(e,t,n);case`paged-tile`:return new d(e,t,n);case`snapshot`:return new f(e,t,n)}}_createParquetLoadStrategy(e,t,n){switch(t.type){case`xz`:return new m(e,t,n,this._connection);case`snapshot`:return new p(e,t,n,this._connection)}}_createStreamLoadStrategy(e,t,n){let r=new h(e,t,n);return this.streamMessenger.strategy=r,r}}export{y as FeatureSource};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import has from"../../../../../core/has.js";import{sqlAnd as e}from"../../../../../core/sql.js";import t from"../../../../../geometry/SpatialReference.js";import{getClauseForScaleRange as n}from"../../../../../layers/support/displayFilterUtils.js";import r from"../../../../../rest/support/Query.js";import i from"../../../../../time/TimeExtent.js";function a(e){switch(e.type){case`object-id`:return`${e.fieldName} ASC`;case`unique-id-simple`:return`${e.fieldName} ASC`;case`unique-id-composite`:return`${e.fieldNames.join(`,`)} ASC`}}function o(e,n,r){let o=a(r.featureIdInfo);return{returnCentroid:r.serviceGeometryType===`esriGeometryPolygon`&&!e.queryMetadata.supportsCentroidOnDegeneratedQuantizedGeometry&&!e.queryMetadata.supportsDegeneratedQuantizedGeometry,returnGeometry:!0,returnZ:n.returnZ,returnM:n.returnM,timeReferenceUnknownClient:r.timeReferenceUnknownClient??void 0,outSpatialReference:t.fromJSON(e.outSpatialReference),orderByFields:e.type===`memory`?[]:[o],where:n.definitionExpression??`1=1`,outFields:n.availableFields,multipatchOption:r.serviceGeometryType===`esriGeometryMultiPatch`?`xyFootprint`:null,gdbVersion:n.gdbVersion,historicMoment:n.historicMoment?new Date(n.historicMoment):null,timeExtent:n.timeExtent?i.fromJSON(n.timeExtent):null}}class s{static create(e,t,n){let r=t.queryScaleRanges,i=t.displayFilterInfo;return new s(o(e,t,n),i,r,n.subtypeField,t.customParameters,n.geometryType,e.queryMetadata)}constructor(e,t,n,r,i,a,o){this._queryParams=e,this._displayFilter=t,this._queryScaleRanges=n,this._subtypeField=r,this._customParameters=i,this._geometryType=a,this._queryMetadata=o}getPageSize(e){if(this._queryMetadata==null)throw Error(`InternalError: Service does not support paged queries`);let t=this._queryMetadata.supportsMaxRecordCountFactor?4:null,n=((e?this._queryMetadata.tileMaxRecordCount:this._queryMetadata.maxRecordCount)??this._queryMetadata.maxRecordCount??2e3)*(t??1),r=has(`featurelayer-query-max-page-size`)??8e3;return Math.min(r,n)}get objectIdsQueryPageSize(){return this._queryMetadata?.maxRecordCount??2e3}updateHistoricMoment(e){this._queryParams.historicMoment=e}updateFields(e){this._queryParams.outFields=e}createPatchFieldsQuery(e,t,n){if(!t.getSize())return null;let r=e.clone();if(this._queryParams.outFields[0]===`*`){if((r.outFields??[])[0]===`*`)return null;r.outFields=this._queryParams.outFields}else{let e=new Set(this._queryParams.outFields),n=[];for(let r of e)t.hasField(r)||n.push(r);if(n.length===0)return null;r.outFields=n}r.returnGeometry=!1,r.returnCentroid=!1,r.quantizationParameters=null,r.cacheHint=this._queryMetadata?.supportsCacheHint?!0:void 0;let i={inner:r,customParameters:this._customParameters};if(has(`esri-tiles-debug`)&&n!=null){let e=n.chunkId.toString().replaceAll(`/`,`.`);i.customParameters=i.customParameters?{...i.customParameters,chunkId:e}:{chunkId:e}}return i}createQuery(e={}){if(!this._queryParams)throw Error(`InternalError: queryInfo should be defined`);return{inner:new r({...this._queryParams,...e}),customParameters:this._customParameters}}createTileQuery(t,r){if(this._queryMetadata==null)throw Error(`InternalError: Service does not support tile queries`);let i=this.createQuery(r),a=i.inner;if(this._queryScaleRanges?.length){let n=this._queryScaleRanges.filter(e=>(!e.minScale||e.minScale>=t.maxScale)&&(!e.maxScale||e.maxScale<=t.minScale)).map(e=>e.subtypeCode);if(!n.length)return null;let r=`${this._subtypeField} IN (${n})`;a.where=e(a.where,r)}if(this._displayFilter&&(a.where=e(a.where,n(this._displayFilter,t.minScale,t.maxScale))),a.quantizationParameters=r.quantizationParameters??t.getQuantizationParameters(),a.resultType=`tile`,a.geometry=t.hydratedExtent,this._queryMetadata.supportsQuantization?this._geometryType===`esriGeometryPolyline`&&(a.maxAllowableOffset=t.resolution*has(`feature-polyline-generalization-factor`)):(this._geometryType===`esriGeometryPolyline`||this._geometryType===`esriGeometryPolygon`)&&(a.maxAllowableOffset=t.resolution,this._geometryType===`esriGeometryPolyline`&&(a.maxAllowableOffset*=has(`feature-polyline-generalization-factor`))),a.defaultSpatialReferenceEnabled=this._queryMetadata.supportsDefaultSpatialReference,a.compactGeometryEnabled=this._queryMetadata.supportsCompactGeometry,this._queryMetadata.supportsMaxRecordCountFactor&&(a.maxRecordCountFactor=4),has(`esri-tiles-debug`)){let e=t.id.replaceAll(`/`,`.`);i.customParameters=i.customParameters?{...i.customParameters,tileId:e}:{tileId:e}}return i}createPagedTileQuery(e,t){let n=this.getPageSize(!0);return this.createTileQuery(e,{start:n*t,num:n,returnExceededLimitFeatures:!0})}createPagedQuery(e,t){let n=this.getPageSize(!1);return this.createQuery({start:n*e,num:n,returnExceededLimitFeatures:!0,maxRecordCountFactor:4,quantizationParameters:t,cacheHint:this._queryMetadata?.supportsCacheHint?!0:void 0})}createObjectIdsQuery(e){return this.createQuery({objectIds:e,outFields:[`*`]})}}export{s as FeatureSourceQueryInfo};
|
|
2
|
+
import has from"../../../../../core/has.js";import{sqlAnd as e}from"../../../../../core/sql.js";import t from"../../../../../geometry/SpatialReference.js";import{getClauseForScaleRange as n}from"../../../../../layers/support/displayFilterUtils.js";import r from"../../../../../rest/support/Query.js";import i from"../../../../../time/TimeExtent.js";function a(e){switch(e.type){case`object-id`:return`${e.fieldName} ASC`;case`unique-id-simple`:return`${e.fieldName} ASC`;case`unique-id-composite`:return`${e.fieldNames.join(`,`)} ASC`}}function o(e,n,r){let o=a(r.featureIdInfo);return{returnCentroid:r.serviceGeometryType===`esriGeometryPolygon`&&!e.queryMetadata.supportsCentroidOnDegeneratedQuantizedGeometry&&!e.queryMetadata.supportsDegeneratedQuantizedGeometry,returnGeometry:!0,returnZ:n.returnZ,returnM:n.returnM,timeReferenceUnknownClient:r.timeReferenceUnknownClient??void 0,outSpatialReference:t.fromJSON(e.outSpatialReference),orderByFields:e.type===`memory`?[]:[o],where:n.definitionExpression??`1=1`,outFields:n.availableFields,multipatchOption:r.serviceGeometryType===`esriGeometryMultiPatch`?`xyFootprint`:null,gdbVersion:n.gdbVersion,historicMoment:n.historicMoment?new Date(n.historicMoment):null,timeExtent:n.timeExtent?i.fromJSON(n.timeExtent):null}}class s{static create(e,t,n){let r=t.queryScaleRanges,i=t.displayFilterInfo;return new s(o(e,t,n),i,r,n.subtypeField,t.customParameters,n.geometryType,e.queryMetadata)}static createParquet(e,t,n){return new s({returnGeometry:!0,returnZ:t.returnZ,returnM:t.returnM,outSpatialReference:n.outSpatialReference,where:t.definitionExpression??`1=1`,outFields:t.availableFields},t.displayFilterInfo,t.queryScaleRanges,n.subtypeField,t.customParameters,n.geometryType,e.queryMetadata)}constructor(e,t,n,r,i,a,o){this._queryParams=e,this._displayFilter=t,this._queryScaleRanges=n,this._subtypeField=r,this._customParameters=i,this._geometryType=a,this._queryMetadata=o}getPageSize(e){if(this._queryMetadata==null)throw Error(`InternalError: Service does not support paged queries`);let t=this._queryMetadata.supportsMaxRecordCountFactor?4:null,n=((e?this._queryMetadata.tileMaxRecordCount:this._queryMetadata.maxRecordCount)??this._queryMetadata.maxRecordCount??2e3)*(t??1),r=has(`featurelayer-query-max-page-size`)??8e3;return Math.min(r,n)}get objectIdsQueryPageSize(){return this._queryMetadata?.maxRecordCount??2e3}updateHistoricMoment(e){this._queryParams.historicMoment=e}updateFields(e){this._queryParams.outFields=e}createPatchFieldsQuery(e,t,n){if(!t.getSize())return null;let r=e.clone();if(this._queryParams.outFields[0]===`*`){if((r.outFields??[])[0]===`*`)return null;r.outFields=this._queryParams.outFields}else{let e=new Set(this._queryParams.outFields),n=[];for(let r of e)t.hasField(r)||n.push(r);if(n.length===0)return null;r.outFields=n}r.returnGeometry=!1,r.returnCentroid=!1,r.quantizationParameters=null,r.cacheHint=this._queryMetadata?.supportsCacheHint?!0:void 0;let i={inner:r,customParameters:this._customParameters};if(has(`esri-tiles-debug`)&&n!=null){let e=n.chunkId.toString().replaceAll(`/`,`.`);i.customParameters=i.customParameters?{...i.customParameters,chunkId:e}:{chunkId:e}}return i}createQuery(e={}){if(!this._queryParams)throw Error(`InternalError: queryInfo should be defined`);return{inner:new r({...this._queryParams,...e}),customParameters:this._customParameters}}createTileQuery(t,r){if(this._queryMetadata==null)throw Error(`InternalError: Service does not support tile queries`);let i=this.createQuery(r),a=i.inner;if(this._queryScaleRanges?.length){let n=this._queryScaleRanges.filter(e=>(!e.minScale||e.minScale>=t.maxScale)&&(!e.maxScale||e.maxScale<=t.minScale)).map(e=>e.subtypeCode);if(!n.length)return null;let r=`${this._subtypeField} IN (${n})`;a.where=e(a.where,r)}if(this._displayFilter&&(a.where=e(a.where,n(this._displayFilter,t.minScale,t.maxScale))),a.quantizationParameters=r.quantizationParameters??t.getQuantizationParameters(),a.resultType=`tile`,a.geometry=t.hydratedExtent,this._queryMetadata.supportsQuantization?this._geometryType===`esriGeometryPolyline`&&(a.maxAllowableOffset=t.resolution*has(`feature-polyline-generalization-factor`)):(this._geometryType===`esriGeometryPolyline`||this._geometryType===`esriGeometryPolygon`)&&(a.maxAllowableOffset=t.resolution,this._geometryType===`esriGeometryPolyline`&&(a.maxAllowableOffset*=has(`feature-polyline-generalization-factor`))),a.defaultSpatialReferenceEnabled=this._queryMetadata.supportsDefaultSpatialReference,a.compactGeometryEnabled=this._queryMetadata.supportsCompactGeometry,this._queryMetadata.supportsMaxRecordCountFactor&&(a.maxRecordCountFactor=4),has(`esri-tiles-debug`)){let e=t.id.replaceAll(`/`,`.`);i.customParameters=i.customParameters?{...i.customParameters,tileId:e}:{tileId:e}}return i}createPagedTileQuery(e,t){let n=this.getPageSize(!0);return this.createTileQuery(e,{start:n*t,num:n,returnExceededLimitFeatures:!0})}createPagedQuery(e,t){let n=this.getPageSize(!1);return this.createQuery({start:n*e,num:n,returnExceededLimitFeatures:!0,maxRecordCountFactor:4,quantizationParameters:t,cacheHint:this._queryMetadata?.supportsCacheHint?!0:void 0})}createObjectIdsQuery(e){return this.createQuery({objectIds:e,outFields:[`*`]})}}export{s as FeatureSourceQueryInfo};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import has from"../../../../../../core/has.js";import{FeatureCache as e}from"../FeatureCache.js";import{AFeatureLoadStrategy as t}from"./AFeatureLoadStrategy.js";class n extends t{constructor(t,n,r){super(t,n,r),this._chunksById=new Map,this._featureCache=new e(this.store,this._queryInfo,this._options,this._fetch.bind(this))}prepareCacheUpdate(e,t){return this._featureCache.prepareCacheUpdate(e,t)}applyCacheUpdate(){return this._featureCache.applyCacheUpdate()}unload(e){this._removeChunks(e.tile)}_onRemoveTileChunk(e){}_addChunk(e){let t=e.tile.id;this._chunksById.has(t)||this._chunksById.set(t,[]);let n=e.size();(n||e.first||e.end)&&(has(`esri-2d-update-debug`)&&console.debug(`Chunk[${e.chunkId}] ATileLoadStrategy.addChunk [count=${n}]`),this._chunksById.get(t).push(e),this.store.insert(e))}_removeChunks(e){let t=this._chunksById.get(e.key.id)??[];for(let n of t)has(`esri-2d-update-debug`)&&console.debug(`Tile[${e.key.id}] Chunk[${n.chunkId}] ATileLoadStrategy.removeChunk`),this._onRemoveTileChunk(n),this.store.remove(n);this._chunksById.delete(e.key.id)}}export{n as AFeatureTileLoadStrategy};
|
|
2
|
+
import has from"../../../../../../core/has.js";import{FeatureCache as e}from"../FeatureCache.js";import{AFeatureLoadStrategy as t}from"./AFeatureLoadStrategy.js";class n extends t{constructor(t,n,r){super(t,n,r),this._chunksById=new Map,this._featureCache=new e(this.store,this._queryInfo,this._options,this._fetch.bind(this))}prepareCacheUpdate(e,t){return this._featureCache.prepareCacheUpdate(e,t)}applyCacheUpdate(){return this._featureCache.applyCacheUpdate()}unload(e){this._removeChunks(e.tile)}_onRemoveTileChunk(e){}_addChunk(e){let t=e.tile.id;this._chunksById.has(t)||this._chunksById.set(t,[]);let n=e.size();(n||e.first||e.end)&&(has(`esri-2d-update-debug`)&&console.debug(`Chunk[${e.chunkId}] ATileLoadStrategy.addChunk [count=${n}]`),this._chunksById.get(t).push(e),this.store.insert(e),this._connection.onEvent({type:`chunk`,tile:t,level:e.tile.level,density:e.reader.geometryDensity}))}_removeChunks(e){let t=this._chunksById.get(e.key.id)??[];for(let n of t)has(`esri-2d-update-debug`)&&console.debug(`Tile[${e.key.id}] Chunk[${n.chunkId}] ATileLoadStrategy.removeChunk`),this._onRemoveTileChunk(n),this.store.remove(n);this._chunksById.delete(e.key.id)}}export{n as AFeatureTileLoadStrategy};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{handlesGroup as e}from"../../../../../../core/handleUtils.js";import"../../../../../../core/has.js";import{getOrCreateMapValue as t}from"../../../../../../core/MapUtils.js";import{notDeepEqual as n}from"../../../../../../core/object.js";import{throwIfAborted as r,onAbort as i}from"../../../../../../core/promiseUtils.js";import{QueueProcessor as a}from"../../../../../../core/QueueProcessor.js";import{difference as o}from"../../../../../../core/SetUtils.js";import{openWithPorts as s}from"../../../../../../core/workers/workers.js";import{isFileProviderChangedError as c}from"../../../../../../layers/graphics/sources/parquet/fileProviderChangedError.js";import{loadParquetModule as l}from"../../../../../../libs/librust-parquet/loadParquetModule.js";import{
|
|
2
|
+
import{handlesGroup as e}from"../../../../../../core/handleUtils.js";import"../../../../../../core/has.js";import{getOrCreateMapValue as t}from"../../../../../../core/MapUtils.js";import{notDeepEqual as n}from"../../../../../../core/object.js";import{throwIfAborted as r,onAbort as i}from"../../../../../../core/promiseUtils.js";import{QueueProcessor as a}from"../../../../../../core/QueueProcessor.js";import{difference as o}from"../../../../../../core/SetUtils.js";import{openWithPorts as s}from"../../../../../../core/workers/workers.js";import{isFileProviderChangedError as c}from"../../../../../../layers/graphics/sources/parquet/fileProviderChangedError.js";import{loadParquetModule as l}from"../../../../../../libs/librust-parquet/loadParquetModule.js";import{FeatureCache as u}from"../FeatureCache.js";import{FeatureSourceQueryInfo as d}from"../FeatureSourceQueryInfo.js";import{ALoadStrategy as f}from"./ALoadStrategy.js";import{fetchQueueConcurrency as p}from"./constants.js";import{ParquetSourceChunk as m}from"./chunks/ParquetSourceChunk.js";import{FeatureSetReaderJSON as h}from"../../support/FeatureSetReaderJSON.js";import{FeatureSetReaderParquet as g}from"../../support/FeatureSetReaderParquet.js";class _{constructor(t,n){this.subscription=t,this.chunks=[],this.ids=[],this._controller=new AbortController,this._handles=e([i(t.signal,()=>this._controller.abort()),i(n,()=>this._controller.abort())])}destroy(){this._controller.abort(),this._handles.remove()}get options(){return{signal:this._controller.signal}}addBinaryData(e){this.chunks.push(e)}addSourceChunkId(e){this.ids.push(e)}}class v extends f{constructor(e,t,n,r){if(super(e.metadata,t,n),this._service=e,this._loadStates=new Map,this._queue=new a({concurrency:p,process:e=>this._loadTile(e)}),!e.geometryInfo.displayOptimization)throw Error(`InternalError: ParquetTileLoadStrategy only supports XZ-enabled parquet files`);this._loaded=this._load(r),this._queryInfo=d.createParquet(e,{...t.full,...t.partial,gdbVersion:null,historicMoment:null,queryScaleRanges:null,timeExtent:null},this.metadata),this._featureCache=new u(this.store,this._queryInfo,this._options,this._fetchCacheFeatures.bind(this))}destroy(){super.destroy(),this._loaded.finally(()=>{this._client.close(),this._client=null;for(let e of this._ports)e.close()}).catch(()=>{})}get about(){return{willQueryAllFeatures:!1,willQueryFullResolutionGeometry:!1}}get availableFields(){return this._schema.partial.availableFields}get definitionExpression(){return this._schema.full.definitionExpression}async tryUpdate(e,t){await this._loaded;let r=!0;return n(this.availableFields,t.availableFields)&&await this._updateFields(t.availableFields),this._schema.partial.dataSourceHash!==t.dataSourceHash&&(r=!1),this._schema.partial=t,r}async load(e){try{return await this._loaded,t(this._loadStates,e.key.id,()=>new _(e,this._options)),await this._queue.push(e)}catch(e){if(!y(e))throw e}}prepareCacheUpdate(e,t){this._featureCache.prepareCacheUpdate(e,t)}applyCacheUpdate(){return this._featureCache.applyCacheUpdate()}unload(e){let t=this._loadStates.get(e.tile.id);if(t!=null){for(let e of t.ids)this.store.removeById(e);t.destroy(),this._loadStates.delete(e.tile.id)}}async _load(e){this._ports=await e.layerView.openMemoryPorts(),this._client=await s(this._ports,{maxNumberOfConcurrentJobs:20}),this._proxy=this._client.createInvokeProxy(),this._indexMap=await this._proxy.getIndexMap()}_onOverride(){}async _updateFields(e){this._queryInfo.updateFields(e);let t=new Set(e),n=o(t,new Set(this.availableFields));if(this._service.metadata.fieldsIndex!=null&&n.size){let e=[];for(let t of this.store.insertedChunks())t instanceof m&&e.push(t.updateFields(this._proxy,Array.from(n),this._options));await Promise.all(e)}}async _loadTile(e){r(e.signal);let t=e.tile,n=this._loadStates.get(t.id);await this._downloadTileData(e),r(n.options);let i=new m(this.metadata,null,t,null,0,!0);n.addSourceChunkId(i.chunkId),this.store.insert(i)}async _downloadTileData(e){let t=e.tile,n=this._loadStates.get(t.id),{signal:i}=n.options,a=await l();r(i);let o=this._queryInfo.createTileQuery(t,{})?.inner;if(!o)return;let s=await this._proxy.queryStream({type:`tile`,extent:t.extent,transform:t.normalizedTransform,outFields:o.outFields,returnGeometry:o.returnGeometry,returnZ:!!o.returnZ,returnM:!!o.returnM,outSpatialReference:o.outSpatialReference.toJSON(),resolution:t.resolution,where:o.where},{signal:i}),c=0;for(;;){r(i);let e=await this._proxy.getStreamNext(s,{signal:i});if(r(i),e==null)break;let{fileId:o,buffer:l}=e,u=a.ParquetChunk.deserialize(new Uint8Array(l)),d=new g(this.metadata,this._indexMap,u,o,t.transform),f=new m(this.metadata,d,t,o,c++,!1);n.addBinaryData({data:u,fileId:o}),n.addSourceChunkId(f.chunkId),this.store.insert(f)}}async _fetchCacheFeatures(e,t){await this._loaded,r(t);let n=await this._proxy.queryFeatures(e.inner.toJSON(),t??void 0);return r(t),h.fromFeatureSet(n,this.metadata)}}function y(e){return c(e)||b(e)}function b(e){return typeof e==`object`&&!!e&&`message`in e&&e.message===`Protocol Violation: transport error`}export{v as ParquetTileLoadStrategy};
|