@arcgis/core 4.24.0-next.20220329 → 4.24.0-next.20220401
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/PopupTemplate.js +1 -1
- package/WebMap.js +1 -1
- package/WebScene.js +1 -1
- package/analysis/LineOfSightAnalysisObserver.js +1 -1
- package/analysis/LineOfSightAnalysisTarget.js +1 -1
- package/arcade/featureset/actions/Adapted.js +1 -1
- package/arcade/featureset/sources/FeatureLayerDynamic.js +1 -1
- package/arcade/featureset/sources/FeatureLayerMemory.js +1 -1
- package/arcade/featureset/sources/FeatureLayerRelated.js +1 -1
- package/arcade/featureset/support/FeatureSet.js +1 -1
- package/arcade/featureset/support/RecentlyUsedCache.js +1 -1
- package/arcade/featureset/support/shared.js +1 -1
- package/arcade/functions/convertdirection.js +1 -1
- package/arcade/lib/character.js +1 -1
- package/arcade/lib/scanner.js +1 -1
- package/arcade/lib/tokenizer.js +1 -1
- package/arcade/request.js +1 -1
- package/arcade/treeAnalysis.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/0bfedb1dbdff8205e468.js +1 -0
- package/assets/esri/core/workers/chunks/{5e472c89a38d6a42b84d.js → 0e29250c24a3a7b1ce13.js} +1 -1
- package/assets/esri/core/workers/chunks/0eb9c9477d36cd212f8b.js +1 -0
- package/assets/esri/core/workers/chunks/10779a256841c37f2429.js +1 -0
- package/assets/esri/core/workers/chunks/10a119889d1ab13402a3.js +1 -0
- package/assets/esri/core/workers/chunks/125b14c2ccd96d7c20c2.js +1 -0
- package/assets/esri/core/workers/chunks/23ec33a30db201e8b2c3.js +1 -0
- package/assets/esri/core/workers/chunks/2530e8ccf6e12787ce76.js +1 -0
- package/assets/esri/core/workers/chunks/2d9e97ba5b50aec4dd01.js +1 -0
- package/assets/esri/core/workers/chunks/365dc146398420f13f82.js +1 -0
- package/assets/esri/core/workers/chunks/3ae2827e8d55d6713d20.js +1 -0
- package/assets/esri/core/workers/chunks/3e3eebaa0844742db2f2.js +1 -0
- package/assets/esri/core/workers/chunks/3fd5b2d6eccd9098d492.js +1 -0
- package/assets/esri/core/workers/chunks/404f1d7bce014c7e6965.js +1 -0
- package/assets/esri/core/workers/chunks/411b7777bb5e943c156f.js +1 -0
- package/assets/esri/core/workers/chunks/{12ca192a5233bb2875d0.js → 4312902ab6e42fbe119b.js} +1 -1
- package/assets/esri/core/workers/chunks/{4ef07f50da39f8607c1c.js → 44e95e87bd9e820aeb53.js} +1 -1
- package/assets/esri/core/workers/chunks/{4d4c5e535d8b9ceb865a.js → 4810edf605838d07e5c5.js} +1 -1
- package/assets/esri/core/workers/chunks/4bce446391176a9d4588.js +1 -0
- package/assets/esri/core/workers/chunks/52a0e387073ea264e194.js +1 -0
- package/assets/esri/core/workers/chunks/560234694f3e53802aff.js +1 -0
- package/assets/esri/core/workers/chunks/5633710daeb3bbb79bcf.js +1 -0
- package/assets/esri/core/workers/chunks/5682039666f874836451.js +1 -0
- package/assets/esri/core/workers/chunks/6f01905936396fe87865.js +1 -0
- package/assets/esri/core/workers/chunks/6f7917da7166e8c6854b.js +1 -0
- package/assets/esri/core/workers/chunks/7388824eac8da01ea03d.js +1 -0
- package/assets/esri/core/workers/chunks/7745efef7d5119d0b087.js +1 -0
- package/assets/esri/core/workers/chunks/794b47764ebb0257ed41.js +1 -0
- package/assets/esri/core/workers/chunks/{da64dedf9270b64f42b2.js → 79bdb26244ec7b4472fe.js} +1 -1
- package/assets/esri/core/workers/chunks/79ec28b3e3c57fe026aa.js +1 -0
- package/assets/esri/core/workers/chunks/81e9d860a044acec74ce.js +1 -0
- package/assets/esri/core/workers/chunks/831dc0187f71e658550c.js +1 -0
- package/assets/esri/core/workers/chunks/86ad6b020c01850d9095.js +1 -0
- package/assets/esri/core/workers/chunks/{fb7397da8d4ec2ae4587.js → 87458fbf395338511662.js} +1 -1
- package/assets/esri/core/workers/chunks/{1a859be598ad96bb4719.js → 8771296b537f366596c4.js} +18 -18
- package/assets/esri/core/workers/chunks/8958cd555f4887526e8b.js +1 -0
- package/assets/esri/core/workers/chunks/{e57b71ba70f088a3a052.js → 90dcd86cdef90099abfa.js} +1 -1
- package/assets/esri/core/workers/chunks/93067e27eea5844edc6c.js +1 -0
- package/assets/esri/core/workers/chunks/{9fbee2d9bf50c4c148c6.js → 9a146c9e9b4bf7fba88f.js} +1 -1
- package/assets/esri/core/workers/chunks/9b9821772b6cbe189fe0.js +1 -0
- package/assets/esri/core/workers/chunks/{6c4ce530b493c6f7c430.js → 9df2f9f7c28b31866be8.js} +1 -1
- package/assets/esri/core/workers/chunks/{d0620ce99b620621d8bc.js → a0552044e123a3c51ddf.js} +1 -1
- package/assets/esri/core/workers/chunks/acc1a4acd57f5657e782.js +1 -0
- package/assets/esri/core/workers/chunks/b055ae7c54796751b64c.js +1 -0
- package/assets/esri/core/workers/chunks/{acc2cfb116fee7f82ae9.js → b26bd8fde2fc65bb67fb.js} +1 -1
- package/assets/esri/core/workers/chunks/{9b45b94c4dbdc8d2c5fd.js → b34ba22c7a5adce8a7a2.js} +1 -1
- package/assets/esri/core/workers/chunks/b75665d0bf417c6ef24a.js +1 -0
- package/assets/esri/core/workers/chunks/bd50ec30688463b821d1.js +1 -0
- package/assets/esri/core/workers/chunks/c28f7ae4756ad1ba94bd.js +1 -0
- package/assets/esri/core/workers/chunks/c4f713959d4115b87c6c.js +1 -0
- package/assets/esri/core/workers/chunks/c58aa209492bd94b7aad.js +1 -0
- package/assets/esri/core/workers/chunks/{9b117097b7be0efd21d4.js → c59b0b58e24e6a60cf3e.js} +1 -1
- package/assets/esri/core/workers/chunks/c7bd5a4d318299388645.js +1 -0
- package/assets/esri/core/workers/chunks/c7cee13a962396b23a5e.js +1 -0
- package/assets/esri/core/workers/chunks/{3bbff5ea1ea0e955c592.js → cd3679fa86129ebabfdf.js} +1 -1
- package/assets/esri/core/workers/chunks/{1a36dc0daffd536ea44d.js → cee7ce362860717713bf.js} +1 -1
- package/assets/esri/core/workers/chunks/cf463d6309f14df2f2fa.js +1 -0
- package/assets/esri/core/workers/chunks/{224c0e64160bdc170051.js → d076627bb7dadea89e89.js} +1 -1
- package/assets/esri/core/workers/chunks/{fff4200bc61b82dd6193.js → d1d1c45243af614f2e74.js} +1 -1
- package/assets/esri/core/workers/chunks/{1e0498dc9836658d9aba.js → d5fd12ea541c1a6b7fce.js} +1 -1
- package/assets/esri/core/workers/chunks/{10322d990cda5aedf2f0.js → d6e32ca237ad9309c76a.js} +1 -1
- package/assets/esri/core/workers/chunks/e06ad3a3d71154fed654.js +1 -0
- package/assets/esri/core/workers/chunks/{7a77d4cd27c30f1a5cae.js → ee3387a43dfbb3df23e1.js} +1 -1
- package/assets/esri/core/workers/chunks/{5d5fa2b1fc48a17eb9ab.js → f4fc165420d449e442b8.js} +1 -1
- package/assets/esri/core/workers/chunks/{3d6d9906a534ddd8fa37.js → f5ee03f3fca7a75192de.js} +1 -1
- package/assets/esri/themes/base/widgets/_Daylight.scss +1 -1
- package/assets/esri/themes/base/widgets/_ElevationProfile.scss +1 -1
- package/assets/esri/themes/base/widgets/_Weather.scss +1 -1
- package/assets/esri/themes/base/widgets/_Widget.scss +12 -0
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/dark-blue/main.css +1 -1
- package/assets/esri/themes/dark-green/main.css +1 -1
- package/assets/esri/themes/dark-purple/main.css +1 -1
- package/assets/esri/themes/dark-red/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/assets/esri/themes/light-blue/main.css +1 -1
- package/assets/esri/themes/light-green/main.css +1 -1
- package/assets/esri/themes/light-purple/main.css +1 -1
- package/assets/esri/themes/light-red/main.css +1 -1
- package/chunks/ComponentShader.glsl.js +25 -25
- package/chunks/HighlightApply.glsl.js +36 -0
- package/chunks/HighlightBlur.glsl.js +26 -0
- package/chunks/HighlightDownsample.glsl.js +12 -0
- package/chunks/ImageMaterial.glsl.js +8 -8
- package/chunks/LineCallout.glsl.js +1 -1
- package/chunks/Pattern.glsl.js +2 -2
- package/chunks/SimpleAtmosphere.glsl.js +7 -7
- package/chunks/Stars.glsl.js +1 -1
- package/chunks/arcade.js +1 -1
- package/chunks/color.js +1 -1
- package/chunks/languageUtils.js +1 -1
- package/chunks/mat3.js +1 -1
- package/copyright.txt +2 -2
- package/core/AsyncUpdate.js +1 -1
- package/core/Evented.js +1 -1
- package/core/PooledArray.js +1 -1
- package/core/accessorSupport/diffUtils.js +1 -1
- package/core/accessorSupport/get.js +1 -1
- package/core/accessorSupport/read.js +1 -1
- package/core/accessorSupport/set.js +1 -1
- package/core/accessorSupport/tracking.js +1 -1
- package/core/accessorSupport/utils.js +1 -1
- package/core/arrayUtils.js +1 -1
- package/core/libs/gl-matrix-2/mat3.js +1 -1
- package/core/libs/gl-matrix-2/math/mat3.js +1 -1
- package/core/number.js +1 -1
- package/core/object.js +1 -1
- package/core/string.js +1 -1
- package/core/unitUtils.js +1 -1
- package/core/watchUtils.js +1 -1
- package/core/workers/RemoteClient.js +1 -1
- package/exports/csv.js +1 -1
- package/geometry/support/heightModelInfoUtils.js +1 -1
- package/geometry/support/meshUtils/exporters/gltf/geometry.js +1 -1
- package/geometry/support/normalizeUtils.js +1 -1
- package/identity/IdentityManagerBase.js +1 -1
- package/interfaces.d.ts +155 -20
- package/layers/ImageryLayer.js +1 -1
- package/layers/MapImageLayer.js +1 -1
- package/layers/RouteLayer.js +1 -1
- package/layers/SceneLayer.js +1 -1
- package/layers/SubtypeGroupLayer.js +1 -1
- package/layers/TileLayer.js +1 -1
- package/layers/VectorTileLayer.js +1 -1
- package/layers/WMSLayer.js +1 -1
- package/layers/WMTSLayer.js +1 -1
- package/layers/WebTileLayer.js +1 -1
- package/layers/graphics/data/AttributesBuilder.js +1 -1
- package/layers/graphics/data/QueryEngine.js +1 -1
- package/layers/graphics/editingSupport.js +1 -1
- package/layers/graphics/sources/connections/GeoEventConnection.js +1 -1
- package/layers/graphics/sources/support/MemorySourceWorker.js +1 -1
- package/layers/graphics/sources/support/inferenceUtils.js +1 -1
- package/layers/mixins/ArcGISCachedService.js +1 -1
- package/layers/mixins/ArcGISImageService.js +1 -1
- package/layers/ogc/ogcFeatureUtils.js +1 -1
- package/layers/support/ExportImageServiceParameters.js +1 -1
- package/layers/support/PixelBlock.js +1 -1
- package/layers/support/RasterJobHandler.js +1 -1
- package/layers/support/SpriteSource.js +1 -1
- package/layers/support/Sublayer.js +1 -1
- package/layers/support/TilemapCache.js +1 -1
- package/layers/support/WMTSSublayer.js +1 -1
- package/layers/support/arcgisLayerUrl.js +1 -1
- package/layers/support/fieldUtils.js +1 -1
- package/layers/support/kmlUtils.js +1 -1
- package/layers/support/layerUtils.js +1 -1
- package/layers/support/rasterDatasets/ImageAuxRaster.js +1 -1
- package/layers/support/rasterDatasets/ImageServerRaster.js +1 -1
- package/layers/support/rasterDatasets/RasterFactory.js +1 -1
- package/layers/support/rasterDatasets/WCSRaster.js +1 -1
- package/layers/support/rasterDatasets/multipartParser.js +1 -1
- package/layers/support/rasterDatasets/wcsCoverageParser.js +1 -1
- package/layers/support/rasterDatasets/xmlUtilities.js +1 -1
- package/layers/support/rasterFormats/RasterCodec.js +1 -1
- package/layers/support/rasterFormats/TiffDecoder.js +1 -1
- package/layers/support/rasterFunctions/pixelUtils.js +1 -1
- package/layers/support/vectorTileLayerLoader.js +1 -1
- package/layers/support/wmsUtils.js +1 -1
- package/layers/support/wmtsUtils.js +1 -1
- package/libs/i3s/I3SModule.js +1 -1
- package/libs/vxl/VxlModule.js +1 -1
- package/package.json +1 -1
- package/portal/Portal.js +1 -1
- package/portal/PortalItem.js +1 -1
- package/portal/schemas/definitions.js +1 -1
- package/portal/support/layersLoader.js +1 -1
- package/portal/support/portalItemUtils.js +1 -1
- package/portal/support/portalLayers.js +1 -1
- package/renderers/support/AuthoringInfoVisualVariable.js +1 -1
- package/renderers/support/DictionaryLoader.js +1 -1
- package/renderers/support/RasterSymbolizer.js +1 -1
- package/renderers/support/numberUtils.js +1 -1
- package/renderers/support/rasterRendererHelper.js +1 -1
- package/renderers/support/utils.js +1 -1
- package/request.js +1 -1
- package/rest/imageService.js +1 -1
- package/rest/operations/find.js +1 -1
- package/rest/query/operations/query.js +1 -1
- package/rest/query/operations/queryRelatedRecords.js +1 -1
- package/rest/query/operations/queryTopFeatures.js +1 -1
- package/rest/support/DirectionLine.js +1 -1
- package/rest/support/DirectionPoint.js +1 -1
- package/rest/support/PointBarrier.js +1 -1
- package/rest/support/PolygonBarrier.js +1 -1
- package/rest/support/PolylineBarrier.js +1 -1
- package/rest/support/RouteInfo.js +1 -1
- package/rest/support/Stop.js +1 -1
- package/smartMapping/labels/clusters.js +1 -1
- package/smartMapping/popup/dotDensity.js +1 -1
- package/smartMapping/popup/support/clusterUtils.js +1 -1
- package/smartMapping/popup/support/utils.js +1 -1
- package/smartMapping/raster/support/utils.js +1 -1
- package/smartMapping/renderers/color.js +1 -1
- package/smartMapping/renderers/location.js +1 -1
- package/smartMapping/renderers/predominance.js +1 -1
- package/smartMapping/renderers/relationship.js +1 -1
- package/smartMapping/renderers/size.js +1 -1
- package/smartMapping/renderers/support/utils.js +1 -1
- package/smartMapping/renderers/type.js +1 -1
- package/smartMapping/renderers/univariateColorSize.js +1 -1
- package/smartMapping/statistics/summaryStatisticsForAge.js +1 -1
- package/smartMapping/statistics/support/ageUtils.js +1 -1
- package/smartMapping/statistics/support/utils.js +1 -1
- package/smartMapping/support/adapters/SceneLayerAdapter.js +1 -1
- package/smartMapping/support/adapters/support/utils.js +1 -1
- package/smartMapping/support/utils.js +1 -1
- package/smartMapping/symbology/support/Theme.js +1 -1
- package/smartMapping/symbology/support/colorRamps.js +1 -1
- package/smartMapping/symbology/support/symbologyUtils.js +1 -1
- package/smartMapping/symbology/support/utils.js +1 -1
- package/statistics/utils.js +1 -1
- package/support/basemapDefinitions.js +1 -1
- package/support/basemapUtils.js +1 -1
- package/support/elevationInfoUtils.js +1 -1
- package/support/popupUtils.js +1 -1
- package/support/revision.js +1 -1
- package/symbols/cim/CIMSymbolRasterizer.js +1 -1
- package/symbols/cim/cimAnalyzer.js +1 -1
- package/symbols/cim/utils.js +1 -1
- package/symbols/support/previewSymbol3D.js +1 -1
- package/symbols/support/renderUtils.js +1 -1
- package/symbols/support/symbolLayerUtils.js +1 -1
- package/views/2d/engine/Bitmap.js +1 -1
- package/views/2d/engine/flow/FlowDisplayObject.js +1 -1
- package/views/2d/engine/imagery/RasterBitmap.js +1 -1
- package/views/2d/engine/imagery/RasterVFDisplayObject.js +1 -1
- package/views/2d/engine/vectorTiles/TextShaping.js +1 -1
- package/views/2d/engine/vectorTiles/TileParser.js +1 -1
- package/views/2d/engine/vectorTiles/buckets/SymbolBucket.js +1 -1
- package/views/2d/engine/vectorTiles/expression/expression.js +1 -1
- package/views/2d/engine/vectorTiles/shaders/VTLMaterial.js +1 -1
- package/views/2d/engine/webgl/Profiler.js +1 -1
- package/views/2d/engine/webgl/Utils.js +1 -1
- package/views/2d/engine/webgl/brushes/WGLGeometryBrush.js +1 -1
- package/views/2d/engine/webgl/definitions.js +1 -1
- package/views/2d/engine/webgl/effects/HittestEffect.js +1 -1
- package/views/2d/engine/webgl/effects/HittestEffectVTL.js +1 -1
- package/views/2d/engine/webgl/mesh/templates/WGLTemplateStore.js +1 -1
- package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
- package/views/2d/engine/webgl/util/Lock.js +1 -1
- package/views/2d/layers/RouteLayerView2D.js +1 -1
- package/views/2d/layers/features/schemaUtils.js +1 -1
- package/views/2d/layers/features/sources/SnapshotFeatureSource.js +1 -1
- package/views/2d/layers/features/support/AttributeStore.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReaderPBF.js +1 -1
- package/views/2d/layers/features/tileRenderers/SymbolTileRenderer.js +1 -1
- package/views/2d/layers/support/webStyleUtils.js +1 -1
- package/views/2d/support/Timeline.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightIntersectionResult.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightRayIntersector.js +1 -1
- package/views/3d/analysis/Slice/SliceController.js +1 -1
- package/views/3d/environment/PanoramicAtmosphere.js +1 -1
- package/views/3d/environment/SceneViewAtmosphere.js +1 -1
- package/views/3d/environment/StarsTechnique.js +1 -1
- package/views/3d/externalRenderers/ExternalRendererStore.js +1 -1
- package/views/3d/glTF/loader.js +1 -1
- package/views/3d/interactive/analysisTools/lineOfSight/LineOfSightTool.js +1 -1
- package/views/3d/interactive/analysisTools/slice/SliceTool.js +1 -1
- package/views/3d/layers/BuildingComponentSublayerView3D.js +1 -1
- package/views/3d/layers/FeatureLikeLayerView3D.js +1 -1
- package/views/3d/layers/I3SMeshView3D.js +1 -1
- package/views/3d/layers/ImageryLayerView3D.js +1 -1
- package/views/3d/layers/LayerView3D.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/VectorTileLayerView3D.js +1 -1
- package/views/3d/layers/graphics/objectResourceUtils.js +1 -1
- package/views/3d/layers/i3s/I3SIndex.js +1 -1
- package/views/3d/layers/i3s/I3SMeshViewFilter.js +1 -1
- package/views/3d/layers/i3s/I3SNodeLoader.js +1 -1
- package/views/3d/layers/i3s/I3SUtil.js +1 -1
- package/views/3d/layers/i3s/IDBMockCache.js +5 -0
- package/views/3d/layers/i3s/PointCloudWorkerUtil.js +1 -1
- package/views/3d/layers/support/PopupSceneLayerView.js +1 -1
- package/views/3d/state/ViewStateManager.js +1 -1
- package/views/3d/state/controllers/RotateController.js +1 -1
- package/views/3d/state/controllers/global/PinchAndPanController.js +1 -1
- package/views/3d/state/controllers/global/ZoomController.js +1 -1
- package/views/3d/state/controllers/global/ZoomStepController.js +1 -1
- package/views/3d/state/controllers/local/PinchAndPanController.js +1 -1
- package/views/3d/state/controllers/local/ZoomController.js +1 -1
- package/views/3d/support/HighlightOptions.js +1 -1
- package/views/3d/support/buffer/InterleavedLayout.js +1 -1
- package/views/3d/support/debugFlags.js +1 -1
- package/views/3d/support/orientedBoundingBox.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/webgl-engine/Stage.js +1 -1
- package/views/3d/webgl-engine/collections/Component/ComponentObjectCollection.js +1 -1
- package/views/3d/webgl-engine/collections/Component/DepthRange.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js +3 -3
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js +5 -5
- package/views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js +1 -1
- package/views/3d/webgl-engine/lib/HighlightHelper.js +1 -1
- package/views/3d/webgl-engine/lib/Object3D.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeShaderParameters.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
- package/views/3d/webgl-engine/lib/lodRendering/InstanceData.js +1 -1
- package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/PathTechnique.js +1 -1
- package/views/3d/webgl-engine/materials/WaterTechnique.js +1 -1
- package/views/3d/webgl-engine/parts/ScreenshotManager.js +1 -1
- package/views/3d/webgl-engine/shaders/HighlightApply.glsl.js +5 -0
- package/views/3d/webgl-engine/shaders/HighlightApplyTechnique.js +5 -0
- package/views/3d/webgl-engine/shaders/HighlightBlur.glsl.js +5 -0
- package/views/3d/webgl-engine/shaders/HighlightBlurTechnique.js +5 -0
- package/views/3d/webgl-engine/shaders/HighlightDownsample.glsl.js +5 -0
- package/views/3d/webgl-engine/shaders/HighlightDownsampleTechnique.js +5 -0
- package/views/3d/webgl-engine/shaders/HighlightOptions.js +4 -0
- package/views/3d/webgl-engine/shaders/HighlightPassParameters.js +5 -0
- package/views/3d/webgl-engine/shaders/ImageMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/ImageMaterialTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/NativeLineTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/PatternTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/sources/edgeRenderer/AdjustProjectedPosition.glsl.js +5 -7
- package/views/3d/webgl-engine/shaders/sources/edgeRenderer/EdgeUtil.glsl.js +14 -14
- package/views/SceneView.js +1 -1
- package/views/draw/support/GraphicMover.js +1 -1
- package/views/input/InputHandler.js +1 -1
- package/views/input/InputManager.js +1 -1
- package/views/layers/ImageryTileLayerView.js +1 -1
- package/views/layers/MapImageLayerView.js +1 -1
- package/views/layers/TileLayerView.js +1 -1
- package/views/layers/support/popupUtils.js +1 -1
- package/views/support/DefaultsFromMap.js +1 -1
- package/views/support/Scheduler.js +1 -1
- package/views/support/screenshotUtils.js +1 -1
- package/views/ui/DefaultUI.js +1 -1
- package/views/webgl/ShaderTranspiler.js +1 -1
- package/webscene/Slide.js +1 -1
- package/webscene/spec-certification/spec.js +1 -1
- package/widgets/AreaMeasurement3D/AreaMeasurement3DViewModel.js +1 -1
- package/widgets/Attachments/support/attachmentUtils.js +1 -1
- package/widgets/Attachments.js +1 -1
- package/widgets/Attribution.js +1 -1
- package/widgets/BasemapLayerList.js +1 -1
- package/widgets/Bookmarks/BookmarksViewModel.js +1 -1
- package/widgets/Bookmarks.js +1 -1
- package/widgets/BuildingExplorer/support/filterUtils.js +1 -1
- package/widgets/CoordinateConversion/CoordinateConversionViewModel.js +1 -1
- package/widgets/CoordinateConversion/support/coordinateConversionUtils.js +1 -1
- package/widgets/CoordinateConversion/support/formatUtils.js +1 -1
- package/widgets/DirectLineMeasurement3D/DirectLineMeasurement3DViewModel.js +1 -1
- package/widgets/Directions/DirectionsViewModel.js +1 -1
- package/widgets/Directions.js +1 -1
- package/widgets/Editor/EditorViewModel.js +1 -1
- package/widgets/Editor/workflowUtils.js +1 -1
- package/widgets/Editor.js +1 -1
- package/widgets/ElevationProfile/ElevationProfileViewModel.js +1 -1
- package/widgets/Feature/FeatureMedia.js +1 -1
- package/widgets/Feature/support/featureUtils.js +1 -1
- package/widgets/FeatureForm/FeatureFormViewModel.js +1 -1
- package/widgets/FeatureForm/InputField.js +1 -1
- package/widgets/FeatureForm.js +1 -1
- package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
- package/widgets/FeatureTable/Grid/Grid.js +1 -1
- package/widgets/FeatureTable/support/FeatureStore.js +1 -1
- package/widgets/FeatureTemplates.js +1 -1
- package/widgets/FloorFilter/FloorFilterViewModel.js +1 -1
- package/widgets/LayerList/ListItemPanel.js +1 -1
- package/widgets/LayerList.js +1 -1
- package/widgets/Legend/LegendViewModel.js +1 -1
- package/widgets/Legend/styles/Card.js +1 -1
- package/widgets/Legend/styles/Classic.js +1 -1
- package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
- package/widgets/Legend/support/colorRampUtils.js +1 -1
- package/widgets/Legend/support/relationshipRampUtils.js +1 -1
- package/widgets/Legend/support/sizeRampUtils.js +1 -1
- package/widgets/Popup/PopupViewModel.js +1 -1
- package/widgets/Popup/actionUtils.js +1 -1
- package/widgets/Print/PrintViewModel.js +1 -1
- package/widgets/Print.js +1 -1
- package/widgets/ScaleBar/ScaleBarViewModel.js +1 -1
- package/widgets/Search/SearchViewModel.js +1 -1
- package/widgets/Search/support/layerSearchUtils.js +1 -1
- package/widgets/Slider.js +1 -1
- package/widgets/Swipe.js +1 -1
- package/widgets/TableList.js +1 -1
- package/widgets/TimeSlider/TimeSliderViewModel.js +1 -1
- package/widgets/TimeSlider.js +1 -1
- package/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel.js +1 -1
- package/widgets/support/DatePicker.js +1 -1
- package/widgets/support/Popover.js +1 -1
- package/widgets/support/SnappingControls.js +1 -1
- package/widgets/support/TimePicker.js +1 -1
- package/widgets/support/timeWidgetUtils.js +1 -1
- package/assets/esri/core/workers/chunks/083a5d10f8e243641cb9.js +0 -1
- package/assets/esri/core/workers/chunks/0872812ce4d0ec8faf8f.js +0 -1
- package/assets/esri/core/workers/chunks/0bc26899780c33637746.js +0 -1
- package/assets/esri/core/workers/chunks/113362697da1b69deaed.js +0 -1
- package/assets/esri/core/workers/chunks/11a2f9708938eac98815.js +0 -1
- package/assets/esri/core/workers/chunks/11a45709b703be84caaf.js +0 -1
- package/assets/esri/core/workers/chunks/1c1294ff1ebbd8f774f7.js +0 -1
- package/assets/esri/core/workers/chunks/1c915cc9a9d5729b6f17.js +0 -1
- package/assets/esri/core/workers/chunks/31786756b3d44540f8c0.js +0 -1
- package/assets/esri/core/workers/chunks/36a6f34fe40785beff5d.js +0 -1
- package/assets/esri/core/workers/chunks/373c16f8b8093d001064.js +0 -1
- package/assets/esri/core/workers/chunks/382a331a592abb61267f.js +0 -1
- package/assets/esri/core/workers/chunks/3bf106fe34e3992032c4.js +0 -1
- package/assets/esri/core/workers/chunks/3dcec610f1c1497d87bc.js +0 -1
- package/assets/esri/core/workers/chunks/46495e726d8739260d44.js +0 -1
- package/assets/esri/core/workers/chunks/4a82a6a473b3d540d0be.js +0 -1
- package/assets/esri/core/workers/chunks/4b6719377a95ac10fa43.js +0 -1
- package/assets/esri/core/workers/chunks/4d2ef57ff3a5cfc1313f.js +0 -1
- package/assets/esri/core/workers/chunks/4fd2b8153d62592210a2.js +0 -1
- package/assets/esri/core/workers/chunks/56e6a1079269e2964b02.js +0 -1
- package/assets/esri/core/workers/chunks/5b4d9786c010d265346c.js +0 -1
- package/assets/esri/core/workers/chunks/604637e1c3937b376a0d.js +0 -1
- package/assets/esri/core/workers/chunks/60f83257e361f87fa6fd.js +0 -1
- package/assets/esri/core/workers/chunks/6d3f80be6fceb2c18b5d.js +0 -1
- package/assets/esri/core/workers/chunks/6f827a32646bab0a8777.js +0 -1
- package/assets/esri/core/workers/chunks/70bd2ab42e3801ef5974.js +0 -1
- package/assets/esri/core/workers/chunks/746222184b361b50d6ba.js +0 -1
- package/assets/esri/core/workers/chunks/7fb72b2d11e8d840f982.js +0 -1
- package/assets/esri/core/workers/chunks/85bb6a1a7704fcdcbec2.js +0 -1
- package/assets/esri/core/workers/chunks/8b4c76cebb100e6c06f8.js +0 -1
- package/assets/esri/core/workers/chunks/9586a6b320edb1922926.js +0 -1
- package/assets/esri/core/workers/chunks/99638697ffda9022ce92.js +0 -1
- package/assets/esri/core/workers/chunks/a9da1cb118ca62a9581d.js +0 -1
- package/assets/esri/core/workers/chunks/aaa41a5013eef713c032.js +0 -1
- package/assets/esri/core/workers/chunks/ac321f939dd488ff6ce4.js +0 -1
- package/assets/esri/core/workers/chunks/add6027a96398ecf69de.js +0 -1
- package/assets/esri/core/workers/chunks/b75206b46ba81606087c.js +0 -1
- package/assets/esri/core/workers/chunks/bf8456828e38a768eba3.js +0 -1
- package/assets/esri/core/workers/chunks/c0720d0d8adcba6738d4.js +0 -1
- package/assets/esri/core/workers/chunks/c5bb712d5cf8c05a4e13.js +0 -1
- package/assets/esri/core/workers/chunks/d343f05a3366f95e0494.js +0 -1
- package/assets/esri/core/workers/chunks/d8b1f00075983d769985.js +0 -1
- package/chunks/Highlight.glsl.js +0 -88
- package/views/3d/webgl-engine/shaders/Highlight.glsl.js +0 -5
- package/views/3d/webgl-engine/shaders/HighlightTechnique.js +0 -5
- package/views/3d/webgl-engine/shaders/HighlightTechniqueConfiguration.js +0 -5
package/statistics/utils.js
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import n from"../rest/support/ClassBreaksDefinition.js";import{createGenerateRendererClassBreaks as e}from"../rest/support/generateRendererUtils.js";const t="equal-interval",l=1,i=5,a=10,r=/\s*(\+|-)?((\d+(\.\d+)?)|(\.\d+))\s*/gi,o=new Set(["esriFieldTypeInteger","esriFieldTypeSmallInteger","esriFieldTypeSingle","esriFieldTypeDouble"]),u=["min","max","avg","stddev","count","sum","variance","nullcount","median"];function s(n){const e=null!=n.normalizationField||null!=n.normalizationType,t=null!=n.minValue||null!=n.maxValue,l=!!n.sqlExpression&&n.supportsSQLExpression;return!e&&!t&&!l}function m(n){const e=n.returnDistinct?[...new Set(n.values)]:n.values,t=e.filter((n=>null!=n)).length,l={count:t};return n.supportsNullCount&&(l.nullcount=e.length-t),n.percentileParams&&(l.median=d(e,n.percentileParams)),l}function c(n){const{values:e,useSampleStdDev:t,supportsNullCount:l}=n;let i=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY,r=null,o=null,u=null,s=null,m=0;const c=null==n.minValue?-1/0:n.minValue,f=null==n.maxValue?1/0:n.maxValue;for(const d of e)Number.isFinite(d)?d>=c&&d<=f&&(r+=d,i=Math.min(i,d),a=Math.max(a,d),m++):"string"==typeof d&&m++;if(m&&null!=r){o=r/m;let n=0;for(const t of e)Number.isFinite(t)&&t>=c&&t<=f&&(n+=(t-o)**2);s=t?m>1?n/(m-1):0:m>0?n/m:0,u=Math.sqrt(s)}else i=null,a=null;const p={avg:o,count:m,max:a,min:i,stddev:u,sum:r,variance:s};return l&&(p.nullcount=e.length-m),n.percentileParams&&(p.median=d(e,n.percentileParams)),p}function d(n,e){const{fieldType:t,value:l,orderBy:i,isDiscrete:a}=e,r=f(t,"desc"===i);if(0===(n=[...n].filter((n=>null!=n)).sort(((n,e)=>r(n,e)))).length)return null;if(l<=0)return n[0];if(l>=1)return n[n.length-1];const o=(n.length-1)*l,u=Math.floor(o),s=u+1,m=o%1,c=n[u],d=n[s];return s>=n.length||a||"string"==typeof c||"string"==typeof d?c:c*(1-m)+d*m}function f(n,e){const t=e?1:-1,l=v(e),i=p(e);if(!(!!n&&["esriFieldTypeDate","esriFieldTypeString","esriFieldTypeGUID","esriFieldTypeGlobalID",...o].includes(n)))return(n,e)=>"number"==typeof n&&"number"==typeof e?l(n,e):"string"==typeof n&&"string"==typeof e?i(n,e):t;if("esriFieldTypeDate"===n)return(n,e)=>{const i=new Date(n).getTime(),a=new Date(e).getTime();return isNaN(i)||isNaN(a)?t:l(i,a)};if(o.has(n))return(n,e)=>l(n,e);if("esriFieldTypeString"===n)return(n,e)=>i(n,e);if("esriFieldTypeGUID"===n||"esriFieldTypeGlobalID"===n){const n=p(e);return(e,t)=>n(b(e),b(t))}return e?(n,e)=>1:(n,e)=>-1}function p(n){return n?(n,e)=>{var t,l;return(n=null==(t=n)?void 0:t.toUpperCase())>(e=null==(l=e)?void 0:l.toUpperCase())?-1:n<e?1:0}:(n,e)=>{var t,l;return(n=null==(t=n)?void 0:t.toUpperCase())<(e=null==(l=e)?void 0:l.toUpperCase())?-1:n>e?1:0}}function v(n){return n?(n,e)=>e-n:(n,e)=>n-e}function b(n){return n.substr(24,12)+n.substr(19,4)+n.substr(16,2)+n.substr(14,2)+n.substr(11,2)+n.substr(9,2)+n.substr(6,2)+n.substr(4,2)+n.substr(2,2)+n.substr(0,2)}function V(n,e){let t;for(t in n)u.
|
|
5
|
+
import n from"../rest/support/ClassBreaksDefinition.js";import{createGenerateRendererClassBreaks as e}from"../rest/support/generateRendererUtils.js";const t="equal-interval",l=1,i=5,a=10,r=/\s*(\+|-)?((\d+(\.\d+)?)|(\.\d+))\s*/gi,o=new Set(["esriFieldTypeInteger","esriFieldTypeSmallInteger","esriFieldTypeSingle","esriFieldTypeDouble"]),u=["min","max","avg","stddev","count","sum","variance","nullcount","median"];function s(n){const e=null!=n.normalizationField||null!=n.normalizationType,t=null!=n.minValue||null!=n.maxValue,l=!!n.sqlExpression&&n.supportsSQLExpression;return!e&&!t&&!l}function m(n){const e=n.returnDistinct?[...new Set(n.values)]:n.values,t=e.filter((n=>null!=n)).length,l={count:t};return n.supportsNullCount&&(l.nullcount=e.length-t),n.percentileParams&&(l.median=d(e,n.percentileParams)),l}function c(n){const{values:e,useSampleStdDev:t,supportsNullCount:l}=n;let i=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY,r=null,o=null,u=null,s=null,m=0;const c=null==n.minValue?-1/0:n.minValue,f=null==n.maxValue?1/0:n.maxValue;for(const d of e)Number.isFinite(d)?d>=c&&d<=f&&(r+=d,i=Math.min(i,d),a=Math.max(a,d),m++):"string"==typeof d&&m++;if(m&&null!=r){o=r/m;let n=0;for(const t of e)Number.isFinite(t)&&t>=c&&t<=f&&(n+=(t-o)**2);s=t?m>1?n/(m-1):0:m>0?n/m:0,u=Math.sqrt(s)}else i=null,a=null;const p={avg:o,count:m,max:a,min:i,stddev:u,sum:r,variance:s};return l&&(p.nullcount=e.length-m),n.percentileParams&&(p.median=d(e,n.percentileParams)),p}function d(n,e){const{fieldType:t,value:l,orderBy:i,isDiscrete:a}=e,r=f(t,"desc"===i);if(0===(n=[...n].filter((n=>null!=n)).sort(((n,e)=>r(n,e)))).length)return null;if(l<=0)return n[0];if(l>=1)return n[n.length-1];const o=(n.length-1)*l,u=Math.floor(o),s=u+1,m=o%1,c=n[u],d=n[s];return s>=n.length||a||"string"==typeof c||"string"==typeof d?c:c*(1-m)+d*m}function f(n,e){const t=e?1:-1,l=v(e),i=p(e);if(!(!!n&&["esriFieldTypeDate","esriFieldTypeString","esriFieldTypeGUID","esriFieldTypeGlobalID",...o].includes(n)))return(n,e)=>"number"==typeof n&&"number"==typeof e?l(n,e):"string"==typeof n&&"string"==typeof e?i(n,e):t;if("esriFieldTypeDate"===n)return(n,e)=>{const i=new Date(n).getTime(),a=new Date(e).getTime();return isNaN(i)||isNaN(a)?t:l(i,a)};if(o.has(n))return(n,e)=>l(n,e);if("esriFieldTypeString"===n)return(n,e)=>i(n,e);if("esriFieldTypeGUID"===n||"esriFieldTypeGlobalID"===n){const n=p(e);return(e,t)=>n(b(e),b(t))}return e?(n,e)=>1:(n,e)=>-1}function p(n){return n?(n,e)=>{var t,l;return(n=null==(t=n)?void 0:t.toUpperCase())>(e=null==(l=e)?void 0:l.toUpperCase())?-1:n<e?1:0}:(n,e)=>{var t,l;return(n=null==(t=n)?void 0:t.toUpperCase())<(e=null==(l=e)?void 0:l.toUpperCase())?-1:n>e?1:0}}function v(n){return n?(n,e)=>e-n:(n,e)=>n-e}function b(n){return n.substr(24,12)+n.substr(19,4)+n.substr(16,2)+n.substr(14,2)+n.substr(11,2)+n.substr(9,2)+n.substr(6,2)+n.substr(4,2)+n.substr(2,2)+n.substr(0,2)}function V(n,e){let t;for(t in n)u.includes(t)&&(Number.isFinite(n[t])||(n[t]=null));return e?(["avg","stddev","variance"].forEach((e=>{null!=n[e]&&(n[e]=Math.ceil(n[e]))})),n):n}function g(n){const e={};for(let t of n)(null==t||"string"==typeof t&&""===t.trim())&&(t=null),null==e[t]?e[t]={count:1,data:t}:e[t].count++;return{count:e}}function h(n,e,t){const l=n.count,i=[];if(t&&e&&"coded-value"===e.type){e.codedValues.forEach((n=>{const e=n.code;l.hasOwnProperty(e)||(l[e]={data:e,count:0})}))}for(const a in l){const n=l[a];i.push({value:n.data,count:n.count,label:n.label})}return{uniqueValueInfos:i}}function T(n,e,t,l){let i=null;switch(e){case"log":0!==n&&(i=Math.log(n)*Math.LOG10E);break;case"percent-of-total":Number.isFinite(l)&&0!==l&&(i=n/l*100);break;case"field":Number.isFinite(t)&&0!==t&&(i=n/t);break;case"natural-log":n>0&&(i=Math.log(n));break;case"square-root":n>0&&(i=n**.5)}return i}function y(n,t){const l=x({field:t.field,normalizationType:t.normalizationType,normalizationField:t.normalizationField,classificationMethod:t.classificationMethod,standardDeviationInterval:t.standardDeviationInterval,breakCount:t.numClasses||i});return n=F(n,t.minValue,t.maxValue),e({definition:l,values:n,normalizationTotal:t.normalizationTotal})}function F(n,e,t){return e=null==e?-1/0:e,t=null==t?1/0:t,n.filter((n=>Number.isFinite(n)&&n>=e&&n<=t))}function x(e){const i=e.field,a=e.classificationMethod||t,r=e.normalizationType,o=e.normalizationField,u=new n;return u.classificationField=i,u.breakCount=e.breakCount,u.classificationMethod=a,u.standardDeviationInterval="standard-deviation"===a?e.standardDeviationInterval||l:void 0,u.normalizationType=r,u.normalizationField="field"===r?o:void 0,u}function D(n,e){let t=n.classBreaks;const l=t.length,i=t[0].minValue,a=t[l-1].maxValue,o="standard-deviation"===e,u=r;return t=t.map((n=>{const e=n.label,t={minValue:n.minValue,maxValue:n.maxValue,label:e};if(o&&e){const n=e.match(u).map((n=>+n.trim()));2===n.length?(t.minStdDev=n[0],t.maxStdDev=n[1],n[0]<0&&n[1]>0&&(t.hasAvg=!0)):1===n.length&&(e.includes("<")?(t.minStdDev=null,t.maxStdDev=n[0]):e.includes(">")&&(t.minStdDev=n[0],t.maxStdDev=null))}return t})),{minValue:i,maxValue:a,classBreakInfos:t,normalizationTotal:n.normalizationTotal}}function z(n,e){const{min:t,max:l,intervals:i}=I(n,e),a=i.map(((n,e)=>({minValue:i[e][0],maxValue:i[e][1],count:0})));for(const r of n)if(null!=r&&r>=t&&r<=l){const n=N(i,r);n>-1&&a[n].count++}return{bins:a,minValue:t,maxValue:l,normalizationTotal:e.normalizationTotal}}function I(n,e){const{field:t,classificationMethod:l,standardDeviationInterval:i,normalizationType:r,normalizationField:o,normalizationTotal:u,minValue:m,maxValue:d}=e,f=e.numBins||a;let p=null,v=null,b=null;if((!l||"equal-interval"===l)&&!r){if(null!=m&&null!=d)p=m,v=d;else{const e=c({values:n,minValue:m,maxValue:d,useSampleStdDev:!r,supportsNullCount:s({normalizationType:r,normalizationField:o,minValue:m,maxValue:d})});p=e.min,v=e.max}b=S(p,v,f)}else{const{classBreaks:e}=y(n,{field:t,normalizationType:r,normalizationField:o,normalizationTotal:u,classificationMethod:l,standardDeviationInterval:i,minValue:m,maxValue:d,numClasses:f});p=e[0].minValue,v=e[e.length-1].maxValue,b=e.map((n=>[n.minValue,n.maxValue]))}return{min:p,max:v,intervals:b}}function N(n,e){let t=-1;for(let l=n.length-1;l>=0;l--){if(e>=n[l][0]){t=l;break}}return t}function S(n,e,t){const l=(e-n)/t,i=[];let a,r=n;for(let o=1;o<=t;o++)a=r+l,a=Number(a.toFixed(16)),i.push([r,o===t?e:a]),r=a;return i}export{y as calculateClassBreaks,z as calculateHistogram,d as calculatePercentile,c as calculateStatistics,m as calculateStringStatistics,g as calculateUniqueValuesCount,x as createClassBreaksDefinition,h as createUVResult,f as getAttributeComparator,S as getEqualIntervalBins,T as getNormalizedValue,s as isNullCountSupported,V as processSummaryStatisticsResult,D as resolveCBResult,u as statisticTypes};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{getAssetUrl as e}from"../assets.js";import{fetchMessageBundle as r}from"../intl/messages.js";async function a(e){if(!e)return;const a=e.indexOf("-vector")>-1?e.slice(0,e.indexOf("-vector")):e,s=await r("esri/t9n/basemaps");return s[e]||s[a]}const s={streets:{id:"streets",classic:!0,deprecated:!0,get thumbnailUrl(){return e("esri/images/basemap/streets.jpg")},baseMapLayers:[{id:"streets-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Street Map",showLegend:!1,visibility:!0,opacity:1}]},satellite:{id:"satellite",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/satellite.jpg")},baseMapLayers:[{id:"satellite-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Imagery",showLegend:!1,visibility:!0,opacity:1}]},hybrid:{id:"hybrid",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/hybrid.jpg")},baseMapLayers:[{id:"hybrid-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Imagery",showLegend:!1,visibility:!0,opacity:1},{id:"hybrid-reference-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Boundaries_and_Places/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Boundaries and Places",isReference:!0,showLegend:!1,visibility:!0,opacity:1}]},terrain:{id:"terrain",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/terrain.jpg")},baseMapLayers:[{id:"terrain-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Terrain Base",showLegend:!1,visibility:!0,opacity:1},{id:"terrain-reference-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Reference_Overlay/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Reference Overlay",isReference:!0,showLegend:!1,visibility:!0,opacity:1}]},topo:{id:"topo",classic:!0,deprecated:!0,get thumbnailUrl(){return e("esri/images/basemap/topo.jpg")},baseMapLayers:[{id:"topo-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Topo Map",showLegend:!1,visibility:!0,opacity:1}]},gray:{id:"gray",classic:!0,deprecated:!0,get thumbnailUrl(){return e("esri/images/basemap/gray.jpg")},baseMapLayers:[{id:"gray-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Light Gray Base",showLegend:!1,visibility:!0,opacity:1},{id:"gray-reference-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Reference/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Light Gray Reference",isReference:!0,showLegend:!1,visibility:!0,opacity:1}]},"dark-gray":{id:"dark-gray",classic:!0,deprecated:!0,get thumbnailUrl(){return e("esri/images/basemap/dark-gray.jpg")},baseMapLayers:[{id:"dark-gray-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Dark Gray Base",showLegend:!1,visibility:!0,opacity:1},{id:"dark-gray-reference-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Reference/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Dark Gray Reference",isReference:!0,showLegend:!1,visibility:!0,opacity:1}]},oceans:{id:"oceans",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/oceans.jpg")},baseMapLayers:[{id:"oceans-base-layer",url:"//services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Ocean Base",showLegend:!1,visibility:!0,opacity:1},{id:"oceans-reference-layer",url:"//services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Reference/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Ocean Reference",isReference:!0,showLegend:!1,visibility:!0,opacity:1}]},"national-geographic":{id:"national-geographic",classic:!0,deprecated:!0,get thumbnailUrl(){return e("esri/images/basemap/national-geographic.jpg")},baseMapLayers:[{id:"national-geographic-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer",title:"NatGeo World Map",showLegend:!1,layerType:"ArcGISTiledMapServiceLayer",visibility:!0,opacity:1}]},osm:{id:"osm",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/osm.jpg")},baseMapLayers:[{id:"osm-base-layer",layerType:"OpenStreetMap",title:"Open Street Map",showLegend:!1,visibility:!0,opacity:1}]},"dark-gray-vector":{id:"dark-gray-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/dark-gray-vector.jpg")},baseMapLayers:[{id:"dark-gray-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/5e9b3685f4c24d8781073dd928ebda50/resources/styles/root.json",layerType:"VectorTileLayer",title:"Dark Gray Base",visibility:!0,opacity:1},{id:"dark-gray-reference-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/747cb7a5329c478cbe6981076cc879c5/resources/styles/root.json",layerType:"VectorTileLayer",title:"Dark Gray Reference",isReference:!0,visibility:!0,opacity:1}]},"gray-vector":{id:"gray-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/gray-vector.jpg")},baseMapLayers:[{id:"gray-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/291da5eab3a0412593b66d384379f89f/resources/styles/root.json",layerType:"VectorTileLayer",title:"Light Gray Base",visibility:!0,opacity:1},{id:"gray-reference-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/1768e8369a214dfab4e2167d5c5f2454/resources/styles/root.json",layerType:"VectorTileLayer",title:"Light Gray Reference",isReference:!0,visibility:!0,opacity:1}]},"streets-vector":{id:"streets-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/streets-vector.jpg")},baseMapLayers:[{id:"streets-vector-base-layer",styleUrl:"//cdn.arcgis.com/sharing/rest/content/items/de26a3cf4cc9451298ea173c4b324736/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Streets",visibility:!0,opacity:1}]},"topo-vector":{id:"topo-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/topo-vector.jpg")},baseMapLayers:[{id:"world-hillshade-layer",url:"//services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Hillshade",showLegend:!1,visibility:!0,opacity:1},{id:"topo-vector-base-layer",styleUrl:"//cdn.arcgis.com/sharing/rest/content/items/7dc6cea0b1764a1f9af2e679f642f0f5/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Topo",visibility:!0,opacity:1}]},"streets-night-vector":{id:"streets-night-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/streets-night.jpg")},baseMapLayers:[{id:"streets-night-vector-base-layer",styleUrl:"//cdn.arcgis.com/sharing/rest/content/items/86f556a2d1fd468181855a35e344567f/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Streets Night",visibility:!0,opacity:1}]},"streets-relief-vector":{id:"streets-relief-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/streets-relief.jpg")},baseMapLayers:[{id:"world-hillshade-layer",url:"//services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Hillshade",showLegend:!1,visibility:!0,opacity:1},{id:"streets-relief-vector-base-layer",styleUrl:"//www.arcgis.com/sharing/rest/content/items/b266e6d17fc345b498345613930fbd76/resources/styles/root.json",title:"World Streets Relief",layerType:"VectorTileLayer",visibility:!0,opacity:1}]},"streets-navigation-vector":{id:"streets-navigation-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/streets-navigation.jpg")},baseMapLayers:[{id:"streets-navigation-vector-base-layer",styleUrl:"//cdn.arcgis.com/sharing/rest/content/items/63c47b7177f946b49902c24129b87252/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Streets Navigation",visibility:!0,opacity:1}]},"arcgis-imagery":{get thumbnailUrl(){return e("esri/images/basemap/hybrid.jpg")},title:"Imagery Hybrid",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Imagery",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/World_Imagery/MapServer"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Imagery:Labels",title:"Hybrid Reference Layer",isReference:!0}]},"arcgis-imagery-standard":{get thumbnailUrl(){return e("esri/images/basemap/satellite.jpg")},title:"Imagery",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Imagery",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/World_Imagery/MapServer"}]},"arcgis-imagery-labels":{title:"Hybrid [Reference]",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Imagery:Labels",title:"Hybrid Reference Layer",isReference:!0}]},"arcgis-light-gray":{get thumbnailUrl(){return e("esri/images/basemap/gray-vector.jpg")},title:"Light Gray Canvas",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:LightGray:Base",title:"Light Gray Canvas Base"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:LightGray:Labels",title:"Light Gray Canvas Labels",isReference:!0}]},"arcgis-dark-gray":{get thumbnailUrl(){return e("esri/images/basemap/dark-gray.jpg")},title:"Dark Gray Canvas",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:DarkGray:Base",title:"Dark Gray Canvas Base"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:DarkGray:Labels",title:"Dark Gray Canvas Labels",isReference:!0}]},"arcgis-navigation":{get thumbnailUrl(){return e("esri/images/basemap/streets-navigation.jpg")},title:"Navigation",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Navigation",title:"World Navigation Map"}]},"arcgis-navigation-night":{title:"Navigation (Dark Mode)",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:NavigationNight",title:"World Navigation Map (Dark Mode)"}]},"arcgis-streets":{get thumbnailUrl(){return e("esri/images/basemap/streets-vector.jpg")},title:"Streets",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Streets",title:"World Street Map"}]},"arcgis-streets-night":{get thumbnailUrl(){return e("esri/images/basemap/streets-night.jpg")},title:"Streets (Night)",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:StreetsNight",title:"World Street Map (Night)"}]},"arcgis-streets-relief":{get thumbnailUrl(){return e("esri/images/basemap/streets-relief.jpg")},title:"Streets (with Relief)",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Hillshade",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:StreetsRelief:Base",title:"World Street Map (with Relief)"}]},"arcgis-topographic":{get thumbnailUrl(){return e("esri/images/basemap/topo.jpg")},title:"Topographic",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Hillshade",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Topographic:Base",title:"World Topographic Map"}]},"arcgis-oceans":{get thumbnailUrl(){return e("esri/images/basemap/oceans.jpg")},title:"Oceans",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Ocean Base",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Oceans:Labels",title:"World Ocean Reference",isReference:!0}]},"osm-standard":{title:"OpenStreetMap",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/OSM:Standard",title:"OpenStreetMap"}]},"osm-standard-relief":{title:"OpenStreetMap (with relief)",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Hillshade",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"},{styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/OSM:StandardRelief:Base",layerType:"VectorTileLayer",title:"OpenStreetMap Relief Base"}]},"osm-streets":{title:"OpenStreetMap (Streets)",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/OSM:Streets",title:"OpenStreetMap (Streets)"}]},"osm-streets-relief":{title:"OpenStreetMap (Streets with relief)",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Hillshade",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"},{styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/OSM:StreetsRelief:Base",layerType:"VectorTileLayer",title:"OpenStreetMap Relief Base"}]},"osm-light-gray":{title:"OpenStreetMap (Light Gray Canvas)",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/OSM:LightGray:Base",title:"OSM (Light Gray Base)"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/OSM:LightGray:Labels",title:"OSM (Light Gray Reference)",isReference:!0}]},"osm-dark-gray":{title:"OpenStreetMap (Dark Gray Canvas)",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/OSM:DarkGray:Base",title:"OSM (Dark Gray Base)"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/OSM:DarkGray:Labels",title:"OSM (Dark Gray Reference)",isReference:!0}]},"arcgis-terrain":{title:"Terrain with Labels",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Hillshade",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Terrain:Base",title:"World Terrain Base"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Terrain:Detail",title:"World Terrain Reference",isReference:!0}]},"arcgis-community":{title:"Community",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Community",title:"Community"}]},"arcgis-charted-territory":{title:"Charted Territory",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Hillshade",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:ChartedTerritory:Base",title:"Charted Territory"}]},"arcgis-colored-pencil":{title:"Colored Pencil",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:ColoredPencil",title:"Colored Pencil"}]},"arcgis-nova":{title:"Nova",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Nova",title:"Nova"}]},"arcgis-modern-antique":{title:"Modern Antique",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Hillshade",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:ModernAntique:Base",title:"Modern Antique"}]},"arcgis-midcentury":{title:"Mid-Century",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Midcentury",title:"Mid-Century"}]},"arcgis-newspaper":{title:"Newspaper",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Newspaper",title:"Newspaper"}]},"arcgis-hillshade-light":{title:"Hillshade",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Hillshade",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"}]},"arcgis-hillshade-dark":{title:"Hillshade (Dark)",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Hillshade (Dark)",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade_Dark/MapServer"}]}};export{s as esriBasemapDefinitions,a as getBasemapTitle};
|
|
5
|
+
import{getAssetUrl as e}from"../assets.js";import{fetchMessageBundle as r}from"../intl/messages.js";async function a(e){if(!e)return;const a=e.includes("-vector")?e.slice(0,e.indexOf("-vector")):e,s=await r("esri/t9n/basemaps");return s[e]||s[a]}const s={streets:{id:"streets",classic:!0,deprecated:!0,get thumbnailUrl(){return e("esri/images/basemap/streets.jpg")},baseMapLayers:[{id:"streets-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Street Map",showLegend:!1,visibility:!0,opacity:1}]},satellite:{id:"satellite",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/satellite.jpg")},baseMapLayers:[{id:"satellite-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Imagery",showLegend:!1,visibility:!0,opacity:1}]},hybrid:{id:"hybrid",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/hybrid.jpg")},baseMapLayers:[{id:"hybrid-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Imagery",showLegend:!1,visibility:!0,opacity:1},{id:"hybrid-reference-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Boundaries_and_Places/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Boundaries and Places",isReference:!0,showLegend:!1,visibility:!0,opacity:1}]},terrain:{id:"terrain",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/terrain.jpg")},baseMapLayers:[{id:"terrain-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Terrain Base",showLegend:!1,visibility:!0,opacity:1},{id:"terrain-reference-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Reference_Overlay/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Reference Overlay",isReference:!0,showLegend:!1,visibility:!0,opacity:1}]},topo:{id:"topo",classic:!0,deprecated:!0,get thumbnailUrl(){return e("esri/images/basemap/topo.jpg")},baseMapLayers:[{id:"topo-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Topo Map",showLegend:!1,visibility:!0,opacity:1}]},gray:{id:"gray",classic:!0,deprecated:!0,get thumbnailUrl(){return e("esri/images/basemap/gray.jpg")},baseMapLayers:[{id:"gray-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Light Gray Base",showLegend:!1,visibility:!0,opacity:1},{id:"gray-reference-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Reference/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Light Gray Reference",isReference:!0,showLegend:!1,visibility:!0,opacity:1}]},"dark-gray":{id:"dark-gray",classic:!0,deprecated:!0,get thumbnailUrl(){return e("esri/images/basemap/dark-gray.jpg")},baseMapLayers:[{id:"dark-gray-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Dark Gray Base",showLegend:!1,visibility:!0,opacity:1},{id:"dark-gray-reference-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Reference/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Dark Gray Reference",isReference:!0,showLegend:!1,visibility:!0,opacity:1}]},oceans:{id:"oceans",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/oceans.jpg")},baseMapLayers:[{id:"oceans-base-layer",url:"//services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Ocean Base",showLegend:!1,visibility:!0,opacity:1},{id:"oceans-reference-layer",url:"//services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Reference/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Ocean Reference",isReference:!0,showLegend:!1,visibility:!0,opacity:1}]},"national-geographic":{id:"national-geographic",classic:!0,deprecated:!0,get thumbnailUrl(){return e("esri/images/basemap/national-geographic.jpg")},baseMapLayers:[{id:"national-geographic-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer",title:"NatGeo World Map",showLegend:!1,layerType:"ArcGISTiledMapServiceLayer",visibility:!0,opacity:1}]},osm:{id:"osm",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/osm.jpg")},baseMapLayers:[{id:"osm-base-layer",layerType:"OpenStreetMap",title:"Open Street Map",showLegend:!1,visibility:!0,opacity:1}]},"dark-gray-vector":{id:"dark-gray-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/dark-gray-vector.jpg")},baseMapLayers:[{id:"dark-gray-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/5e9b3685f4c24d8781073dd928ebda50/resources/styles/root.json",layerType:"VectorTileLayer",title:"Dark Gray Base",visibility:!0,opacity:1},{id:"dark-gray-reference-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/747cb7a5329c478cbe6981076cc879c5/resources/styles/root.json",layerType:"VectorTileLayer",title:"Dark Gray Reference",isReference:!0,visibility:!0,opacity:1}]},"gray-vector":{id:"gray-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/gray-vector.jpg")},baseMapLayers:[{id:"gray-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/291da5eab3a0412593b66d384379f89f/resources/styles/root.json",layerType:"VectorTileLayer",title:"Light Gray Base",visibility:!0,opacity:1},{id:"gray-reference-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/1768e8369a214dfab4e2167d5c5f2454/resources/styles/root.json",layerType:"VectorTileLayer",title:"Light Gray Reference",isReference:!0,visibility:!0,opacity:1}]},"streets-vector":{id:"streets-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/streets-vector.jpg")},baseMapLayers:[{id:"streets-vector-base-layer",styleUrl:"//cdn.arcgis.com/sharing/rest/content/items/de26a3cf4cc9451298ea173c4b324736/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Streets",visibility:!0,opacity:1}]},"topo-vector":{id:"topo-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/topo-vector.jpg")},baseMapLayers:[{id:"world-hillshade-layer",url:"//services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Hillshade",showLegend:!1,visibility:!0,opacity:1},{id:"topo-vector-base-layer",styleUrl:"//cdn.arcgis.com/sharing/rest/content/items/7dc6cea0b1764a1f9af2e679f642f0f5/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Topo",visibility:!0,opacity:1}]},"streets-night-vector":{id:"streets-night-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/streets-night.jpg")},baseMapLayers:[{id:"streets-night-vector-base-layer",styleUrl:"//cdn.arcgis.com/sharing/rest/content/items/86f556a2d1fd468181855a35e344567f/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Streets Night",visibility:!0,opacity:1}]},"streets-relief-vector":{id:"streets-relief-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/streets-relief.jpg")},baseMapLayers:[{id:"world-hillshade-layer",url:"//services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Hillshade",showLegend:!1,visibility:!0,opacity:1},{id:"streets-relief-vector-base-layer",styleUrl:"//www.arcgis.com/sharing/rest/content/items/b266e6d17fc345b498345613930fbd76/resources/styles/root.json",title:"World Streets Relief",layerType:"VectorTileLayer",visibility:!0,opacity:1}]},"streets-navigation-vector":{id:"streets-navigation-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/streets-navigation.jpg")},baseMapLayers:[{id:"streets-navigation-vector-base-layer",styleUrl:"//cdn.arcgis.com/sharing/rest/content/items/63c47b7177f946b49902c24129b87252/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Streets Navigation",visibility:!0,opacity:1}]},"arcgis-imagery":{get thumbnailUrl(){return e("esri/images/basemap/hybrid.jpg")},title:"Imagery Hybrid",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Imagery",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/World_Imagery/MapServer"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Imagery:Labels",title:"Hybrid Reference Layer",isReference:!0}]},"arcgis-imagery-standard":{get thumbnailUrl(){return e("esri/images/basemap/satellite.jpg")},title:"Imagery",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Imagery",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/World_Imagery/MapServer"}]},"arcgis-imagery-labels":{title:"Hybrid [Reference]",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Imagery:Labels",title:"Hybrid Reference Layer",isReference:!0}]},"arcgis-light-gray":{get thumbnailUrl(){return e("esri/images/basemap/gray-vector.jpg")},title:"Light Gray Canvas",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:LightGray:Base",title:"Light Gray Canvas Base"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:LightGray:Labels",title:"Light Gray Canvas Labels",isReference:!0}]},"arcgis-dark-gray":{get thumbnailUrl(){return e("esri/images/basemap/dark-gray.jpg")},title:"Dark Gray Canvas",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:DarkGray:Base",title:"Dark Gray Canvas Base"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:DarkGray:Labels",title:"Dark Gray Canvas Labels",isReference:!0}]},"arcgis-navigation":{get thumbnailUrl(){return e("esri/images/basemap/streets-navigation.jpg")},title:"Navigation",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Navigation",title:"World Navigation Map"}]},"arcgis-navigation-night":{title:"Navigation (Dark Mode)",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:NavigationNight",title:"World Navigation Map (Dark Mode)"}]},"arcgis-streets":{get thumbnailUrl(){return e("esri/images/basemap/streets-vector.jpg")},title:"Streets",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Streets",title:"World Street Map"}]},"arcgis-streets-night":{get thumbnailUrl(){return e("esri/images/basemap/streets-night.jpg")},title:"Streets (Night)",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:StreetsNight",title:"World Street Map (Night)"}]},"arcgis-streets-relief":{get thumbnailUrl(){return e("esri/images/basemap/streets-relief.jpg")},title:"Streets (with Relief)",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Hillshade",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:StreetsRelief:Base",title:"World Street Map (with Relief)"}]},"arcgis-topographic":{get thumbnailUrl(){return e("esri/images/basemap/topo.jpg")},title:"Topographic",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Hillshade",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Topographic:Base",title:"World Topographic Map"}]},"arcgis-oceans":{get thumbnailUrl(){return e("esri/images/basemap/oceans.jpg")},title:"Oceans",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Ocean Base",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Oceans:Labels",title:"World Ocean Reference",isReference:!0}]},"osm-standard":{title:"OpenStreetMap",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/OSM:Standard",title:"OpenStreetMap"}]},"osm-standard-relief":{title:"OpenStreetMap (with relief)",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Hillshade",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"},{styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/OSM:StandardRelief:Base",layerType:"VectorTileLayer",title:"OpenStreetMap Relief Base"}]},"osm-streets":{title:"OpenStreetMap (Streets)",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/OSM:Streets",title:"OpenStreetMap (Streets)"}]},"osm-streets-relief":{title:"OpenStreetMap (Streets with relief)",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Hillshade",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"},{styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/OSM:StreetsRelief:Base",layerType:"VectorTileLayer",title:"OpenStreetMap Relief Base"}]},"osm-light-gray":{title:"OpenStreetMap (Light Gray Canvas)",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/OSM:LightGray:Base",title:"OSM (Light Gray Base)"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/OSM:LightGray:Labels",title:"OSM (Light Gray Reference)",isReference:!0}]},"osm-dark-gray":{title:"OpenStreetMap (Dark Gray Canvas)",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/OSM:DarkGray:Base",title:"OSM (Dark Gray Base)"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/OSM:DarkGray:Labels",title:"OSM (Dark Gray Reference)",isReference:!0}]},"arcgis-terrain":{title:"Terrain with Labels",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Hillshade",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Terrain:Base",title:"World Terrain Base"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Terrain:Detail",title:"World Terrain Reference",isReference:!0}]},"arcgis-community":{title:"Community",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Community",title:"Community"}]},"arcgis-charted-territory":{title:"Charted Territory",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Hillshade",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:ChartedTerritory:Base",title:"Charted Territory"}]},"arcgis-colored-pencil":{title:"Colored Pencil",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:ColoredPencil",title:"Colored Pencil"}]},"arcgis-nova":{title:"Nova",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Nova",title:"Nova"}]},"arcgis-modern-antique":{title:"Modern Antique",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Hillshade",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"},{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:ModernAntique:Base",title:"Modern Antique"}]},"arcgis-midcentury":{title:"Mid-Century",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Midcentury",title:"Mid-Century"}]},"arcgis-newspaper":{title:"Newspaper",baseMapLayers:[{layerType:"VectorTileLayer",styleUrl:"https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ArcGIS:Newspaper",title:"Newspaper"}]},"arcgis-hillshade-light":{title:"Hillshade",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Hillshade",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"}]},"arcgis-hillshade-dark":{title:"Hillshade (Dark)",baseMapLayers:[{layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Hillshade (Dark)",url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade_Dark/MapServer"}]}};export{s as esriBasemapDefinitions,a as getBasemapTitle};
|
package/support/basemapUtils.js
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../Basemap.js";import r from"../config.js";import a from"../core/Collection.js";import n from"../core/Logger.js";import{isSome as t,isNone as l}from"../core/maybe.js";import{normalize as i,Url as s,makeAbsolute as u}from"../core/urlUtils.js";import{ensureType as c}from"../core/accessorSupport/ensureType.js";import{esriBasemapDefinitions as o}from"./basemapDefinitions.js";const f=n.getLogger("esri.support.basemapUtils");function p(){return{}}function y(e){for(const r in e){const a=e[r];!1===(null==a?void 0:a.destroyed)&&a.destroy(),delete e[r]}}function
|
|
5
|
+
import e from"../Basemap.js";import r from"../config.js";import a from"../core/Collection.js";import n from"../core/Logger.js";import{isSome as t,isNone as l}from"../core/maybe.js";import{normalize as i,Url as s,makeAbsolute as u}from"../core/urlUtils.js";import{ensureType as c}from"../core/accessorSupport/ensureType.js";import{esriBasemapDefinitions as o}from"./basemapDefinitions.js";const f=n.getLogger("esri.support.basemapUtils");function p(){return{}}function y(e){for(const r in e){const a=e[r];!1===(null==a?void 0:a.destroyed)&&a.destroy(),delete e[r]}}function d(a,n){var t;let l;if("string"==typeof a){if(!(a in o)){const e=Object.entries(o).filter((([e,a])=>r.apiKey&&!a.classic||!r.apiKey&&a.classic&&!a.deprecated)).map((([e])=>`"${e}"`)).join(", ");return f.warn(`Unable to find basemap definition for: ${a}. Try one of these: ${e}`),null}n&&(l=n[a]),l||(l=e.fromId(a),n&&(n[a]=l))}else l=c(e,a);return null!=(t=l)&&t.destroyed&&(f.warn("The provided basemap is already destroyed",{basemap:l}),l=null),l}function m(r,a=null){const n=d(r);if(!n)return null;const t=new e({id:n.id,title:n.title,baseLayers:n.baseLayers.slice(),referenceLayers:n.referenceLayers.slice()});return a&&(t.baseLayers=v(t.baseLayers,a.baseLayers),t.referenceLayers=v(t.referenceLayers,a.referenceLayers)),t.load().catch((()=>{})),t.portalItem=n.portalItem,t}function b(e){let r=null;const a=T(e),n=!a.baseLayers.length;for(const t in o){const e=M(a,q(o[t]),{mustMatchReferences:n});if("equal"===e){r=t;break}"base-layers-equal"===e&&(r=t)}return r}function L(e,r){if(e===r)return!0;return"equal"===M(T(e),T(r),{mustMatchReferences:!0})}function v(e,r){const n=new a;return e.forEach((e=>{const a=r.find((r=>$(j(e),j(r))))||e;n.includes(a)?n.push(e):n.push(a)})),n}function g(e){return!(null==e||!e.baseLayers.concat(e.referenceLayers).some(S))}function S(e){if(I(e.url))return!0;if("vector-tile"===e.type)for(const r in e.sourceNameToSource){const a=e.sourceNameToSource[r];if(I(null==a?void 0:a.sourceUrl))return!0}return!1}function h(e,r){var a,n,t;if(l(r)||l(e))return{spatialReference:null,updating:!1};if("not-loaded"===r.loadStatus)return r.load(),{spatialReference:null,updating:!0};if(r.spatialReference)return{spatialReference:r.spatialReference,updating:!1};if(0===r.baseLayers.length)return{spatialReference:null,updating:!1};const i=r.baseLayers.getItemAt(0);switch(i.loadStatus){case"not-loaded":i.load();case"loading":return{spatialReference:null,updating:!0};case"failed":return{spatialReference:null,updating:!1}}const s=(("supportedSpatialReferences"in i?i.supportedSpatialReferences:null)||["tileInfo"in i?null==(a=i.tileInfo)?void 0:a.spatialReference:i.spatialReference]).filter(Boolean);return e.spatialReference?{spatialReference:null!=(n=null!=(t=s.find((r=>e.spatialReference.equals(r))))?t:s[0])?n:null,updating:!1}:{spatialReference:s[0],updating:!1}}const R=/^(basemaps|ibasemaps).*-api\.arcgis\.com$/i;function I(e){if(!e)return!1;const r=new s(u(e));return R.test(r.authority)}function T(e){return e?!e.loaded&&e.resourceInfo?q(e.resourceInfo.data):{baseLayers:w(e.baseLayers),referenceLayers:w(e.referenceLayers)}:null}function w(e){return(a.isCollection(e)?e.toArray():e).map(j)}function j(e){var r,a;return{type:e.type,url:A("urlTemplate"in e&&e.urlTemplate||e.url||"styleUrl"in e&&e.styleUrl),minScale:"minScale"in e&&null!=e.minScale?e.minScale:0,maxScale:"maxScale"in e&&null!=e.maxScale?e.maxScale:0,opacity:null!=e.opacity?e.opacity:1,visible:null==e.visible||!!e.visible,sublayers:"map-image"!==e.type&&"wms"!==e.type||!t(e.sublayers)||null==(r=e.sublayers)?void 0:r.map((e=>({id:e.id,visible:e.visible}))),activeLayerId:"wmts"===e.type?null==(a=e.activeLayer)?void 0:a.id:void 0}}function q(e){return e?{baseLayers:x(e.baseMapLayers.filter((e=>!e.isReference))),referenceLayers:x(e.baseMapLayers.filter((e=>e.isReference)))}:null}function x(e){return e.map((e=>U(e)))}function U(e){let r;switch(e.layerType){case"VectorTileLayer":r="vector-tile";break;case"ArcGISTiledMapServiceLayer":r="tile";break;default:r="unknown"}return{type:r,url:A(e.templateUrl||e.urlTemplate||e.styleUrl||e.url),minScale:null!=e.minScale?e.minScale:0,maxScale:null!=e.maxScale?e.maxScale:0,opacity:null!=e.opacity?e.opacity:1,visible:null==e.visibility||!!e.visibility,sublayers:void 0,activeLayerId:void 0}}function M(e,r,a){if(null!=e!=(null!=r))return"not-equal";if(!e)return"equal";if(!k(e.baseLayers,r.baseLayers))return"not-equal";return k(e.referenceLayers,r.referenceLayers)?"equal":a.mustMatchReferences?"not-equal":"base-layers-equal"}function k(e,r){if(e.length!==r.length)return!1;for(let a=0;a<e.length;a++)if(!$(e[a],r[a]))return!1;return!0}function $(e,r){if(e.type!==r.type||e.url!==r.url||e.minScale!==r.minScale||e.maxScale!==r.maxScale||e.visible!==r.visible||e.opacity!==r.opacity)return!1;if(t(e.activeLayerId)||t(r.activeLayerId))return e.activeLayerId===r.activeLayerId;if(t(e.sublayers)||t(r.sublayers)){if(l(e.sublayers)||l(r.sublayers)||e.sublayers.length!==r.sublayers.length)return!1;for(let a=0;a<e.sublayers.length;a++){const n=e.sublayers.at(a),t=r.sublayers.at(a);if(n.id!==t.id||n.visible!==t.visible)return!1}}return!0}function A(e){return e?i(e).replace(/^\s*https?:/i,"").toLowerCase():""}export{m as clonePreservingTiledLayers,L as contentEquals,p as createCache,y as destroyCache,d as ensureType,h as findSpatialReference,b as getWellKnownBasemapId,g as hasDeveloperBasemapLayer,S as isDeveloperBasemapLayer};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{isNone as e,isSome as t,unwrapOr as n}from"../core/maybe.js";import{getMetersPerUnit as o}from"../symbols/support/unitConversionUtils.js";function r(t,n){return e(n)||!n.mode?t?"absolute-height":"on-the-ground":n.mode}function i(e,n){return r(!!t(e)&&e.hasZ,n)}function u(e){const t=
|
|
5
|
+
import{isNone as e,isSome as t,unwrapOr as n}from"../core/maybe.js";import{getMetersPerUnit as o}from"../symbols/support/unitConversionUtils.js";function r(t,n){return e(n)||!n.mode?t?"absolute-height":"on-the-ground":n.mode}function i(e,n){return r(!!t(e)&&e.hasZ,n)}function u(e){const t=f(e);return i(e.geometry,t)}function s(e){const r=f(e),u=i(e.geometry,r);return{mode:u,offset:t(r)&&"on-the-ground"!==u?n(r.offset,0)*o(n(r.unit,"meters")):0}}function a(e){if("on-the-ground"===u(e))return!1;const n=f(e),o=t(n)&&n.featureExpressionInfo?n.featureExpressionInfo.expression:null;return!(!o||"0"===o)}function f(e){return e.layer&&"elevationInfo"in e.layer?e.layer.elevationInfo:null}function l(o,r,i){if(e(i)||!i.mode)return;const u=o.hasZ?o.z:0,s=t(i.offset)?i.offset:0;switch(i.mode){case"absolute-height":return u-s;case"on-the-ground":return 0;case"relative-to-ground":return u-(n(r.elevationProvider.getElevation(o.x,o.y,o.z,o.spatialReference,"ground"),0)+s);case"relative-to-scene":return u-(n(r.elevationProvider.getElevation(o.x,o.y,o.z,o.spatialReference,"scene"),0)+s)}}function c(e,t,n,o=null){return d(e,t.x,t.y,t.hasZ?t.z:0,t.spatialReference,n,o)}function v(e,t,n,o,r=null){return d(e,t[0],t[1],t.length>2?t[2]:0,n,o,r)}function d(n,o,r,i,u,s,a=null){if(e(s))return;const f=t(a)?a.mode:"absolute-height";if("on-the-ground"===f)return 0;return h(g(o,r,i,u,n,s),o,r,i,u,n,a,f)}function g(e,o,r,i,u,s){const a=t(s.offset)?s.offset:0;switch(s.mode){case"absolute-height":return r+a;case"on-the-ground":return n(u.elevationProvider.getElevation(e,o,0,i,"ground"),0);case"relative-to-ground":return r+n(u.elevationProvider.getElevation(e,o,r,i,"ground"),0)+a;case"relative-to-scene":return r+n(u.elevationProvider.getElevation(e,o,r,i,"scene"),0)+a}}function h(e,o,r,i,u,s,a,f){const l=t(a)&&t(a.offset)?a.offset:0;switch(f){case"absolute-height":return e-l;case"relative-to-ground":return e-(n(s.elevationProvider.getElevation(o,r,i,u,"ground"),0)+l);case"relative-to-scene":return e-(n(s.elevationProvider.getElevation(o,r,i,u,"scene"),0)+l)}}function m(n,o){return e(n)&&e(o)||t(n)&&t(o)&&n.mode===o.mode&&n.offset===o.offset}export{m as elevationInfoLikeEquals,c as getConvertedElevation,v as getConvertedElevationFromVector,r as getEffectiveElevationMode,i as getGeometryEffectiveElevationMode,s as getGraphicEffectiveElevationInfo,u as getGraphicEffectiveElevationMode,l as getZForElevationMode,a as hasGraphicFeatureExpressionInfo,g as zValueInAbsoluteHeightMode};
|
package/support/popupUtils.js
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../PopupTemplate.js";import{getDisplayFieldName as t}from"../layers/support/fieldUtils.js";import i from"../popup/content/AttachmentsContent.js";import"../popup/content/Content.js";import"../popup/content/CustomContent.js";import"../popup/content/ExpressionContent.js";import o from"../popup/content/FieldsContent.js";import"../popup/content/MediaContent.js";import"../popup/content/TextContent.js";import n from"../popup/FieldInfo.js";import
|
|
5
|
+
import e from"../PopupTemplate.js";import{getDisplayFieldName as t}from"../layers/support/fieldUtils.js";import i from"../popup/content/AttachmentsContent.js";import"../popup/content/Content.js";import"../popup/content/CustomContent.js";import"../popup/content/ExpressionContent.js";import o from"../popup/content/FieldsContent.js";import"../popup/content/MediaContent.js";import"../popup/content/TextContent.js";import n from"../popup/FieldInfo.js";import l from"../popup/support/FieldInfoFormat.js";const s=["oid","global-id"],r=["oid","global-id","guid"];function a({displayField:t,editFieldsInfo:i,fields:o,objectIdField:n,title:l},s){if(!o)return null;const r=b({editFieldsInfo:i,fields:o,objectIdField:n},s);if(!r.length)return null;const a=j({titleBase:l,fields:o,displayField:t}),d=C();return new e({title:a,content:d,fieldInfos:r})}const d=[/^fnode_$/i,/^tnode_$/i,/^lpoly_$/i,/^rpoly_$/i,/^poly_$/i,/^subclass$/i,/^subclass_$/i,/^rings_ok$/i,/^rings_nok$/i,/shape/i,/perimeter/i,/objectid/i,/_i$/i],p=(e,{editFieldsInfo:t,objectIdField:i,visibleFieldNames:o})=>o?o.has(e.name):!m(e.name,t)&&((!i||e.name!==i)&&(!s.includes(e.type)&&!d.some((t=>t.test(e.name)))));function u(e,t){const i=e;return t&&(e=e.filter((e=>!t.includes(e.type)))),e===i&&(e=e.slice()),e.sort(c),e}function c(e,t){return"oid"===e.type?-1:"oid"===t.type?1:y(e)?-1:y(t)?1:(e.alias||e.name).toLocaleLowerCase().localeCompare((t.alias||t.name).toLocaleLowerCase())}function m(e,t){if(!e||!t)return!1;const{creationDateField:i,creatorField:o,editDateField:n,editorField:l}=t;return[i&&i.toLowerCase(),o&&o.toLowerCase(),n&&n.toLowerCase(),l&&l.toLowerCase()].includes(e.toLowerCase())}function f(e,t){return e.editable&&!r.includes(e.type)&&!m(e.name,t)}function F(e,t){return new o({fieldInfos:b(e,t).filter((e=>e.visible))})}function b({editFieldsInfo:e,fields:t,objectIdField:i},o){return u(t,(null==o?void 0:o.ignoreFieldTypes)||g).map((t=>new n({fieldName:t.name,isEditable:f(t,e),label:t.alias,format:w(t),visible:p(t,{editFieldsInfo:e,objectIdField:i,visibleFieldNames:null==o?void 0:o.visibleFieldNames})})))}function w(e){switch(e.type){case"small-integer":case"integer":case"single":return new l({digitSeparator:!0,places:0});case"double":return new l({digitSeparator:!0,places:2});case"date":return new l({dateFormat:"long-month-day-year"});default:return null}}function C(){return[new o,new i]}function j(e){const i=t(e),{titleBase:o}=e;return i?`${o}: {${i.trim()}}`:o}function y(e){if("name"===(e.name&&e.name.toLowerCase()))return!0;return"name"===(e.alias&&e.alias.toLowerCase())||void 0}const g=["geometry","blob","raster","guid","xml"];export{b as createFieldInfos,F as createFieldsContent,a as createPopupTemplate};
|
package/support/revision.js
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
const
|
|
5
|
+
const c="20220401",e="f9643e3e61565caa4964ad21cc75ef6864d1d583";export{c as buildDate,e as commitHash};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../Color.js";import t from"../../request.js";import{throwIfAborted as r}from"../../core/promiseUtils.js";import{pt2px as a}from"../../core/screenUtils.js";import{numericHash as i}from"../../core/string.js";import{getJsonType as s,isPolygon as o,isPolyline as n}from"../../geometry/support/jsonUtils.js";import{analyzeCIMSymbol as c,analyzeCIMResource as l}from"./cimAnalyzer.js";import m from"./CIMResourceManager.js";import h from"./Rasterizer.js";import f from"./TextRasterizer.js";import{createLabelOverrideFunction as g,evaluateValueOrFunction as u,colorToArray as y}from"./utils.js";import{scaleCIMMarker as p}from"../support/cimSymbolUtils.js";import{Symbol3DAnchorPosition2D as d}from"../support/Symbol3DAnchorPosition2D.js";var M;!function(e){e.Legend="legend",e.Preview="preview"}(M||(M={}));const C=(e,t,r)=>{if(e&&e.targetSize){let i;if(r){const t=Math.max(r.frame.xmax-r.frame.xmin,r.frame.ymax-r.frame.ymin);i=e.targetSize/a(t)}else i=e.targetSize/t.referenceSize;return i}return e&&e.scaleFactor?e.scaleFactor:1},I={fill:{legend:{frame:{xmax:15,xmin:0,ymax:15,ymin:0},geometry:{rings:[[[0,15],[15,7.5],[15,0],[0,0],[0,15]]]},canvasPaths:{rings:[[[0,15],[0,0],[15,7.5],[15,15],[0,15]]]}},preview:{frame:{xmax:100,xmin:0,ymax:100,ymin:0},geometry:{rings:[[[0,100],[100,100],[100,0],[0,0],[0,100]]]},canvasPaths:{rings:[[[0,100],[0,0],[100,0],[100,100],[0,100]]]}}},stroke:{legend:{frame:{xmax:24,xmin:0,ymax:2,ymin:-2},geometry:{paths:[[[0,0],[12,0],[24,0]]]},canvasPaths:{paths:[[[0,2],[12,2],[24,2]]]}},preview:{frame:{xmax:100,xmin:0,ymax:2,ymin:-2},geometry:{paths:[[[0,0],[50,0],[100,0]]]},canvasPaths:{paths:[[[0,2],[50,2],[100,2]]]}}}};class z{constructor(e,t){this._spatialReference=e,this._avoidSDF=t,this._resourceCache=new Map,this._pictureMarkerCache=new Map,this._textRasterizer=new f,this._cimResourceManager=new m,this._rasterizer=new h(this._cimResourceManager)}async rasterizeCIMSymbolAsync(e,t,r,a,i,o,n,c){a=a||(t?null!=t.centroid?"esriGeometryPolygon":s(t.geometry):null)||x(e);const l=await this.analyzeCIMSymbol(e,t?P(t.attributes):null,r,a,c);return this.rasterizeCIMSymbol(l,t,a,i,o,n)}async analyzeCIMSymbol(e,t,a,i,s){const o=[],n=t?{geometryType:i,spatialReference:this._spatialReference,fields:t}:null;let l;await c(e.data,n,this._cimResourceManager,o,this._avoidSDF),r(s);for(const r of o)"CIMPictureMarker"!==r.cim.type&&"CIMPictureFill"!==r.cim.type&&"CIMPictureStroke"!==r.cim.type||(l||(l=[]),l.push(this._fetchPictureMarkerResource(r,s))),a&&"text"===r.type&&"string"==typeof r.text&&r.text.indexOf("[")>-1&&(r.text=g(a,r.text,r.cim.textCase));return l&&await Promise.all(l),o}async _fetchPictureMarkerResource(e,r){const a=e.materialHash;if(!this._pictureMarkerCache.get(a)){const i=(await t(e.cim.url,{responseType:"image",signal:r&&r.signal})).data;this._pictureMarkerCache.set(a,i)}}rasterizeCIMSymbol(e,t,r,a,i,s){const o=[];for(const n of e){a&&"function"==typeof a.scaleFactor&&(a.scaleFactor=a.scaleFactor(t,i,s));const e=this._getRasterizedResource(n,t,r,a,i,s);if(!e)continue;let c=0,l=e.anchorX||0,m=e.anchorY||0,h=!1,f=0,g=0;if("esriGeometryPoint"===r){const e=C(a,n,null);if(f=u(n.offsetX,t,i,s)*e||0,g=u(n.offsetY,t,i,s)*e||0,"marker"===n.type)c=u(n.rotation,t,i,s)||0,h=!!n.rotateClockwise&&n.rotateClockwise;else if("text"===n.type){if(c=u(n.angle,t,i,s)||0,void 0!==n.horizontalAlignment)switch(n.horizontalAlignment){case"left":l=-.5;break;case"right":l=.5;break;default:l=0}if(void 0!==n.verticalAlignment)switch(n.verticalAlignment){case"top":m=.5;break;case"bottom":m=-.5;break;case"baseline":m=-.25;break;default:m=0}}}null!=e&&o.push({angle:c,rotateClockWise:h,anchorX:l,anchorY:m,offsetX:f,offsetY:g,rasterizedResource:e})}return this.getSymbolImage(o)}getSymbolImage(e){const t=document.createElement("canvas"),r=t.getContext("2d");let i=0,s=0,o=0,n=0;const c=[];for(let f=0;f<e.length;f++){const t=e[f],l=t.rasterizedResource;if(!l)continue;const m=l.size,h=t.offsetX,g=t.offsetY,u=t.anchorX,y=t.anchorY,p=t.rotateClockWise||!1;let d=t.angle,M=a(h)-m[0]*(.5+u),C=a(g)-m[1]*(.5+y),I=M+m[0],z=C+m[1];if(d){p&&(d=-d);const e=Math.sin(d*Math.PI/180),t=Math.cos(d*Math.PI/180),r=M*t-C*e,a=M*e+C*t,i=M*t-z*e,s=M*e+z*t,o=I*t-z*e,n=I*e+z*t,c=I*t-C*e,l=I*e+C*t;M=Math.min(r,i,o,c),C=Math.min(a,s,n,l),I=Math.max(r,i,o,c),z=Math.max(a,s,n,l)}i=M<i?M:i,s=C<s?C:s,o=I>o?I:o,n=z>n?z:n;const P=r.createImageData(l.size[0],l.size[1]);P.data.set(new Uint8ClampedArray(l.image.buffer));const x={offsetX:h,offsetY:g,rotateClockwise:p,angle:d,rasterizedImage:P,anchorX:u,anchorY:y};c.push(x)}t.width=o-i,t.height=n-s;const l=-i,m=n;for(let f=0;f<c.length;f++){const e=c[f],t=this._imageDataToCanvas(e.rasterizedImage),i=e.rasterizedImage.width,s=e.rasterizedImage.height,o=l-i*(.5+e.anchorX),n=m-s*(.5-e.anchorY);if(e.angle){const i=(360-e.angle)*Math.PI/180;r.save(),r.translate(a(e.offsetX),-a(e.offsetY)),r.translate(l,m),r.rotate(i),r.translate(-l,-m),r.drawImage(t,o,n),r.restore()}else r.drawImage(t,o+a(e.offsetX),n-a(e.offsetY))}const h=new d({x:l/t.width-.5,y:m/t.height-.5});return{imageData:0!==t.width&&0!==t.height?r.getImageData(0,0,t.width,t.height):r.createImageData(1,1),anchorPosition:h}}_imageDataToCanvas(e){this._imageDataCanvas||(this._imageDataCanvas=document.createElement("canvas"));const t=this._imageDataCanvas,r=t.getContext("2d");return t.width=e.width,t.height=e.height,r.putImageData(e,0,0),t}_imageTo32Array(t,r,a,i){this._imageDataCanvas||(this._imageDataCanvas=document.createElement("canvas"));const s=this._imageDataCanvas,o=s.getContext("2d");if(s.width=r,s.height=a,o.drawImage(t,0,0,r,a),i){o.save();const s=new e(i);o.fillStyle=s.toHex(),o.globalCompositeOperation="multiply",o.fillRect(0,0,r,a),o.globalCompositeOperation="destination-atop",o.drawImage(t,0,0,r,a),o.restore()}return new Uint32Array(o.getImageData(0,0,r,a).data.buffer)}_getRasterizedResource(e,t,r,a,s,o){let n,c,l,m,h=null,f=null;if("esriGeometryPolyline"===r||"esriGeometryPolygon"===r){const m=a&&a.style?a.style:M.Legend,g="esriGeometryPolyline"===r?I.stroke[m]:I.fill[m];if("line"===e.type){if("CIMSolidStroke"!==e.cim.type){if("CIMPictureStroke"===e.cim.type){const r=u(e.width,t,s,o),a=u(e.color,t,s,o),{image:i,width:n,height:c}=this._getPictureResource(e,r,a);return this._rasterizePictureResource(e,i,n,c,g,r)}return null}({analyzedCIM:n,hash:l}=w(e,t,s,o)),c=this._embedCIMLayerInVectorMarker(n,g)}else if("marker"===e.type){if("CIMPictureMarker"===e.cim.type){const r=u(e.size,t,s,o),a=u(e.color,t,s,o),{image:i,width:n,height:c}=this._getPictureResource(e,r,a);return this._rasterizePictureResource(e,i,n,c,g,r)}if("CIMVectorMarker"!==e.cim.type)return null;e.cim.offsetX=u(e.offsetX,t,s,o),e.cim.offsetY=u(e.offsetY,t,s,o),e.cim.rotation=u(e.rotation,t,s,o),e.cim.markerPlacement=e.markerPlacement,({analyzedCIM:n}=w(e,t,s,o)),l=i(JSON.stringify(n)).toString(),c=this._embedCIMLayerInVectorMarker(n,g),h=u(e.size,t,s,o),f=e.path}else{if("text"===e.type)return null;if("fill"===e.type){if("CIMHatchFill"===e.cim.type||"CIMVectorMarker"===e.cim.type||"CIMPictureMarker"===e.cim.type||"CIMPictureFill"===e.cim.type){const r=e.cim.size||e.cim.height;let a,i,c;if("CIMPictureMarker"===e.cim.type||"CIMPictureFill"===e.cim.type)({image:a,width:i,height:c}=this._getPictureResource(e,r,u(e.color,t,s,o)));else{({analyzedCIM:n,hash:l}=w(e,t,s,o));const m=this._rasterizer.rasterizeJSONResource({cim:n,type:e.type,url:e.url,mosaicHash:l,size:r,path:f},1,this._avoidSDF);a=m.image,i=m.size[0],c=m.size[1]}return this._rasterizePictureResource(e,a,i,c,g,null)}if("CIMSolidFill"!==e.cim.type)return null;({analyzedCIM:n,hash:l}=w(e,t,s,o)),c=this._embedCIMLayerInVectorMarker(n,g)}}}else{if("text"===e.type)return m=this._rasterizeTextResource(e,t,a,s,o),m;({analyzedCIM:n,hash:l}=w(e,t,s,o));const r=C(a,e,null);if("CIMPictureMarker"===e.cim.type){const a=u(e.size,t,s,o)*r,{image:i,width:n,height:c}=this._getPictureResource(e,a,u(e.color,t,s,o));return m={image:i,size:[n,c],sdf:!1,simplePattern:!1,anchorX:e.anchorPoint?e.anchorPoint.x:0,anchorY:e.anchorPoint?e.anchorPoint.y:0},m}p(n,r,{preserveOutlineWidth:!1}),c=n}l+=r,a&&(l+=JSON.stringify(a));const g=this._resourceCache;return g.has(l)?g.get(l):(m=this._rasterizer.rasterizeJSONResource({cim:c,type:e.type,url:e.url,mosaicHash:l,size:h,path:f},window.devicePixelRatio||1,this._avoidSDF),g.set(l,m),m)}_rasterizeTextResource(e,t,r,a,i){const s=C(r,e,null),o=u(e.text,t,a,i);if(!o||0===o.length)return null;const n=u(e.fontName,t,a,i),c=u(e.style,t,a,i),l=u(e.weight,t,a,i),m=u(e.decoration,t,a,i),h=u(e.size,t,a,i)*s,f=u(e.horizontalAlignment,t,a,i),g=u(e.verticalAlignment,t,a,i),p=y(u(e.color,t,a,i)),d=y(u(e.outlineColor,t,a,i)),M={color:p,size:h,horizontalAlignment:f,verticalAlignment:g,font:{family:n,style:c,weight:l,decoration:m},halo:{size:u(e.outlineSize,t,a,i)||0,color:d,style:c},pixelRatio:1,premultiplyColors:!this._avoidSDF};return this._textRasterizer.rasterizeText(o,M)}_rasterizePictureResource(e,t,r,i,s,c){const l=document.createElement("canvas"),m=l.getContext("2d");l.height=a(Math.max(s.frame.ymax-s.frame.ymin,c)),l.width=a(s.frame.xmax-s.frame.xmin);const h=m.createImageData(r,i);h.data.set(new Uint8ClampedArray(t.buffer));const f=this._imageDataToCanvas(h),g=m.createPattern(f,"repeat"),u=Math.cos((-e.cim.rotation||0)*Math.PI/180),y=Math.sin((-e.cim.rotation||0)*Math.PI/180);g.setTransform({m11:u,m12:y,m21:-y,m22:u,m41:a(e.cim.offsetX)||0,m42:a(e.cim.offsetY)||0});const p=s.canvasPaths;let d,M,C;o(p)?(d=p.rings,m.fillStyle=g,M=m.fill,C=["evenodd"]):n(p)&&(d=p.paths,m.strokeStyle=g,m.lineWidth=c,M=m.stroke,d[0][0][1]=l.height/2,d[0][1][1]=l.height/2),m.beginPath();for(const o of d){const e=o?o.length:0;if(e>1){let t=o[0];m.moveTo(a(t[0]),a(t[1]));for(let r=1;r<e;++r)t=o[r],m.lineTo(a(t[0]),a(t[1]));m.closePath()}}M.apply(m,C);const I=m.getImageData(0,0,l.width,l.height),z=new Uint8Array(I.data);return{size:[l.width,l.height],image:new Uint32Array(z.buffer),sdf:!1,simplePattern:!1,anchorX:0,anchorY:0}}_getPictureResource(e,t,r){const i=this._pictureMarkerCache.get(e.materialHash);if(!i)return null;const s=i.height/i.width,o=t?s>1?a(t):a(t)/s:i.width,n=t?s>1?a(t)*s:a(t):i.height;return{image:this._imageTo32Array(i,o,n,r),width:o,height:n}}_embedCIMLayerInVectorMarker(e,t){const r=o(t.geometry)?"CIMPolygonSymbol":"CIMLineSymbol",a=t.frame;return{type:"CIMVectorMarker",frame:a,size:a.ymax-a.ymin,markerGraphics:[{type:"CIMMarkerGraphic",geometry:t.geometry,symbol:{type:r,symbolLayers:[e]}}]}}}function P(e){return(e?Object.keys(e):[]).map((t=>({name:t,alias:t,type:"string"==typeof e[t]?"esriFieldTypeString":"esriFieldTypeDouble"})))}function x(e){if(!(e&&e.data&&e.data.symbol))return null;switch(e.data.symbol.type){case"CIMPointSymbol":case"CIMTextSymbol":return"esriGeometryPoint";case"CIMLineSymbol":return"esriGeometryPolyline";case"CIMPolygonSymbol":return"esriGeometryPolygon";default:return null}}function w(e,t,r,a){let i,s;if("function"==typeof e.materialHash){i=(0,e.materialHash)(t,r,a),s=l(e.cim,e.materialOverrides)}else i=e.materialHash,s=e.cim;return{analyzedCIM:s,hash:i}}export{z as CIMSymbolRasterizer,M as GeometryStyle};
|
|
5
|
+
import e from"../../Color.js";import t from"../../request.js";import{throwIfAborted as r}from"../../core/promiseUtils.js";import{pt2px as a}from"../../core/screenUtils.js";import{numericHash as i}from"../../core/string.js";import{getJsonType as s,isPolygon as o,isPolyline as n}from"../../geometry/support/jsonUtils.js";import{analyzeCIMSymbol as c,analyzeCIMResource as l}from"./cimAnalyzer.js";import m from"./CIMResourceManager.js";import h from"./Rasterizer.js";import f from"./TextRasterizer.js";import{createLabelOverrideFunction as g,evaluateValueOrFunction as u,colorToArray as y}from"./utils.js";import{scaleCIMMarker as p}from"../support/cimSymbolUtils.js";import{Symbol3DAnchorPosition2D as d}from"../support/Symbol3DAnchorPosition2D.js";var M;!function(e){e.Legend="legend",e.Preview="preview"}(M||(M={}));const C=(e,t,r)=>{if(e&&e.targetSize){let i;if(r){const t=Math.max(r.frame.xmax-r.frame.xmin,r.frame.ymax-r.frame.ymin);i=e.targetSize/a(t)}else i=e.targetSize/t.referenceSize;return i}return e&&e.scaleFactor?e.scaleFactor:1},I={fill:{legend:{frame:{xmax:15,xmin:0,ymax:15,ymin:0},geometry:{rings:[[[0,15],[15,7.5],[15,0],[0,0],[0,15]]]},canvasPaths:{rings:[[[0,15],[0,0],[15,7.5],[15,15],[0,15]]]}},preview:{frame:{xmax:100,xmin:0,ymax:100,ymin:0},geometry:{rings:[[[0,100],[100,100],[100,0],[0,0],[0,100]]]},canvasPaths:{rings:[[[0,100],[0,0],[100,0],[100,100],[0,100]]]}}},stroke:{legend:{frame:{xmax:24,xmin:0,ymax:2,ymin:-2},geometry:{paths:[[[0,0],[12,0],[24,0]]]},canvasPaths:{paths:[[[0,2],[12,2],[24,2]]]}},preview:{frame:{xmax:100,xmin:0,ymax:2,ymin:-2},geometry:{paths:[[[0,0],[50,0],[100,0]]]},canvasPaths:{paths:[[[0,2],[50,2],[100,2]]]}}}};class z{constructor(e,t){this._spatialReference=e,this._avoidSDF=t,this._resourceCache=new Map,this._pictureMarkerCache=new Map,this._textRasterizer=new f,this._cimResourceManager=new m,this._rasterizer=new h(this._cimResourceManager)}async rasterizeCIMSymbolAsync(e,t,r,a,i,o,n,c){a=a||(t?null!=t.centroid?"esriGeometryPolygon":s(t.geometry):null)||x(e);const l=await this.analyzeCIMSymbol(e,t?P(t.attributes):null,r,a,c);return this.rasterizeCIMSymbol(l,t,a,i,o,n)}async analyzeCIMSymbol(e,t,a,i,s){const o=[],n=t?{geometryType:i,spatialReference:this._spatialReference,fields:t}:null;let l;await c(e.data,n,this._cimResourceManager,o,this._avoidSDF),r(s);for(const r of o)"CIMPictureMarker"!==r.cim.type&&"CIMPictureFill"!==r.cim.type&&"CIMPictureStroke"!==r.cim.type||(l||(l=[]),l.push(this._fetchPictureMarkerResource(r,s))),a&&"text"===r.type&&"string"==typeof r.text&&r.text.includes("[")&&(r.text=g(a,r.text,r.cim.textCase));return l&&await Promise.all(l),o}async _fetchPictureMarkerResource(e,r){const a=e.materialHash;if(!this._pictureMarkerCache.get(a)){const i=(await t(e.cim.url,{responseType:"image",signal:r&&r.signal})).data;this._pictureMarkerCache.set(a,i)}}rasterizeCIMSymbol(e,t,r,a,i,s){const o=[];for(const n of e){a&&"function"==typeof a.scaleFactor&&(a.scaleFactor=a.scaleFactor(t,i,s));const e=this._getRasterizedResource(n,t,r,a,i,s);if(!e)continue;let c=0,l=e.anchorX||0,m=e.anchorY||0,h=!1,f=0,g=0;if("esriGeometryPoint"===r){const e=C(a,n,null);if(f=u(n.offsetX,t,i,s)*e||0,g=u(n.offsetY,t,i,s)*e||0,"marker"===n.type)c=u(n.rotation,t,i,s)||0,h=!!n.rotateClockwise&&n.rotateClockwise;else if("text"===n.type){if(c=u(n.angle,t,i,s)||0,void 0!==n.horizontalAlignment)switch(n.horizontalAlignment){case"left":l=-.5;break;case"right":l=.5;break;default:l=0}if(void 0!==n.verticalAlignment)switch(n.verticalAlignment){case"top":m=.5;break;case"bottom":m=-.5;break;case"baseline":m=-.25;break;default:m=0}}}null!=e&&o.push({angle:c,rotateClockWise:h,anchorX:l,anchorY:m,offsetX:f,offsetY:g,rasterizedResource:e})}return this.getSymbolImage(o)}getSymbolImage(e){const t=document.createElement("canvas"),r=t.getContext("2d");let i=0,s=0,o=0,n=0;const c=[];for(let f=0;f<e.length;f++){const t=e[f],l=t.rasterizedResource;if(!l)continue;const m=l.size,h=t.offsetX,g=t.offsetY,u=t.anchorX,y=t.anchorY,p=t.rotateClockWise||!1;let d=t.angle,M=a(h)-m[0]*(.5+u),C=a(g)-m[1]*(.5+y),I=M+m[0],z=C+m[1];if(d){p&&(d=-d);const e=Math.sin(d*Math.PI/180),t=Math.cos(d*Math.PI/180),r=M*t-C*e,a=M*e+C*t,i=M*t-z*e,s=M*e+z*t,o=I*t-z*e,n=I*e+z*t,c=I*t-C*e,l=I*e+C*t;M=Math.min(r,i,o,c),C=Math.min(a,s,n,l),I=Math.max(r,i,o,c),z=Math.max(a,s,n,l)}i=M<i?M:i,s=C<s?C:s,o=I>o?I:o,n=z>n?z:n;const P=r.createImageData(l.size[0],l.size[1]);P.data.set(new Uint8ClampedArray(l.image.buffer));const x={offsetX:h,offsetY:g,rotateClockwise:p,angle:d,rasterizedImage:P,anchorX:u,anchorY:y};c.push(x)}t.width=o-i,t.height=n-s;const l=-i,m=n;for(let f=0;f<c.length;f++){const e=c[f],t=this._imageDataToCanvas(e.rasterizedImage),i=e.rasterizedImage.width,s=e.rasterizedImage.height,o=l-i*(.5+e.anchorX),n=m-s*(.5-e.anchorY);if(e.angle){const i=(360-e.angle)*Math.PI/180;r.save(),r.translate(a(e.offsetX),-a(e.offsetY)),r.translate(l,m),r.rotate(i),r.translate(-l,-m),r.drawImage(t,o,n),r.restore()}else r.drawImage(t,o+a(e.offsetX),n-a(e.offsetY))}const h=new d({x:l/t.width-.5,y:m/t.height-.5});return{imageData:0!==t.width&&0!==t.height?r.getImageData(0,0,t.width,t.height):r.createImageData(1,1),anchorPosition:h}}_imageDataToCanvas(e){this._imageDataCanvas||(this._imageDataCanvas=document.createElement("canvas"));const t=this._imageDataCanvas,r=t.getContext("2d");return t.width=e.width,t.height=e.height,r.putImageData(e,0,0),t}_imageTo32Array(t,r,a,i){this._imageDataCanvas||(this._imageDataCanvas=document.createElement("canvas"));const s=this._imageDataCanvas,o=s.getContext("2d");if(s.width=r,s.height=a,o.drawImage(t,0,0,r,a),i){o.save();const s=new e(i);o.fillStyle=s.toHex(),o.globalCompositeOperation="multiply",o.fillRect(0,0,r,a),o.globalCompositeOperation="destination-atop",o.drawImage(t,0,0,r,a),o.restore()}return new Uint32Array(o.getImageData(0,0,r,a).data.buffer)}_getRasterizedResource(e,t,r,a,s,o){let n,c,l,m,h=null,f=null;if("esriGeometryPolyline"===r||"esriGeometryPolygon"===r){const m=a&&a.style?a.style:M.Legend,g="esriGeometryPolyline"===r?I.stroke[m]:I.fill[m];if("line"===e.type){if("CIMSolidStroke"!==e.cim.type){if("CIMPictureStroke"===e.cim.type){const r=u(e.width,t,s,o),a=u(e.color,t,s,o),{image:i,width:n,height:c}=this._getPictureResource(e,r,a);return this._rasterizePictureResource(e,i,n,c,g,r)}return null}({analyzedCIM:n,hash:l}=w(e,t,s,o)),c=this._embedCIMLayerInVectorMarker(n,g)}else if("marker"===e.type){if("CIMPictureMarker"===e.cim.type){const r=u(e.size,t,s,o),a=u(e.color,t,s,o),{image:i,width:n,height:c}=this._getPictureResource(e,r,a);return this._rasterizePictureResource(e,i,n,c,g,r)}if("CIMVectorMarker"!==e.cim.type)return null;e.cim.offsetX=u(e.offsetX,t,s,o),e.cim.offsetY=u(e.offsetY,t,s,o),e.cim.rotation=u(e.rotation,t,s,o),e.cim.markerPlacement=e.markerPlacement,({analyzedCIM:n}=w(e,t,s,o)),l=i(JSON.stringify(n)).toString(),c=this._embedCIMLayerInVectorMarker(n,g),h=u(e.size,t,s,o),f=e.path}else{if("text"===e.type)return null;if("fill"===e.type){if("CIMHatchFill"===e.cim.type||"CIMVectorMarker"===e.cim.type||"CIMPictureMarker"===e.cim.type||"CIMPictureFill"===e.cim.type){const r=e.cim.size||e.cim.height;let a,i,c;if("CIMPictureMarker"===e.cim.type||"CIMPictureFill"===e.cim.type)({image:a,width:i,height:c}=this._getPictureResource(e,r,u(e.color,t,s,o)));else{({analyzedCIM:n,hash:l}=w(e,t,s,o));const m=this._rasterizer.rasterizeJSONResource({cim:n,type:e.type,url:e.url,mosaicHash:l,size:r,path:f},1,this._avoidSDF);a=m.image,i=m.size[0],c=m.size[1]}return this._rasterizePictureResource(e,a,i,c,g,null)}if("CIMSolidFill"!==e.cim.type)return null;({analyzedCIM:n,hash:l}=w(e,t,s,o)),c=this._embedCIMLayerInVectorMarker(n,g)}}}else{if("text"===e.type)return m=this._rasterizeTextResource(e,t,a,s,o),m;({analyzedCIM:n,hash:l}=w(e,t,s,o));const r=C(a,e,null);if("CIMPictureMarker"===e.cim.type){const a=u(e.size,t,s,o)*r,{image:i,width:n,height:c}=this._getPictureResource(e,a,u(e.color,t,s,o));return m={image:i,size:[n,c],sdf:!1,simplePattern:!1,anchorX:e.anchorPoint?e.anchorPoint.x:0,anchorY:e.anchorPoint?e.anchorPoint.y:0},m}p(n,r,{preserveOutlineWidth:!1}),c=n}l+=r,a&&(l+=JSON.stringify(a));const g=this._resourceCache;return g.has(l)?g.get(l):(m=this._rasterizer.rasterizeJSONResource({cim:c,type:e.type,url:e.url,mosaicHash:l,size:h,path:f},window.devicePixelRatio||1,this._avoidSDF),g.set(l,m),m)}_rasterizeTextResource(e,t,r,a,i){const s=C(r,e,null),o=u(e.text,t,a,i);if(!o||0===o.length)return null;const n=u(e.fontName,t,a,i),c=u(e.style,t,a,i),l=u(e.weight,t,a,i),m=u(e.decoration,t,a,i),h=u(e.size,t,a,i)*s,f=u(e.horizontalAlignment,t,a,i),g=u(e.verticalAlignment,t,a,i),p=y(u(e.color,t,a,i)),d=y(u(e.outlineColor,t,a,i)),M={color:p,size:h,horizontalAlignment:f,verticalAlignment:g,font:{family:n,style:c,weight:l,decoration:m},halo:{size:u(e.outlineSize,t,a,i)||0,color:d,style:c},pixelRatio:1,premultiplyColors:!this._avoidSDF};return this._textRasterizer.rasterizeText(o,M)}_rasterizePictureResource(e,t,r,i,s,c){const l=document.createElement("canvas"),m=l.getContext("2d");l.height=a(Math.max(s.frame.ymax-s.frame.ymin,c)),l.width=a(s.frame.xmax-s.frame.xmin);const h=m.createImageData(r,i);h.data.set(new Uint8ClampedArray(t.buffer));const f=this._imageDataToCanvas(h),g=m.createPattern(f,"repeat"),u=Math.cos((-e.cim.rotation||0)*Math.PI/180),y=Math.sin((-e.cim.rotation||0)*Math.PI/180);g.setTransform({m11:u,m12:y,m21:-y,m22:u,m41:a(e.cim.offsetX)||0,m42:a(e.cim.offsetY)||0});const p=s.canvasPaths;let d,M,C;o(p)?(d=p.rings,m.fillStyle=g,M=m.fill,C=["evenodd"]):n(p)&&(d=p.paths,m.strokeStyle=g,m.lineWidth=c,M=m.stroke,d[0][0][1]=l.height/2,d[0][1][1]=l.height/2),m.beginPath();for(const o of d){const e=o?o.length:0;if(e>1){let t=o[0];m.moveTo(a(t[0]),a(t[1]));for(let r=1;r<e;++r)t=o[r],m.lineTo(a(t[0]),a(t[1]));m.closePath()}}M.apply(m,C);const I=m.getImageData(0,0,l.width,l.height),z=new Uint8Array(I.data);return{size:[l.width,l.height],image:new Uint32Array(z.buffer),sdf:!1,simplePattern:!1,anchorX:0,anchorY:0}}_getPictureResource(e,t,r){const i=this._pictureMarkerCache.get(e.materialHash);if(!i)return null;const s=i.height/i.width,o=t?s>1?a(t):a(t)/s:i.width,n=t?s>1?a(t)*s:a(t):i.height;return{image:this._imageTo32Array(i,o,n,r),width:o,height:n}}_embedCIMLayerInVectorMarker(e,t){const r=o(t.geometry)?"CIMPolygonSymbol":"CIMLineSymbol",a=t.frame;return{type:"CIMVectorMarker",frame:a,size:a.ymax-a.ymin,markerGraphics:[{type:"CIMMarkerGraphic",geometry:t.geometry,symbol:{type:r,symbolLayers:[e]}}]}}}function P(e){return(e?Object.keys(e):[]).map((t=>({name:t,alias:t,type:"string"==typeof e[t]?"esriFieldTypeString":"esriFieldTypeDouble"})))}function x(e){if(!(e&&e.data&&e.data.symbol))return null;switch(e.data.symbol.type){case"CIMPointSymbol":case"CIMTextSymbol":return"esriGeometryPoint";case"CIMLineSymbol":return"esriGeometryPolyline";case"CIMPolygonSymbol":return"esriGeometryPolygon";default:return null}}function w(e,t,r,a){let i,s;if("function"==typeof e.materialHash){i=(0,e.materialHash)(t,r,a),s=l(e.cim,e.materialOverrides)}else i=e.materialHash,s=e.cim;return{analyzedCIM:s,hash:i}}export{z as CIMSymbolRasterizer,M as GeometryStyle};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../Color.js";import{clone as t}from"../../core/lang.js";import i from"../../core/Logger.js";import{isSome as o}from"../../core/maybe.js";import{pt2px as r}from"../../core/screenUtils.js";import{numericHash as n}from"../../core/string.js";import{createRendererExpression as l,ArcadeExpression as a}from"../../support/arcadeOnDemand.js";import{CIMSymbolHelper as s,OverrideHelper as c}from"./CIMSymbolHelper.js";import{CapType as f,JoinType as m,Alignment as p}from"./enums.js";import{getExtent as u,getSDFMetrics as y}from"./SDFHelper.js";import{fromCIMColor as h,getValue as g,_adjustTextCase as d,createLabelOverrideFunction as S,evaluateValueOrFunction as v,isGeometryEngineRequired as N,importGeometryEngine as b}from"./utils.js";import{CIMEffectHelper as C}from"./effects/CIMEffectHelper.js";import k from"../../views/2d/arcade/callExpressionWithFeature.js";import{getFontFamily as O}from"../../views/2d/engine/webgl/fontUtils.js";const P=i.getLogger("esri.symbols.cim.cimAnalyzer");function M(e){switch(e){case"Butt":return f.BUTT;case"Square":return f.SQUARE;default:return f.ROUND}}function L(e){switch(e){case"Bevel":return m.BEVEL;case"Miter":return m.MITER;default:return m.ROUND}}function I(e){switch(e){case"Left":default:return"left";case"Right":return"right";case"Center":return"center";case"Justify":return P.warnOnce("Horizontal alignment 'justify' is not implemented. Falling back to 'center'."),"center"}}function w(e){switch(e){case"Top":default:return"top";case"Center":return"middle";case"Baseline":return"baseline";case"Bottom":return"bottom"}}function X(e){let t="",i="";if(e){const o=e.toLowerCase();-1!==o.indexOf("italic")?t="italic":-1!==o.indexOf("oblique")&&(t="oblique"),-1!==o.indexOf("bold")?i="bold":-1!==o.indexOf("light")&&(i="lighter")}return{style:t,weight:i}}function x(e){return e.underline?"underline":e.strikethrough?"line-through":"none"}function z(e,t,i,o){let r;e[t]?r=e[t]:(r={},e[t]=r),r[i]=o}function H(e){const t=e.markerPlacement;return t&&t.angleToLine?p.MAP:p.SCREEN}async function J(e,t,i,o,r){const n=null!=o?o:[];if(!e)return n;let a,s;const c={};if("CIMSymbolReference"!==e.type)return P.error("Expect cim type to be 'CIMSymbolReference'"),n;if(a=e.symbol,s=e.primitiveOverrides,s){const e=[];for(const i of s){const o=i.valueExpressionInfo;if(o&&t){const r=o.expression,n=l(r,t.spatialReference,t.fields).then((e=>{e&&z(c,i.primitiveName,i.propertyName,e)}));e.push(n)}else null!=i.value&&z(c,i.primitiveName,i.propertyName,i.value)}e.length>0&&await Promise.all(e)}const f=[];switch(ne(a,i,f),f.length>0&&await Promise.all(f),a.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":R(a,s,c,t,n,i,r)}return n}function R(e,t,i,o,r,n,l){if(!e)return;const a=e.symbolLayers;if(!a)return;const f=e.effects;let m;const u=s.getSize(e);"CIMPointSymbol"===e.type&&"Map"===e.angleAlignment&&(m=p.MAP);let y=a.length;for(;y--;){const s=a[y];if(!s||!1===s.enable)continue;let p;f&&f.length&&(p=[...f]);const h=s.effects;h&&h.length&&(f?p.push(...h):p=[...h]);const g=[];let d;c.findEffectOverrides(p,t,g),d=g.length>0?ee(p,g,i,o):p;const S=[];switch(c.findApplicableOverrides(s,t,S),s.type){case"CIMSolidFill":Y(s,d,i,S,o,r);break;case"CIMPictureFill":A(s,d,i,S,o,n,r);break;case"CIMHatchFill":E(s,d,i,S,o,r);break;case"CIMGradientFill":$(s,d,i,S,o,r);break;case"CIMSolidStroke":F(s,d,i,S,o,r,"CIMPolygonSymbol"===e.type,u);break;case"CIMPictureStroke":j(s,d,i,S,o,r,"CIMPolygonSymbol"===e.type,u);break;case"CIMGradientStroke":T(s,d,i,S,o,r,"CIMPolygonSymbol"===e.type,u);break;case"CIMCharacterMarker":if(W(s,d,i,S,o,r))break;break;case"CIMPictureMarker":if(W(s,d,i,S,o,r))break;"CIMLineSymbol"===e.type&&(m=H(s)),D(s,d,i,S,o,n,r,m,u);break;case"CIMVectorMarker":if(W(s,d,i,S,o,r))break;"CIMLineSymbol"===e.type&&(m=H(s)),U(s,d,i,S,o,r,n,m,u,l);break;default:P.error("Cannot analyze CIM layer",s.type)}}}function Y(e,t,i,o,r,l){const a=e.primitiveName,s=h(e.color),[c,f]=re(o,a,t,null),m=n(JSON.stringify(e)+f).toString();l.push({type:"fill",templateHash:m,materialHash:c?()=>m:m,cim:e,materialOverrides:null,colorLocked:e.colorLocked,color:Z(a,i,"Color",r,s,_),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t})}function A(e,t,i,r,l,a,s){const c=e.primitiveName,f=e.tintColor?h(e.tintColor):{r:255,g:255,b:255,a:1},[m,p]=re(r,c,t,null),u=n(JSON.stringify(e)+p).toString(),y=n(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString();let d=g(e.scaleX);if("width"in e){const t=e.width;let i=1;const r=a.getResource(e.url);o(r)&&(i=r.width/r.height),d/=i*(e.height/t)}s.push({type:"fill",templateHash:u,materialHash:m?()=>y:y,cim:e,materialOverrides:null,colorLocked:e.colorLocked,effects:t,color:Z(c,i,"TintColor",l,f,_),height:Z(c,i,"Height",l,e.height),scaleX:Z(c,i,"ScaleX",l,d),angle:Z(c,i,"Rotation",l,g(e.rotation)),offsetX:Z(c,i,"OffsetX",l,g(e.offsetX)),offsetY:Z(c,i,"OffsetY",l,g(e.offsetY)),url:e.url})}function E(e,t,i,o,r,l){const a=["Rotation","OffsetX","OffsetY"],s=o.filter((t=>t.primitiveName!==e.primitiveName&&-1===a.indexOf(t.propertyName))),c=e.primitiveName,[f,m]=re(o,c,t,null),p=n(JSON.stringify(e)+m).toString(),u=n(`${e.separation}${JSON.stringify(e.lineSymbol)}`).toString();l.push({type:"fill",templateHash:p,materialHash:f?ie(u,i,s,r):u,cim:e,materialOverrides:s,colorLocked:e.colorLocked,effects:t,color:{r:255,g:255,b:255,a:1},height:Z(c,i,"Separation",r,e.separation),scaleX:1,angle:Z(c,i,"Rotation",r,g(e.rotation)),offsetX:Z(c,i,"OffsetX",r,g(e.offsetX)),offsetY:Z(c,i,"OffsetY",r,g(e.offsetY))})}function $(e,t,i,o,r,l){const a=e.primitiveName,[s,c]=re(o,a,t,null),f=n(JSON.stringify(e)+c).toString();l.push({type:"fill",templateHash:f,materialHash:s?ie(f,i,o,r):f,cim:e,materialOverrides:null,colorLocked:e.colorLocked,effects:t,color:{r:128,g:128,b:128,a:1},height:0,angle:0,offsetX:0,offsetY:0,scaleX:1})}function F(e,t,i,o,r,l,a,s){const c=e.primitiveName,f=h(e.color),m=void 0!==e.width?e.width:4,p=M(e.capStyle),u=L(e.joinStyle),y=e.miterLimit,[g,d]=re(o,c,t,null),S=n(JSON.stringify(e)+d).toString();let v,N;if(t&&t instanceof Array&&t.length>0){const e=t[t.length-1];if("CIMGeometricEffectDashes"===e.type&&"NoConstraint"===e.lineDashEnding&&null===e.offsetAlongLine){const e=(t=[...t]).pop();v=e.dashTemplate,N=e.scaleDash}}l.push({type:"line",templateHash:S,materialHash:g?()=>S:S,cim:e,materialOverrides:null,isOutline:a,colorLocked:e.colorLocked,effects:t,color:Z(c,i,"Color",r,f,_),width:Z(c,i,"Width",r,m),cap:Z(c,i,"CapStyle",r,p),join:Z(c,i,"JoinStyle",r,u),miterLimit:Z(c,i,"MiterLimit",r,y),referenceWidth:s,zOrder:Q(e.name),dashTemplate:v,scaleDash:N})}function j(e,t,i,o,r,l,a,s){const c=n(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString(),f=e.primitiveName,m=h(e.tintColor),p=void 0!==e.width?e.width:4,u=M(e.capStyle),y=L(e.joinStyle),g=e.miterLimit,[d,S]=re(o,f,t,null),v=n(JSON.stringify(e)+S).toString();l.push({type:"line",templateHash:v,materialHash:d?()=>c:c,cim:e,materialOverrides:null,isOutline:a,colorLocked:e.colorLocked,effects:t,color:Z(f,i,"TintColor",r,m,_),width:Z(f,i,"Width",r,p),cap:Z(f,i,"CapStyle",r,u),join:Z(f,i,"JoinStyle",r,y),miterLimit:Z(f,i,"MiterLimit",r,g),referenceWidth:s,zOrder:Q(e.name),dashTemplate:null,scaleDash:!1,url:e.url})}function T(e,t,i,o,r,l,a,s){const c=e.primitiveName,f=void 0!==e.width?e.width:4,m=M(e.capStyle),p=L(e.joinStyle),u=e.miterLimit,[y,h]=re(o,c,t,null),g=n(JSON.stringify(e)+h).toString();l.push({type:"line",templateHash:g,materialHash:y?ie(g,i,o,r):g,cim:e,materialOverrides:null,isOutline:a,colorLocked:e.colorLocked,effects:t,color:{r:128,g:128,b:128,a:1},width:Z(c,i,"Width",r,f),cap:Z(c,i,"CapStyle",r,m),join:Z(c,i,"JoinStyle",r,p),miterLimit:Z(c,i,"MiterLimit",r,u),referenceWidth:s,zOrder:Q(e.name),dashTemplate:null,scaleDash:!1})}function W(e,t,i,o,r,l){const a=e.markerPlacement;if(!a||"CIMMarkerPlacementInsidePolygon"!==a.type)return!1;const s=a,c=["Rotation","OffsetX","OffsetY"],f=o.filter((t=>t.primitiveName!==e.primitiveName&&-1===c.indexOf(t.propertyName))),m="url"in e?e.url:null,[p,u]=re(o,s.primitiveName,t,null),y=n(JSON.stringify(e)+u).toString();let h=s.stepY,d=null,S=1;return a.shiftOddRows&&(h*=2,d=function(e){return e?2*e:0},S=.5),l.push({type:"fill",templateHash:y,materialHash:p?ie(y,i,f,r):y,cim:e,materialOverrides:f,colorLocked:e.colorLocked,effects:t,color:{r:255,g:255,b:255,a:1},height:Z(s.primitiveName,i,"StepY",r,h,d),scaleX:S,angle:Z(s.primitiveName,i,"GridAngle",r,s.gridAngle),offsetX:Z(s.primitiveName,i,"OffsetX",r,g(s.offsetX)),offsetY:Z(s.primitiveName,i,"OffsetY",r,g(s.offsetY)),url:m}),!0}function D(e,t,i,r,l,a,s,c,f){var m;const p=e.primitiveName,u=g(e.size);let y=g(e.scaleX);const d=g(e.rotation),S=g(e.offsetX),v=g(e.offsetY),N=e.tintColor?h(e.tintColor):{r:255,g:255,b:255,a:1},b=n(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString(),C=te(e.markerPlacement,r,i,l),[k,O]=re(r,p,t,C),P=n(JSON.stringify(e)+O).toString(),M=null!=(m=e.anchorPoint)?m:{x:0,y:0};if("width"in e){const t=e.width;let i=1;const r=a.getResource(e.url);o(r)&&(i=r.width/r.height),y/=i*(u/t)}s.push({type:"marker",templateHash:P,materialHash:k?()=>b:b,cim:e,materialOverrides:null,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:!1,alignment:c,size:Z(p,i,"Size",l,u),scaleX:Z(p,i,"ScaleX",l,y),rotation:Z(p,i,"Rotation",l,d),offsetX:Z(p,i,"OffsetX",l,S),offsetY:Z(p,i,"OffsetY",l,v),color:Z(p,i,"TintColor",l,N,_),anchorPoint:{x:M.x,y:-M.y},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,outlineColor:{r:0,g:0,b:0,a:0},outlineWidth:0,frameHeight:0,rotateClockwise:e.rotateClockwise,referenceSize:f,sizeRatio:1,markerPlacement:e.markerPlacement,url:e.url})}function U(e,t,i,o,r,n,l,a,s,c){const f=e.markerGraphics;if(!f)return;let m=0;if(e.scaleSymbolsProportionally){const t=e.frame;t&&(m=t.ymax-t.ymin)}const p=te(e.markerPlacement,o,i,r);for(const u of f)if(u){const f=u.symbol;if(!f)continue;switch(f.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":B(e,t,p,u,o,i,r,n,l,a,s,m,c);break;case"CIMTextSymbol":G(e,t,p,u,i,o,r,n,a,s,m)}}}function G(e,t,i,o,r,l,a,f,m,p,u){const y=[];c.findApplicableOverrides(o,l,y);const N=o.geometry;if(!("x"in N)||!("y"in N))return;const b=o.symbol,C=x(b),k=X(b.fontStyleName),P=O(b.fontFamilyName);b.font={family:P,decoration:C,...k};const M=e.frame,L=N.x-.5*(M.xmin+M.xmax),z=N.y-.5*(M.ymin+M.ymax),H=e.size/u,J=e.primitiveName,R=g(b.height)*H,Y=g(b.angle),A=g(e.offsetX)+(g(b.offsetX)+L)*H,E=g(e.offsetY)+(g(b.offsetY)+z)*H,$=h(s.getFillColor(b));let F=h(s.getStrokeColor(b)),j=s.getStrokeWidth(b);j||(F=h(s.getFillColor(b.haloSymbol)),j=b.haloSize*H);const[T,W]=re(l,J,t,i),D=JSON.stringify(e.effects)+Number(e.colorLocked)+JSON.stringify(e.anchorPoint)+e.anchorPointUnits+JSON.stringify(e.markerPlacement),U=n(JSON.stringify(o)+D+W).toString();let G=Z(o.primitiveName,r,"TextString",a,o.textString,d,b.textCase);if(null==G)return;const{fontStyleName:B}=b,q=P+(B?"-"+B.toLowerCase():"-regular"),V=q;"string"==typeof G&&G.indexOf("[")>-1&&b.fieldMap&&(G=S(b.fieldMap,G,b.textCase)),f.push({type:"text",templateHash:U,materialHash:T||"function"==typeof G||G.match(/\[(.*?)\]/)?(e,t,i)=>V+"-"+v(G,e,t,i):V+"-"+n(G),cim:b,materialOverrides:null,colorLocked:e.colorLocked,effects:t,alignment:m,anchorPoint:{x:e.anchorPoint?e.anchorPoint.x:0,y:e.anchorPoint?e.anchorPoint.y:0},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,fontName:q,decoration:C,weight:Z(J,r,"Weight",a,k.weight),style:Z(J,r,"Size",a,k.style),size:Z(J,r,"Size",a,R),angle:Z(J,r,"Rotation",a,Y),offsetX:Z(J,r,"OffsetX",a,A),offsetY:Z(J,r,"OffsetY",a,E),horizontalAlignment:I(b.horizontalAlignment),verticalAlignment:w(b.verticalAlignment),text:G,color:$,outlineColor:F,outlineSize:j,referenceSize:p,sizeRatio:1,markerPlacement:i})}function B(e,t,i,r,l,a,c,f,m,p,d,S,v){const N=r.symbol,b=N.symbolLayers;if(!b)return;if(v)return void V(e,t,i,r,a,l,c,f,m,p,d,S);let k=b.length;if(le(b))return void q(e,t,i,r,b,l,a,c,f,p,d,S);const O=C.applyEffects(N.effects,r.geometry,m.geometryEngine);if(O)for(;k--;){const v=b[k];if(v&&!1!==v.enable)switch(v.type){case"CIMSolidFill":case"CIMSolidStroke":{var P;const N=C.applyEffects(v.effects,O,m.geometryEngine),b=u(N);if(!b)continue;const[k,M,L]=y(b,e.frame,e.size,e.anchorPoint,"Relative"!==e.anchorPointUnits),I="CIMSolidFill"===v.type,w={type:"sdf",geom:N,asFill:I},X=e.primitiveName,x=null!=(P=g(e.size))?P:10,z=g(e.rotation),H=g(e.offsetX),J=g(e.offsetY),R=v.path,Y=v.primitiveName,A=h(I?s.getFillColor(v):s.getStrokeColor(v)),E=I?{r:0,g:0,b:0,a:0}:h(s.getStrokeColor(v)),$=s.getStrokeWidth(v);if(!I&&!$)break;let F=!1,j="";for(const e of l)e.primitiveName!==Y&&e.primitiveName!==X||(void 0!==e.value?j+=`-${e.primitiveName}-${e.propertyName}-${JSON.stringify(e.value)}`:e.valueExpressionInfo&&(F=!0));o(t)&&"function"==typeof t&&(F=!0);const T=JSON.stringify({...e,markerGraphics:null}),W=n(JSON.stringify(w)+R).toString(),D={type:"marker",templateHash:n(JSON.stringify(r)+JSON.stringify(v)+T+j).toString(),materialHash:F?()=>W:W,cim:w,materialOverrides:null,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:e.scaleSymbolsProportionally,alignment:p,anchorPoint:{x:M,y:L},isAbsoluteAnchorPoint:!1,size:Z(e.primitiveName,a,"Size",c,x),rotation:Z(e.primitiveName,a,"Rotation",c,z),offsetX:Z(e.primitiveName,a,"OffsetX",c,H),offsetY:Z(e.primitiveName,a,"OffsetY",c,J),scaleX:1,frameHeight:S,rotateClockwise:e.rotateClockwise,referenceSize:d,sizeRatio:k,color:Z(Y,a,"Color",c,A,_),outlineColor:Z(Y,a,"Color",c,E,_),outlineWidth:Z(Y,a,"Width",c,$),markerPlacement:i,path:R};f.push(D);break}default:V(e,t,i,r,a,l,c,f,m,p,d,S)}}}function q(e,t,i,o,r,l,a,c,f,m,p,d){const S=o.geometry,v=r[0],N=r[1],b=u(S);if(!b)return;const[C,k,O]=y(b,e.frame,e.size,e.anchorPoint,"Relative"!==e.anchorPointUnits),P={type:"sdf",geom:S,asFill:!0},M=e.primitiveName,L=g(e.size),I=g(e.rotation),w=g(e.offsetX),X=g(e.offsetY),x=N.path,z=N.primitiveName,H=v.primitiveName,J=h(s.getFillColor(N)),R=h(s.getStrokeColor(v)),Y=s.getStrokeWidth(v);let A=!1,E="";for(const n of l)n.primitiveName!==z&&n.primitiveName!==H&&n.primitiveName!==M||(void 0!==n.value?E+=`-${n.primitiveName}-${n.propertyName}-${JSON.stringify(n.value)}`:n.valueExpressionInfo&&(A=!0));const $=JSON.stringify({...e,markerGraphics:null}),F=n(JSON.stringify(P)+x).toString(),j={type:"marker",templateHash:n(JSON.stringify(o)+JSON.stringify(N)+JSON.stringify(v)+$+E).toString(),materialHash:A?()=>F:F,cim:P,materialOverrides:null,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:e.scaleSymbolsProportionally,alignment:m,anchorPoint:{x:k,y:O},isAbsoluteAnchorPoint:!1,size:Z(e.primitiveName,a,"Size",c,L),rotation:Z(e.primitiveName,a,"Rotation",c,I),offsetX:Z(e.primitiveName,a,"OffsetX",c,w),offsetY:Z(e.primitiveName,a,"OffsetY",c,X),scaleX:1,frameHeight:d,rotateClockwise:e.rotateClockwise,referenceSize:p,sizeRatio:C,color:Z(z,a,"Color",c,J,_),outlineColor:Z(H,a,"Color",c,R,_),outlineWidth:Z(H,a,"Width",c,Y),markerPlacement:i,path:x};f.push(j)}function V(e,t,i,l,a,c,f,m,p,u,y,h){const d=K(e,l);let S=[];const v=["Rotation","OffsetX","OffsetY"];S=c.filter((t=>t.primitiveName!==e.primitiveName||-1===v.indexOf(t.propertyName)));let N="";for(const o of c)void 0!==o.value&&(N+=`-${o.primitiveName}-${o.propertyName}-${JSON.stringify(o.value)}`);const[b,C,k]=s.getTextureAnchor(d,p),O=e.primitiveName,P=g(e.rotation),M=g(e.offsetX),L=g(e.offsetY),I=n(JSON.stringify(d)+N).toString(),w={type:"marker",templateHash:I,materialHash:S.length>0||o(t)&&"function"==typeof t?ie(I,a,S,f):I,cim:d,materialOverrides:S,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:e.scaleSymbolsProportionally,alignment:u,anchorPoint:{x:b,y:C},isAbsoluteAnchorPoint:!1,size:e.size,rotation:Z(O,a,"Rotation",f,P),offsetX:Z(O,a,"OffsetX",f,M),offsetY:Z(O,a,"OffsetY",f,L),color:{r:255,g:255,b:255,a:1},outlineColor:{r:0,g:0,b:0,a:0},outlineWidth:0,scaleX:1,frameHeight:h,rotateClockwise:e.rotateClockwise,referenceSize:y,sizeRatio:k/r(e.size),markerPlacement:i};m.push(w)}function K(e,t){return{type:e.type,enable:!0,name:e.name,colorLocked:e.colorLocked,primitiveName:e.primitiveName,anchorPoint:e.anchorPoint,anchorPointUnits:e.anchorPointUnits,offsetX:0,offsetY:0,rotateClockwise:e.rotateClockwise,rotation:0,size:e.size,billboardMode3D:e.billboardMode3D,depth3D:e.depth3D,frame:e.frame,markerGraphics:[t],scaleSymbolsProportionally:e.scaleSymbolsProportionally,respectFrame:e.respectFrame,clippingPath:e.clippingPath}}function Q(e){if(e&&0===e.indexOf("Level_")){const t=parseInt(e.substr(6),10);if(!isNaN(t))return t}return 0}function _(t){if(!t||0===t.length)return null;const i=new e(t).toRgba();return{r:i[0],g:i[1],b:i[2],a:i[3]}}function Z(e,t,i,o,r,n,l){const s=t[e];if(s){const e=s[i];if("string"==typeof e||"number"==typeof e||e instanceof Array)return n?n.call(null,e,l):e;if(null!=e&&e instanceof a)return(t,i,a)=>{let s=k(e,t,{$view:a},o.geometryType,i);return null!==s&&n&&(s=n.call(null,s,l)),null!==s?s:r}}return r}function ee(e,i,o,r){for(const t of i){if(t.valueExpressionInfo){const e=o[t.primitiveName]&&o[t.primitiveName][t.propertyName];e instanceof a&&(t.fn=(t,i,o)=>k(e,t,{$view:o},r.geometryType,i))}}const n=e=>e?e.charAt(0).toLowerCase()+e.substr(1):e;return(o,r,l)=>{for(const e of i)e.fn&&(e.value=e.fn(o,r,l));const a=[];for(let c of e){var s;const e=null==(s=c)?void 0:s.primitiveName;if(e){let o=!1;for(const r of i)if(r.primitiveName===e){const e=n(r.propertyName);null!=r.value&&r.value!==c[e]&&(o||(c=t(c),o=!0),c[e]=r.value)}}a.push(c)}return a}}function te(e,i,o,r){const n=[];if(c.findApplicableOverrides(e,i,n),0===n.length)return e;for(const t of n){if(t.valueExpressionInfo){const e=o[t.primitiveName]&&o[t.primitiveName][t.propertyName];e instanceof a&&(t.fn=(t,i,o)=>k(e,t,{$view:o},r.geometryType,i))}}const l=e=>e?e.charAt(0).toLowerCase()+e.substr(1):e;return(i,o,r)=>{for(const e of n)e.fn&&(e.value=e.fn(i,o,r));const a=t(e),s=e.primitiveName;for(const e of n)if(e.primitiveName===s){const t=l(e.propertyName);null!=e.value&&e.value!==a[t]&&(a[t]=e.value)}return a}}function ie(e,t,i,o){for(const r of i){if(r.valueExpressionInfo){const e=t[r.primitiveName]&&t[r.primitiveName][r.propertyName];e instanceof a&&(r.fn=(t,i,r)=>k(e,t,{$view:r},o.geometryType,i))}}return(t,o,r)=>{for(const e of i)e.fn&&(e.value=e.fn(t,o,r));return n(e+c.buildOverrideKey(i)).toString()}}function oe(e,t){if(!t||0===t.length)return e;const i=JSON.parse(JSON.stringify(e));return c.applyOverrides(i,t),i}function re(e,t,i,r){let n=!1,l="";for(const o of e)o.primitiveName===t&&(void 0!==o.value?l+=`-${o.primitiveName}-${o.propertyName}-${JSON.stringify(o.value)}`:o.valueExpressionInfo&&(n=!0));return o(i)&&"function"==typeof i&&(n=!0),o(r)&&"function"==typeof r&&(n=!0),[n,l]}function ne(e,t,i){if(e&&t)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":{const o=e.symbolLayers;if(!o)return;for(const e of o)switch(se(e,t,i),e.type){case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMCharacterMarker":case"CIMPictureMarker":"url"in e&&e.url&&i.push(t.fetchResource(e.url,null));break;case"CIMVectorMarker":{const o=e.markerGraphics;if(!o)continue;for(const e of o)if(e){const o=e.symbol;o&&ne(o,t,i)}}}}}}const le=e=>e&&2===e.length&&e[0].enable&&e[1].enable&&"CIMSolidStroke"===e[0].type&&"CIMSolidFill"===e[1].type&&!e[0].effects&&!e[1].effects;let ae;function se(e,t,i){if(!e.effects||o(t.geometryEngine))return;if(ae)return void i.push(ae);N(e.effects)&&(ae=b(),i.push(ae),ae.then((e=>t.geometryEngine=e)))}export{oe as analyzeCIMResource,J as analyzeCIMSymbol};
|
|
5
|
+
import e from"../../Color.js";import{clone as t}from"../../core/lang.js";import i from"../../core/Logger.js";import{isSome as o}from"../../core/maybe.js";import{pt2px as r}from"../../core/screenUtils.js";import{numericHash as n}from"../../core/string.js";import{createRendererExpression as l,ArcadeExpression as a}from"../../support/arcadeOnDemand.js";import{CIMSymbolHelper as s,OverrideHelper as c}from"./CIMSymbolHelper.js";import{CapType as f,JoinType as m,Alignment as u}from"./enums.js";import{getExtent as p,getSDFMetrics as y}from"./SDFHelper.js";import{fromCIMColor as h,getValue as g,_adjustTextCase as d,createLabelOverrideFunction as S,evaluateValueOrFunction as v,isGeometryEngineRequired as N,importGeometryEngine as b}from"./utils.js";import{CIMEffectHelper as C}from"./effects/CIMEffectHelper.js";import k from"../../views/2d/arcade/callExpressionWithFeature.js";import{getFontFamily as O}from"../../views/2d/engine/webgl/fontUtils.js";const P=i.getLogger("esri.symbols.cim.cimAnalyzer");function M(e){switch(e){case"Butt":return f.BUTT;case"Square":return f.SQUARE;default:return f.ROUND}}function L(e){switch(e){case"Bevel":return m.BEVEL;case"Miter":return m.MITER;default:return m.ROUND}}function I(e){switch(e){case"Left":default:return"left";case"Right":return"right";case"Center":return"center";case"Justify":return P.warnOnce("Horizontal alignment 'justify' is not implemented. Falling back to 'center'."),"center"}}function w(e){switch(e){case"Top":default:return"top";case"Center":return"middle";case"Baseline":return"baseline";case"Bottom":return"bottom"}}function X(e){let t="",i="";if(e){const o=e.toLowerCase();o.includes("italic")?t="italic":o.includes("oblique")&&(t="oblique"),o.includes("bold")?i="bold":o.includes("light")&&(i="lighter")}return{style:t,weight:i}}function z(e){return e.underline?"underline":e.strikethrough?"line-through":"none"}function H(e,t,i,o){let r;e[t]?r=e[t]:(r={},e[t]=r),r[i]=o}function J(e){const t=e.markerPlacement;return t&&t.angleToLine?u.MAP:u.SCREEN}async function x(e,t,i,o,r){const n=null!=o?o:[];if(!e)return n;let a,s;const c={};if("CIMSymbolReference"!==e.type)return P.error("Expect cim type to be 'CIMSymbolReference'"),n;if(a=e.symbol,s=e.primitiveOverrides,s){const e=[];for(const i of s){const o=i.valueExpressionInfo;if(o&&t){const r=o.expression,n=l(r,t.spatialReference,t.fields).then((e=>{e&&H(c,i.primitiveName,i.propertyName,e)}));e.push(n)}else null!=i.value&&H(c,i.primitiveName,i.propertyName,i.value)}e.length>0&&await Promise.all(e)}const f=[];switch(ne(a,i,f),f.length>0&&await Promise.all(f),a.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":R(a,s,c,t,n,i,r)}return n}function R(e,t,i,o,r,n,l){if(!e)return;const a=e.symbolLayers;if(!a)return;const f=e.effects;let m;const p=s.getSize(e);"CIMPointSymbol"===e.type&&"Map"===e.angleAlignment&&(m=u.MAP);let y=a.length;for(;y--;){const s=a[y];if(!s||!1===s.enable)continue;let u;f&&f.length&&(u=[...f]);const h=s.effects;h&&h.length&&(f?u.push(...h):u=[...h]);const g=[];let d;c.findEffectOverrides(u,t,g),d=g.length>0?ee(u,g,i,o):u;const S=[];switch(c.findApplicableOverrides(s,t,S),s.type){case"CIMSolidFill":Y(s,d,i,S,o,r);break;case"CIMPictureFill":A(s,d,i,S,o,n,r);break;case"CIMHatchFill":E(s,d,i,S,o,r);break;case"CIMGradientFill":$(s,d,i,S,o,r);break;case"CIMSolidStroke":F(s,d,i,S,o,r,"CIMPolygonSymbol"===e.type,p);break;case"CIMPictureStroke":j(s,d,i,S,o,r,"CIMPolygonSymbol"===e.type,p);break;case"CIMGradientStroke":T(s,d,i,S,o,r,"CIMPolygonSymbol"===e.type,p);break;case"CIMCharacterMarker":if(W(s,d,i,S,o,r))break;break;case"CIMPictureMarker":if(W(s,d,i,S,o,r))break;"CIMLineSymbol"===e.type&&(m=J(s)),D(s,d,i,S,o,n,r,m,p);break;case"CIMVectorMarker":if(W(s,d,i,S,o,r))break;"CIMLineSymbol"===e.type&&(m=J(s)),U(s,d,i,S,o,r,n,m,p,l);break;default:P.error("Cannot analyze CIM layer",s.type)}}}function Y(e,t,i,o,r,l){const a=e.primitiveName,s=h(e.color),[c,f]=re(o,a,t,null),m=n(JSON.stringify(e)+f).toString();l.push({type:"fill",templateHash:m,materialHash:c?()=>m:m,cim:e,materialOverrides:null,colorLocked:e.colorLocked,color:Z(a,i,"Color",r,s,_),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t})}function A(e,t,i,r,l,a,s){const c=e.primitiveName,f=e.tintColor?h(e.tintColor):{r:255,g:255,b:255,a:1},[m,u]=re(r,c,t,null),p=n(JSON.stringify(e)+u).toString(),y=n(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString();let d=g(e.scaleX);if("width"in e){const t=e.width;let i=1;const r=a.getResource(e.url);o(r)&&(i=r.width/r.height),d/=i*(e.height/t)}s.push({type:"fill",templateHash:p,materialHash:m?()=>y:y,cim:e,materialOverrides:null,colorLocked:e.colorLocked,effects:t,color:Z(c,i,"TintColor",l,f,_),height:Z(c,i,"Height",l,e.height),scaleX:Z(c,i,"ScaleX",l,d),angle:Z(c,i,"Rotation",l,g(e.rotation)),offsetX:Z(c,i,"OffsetX",l,g(e.offsetX)),offsetY:Z(c,i,"OffsetY",l,g(e.offsetY)),url:e.url})}function E(e,t,i,o,r,l){const a=["Rotation","OffsetX","OffsetY"],s=o.filter((t=>t.primitiveName!==e.primitiveName&&!a.includes(t.propertyName))),c=e.primitiveName,[f,m]=re(o,c,t,null),u=n(JSON.stringify(e)+m).toString(),p=n(`${e.separation}${JSON.stringify(e.lineSymbol)}`).toString();l.push({type:"fill",templateHash:u,materialHash:f?ie(p,i,s,r):p,cim:e,materialOverrides:s,colorLocked:e.colorLocked,effects:t,color:{r:255,g:255,b:255,a:1},height:Z(c,i,"Separation",r,e.separation),scaleX:1,angle:Z(c,i,"Rotation",r,g(e.rotation)),offsetX:Z(c,i,"OffsetX",r,g(e.offsetX)),offsetY:Z(c,i,"OffsetY",r,g(e.offsetY))})}function $(e,t,i,o,r,l){const a=e.primitiveName,[s,c]=re(o,a,t,null),f=n(JSON.stringify(e)+c).toString();l.push({type:"fill",templateHash:f,materialHash:s?ie(f,i,o,r):f,cim:e,materialOverrides:null,colorLocked:e.colorLocked,effects:t,color:{r:128,g:128,b:128,a:1},height:0,angle:0,offsetX:0,offsetY:0,scaleX:1})}function F(e,t,i,o,r,l,a,s){const c=e.primitiveName,f=h(e.color),m=void 0!==e.width?e.width:4,u=M(e.capStyle),p=L(e.joinStyle),y=e.miterLimit,[g,d]=re(o,c,t,null),S=n(JSON.stringify(e)+d).toString();let v,N;if(t&&t instanceof Array&&t.length>0){const e=t[t.length-1];if("CIMGeometricEffectDashes"===e.type&&"NoConstraint"===e.lineDashEnding&&null===e.offsetAlongLine){const e=(t=[...t]).pop();v=e.dashTemplate,N=e.scaleDash}}l.push({type:"line",templateHash:S,materialHash:g?()=>S:S,cim:e,materialOverrides:null,isOutline:a,colorLocked:e.colorLocked,effects:t,color:Z(c,i,"Color",r,f,_),width:Z(c,i,"Width",r,m),cap:Z(c,i,"CapStyle",r,u),join:Z(c,i,"JoinStyle",r,p),miterLimit:Z(c,i,"MiterLimit",r,y),referenceWidth:s,zOrder:Q(e.name),dashTemplate:v,scaleDash:N})}function j(e,t,i,o,r,l,a,s){const c=n(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString(),f=e.primitiveName,m=h(e.tintColor),u=void 0!==e.width?e.width:4,p=M(e.capStyle),y=L(e.joinStyle),g=e.miterLimit,[d,S]=re(o,f,t,null),v=n(JSON.stringify(e)+S).toString();l.push({type:"line",templateHash:v,materialHash:d?()=>c:c,cim:e,materialOverrides:null,isOutline:a,colorLocked:e.colorLocked,effects:t,color:Z(f,i,"TintColor",r,m,_),width:Z(f,i,"Width",r,u),cap:Z(f,i,"CapStyle",r,p),join:Z(f,i,"JoinStyle",r,y),miterLimit:Z(f,i,"MiterLimit",r,g),referenceWidth:s,zOrder:Q(e.name),dashTemplate:null,scaleDash:!1,url:e.url})}function T(e,t,i,o,r,l,a,s){const c=e.primitiveName,f=void 0!==e.width?e.width:4,m=M(e.capStyle),u=L(e.joinStyle),p=e.miterLimit,[y,h]=re(o,c,t,null),g=n(JSON.stringify(e)+h).toString();l.push({type:"line",templateHash:g,materialHash:y?ie(g,i,o,r):g,cim:e,materialOverrides:null,isOutline:a,colorLocked:e.colorLocked,effects:t,color:{r:128,g:128,b:128,a:1},width:Z(c,i,"Width",r,f),cap:Z(c,i,"CapStyle",r,m),join:Z(c,i,"JoinStyle",r,u),miterLimit:Z(c,i,"MiterLimit",r,p),referenceWidth:s,zOrder:Q(e.name),dashTemplate:null,scaleDash:!1})}function W(e,t,i,o,r,l){const a=e.markerPlacement;if(!a||"CIMMarkerPlacementInsidePolygon"!==a.type)return!1;const s=a,c=["Rotation","OffsetX","OffsetY"],f=o.filter((t=>t.primitiveName!==e.primitiveName&&!c.includes(t.propertyName))),m="url"in e?e.url:null,[u,p]=re(o,s.primitiveName,t,null),y=n(JSON.stringify(e)+p).toString();let h=s.stepY,d=null,S=1;return a.shiftOddRows&&(h*=2,d=function(e){return e?2*e:0},S=.5),l.push({type:"fill",templateHash:y,materialHash:u?ie(y,i,f,r):y,cim:e,materialOverrides:f,colorLocked:e.colorLocked,effects:t,color:{r:255,g:255,b:255,a:1},height:Z(s.primitiveName,i,"StepY",r,h,d),scaleX:S,angle:Z(s.primitiveName,i,"GridAngle",r,s.gridAngle),offsetX:Z(s.primitiveName,i,"OffsetX",r,g(s.offsetX)),offsetY:Z(s.primitiveName,i,"OffsetY",r,g(s.offsetY)),url:m}),!0}function D(e,t,i,r,l,a,s,c,f){var m;const u=e.primitiveName,p=g(e.size);let y=g(e.scaleX);const d=g(e.rotation),S=g(e.offsetX),v=g(e.offsetY),N=e.tintColor?h(e.tintColor):{r:255,g:255,b:255,a:1},b=n(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString(),C=te(e.markerPlacement,r,i,l),[k,O]=re(r,u,t,C),P=n(JSON.stringify(e)+O).toString(),M=null!=(m=e.anchorPoint)?m:{x:0,y:0};if("width"in e){const t=e.width;let i=1;const r=a.getResource(e.url);o(r)&&(i=r.width/r.height),y/=i*(p/t)}s.push({type:"marker",templateHash:P,materialHash:k?()=>b:b,cim:e,materialOverrides:null,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:!1,alignment:c,size:Z(u,i,"Size",l,p),scaleX:Z(u,i,"ScaleX",l,y),rotation:Z(u,i,"Rotation",l,d),offsetX:Z(u,i,"OffsetX",l,S),offsetY:Z(u,i,"OffsetY",l,v),color:Z(u,i,"TintColor",l,N,_),anchorPoint:{x:M.x,y:-M.y},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,outlineColor:{r:0,g:0,b:0,a:0},outlineWidth:0,frameHeight:0,rotateClockwise:e.rotateClockwise,referenceSize:f,sizeRatio:1,markerPlacement:e.markerPlacement,url:e.url})}function U(e,t,i,o,r,n,l,a,s,c){const f=e.markerGraphics;if(!f)return;let m=0;if(e.scaleSymbolsProportionally){const t=e.frame;t&&(m=t.ymax-t.ymin)}const u=te(e.markerPlacement,o,i,r);for(const p of f)if(p){const f=p.symbol;if(!f)continue;switch(f.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":B(e,t,u,p,o,i,r,n,l,a,s,m,c);break;case"CIMTextSymbol":G(e,t,u,p,i,o,r,n,a,s,m)}}}function G(e,t,i,o,r,l,a,f,m,u,p){const y=[];c.findApplicableOverrides(o,l,y);const N=o.geometry;if(!("x"in N)||!("y"in N))return;const b=o.symbol,C=z(b),k=X(b.fontStyleName),P=O(b.fontFamilyName);b.font={family:P,decoration:C,...k};const M=e.frame,L=N.x-.5*(M.xmin+M.xmax),H=N.y-.5*(M.ymin+M.ymax),J=e.size/p,x=e.primitiveName,R=g(b.height)*J,Y=g(b.angle),A=g(e.offsetX)+(g(b.offsetX)+L)*J,E=g(e.offsetY)+(g(b.offsetY)+H)*J,$=h(s.getFillColor(b));let F=h(s.getStrokeColor(b)),j=s.getStrokeWidth(b);j||(F=h(s.getFillColor(b.haloSymbol)),j=b.haloSize*J);const[T,W]=re(l,x,t,i),D=JSON.stringify(e.effects)+Number(e.colorLocked)+JSON.stringify(e.anchorPoint)+e.anchorPointUnits+JSON.stringify(e.markerPlacement),U=n(JSON.stringify(o)+D+W).toString();let G=Z(o.primitiveName,r,"TextString",a,o.textString,d,b.textCase);if(null==G)return;const{fontStyleName:B}=b,q=P+(B?"-"+B.toLowerCase():"-regular"),V=q;"string"==typeof G&&G.includes("[")&&b.fieldMap&&(G=S(b.fieldMap,G,b.textCase)),f.push({type:"text",templateHash:U,materialHash:T||"function"==typeof G||G.match(/\[(.*?)\]/)?(e,t,i)=>V+"-"+v(G,e,t,i):V+"-"+n(G),cim:b,materialOverrides:null,colorLocked:e.colorLocked,effects:t,alignment:m,anchorPoint:{x:e.anchorPoint?e.anchorPoint.x:0,y:e.anchorPoint?e.anchorPoint.y:0},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,fontName:q,decoration:C,weight:Z(x,r,"Weight",a,k.weight),style:Z(x,r,"Size",a,k.style),size:Z(x,r,"Size",a,R),angle:Z(x,r,"Rotation",a,Y),offsetX:Z(x,r,"OffsetX",a,A),offsetY:Z(x,r,"OffsetY",a,E),horizontalAlignment:I(b.horizontalAlignment),verticalAlignment:w(b.verticalAlignment),text:G,color:$,outlineColor:F,outlineSize:j,referenceSize:u,sizeRatio:1,markerPlacement:i})}function B(e,t,i,r,l,a,c,f,m,u,d,S,v){const N=r.symbol,b=N.symbolLayers;if(!b)return;if(v)return void V(e,t,i,r,a,l,c,f,m,u,d,S);let k=b.length;if(le(b))return void q(e,t,i,r,b,l,a,c,f,u,d,S);const O=C.applyEffects(N.effects,r.geometry,m.geometryEngine);if(O)for(;k--;){const v=b[k];if(v&&!1!==v.enable)switch(v.type){case"CIMSolidFill":case"CIMSolidStroke":{var P;const N=C.applyEffects(v.effects,O,m.geometryEngine),b=p(N);if(!b)continue;const[k,M,L]=y(b,e.frame,e.size,e.anchorPoint,"Relative"!==e.anchorPointUnits),I="CIMSolidFill"===v.type,w={type:"sdf",geom:N,asFill:I},X=e.primitiveName,z=null!=(P=g(e.size))?P:10,H=g(e.rotation),J=g(e.offsetX),x=g(e.offsetY),R=v.path,Y=v.primitiveName,A=h(I?s.getFillColor(v):s.getStrokeColor(v)),E=I?{r:0,g:0,b:0,a:0}:h(s.getStrokeColor(v)),$=s.getStrokeWidth(v);if(!I&&!$)break;let F=!1,j="";for(const e of l)e.primitiveName!==Y&&e.primitiveName!==X||(void 0!==e.value?j+=`-${e.primitiveName}-${e.propertyName}-${JSON.stringify(e.value)}`:e.valueExpressionInfo&&(F=!0));o(t)&&"function"==typeof t&&(F=!0);const T=JSON.stringify({...e,markerGraphics:null}),W=n(JSON.stringify(w)+R).toString(),D={type:"marker",templateHash:n(JSON.stringify(r)+JSON.stringify(v)+T+j).toString(),materialHash:F?()=>W:W,cim:w,materialOverrides:null,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:e.scaleSymbolsProportionally,alignment:u,anchorPoint:{x:M,y:L},isAbsoluteAnchorPoint:!1,size:Z(e.primitiveName,a,"Size",c,z),rotation:Z(e.primitiveName,a,"Rotation",c,H),offsetX:Z(e.primitiveName,a,"OffsetX",c,J),offsetY:Z(e.primitiveName,a,"OffsetY",c,x),scaleX:1,frameHeight:S,rotateClockwise:e.rotateClockwise,referenceSize:d,sizeRatio:k,color:Z(Y,a,"Color",c,A,_),outlineColor:Z(Y,a,"Color",c,E,_),outlineWidth:Z(Y,a,"Width",c,$),markerPlacement:i,path:R};f.push(D);break}default:V(e,t,i,r,a,l,c,f,m,u,d,S)}}}function q(e,t,i,o,r,l,a,c,f,m,u,d){const S=o.geometry,v=r[0],N=r[1],b=p(S);if(!b)return;const[C,k,O]=y(b,e.frame,e.size,e.anchorPoint,"Relative"!==e.anchorPointUnits),P={type:"sdf",geom:S,asFill:!0},M=e.primitiveName,L=g(e.size),I=g(e.rotation),w=g(e.offsetX),X=g(e.offsetY),z=N.path,H=N.primitiveName,J=v.primitiveName,x=h(s.getFillColor(N)),R=h(s.getStrokeColor(v)),Y=s.getStrokeWidth(v);let A=!1,E="";for(const n of l)n.primitiveName!==H&&n.primitiveName!==J&&n.primitiveName!==M||(void 0!==n.value?E+=`-${n.primitiveName}-${n.propertyName}-${JSON.stringify(n.value)}`:n.valueExpressionInfo&&(A=!0));const $=JSON.stringify({...e,markerGraphics:null}),F=n(JSON.stringify(P)+z).toString(),j={type:"marker",templateHash:n(JSON.stringify(o)+JSON.stringify(N)+JSON.stringify(v)+$+E).toString(),materialHash:A?()=>F:F,cim:P,materialOverrides:null,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:e.scaleSymbolsProportionally,alignment:m,anchorPoint:{x:k,y:O},isAbsoluteAnchorPoint:!1,size:Z(e.primitiveName,a,"Size",c,L),rotation:Z(e.primitiveName,a,"Rotation",c,I),offsetX:Z(e.primitiveName,a,"OffsetX",c,w),offsetY:Z(e.primitiveName,a,"OffsetY",c,X),scaleX:1,frameHeight:d,rotateClockwise:e.rotateClockwise,referenceSize:u,sizeRatio:C,color:Z(H,a,"Color",c,x,_),outlineColor:Z(J,a,"Color",c,R,_),outlineWidth:Z(J,a,"Width",c,Y),markerPlacement:i,path:z};f.push(j)}function V(e,t,i,l,a,c,f,m,u,p,y,h){const d=K(e,l);let S=[];const v=["Rotation","OffsetX","OffsetY"];S=c.filter((t=>t.primitiveName!==e.primitiveName||!v.includes(t.propertyName)));let N="";for(const o of c)void 0!==o.value&&(N+=`-${o.primitiveName}-${o.propertyName}-${JSON.stringify(o.value)}`);const[b,C,k]=s.getTextureAnchor(d,u),O=e.primitiveName,P=g(e.rotation),M=g(e.offsetX),L=g(e.offsetY),I=n(JSON.stringify(d)+N).toString(),w={type:"marker",templateHash:I,materialHash:S.length>0||o(t)&&"function"==typeof t?ie(I,a,S,f):I,cim:d,materialOverrides:S,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:e.scaleSymbolsProportionally,alignment:p,anchorPoint:{x:b,y:C},isAbsoluteAnchorPoint:!1,size:e.size,rotation:Z(O,a,"Rotation",f,P),offsetX:Z(O,a,"OffsetX",f,M),offsetY:Z(O,a,"OffsetY",f,L),color:{r:255,g:255,b:255,a:1},outlineColor:{r:0,g:0,b:0,a:0},outlineWidth:0,scaleX:1,frameHeight:h,rotateClockwise:e.rotateClockwise,referenceSize:y,sizeRatio:k/r(e.size),markerPlacement:i};m.push(w)}function K(e,t){return{type:e.type,enable:!0,name:e.name,colorLocked:e.colorLocked,primitiveName:e.primitiveName,anchorPoint:e.anchorPoint,anchorPointUnits:e.anchorPointUnits,offsetX:0,offsetY:0,rotateClockwise:e.rotateClockwise,rotation:0,size:e.size,billboardMode3D:e.billboardMode3D,depth3D:e.depth3D,frame:e.frame,markerGraphics:[t],scaleSymbolsProportionally:e.scaleSymbolsProportionally,respectFrame:e.respectFrame,clippingPath:e.clippingPath}}function Q(e){if(e&&0===e.indexOf("Level_")){const t=parseInt(e.substr(6),10);if(!isNaN(t))return t}return 0}function _(t){if(!t||0===t.length)return null;const i=new e(t).toRgba();return{r:i[0],g:i[1],b:i[2],a:i[3]}}function Z(e,t,i,o,r,n,l){const s=t[e];if(s){const e=s[i];if("string"==typeof e||"number"==typeof e||e instanceof Array)return n?n.call(null,e,l):e;if(null!=e&&e instanceof a)return(t,i,a)=>{let s=k(e,t,{$view:a},o.geometryType,i);return null!==s&&n&&(s=n.call(null,s,l)),null!==s?s:r}}return r}function ee(e,i,o,r){for(const t of i){if(t.valueExpressionInfo){const e=o[t.primitiveName]&&o[t.primitiveName][t.propertyName];e instanceof a&&(t.fn=(t,i,o)=>k(e,t,{$view:o},r.geometryType,i))}}const n=e=>e?e.charAt(0).toLowerCase()+e.substr(1):e;return(o,r,l)=>{for(const e of i)e.fn&&(e.value=e.fn(o,r,l));const a=[];for(let c of e){var s;const e=null==(s=c)?void 0:s.primitiveName;if(e){let o=!1;for(const r of i)if(r.primitiveName===e){const e=n(r.propertyName);null!=r.value&&r.value!==c[e]&&(o||(c=t(c),o=!0),c[e]=r.value)}}a.push(c)}return a}}function te(e,i,o,r){const n=[];if(c.findApplicableOverrides(e,i,n),0===n.length)return e;for(const t of n){if(t.valueExpressionInfo){const e=o[t.primitiveName]&&o[t.primitiveName][t.propertyName];e instanceof a&&(t.fn=(t,i,o)=>k(e,t,{$view:o},r.geometryType,i))}}const l=e=>e?e.charAt(0).toLowerCase()+e.substr(1):e;return(i,o,r)=>{for(const e of n)e.fn&&(e.value=e.fn(i,o,r));const a=t(e),s=e.primitiveName;for(const e of n)if(e.primitiveName===s){const t=l(e.propertyName);null!=e.value&&e.value!==a[t]&&(a[t]=e.value)}return a}}function ie(e,t,i,o){for(const r of i){if(r.valueExpressionInfo){const e=t[r.primitiveName]&&t[r.primitiveName][r.propertyName];e instanceof a&&(r.fn=(t,i,r)=>k(e,t,{$view:r},o.geometryType,i))}}return(t,o,r)=>{for(const e of i)e.fn&&(e.value=e.fn(t,o,r));return n(e+c.buildOverrideKey(i)).toString()}}function oe(e,t){if(!t||0===t.length)return e;const i=JSON.parse(JSON.stringify(e));return c.applyOverrides(i,t),i}function re(e,t,i,r){let n=!1,l="";for(const o of e)o.primitiveName===t&&(void 0!==o.value?l+=`-${o.primitiveName}-${o.propertyName}-${JSON.stringify(o.value)}`:o.valueExpressionInfo&&(n=!0));return o(i)&&"function"==typeof i&&(n=!0),o(r)&&"function"==typeof r&&(n=!0),[n,l]}function ne(e,t,i){if(e&&t)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":{const o=e.symbolLayers;if(!o)return;for(const e of o)switch(se(e,t,i),e.type){case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMCharacterMarker":case"CIMPictureMarker":"url"in e&&e.url&&i.push(t.fetchResource(e.url,null));break;case"CIMVectorMarker":{const o=e.markerGraphics;if(!o)continue;for(const e of o)if(e){const o=e.symbol;o&&ne(o,t,i)}}}}}}const le=e=>e&&2===e.length&&e[0].enable&&e[1].enable&&"CIMSolidStroke"===e[0].type&&"CIMSolidFill"===e[1].type&&!e[0].effects&&!e[1].effects;let ae;function se(e,t,i){if(!e.effects||o(t.geometryEngine))return;if(ae)return void i.push(ae);N(e.effects)&&(ae=b(),i.push(ae),ae.then((e=>t.geometryEngine=e)))}export{oe as analyzeCIMResource,x as analyzeCIMSymbol};
|
package/symbols/cim/utils.js
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
function t(t){return"function"==typeof t}function e(e,r,n,o){return t(e)?e(r,n,o):e}function r(t){return[t.r,t.g,t.b,t.a]}function n(t,e,r){const n=" /-,\n",a=t=>{let e=t.length;for(;e--;)if(
|
|
5
|
+
function t(t){return"function"==typeof t}function e(e,r,n,o){return t(e)?e(r,n,o):e}function r(t){return[t.r,t.g,t.b,t.a]}function n(t,e,r){const n=" /-,\n",a=t=>{let e=t.length;for(;e--;)if(!n.includes(t.charAt(e)))return!1;return!0},i=[];let l=0,c=-1;do{if(c=e.indexOf("[",l),c>=l){if(c>l){const t=e.substr(l,c-l);i.push([t,null,a(t)])}if(l=c+1,c=e.indexOf("]",l),c>=l){if(c>l){const r=t[e.substr(l,c-l)];r&&i.push([null,r,!1])}l=c+1}}}while(-1!==c);if(l<e.length-1){const t=e.substr(l);i.push([t,null,a(t)])}return t=>{let e="",n=null;for(const r of i){const[o,a,i]=r;if(o)i?n=o:(n&&(e+=n,n=null),e+=o);else{const r=t.attributes[a];r&&(n&&(e+=n,n=null),e+=r)}}return o(e,r)}}function o(t,e){switch("string"!=typeof t&&(t=String(t)),e){case"LowerCase":return t.toLowerCase();case"Allcaps":return t.toUpperCase();default:return t}}function a(t,e,r,n,o,a,i=!0){const l=e/o,c=r/a,u=Math.ceil(l/2),s=Math.ceil(c/2);for(let f=0;f<a;f++)for(let r=0;r<o;r++){const M=4*(r+(i?a-f-1:f)*o);let p=0,C=0,y=0,I=0,h=0,k=0,m=0;const d=(f+.5)*c;for(let n=Math.floor(f*c);n<(f+1)*c;n++){const o=Math.abs(d-(n+.5))/s,a=(r+.5)*l,i=o*o;for(let c=Math.floor(r*l);c<(r+1)*l;c++){let r=Math.abs(a-(c+.5))/u;const o=Math.sqrt(i+r*r);o>=-1&&o<=1&&(p=2*o*o*o-3*o*o+1,p>0&&(r=4*(c+n*e),m+=p*t[r+3],y+=p,t[r+3]<255&&(p=p*t[r+3]/250),I+=p*t[r],h+=p*t[r+1],k+=p*t[r+2],C+=p))}}n[M]=I/C,n[M+1]=h/C,n[M+2]=k/C,n[M+3]=m/y}}function i(t){return t?{r:t[0],g:t[1],b:t[2],a:t[3]/255}:{r:0,g:0,b:0,a:0}}function l(t){var e;return null==(e=t.data)?void 0:e.symbol}function c(t){return"CIMVectorMarker"===t.type||"CIMPictureMarker"===t.type||"CIMBarChartMarker"===t.type||"CIMCharacterMarker"===t.type||"CIMPieChartMarker"===t.type||"CIMStackedBarChartMarker"===t.type}function u(t){return"CIMGradientStroke"===t.type||"CIMPictureStroke"===t.type||"CIMSolidStroke"===t.type}function s(t){return"CIMGradientFill"===t.type||"CIMHatchFill"===t.type||"CIMPictureFill"===t.type||"CIMSolidFill"===t.type||"CIMWaterFill"===t.type}function f(t){return"CIMMarkerPlacementAlongLineRandomSize"===t.type||"CIMMarkerPlacementAlongLineSameSize"===t.type||"CIMMarkerPlacementAlongLineVariableSize"===t.type||"CIMMarkerPlacementAtExtremities"===t.type||"CIMMarkerPlacementAtMeasuredUnits"===t.type||"CIMMarkerPlacementAtRatioPositions"===t.type||"CIMMarkerPlacementOnLine"===t.type||"CIMMarkerPlacementOnVertices"===t.type}const M=t=>isNaN(t)||!t?0:t,p=t=>{if(!t)return!1;for(const e of t)switch(e.type){case"CIMGeometricEffectBuffer":case"CIMGeometricEffectOffset":return!0}return!1};function C(){return import("../../geometry/geometryEngineJSON.js")}export{o as _adjustTextCase,r as colorToArray,n as createLabelOverrideFunction,e as evaluateValueOrFunction,i as fromCIMColor,M as getValue,C as importGeometryEngine,s as isCIMFill,c as isCIMMarker,f as isCIMMarkerStrokePlacement,u as isCIMStroke,p as isGeometryEngineRequired,a as resampleHermite,l as toCIMSymbolJSON};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{getAssetUrl as e}from"../../assets.js";import{toHSV as t,toRGB as s}from"../../core/colorUtils.js";import"../../core/has.js";import r from"../../core/Error.js";import o from"../../core/Logger.js";import{isNone as n,isSome as a}from"../../core/maybe.js";import{eachAlways as l}from"../../core/promiseUtils.js";import{pt2px as i}from"../../core/screenUtils.js";import{defaultThematicColor as c,getPatternUrlWithColor as p,dekebabifyLineStyle as u}from"./gfxUtils.js";import{defaultPrimitive as h}from"./IconSymbol3DLayerResource.js";import{defaultPrimitive as m}from"./ObjectSymbol3DLayerResource.js";import{SymbolSizeDefaults as f,adjustColorComponentBrightness as y,getPathSymbolShapes as d,shapes as b,getExtrudeSymbolShapes as v,getTetrahedronShapes as g,getDiamondShapes as k,getCylinderShapes as w,getCubeShapes as x,getInvertedConeShapes as M,getConeShapes as j,getWaterSymbolShapes as L}from"./previewUtils.js";import{renderSymbol as z,tintImageWithColor as S}from"./renderUtils.js";import{isVolumetricSymbol as P,getIconHref as U}from"./utils.js";import{resolveWebStyleSymbol as D}from"./webStyleSymbolUtils.js";const O=f.size,C=f.maxSize,I=f.maxOutlineSize,R=f.lineWidth,E=f.tallSymbolWidth,Z=o.getLogger("esri.symbols.support.previewSymbol3D");function q(e){const t=e.outline,s=a(e.material)?e.material.color:null,r=a(s)?s.toHex():null;if(n(t)||"pattern"in t&&a(t.pattern)&&"style"===t.pattern.type&&"none"===t.pattern.style)return"fill"===e.type&&"#ffffff"===r?{color:"#bdc3c7",width:.75}:null;const o=i(t.size)||0;return{color:"rgba("+(a(t.color)?t.color.toRgba():"255,255,255,1")+")",width:Math.min(o,I),style:"pattern"in t&&a(t.pattern)&&"style"===t.pattern.type?u(t.pattern.style):null,join:"butt",cap:"patternCap"in t?t.patternCap:"butt"}}function A(t,s){const r=s&&s.resource,o=r&&r.href;if(t.thumbnail&&t.thumbnail.url)return Promise.resolve(t.thumbnail.url);if(o&&"object"!==s.type)return Promise.resolve(U(t,s));const n=e("esri/images/Legend/legend3dsymboldefault.png");return t.styleOrigin&&(t.styleOrigin.styleName||t.styleOrigin.styleUrl)?D(t.styleOrigin,{portal:t.styleOrigin.portal},"webRef").catch((e=>e)).then((e=>{var t;return(null==e||null==(t=e.thumbnail)?void 0:t.url)||n})):Promise.resolve(n)}function H(e,r=1){const o=e.a,n=t(e),a=n.h,l=n.s/r,i=100-(100-n.v)/r,{r:c,g:p,b:u}=s({h:a,s:l,v:i});return[c,p,u,o]}function N(e){return"water"===e.type?n(e.color)?null:e.color:n(e.material)||n(e.material.color)?null:e.material.color}function T(e,t=0){const s=N(e);if(!s){if("fill"===e.type)return null;const s=c.r,r=y(s,t);return[r,r,r,100]}const r=s.toRgba();for(let o=0;o<3;o++)r[o]=y(r[o],t);return r}async function W(t,s){const r=t.style;if("none"===r)return null;return{type:"pattern",x:0,y:0,src:await p(e(`esri/symbols/patterns/${r}.png`),s.toCss(!0)),width:5,height:5}}function $(e){return e.outline?q(e):{color:"rgba(0, 0, 0, 1)",width:1.5}}function B(e,t){const s=N(e);if(!s)return null;let r="rgba(";return r+=y(s.r,t)+",",r+=y(s.g,t)+",",r+=y(s.b,t)+",",r+s.a+");"}function F(e,t){const s=B(e,t);if(!s)return{};if("pattern"in e&&a(e.pattern)&&"style"===e.pattern.type&&"none"===e.pattern.style)return null;return{color:s,width:Math.min(e.size?i(e.size):.75,I),style:"pattern"in e&&a(e.pattern)&&"style"===e.pattern.type?u(e.pattern.style):null,cap:"cap"in e?e.cap:null,join:"join"in e?"miter"===e.join?i(2):e.join:null}}function G(e,t,s){const r=.75*s;return{type:"linear",x1:r?.25*r:0,y1:r?.5*r:0,x2:r||4,y2:r?.5*r:4,colors:[{color:e,offset:0},{color:t,offset:1}]}}function J(e){const t=e.depth,s=e.height,r=e.width;return r&&t&&s&&r===t&&r<s}function K(e,t,s){const r=[];if(!e)return r;switch(e.type){case"icon":{const s=0,o=0,n=t,a=t;switch(e.resource&&e.resource.primitive||h){case"circle":r.push({shape:{type:"circle",cx:0,cy:0,r:.5*t},fill:T(e,0),stroke:q(e)});break;case"square":r.push({shape:{type:"path",path:[{command:"M",values:[s,a]},{command:"L",values:[s,o]},{command:"L",values:[n,o]},{command:"L",values:[n,a]},{command:"Z",values:[]}]},fill:T(e,0),stroke:q(e)});break;case"triangle":r.push({shape:{type:"path",path:[{command:"M",values:[s,a]},{command:"L",values:[.5*n,o]},{command:"L",values:[n,a]},{command:"Z",values:[]}]},fill:T(e,0),stroke:q(e)});break;case"cross":r.push({shape:{type:"path",path:[{command:"M",values:[.5*n,o]},{command:"L",values:[.5*n,a]},{command:"M",values:[s,.5*a]},{command:"L",values:[n,.5*a]}]},stroke:$(e)});break;case"x":r.push({shape:{type:"path",path:[{command:"M",values:[s,o]},{command:"L",values:[n,a]},{command:"M",values:[n,o]},{command:"L",values:[s,a]}]},stroke:$(e)});break;case"kite":r.push({shape:{type:"path",path:[{command:"M",values:[s,.5*a]},{command:"L",values:[.5*n,o]},{command:"L",values:[n,.5*a]},{command:"L",values:[.5*n,a]},{command:"Z",values:[]}]},fill:T(e,0),stroke:q(e)})}break}case"object":switch(e.resource&&e.resource.primitive||m){case"cone":{const o=G(T(e,0),T(e,-.6),s?E:t),n=j(t,s);r.push({shape:n[0],fill:o}),r.push({shape:n[1],fill:o});break}case"inverted-cone":{const s=T(e,0),o=G(s,T(e,-.6),t),n=M(t);r.push({shape:n[0],fill:o}),r.push({shape:n[1],fill:s});break}case"cube":{const o=x(t,s);r.push({shape:o[0],fill:T(e,0)}),r.push({shape:o[1],fill:T(e,-.3)}),r.push({shape:o[2],fill:T(e,-.5)});break}case"cylinder":{const o=G(T(e,0),T(e,-.6),s?E:t),n=w(t,s);r.push({shape:n[0],fill:o}),r.push({shape:n[1],fill:o}),r.push({shape:n[2],fill:T(e,0)});break}case"diamond":{const s=k(t);r.push({shape:s[0],fill:T(e,-.3)}),r.push({shape:s[1],fill:T(e,0)}),r.push({shape:s[2],fill:T(e,-.3)}),r.push({shape:s[3],fill:T(e,-.7)});break}case"sphere":{const s=G(T(e,0),T(e,-.6));s.x1=0,s.y1=0,s.x2=.25*t,s.y2=.25*t,r.push({shape:{type:"circle",cx:0,cy:0,r:.5*t},fill:s});break}case"tetrahedron":{const s=g(t);r.push({shape:s[0],fill:T(e,-.3)}),r.push({shape:s[1],fill:T(e,0)}),r.push({shape:s[2],fill:T(e,-.6)});break}}break}return r}function Q(e){const t="number"==typeof(null==e?void 0:e.size)?null==e?void 0:e.size:null;return t?i(t):null}function V(e){return"icon"===e.type?"multiply":"tint"}function X(e,t){const s=Q(t),r=t&&t.maxSize?i(t.maxSize):null,o=t&&t.disableUpsampling,n=e.symbolLayers,a=[];let c=0,p=0;const u=n.getItemAt(n.length-1);let h;return u&&"icon"===u.type&&(h=u.size&&i(u.size)),n.forEach((n=>{if("icon"!==n.type&&"object"!==n.type)return;const l="icon"===n.type?n.size&&i(n.size):0,u=s||l?Math.ceil(Math.min(s||l,r||C)):O;if(n&&n.resource&&n.resource.href){const t=A(e,n).then((function(e){const t=n.get("material.color"),s=V(n);return S(e,u,t,s,o)})).then((function(e){const t=e.width,s=e.height;return c=Math.max(c,t),p=Math.max(p,s),[{shape:{type:"image",x:0,y:0,width:t,height:s,src:e.url},fill:null,stroke:null}]}));a.push(t)}else{var m;let e=u;"icon"===n.type&&h&&s&&(e=u*(l/h));const r="tall"===(null==t?void 0:t.symbolConfig)||(null==t||null==(m=t.symbolConfig)?void 0:m.isTall)||"object"===n.type&&J(n);c=Math.max(c,r?E:e),p=Math.max(p,e),a.push(Promise.resolve(K(n,e,r)))}})),l(a).then((function(e){const s=[];return e.forEach((function(e){e.value?s.push(e.value):e.error&&Z.warn("error while building swatchInfo!",e.error)})),z(s,[c,p],{node:t&&t.node,scale:!1,opacity:t&&t.opacity})}))}function Y(e,t){const s=e.symbolLayers,r=[],o=P(e),a=Q(t),l=(t&&t.maxSize?i(t.maxSize):null)||I;let c,p=0,u=0;return s.forEach(((e,t)=>{if(!e)return;if("line"!==e.type&&"path"!==e.type)return;const s=[];switch(e.type){case"line":{const r=F(e,0);if(n(r))break;const o=r&&r.width||0;0===t&&(c=o);const i=Math.min(a||o,l),h=0===t?i:a?i*(o/c):i,m=h>R/2?2*h:R;u=Math.max(u,h),p=Math.max(p,m),r.width=h,s.push({shape:{type:"path",path:[{command:"M",values:[0,.5*u]},{command:"L",values:[p,.5*u]}]},stroke:r});break}case"path":{const t=Math.min(a||O,l),r=T(e,0),o=T(e,-.2),n=B(e,-.4),i=n?{color:n,width:1}:{};if("quad"===e.profile){const t=e.width,n=e.height,a=d(t&&n?t/n:1,0===n,0===t),l={...i,join:"bevel"};s.push({shape:a[0],fill:o,stroke:l}),s.push({shape:a[1],fill:o,stroke:l}),s.push({shape:a[2],fill:r,stroke:l})}else s.push({shape:b.pathSymbol3DLayer[0],fill:o,stroke:i}),s.push({shape:b.pathSymbol3DLayer[1],fill:r,stroke:i});u=Math.max(u,t),p=u}}r.push(s)})),Promise.resolve(z(r,[p,u],{node:t&&t.node,scale:o,opacity:t&&t.opacity}))}async function _(e,t){const s="mesh-3d"===e.type,r=e.symbolLayers,o=Q(t),l=t&&t.maxSize?i(t.maxSize):null,c=o||O,p=[];let u=0,h=0,m=!1;for(let i=0;i<r.length;i++){const e=r.getItemAt(i),t=[];if(s&&"fill"!==e.type)continue;const o=b.fill[0];switch(e.type){case"fill":{const r=q(e),n=Math.min(c,l||C);u=Math.max(u,n),h=Math.max(h,n),m=!0;let i=T(e,0);const p="pattern"in e&&e.pattern,f=N(e);!s&&a(p)&&"style"===p.type&&"solid"!==p.style&&f&&(i=await W(p,f)),t.push({shape:o,fill:i,stroke:r});break}case"line":{const s=F(e,0);if(n(s))break;const r={stroke:s,shape:o};u=Math.max(u,O),h=Math.max(h,O),t.push(r);break}case"extrude":{const s={join:"round",width:1,...F(e,-.4)},r=T(e,0),o=T(e,-.2),n=Math.min(c,l||C),a=v(n);s.width=1,t.push({shape:a[0],fill:o,stroke:s}),t.push({shape:a[1],fill:o,stroke:s}),t.push({shape:a[2],fill:r,stroke:s});const i=O,p=.7*O+.5*n;u=Math.max(u,i),h=Math.max(h,p);break}case"water":{const s=N(e),r=H(s),o=H(s,2),n=H(s,3),a=L();m=!0,t.push({shape:a[0],fill:r}),t.push({shape:a[1],fill:o}),t.push({shape:a[2],fill:n});const i=Math.min(c,l||C);u=Math.max(u,i),h=Math.max(h,i);break}}p.push(t)}return
|
|
5
|
+
import{getAssetUrl as e}from"../../assets.js";import{toHSV as t,toRGB as s}from"../../core/colorUtils.js";import"../../core/has.js";import r from"../../core/Error.js";import o from"../../core/Logger.js";import{isNone as n,isSome as a}from"../../core/maybe.js";import{eachAlways as l}from"../../core/promiseUtils.js";import{pt2px as i}from"../../core/screenUtils.js";import{defaultThematicColor as c,getPatternUrlWithColor as p,dekebabifyLineStyle as u}from"./gfxUtils.js";import{defaultPrimitive as h}from"./IconSymbol3DLayerResource.js";import{defaultPrimitive as m}from"./ObjectSymbol3DLayerResource.js";import{SymbolSizeDefaults as f,adjustColorComponentBrightness as y,getPathSymbolShapes as d,shapes as b,getExtrudeSymbolShapes as v,getTetrahedronShapes as g,getDiamondShapes as k,getCylinderShapes as w,getCubeShapes as x,getInvertedConeShapes as M,getConeShapes as j,getWaterSymbolShapes as L}from"./previewUtils.js";import{renderSymbol as z,tintImageWithColor as S}from"./renderUtils.js";import{isVolumetricSymbol as P,getIconHref as U}from"./utils.js";import{resolveWebStyleSymbol as D}from"./webStyleSymbolUtils.js";const O=f.size,C=f.maxSize,I=f.maxOutlineSize,R=f.lineWidth,E=f.tallSymbolWidth,Z=o.getLogger("esri.symbols.support.previewSymbol3D");function q(e){const t=e.outline,s=a(e.material)?e.material.color:null,r=a(s)?s.toHex():null;if(n(t)||"pattern"in t&&a(t.pattern)&&"style"===t.pattern.type&&"none"===t.pattern.style)return"fill"===e.type&&"#ffffff"===r?{color:"#bdc3c7",width:.75}:null;const o=i(t.size)||0;return{color:"rgba("+(a(t.color)?t.color.toRgba():"255,255,255,1")+")",width:Math.min(o,I),style:"pattern"in t&&a(t.pattern)&&"style"===t.pattern.type?u(t.pattern.style):null,join:"butt",cap:"patternCap"in t?t.patternCap:"butt"}}function A(t,s){const r=s&&s.resource,o=r&&r.href;if(t.thumbnail&&t.thumbnail.url)return Promise.resolve(t.thumbnail.url);if(o&&"object"!==s.type)return Promise.resolve(U(t,s));const n=e("esri/images/Legend/legend3dsymboldefault.png");return t.styleOrigin&&(t.styleOrigin.styleName||t.styleOrigin.styleUrl)?D(t.styleOrigin,{portal:t.styleOrigin.portal},"webRef").catch((e=>e)).then((e=>{var t;return(null==e||null==(t=e.thumbnail)?void 0:t.url)||n})):Promise.resolve(n)}function H(e,r=1){const o=e.a,n=t(e),a=n.h,l=n.s/r,i=100-(100-n.v)/r,{r:c,g:p,b:u}=s({h:a,s:l,v:i});return[c,p,u,o]}function N(e){return"water"===e.type?n(e.color)?null:e.color:n(e.material)||n(e.material.color)?null:e.material.color}function T(e,t=0){const s=N(e);if(!s){if("fill"===e.type)return null;const s=c.r,r=y(s,t);return[r,r,r,100]}const r=s.toRgba();for(let o=0;o<3;o++)r[o]=y(r[o],t);return r}async function W(t,s){const r=t.style;if("none"===r)return null;return{type:"pattern",x:0,y:0,src:await p(e(`esri/symbols/patterns/${r}.png`),s.toCss(!0)),width:5,height:5}}function $(e){return e.outline?q(e):{color:"rgba(0, 0, 0, 1)",width:1.5}}function B(e,t){const s=N(e);if(!s)return null;let r="rgba(";return r+=y(s.r,t)+",",r+=y(s.g,t)+",",r+=y(s.b,t)+",",r+s.a+");"}function F(e,t){const s=B(e,t);if(!s)return{};if("pattern"in e&&a(e.pattern)&&"style"===e.pattern.type&&"none"===e.pattern.style)return null;return{color:s,width:Math.min(e.size?i(e.size):.75,I),style:"pattern"in e&&a(e.pattern)&&"style"===e.pattern.type?u(e.pattern.style):null,cap:"cap"in e?e.cap:null,join:"join"in e?"miter"===e.join?i(2):e.join:null}}function G(e,t,s){const r=.75*s;return{type:"linear",x1:r?.25*r:0,y1:r?.5*r:0,x2:r||4,y2:r?.5*r:4,colors:[{color:e,offset:0},{color:t,offset:1}]}}function J(e){const t=e.depth,s=e.height,r=e.width;return r&&t&&s&&r===t&&r<s}function K(e,t,s){const r=[];if(!e)return r;switch(e.type){case"icon":{const s=0,o=0,n=t,a=t;switch(e.resource&&e.resource.primitive||h){case"circle":r.push({shape:{type:"circle",cx:0,cy:0,r:.5*t},fill:T(e,0),stroke:q(e)});break;case"square":r.push({shape:{type:"path",path:[{command:"M",values:[s,a]},{command:"L",values:[s,o]},{command:"L",values:[n,o]},{command:"L",values:[n,a]},{command:"Z",values:[]}]},fill:T(e,0),stroke:q(e)});break;case"triangle":r.push({shape:{type:"path",path:[{command:"M",values:[s,a]},{command:"L",values:[.5*n,o]},{command:"L",values:[n,a]},{command:"Z",values:[]}]},fill:T(e,0),stroke:q(e)});break;case"cross":r.push({shape:{type:"path",path:[{command:"M",values:[.5*n,o]},{command:"L",values:[.5*n,a]},{command:"M",values:[s,.5*a]},{command:"L",values:[n,.5*a]}]},stroke:$(e)});break;case"x":r.push({shape:{type:"path",path:[{command:"M",values:[s,o]},{command:"L",values:[n,a]},{command:"M",values:[n,o]},{command:"L",values:[s,a]}]},stroke:$(e)});break;case"kite":r.push({shape:{type:"path",path:[{command:"M",values:[s,.5*a]},{command:"L",values:[.5*n,o]},{command:"L",values:[n,.5*a]},{command:"L",values:[.5*n,a]},{command:"Z",values:[]}]},fill:T(e,0),stroke:q(e)})}break}case"object":switch(e.resource&&e.resource.primitive||m){case"cone":{const o=G(T(e,0),T(e,-.6),s?E:t),n=j(t,s);r.push({shape:n[0],fill:o}),r.push({shape:n[1],fill:o});break}case"inverted-cone":{const s=T(e,0),o=G(s,T(e,-.6),t),n=M(t);r.push({shape:n[0],fill:o}),r.push({shape:n[1],fill:s});break}case"cube":{const o=x(t,s);r.push({shape:o[0],fill:T(e,0)}),r.push({shape:o[1],fill:T(e,-.3)}),r.push({shape:o[2],fill:T(e,-.5)});break}case"cylinder":{const o=G(T(e,0),T(e,-.6),s?E:t),n=w(t,s);r.push({shape:n[0],fill:o}),r.push({shape:n[1],fill:o}),r.push({shape:n[2],fill:T(e,0)});break}case"diamond":{const s=k(t);r.push({shape:s[0],fill:T(e,-.3)}),r.push({shape:s[1],fill:T(e,0)}),r.push({shape:s[2],fill:T(e,-.3)}),r.push({shape:s[3],fill:T(e,-.7)});break}case"sphere":{const s=G(T(e,0),T(e,-.6));s.x1=0,s.y1=0,s.x2=.25*t,s.y2=.25*t,r.push({shape:{type:"circle",cx:0,cy:0,r:.5*t},fill:s});break}case"tetrahedron":{const s=g(t);r.push({shape:s[0],fill:T(e,-.3)}),r.push({shape:s[1],fill:T(e,0)}),r.push({shape:s[2],fill:T(e,-.6)});break}}break}return r}function Q(e){const t="number"==typeof(null==e?void 0:e.size)?null==e?void 0:e.size:null;return t?i(t):null}function V(e){return"icon"===e.type?"multiply":"tint"}function X(e,t){const s=Q(t),r=t&&t.maxSize?i(t.maxSize):null,o=t&&t.disableUpsampling,n=e.symbolLayers,a=[];let c=0,p=0;const u=n.getItemAt(n.length-1);let h;return u&&"icon"===u.type&&(h=u.size&&i(u.size)),n.forEach((n=>{if("icon"!==n.type&&"object"!==n.type)return;const l="icon"===n.type?n.size&&i(n.size):0,u=s||l?Math.ceil(Math.min(s||l,r||C)):O;if(n&&n.resource&&n.resource.href){const t=A(e,n).then((function(e){const t=n.get("material.color"),s=V(n);return S(e,u,t,s,o)})).then((function(e){const t=e.width,s=e.height;return c=Math.max(c,t),p=Math.max(p,s),[{shape:{type:"image",x:0,y:0,width:t,height:s,src:e.url},fill:null,stroke:null}]}));a.push(t)}else{var m;let e=u;"icon"===n.type&&h&&s&&(e=u*(l/h));const r="tall"===(null==t?void 0:t.symbolConfig)||(null==t||null==(m=t.symbolConfig)?void 0:m.isTall)||"object"===n.type&&J(n);c=Math.max(c,r?E:e),p=Math.max(p,e),a.push(Promise.resolve(K(n,e,r)))}})),l(a).then((function(e){const s=[];return e.forEach((function(e){e.value?s.push(e.value):e.error&&Z.warn("error while building swatchInfo!",e.error)})),z(s,[c,p],{node:t&&t.node,scale:!1,opacity:t&&t.opacity})}))}function Y(e,t){const s=e.symbolLayers,r=[],o=P(e),a=Q(t),l=(t&&t.maxSize?i(t.maxSize):null)||I;let c,p=0,u=0;return s.forEach(((e,t)=>{if(!e)return;if("line"!==e.type&&"path"!==e.type)return;const s=[];switch(e.type){case"line":{const r=F(e,0);if(n(r))break;const o=r&&r.width||0;0===t&&(c=o);const i=Math.min(a||o,l),h=0===t?i:a?i*(o/c):i,m=h>R/2?2*h:R;u=Math.max(u,h),p=Math.max(p,m),r.width=h,s.push({shape:{type:"path",path:[{command:"M",values:[0,.5*u]},{command:"L",values:[p,.5*u]}]},stroke:r});break}case"path":{const t=Math.min(a||O,l),r=T(e,0),o=T(e,-.2),n=B(e,-.4),i=n?{color:n,width:1}:{};if("quad"===e.profile){const t=e.width,n=e.height,a=d(t&&n?t/n:1,0===n,0===t),l={...i,join:"bevel"};s.push({shape:a[0],fill:o,stroke:l}),s.push({shape:a[1],fill:o,stroke:l}),s.push({shape:a[2],fill:r,stroke:l})}else s.push({shape:b.pathSymbol3DLayer[0],fill:o,stroke:i}),s.push({shape:b.pathSymbol3DLayer[1],fill:r,stroke:i});u=Math.max(u,t),p=u}}r.push(s)})),Promise.resolve(z(r,[p,u],{node:t&&t.node,scale:o,opacity:t&&t.opacity}))}async function _(e,t){const s="mesh-3d"===e.type,r=e.symbolLayers,o=Q(t),l=t&&t.maxSize?i(t.maxSize):null,c=o||O,p=[];let u=0,h=0,m=!1;for(let i=0;i<r.length;i++){const e=r.getItemAt(i),t=[];if(s&&"fill"!==e.type)continue;const o=b.fill[0];switch(e.type){case"fill":{const r=q(e),n=Math.min(c,l||C);u=Math.max(u,n),h=Math.max(h,n),m=!0;let i=T(e,0);const p="pattern"in e&&e.pattern,f=N(e);!s&&a(p)&&"style"===p.type&&"solid"!==p.style&&f&&(i=await W(p,f)),t.push({shape:o,fill:i,stroke:r});break}case"line":{const s=F(e,0);if(n(s))break;const r={stroke:s,shape:o};u=Math.max(u,O),h=Math.max(h,O),t.push(r);break}case"extrude":{const s={join:"round",width:1,...F(e,-.4)},r=T(e,0),o=T(e,-.2),n=Math.min(c,l||C),a=v(n);s.width=1,t.push({shape:a[0],fill:o,stroke:s}),t.push({shape:a[1],fill:o,stroke:s}),t.push({shape:a[2],fill:r,stroke:s});const i=O,p=.7*O+.5*n;u=Math.max(u,i),h=Math.max(h,p);break}case"water":{const s=N(e),r=H(s),o=H(s,2),n=H(s,3),a=L();m=!0,t.push({shape:a[0],fill:r}),t.push({shape:a[1],fill:o}),t.push({shape:a[2],fill:n});const i=Math.min(c,l||C);u=Math.max(u,i),h=Math.max(h,i);break}}p.push(t)}return z(p,[u,h],{node:t&&t.node,scale:m,opacity:t&&t.opacity})}function ee(e,t){if(0===e.symbolLayers.length)return Promise.reject(new r("symbolPreview: renderPreviewHTML3D","No symbolLayers in the symbol."));switch(e.type){case"point-3d":return X(e,t);case"line-3d":return Y(e,t);case"polygon-3d":case"mesh-3d":return _(e,t)}return Promise.reject(new r("symbolPreview: swatchInfo3D","symbol not supported."))}export{W as getPatternDescriptor,Q as getSizeFromOptions,T as getSymbolLayerFill,ee as previewSymbol3D};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{id as t}from"../../kernel.js";import e from"../../request.js";import{toHSV as i,toRGB as r}from"../../core/colorUtils.js";import n from"../../core/Error.js";import o from"../../core/has.js";import"../../libs/maquette/projection.js";import{createProjector as a}from"../../libs/maquette/projector.js";import{renderSVG as c}from"./svgUtils.js";import{getCSSFilterFromEffectList as s}from"./utils.js";const h=a();function l(t,e,i){const r=Math.ceil(e[0]),n=Math.ceil(e[1]);if(!t.some((t=>!!t.length)))return null;const o=i&&i.node||document.createElement("div");return null!=i.opacity&&(o.style.opacity=i.opacity.toString()),null!=i.effectView&&(o.style.filter=s(i.effectView)),h.append(o,c.bind(null,t,r,n,i)),o}function m(t,e){t=Math.ceil(t),e=Math.ceil(e);const i=document.createElement("canvas");i.width=t,i.height=e,i.style.width=t+"px",i.style.height=e+"px";const r=i.getContext("2d");return r.clearRect(0,0,t,e),r}function g(t,i,r){return t?e(t,{responseType:"image"}).then((t=>{const e=t.data,n=e.width,o=e.height,a=n/o;let c=i;if(r){const t=Math.max(n,o);c=Math.min(c,t)}return{image:e,width:a<=1?Math.ceil(c*a):c,height:a<=1?c:Math.ceil(c/a)}})):Promise.reject(new n("renderUtils: imageDataSize","href not provided."))}function u(t,e){return!(!t||"ignore"===e)&&("multiply"!==e||255!==t.r||255!==t.g||255!==t.b||1!==t.a)}function
|
|
5
|
+
import{id as t}from"../../kernel.js";import e from"../../request.js";import{toHSV as i,toRGB as r}from"../../core/colorUtils.js";import n from"../../core/Error.js";import o from"../../core/has.js";import"../../libs/maquette/projection.js";import{createProjector as a}from"../../libs/maquette/projector.js";import{renderSVG as c}from"./svgUtils.js";import{getCSSFilterFromEffectList as s}from"./utils.js";const h=a();function l(t,e,i){const r=Math.ceil(e[0]),n=Math.ceil(e[1]);if(!t.some((t=>!!t.length)))return null;const o=i&&i.node||document.createElement("div");return null!=i.opacity&&(o.style.opacity=i.opacity.toString()),null!=i.effectView&&(o.style.filter=s(i.effectView)),h.append(o,c.bind(null,t,r,n,i)),o}function m(t,e){t=Math.ceil(t),e=Math.ceil(e);const i=document.createElement("canvas");i.width=t,i.height=e,i.style.width=t+"px",i.style.height=e+"px";const r=i.getContext("2d");return r.clearRect(0,0,t,e),r}function g(t,i,r){return t?e(t,{responseType:"image"}).then((t=>{const e=t.data,n=e.width,o=e.height,a=n/o;let c=i;if(r){const t=Math.max(n,o);c=Math.min(c,t)}return{image:e,width:a<=1?Math.ceil(c*a):c,height:a<=1?c:Math.ceil(c/a)}})):Promise.reject(new n("renderUtils: imageDataSize","href not provided."))}function u(t,e){return!(!t||"ignore"===e)&&("multiply"!==e||255!==t.r||255!==t.g||255!==t.b||1!==t.a)}function d(t,e,n,o,a){switch(a){case"multiply":t[e+0]*=n[0],t[e+1]*=n[1],t[e+2]*=n[2],t[e+3]*=n[3];break;default:{const a=i({r:t[e+0],g:t[e+1],b:t[e+2]});a.h=o.h,a.s=o.s,a.v=a.v/100*o.v;const c=r(a);t[e+0]=c.r,t[e+1]=c.g,t[e+2]=c.b,t[e+3]*=n[3];break}}}function f(e,r,n,a,c){return g(e,r,c).then((c=>{const s=c.width?c.width:r,h=c.height?c.height:r;if(c.image&&u(n,a)){let t=c.image.width,r=c.image.height;o("edge")&&/\.svg$/i.test(e)&&(t-=1,r-=1);const l=m(s,h);l.drawImage(c.image,0,0,t,r,0,0,s,h);const g=l.getImageData(0,0,s,h),u=[n.r/255,n.g/255,n.b/255,n.a],f=i(n);for(let e=0;e<g.data.length;e+=4)d(g.data,e,u,f,a);l.putImageData(g,0,0),e=l.canvas.toDataURL("image/png")}else{const i=t&&t.findCredential(e);if(i&&i.token){const t=e.includes("?")?"&":"?";e=`${e}${t}token=${i.token}`}}return{url:e,width:s,height:h}})).catch((function(){return{url:e,width:r,height:r}}))}export{l as renderSymbol,f as tintImageWithColor};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../request.js";import r from"../../core/Error.js";import o from"../../core/ItemCache.js";import{isSome as t}from"../../core/maybe.js";import{size as n,create as i}from"../../geometry/support/aaBoundingBox.js";import{objectSymbolLayerSizeWithResourceSize as s,objectSymbolLayerPrimitiveBoundingBox as u}from"./symbolLayerUtils3D.js";let c=
|
|
5
|
+
import e from"../../request.js";import r from"../../core/Error.js";import o from"../../core/ItemCache.js";import{isSome as t}from"../../core/maybe.js";import{size as n,create as i}from"../../geometry/support/aaBoundingBox.js";import{objectSymbolLayerSizeWithResourceSize as s,objectSymbolLayerPrimitiveBoundingBox as u}from"./symbolLayerUtils3D.js";let c=a();function a(){return new o(50)}function m(){c=a()}function y(e,o){if("icon"===e.type)return l(e,o);if("object"===e.type)return b(e,o);throw new r("symbol3d:unsupported-symbol-layer","computeLayerSize only works with symbol layers of type Icon and Object")}async function f(e,o){if("icon"===e.type)return p(e,o);if("object"===e.type)return d(e,o);throw new r("symbol3d:unsupported-symbol-layer","computeLayerSize only works with symbol layers of type Icon and Object")}async function l(e,o){if(e.resource.href)return h(e.resource.href).then((e=>[e.width,e.height]));if(e.resource.primitive)return t(o)?[o,o]:[256,256];throw new r("symbol3d:invalid-symbol-layer","symbol layers of type Icon must have either an href or a primitive resource")}function p(e,r){return l(e,r).then((r=>{if(null==e.size)return r;const o=r[0]/r[1];return o>1?[e.size,e.size/o]:[e.size*o,e.size]}))}function h(r){return e(r,{responseType:"image"}).then((e=>e.data))}function b(e,r){return w(e,r).then((e=>n(e)))}async function d(e,r){const o=await b(e,r);return s(o,e)}async function w(e,o){if(!e.isPrimitive){const r=e.resource.href,o=c.get(r);if(void 0!==o)return o;const t=await import("../../views/3d/layers/graphics/objectResourceUtils.js"),n=await t.fetch(r,{disableTextures:!0});return c.put(r,n.referenceBoundingBox),n.referenceBoundingBox}let n=null;if(e.resource&&e.resource.primitive&&(n=i(u(e.resource.primitive)),t(o)))for(let r=0;r<n.length;r++)n[r]*=o;return n?Promise.resolve(n):Promise.reject(new r("symbol:invalid-resource","The symbol does not have a valid resource"))}export{m as clearBoundingBoxCache,l as computeIconLayerResourceSize,y as computeLayerResourceSize,f as computeLayerSize,b as computeObjectLayerResourceSize};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{isSome as t}from"../../../core/maybe.js";import{b as e,c as i,r as s,
|
|
5
|
+
import{isSome as t}from"../../../core/maybe.js";import{b as e,c as i,r as s,h as r,m as h}from"../../../chunks/mat3.js";import{c as n}from"../../../chunks/mat3f32.js";import{f as o}from"../../../chunks/vec2f32.js";import{DisplayObject as u}from"./DisplayObject.js";import a from"./ImageryBitmapSource.js";import{TextureType as d,PixelFormat as c,PixelType as l,TextureWrapMode as _}from"../../webgl/enums.js";import{Texture as x}from"../../webgl/Texture.js";function m(t){return t&&"render"in t}function g(t){return t&&!("render"in t)}function p(t){const e=document.createElement("canvas");return e.width=t.width,e.height=t.height,t.render(e.getContext("2d")),e}function f(t,e,i){const s={target:d.TEXTURE_2D,pixelFormat:c.RGBA,internalFormat:c.RGBA,dataType:l.UNSIGNED_BYTE,wrapMode:_.CLAMP_TO_EDGE};return e&&i&&(s.width=e,s.height=i),new x(t,s)}class v extends u{constructor(t=null,e,i=!0){super(),this.requestRenderOnSourceChangedEnabled=i,this._textureInvalidated=!0,this.stencilRef=0,this.coordScale=[1,1],this._height=void 0,this.pixelRatio=1,this.resolution=0,this.rotation=0,this._source=null,this._width=void 0,this.x=0,this.y=0,this.blendFunction=e,this.source=t,this.requestRender=this.requestRender.bind(this)}destroy(){this._texture&&(this._texture.dispose(),this._texture=null)}get isSourceScaled(){return this.width!==this.sourceWidth||this.height!==this.sourceHeight}get height(){return void 0!==this._height?this._height:this.sourceHeight}set height(t){this._height=t}get source(){return this._source}set source(t){this._source=t,this.invalidateTexture()}get sourceHeight(){return this._source instanceof HTMLImageElement?this._source.naturalHeight:this._source.height}get sourceWidth(){return this._source instanceof HTMLImageElement?this._source.naturalWidth:this._source.width}get width(){return void 0!==this._width?this._width:this.sourceWidth}set width(t){this._width=t}beforeRender(t){super.beforeRender(t),this.updateTexture(t.context)}invalidateTexture(){this._textureInvalidated||(this._textureInvalidated=!0,this.requestRenderOnSourceChangedEnabled&&this.requestRender())}_createTransforms(){return{dvs:n()}}setTransform(t){const n=e(this.transforms.dvs),[u,a]=t.toScreenNoRotation([0,0],[this.x,this.y]),d=this.resolution/this.pixelRatio/t.resolution,c=d*this.width,l=d*this.height,_=Math.PI*this.rotation/180;i(n,n,o(u,a)),i(n,n,o(c/2,l/2)),s(n,n,-_),i(n,n,o(-c/2,-l/2)),r(n,n,o(c,l)),h(this.transforms.dvs,t.displayViewMat3,n)}setSamplingProfile(t){this._texture&&(t.mips&&!this._texture.descriptor.hasMipmap&&this._texture.generateMipmap(),this._texture.setSamplingMode(t.samplingMode))}bind(t,e){this._texture&&t.bindTexture(this._texture,e)}updateTexture(e){var i;if(!this.stage)return null==(i=this._texture)||i.dispose(),void(this._texture=null);if(!this._textureInvalidated)return;this._textureInvalidated=!1,this._texture||(this.source?this._texture=f(e,this.sourceWidth,this.sourceHeight):this._texture=f(e));const s=this.source;if(s){if(this._texture.resize(this.sourceWidth,this.sourceHeight),m(s))if(s instanceof a){const e=s.getRenderedRasterPixels();this._texture.setData(t(e)?e.renderedRasterPixels:null)}else this._texture.setData(p(s));else g(s)&&this._texture.setData(s);this.ready()}else this._texture.setData(null)}onAttach(){this.invalidateTexture()}onDetach(){this.invalidateTexture()}}export{v as Bitmap,m as isImageSource,p as rasterize};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{deg2rad as t}from"../../../../core/mathUtils.js";import{isSome as s,isNone as a}from"../../../../core/maybe.js";import{
|
|
5
|
+
import{deg2rad as t}from"../../../../core/mathUtils.js";import{isSome as s,isNone as a}from"../../../../core/maybe.js";import{k as e,d as i,c as r,r as o}from"../../../../chunks/mat3.js";import{c as n}from"../../../../chunks/mat3f32.js";import{DisplayObject as l}from"../DisplayObject.js";class m extends l{constructor(){super(...arguments),this._displayData=null}get displayData(){return this._displayData}set displayData(t){this._displayData=t,this.requestRender()}clear(){s(this._displayData)&&(this._displayData.destroy(),this._displayData=null,this.requestRender())}setTransform(s){const{displayData:n}=this;if(a(n))return;const l=n.extent.xmin,m=n.extent.ymax,p=[0,0];s.toScreen(p,[l,m]);const c=(n.extent.xmax-n.extent.xmin)/n.size[0]/s.resolution,d=t(s.rotation),{dvs:x}=this.transforms;e(x,[-1,1,0]),i(x,x,[2/(s.size[0]*s.pixelRatio),-2/(s.size[1]*s.pixelRatio),1]),r(x,x,[p[0],p[1],0]),o(x,x,d),i(x,x,[c*s.pixelRatio,c*s.pixelRatio,1])}_createTransforms(){return{dvs:n()}}}export{m as FlowDisplayObject};
|