@arcgis/core 5.2.0-next.147 → 5.2.0-next.149
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/03afeefb9d16b6f1d844.js +1 -0
- package/assets/esri/core/workers/chunks/09b9a886363bc1197785.js +1 -0
- package/assets/esri/core/workers/chunks/0ad0484ffcbe4ad21bd3.js +1 -0
- package/assets/esri/core/workers/chunks/{72019baeba520edb6bb0.js → 112befb3b5b406f29298.js} +1 -1
- package/assets/esri/core/workers/chunks/12a7997a40c77f5c9160.js +1 -0
- package/assets/esri/core/workers/chunks/18787aa685524b958561.js +1 -0
- package/assets/esri/core/workers/chunks/{776ae25a34352d3468bc.js → 19743dedaa40446259ec.js} +1 -1
- package/assets/esri/core/workers/chunks/{6dd0b79fa3a629ab4f27.js → 1bca39e0e651426bdbb5.js} +1 -1
- package/assets/esri/core/workers/chunks/{8b1c17cc52d989924313.js → 21f45a47708e6e43147f.js} +1 -1
- package/assets/esri/core/workers/chunks/2c626f525f3483c03477.js +1 -0
- package/assets/esri/core/workers/chunks/2d9a1f23ec6ce90723ac.js +1 -0
- package/assets/esri/core/workers/chunks/{7a05b18f655c1167ce0a.js → 2ef5237e4c876d6a4ee0.js} +1 -1
- package/assets/esri/core/workers/chunks/{79c83f4e066682543ca1.js → 320e5942a098dd104366.js} +1 -1
- package/assets/esri/core/workers/chunks/407f1e8176f3b0af73b4.js +1 -0
- package/assets/esri/core/workers/chunks/{1ba0dfbe0958cdbd7c9f.js → 42fd2a7b22b03dacc6a7.js} +1 -1
- package/assets/esri/core/workers/chunks/444e5f214abce3d607cd.js +1 -0
- package/assets/esri/core/workers/chunks/45367aa8e5c5d574de94.js +1 -0
- package/assets/esri/core/workers/chunks/47d074136a7f8e551a9a.js +1 -0
- package/assets/esri/core/workers/chunks/4a6b92ecbb1f1c55cc43.js +1 -0
- package/assets/esri/core/workers/chunks/4fc337240e7cddd0e988.js +1 -0
- package/assets/esri/core/workers/chunks/{24cc7b6b5e307a89cdd5.js → 50036a323c2e7f155311.js} +1 -1
- package/assets/esri/core/workers/chunks/5116b569a8dbda4910c8.js +1 -0
- package/assets/esri/core/workers/chunks/54b18559280a7d2a8d93.js +1 -0
- package/assets/esri/core/workers/chunks/{b2737120c5999b2f3909.js → 55dcbf296d8d0092e473.js} +1 -1
- package/assets/esri/core/workers/chunks/{5c855af73ee3c3e764fb.js → 5732fdf6d8b87739aeea.js} +1 -1
- package/assets/esri/core/workers/chunks/5924ec3167a2941ebb1f.js +1 -0
- package/assets/esri/core/workers/chunks/5fa1ec357c3ad1f91bc7.js +1 -0
- package/assets/esri/core/workers/chunks/606ea251075fe81a1206.js +1 -0
- package/assets/esri/core/workers/chunks/{ceb680688fe7e570a774.js → 608be1172a908e92b9f1.js} +1 -1
- package/assets/esri/core/workers/chunks/{6f358116f79021ff9687.js → 612104dff305ff062dfa.js} +2 -2
- package/assets/esri/core/workers/chunks/6299be5e7e26bf3c6859.js +1 -0
- package/assets/esri/core/workers/chunks/68be3fb88ca61f82fb90.js +1 -0
- package/assets/esri/core/workers/chunks/6b04285726b803b82564.js +1 -0
- package/assets/esri/core/workers/chunks/6c9266120d46e8c69dbf.js +1 -0
- package/assets/esri/core/workers/chunks/6c9acd9e4e201dc380e9.js +1 -0
- package/assets/esri/core/workers/chunks/6eb5cc8ddf772c0062e6.js +1 -0
- package/assets/esri/core/workers/chunks/709e019885822b1f6f3e.js +1 -0
- package/assets/esri/core/workers/chunks/731018c0deffc41ffc97.js +1 -0
- package/assets/esri/core/workers/chunks/7320a4913b6cad7cc5d7.js +1 -0
- package/assets/esri/core/workers/chunks/7449568eb2305bf2d650.js +1 -0
- package/assets/esri/core/workers/chunks/7572c2bc5062e66f6330.js +1 -0
- package/assets/esri/core/workers/chunks/7d212c415f2709037408.js +1 -0
- package/assets/esri/core/workers/chunks/7f0f9dddc44b1f1600f0.js +1 -0
- package/assets/esri/core/workers/chunks/8293600f94553afc8c38.js +1 -0
- package/assets/esri/core/workers/chunks/{c18189710d6198516175.js → 830ab9b8d000169da675.js} +1 -1
- package/assets/esri/core/workers/chunks/8414ffd937c1099e0bbc.js +1 -0
- package/assets/esri/core/workers/chunks/{700b1d5bc67b7e1b3ff3.js → 8aa80b892fde552577e8.js} +1 -1
- package/assets/esri/core/workers/chunks/900181f68449d8f82eeb.js +1 -0
- package/assets/esri/core/workers/chunks/925271bb763607a326ae.js +1 -0
- package/assets/esri/core/workers/chunks/937824bc7948f7bc7845.js +1 -0
- package/assets/esri/core/workers/chunks/939942b00ba380e2957e.js +1 -0
- package/assets/esri/core/workers/chunks/97d6ef9e34a43ad2e556.js +1 -0
- package/assets/esri/core/workers/chunks/{c76c42c74eedd43263d3.js → 9dd1fc56eb1ea6eb705e.js} +1 -1
- package/assets/esri/core/workers/chunks/a07cb6a2f5b66d4e9f15.js +1 -0
- package/assets/esri/core/workers/chunks/a40b6d8b5c73e06e14d4.js +1 -0
- package/assets/esri/core/workers/chunks/a7f3576208f295b670d6.js +1 -0
- package/assets/esri/core/workers/chunks/a80e49acc827dbf3b524.js +1 -0
- package/assets/esri/core/workers/chunks/aeaaff7a4b1a99540f52.js +1 -0
- package/assets/esri/core/workers/chunks/af349c7bc8ef41a0e1bd.js +1 -0
- package/assets/esri/core/workers/chunks/afc3b2af20e9d1dfd260.js +1 -0
- package/assets/esri/core/workers/chunks/b19b6102ed2d6f67b43b.js +1 -0
- package/assets/esri/core/workers/chunks/b1b4066e8d1c0c9656e5.js +1 -0
- package/assets/esri/core/workers/chunks/b4334713bacdfe40ce3d.js +1 -0
- package/assets/esri/core/workers/chunks/{6883a5c6883eccaddf64.js → b6ba66a05030d3815dfd.js} +1 -1
- package/assets/esri/core/workers/chunks/bbec9d2e3b75a5c59681.js +1 -0
- package/assets/esri/core/workers/chunks/{9ab25ee06041f907b9a2.js → c2c1f51a4668055c2838.js} +1 -1
- package/assets/esri/core/workers/chunks/c337fc0e6dc69c233e6d.js +1 -0
- package/assets/esri/core/workers/chunks/c598b22f78ccc57f9d6d.js +1 -0
- package/assets/esri/core/workers/chunks/c5d85be6e16bc895e7fb.js +1 -0
- package/assets/esri/core/workers/chunks/c62738f84c914671b143.js +1 -0
- package/assets/esri/core/workers/chunks/c8d178a0c82fffd7fed5.js +1 -0
- package/assets/esri/core/workers/chunks/c8d6bb5cca49926a0214.js +1 -0
- package/assets/esri/core/workers/chunks/cde4b044e013b9e41591.js +1 -0
- package/assets/esri/core/workers/chunks/{a7985d20fa6e8d4878e7.js → d0f5bee9db1ad51ae687.js} +1 -1
- package/assets/esri/core/workers/chunks/d2347d6aa1c57fd57029.js +1 -0
- package/assets/esri/core/workers/chunks/dca35dbe427605ef6fcc.js +1 -0
- package/assets/esri/core/workers/chunks/e0351753f6b4d1adf11e.js +1 -0
- package/assets/esri/core/workers/chunks/{534186fc921a0ccf58dc.js → e1f5d00878f27e1d413e.js} +1 -1
- package/assets/esri/core/workers/chunks/f1df76f098a3cc924832.js +1 -0
- package/assets/esri/core/workers/chunks/f4f9d08b2df856e3b694.js +1 -0
- package/assets/esri/core/workers/chunks/{711cfb84659cb4437679.js → f528ac5c648ca6a98582.js} +1 -1
- package/assets/esri/core/workers/chunks/f8a83d447b7aef051876.js +1 -0
- package/assets/esri/core/workers/chunks/fc44227c1756f65b95df.js +1 -0
- package/assets/esri/core/workers/chunks/fdbf6208df5c58746d9d.js +1 -0
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ar.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.bg.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.bs.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ca.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.cs.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.da.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.de.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.el.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.es.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.et.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.fi.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.fr.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.he.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.hr.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.hu.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.id.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.it.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ja.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ko.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.lt.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.lv.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.nl.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.no.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pl.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pt-BR.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pt-PT.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ro.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ru.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sk.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sl.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sr.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sv.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.th.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.tr.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.uk.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.vi.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-CN.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-HK.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-TW.json +1 -1
- package/config.js +1 -1
- package/core/Loadable.js +1 -1
- package/geometry/HeightModelInfo.js +1 -1
- package/geometry/support/TileClipper.js +1 -1
- package/geometry/support/meshUtils.d.ts +1 -1
- package/geometry/support/scaleUtils.js +1 -1
- package/kernel.js +1 -1
- package/layers/BaseDynamicLayer.d.ts +1 -0
- package/layers/BaseElevationLayer.d.ts +2 -0
- package/layers/BaseTileLayer.d.ts +12 -9
- package/layers/CSVLayer.d.ts +1 -16
- package/layers/CatalogLayer.d.ts +1 -1
- package/layers/FeatureLayer.d.ts +3 -16
- package/layers/GeoJSONLayer.d.ts +1 -53
- package/layers/GeoRSSLayer.d.ts +0 -44
- package/layers/OrientedImageryLayer.js +1 -1
- package/layers/ParquetLayer.d.ts +84 -5
- package/layers/ParquetLayer.js +1 -1
- package/layers/SceneLayer.d.ts +4 -5
- package/layers/SceneLayer.js +1 -1
- package/layers/SketchLayer.d.ts +0 -1
- package/layers/SubtypeGroupLayer.d.ts +1 -1
- package/layers/VectorTileLayer.d.ts +2 -12
- package/layers/WFSLayer.d.ts +1 -1
- package/layers/buildingSublayers/BuildingComponentSublayer.d.ts +1 -1
- package/layers/catalog/CatalogFootprintLayer.d.ts +1 -1
- package/layers/knowledgeGraph/KnowledgeGraphSublayer.d.ts +1 -1
- package/layers/mixins/ArcGISImageService.d.ts +1 -1
- package/layers/mixins/PortalLayer.js +1 -1
- package/layers/mixins/RefreshableLayer.d.ts +1 -3
- package/layers/mixins/ScaleRangeLayer.js +1 -1
- package/layers/mixins/SublayersOwner.js +1 -1
- package/layers/orientedImagery/core/ExposurePoint.js +1 -1
- package/layers/orientedImagery/core/utils.js +1 -1
- package/layers/raster/datasets/GeospatialPDFRaster.js +1 -1
- package/layers/support/FeatureFilter.d.ts +1 -1
- package/layers/support/ParquetPortalItemData.js +1 -1
- package/layers/support/PortalItemData.js +1 -1
- package/layers/support/Sublayer.js +1 -1
- package/layers/support/SubtypeSublayer.d.ts +1 -1
- package/layers/support/SubtypeSublayer.js +1 -1
- package/layers/support/layersLoader.js +1 -1
- package/package.json +2 -2
- package/popup/FeaturesModel.d.ts +27 -6
- package/popup/FeaturesModel.js +1 -1
- package/portal/support/layersLoader.js +1 -1
- package/portal/support/portalLayers.js +1 -1
- package/renderers/VectorFieldRenderer.d.ts +4 -4
- package/rest/print.js +1 -1
- package/rest/support/printTaskUtils.js +1 -1
- package/smartMapping/renderers/color.js +1 -1
- package/smartMapping/renderers/dotDensity.js +1 -1
- package/smartMapping/renderers/heatmap.js +1 -1
- package/smartMapping/renderers/pieChart.js +1 -1
- package/smartMapping/renderers/type.js +1 -1
- package/smartMapping/statistics/heatmapStatistics.js +1 -1
- package/smartMapping/statistics/histogram.js +1 -1
- package/smartMapping/statistics/summaryStatistics.js +1 -1
- package/smartMapping/statistics/summaryStatisticsForAttributes.js +1 -1
- package/smartMapping/statistics/uniqueValues.js +1 -1
- package/smartMapping/support/adapters/support/layerUtils.js +1 -1
- package/smartMapping/types.d.ts +3 -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/sources/FeatureSource.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/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/HeatmapFeatureProcessor.js +1 -1
- package/views/3d/support/popupHitTest.js +1 -1
- package/views/3d/terrain/TerrainData.js +1 -1
- package/views/3d/terrain/terrainUtils.js +1 -1
- package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
- package/views/DOMContainer.d.ts +27 -9
- package/views/DOMContainer.js +1 -1
- package/views/PopupView.d.ts +6 -0
- package/views/VideoView.d.ts +27 -9
- package/views/View.d.ts +16 -7
- package/views/View.js +1 -1
- package/views/View2D.d.ts +1 -1
- package/views/draw/support/InteractiveHandle.js +1 -1
- package/views/interactive/snapping/FeatureSnappingSourceInfo.js +1 -1
- package/views/interactive/snapping/SnappingManagerPool.js +1 -1
- package/views/interactive/snapping/SnappingOptions.d.ts +1 -1
- package/views/interactive/tooltip/components/ElevationModeSelect.js +1 -1
- package/views/layers/FeatureLikeLayerView.d.ts +2 -3
- package/views/layers/LayerView.js +1 -1
- package/views/layers/LineOfSightLayerView.d.ts +3 -4
- package/views/layers/ParquetLayerView.d.ts +15 -0
- package/views/layers/PointCloudLayerView.d.ts +1 -1
- package/views/layers/SceneLayerView.d.ts +1 -1
- package/views/layers/ViewshedLayerView.d.ts +5 -6
- package/views/support/layerViewUtils.js +1 -1
- package/webdoc/support/saveUtils.js +1 -1
- package/webdoc/support/unsupportedErrors.js +1 -1
- package/widgets/Editor.d.ts +10 -0
- package/widgets/Legend.d.ts +1 -0
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/adapters/draw/HeightMeasurementAdapter.js +1 -1
- package/widgets/OrientedImageryViewer/adapters/sketch/MeasurementAdapter.js +1 -1
- package/widgets/OrientedImageryViewer/adapters/sketch/TriangulatedMeasurementAdapter.js +1 -1
- package/widgets/OrientedImageryViewer/components/ImageLocationViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/services/ImageMeasurementService.js +1 -1
- package/widgets/support/SnappingControls.d.ts +1 -1
- package/assets/esri/core/workers/chunks/00a600c71ceebe7bfeee.js +0 -1
- package/assets/esri/core/workers/chunks/0193df3f9fb23633da87.js +0 -1
- package/assets/esri/core/workers/chunks/050c4b212f2b5691db34.js +0 -1
- package/assets/esri/core/workers/chunks/05963f57cbe5a5249496.js +0 -1
- package/assets/esri/core/workers/chunks/06e7400f5ebe0719b81c.js +0 -1
- package/assets/esri/core/workers/chunks/07aa6d36f1006b6ab7ff.js +0 -1
- package/assets/esri/core/workers/chunks/0bb11751efa2023ec937.js +0 -1
- package/assets/esri/core/workers/chunks/14a3808427deaaa85bf2.js +0 -1
- package/assets/esri/core/workers/chunks/1a6027f08893aba9e677.js +0 -1
- package/assets/esri/core/workers/chunks/2062d46f638eabfc9499.js +0 -1
- package/assets/esri/core/workers/chunks/2164fcaced72b0fda31f.js +0 -1
- package/assets/esri/core/workers/chunks/222af8522773c7dc80b1.js +0 -1
- package/assets/esri/core/workers/chunks/25b0885d3bc190b28c04.js +0 -1
- package/assets/esri/core/workers/chunks/303fde8f3459dde16555.js +0 -1
- package/assets/esri/core/workers/chunks/305a718719ef15fda90c.js +0 -1
- package/assets/esri/core/workers/chunks/347bf269c2b1583d2dca.js +0 -1
- package/assets/esri/core/workers/chunks/350540770781b281c39a.js +0 -1
- package/assets/esri/core/workers/chunks/392bcef780df52fb4cca.js +0 -1
- package/assets/esri/core/workers/chunks/3b017b718ea2d4ed498f.js +0 -1
- package/assets/esri/core/workers/chunks/3e81dfc9d621ece038fe.js +0 -1
- package/assets/esri/core/workers/chunks/4479a166b5ac8db1e12e.js +0 -1
- package/assets/esri/core/workers/chunks/46b2d4addfc73f9183a4.js +0 -1
- package/assets/esri/core/workers/chunks/4d82db661365daa513a6.js +0 -1
- package/assets/esri/core/workers/chunks/4ed8655770a3e018e366.js +0 -1
- package/assets/esri/core/workers/chunks/4f48d45baa8ada16f579.js +0 -1
- package/assets/esri/core/workers/chunks/50ca55ad2f5421acc492.js +0 -1
- package/assets/esri/core/workers/chunks/5450f339f97b2b042ee2.js +0 -1
- package/assets/esri/core/workers/chunks/55cc8581978c71b17998.js +0 -1
- package/assets/esri/core/workers/chunks/5ea8809b6519c05ad9f6.js +0 -1
- package/assets/esri/core/workers/chunks/62795a1573cbaa4b8e7a.js +0 -1
- package/assets/esri/core/workers/chunks/633a9051580c5302d2f7.js +0 -1
- package/assets/esri/core/workers/chunks/641d196a554bd07f729e.js +0 -1
- package/assets/esri/core/workers/chunks/655c3afda1eef01611dd.js +0 -1
- package/assets/esri/core/workers/chunks/6569797d3c22442e5e97.js +0 -1
- package/assets/esri/core/workers/chunks/70793967db45fb142962.js +0 -1
- package/assets/esri/core/workers/chunks/794e5a67a88cb10c1a19.js +0 -1
- package/assets/esri/core/workers/chunks/798a63653f82c0e842c5.js +0 -1
- package/assets/esri/core/workers/chunks/820f41d66b2056a3ebc8.js +0 -1
- package/assets/esri/core/workers/chunks/841f67baf6a1634ada48.js +0 -1
- package/assets/esri/core/workers/chunks/84fcbf7a1d04f01685d1.js +0 -1
- package/assets/esri/core/workers/chunks/8e511079918e2fd9261f.js +0 -1
- package/assets/esri/core/workers/chunks/8fcfd515ee1b18c902e5.js +0 -1
- package/assets/esri/core/workers/chunks/9001e9a1e81bce175ddd.js +0 -1
- package/assets/esri/core/workers/chunks/94c5f3bc07fe516dafbe.js +0 -1
- package/assets/esri/core/workers/chunks/956a40f40bde416efe93.js +0 -1
- package/assets/esri/core/workers/chunks/95b82cbbe355266c65d7.js +0 -1
- package/assets/esri/core/workers/chunks/97dbbedea9fe03bd1306.js +0 -1
- package/assets/esri/core/workers/chunks/9c0fd8baa00ee9733ba4.js +0 -1
- package/assets/esri/core/workers/chunks/9c1e69ac82e2bf746191.js +0 -1
- package/assets/esri/core/workers/chunks/a010d2e4e34eb7bc1fec.js +0 -1
- package/assets/esri/core/workers/chunks/a05790444115e4cf1bcc.js +0 -1
- package/assets/esri/core/workers/chunks/a52bf03bffb6ffac3b54.js +0 -1
- package/assets/esri/core/workers/chunks/a7edf7541569fef77cb3.js +0 -1
- package/assets/esri/core/workers/chunks/b2c29bc48c7b3b0c9357.js +0 -1
- package/assets/esri/core/workers/chunks/b7d77dd2abb255fd2e5a.js +0 -1
- package/assets/esri/core/workers/chunks/b8054adc45bca069b948.js +0 -1
- package/assets/esri/core/workers/chunks/ba46869e700ba1d2787f.js +0 -1
- package/assets/esri/core/workers/chunks/ba48045a81acc4cda927.js +0 -1
- package/assets/esri/core/workers/chunks/ca7fb75e2c62e7d37122.js +0 -1
- package/assets/esri/core/workers/chunks/d01381b548c204835509.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/d4f038e04c42aed588c1.js +0 -1
- package/assets/esri/core/workers/chunks/e32b96c08cb272a59851.js +0 -1
- package/assets/esri/core/workers/chunks/e7c60bd85abbd36cdc64.js +0 -1
- package/assets/esri/core/workers/chunks/f05de08e194a3f9b96f2.js +0 -1
- package/assets/esri/core/workers/chunks/f0a68d2900d24f56afa0.js +0 -1
- package/assets/esri/core/workers/chunks/f511a304e9dea9eb3e01.js +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import e from"../../core/Error.js";import{isTimeOnlyField as t,numericTypes as n}from"../../layers/support/fieldUtils.js";import{verifyBasicFieldValidity as r,verifyFieldType as i,verifyFilterValidity as a}from"./support/utils.js";import{verifyBinningParams as o}from"../support/binningUtils.js";import{getNormalizationType as s,getFieldsList as c,isAnyDateField as l,dateTypes as u}from"../support/utils.js";import{defaultSupportedLayerTypes as d,binningCapableLayerTypes as f,createLayerAdapter as p,getLayerTypeLabels as m}from"../support/adapters/support/layerUtils.js";const h=[...u,`time-only`,...n];async function g(u){if(!(u?.layer&&(u.field||u.fields?.length||u.valueExpression||u.sqlExpression)))throw new e(`histogram:missing-parameters`,`'layer' and 'field', 'fields', 'valueExpression' or 'sqlExpression' parameters are required`);if(u.valueExpression&&!u.sqlExpression&&!u.view)throw new e(`histogram:missing-parameters`,`View is required when 'valueExpression' is specified`);u.forBinning&&o(u,`histogram`);let{layer:g,..._}=u,v=[...d,
|
|
2
|
+
import e from"../../core/Error.js";import{isTimeOnlyField as t,numericTypes as n}from"../../layers/support/fieldUtils.js";import{verifyBasicFieldValidity as r,verifyFieldType as i,verifyFilterValidity as a}from"./support/utils.js";import{verifyBinningParams as o}from"../support/binningUtils.js";import{getNormalizationType as s,getFieldsList as c,isAnyDateField as l,dateTypes as u}from"../support/utils.js";import{defaultSupportedLayerTypes as d,binningCapableLayerTypes as f,createLayerAdapter as p,getLayerTypeLabels as m}from"../support/adapters/support/layerUtils.js";const h=[...u,`time-only`,...n];async function g(u){if(!(u?.layer&&(u.field||u.fields?.length||u.valueExpression||u.sqlExpression)))throw new e(`histogram:missing-parameters`,`'layer' and 'field', 'fields', 'valueExpression' or 'sqlExpression' parameters are required`);if(u.valueExpression&&!u.sqlExpression&&!u.view)throw new e(`histogram:missing-parameters`,`View is required when 'valueExpression' is specified`);u.forBinning&&o(u,`histogram`);let{layer:g,..._}=u,v=[...d,0,4,7],y=u.forBinning?f:v,b=p(g,y,u.forBinning);if(!b)throw new e(`histogram:invalid-parameters`,`'layer' must be one of these types: `+m(y).join(`, `));let x={layerAdapter:b,..._};x.normalizationType=s(x);let S=x.signal==null?null:{signal:x.signal};await b.load(S);let C=await c({field:x.field,normalizationField:x.normalizationField,valueExpression:x.valueExpression,fields:x.fields}),w=r(b,C,`histogram:invalid-parameters`);if(w)throw w;let T=!x.classificationMethod||x.classificationMethod===`equal-interval`;if(x.fields?.length){let t=x.fields;if(t.length<2)throw new e(`histogram:invalid-parameters`,`'fields' must contain at least 2 fields if specified.`);if(x.normalizationType||x.valueExpression||x.field)throw new e(`histogram:invalid-parameters`,`Normalization, 'field', 'valueExpression' are not allowed when 'fields' is specified.`);let r=new Set;for(let e of t){let t=b.getField(e),a=i(b,t,`histogram:invalid-parameters`,n);if(a)throw a;r.add(t.type)}if(r.size>1)throw new e(`histogram:invalid-parameters`,`All fields must be of the same type when 'fields' is specified.`);if(!T)throw new e(`histogram:invalid-parameters`,`'classificationMethod' other than 'equal-interval' is not allowed when 'fields' is specified`)}else if(x.valueExpression||x.sqlExpression){if(x.normalizationType)throw new e(`histogram:invalid-parameters`,`Normalization is not allowed when 'valueExpression' or 'sqlExpression' is specified`);if(!T)throw new e(`histogram:invalid-parameters`,`'classificationMethod' other than 'equal-interval' is not allowed when 'valueExpression' or 'sqlExpression' is specified`)}else if(x.field){let n=b.getField(x.field),r=i(b,n,`histogram:invalid-parameters`,h);if(r)throw r;if(l(n)||t(n)){if(x.normalizationType)throw new e(`histogram:invalid-parameters`,`Normalization is not allowed for date fields`);if(!T)throw new e(`histogram:invalid-parameters`,`'classificationMethod' other than 'equal-interval' is not allowed for date fields`)}}x.filter&&!x.filter.spatialRelationship&&(x.filter.spatialRelationship=`intersects`);let E=a(x.filter,`histogram:invalid-parameters`);if(E)throw E;if(x.useQueryAttributeBins??=!0,!x.useQueryAttributeBins&&x.returnAggregateIds)throw new e(`histogram:invalid-parameters`,`'returnAggregateIds' cannot be true when 'useQueryAttributeBins' is false.`);return x}async function _(e){let{layerAdapter:t,...n}=await g(e);return t.histogram(n)}export{_ as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import e from"../../core/Error.js";import{isTimeOnlyField as t,numericTypes as n}from"../../layers/support/fieldUtils.js";import{verifyBasicFieldValidity as r,verifyFieldType as i,verifyFilterValidity as a}from"./support/utils.js";import{verifyBinningParams as o}from"../support/binningUtils.js";import{getNormalizationType as s,getFieldsList as c,isAnyDateField as l,dateTypes as u}from"../support/utils.js";import{defaultSupportedLayerTypes as d,binningCapableLayerTypes as f,createLayerAdapter as p,getLayerTypeLabels as m}from"../support/adapters/support/layerUtils.js";const h=[...n,...u,`time-only`,`string`];async function g(u){if(!(u?.layer&&(u.field||u.fields?.length||u.valueExpression||u.sqlExpression)))throw new e(`summary-statistics:missing-parameters`,`'layer' and 'field', 'fields', 'valueExpression' or 'sqlExpression' parameters are required`);if(u.valueExpression&&!u.sqlExpression&&!u.view)throw new e(`summary-statistics:missing-parameters`,`View is required when 'valueExpression' is specified`);u.forBinning&&o(u,`summary-statistics`);let{layer:g,..._}=u,v=[...d,
|
|
2
|
+
import e from"../../core/Error.js";import{isTimeOnlyField as t,numericTypes as n}from"../../layers/support/fieldUtils.js";import{verifyBasicFieldValidity as r,verifyFieldType as i,verifyFilterValidity as a}from"./support/utils.js";import{verifyBinningParams as o}from"../support/binningUtils.js";import{getNormalizationType as s,getFieldsList as c,isAnyDateField as l,dateTypes as u}from"../support/utils.js";import{defaultSupportedLayerTypes as d,binningCapableLayerTypes as f,createLayerAdapter as p,getLayerTypeLabels as m}from"../support/adapters/support/layerUtils.js";const h=[...n,...u,`time-only`,`string`];async function g(u){if(!(u?.layer&&(u.field||u.fields?.length||u.valueExpression||u.sqlExpression)))throw new e(`summary-statistics:missing-parameters`,`'layer' and 'field', 'fields', 'valueExpression' or 'sqlExpression' parameters are required`);if(u.valueExpression&&!u.sqlExpression&&!u.view)throw new e(`summary-statistics:missing-parameters`,`View is required when 'valueExpression' is specified`);u.forBinning&&o(u,`summary-statistics`);let{layer:g,..._}=u,v=[...d,0,4,7],y=u.forBinning?f:v,b=p(g,y,u.forBinning);if(!b)throw new e(`summary-statistics:invalid-parameters`,`'layer' must be one of these types: `+m(y).join(`, `));let x={layerAdapter:b,..._};x.normalizationType=s(x);let S=x.signal==null?null:{signal:x.signal};await b.load(S);let C=x.normalizationType,w=await c({field:x.field,normalizationField:x.normalizationField,valueExpression:x.valueExpression,fields:x.fields}),T=r(b,w,`summary-statistics:invalid-parameters`);if(T)throw T;if(x.fields?.length){let t=x.fields;if(t.length<2)throw new e(`summary-statistics:invalid-parameters`,`'fields' must contain at least 2 fields if specified.`);if(C||x.minValue||x.maxValue||x.valueExpression||x.field)throw new e(`summary-statistics:invalid-parameters`,`Normalization, 'field', 'valueExpression', 'minValue' and 'maxValue' are not allowed when 'fields' is specified.`);let r=new Set;for(let e of t){let t=b.getField(e),a=i(b,t,`summary-statistics:invalid-parameters`,n);if(a)throw a;r.add(t.type)}if(r.size>1)throw new e(`summary-statistics:invalid-parameters`,`All fields must be of the same type when 'fields' is specified.`)}else{if((x.valueExpression||x.sqlExpression)&&C)throw new e(`summary-statistics:invalid-parameters`,`Normalization is not allowed when 'valueExpression' or 'sqlExpression' is specified`);if(x.field){let n=b.getField(x.field),r=i(b,n,`summary-statistics:invalid-parameters`,h);if(r)throw r;if((l(n)||t(n))&&C)throw new e(`summary-statistics:invalid-parameters`,`Normalization is not allowed for date fields`)}}x.filter&&!x.filter.spatialRelationship&&(x.filter.spatialRelationship=`intersects`);let E=a(x.filter,`summary-statistics:invalid-parameters`);if(E)throw E;return x}async function _(e){let{layerAdapter:t,...n}=await g(e);return t.summaryStatistics(n)}export{_ as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import e from"../../core/Error.js";import{getSumOfAttributesExpr as t,verifyBasicFieldValidity as n}from"./support/utils.js";import{verifyBinningParams as r}from"../support/binningUtils.js";import{defaultStatisticTypes as i,getFieldsList as a}from"../support/utils.js";import{binningCapableLayerTypes as o,createLayerAdapter as s,getLayerTypeLabels as c}from"../support/adapters/support/layerUtils.js";async function l(t){if(!(t&&t.layer&&t.attributes))throw new e(`summary-statistics-for-attributes:missing-parameters`,`'layer' and 'attributes' parameters are required`);if(t.attributes.some(e=>!!e.valueExpression)&&!t.view)throw new e(`summary-statistics-for-attributes:missing-parameters`,`View is required when 'valueExpression' is specified in attributes`);t.forBinning&&r(t,`summary-statistics-for-attributes`);let{layer:i,...l}=t,u=t.forBinning?o:[
|
|
2
|
+
import e from"../../core/Error.js";import{getSumOfAttributesExpr as t,verifyBasicFieldValidity as n}from"./support/utils.js";import{verifyBinningParams as r}from"../support/binningUtils.js";import{defaultStatisticTypes as i,getFieldsList as a}from"../support/utils.js";import{binningCapableLayerTypes as o,createLayerAdapter as s,getLayerTypeLabels as c}from"../support/adapters/support/layerUtils.js";async function l(t){if(!(t&&t.layer&&t.attributes))throw new e(`summary-statistics-for-attributes:missing-parameters`,`'layer' and 'attributes' parameters are required`);if(t.attributes.some(e=>!!e.valueExpression)&&!t.view)throw new e(`summary-statistics-for-attributes:missing-parameters`,`View is required when 'valueExpression' is specified in attributes`);t.forBinning&&r(t,`summary-statistics-for-attributes`);let{layer:i,...l}=t,u=t.forBinning?o:[3,5,9,6,8,11,17],d=s(i,u,t.forBinning);if(!d)throw new e(`summary-statistics-for-attributes:invalid-parameters`,`'layer' must be one of these types: `+c(u).join(`, `));let f={layerAdapter:d,...l};f.includeZeros=f.includeZeros==null||f.includeZeros,f.includeNegatives=f.includeNegatives==null||f.includeNegatives;let p=f.view,m=f.signal==null?null:{signal:f.signal};await Promise.all([p?.when(),d.load(m)]);let h=[];for(let e of f.attributes){let t=await a({field:e.field,valueExpression:e.valueExpression});Array.prototype.push.apply(h,t)}let g=n(d,h,`summary-statistics-for-attributes:invalid-parameters`);if(g)throw g;return f}async function u(e){let{layerAdapter:n,...r}=await l(e),a=t(r.attributes,r.includeZeros,r.includeNegatives);return n.summaryStatistics({valueExpression:a.valueExpression,sqlExpression:a.sqlExpression,sqlWhere:a.sqlWhere,view:r.view,filter:r.filter,outStatisticTypes:i,signal:r.signal})}export{u as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import e from"../../core/Error.js";import{verifyBasicFieldValidity as t,verifyFilterValidity as n}from"./support/utils.js";import{verifyBinningParams as r}from"../support/binningUtils.js";import{getFieldsList as i}from"../support/utils.js";import{binningCapableLayerTypes as a,createLayerAdapter as o,getLayerTypeLabels as s,defaultSupportedLayerTypes as c}from"../support/adapters/support/layerUtils.js";async function l(l){if(!(l?.layer&&(l.field||l.valueExpression)))throw new e(`unique-values:missing-parameters`,`'layer' and 'field' or 'valueExpression' parameters are required`);let u=l.valueExpression||l.sqlExpression,d=u&&!l.sqlExpression;if(u){if(d){if(!l.view)throw new e(`unique-values:missing-parameters`,`View is required when 'valueExpression' is specified`)}else if(!l.valueExpression)throw new e(`unique-values:missing-parameters`,`'valueExpression' parameters are required`)}l.forBinning&&r(l,`unique-values`);let{layer:f,...p}=l,m=[...c,
|
|
2
|
+
import e from"../../core/Error.js";import{verifyBasicFieldValidity as t,verifyFilterValidity as n}from"./support/utils.js";import{verifyBinningParams as r}from"../support/binningUtils.js";import{getFieldsList as i}from"../support/utils.js";import{binningCapableLayerTypes as a,createLayerAdapter as o,getLayerTypeLabels as s,defaultSupportedLayerTypes as c}from"../support/adapters/support/layerUtils.js";async function l(l){if(!(l?.layer&&(l.field||l.valueExpression)))throw new e(`unique-values:missing-parameters`,`'layer' and 'field' or 'valueExpression' parameters are required`);let u=l.valueExpression||l.sqlExpression,d=u&&!l.sqlExpression;if(u){if(d){if(!l.view)throw new e(`unique-values:missing-parameters`,`View is required when 'valueExpression' is specified`)}else if(!l.valueExpression)throw new e(`unique-values:missing-parameters`,`'valueExpression' parameters are required`)}l.forBinning&&r(l,`unique-values`);let{layer:f,...p}=l,m=[...c,7],h=l.forBinning?a:m,g=o(f,h,l.forBinning);if(!g)throw new e(`unique-values:invalid-parameters`,`'layer' must be one of these types: `+s(h).join(`, `));let _={layerAdapter:g,...p},v=_.signal==null?null:{signal:_.signal};await g.load(v);let y=await i({field:_.field,field2:_.field2,field3:_.field3,valueExpression:_.valueExpression}),b=t(g,y,`unique-values:invalid-parameters`);if(b)throw b;_.filter&&!_.filter.spatialRelationship&&(_.filter.spatialRelationship=`intersects`);let x=n(_.filter,`summary-statistics:invalid-parameters`);if(x)throw x;return _}async function u(e){let{layerAdapter:t,...n}=await l(e);return t.uniqueValues(n)}export{u as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import e from"../CSVLayerAdapter.js";import t from"../FeatureLayerAdapter.js";import n from"../FeatureLayerBinningAdapter.js";import r from"../InMemoryLayerAdapter.js";import i from"../LayerAdapter.js";import a from"../PointCloudLayerAdapter.js";import o from"../SceneLayerAdapter.js";import s from"../StreamLayerAdapter.js";const c={0:{adapter:t,type:`catalog`,label:`CatalogLayer`},
|
|
2
|
+
import e from"../CSVLayerAdapter.js";import t from"../FeatureLayerAdapter.js";import n from"../FeatureLayerBinningAdapter.js";import r from"../InMemoryLayerAdapter.js";import i from"../LayerAdapter.js";import a from"../PointCloudLayerAdapter.js";import o from"../SceneLayerAdapter.js";import s from"../StreamLayerAdapter.js";const c={0:{adapter:t,type:`annotation-feature`,label:`AnnotationFeatureLayer`},1:{adapter:t,type:`catalog`,label:`CatalogLayer`},2:{adapter:t,type:`catalog-footprint`,label:`CatalogFootprintLayer`},3:{adapter:e,type:`csv`,label:`CSVLayer`},4:{adapter:t,type:`dimension-feature`,label:`DimensionFeatureLayer`},5:{adapter:t,type:`feature`,label:`FeatureLayer`},7:{adapter:t,type:`imagery`,label:`ImageryLayer`},6:{adapter:t,type:`geojson`,label:`GeoJSONLayer`},8:{adapter:t,type:`knowledge-graph-sublayer`,label:`KnowledgeGraphSublayer`},9:{adapter:r,type:`ogc-feature`,label:`OGCFeatureLayer`},10:{adapter:t,type:`oriented-imagery`,label:`OrientedImageryLayer`},11:{adapter:t,type:`parquet`,label:`ParquetLayer`},12:{adapter:a,type:`point-cloud`,label:`PointCloudLayer`},13:{adapter:o,type:`scene`,label:`SceneLayer`},14:{adapter:s,type:`stream`,label:`StreamLayer`},15:{adapter:t,type:`subtype-group`,label:`SubtypeGroupLayer`},16:{adapter:t,type:`subtype-sublayer`,label:`SubtypeSublayer`},17:{adapter:t,type:`wfs`,label:`WFSLayer`}},l=[1,2,3,5,6,8,9,10,11,12,13,14,15,16,17],u=[2,3,5,6,8,9,10,11,13,14,15,16,17],d=[3,5,6,9,8,10,11,14,17];function f(e){return e.map(e=>c[e].label)}function p(e){return e.map(e=>c[e].type)}function m(e,t=l,r){if(e instanceof i)return e;let a=h(e,t);return a?r?new n({layer:e}):new a({layer:e}):null}function h(e,t=l){let n=null;return t.some(t=>{let r=e.type===c[t].type;return r&&(n=c[t].adapter),r}),n}export{d as binningCapableLayerTypes,m as createLayerAdapter,l as defaultSupportedLayerTypes,u as featureCapableLayerTypes,f as getLayerTypeLabels,p as getLayerTypes};
|
package/smartMapping/types.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import type AnnotationFeatureLayer from "../layers/AnnotationFeatureLayer.js";
|
|
1
2
|
import type CatalogLayer from "../layers/CatalogLayer.js";
|
|
2
3
|
import type CSVLayer from "../layers/CSVLayer.js";
|
|
4
|
+
import type DimensionFeatureLayer from "../layers/DimensionFeatureLayer.js";
|
|
3
5
|
import type FeatureLayer from "../layers/FeatureLayer.js";
|
|
4
6
|
import type GeoJSONLayer from "../layers/GeoJSONLayer.js";
|
|
5
7
|
import type ImageryLayer from "../layers/ImageryLayer.js";
|
|
@@ -16,7 +18,7 @@ import type KnowledgeGraphSublayer from "../layers/knowledgeGraph/KnowledgeGraph
|
|
|
16
18
|
import type SubtypeSublayer from "../layers/support/SubtypeSublayer.js";
|
|
17
19
|
|
|
18
20
|
/** @since 5.0 */
|
|
19
|
-
export type SupportedLayer = CatalogLayer | CatalogFootprintLayer | CSVLayer | FeatureLayer | GeoJSONLayer | ImageryLayer | KnowledgeGraphSublayer | OGCFeatureLayer | OrientedImageryLayer | ParquetLayer | PointCloudLayer | SceneLayer | StreamLayer | SubtypeGroupLayer | SubtypeSublayer | WFSLayer;
|
|
21
|
+
export type SupportedLayer = AnnotationFeatureLayer | CatalogLayer | CatalogFootprintLayer | CSVLayer | DimensionFeatureLayer | FeatureLayer | GeoJSONLayer | ImageryLayer | KnowledgeGraphSublayer | OGCFeatureLayer | OrientedImageryLayer | ParquetLayer | PointCloudLayer | SceneLayer | StreamLayer | SubtypeGroupLayer | SubtypeSublayer | WFSLayer;
|
|
20
22
|
|
|
21
23
|
/** @since 5.0 */
|
|
22
24
|
export type BinningSupportedLayer = FeatureLayer | OGCFeatureLayer | OrientedImageryLayer | GeoJSONLayer | CSVLayer | ParquetLayer | WFSLayer | StreamLayer | KnowledgeGraphSublayer;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/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/5.2/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/5.2/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/5.2/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/5.2/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){if(r.objectId!=null&&r.objectId!==-1){t.push(r.objectId);continue}if(r.globalId!=null){n.push(r.globalId);continue}l.getLogger(this).warn(`mapview-apply-edits`,`A feature identifier must contain either a GlobalId or ObjectId. Ignoring`,{identifier:r})}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.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 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){if(r.objectId!=null&&r.objectId!==-1){t.push(r.objectId);continue}if(r.globalId!=null){n.push(r.globalId);continue}l.getLogger(this).warn(`mapview-apply-edits`,`A feature identifier must contain either a GlobalId or ObjectId. Ignoring`,{identifier:r})}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()],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/5.2/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;if(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})));return}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){if(this.isFulfilled()&&!this.isResolved()){this.updateRequested=!1;return}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/5.2/LICENSE.txt */
|
|
2
|
-
import has from"../../../../../core/has.js";import{destroyMaybe as e}from"../../../../../core/maybe.js";import{notDeepEqual as t}from"../../../../../core/object.js";import{ignoreAbortErrors as n,throwIfNotAbortError as r}from"../../../../../core/promiseUtils.js";import{OptimizedFeature as i}from"../../../../../layers/graphics/OptimizedFeature.js";import{QueryEngine as a}from"../../../../../layers/graphics/data/QueryEngine.js";import{FeatureStoreStatistics as o}from"../FeatureStoreStatistics.js";import{StreamMessenger as s}from"./StreamMessenger.js";import{UpdateStatus as c}from"./strategies/ALoadStrategy.js";import{FeatureDrillDownTileLoadStrategy as l}from"./strategies/FeatureDrillDownTileLoadStrategy.js";import{FeatureHybridTileLoadStrategy as u}from"./strategies/FeatureHybridTileLoadStrategy.js";import{FeaturePagedTileLoadStrategy as d}from"./strategies/FeaturePagedTileLoadStrategy.js";import{FeatureSnapshotLoadStrategy as f}from"./strategies/FeatureSnapshotLoadStrategy.js";import{ParquetSnapshotLoadStrategy as p}from"./strategies/ParquetSnapshotLoadStrategy.js";import{ParquetTileLoadStrategy as m}from"./strategies/ParquetTileLoadStrategy.js";import{StreamLoadStrategy as h}from"./strategies/StreamLoadStrategy.js";import{FeatureSourceChunkStore as g}from"./strategies/chunks/SourceChunkStore.js";import _ from"../support/FeatureFilterEvaluator.js";import{UpdateTracking2D as v}from"../../support/UpdateTracking2D.js";class y{constructor(e,t,n){this._aggregateAdapter=e,this._subscriptions=t,this._connection=n,this._updateTracking=new v({debugName:`FeatureSource`}),this._filters=[],this.store=new g}destroy(){this._strategy?.destroy(),this._streamMessenger?.destroy(),this._updateTracking?.destroy(),this.store.destroy()}get metadata(){return this._strategy.metadata}get streamMessenger(){return this._streamMessenger??this._initStreamMessenger(),this._streamMessenger}get statistics(){return o.from(this.store)}get updateTracking(){return this._updateTracking}get usedMemory(){return this.store.usedMemory}get queryEngine(){if(!this._queryEngine){if(!this.store||!this._strategy)return null;this._queryEngine=new a({featureStore:this.store,fieldsIndex:this.metadata.fieldsIndex,geometryType:this.metadata.geometryType,featureIdInfo:this.metadata.featureIdInfo,hasZ:this.metadata.hasZ,hasM:this.metadata.hasM,spatialReference:this.metadata.outSpatialReference,aggregateAdapter:this._aggregateAdapter,timeInfo:this.metadata.timeInfo,definitionExpression:this._strategy?.definitionExpression,availableFields:this._strategy?.availableFields})}return this._queryEngine}get isStream(){return this._schema.type===`stream`}get hasQueryDisplayFilter(){if(!this._schema)return!1;switch(this._schema.type){case`feature`:return this._schema.strategy.full.displayFilterInfo!=null;case`parquet`:case`stream`:return!1}}chunks(){return Array.from(this.store.chunks())}async applyCacheUpdate(){this.hasQueryDisplayFilter&&await this._updateTracking.addPromise(this._strategy.applyCacheUpdate())}cleanup(){return this.store.cleanup()}onSubscribe(e){if(this._connection.onEvent({type:`subscribe`,tile:e.tile.id}),!this._strategy)return;let t=this._strategy.load(e);t.then(()=>this._connection.onEvent({type:`loaded`,tile:e.tile.id})).catch(t=>this._connection.onEvent({type:`error`,tile:e.tile.id,error:t})),this._updateTracking.consumePromise(t)}onResume(e){this._updateTracking.consumePromise(n(this._strategy?.load(e)))}onUnsubscribe(e){this._connection.onEvent({type:`unsubscribe`,tile:e.tile.id}),this._strategy?.unload(e)}async applyOverride(e){await this._strategy?.applyOverride(e)}takeOverrideUpdate(){return this._strategy?.takeOverrideUpdate()}async update(n,r,i){let a=this._schema,o=this._getCachedObjectIds(this._filters),s=this._getCachedObjectIds(r);if(this._schema=n,this._filters=r,
|
|
2
|
+
import has from"../../../../../core/has.js";import{destroyMaybe as e}from"../../../../../core/maybe.js";import{notDeepEqual as t}from"../../../../../core/object.js";import{ignoreAbortErrors as n,throwIfNotAbortError as r}from"../../../../../core/promiseUtils.js";import{OptimizedFeature as i}from"../../../../../layers/graphics/OptimizedFeature.js";import{QueryEngine as a}from"../../../../../layers/graphics/data/QueryEngine.js";import{FeatureStoreStatistics as o}from"../FeatureStoreStatistics.js";import{StreamMessenger as s}from"./StreamMessenger.js";import{UpdateStatus as c}from"./strategies/ALoadStrategy.js";import{FeatureDrillDownTileLoadStrategy as l}from"./strategies/FeatureDrillDownTileLoadStrategy.js";import{FeatureHybridTileLoadStrategy as u}from"./strategies/FeatureHybridTileLoadStrategy.js";import{FeaturePagedTileLoadStrategy as d}from"./strategies/FeaturePagedTileLoadStrategy.js";import{FeatureSnapshotLoadStrategy as f}from"./strategies/FeatureSnapshotLoadStrategy.js";import{ParquetSnapshotLoadStrategy as p}from"./strategies/ParquetSnapshotLoadStrategy.js";import{ParquetTileLoadStrategy as m}from"./strategies/ParquetTileLoadStrategy.js";import{StreamLoadStrategy as h}from"./strategies/StreamLoadStrategy.js";import{FeatureSourceChunkStore as g}from"./strategies/chunks/SourceChunkStore.js";import _ from"../support/FeatureFilterEvaluator.js";import{UpdateTracking2D as v}from"../../support/UpdateTracking2D.js";class y{constructor(e,t,n){this._aggregateAdapter=e,this._subscriptions=t,this._connection=n,this._updateTracking=new v({debugName:`FeatureSource`}),this._filters=[],this.store=new g}destroy(){this._strategy?.destroy(),this._streamMessenger?.destroy(),this._updateTracking?.destroy(),this.store.destroy()}get metadata(){return this._strategy.metadata}get streamMessenger(){return this._streamMessenger??this._initStreamMessenger(),this._streamMessenger}get statistics(){return o.from(this.store)}get updateTracking(){return this._updateTracking}get usedMemory(){return this.store.usedMemory}get queryEngine(){if(!this._queryEngine){if(!this.store||!this._strategy)return null;this._queryEngine=new a({featureStore:this.store,fieldsIndex:this.metadata.fieldsIndex,geometryType:this.metadata.geometryType,featureIdInfo:this.metadata.featureIdInfo,hasZ:this.metadata.hasZ,hasM:this.metadata.hasM,spatialReference:this.metadata.outSpatialReference,aggregateAdapter:this._aggregateAdapter,timeInfo:this.metadata.timeInfo,definitionExpression:this._strategy?.definitionExpression,availableFields:this._strategy?.availableFields})}return this._queryEngine}get isStream(){return this._schema.type===`stream`}get hasQueryDisplayFilter(){if(!this._schema)return!1;switch(this._schema.type){case`feature`:return this._schema.strategy.full.displayFilterInfo!=null;case`parquet`:case`stream`:return!1}}chunks(){return Array.from(this.store.chunks())}async applyCacheUpdate(){this.hasQueryDisplayFilter&&await this._updateTracking.addPromise(this._strategy.applyCacheUpdate())}cleanup(){return this.store.cleanup()}onSubscribe(e){if(this._connection.onEvent({type:`subscribe`,tile:e.tile.id}),!this._strategy)return;let t=this._strategy.load(e);t.then(()=>this._connection.onEvent({type:`loaded`,tile:e.tile.id})).catch(t=>this._connection.onEvent({type:`error`,tile:e.tile.id,error:t})),this._updateTracking.consumePromise(t)}onResume(e){this._updateTracking.consumePromise(n(this._strategy?.load(e)))}onUnsubscribe(e){this._connection.onEvent({type:`unsubscribe`,tile:e.tile.id}),this._strategy?.unload(e)}async applyOverride(e){await this._strategy?.applyOverride(e)}takeOverrideUpdate(){return this._strategy?.takeOverrideUpdate()}async update(n,r,i){let a=this._schema,o=this._getCachedObjectIds(this._filters),s=this._getCachedObjectIds(r);if(this._schema=n,this._filters=r,a&&a.type!==n.type)throw Error(`InternalError: Reconfiguring source types is not supported.`);let l=new c;if(!a||t(a.service,n.service)||a.strategy.type!==n.strategy.type||t(n.strategy.full,a.strategy.full)||!await this._strategy.tryUpdate(l,n.strategy.partial)){await this._updateStrategyType(this._schema.service,n,i);let t=null;return`postQueryFilter`in this._schema.strategy.full&&this._schema.strategy.full.postQueryFilter&&(t=await _.create({geometryType:this.metadata.geometryType,hasM:!1,hasZ:!1,timeInfo:this.metadata.timeInfo,fieldsIndex:this.metadata.fieldsIndex,spatialReference:this.metadata.outSpatialReference,filterJSON:this._schema.strategy.full.postQueryFilter})),await this.store.update({metadata:this.metadata,definitionExpression:this._schema.strategy.full.definitionExpression,postQueryFilter:t}),this._queryEngine=e(this._queryEngine),!0}return this._updateFilterCache(o,s),this._queryEngine=e(this._queryEngine),l.requiresInvalidation}unsafeSetQueryHistoricMoment(e){this._schema.type===`feature`&&(this._schema.strategy.full.historicMoment=e,this._strategy.unsafeSetQueryHistoricMoment(new Date(e)))}_initStreamMessenger(){this._streamMessenger??=new s(this._connection)}async normalizeOverrides(e){let t={historicMoment:e.historicMoment,commands:{updateWeak:e.commands.updateWeak.map(i.fromJSON),removeWeak:e.commands.removeWeak,update:e.commands.update.map(i.fromJSON),remove:e.commands.remove,release:e.commands.release}},n=e.commands.updateByIdWeak,r=await this._queryOptimizedFeatures(n);if(r.length!==n.length){let e=new Set(r.map(e=>e.objectId));for(let r of n)e.has(r)||t.commands.removeWeak.push(r)}return t.commands.updateWeak.push(...r),t}async _queryOptimizedFeatures(e){if(e.length===0)return[];let t=[],n=(await this._strategy.queryByObjectId(e,[`*`])).getCursor();for(;n.next();)t.push(n.readOptimizedFeatureWorldSpace());return t}getObjectIdsFromGlobalIds(e){let t=this.metadata.globalIdField;if(t==null)throw Error(`InternalError: Recieved an edit with globalIds, but not supported by the service`);let n=this.store.mapObjectIdsFromGlobalIds(e,t).values();return Array.from(n)}_getCachedObjectIds(e){let t=new Set;for(let{ensureCached:n,filters:r}of e)if(n)for(let e of r)for(let n of e.objectIds??[])t.add(n);return t}_updateFilterCache(e,t){if(!this.hasQueryDisplayFilter)return;let n=new Set,r=new Set;for(let r of t)e.has(r)||n.add(r);for(let n of e)t.has(n)||r.add(n);this._strategy.prepareCacheUpdate(n,r)}async _updateStrategyType(e,t,n){let i=this._createStrategy(e,t);this._connection.onEvent({type:`updateStrategyStart`,about:i.about});let a=!!this._strategy;this.store.clear(),this._strategy?.destroy(),this._strategy=i,has(`esri-2d-update-debug`)&&console.debug(`Version[${n}] FeatureSource.updateStrategy`,{strategy:i});let o=Array.from(this._subscriptions.values());if(!o.length){this._connection.onEvent({type:`updateStrategyEnd`});return}let s=Promise.all(o.map(e=>this._strategy.load(e).then(()=>this._connection.onEvent({type:`loaded`,tile:e.tile.id})).catch(t=>this._connection.onEvent({type:`error`,tile:e.tile.id,error:t}))));this._updateTracking.consumePromise(s),this._strategy.prepareCacheUpdate(this._getCachedObjectIds(this._filters));try{a&&await s}catch(e){r(e)}this._connection.onEvent({type:`updateStrategyEnd`}),has(`esri-2d-update-debug`)&&console.debug(`Version[${n}] FeatureSource.updateStrategyEnd`,{strategy:i})}_createStrategy(e,t){let n={connection:this._connection,store:this.store};switch(t.type){case`feature`:return this._createFeatureLoadStrategy(e,t.strategy,n);case`parquet`:return this._createParquetLoadStrategy(e,t.strategy,n);case`stream`:return this._createStreamLoadStrategy(e,t.strategy,n)}}_createFeatureLoadStrategy(e,t,n){switch(t.type){case`drill-down`:return new l(e,t,n);case`hybrid-tile`:return new u(e,t,n);case`paged-tile`:return new d(e,t,n);case`snapshot`:return new f(e,t,n)}}_createParquetLoadStrategy(e,t,n){switch(t.type){case`xz`:return new m(e,t,n,this._connection);case`snapshot`:return new p(e,t,n,this._connection)}}_createStreamLoadStrategy(e,t,n){let r=new h(e,t,n);return this.streamMessenger.strategy=r,r}}export{y as FeatureSource};
|