@arcgis/core 5.2.0-next.147 → 5.2.0-next.148
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/{79c83f4e066682543ca1.js → 0a078721c7e0e24027f0.js} +1 -1
- package/assets/esri/core/workers/chunks/{72019baeba520edb6bb0.js → 112befb3b5b406f29298.js} +1 -1
- package/assets/esri/core/workers/chunks/131e89663014bc76c4ee.js +1 -0
- package/assets/esri/core/workers/chunks/{392bcef780df52fb4cca.js → 16053ce50642c5ffbfa9.js} +1 -1
- package/assets/esri/core/workers/chunks/19689c66776b39cec234.js +1 -0
- package/assets/esri/core/workers/chunks/{ba46869e700ba1d2787f.js → 1b3f59fcad6e14c4d0e0.js} +1 -1
- package/assets/esri/core/workers/chunks/{6dd0b79fa3a629ab4f27.js → 1bca39e0e651426bdbb5.js} +1 -1
- package/assets/esri/core/workers/chunks/{305a718719ef15fda90c.js → 20458fffda7692c78135.js} +1 -1
- package/assets/esri/core/workers/chunks/219d0935ce281902a49f.js +1 -0
- package/assets/esri/core/workers/chunks/2416518db4a0117541a8.js +1 -0
- package/assets/esri/core/workers/chunks/{8b1c17cc52d989924313.js → 27a425d87c57b91489b3.js} +1 -1
- package/assets/esri/core/workers/chunks/2d9a1f23ec6ce90723ac.js +1 -0
- package/assets/esri/core/workers/chunks/{06e7400f5ebe0719b81c.js → 2e75df54852d65e71330.js} +1 -1
- package/assets/esri/core/workers/chunks/39d1d2fbe94afcd0a590.js +1 -0
- package/assets/esri/core/workers/chunks/{d01381b548c204835509.js → 3e9f056e4d1f0d067fc6.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/43321f244effd3d67069.js +1 -0
- package/assets/esri/core/workers/chunks/47e6b5631a625298db5b.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/52c25809edf7ac008a52.js +1 -0
- package/assets/esri/core/workers/chunks/54b18559280a7d2a8d93.js +1 -0
- package/assets/esri/core/workers/chunks/561c48cb4d49b150765b.js +1 -0
- 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/5f0c06f59121e09091f7.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/68be3fb88ca61f82fb90.js +1 -0
- package/assets/esri/core/workers/chunks/6c9266120d46e8c69dbf.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/70ee81ba22badbbf045c.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/7a4f1484b119ebafc2e7.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/8602b3587d4bdd9cc9f5.js +1 -0
- package/assets/esri/core/workers/chunks/{956a40f40bde416efe93.js → 898f43feeec74acde1ec.js} +1 -1
- package/assets/esri/core/workers/chunks/{700b1d5bc67b7e1b3ff3.js → 8aa80b892fde552577e8.js} +1 -1
- package/assets/esri/core/workers/chunks/8ef802ef8d108ae2e473.js +1 -0
- 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/{a52bf03bffb6ffac3b54.js → a101b89c18488f213d80.js} +1 -1
- package/assets/esri/core/workers/chunks/a337ca943862b30b978d.js +1 -0
- package/assets/esri/core/workers/chunks/ac03976b8450331aa31e.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/{97dbbedea9fe03bd1306.js → b0fd7cd5fc9526d30ddc.js} +1 -1
- package/assets/esri/core/workers/chunks/b3e812c3a06b486f05d2.js +1 -0
- package/assets/esri/core/workers/chunks/{6883a5c6883eccaddf64.js → b6ba66a05030d3815dfd.js} +1 -1
- package/assets/esri/core/workers/chunks/{9ab25ee06041f907b9a2.js → c2c1f51a4668055c2838.js} +1 -1
- 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/{820f41d66b2056a3ebc8.js → c7699edd14497d174445.js} +1 -1
- package/assets/esri/core/workers/chunks/{a7985d20fa6e8d4878e7.js → d0f5bee9db1ad51ae687.js} +1 -1
- package/assets/esri/core/workers/chunks/dbcac8c1a76d4a9db13d.js +1 -0
- package/assets/esri/core/workers/chunks/{4ed8655770a3e018e366.js → de8d7f11f5a078c01b83.js} +1 -1
- 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/{4479a166b5ac8db1e12e.js → f2b69bd704db62915a6b.js} +1 -1
- package/assets/esri/core/workers/chunks/{711cfb84659cb4437679.js → f528ac5c648ca6a98582.js} +1 -1
- 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/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/CSVLayer.d.ts +1 -1
- package/layers/CatalogLayer.d.ts +1 -1
- package/layers/FeatureLayer.d.ts +1 -1
- package/layers/GeoJSONLayer.d.ts +1 -1
- package/layers/OrientedImageryLayer.js +1 -1
- package/layers/ParquetLayer.d.ts +4 -3
- 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/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/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/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/package.json +2 -2
- package/popup/FeaturesModel.d.ts +26 -5
- package/popup/FeaturesModel.js +1 -1
- package/portal/support/layersLoader.js +1 -1
- package/portal/support/portalLayers.js +1 -1
- package/rest/print.js +1 -1
- package/rest/support/printTaskUtils.js +1 -1
- package/symbols/cim/CIMSymbolHelper.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/hittestUtils.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
- package/views/2d/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiles2D.js +1 -1
- package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
- package/views/2d/layers/LayerView2D.js +1 -1
- package/views/2d/layers/features/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/View2D.d.ts +1 -1
- package/views/interactive/snapping/FeatureSnappingSourceInfo.js +1 -1
- package/views/interactive/snapping/SnappingOptions.d.ts +1 -1
- package/views/layers/FeatureLikeLayerView.d.ts +1 -1
- package/views/layers/LayerView.js +1 -1
- package/views/layers/LineOfSightLayerView.d.ts +3 -4
- 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/07aa6d36f1006b6ab7ff.js +0 -1
- package/assets/esri/core/workers/chunks/0bb11751efa2023ec937.js +0 -1
- package/assets/esri/core/workers/chunks/2062d46f638eabfc9499.js +0 -1
- package/assets/esri/core/workers/chunks/222af8522773c7dc80b1.js +0 -1
- package/assets/esri/core/workers/chunks/303fde8f3459dde16555.js +0 -1
- package/assets/esri/core/workers/chunks/347bf269c2b1583d2dca.js +0 -1
- package/assets/esri/core/workers/chunks/350540770781b281c39a.js +0 -1
- package/assets/esri/core/workers/chunks/3b017b718ea2d4ed498f.js +0 -1
- package/assets/esri/core/workers/chunks/3e81dfc9d621ece038fe.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/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/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/798a63653f82c0e842c5.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/9401cc22373566e1171e.js +0 -1
- package/assets/esri/core/workers/chunks/95b82cbbe355266c65d7.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/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/ca7fb75e2c62e7d37122.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/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{__decorate as e}from"tslib";import t from"../../PopupTemplate.js";import{ClonableMixin as n}from"../../core/Clonable.js";import r from"../../core/Error.js";import{IdentifiableMixin as i}from"../../core/Identifiable.js";import{clone as a}from"../../core/lang.js";import{Loadable as o}from"../../core/Loadable.js";import s from"../../core/Logger.js";import{destroyMaybe as c}from"../../core/maybe.js";import{MultiOriginJSONSupportMixin as l}from"../../core/MultiOriginJSONSupport.js";import{setDeepValue as u}from"../../core/object.js";import{sqlAnd as d}from"../../core/sql.js";import{property as f,subclass as p}from"../../core/accessorSupport/decorators.js";import{excludeTables as m}from"../../core/accessorSupport/layerContainerType.js";import h from"../../form/FormTemplate.js";import g from"../../geometry/SpatialReference.js";import ee from"../../graphic/SubtypeGroupGraphicOrigin.js";import{labelsVisible as te,legendEnabled as ne,minScale as re,maxScale as ie,popupEnabled as ae}from"./commonProperties.js";import{createQuery as _,computeDomainFromSubtypes as v}from"./featureLayerUtils.js";import y from"./FeatureTemplate.js";import b from"./FieldConfiguration.js";import{popupTemplateWithFieldConfigurations as x,fieldConfigurationsFromPopupTemplate as S,fieldConfigurationsFromFields as C}from"./fieldConfigUtils.js";import{defineFieldProperties as w}from"./fieldProperties.js";import{fixRendererFields as T}from"./fieldUtils.js";import oe from"./LabelClass.js";import{reader as se}from"./labelingInfo.js";import{rendererReader as E,supportedRendererTypes as D}from"./subtypeGroupLayerUtils.js";import O from"./TitleCreator.js";import k from"../../renderers/SimpleRenderer.js";import A from"../../rest/support/AttachmentQuery.js";import j from"../../rest/support/Query.js";import{createPopupTemplate as M}from"../../support/popupUtils.js";import{defaultPolygonSymbol2D as N,defaultPolylineSymbol2D as P,defaultPointSymbol2D as F}from"../../symbols/support/defaults.js";import I from"../../tables/AttributeTableTemplate.js";import{writer as L}from"../../core/accessorSupport/decorators/writer.js";import{reader as R}from"../../core/accessorSupport/decorators/reader.js";const z=w();let B=0;function V(e,t){let n=e.json.write;return typeof n!=`object`&&(n=e.json.write={}),n.ignoreOrigin=!0,t?.spatialOnly&&(n.layerContainerTypes=m),e}function H(e){let t={write:{ignoreOrigin:!0}};return e?.name&&(t.name=e.name),typeof t.write==`object`&&(e?.spatialOnly&&(t.write.layerContainerTypes=m),e?.target&&(t.write.target=e.target)),t}function U(e){return new k({symbol:W(e)})}function W(e){switch(e){case`point`:case`multipoint`:return F.clone();case`polyline`:return P.clone();case`polygon`:case`multipatch`:return N.clone();default:return null}}function G(e,t){return t?e?.type===`unique-value`&&e.field!=null&&e.field.toLowerCase()===t.toLowerCase()&&!e.field2&&!e.field3&&!e.valueExpression:!1}function K(e){return J(e,`user`)===e}function q(e){return J(e,`service`)}function ce(e){return J(e,`portal-item`)}function J(e,t){return(e.parent?.getAtOrigin(`sublayers`,t))?.find(({subtypeCode:t})=>t===e.subtypeCode)}function Y(e,t){return e==null?null:t.subtypes?.find(t=>t.code===e)}function le(e,t){let n=t.geometryType,r=null;switch(n){case`esriGeometryPoint`:case`esriGeometryMultipoint`:r=`point`;break;case`esriGeometryPolyline`:r=`line`;break;case`esriGeometryPolygon`:case`esriGeometryMultiPatch`:r=`polygon`;break;default:t.type,r=null}let i={},a=Y(e,t);if(a!=null){let{defaultValues:e}=a;for(let t in e)i[t]=e[t]}return i[t.subtypeField]=e,new y({name:`New Feature`,drawingTool:r,prototype:{attributes:i}})}let X=class extends l(n(i(o))){constructor(e){super(e),this.attributeTableTemplate=null,this.charts=null,this.editingEnabled=!0,this.fieldOverrides=null,this.fieldsIndex=null,this.formTemplate=null,this.graphicOrigin=new ee(this),this.id=`${Date.now().toString(16)}-subtype-sublayer-${B++}`,this.type=`subtype-sublayer`,this.labelsVisible=!0,this.labelingInfo=null,this.layerType=`ArcGISFeatureLayer`,this.legendEnabled=!0,this.listMode=`show`,this.minScale=0,this.maxScale=0,this.opacity=1,this.parent=null,this.popupEnabled=!0,this.popupTemplate=null,this.subtypeCode=null,this.visible=!0}load(e){return T(this.renderer,this.fieldsIndex),Promise.resolve(this)}get _titleCreator(){let e=this._get(`_titleCreator`);return c(e),new O({fieldsIndex:this.fieldsIndex,objectIdField:this.objectIdField,displayField:this.parent?.displayField??``,fields:this.fields,effectivePopupTemplate:this.popupTemplate??this.defaultPopupTemplate})}get capabilities(){return this.parent?.capabilities}get effectiveCapabilities(){return this.parent?.effectiveCapabilities}get effectiveEditingEnabled(){let{parent:e}=this;return e?e.effectiveEditingEnabled&&this.editingEnabled:this.editingEnabled}get elevationInfo(){return this.parent?.elevationInfo}get featureTitleFields(){return[...this._titleCreator.requiredFields]}set fieldConfigurations(e){if(this._override(`fieldConfigurations`,e),!this.parent?.loaded)return;let t=x(this,e);t&&this._set(`popupTemplate`,t)}get fieldConfigurations(){return this._isOverridden(`fieldConfigurations`)?this._get(`fieldConfigurations`):S(this)||null}writeFieldOverrides(e,t,n){let{fields:r,parent:i}=this,o;if(r){o=[];let e=0;r.forEach(({name:t,alias:n,editable:r,visible:a})=>{if(!a)return;let s=i?.fields?.find(e=>e.name===t);if(!s)return;let c={name:t},l=!1;n!==s.alias&&(c.alias=n,l=!0),r!==s.editable&&(c.editable=r,l=!0),o.push(c),l&&e++}),e===0&&o.length===r.length&&(o=null)}else o=a(e);o?.length&&u(n,o,t)}get fields(){let{parent:e,fieldOverrides:t,subtypeCode:n}=this,r=e?.fields;if(!e||!r?.length)return null;let{subtypes:i,subtypeField:a}=e,o=i?.find(e=>e.code===n),s=o?.defaultValues,c=o?.domains,l=[];for(let e of r){let r=e.clone(),{name:i}=r,o=t?.find(e=>e.name===i);if(r.visible=!t?.length||!!o,o){let{alias:e,editable:t}=o;e&&(r.alias=e),t===!1&&(r.editable=!1)}let u=s?.[i]??null;r.defaultValue=i===a?n:u;let d=c?.[i]??null;r.domain=i===a?null:d?d.type===`inherited`?r.domain:d.clone():null,l.push(r)}return l}get floorInfo(){return this.parent?.floorInfo}get isTable(){return!!this.parent?.isTable}get geometryType(){return this.parent?.geometryType}get globalIdField(){return this.parent?this.parent.globalIdField:(s.getLogger(this).error($(`globalIdField`)),null)}get effectiveScaleRange(){let{minScale:e,maxScale:t}=this;return{minScale:e,maxScale:t}}get objectIdField(){return this.parent||s.getLogger(this).error($(`objectIdField`)),this.parent?.objectIdField}writePopupTemplate(e,t,n,r){e&&(t[n]=e.toJSON({...r,writeFieldFormat:!0}))}get defaultPopupTemplate(){return this.createPopupTemplate()}get relationships(){return this.parent?.relationships}set renderer(e){T(e,this.fieldsIndex),this._override(`renderer`,e)}get renderer(){if(this._isOverridden(`renderer`))return this._get(`renderer`);let{parent:e}=this;return e&&!e.isTable&&e.geometryType!==`mesh`?(K(this)?a(q(this)?.renderer):null)??U(e.geometryType):null}readRendererFromService(e,t,n){if(t.type===`Table`)return null;let r=t.drawingInfo?.renderer,i=E(r,t,n),a,{subtypeCode:o}=this;if(o!=null&&G(i,t.subtypeField)){let e=i.uniqueValueInfos?.find(({value:e})=>(e=typeof e==`number`?String(e):e,e===String(o)));e&&(a=new k({symbol:e.symbol}))}else i?.type===`simple`&&!i.visualVariables?.length&&(a=i);return a}readRenderer(e,t,n){let r=t?.layerDefinition?.drawingInfo?.renderer;if(r)return E(r,t,n)||void 0}get spatialReference(){return this.parent?.spatialReference??g.WGS84}get subtypeField(){return this.parent?.subtypeField}get templates(){return this._isOverridden(`templates`)?this._get(`templates`):a(K(this)?q(this)?.templates:ce(this)?.templates||q(this)?.templates)}set templates(e){this._override(`templates`,e)}readTemplatesFromService(e,t){return[le(this.subtypeCode,t)]}get title(){return this._isOverridden(`title`)?this._get(`title`):(K(this)?q(this):null)?.title}set title(e){this._override(`title`,e)}readTitleFromService(e,t){let n=Y(this.subtypeCode,t);return n==null?null:n.name}get url(){return this.parent?.url}get userHasUpdateItemPrivileges(){return!!this.parent?.userHasUpdateItemPrivileges}async addAttachment(e,t,n){let{parent:i}=this;if(!i)throw $(`addAttachment`);if(e.getAttribute(i.subtypeField)!==this.subtypeCode)throw new r(`subtype-sublayer:addAttachment`,`The feature provided does not belong to this SubtypeSublayer`);return i.addAttachment(e,t,n)}async updateAttachment(e,t,n,i){let{parent:a}=this;if(!a)throw $(`updateAttachment`);if(e.getAttribute(a.subtypeField)!==this.subtypeCode)throw new r(`subtype-sublayer:updateAttachment`,`The feature provided does not belong to this SubtypeSublayer`);return a.updateAttachment(e,t,n,i)}async deleteAttachments(e,t,n){let{parent:i}=this;if(!i)throw $(`deleteAttachments`);if(e.getAttribute(i.subtypeField)!==this.subtypeCode)throw new r(`subtype-sublayer:deleteAttachments`,`The feature provided does not belong to this SubtypeSublayer`);return i.deleteAttachments(e,t,n)}async applyEdits(e,t){if(!this.parent)throw $(`applyEdits`);return this.parent.applyEdits(e,t)}createFieldConfigurations(){return C(this)}createPopupTemplate(e){let t=this,{parent:n,fields:r,title:i}=this;if(n){let{displayField:e,editFieldsInfo:a,objectIdField:o}=n;t={displayField:e,editFieldsInfo:a,fields:r,objectIdField:o,title:i}}return M(t,e)}createQuery(){if(!this.parent)throw $(`createQuery`);let e=_(this.parent),t=`${this.parent.subtypeField}=${this.subtypeCode}`;return e.where=d(t,this.parent.definitionExpression),e}getFeatureTitle(e,t){return this._titleCreator.getTitle(this,e,t)}getFeatureTitles(e,t){return this._titleCreator.getTitles(this,e,t)}getField(e){return this.fieldsIndex.get(e)}getFieldAlias(e){let t=this.getField(e);if(t)return this.getFieldConfiguration(t.name)?.alias||t.alias}getFieldConfiguration(e){return e=e.toLowerCase(),this.fieldConfigurations?.find(t=>t.name.toLowerCase()===e)}getFieldDomain(e,t){if(!t?.excludeImpliedDomains&&this.parent){let t=v(this.parent,e);if(t)return t}return this._getLayerDomain(e)}async queryAttachments(e,t){let n=await this.load();if(!n.parent)throw $(`queryAttachments`);let r=e instanceof A?e.clone():new A(e);return r.where=Q(r.where,n.parent.subtypeField,n.subtypeCode),n.parent.queryAttachments(r,t)}async queryFeatureCount(e,t){let n=await this.load();if(!n.parent)throw $(`queryFeatureCount`);return n.parent.queryFeatureCount(Z(n.parent,n,e),t)}async queryFeatures(e,t){let n=await this.load();if(!n.parent)throw $(`queryFeatures`);return n.parent.queryFeatures(Z(n.parent,n,e),t)}async queryObjectIds(e,t){let n=await this.load();if(!n.parent)throw $(`queryObjectIds`);return n.parent.queryObjectIds(Z(n.parent,n,e),t)}async queryRelatedFeatures(e,t){let n=await this.load();if(!n.parent)throw $(`queryRelatedFeatures`);return n.parent.queryRelatedFeatures(e,t)}async queryRelatedFeaturesCount(e,t){let n=await this.load();if(!n.parent)throw $(`queryRelatedFeaturesCount`);return n.parent.queryRelatedFeaturesCount(e,t)}_getLayerDomain(e){let t=this.fieldsIndex.get(e);return t?t.domain:null}};e([f({clonable:!1,readOnly:!0})],X.prototype,`_titleCreator`,null),e([f({type:I,json:H({name:`attributeTableInfo`})})],X.prototype,`attributeTableTemplate`,void 0),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`capabilities`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`effectiveCapabilities`,null),e([f({json:H()})],X.prototype,`charts`,void 0),e([f({type:Boolean,nonNullable:!0,json:H({name:`enableEditing`})})],X.prototype,`editingEnabled`,void 0),e([f({type:Boolean,readOnly:!0})],X.prototype,`effectiveEditingEnabled`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`elevationInfo`,null),e([f({clonable:!1,readOnly:!0})],X.prototype,`featureTitleFields`,null),e([f({type:[b],json:{name:`layerDefinition.fieldConfigurations`,write:{ignoreOrigin:!0}}})],X.prototype,`fieldConfigurations`,null),e([f({json:{name:`layerDefinition.fieldOverrides`,origins:{service:{read:!1}},write:{ignoreOrigin:!0,allowNull:!0}}})],X.prototype,`fieldOverrides`,void 0),e([L(`fieldOverrides`)],X.prototype,`writeFieldOverrides`,null),e([f({...z.fields,readOnly:!0,json:{read:!1}})],X.prototype,`fields`,null),e([f(z.fieldsIndex)],X.prototype,`fieldsIndex`,void 0),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`floorInfo`,null),e([f({type:h,json:H({name:`formInfo`})})],X.prototype,`formTemplate`,void 0),e([f({readOnly:!0,clonable:!1})],X.prototype,`graphicOrigin`,void 0),e([f({type:String,clonable:!1,json:{origins:{service:{read:!1},"portal-item":{read:!1}},write:{ignoreOrigin:!0}}})],X.prototype,`id`,void 0),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`isTable`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`geometryType`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`globalIdField`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`type`,void 0),e([f(V(a(te)))],X.prototype,`labelsVisible`,void 0),e([f({type:[oe],json:{name:`layerDefinition.drawingInfo.labelingInfo`,origins:{service:{read:!1}},read:{reader:se},write:{ignoreOrigin:!0,layerContainerTypes:m}}})],X.prototype,`labelingInfo`,void 0),e([f({type:[`ArcGISFeatureLayer`],readOnly:!0,json:{read:!1,write:{ignoreOrigin:!0,layerContainerTypes:m}}})],X.prototype,`layerType`,void 0),e([f(V(a(ne)))],X.prototype,`legendEnabled`,void 0),e([f({type:[`show`,`hide`]})],X.prototype,`listMode`,void 0),e([f((()=>{let e=a(re);return e.json.origins.service.read=!1,V(e,{spatialOnly:!0})})())],X.prototype,`minScale`,void 0),e([f((()=>{let e=a(ie);return e.json.origins.service.read=!1,V(e,{spatialOnly:!0})})())],X.prototype,`maxScale`,void 0),e([f({readOnly:!0})],X.prototype,`effectiveScaleRange`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`objectIdField`,null),e([f({type:Number,range:{min:0,max:1},nonNullable:!0,json:H({spatialOnly:!0})})],X.prototype,`opacity`,void 0),e([f({clonable:!1})],X.prototype,`parent`,void 0),e([f(V(a(ae)))],X.prototype,`popupEnabled`,void 0),e([f({type:t,json:H({name:`popupInfo`})})],X.prototype,`popupTemplate`,void 0),e([L(`popupTemplate`)],X.prototype,`writePopupTemplate`,null),e([f({readOnly:!0})],X.prototype,`defaultPopupTemplate`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`relationships`,null),e([f({types:D,json:H({target:`layerDefinition.drawingInfo.renderer`,spatialOnly:!0})})],X.prototype,`renderer`,null),e([R(`service`,`renderer`,[`drawingInfo.renderer`,`subtypeField`,`type`])],X.prototype,`readRendererFromService`,null),e([R(`renderer`,[`layerDefinition.drawingInfo.renderer`])],X.prototype,`readRenderer`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`spatialReference`,null),e([f({type:Number,json:{origins:{service:{read:!1}},write:{ignoreOrigin:!0}}})],X.prototype,`subtypeCode`,void 0),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`subtypeField`,null),e([f({type:[y],json:H({name:`layerDefinition.templates`})})],X.prototype,`templates`,null),e([R(`service`,`templates`,[`geometryType`,`subtypeField`,`subtypes`,`type`])],X.prototype,`readTemplatesFromService`,null),e([f({type:String,json:H()})],X.prototype,`title`,null),e([R(`service`,`title`,[`subtypes`])],X.prototype,`readTitleFromService`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`url`,null),e([f({readOnly:!0})],X.prototype,`userHasUpdateItemPrivileges`,null),e([f({type:Boolean,nonNullable:!0,json:H({name:`visibility`,spatialOnly:!0})})],X.prototype,`visible`,void 0),X=e([p(`esri.layers.support.SubtypeSublayer`)],X);const Z=(e,t,n)=>{if(!n)return t.createQuery();let r=j.from(n);return r.where=Q(r.where,e.subtypeField,t.subtypeCode),r},Q=(e,t,n)=>{let r=RegExp(`${t}\\s*=\\s*\\d+`),i=`${t}=${n}`,a=e??``;return r.test(a)?a.replace(r,i):d(i,a)},$=e=>new r(`subtype-sublayer:parent-missing`,`This sublayer must have a parent SubtypeGroupLayer in order to use ${e}`);export{X as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../PopupTemplate.js";import{ClonableMixin as n}from"../../core/Clonable.js";import r from"../../core/Error.js";import{IdentifiableMixin as i}from"../../core/Identifiable.js";import{clone as a}from"../../core/lang.js";import{Loadable as o}from"../../core/Loadable.js";import s from"../../core/Logger.js";import{destroyMaybe as c}from"../../core/maybe.js";import{MultiOriginJSONSupportMixin as l}from"../../core/MultiOriginJSONSupport.js";import{setDeepValue as u}from"../../core/object.js";import{sqlAnd as d}from"../../core/sql.js";import{property as f,subclass as p}from"../../core/accessorSupport/decorators.js";import{excludeTables as m}from"../../core/accessorSupport/layerContainerType.js";import h from"../../form/FormTemplate.js";import ee from"../../geometry/SpatialReference.js";import{joinScaleRanges as te}from"../../geometry/support/scaleUtils.js";import ne from"../../graphic/SubtypeGroupGraphicOrigin.js";import{labelsVisible as re,legendEnabled as ie,minScale as ae,maxScale as oe,popupEnabled as g}from"./commonProperties.js";import{createQuery as _,computeDomainFromSubtypes as v}from"./featureLayerUtils.js";import y from"./FeatureTemplate.js";import b from"./FieldConfiguration.js";import{popupTemplateWithFieldConfigurations as x,fieldConfigurationsFromPopupTemplate as S,fieldConfigurationsFromFields as C}from"./fieldConfigUtils.js";import{defineFieldProperties as w}from"./fieldProperties.js";import{fixRendererFields as T}from"./fieldUtils.js";import se from"./LabelClass.js";import{reader as E}from"./labelingInfo.js";import{rendererReader as D,supportedRendererTypes as O}from"./subtypeGroupLayerUtils.js";import k from"./TitleCreator.js";import A from"../../renderers/SimpleRenderer.js";import j from"../../rest/support/AttachmentQuery.js";import M from"../../rest/support/Query.js";import{createPopupTemplate as N}from"../../support/popupUtils.js";import{defaultPolygonSymbol2D as P,defaultPolylineSymbol2D as F,defaultPointSymbol2D as I}from"../../symbols/support/defaults.js";import L from"../../tables/AttributeTableTemplate.js";import{writer as R}from"../../core/accessorSupport/decorators/writer.js";import{reader as z}from"../../core/accessorSupport/decorators/reader.js";const B=w();let V=0;function H(e,t){let n=e.json.write;return typeof n!=`object`&&(n=e.json.write={}),n.ignoreOrigin=!0,t?.spatialOnly&&(n.layerContainerTypes=m),e}function U(e){let t={write:{ignoreOrigin:!0}};return e?.name&&(t.name=e.name),typeof t.write==`object`&&(e?.spatialOnly&&(t.write.layerContainerTypes=m),e?.target&&(t.write.target=e.target)),t}function W(e){return new A({symbol:G(e)})}function G(e){switch(e){case`point`:case`multipoint`:return I.clone();case`polyline`:return F.clone();case`polygon`:case`multipatch`:return P.clone();default:return null}}function ce(e,t){return t?e?.type===`unique-value`&&e.field!=null&&e.field.toLowerCase()===t.toLowerCase()&&!e.field2&&!e.field3&&!e.valueExpression:!1}function K(e){return J(e,`user`)===e}function q(e){return J(e,`service`)}function le(e){return J(e,`portal-item`)}function J(e,t){return(e.parent?.getAtOrigin(`sublayers`,t))?.find(({subtypeCode:t})=>t===e.subtypeCode)}function Y(e,t){return e==null?null:t.subtypes?.find(t=>t.code===e)}function ue(e,t){let n=t.geometryType,r=null;switch(n){case`esriGeometryPoint`:case`esriGeometryMultipoint`:r=`point`;break;case`esriGeometryPolyline`:r=`line`;break;case`esriGeometryPolygon`:case`esriGeometryMultiPatch`:r=`polygon`;break;default:t.type,r=null}let i={},a=Y(e,t);if(a!=null){let{defaultValues:e}=a;for(let t in e)i[t]=e[t]}return i[t.subtypeField]=e,new y({name:`New Feature`,drawingTool:r,prototype:{attributes:i}})}let X=class extends l(n(i(o))){constructor(e){super(e),this.attributeTableTemplate=null,this.charts=null,this.editingEnabled=!0,this.fieldOverrides=null,this.fieldsIndex=null,this.formTemplate=null,this.graphicOrigin=new ne(this),this.id=`${Date.now().toString(16)}-subtype-sublayer-${V++}`,this.type=`subtype-sublayer`,this.labelsVisible=!0,this.labelingInfo=null,this.layerType=`ArcGISFeatureLayer`,this.legendEnabled=!0,this.listMode=`show`,this.minScale=0,this.maxScale=0,this.opacity=1,this.parent=null,this.popupEnabled=!0,this.popupTemplate=null,this.subtypeCode=null,this.visible=!0}load(e){return T(this.renderer,this.fieldsIndex),Promise.resolve(this)}get _titleCreator(){let e=this._get(`_titleCreator`);return c(e),new k({fieldsIndex:this.fieldsIndex,objectIdField:this.objectIdField,displayField:this.parent?.displayField??``,fields:this.fields,effectivePopupTemplate:this.popupTemplate??this.defaultPopupTemplate})}get capabilities(){return this.parent?.capabilities}get effectiveCapabilities(){return this.parent?.effectiveCapabilities}get effectiveEditingEnabled(){let{parent:e}=this;return e?e.effectiveEditingEnabled&&this.editingEnabled:this.editingEnabled}get elevationInfo(){return this.parent?.elevationInfo}get featureTitleFields(){return[...this._titleCreator.requiredFields]}set fieldConfigurations(e){if(this._override(`fieldConfigurations`,e),!this.parent?.loaded)return;let t=x(this,e);t&&this._set(`popupTemplate`,t)}get fieldConfigurations(){return this._isOverridden(`fieldConfigurations`)?this._get(`fieldConfigurations`):S(this)||null}writeFieldOverrides(e,t,n){let{fields:r,parent:i}=this,o;if(r){o=[];let e=0;r.forEach(({name:t,alias:n,editable:r,visible:a})=>{if(!a)return;let s=i?.fields?.find(e=>e.name===t);if(!s)return;let c={name:t},l=!1;n!==s.alias&&(c.alias=n,l=!0),r!==s.editable&&(c.editable=r,l=!0),o.push(c),l&&e++}),e===0&&o.length===r.length&&(o=null)}else o=a(e);o?.length&&u(n,o,t)}get fields(){let{parent:e,fieldOverrides:t,subtypeCode:n}=this,r=e?.fields;if(!e||!r?.length)return null;let{subtypes:i,subtypeField:a}=e,o=i?.find(e=>e.code===n),s=o?.defaultValues,c=o?.domains,l=[];for(let e of r){let r=e.clone(),{name:i}=r,o=t?.find(e=>e.name===i);if(r.visible=!t?.length||!!o,o){let{alias:e,editable:t}=o;e&&(r.alias=e),t===!1&&(r.editable=!1)}let u=s?.[i]??null;r.defaultValue=i===a?n:u;let d=c?.[i]??null;r.domain=i===a?null:d?d.type===`inherited`?r.domain:d.clone():null,l.push(r)}return l}get floorInfo(){return this.parent?.floorInfo}get isTable(){return!!this.parent?.isTable}get geometryType(){return this.parent?.geometryType}get globalIdField(){return this.parent?this.parent.globalIdField:(s.getLogger(this).error($(`globalIdField`)),null)}get effectiveScaleRange(){let e=this._get(`effectiveScaleRange`),{maxScale:t,minScale:n,parent:r}=this,i={minScale:n,maxScale:t};return r?.effectiveScaleRange!==void 0&&te(i,r.effectiveScaleRange),e&&e.minScale===i.minScale&&e.maxScale===i.maxScale?e:i}get objectIdField(){return this.parent||s.getLogger(this).error($(`objectIdField`)),this.parent?.objectIdField}writePopupTemplate(e,t,n,r){e&&(t[n]=e.toJSON({...r,writeFieldFormat:!0}))}get defaultPopupTemplate(){return this.createPopupTemplate()}get relationships(){return this.parent?.relationships}set renderer(e){T(e,this.fieldsIndex),this._override(`renderer`,e)}get renderer(){if(this._isOverridden(`renderer`))return this._get(`renderer`);let{parent:e}=this;return e&&!e.isTable&&e.geometryType!==`mesh`?(K(this)?a(q(this)?.renderer):null)??W(e.geometryType):null}readRendererFromService(e,t,n){if(t.type===`Table`)return null;let r=t.drawingInfo?.renderer,i=D(r,t,n),a,{subtypeCode:o}=this;if(o!=null&&ce(i,t.subtypeField)){let e=i.uniqueValueInfos?.find(({value:e})=>(e=typeof e==`number`?String(e):e,e===String(o)));e&&(a=new A({symbol:e.symbol}))}else i?.type===`simple`&&!i.visualVariables?.length&&(a=i);return a}readRenderer(e,t,n){let r=t?.layerDefinition?.drawingInfo?.renderer;if(r)return D(r,t,n)||void 0}get spatialReference(){return this.parent?.spatialReference??ee.WGS84}get subtypeField(){return this.parent?.subtypeField}get templates(){return this._isOverridden(`templates`)?this._get(`templates`):a(K(this)?q(this)?.templates:le(this)?.templates||q(this)?.templates)}set templates(e){this._override(`templates`,e)}readTemplatesFromService(e,t){return[ue(this.subtypeCode,t)]}get title(){return this._isOverridden(`title`)?this._get(`title`):(K(this)?q(this):null)?.title}set title(e){this._override(`title`,e)}readTitleFromService(e,t){let n=Y(this.subtypeCode,t);return n==null?null:n.name}get url(){return this.parent?.url}get userHasUpdateItemPrivileges(){return!!this.parent?.userHasUpdateItemPrivileges}async addAttachment(e,t,n){let{parent:i}=this;if(!i)throw $(`addAttachment`);if(e.getAttribute(i.subtypeField)!==this.subtypeCode)throw new r(`subtype-sublayer:addAttachment`,`The feature provided does not belong to this SubtypeSublayer`);return i.addAttachment(e,t,n)}async updateAttachment(e,t,n,i){let{parent:a}=this;if(!a)throw $(`updateAttachment`);if(e.getAttribute(a.subtypeField)!==this.subtypeCode)throw new r(`subtype-sublayer:updateAttachment`,`The feature provided does not belong to this SubtypeSublayer`);return a.updateAttachment(e,t,n,i)}async deleteAttachments(e,t,n){let{parent:i}=this;if(!i)throw $(`deleteAttachments`);if(e.getAttribute(i.subtypeField)!==this.subtypeCode)throw new r(`subtype-sublayer:deleteAttachments`,`The feature provided does not belong to this SubtypeSublayer`);return i.deleteAttachments(e,t,n)}async applyEdits(e,t){if(!this.parent)throw $(`applyEdits`);return this.parent.applyEdits(e,t)}createFieldConfigurations(){return C(this)}createPopupTemplate(e){let t=this,{parent:n,fields:r,title:i}=this;if(n){let{displayField:e,editFieldsInfo:a,objectIdField:o}=n;t={displayField:e,editFieldsInfo:a,fields:r,objectIdField:o,title:i}}return N(t,e)}createQuery(){if(!this.parent)throw $(`createQuery`);let e=_(this.parent),t=`${this.parent.subtypeField}=${this.subtypeCode}`;return e.where=d(t,this.parent.definitionExpression),e}getFeatureTitle(e,t){return this._titleCreator.getTitle(this,e,t)}getFeatureTitles(e,t){return this._titleCreator.getTitles(this,e,t)}getField(e){return this.fieldsIndex.get(e)}getFieldAlias(e){let t=this.getField(e);if(t)return this.getFieldConfiguration(t.name)?.alias||t.alias}getFieldConfiguration(e){return e=e.toLowerCase(),this.fieldConfigurations?.find(t=>t.name.toLowerCase()===e)}getFieldDomain(e,t){if(!t?.excludeImpliedDomains&&this.parent){let t=v(this.parent,e);if(t)return t}return this._getLayerDomain(e)}async queryAttachments(e,t){let n=await this.load();if(!n.parent)throw $(`queryAttachments`);let r=e instanceof j?e.clone():new j(e);return r.where=Q(r.where,n.parent.subtypeField,n.subtypeCode),n.parent.queryAttachments(r,t)}async queryFeatureCount(e,t){let n=await this.load();if(!n.parent)throw $(`queryFeatureCount`);return n.parent.queryFeatureCount(Z(n.parent,n,e),t)}async queryFeatures(e,t){let n=await this.load();if(!n.parent)throw $(`queryFeatures`);return n.parent.queryFeatures(Z(n.parent,n,e),t)}async queryObjectIds(e,t){let n=await this.load();if(!n.parent)throw $(`queryObjectIds`);return n.parent.queryObjectIds(Z(n.parent,n,e),t)}async queryRelatedFeatures(e,t){let n=await this.load();if(!n.parent)throw $(`queryRelatedFeatures`);return n.parent.queryRelatedFeatures(e,t)}async queryRelatedFeaturesCount(e,t){let n=await this.load();if(!n.parent)throw $(`queryRelatedFeaturesCount`);return n.parent.queryRelatedFeaturesCount(e,t)}_getLayerDomain(e){let t=this.fieldsIndex.get(e);return t?t.domain:null}};e([f({clonable:!1,readOnly:!0})],X.prototype,`_titleCreator`,null),e([f({type:L,json:U({name:`attributeTableInfo`})})],X.prototype,`attributeTableTemplate`,void 0),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`capabilities`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`effectiveCapabilities`,null),e([f({json:U()})],X.prototype,`charts`,void 0),e([f({type:Boolean,nonNullable:!0,json:U({name:`enableEditing`})})],X.prototype,`editingEnabled`,void 0),e([f({type:Boolean,readOnly:!0})],X.prototype,`effectiveEditingEnabled`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`elevationInfo`,null),e([f({clonable:!1,readOnly:!0})],X.prototype,`featureTitleFields`,null),e([f({type:[b],json:{name:`layerDefinition.fieldConfigurations`,write:{ignoreOrigin:!0}}})],X.prototype,`fieldConfigurations`,null),e([f({json:{name:`layerDefinition.fieldOverrides`,origins:{service:{read:!1}},write:{ignoreOrigin:!0,allowNull:!0}}})],X.prototype,`fieldOverrides`,void 0),e([R(`fieldOverrides`)],X.prototype,`writeFieldOverrides`,null),e([f({...B.fields,readOnly:!0,json:{read:!1}})],X.prototype,`fields`,null),e([f(B.fieldsIndex)],X.prototype,`fieldsIndex`,void 0),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`floorInfo`,null),e([f({type:h,json:U({name:`formInfo`})})],X.prototype,`formTemplate`,void 0),e([f({readOnly:!0,clonable:!1})],X.prototype,`graphicOrigin`,void 0),e([f({type:String,clonable:!1,json:{origins:{service:{read:!1},"portal-item":{read:!1}},write:{ignoreOrigin:!0}}})],X.prototype,`id`,void 0),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`isTable`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`geometryType`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`globalIdField`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`type`,void 0),e([f(H(a(re)))],X.prototype,`labelsVisible`,void 0),e([f({type:[se],json:{name:`layerDefinition.drawingInfo.labelingInfo`,origins:{service:{read:!1}},read:{reader:E},write:{ignoreOrigin:!0,layerContainerTypes:m}}})],X.prototype,`labelingInfo`,void 0),e([f({type:[`ArcGISFeatureLayer`],readOnly:!0,json:{read:!1,write:{ignoreOrigin:!0,layerContainerTypes:m}}})],X.prototype,`layerType`,void 0),e([f(H(a(ie)))],X.prototype,`legendEnabled`,void 0),e([f({type:[`show`,`hide`]})],X.prototype,`listMode`,void 0),e([f((()=>{let e=a(ae);return e.json.origins.service.read=!1,H(e,{spatialOnly:!0})})())],X.prototype,`minScale`,void 0),e([f((()=>{let e=a(oe);return e.json.origins.service.read=!1,H(e,{spatialOnly:!0})})())],X.prototype,`maxScale`,void 0),e([f({readOnly:!0})],X.prototype,`effectiveScaleRange`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`objectIdField`,null),e([f({type:Number,range:{min:0,max:1},nonNullable:!0,json:U({spatialOnly:!0})})],X.prototype,`opacity`,void 0),e([f({clonable:!1})],X.prototype,`parent`,void 0),e([f(H(a(g)))],X.prototype,`popupEnabled`,void 0),e([f({type:t,json:U({name:`popupInfo`})})],X.prototype,`popupTemplate`,void 0),e([R(`popupTemplate`)],X.prototype,`writePopupTemplate`,null),e([f({readOnly:!0})],X.prototype,`defaultPopupTemplate`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`relationships`,null),e([f({types:O,json:U({target:`layerDefinition.drawingInfo.renderer`,spatialOnly:!0})})],X.prototype,`renderer`,null),e([z(`service`,`renderer`,[`drawingInfo.renderer`,`subtypeField`,`type`])],X.prototype,`readRendererFromService`,null),e([z(`renderer`,[`layerDefinition.drawingInfo.renderer`])],X.prototype,`readRenderer`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`spatialReference`,null),e([f({type:Number,json:{origins:{service:{read:!1}},write:{ignoreOrigin:!0}}})],X.prototype,`subtypeCode`,void 0),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`subtypeField`,null),e([f({type:[y],json:U({name:`layerDefinition.templates`})})],X.prototype,`templates`,null),e([z(`service`,`templates`,[`geometryType`,`subtypeField`,`subtypes`,`type`])],X.prototype,`readTemplatesFromService`,null),e([f({type:String,json:U()})],X.prototype,`title`,null),e([z(`service`,`title`,[`subtypes`])],X.prototype,`readTitleFromService`,null),e([f({readOnly:!0,json:{read:!1}})],X.prototype,`url`,null),e([f({readOnly:!0})],X.prototype,`userHasUpdateItemPrivileges`,null),e([f({type:Boolean,nonNullable:!0,json:U({name:`visibility`,spatialOnly:!0})})],X.prototype,`visible`,void 0),X=e([p(`esri.layers.support.SubtypeSublayer`)],X);const Z=(e,t,n)=>{if(!n)return t.createQuery();let r=M.from(n);return r.where=Q(r.where,e.subtypeField,t.subtypeCode),r},Q=(e,t,n)=>{let r=RegExp(`${t}\\s*=\\s*\\d+`),i=`${t}=${n}`,a=e??``;return r.test(a)?a.replace(r,i):d(i,a)},$=e=>new r(`subtype-sublayer:parent-missing`,`This sublayer must have a parent SubtypeGroupLayer in order to use ${e}`);export{X as default};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arcgis/core",
|
|
3
|
-
"version": "5.2.0-next.
|
|
3
|
+
"version": "5.2.0-next.148",
|
|
4
4
|
"description": "ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ArcGIS",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@amcharts/amcharts5": "~5.20.8",
|
|
23
|
-
"@arcgis/toolkit": "5.2.0-next.
|
|
23
|
+
"@arcgis/toolkit": "5.2.0-next.148",
|
|
24
24
|
"@esri/arcgis-html-sanitizer": "~4.2.0-next.2",
|
|
25
25
|
"@esri/calcite-components": "^5.2.0-next.89",
|
|
26
26
|
"@vaadin/grid": "~25.3.2",
|
package/popup/FeaturesModel.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ import type { ReadonlyArrayOrCollection } from "../core/Collection.js";
|
|
|
20
20
|
import type { FeatureAbilitiesProperties } from "./support/FeatureAbilities.js";
|
|
21
21
|
import type { PointProperties } from "../geometry/Point.js";
|
|
22
22
|
|
|
23
|
-
export interface FeaturesModelProperties extends GoToProperties, Partial<Pick<FeaturesModel, "activeFeature" | "aggregatedFeaturesEnabled" | "content" | "defaultPopupTemplateEnabled" | "featurePage" | "features" | "featuresPerPage" | "featureStream" | "heading" | "highlightEnabled" | "includeDefaultActions" | "initialDisplayMode" | "map" | "open" | "selectedFeatureIndex" | "updateLocationEnabled" | "view" | "zoomFactor">> {
|
|
23
|
+
export interface FeaturesModelProperties extends GoToProperties, Partial<Pick<FeaturesModel, "activeFeature" | "aggregatedFeaturesEnabled" | "content" | "defaultPopupTemplateEnabled" | "featureMenuOpen" | "featurePage" | "features" | "featuresPerPage" | "featureStream" | "heading" | "highlightEnabled" | "includeDefaultActions" | "initialDisplayMode" | "map" | "open" | "selectedFeatureIndex" | "updateLocationEnabled" | "view" | "zoomFactor">> {
|
|
24
24
|
/**
|
|
25
25
|
* [Collection](https://developers.arcgis.com/javascript/latest/references/core/core/Collection/) of [action](https://developers.arcgis.com/javascript/latest/references/core/support/actions/ActionButton/) or [action toggle](https://developers.arcgis.com/javascript/latest/references/core/support/actions/ActionToggle/) objects.
|
|
26
26
|
* Each action may be executed by clicking the icon or image symbolizing them.
|
|
@@ -191,9 +191,28 @@ export default class FeaturesModel extends FeaturesModelSuperclass {
|
|
|
191
191
|
/** Defines the specific [FeatureAbilities](https://developers.arcgis.com/javascript/latest/references/core/popup/support/FeatureAbilities/) that can be used when querying and displaying content. */
|
|
192
192
|
get featureItemAbilities(): FeatureAbilities | null | undefined;
|
|
193
193
|
set featureItemAbilities(value: FeatureAbilitiesProperties | null | undefined);
|
|
194
|
-
/**
|
|
195
|
-
|
|
196
|
-
|
|
194
|
+
/**
|
|
195
|
+
* This property enables showing the list of features.
|
|
196
|
+
* Setting this to `true` allows the user to scroll through the list of features.
|
|
197
|
+
* This value will only be honored if [initialDisplayMode](https://developers.arcgis.com/javascript/latest/references/core/popup/FeaturesModel/#initialDisplayMode) is set to `feature`.
|
|
198
|
+
*
|
|
199
|
+
* @default false
|
|
200
|
+
* @internal
|
|
201
|
+
*/
|
|
202
|
+
accessor featureMenuOpen: boolean;
|
|
203
|
+
/**
|
|
204
|
+
* Lazily created models indexed by their position in features.
|
|
205
|
+
*
|
|
206
|
+
* @internal
|
|
207
|
+
*/
|
|
208
|
+
get featureModels(): FeatureModel[];
|
|
209
|
+
/**
|
|
210
|
+
* The number of feature batches prepared for browsing. Each batch contains up to [featuresPerPage](https://developers.arcgis.com/javascript/latest/references/core/popup/FeaturesModel/#featuresPerPage) features. This value is `null` when there are no features.
|
|
211
|
+
*
|
|
212
|
+
* Set this value to `1` to reset browsing, or increment it by one to prepare the next batch. Other assignments are ignored. Selecting a feature does not change this value; use [selectedFeatureIndex](https://developers.arcgis.com/javascript/latest/references/core/popup/FeaturesModel/#selectedFeatureIndex) to select any feature independently of browsing.
|
|
213
|
+
*
|
|
214
|
+
* @default null
|
|
215
|
+
*/
|
|
197
216
|
accessor featurePage: number | null | undefined;
|
|
198
217
|
/**
|
|
199
218
|
* An array of features. Each [Graphic](https://developers.arcgis.com/javascript/latest/references/core/Graphic/) in this array must have a valid [PopupTemplate](https://developers.arcgis.com/javascript/latest/references/core/PopupTemplate/) set. They may share the same [PopupTemplate](https://developers.arcgis.com/javascript/latest/references/core/PopupTemplate/) or have unique [PopupTemplates](https://developers.arcgis.com/javascript/latest/references/core/PopupTemplate/) depending on their attributes.
|
|
@@ -246,6 +265,8 @@ export default class FeaturesModel extends FeaturesModelSuperclass {
|
|
|
246
265
|
/**
|
|
247
266
|
* Streams features into the component as they become available.
|
|
248
267
|
*
|
|
268
|
+
* The first feature is published immediately. Subsequent features are published in short batches, with remaining results published when the stream completes or fails. Clearing or replacing the stream discards its unpublished results.
|
|
269
|
+
*
|
|
249
270
|
* @internal
|
|
250
271
|
*/
|
|
251
272
|
accessor featureStream: AsyncGenerator<Graphic> | null | undefined;
|
|
@@ -384,7 +405,7 @@ export default class FeaturesModel extends FeaturesModelSuperclass {
|
|
|
384
405
|
* > - Values from `date` and `timestamp-offset` [fields](https://developers.arcgis.com/javascript/latest/references/core/layers/support/Field/#type) should respect the associated [MapView](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/#timeZone) or [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/#timeZone).
|
|
385
406
|
*/
|
|
386
407
|
accessor view: MapViewOrSceneView | null | undefined;
|
|
387
|
-
/** Indicates whether
|
|
408
|
+
/** Indicates whether content is being generated for any currently loaded feature models. */
|
|
388
409
|
get waitingForContents(): boolean;
|
|
389
410
|
/**
|
|
390
411
|
* Indicates whether the current feature stream is waiting to yield its first feature. Previously displayed features remain available while this property is `true`. It becomes `false` when the current stream yields a feature or completes.
|
package/popup/FeaturesModel.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/Error.js";import{EventedAccessor as n}from"../core/Evented.js";import r from"../core/Logger.js";import{abortMaybe as i}from"../core/maybe.js";import{debounce as a,logOnError as o,isAbortError as s}from"../core/promiseUtils.js";import{watch as c,when as l}from"../core/reactiveUtils.js";import{property as u,subclass as d}from"../core/accessorSupport/decorators.js";import f from"../geometry/Point.js";import{project as p}from"../geometry/projectionUtils.js";import m from"../geometry/SpatialReference.js";import{geographicToWebMercator as h}from"../geometry/support/webMercatorUtils.js";import{getGraphicLayer as g}from"../graphic/graphicOriginUtils.js";import{fallbackObjectIDAttribute as _}from"../layers/LayerConstants.js";import{ActionsCollection as v,createDefaultActions as y}from"./actions.js";import{getSelectedTarget as b}from"./actionUtils.js";import x from"./FeatureModel.js";import S from"./support/FeatureAbilities.js";import{getDisplayedSymbol as C}from"../symbols/support/symbolUtils.js";import{system as w}from"../time/constants.js";import{highlightsSupported as T}from"../views/support/layerViewUtils.js";import{GoTo as E}from"../widgets/support/GoTo.js";let D=null;function O(e,t){switch(e){case`building-scene`:case`map-image`:case`tile`:case`imagery`:return!0;case`imagery-tile`:return t===`2d`;default:return!1}}let k=class extends E(n){constructor(e){super(e),this._centerAtLocationController=null,this._locationUpdateController=null,this._highlightPromises={"highlight-active-feature":null,"highlight-selected-feature":null},this._defaultFeatureAbilities=new S,this._activeFeatureStream=null,this._featureStreamHasYielded=!1,this.actions=new v,this.activeFeature=null,this.aggregatedFeaturesEnabled=!1,this.defaultPopupTemplateEnabled=!1,this.diagnostics=null,this.featurePage=null,this.featuresPerPage=20,this.featureMenuOpen=!1,this.featureItemAbilities=null,this.featureItems=[],this.heading=null,this.highlightEnabled=!0,this.includeDefaultActions=!0,this.open=!1,this.updateLocationEnabled=!1,this.view=null,this.zoomFactor=4,this._debouncedLocationUpdate=a(async()=>{this._cancelLocationUpdate();let e=new AbortController,{signal:t}=e;this._locationUpdateController=e,await this._locationUpdate({signal:t}).catch(()=>{}).finally(()=>{this._locationUpdateController===e&&(this._locationUpdateController=null)})})}initialize(){this.addHandles([c(()=>this.view?.scale,()=>{this.open&&o(this._debouncedLocationUpdate(),r.getLogger(this))}),c(()=>[this.highlightEnabled,this.selectedFeature,this.open,this.view],()=>this._highlightSelectedFeature()),c(()=>[this.highlightEnabled,this.activeFeature,this.open,this.view],()=>this._highlightActiveFeature()),c(()=>this.location,e=>this._locationChange(e)),c(()=>this.selectedFeature,e=>this._selectedFeatureChange(e)),c(()=>[this.selectedFeatureIndex,this.featureCount,this.featuresPerPage],()=>this._selectedFeatureIndexChange()),c(()=>[this.featurePage,this.selectedFeatureIndex,this.featureCount,this.featuresPerPage,this.featureItems],()=>this._setGraphicOnFeatureItems()),c(()=>this.featureItems,()=>this._featureItemsChange()),c(()=>[this.featureItemAbilities?.attachmentsContent,this.featureItemAbilities?.chartAnimation,this.featureItemAbilities?.customContent,this.featureItemAbilities?.expressionContent,this.featureItemAbilities?.fieldsContent,this.featureItemAbilities?.mediaContent,this.featureItemAbilities?.relationshipContent,this.featureItemAbilities?.textContent,this.featureItemAbilities?.utilityNetworkAssociationsContent,this.actions,this.includeDefaultActions,this.features,this.map,this.spatialReference,this.timeZone],()=>this._updateFeatureItems()),l(()=>!this.open,()=>this.aggregatedFeaturesEnabled=!1)])}destroy(){this._cancelLocationUpdate(),this._cancelCenterAtLocation(),this._cancelFeatureStream(),this.aggregatedFeaturesEnabled=!1,this.view=null,this.map=null,this.spatialReference=null,this.timeZone=null}get defaultActions(){let e=this._get(`defaultActions`)||new v;return e.removeAll(),e.addMany(this.selectedFeatureItem?.defaultActions.toArray()??y()),e}get active(){return this.open&&!this.waitingForResult}set content(e){this.featureStream=null,this._set(`diagnostics`,null),this.features=[],this._set(`content`,e)}get effectiveHeading(){return this.selectedFeatureItem?.heading??this.heading}get featureCount(){return this.features.length}set features(e){if(this._get(`features`)===e)return;let t=e||[];this._set(`features`,t),this._syncSelectedFeatureIndex(t)}get featureStream(){return this._get(`featureStream`)||null}set featureStream(e){this._setFeatureStream(e)}_setFeatureStream(e,t,n){this._set(`diagnostics`,n??null),this._get(`featureStream`)!==e&&(this._set(`featureStream`,e),this._cancelFeatureStream(),e&&(this._featureStreamHasYielded=!1,this._set(`pendingLocation`,t??null),this._activeFeatureStream=e,this._consumeFeatureStream(e,t).catch(()=>{})))}get initialDisplayMode(){return this._initialDisplayMode??(this.view?.focusRegionEnabled?`list`:`feature`)}set initialDisplayMode(e){this._initialDisplayMode=e,this._syncSelectedFeatureIndex(this.features)}set location(e){let t=e?.spatialReference?.isWGS84&&this.spatialReference?.isWebMercator?h(e):e;this._set(`location`,t)}get map(){return this.view?.map??null}set map(e){this._override(`map`,e)}get pendingLocation(){return this._get(`pendingLocation`)??null}get streamingFeatures(){return this._activeFeatureStream!=null}get selectedFeature(){return this.selectedFeatureIndex===-1?null:this.features[this.selectedFeatureIndex]??null}get selectedFeatureIndex(){let e=this._get(`selectedFeatureIndex`);return typeof e==`number`?e:-1}set selectedFeatureIndex(e){let{featureCount:t}=this;(isNaN(e)||e<0||!t)&&(e=-1),this.activeFeature=null,this._set(`selectedFeatureIndex`,e)}get selectedFeatureItem(){return this.featureItems[this.selectedFeatureIndex]||null}get spatialReference(){return this.view?.spatialReference??null}set spatialReference(e){this._override(`spatialReference`,e)}get state(){return this.view?this.view.ready?`ready`:`disabled`:this.map?`ready`:`disabled`}get timeZone(){return this.view?.timeZone??w}set timeZone(e){this._overrideIfSome(`timeZone`,e)}get waitingForContents(){return this.featureItems.some(e=>e.waitingForContent)}get waitingForResult(){return this.streamingFeatures&&!this._featureStreamHasYielded}zoomTo(e){return this.callGoTo(e)}clear(){this._cancelFeatureStream(),this._set(`diagnostics`,null),this.set({featureStream:null,features:[],content:null,heading:null,location:null,activeFeature:null})}openFeatureStream(e){this._setFeatureStream(e.featureStream,e.location??null,e.diagnostics),this.open=!0}async fetchFeatures(e,n){let{view:r}=this;if(!r||!e)throw new t(`fetch-features:invalid-screenpoint-or-view`,`Cannot fetch features without a screen point/screen area and view.`,{screenPoint:e,view:r});let i={},a=r.fetchPopupFeatures(e,{diagnostics:i,pointerType:n?.event?.pointerType,defaultPopupTemplateEnabled:this.defaultPopupTemplateEnabled,signal:n?.signal});this._setFeatureStream(a,void 0,i)}next(){this.selectedFeatureIndex=this._getRoundRobinIndex(this.selectedFeatureIndex+1,this.featureCount)}previous(){this.selectedFeatureIndex=this._getRoundRobinIndex(this.selectedFeatureIndex-1,this.featureCount)}_syncSelectedFeatureIndex(e){let{selectedFeatureIndex:t}=this,n=this._activeFeatureStream!=null&&e.length>0;if(this.initialDisplayMode===`list`){n||(this.selectedFeatureIndex=-1);return}if(n&&t===-1){this.selectedFeatureIndex=0;return}n&&t!==-1||(this.selectedFeatureIndex=e.length?0:-1)}_centerAtLocation(){let{view:e}=this,n=b(this);this._cancelCenterAtLocation();let i=new AbortController,{signal:a}=i;return this._centerAtLocationController=i,!n||!e?Promise.reject(new t(`center-at-location:invalid-target-or-view`,`Cannot center at a location without a target and view.`,{target:n,view:e})):this.callGoTo({target:{target:n,scale:e.scale},options:{signal:a}}).catch(e=>{s(e)||r.getLogger(this).error(e)})}_getRoundRobinIndex(e,t){return(e+t)%t}_locationChange(e){let{selectedFeature:t,updateLocationEnabled:n,view:r}=this;r&&!this._locationUpdateController&&n&&e&&(!t||t.geometry)&&this._centerAtLocation()}_selectedFeatureIndexChange(){this.selectedFeatureIndex!==-1&&(this.featurePage=this.featureCount>0?Math.floor(this.selectedFeatureIndex/this.featuresPerPage)+1:null)}_featureItemsChange(){this.featurePage=this.featureCount>0?1:null}_setGraphicOnFeatureItems(){let{features:e,featureCount:t,featurePage:n,featuresPerPage:r,featureItems:i}=this;if(n==null)return;let a=((n-1)*r+t)%t,o=Math.min(a+r,i.length);for(let t=a;t<o;t++){let n=i[t];n&&(n.graphic??=e[t])}}async _selectedFeatureChange(e){let{location:t,updateLocationEnabled:n,view:r}=this;if(this.aggregatedFeaturesEnabled=!1,!e||!r)return;let i=g(e)?.type;if((i===`map-image`||i===`imagery`||i===`imagery-tile`)&&(e.symbol=await C(e)),(n||!t)&&e.geometry){if(e.geometry.type===`point`){this.location=e.geometry;return}let{labelPointExecute:t}=await import(`../geometry/operators/labelPointOperator.js`);this.location=t(e.geometry);return}if(n&&!e.geometry){await this._centerAtLocation();let e=r.center?.clone();e&&(this.location=e)}}_waitingForResultChange(){!this.featureCount&&this.featureStream&&(this.open=!1)}_destroyFeatureItems(){this.featureItems.forEach(e=>e&&!e.destroyed&&e.destroy()),this._set(`featureItems`,[])}_updateFeatureItems(){let e=this.selectedFeature,t=this.features,n=this.featureItems,r=this.view,i=this.spatialReference,a=this.map,o=this.timeZone,s=this.location,c=this.actions,l=this.includeDefaultActions,u=this.featureItemAbilities??this._defaultFeatureAbilities;if(!t?.length){this._destroyFeatureItems();return}let d=[],f=new Map,p=new Set;n.forEach(e=>{let t=e?.graphic;e&&t&&f.set(t,e)}),t.forEach((t,m)=>{if(!t)return;let h=n[m];if(h&&!p.has(h)&&(h.graphic==null||h.graphic===t)){h.abilities=u,h.actions=c,h.includeDefaultActions=l,d[m]=h,p.add(h);return}let g=f.get(t);if(g&&!p.has(g)){g.abilities=u,g.actions=c,g.includeDefaultActions=l,d[m]=g,p.add(g);return}let _=new x({actions:c,abilities:u,defaultPopupTemplateEnabled:this.defaultPopupTemplateEnabled,includeDefaultActions:l,spatialReference:i,graphic:t===e?t:null,location:s,map:a,view:r,timeZone:o});d[m]=_,p.add(_)}),n.forEach(e=>{e&&!p.has(e)&&!e.destroyed&&e.destroy()}),this._set(`featureItems`,d)}_cancelCenterAtLocation(){this._centerAtLocationController=i(this._centerAtLocationController)}_cancelFeatureStream(){let e=this._activeFeatureStream;this._activeFeatureStream=null,this._set(`pendingLocation`,null),this._get(`featureStream`)===e&&this._set(`featureStream`,null),e?.return&&e.return(void 0).catch(()=>{})}async _locationUpdate(e){let{spatialReference:t}=this,n=this.selectedFeature,i=n?.geometry?.type,a=this.location;if(i&&i!==`mesh`&&t&&a&&n){if(i===`point`){let{labelPointExecute:t}=await import(`../geometry/operators/labelPointOperator.js`);if(e?.signal?.aborted||this.selectedFeature!==n||!n.geometry)return;this.location=t(n.geometry);return}try{let r=n.geometry,i=this._getHighlightLayer(n),o=n.getObjectId();if(!i||!this.view)return;if(o!=null){let n=this.view?.allLayerViews.find(e=>e.layer.uid===i.uid);if(!n||!(`queryFeatures`in n))return;let a=n.createQuery();a.outSpatialReference=t,a.objectIds=[o],a.returnGeometry=!0;let{features:s}=await n.queryFeatures(a,e);if(e?.signal?.aborted)return;r=s[0]?.geometry}if(!r||r.type===`mesh`)return;r=p(r,t),D??=await Promise.all([import(`../geometry/operators/intersectsOperator.js`),import(`../geometry/operators/proximityOperator.js`)]);let[{intersectsExecute:s},{proximityGetNearestCoordinate:c}]=D;if(!s(r,a)){let e=c(r,a).coordinate??a;this.selectedFeature===n&&(this.location=e)}}catch(e){s(e)||r.getLogger(this).error(e)}}}_cancelLocationUpdate(){this._locationUpdateController=i(this._locationUpdateController)}async _getLayerView(e,t){return await e.when(),e.whenLayerView(t)}_getHighlightLayer(e){let t=g(e),{layer:n}=e;return t&&`layer`in t&&t.layer?t.layer:t?.type===`map-notes`||t?.type===`sketch`||t?.type===`subtype-group`?t:n??t}_getHighlightLayerView(e,t){return t.type===`subtype-sublayer`&&t.parent&&this._mapIncludesLayer(t.parent)?this._getLayerView(e,t.parent):t&&this._mapIncludesLayer(t)?this._getLayerView(e,t):null}_getHighlightTarget(e,t,n){if(O(t.type,n))return e;let r=e.getObjectId();if(r!=null)return r;let i=t.type===`imagery`?void 0:`objectIdField`in t?t.objectIdField||_:null,a=e.attributes;return a&&i&&a[i]||e}_mapIncludesLayer(e){return!!this.map?.allLayers?.includes(e)}async _highlightFeature(e,t){this.removeHandles(e);let n=this[t];if(!n)return;let{highlightEnabled:r,view:i,open:a}=this;if(!i||!r||!a)return;let o=this._getHighlightLayer(n);if(!o)return;let s=this._getHighlightLayerView(i,o);if(!s)return;this._highlightPromises[e]=s;let c=await s;if(!c||!T(c)||this._highlightPromises[e]!==s||!this[t]||!this.highlightEnabled)return;let l=c.highlight(this._getHighlightTarget(n,o,i.type));this.addHandles(l,e)}async _highlightActiveFeature(){return this._highlightFeature(`highlight-active-feature`,`activeFeature`)}async _highlightSelectedFeature(){return this._highlightFeature(`highlight-selected-feature`,`selectedFeature`)}async _consumeFeatureStream(e,t){try{for await(let n of e){if(e!==this._activeFeatureStream)return;let r=!this._featureStreamHasYielded;r&&(this.features=[]),t!==void 0&&(this.location=t,t=void 0),this._set(`pendingLocation`,null),this._addFeature(n),r&&(this._featureStreamHasYielded=!0)}}finally{this._activeFeatureStream===e&&(this._featureStreamHasYielded||(this.features=[]),this._activeFeatureStream=null,this._set(`pendingLocation`,null),this._waitingForResultChange())}}_addFeature(e){let{features:t}=this;t.includes(e)||(this.features=t.concat(e))}};e([u()],k.prototype,`_initialDisplayMode`,void 0),e([u()],k.prototype,`_activeFeatureStream`,void 0),e([u()],k.prototype,`_featureStreamHasYielded`,void 0),e([u({type:v})],k.prototype,`actions`,void 0),e([u({type:v,readOnly:!0})],k.prototype,`defaultActions`,null),e([u({readOnly:!0})],k.prototype,`active`,null),e([u()],k.prototype,`activeFeature`,void 0),e([u()],k.prototype,`aggregatedFeaturesEnabled`,void 0),e([u({value:null})],k.prototype,`content`,null),e([u({type:Boolean})],k.prototype,`defaultPopupTemplateEnabled`,void 0),e([u({readOnly:!0})],k.prototype,`diagnostics`,void 0),e([u({readOnly:!0})],k.prototype,`effectiveHeading`,null),e([u({readOnly:!0})],k.prototype,`featureCount`,null),e([u()],k.prototype,`featurePage`,void 0),e([u({value:[]})],k.prototype,`features`,null),e([u()],k.prototype,`featureStream`,null),e([u()],k.prototype,`featuresPerPage`,void 0),e([u()],k.prototype,`featureMenuOpen`,void 0),e([u({type:S})],k.prototype,`featureItemAbilities`,void 0),e([u({readOnly:!0})],k.prototype,`featureItems`,void 0),e([u()],k.prototype,`heading`,void 0),e([u()],k.prototype,`highlightEnabled`,void 0),e([u()],k.prototype,`includeDefaultActions`,void 0),e([u()],k.prototype,`initialDisplayMode`,null),e([u({type:f})],k.prototype,`location`,null),e([u()],k.prototype,`map`,null),e([u()],k.prototype,`open`,void 0),e([u({readOnly:!0})],k.prototype,`pendingLocation`,null),e([u({readOnly:!0})],k.prototype,`streamingFeatures`,null),e([u({value:null,readOnly:!0})],k.prototype,`selectedFeature`,null),e([u({value:-1})],k.prototype,`selectedFeatureIndex`,null),e([u({readOnly:!0})],k.prototype,`selectedFeatureItem`,null),e([u({type:m})],k.prototype,`spatialReference`,null),e([u({readOnly:!0})],k.prototype,`state`,null),e([u()],k.prototype,`timeZone`,null),e([u()],k.prototype,`updateLocationEnabled`,void 0),e([u()],k.prototype,`view`,void 0),e([u({readOnly:!0})],k.prototype,`waitingForContents`,null),e([u({readOnly:!0})],k.prototype,`waitingForResult`,null),e([u()],k.prototype,`zoomFactor`,void 0),k=e([d(`esri.popup.FeaturesModel`)],k);const A=k;export{A as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../core/Error.js";import{EventedAccessor as n}from"../core/Evented.js";import r from"../core/Logger.js";import{abortMaybe as i,removeMaybe as a}from"../core/maybe.js";import{debounce as o,logOnError as s,isAbortError as c}from"../core/promiseUtils.js";import{watch as l,when as u}from"../core/reactiveUtils.js";import{throttle as d}from"../core/throttle.js";import{property as f,subclass as p}from"../core/accessorSupport/decorators.js";import m from"../geometry/Point.js";import{project as h}from"../geometry/projectionUtils.js";import g from"../geometry/SpatialReference.js";import{geographicToWebMercator as _}from"../geometry/support/webMercatorUtils.js";import{getGraphicLayer as v}from"../graphic/graphicOriginUtils.js";import{fallbackObjectIDAttribute as y}from"../layers/LayerConstants.js";import{ActionsCollection as b,createDefaultActions as x}from"./actions.js";import{getSelectedTarget as S}from"./actionUtils.js";import C from"./FeatureModel.js";import w from"./support/FeatureAbilities.js";import{getDisplayedSymbol as T}from"../symbols/support/symbolUtils.js";import{system as E}from"../time/constants.js";import{highlightsSupported as D}from"../views/support/layerViewUtils.js";import{GoTo as O}from"../widgets/support/GoTo.js";let k=null;function A(e,t){switch(e){case`building-scene`:case`map-image`:case`tile`:case`imagery`:return!0;case`imagery-tile`:return t===`2d`;default:return!1}}let j=class extends O(n){constructor(e){super(e),this._centerAtLocationController=null,this._locationUpdateController=null,this._featureStreamFlush=null,this._highlightPromises={"highlight-active-feature":null,"highlight-selected-feature":null},this._defaultFeatureAbilities=new w,this._activeFeatureStream=null,this._featureStreamHasYielded=!1,this.actions=new b,this.activeFeature=null,this.aggregatedFeaturesEnabled=!1,this.defaultPopupTemplateEnabled=!1,this.diagnostics=null,this.featuresPerPage=20,this.featureMenuOpen=!1,this.featureItemAbilities=null,this.featureModels=[],this.heading=null,this.highlightEnabled=!0,this.includeDefaultActions=!0,this.open=!1,this.updateLocationEnabled=!1,this.view=null,this.zoomFactor=4,this._debouncedLocationUpdate=o(async()=>{this._cancelLocationUpdate();let e=new AbortController,{signal:t}=e;this._locationUpdateController=e,await this._locationUpdate({signal:t}).catch(()=>{}).finally(()=>{this._locationUpdateController===e&&(this._locationUpdateController=null)})})}initialize(){this.addHandles([l(()=>this.view?.scale,()=>{this.open&&s(this._debouncedLocationUpdate(),r.getLogger(this))}),l(()=>[this.highlightEnabled,this.selectedFeature,this.open,this.view],()=>this._highlightSelectedFeature()),l(()=>[this.highlightEnabled,this.activeFeature,this.open,this.view],()=>this._highlightActiveFeature()),l(()=>this.location,e=>this._locationChange(e)),l(()=>this.selectedFeature,e=>this._selectedFeatureChange(e)),l(()=>[this.featurePage,this.selectedFeatureIndex,this.featuresPerPage,this.featureMenuOpen,this.open,this.initialDisplayMode,this.featureItemAbilities?.attachmentsContent,this.featureItemAbilities?.chartAnimation,this.featureItemAbilities?.customContent,this.featureItemAbilities?.expressionContent,this.featureItemAbilities?.fieldsContent,this.featureItemAbilities?.mediaContent,this.featureItemAbilities?.relationshipContent,this.featureItemAbilities?.textContent,this.featureItemAbilities?.utilityNetworkAssociationsContent,this.actions,this.defaultPopupTemplateEnabled,this.includeDefaultActions,this.features,this.map,this.spatialReference,this.timeZone],()=>this._updateFeatureModels(),{initial:!0}),u(()=>!this.open,()=>this.aggregatedFeaturesEnabled=!1)])}destroy(){this._cancelLocationUpdate(),this._cancelCenterAtLocation(),this._cancelFeatureStream(),this._destroyFeatureModels(),this.aggregatedFeaturesEnabled=!1,this.view=null,this.map=null,this.spatialReference=null,this.timeZone=null}get defaultActions(){let e=this._get(`defaultActions`)||new b;return e.removeAll(),e.addMany(this.selectedFeatureItem?.defaultActions.toArray()??x()),e}get active(){return this.open&&!this.waitingForResult}set content(e){this.featureStream=null,this._set(`diagnostics`,null),this.features=[],this._set(`content`,e)}get effectiveHeading(){return this.selectedFeatureItem?.heading??this.heading}get featureCount(){return this.features.length}get featurePage(){return this._get(`featurePage`)}set featurePage(e){if(e==null){this.featureCount||this._set(`featurePage`,null);return}!Number.isInteger(e)||e<1||e>Math.ceil(this.featureCount/this.featuresPerPage)||e!==1&&e!==(this.featurePage??0)+1||(this._set(`featurePage`,e),this._updateFeatureModels(!0))}set features(e){if(this._get(`features`)===e)return;let t=e||[];this._set(`features`,t),(!this._activeFeatureStream||!t.length||this.featurePage==null)&&this._set(`featurePage`,t.length?1:null),this._syncSelectedFeatureIndex(t)}get featureStream(){return this._get(`featureStream`)||null}set featureStream(e){this._setFeatureStream(e)}_setFeatureStream(e,t,n){this._set(`diagnostics`,n??null),this._get(`featureStream`)!==e&&(this._set(`featureStream`,e),this._cancelFeatureStream(),e&&(this._featureStreamHasYielded=!1,this._set(`pendingLocation`,t??null),this._activeFeatureStream=e,this._consumeFeatureStream(e,t).catch(()=>{})))}get initialDisplayMode(){return this._initialDisplayMode??(this.view?.focusRegionEnabled?`list`:`feature`)}set initialDisplayMode(e){this._initialDisplayMode=e,this._syncSelectedFeatureIndex(this.features)}set location(e){let t=e?.spatialReference?.isWGS84&&this.spatialReference?.isWebMercator?_(e):e;this._set(`location`,t)}get map(){return this.view?.map??null}set map(e){this._override(`map`,e)}get pendingLocation(){return this._get(`pendingLocation`)??null}get streamingFeatures(){return this._activeFeatureStream!=null}get selectedFeature(){return this.selectedFeatureIndex===-1?null:this.features[this.selectedFeatureIndex]??null}get selectedFeatureIndex(){let e=this._get(`selectedFeatureIndex`);return typeof e==`number`?e:-1}set selectedFeatureIndex(e){let{featureCount:t}=this;(isNaN(e)||e<0||!t)&&(e=-1),this.activeFeature=null,this._set(`selectedFeatureIndex`,e)}get selectedFeatureItem(){return this.featureModels[this.selectedFeatureIndex]||null}get spatialReference(){return this.view?.spatialReference??null}set spatialReference(e){this._override(`spatialReference`,e)}get state(){return this.view?this.view.ready?`ready`:`disabled`:this.map?`ready`:`disabled`}get timeZone(){return this.view?.timeZone??E}set timeZone(e){this._overrideIfSome(`timeZone`,e)}get waitingForContents(){return this.featureModels.some(e=>e.waitingForContent)}get waitingForResult(){return this.streamingFeatures&&!this._featureStreamHasYielded}zoomTo(e){return this.callGoTo(e)}clear(){this._cancelFeatureStream(),this._set(`diagnostics`,null),this.set({featureStream:null,features:[],content:null,heading:null,location:null,activeFeature:null})}openFeatureStream(e){this._setFeatureStream(e.featureStream,e.location??null,e.diagnostics),this.open=!0}async fetchFeatures(e,n){let{view:r}=this;if(!r||!e)throw new t(`fetch-features:invalid-screenpoint-or-view`,`Cannot fetch features without a screen point/screen area and view.`,{screenPoint:e,view:r});let i={},a=r.fetchPopupFeatures(e,{diagnostics:i,pointerType:n?.event?.pointerType,defaultPopupTemplateEnabled:this.defaultPopupTemplateEnabled,signal:n?.signal});this._setFeatureStream(a,void 0,i)}next(){this.selectedFeatureIndex=this._getRoundRobinIndex(this.selectedFeatureIndex+1,this.featureCount)}previous(){this.selectedFeatureIndex=this._getRoundRobinIndex(this.selectedFeatureIndex-1,this.featureCount)}_syncSelectedFeatureIndex(e){let{selectedFeatureIndex:t}=this,n=this._activeFeatureStream!=null&&e.length>0;if(this.initialDisplayMode===`list`){n||(this.selectedFeatureIndex=-1);return}if(n&&t===-1){this.selectedFeatureIndex=0;return}n&&t!==-1||(this.selectedFeatureIndex=e.length?0:-1)}_centerAtLocation(){let{view:e}=this,n=S(this);this._cancelCenterAtLocation();let i=new AbortController,{signal:a}=i;return this._centerAtLocationController=i,!n||!e?Promise.reject(new t(`center-at-location:invalid-target-or-view`,`Cannot center at a location without a target and view.`,{target:n,view:e})):this.callGoTo({target:{target:n,scale:e.scale},options:{signal:a}}).catch(e=>{c(e)||r.getLogger(this).error(e)})}_getRoundRobinIndex(e,t){return(e+t)%t}_locationChange(e){let{selectedFeature:t,updateLocationEnabled:n,view:r}=this;r&&!this._locationUpdateController&&n&&e&&(!t||t.geometry)&&this._centerAtLocation()}async _selectedFeatureChange(e){let{location:t,updateLocationEnabled:n,view:r}=this;if(this.aggregatedFeaturesEnabled=!1,!e||!r)return;let i=v(e)?.type;if((i===`map-image`||i===`imagery`||i===`imagery-tile`)&&(e.symbol=await T(e)),(n||!t)&&e.geometry){if(e.geometry.type===`point`){this.location=e.geometry;return}let{labelPointExecute:t}=await import(`../geometry/operators/labelPointOperator.js`);this.location=t(e.geometry);return}if(n&&!e.geometry){await this._centerAtLocation();let e=r.center?.clone();e&&(this.location=e)}}_waitingForResultChange(){!this.featureCount&&this.featureStream&&(this.open=!1)}_destroyFeatureModels(){this.featureModels.forEach(e=>e&&!e.destroyed&&e.destroy()),this._set(`featureModels`,[])}_reconcileFeatureModels(e){let t=[],n=new Map,r=[];if(this.featureModels.forEach((i,a)=>{let o=i?.graphic;!o||i.destroyed?i.destroy():e[a]===o?t[a]=i:(r.push(i),n.has(o)||n.set(o,[]))}),r.length){for(let r=e.length-1;r>=0;r--)t[r]||n.get(e[r])?.push(r);r.forEach(e=>{let r=n.get(e.graphic)?.pop();r==null?e.destroy():t[r]=e})}return t}_updateFeatureModels(e=!1){let{selectedFeature:t,features:n}=this;if(!n.length){this._destroyFeatureModels();return}let r={abilities:this.featureItemAbilities??this._defaultFeatureAbilities,actions:this.actions,defaultPopupTemplateEnabled:this.defaultPopupTemplateEnabled,includeDefaultActions:this.includeDefaultActions,spatialReference:this.spatialReference,location:this.location,map:this.map,view:this.view,timeZone:this.timeZone},i=this._reconcileFeatureModels(n);i.forEach(e=>e.set(r));let a=e=>{let t=n[e];t&&!i[e]&&(i[e]=new C({...r,graphic:t}))};if(t&&a(this.selectedFeatureIndex),e||(this.featurePage??0)>1||this.open&&(this.featureMenuOpen||this.initialDisplayMode===`list`)){let e=Math.min((this.featurePage??0)*this.featuresPerPage,n.length);for(let t=0;t<e;t++)a(t)}this._set(`featureModels`,i)}_cancelCenterAtLocation(){this._centerAtLocationController=i(this._centerAtLocationController)}_cancelFeatureStream(){this._featureStreamFlush=a(this._featureStreamFlush);let e=this._activeFeatureStream;this._activeFeatureStream=null,this._set(`pendingLocation`,null),this._get(`featureStream`)===e&&this._set(`featureStream`,null),e?.return&&e.return(void 0).catch(()=>{})}async _locationUpdate(e){let{spatialReference:t}=this,n=this.selectedFeature,i=n?.geometry?.type,a=this.location;if(i&&i!==`mesh`&&t&&a&&n){if(i===`point`){let{labelPointExecute:t}=await import(`../geometry/operators/labelPointOperator.js`);if(e?.signal?.aborted||this.selectedFeature!==n||!n.geometry)return;this.location=t(n.geometry);return}try{let r=n.geometry,i=this._getHighlightLayer(n),o=n.getObjectId();if(!i||!this.view)return;if(o!=null){let n=this.view?.allLayerViews.find(e=>e.layer.uid===i.uid);if(!n||!(`queryFeatures`in n))return;let a=n.createQuery();a.outSpatialReference=t,a.objectIds=[o],a.returnGeometry=!0;let{features:s}=await n.queryFeatures(a,e);if(e?.signal?.aborted)return;r=s[0]?.geometry}if(!r||r.type===`mesh`)return;r=h(r,t),k??=await Promise.all([import(`../geometry/operators/intersectsOperator.js`),import(`../geometry/operators/proximityOperator.js`)]);let[{intersectsExecute:s},{proximityGetNearestCoordinate:c}]=k;if(!s(r,a)){let e=c(r,a).coordinate??a;this.selectedFeature===n&&(this.location=e)}}catch(e){c(e)||r.getLogger(this).error(e)}}}_cancelLocationUpdate(){this._locationUpdateController=i(this._locationUpdateController)}async _getLayerView(e,t){return await e.when(),e.whenLayerView(t)}_getHighlightLayer(e){let t=v(e),{layer:n}=e;return t&&`layer`in t&&t.layer?t.layer:t?.type===`map-notes`||t?.type===`sketch`||t?.type===`subtype-group`?t:n??t}_getHighlightLayerView(e,t){return t.type===`subtype-sublayer`&&t.parent&&this._mapIncludesLayer(t.parent)?this._getLayerView(e,t.parent):t&&this._mapIncludesLayer(t)?this._getLayerView(e,t):null}_getHighlightTarget(e,t,n){if(A(t.type,n))return e;let r=e.getObjectId();if(r!=null)return r;let i=t.type===`imagery`?void 0:`objectIdField`in t?t.objectIdField||y:null,a=e.attributes;return a&&i&&a[i]||e}_mapIncludesLayer(e){return!!this.map?.allLayers?.includes(e)}async _highlightFeature(e,t){this.removeHandles(e);let n=this[t];if(!n)return;let{highlightEnabled:r,view:i,open:a}=this;if(!i||!r||!a)return;let o=this._getHighlightLayer(n);if(!o)return;let s=this._getHighlightLayerView(i,o);if(!s)return;this._highlightPromises[e]=s;let c=await s;if(!c||!D(c)||this._highlightPromises[e]!==s||!this[t]||!this.highlightEnabled)return;let l=c.highlight(this._getHighlightTarget(n,o,i.type));this.addHandles(l,e)}async _highlightActiveFeature(){return this._highlightFeature(`highlight-active-feature`,`activeFeature`)}async _highlightSelectedFeature(){return this._highlightFeature(`highlight-selected-feature`,`selectedFeature`)}async _consumeFeatureStream(e,t){if(e!==this._activeFeatureStream)return;let n=[],r=d(()=>{let t=n;n=[],e===this._activeFeatureStream&&t.length&&this._addFeatures(t)},16),i={remove:()=>{r.remove(),n=[]}};this._featureStreamFlush=i;try{for await(let i of e){if(e!==this._activeFeatureStream)return;let a=!this._featureStreamHasYielded;a&&(this.features=[]),t!==void 0&&(this.location=t,t=void 0),this._set(`pendingLocation`,null),a?(this._addFeatures([i]),e===this._activeFeatureStream&&(this._featureStreamHasYielded=!0)):(n.push(i),r())}}finally{this._activeFeatureStream===e&&r.forceUpdate(),i.remove(),this._featureStreamFlush===i&&(this._featureStreamFlush=null),this._activeFeatureStream===e&&(this._featureStreamHasYielded||(this.features=[]),this._activeFeatureStream=null,this._set(`pendingLocation`,null),this._waitingForResultChange())}}_addFeatures(e){let{features:t}=this,n=new Set(t),r=e.filter(e=>!n.has(e)&&(n.add(e),!0));r.length&&(this.features=t.concat(r))}};e([f()],j.prototype,`_initialDisplayMode`,void 0),e([f()],j.prototype,`_activeFeatureStream`,void 0),e([f()],j.prototype,`_featureStreamHasYielded`,void 0),e([f({type:b})],j.prototype,`actions`,void 0),e([f({type:b,readOnly:!0})],j.prototype,`defaultActions`,null),e([f({readOnly:!0})],j.prototype,`active`,null),e([f()],j.prototype,`activeFeature`,void 0),e([f()],j.prototype,`aggregatedFeaturesEnabled`,void 0),e([f({value:null})],j.prototype,`content`,null),e([f({type:Boolean})],j.prototype,`defaultPopupTemplateEnabled`,void 0),e([f({readOnly:!0})],j.prototype,`diagnostics`,void 0),e([f({readOnly:!0})],j.prototype,`effectiveHeading`,null),e([f({readOnly:!0})],j.prototype,`featureCount`,null),e([f({value:null})],j.prototype,`featurePage`,null),e([f({value:[]})],j.prototype,`features`,null),e([f()],j.prototype,`featureStream`,null),e([f()],j.prototype,`featuresPerPage`,void 0),e([f()],j.prototype,`featureMenuOpen`,void 0),e([f({type:w})],j.prototype,`featureItemAbilities`,void 0),e([f({readOnly:!0})],j.prototype,`featureModels`,void 0),e([f()],j.prototype,`heading`,void 0),e([f()],j.prototype,`highlightEnabled`,void 0),e([f()],j.prototype,`includeDefaultActions`,void 0),e([f()],j.prototype,`initialDisplayMode`,null),e([f({type:m})],j.prototype,`location`,null),e([f()],j.prototype,`map`,null),e([f()],j.prototype,`open`,void 0),e([f({readOnly:!0})],j.prototype,`pendingLocation`,null),e([f({readOnly:!0})],j.prototype,`streamingFeatures`,null),e([f({value:null,readOnly:!0})],j.prototype,`selectedFeature`,null),e([f({value:-1})],j.prototype,`selectedFeatureIndex`,null),e([f({readOnly:!0})],j.prototype,`selectedFeatureItem`,null),e([f({type:g})],j.prototype,`spatialReference`,null),e([f({readOnly:!0})],j.prototype,`state`,null),e([f()],j.prototype,`timeZone`,null),e([f()],j.prototype,`updateLocationEnabled`,void 0),e([f()],j.prototype,`view`,void 0),e([f({readOnly:!0})],j.prototype,`waitingForContents`,null),e([f({readOnly:!0})],j.prototype,`waitingForResult`,null),e([f()],j.prototype,`zoomFactor`,void 0),j=e([p(`esri.popup.FeaturesModel`)],j);const M=j;export{M 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{parse as t}from"../../layers/support/arcgisLayerUrl.js";import{fetchFeatureService as n}from"../../layers/support/fetchService.js";import{LayerLoadContext as r}from"../../layers/support/LayerLoadContext.js";import{applyPreferredHostToPortalItem as i,isPreferredUrlApplicable as a,getPreferredHost as o}from"../../layers/support/layerUtils.js";import s from"../Portal.js";import{createForItemRead as c}from"./jsonContext.js";import{normalizeFSItemData as l,getSublayersByLayerType as u,getFirstLayerOrTable as d,preprocessFSItemData as f,populateSceneServiceItemData as p,getNumLayersAndTables as m,instanceTypeToLayerTypes as h,layerTypeToLayerModuleType as g,createSublayerData as _}from"./loadUtils.js";import{hasTypeKeyword as v}from"./portalItemUtils.js";import{loadStyleRenderer as y}from"../../renderers/support/styleUtils.js";import{requestServiceJSON as b}from"../../request/serviceJSON.js";async function x(e,t){let n=e.instance.portalItem;if(n?.id)return await n.load(t),C(e),e.validateItem&&e.validateItem(n),w(e,t)}async function S(e,t){let n=e.instance.portalItem;if(!n?.id||!n.loaded)return!1;let r=n.modified;return await n.reload(),t?.signal?.throwIfAborted(),r?.getTime()!==n.modified?.getTime()&&(C(e),e.validateItem&&e.validateItem(n),await w(e,t),!0)}function C(t){let n=t.instance.portalItem;if(!n?.type||!t.supportedTypes.includes(n.type))throw new e(`portal:invalid-layer-item-type`,"Invalid layer item type '${type}', expected '${expectedType}'",{type:n?.type,expectedType:t.supportedTypes.join(`, `)})}async function w(e,t){let n=e.instance,{portalItem:i,type:a}=n;if(!i)return;let{url:o}=i,{title:s}=i,l=c(i,`portal-item`);if(a===`group`)return T(n,l,e);o&&a!==`media`&&n.read({url:o},l);let{data:u,preferredHost:d}=await M(e,new r,t);return o=i.url,`isUrlHostModified`in n&&(d?n.applyPreferredHost({preferredHost:d}):n.applyHostFromPortalItem()),u&&n.read(u,l),n.resourceReferences={portalItem:i,paths:l.readResourcePaths??[]},a!==`subtype-group`&&n.read({title:s},l),y(n,l)}async function T(t,n,r){let i=t.portalItem;if(!t.sourceIsPortalItem)return;let{title:a,type:o}=i;if(o===`Group Layer`){if(!v(i,`Map`))throw new e(`portal:invalid-layer-item-typekeyword`,`'Group Layer' item without 'Map' type keyword is not supported`);return E(t,r)}return t.read({title:a},n),D(t,r)}async function E(t,n){let r=t.portalItem,i=await r.fetchData(`json`);if(!i)return;if(!n.populateGroupLayer)throw new e(`portal:missing-populate-group-layer`,`Missing populate group layer`);let a=c(r,`web-map`);t.read(i,a),await n.populateGroupLayer(t,i,{context:a}),t.resourceReferences={portalItem:r,paths:a.readResourcePaths??[]}}async function D(t,n){let a,{portalItem:o}=t;if(!o)return;let{type:s,url:c}=o,l=n.layerModuleTypeMap;if(!l)throw new e(`portal:missing-layer-module-type-map`,`Layer module type map is required to construct sub layers`);switch(s){case`Feature Service`:a=l.FeatureLayer;break;case`Stream Service`:a=l.StreamLayer;break;case`Scene Service`:a=l.SceneLayer;break;case`Feature Collection`:a=l.FeatureLayer;break;case`Video Service`:a=l.VideoLayer;break;default:throw new e(`portal:unsupported-item-type-as-group`,`The item type '${s}' is not supported as a 'GroupLayer'`)}let u=s===`Video Service`,h=new r,[g,{data:_}]=await Promise.all([a(),u?{data:null}:M(n,h)]),v=()=>g;if(u)return k(t,v,l);if(s===`Feature Service`){let e=d(_)?.customParameters,n=(await f(_,c,h)).data;v=await R(n,l)??v;let{provider:r,preferredHost:a}=await L(c,{customParameters:e,loadContext:h});return i(o,a),await A(t,v,v,n,l,r)}return s===`Scene Service`&&c&&(_=await p(o,_,h)),m(_)>0?await A(t,v,null,_,l):await O(t,v,l)}async function O(e,t,n){let{portalItem:r}=e;if(!r?.url)return;let i=await b(r.url);i&&A(e,t,null,{layers:i.layers?.map(e=>_(e)),tables:i.tables?.map(e=>_(e,!0))},n)}async function k(e,t,n){let{portalItem:r}=e;if(!r?.url)return;let i=await b(r.url);i&&A(e,t,null,{layers:i.layers?.map(({id:e,name:t})=>({id:e,name:t}))},n)}async function A(e,t,n,r,i,a){let o=r.layers??[],s=r.tables??[];if(e.portalItem?.type===`Feature Collection`?(o.forEach((e,t)=>{e.id=t,e?.layerDefinition?.type===`Table`&&s.push(e)}),o=o.filter(e=>e?.layerDefinition?.type!==`Table`)):(o.reverse(),s.reverse()),o.forEach(n=>{let i=a?.(n);if(i||!a){let a=j(e,t(n),r,n,i);e.add(a)}}),s.length){let t=n?null:await i.FeatureLayer();s.forEach(i=>{let o=a?.(i);if(o||!a){let a=j(e,n?n(i):t,r,i,o);e.tables.add(a)}})}}function j(e,t,n,r,i){let a=e.portalItem,o={portalItem:a.clone(),layerId:r.id};r.url!=null&&(o.url=r.url);let c=new t(o);if(`sourceJSON`in c&&(c.sourceJSON=i),c.type!==`subtype-group`&&c.type!==`catalog`&&(c.sublayerTitleMode=`service-name`),a.type===`Feature Collection`){let e={origin:`portal-item`,portal:a.portal??s.getDefault()};c.read(r,e);let t=n.showLegend;t!=null&&c.read({showLegend:t},e)}return c}async function M(e,t,n){if(e.supportsData===!1)return{data:void 0};let r=e.instance,{portalItem:a,type:o}=r;if(!a)return{data:void 0};let s=null;try{s=o===`video`?null:await a.fetchData(`json`,n)}catch{}if(F(r)){let{type:e,url:n}=a;if(e===`Feature Service`&&n)try{await l(s,n,t)}catch{}let c=null,{count:f,preferredHost:p}=await N(a,s,t);if(i(a,p),(s?.layers||s?.tables)&&f>0){if(r.layerId==null){let e=h(o),t=e?.length?u(s,e)[0]:d(s);t&&(r.layerId=t.id)}c=P(s,r),c?.layerType===`OrientedImageryLayer`&&o===`oriented-imagery`&&r.supportedSourceTypes.add(`Feature Layer`),c&&s.showLegend!=null&&(c.showLegend=s.showLegend)}return f>1&&`sublayerTitleMode`in r&&r.sublayerTitleMode!==`service-name`&&(r.sublayerTitleMode=`item-title-and-service-name`),{data:c,preferredHost:p}}return{data:s}}async function N(e,n,r){if(n?.layers&&n?.tables)return{count:m(n)};let i=t(e.url);if(!i)return{count:1};let s=i.url.path,c=await r.fetchServiceMetadata(s,{customParameters:d(n)?.customParameters}).catch(()=>null);return{count:(n?.layers?.length??c?.layers?.length??0)+(n?.tables?.length??c?.tables?.length??0),preferredHost:a(e)?o():null}}function P(e,t){let{layerId:n}=t,r=e.layers?.find(({id:e})=>e===n)??e.tables?.find(({id:e})=>e===n);return r&&I(r,t)?r:null}function F(e){return e.type!==`stream`&&`layerId`in e}function I(e,t){let{layerType:n}=e;switch(t.type){case`annotation-feature`:return n===`ArcGISAnnotationLayer`;case`catalog`:return n===`CatalogLayer`;case`dimension-feature`:return n===`ArcGISDimensionLayer`;case`feature`:return!n||n===`ArcGISFeatureLayer`||n===`Table`;case`oriented-imagery`:return n===`OrientedImageryLayer`;case`subtype-group`:return n===`SubtypeGroupLayer`||n===`SubtypeGroupTable`}return!0}async function L(e,t){let{layersJSON:r,preferredHost:i}=await n(e,t);if(!r)return{provider:null,preferredHost:i};let a=[...r.layers,...r.tables];return{provider:e=>a.find(t=>t.id===e.id),preferredHost:i}}async function R(e,t){let{layers:n,tables:r}=e,i=[...n,...r];if(!i.length)return;let a=new Set,o=[];for(let{layerType:e}of i){if(a.has(e))continue;a.add(e);let n=t[g(e)];o.push(n())}let s=await Promise.all(o),c=new Map;return Array.from(a).forEach((e,t)=>{c.set(e,s[t])}),({layerType:e})=>c.get(e)}export{x as load,S as reload};
|
|
2
|
+
import e from"../../core/Error.js";import{parse as t}from"../../layers/support/arcgisLayerUrl.js";import{fetchFeatureService as n}from"../../layers/support/fetchService.js";import{LayerLoadContext as r}from"../../layers/support/LayerLoadContext.js";import{applyPreferredHostToPortalItem as i,isPreferredUrlApplicable as a,getPreferredHost as o}from"../../layers/support/layerUtils.js";import s from"../Portal.js";import{createForItemRead as c}from"./jsonContext.js";import{normalizeFSItemData as l,getSublayersByLayerType as u,getFirstLayerOrTable as d,preprocessFSItemData as f,populateSceneServiceItemData as p,getNumLayersAndTables as m,instanceTypeToLayerTypes as h,layerTypeToLayerModuleType as g,createSublayerData as _}from"./loadUtils.js";import{hasTypeKeyword as v}from"./portalItemUtils.js";import{loadStyleRenderer as y}from"../../renderers/support/styleUtils.js";import{requestServiceJSON as b}from"../../request/serviceJSON.js";async function x(e,t){let n=e.instance.portalItem;if(n?.id)return await n.load(t),C(e),e.validateItem&&e.validateItem(n),w(e,t)}async function S(e,t){let n=e.instance.portalItem;if(!n?.id||!n.loaded)return!1;let r=n.modified;return await n.reload(),t?.signal?.throwIfAborted(),r?.getTime()!==n.modified?.getTime()&&(C(e),e.validateItem&&e.validateItem(n),await w(e,t),!0)}function C(t){let n=t.instance.portalItem;if(!n?.type||!t.supportedTypes.includes(n.type))throw new e(`portal:invalid-layer-item-type`,"Invalid layer item type '${type}', expected '${expectedType}'",{type:n?.type,expectedType:t.supportedTypes.join(`, `)})}async function w(e,t){let n=e.instance,{portalItem:i,type:a}=n;if(!i)return;let{url:o}=i,{title:s}=i,l=c(i,`portal-item`);if(a===`group`)return T(n,l,e);o&&a!==`media`&&a!==`parquet`&&n.read({url:o},l);let{data:u,preferredHost:d}=await M(e,new r,t);return o=i.url,`isUrlHostModified`in n&&(d?n.applyPreferredHost({preferredHost:d}):n.applyHostFromPortalItem()),u&&n.read(u,l),n.resourceReferences={portalItem:i,paths:l.readResourcePaths??[]},a!==`subtype-group`&&n.read({title:s},l),y(n,l)}async function T(t,n,r){let i=t.portalItem;if(!t.sourceIsPortalItem)return;let{title:a,type:o}=i;if(o===`Group Layer`){if(!v(i,`Map`))throw new e(`portal:invalid-layer-item-typekeyword`,`'Group Layer' item without 'Map' type keyword is not supported`);return E(t,r)}return t.read({title:a},n),D(t,r)}async function E(t,n){let r=t.portalItem,i=await r.fetchData(`json`);if(!i)return;if(!n.populateGroupLayer)throw new e(`portal:missing-populate-group-layer`,`Missing populate group layer`);let a=c(r,`web-map`);t.read(i,a),await n.populateGroupLayer(t,i,{context:a}),t.resourceReferences={portalItem:r,paths:a.readResourcePaths??[]}}async function D(t,n){let a,{portalItem:o}=t;if(!o)return;let{type:s,url:c}=o,l=n.layerModuleTypeMap;if(!l)throw new e(`portal:missing-layer-module-type-map`,`Layer module type map is required to construct sub layers`);switch(s){case`Feature Service`:a=l.FeatureLayer;break;case`Stream Service`:a=l.StreamLayer;break;case`Scene Service`:a=l.SceneLayer;break;case`Feature Collection`:a=l.FeatureLayer;break;case`Video Service`:a=l.VideoLayer;break;default:throw new e(`portal:unsupported-item-type-as-group`,`The item type '${s}' is not supported as a 'GroupLayer'`)}let u=s===`Video Service`,h=new r,[g,{data:_}]=await Promise.all([a(),u?{data:null}:M(n,h)]),v=()=>g;if(u)return k(t,v,l);if(s===`Feature Service`){let e=d(_)?.customParameters,n=(await f(_,c,h)).data;v=await R(n,l)??v;let{provider:r,preferredHost:a}=await L(c,{customParameters:e,loadContext:h});return i(o,a),await A(t,v,v,n,l,r)}return s===`Scene Service`&&c&&(_=await p(o,_,h)),m(_)>0?await A(t,v,null,_,l):await O(t,v,l)}async function O(e,t,n){let{portalItem:r}=e;if(!r?.url)return;let i=await b(r.url);i&&A(e,t,null,{layers:i.layers?.map(e=>_(e)),tables:i.tables?.map(e=>_(e,!0))},n)}async function k(e,t,n){let{portalItem:r}=e;if(!r?.url)return;let i=await b(r.url);i&&A(e,t,null,{layers:i.layers?.map(({id:e,name:t})=>({id:e,name:t}))},n)}async function A(e,t,n,r,i,a){let o=r.layers??[],s=r.tables??[];if(e.portalItem?.type===`Feature Collection`?(o.forEach((e,t)=>{e.id=t,e?.layerDefinition?.type===`Table`&&s.push(e)}),o=o.filter(e=>e?.layerDefinition?.type!==`Table`)):(o.reverse(),s.reverse()),o.forEach(n=>{let i=a?.(n);if(i||!a){let a=j(e,t(n),r,n,i);e.add(a)}}),s.length){let t=n?null:await i.FeatureLayer();s.forEach(i=>{let o=a?.(i);if(o||!a){let a=j(e,n?n(i):t,r,i,o);e.tables.add(a)}})}}function j(e,t,n,r,i){let a=e.portalItem,o={portalItem:a.clone(),layerId:r.id};r.url!=null&&(o.url=r.url);let c=new t(o);if(`sourceJSON`in c&&(c.sourceJSON=i),c.type!==`subtype-group`&&c.type!==`catalog`&&(c.sublayerTitleMode=`service-name`),a.type===`Feature Collection`){let e={origin:`portal-item`,portal:a.portal??s.getDefault()};c.read(r,e);let t=n.showLegend;t!=null&&c.read({showLegend:t},e)}return c}async function M(e,t,n){if(e.supportsData===!1)return{data:void 0};let r=e.instance,{portalItem:a,type:o}=r;if(!a)return{data:void 0};let s=null;try{s=o===`video`?null:await a.fetchData(`json`,n)}catch{}if(F(r)){let{type:e,url:n}=a;if(e===`Feature Service`&&n)try{await l(s,n,t)}catch{}let c=null,{count:f,preferredHost:p}=await N(a,s,t);if(i(a,p),(s?.layers||s?.tables)&&f>0){if(r.layerId==null){let e=h(o),t=e?.length?u(s,e)[0]:d(s);t&&(r.layerId=t.id)}c=P(s,r),c?.layerType===`OrientedImageryLayer`&&o===`oriented-imagery`&&r.supportedSourceTypes.add(`Feature Layer`),c&&s.showLegend!=null&&(c.showLegend=s.showLegend)}return f>1&&`sublayerTitleMode`in r&&r.sublayerTitleMode!==`service-name`&&(r.sublayerTitleMode=`item-title-and-service-name`),{data:c,preferredHost:p}}return{data:s}}async function N(e,n,r){if(n?.layers&&n?.tables)return{count:m(n)};let i=t(e.url);if(!i)return{count:1};let s=i.url.path,c=await r.fetchServiceMetadata(s,{customParameters:d(n)?.customParameters}).catch(()=>null);return{count:(n?.layers?.length??c?.layers?.length??0)+(n?.tables?.length??c?.tables?.length??0),preferredHost:a(e)?o():null}}function P(e,t){let{layerId:n}=t,r=e.layers?.find(({id:e})=>e===n)??e.tables?.find(({id:e})=>e===n);return r&&I(r,t)?r:null}function F(e){return e.type!==`stream`&&`layerId`in e}function I(e,t){let{layerType:n}=e;switch(t.type){case`annotation-feature`:return n===`ArcGISAnnotationLayer`;case`catalog`:return n===`CatalogLayer`;case`dimension-feature`:return n===`ArcGISDimensionLayer`;case`feature`:return!n||n===`ArcGISFeatureLayer`||n===`Table`;case`oriented-imagery`:return n===`OrientedImageryLayer`;case`subtype-group`:return n===`SubtypeGroupLayer`||n===`SubtypeGroupTable`}return!0}async function L(e,t){let{layersJSON:r,preferredHost:i}=await n(e,t);if(!r)return{provider:null,preferredHost:i};let a=[...r.layers,...r.tables];return{provider:e=>a.find(t=>t.id===e.id),preferredHost:i}}async function R(e,t){let{layers:n,tables:r}=e,i=[...n,...r];if(!i.length)return;let a=new Set,o=[];for(let{layerType:e}of i){if(a.has(e))continue;a.add(e);let n=t[g(e)];o.push(n())}let s=await Promise.all(o),c=new Map;return Array.from(a).forEach((e,t)=>{c.set(e,s[t])}),({layerType:e})=>c.get(e)}export{x as load,S as reload};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import e from"../../core/Error.js";import has from"../../core/has.js";import{findAssociatedFeatureService as t}from"../../layers/support/associatedFeatureServiceUtils.js";import{getLayerModuleTypeStrict as n}from"../../layers/support/fetchService.js";import{LayerLoadContext as r}from"../../layers/support/LayerLoadContext.js";import{layersLoaderMap as i}from"../../layers/support/layersLoader.js";import{sceneServiceLayerTypeToClassName as a,applyPreferredHostToPortalItem as o,getPreferredHost as s}from"../../layers/support/layerUtils.js";import c from"../PortalItem.js";import{getFirstLayerOrTable as l,getNumLayersAndTables as u,preprocessFSItemData as d,getLayerOrTable as f,layerTypeToLayerModuleType as p,populateSceneServiceItemData as m}from"./loadUtils.js";import{hasTypeKeyword as h}from"./portalItemUtils.js";async function g(e){let{portalItem:t}=e;t&&!(t instanceof c)&&(t=new c(t));let n=await _(t),r=n.constructor;return new r({portalItem:t,...n.properties})}async function _(e){return await e.load(),y(await v(e,new r))}async function v(t,n){switch(t.type){case`3DTiles Service`:return t.typeKeywords.includes(`3DObject`)?j():t.typeKeywords.includes(`GaussianSplat`)?A():k();case`CSV`:return M();case`Feature Collection`:return C(t);case`Feature Service`:return x(t,n);case`Feed`:return B();case`GeoJson`:return O();case`Group Layer`:return V();case`Image Service`:return w(t,n);case`KML`:return P();case`Knowledge Graph Layer`:return F();case`Map Service`:return b(t,n);case`Media Layer`:return H();case`PDF`:return N();case`Scene Service`:return S(t,n);case`Stream Service`:return T();case`Video Service`:return E(t,n);case`Vector Tile Service`:return D();case`WCS`:return I();case`WFS`:return L();case`WMS`:return R();case`WMTS`:return z();default:throw new e(`portal:unknown-item-type`,"Unknown item type '${type}'",{type:t.type})}}async function y(e){let t=e.className,n=i[t];return{constructor:await n(),properties:e.properties}}async function b(e,t){return await
|
|
2
|
+
import e from"../../core/Error.js";import has from"../../core/has.js";import{findAssociatedFeatureService as t}from"../../layers/support/associatedFeatureServiceUtils.js";import{getLayerModuleTypeStrict as n}from"../../layers/support/fetchService.js";import{LayerLoadContext as r}from"../../layers/support/LayerLoadContext.js";import{layersLoaderMap as i}from"../../layers/support/layersLoader.js";import{sceneServiceLayerTypeToClassName as a,applyPreferredHostToPortalItem as o,getPreferredHost as s}from"../../layers/support/layerUtils.js";import c from"../PortalItem.js";import{getFirstLayerOrTable as l,getNumLayersAndTables as u,preprocessFSItemData as d,getLayerOrTable as f,layerTypeToLayerModuleType as p,populateSceneServiceItemData as m}from"./loadUtils.js";import{hasTypeKeyword as h}from"./portalItemUtils.js";async function g(e){let{portalItem:t}=e;t&&!(t instanceof c)&&(t=new c(t));let n=await _(t),r=n.constructor;return new r({portalItem:t,...n.properties})}async function _(e){return await e.load(),y(await v(e,new r))}async function v(t,n){switch(t.type){case`3DTiles Service`:return t.typeKeywords.includes(`3DObject`)?j():t.typeKeywords.includes(`GaussianSplat`)?A():k();case`CSV`:return M();case`Feature Collection`:return C(t);case`Feature Service`:return x(t,n);case`Feed`:return B();case`GeoJson`:return O();case`Group Layer`:return V();case`Image Service`:return w(t,n);case`KML`:return P();case`Knowledge Graph Layer`:return F();case`Map Service`:return b(t,n);case`Media Layer`:return H();case`Parquet Feature Layer`:return U();case`PDF`:return N();case`Scene Service`:return S(t,n);case`Stream Service`:return T();case`Video Service`:return E(t,n);case`Vector Tile Service`:return D();case`WCS`:return I();case`WFS`:return L();case`WMS`:return R();case`WMTS`:return z();default:throw new e(`portal:unknown-item-type`,"Unknown item type '${type}'",{type:t.type})}}async function y(e){let t=e.className,n=i[t];return{constructor:await n(),properties:e.properties}}async function b(e,t){return await W(e,t)?{className:`TileLayer`}:{className:`MapImageLayer`}}async function x(e,t){let n=await G(e,t);if(typeof n==`object`){let{sourceJSON:e,className:t}=n,r={sourceJSON:e};return n.id!=null&&(r.layerId=n.id),{className:t||`FeatureLayer`,properties:r}}return{className:`GroupLayer`}}async function S(e,n){let r=await G(e,n,async()=>{try{if(!e.url)return[];let{serverUrl:r}=await t(e.url,{sceneLayerItem:e});return(await n.fetchServiceMetadata(r))?.tables??[]}catch{return[]}});if(typeof r==`object`){let t={},i;if(r.id==null?i=e.url:(t.layerId=r.id,i=`${e.url}/layers/${r.id}`),e.typeKeywords?.length){for(let t of Object.keys(a))if(e.typeKeywords.includes(t))return{className:a[t]}}let o=await n.fetchServiceMetadata(i,{customParameters:await n.fetchCustomParameters(e,e=>l(e)?.customParameters)});return{className:a[o?.layerType]||`SceneLayer`,properties:t}}return r===!1&&(await n.fetchServiceMetadata(e.url))?.layerType===`Voxel`?{className:`VoxelLayer`}:{className:`GroupLayer`}}async function C(e){await e.load();let t=h(e,`Map Notes`),n=h(e,`Markup`);if(t||n)return{className:has(`sketch-layer-enabled`)?`SketchLayer`:`MapNotesLayer`};if(h(e,`Route Layer`))return{className:`RouteLayer`};let r=await e.fetchData();return u(r)===1?{className:`FeatureLayer`}:{className:`GroupLayer`}}async function w(e,t){await e.load();let n=e.typeKeywords?.map(e=>e.toLowerCase())??[];if(n.includes(`elevation 3d layer`))return{className:`ElevationLayer`};if(n.includes(`tiled imagery`))return{className:`ImageryTileLayer`};let r=(await t.fetchItemData(e))?.layerType;if(r===`ArcGISTiledImageServiceLayer`)return{className:`ImageryTileLayer`};if(r===`ArcGISImageServiceLayer`)return{className:`ImageryLayer`};let i=await t.fetchServiceMetadata(e.url,{customParameters:await t.fetchCustomParameters(e)}),a=i.cacheType?.toLowerCase(),o=i.capabilities?.toLowerCase().includes(`tilesonly`),s=i.tileInfo?.format?.toLowerCase()??``,c=a==null&&[`jpg`,`jpeg`,`png`,`png8`,`png24`,`png32`,`mixed`].includes(s);return a===`map`||c||o?{className:`ImageryTileLayer`}:{className:`ImageryLayer`}}function T(){return{className:`StreamLayer`}}async function E(e,t){return typeof await G(e,t)==`object`?{className:`VideoLayer`}:{className:`GroupLayer`}}function D(){return{className:`VectorTileLayer`}}function O(){return{className:`GeoJSONLayer`}}function k(){return{className:`IntegratedMesh3DTilesLayer`}}function A(){return{className:`GaussianSplatLayer`}}function j(){return{className:`UnsupportedLayer`}}function M(){return{className:`CSVLayer`}}function N(){return{className:`GeospatialPDFLayer`}}function P(){return{className:`KMLLayer`}}function F(){return{className:`KnowledgeGraphLayer`}}function I(){return{className:`WCSLayer`}}function L(){return{className:`WFSLayer`}}function R(){return{className:`WMSLayer`}}function z(){return{className:`WMTSLayer`}}function B(){return{className:`StreamLayer`}}function V(){return{className:`GroupLayer`}}function H(){return{className:`MediaLayer`}}function U(){return{className:`ParquetLayer`}}async function W(e,t){let{tileInfo:n}=await t.fetchServiceMetadata(e.url,{customParameters:await t.fetchCustomParameters(e)});return n}async function G(t,r,i){let{url:a,type:c}=t,h=c===`Feature Service`;if(!a)return{};if(/\/\d+$/.test(a)){if(h){let i=await r.fetchServiceMetadata(a,{customParameters:await r.fetchCustomParameters(t,e=>l(e)?.customParameters)});o(t,s());let{id:c,type:u}=i,d=n(u);if(!d)throw new e(`from-portal-item:unsupported`,`'${a}' has unsupported type: '${u}'`);return{id:c,className:d,sourceJSON:i}}return{}}if(c===`Video Service`)return((await r.fetchServiceMetadata(a)).layers?.length??0)>1?!1:{};await t.load();let g=await r.fetchItemData(t);if(h){let{data:n,preferredHost:i}=await d(g,a,r);if(u(n)===0)throw new e(`from-portal-item:no-data`,`The feature service '${a}' does not have any supported layers or tables`);o(t,i);let s=K(n);if(typeof s==`object`){let e=f(n,s.id);return{id:s.id,className:p(e?.layerType)}}return s}if(c===`Scene Service`&&(g=await m(t,g,r)),u(g)>0)return K(g);let _=await r.fetchServiceMetadata(a);return i&&(_.tables=await i()),K(_)}function K(e){return u(e)===1&&{id:l(e)?.id}}export{g as fromItem,v as selectLayerClassPath};
|
package/rest/print.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{id as e}from"../kernel.js";import t from"../request.js";import{JSONMap as n}from"../core/jsonMap.js";import{createScreenPoint as r,pt2px as i,px2pt as a}from"../core/screenUtils.js";import{dataComponents as o,normalize as s}from"../core/urlUtils.js";import c from"../geometry/Polygon.js";import{collectLabelingFields as l}from"../layers/support/fieldUtils.js";import{getFloorFilterClause as u}from"../layers/support/floorFilterUtils.js";import{getSizeRangeAtScale as d}from"../renderers/visualVariables/support/visualVariableUtils.js";import{asValidOptions as f,findToken as p}from"./utils.js";import{execute as m}from"./geoprocessor/execute.js";import{submitJob as h}from"./geoprocessor/submitJob.js";import{formatJsonMap as g}from"./support/fileFormat.js";import{toJSON as _}from"./support/layoutTemplate.js";import{getVisibleLayerViews as ee,isScreenshotRequired as v,isBingMapsLayer as y,isBlendLayer as te,getCopyright as b,getSelectionSymbol as ne,createPointLayer as x,getContextBoundingBox as re,createPolygonLayer as ie,createPolylineLayer as ae,createMultipointLayer as S}from"./support/printTaskUtils.js";import oe from"./support/PrintTemplate.js";import{toJSON as se}from"./support/reportTemplate.js";import ce from"../symbols/WebStyleSymbol.js";import le from"../views/support/HighlightOptions.js";const C={Feet:`ft`,Kilometers:`km`,Meters:`m`,Miles:`mi`},w=new n({esriFeet:`Feet`,esriKilometers:`Kilometers`,esriMeters:`Meters`,esriMiles:`Miles`}),T=new n({esriExecutionTypeSynchronous:`sync`,esriExecutionTypeAsynchronous:`async`}),E=new Map;async function D(e,t,n){let r=await N(t,await O(e,n));if(await k(e,n)===`sync`){let{results:t}=await m(e,r,void 0,n);return t?.[0]?.value}let i=await h(e,r,void 0,n);await i.waitForJobCompletion({interval:t.updateDelay});let{value:a}=await i.fetchResultData(`Output_File`,null,n);return a}async function O(e,n){let r=F(e),i=E.get(r)??{gpServerUrl:r,legendLayerNameMap:{},legendLayers:[],screenshotLayers:[]};return i.gpMetadata??=(await t(r,f({f:`json`},n))).data,i.cimVersion=i.gpMetadata.cimVersion,E.set(r,i),i}async function k(e,t){return we(await O(e,t))}async function A(e,n){let r=await O(e,n),i=r.gpMetadata.tasks,a=r.gpServerUrl;if(r.taskInfos)return r.taskInfos;let o=(await t(e,f({f:`json`},n))).data;r.taskInfos={ExportWebMap:o};let s=i?.filter(e=>e!==o.name)??[];return await Promise.all(s.map(async e=>{let i=(await t(`${a}/${e}`,f({f:`json`},n))).data,o=i.name.startsWith(`GetLayoutTemplatesInfo`)?`GetLayoutTemplatesInfo`:null;o&&(r.taskInfos[o]??=i)})),r.taskInfos}async function j(e,t,n){return(await A(e,n))[t]??null}async function M(e,t,n){let r=await j(e,t,n);return r?.executionType?T.fromJSON(r.executionType):`sync`}async function N(t,n){n||={is11xService:!1,legendLayerNameMap:{},legendLayers:[]};let r=t.template||new oe;r.showLabels??=!0;let i;r.format===`pdf`&&(i={enablePdfAccessibility:!0});let a=_(r.layout),o=r.exportOptions;if(o){let e=o.dpi;if(i??={},i.dpi=e,a?.toLowerCase()===`map_only`||a===``){let{width:e,height:t}=o;i.outputSize=e!=null&&t!=null?[e,t]:void 0}}let s=r.layoutOptions,c;if(s){let e,t;s.scalebarUnit===`Miles`||s.scalebarUnit===`Kilometers`?(e=`Kilometers`,t=`Miles`):(s.scalebarUnit===`Meters`||s.scalebarUnit===`Feet`)&&(e=`Meters`,t=`Feet`),c={titleText:s.titleText,authorText:s.authorText,copyrightText:s.copyrightText,customTextElements:s.customTextElements,elementOverrides:s.elementOverrides,scaleBarOptions:e||t?{metricUnit:w.toJSON(e)??void 0,metricLabel:e?C[e]:void 0,nonMetricUnit:w.toJSON(t)??void 0,nonMetricLabel:t?C[t]:void 0}:void 0}}let l=await P(t,r,n);if(l.operationalLayers){let e=RegExp(`[\\u4E00-\\u9FFF\\u0E00-\\u0E7F\\u0900-\\u097F\\u3040-\\u309F\\u30A0-\\u30FF\\u31F0-\\u31FF]`),t=/[\u0600-\u06FF]/,n=n=>{let r=n.text,i=n.font,a=i?.family?.toLowerCase();r&&i&&(a===`arial`||a===`arial unicode ms`)&&(i.family=e.test(r)?`Arial Unicode MS`:`Arial`,i.style!==`normal`&&t.test(r)&&(i.family=`Arial Unicode MS`))};for(let e of l.operationalLayers)if(e.featureCollection?.layers)for(let t of e.featureCollection.layers){if(t.layerDefinition?.drawingInfo?.renderer?.symbol){let e=t.layerDefinition.drawingInfo.renderer;e.symbol.type===`esriTS`&&n(e.symbol)}if(t.featureSet?.features)for(let e of t.featureSet.features)e.symbol&&e.symbol.type===`esriTS`&&n(e.symbol)}}let u=null;s?.legendLayers&&(u=s.legendLayers.filter(e=>!n.screenshotLayers.includes(e.layerId)).map(e=>{let t=e.layerId;n.legendLayerNameMap[t]=e.title;let r={id:t};if(e.subLayerIds){r.subLayerIds=e.subLayerIds;let t=e.dynamicLegend;t!=null&&(r.subLayerDynamicLegends=e.subLayerIds.map(()=>t))}return e.dynamicLegend!=null&&(r.dynamicLegend=e.dynamicLegend),r})),t.outSpatialReference&&(l.mapOptions.spatialReference=t.outSpatialReference.toJSON()),t.datumTransformations?.length&&(l.mapOptions.datumTransformations=t.datumTransformations.map(e=>e.toJSON())),Object.assign(l,{exportOptions:i,layoutOptions:c||{}}),Object.assign(l.layoutOptions,{legendOptions:{operationalLayers:u??n.legendLayers.slice()}}),n.legendLayers.length=0,n.screenshotLayers.length=0,E.set(n.gpServerUrl,n);let d={Web_Map_as_JSON:JSON.stringify(l),Format:g.toJSON(r.format),Layout_Template:a,Layout_Item_ID:void 0,Report_Template:se(r.report),Report_Item_ID:void 0};if(r.layoutItem){delete d.Layout_Template;let t=r.layoutItem;await t.load(),t.access!==`public`&&e&&await e.getCredential(n.gpServerUrl),d.Layout_Item_ID=JSON.stringify({id:t.id})}if(r.reportItem){delete d.Report_Template;let t=r.reportItem;await t.load(),t.access!==`public`&&e&&await e.getCredential(n.gpServerUrl),d.Report_Item_ID=JSON.stringify({id:t.id})}return t.extraParameters&&Object.assign(d,t.extraParameters),d}async function P(e,t,n){let r=e.view,i=r.spatialReference,a={operationalLayers:await I(r,t,n)};t.includeTables&&(a.tables=await _e(r));let o=e.extent||n.ssExtent||r.extent;if(i?.isWrappable&&(o=o.clone()._normalize(!0),i=o.spatialReference),a.mapOptions={extent:o&&o.toJSON(),spatialReference:i&&i.toJSON(),showAttribution:t.attributionVisible},n.ssExtent=null,r.background&&(a.background=r.background.toJSON()),r.rotation&&(a.mapOptions.rotation=-r.rotation),t.scalePreserved&&(a.mapOptions.scale=t.outScale||r.scale),r.timeExtent!=null){let e=r.timeExtent.start==null?null:r.timeExtent.start.getTime(),t=r.timeExtent.end==null?null:r.timeExtent.end.getTime();a.mapOptions.time=[e,t]}return t.reportOptions&&(a.reportOptions=t.reportOptions),a}function F(e){let t=e,n=t.lastIndexOf(`/GPServer/`);return n>0&&(t=t.slice(0,n+9)),t}async function I(e,t,n){let r=[],i=0;t.scalePreserved&&(i=t.outScale||e.scale);let a={layerView:null,outScale:i,printTemplate:t,view:e},o=ee(e,i);for(let e of o){let t=e.layer;if(!t.loaded||`layers`in t)continue;let i;a.layerView=e,i=v(e)?await G(t,a,n):y(t)?L(t):t?.type===`csv`?await z(t,a,n):t?.type===`catalog-footprint`?await R(t,a,n):t?.type===`feature`?await V(t,a,n):t?.type===`geojson`?await H(t,a,n):t?.type===`graphics`?await U(t,a,n):t?.type===`imagery`?W(t,n):t?.type===`imagery-tile`?await ue(t,a,n):t?.type===`kml`?await de(t,a,n):t?.type===`map-image`?fe(t,a,n):t?.type===`map-notes`?await pe(a,n):t?.type===`open-street-map`?me():t?.type===`stream`?await he(t,a,n):t?.type===`subtype-group`?await ge(t,n):t?.type===`tile`?ve(t,n):t?.type===`vector-tile`?await ye(t,a,n):t?.type===`web-tile`?be(t):t?.type===`wfs`?await xe(t,a,n):t?.type===`wms`?Se(t,n):t?.type===`wmts`?Ce(t):await G(t,a,n),i&&(Array.isArray(i)?r.push(...i):(i.id=t.id,i.title=n.legendLayerNameMap[t.id]||t.title,i.opacity=e.fullOpacity,i.minScale=t.minScale||0,i.maxScale=t.maxScale||0,te(t)&&t.blendMode&&t.blendMode!==`normal`&&(i.blendMode=t.blendMode),r.push(i)))}if(i)for(let e of r)e.minScale=0,e.maxScale=0;if(e.graphics?.length){let i=await B(null,e.graphics,t,n);i&&r.push(i)}return r}function L(e){return{culture:e.culture,key:e.key,type:`BingMaps${e.style===`aerial`?`Aerial`:e.style===`hybrid`?`Hybrid`:`Road`}`}}async function R(e,{layerView:t,printTemplate:n},r){if(parseFloat(r.cimVersion)<3.1)return B(e,await Z(t),n,r);let i=e.parent,a=(e=>({id:e.id,url:e.url,layerType:e.layerType,customParameters:e.customParameters,dynamicGroupLayer:{visibility:!1},footprintLayer:e.footprintLayer,layerDefinition:e.layerDefinition}))(Q(i,`web-map`));return K(a,i),a}async function z(e,t,n){e.legendEnabled&&n.legendLayers.push({id:e.id});let r=t.layerView,i=t.printTemplate;if(!r.filter&&(!e.portalItem||e.portalItem.access===`public`)){let t=Q(e,`web-map`);return t.type=`CSV`,delete t.popupInfo,delete t.layerType,t.showLabels=i.showLabels&&e.labelsVisible,t}return B(e,await Z(r),i,n)}async function B(e,t,n,r){let i,a=ie(),o=ae(),s=x(),u=S(),d=x();if(d.layerDefinition.name=`textLayer`,delete d.layerDefinition.drawingInfo,e){if(e.declaredClass===`esri.layers.FeatureLayer`||e.declaredClass===`esri.layers.StreamLayer`?a.layerDefinition.name=o.layerDefinition.name=s.layerDefinition.name=u.layerDefinition.name=r.legendLayerNameMap[e.id]||e.arcgisProps?.title||e.title:e.declaredClass===`esri.layers.GraphicsLayer`&&(t=e.graphics.items),e.renderer){let t=e.renderer.toJSON(),n=a.layerDefinition.drawingInfo;n&&(n.renderer=t);let r=o.layerDefinition.drawingInfo;r&&(r.renderer=t);let i=s.layerDefinition.drawingInfo;i&&(i.renderer=t);let c=u.layerDefinition.drawingInfo;c&&(c.renderer=t)}if(n.showLabels&&e.labelsVisible&&typeof e.write==`function`){let t=Q(e).layerDefinition?.drawingInfo?.labelingInfo;if(t){i=!0;let e=a.layerDefinition.drawingInfo;e&&(e.labelingInfo=t);let n=o.layerDefinition.drawingInfo;n&&(n.labelingInfo=t);let r=s.layerDefinition.drawingInfo;r&&(r.labelingInfo=t);let c=u.layerDefinition.drawingInfo;c&&(c.labelingInfo=t)}}}!e?.renderer&&!i&&(delete a.layerDefinition.drawingInfo,delete o.layerDefinition.drawingInfo,delete s.layerDefinition.drawingInfo,delete u.layerDefinition.drawingInfo);let f,p=e?.fieldsIndex,m=e?.renderer;if(p){let t=new Set;i&&await l(t,e),m&&typeof m.collectRequiredFields==`function`&&await m.collectRequiredFields(t,p),f=Array.from(t);let n=p.fields.map(e=>e.toJSON());a.layerDefinition.fields=n,o.layerDefinition.fields=n,s.layerDefinition.fields=n,u.layerDefinition.fields=n}let h=t?.length,g;for(let e=0;e<h;e++){let i=t[e]||t.at(e);if(i.visible!==!1&&i.geometry){if(g=i.toJSON(),g.hasOwnProperty(`popupTemplate`)&&delete g.popupTemplate,g.geometry?.z&&delete g.geometry.z,g.symbol&&(g.symbol.angle||delete g.symbol.angle,$(g.symbol)?g.symbol=await q(g.symbol,r):g.symbol.text&&delete g.attributes),(!n||!n.forceFeatureAttributes)&&f?.length){let e={};for(let t of f)g.attributes?.hasOwnProperty(t)&&(e[t]=g.attributes[t]);g.attributes=e}i.geometry.type===`polygon`?a.featureSet.features.push(g):i.geometry.type===`polyline`?o.featureSet.features.push(g):i.geometry.type===`point`?g.symbol?.text?d.featureSet.features.push(g):s.featureSet.features.push(g):i.geometry.type===`multipoint`?u.featureSet.features.push(g):i.geometry.type===`extent`&&(g.geometry=c.fromExtent(i.geometry).toJSON(),a.featureSet.features.push(g))}}let _=[a,o,u,s,d].filter(e=>e.featureSet.features.length>0);for(let e of _){let t=e.featureSet.features.every(e=>e.symbol);if(t&&(!n||!n.forceFeatureAttributes))for(let t of e.featureSet.features)delete t.attributes;t&&delete e.layerDefinition.drawingInfo,e.layerDefinition.drawingInfo?.renderer&&(await X(e.layerDefinition.drawingInfo.renderer),await J(e.layerDefinition.drawingInfo.renderer,r))}return _.length?{featureCollection:{layers:_},showLabels:i}:null}async function V(e,t,n){let r,i=e.renderer,a=parseFloat(n.cimVersion);if(e.featureReduction?.type===`binning`||e.featureReduction?.type===`cluster`&&(a<2.9||e.featureReduction.renderer?.type===`pie-chart`)||i?.type===`pie-chart`&&a<3.1||i?.type===`dot-density`&&a<2.6||e.geometryType===`polygon`&&i?.authoringInfo?.visualVariables?.some(e=>e.theme===`spike`))return G(e,t,n);e.legendEnabled&&n.legendLayers.push({id:e.id});let o=t.layerView,{printTemplate:s,view:c}=t,l=e.source?.type!==`feature-layer`&&e.source?.type!==`ogc-feature`;if(!o.filter&&!l&&i&&(!(`field`in i)||i.field==null||e.getField(i.field))){if(r=(e=>({id:e.id,title:e.title,url:e.url,layerType:e.layerType,customParameters:e.customParameters,layerDefinition:e.layerDefinition,charts:s.includeCharts?e.charts:void 0}))(Q(e)),s.attributionVisible&&(r.credits=b(e)),r.showLabels=s.showLabels&&e.labelsVisible&&!!e.labelingInfo&&e.labelingInfo.length>0,K(r,e),delete r.layerDefinition?.featureReduction?.disablePopup,delete r.layerDefinition?.featureReduction?.popupInfo,o.displayFilterEnabled||delete r.layerDefinition?.displayFilterInfo,r.layerDefinition?.drawingInfo?.renderer&&(delete r.layerDefinition.minScale,delete r.layerDefinition.maxScale,await X(r.layerDefinition.drawingInfo.renderer),await J(r.layerDefinition.drawingInfo.renderer,n),`visualVariables`in i&&i.visualVariables?.[0])){let e=i.visualVariables[0];if(e.type===`size`&&e.maxSize&&typeof e.maxSize!=`number`&&e.minSize&&typeof e.minSize!=`number`){let t=d(e,c.scale);r.layerDefinition.drawingInfo.renderer.visualVariables[0].minSize=t.minSize,r.layerDefinition.drawingInfo.renderer.visualVariables[0].maxSize=t.maxSize}}let t=u(o);if(t&&(r.layerDefinition??={},r.layerDefinition.definitionExpression=r.layerDefinition.definitionExpression?`(${r.layerDefinition.definitionExpression}) AND (${t})`:t),e.gdbVersion&&(r.layerDefinition??={},r.layerDefinition.gdbVersion=e.gdbVersion),o.hasHighlight&&`highlightIds`in o){let t=o;r.selectionObjectIds=t.highlightIds;let n=t.highlightOptions??c.defaultHighlight??new le;r.selectionSymbol=ne(e.geometryType,n)}}else r=await B(e,await Z(o),s,n);return r}async function H(e,t,n){return e.featureReduction?.type===`binning`||e.featureReduction?.type===`cluster`?G(e,t,n):(e.legendEnabled&&n.legendLayers.push({id:e.id}),B(e,await Z(t.layerView),t.printTemplate,n))}async function U(e,{printTemplate:t},n){return B(e,null,t,n)}function W(e,t){e.legendEnabled&&t.legendLayers.push({id:e.id});let n=(e=>({layerType:e.layerType,customParameters:e.customParameters}))(Q(e));return n.bandIds=e.bandIds,n.compressionQuality=e.compressionQuality,n.format=e.format,n.interpolation=e.interpolation,(e.mosaicRule||e.definitionExpression)&&(n.mosaicRule=e.exportImageServiceParameters.mosaicRule.toJSON()),e.rasterFunction&&(n.renderingRule=e.rasterFunction.toJSON()),e.renderer&&(n.layerDefinition??={},n.layerDefinition.drawingInfo??={},n.layerDefinition.drawingInfo.renderer=e.renderer.toJSON()),K(n,e),n}async function ue(e,t,n){if(e.renderer?.type===`flow`||!e.supportsWrite())return G(e,t,n);e.legendEnabled&&n.legendLayers.push({id:e.id});let r=(e=>({bandIds:e.bandIds,customParameters:e.customParameters,interpolation:e.interpolation,layerDefinition:e.layerDefinition}))(Q(e));return r.layerType=`ArcGISImageServiceLayer`,K(r,e),r}async function de(e,t,n){let r=t.printTemplate;if(!e.portalItem||e.portalItem.access===`public`){let t=Q(e,`web-map`);return t.type=`kml`,delete t.layerType,t.url=s(e.url),t}let i=[],a=t.layerView;a.allVisibleMapImages.forEach((t,n)=>{let r={id:`${e.id}_image${n}`,type:`image`,title:e.id,minScale:e.minScale||0,maxScale:e.maxScale||0,opacity:a.fullOpacity,extent:t.extent};t.href.startsWith(`data:image/png;base64,`)?r.imageData=t.href.slice(22):r.url=t.href,i.push(r)});let o=[...a.allVisiblePoints.items,...a.allVisiblePolylines.items,...a.allVisiblePolygons.items],c={id:e.id,...await B(null,o,r,n)};return i.push(c),i}function fe(e,{outScale:t,printTemplate:n,view:r},i){let a,o={id:e.id,subLayerIds:[]},s=[],c=t||r.scale,l=e=>{let t=c===0,n=e.minScale===0||c<=e.minScale,r=e.maxScale===0||c>=e.maxScale;if(e.visible&&(t||n&&r)){if(e.sublayers)e.sublayers.forEach(l);else{let t=e.toExportImageJSON(),n={id:e.id,name:e.title,layerDefinition:{definitionExpression:t.definitionExpression,drawingInfo:t.drawingInfo,orderBy:t.orderBy,source:t.source}};s.unshift(n),o.subLayerIds.push(e.id)}}};return e.sublayers?.forEach(l),s.length&&(s=s.map(({id:e,name:t,layerDefinition:n})=>({id:e,name:t,layerDefinition:n})),a=(e=>({layerType:e.layerType,customParameters:e.customParameters}))(Q(e)),a.layers=s,a.visibleLayers=e.capabilities?.exportMap?.supportsDynamicLayers?void 0:o.subLayerIds,n.attributionVisible&&(a.credits=b(e)),e.gdbVersion&&(a.gdbVersion=e.gdbVersion),K(a,e),e.legendEnabled&&i.legendLayers.push(o)),a}async function pe({layerView:e,printTemplate:t},n){let r=[],i=e.layer;if(i.featureCollections!=null)for(let e of i.featureCollections){let i=await B(e,e.source,t,n);i&&r.push(...i.featureCollection.layers)}else if(i.sublayers!=null)for(let e of i.sublayers){let i=await B(null,e.graphics,t,n);i&&r.push(...i.featureCollection.layers)}return{featureCollection:{layers:r}}}function me(){return{type:`OpenStreetMap`}}async function G(e,{printTemplate:t,view:n},i){let a={type:`image`};i.screenshotLayers.push(e.id);let s={format:`png`,ignoreBackground:!0,ignorePadding:!0,layers:[e]};n.rotation!==0&&(s.rotation=0);let c=i.ssExtent||n.state.extent.clone(),l=96,u=!0,d=!0;if(t.exportOptions){let e=t.exportOptions;e.dpi!=null&&e.dpi>0&&(l=e.dpi),e.width!=null&&e.width>0&&(u=e.width%2==n.width%2),e.height!=null&&e.height>0&&(d=e.height%2==n.height%2)}if(t.layout===`map-only`&&t.scalePreserved&&(!t.outScale||t.outScale===n.scale)&&l===96&&(!u||!d)&&n.state.extent.equals(n.extent)&&(s.area={x:0,y:0,width:n.width,height:n.height},u||--s.area.width,d||--s.area.height,!i.ssExtent)){let e=n.toMap(r(s.area.width,s.area.height));c.ymin=e.y,c.xmax=e.x,i.ssExtent=c}a.extent=c.clone()._normalize(!0).toJSON();let f=await n.takeScreenshot(s);return a.imageData=o(f.dataUrl)?.data,a}async function he(e,{layerView:t,printTemplate:n},r){return e.legendEnabled&&r.legendLayers.push({id:e.id}),B(e,await Z(t),n,r)}async function ge(e,t){if(e.legendEnabled)for(let n of e.sublayers)n.legendEnabled&&t.legendLayers.push({id:n.id});let n=(e=>({customParameters:e.customParameters,effect:e.effect,layerDefinition:e.layerDefinition,layerType:e.layerType,layers:e.layers,url:e.url}))(Q(e));if(K(n,e),Array.isArray(n.layers)){for(let e of n.layers)delete e.popupInfo;n.token&&n.layers.length>0&&(n.layers[n.layers.length-1].token=n.token,delete n.token)}return n}async function _e(e){let t=[],n=[];for(let t of e.map.allTables)t.type===`feature`&&!t.loaded&&n.push(t.load());n.length&&await Promise.allSettled(n);for(let n of e.map.allTables)if(n.type===`feature`&&n.loaded&&n.isTable&&n.source?.type===`feature-layer`){let e=(e=>({id:e.id,title:e.title,customParameters:e.customParameters,layerDefinition:{definitionExpression:e.layerDefinition?.definitionExpression},url:e.url}))(Q(n));K(e,n),t.push(e)}return t.length?t:void 0}function ve(e,t){e.legendEnabled&&t.legendLayers.push({id:e.id});let n=(e=>({layerType:e.layerType,customParameters:e.customParameters}))(Q(e));return K(n,e),n}async function ye(e,t,n){let r=t.layerView;if(e.serviceUrl&&e.styleUrl&&!r.spriteSourceChanged&&!r.styleChanged){let t=p(e.styleUrl,e.apiKey),r=p(e.serviceUrl,e.apiKey);if(!t&&!r||n.cimVersion!==`2.1.0`){let n={type:`VectorTileLayer`};return n.styleUrl=s(e.styleUrl),n.token=t,r!==t&&(n.additionalTokens=[{url:e.serviceUrl,token:r}]),n}}return G(e,t,n)}function be(e){let t={type:`WebTiledLayer`,urlTemplate:e.urlTemplate?.replaceAll("${",`{`),credits:e.copyright};return e.subDomains&&e.subDomains.length>0&&(t.subDomains=e.subDomains),t}async function xe(e,t,n){return parseFloat(n.cimVersion)<3.5?G(e,t,n):(e.legendEnabled&&n.legendLayers.push({id:e.id}),(e=>({layerType:e.layerType,layerDefinition:e.layerDefinition,url:e.url,wfsInfo:e.wfsInfo}))(Q(e,`web-map`)))}function Se(e,t){let n,r=[],i=e=>{e.visible&&(e.sublayers?e.sublayers.forEach(i):e.name&&r.unshift(e.name))};return e.sublayers&&e.sublayers.forEach(i),r.length&&(e.legendEnabled&&t.legendLayers.push({id:e.id,subLayerIds:r}),n={type:`wms`,customLayerParameters:e.customLayerParameters,customParameters:e.customParameters,transparentBackground:e.imageTransparency,visibleLayers:r,url:s(e.url),version:e.version}),n}function Ce(e){let t=e.activeLayer;return{type:`wmts`,customLayerParameters:e.customLayerParameters,customParameters:e.customParameters,format:t.imageFormat,layer:t.id,style:t.styleId,tileMatrixSet:t.tileMatrixSetId,url:s(e.url)}}function K(e,t){t.url&&(e.url=s(e.url||t.url),e.token=p(e.url,t.apiKey))}async function q(e,n){n.canvas||=document.createElement(`canvas`);let r=1024;n.canvas.width=r,n.canvas.height=r;let o=n.canvas.getContext(`2d`),s,c;if(e.path){let t=new Path2D(e.path);t.closePath(),o.fillStyle=Array.isArray(e.color)?`rgba(${e.color[0]},${e.color[1]},${e.color[2]},${e.color[3]/255})`:`rgb(0,0,0)`,o.fill(t);let n=re(o);if(!n)return null;o.clearRect(0,0,r,r);let a=i(e.size)/Math.max(n.width,n.height);o.scale(a,a);let l=r/a,u=l/2-n.width/2-n.x,d=l/2-n.height/2-n.y;if(o.translate(u,d),Array.isArray(e.color)&&o.fill(t),e.outline?.width&&Array.isArray(e.outline.color)){let r=e.outline;o.lineWidth=i(r.width)/a,o.lineJoin=`round`,o.strokeStyle=`rgba(${r.color[0]},${r.color[1]},${r.color[2]},${r.color[3]/255})`,o.stroke(t),n.width+=o.lineWidth,n.height+=o.lineWidth}n.width*=a,n.height*=a;let f=o.getImageData(r/2-n.width/2,r/2-n.height/2,Math.ceil(n.width),Math.ceil(n.height));s=f.width,c=f.height,o.canvas.width=s,o.canvas.height=c,o.putImageData(f,0,0)}else{let n=e.contentType===`image/svg+xml`?`data:image/svg+xml;base64,`+e.imageData:e.url,r=(await t(n,{responseType:`image`})).data;s=i(e.width),c=i(e.height),o.canvas.width=s,o.canvas.height=c,o.drawImage(r,0,0,o.canvas.width,o.canvas.height)}return{type:`esriPMS`,imageData:o.canvas.toDataURL(`image/png`).slice(22),angle:e.angle,contentType:`image/png`,height:a(c),width:a(s),xoffset:e.xoffset,yoffset:e.yoffset}}async function J(e,t){let n=e.type;if(n===`simple`&&$(e.symbol))e.symbol=await q(e.symbol,t)??{type:`esriSMS`,color:[0,0,0,0],size:0,style:`esriSMSSquare`};else if(n===`uniqueValue`){if($(e.defaultSymbol)&&(e.defaultSymbol=await q(e.defaultSymbol,t)),`uniqueValueInfos`in e&&e.uniqueValueInfos)for(let n of e.uniqueValueInfos)$(n.symbol)&&(n.symbol=await q(n.symbol,t));if(`uniqueValueGroups`in e&&e.uniqueValueGroups)for(let n of e.uniqueValueGroups)for(let e of n.classes)$(e.symbol)&&(e.symbol=await q(e.symbol,t))}else if(n===`classBreaks`){$(e.defaultSymbol)&&(e.defaultSymbol=await q(e.defaultSymbol,t));for(let n of e.classBreakInfos)$(n.symbol)&&(n.symbol=await q(n.symbol,t))}}async function Y(e){if(e?.type!==`styleSymbolReference`)return e;try{return(await ce.fromJSON(e).fetchSymbol())?.toJSON()??e}catch{return e}}async function X(e){if(e.type===`simple`&&e.symbol)e.symbol=await Y(e.symbol);else if(e.type===`uniqueValue`){if(e.defaultSymbol=await Y(e.defaultSymbol),`uniqueValueInfos`in e&&e.uniqueValueInfos)for(let t of e.uniqueValueInfos)t.symbol=await Y(t.symbol);if(`uniqueValueGroups`in e&&e.uniqueValueGroups)for(let t of e.uniqueValueGroups)for(let e of t.classes)e.symbol=await Y(e.symbol)}else if(e.type===`classBreaks`){e.defaultSymbol=await Y(e.defaultSymbol);for(let t of e.classBreakInfos)t.symbol=await Y(t.symbol)}}async function Z(e){return e.queryFeatures(e.createQuery()).then(e=>e.features)}function Q(e,t){return e.write({},{ignorePersistenceEnabled:!0,origin:t})??{}}function we(e){return e.gpMetadata?.executionType?T.fromJSON(e.gpMetadata.executionType):`sync`}function $(e){return e&&(e.path||e.contentType===`image/svg+xml`||e.url?.endsWith(`.svg`))}export{D as execute,N as getGpPrintParams,F as getGpServerUrl,k as getMode,O as getPrintCache,M as getTaskExecutionMode,j as getTaskInfo,A as getTaskInfos,E as printCacheMap};
|
|
2
|
+
import{id as e}from"../kernel.js";import t from"../request.js";import{JSONMap as n}from"../core/jsonMap.js";import{createScreenPoint as r,pt2px as i,px2pt as a}from"../core/screenUtils.js";import{dataComponents as o,normalize as s}from"../core/urlUtils.js";import c from"../geometry/Polygon.js";import{collectLabelingFields as l}from"../layers/support/fieldUtils.js";import{getFloorFilterClause as u}from"../layers/support/floorFilterUtils.js";import{getSizeRangeAtScale as d}from"../renderers/visualVariables/support/visualVariableUtils.js";import{asValidOptions as f,findToken as p}from"./utils.js";import{execute as m}from"./geoprocessor/execute.js";import{submitJob as h}from"./geoprocessor/submitJob.js";import{formatJsonMap as g}from"./support/fileFormat.js";import{toJSON as _}from"./support/layoutTemplate.js";import{getVisibleLayerViews as ee,isScreenshotRequired as te,isBingMapsLayer as ne,isBlendLayer as v,getCopyright as y,getSelectionSymbol as b,createPointLayer as x,getContextBoundingBox as S,createPolygonLayer as re,createPolylineLayer as ie,createMultipointLayer as ae}from"./support/printTaskUtils.js";import oe from"./support/PrintTemplate.js";import{toJSON as se}from"./support/reportTemplate.js";import ce from"../symbols/WebStyleSymbol.js";import C from"../views/support/HighlightOptions.js";const w={Feet:`ft`,Kilometers:`km`,Meters:`m`,Miles:`mi`},T=new n({esriFeet:`Feet`,esriKilometers:`Kilometers`,esriMeters:`Meters`,esriMiles:`Miles`}),E=new n({esriExecutionTypeSynchronous:`sync`,esriExecutionTypeAsynchronous:`async`}),D=new Map;async function le(e,t,n){let r=await N(t,await O(e,n));if(await k(e,n)===`sync`){let{results:t}=await m(e,r,void 0,n);return t?.[0]?.value}let i=await h(e,r,void 0,n);await i.waitForJobCompletion({interval:t.updateDelay});let{value:a}=await i.fetchResultData(`Output_File`,null,n);return a}async function O(e,n){let r=F(e),i=D.get(r)??{gpServerUrl:r,legendLayerNameMap:{},legendLayers:[],screenshotLayers:[]};return i.gpMetadata??=(await t(r,f({f:`json`},n))).data,i.cimVersion=i.gpMetadata.cimVersion,D.set(r,i),i}async function k(e,t){return Te(await O(e,t))}async function A(e,n){let r=await O(e,n),i=r.gpMetadata.tasks,a=r.gpServerUrl;if(r.taskInfos)return r.taskInfos;let o=(await t(e,f({f:`json`},n))).data;r.taskInfos={ExportWebMap:o};let s=i?.filter(e=>e!==o.name)??[];return await Promise.all(s.map(async e=>{let i=(await t(`${a}/${e}`,f({f:`json`},n))).data,o=i.name.startsWith(`GetLayoutTemplatesInfo`)?`GetLayoutTemplatesInfo`:null;o&&(r.taskInfos[o]??=i)})),r.taskInfos}async function j(e,t,n){return(await A(e,n))[t]??null}async function M(e,t,n){let r=await j(e,t,n);return r?.executionType?E.fromJSON(r.executionType):`sync`}async function N(t,n){n||={is11xService:!1,legendLayerNameMap:{},legendLayers:[]};let r=t.template||new oe;r.showLabels??=!0;let i;r.format===`pdf`&&(i={enablePdfAccessibility:!0});let a=_(r.layout),o=r.exportOptions;if(o){let e=o.dpi;if(i??={},i.dpi=e,a?.toLowerCase()===`map_only`||a===``){let{width:e,height:t}=o;i.outputSize=e!=null&&t!=null?[e,t]:void 0}}let s=r.layoutOptions,c;if(s){let e,t;s.scalebarUnit===`Miles`||s.scalebarUnit===`Kilometers`?(e=`Kilometers`,t=`Miles`):(s.scalebarUnit===`Meters`||s.scalebarUnit===`Feet`)&&(e=`Meters`,t=`Feet`),c={titleText:s.titleText,authorText:s.authorText,copyrightText:s.copyrightText,customTextElements:s.customTextElements,elementOverrides:s.elementOverrides,scaleBarOptions:e||t?{metricUnit:T.toJSON(e)??void 0,metricLabel:e?w[e]:void 0,nonMetricUnit:T.toJSON(t)??void 0,nonMetricLabel:t?w[t]:void 0}:void 0}}let l=await P(t,r,n);if(l.operationalLayers){let e=RegExp(`[\\u4E00-\\u9FFF\\u0E00-\\u0E7F\\u0900-\\u097F\\u3040-\\u309F\\u30A0-\\u30FF\\u31F0-\\u31FF]`),t=/[\u0600-\u06FF]/,n=n=>{let r=n.text,i=n.font,a=i?.family?.toLowerCase();r&&i&&(a===`arial`||a===`arial unicode ms`)&&(i.family=e.test(r)?`Arial Unicode MS`:`Arial`,i.style!==`normal`&&t.test(r)&&(i.family=`Arial Unicode MS`))};for(let e of l.operationalLayers)if(e.featureCollection?.layers)for(let t of e.featureCollection.layers){if(t.layerDefinition?.drawingInfo?.renderer?.symbol){let e=t.layerDefinition.drawingInfo.renderer;e.symbol.type===`esriTS`&&n(e.symbol)}if(t.featureSet?.features)for(let e of t.featureSet.features)e.symbol&&e.symbol.type===`esriTS`&&n(e.symbol)}}let u=null;s?.legendLayers&&(u=s.legendLayers.filter(e=>!n.screenshotLayers.includes(e.layerId)).map(e=>{let t=e.layerId;n.legendLayerNameMap[t]=e.title;let r={id:t};if(e.subLayerIds){r.subLayerIds=e.subLayerIds;let t=e.dynamicLegend;t!=null&&(r.subLayerDynamicLegends=e.subLayerIds.map(()=>t))}return e.dynamicLegend!=null&&(r.dynamicLegend=e.dynamicLegend),r})),t.outSpatialReference&&(l.mapOptions.spatialReference=t.outSpatialReference.toJSON()),t.datumTransformations?.length&&(l.mapOptions.datumTransformations=t.datumTransformations.map(e=>e.toJSON())),Object.assign(l,{exportOptions:i,layoutOptions:c||{}}),Object.assign(l.layoutOptions,{legendOptions:{operationalLayers:u??n.legendLayers.slice()}}),n.legendLayers.length=0,n.screenshotLayers.length=0,D.set(n.gpServerUrl,n);let d={Web_Map_as_JSON:JSON.stringify(l),Format:g.toJSON(r.format),Layout_Template:a,Layout_Item_ID:void 0,Report_Template:se(r.report),Report_Item_ID:void 0};if(r.layoutItem){delete d.Layout_Template;let t=r.layoutItem;await t.load(),t.access!==`public`&&e&&await e.getCredential(n.gpServerUrl),d.Layout_Item_ID=JSON.stringify({id:t.id})}if(r.reportItem){delete d.Report_Template;let t=r.reportItem;await t.load(),t.access!==`public`&&e&&await e.getCredential(n.gpServerUrl),d.Report_Item_ID=JSON.stringify({id:t.id})}return t.extraParameters&&Object.assign(d,t.extraParameters),d}async function P(e,t,n){let r=e.view,i=r.spatialReference,a={operationalLayers:await I(r,t,n)};t.includeTables&&(a.tables=await ve(r));let o=e.extent||n.ssExtent||r.extent;if(i?.isWrappable&&(o=o.clone()._normalize(!0),i=o.spatialReference),a.mapOptions={extent:o&&o.toJSON(),spatialReference:i&&i.toJSON(),showAttribution:t.attributionVisible},n.ssExtent=null,r.background&&(a.background=r.background.toJSON()),r.rotation&&(a.mapOptions.rotation=-r.rotation),t.scalePreserved&&(a.mapOptions.scale=t.outScale||r.scale),r.timeExtent!=null){let e=r.timeExtent.start==null?null:r.timeExtent.start.getTime(),t=r.timeExtent.end==null?null:r.timeExtent.end.getTime();a.mapOptions.time=[e,t]}return t.reportOptions&&(a.reportOptions=t.reportOptions),a}function F(e){let t=e,n=t.lastIndexOf(`/GPServer/`);return n>0&&(t=t.slice(0,n+9)),t}async function I(e,t,n){let r=[],i=0;t.scalePreserved&&(i=t.outScale||e.scale);let a={layerView:null,outScale:i,printTemplate:t,view:e},o=ee(e,i);for(let e of o){let t=e.layer;if(!t.loaded||`layers`in t)continue;let i;a.layerView=e,i=te(e)?await G(t,a,n):ne(t)?L(t):t?.type===`csv`?await z(t,a,n):t?.type===`catalog-footprint`?await R(t,a,n):t?.type===`feature`?await V(t,a,n):t?.type===`geojson`?await H(t,a,n):t?.type===`graphics`?await U(t,a,n):t?.type===`imagery`?W(t,n):t?.type===`imagery-tile`?await ue(t,a,n):t?.type===`kml`?await de(t,a,n):t?.type===`map-image`?fe(t,a,n):t?.type===`map-notes`?await pe(a,n):t?.type===`open-street-map`?me():t?.type===`sketch`?await he(t,a,n):t?.type===`stream`?await ge(t,a,n):t?.type===`subtype-group`?await _e(t,n):t?.type===`tile`?ye(t,n):t?.type===`vector-tile`?await be(t,a,n):t?.type===`web-tile`?xe(t):t?.type===`wfs`?await Se(t,a,n):t?.type===`wms`?Ce(t,n):t?.type===`wmts`?we(t):await G(t,a,n),i&&(Array.isArray(i)?r.push(...i):(i.id=t.id,i.title=n.legendLayerNameMap[t.id]||t.title,i.opacity=e.fullOpacity,i.minScale=t.minScale||0,i.maxScale=t.maxScale||0,v(t)&&t.blendMode&&t.blendMode!==`normal`&&(i.blendMode=t.blendMode),r.push(i)))}if(i)for(let e of r)e.minScale=0,e.maxScale=0;if(e.graphics?.length){let i=await B(null,e.graphics,t,n);i&&r.push(i)}return r}function L(e){return{culture:e.culture,key:e.key,type:`BingMaps${e.style===`aerial`?`Aerial`:e.style===`hybrid`?`Hybrid`:`Road`}`}}async function R(e,{layerView:t,printTemplate:n},r){if(parseFloat(r.cimVersion)<3.1)return B(e,await Z(t),n,r);let i=e.parent,a=(e=>({id:e.id,url:e.url,layerType:e.layerType,customParameters:e.customParameters,dynamicGroupLayer:{visibility:!1},footprintLayer:e.footprintLayer,layerDefinition:e.layerDefinition}))(Q(i,`web-map`));return K(a,i),a}async function z(e,t,n){e.legendEnabled&&n.legendLayers.push({id:e.id});let r=t.layerView,i=t.printTemplate;if(!r.filter&&(!e.portalItem||e.portalItem.access===`public`)){let t=Q(e,`web-map`);return t.type=`CSV`,delete t.popupInfo,delete t.layerType,t.showLabels=i.showLabels&&e.labelsVisible,t}return B(e,await Z(r),i,n)}async function B(e,t,n,r){let i,a=re(),o=ie(),s=x(),u=ae(),d=x();if(d.layerDefinition.name=`textLayer`,delete d.layerDefinition.drawingInfo,e){if(e.declaredClass===`esri.layers.FeatureLayer`||e.declaredClass===`esri.layers.StreamLayer`?a.layerDefinition.name=o.layerDefinition.name=s.layerDefinition.name=u.layerDefinition.name=r.legendLayerNameMap[e.id]||e.arcgisProps?.title||e.title:e.declaredClass===`esri.layers.GraphicsLayer`&&(t=e.graphics.items),e.renderer){let t=e.renderer.toJSON(),n=a.layerDefinition.drawingInfo;n&&(n.renderer=t);let r=o.layerDefinition.drawingInfo;r&&(r.renderer=t);let i=s.layerDefinition.drawingInfo;i&&(i.renderer=t);let c=u.layerDefinition.drawingInfo;c&&(c.renderer=t)}if(n.showLabels&&e.labelsVisible&&typeof e.write==`function`){let t=Q(e).layerDefinition?.drawingInfo?.labelingInfo;if(t){i=!0;let e=a.layerDefinition.drawingInfo;e&&(e.labelingInfo=t);let n=o.layerDefinition.drawingInfo;n&&(n.labelingInfo=t);let r=s.layerDefinition.drawingInfo;r&&(r.labelingInfo=t);let c=u.layerDefinition.drawingInfo;c&&(c.labelingInfo=t)}}}!e?.renderer&&!i&&(delete a.layerDefinition.drawingInfo,delete o.layerDefinition.drawingInfo,delete s.layerDefinition.drawingInfo,delete u.layerDefinition.drawingInfo);let f,p=e?.fieldsIndex,m=e?.renderer;if(p){let t=new Set;i&&await l(t,e),m&&typeof m.collectRequiredFields==`function`&&await m.collectRequiredFields(t,p),f=Array.from(t);let n=p.fields.map(e=>e.toJSON());a.layerDefinition.fields=n,o.layerDefinition.fields=n,s.layerDefinition.fields=n,u.layerDefinition.fields=n}let h=t?.length,g;for(let e=0;e<h;e++){let i=t[e]||t.at(e);if(i.visible!==!1&&i.geometry){if(g=i.toJSON(),g.hasOwnProperty(`popupTemplate`)&&delete g.popupTemplate,g.geometry?.z&&delete g.geometry.z,g.symbol&&(g.symbol.angle||delete g.symbol.angle,$(g.symbol)?g.symbol=await q(g.symbol,r):g.symbol.text&&delete g.attributes),(!n||!n.forceFeatureAttributes)&&f?.length){let e={};for(let t of f)g.attributes?.hasOwnProperty(t)&&(e[t]=g.attributes[t]);g.attributes=e}i.geometry.type===`polygon`?a.featureSet.features.push(g):i.geometry.type===`polyline`?o.featureSet.features.push(g):i.geometry.type===`point`?g.symbol?.text?d.featureSet.features.push(g):s.featureSet.features.push(g):i.geometry.type===`multipoint`?u.featureSet.features.push(g):i.geometry.type===`extent`&&(g.geometry=c.fromExtent(i.geometry).toJSON(),a.featureSet.features.push(g))}}let _=[a,o,u,s,d].filter(e=>e.featureSet.features.length>0);for(let e of _){let t=e.featureSet.features.every(e=>e.symbol);if(t&&(!n||!n.forceFeatureAttributes))for(let t of e.featureSet.features)delete t.attributes;t&&delete e.layerDefinition.drawingInfo,e.layerDefinition.drawingInfo?.renderer&&(await X(e.layerDefinition.drawingInfo.renderer),await J(e.layerDefinition.drawingInfo.renderer,r))}return _.length?{featureCollection:{layers:_},showLabels:i}:null}async function V(e,t,n){let r,i=e.renderer,a=parseFloat(n.cimVersion);if(e.featureReduction?.type===`binning`||e.featureReduction?.type===`cluster`&&(a<2.9||e.featureReduction.renderer?.type===`pie-chart`)||i?.type===`pie-chart`&&a<3.1||i?.type===`dot-density`&&a<2.6||e.geometryType===`polygon`&&i?.authoringInfo?.visualVariables?.some(e=>e.theme===`spike`))return G(e,t,n);e.legendEnabled&&n.legendLayers.push({id:e.id});let o=t.layerView,{printTemplate:s,view:c}=t,l=e.source?.type!==`feature-layer`&&e.source?.type!==`ogc-feature`;if(!o.filter&&!l&&i&&(!(`field`in i)||i.field==null||e.getField(i.field))){if(r=(e=>({id:e.id,title:e.title,url:e.url,layerType:e.layerType,customParameters:e.customParameters,layerDefinition:e.layerDefinition,charts:s.includeCharts?e.charts:void 0}))(Q(e)),s.attributionVisible&&(r.credits=y(e)),r.showLabels=s.showLabels&&e.labelsVisible&&!!e.labelingInfo&&e.labelingInfo.length>0,K(r,e),delete r.layerDefinition?.featureReduction?.disablePopup,delete r.layerDefinition?.featureReduction?.popupInfo,o.displayFilterEnabled||delete r.layerDefinition?.displayFilterInfo,r.layerDefinition?.drawingInfo?.renderer&&(delete r.layerDefinition.minScale,delete r.layerDefinition.maxScale,await X(r.layerDefinition.drawingInfo.renderer),await J(r.layerDefinition.drawingInfo.renderer,n),`visualVariables`in i&&i.visualVariables?.[0])){let e=i.visualVariables[0];if(e.type===`size`&&e.maxSize&&typeof e.maxSize!=`number`&&e.minSize&&typeof e.minSize!=`number`){let t=d(e,c.scale);r.layerDefinition.drawingInfo.renderer.visualVariables[0].minSize=t.minSize,r.layerDefinition.drawingInfo.renderer.visualVariables[0].maxSize=t.maxSize}}let t=u(o);if(t&&(r.layerDefinition??={},r.layerDefinition.definitionExpression=r.layerDefinition.definitionExpression?`(${r.layerDefinition.definitionExpression}) AND (${t})`:t),e.gdbVersion&&(r.layerDefinition??={},r.layerDefinition.gdbVersion=e.gdbVersion),o.hasHighlight&&`highlightIds`in o){let t=o;r.selectionObjectIds=t.highlightIds;let n=t.highlightOptions??c.defaultHighlight??new C;r.selectionSymbol=b(e.geometryType,n)}}else r=await B(e,await Z(o),s,n);return r}async function H(e,t,n){return e.featureReduction?.type===`binning`||e.featureReduction?.type===`cluster`?G(e,t,n):(e.legendEnabled&&n.legendLayers.push({id:e.id}),B(e,await Z(t.layerView),t.printTemplate,n))}async function U(e,{printTemplate:t},n){return B(e,null,t,n)}function W(e,t){e.legendEnabled&&t.legendLayers.push({id:e.id});let n=(e=>({layerType:e.layerType,customParameters:e.customParameters}))(Q(e));return n.bandIds=e.bandIds,n.compressionQuality=e.compressionQuality,n.format=e.format,n.interpolation=e.interpolation,(e.mosaicRule||e.definitionExpression)&&(n.mosaicRule=e.exportImageServiceParameters.mosaicRule.toJSON()),e.rasterFunction&&(n.renderingRule=e.rasterFunction.toJSON()),e.renderer&&(n.layerDefinition??={},n.layerDefinition.drawingInfo??={},n.layerDefinition.drawingInfo.renderer=e.renderer.toJSON()),K(n,e),n}async function ue(e,t,n){if(e.renderer?.type===`flow`||!e.supportsWrite())return G(e,t,n);e.legendEnabled&&n.legendLayers.push({id:e.id});let r=(e=>({bandIds:e.bandIds,customParameters:e.customParameters,interpolation:e.interpolation,layerDefinition:e.layerDefinition}))(Q(e));return r.layerType=`ArcGISImageServiceLayer`,K(r,e),r}async function de(e,t,n){let r=t.printTemplate;if(!e.portalItem||e.portalItem.access===`public`){let t=Q(e,`web-map`);return t.type=`kml`,delete t.layerType,t.url=s(e.url),t}let i=[],a=t.layerView;a.allVisibleMapImages.forEach((t,n)=>{let r={id:`${e.id}_image${n}`,type:`image`,title:e.id,minScale:e.minScale||0,maxScale:e.maxScale||0,opacity:a.fullOpacity,extent:t.extent};t.href.startsWith(`data:image/png;base64,`)?r.imageData=t.href.slice(22):r.url=t.href,i.push(r)});let o=[...a.allVisiblePoints.items,...a.allVisiblePolylines.items,...a.allVisiblePolygons.items],c={id:e.id,...await B(null,o,r,n)};return i.push(c),i}function fe(e,{outScale:t,printTemplate:n,view:r},i){let a,o={id:e.id,subLayerIds:[]},s=[],c=t||r.scale,l=e=>{let t=c===0,n=e.minScale===0||c<=e.minScale,r=e.maxScale===0||c>=e.maxScale;if(e.visible&&(t||n&&r)){if(e.sublayers)e.sublayers.forEach(l);else{let t=e.toExportImageJSON(),n={id:e.id,name:e.title,layerDefinition:{definitionExpression:t.definitionExpression,drawingInfo:t.drawingInfo,orderBy:t.orderBy,source:t.source}};s.unshift(n),o.subLayerIds.push(e.id)}}};return e.sublayers?.forEach(l),s.length&&(s=s.map(({id:e,name:t,layerDefinition:n})=>({id:e,name:t,layerDefinition:n})),a=(e=>({layerType:e.layerType,customParameters:e.customParameters}))(Q(e)),a.layers=s,a.visibleLayers=e.capabilities?.exportMap?.supportsDynamicLayers?void 0:o.subLayerIds,n.attributionVisible&&(a.credits=y(e)),e.gdbVersion&&(a.gdbVersion=e.gdbVersion),K(a,e),e.legendEnabled&&i.legendLayers.push(o)),a}async function pe({layerView:e,printTemplate:t},n){let r=[],i=e.layer;if(i.featureCollections!=null)for(let e of i.featureCollections){let i=await B(e,e.source,t,n);i&&r.push(...i.featureCollection.layers)}else if(i.sublayers!=null)for(let e of i.sublayers){let i=await B(null,e.graphics,t,n);i&&r.push(...i.featureCollection.layers)}return{featureCollection:{layers:r}}}function me(){return{type:`OpenStreetMap`}}async function he(e,{printTemplate:t},n){let r=[];if(e.featureCollections!=null)for(let i of e.featureCollections){let e=await B(i,i.source,t,n);e&&r.push(...e.featureCollection.layers)}else{let i=await B(null,e.graphics,t,n);i&&r.push(...i.featureCollection.layers)}return{featureCollection:{layers:r}}}async function G(e,{printTemplate:t,view:n},i){let a={type:`image`};i.screenshotLayers.push(e.id);let s={format:`png`,ignoreBackground:!0,ignorePadding:!0,layers:[e]};n.rotation!==0&&(s.rotation=0);let c=i.ssExtent||n.state.extent.clone(),l=96,u=!0,d=!0;if(t.exportOptions){let e=t.exportOptions;e.dpi!=null&&e.dpi>0&&(l=e.dpi),e.width!=null&&e.width>0&&(u=e.width%2==n.width%2),e.height!=null&&e.height>0&&(d=e.height%2==n.height%2)}if(t.layout===`map-only`&&t.scalePreserved&&(!t.outScale||t.outScale===n.scale)&&l===96&&(!u||!d)&&n.state.extent.equals(n.extent)&&(s.area={x:0,y:0,width:n.width,height:n.height},u||--s.area.width,d||--s.area.height,!i.ssExtent)){let e=n.toMap(r(s.area.width,s.area.height));c.ymin=e.y,c.xmax=e.x,i.ssExtent=c}a.extent=c.clone()._normalize(!0).toJSON();let f=await n.takeScreenshot(s);return a.imageData=o(f.dataUrl)?.data,a}async function ge(e,{layerView:t,printTemplate:n},r){return e.legendEnabled&&r.legendLayers.push({id:e.id}),B(e,await Z(t),n,r)}async function _e(e,t){if(e.legendEnabled)for(let n of e.sublayers)n.legendEnabled&&t.legendLayers.push({id:n.id});let n=(e=>({customParameters:e.customParameters,effect:e.effect,layerDefinition:e.layerDefinition,layerType:e.layerType,layers:e.layers,url:e.url}))(Q(e));if(K(n,e),Array.isArray(n.layers)){for(let e of n.layers)delete e.popupInfo;n.token&&n.layers.length>0&&(n.layers[n.layers.length-1].token=n.token,delete n.token)}return n}async function ve(e){let t=[],n=[];for(let t of e.map.allTables)t.type===`feature`&&!t.loaded&&n.push(t.load());n.length&&await Promise.allSettled(n);for(let n of e.map.allTables)if(n.type===`feature`&&n.loaded&&n.isTable&&n.source?.type===`feature-layer`){let e=(e=>({id:e.id,title:e.title,customParameters:e.customParameters,layerDefinition:{definitionExpression:e.layerDefinition?.definitionExpression},url:e.url}))(Q(n));K(e,n),t.push(e)}return t.length?t:void 0}function ye(e,t){e.legendEnabled&&t.legendLayers.push({id:e.id});let n=(e=>({layerType:e.layerType,customParameters:e.customParameters}))(Q(e));return K(n,e),n}async function be(e,t,n){let r=t.layerView;if(e.serviceUrl&&e.styleUrl&&!r.spriteSourceChanged&&!r.styleChanged){let t=p(e.styleUrl,e.apiKey),r=p(e.serviceUrl,e.apiKey);if(!t&&!r||n.cimVersion!==`2.1.0`){let n={type:`VectorTileLayer`};return n.styleUrl=s(e.styleUrl),n.token=t,r!==t&&(n.additionalTokens=[{url:e.serviceUrl,token:r}]),n}}return G(e,t,n)}function xe(e){let t={type:`WebTiledLayer`,urlTemplate:e.urlTemplate?.replaceAll("${",`{`),credits:e.copyright};return e.subDomains&&e.subDomains.length>0&&(t.subDomains=e.subDomains),t}async function Se(e,t,n){return parseFloat(n.cimVersion)<3.5?G(e,t,n):(e.legendEnabled&&n.legendLayers.push({id:e.id}),(e=>({layerType:e.layerType,layerDefinition:e.layerDefinition,url:e.url,wfsInfo:e.wfsInfo}))(Q(e,`web-map`)))}function Ce(e,t){let n,r=[],i=e=>{e.visible&&(e.sublayers?e.sublayers.forEach(i):e.name&&r.unshift(e.name))};return e.sublayers&&e.sublayers.forEach(i),r.length&&(e.legendEnabled&&t.legendLayers.push({id:e.id,subLayerIds:r}),n={type:`wms`,customLayerParameters:e.customLayerParameters,customParameters:e.customParameters,transparentBackground:e.imageTransparency,visibleLayers:r,url:s(e.url),version:e.version}),n}function we(e){let t=e.activeLayer;return{type:`wmts`,customLayerParameters:e.customLayerParameters,customParameters:e.customParameters,format:t.imageFormat,layer:t.id,style:t.styleId,tileMatrixSet:t.tileMatrixSetId,url:s(e.url)}}function K(e,t){t.url&&(e.url=s(e.url||t.url),e.token=p(e.url,t.apiKey))}async function q(e,n){n.canvas||=document.createElement(`canvas`);let r=1024;n.canvas.width=r,n.canvas.height=r;let o=n.canvas.getContext(`2d`),s,c;if(e.path){let t=new Path2D(e.path);t.closePath(),o.fillStyle=Array.isArray(e.color)?`rgba(${e.color[0]},${e.color[1]},${e.color[2]},${e.color[3]/255})`:`rgb(0,0,0)`,o.fill(t);let n=S(o);if(!n)return null;o.clearRect(0,0,r,r);let a=i(e.size)/Math.max(n.width,n.height);o.scale(a,a);let l=r/a,u=l/2-n.width/2-n.x,d=l/2-n.height/2-n.y;if(o.translate(u,d),Array.isArray(e.color)&&o.fill(t),e.outline?.width&&Array.isArray(e.outline.color)){let r=e.outline;o.lineWidth=i(r.width)/a,o.lineJoin=`round`,o.strokeStyle=`rgba(${r.color[0]},${r.color[1]},${r.color[2]},${r.color[3]/255})`,o.stroke(t),n.width+=o.lineWidth,n.height+=o.lineWidth}n.width*=a,n.height*=a;let f=o.getImageData(r/2-n.width/2,r/2-n.height/2,Math.ceil(n.width),Math.ceil(n.height));s=f.width,c=f.height,o.canvas.width=s,o.canvas.height=c,o.putImageData(f,0,0)}else{let n=e.contentType===`image/svg+xml`?`data:image/svg+xml;base64,`+e.imageData:e.url,r=(await t(n,{responseType:`image`})).data;s=i(e.width),c=i(e.height),o.canvas.width=s,o.canvas.height=c,o.drawImage(r,0,0,o.canvas.width,o.canvas.height)}return{type:`esriPMS`,imageData:o.canvas.toDataURL(`image/png`).slice(22),angle:e.angle,contentType:`image/png`,height:a(c),width:a(s),xoffset:e.xoffset,yoffset:e.yoffset}}async function J(e,t){let n=e.type;if(n===`simple`&&$(e.symbol))e.symbol=await q(e.symbol,t)??{type:`esriSMS`,color:[0,0,0,0],size:0,style:`esriSMSSquare`};else if(n===`uniqueValue`){if($(e.defaultSymbol)&&(e.defaultSymbol=await q(e.defaultSymbol,t)),`uniqueValueInfos`in e&&e.uniqueValueInfos)for(let n of e.uniqueValueInfos)$(n.symbol)&&(n.symbol=await q(n.symbol,t));if(`uniqueValueGroups`in e&&e.uniqueValueGroups)for(let n of e.uniqueValueGroups)for(let e of n.classes)$(e.symbol)&&(e.symbol=await q(e.symbol,t))}else if(n===`classBreaks`){$(e.defaultSymbol)&&(e.defaultSymbol=await q(e.defaultSymbol,t));for(let n of e.classBreakInfos)$(n.symbol)&&(n.symbol=await q(n.symbol,t))}}async function Y(e){if(e?.type!==`styleSymbolReference`)return e;try{return(await ce.fromJSON(e).fetchSymbol())?.toJSON()??e}catch{return e}}async function X(e){if(e.type===`simple`&&e.symbol)e.symbol=await Y(e.symbol);else if(e.type===`uniqueValue`){if(e.defaultSymbol=await Y(e.defaultSymbol),`uniqueValueInfos`in e&&e.uniqueValueInfos)for(let t of e.uniqueValueInfos)t.symbol=await Y(t.symbol);if(`uniqueValueGroups`in e&&e.uniqueValueGroups)for(let t of e.uniqueValueGroups)for(let e of t.classes)e.symbol=await Y(e.symbol)}else if(e.type===`classBreaks`){e.defaultSymbol=await Y(e.defaultSymbol);for(let t of e.classBreakInfos)t.symbol=await Y(t.symbol)}}async function Z(e){return e.queryFeatures(e.createQuery()).then(e=>e.features)}function Q(e,t){return e.write({},{ignorePersistenceEnabled:!0,origin:t})??{}}function Te(e){return e.gpMetadata?.executionType?E.fromJSON(e.gpMetadata.executionType):`sync`}function $(e){return e&&(e.path||e.contentType===`image/svg+xml`||e.url?.endsWith(`.svg`))}export{le as execute,N as getGpPrintParams,F as getGpServerUrl,k as getMode,O as getPrintCache,M as getTaskExecutionMode,j as getTaskInfo,A as getTaskInfos,D as printCacheMap};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import e from"../../Color.js";import t
|
|
2
|
+
import e from"../../Color.js";import{isInEffectiveScaleRange as t}from"../../geometry/support/scaleUtils.js";import n from"../../symbols/SimpleFillSymbol.js";import r from"../../symbols/SimpleLineSymbol.js";import i from"../../symbols/SimpleMarkerSymbol.js";function a(){return{layerDefinition:{name:`multipointLayer`,geometryType:`esriGeometryMultipoint`,drawingInfo:{renderer:null}},featureSet:{geometryType:`esriGeometryMultipoint`,features:[]}}}function o(){return{layerDefinition:{name:`polygonLayer`,geometryType:`esriGeometryPolygon`,drawingInfo:{renderer:null}},featureSet:{geometryType:`esriGeometryPolygon`,features:[]}}}function s(){return{layerDefinition:{name:`pointLayer`,geometryType:`esriGeometryPoint`,drawingInfo:{renderer:null}},featureSet:{geometryType:`esriGeometryPoint`,features:[]}}}function c(){return{layerDefinition:{name:`polylineLayer`,geometryType:`esriGeometryPolyline`,drawingInfo:{renderer:null}},featureSet:{geometryType:`esriGeometryPolyline`,features:[]}}}function l(e,t=15){let n=e.canvas.width,r=e.canvas.height,i=e.getImageData(0,0,n,r).data,a,o,s,c,l,u;o1:for(o=r;o--;)for(a=n;a--;)if(i[(n*o+a)*4+3]>t){u=o;break o1}if(!u)return null;o2:for(a=n;a--;)for(o=u+1;o--;)if(i[(n*o+a)*4+3]>t){l=a;break o2}o3:for(a=0;a<=l;++a)for(o=u+1;o--;)if(i[(n*o+a)*4+3]>t){s=a;break o3}o4:for(o=0;o<=u;++o)for(a=s;a<=l;++a)if(i[(n*o+a)*4+3]>t){c=o;break o4}return{x:s,y:c,width:l-s,height:u-c}}function u(e){if(!e.attributionVisible)return;let t;if(typeof e.originOf==`function`&&e.originOf(`copyright`)===`user`&&(t=e.copyright),t||!e.hasAttributionData)return t??=e.portalItem?.accessInformation,t??=e.copyright,t??void 0}function d(t,a){let o=a.color?.clone()??new e([0,255,255]),s=a.haloColor?.clone()??o.clone();switch(t){case`envelope`:case`polygon`:return o.a*=a.fillOpacity??.25,new n({color:o,outline:new r({color:s}),style:`solid`});case`polyline`:return new r({color:s});default:return s.a=1,new i({color:s,outline:null})}}function f(e,n){let r=e.allLayerViews.items;if(n===e.scale)return r.filter(e=>!e.suspended);let i=[];for(let e of r){let r=e.parent;(!r||r===e.view||!h(r)&&!g(r)||i.includes(r))&&e.visible&&e.visibleAtCurrentTimeExtent&&t(e.layer.effectiveScaleRange,n)&&i.push(e)}return i}function p(e){return e?.type===`bing-maps`}function m(e){return e&&`blendMode`in e&&`effect`in e}function h(e){return e.layer.type===`catalog`}function g(e){return e.layer.type===`group`}function _(e){return e&&`trackInfo`in e}function v(e){let t=e.layer;if(m(t)){let n=t.blendMode;if((!n||n===`normal`)&&(t.effect||`featureEffect`in e&&e.featureEffect))return!0}return!!(_(t)&&t.trackInfo?.enabled)}export{a as createMultipointLayer,s as createPointLayer,o as createPolygonLayer,c as createPolylineLayer,l as getContextBoundingBox,u as getCopyright,d as getSelectionSymbol,f as getVisibleLayerViews,p as isBingMapsLayer,m as isBlendLayer,v as isScreenshotRequired};
|
|
@@ -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};
|