@arcgis/core 4.24.0-next.20220430 → 4.24.0-next.20220503
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/Basemap.js +1 -1
- package/Color.js +1 -1
- package/Ground.js +1 -1
- package/Map.js +1 -1
- package/PopupTemplate.js +1 -1
- package/WebMap.js +1 -1
- package/WebScene.js +1 -1
- package/analysis/LinearDimension.js +1 -1
- package/analysis/SliceAnalysis.js +1 -1
- package/applications/SceneViewer/sceneViewerUtils.js +1 -1
- package/arcade/Dictionary.js +1 -1
- package/arcade/Feature.js +1 -1
- package/arcade/featureset/sources/FeatureLayerDynamic.js +1 -1
- package/arcade/featureset/support/FeatureSet.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{e06461703e6f1acfcfdc.js → 076d1b1101b59af0d389.js} +1 -1
- package/assets/esri/core/workers/chunks/0b72d123386dc4ec7538.js +1 -0
- package/assets/esri/core/workers/chunks/0d53e575f11198867619.js +1 -0
- package/assets/esri/core/workers/chunks/0e6e3cf07c84d9f040c0.js +1 -0
- package/assets/esri/core/workers/chunks/105728404ddd9e73d5c9.js +1 -0
- package/assets/esri/core/workers/chunks/11106873b009b98e4286.js +1 -0
- package/assets/esri/core/workers/chunks/11a7b156591d1feca952.js +1 -0
- package/assets/esri/core/workers/chunks/{94325f920a125610e1f5.js → 12feeace7215248be23f.js} +1 -1
- package/assets/esri/core/workers/chunks/17be5bd0d1c233d73d7a.js +1 -0
- package/assets/esri/core/workers/chunks/1b53bd65407ba5c479d7.js +1 -0
- package/assets/esri/core/workers/chunks/1d91aa745b49b2ab36cf.js +1 -0
- package/assets/esri/core/workers/chunks/{fd35b69872ac9393924f.js → 1db8bfb1731be3ae320c.js} +1 -1
- package/assets/esri/core/workers/chunks/{3433361f09c84b31aec4.js → 2290bd6dc2e6bb136e14.js} +1 -1
- package/assets/esri/core/workers/chunks/24217129d492e170f0f0.js +1 -0
- package/assets/esri/core/workers/chunks/24e194107e0e5090125b.js +1 -0
- package/assets/esri/core/workers/chunks/2a1301a1d0cd4c0c17cf.js +1 -0
- package/assets/esri/core/workers/chunks/{178831b0d0bdabcc45e7.js → 2a676221ca1fc8e0cf34.js} +1 -1
- package/assets/esri/core/workers/chunks/2aede0d1dcac8592436b.js +1 -0
- package/assets/esri/core/workers/chunks/2b93ad626f5e75b97692.js +1 -0
- package/assets/esri/core/workers/chunks/2d03210fc6b5884c6bf9.js +1 -0
- package/assets/esri/core/workers/chunks/{b10c333abe4f4e52841c.js → 2dfd3def105005fc72c7.js} +1 -1
- package/assets/esri/core/workers/chunks/2f8ff35b8ab15c0e39c2.js +1 -0
- package/assets/esri/core/workers/chunks/36272141b3c33cb19026.js +1 -0
- package/assets/esri/core/workers/chunks/36c8e8de9c3f67d32572.js +1 -0
- package/assets/esri/core/workers/chunks/3ab8c6ae2f2713f637b0.js +1 -0
- package/assets/esri/core/workers/chunks/3c058381adcfdc407aa1.js +1 -0
- package/assets/esri/core/workers/chunks/3f39df1dfc0a685e5f9d.js +1 -0
- package/assets/esri/core/workers/chunks/3fd52a03b3126556aee6.js +1 -0
- package/assets/esri/core/workers/chunks/4082d8573f41f952c72e.js +1 -0
- package/assets/esri/core/workers/chunks/40b11eea270f6688ff9c.js +1 -0
- package/assets/esri/core/workers/chunks/4281b4b27f4767cdd3ae.js +1 -0
- package/assets/esri/core/workers/chunks/43fcaaeb6fd179e9199b.js +1 -0
- package/assets/esri/core/workers/chunks/4c65b27d80b23c0c3101.js +1 -0
- package/assets/esri/core/workers/chunks/{a6406a248b7b2ed65f35.js → 4ec7d59b0c814dbaa7a4.js} +1 -1
- package/assets/esri/core/workers/chunks/4f378ad6f4299183df85.js +1 -0
- package/assets/esri/core/workers/chunks/505b0aa5ee3e5a26c351.js +1 -0
- package/assets/esri/core/workers/chunks/509a9cdd0228a730bcea.js +1 -0
- package/assets/esri/core/workers/chunks/52255ad573cec0a34720.js +1 -0
- package/assets/esri/core/workers/chunks/52d4fdc451a58a858af1.js +1 -0
- package/assets/esri/core/workers/chunks/5405f478af3563580926.js +1 -0
- package/assets/esri/core/workers/chunks/54577c2522ca3ff08f7e.js +1 -0
- package/assets/esri/core/workers/chunks/54d67e450da6ce2641b4.js +1 -0
- package/assets/esri/core/workers/chunks/56d3cb0ae0069a8eadde.js +1 -0
- package/assets/esri/core/workers/chunks/5b4efe0014162f777534.js +1 -0
- package/assets/esri/core/workers/chunks/5baa162351551817838b.js +1 -0
- package/assets/esri/core/workers/chunks/5cf2064bfd9d0847d9ec.js +1 -0
- package/assets/esri/core/workers/chunks/620dc3c13c345d5aa9f6.js +1 -0
- package/assets/esri/core/workers/chunks/7c290763920f52a1f504.js +1 -0
- package/assets/esri/core/workers/chunks/7dc266be958e34e81007.js +972 -0
- package/assets/esri/core/workers/chunks/7dfd70f4fa1096e56641.js +1 -0
- package/assets/esri/core/workers/chunks/7f097de06972a68cd08a.js +1 -0
- package/assets/esri/core/workers/chunks/8033531b0cc706b40d86.js +1 -0
- package/assets/esri/core/workers/chunks/814234844a056d9f1ddc.js +1 -0
- package/assets/esri/core/workers/chunks/83700cdd60ceecc639cd.js +1 -0
- package/assets/esri/core/workers/chunks/857df84cea67079a91e5.js +1 -0
- package/assets/esri/core/workers/chunks/8793070d288878d6f49b.js +1 -0
- package/assets/esri/core/workers/chunks/8865c5cc28df60364e60.js +1 -0
- package/assets/esri/core/workers/chunks/{e9f786d4ba3143ed9644.js → 8cc85d1d46dda16ad041.js} +1 -1
- package/assets/esri/core/workers/chunks/958a7ef2cbf048819988.js +1 -0
- package/assets/esri/core/workers/chunks/967af0aa4dc4da032fdc.js +1 -0
- package/assets/esri/core/workers/chunks/9722880bd7f455b2bd07.js +1 -0
- package/assets/esri/core/workers/chunks/9d738aab0d907cd09a9d.js +1 -0
- package/assets/esri/core/workers/chunks/{86b31ae136f931d7884a.js → 9e6df034d7949880471f.js} +1 -1
- package/assets/esri/core/workers/chunks/a056a79f31cddb066f15.js +1 -0
- package/assets/esri/core/workers/chunks/a2c9fd78d42df7314a3e.js +1 -0
- package/assets/esri/core/workers/chunks/a4dcb50f6622cb1444c8.js +1 -0
- package/assets/esri/core/workers/chunks/a6bfbe449b8c2fa5334c.js +1 -0
- package/assets/esri/core/workers/chunks/a8ed1a938dc164b401d9.js +1 -0
- package/assets/esri/core/workers/chunks/a9a73bc4875a5aeaf1b9.js +1 -0
- package/assets/esri/core/workers/chunks/ac0df52b2f2a4874e4ea.js +1 -0
- package/assets/esri/core/workers/chunks/{431efa172901ab8e4d53.js → acfa8eb19225f7862b1d.js} +1 -1
- package/assets/esri/core/workers/chunks/adae54f116f311d72d97.js +1 -0
- package/assets/esri/core/workers/chunks/{718073d13d3de67b629b.js → aeeb364b7c1876f6e7db.js} +1 -1
- package/assets/esri/core/workers/chunks/afddfe620e6539991e6b.js +1 -0
- package/assets/esri/core/workers/chunks/b02a83845d3da4caee9d.js +1 -0
- package/assets/esri/core/workers/chunks/{0d21506b7d4f9afdbb09.js → b3847a6bbd45d813f03c.js} +1 -1
- package/assets/esri/core/workers/chunks/b4c23630d6c85f7b59c0.js +1 -0
- package/assets/esri/core/workers/chunks/{c318b229911b60fc3cbf.js → b50ae3dc7e43ff452568.js} +1 -1
- package/assets/esri/core/workers/chunks/b5ede4df4620097c6528.js +1 -0
- package/assets/esri/core/workers/chunks/b7d7ad127f8939cbdec2.js +1 -0
- package/assets/esri/core/workers/chunks/bf1d1c02d12b526b0750.js +1 -0
- package/assets/esri/core/workers/chunks/c0e6dbecdbd30066a82c.js +1 -0
- package/assets/esri/core/workers/chunks/c2a36243eb105d570bff.js +1 -0
- package/assets/esri/core/workers/chunks/c8a3a28809542396c6fd.js +1 -0
- package/assets/esri/core/workers/chunks/cf1047ad176a25dcd2d6.js +1 -0
- package/assets/esri/core/workers/chunks/d03de043d43691665a93.js +1 -0
- package/assets/esri/core/workers/chunks/d3fecbaca51ef8844026.js +1 -0
- package/assets/esri/core/workers/chunks/dafe120243db6648a4ab.js +1 -0
- package/assets/esri/core/workers/chunks/dccc33d87cb7d902f5c7.js +1 -0
- package/assets/esri/core/workers/chunks/dd43f5647900ee27af22.js +1 -0
- package/assets/esri/core/workers/chunks/{52489e2f7748dc610263.js → dfdd853dd6c023089963.js} +1 -1
- package/assets/esri/core/workers/chunks/e6f76f62cf58fb1e67c6.js +1 -0
- package/assets/esri/core/workers/chunks/ea73a1d9cad5e1a5d861.js +1 -0
- package/assets/esri/core/workers/chunks/{4130ea1f5a9f197168d7.js → ed4519ac9533a4d340f1.js} +1 -1
- package/assets/esri/core/workers/chunks/f0e462f5a16852f33225.js +1 -0
- package/assets/esri/core/workers/chunks/f13c29bcc71aed8f3a2e.js +1 -0
- package/assets/esri/core/workers/chunks/f356e505c36397fda3cf.js +1 -0
- package/assets/esri/core/workers/chunks/f55cbaf5a1d6ee6ac171.js +1 -0
- package/assets/esri/core/workers/chunks/f6e613ae6812a347a26c.js +1 -0
- package/assets/esri/core/workers/chunks/fb3279408bd5323ec612.js +1 -0
- package/assets/esri/core/workers/chunks/fdf80a371b7b2a45f1ff.js +1 -0
- package/assets/esri/libs/vxl/vxlLayer.wasm +0 -0
- package/chunks/ChapmanAtmosphere.glsl.js +15 -15
- package/chunks/CheckerBoard.glsl.js +3 -3
- package/chunks/Clouds.glsl.js +2 -3
- package/chunks/CloudsComposition.glsl.js +3 -3
- package/chunks/ColorMaterial.glsl.js +11 -11
- package/chunks/DefaultMaterial.glsl.js +26 -26
- package/chunks/EdgeShader.glsl.js +3 -3
- package/chunks/Fog.glsl.js +6 -6
- package/chunks/HUDMaterial.glsl.js +48 -48
- package/chunks/HeatmapDensity.glsl.js +7 -7
- package/chunks/HighlightApply.glsl.js +3 -3
- package/chunks/LineCallout.glsl.js +3 -3
- package/chunks/LineMarker.glsl.js +22 -22
- package/chunks/MeasurementArrow.glsl.js +4 -4
- package/chunks/NativeLine.glsl.js +11 -11
- package/chunks/Path.glsl.js +16 -16
- package/chunks/Pattern.glsl.js +30 -30
- package/chunks/RasterColorizer.glsl.js +4 -4
- package/chunks/RealisticTree.glsl.js +20 -20
- package/chunks/RibbonLine.glsl.js +39 -39
- package/chunks/ShadedColorMaterial.glsl.js +10 -10
- package/chunks/ShadowCastVisualize.glsl.js +5 -5
- package/chunks/ShadowHighlight.glsl.js +2 -2
- package/chunks/SlicePlaneMaterial.glsl.js +3 -3
- package/chunks/Stars.glsl.js +2 -2
- package/chunks/WaterSurface.glsl.js +20 -20
- package/chunks/languageUtils.js +1 -1
- package/chunks/persistableUrlUtils.js +1 -1
- package/chunks/vec22.js +1 -1
- package/chunks/vec2f64.js +1 -1
- package/chunks/vec3.js +1 -1
- package/chunks/vec33.js +1 -1
- package/chunks/vec43.js +1 -1
- package/colorUtils.js +1 -1
- package/config.js +1 -1
- package/core/Accessor.js +1 -1
- package/core/AsyncUpdate.js +1 -1
- package/core/Clonable.js +1 -1
- package/core/Collection.js +1 -1
- package/core/HandleOwner.js +1 -1
- package/core/Loadable.js +1 -1
- package/core/NestedMap.js +1 -1
- package/core/accessorSupport/DefaultsStore.js +1 -1
- package/core/accessorSupport/Properties.js +1 -1
- package/core/accessorSupport/decorators/enumeration.js +1 -1
- package/core/accessorSupport/extensions/serializableProperty/reader.js +1 -1
- package/core/accessorSupport/extensions/serializableProperty/writePolicyUtils.js +1 -1
- package/core/accessorSupport/extensions/serializableProperty/writer.js +1 -1
- package/core/accessorSupport/read.js +1 -1
- package/core/accessorSupport/tracking.js +1 -1
- package/core/accessorSupport/write.js +1 -1
- package/core/devEnvironmentUtils.js +1 -1
- package/core/has.js +1 -1
- package/core/libs/gl-matrix-2/factories/vec2f64.js +1 -1
- package/core/libs/gl-matrix-2/math/vec3.js +1 -1
- package/core/libs/rbush/PooledRBush.js +1 -1
- package/core/promiseUtils.js +1 -1
- package/core/reactiveUtils.js +1 -1
- package/core/scheduling.js +1 -1
- package/core/throttle.js +1 -1
- package/core/urlUtils.js +1 -1
- package/core/watchUtils.js +1 -1
- package/core/workers/RemoteClient.js +1 -1
- package/core/workers/WorkerOwner.js +1 -1
- package/core/workers/loaderConfig.js +1 -1
- package/core/workers/workerFactory.js +1 -1
- package/geometry/Mesh.js +1 -1
- package/geometry/geometryEngine.js +1 -1
- package/geometry/geometryEngineAsync.js +1 -1
- package/geometry/projection.js +1 -1
- package/geometry/support/axisAngleDegrees.js +1 -1
- package/geometry/support/meshUtils/centerAt.js +1 -1
- package/geometry/support/meshUtils/deduplicate.js +1 -1
- package/geometry/support/meshUtils/elevation.js +1 -1
- package/geometry/support/meshUtils/geographicUtils.js +1 -1
- package/geometry/support/meshUtils/georeference.js +1 -1
- package/geometry/support/meshUtils/loadExternal.js +1 -1
- package/geometry/support/meshUtils/loadGLTFMesh.js +1 -1
- package/geometry/support/meshUtils/offset.js +1 -1
- package/geometry/support/meshUtils/rotate.js +1 -1
- package/geometry/support/meshUtils/scale.js +1 -1
- package/geometry/support/normalizeUtils.js +1 -1
- package/geometry/support/normalizeUtilsCommon.js +1 -1
- package/geometry/support/offset.js +1 -1
- package/geometry/support/rotate.js +1 -1
- package/identity/IdentityManagerBase.js +1 -1
- package/identity/IdentityModal.js +1 -1
- package/interfaces.d.ts +109 -2
- package/intl/locale.js +1 -1
- package/intl/messages.js +1 -1
- package/kernel.js +1 -1
- package/layers/AnalysisLayer.js +1 -1
- package/layers/CSVLayer.js +1 -1
- package/layers/FeatureLayer.js +1 -1
- package/layers/GeoJSONLayer.js +1 -1
- package/layers/GeoRSSLayer.js +1 -1
- package/layers/ImageryLayer.js +1 -1
- package/layers/ImageryTileLayer.js +1 -1
- package/layers/Layer.js +1 -1
- package/layers/MapImageLayer.js +1 -1
- package/layers/MapNotesLayer.js +1 -1
- package/layers/OGCFeatureLayer.js +1 -1
- package/layers/RouteLayer.js +1 -1
- package/layers/SceneLayer.js +1 -1
- package/layers/StreamLayer.js +1 -1
- package/layers/SubtypeGroupLayer.js +1 -1
- package/layers/TileLayer.js +1 -1
- package/layers/VectorTileLayer.js +1 -1
- package/layers/VoxelLayer.js +1 -1
- package/layers/VoxelWasmPerScene.js +1 -1
- package/layers/WCSLayer.js +1 -1
- package/layers/WFSLayer.js +1 -1
- package/layers/WMSLayer.js +1 -1
- package/layers/WMTSLayer.js +1 -1
- package/layers/buildingSublayers/BuildingComponentSublayer.js +1 -1
- package/layers/effects/EffectView.js +1 -1
- package/layers/effects/FeatureEffectView.js +1 -1
- package/layers/effects/jsonUtils.js +1 -1
- package/layers/graphics/OptimizedGeometry.js +1 -1
- package/layers/graphics/centroid.js +1 -1
- package/layers/graphics/controllers/FeatureTileController3D.js +1 -1
- package/layers/graphics/controllers/I3SOnDemandController.js +1 -1
- package/layers/graphics/data/QueryEngineResult.js +1 -1
- package/layers/graphics/data/StreamFeatureManager.js +1 -1
- package/layers/graphics/editingSupport.js +1 -1
- package/layers/graphics/objectIdUtils.js +1 -1
- package/layers/graphics/sources/CSVSource.js +1 -1
- package/layers/graphics/sources/FeatureLayerSource.js +1 -1
- package/layers/graphics/sources/GeoJSONSource.js +1 -1
- package/layers/graphics/sources/MemorySource.js +1 -1
- package/layers/graphics/sources/OGCFeatureSource.js +1 -1
- package/layers/graphics/sources/WFSSource.js +1 -1
- package/layers/graphics/sources/WFSSourceWorker.js +1 -1
- package/layers/graphics/sources/connections/WebSocketConnection.js +1 -1
- package/layers/graphics/sources/geojson/GeoJSONSourceWorker.js +1 -1
- package/layers/graphics/sources/geojson/geojson.js +1 -1
- package/layers/graphics/sources/support/CSVSourceWorker.js +1 -1
- package/layers/graphics/sources/support/QueryTask.js +1 -1
- package/layers/mixins/APIKeyMixin.js +1 -1
- package/layers/mixins/ArcGISImageService.js +1 -1
- package/layers/mixins/ArcGISMapService.js +1 -1
- package/layers/mixins/ImageryTileMixin.js +1 -1
- package/layers/mixins/OperationalLayer.js +1 -1
- package/layers/mixins/PortalLayer.js +1 -1
- package/layers/mixins/SceneService.js +1 -1
- package/layers/mixins/refresh.js +1 -1
- package/layers/ogc/dateUtils.js +1 -1
- package/layers/ogc/ogcFeatureUtils.js +1 -1
- package/layers/ogc/wfsUtils.js +1 -1
- package/layers/save/featureLayerUtils.js +1 -1
- package/layers/support/ExportImageParameters.js +1 -1
- package/layers/support/ExportImageServiceParameters.js +1 -1
- package/layers/support/ExportWMSImageParameters.js +1 -1
- package/layers/support/FeatureEffect.js +1 -1
- package/layers/support/FeatureType.js +1 -1
- package/layers/support/FetchAssociatedFeatureLayer.js +1 -1
- package/layers/support/LabelClass.js +1 -1
- package/layers/support/LayerContingentValuesCache.js +1 -1
- package/layers/support/RasterFunction.js +1 -1
- package/layers/support/RasterInfo.js +1 -1
- package/layers/support/RasterJobHandler.js +1 -1
- package/layers/support/RasterWorker.js +1 -1
- package/layers/support/Sublayer.js +1 -1
- package/layers/support/SubtypeSublayer.js +1 -1
- package/layers/support/TilemapCache.js +1 -1
- package/layers/support/TimeReference.d.ts +4 -0
- package/layers/support/WMTSSublayer.js +1 -1
- package/layers/support/arcgisLayers.js +1 -1
- package/layers/support/commonProperties.js +1 -1
- package/layers/support/editableLayers.js +1 -1
- package/layers/support/fieldUtils.js +1 -1
- package/layers/support/floorFilterUtils.js +1 -1
- package/layers/support/imageryRendererUtils.js +1 -1
- package/layers/support/layerUtils.js +1 -1
- package/layers/support/layersCreator.js +1 -1
- package/layers/support/rasterDatasets/BaseRaster.js +1 -1
- package/layers/support/rasterDatasets/CloudRaster.js +1 -1
- package/layers/support/rasterDatasets/ImageAuxRaster.js +1 -1
- package/layers/support/rasterDatasets/ImageServerRaster.js +1 -1
- package/layers/support/rasterDatasets/InMemoryRaster.js +1 -1
- package/layers/support/rasterDatasets/MRFRaster.js +1 -1
- package/layers/support/rasterDatasets/TIFFRaster.js +1 -1
- package/layers/support/rasterDatasets/WCSRaster.js +1 -1
- package/layers/support/rasterDatasets/multipartParser.js +1 -1
- package/layers/support/rasterDatasets/pamParser.js +1 -1
- package/layers/support/rasterDatasets/wcsCapabilitiesParser.js +1 -1
- package/layers/support/rasterDatasets/wcsCoverageParser.js +1 -1
- package/layers/support/rasterDatasets/xmlUtilities.js +1 -1
- package/layers/support/rasterFormats/Lerc.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/rasterFunctions/rasterProjectionHelper.js +1 -1
- package/layers/support/rasterFunctions/stretchUtils.js +1 -1
- package/layers/support/rasterFunctions/vectorFieldUtils.js +1 -1
- package/layers/support/rasterTransforms/PolynomialTransform.js +1 -1
- package/layers/support/rasterTransforms/utils.js +1 -1
- package/layers/support/source/DataLayerSource.js +1 -1
- package/layers/support/source/QueryTableDataSource.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/maquette-advanced-projector/projector.js +1 -1
- package/networks/Network.js +1 -1
- package/networks/UtilityNetwork.js +1 -1
- package/networks/support/utils.js +1 -1
- package/package.json +1 -1
- package/popup/content/ExpressionContent.js +1 -1
- package/portal/Portal.js +1 -1
- package/portal/PortalItem.js +1 -1
- package/portal/support/geometryServiceUtils.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/DictionaryRenderer.js +1 -1
- package/renderers/FlowRenderer.js +1 -1
- package/renderers/RasterColormapRenderer.js +1 -1
- package/renderers/RasterStretchRenderer.js +1 -1
- package/renderers/VectorFieldRenderer.js +1 -1
- package/renderers/support/RasterSymbolizer.js +1 -1
- package/renderers/support/UniqueValueInfo.js +1 -1
- package/renderers/support/colorRampUtils.js +1 -1
- package/renderers/support/heatmapUtils.js +1 -1
- package/renderers/support/rasterRendererHelper.js +1 -1
- package/request.js +1 -1
- package/rest/identify.js +1 -1
- package/rest/imageService.js +1 -1
- package/rest/networkService.js +1 -1
- package/rest/networks/support/SynthesizeAssociationGeometriesParameters.js +1 -1
- package/rest/operations/identify.js +1 -1
- package/rest/print.js +1 -1
- package/rest/query/executeQuery.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/route.js +1 -1
- package/rest/support/DirectionLine.js +1 -1
- package/rest/support/DirectionPoint.js +1 -1
- package/rest/support/DirectionsFeatureSet.js +1 -1
- package/rest/support/FeatureSet.js +1 -1
- package/rest/support/ImageSampleParameters.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/rest/support/meshFeatureSet.js +1 -1
- package/rest/support/printTaskUtils.js +1 -1
- package/smartMapping/labels/clusters.js +1 -1
- package/smartMapping/raster/renderers/rgb.js +1 -1
- package/smartMapping/raster/renderers/uniqueValue.js +1 -1
- package/smartMapping/raster/support/adapters/ImageryLayerAdapter.js +1 -1
- package/smartMapping/raster/support/adapters/RasterLayerAdapter.js +1 -1
- package/smartMapping/raster/support/utils.js +1 -1
- package/smartMapping/renderers/color.js +1 -1
- package/smartMapping/renderers/size.js +1 -1
- package/smartMapping/renderers/support/utils.js +1 -1
- package/smartMapping/renderers/univariateColorSize.js +1 -1
- package/smartMapping/statistics/support/WorkerClient.js +1 -1
- package/smartMapping/support/adapters/CSVLayerAdapter.js +1 -1
- package/smartMapping/support/adapters/FeatureLayerAdapter.js +1 -1
- package/smartMapping/support/adapters/OGCFeatureLayerAdapter.js +1 -1
- package/smartMapping/support/adapters/SceneLayerAdapter.js +1 -1
- package/smartMapping/support/adapters/support/utils.js +1 -1
- package/statistics/utils.js +1 -1
- package/support/LayersMixin.js +1 -1
- package/support/TablesMixin.js +1 -1
- package/support/arcadeUtils.js +1 -1
- package/support/basemapUtils.js +1 -1
- package/support/popupUtils.js +1 -1
- package/support/revision.js +1 -1
- package/support/timeUtils.js +1 -1
- package/symbols/FillSymbol3DLayer.js +1 -1
- package/symbols/LineSymbol3DLayer.js +1 -1
- package/symbols/LineSymbolMarker.js +1 -1
- package/symbols/PictureFillSymbol.js +1 -1
- package/symbols/PointSymbol3D.js +1 -1
- package/symbols/SimpleLineSymbol.js +1 -1
- package/symbols/SimpleMarkerSymbol.js +1 -1
- package/symbols/cim/CIMResourceManager.js +1 -1
- package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
- package/symbols/cim/CIMSymbolHelper.js +1 -1
- package/symbols/cim/ExpandedCIM.js +1 -1
- package/symbols/cim/SDFHelper.js +1 -1
- package/symbols/cim/cimAnalyzer.js +1 -1
- package/symbols/cim/effects/EffectControlMeasureLine.js +1 -1
- package/symbols/cim/effects/EffectDashes.js +1 -1
- package/symbols/cim/effects/EffectOffset.js +1 -1
- package/symbols/cim/placements/PlacementAlongLineSameSize.js +1 -1
- package/symbols/cim/utils.js +1 -1
- package/symbols/support/cimSymbolUtils.js +1 -1
- package/symbols/support/jsonUtils.js +1 -1
- package/symbols/support/previewCIMSymbol.js +1 -1
- package/symbols/support/previewSymbol2D.js +1 -1
- package/symbols/support/previewSymbol3D.js +1 -1
- package/symbols/support/previewWebStyleSymbol.js +1 -1
- package/symbols/support/svgUtils.js +1 -1
- package/symbols/support/symbolConversion.js +1 -1
- package/symbols/support/symbolUtils.js +1 -1
- package/tasks/GenerateRendererTask.js +1 -1
- package/views/2d/MapViewConstraints.js +1 -1
- package/views/2d/constraints/GeometryConstraint.js +1 -1
- package/views/2d/engine/Bitmap.js +1 -1
- package/views/2d/engine/Container.js +1 -1
- package/views/2d/engine/DisplayObject.js +1 -1
- package/views/2d/engine/Stage.js +1 -1
- package/views/2d/engine/imagery/BrushRasterBitmap.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/TilemapRequest.js +1 -1
- package/views/2d/engine/vectorTiles/WorkerTileHandler.js +1 -1
- package/views/2d/engine/vectorTiles/buckets/FillBucket.js +1 -1
- package/views/2d/engine/vectorTiles/buckets/LineBucket.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/vectorTiles/style/StyleLayer.js +1 -1
- package/views/2d/engine/vectorTiles/style/StyleRepository.js +1 -1
- package/views/2d/engine/vectorTiles/style/VectorTileSource.js +1 -1
- package/views/2d/engine/webgl/FeatureTile.js +1 -1
- package/views/2d/engine/webgl/GraphicTile.js +1 -1
- package/views/2d/engine/webgl/TextureManager.js +1 -1
- package/views/2d/engine/webgl/brushes/WGLBrushHeatmap.js +1 -1
- package/views/2d/engine/webgl/brushes/WGLBrushVTLCircle.js +1 -1
- package/views/2d/engine/webgl/brushes/WGLBrushVTLFill.js +1 -1
- package/views/2d/engine/webgl/brushes/WGLBrushVTLLine.js +1 -1
- package/views/2d/engine/webgl/collisions/CollisionEngine.js +1 -1
- package/views/2d/engine/webgl/collisions/MetricReader.js +1 -1
- package/views/2d/engine/webgl/cpuMapped/DisplayRecordReader.js +1 -1
- package/views/2d/engine/webgl/cpuMapped/FreeList.js +1 -1
- package/views/2d/engine/webgl/mesh/MeshData.js +1 -1
- package/views/2d/engine/webgl/mesh/templates/WGLBaseLineTemplate.js +1 -1
- package/views/2d/engine/webgl/mesh/templates/WGLBaseMarkerTemplate.js +1 -1
- package/views/2d/engine/webgl/mesh/templates/WGLBaseTextTemplate.js +1 -1
- package/views/2d/engine/webgl/mesh/templates/WGLDynamicFillTemplate.js +1 -1
- package/views/2d/engine/webgl/mesh/templates/WGLLabelTemplate.js +1 -1
- package/views/2d/engine/webgl/mesh/templates/WGLLineTemplate.js +1 -1
- package/views/2d/engine/webgl/mesh/templates/WGLMeshTemplate.js +1 -1
- package/views/2d/engine/webgl/painter/RenderPass.js +1 -1
- package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
- package/views/2d/engine/webgl/techniques/dotDensity/TechniqueDotDensity.js +1 -1
- package/views/2d/input/MapViewInputManager.js +1 -1
- package/views/2d/input/handlers/GamepadNavigation.js +1 -1
- package/views/2d/interactive/editingTools/draw/DrawGraphicTool2D.js +1 -1
- package/views/2d/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiles2D.js +1 -1
- package/views/2d/layers/BaseLayerView2D.js +1 -1
- package/views/2d/layers/BaseLayerViewGL2D.js +1 -1
- package/views/2d/layers/BitmapTileLayerView2D.js +1 -1
- package/views/2d/layers/FeatureLayerView2D.js +1 -1
- package/views/2d/layers/GeoRSSLayerView2D.js +1 -1
- package/views/2d/layers/GraphicsLayerView2D.js +1 -1
- package/views/2d/layers/ImageryLayerView2D.js +1 -1
- package/views/2d/layers/ImageryTileLayerView2D.js +1 -1
- package/views/2d/layers/KMLLayerView2D.js +1 -1
- package/views/2d/layers/LayerView2D.js +1 -1
- package/views/2d/layers/SubtypeGroupLayerView2D.js +1 -1
- package/views/2d/layers/TileLayerView2D.js +1 -1
- package/views/2d/layers/VectorTileLayerView2D.js +1 -1
- package/views/2d/layers/WMTSLayerView2D.js +1 -1
- package/views/2d/layers/features/FeatureStore2D.js +1 -1
- package/views/2d/layers/features/Pipeline.js +1 -1
- package/views/2d/layers/features/batchUtils.js +1 -1
- package/views/2d/layers/features/controllers/FeatureController2D.js +1 -1
- package/views/2d/layers/features/controllers/support/sourceAdapters.js +1 -1
- package/views/2d/layers/features/createSymbolSchema.js +1 -1
- package/views/2d/layers/features/processors/SymbolProcessor.js +1 -1
- package/views/2d/layers/features/schemaUtils.js +1 -1
- package/views/2d/layers/features/sources/BaseFeatureSource.js +1 -1
- package/views/2d/layers/features/sources/DataTileSource.js +1 -1
- package/views/2d/layers/features/sources/DataTileSubscription.js +1 -1
- package/views/2d/layers/features/sources/SnapshotFeatureSource.js +1 -1
- package/views/2d/layers/features/support/ClusterStore.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReader.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReaderJSON.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReaderPBF.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReaderPBFHeader.js +1 -1
- package/views/2d/layers/features/support/ResourceManagerProxy.js +1 -1
- package/views/2d/layers/features/tileRenderers/SymbolTileRenderer.js +1 -1
- package/views/2d/layers/features/tileRenderers/support/WGLFeatureView.js +1 -1
- package/views/2d/layers/graphics/graphicsUtils.js +1 -1
- package/views/2d/layers/imagery/BaseImageryTileSubView2D.js +1 -1
- package/views/2d/layers/imagery/ImageryTileView2D.js +1 -1
- package/views/2d/layers/imagery/VectorFieldTileView2D.js +1 -1
- package/views/2d/layers/support/ExportStrategy.js +1 -1
- package/views/2d/layers/support/FeatureCommandQueue.js +1 -1
- package/views/2d/magnifier/MagnifierView2D.js +1 -1
- package/views/2d/support/engineHelpers.js +1 -1
- package/views/2d/tiling/TileManager.js +1 -1
- package/views/3d/analysis/AreaMeasurement/support/AreaMeasurementVisualization.js +1 -1
- package/views/3d/analysis/AreaMeasurementAnalysisView3D.js +1 -1
- package/views/3d/analysis/Dimensioning/DimensioningVisualization.js +5 -0
- package/views/3d/analysis/Dimensioning/LinearDimensionVisualization.js +5 -0
- package/views/3d/analysis/DimensioningAnalysisView3D.js +1 -1
- package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementController.js +1 -1
- package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementVisualization.js +1 -1
- package/views/3d/analysis/DirectLineMeasurementAnalysisView3D.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
- package/views/3d/analysis/LineOfSightAnalysisView3D.js +1 -1
- package/views/3d/analysis/Slice/SliceTool.js +1 -1
- package/views/3d/analysis/SliceAnalysisView3D.js +1 -1
- package/views/3d/environment/ChapmanAtmosphere.glsl.js +1 -1
- package/views/3d/environment/ChapmanAtmosphere.js +1 -1
- package/views/3d/environment/Clouds.glsl.js +1 -1
- package/views/3d/environment/CloudsComposition.glsl.js +1 -1
- package/views/3d/environment/CloudsComposition.js +1 -1
- package/views/3d/environment/CloudsCompositionParameters.js +5 -0
- package/views/3d/environment/EnvironmentRenderer.js +1 -1
- package/views/3d/environment/Fog.glsl.js +1 -1
- package/views/3d/environment/Fog.js +1 -1
- package/views/3d/environment/Precipitation.js +1 -1
- package/views/3d/environment/SceneViewEnvironment.js +1 -1
- package/views/3d/environment/SceneViewEnvironmentManager.js +1 -1
- package/views/3d/environment/SimpleAtmosphere.js +1 -1
- package/views/3d/environment/Stars.glsl.js +1 -1
- package/views/3d/environment/Stars.js +1 -1
- package/views/3d/externalRenderers/ExternalRendererStore.js +1 -1
- package/views/3d/glTF/internal/Resource.js +1 -1
- package/views/3d/glTF/loader.js +1 -1
- package/views/3d/input/SceneInputManager.js +1 -1
- package/views/3d/input/handlers/TwoFingerTilt.js +1 -1
- package/views/3d/interactive/Manipulator3D.js +1 -1
- package/views/3d/interactive/editingTools/draw/DrawGraphicTool3D.js +1 -1
- package/views/3d/interactive/editingTools/manipulations/MoveManipulation.js +1 -1
- package/views/3d/interactive/editingTools/moveGraphic/isSupportedGraphic.js +1 -1
- package/views/3d/interactive/editingTools/reshapeGraphic/GraphicReshapeTool.js +1 -1
- package/views/3d/interactive/editingTools/reshapeGraphic/ReshapeOperation.js +1 -1
- package/views/3d/interactive/editingTools/reshapeGraphic/isSupportedGraphic.js +1 -1
- package/views/3d/interactive/editingTools/transformGraphic/GraphicScaleRotateTransform.js +1 -1
- package/views/3d/interactive/editingTools/transformGraphic/isSupportedGraphic.js +1 -1
- package/views/3d/interactive/measurementTools/areaMeasurement3D/AreaMeasurement3DView.js +1 -1
- package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DView.js +1 -1
- package/views/3d/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiles3D.js +1 -1
- package/views/3d/interactive/visualElements/DrapedVisualElementResources.js +1 -1
- package/views/3d/interactive/visualElements/LineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/OutlineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/VisualElementResources.js +1 -1
- package/views/3d/layers/BuildingComponentSublayerView3D.js +1 -1
- package/views/3d/layers/ElevationLayerView3D.js +1 -1
- package/views/3d/layers/FeatureLayerView3D.js +1 -1
- package/views/3d/layers/FeatureLayerViewBase3D.js +1 -1
- package/views/3d/layers/FeatureLikeLayerView3D.js +1 -1
- package/views/3d/layers/GraphicsLayerView3D.js +1 -1
- package/views/3d/layers/GraphicsView3D.js +1 -1
- package/views/3d/layers/I3SMeshView3D.js +1 -1
- package/views/3d/layers/ImageryLayerView3D.js +1 -1
- package/views/3d/layers/ImageryTileLayerView3D.js +1 -1
- package/views/3d/layers/LayerView3D.js +1 -1
- package/views/3d/layers/RouteLayerView3D.js +1 -1
- package/views/3d/layers/SceneLayerGraphicsView3D.js +1 -1
- package/views/3d/layers/SceneLayerView3D.js +1 -1
- package/views/3d/layers/SceneLayerWorker.js +1 -1
- package/views/3d/layers/StreamLayerView3D.js +1 -1
- package/views/3d/layers/TiledLayerView3D.js +1 -1
- package/views/3d/layers/VectorTileLayerView3D.js +1 -1
- package/views/3d/layers/VoxelLayerView3D.js +1 -1
- package/views/3d/layers/WMSLayerView3D.js +1 -1
- package/views/3d/layers/WMTSLayerView3D.js +1 -1
- package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
- package/views/3d/layers/graphics/Graphics3DExtrudeSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DFeatureProcessor.js +1 -1
- package/views/3d/layers/graphics/Graphics3DFilterVisibility.js +1 -1
- package/views/3d/layers/graphics/Graphics3DFrustumVisibility.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DObject3DGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPointSymbol.js +1 -1
- package/views/3d/layers/graphics/Graphics3DSymbol.js +1 -1
- package/views/3d/layers/graphics/Graphics3DSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/GraphicsDeconflictor.js +1 -1
- package/views/3d/layers/graphics/GraphicsProcessor.js +1 -1
- package/views/3d/layers/graphics/Labeler.js +1 -1
- package/views/3d/layers/i3s/I3SAttributeOverrides.js +1 -1
- package/views/3d/layers/i3s/I3SMeshViewFilter.js +1 -1
- package/views/3d/layers/i3s/I3SStreamDataController.js +1 -1
- package/views/3d/layers/i3s/I3SUtil.js +1 -1
- package/views/3d/layers/support/FeatureTileTree3D.js +1 -1
- package/views/3d/layers/support/FeatureTileTree3DDebugger.js +1 -1
- package/views/3d/layers/support/HeatmapFeatureProcessor.js +1 -1
- package/views/3d/layers/support/StageLayerElevationProvider.js +1 -1
- package/views/3d/layers/support/featureTileQuery3D.js +1 -1
- package/views/3d/state/ConstraintsManager.js +1 -1
- package/views/3d/state/helpers/SceneIntersectionHelper.js +1 -1
- package/views/3d/support/ResourceController.js +1 -1
- package/views/3d/support/SharedSymbolResources.js +1 -1
- package/views/3d/support/TextureCollection.js +1 -1
- package/views/3d/support/cameraUtils.js +1 -1
- package/views/3d/support/pointsOfInterest/CameraOnSurface.js +1 -1
- package/views/3d/support/pointsOfInterest/Focus.js +1 -1
- package/views/3d/support/pointsOfInterest/PointsOfInterest.js +1 -1
- package/views/3d/support/pointsOfInterest/StableSurfaceCenter.js +1 -1
- package/views/3d/terrain/OverlayFramebufferObject.js +1 -1
- package/views/3d/terrain/OverlayManager.js +1 -1
- package/views/3d/terrain/OverlayRenderer.js +1 -1
- package/views/3d/terrain/PatchGeometry.js +1 -1
- package/views/3d/terrain/PatchGeometryFactory.js +1 -1
- package/views/3d/terrain/PatchRenderData.js +1 -1
- package/views/3d/terrain/PlanarPatch.js +1 -1
- package/views/3d/terrain/RasterColorizerTechnique.js +1 -1
- package/views/3d/terrain/RasterTile.js +1 -1
- package/views/3d/terrain/SphericalPatch.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/terrain/Tile.js +1 -1
- package/views/3d/terrain/TileCompositor.js +1 -1
- package/views/3d/terrain/TileRenderer.js +1 -1
- package/views/3d/terrain/TilingSchemeLogic.js +1 -1
- package/views/3d/terrain/terrainUtils.js +1 -1
- package/views/3d/webgl-engine/collections/Component/ComponentIntersectionData.js +1 -1
- package/views/3d/webgl-engine/collections/Component/ComponentObjectCollection.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/ComponentTechnique.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/shader/ComponentData.glsl.js +2 -2
- package/views/3d/webgl-engine/core/material/MaterialBase.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/ScreenSizeScaling.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js +5 -5
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathVertexPosition.glsl.js +8 -8
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js +6 -6
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexNormal.glsl.js +4 -4
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VerticalOffset.glsl.js +5 -5
- package/views/3d/webgl-engine/core/shaderLibrary/hud/HUD.glsl.js +13 -13
- package/views/3d/webgl-engine/core/shaderLibrary/raster/BasicGrid.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/raster/Colormap.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/raster/Common.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/raster/Projection.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/raster/RasterColorizer.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/ComputeMaterialColor.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientLighting.glsl.js +5 -5
- package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js +3 -3
- package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +13 -13
- package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +17 -17
- package/views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/VisualVariables.glsl.js +7 -7
- package/views/3d/webgl-engine/core/shaderLibrary/shading/WaterDistortion.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js +5 -5
- package/views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/util/CloudsParallaxShading.glsl.js +15 -15
- package/views/3d/webgl-engine/core/shaderLibrary/util/ScreenSizePerspective.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderModules/BooleanPassUniform.js +5 -0
- package/views/3d/webgl-engine/core/shaderModules/Float4DrawUniform.js +5 -0
- package/views/3d/webgl-engine/core/shaderModules/{Matrix3Uniform.js → Float4PassUniform.js} +1 -1
- package/views/3d/webgl-engine/core/shaderModules/Float4Uniform.js +1 -1
- package/views/3d/webgl-engine/core/shaderModules/Matrix3DrawUniform.js +5 -0
- package/views/3d/webgl-engine/core/shaderModules/Matrix3PassUniform.js +5 -0
- package/views/3d/webgl-engine/core/shaderModules/{TextureCubeUniform.js → TextureCubePassUniform.js} +1 -1
- package/views/3d/webgl-engine/core/shaderTechnique/ShaderTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/lib/AutoDisposable.js +1 -1
- package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
- package/views/3d/webgl-engine/lib/GLTextureMaterial.js +1 -1
- package/views/3d/webgl-engine/lib/RenderPluginManager.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowAccumulator.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowHighlight.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowMap.js +1 -1
- package/views/3d/webgl-engine/lib/Texture.js +1 -1
- package/views/3d/webgl-engine/lib/WebGLLayer.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
- package/views/3d/webgl-engine/lib/intersectorUtilsConversions.js +1 -1
- package/views/3d/webgl-engine/lib/pathGeometryUtils.js +1 -1
- package/views/3d/webgl-engine/materials/CheckerBoardMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/ColorMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/HeatmapDensityMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/ImageMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/LineCalloutMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/MeasurementArrowMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/NativeLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/PathMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/PathTechnique.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/ShadedColorMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/{VisualVariableMaterialParameters.js → VisualVariablePassParameters.js} +1 -1
- package/views/3d/webgl-engine/materials/WaterGLMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/WaterTechnique.js +1 -1
- package/views/3d/webgl-engine/parts/RenderView.js +1 -1
- package/views/3d/webgl-engine/parts/requireUtils.js +1 -1
- package/views/3d/webgl-engine/shaders/CheckerBoard.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/CheckerBoardTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/ColorMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/DefaultMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/HUDMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/HUDMaterialTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/HeatmapDensity.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/HeatmapDensityTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/HeatmapTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/HighlightApply.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/LineCallout.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/LineMarker.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/Magnifier.glsl.js +3 -3
- package/views/3d/webgl-engine/shaders/MeasurementArrow.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/NativeLine.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/Path.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/Pattern.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/RealisticTree.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/ShadedColorMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/ShadowCastVisualize.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/ShadowHighlight.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/SlicePlaneMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/WaterSurface.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/sources/edgeRenderer/AdjustProjectedPosition.glsl.js +3 -3
- package/views/3d/webgl-engine/shaders/sources/edgeRenderer/EdgeShader.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/sources/edgeRenderer/EdgeUtil.glsl.js +5 -5
- package/views/BasemapView.js +1 -1
- package/views/GroundView.js +1 -1
- package/views/LayerViewManager.js +1 -1
- package/views/MapView.js +1 -1
- package/views/SceneView.js +1 -1
- package/views/ToolViewManager.js +1 -1
- package/views/View.js +1 -1
- package/views/draw/DrawAction.js +1 -1
- package/views/draw/DrawGraphicTool.js +1 -1
- package/views/draw/DrawOperation.js +1 -1
- package/views/draw/DrawTool.js +1 -1
- package/views/draw/support/Box.js +1 -1
- package/views/draw/support/GraphicMover.js +1 -1
- package/views/draw/support/Reshape.js +1 -1
- package/views/interactive/coordinateHelper.js +1 -1
- package/views/interactive/editGeometry/operations/OffsetEdgeVertex.js +1 -1
- package/views/interactive/snapping/FeatureSnappingEngine.js +1 -1
- package/views/interactive/snapping/SnappingManager.js +1 -1
- package/views/interactive/snapping/featureSources/WorkerTileTreeDebugger.js +1 -1
- package/views/interactive/snapping/featureSources/featureServiceSource/FeatureServiceSnappingSourceWorkerHandle.js +1 -1
- package/views/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTileStore.js +1 -1
- package/views/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiledFetcher.js +1 -1
- package/views/layers/FeatureLayerView.js +1 -1
- package/views/layers/GroupLayerView.js +1 -1
- package/views/layers/ImageryLayerView.js +1 -1
- package/views/layers/ImageryTileLayerView.js +1 -1
- package/views/layers/LayerView.js +1 -1
- package/views/layers/MapImageLayerView.js +1 -1
- package/views/layers/WMSLayerView.js +1 -1
- package/views/support/AllocationTracer.js +1 -1
- package/views/support/DefaultsFromMap.js +1 -1
- package/views/support/geometry2dUtils.js +1 -1
- package/views/support/layerViewUtils.js +1 -1
- package/views/support/waitForResources.js +1 -1
- package/views/ui/UI.js +1 -1
- package/views/webgl/BufferObject.js +1 -1
- package/views/webgl/FramebufferObject.js +1 -1
- package/views/webgl/RenderingContext.js +1 -1
- package/views/webgl/Texture.js +1 -1
- package/views/webgl/UniformBufferLayout.js +1 -1
- package/views/webgl/VertexArrayObject.js +1 -1
- package/views/webgl/capabilities.js +1 -1
- package/views/webgl/rasterUtils.js +1 -1
- package/views/webgl/testFloatBufferBlend.js +1 -1
- package/webdoc/widgets/TimeSlider.js +1 -1
- package/webmap/Bookmark.js +1 -1
- package/webscene/Slide.js +1 -1
- package/widgets/AreaMeasurement2D/AreaMeasurement2DTool.js +1 -1
- package/widgets/AreaMeasurement2D/AreaMeasurement2DViewModel.js +1 -1
- package/widgets/AreaMeasurement2D.js +1 -1
- package/widgets/AreaMeasurement3D.js +1 -1
- package/widgets/Attribution.js +1 -1
- package/widgets/BasemapGallery/BasemapGalleryViewModel.js +1 -1
- package/widgets/BasemapGallery/support/BasemapGalleryItem.js +1 -1
- package/widgets/BasemapGallery/support/basemapCompatibilityUtils.js +1 -1
- package/widgets/BasemapLayerList.js +1 -1
- package/widgets/BasemapToggle/BasemapToggleViewModel.js +1 -1
- package/widgets/Bookmarks/BookmarksViewModel.js +1 -1
- package/widgets/Bookmarks.js +1 -1
- package/widgets/BuildingExplorer/BuildingDisciplinesTree/BuildingDisciplinesNode.js +1 -1
- package/widgets/BuildingExplorer/BuildingExplorerViewModel.js +1 -1
- package/widgets/BuildingExplorer/BuildingLevel.js +1 -1
- package/widgets/BuildingExplorer/BuildingLevelPicker/BuildingLevelPicker.js +1 -1
- package/widgets/BuildingExplorer/BuildingNumericFilterViewModel.js +1 -1
- package/widgets/BuildingExplorer/BuildingPhase.js +1 -1
- package/widgets/BuildingExplorer/support/buildingLayerUtils.js +1 -1
- package/widgets/BuildingExplorer.js +1 -1
- package/widgets/CoordinateConversion/CoordinateConversionViewModel.js +1 -1
- package/widgets/CoordinateConversion/support/Format.js +1 -1
- package/widgets/Daylight/DaylightViewModel.js +1 -1
- package/widgets/Daylight/support/SliderWithDropdown.js +1 -1
- package/widgets/Daylight.js +1 -1
- package/widgets/DirectLineMeasurement3D.js +1 -1
- package/widgets/Directions/DirectionsViewModel.js +1 -1
- package/widgets/Directions.js +1 -1
- package/widgets/DistanceMeasurement2D/DistanceMeasurement2DViewModel.js +1 -1
- package/widgets/DistanceMeasurement2D.js +1 -1
- package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
- package/widgets/Editor/CreateWorkflow.js +1 -1
- package/widgets/Editor/EditorViewModel.js +1 -1
- package/widgets/Editor/UpdateWorkflow.js +1 -1
- package/widgets/Editor/workflowUtils.js +1 -1
- package/widgets/Editor.js +1 -1
- package/widgets/ElevationProfile/ElevationProfileLineGround.js +1 -1
- package/widgets/ElevationProfile/ElevationProfileLineInput.js +1 -1
- package/widgets/ElevationProfile/ElevationProfileLineView.js +1 -1
- package/widgets/ElevationProfile/ElevationProfileTool.js +1 -1
- package/widgets/ElevationProfile/ElevationProfileViewModel.js +1 -1
- package/widgets/ElevationProfile/components/Statistics.js +1 -1
- package/widgets/ElevationProfile/support/elevationQuerySourceUtils.js +1 -1
- package/widgets/ElevationProfile/support/profileUtils.js +1 -1
- package/widgets/ElevationProfile.js +1 -1
- package/widgets/Expand.js +1 -1
- package/widgets/Feature/FeatureAttachments.js +1 -1
- package/widgets/Feature/FeatureContent.js +1 -1
- package/widgets/Feature/FeatureExpression/FeatureExpressionViewModel.js +1 -1
- package/widgets/Feature/FeatureExpression.js +1 -1
- package/widgets/Feature/FeatureFields/FeatureFieldsViewModel.js +1 -1
- package/widgets/Feature/FeatureFields.js +1 -1
- package/widgets/Feature/FeatureMedia/FeatureMediaViewModel.js +1 -1
- package/widgets/Feature/FeatureMedia.js +1 -1
- package/widgets/Feature/FeatureViewModel.js +1 -1
- package/widgets/Feature/support/arcadeFeatureUtils.js +1 -1
- package/widgets/Feature/support/featureUtils.js +1 -1
- package/widgets/Feature/support/relatedFeatureUtils.js +1 -1
- package/widgets/FeatureForm/FeatureFormViewModel.js +1 -1
- package/widgets/FeatureForm/InputField.js +1 -1
- package/widgets/FeatureForm/support/formTemplateUtils.js +1 -1
- package/widgets/FeatureForm.js +1 -1
- package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
- package/widgets/FeatureTable/FieldColumn.js +1 -1
- package/widgets/FeatureTable/Grid/Column.js +1 -1
- package/widgets/FeatureTable/Grid/EditorColumn.js +1 -1
- package/widgets/FeatureTable/Grid/Grid.js +1 -1
- package/widgets/FeatureTable/Grid/GridViewModel.js +1 -1
- package/widgets/FeatureTable/Grid/support/ButtonMenu.js +1 -1
- package/widgets/FeatureTable/Grid/support/LocalStore.js +1 -1
- package/widgets/FeatureTable/support/FeatureStore.js +1 -1
- package/widgets/FeatureTable.js +1 -1
- package/widgets/FeatureTemplates/FeatureTemplatesViewModel.js +1 -1
- package/widgets/FeatureTemplates/ItemList.js +1 -1
- package/widgets/FeatureTemplates/TemplateItem.js +1 -1
- package/widgets/FeatureTemplates.js +1 -1
- package/widgets/FloorFilter/FloorFilterViewModel.js +1 -1
- package/widgets/FloorFilter.js +1 -1
- package/widgets/Fullscreen.js +1 -1
- package/widgets/Home.js +1 -1
- package/widgets/LayerList/LayerListViewModel.js +1 -1
- package/widgets/LayerList/support/layerListUtils.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/support/univariateUtils.js +1 -1
- package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
- package/widgets/Legend/support/clusterUtils.js +1 -1
- package/widgets/Legend/support/sizeRampUtils.js +1 -1
- package/widgets/Locate/LocateViewModel.js +1 -1
- package/widgets/Popup/PopupViewModel.js +1 -1
- package/widgets/Popup/actionUtils.js +1 -1
- package/widgets/Popup.js +1 -1
- package/widgets/Print/PrintViewModel.js +1 -1
- package/widgets/Print.js +1 -1
- package/widgets/ScaleRangeSlider/ScaleRangeSliderViewModel.js +1 -1
- package/widgets/Search/LayerSearchSource.js +1 -1
- package/widgets/Search/SearchResultRenderer.js +1 -1
- package/widgets/Search/SearchViewModel.js +1 -1
- package/widgets/Search/support/geometryUtils.js +1 -1
- package/widgets/Search/support/layerSearchUtils.js +1 -1
- package/widgets/Search/support/locatorUtils.js +1 -1
- package/widgets/Search.js +1 -1
- package/widgets/ShadowCast/components/DiscreteConfigurator.js +1 -1
- package/widgets/ShadowCast/components/Label.js +1 -1
- package/widgets/ShadowCast/components/TimezonePicker.js +1 -1
- package/widgets/ShadowCast.js +1 -1
- package/widgets/Sketch/SketchViewModel.js +1 -1
- package/widgets/Sketch.js +1 -1
- package/widgets/Slider.js +1 -1
- package/widgets/Swipe/SwipeViewModel.js +1 -1
- package/widgets/TableList/TableListViewModel.js +1 -1
- package/widgets/TableList/support/tableListUtils.js +1 -1
- package/widgets/TableList.js +1 -1
- package/widgets/TimeSlider/TimeSliderViewModel.js +1 -1
- package/widgets/TimeSlider/utils.js +1 -1
- package/widgets/TimeSlider.js +1 -1
- package/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel.js +1 -1
- package/widgets/Weather.js +1 -1
- package/widgets/Widget.js +1 -1
- package/widgets/smartMapping/BinaryColorSizeSlider/BinaryColorSizeSliderViewModel.js +1 -1
- package/widgets/smartMapping/BinaryColorSizeSlider.js +1 -1
- package/widgets/smartMapping/ClassedColorSlider.js +1 -1
- package/widgets/smartMapping/ClassedSizeSlider.js +1 -1
- package/widgets/smartMapping/ColorSizeSlider.js +1 -1
- package/widgets/smartMapping/SizeSlider/SizeSliderViewModel.js +1 -1
- package/widgets/smartMapping/SmartMappingSliderBase.js +1 -1
- package/widgets/smartMapping/SmartMappingSliderViewModel.js +1 -1
- package/widgets/support/AnalysisViewModel.js +1 -1
- package/widgets/support/ColorPicker.js +1 -1
- package/widgets/support/DatePicker.js +1 -1
- package/widgets/support/InteractiveAnalysisViewModel.js +1 -1
- package/widgets/support/Popover.js +1 -1
- package/widgets/support/SelectionToolbar/SelectionToolbarViewModel.js +1 -1
- package/widgets/support/SelectionToolbar.js +1 -1
- package/widgets/support/Selector2D/SelectionOperation2D.js +1 -1
- package/widgets/support/Selector2D.js +1 -1
- package/widgets/support/SnappingControls/SnappingControlsViewModel.js +1 -1
- package/widgets/support/SnappingControls.js +1 -1
- package/widgets/support/jsxWidgetSupport.js +1 -1
- package/widgets/support/widgetUtils.js +1 -1
- package/assets/esri/core/workers/chunks/049c5c30bd37693dddb7.js +0 -1
- package/assets/esri/core/workers/chunks/055a0ebf22a82f859474.js +0 -1
- package/assets/esri/core/workers/chunks/0b12ff7b2ed2838afbb8.js +0 -1
- package/assets/esri/core/workers/chunks/0e25548573baf855e394.js +0 -1
- package/assets/esri/core/workers/chunks/0edd4c3ca6e7d749d0e5.js +0 -1
- package/assets/esri/core/workers/chunks/0fcbf7e2db58e38ee6d1.js +0 -1
- package/assets/esri/core/workers/chunks/133f971e72a1a6277ac4.js +0 -1
- package/assets/esri/core/workers/chunks/135a90ae61f3b3cae91b.js +0 -1
- package/assets/esri/core/workers/chunks/13fde7fd56c39fa3f2d5.js +0 -1
- package/assets/esri/core/workers/chunks/1c90855c3b0e5dcff908.js +0 -1
- package/assets/esri/core/workers/chunks/1dbef1919c7ac10a6bcc.js +0 -1
- package/assets/esri/core/workers/chunks/1facbda248863cf72cbd.js +0 -1
- package/assets/esri/core/workers/chunks/1fb2d7abe6c8efa84695.js +0 -1
- package/assets/esri/core/workers/chunks/2068377c2a796d5f2245.js +0 -1
- package/assets/esri/core/workers/chunks/28a5878cbe5880476855.js +0 -1
- package/assets/esri/core/workers/chunks/2cf3934b3ecabdf207c8.js +0 -1
- package/assets/esri/core/workers/chunks/2d42711a629384144625.js +0 -1
- package/assets/esri/core/workers/chunks/3021fda52083fc67d18c.js +0 -1
- package/assets/esri/core/workers/chunks/30333a95dc0a44e23fb5.js +0 -1
- package/assets/esri/core/workers/chunks/30837d93116f0337972f.js +0 -1
- package/assets/esri/core/workers/chunks/320543485c8e22485075.js +0 -1
- package/assets/esri/core/workers/chunks/3f0f7da92a6e4493686e.js +0 -1
- package/assets/esri/core/workers/chunks/42057f252ba4e82a8b45.js +0 -1
- package/assets/esri/core/workers/chunks/45a3f6033cdf4bc74a4c.js +0 -1
- package/assets/esri/core/workers/chunks/492b65fe99641f5740f0.js +0 -1
- package/assets/esri/core/workers/chunks/4d1cd7df617273c489f4.js +0 -1
- package/assets/esri/core/workers/chunks/4df9dfa80dbbae9b743d.js +0 -1
- package/assets/esri/core/workers/chunks/515c1c055666ff4740f3.js +0 -1
- package/assets/esri/core/workers/chunks/541e644fc77dbe527124.js +0 -1
- package/assets/esri/core/workers/chunks/59e341b2db44351bf557.js +0 -1
- package/assets/esri/core/workers/chunks/5a10b58533b4116115ac.js +0 -1
- package/assets/esri/core/workers/chunks/5f940853341d7e2bc852.js +0 -1
- package/assets/esri/core/workers/chunks/5ff2cdecf95e0136dd52.js +0 -1
- package/assets/esri/core/workers/chunks/6147bfbe2bd7292d6ad0.js +0 -1
- package/assets/esri/core/workers/chunks/6467f996fe9f136c370b.js +0 -1
- package/assets/esri/core/workers/chunks/682a8f15f352de76df69.js +0 -1
- package/assets/esri/core/workers/chunks/6a06635089761ee3e6d4.js +0 -972
- package/assets/esri/core/workers/chunks/725828a41917d3d56f2d.js +0 -1
- package/assets/esri/core/workers/chunks/794b47764ebb0257ed41.js +0 -1
- package/assets/esri/core/workers/chunks/7fd03a75eb07a09cda35.js +0 -1
- package/assets/esri/core/workers/chunks/86ad6b020c01850d9095.js +0 -1
- package/assets/esri/core/workers/chunks/86f9d1ce36661781d962.js +0 -1
- package/assets/esri/core/workers/chunks/8dcf6c836b53b40dfbf1.js +0 -1
- package/assets/esri/core/workers/chunks/8e98ff9404a802352037.js +0 -1
- package/assets/esri/core/workers/chunks/94e51fe1c539df6257c2.js +0 -1
- package/assets/esri/core/workers/chunks/9519a02b9b8db88a3150.js +0 -1
- package/assets/esri/core/workers/chunks/9a8b50ed75219b4a42e1.js +0 -1
- package/assets/esri/core/workers/chunks/9f3a094aa4b47e4eb046.js +0 -1
- package/assets/esri/core/workers/chunks/a0ebf25c9c9a7f839b93.js +0 -1
- package/assets/esri/core/workers/chunks/a25f0a195f9217665530.js +0 -1
- package/assets/esri/core/workers/chunks/a2be1e0b632cef87f6a4.js +0 -1
- package/assets/esri/core/workers/chunks/a4d8cf9829da9cfc5f36.js +0 -1
- package/assets/esri/core/workers/chunks/a562059dbdd1bf1fab66.js +0 -1
- package/assets/esri/core/workers/chunks/a59ee7d2b98c85f27dd2.js +0 -1
- package/assets/esri/core/workers/chunks/a5dbab94697757c87c49.js +0 -1
- package/assets/esri/core/workers/chunks/a5e65d5a7a536759d1cc.js +0 -1
- package/assets/esri/core/workers/chunks/a8ac0b6a3eba35e3a5b6.js +0 -1
- package/assets/esri/core/workers/chunks/acbd0f4d72d1f5d8e4e8.js +0 -1
- package/assets/esri/core/workers/chunks/acc97a210f36bff2d1b0.js +0 -1
- package/assets/esri/core/workers/chunks/ad68fe924456d6d7d4f0.js +0 -1
- package/assets/esri/core/workers/chunks/b06c949fc7d08e376a5f.js +0 -1
- package/assets/esri/core/workers/chunks/b26bd8fde2fc65bb67fb.js +0 -1
- package/assets/esri/core/workers/chunks/b4405e9fe6c0cf7250d3.js +0 -1
- package/assets/esri/core/workers/chunks/bc08fe3b03767bd694c5.js +0 -1
- package/assets/esri/core/workers/chunks/c11501e96ffd81bf39a0.js +0 -1
- package/assets/esri/core/workers/chunks/c44116378cc1bc627044.js +0 -1
- package/assets/esri/core/workers/chunks/c9b09099488d0e719dfb.js +0 -1
- package/assets/esri/core/workers/chunks/cbea4f1eb814115748db.js +0 -1
- package/assets/esri/core/workers/chunks/ce262a2accd982988ef1.js +0 -1
- package/assets/esri/core/workers/chunks/d15e6662d90718411d62.js +0 -1
- package/assets/esri/core/workers/chunks/d16aac3461af9cee0c29.js +0 -1
- package/assets/esri/core/workers/chunks/d60dd3e1028f714f2258.js +0 -1
- package/assets/esri/core/workers/chunks/d6c150c243ca1f6108f9.js +0 -1
- package/assets/esri/core/workers/chunks/d85748b57a71999caf3a.js +0 -1
- package/assets/esri/core/workers/chunks/d8c59b1d73650c060dfb.js +0 -1
- package/assets/esri/core/workers/chunks/dcb6e1b33402d7fa455b.js +0 -1
- package/assets/esri/core/workers/chunks/df653bca2b14dffc82d1.js +0 -1
- package/assets/esri/core/workers/chunks/e2a12142439d3037a3a7.js +0 -1
- package/assets/esri/core/workers/chunks/e3e1d87b8532bf84a18d.js +0 -1
- package/assets/esri/core/workers/chunks/e7744b7e0c16bba93151.js +0 -1
- package/assets/esri/core/workers/chunks/ea50effc5c39870dc871.js +0 -1
- package/assets/esri/core/workers/chunks/f1665a64564593f2a438.js +0 -1
- package/assets/esri/core/workers/chunks/f4c12f3a5e7f89106ae0.js +0 -1
- package/assets/esri/core/workers/chunks/fbefdc74b3aab716187f.js +0 -1
- package/assets/esri/core/workers/chunks/fc4fd9db056579e09bfe.js +0 -1
- package/assets/esri/core/workers/chunks/fd4907fa96f55128764d.js +0 -1
- package/views/3d/webgl-engine/core/shaderModules/BooleanUniform.js +0 -5
|
@@ -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"../../../../core/has.js";import{isSome as t,isNone as r,unwrapOr as a,get as o}from"../../../../core/maybe.js";import{f as s,t as n}from"../../../../chunks/mat3.js";import{c as i}from"../../../../chunks/mat3f64.js";import{f as l,m as c,a as u}from"../../../../chunks/mat4.js";import{b as m,c as h}from"../../../../chunks/mat4f64.js";import{a as p,g as f,e as d,n as g,b as x,f as _}from"../../../../chunks/vec3.js";import{Z as y,O as b,c as v}from"../../../../chunks/vec3f64.js";import{O as T}from"../../../../chunks/vec4f64.js";import{projectVectorToDehydratedPoint as C,projectBuffer as O,computeTranslationToOriginAndRotation as A,canProjectWithoutEngine as M}from"../../../../geometry/projection.js";import{create as w,empty as E,expandWithBuffer as N,intersectsClippingArea as j}from"../../../../geometry/support/aaBoundingBox.js";import R from"../../../../geometry/support/MeshComponent.js";import P from"../../../../geometry/support/MeshMaterialMetallicRoughness.js";import{BufferViewVec3f64 as I,BufferViewVec3f as B}from"../../../../geometry/support/buffer/BufferView.js";import{t as S,a as F}from"../../../../chunks/vec32.js";import{transformPosition as L,transformNormal as U,projectNormalToPCPF as V,transformTangent as G,projectTangentToPCPF as $}from"../../../../geometry/support/meshUtils/projection.js";import{makeDehydratedPoint as D}from"../../../../layers/graphics/dehydratedFeatures.js";import{ViewingMode as k}from"../../../ViewingMode.js";import{perObjectElevationAligner as z}from"./ElevationAligners.js";import{needsElevationUpdates3D as q}from"./elevationAlignmentUtils.js";import{ElevationContext as H}from"./ElevationContext.js";import{Graphics3DObject3DGraphicLayer as W}from"./Graphics3DObject3DGraphicLayer.js";import{Graphics3DSymbolLayer as Y}from"./Graphics3DSymbolLayer.js";import{createMaterial as Z}from"../support/edgeUtils.js";import{parseColorMixMode as J,encodeSymbolColor as K}from"../support/symbolColorUtils.js";import Q from"../../support/debugFlags.js";import{AlphaDiscardMode as X,CullFaceOptions as ee,PrimitiveType as te}from"../../webgl-engine/lib/basicInterfaces.js";import{Geometry as re}from"../../webgl-engine/lib/Geometry.js";import{generateDefaultIndexArray as ae}from"../../webgl-engine/lib/geometryDataUtils.js";import{Object3D as oe}from"../../webgl-engine/lib/Object3D.js";import{Texture as se}from"../../webgl-engine/lib/Texture.js";import{VertexAttribute as ne}from"../../webgl-engine/lib/VertexAttribute.js";import{DefaultMaterial as ie}from"../../webgl-engine/materials/DefaultMaterial.js";import{NativeLineMaterial as le}from"../../webgl-engine/materials/NativeLineMaterial.js";import{TextureWrapMode as ce}from"../../../webgl/enums.js";const ue=["mesh"];class me extends Y{constructor(e,t,r,a){super(e,t,r,a),this._materials=new Map,this._textures=new Map,this.ensureDrapedStatus(!1)}async doLoad(){Q.DRAW_MESH_GEOMETRY_NORMALS&&(this._debugVertexNormalMaterial=new le({color:[1,0,1,1]}),this._debugFaceNormalMaterial=new le({color:[0,1,1,1]}))}destroy(){super.destroy(),this._context.stage.removeMany(Array.from(this._materials.values(),(e=>e.material))),this._context.stage.removeMany(Array.from(this._textures.values())),this._materials.clear(),this._textures.clear()}createGraphics3DGraphic(e){const t=e.graphic;if(!this._validateGeometry(t.geometry,ue,"fill on mesh-3d"))return null;const r=this.setGraphicElevationContext(t,new H),a=e.renderingInfo;return this._createAs3DShape(t,a,r,t.uid)}layerOpacityChanged(e,r){const a=this._getLayerOpacity();return this._materials.forEach((e=>{e.material.setParameters({layerOpacity:a});const t=e.material.parameters;this._setMaterialTransparentParameter(t,e),e.material.setParameters({transparent:t.transparent})})),e.forEach((e=>{const o=r(e);t(o)&&o.layerOpacityChanged(a,this._context.isAsync)})),!0}layerElevationInfoChanged(e,t){return this.updateGraphics3DGraphicElevationInfo(e,t,q)}slicePlaneEnabledChanged(e,r){return this._materials.forEach((e=>{e.material.setParameters({hasSlicePlane:this._context.slicePlaneEnabled})})),e.forEach((e=>{const a=r(e);t(a)&&a.slicePlaneEnabledChanged(this._context.slicePlaneEnabled,this._context.isAsync)})),!0}physicalBasedRenderingChanged(){const e=this._usePBR();return this._materials.forEach((t=>t.material.setParameters({usePBR:e}))),!0}pixelRatioChanged(){return!0}_requiresSymbolVertexColors(){return this._drivenProperties.color||this._drivenProperties.opacity}_colorOrTextureUid(t){return r(t)?"-":t instanceof e?t.toHex():t.contentHash}_materialPropertiesDefault(e,t){const r=this._requiresSymbolVertexColors(),a=!!e.vertexAttributes.color,o=!!e.vertexAttributes.tangent;return{hasSymbolVertexColors:r,hasVertexColors:a,hasVertexTangents:o,uid:`vc:${a},vt:${o},vct${t},svc:${r}`}}_materialProperties(e,t,r){const a=this._materialPropertiesDefault(e,r);if(!t.material)return a;const{color:o,colorTexture:s,normalTexture:n,doubleSided:i,alphaCutoff:l,alphaMode:c}=t.material,u=this._colorOrTextureUid(o),m=this._colorOrTextureUid(s),h=this._colorOrTextureUid(n);if(a.color=o,a.colorTexture=s,a.normalTexture=n,a.uid=`${a.uid},cmuid:${u},ctmuid:${m},ntmuid:${h},ds:${i},ac:${l},am:${c}`,t.material instanceof P){const{metallic:e,roughness:r,metallicRoughnessTexture:o,emissiveColor:s,emissiveTexture:n,occlusionTexture:i}=t.material,l=this._colorOrTextureUid(o),c=this._colorOrTextureUid(s),u=this._colorOrTextureUid(n),m=this._colorOrTextureUid(i);a.metallic=e,a.roughness=r,a.metallicRoughnessTexture=o,a.emissiveColor=s,a.emissiveTexture=n,a.occlusionTexture=i,a.uid=`${a.uid},mrm:${e},mrr:${r},mrt:${l},emuid:${c},etmuid:${u},otmuid:${m}`}return a}_setInternalColorValueParameters(t,r){r.diffuse=e.toUnitRGB(t),r.opacity=t.a}_getLoadableTextureResource(e){return e.data?e.data:e.url}_getInternalTextureId(e){const r=this._getInternalTexture(e,X.Opaque);return t(r)?r.id:null}_getInternalTexture(e,t){const r=this._getLoadableTextureResource(e);if(!r)return null;const a=`${e.contentHash}/${t}`;let o=this._textures.get(a);return o||(o=new se(r,{mipmap:!0,wrap:this._castTextureWrap(e.wrap),noUnpackFlip:!0,preMultiplyAlpha:t!==X.Opaque}),this._textures.set(a,o),this._context.stage.add(o),this._context.stage.loadImmediate(o)),o}_castTextureWrap(e="repeat"){if("string"==typeof e){const t=this._castTextureWrapIndividual(e);return{s:t,t}}return{s:this._castTextureWrapIndividual(e.horizontal),t:this._castTextureWrapIndividual(e.vertical)}}_castTextureWrapIndividual(e){switch(e){case"clamp":return ce.CLAMP_TO_EDGE;case"mirror":return ce.MIRRORED_REPEAT;default:return ce.REPEAT}}_setInternalMaterialParameters(r,a){if(t(r.color)&&this._setInternalColorValueParameters(r.color,a),t(r.colorTexture)){const e=this._getInternalTexture(r.colorTexture,a.textureAlphaMode);t(e)?(a.textureId=e.id,a.textureAlphaPremultiplied=!!e.params.preMultiplyAlpha):a.textureId=void 0}t(r.normalTexture)&&(a.normalTextureId=this._getInternalTextureId(r.normalTexture)),t(r.emissiveColor)&&(a.emissiveFactor=e.toUnitRGB(r.emissiveColor)),t(r.emissiveTexture)&&(a.emissiveTextureId=this._getInternalTextureId(r.emissiveTexture)),t(r.occlusionTexture)&&(a.occlusionTextureId=this._getInternalTextureId(r.occlusionTexture)),t(r.metallicRoughnessTexture)&&(a.metallicRoughnessTextureId=this._getInternalTextureId(r.metallicRoughnessTexture))}_setExternalMaterialParameters(r){const a=this._drivenProperties.color;let o=t(this.symbolLayer.material)?this.symbolLayer.material.colorMixMode:null;if(a)r.externalColor=T;else{const a=t(this.symbolLayer.material)?this.symbolLayer.material.color:null;t(a)?r.externalColor=e.toUnitRGBA(a):(o=null,r.externalColor=T)}o&&(r.colorMixMode=o),r.castShadows=!!this.symbolLayer.castShadows}_hasTransparentVertexColors(e){const t=e.vertexAttributes.color;if(r(t))return!1;for(let r=3;r<t.length;r+=4)if(255!==t[r])return!0;return!1}_getOrCreateMaterial(e,r){var a,o,s;const n=null==(a=r.material)?void 0:a.color,i=null==(o=r.material)?void 0:o.colorTexture,l=null==(s=r.material)?void 0:s.alphaMode,c="blend"===l,u=!("opaque"===l)&&(this._hasTransparentVertexColors(e)||t(n)&&n.a<1||t(i)&&i.transparent||c),m=this._materialProperties(e,r,u),h=this._materials.get(m.uid);if(h)return h.material;const p={material:null,isComponentTransparent:u,alphaMode:r.material?r.material.alphaMode:"opaque"},f=null==m.metallicRoughnessTexture&&null==m.metallic&&null==m.roughness,d={usePBR:this._usePBR(),isSchematic:f,hasVertexColors:m.hasVertexColors,hasSymbolColors:m.hasSymbolVertexColors,hasVertexTangents:m.hasVertexTangents,ambient:y,diffuse:b,opacity:1,doubleSided:!0,doubleSidedType:"winding-order",cullFace:ee.None,layerOpacity:this._getLayerOpacity(),hasSlicePlane:this._context.slicePlaneEnabled,initTextureTransparent:!0};f||(d.mrrFactors=[null!=m.metallic?m.metallic:1,null!=m.roughness?m.roughness:1,.5]),r.material&&(d.doubleSided=r.material.doubleSided,d.cullFace=r.material.doubleSided?ee.None:ee.Back,d.textureAlphaCutoff=r.material.alphaCutoff),this._setExternalMaterialParameters(d),this._setMaterialTransparentParameter(d,p),this._setInternalMaterialParameters(m,d);const g=new ie(d);return p.material=g,this._materials.set(m.uid,p),this._context.stage.add(g),g}_usePBR(){return this._context.physicalBasedRenderingEnabled}_setMaterialTransparentParameter(e,t){e.transparent=this.needsDrivenTransparentPass||t.isComponentTransparent||e.layerOpacity<1||e.opacity<1||e.externalColor&&e.externalColor[3]<1,"auto"===t.alphaMode?e.textureAlphaMode=e.transparent?X.MaskBlend:X.Opaque:e.textureAlphaMode="opaque"===t.alphaMode?X.Opaque:"mask"===t.alphaMode?X.Mask:X.Blend}_addDebugNormals(e,t,r,a){const o=t.length,s=e.spatialReference.isGeographic?20015077/180:1,n=.1*Math.max(e.extent.width*s,e.extent.height*s,e.extent.zmax-e.extent.zmin),i=[],l=[],c=[],u=[];for(let m=0;m<o;m++){const e=t[m],r=e.vertexAttributes.get(ne.POSITION),a=e.vertexAttributes.get(ne.NORMAL),o=e.indices.get(ne.POSITION),s=e.indices.get(ne.NORMAL),h=r.data,d=a.data;for(let t=0;t<o.length;t++){const e=3*o[t],r=3*s[t];for(let t=0;t<3;t++)i.push(h[e+t]);for(let t=0;t<3;t++)i.push(h[e+t]+d[r+t]*n);if(l.push(l.length),l.push(l.length),t%3==0){this._calculateFaceNormal(h,o,t,ge),this._getFaceVertices(h,o,t,pe,fe,de),p(pe,pe,fe),p(pe,pe,de),f(pe,pe,1/3);for(let e=0;e<3;e++)c.push(pe[e]);for(let e=0;e<3;e++)c.push(pe[e]+ge[e]*n);u.push(u.length),u.push(u.length)}}}const h=new re([[ne.POSITION,{data:i,size:3,exclusive:!0}]],[[ne.POSITION,new Uint32Array(l)]],te.Line);t.push(h),r.push(this._debugVertexNormalMaterial),a.push(m(a[0]));const d=new re([[ne.POSITION,{data:c,size:3,exclusive:!0}]],[[ne.POSITION,new Uint32Array(u)]],te.Line);t.push(d),r.push(this._debugFaceNormalMaterial),a.push(m(a[0]))}_createAs3DShape(e,r,a,o){const s=e.geometry;if("mesh"!==s.type)return null;const n=this._createGeometryInfo(s,r);if(!n)return null;const{geometries:i,materials:l,transformations:c,objectTransformation:u}=n;Q.DRAW_MESH_GEOMETRY_NORMALS&&this._addDebugNormals(s,i,l,c);const m=new oe({geometries:i,materials:l,transformations:c,metadata:{layerUid:this._context.layer.uid,graphicUid:o}});m.transformation=u;const h=this._createEdgeMaterial(),p=t(h)?{baseMaterial:l[0],edgeMaterials:[h],properties:{mergeGeometries:!0,hasSlicePlane:this._context.slicePlaneEnabled}}:null,f=new W(this,m,i,null,null,z,a,p);return f.needsElevationUpdates=q(a.mode),f.useObjectOriginAsAttachmentOrigin=!0,f.elevationContext.centerPointInElevationSR=this._getCenterPointInElevationSR(m),f.alignedSampledElevation=z(f,f.elevationContext,this._context.elevationProvider,this._context.renderCoordsHelper),f}_getCenterPointInElevationSR(e){const t=D(0,0,0,this._context.elevationProvider.spatialReference);return C([e.transformation[12],e.transformation[13],e.transformation[14]],this._context.renderCoordsHelper.spatialReference,t),t}_createComponentNormals(e,t,r,a){switch(r.shading||"flat"){case"source":return this._createComponentNormalsSource(e,t,r,a);case"flat":return this._createComponentNormalsFlat(e,a);case"smooth":return this._createComponentNormalsSmooth(e,a);default:return}}_createComponentNormalsSource(e,t,a,o){if(r(t))return this._createComponentNormalsFlat(e,o);let s=!1;if(!a.trustSourceNormals)for(let r=0;r<o.length;r+=3){this._calculateFaceNormal(e,o,r,ge);for(let e=0;e<3;e++){const a=3*o[r+e];pe[0]=t[a+0],pe[1]=t[a+1],pe[2]=t[a+2],d(ge,pe)<0&&(t[a+0]=-t[a+0],t[a+1]=-t[a+1],t[a+2]=-t[a+2],s=!0)}}return{normals:t,indices:o,didFlipNormals:s}}_createComponentNormalsFlat(e,t){const r=new Float32Array(t.length),a=new Uint32Array(3*t.length);for(let o=0;o<t.length;o+=3){const s=this._calculateFaceNormal(e,t,o,ge);for(let e=0;e<3;e++)r[o+e]=s[e],a[o+e]=o/3}return{normals:r,indices:a,didFlipNormals:!1}}_createComponentNormalsSmooth(e,t){const r={};for(let s=0;s<t.length;s+=3){const a=this._calculateFaceNormal(e,t,s,ge);for(let e=0;e<3;e++){const o=t[s+e];let n=r[o];n||(n={normal:v(),count:0},r[o]=n),p(n.normal,n.normal,a),n.count++}}const a=new Float32Array(3*t.length),o=new Uint32Array(3*t.length);for(let s=0;s<t.length;s++){const e=r[t[s]];1!==e.count&&(g(e.normal,e.normal),e.count=1);for(let t=0;t<3;t++)a[3*s+t]=e.normal[t];o[s]=s}return{normals:a,indices:o,didFlipNormals:!1}}_getFaceVertices(e,t,r,a,o,s){const n=3*t[r+0],i=3*t[r+1],l=3*t[r+2];a[0]=e[n+0],a[1]=e[n+1],a[2]=e[n+2],o[0]=e[i+0],o[1]=e[i+1],o[2]=e[i+2],s[0]=e[l+0],s[1]=e[l+1],s[2]=e[l+2]}_calculateFaceNormal(e,t,r,a){return this._getFaceVertices(e,t,r,pe,fe,de),x(fe,fe,pe),x(de,de,pe),_(pe,fe,de),g(a,pe),a}_getOrCreateComponents(e){return a(e.components,be)}_createPositionBuffer(e,r){let a=e.vertexAttributes.position;const o=r.reprojection===ve.ECEF?r.transformBeforeProject:null;if(t(o)&&(a=L(a,new Float64Array(a.length),o)),r.reprojection===ve.NONE)return r.needsBufferCopy?new Float64Array(a):a;const s=t(o)?a:new Float64Array(a.length);return O(a,e.spatialReference,0,s,this._context.renderCoordsHelper.spatialReference,0,a.length/3),s}_createNormalBuffer(e,a,o){let s=e.vertexAttributes.normal;if(r(s))return null;const n=o.reprojection===ve.ECEF?o.transformBeforeProject:null;t(n)&&(s=U(s,new Float32Array(s.length),n));if("local"===this._context.graphicsCoreOwner.view.viewingMode||o.reprojection===ve.NONE)return o.needsBufferCopy&&e.vertexAttributes.normal===s?new Float32Array(s):s;const i=e.vertexAttributes.position,l=t(n)?s:new Float32Array(s.length);return V(s,i,a,e.spatialReference,l)}_createTangentBuffer(e,a,o){let s=e.vertexAttributes.tangent;if(r(s))return null;const n=o.reprojection===ve.ECEF?o.transformBeforeProject:null;t(n)&&(s=G(s,new Float32Array(s.length),n));if("local"===this._context.graphicsCoreOwner.view.viewingMode||o.reprojection===ve.NONE)return o.needsBufferCopy&&e.vertexAttributes.normal===s?new Float32Array(s):s;const i=e.vertexAttributes.position,l=t(n)?s:new Float32Array(s.length);return $(s,i,a,e.spatialReference,l)}_createColorBuffer(e){return e.vertexAttributes.color}_createSymbolColorBuffer(e){if(this._requiresSymbolVertexColors()){const t=this._getVertexOpacityAndColor(e),r=J(o(this.symbolLayer,"material","colorMixMode")),a=new Uint8Array(4);return K(t,r,a),a}return null}_createBuffers(e,r){const a=e.vertexAttributes&&e.vertexAttributes.position;if(!a)return this.logger.warn("Mesh geometry must contain position vertex attributes"),null;const o=e.vertexAttributes.normal,s=e.vertexAttributes.uv,n=e.vertexAttributes.tangent;if(t(o)&&o.length!==a.length)return this.logger.warn("Mesh normal vertex buffer must contain the same number of elements as the position buffer"),null;if(t(n)&&n.length/4!=a.length/3)return this.logger.warn("Mesh tangent vertex buffer must contain the same number of elements as the position buffer"),null;if(t(s)&&s.length/2!=a.length/3)return this.logger.warn("Mesh uv vertex buffer must contain the same number of elements as the position buffer"),null;const i=this._computeReprojectionInfo(e),l=this._createPositionBuffer(e,i),c=this._createColorBuffer(e),u=this._createSymbolColorBuffer(r),m=this._createNormalBuffer(e,l,i),p=this._createTangentBuffer(e,l,i);return{positionBuffer:l,normalBuffer:m,tangentBuffer:p,uvBuffer:s,colorBuffer:c,symbolColorBuffer:u,objectTransformation:i.reprojection===ve.NONE&&t(i.objectTransformation)?i.objectTransformation:this._transformOriginLocal(e,l,m,p),geometryTransformation:i.reprojection===ve.NONE&&t(i.geometryTransformation)?i.geometryTransformation:h()}}_computeReprojectionInfo(e){const r=t(e.transform),a=r&&e.transform.geographic||this._context.renderCoordsHelper.viewingMode===k.Local?ve.NONE:ve.ECEF;if(r){if(a===ve.NONE){const t=h();A(e.spatialReference,e.transform.origin,t,this._context.renderCoordsHelper.spatialReference);return{reprojection:a,objectTransformation:t,geometryTransformation:m(e.transform.localMatrix),needsBufferCopy:!1}}const t=l(h(),e.transform.origin);return c(t,t,e.transform.localMatrix),{reprojection:a,transformBeforeProject:t,needsBufferCopy:!0}}return{reprojection:a,needsBufferCopy:!0}}_transformOriginLocal(e,r,a,o){const i=this._context.renderCoordsHelper.spatialReference,l=e.anchor;he[0]=l.x,he[1]=l.y,he[2]=l.z;const c=h();A(e.spatialReference,he,c,i);const m=I.fromTypedArray(r);if(u(xe,c),S(m,m,xe),t(a)||t(o)){if(s(_e,c),n(_e,_e),t(a)){const e=B.fromTypedArray(a);F(e,e,_e)}if(t(o)){const e=B.fromTypedArray(o,4*o.BYTES_PER_ELEMENT);F(e,e,_e)}}return c}_validateFaces(e,t){const r=e.vertexAttributes.position.length/3,a=t.faces;if(a){let e=-1;for(let t=0;t<a.length;t++){const r=a[t];r>e&&(e=r)}if(r<=e)return this.logger.warn(`Vertex index ${e} is out of bounds of the mesh position buffer`),!1}else if(r%3!=0)return this.logger.warn("Mesh position buffer length must be a multiple of 9 if no component faces are defined (3 values per vertex * 3 vertices per triangle)"),!1;return!0}_getOrCreateFaces(e,t){return t.faces?t.faces:ae(e.vertexAttributes.position.length/3)}_isOutsideClippingArea(e){if(!this._context.clippingExtent)return!1;const t=e.vertexAttributes&&e.vertexAttributes.position;if(!t)return!1;const r=this._context.elevationProvider.spatialReference;let a;const o=t.length/3;return e.spatialReference.equals(r)?a=t:(a=new Float64Array(t.length),O(e.vertexAttributes.position,e.spatialReference,0,a,r,0,o)),E(ye),N(ye,a,0,o),!j(ye,this._context.clippingExtent)}_createGeometryInfo(e,a){if(!M(e.spatialReference,this._context.graphicsCoreOwner.view.spatialReference))return this.logger.warn("Geometry spatial reference is not compatible with the view"),null;if(this._isOutsideClippingArea(e))return null;const o=this._createBuffers(e,a);if(r(o))return null;const{positionBuffer:s,uvBuffer:n,colorBuffer:i,symbolColorBuffer:l,normalBuffer:c,tangentBuffer:u,objectTransformation:m,geometryTransformation:h}=o,p=this._getOrCreateComponents(e),f=[],d=[],g=[];let x=!1;for(const r of p){if(!this._validateFaces(e,r))return null;const a=this._getOrCreateFaces(e,r);if(0===a.length)continue;const o=this._createComponentNormals(s,c,r,a);o.didFlipNormals&&(x=!0);const m=[[ne.POSITION,{size:3,data:s,exclusive:!0}],[ne.NORMAL,{size:3,data:o.normals,exclusive:!0}]],p=[[ne.POSITION,a],[ne.NORMAL,o.indices]];t(i)&&(m.push([ne.COLOR,{size:4,data:i,exclusive:!0}]),p.push([ne.COLOR,a])),t(l)&&(m.push([ne.SYMBOLCOLOR,{size:4,data:l,exclusive:!0}]),p.push([ne.SYMBOLCOLOR,new Uint16Array(a.length)])),t(n)&&(m.push([ne.UV0,{size:2,data:n,exclusive:!0}]),p.push([ne.UV0,a])),t(u)&&(m.push([ne.TANGENT,{size:4,data:u,exclusive:!0}]),p.push([ne.TANGENT,a]));const _=new re(m,p);f.push(_),d.push(h),g.push(this._getOrCreateMaterial(e,r))}return x&&this.logger.warn("Normals have been automatically flipped to be consistent with the counter clock wise face winding order. It is better to generate mesh geometries that have consistent normals."),{geometries:f,transformations:d,materials:g,objectTransformation:m}}_createEdgeMaterial(){const e={opacity:this._getLayerOpacity()};return Z(this.symbolLayer,e)}}const he=v(),pe=v(),fe=v(),de=v(),ge=v(),xe=h(),_e=i(),ye=w(),be=[new R];var ve;!function(e){e[e.NONE=0]="NONE",e[e.ECEF=1]="ECEF"}(ve||(ve={}));export{me as Graphics3DMeshFillSymbolLayer};
|
|
5
|
+
import e from"../../../../Color.js";import"../../../../core/has.js";import{isSome as t,isNone as r,unwrapOr as a,get as o}from"../../../../core/maybe.js";import{f as s,t as n}from"../../../../chunks/mat3.js";import{c as i}from"../../../../chunks/mat3f64.js";import{f as l,m as c,a as u}from"../../../../chunks/mat4.js";import{b as m,c as h}from"../../../../chunks/mat4f64.js";import{a as p,g as f,e as d,n as g,b as x,f as _}from"../../../../chunks/vec3.js";import{Z as y,O as b,c as v}from"../../../../chunks/vec3f64.js";import{O as T}from"../../../../chunks/vec4f64.js";import{projectVectorToDehydratedPoint as C,projectBuffer as O,computeTranslationToOriginAndRotation as A,canProjectWithoutEngine as M}from"../../../../geometry/projection.js";import{create as w,empty as E,expandWithBuffer as N,intersectsClippingArea as j}from"../../../../geometry/support/aaBoundingBox.js";import R from"../../../../geometry/support/MeshComponent.js";import P from"../../../../geometry/support/MeshMaterialMetallicRoughness.js";import{BufferViewVec3f64 as I,BufferViewVec3f as B}from"../../../../geometry/support/buffer/BufferView.js";import{t as S,a as F}from"../../../../chunks/vec32.js";import{transformPosition as L,transformNormal as U,projectNormalToPCPF as V,transformTangent as G,projectTangentToPCPF as $}from"../../../../geometry/support/meshUtils/projection.js";import{makeDehydratedPoint as D}from"../../../../layers/graphics/dehydratedFeatures.js";import{ViewingMode as k}from"../../../ViewingMode.js";import{perObjectElevationAligner as z}from"./ElevationAligners.js";import{needsElevationUpdates3D as q}from"./elevationAlignmentUtils.js";import{ElevationContext as H}from"./ElevationContext.js";import{Graphics3DObject3DGraphicLayer as W}from"./Graphics3DObject3DGraphicLayer.js";import{Graphics3DSymbolLayer as Y}from"./Graphics3DSymbolLayer.js";import{createMaterial as Z}from"../support/edgeUtils.js";import{parseColorMixMode as J,encodeSymbolColor as K}from"../support/symbolColorUtils.js";import Q from"../../support/debugFlags.js";import{AlphaDiscardMode as X,CullFaceOptions as ee,PrimitiveType as te}from"../../webgl-engine/lib/basicInterfaces.js";import{Geometry as re}from"../../webgl-engine/lib/Geometry.js";import{generateDefaultIndexArray as ae}from"../../webgl-engine/lib/geometryDataUtils.js";import{Object3D as oe}from"../../webgl-engine/lib/Object3D.js";import{Texture as se}from"../../webgl-engine/lib/Texture.js";import{VertexAttribute as ne}from"../../webgl-engine/lib/VertexAttribute.js";import{DefaultMaterial as ie}from"../../webgl-engine/materials/DefaultMaterial.js";import{NativeLineMaterial as le}from"../../webgl-engine/materials/NativeLineMaterial.js";import{TextureWrapMode as ce}from"../../../webgl/enums.js";const ue=["mesh"];class me extends Y{constructor(e,t,r,a){super(e,t,r,a),this._materials=new Map,this._textures=new Map,this.ensureDrapedStatus(!1)}async doLoad(){Q.DRAW_MESH_GEOMETRY_NORMALS&&(this._debugVertexNormalMaterial=new le({color:[1,0,1,1]}),this._debugFaceNormalMaterial=new le({color:[0,1,1,1]}))}destroy(){super.destroy(),this._context.stage.removeMany(Array.from(this._materials.values(),(e=>e.material))),this._context.stage.removeMany(Array.from(this._textures.values())),this._materials.clear(),this._textures.clear()}createGraphics3DGraphic(e){const t=e.graphic;if(!this._validateGeometry(t.geometry,ue,"fill on mesh-3d"))return null;const r=this.setGraphicElevationContext(t,new H),a=e.renderingInfo;return this._createAs3DShape(t,a,r,t.uid)}layerOpacityChanged(e,r){const a=this._getLayerOpacity();return this._materials.forEach((e=>{e.material.setParameters({layerOpacity:a});const t=e.material.parameters;this._setMaterialTransparentParameter(t,e),e.material.setParameters({transparent:t.transparent})})),e.forEach((e=>{const o=r(e);t(o)&&o.layerOpacityChanged(a,this._context.isAsync)})),!0}layerElevationInfoChanged(e,t){return this.updateGraphics3DGraphicElevationInfo(e,t,q)}slicePlaneEnabledChanged(e,r){return this._materials.forEach((e=>{e.material.setParameters({hasSlicePlane:this._context.slicePlaneEnabled})})),e.forEach((e=>{const a=r(e);t(a)&&a.slicePlaneEnabledChanged(this._context.slicePlaneEnabled,this._context.isAsync)})),!0}physicalBasedRenderingChanged(){const e=this._usePBR();return this._materials.forEach((t=>t.material.setParameters({usePBR:e}))),!0}pixelRatioChanged(){return!0}_requiresSymbolVertexColors(){return this._drivenProperties.color||this._drivenProperties.opacity}_colorOrTextureUid(t){return r(t)?"-":t instanceof e?t.toHex():t.contentHash}_materialPropertiesDefault(e,t){const r=this._requiresSymbolVertexColors(),a=!!e.vertexAttributes.color,o=!!e.vertexAttributes.tangent;return{hasSymbolVertexColors:r,hasVertexColors:a,hasVertexTangents:o,uid:`vc:${a},vt:${o},vct${t},svc:${r}`}}_materialProperties(e,t,r){const a=this._materialPropertiesDefault(e,r);if(!t.material)return a;const{color:o,colorTexture:s,normalTexture:n,doubleSided:i,alphaCutoff:l,alphaMode:c}=t.material,u=this._colorOrTextureUid(o),m=this._colorOrTextureUid(s),h=this._colorOrTextureUid(n);if(a.color=o,a.colorTexture=s,a.normalTexture=n,a.uid=`${a.uid},cmuid:${u},ctmuid:${m},ntmuid:${h},ds:${i},ac:${l},am:${c}`,t.material instanceof P){const{metallic:e,roughness:r,metallicRoughnessTexture:o,emissiveColor:s,emissiveTexture:n,occlusionTexture:i}=t.material,l=this._colorOrTextureUid(o),c=this._colorOrTextureUid(s),u=this._colorOrTextureUid(n),m=this._colorOrTextureUid(i);a.metallic=e,a.roughness=r,a.metallicRoughnessTexture=o,a.emissiveColor=s,a.emissiveTexture=n,a.occlusionTexture=i,a.uid=`${a.uid},mrm:${e},mrr:${r},mrt:${l},emuid:${c},etmuid:${u},otmuid:${m}`}return a}_setInternalColorValueParameters(t,r){r.diffuse=e.toUnitRGB(t),r.opacity=t.a}_getLoadableTextureResource(e){return e.data?e.data:e.url}_getInternalTextureId(e){const r=this._getInternalTexture(e,X.Opaque);return t(r)?r.id:null}_getInternalTexture(e,t){const r=this._getLoadableTextureResource(e);if(!r)return null;const a=`${e.contentHash}/${t}`;let o=this._textures.get(a);return o||(o=new se(r,{mipmap:!0,wrap:this._castTextureWrap(e.wrap),noUnpackFlip:!0,preMultiplyAlpha:t!==X.Opaque}),this._textures.set(a,o),this._context.stage.add(o),this._context.stage.loadImmediate(o)),o}_castTextureWrap(e="repeat"){if("string"==typeof e){const t=this._castTextureWrapIndividual(e);return{s:t,t}}return{s:this._castTextureWrapIndividual(e.horizontal),t:this._castTextureWrapIndividual(e.vertical)}}_castTextureWrapIndividual(e){switch(e){case"clamp":return ce.CLAMP_TO_EDGE;case"mirror":return ce.MIRRORED_REPEAT;default:return ce.REPEAT}}_setInternalMaterialParameters(r,a){if(t(r.color)&&this._setInternalColorValueParameters(r.color,a),t(r.colorTexture)){const e=this._getInternalTexture(r.colorTexture,a.textureAlphaMode);t(e)?(a.textureId=e.id,a.textureAlphaPremultiplied=!!e.params.preMultiplyAlpha):a.textureId=void 0}t(r.normalTexture)&&(a.normalTextureId=this._getInternalTextureId(r.normalTexture)),t(r.emissiveColor)&&(a.emissiveFactor=e.toUnitRGB(r.emissiveColor)),t(r.emissiveTexture)&&(a.emissiveTextureId=this._getInternalTextureId(r.emissiveTexture)),t(r.occlusionTexture)&&(a.occlusionTextureId=this._getInternalTextureId(r.occlusionTexture)),t(r.metallicRoughnessTexture)&&(a.metallicRoughnessTextureId=this._getInternalTextureId(r.metallicRoughnessTexture))}_setExternalMaterialParameters(r){const a=this._drivenProperties.color;let o=t(this.symbolLayer.material)?this.symbolLayer.material.colorMixMode:null;if(a)r.externalColor=T;else{const a=t(this.symbolLayer.material)?this.symbolLayer.material.color:null;t(a)?r.externalColor=e.toUnitRGBA(a):(o=null,r.externalColor=T)}o&&(r.colorMixMode=o),r.castShadows=!!this.symbolLayer.castShadows}_hasTransparentVertexColors(e){const t=e.vertexAttributes.color;if(r(t))return!1;for(let r=3;r<t.length;r+=4)if(255!==t[r])return!0;return!1}_getOrCreateMaterial(e,r){const a=r.material?.color,o=r.material?.colorTexture,s=r.material?.alphaMode,n="blend"===s,i=!("opaque"===s)&&(this._hasTransparentVertexColors(e)||t(a)&&a.a<1||t(o)&&o.transparent||n),l=this._materialProperties(e,r,i),c=this._materials.get(l.uid);if(c)return c.material;const u={material:null,isComponentTransparent:i,alphaMode:r.material?r.material.alphaMode:"opaque"},m=null==l.metallicRoughnessTexture&&null==l.metallic&&null==l.roughness,h={usePBR:this._usePBR(),isSchematic:m,hasVertexColors:l.hasVertexColors,hasSymbolColors:l.hasSymbolVertexColors,hasVertexTangents:l.hasVertexTangents,ambient:y,diffuse:b,opacity:1,doubleSided:!0,doubleSidedType:"winding-order",cullFace:ee.None,layerOpacity:this._getLayerOpacity(),hasSlicePlane:this._context.slicePlaneEnabled,initTextureTransparent:!0};m||(h.mrrFactors=[null!=l.metallic?l.metallic:1,null!=l.roughness?l.roughness:1,.5]),r.material&&(h.doubleSided=r.material.doubleSided,h.cullFace=r.material.doubleSided?ee.None:ee.Back,h.textureAlphaCutoff=r.material.alphaCutoff),this._setExternalMaterialParameters(h),this._setMaterialTransparentParameter(h,u),this._setInternalMaterialParameters(l,h);const p=new ie(h);return u.material=p,this._materials.set(l.uid,u),this._context.stage.add(p),p}_usePBR(){return this._context.physicalBasedRenderingEnabled}_setMaterialTransparentParameter(e,t){e.transparent=this.needsDrivenTransparentPass||t.isComponentTransparent||e.layerOpacity<1||e.opacity<1||e.externalColor&&e.externalColor[3]<1,"auto"===t.alphaMode?e.textureAlphaMode=e.transparent?X.MaskBlend:X.Opaque:e.textureAlphaMode="opaque"===t.alphaMode?X.Opaque:"mask"===t.alphaMode?X.Mask:X.Blend}_addDebugNormals(e,t,r,a){const o=t.length,s=e.spatialReference.isGeographic?20015077/180:1,n=.1*Math.max(e.extent.width*s,e.extent.height*s,e.extent.zmax-e.extent.zmin),i=[],l=[],c=[],u=[];for(let m=0;m<o;m++){const e=t[m],r=e.vertexAttributes.get(ne.POSITION),a=e.vertexAttributes.get(ne.NORMAL),o=e.indices.get(ne.POSITION),s=e.indices.get(ne.NORMAL),h=r.data,d=a.data;for(let t=0;t<o.length;t++){const e=3*o[t],r=3*s[t];for(let t=0;t<3;t++)i.push(h[e+t]);for(let t=0;t<3;t++)i.push(h[e+t]+d[r+t]*n);if(l.push(l.length),l.push(l.length),t%3==0){this._calculateFaceNormal(h,o,t,ge),this._getFaceVertices(h,o,t,pe,fe,de),p(pe,pe,fe),p(pe,pe,de),f(pe,pe,1/3);for(let e=0;e<3;e++)c.push(pe[e]);for(let e=0;e<3;e++)c.push(pe[e]+ge[e]*n);u.push(u.length),u.push(u.length)}}}const h=new re([[ne.POSITION,{data:i,size:3,exclusive:!0}]],[[ne.POSITION,new Uint32Array(l)]],te.Line);t.push(h),r.push(this._debugVertexNormalMaterial),a.push(m(a[0]));const d=new re([[ne.POSITION,{data:c,size:3,exclusive:!0}]],[[ne.POSITION,new Uint32Array(u)]],te.Line);t.push(d),r.push(this._debugFaceNormalMaterial),a.push(m(a[0]))}_createAs3DShape(e,r,a,o){const s=e.geometry;if("mesh"!==s.type)return null;const n=this._createGeometryInfo(s,r);if(!n)return null;const{geometries:i,materials:l,transformations:c,objectTransformation:u}=n;Q.DRAW_MESH_GEOMETRY_NORMALS&&this._addDebugNormals(s,i,l,c);const m=new oe({geometries:i,materials:l,transformations:c,metadata:{layerUid:this._context.layer.uid,graphicUid:o}});m.transformation=u;const h=this._createEdgeMaterial(),p=t(h)?{baseMaterial:l[0],edgeMaterials:[h],properties:{mergeGeometries:!0,hasSlicePlane:this._context.slicePlaneEnabled}}:null,f=new W(this,m,i,null,null,z,a,p);return f.needsElevationUpdates=q(a.mode),f.useObjectOriginAsAttachmentOrigin=!0,f.elevationContext.centerPointInElevationSR=this._getCenterPointInElevationSR(m),f.alignedSampledElevation=z(f,f.elevationContext,this._context.elevationProvider,this._context.renderCoordsHelper),f}_getCenterPointInElevationSR(e){const t=D(0,0,0,this._context.elevationProvider.spatialReference);return C([e.transformation[12],e.transformation[13],e.transformation[14]],this._context.renderCoordsHelper.spatialReference,t),t}_createComponentNormals(e,t,r,a){switch(r.shading||"flat"){case"source":return this._createComponentNormalsSource(e,t,r,a);case"flat":return this._createComponentNormalsFlat(e,a);case"smooth":return this._createComponentNormalsSmooth(e,a);default:return}}_createComponentNormalsSource(e,t,a,o){if(r(t))return this._createComponentNormalsFlat(e,o);let s=!1;if(!a.trustSourceNormals)for(let r=0;r<o.length;r+=3){this._calculateFaceNormal(e,o,r,ge);for(let e=0;e<3;e++){const a=3*o[r+e];pe[0]=t[a+0],pe[1]=t[a+1],pe[2]=t[a+2],d(ge,pe)<0&&(t[a+0]=-t[a+0],t[a+1]=-t[a+1],t[a+2]=-t[a+2],s=!0)}}return{normals:t,indices:o,didFlipNormals:s}}_createComponentNormalsFlat(e,t){const r=new Float32Array(t.length),a=new Uint32Array(3*t.length);for(let o=0;o<t.length;o+=3){const s=this._calculateFaceNormal(e,t,o,ge);for(let e=0;e<3;e++)r[o+e]=s[e],a[o+e]=o/3}return{normals:r,indices:a,didFlipNormals:!1}}_createComponentNormalsSmooth(e,t){const r={};for(let s=0;s<t.length;s+=3){const a=this._calculateFaceNormal(e,t,s,ge);for(let e=0;e<3;e++){const o=t[s+e];let n=r[o];n||(n={normal:v(),count:0},r[o]=n),p(n.normal,n.normal,a),n.count++}}const a=new Float32Array(3*t.length),o=new Uint32Array(3*t.length);for(let s=0;s<t.length;s++){const e=r[t[s]];1!==e.count&&(g(e.normal,e.normal),e.count=1);for(let t=0;t<3;t++)a[3*s+t]=e.normal[t];o[s]=s}return{normals:a,indices:o,didFlipNormals:!1}}_getFaceVertices(e,t,r,a,o,s){const n=3*t[r+0],i=3*t[r+1],l=3*t[r+2];a[0]=e[n+0],a[1]=e[n+1],a[2]=e[n+2],o[0]=e[i+0],o[1]=e[i+1],o[2]=e[i+2],s[0]=e[l+0],s[1]=e[l+1],s[2]=e[l+2]}_calculateFaceNormal(e,t,r,a){return this._getFaceVertices(e,t,r,pe,fe,de),x(fe,fe,pe),x(de,de,pe),_(pe,fe,de),g(a,pe),a}_getOrCreateComponents(e){return a(e.components,be)}_createPositionBuffer(e,r){let a=e.vertexAttributes.position;const o=r.reprojection===ve.ECEF?r.transformBeforeProject:null;if(t(o)&&(a=L(a,new Float64Array(a.length),o)),r.reprojection===ve.NONE)return r.needsBufferCopy?new Float64Array(a):a;const s=t(o)?a:new Float64Array(a.length);return O(a,e.spatialReference,0,s,this._context.renderCoordsHelper.spatialReference,0,a.length/3),s}_createNormalBuffer(e,a,o){let s=e.vertexAttributes.normal;if(r(s))return null;const n=o.reprojection===ve.ECEF?o.transformBeforeProject:null;t(n)&&(s=U(s,new Float32Array(s.length),n));if("local"===this._context.graphicsCoreOwner.view.viewingMode||o.reprojection===ve.NONE)return o.needsBufferCopy&&e.vertexAttributes.normal===s?new Float32Array(s):s;const i=e.vertexAttributes.position,l=t(n)?s:new Float32Array(s.length);return V(s,i,a,e.spatialReference,l)}_createTangentBuffer(e,a,o){let s=e.vertexAttributes.tangent;if(r(s))return null;const n=o.reprojection===ve.ECEF?o.transformBeforeProject:null;t(n)&&(s=G(s,new Float32Array(s.length),n));if("local"===this._context.graphicsCoreOwner.view.viewingMode||o.reprojection===ve.NONE)return o.needsBufferCopy&&e.vertexAttributes.normal===s?new Float32Array(s):s;const i=e.vertexAttributes.position,l=t(n)?s:new Float32Array(s.length);return $(s,i,a,e.spatialReference,l)}_createColorBuffer(e){return e.vertexAttributes.color}_createSymbolColorBuffer(e){if(this._requiresSymbolVertexColors()){const t=this._getVertexOpacityAndColor(e),r=J(o(this.symbolLayer,"material","colorMixMode")),a=new Uint8Array(4);return K(t,r,a),a}return null}_createBuffers(e,r){const a=e.vertexAttributes&&e.vertexAttributes.position;if(!a)return this.logger.warn("Mesh geometry must contain position vertex attributes"),null;const o=e.vertexAttributes.normal,s=e.vertexAttributes.uv,n=e.vertexAttributes.tangent;if(t(o)&&o.length!==a.length)return this.logger.warn("Mesh normal vertex buffer must contain the same number of elements as the position buffer"),null;if(t(n)&&n.length/4!=a.length/3)return this.logger.warn("Mesh tangent vertex buffer must contain the same number of elements as the position buffer"),null;if(t(s)&&s.length/2!=a.length/3)return this.logger.warn("Mesh uv vertex buffer must contain the same number of elements as the position buffer"),null;const i=this._computeReprojectionInfo(e),l=this._createPositionBuffer(e,i),c=this._createColorBuffer(e),u=this._createSymbolColorBuffer(r),m=this._createNormalBuffer(e,l,i),p=this._createTangentBuffer(e,l,i);return{positionBuffer:l,normalBuffer:m,tangentBuffer:p,uvBuffer:s,colorBuffer:c,symbolColorBuffer:u,objectTransformation:i.reprojection===ve.NONE&&t(i.objectTransformation)?i.objectTransformation:this._transformOriginLocal(e,l,m,p),geometryTransformation:i.reprojection===ve.NONE&&t(i.geometryTransformation)?i.geometryTransformation:h()}}_computeReprojectionInfo(e){const r=t(e.transform),a=r&&e.transform.geographic||this._context.renderCoordsHelper.viewingMode===k.Local?ve.NONE:ve.ECEF;if(r){if(a===ve.NONE){const t=h();A(e.spatialReference,e.transform.origin,t,this._context.renderCoordsHelper.spatialReference);return{reprojection:a,objectTransformation:t,geometryTransformation:m(e.transform.localMatrix),needsBufferCopy:!1}}const t=l(h(),e.transform.origin);return c(t,t,e.transform.localMatrix),{reprojection:a,transformBeforeProject:t,needsBufferCopy:!0}}return{reprojection:a,needsBufferCopy:!0}}_transformOriginLocal(e,r,a,o){const i=this._context.renderCoordsHelper.spatialReference,l=e.anchor;he[0]=l.x,he[1]=l.y,he[2]=l.z;const c=h();A(e.spatialReference,he,c,i);const m=I.fromTypedArray(r);if(u(xe,c),S(m,m,xe),t(a)||t(o)){if(s(_e,c),n(_e,_e),t(a)){const e=B.fromTypedArray(a);F(e,e,_e)}if(t(o)){const e=B.fromTypedArray(o,4*o.BYTES_PER_ELEMENT);F(e,e,_e)}}return c}_validateFaces(e,t){const r=e.vertexAttributes.position.length/3,a=t.faces;if(a){let e=-1;for(let t=0;t<a.length;t++){const r=a[t];r>e&&(e=r)}if(r<=e)return this.logger.warn(`Vertex index ${e} is out of bounds of the mesh position buffer`),!1}else if(r%3!=0)return this.logger.warn("Mesh position buffer length must be a multiple of 9 if no component faces are defined (3 values per vertex * 3 vertices per triangle)"),!1;return!0}_getOrCreateFaces(e,t){return t.faces?t.faces:ae(e.vertexAttributes.position.length/3)}_isOutsideClippingArea(e){if(!this._context.clippingExtent)return!1;const t=e.vertexAttributes&&e.vertexAttributes.position;if(!t)return!1;const r=this._context.elevationProvider.spatialReference;let a;const o=t.length/3;return e.spatialReference.equals(r)?a=t:(a=new Float64Array(t.length),O(e.vertexAttributes.position,e.spatialReference,0,a,r,0,o)),E(ye),N(ye,a,0,o),!j(ye,this._context.clippingExtent)}_createGeometryInfo(e,a){if(!M(e.spatialReference,this._context.graphicsCoreOwner.view.spatialReference))return this.logger.warn("Geometry spatial reference is not compatible with the view"),null;if(this._isOutsideClippingArea(e))return null;const o=this._createBuffers(e,a);if(r(o))return null;const{positionBuffer:s,uvBuffer:n,colorBuffer:i,symbolColorBuffer:l,normalBuffer:c,tangentBuffer:u,objectTransformation:m,geometryTransformation:h}=o,p=this._getOrCreateComponents(e),f=[],d=[],g=[];let x=!1;for(const r of p){if(!this._validateFaces(e,r))return null;const a=this._getOrCreateFaces(e,r);if(0===a.length)continue;const o=this._createComponentNormals(s,c,r,a);o.didFlipNormals&&(x=!0);const m=[[ne.POSITION,{size:3,data:s,exclusive:!0}],[ne.NORMAL,{size:3,data:o.normals,exclusive:!0}]],p=[[ne.POSITION,a],[ne.NORMAL,o.indices]];t(i)&&(m.push([ne.COLOR,{size:4,data:i,exclusive:!0}]),p.push([ne.COLOR,a])),t(l)&&(m.push([ne.SYMBOLCOLOR,{size:4,data:l,exclusive:!0}]),p.push([ne.SYMBOLCOLOR,new Uint16Array(a.length)])),t(n)&&(m.push([ne.UV0,{size:2,data:n,exclusive:!0}]),p.push([ne.UV0,a])),t(u)&&(m.push([ne.TANGENT,{size:4,data:u,exclusive:!0}]),p.push([ne.TANGENT,a]));const _=new re(m,p);f.push(_),d.push(h),g.push(this._getOrCreateMaterial(e,r))}return x&&this.logger.warn("Normals have been automatically flipped to be consistent with the counter clock wise face winding order. It is better to generate mesh geometries that have consistent normals."),{geometries:f,transformations:d,materials:g,objectTransformation:m}}_createEdgeMaterial(){const e={opacity:this._getLayerOpacity()};return Z(this.symbolLayer,e)}}const he=v(),pe=v(),fe=v(),de=v(),ge=v(),xe=h(),_e=i(),ye=w(),be=[new R];var ve;!function(e){e[e.NONE=0]="NONE",e[e.ECEF=1]="ECEF"}(ve||(ve={}));export{me as Graphics3DMeshFillSymbolLayer};
|
|
@@ -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 e,isNone as t,unwrapOr as s}from"../../../../core/maybe.js";import{c as i,m as a,a as r}from"../../../../chunks/vec3.js";import{c as n}from"../../../../chunks/vec3f64.js";import{create as o,setMin as c,setMax as h,isPoint as g,empty as d,center as l,offset as b}from"../../../../geometry/support/aaBoundingBox.js";import{g as u}from"../../../../chunks/sphere.js";import{setContextFeature as O}from"./featureExpressionInfoUtils.js";import{demResolutionForBoundingBox as j}from"./graphicUtils.js";import{Object3DState as m}from"../../webgl-engine/lib/basicInterfaces.js";import{Transparency as _}from"../../webgl-engine/lib/edgeRendering/interfaces.js";class p{constructor(e,t,s,i,a,r,n,o=null){this.graphics3DSymbolLayer=e,this.stageObject=t,this._uniqueGeometries=s,this._uniqueMaterials=i,this._sharedResource=a,this.elevationAligner=r,this.elevationContext=n,this._edgeState=o,this.type="object3d",this._stageLayer=null,this._stage=null,this._visible=!1,this._addedToStage=!1,this.alignedSampledElevation=0,this.needsElevationUpdates=!1,this.useObjectOriginAsAttachmentOrigin=!1,this.graphics3DSymbolLayer=e,this.stageObject=t}get isElevationSource(){return!(!this.stageObject.metadata||!this.stageObject.metadata.isElevationSource)}initialize(e,t){this._stageLayer=t,this._stage=e,e.addMany(this._uniqueMaterials),e.addMany(this._uniqueGeometries),e.add(this.stageObject)}destroy(){const t=this._stage;this._stageLayer&&(t.removeMany(this._uniqueMaterials),t.removeMany(this._uniqueGeometries)),t.remove(this.stageObject),this._addedToStage&&(this._stageLayer.remove(this.stageObject),this._addedToStage=!1);const s=this._stage.renderView.ensureEdgeView();s.hasObject(this.stageObject)&&s.removeObject(this.stageObject),this.stageObject.dispose(),e(this._sharedResource)&&this._sharedResource.release(),this._visible=!1,this._stageLayer=null,this._stage=null}layerOpacityChanged(e,s){if(t(this._edgeState))return;const i=v(this._edgeState.baseMaterial);let a=!1;for(const t of this._edgeState.edgeMaterials)t.objectTransparency!==i&&(t.objectTransparency=i,a=!0);a&&this._resetEdgeObject(s);this._stage.renderView.ensureEdgeView().updateAllComponentOpacities(this.stageObject,[e])}slicePlaneEnabledChanged(e,s){if(t(this._edgeState))return;this._stage.renderView.ensureEdgeView().updateAllComponentMaterials(this.stageObject,this._edgeState.edgeMaterials,{hasSlicePlane:e},!s),this._edgeState.properties.hasSlicePlane=e}setVisibility(t){if(null!=this._stage&&this._visible!==t&&(this._visible=t,this._visible?this._addedToStage?this.stageObject.setVisible(!0):(this._stageLayer.add(this.stageObject),this._addedToStage=!0):this.stageObject.setVisible(!1),e(this._edgeState))){const e=this._stage.renderView.ensureEdgeView();e.hasObject(this.stageObject)?e.updateObjectVisibility(this.stageObject,t):t&&this._addOrUpdateEdgeObject(e,!1)}}get visible(){return this._visible}alignWithElevation(t,s,i,a){null!=this.elevationAligner&&(e(i)&&O(this.elevationContext.featureExpressionInfoContext,i),this.alignedSampledElevation=this.elevationAligner(this,this.elevationContext,t,s),this._resetEdgeObject(a))}getCenterObjectSpace(e=n()){return i(e,u(this.stageObject.boundingVolumeObjectSpace.bounds))}getBoundingBoxObjectSpace(e=o()){const t=this.stageObject.boundingVolumeObjectSpace;return c(e,t.min),h(e,t.max),e}computeAttachmentOrigin(e){if(this.useObjectOriginAsAttachmentOrigin){const t=this.stageObject.transformation;e.render.origin[0]+=t[12],e.render.origin[1]+=t[13],e.render.origin[2]+=t[14],e.render.num++}else for(const t of this.stageObject.geometryRecords)t.computeAttachmentOrigin(y)&&(a(y,y,this.stageObject.transformation),r(e.render.origin,e.render.origin,y),e.render.num++)}async getProjectedBoundingBox(e,t,i,r,n){const o=this.getBoundingBoxObjectSpace(n),c=E,h=g(o)?1:c.length;for(let s=0;s<h;s++){const e=c[s];S[0]=o[e[0]],S[1]=o[e[1]],S[2]=o[e[2]],a(S,S,this.stageObject.transformation),f[3*s+0]=S[0],f[3*s+1]=S[1],f[3*s+2]=S[2]}if(!e(f,0,h))return null;d(o);let u=null;this.calculateRelativeScreenBounds&&(u=this.calculateRelativeScreenBounds());for(let s=0;s<3*h;s+=3){for(let e=0;e<3;e++)o[e]=Math.min(o[e],f[s+e]),o[e+3]=Math.max(o[e+3],f[s+e]);u&&i.push({location:f.slice(s,s+3),screenSpaceBoundingRect:u})}if(t&&t.service&&"absolute-height"!==this.elevationContext.mode){l(o,y);const e="relative-to-scene"===this.elevationContext.mode?"scene":"ground";let i=0;if(t.useViewElevation)i=s(t.service.getElevation(y[0],y[1],e),0);else try{const a=j(o,t);i=s(await t.service.queryElevation(y[0],y[1],r,a,e),0)}catch(O){}b(o,0,0,-this.alignedSampledElevation+i)}return o}addObjectState(e,t){e===m.Highlight&&t.addObject(this.stageObject,this.stageObject.highlight()),e===m.MaskOccludee&&t.addObject(this.stageObject,this.stageObject.maskOccludee())}removeObjectState(e){e.removeObject(this.stageObject)}_resetEdgeObject(e){if(t(this._edgeState))return;const s=this._stage.renderView.ensureEdgeView();this._visible?this._addOrUpdateEdgeObject(s,e):s.removeObject(this.stageObject)}_addOrUpdateEdgeObject(e,s){const i=this._edgeState;if(t(i))return;const a=v(i.baseMaterial);for(const t of i.edgeMaterials)t.objectTransparency=a;e.addOrUpdateObject3D(this.stageObject,i.edgeMaterials,i.properties,!s).then((()=>
|
|
5
|
+
import{isSome as e,isNone as t,unwrapOr as s}from"../../../../core/maybe.js";import{c as i,m as a,a as r}from"../../../../chunks/vec3.js";import{c as n}from"../../../../chunks/vec3f64.js";import{create as o,setMin as c,setMax as h,isPoint as g,empty as d,center as l,offset as b}from"../../../../geometry/support/aaBoundingBox.js";import{g as u}from"../../../../chunks/sphere.js";import{setContextFeature as O}from"./featureExpressionInfoUtils.js";import{demResolutionForBoundingBox as j}from"./graphicUtils.js";import{Object3DState as m}from"../../webgl-engine/lib/basicInterfaces.js";import{Transparency as _}from"../../webgl-engine/lib/edgeRendering/interfaces.js";class p{constructor(e,t,s,i,a,r,n,o=null){this.graphics3DSymbolLayer=e,this.stageObject=t,this._uniqueGeometries=s,this._uniqueMaterials=i,this._sharedResource=a,this.elevationAligner=r,this.elevationContext=n,this._edgeState=o,this.type="object3d",this._stageLayer=null,this._stage=null,this._visible=!1,this._addedToStage=!1,this.alignedSampledElevation=0,this.needsElevationUpdates=!1,this.useObjectOriginAsAttachmentOrigin=!1,this.graphics3DSymbolLayer=e,this.stageObject=t}get isElevationSource(){return!(!this.stageObject.metadata||!this.stageObject.metadata.isElevationSource)}initialize(e,t){this._stageLayer=t,this._stage=e,e.addMany(this._uniqueMaterials),e.addMany(this._uniqueGeometries),e.add(this.stageObject)}destroy(){const t=this._stage;this._stageLayer&&(t.removeMany(this._uniqueMaterials),t.removeMany(this._uniqueGeometries)),t.remove(this.stageObject),this._addedToStage&&(this._stageLayer.remove(this.stageObject),this._addedToStage=!1);const s=this._stage.renderView.ensureEdgeView();s.hasObject(this.stageObject)&&s.removeObject(this.stageObject),this.stageObject.dispose(),e(this._sharedResource)&&this._sharedResource.release(),this._visible=!1,this._stageLayer=null,this._stage=null}layerOpacityChanged(e,s){if(t(this._edgeState))return;const i=v(this._edgeState.baseMaterial);let a=!1;for(const t of this._edgeState.edgeMaterials)t.objectTransparency!==i&&(t.objectTransparency=i,a=!0);a&&this._resetEdgeObject(s);this._stage.renderView.ensureEdgeView().updateAllComponentOpacities(this.stageObject,[e])}slicePlaneEnabledChanged(e,s){if(t(this._edgeState))return;this._stage.renderView.ensureEdgeView().updateAllComponentMaterials(this.stageObject,this._edgeState.edgeMaterials,{hasSlicePlane:e},!s),this._edgeState.properties.hasSlicePlane=e}setVisibility(t){if(null!=this._stage&&this._visible!==t&&(this._visible=t,this._visible?this._addedToStage?this.stageObject.setVisible(!0):(this._stageLayer.add(this.stageObject),this._addedToStage=!0):this.stageObject.setVisible(!1),e(this._edgeState))){const e=this._stage.renderView.ensureEdgeView();e.hasObject(this.stageObject)?e.updateObjectVisibility(this.stageObject,t):t&&this._addOrUpdateEdgeObject(e,!1)}}get visible(){return this._visible}alignWithElevation(t,s,i,a){null!=this.elevationAligner&&(e(i)&&O(this.elevationContext.featureExpressionInfoContext,i),this.alignedSampledElevation=this.elevationAligner(this,this.elevationContext,t,s),this._resetEdgeObject(a))}getCenterObjectSpace(e=n()){return i(e,u(this.stageObject.boundingVolumeObjectSpace.bounds))}getBoundingBoxObjectSpace(e=o()){const t=this.stageObject.boundingVolumeObjectSpace;return c(e,t.min),h(e,t.max),e}computeAttachmentOrigin(e){if(this.useObjectOriginAsAttachmentOrigin){const t=this.stageObject.transformation;e.render.origin[0]+=t[12],e.render.origin[1]+=t[13],e.render.origin[2]+=t[14],e.render.num++}else for(const t of this.stageObject.geometryRecords)t.computeAttachmentOrigin(y)&&(a(y,y,this.stageObject.transformation),r(e.render.origin,e.render.origin,y),e.render.num++)}async getProjectedBoundingBox(e,t,i,r,n){const o=this.getBoundingBoxObjectSpace(n),c=E,h=g(o)?1:c.length;for(let s=0;s<h;s++){const e=c[s];S[0]=o[e[0]],S[1]=o[e[1]],S[2]=o[e[2]],a(S,S,this.stageObject.transformation),f[3*s+0]=S[0],f[3*s+1]=S[1],f[3*s+2]=S[2]}if(!e(f,0,h))return null;d(o);let u=null;this.calculateRelativeScreenBounds&&(u=this.calculateRelativeScreenBounds());for(let s=0;s<3*h;s+=3){for(let e=0;e<3;e++)o[e]=Math.min(o[e],f[s+e]),o[e+3]=Math.max(o[e+3],f[s+e]);u&&i.push({location:f.slice(s,s+3),screenSpaceBoundingRect:u})}if(t&&t.service&&"absolute-height"!==this.elevationContext.mode){l(o,y);const e="relative-to-scene"===this.elevationContext.mode?"scene":"ground";let i=0;if(t.useViewElevation)i=s(t.service.getElevation(y[0],y[1],e),0);else try{const a=j(o,t);i=s(await t.service.queryElevation(y[0],y[1],r,a,e),0)}catch(O){}b(o,0,0,-this.alignedSampledElevation+i)}return o}addObjectState(e,t){e===m.Highlight&&t.addObject(this.stageObject,this.stageObject.highlight()),e===m.MaskOccludee&&t.addObject(this.stageObject,this.stageObject.maskOccludee())}removeObjectState(e){e.removeObject(this.stageObject)}_resetEdgeObject(e){if(t(this._edgeState))return;const s=this._stage.renderView.ensureEdgeView();this._visible?this._addOrUpdateEdgeObject(s,e):s.removeObject(this.stageObject)}_addOrUpdateEdgeObject(e,s){const i=this._edgeState;if(t(i))return;const a=v(i.baseMaterial);for(const t of i.edgeMaterials)t.objectTransparency=a;e.addOrUpdateObject3D(this.stageObject,i.edgeMaterials,i.properties,!s).then((()=>this._stageLayer?.sync()))}}function v(e){return e.isVisible?e.parameters.transparent?_.TRANSPARENT:_.OPAQUE:_.INVISIBLE}const f=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],S=n(),y=n(),E=[[0,1,2],[3,1,2],[0,4,2],[3,4,2],[0,1,5],[3,1,5],[0,4,5],[3,4,5]];export{p as Graphics3DObject3DGraphicLayer};
|
|
@@ -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"../../../../core/Error.js";import{acosClamped as t,reciprocalClamped as i}from"../../../../core/mathUtils.js";import{isSome as r,get as s}from"../../../../core/maybe.js";import{s as a}from"../../../../chunks/mat2.js";import{b as o,g as n}from"../../../../chunks/vec2.js";import{f as l}from"../../../../chunks/vec2f64.js";import{s as h,a as c,e as p,f as m,g as f,n as d,o as u,b as g}from"../../../../chunks/vec3.js";import{c as y}from"../../../../chunks/vec3f32.js";import{d as _,c as b}from"../../../../chunks/vec3f64.js";import{projectBuffer as v}from"../../../../geometry/projection.js";import{create as x,empty as w,expandWithBuffer as S,intersectsClippingArea as R}from"../../../../geometry/support/aaBoundingBox.js";import{makeDehydratedPoint as D}from"../../../../layers/graphics/dehydratedFeatures.js";import{needsElevationUpdates3D as P,evaluateElevationAlignmentAtPoint as j,SampleElevationInfo as C,evaluateElevationInfoAtPoint as A}from"./elevationAlignmentUtils.js";import{ElevationContext as V}from"./ElevationContext.js";import{Graphics3DObject3DGraphicLayer as z}from"./Graphics3DObject3DGraphicLayer.js";import{Graphics3DSymbolLayer as L,getAttributeValue as E}from"./Graphics3DSymbolLayer.js";import{isValidSize as U}from"./graphicUtils.js";import{ApplyRendererDiffResult as k}from"./interfaces.js";import{initFastSymbolUpdatesState as F,updateFastSymbolUpdatesState as G}from"../support/FastSymbolUpdates.js";import{CullFaceOptions as I}from"../../webgl-engine/lib/basicInterfaces.js";import{Object3D as M}from"../../webgl-engine/lib/Object3D.js";import{PathGeometry as B,isPathGeometry as O}from"../../webgl-engine/lib/PathGeometry.js";import{Profile as q,SimpleExtruder as H,MiterExtruder as T,RoundCapBuilder as N,TriangulationCapBuilder as W,NoCapBuilder as Z,PathVertex as J,Path as K,Builder as Q,FastUpdatePathGeometry as X,StaticPathGeometry as Y,computeMinimumRotationTangentFrame as $,vertexSpaceToProfileSpace as ee}from"../../webgl-engine/lib/pathGeometryUtils.js";import{DefaultMaterial as te}from"../../webgl-engine/materials/DefaultMaterial.js";import{PathMaterial as ie}from"../../webgl-engine/materials/PathMaterial.js";const re=["polyline"];class se extends L{constructor(e,t,i,r){super(e,t,i,r),this._intrinsicSize=l(1,1),this.upVectorAlignment="path",this.stencilWidth=.1,this.ensureDrapedStatus(!1)}async doLoad(){const t=r(this.symbolLayer.width)?this.symbolLayer.width:this.symbolLayer.height,i=r(this.symbolLayer.height)?this.symbolLayer.height:t;this._vvConvertOptions={modelSize:[1,1,1],symbolSize:[t,1,i],unitInMeters:this._context.renderCoordsHelper.unitInMeters,transformation:{anchor:[0,0,0],scale:[1,1,1],rotation:[0,0,0]},supportedTypes:{size:!0,color:!0,opacity:!0,rotation:!1}},this._context.renderer&&this._context.renderer.visualVariables&&this._context.renderer.visualVariables.length>0?this._fastUpdates=F(this._context.renderer,this._vvConvertOptions):this._fastUpdates={enabled:!1};const a=this.symbolLayer.anchor||"center";this.upVectorAlignment="path","heading"===this.symbolLayer.profileRotation&&(this.upVectorAlignment="world");const l=this.symbolLayer.profile||"circle";switch(l){case"circle":default:this._profile=q.circle(ye);break;case"quad":this._profile=q.rect()}let h=[0,0];"center"!==a&&(h={left:[.5,0],right:[-.5,0],top:[0,-.5],bottom:[0,.5]}[a],this._profile.translate(h[0],h[1]));switch(this.symbolLayer.join||"simple"){case"round":this._extruder=new T(0,ue);break;case"bevel":this._extruder=new T(0,1);break;case"miter":this._extruder=new T(.8*Math.PI,1);break;default:this._extruder=new H}const c=this.symbolLayer.cap||"butt";switch(c){case"none":this._startCap=new Z,this._endCap=new Z;break;case"butt":default:this._startCap=new W(this._profile,0),this._endCap=new W(this._profile,0,!0);break;case"square":this._startCap=new W(this._profile,-.5),this._endCap=new W(this._profile,.5,!0);break;case"round":{const e="quad"===l;this._startCap=new N({profile:this._profile,flip:!1,breakNormals:e,subdivisions:ge}),this._endCap=new N({profile:this._profile,flip:!0,breakNormals:e,subdivisions:ge});break}}const p=s(this.symbolLayer,"material","color"),m=this._getCombinedOpacityAndColor(p),f=_(m),d=m[3],u=d<1||this.needsDrivenTransparentPass,g={diffuse:f,ambient:f,opacity:d,transparent:u,hasVertexColors:!1,hasSlicePlane:this._context.slicePlaneEnabled,castShadows:this.symbolLayer.castShadows,cullFace:u||"none"===c?I.None:I.Back,offsetTransparentBackfaces:!0};if(!this._drivenProperties.size&&(o(this._intrinsicSize,t,i),!U(this._intrinsicSize[0])||!U(this._intrinsicSize[1])))throw new e("graphics3dpathsymbollayer:invalid-size","Symbol sizes may not be negative values");this._fastUpdates.enabled&&this._fastUpdates.visualVariables.size||n(this._intrinsicSize,this._intrinsicSize,1/this._context.renderCoordsHelper.unitInMeters),this._fastUpdates.enabled?(Object.assign(g,this._fastUpdates.materialParameters,{size:[this._intrinsicSize[0],this._intrinsicSize[1],0]}),this._material=new ie(g)):(g.hasVertexColors=this._drivenProperties.color||this._drivenProperties.opacity,this._material=new te(g)),this._material.setParameters({usePBR:this._context.physicalBasedRenderingEnabled,isSchematic:!0}),this._context.stage.add(this._material)}destroy(){super.destroy(),this._context.stage.remove(this._material),this._material=null}createGraphics3DGraphic(e){const t=e.graphic;if(!this._validateGeometry(t.geometry,re,this.symbolLayer.type))return null;const i=this.setGraphicElevationContext(t,new V),r=e.renderingInfo;return this._createAs3DShape(t,r,i,t.uid)}layerOpacityChanged(){const e=s(this.symbolLayer,"material","color"),t=this._getCombinedOpacity(e),i=t<1||this.needsDrivenTransparentPass;return this._material.setParameters({opacity:t,transparent:i}),!0}layerElevationInfoChanged(e,t){return this.updateGraphics3DGraphicElevationInfo(e,t,P)}slicePlaneEnabledChanged(){return this._material.setParameters({hasSlicePlane:this._context.slicePlaneEnabled}),!0}physicalBasedRenderingChanged(){return this._material.setParameters({usePBR:this._context.physicalBasedRenderingEnabled,isSchematic:!0}),!0}pixelRatioChanged(){return!0}applyRendererDiff(e,t){for(const i in e.diff){if("visualVariables"!==i)return k.Recreate_Symbol;if(!G(this._fastUpdates,t,this._vvConvertOptions))return k.Recreate_Symbol;this._material.setParameters(this._fastUpdates.materialParameters)}return k.Fast_Update}getVertexData(e){let t=0;const i=e.paths,r=[],s=e.spatialReference,a=this._context.elevationProvider.spatialReference,o=this._context.renderCoordsHelper.spatialReference;for(const m of i)t+=m.length;const n=new Float64Array(3*t),l=new Float64Array(3*t),h=new Float64Array(3*t);let c=0;for(const m of i){r.push({index:c,numVertices:m.length});for(const t of m)n[c++]=t[0],n[c++]=t[1],n[c++]=e.hasZ?t[2]:0}let p=!0;return s.equals(a)?this._copyVertices(n,0,l,0,t):p=v(n,s,0,l,a,0,t),a.equals(o)?this._copyVertices(l,0,h,0,t):v(l,a,0,h,o,0,t),{pathVertexDataInfos:r,vertexDataGS:n,vertexDataES:l,vertexDataRS:h,projectionSuccess:p,terrainElevation:0}}_copyVertices(e,t,i,r,s){t*=3,r*=3;for(let a=0;a<s;++a)i[r++]=e[t++],i[r++]=e[t++],i[r++]=e[t++]}_createAs3DShape(e,t,i,s){const a=e.geometry,o=new Array,n=new Array,l=new Array,c=a.spatialReference,p=x(),m=this._context.renderCoordsHelper;ce.spatialReference=c;const f=this.getVertexData(a);if(!f.projectionSuccess)return this.logger.warn("PathSymbol3DLayer geometry failed to be created (failed to project geometry to view spatial reference)"),null;if(f.pathVertexDataInfos.length>0){for(let s=0;s<f.pathVertexDataInfos.length;++s){const a=f.pathVertexDataInfos[s],d=a.index,u=a.numVertices;if(u<2)continue;if(r(this._context.clippingExtent)&&(w(p),S(p,f.vertexDataES,3*d,u),!R(p,this._context.clippingExtent)))continue;const g=[];for(let e=d;e<d+3*u;){const t=e++,r=e++,s=e++,a=new J;h(a.posGS,f.vertexDataGS[t],f.vertexDataGS[r],f.vertexDataGS[s]),h(a.posES,f.vertexDataES[t],f.vertexDataES[r],f.vertexDataES[s]);const o=j(a.posES,this._context.elevationProvider,i,m);h(pe,f.vertexDataRS[t],f.vertexDataRS[r],f.vertexDataRS[s]),m.setAltitude(pe,o),h(a.pos,pe[0],pe[1],pe[2]),g.push(a)}const y=new K(g);ae(y,this.upVectorAlignment,this._context.renderCoordsHelper);const _=new Q(y,this._profile,this._extruder,this._startCap,this._endCap);let b=null;if(this._fastUpdates.enabled){const t=this._fastUpdates.visualVariables,i=t.size?E(t.size.field,e):0,r=t.color?E(t.color.field,e):0,s=t.opacity?E(t.opacity.field,e):0;b=new X(_,i,r,s)}else{const e=[this._intrinsicSize[0],this._intrinsicSize[1]];this._drivenProperties.size&&(e[0]*=oe(t.size[0],"symbol-value"===t.size[2]?this.symbolLayer.height||0:t.size[2],this.symbolLayer.width||0),e[1]*=oe(t.size[2],"symbol-value"===t.size[0]?this.symbolLayer.width||0:t.size[0],this.symbolLayer.height||0));let i=null;this._drivenProperties.color&&(i=t.color),this._drivenProperties.opacity&&null!=t.opacity&&(i=i?[i[0],i[1],i[2],t.opacity]:[1,1,1,t.opacity]);const r=new Y(_);r.bake(e),i&&r.bakeVertexColors(i),b=r}const{vertexAttributes:v,indices:x}=b.createGeometryData(),D=new B(v,x,b,c,this.upVectorAlignment,this.stencilWidth);o.push(D),n.push(this._material),l.push(b.xform)}if(o.length>0){const e={layerUid:this._context.layer.uid,graphicUid:s},t=new M({geometries:o,materials:n,transformations:l,metadata:e}),r=new z(this,t,o,null,null,le,i);return r.alignedSampledElevation=f.terrainElevation,r.needsElevationUpdates=P(i.mode),r}}else 0!==a.paths.length&&a.paths.some((e=>e.length>0))||this.logger.warn("PathSymbol3DLayer geometry failed to be created (no paths were defined)");return null}}function ae(e,r,s){switch(r){case"world":for(const t of e.vertices)c(me,t.pos,e.offset),s.worldUpAtPosition(me,pe),t.setFrameFromUpVector(pe),t.computeRotationAxisAndAngleFromUpVector();break;case"path":c(me,e.vertices[0].pos,e.offset),s.worldUpAtPosition(me,pe),$(e,pe);for(const r of e.vertices){const e=Math.sign(p(r.frame.right,r.vRight));m(r.rotationFrame.up,r.vRight,r.vLeft),f(r.rotationFrame.up,r.rotationFrame.up,e),d(r.rotationFrame.up,r.rotationFrame.up);const s=p(r.rotationFrame.up,r.frame.up),o=p(r.rotationFrame.up,r.frame.right);if(f(me,r.frame.up,-o),f(fe,r.frame.right,s),c(me,me,fe),d(r.rotationFrame.right,me),ee(r.rotationRight,r.frame,r.rotationFrame.right),u(me,r.vLeft),r.rotationAngle=-e*(Math.PI-t(p(me,r.vRight))),Math.abs(r.rotationAngle)>0){const e=i(Math.cos(.5*r.rotationAngle));a(r.miterStretch,1+(e-1)*r.rotationRight[0]*r.rotationRight[0],(e-1)*r.rotationRight[0]*r.rotationRight[1],(e-1)*r.rotationRight[0]*r.rotationRight[1],1+(e-1)*r.rotationRight[1]*r.rotationRight[1])}const n=Math.PI-r.rotationAngle;r.maxStretchDistance=Math.abs(Math.min(r.vLeftLength,r.vRightLength)*i(Math.cos(.5*n)))}}}function oe(e,t,i){switch(e){case"symbol-value":return i;case"proportional":return t;default:return e}}function ne(e,t,i,r){let s=0;for(const a of e.vertices)A(a.posES,i,t,r,de),s+=de.sampledElevation,c(pe,a.pos,e.offset),r.setAltitude(pe,de.z),g(a.pos,pe,e.offset);return e.updatePathVertexInformation(),s/e.vertices.length}function le(e,t,i,r){const s=e.stageObject,a=s.geometryRecords;let o=0;he.spatialReference=r.spatialReference;for(const n of a){const e=n.geometry;if(!O(e))continue;const a=e.path,l=a.builder.path,h=e.geometrySR;ce.spatialReference=h,o+=ne(l,t,i,r),"world"!==e.upVectorAlignment&&ae(l,e.upVectorAlignment,r),a.onPathChanged(),e.invalidateBoundingInfo(),s.geometryVertexAttrsUpdated(n)}return o/a.length}const he=D(0,0,0,null),ce=D(0,0,0,null),pe=b(),me=y(),fe=y(),de=new C,ue=3,ge=3,ye=10;export{se as Graphics3DPathSymbolLayer,ye as NUM_CIRCLE_PROFILE_SUBDIVISIONS,ge as NUM_ROUND_CAP_EXTRUSION_SUBDIVISIONS,ue as NUM_ROUND_JOIN_SUBDIVISIONS};
|
|
5
|
+
import e from"../../../../core/Error.js";import{acosClamped as t,reciprocalClamped as r}from"../../../../core/mathUtils.js";import{isSome as i,get as s}from"../../../../core/maybe.js";import{s as a}from"../../../../chunks/mat2.js";import{b as o,g as n}from"../../../../chunks/vec2.js";import{f as l,b as h}from"../../../../chunks/vec2f64.js";import{s as c,a as p,e as m,f,g as d,n as u,o as g,b as y}from"../../../../chunks/vec3.js";import{c as _}from"../../../../chunks/vec3f32.js";import{d as b,c as v}from"../../../../chunks/vec3f64.js";import{projectBuffer as x}from"../../../../geometry/projection.js";import{create as w,empty as S,expandWithBuffer as R,intersectsClippingArea as D}from"../../../../geometry/support/aaBoundingBox.js";import{makeDehydratedPoint as P}from"../../../../layers/graphics/dehydratedFeatures.js";import{needsElevationUpdates3D as j,evaluateElevationAlignmentAtPoint as C,SampleElevationInfo as A,evaluateElevationInfoAtPoint as V}from"./elevationAlignmentUtils.js";import{ElevationContext as L}from"./ElevationContext.js";import{Graphics3DObject3DGraphicLayer as z}from"./Graphics3DObject3DGraphicLayer.js";import{Graphics3DSymbolLayer as E,getAttributeValue as U}from"./Graphics3DSymbolLayer.js";import{isValidSize as k}from"./graphicUtils.js";import{ApplyRendererDiffResult as F}from"./interfaces.js";import{initFastSymbolUpdatesState as G,updateFastSymbolUpdatesState as I}from"../support/FastSymbolUpdates.js";import{CullFaceOptions as M}from"../../webgl-engine/lib/basicInterfaces.js";import{Object3D as B}from"../../webgl-engine/lib/Object3D.js";import{PathGeometry as O,isPathGeometry as q}from"../../webgl-engine/lib/PathGeometry.js";import{Profile as H,SimpleExtruder as T,MiterExtruder as N,RoundCapBuilder as W,TriangulationCapBuilder as Z,NoCapBuilder as J,PathVertex as K,Path as Q,Builder as X,FastUpdatePathGeometry as Y,StaticPathGeometry as $,computeMinimumRotationTangentFrame as ee,vertexSpaceToProfileSpace as te}from"../../webgl-engine/lib/pathGeometryUtils.js";import{DefaultMaterial as re}from"../../webgl-engine/materials/DefaultMaterial.js";import{PathMaterial as ie}from"../../webgl-engine/materials/PathMaterial.js";const se=["polyline"];class ae extends E{constructor(e,t,r,i){super(e,t,r,i),this._intrinsicSize=l(1,1),this.upVectorAlignment="path",this.stencilWidth=.1,this.ensureDrapedStatus(!1)}async doLoad(){const t=i(this.symbolLayer.width)?this.symbolLayer.width:this.symbolLayer.height,r=i(this.symbolLayer.height)?this.symbolLayer.height:t;this._vvConvertOptions={modelSize:[1,1,1],symbolSize:[t,1,r],unitInMeters:this._context.renderCoordsHelper.unitInMeters,transformation:{anchor:[0,0,0],scale:[1,1,1],rotation:[0,0,0]},supportedTypes:{size:!0,color:!0,opacity:!0,rotation:!1}},this._context.renderer&&this._context.renderer.visualVariables&&this._context.renderer.visualVariables.length>0?this._fastUpdates=G(this._context.renderer,this._vvConvertOptions):this._fastUpdates={enabled:!1};const a=this.symbolLayer.anchor||"center";this.upVectorAlignment="path","heading"===this.symbolLayer.profileRotation&&(this.upVectorAlignment="world");const l=this.symbolLayer.profile||"circle";switch(l){case"circle":default:this._profile=H.circle(_e);break;case"quad":this._profile=H.rect()}let c=[0,0];"center"!==a&&(c={left:[.5,0],right:[-.5,0],top:[0,-.5],bottom:[0,.5]}[a],this._profile.translate(c[0],c[1]));switch(this.symbolLayer.join||"simple"){case"round":this._extruder=new N(0,ge);break;case"bevel":this._extruder=new N(0,1);break;case"miter":this._extruder=new N(.8*Math.PI,1);break;default:this._extruder=new T}const p=this.symbolLayer.cap||"butt";switch(p){case"none":this._startCap=new J,this._endCap=new J;break;case"butt":default:this._startCap=new Z(this._profile,0),this._endCap=new Z(this._profile,0,!0);break;case"square":this._startCap=new Z(this._profile,-.5),this._endCap=new Z(this._profile,.5,!0);break;case"round":{const e="quad"===l;this._startCap=new W({profile:this._profile,flip:!1,breakNormals:e,subdivisions:ye}),this._endCap=new W({profile:this._profile,flip:!0,breakNormals:e,subdivisions:ye});break}}const m=s(this.symbolLayer,"material","color"),f=this._getCombinedOpacityAndColor(m),d=b(f),u=f[3],g=u<1||this.needsDrivenTransparentPass,y={diffuse:d,ambient:d,opacity:u,transparent:g,hasVertexColors:!1,hasSlicePlane:this._context.slicePlaneEnabled,castShadows:this.symbolLayer.castShadows,cullFace:g||"none"===p?M.None:M.Back,offsetTransparentBackfaces:!0};if(!this._drivenProperties.size&&(o(this._intrinsicSize,t,r),!k(this._intrinsicSize[0])||!k(this._intrinsicSize[1])))throw new e("graphics3dpathsymbollayer:invalid-size","Symbol sizes may not be negative values");if(this._fastUpdates.enabled&&this._fastUpdates.visualVariables.size||n(this._intrinsicSize,this._intrinsicSize,1/this._context.renderCoordsHelper.unitInMeters),this._fastUpdates.enabled){const e={...y,...this._fastUpdates.materialParameters,size:h(this._intrinsicSize)};this._material=new ie(e)}else y.hasVertexColors=this._drivenProperties.color||this._drivenProperties.opacity,this._material=new re(y);this._material.setParameters({usePBR:this._context.physicalBasedRenderingEnabled,isSchematic:!0}),this._context.stage.add(this._material)}destroy(){super.destroy(),this._context.stage.remove(this._material),this._material=null}createGraphics3DGraphic(e){const t=e.graphic;if(!this._validateGeometry(t.geometry,se,this.symbolLayer.type))return null;const r=this.setGraphicElevationContext(t,new L),i=e.renderingInfo;return this._createAs3DShape(t,i,r,t.uid)}layerOpacityChanged(){const e=s(this.symbolLayer,"material","color"),t=this._getCombinedOpacity(e),r=t<1||this.needsDrivenTransparentPass;return this._material.setParameters({opacity:t,transparent:r}),!0}layerElevationInfoChanged(e,t){return this.updateGraphics3DGraphicElevationInfo(e,t,j)}slicePlaneEnabledChanged(){return this._material.setParameters({hasSlicePlane:this._context.slicePlaneEnabled}),!0}physicalBasedRenderingChanged(){return this._material.setParameters({usePBR:this._context.physicalBasedRenderingEnabled,isSchematic:!0}),!0}pixelRatioChanged(){return!0}applyRendererDiff(e,t){for(const r in e.diff){if("visualVariables"!==r)return F.Recreate_Symbol;if(!I(this._fastUpdates,t,this._vvConvertOptions))return F.Recreate_Symbol;this._material.setParameters(this._fastUpdates.materialParameters)}return F.Fast_Update}getVertexData(e){let t=0;const r=e.paths,i=[],s=e.spatialReference,a=this._context.elevationProvider.spatialReference,o=this._context.renderCoordsHelper.spatialReference;for(const m of r)t+=m.length;const n=new Float64Array(3*t),l=new Float64Array(3*t),h=new Float64Array(3*t);let c=0;for(const m of r){i.push({index:c,numVertices:m.length});for(const t of m)n[c++]=t[0],n[c++]=t[1],n[c++]=e.hasZ?t[2]:0}let p=!0;return s.equals(a)?this._copyVertices(n,0,l,0,t):p=x(n,s,0,l,a,0,t),a.equals(o)?this._copyVertices(l,0,h,0,t):x(l,a,0,h,o,0,t),{pathVertexDataInfos:i,vertexDataGS:n,vertexDataES:l,vertexDataRS:h,projectionSuccess:p,terrainElevation:0}}_copyVertices(e,t,r,i,s){t*=3,i*=3;for(let a=0;a<s;++a)r[i++]=e[t++],r[i++]=e[t++],r[i++]=e[t++]}_createAs3DShape(e,t,r,s){const a=e.geometry,o=new Array,n=new Array,l=new Array,h=a.spatialReference,p=w(),m=this._context.renderCoordsHelper;pe.spatialReference=h;const f=this.getVertexData(a);if(!f.projectionSuccess)return this.logger.warn("PathSymbol3DLayer geometry failed to be created (failed to project geometry to view spatial reference)"),null;if(f.pathVertexDataInfos.length>0){for(let s=0;s<f.pathVertexDataInfos.length;++s){const a=f.pathVertexDataInfos[s],d=a.index,u=a.numVertices;if(u<2)continue;if(i(this._context.clippingExtent)&&(S(p),R(p,f.vertexDataES,3*d,u),!D(p,this._context.clippingExtent)))continue;const g=[];for(let e=d;e<d+3*u;){const t=e++,i=e++,s=e++,a=new K;c(a.posGS,f.vertexDataGS[t],f.vertexDataGS[i],f.vertexDataGS[s]),c(a.posES,f.vertexDataES[t],f.vertexDataES[i],f.vertexDataES[s]);const o=C(a.posES,this._context.elevationProvider,r,m);c(me,f.vertexDataRS[t],f.vertexDataRS[i],f.vertexDataRS[s]),m.setAltitude(me,o),c(a.pos,me[0],me[1],me[2]),g.push(a)}const y=new Q(g);oe(y,this.upVectorAlignment,this._context.renderCoordsHelper);const _=new X(y,this._profile,this._extruder,this._startCap,this._endCap);let b=null;if(this._fastUpdates.enabled){const t=this._fastUpdates.visualVariables,r=t.size?U(t.size.field,e):0,i=t.color?U(t.color.field,e):0,s=t.opacity?U(t.opacity.field,e):0;b=new Y(_,r,i,s)}else{const e=[this._intrinsicSize[0],this._intrinsicSize[1]];this._drivenProperties.size&&(e[0]*=ne(t.size[0],"symbol-value"===t.size[2]?this.symbolLayer.height||0:t.size[2],this.symbolLayer.width||0),e[1]*=ne(t.size[2],"symbol-value"===t.size[0]?this.symbolLayer.width||0:t.size[0],this.symbolLayer.height||0));let r=null;this._drivenProperties.color&&(r=t.color),this._drivenProperties.opacity&&null!=t.opacity&&(r=r?[r[0],r[1],r[2],t.opacity]:[1,1,1,t.opacity]);const i=new $(_);i.bake(e),r&&i.bakeVertexColors(r),b=i}const{vertexAttributes:v,indices:x}=b.createGeometryData(),w=new O(v,x,b,h,this.upVectorAlignment,this.stencilWidth);o.push(w),n.push(this._material),l.push(b.xform)}if(o.length>0){const e={layerUid:this._context.layer.uid,graphicUid:s},t=new B({geometries:o,materials:n,transformations:l,metadata:e}),i=new z(this,t,o,null,null,he,r);return i.alignedSampledElevation=f.terrainElevation,i.needsElevationUpdates=j(r.mode),i}}else 0!==a.paths.length&&a.paths.some((e=>e.length>0))||this.logger.warn("PathSymbol3DLayer geometry failed to be created (no paths were defined)");return null}}function oe(e,i,s){switch(i){case"world":for(const t of e.vertices)p(fe,t.pos,e.offset),s.worldUpAtPosition(fe,me),t.setFrameFromUpVector(me),t.computeRotationAxisAndAngleFromUpVector();break;case"path":p(fe,e.vertices[0].pos,e.offset),s.worldUpAtPosition(fe,me),ee(e,me);for(const i of e.vertices){const e=Math.sign(m(i.frame.right,i.vRight));f(i.rotationFrame.up,i.vRight,i.vLeft),d(i.rotationFrame.up,i.rotationFrame.up,e),u(i.rotationFrame.up,i.rotationFrame.up);const s=m(i.rotationFrame.up,i.frame.up),o=m(i.rotationFrame.up,i.frame.right);if(d(fe,i.frame.up,-o),d(de,i.frame.right,s),p(fe,fe,de),u(i.rotationFrame.right,fe),te(i.rotationRight,i.frame,i.rotationFrame.right),g(fe,i.vLeft),i.rotationAngle=-e*(Math.PI-t(m(fe,i.vRight))),Math.abs(i.rotationAngle)>0){const e=r(Math.cos(.5*i.rotationAngle));a(i.miterStretch,1+(e-1)*i.rotationRight[0]*i.rotationRight[0],(e-1)*i.rotationRight[0]*i.rotationRight[1],(e-1)*i.rotationRight[0]*i.rotationRight[1],1+(e-1)*i.rotationRight[1]*i.rotationRight[1])}const n=Math.PI-i.rotationAngle;i.maxStretchDistance=Math.abs(Math.min(i.vLeftLength,i.vRightLength)*r(Math.cos(.5*n)))}}}function ne(e,t,r){switch(e){case"symbol-value":return r;case"proportional":return t;default:return e}}function le(e,t,r,i){let s=0;for(const a of e.vertices)V(a.posES,r,t,i,ue),s+=ue.sampledElevation,p(me,a.pos,e.offset),i.setAltitude(me,ue.z),y(a.pos,me,e.offset);return e.updatePathVertexInformation(),s/e.vertices.length}function he(e,t,r,i){const s=e.stageObject,a=s.geometryRecords;let o=0;ce.spatialReference=i.spatialReference;for(const n of a){const e=n.geometry;if(!q(e))continue;const a=e.path,l=a.builder.path,h=e.geometrySR;pe.spatialReference=h,o+=le(l,t,r,i),"world"!==e.upVectorAlignment&&oe(l,e.upVectorAlignment,i),a.onPathChanged(),e.invalidateBoundingInfo(),s.geometryVertexAttrsUpdated(n)}return o/a.length}const ce=P(0,0,0,null),pe=P(0,0,0,null),me=v(),fe=_(),de=_(),ue=new A,ge=3,ye=3,_e=10;export{ae as Graphics3DPathSymbolLayer,_e as NUM_CIRCLE_PROFILE_SUBDIVISIONS,ye as NUM_ROUND_CAP_EXTRUSION_SUBDIVISIONS,ge as NUM_ROUND_JOIN_SUBDIVISIONS};
|
|
@@ -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{result as r}from"../../../../core/asyncUtils.js";import{destroyMaybe as t,isSome as a}from"../../../../core/maybe.js";import{throwIfAborted as e}from"../../../../core/promiseUtils.js";import{make as o}from"./Graphics3DCalloutSymbolLayerFactory.js";import l from"./Graphics3DSymbol.js";class s extends l{constructor(r,t,a){super(r,t,a),this.calloutSymbolLayer=null,this.symbol.hasVisibleCallout()&&(this.calloutSymbolLayer=o(this.symbol,t))}async doLoad(t){const a=this.calloutSymbolLayer?r(this.calloutSymbolLayer.load()):null;try{await super.doLoad(t),e(t)}catch(
|
|
5
|
+
import{result as r}from"../../../../core/asyncUtils.js";import{destroyMaybe as t,isSome as a}from"../../../../core/maybe.js";import{throwIfAborted as e}from"../../../../core/promiseUtils.js";import{make as o}from"./Graphics3DCalloutSymbolLayerFactory.js";import l from"./Graphics3DSymbol.js";class s extends l{constructor(r,t,a){super(r,t,a),this.calloutSymbolLayer=null,this.symbol.hasVisibleCallout()&&(this.calloutSymbolLayer=o(this.symbol,t))}async doLoad(t){const a=this.calloutSymbolLayer?r(this.calloutSymbolLayer.load()):null;try{await super.doLoad(t),e(t)}catch(o){throw this.calloutSymbolLayer?.abortLoad(),o}a&&await a}destroy(){super.destroy(),this.calloutSymbolLayer=t(this.calloutSymbolLayer)}createGraphics3DGraphic(r,t){const e=super.createGraphics3DGraphic(r,t);if(a(this.calloutSymbolLayer)&&a(e)){const t=this._createCalloutGraphic(r);a(t)&&e.addAuxiliaryGraphic(t)}return e}globalPropertyChanged(r,t){return!!super.globalPropertyChanged(r,t)&&(!this.calloutSymbolLayer||this.calloutSymbolLayer.globalPropertyChanged(r,t,(r=>this._getCalloutGraphicLayer(r))))}updateGeometry(r,t){const a=super.updateGeometry(r,t);if(a&&this.calloutSymbolLayer){const a=this._getCalloutGraphicLayer(r);if(a)return this.calloutSymbolLayer.updateGeometry(a,t)}return a}_createCalloutGraphic(r){const t=r.renderingInfo,a={renderer:t.renderer,symbol:t.symbol,translation:[0,0,0],centerOffset:[0,0,0,0],screenOffset:[0,0],centerOffsetUnits:"world",elevationOffset:0,materialCollection:null};return r.renderingInfo=a,this.calloutSymbolLayer.createGraphics3DGraphic(r)}_getCalloutGraphicLayer(r){for(const t of r._auxiliaryGraphics)if(t.graphics3DSymbolLayer===this.calloutSymbolLayer)return t}}export{s as default};
|
|
@@ -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{forEach as e}from"../../../../core/asyncUtils.js";import{isNone as t,isSome as s,get as r}from"../../../../core/maybe.js";import{onAbortOrThrow as o,throwIfAborted as a}from"../../../../core/promiseUtils.js";import i from"./Graphics3DGraphic.js";import{Graphics3DObject3DGraphicLayer as n}from"./Graphics3DObject3DGraphicLayer.js";import{make as y}from"./Graphics3DSymbolLayerFactory.js";import{ApplyRendererDiffResult as l}from"./interfaces.js";import{Loadable as h,LoadStatus as c}from"./Loadable.js";import{totalSymbolComplexities as m}from"./symbolComplexity.js";class d extends h{constructor(e,t,s){super(t.schedule),this._symbol=e,this._context=t,this._backgroundLayers=s,this._destroyed=!1,this.symbolLayers=new Array,this.referenced=0,this._extentPadding=0}set symbol(e){this._symbol=e;for(let s=0;s<e.symbolLayers.length;s++){const r=this.symbolLayers[s];t(r)||(r.symbol=e,r.symbolLayer=e.symbolLayers.items[s])}}get symbol(){return this._symbol}async doLoad(t){let r=this._symbol.symbolLayers;this._extentPadding=0,this._backgroundLayers&&(r=this._backgroundLayers.concat(r));const i=r.length;for(;this.symbolLayers.length<r.length;)this.symbolLayers.push(null);this.symbolLayers.length=r.length;const n=[];for(let e=0;e<i;e++){const s=r.getItemAt(e);if(!1===s.enabled)continue;p.renderPriority=1-(1+e)/i,p.renderPriorityStep=1/i,p.ignoreDrivers=s._ignoreDrivers;const a=y(this.symbol,s,this._context,p);n.push(o(t,(()=>{this.symbolLayers[e]=null,a.destroy()}))),this.symbolLayers[e]=a}await e(this.symbolLayers,(async(e,t)=>{if(s(e))try{await e.load(),this._extentPadding+=Math.max(this._extentPadding,e.extentPadding)}catch{this.symbolLayers[t]=null}}));for(const e of n)
|
|
5
|
+
import{forEach as e}from"../../../../core/asyncUtils.js";import{isNone as t,isSome as s,get as r}from"../../../../core/maybe.js";import{onAbortOrThrow as o,throwIfAborted as a}from"../../../../core/promiseUtils.js";import i from"./Graphics3DGraphic.js";import{Graphics3DObject3DGraphicLayer as n}from"./Graphics3DObject3DGraphicLayer.js";import{make as y}from"./Graphics3DSymbolLayerFactory.js";import{ApplyRendererDiffResult as l}from"./interfaces.js";import{Loadable as h,LoadStatus as c}from"./Loadable.js";import{totalSymbolComplexities as m}from"./symbolComplexity.js";class d extends h{constructor(e,t,s){super(t.schedule),this._symbol=e,this._context=t,this._backgroundLayers=s,this._destroyed=!1,this.symbolLayers=new Array,this.referenced=0,this._extentPadding=0}set symbol(e){this._symbol=e;for(let s=0;s<e.symbolLayers.length;s++){const r=this.symbolLayers[s];t(r)||(r.symbol=e,r.symbolLayer=e.symbolLayers.items[s])}}get symbol(){return this._symbol}async doLoad(t){let r=this._symbol.symbolLayers;this._extentPadding=0,this._backgroundLayers&&(r=this._backgroundLayers.concat(r));const i=r.length;for(;this.symbolLayers.length<r.length;)this.symbolLayers.push(null);this.symbolLayers.length=r.length;const n=[];for(let e=0;e<i;e++){const s=r.getItemAt(e);if(!1===s.enabled)continue;p.renderPriority=1-(1+e)/i,p.renderPriorityStep=1/i,p.ignoreDrivers=s._ignoreDrivers;const a=y(this.symbol,s,this._context,p);n.push(o(t,(()=>{this.symbolLayers[e]=null,a.destroy()}))),this.symbolLayers[e]=a}await e(this.symbolLayers,(async(e,t)=>{if(s(e))try{await e.load(),this._extentPadding+=Math.max(this._extentPadding,e.extentPadding)}catch{this.symbolLayers[t]=null}}));for(const e of n)e?.remove();if(n.length=0,a(t),this.symbolLayers.length&&!this.symbolLayers.some((e=>!!e)))throw new Error}getSymbolLayerSize(e){const t=this.symbolLayers[e];return s(t)?t.getCachedSize():null}get extentPadding(){return this._extentPadding}createGraphics3DGraphic(e,t){const r=e.graphic,o=new Array(this.symbolLayers.length);for(let i=0;i<this.symbolLayers.length;i++){const t=this.symbolLayers[i];o[i]=s(t)?t.createGraphics3DGraphic(e):null}const a=this._context.arcade||this._context.featureExpressionInfoContext&&this._context.featureExpressionInfoContext.arcade&&this._context.featureExpressionInfoContext.arcade.modules||null;return new i(r,t||this,o,e.layer,a)}get complexity(){return m(this.symbolLayers.map((e=>r(e,"complexity"))))}globalPropertyChanged(e,t){const r=this.symbolLayers.length;for(let o=0;o<r;o++){const r=this.symbolLayers[o],a=e=>{const t=e.graphics[o];return t instanceof n?t:null};if(s(r)&&!r.globalPropertyChanged(e,t,a))return!1}return!0}applyRendererDiff(e,t){return this.loadStatus!==c.LOADED?l.Recreate_Symbol:this.symbolLayers.reduce(((r,o)=>r!==l.Recreate_Symbol&&s(o)?Math.min(r,o.applyRendererDiff(e,t)):r),l.Fast_Update)}prepareSymbolPatch(e){if(this.loadStatus===c.FAILED)return;if("partial"!==e.diff.type)return;const r=e.diff.diff;if(!r.symbolLayers||"partial"!==r.symbolLayers.type)return;const o=r.symbolLayers.diff;this.symbolLayers.forEach(((r,a)=>{if(t(r))return;const i=o[a];if(i){const t={diff:i,graphics3DGraphicPatches:[],symbolLayerStatePatches:[]};r.prepareSymbolLayerPatch(t),e.symbolStatePatches.push(...t.symbolLayerStatePatches),t.graphics3DGraphicPatches.length&&e.graphics3DGraphicPatches.push(((e,r)=>{const o=e.graphics[a];s(o)&&t.graphics3DGraphicPatches.forEach((e=>e(o,r)))}))}}))}updateGeometry(e,s){for(let r=0;r<this.symbolLayers.length;r++){const o=this.symbolLayers[r];if(t(o))continue;const a=e.graphics[r];if(t(a)||!o.updateGeometry(a,s))return!1}return!0}onRemoveGraphic(e){for(let r=0;r<this.symbolLayers.length;r++){const o=this.symbolLayers[r];if(t(o))continue;const a=e.graphics[r];s(a)&&o.onRemoveGraphic(a)}}getFastUpdateStatus(){let e=0,s=0,r=0;return this.symbolLayers.forEach((o=>{t(o)||(o.loadStatus===c.LOADING?e++:o.isFastUpdatesEnabled()?r++:s++)})),{loading:e,slow:s,fast:r}}destroy(){if(this.destroyed)console.error("Graphics3DSymbol.destroy called when already destroyed!");else{super.destroy();for(const e of this.symbolLayers)s(e)&&e.destroy();this.symbolLayers.length=0,this._destroyed=!0}}get destroyed(){return this._destroyed}}const p={renderPriority:0,renderPriorityStep:1,ignoreDrivers:!1};export{d as default};
|
|
@@ -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"../../../../core/has.js";import t from"../../../../core/Logger.js";import{isSome as i,unwrap as o,unwrapOr as r}from"../../../../core/maybe.js";import{O as n}from"../../../../chunks/vec3f64.js";import{f as s}from"../../../../chunks/vec4f64.js";import{SymbolUpdateType as a}from"./elevationAlignmentUtils.js";import{ElevationContext as l}from"./ElevationContext.js";import{zeroContext as p}from"./featureExpressionInfoUtils.js";import{mixinColorAndOpacity as
|
|
5
|
+
import e from"../../../../Color.js";import"../../../../core/has.js";import t from"../../../../core/Logger.js";import{isSome as i,unwrap as o,unwrapOr as r}from"../../../../core/maybe.js";import{O as n}from"../../../../chunks/vec3f64.js";import{f as s}from"../../../../chunks/vec4f64.js";import{SymbolUpdateType as a}from"./elevationAlignmentUtils.js";import{ElevationContext as l}from"./ElevationContext.js";import{zeroContext as p}from"./featureExpressionInfoUtils.js";import{mixinColorAndOpacity as c}from"./graphicUtils.js";import{ApplyRendererDiffResult as d}from"./interfaces.js";import{Loadable as u}from"./Loadable.js";import{defaultSymbolLayerComplexity as h}from"./symbolComplexity.js";const f=t.getLogger("esri.views.3d.layers.graphics.Graphics3DSymbolLayer");class y extends u{constructor(e,t,i,o){super(i.schedule),this._context=i,this._elevationInfoOverride=null,this._ignoreDrivers=!1,this._drivenProperties={color:!1,opacity:!1,opacityAlwaysOpaque:!0,size:!1},this.complexity=null,this.logger=f,this._elevationOptions={supportsOffsetAdjustment:!1,supportsOnTheGround:!0},this.symbol=e,this.symbolLayer=t,this._renderPriority=o.renderPriority,this._renderPriorityStep=o.renderPriorityStep,this._elevationContext=new l,this.complexity=this.computeComplexity(),this._ignoreDrivers=o.ignoreDrivers,this._ignoreDrivers||(this._drivenProperties=g(this._context.renderer)),this._updateElevationContext()}getCachedSize(){return null}get extentPadding(){return 0}_drivenPropertiesChanged(e){if(this._ignoreDrivers)return!1;const t=this._drivenProperties,i=g(e);return i.color!==t.color||i.opacity!==t.opacity||i.opacityAlwaysOpaque!==t.opacityAlwaysOpaque||i.size!==t.size}get needsDrivenTransparentPass(){return this._drivenProperties.opacity&&!this._drivenProperties.opacityAlwaysOpaque}_logGeometryCreationWarnings(e,t,i,o){const r=e.projectionSuccess,n="polygons"in e?e.polygons:null,s=`${o} geometry failed to be created`;let a=null;r?!t.length||1===t.length&&!t[0].length?a=`${s} (no ${i} were defined)`:Array.isArray(t)&&Array.isArray(t[0])?n&&0===n.length&&"rings"===i&&t.length>0&&t[0].length>2&&(a=`${s} (filled rings should use clockwise winding - try reversing the order of vertices)`):a=`${s} (${i} should be defined as a 2D array)`:a=`${s} (failed to project geometry to view spatial reference)`,a&&f.warnOncePerTick(a)}_validateGeometry(e,t=null,o=null){if(i(t)&&!t.includes(e.type))return this.logger.warn("unsupported geometry type for "+o+` symbol: ${e.type}`),!1;if("point"===e.type){const t=e;if(!isFinite(t.x)||!isFinite(t.y))return f.warn("point coordinate is not a valid number, graphic skipped"),!1}return!0}_defaultElevationInfoNoZ(){return m}_defaultElevationInfoZ(){return _}_updateElevationContext(){i(this._elevationInfoOverride)?(this._elevationContext.setFromElevationInfo(this._elevationInfoOverride),this._elevationContext.updateFeatureExpressionInfoContext(null)):this._context.layer.elevationInfo?(this._elevationContext.setFromElevationInfo(this._context.layer.elevationInfo),this._elevationContext.updateFeatureExpressionInfoContext(this._context.featureExpressionInfoContext)):this._elevationContext.reset()}getDefaultElevationInfo(e){return e.hasZ?this._defaultElevationInfoZ():this._defaultElevationInfoNoZ()}getGeometryElevationMode(e,t=this.getDefaultElevationInfo(e)){return this._elevationContext.mode||t.mode}setElevationInfoOverride(e){this._elevationInfoOverride=e,this._updateElevationContext()}setGraphicElevationContext(e,t){const i=o(e.geometry),n=this.getDefaultElevationInfo(i);t.unit=null!=this._elevationContext.unit?this._elevationContext.unit:n.unit,t.mode=this.getGeometryElevationMode(i,n),t.offsetMeters=r(this._elevationContext.meterUnitOffset,r(n.offset,0));const s=!this._elevationOptions.supportsOnTheGround&&"on-the-ground"===t.mode;s&&(t.mode="relative-to-ground",t.offsetMeters=0);const a=s?p:this._elevationContext.featureExpressionInfoContext;return t.updateFeatureExpressionInfoContext(a,e,this._context.layer),t}prepareSymbolLayerPatch(e){}updateGeometry(e,t){return!1}onRemoveGraphic(e){}_getLayerOpacity(){if(this._context.graphicsCoreOwner&&"fullOpacity"in this._context.graphicsCoreOwner)return this._context.graphicsCoreOwner.fullOpacity;const e=this._context.layer.opacity;return null==e?1:e}_getCombinedOpacity(e,t=x){let o=1;return this.draped||(o*=this._getLayerOpacity()),this._drivenProperties.opacity||(i(e)?o*=e.a:t.hasIntrinsicColor||(o=0)),o}_getCombinedOpacityAndColor(t,o=x){const r=this._getCombinedOpacity(t,o);if(this._drivenProperties.color)return c(null,r);const s=i(t)?e.toUnitRGB(t):n;return c(s,r)}_getVertexOpacityAndColor(e,t=null){const o=this._drivenProperties.color?e.color:null,r=this._drivenProperties.opacity?e.opacity:null,n=c(o,r);return i(t)&&(n[0]*=t,n[1]*=t,n[2]*=t,n[3]*=t),n}isFastUpdatesEnabled(){return this._fastUpdates&&this._fastUpdates.enabled}computeComplexity(){return h(this.symbol,this.symbolLayer)}globalPropertyChanged(e,t,i){switch(e){case"opacity":return this.layerOpacityChanged(t,i);case"elevationInfo":{const e=this._elevationContext.mode;this._updateElevationContext();return this.layerElevationInfoChanged(t,i,e)!==a.RECREATE}case"slicePlaneEnabled":return this.slicePlaneEnabledChanged(t,i);case"physicalBasedRenderingEnabled":return this.physicalBasedRenderingChanged();case"pixelRatio":return this.pixelRatioChanged();default:return!1}}updateGraphics3DGraphicElevationInfo(e,t,o){let r=a.UPDATE;return e.forEach((e=>{const n=t(e);if(i(n)){const t=e.graphic;this.setGraphicElevationContext(t,n.elevationContext),n.needsElevationUpdates=o(n.elevationContext.mode)}else r=a.RECREATE})),r}applyRendererDiff(e,t){return d.Recreate_Symbol}getFastUpdateAttrValues(e){if(!this._fastUpdates.enabled)return null;const t=this._fastUpdates.visualVariables,i=t.size?v(t.size.field,e):0,o=t.color?v(t.color.field,e):0,r=t.opacity?v(t.opacity.field,e):0;return s(i,o,r,0)}get draped(){return this._draped}ensureDrapedStatus(e){return null==this._draped?(this._draped=e,!0):(e!==this.draped&&f.warnOnce("A symbol can only produce either draped or non-draped visualizations. Use two separate symbol instances for draped and non-draped graphics if necessary."),!1)}test(){const e=()=>({size:this._fastUpdates?.visualVariables?.size?.field??null,color:this._fastUpdates?.visualVariables?.color?.field??null,opacity:this._fastUpdates?.visualVariables?.opacity?.field??null,rotation:this._fastUpdates?.visualVariables?.rotation?.field??null});return{drivenProperties:this._drivenProperties,getVisVarFields:e}}}function v(e,t){const i=null!=e?t.attributes[e]:0;return null!=i&&isFinite(i)?i:0}function g(e){const t={color:!1,opacity:!1,opacityAlwaysOpaque:!0,size:!1};return e&&"visualVariables"in e&&e.visualVariables&&e.visualVariables.forEach((e=>{switch(e.type){case"color":if(t.color=!0,e.stops)for(let i=0;i<e.stops.length;i++){const o=e.stops[i].color;o&&(t.opacity=!0,o.a<1&&(t.opacityAlwaysOpaque=!1))}break;case"opacity":t.opacity=!0,t.opacityAlwaysOpaque=!1;break;case"size":t.size=!0}})),t}const m={mode:"on-the-ground",offset:0,unit:"meters"},_={mode:"absolute-height",offset:0,unit:"meters"},x={hasIntrinsicColor:!1};export{y as Graphics3DSymbolLayer,v as getAttributeValue};
|
|
@@ -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{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Handles.js";import{someMap as i}from"../../../../core/MapUtils.js";import{isSome as s}from"../../../../core/maybe.js";import{watch as r,initial as a}from"../../../../core/reactiveUtils.js";import"../../../../core/Logger.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/set.js";import{subclass as
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Handles.js";import{someMap as i}from"../../../../core/MapUtils.js";import{isSome as s}from"../../../../core/maybe.js";import{watch as r,initial as a}from"../../../../core/reactiveUtils.js";import"../../../../core/Logger.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/set.js";import{subclass as o}from"../../../../core/accessorSupport/decorators/subclass.js";import{t as n}from"../../../../chunks/boundedPlane.js";import{Deconflictor as c,DeconflictorViewState as h,DeconflictorGraphic as l}from"./Deconflictor.js";import{VisibilityGroup as p,VisibilityFlag as d}from"./enums.js";import{LabelDeconflictor as u}from"./LabelDeconflictor.js";import{TaskPriority as m}from"../../../support/Scheduler.js";let _=class extends c{constructor(){super(...arguments),this._handles=new t,this._contexts=new Map,this._viewState=new h,this.visibilityGroup=p.GRAPHIC,this._iconMarginFactor=-.1}get labels(){return this._labels}get viewState(){return this._viewState}initialize(){this._handles.add([r((()=>this.view?.state?.camera),(()=>{this._updateViewState(),this.setDirty()})),r((()=>this.view?.map?.ground?.opacity),((e,t)=>{1!==e&&1!==t||this.setDirty()})),r((()=>this.view?.slicePlane),(()=>{this._updateSlicePlane(),this._slicePlaneChanged()}),a)]),this._frameTask=this.view.resourceController.scheduler.registerTask(m.GRAPHICS_DECONFLICTOR,this),this._labels=new u({view:this.view,parent:this})}destroy(){this._labels.destroy(),this._labels=null,this._handles.destroy(),this._handles=null,this._frameTask&&(this._frameTask.remove(),this._frameTask=null)}get iconMarginFactor(){return this._iconMarginFactor}set iconMarginFactor(e){this._iconMarginFactor=e,this.setDirty()}setDirty(){this._contexts.size>0&&(super.setDirty(),this._labels.setDirty())}runTask(e){super.runTask(e),this.running||this._labels.setDirty()}setInitialIconVisibilityFlag(e,t){const i=!(this._graphicSupportsDeconfliction(t)&&g(e));t.setVisibilityFlag(d.DECONFLICTION,i,p.GRAPHIC)}_updateViewState(){this.view&&this.view.state&&(this._viewState.camera.copyFrom(this.view.state.camera),this._updateSlicePlane())}_updateSlicePlane(){const e=this.view?this.view.slicePlane:null;s(e)&&n(e,this._viewState.camera.viewMatrix,this._viewState.slicePlane),this._viewState.slicePlaneEnabled=s(e)}_slicePlaneChanged(){i(this._contexts,((e,t)=>t.symbolCreationContext.slicePlaneEnabled))&&this.setDirty()}addGraphicsOwner(e){let t=this._contexts.get(e);return null==t&&(t=new Map,this._contexts.set(e,t),this.setDirty()),{addGraphic:i=>this._addGraphic(e,t,i),removeGraphic:e=>this._removeGraphic(t,e),labelingInfoChange:()=>this._labels.enabledChanged(e,t),featureReductionChange:()=>this.enabledChanged(e,t),slicePlaneEnabledChange:()=>this._slicePlaneEnabledChanged(e,t),clear:()=>t.forEach((e=>this._removeGraphic(t,e.graphics3DGraphic)))}}removeGraphicsOwner(e){const t=this._contexts.get(e);t&&(t.forEach((e=>this._removeGraphic(t,e.graphics3DGraphic))),this._contexts.delete(e),this.setDirty())}_addGraphic(e,t,i){const s=i.graphic.uid,r=new l(i,e.symbolCreationContext.slicePlaneEnabled);t.set(s,r),g(e)&&this.addToActiveGraphics(r),e.labelsEnabled&&this._labels.addToActiveGraphics(r)}_removeGraphic(e,t){const i=t.graphic.uid,s=e.get(i);s&&(this.removeFromActiveGraphics(s),this._labels.removeFromActiveGraphics(s),e.delete(i),this.setDirty())}enabledChanged(e,t){const i=g(e);i||f(e),this.modifyGraphics(t,i)}_slicePlaneEnabledChanged(e,t){const i=e.symbolCreationContext.slicePlaneEnabled;t.forEach((e=>e.slicePlaneEnabled=i)),this.setDirty()}getGraphicsLayers(e){return e.graphics}_graphicSupportsDeconfliction(e){if(e.isDraped)return!1;const t=e.graphics;if(!t||!t.length)return!1;for(const i of t)if(this.layerSupportsDeconfliction(i))return!0;return!1}};function g(e){const t=e.layer;return!(!t||!t.featureReduction||"selection"!==t.featureReduction.type)}function f(e){const t=e.graphics3DGraphics;t&&t.forEach((e=>e.clearVisibilityFlag(d.DECONFLICTION)))}_=e([o("esri.views.3d.layers.graphics.GraphicsDeconflictor")],_);export{_ as GraphicsDeconflictor};
|
|
@@ -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{_ as t}from"../../../../chunks/tslib.es6.js";import i from"../../../../Graphic.js";import e from"../../../../core/Collection.js";import{HandleOwner as s}from"../../../../core/HandleOwner.js";import{makeHandle as r}from"../../../../core/handleUtils.js";import{isSome as n,destroyMaybe as o,isNone as a}from"../../../../core/maybe.js";import{isAbortError as l}from"../../../../core/promiseUtils.js";import{watch as p,sync as c,syncAndInitial as h}from"../../../../core/reactiveUtils.js";import{property as u}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as d}from"../../../../core/accessorSupport/decorators/subclass.js";import{diff as y}from"../../../../core/accessorSupport/diffUtils.js";import g from"../../../../layers/Layer.js";import{hydrateGraphic as m}from"../../../../layers/graphics/hydratedFeatures.js";import{getRenderingInfo as f,getRenderingInfoAsync as b}from"../../../../renderers/support/renderingInfoUtils.js";import
|
|
5
|
+
import{_ as t}from"../../../../chunks/tslib.es6.js";import i from"../../../../Graphic.js";import e from"../../../../core/Collection.js";import{HandleOwner as s}from"../../../../core/HandleOwner.js";import{makeHandle as r}from"../../../../core/handleUtils.js";import{isSome as n,destroyMaybe as o,isNone as a}from"../../../../core/maybe.js";import{isAbortError as l}from"../../../../core/promiseUtils.js";import{watch as p,sync as c,syncAndInitial as h}from"../../../../core/reactiveUtils.js";import{property as u}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as d}from"../../../../core/accessorSupport/decorators/subclass.js";import{diff as y}from"../../../../core/accessorSupport/diffUtils.js";import g from"../../../../layers/Layer.js";import{hydrateGraphic as m}from"../../../../layers/graphics/hydratedFeatures.js";import{getRenderingInfo as f,getRenderingInfoAsync as b}from"../../../../renderers/support/renderingInfoUtils.js";import j from"../../../../rest/support/Query.js";import{DrapeSourceType as C}from"../interfaces.js";import{SUSPEND_RESUME_EXTENT_OPTIMISM as S}from"./constants.js";import{Graphics3DCore as V}from"./Graphics3DCore.js";import v from"./Graphics3DElevationAlignment.js";import w from"./Graphics3DFrustumVisibility.js";import{Graphics3DObjectStates as G}from"./Graphics3DObjectStates.js";import E from"./Graphics3DScaleVisibility.js";import{enlargeExtent as x}from"./graphicUtils.js";import{UpdatePolicy as O,Object3DState as A}from"../../webgl-engine/lib/basicInterfaces.js";let _=class extends s{constructor(t){super(t),this.type="graphics-3d",this.graphicsCore=null,this.elevationAlignment=new v,this.drapeSourceType=C.Features,this._suspendResumeExtent=null}normalizeCtorArgs(t){const i={...t,scaleVisibility:null,frustumVisibility:null};return delete i.scaleVisibilityEnabled,delete i.frustumVisibilityEnabled,t.scaleVisibilityEnabled&&(i.scaleVisibility=new E),t.frustumVisibilityEnabled&&(i.frustumVisibility=new w),i}initialize(){const t=new V({owner:this,layer:this.owner.layer,preferredUpdatePolicy:O.SYNC,graphicSymbolSupported:!0});this._set("graphicsCore",t);const{layer:i,scaleVisibility:e}=this;if(n(e)&&"effectiveScaleRange"in i){const t=i;this.updatingHandles.add((()=>t.effectiveScaleRange),(()=>e.layerMinMaxScaleChangeHandler()))}if("fullOpacity"in this.owner){const t=this.owner;this.updatingHandles.add((()=>t.fullOpacity),(()=>this.graphicsCore.opacityChange()))}if("elevationInfo"in i){const t=i;this.updatingHandles.add((()=>t.elevationInfo),((t,i)=>{y(t,i)&&this.updatingHandles.addPromise(this.graphicsCore.elevationInfoChange())}))}}async setup(){const t=(t,i,e)=>this.graphicsCore.spatialIndex.queryGraphicUIDsInExtent(t,i,e);if(this.elevationAlignment.setup(this,t,this.graphicsCore,this.view.elevationProvider),n(this.scaleVisibility)&&"effectiveScaleRange"in this.layer){const i=this.owner.view.basemapTerrain;this.scaleVisibility.setup(this,this.layer,t,this.graphicsCore,i)}n(this.frustumVisibility)&&this.frustumVisibility.setup(this),this._set("objectStates",new G(this.graphicsCore));try{await this.graphicsCore.setup({elevationAlignment:this.elevationAlignment,scaleVisibility:this.scaleVisibility,objectStates:this.objectStates})}catch(i){if(l(i))return;throw i}this.destroyed||(this.handles.add(p((()=>this.view.clippingArea),(()=>this._updateClippingExtent()),c)),this._updateClippingExtent(),this._setupSuspendResumeExtent(),this.graphicsCore.startCreateGraphics())}destroy(){this.handles.removeAll(),this.updatingHandles.removeAll(),this._set("elevationAlignment",o(this.elevationAlignment)),this._set("scaleVisibility",o(this.scaleVisibility)),this._set("frustumVisibility",o(this.frustumVisibility)),this._set("objectStates",o(this.objectStates)),this._set("graphicsCore",o(this.graphicsCore))}get layer(){return this.owner.layer}get view(){return this.owner.view}get scaleVisibilitySuspended(){return!(!n(this.scaleVisibility)||!this.scaleVisibility.suspended)}get frustumVisibilitySuspended(){return!(!n(this.frustumVisibility)||!this.frustumVisibility.suspended)}get suspended(){return this.owner.suspended??!1}get updating(){return!!(this.graphicsCore?.updating||n(this.scaleVisibility)&&this.scaleVisibility.updating||n(this.frustumVisibility)&&this.frustumVisibility.updating||this.updatingHandles.updating)}get graphics3DGraphics(){return this.graphicsCore?.graphics3DGraphics}get graphics3DGraphicsByObjectID(){return this.graphicsCore?.graphics3DGraphicsByObjectID}get loadedGraphics(){return this.owner.loadedGraphics}get fullOpacity(){return this.owner.fullOpacity??1}get slicePlaneEnabled(){return this.owner.slicePlaneEnabled}get updatePolicy(){return this.owner.updatePolicy}notifyGraphicGeometryChanged(t){this.graphicsCore.notifyGraphicGeometryChanged(t)}notifyGraphicVisibilityChanged(t){this.graphicsCore.notifyGraphicVisibilityChanged(t)}getRenderingInfo(t,i,e){const s=f(t,{renderer:i,arcade:e});if(n(s)&&s.color){const t=s.color;t[0]=t[0]/255,t[1]=t[1]/255,t[2]=t[2]/255}return s}getRenderingInfoAsync(t,i,e,s){return b(t,{renderer:i,arcade:e,...s})}getGraphicFromGraphicUid(t){if(this.owner.loadedGraphics){const i=this.owner.loadedGraphics.find((i=>i.uid===t));if(i){const t=this.layer instanceof g?this.layer:null;return m(i,t)}}}whenGraphicBounds(t,i){return this.graphicsCore?this.graphicsCore.whenGraphicBounds(t,i):Promise.reject()}computeAttachmentOrigin(t,i){return this.graphicsCore?this.graphicsCore.computeAttachmentOrigin(t,i):null}getSymbolLayerSize(t,i){return this.graphicsCore?this.graphicsCore.getSymbolLayerSize(t,i):null}maskOccludee(t){const{set:i,handle:e}=this.objectStates.acquireSet(A.MaskOccludee,null);return this.objectStates.setUid(i,t.uid),e}highlight(t){if(t instanceof j)return P;if("number"==typeof t)return this.highlight([t]);if(t instanceof i)return this.highlight([t]);if(t instanceof e&&(t=t.toArray()),Array.isArray(t)&&t.length>0){if(t[0]instanceof i){const i=t.map((t=>t.uid)),{set:e,handle:s}=this.objectStates.acquireSet(A.Highlight,null);return this.objectStates.setUids(e,i),s}if("number"==typeof t[0]){const i=t,{set:e,handle:s}=this.objectStates.acquireSet(A.Highlight,null);return this.objectStates.setObjectIds(e,i),s}}return P}_setupSuspendResumeExtent(){const{scaleVisibility:t,frustumVisibility:i}=this;if(a(t)&&a(i))return;const e=({computedExtent:e,extentPadding:s})=>{this._suspendResumeExtent=x(e,this._suspendResumeExtent,S,s),n(t)&&t.setExtent(this._suspendResumeExtent),n(i)&&i.setExtent(this._suspendResumeExtent)};this.handles.add(p((()=>({computedExtent:this.graphicsCore?.computedExtent,extentPadding:this.graphicsCore?.extentPadding})),(t=>e(t)),h))}_updateClippingExtent(){const t=this.view.clippingArea;this.graphicsCore.setClippingExtent(t,this.view.spatialReference)&&this.graphicsCore.recreateAllGraphics()}};t([u()],_.prototype,"type",void 0),t([u({constructOnly:!0})],_.prototype,"owner",void 0),t([u()],_.prototype,"layer",null),t([u()],_.prototype,"view",null),t([u({constructOnly:!0})],_.prototype,"graphicsCore",void 0),t([u({constructOnly:!0})],_.prototype,"scaleVisibility",void 0),t([u({constructOnly:!0})],_.prototype,"frustumVisibility",void 0),t([u({readOnly:!0})],_.prototype,"elevationAlignment",void 0),t([u({readOnly:!0})],_.prototype,"objectStates",void 0),t([u({readOnly:!0})],_.prototype,"scaleVisibilitySuspended",null),t([u({readOnly:!0})],_.prototype,"frustumVisibilitySuspended",null),t([u()],_.prototype,"suspended",null),t([u({readOnly:!0})],_.prototype,"updating",null),t([u()],_.prototype,"loadedGraphics",null),t([u()],_.prototype,"fullOpacity",null),t([u()],_.prototype,"slicePlaneEnabled",null),t([u()],_.prototype,"drapeSourceType",void 0),t([u()],_.prototype,"updatePolicy",null),_=t([d("esri.views.3d.layers.graphics.GraphicsProcessor")],_);const P=r();export{_ as GraphicsProcessor};
|
|
@@ -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{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import{forEach as s,result as l}from"../../../../core/asyncUtils.js";import i from"../../../../core/Handles.js";import a from"../../../../core/Logger.js";import{someMap as r}from"../../../../core/MapUtils.js";import{destroyMaybe as o,disposeMaybe as n,isSome as c,isNone as h,unwrap as b}from"../../../../core/maybe.js";import{throwIfAborted as d,isAbortError as p}from"../../../../core/promiseUtils.js";import{watch as u}from"../../../../core/reactiveUtils.js";import{property as g}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as y}from"../../../../core/accessorSupport/decorators/subclass.js";import{hydrateGraphic as f}from"../../../../layers/graphics/hydratedFeatures.js";import{createLabelFunction as m}from"../../../../layers/support/labelFormatUtils.js";import{areLabelsVisible as _}from"../../../../layers/support/layerUtils.js";import{hasCalloutSupport as x}from"../../../../symbols/callouts/calloutUtils.js";import{VisibilityFlag as C,VisibilityGroup as v}from"./enums.js";import{make as L}from"./Graphics3DCalloutSymbolLayerFactory.js";import T from"./Graphics3DGraphicCreationContext.js";import{getGraphics3DSymbol as G}from"./graphicSymbolUtils.js";import{get as D}from"./labelPlacement.js";import{horizontalPlacementFromAnchor as R,verticalPlacementFromAnchor as A,textRenderAlignmentFromHorizontalPlacement as w}from"./placementUtils.js";import S from"../../support/debugFlags.js";import{MaterialCollection as I}from"../../webgl-engine/lib/MaterialCollection.js";import{TextRenderer as O}from"../../webgl-engine/lib/TextRenderer.js";import{TextRenderParameters as P}from"../../webgl-engine/lib/TextRenderParameters.js";import{TextTextureAtlas as j}from"../../webgl-engine/lib/TextTextureAtlas.js";import{WebGLLayer as E}from"../../webgl-engine/lib/WebGLLayer.js";import{TaskPriority as U}from"../../../support/Scheduler.js";const V=a.getLogger("esri.views.3d.layers.graphics.Labeler");let F=class extends t{constructor(){super(...arguments),this._dirty=!1,this._labels=new Map,this._labelsToAdd=new Map,this._labelsToRemove=new Map,this._labelingContexts=new Array}setup(){this.dispose(),this._handles=new i,this._handles.add([u((()=>{var e;return null==(e=this.view.state)?void 0:e.camera}),(()=>this.setDirty())),u((()=>{var e;return null==(e=this.view.state)?void 0:e.pixelRatio}),(()=>this._resetAllLabels())),this.view.resourceController.scheduler.registerTask(U.LABELER,this)]),this._textTextureAtlas=new j({view:this.view}),this._hudMaterialCollection=new I(this.view._stage),this._calloutMaterialCollection=new I(this.view._stage)}dispose(){this._handles=o(this._handles),this._textTextureAtlas=n(this._textTextureAtlas),this._hudMaterialCollection=n(this._hudMaterialCollection),this._calloutMaterialCollection=n(this._calloutMaterialCollection),this._labelingContexts.length=0,this._labels.clear(),this._labelsToAdd.clear(),this._labelsToRemove.clear()}_activateLabelingContext(e){e.labels.forEach(((e,t)=>{this._labels.set(t,e),e.graphics3DGraphic.setVisibilityFlag(C.USER_SETTING,!0,v.LABEL)})),e.active=!0}_deactivateLabelingContext(e){e.labels.forEach(((e,t)=>{e.graphics3DGraphic.setVisibilityFlag(C.USER_SETTING,!1,v.LABEL),this.setLabelGraphicVisibility(e.graphics3DGraphic,!1),this._labels.delete(t)})),e.active=!1}_addLabelTextureToAtlas(e){for(const t of e.graphics3DGraphic.labelGraphics){if(!t._labelClass)continue;const s=e.textTextureResources.textRenderers[t._labelIndex];c(s)&&this._textTextureAtlas.addTextTexture(s,t.stageObject)}e.rendered=!0}_removeLabelTextureFromAtlas(e){for(const t of e.graphics3DGraphic.labelGraphics){if(!t._labelClass)continue;const s=e.textTextureResources.textRenderers[t._labelIndex];c(s)&&this._textTextureAtlas.removeTextTexture(s,t.stageObject)}e.rendered=!1}get running(){var e;return this.view.ready&&(this._dirty||(null==(e=this._textTextureAtlas)?void 0:e.updating)||this.deconflictor.running)}runTask(e){this._updateLabels(e),!this._dirty&&this.deconflictor.running&&this.deconflictor.runTask(e)}_updateLabels(e){if(this._dirty){this._dirty=!1;for(const t of this._labelingContexts)if(M(t)){if(!B(t)){if(k(t)){this._deactivateLabelingContext(t);continue}if(this._createLabelClassContext(t),z(t)){this._dirty=!0;continue}if(!B(t))continue}r(t.labelsToInitialize,((s,l)=>(this._ensureGraphics3DResources(s)&&(this._labels.set(l,s),this.deconflictor.setDirty(),e.madeProgress()),(s.visible&&s.textTextureResources.initialized||!s.visible&&s.hasGraphics3DResources)&&(t.labelsToInitialize.delete(l),e.madeProgress()),e.done)))&&(this._dirty=!0)}this._labelsToRemove.forEach((e=>this._removeLabelTextureFromAtlas(e))),this._labelsToAdd.forEach((e=>this._addLabelTextureToAtlas(e))),this._labelsToRemove.clear(),this._labelsToAdd.clear(),this._dirty||this.notifyChange("updating")}}async _createLabelClassContextAsync(e){const t=e.labelClassAbortController.signal;await e.layer.when(),d(t),e.scaleVisibility&&e.scaleVisibility.updateScaleRangeActive();const i=e.graphics3DCore,a=i.layer,r=a.labelingInfo&&a.labelingInfo.filter((e=>!!e.symbol));if(!r||0===r.length)return;const o=new Array(r.length);let n=!1;await s(r,(async(s,a)=>{const r=s.symbol,c=G(i.getOrCreateGraphics3DSymbol(r));if(h(c))return void V.error("Failed to create Graphics3DSymbol for label");await c.load(),d(t);let b=null;x(r)&&r.hasVisibleCallout()&&(b=L(r,i.symbolCreationContext),await b.load(),d(t));const p=await l(m(s,e.layer.fieldsIndex,this.view.spatialReference));if(d(t),!0===p.ok){const e=await this._createTextRenderParameters(c.symbol);d(t),o[a]={labelClass:s,labelFunction:p.value,graphics3DSymbol:c,graphics3DCalloutSymbolLayer:b,calloutSymbolLayerIndex:0,textRenderParameters:e}}else V.error(`Label expression failed to evaluate: ${p.error}`),n=!0})),d(t),n||(e.labelClassContexts=o)}async _createLabelClassContext(e){return e.labelClassPromise||(e.labelClassPromise=this._createLabelClassContextAsync(e).catch((t=>{if(p(t))throw t;e.labelClassContexts=null})).then((()=>{e.labelClassAbortController=null,this.notifyChange("updating")})).catch((()=>{})),this.notifyChange("updating")),e.labelClassPromise}async _createTextRenderParameters(e){const t=e.symbolLayers.getItemAt(0);return t&&"text"===t.type?P.fromSymbol(t,this.view.state.pixelRatio):null}_destroyLabelClassContext(e){for(const s of e.labelClassContexts)--s.graphics3DSymbol.referenced,s.graphics3DSymbol=null;const t=e.labelClassAbortController;e.labelClassAbortController=new AbortController,t&&t.abort(),e.labelClassContexts=[],e.labelClassPromise=null,this.notifyChange("updating")}_createTextSymbolGraphic(e,t,s,l,i){const a={text:e.text,centerOffset:s.centerOffset,translation:s.translation,elevationOffset:s.elevationOffset,screenOffset:s.screenOffset,centerOffsetUnits:s.centerOffsetUnits,horizontalPlacement:R(s.anchor),verticalPlacement:A(s.anchor),verticalOffset:s.verticalOffset,debugDrawLabelBorder:S.LABELS_SHOW_BORDER,displayWidth:e.displayWidth,displayHeight:e.displayHeight};return N.graphic=t,N.renderingInfo=null,N.layer=l,i.createLabel(N,a,this._hudMaterialCollection,this._textTextureAtlas)}_createLineCalloutGraphic(e,t,s,l,i){const a={symbol:t,translation:l.translation,elevationOffset:l.elevationOffset,screenOffset:l.screenOffset,centerOffset:l.centerOffset,centerOffsetUnits:l.centerOffsetUnits,materialCollection:this._calloutMaterialCollection};return N.graphic=e,N.renderingInfo=a,N.layer=i,s.createGraphics3DGraphic(N)}_ensureGraphics3DResources(e){if(e.hasGraphics3DResources)return!1;const t=e.graphics3DGraphic;if(t.destroyed)return!1;this._ensureTextTextureResources(e);const{textTextureResources:s}=e,l=e.labelingContext,i=l.labelClassContexts;if(!i||0===i.length||!l.emptySymbolLabelSupported&&0===t.graphics.length)return!1;let a=!1;const r=t.graphic,o=l.layer,n=_(l.layer),b=this.view._stage;for(let d=0;d<i.length;d++){const e=s.textRenderers[d],p=s.labelPlacements[d];if(h(e)||h(p))continue;const u=i[d],g=u.graphics3DSymbol,y=g.symbol&&"label-3d"===g.symbol.type?g.symbol:null,f=g.symbolLayers[0];if(!f)continue;f.setElevationInfoOverride(l.elevationInfoOverride);const m=this._createTextSymbolGraphic(e,r,p,o,f);if(!m)return!1;m._labelClass=u.labelClass,m._labelIndex=d,t.addLabelGraphic(m,b,l.stageLayer),t.setVisibilityFlag(C.USER_SETTING,n,v.LABEL),t.clearVisibilityFlag(C.SCALE_RANGE,v.LABEL),t.setVisibilityFlag(C.DECONFLICTION,!1,v.LABEL),a=!0;const _=u.graphics3DCalloutSymbolLayer;if(_&&p.hasLabelVerticalOffset){_.setElevationInfoOverride(l.elevationInfoOverride);const e=this._createLineCalloutGraphic(r,y,_,p,o);c(e)&&(u.calloutSymbolLayerIndex=t.labelGraphics.length,t.addLabelGraphic(e,b,l.stageLayer))}break}return l.scaleVisibility&&a&&l.scaleVisibility.updateGraphicLabelScaleVisibility(t),e.hasGraphics3DResources=!0,!0}_destroyGraphics3DResources(e){const t=e.labelingContext.labelClassContexts;for(const s of e.graphics3DGraphic.labelGraphics){if(null==s._labelClass)continue;const e=t[s._labelIndex].graphics3DSymbol.symbolLayers[0];null!=e&&e.onRemoveGraphic(s)}e.graphics3DGraphic.clearLabelGraphics(),e.hasGraphics3DResources=!1}_ensureTextTextureResources(e){const{textTextureResources:t}=e;if(t.initialized)return;const s=e.labelingContext,l=s.labelClassContexts;if(!l||0===l.length)return;const i=e.graphics3DGraphic.graphic;for(let r=0;r<l.length;r++){const o=l[r];if(t.textRenderers[r]=null,t.labelPlacements[r]=null,!o.textRenderParameters)continue;const n=o.labelFunction;let c;if("arcade"===n.type)try{const e=n.needsHydrationToEvaluate()?f(i,s.layer):i;c=n.evaluate(e)}catch(a){c=null}else c=n.evaluate(i);if(h(c)||""===c||/^\s+$/.test(c))continue;const b=o.graphics3DSymbol,d=b.symbol&&"label-3d"===b.symbol.type?b.symbol:null;if(!b.symbolLayers[0])continue;const p=e.graphics3DGraphic,u=o.labelClass,g=s.disablePlacement,y=D({graphics3DGraphic:p,labelSymbol:d,labelClass:u,disablePlacement:g});if(h(y))continue;const m=R(y.anchor),_=w(m);t.textRenderers[r]=new O(c,_,o.textRenderParameters),t.labelPlacements[r]=y}t.initialized=!0}_destroyTextTextureResources(e){const{textTextureResources:t}=e;t.initialized=!1,t.textRenderers=[],t.labelPlacements=[]}_addGraphic(e,t){const s={hasGraphics3DResources:!1,visible:!1,rendered:!1,labelingContext:e,graphics3DGraphic:t,textTextureResources:{initialized:!1,textRenderers:[],labelPlacements:[]}},l=t.graphic.uid;e.labels.set(l,s),e.labelsToInitialize.set(l,s),this.setDirty(),this.deconflictor.setDirty()}_removeGraphic(e,t){const s=t.graphic.uid,l=e.labels.get(s);l&&(this._destroyGraphic(l,s),e.labels.delete(s),e.labelsToInitialize.delete(s),this.setDirty(),this.deconflictor.setDirty())}_destroyGraphic(e,t){this._labels.has(t)&&(this._labels.delete(t),this._labelsToAdd.delete(t),this._labelsToRemove.delete(t)),e.textTextureResources.initialized&&(this._removeLabelTextureFromAtlas(e),this._destroyTextTextureResources(e)),e.hasGraphics3DResources&&this._destroyGraphics3DResources(e)}async _labelingInfoChange(e,t){if(!t)return this._visibilityInfoChange(e),this._resetLabels(e),this._createLabelClassContext(e);for(const s of t){const t=e.labels.get(s);t&&(this._removeGraphic(e,t.graphics3DGraphic),this._addGraphic(e,t.graphics3DGraphic))}}_globalPropertyChanged(e,t){for(const s of t.labelClassContexts){const l=new Map;t.labels.forEach((e=>{const t=e.graphics3DGraphic;l.set(t.graphic.uid,t)}));const i=e=>e.labelGraphics[0];if(b(s.graphics3DSymbol.symbolLayers[0]).globalPropertyChanged(e,l,i),s.graphics3DCalloutSymbolLayer){const t=e=>e.labelGraphics[s.calloutSymbolLayerIndex];s.graphics3DCalloutSymbolLayer.globalPropertyChanged(e,l,t)}}}_visibilityInfoChange(e){const t=e.layer.labelsVisible;t&&!e.active&&this._activateLabelingContext(e),!t&&e.active&&this._deactivateLabelingContext(e),this.setDirty()}_resetAllLabels(){for(const e of this._labelingContexts)this._resetLabels(e)}_resetLabels(e){e.labels.forEach(((t,s)=>{this._destroyGraphic(t,s),t.visible=!1,t.rendered=!1,e.labelsToInitialize.set(s,t)})),this._destroyLabelClassContext(e),this.setDirty(),this.deconflictor.setDirty()}_findLabelingContext(e){for(const t of this._labelingContexts)if(t.graphics3DCore===e)return t;return null}addGraphicsOwner(e,t,s){const l=s&&s.emptySymbolLabelSupported||!1,i=s&&s.elevationInfoOverride||null,a=s&&s.disablePlacement||null;if(this._findLabelingContext(e))return;const r=e.layer,o={graphics3DCore:e,layer:r,scaleVisibility:t,emptySymbolLabelSupported:l,elevationInfoOverride:i,disablePlacement:a,active:r.labelsVisible,labelClassPromise:null,labelClassAbortController:new AbortController,labelClassContexts:[],labels:new Map,labelsToInitialize:new Map,stageLayer:new E({isPickable:!0},r.uid)};return this.view._stage.add(o.stageLayer),this._labelingContexts.push(o),this.setDirty(),{addGraphic:e=>this._addGraphic(o,e),removeGraphic:e=>this._removeGraphic(o,e),featureReductionChange:()=>{},layerLabelsEnabled:()=>_(o.layer),labelingInfoChange:e=>this._labelingInfoChange(o,e),elevationInfoChange:()=>this._globalPropertyChanged("elevationInfo",o),slicePlaneEnabledChange:()=>this._globalPropertyChanged("slicePlaneEnabled",o),visibilityInfoChange:()=>this._visibilityInfoChange(o),reset:()=>this._resetLabels(o),clear:()=>{}}}removeGraphicsOwner(e){const t=this._findLabelingContext(e);if(!t)return;const s=this._labelingContexts.indexOf(t);this._labelingContexts.splice(s,1),t.labels.forEach((e=>this._removeGraphic(t,e.graphics3DGraphic))),this.view._stage.remove(t.stageLayer),t.stageLayer=null,this.setDirty()}setLabelGraphicVisibility(e,t){const s=e.graphic.uid,l=this._labels.get(s);l&&l.visible!==t&&(t&&!l.rendered?(this._labelsToAdd.set(s,l),this._labelsToRemove.delete(s),l.textTextureResources.initialized||l.labelingContext.labelsToInitialize.set(s,l)):!t&&l.rendered&&(this._labelsToRemove.set(s,l),this._labelsToAdd.delete(s)),l.visible=t,this.setDirty())}setDirty(){!this._dirty&&this._labelingContexts.length>0&&(this._dirty=!0,this.notifyChange("updating"))}get updating(){var e;return this._dirty||(null==(e=this._textTextureAtlas)?void 0:e.updating)||this.deconflictor.updating||this._labelingContexts.some((e=>z(e)))}get updatingProgress(){if(!this.updating||!this._textTextureAtlas)return 1;const e=this._labelingContexts.length>0?this._labelingContexts.reduce(((e,t)=>e+(z(t)?0:1)),0)/this._labelingContexts.length:1;return(this._dirty?0:.3)+(this._textTextureAtlas.updating?0:.1)+.1*e+.5*this.deconflictor.updatingProgress}get test(){return{textTextureAtlas:this._textTextureAtlas,resetAllLabels:()=>this._resetAllLabels()}}};function M(e){return e.active&&_(e.layer)}function z(e){return e.labelClassPromise&&!!e.labelClassAbortController}function B(e){return e.labelClassContexts&&e.labelClassContexts.length}function k(e){return null===e.labelClassContexts}e([g({constructOnly:!0})],F.prototype,"view",void 0),e([g({constructOnly:!0})],F.prototype,"deconflictor",void 0),e([g()],F.prototype,"_textTextureAtlas",void 0),e([g({type:Boolean,readOnly:!0})],F.prototype,"updating",null),F=e([y("esri.views.3d.layers.graphics.Labeler")],F);const N=new T(null,null,null);export{F as Labeler};
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import{forEach as s,result as l}from"../../../../core/asyncUtils.js";import i from"../../../../core/Handles.js";import a from"../../../../core/Logger.js";import{someMap as r}from"../../../../core/MapUtils.js";import{destroyMaybe as o,disposeMaybe as n,isSome as c,isNone as h,unwrap as b}from"../../../../core/maybe.js";import{throwIfAborted as d,isAbortError as p}from"../../../../core/promiseUtils.js";import{watch as u}from"../../../../core/reactiveUtils.js";import{property as g}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as y}from"../../../../core/accessorSupport/decorators/subclass.js";import{hydrateGraphic as f}from"../../../../layers/graphics/hydratedFeatures.js";import{createLabelFunction as m}from"../../../../layers/support/labelFormatUtils.js";import{areLabelsVisible as _}from"../../../../layers/support/layerUtils.js";import{hasCalloutSupport as x}from"../../../../symbols/callouts/calloutUtils.js";import{VisibilityFlag as C,VisibilityGroup as v}from"./enums.js";import{make as L}from"./Graphics3DCalloutSymbolLayerFactory.js";import T from"./Graphics3DGraphicCreationContext.js";import{getGraphics3DSymbol as G}from"./graphicSymbolUtils.js";import{get as D}from"./labelPlacement.js";import{horizontalPlacementFromAnchor as R,verticalPlacementFromAnchor as A,textRenderAlignmentFromHorizontalPlacement as w}from"./placementUtils.js";import S from"../../support/debugFlags.js";import{MaterialCollection as I}from"../../webgl-engine/lib/MaterialCollection.js";import{TextRenderer as O}from"../../webgl-engine/lib/TextRenderer.js";import{TextRenderParameters as P}from"../../webgl-engine/lib/TextRenderParameters.js";import{TextTextureAtlas as j}from"../../webgl-engine/lib/TextTextureAtlas.js";import{WebGLLayer as E}from"../../webgl-engine/lib/WebGLLayer.js";import{TaskPriority as U}from"../../../support/Scheduler.js";const V=a.getLogger("esri.views.3d.layers.graphics.Labeler");let F=class extends t{constructor(){super(...arguments),this._dirty=!1,this._labels=new Map,this._labelsToAdd=new Map,this._labelsToRemove=new Map,this._labelingContexts=new Array}setup(){this.dispose(),this._handles=new i,this._handles.add([u((()=>this.view.state?.camera),(()=>this.setDirty())),u((()=>this.view.state?.pixelRatio),(()=>this._resetAllLabels())),this.view.resourceController.scheduler.registerTask(U.LABELER,this)]),this._textTextureAtlas=new j({view:this.view}),this._hudMaterialCollection=new I(this.view._stage),this._calloutMaterialCollection=new I(this.view._stage)}dispose(){this._handles=o(this._handles),this._textTextureAtlas=n(this._textTextureAtlas),this._hudMaterialCollection=n(this._hudMaterialCollection),this._calloutMaterialCollection=n(this._calloutMaterialCollection),this._labelingContexts.length=0,this._labels.clear(),this._labelsToAdd.clear(),this._labelsToRemove.clear()}_activateLabelingContext(e){e.labels.forEach(((e,t)=>{this._labels.set(t,e),e.graphics3DGraphic.setVisibilityFlag(C.USER_SETTING,!0,v.LABEL)})),e.active=!0}_deactivateLabelingContext(e){e.labels.forEach(((e,t)=>{e.graphics3DGraphic.setVisibilityFlag(C.USER_SETTING,!1,v.LABEL),this.setLabelGraphicVisibility(e.graphics3DGraphic,!1),this._labels.delete(t)})),e.active=!1}_addLabelTextureToAtlas(e){for(const t of e.graphics3DGraphic.labelGraphics){if(!t._labelClass)continue;const s=e.textTextureResources.textRenderers[t._labelIndex];c(s)&&this._textTextureAtlas.addTextTexture(s,t.stageObject)}e.rendered=!0}_removeLabelTextureFromAtlas(e){for(const t of e.graphics3DGraphic.labelGraphics){if(!t._labelClass)continue;const s=e.textTextureResources.textRenderers[t._labelIndex];c(s)&&this._textTextureAtlas.removeTextTexture(s,t.stageObject)}e.rendered=!1}get running(){return this.view.ready&&(this._dirty||this._textTextureAtlas?.updating||this.deconflictor.running)}runTask(e){this._updateLabels(e),!this._dirty&&this.deconflictor.running&&this.deconflictor.runTask(e)}_updateLabels(e){if(this._dirty){this._dirty=!1;for(const t of this._labelingContexts)if(M(t)){if(!B(t)){if(k(t)){this._deactivateLabelingContext(t);continue}if(this._createLabelClassContext(t),z(t)){this._dirty=!0;continue}if(!B(t))continue}r(t.labelsToInitialize,((s,l)=>(this._ensureGraphics3DResources(s)&&(this._labels.set(l,s),this.deconflictor.setDirty(),e.madeProgress()),(s.visible&&s.textTextureResources.initialized||!s.visible&&s.hasGraphics3DResources)&&(t.labelsToInitialize.delete(l),e.madeProgress()),e.done)))&&(this._dirty=!0)}this._labelsToRemove.forEach((e=>this._removeLabelTextureFromAtlas(e))),this._labelsToAdd.forEach((e=>this._addLabelTextureToAtlas(e))),this._labelsToRemove.clear(),this._labelsToAdd.clear(),this._dirty||this.notifyChange("updating")}}async _createLabelClassContextAsync(e){const t=e.labelClassAbortController.signal;await e.layer.when(),d(t),e.scaleVisibility&&e.scaleVisibility.updateScaleRangeActive();const i=e.graphics3DCore,a=i.layer,r=a.labelingInfo&&a.labelingInfo.filter((e=>!!e.symbol));if(!r||0===r.length)return;const o=new Array(r.length);let n=!1;await s(r,(async(s,a)=>{const r=s.symbol,c=G(i.getOrCreateGraphics3DSymbol(r));if(h(c))return void V.error("Failed to create Graphics3DSymbol for label");await c.load(),d(t);let b=null;x(r)&&r.hasVisibleCallout()&&(b=L(r,i.symbolCreationContext),await b.load(),d(t));const p=await l(m(s,e.layer.fieldsIndex,this.view.spatialReference));if(d(t),!0===p.ok){const e=await this._createTextRenderParameters(c.symbol);d(t),o[a]={labelClass:s,labelFunction:p.value,graphics3DSymbol:c,graphics3DCalloutSymbolLayer:b,calloutSymbolLayerIndex:0,textRenderParameters:e}}else V.error(`Label expression failed to evaluate: ${p.error}`),n=!0})),d(t),n||(e.labelClassContexts=o)}async _createLabelClassContext(e){return e.labelClassPromise||(e.labelClassPromise=this._createLabelClassContextAsync(e).catch((t=>{if(p(t))throw t;e.labelClassContexts=null})).then((()=>{e.labelClassAbortController=null,this.notifyChange("updating")})).catch((()=>{})),this.notifyChange("updating")),e.labelClassPromise}async _createTextRenderParameters(e){const t=e.symbolLayers.getItemAt(0);return t&&"text"===t.type?P.fromSymbol(t,this.view.state.pixelRatio):null}_destroyLabelClassContext(e){for(const s of e.labelClassContexts)--s.graphics3DSymbol.referenced,s.graphics3DSymbol=null;const t=e.labelClassAbortController;e.labelClassAbortController=new AbortController,t&&t.abort(),e.labelClassContexts=[],e.labelClassPromise=null,this.notifyChange("updating")}_createTextSymbolGraphic(e,t,s,l,i){const a={text:e.text,centerOffset:s.centerOffset,translation:s.translation,elevationOffset:s.elevationOffset,screenOffset:s.screenOffset,centerOffsetUnits:s.centerOffsetUnits,horizontalPlacement:R(s.anchor),verticalPlacement:A(s.anchor),verticalOffset:s.verticalOffset,debugDrawLabelBorder:S.LABELS_SHOW_BORDER,displayWidth:e.displayWidth,displayHeight:e.displayHeight};return N.graphic=t,N.renderingInfo=null,N.layer=l,i.createLabel(N,a,this._hudMaterialCollection,this._textTextureAtlas)}_createLineCalloutGraphic(e,t,s,l,i){const a={symbol:t,translation:l.translation,elevationOffset:l.elevationOffset,screenOffset:l.screenOffset,centerOffset:l.centerOffset,centerOffsetUnits:l.centerOffsetUnits,materialCollection:this._calloutMaterialCollection};return N.graphic=e,N.renderingInfo=a,N.layer=i,s.createGraphics3DGraphic(N)}_ensureGraphics3DResources(e){if(e.hasGraphics3DResources)return!1;const t=e.graphics3DGraphic;if(t.destroyed)return!1;this._ensureTextTextureResources(e);const{textTextureResources:s}=e,l=e.labelingContext,i=l.labelClassContexts;if(!i||0===i.length||!l.emptySymbolLabelSupported&&0===t.graphics.length)return!1;let a=!1;const r=t.graphic,o=l.layer,n=_(l.layer),b=this.view._stage;for(let d=0;d<i.length;d++){const e=s.textRenderers[d],p=s.labelPlacements[d];if(h(e)||h(p))continue;const u=i[d],g=u.graphics3DSymbol,y=g.symbol&&"label-3d"===g.symbol.type?g.symbol:null,f=g.symbolLayers[0];if(!f)continue;f.setElevationInfoOverride(l.elevationInfoOverride);const m=this._createTextSymbolGraphic(e,r,p,o,f);if(!m)return!1;m._labelClass=u.labelClass,m._labelIndex=d,t.addLabelGraphic(m,b,l.stageLayer),t.setVisibilityFlag(C.USER_SETTING,n,v.LABEL),t.clearVisibilityFlag(C.SCALE_RANGE,v.LABEL),t.setVisibilityFlag(C.DECONFLICTION,!1,v.LABEL),a=!0;const _=u.graphics3DCalloutSymbolLayer;if(_&&p.hasLabelVerticalOffset){_.setElevationInfoOverride(l.elevationInfoOverride);const e=this._createLineCalloutGraphic(r,y,_,p,o);c(e)&&(u.calloutSymbolLayerIndex=t.labelGraphics.length,t.addLabelGraphic(e,b,l.stageLayer))}break}return l.scaleVisibility&&a&&l.scaleVisibility.updateGraphicLabelScaleVisibility(t),e.hasGraphics3DResources=!0,!0}_destroyGraphics3DResources(e){const t=e.labelingContext.labelClassContexts;for(const s of e.graphics3DGraphic.labelGraphics){if(null==s._labelClass)continue;const e=t[s._labelIndex].graphics3DSymbol.symbolLayers[0];null!=e&&e.onRemoveGraphic(s)}e.graphics3DGraphic.clearLabelGraphics(),e.hasGraphics3DResources=!1}_ensureTextTextureResources(e){const{textTextureResources:t}=e;if(t.initialized)return;const s=e.labelingContext,l=s.labelClassContexts;if(!l||0===l.length)return;const i=e.graphics3DGraphic.graphic;for(let r=0;r<l.length;r++){const o=l[r];if(t.textRenderers[r]=null,t.labelPlacements[r]=null,!o.textRenderParameters)continue;const n=o.labelFunction;let c;if("arcade"===n.type)try{const e=n.needsHydrationToEvaluate()?f(i,s.layer):i;c=n.evaluate(e)}catch(a){c=null}else c=n.evaluate(i);if(h(c)||""===c||/^\s+$/.test(c))continue;const b=o.graphics3DSymbol,d=b.symbol&&"label-3d"===b.symbol.type?b.symbol:null;if(!b.symbolLayers[0])continue;const p=e.graphics3DGraphic,u=o.labelClass,g=s.disablePlacement,y=D({graphics3DGraphic:p,labelSymbol:d,labelClass:u,disablePlacement:g});if(h(y))continue;const m=R(y.anchor),_=w(m);t.textRenderers[r]=new O(c,_,o.textRenderParameters),t.labelPlacements[r]=y}t.initialized=!0}_destroyTextTextureResources(e){const{textTextureResources:t}=e;t.initialized=!1,t.textRenderers=[],t.labelPlacements=[]}_addGraphic(e,t){const s={hasGraphics3DResources:!1,visible:!1,rendered:!1,labelingContext:e,graphics3DGraphic:t,textTextureResources:{initialized:!1,textRenderers:[],labelPlacements:[]}},l=t.graphic.uid;e.labels.set(l,s),e.labelsToInitialize.set(l,s),this.setDirty(),this.deconflictor.setDirty()}_removeGraphic(e,t){const s=t.graphic.uid,l=e.labels.get(s);l&&(this._destroyGraphic(l,s),e.labels.delete(s),e.labelsToInitialize.delete(s),this.setDirty(),this.deconflictor.setDirty())}_destroyGraphic(e,t){this._labels.has(t)&&(this._labels.delete(t),this._labelsToAdd.delete(t),this._labelsToRemove.delete(t)),e.textTextureResources.initialized&&(this._removeLabelTextureFromAtlas(e),this._destroyTextTextureResources(e)),e.hasGraphics3DResources&&this._destroyGraphics3DResources(e)}async _labelingInfoChange(e,t){if(!t)return this._visibilityInfoChange(e),this._resetLabels(e),this._createLabelClassContext(e);for(const s of t){const t=e.labels.get(s);t&&(this._removeGraphic(e,t.graphics3DGraphic),this._addGraphic(e,t.graphics3DGraphic))}}_globalPropertyChanged(e,t){for(const s of t.labelClassContexts){const l=new Map;t.labels.forEach((e=>{const t=e.graphics3DGraphic;l.set(t.graphic.uid,t)}));const i=e=>e.labelGraphics[0];if(b(s.graphics3DSymbol.symbolLayers[0]).globalPropertyChanged(e,l,i),s.graphics3DCalloutSymbolLayer){const t=e=>e.labelGraphics[s.calloutSymbolLayerIndex];s.graphics3DCalloutSymbolLayer.globalPropertyChanged(e,l,t)}}}_visibilityInfoChange(e){const t=e.layer.labelsVisible;t&&!e.active&&this._activateLabelingContext(e),!t&&e.active&&this._deactivateLabelingContext(e),this.setDirty()}_resetAllLabels(){for(const e of this._labelingContexts)this._resetLabels(e)}_resetLabels(e){e.labels.forEach(((t,s)=>{this._destroyGraphic(t,s),t.visible=!1,t.rendered=!1,e.labelsToInitialize.set(s,t)})),this._destroyLabelClassContext(e),this.setDirty(),this.deconflictor.setDirty()}_findLabelingContext(e){for(const t of this._labelingContexts)if(t.graphics3DCore===e)return t;return null}addGraphicsOwner(e,t,s){const l=s&&s.emptySymbolLabelSupported||!1,i=s&&s.elevationInfoOverride||null,a=s&&s.disablePlacement||null;if(this._findLabelingContext(e))return;const r=e.layer,o={graphics3DCore:e,layer:r,scaleVisibility:t,emptySymbolLabelSupported:l,elevationInfoOverride:i,disablePlacement:a,active:r.labelsVisible,labelClassPromise:null,labelClassAbortController:new AbortController,labelClassContexts:[],labels:new Map,labelsToInitialize:new Map,stageLayer:new E({isPickable:!0},r.uid)};return this.view._stage.add(o.stageLayer),this._labelingContexts.push(o),this.setDirty(),{addGraphic:e=>this._addGraphic(o,e),removeGraphic:e=>this._removeGraphic(o,e),featureReductionChange:()=>{},layerLabelsEnabled:()=>_(o.layer),labelingInfoChange:e=>this._labelingInfoChange(o,e),elevationInfoChange:()=>this._globalPropertyChanged("elevationInfo",o),slicePlaneEnabledChange:()=>this._globalPropertyChanged("slicePlaneEnabled",o),visibilityInfoChange:()=>this._visibilityInfoChange(o),reset:()=>this._resetLabels(o),clear:()=>{}}}removeGraphicsOwner(e){const t=this._findLabelingContext(e);if(!t)return;const s=this._labelingContexts.indexOf(t);this._labelingContexts.splice(s,1),t.labels.forEach((e=>this._removeGraphic(t,e.graphics3DGraphic))),this.view._stage.remove(t.stageLayer),t.stageLayer=null,this.setDirty()}setLabelGraphicVisibility(e,t){const s=e.graphic.uid,l=this._labels.get(s);l&&l.visible!==t&&(t&&!l.rendered?(this._labelsToAdd.set(s,l),this._labelsToRemove.delete(s),l.textTextureResources.initialized||l.labelingContext.labelsToInitialize.set(s,l)):!t&&l.rendered&&(this._labelsToRemove.set(s,l),this._labelsToAdd.delete(s)),l.visible=t,this.setDirty())}setDirty(){!this._dirty&&this._labelingContexts.length>0&&(this._dirty=!0,this.notifyChange("updating"))}get updating(){return this._dirty||this._textTextureAtlas?.updating||this.deconflictor.updating||this._labelingContexts.some((e=>z(e)))}get updatingProgress(){if(!this.updating||!this._textTextureAtlas)return 1;const e=this._labelingContexts.length>0?this._labelingContexts.reduce(((e,t)=>e+(z(t)?0:1)),0)/this._labelingContexts.length:1;return(this._dirty?0:.3)+(this._textTextureAtlas.updating?0:.1)+.1*e+.5*this.deconflictor.updatingProgress}get test(){return{textTextureAtlas:this._textTextureAtlas,resetAllLabels:()=>this._resetAllLabels()}}};function M(e){return e.active&&_(e.layer)}function z(e){return e.labelClassPromise&&!!e.labelClassAbortController}function B(e){return e.labelClassContexts&&e.labelClassContexts.length}function k(e){return null===e.labelClassContexts}e([g({constructOnly:!0})],F.prototype,"view",void 0),e([g({constructOnly:!0})],F.prototype,"deconflictor",void 0),e([g()],F.prototype,"_textTextureAtlas",void 0),e([g({type:Boolean,readOnly:!0})],F.prototype,"updating",null),F=e([y("esri.views.3d.layers.graphics.Labeler")],F);const N=new T(null,null,null);export{F as Labeler};
|
|
@@ -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{splitIntoChunks as t,remove as s}from"../../../../core/arrayUtils.js";import{resultOrAbort as i,result as r}from"../../../../core/asyncUtils.js";import{estimateStringByteSize as a,estimateNumberByteSize as n}from"../../../../core/byteSizeEstimations.js";import o from"../../../../core/Logger.js";import{isNone as c,unwrap as d,get as h,isSome as l}from"../../../../core/maybe.js";import{whenOrAbort as m}from"../../../../core/promiseUtils.js";import{formatNumber as u}from"../../../../intl/number.js";import{getMaximumQuerySize as g,queryAllJSON as b}from"../../../../layers/support/featureQueryAll.js";const p=o.getLogger("esri.views.3d.layers.i3s.I3SAttributeOverrides");class f{constructor(e,t){this.layer=e,this.warnMaximumChangedObjectsExceeded=!1,this.changedObjectIds=new Set,this.pendingFetchAbortController=new AbortController,this.interactiveEditingSessions=null,this._maximumNumberOfEditOVerrides=
|
|
5
|
+
import e from"../../../../request.js";import{splitIntoChunks as t,remove as s}from"../../../../core/arrayUtils.js";import{resultOrAbort as i,result as r}from"../../../../core/asyncUtils.js";import{estimateStringByteSize as a,estimateNumberByteSize as n}from"../../../../core/byteSizeEstimations.js";import o from"../../../../core/Logger.js";import{isNone as c,unwrap as d,get as h,isSome as l}from"../../../../core/maybe.js";import{whenOrAbort as m}from"../../../../core/promiseUtils.js";import{formatNumber as u}from"../../../../intl/number.js";import{getMaximumQuerySize as g,queryAllJSON as b}from"../../../../layers/support/featureQueryAll.js";const p=o.getLogger("esri.views.3d.layers.i3s.I3SAttributeOverrides");class f{constructor(e,t){this.layer=e,this.warnMaximumChangedObjectsExceeded=!1,this.changedObjectIds=new Set,this.pendingFetchAbortController=new AbortController,this.interactiveEditingSessions=null,this._maximumNumberOfEditOVerrides=j,this.memCache=t.newCache(`${e.uid}-attribute-overrides`),this.pendingFetchChangedObjectIds=this._fetchChangedObjectIds(this.pendingFetchAbortController.signal),this.pendingFetchChangedObjectIds.then((()=>this.pendingFetchAbortController=null))}destroy(){this.layer=null,this.memCache.destroy(),this.memCache=null,this.pendingFetchAbortController&&(this.pendingFetchAbortController.abort(),this.pendingFetchAbortController=null),this.pendingFetchChangedObjectIds=null}createInteractiveEditSession(e){this.changedObjectIds.add(e),c(this.interactiveEditingSessions)&&(this.interactiveEditingSessions=[]);const t=this.interactiveEditingSessions,i=new y(e,{rollback:()=>{s(t,i),0===t.length&&(this.interactiveEditingSessions=null)},commit:t=>{for(const[s,i]of t)this.updateValue(e,s,i)}});return t.unshift(i),i}async apply(e,t,s){if(c(t))return;const{loadedAttributes:i,attributeData:r}=t;if(c(i)||0===i.length||c(r))return;if(await m(this.pendingFetchChangedObjectIds,s),0===this.changedObjectIds.size)return;const a={loadedAttributes:i,attributeData:r},n=this._getOverridesFromCache(e,a,this.changedObjectIds),{objectIds:o,fieldNames:d}=n,h=await this._queryOverridesFromAssociatedLayer(o,d,s);c(h)||this._processOverridesFromAssociatedLayer(e,h,d,a)}updateValue(e,t,s){this.changedObjectIds.add(e),this._cacheValue(e,t,s)}_cacheValue(e,t,s){this.memCache.put(this._getCacheKey(e,t),s,this._memCacheValueSize(s))}_getOverridesFromCache(e,{loadedAttributes:t,attributeData:s},i){const r=new Set,a=new Array;for(const o of t)a[o.index]=s[o.name];const n=new Set;for(let o=0;o<e.length;o++){const s=e[o];if(i.has(s))for(const e of t){const t=this._fromCache(s,e.index);void 0===t?(r.add(s),n.add(e.name)):a[e.index][o]=t}}return{objectIds:Array.from(r),fieldNames:Array.from(n)}}_fromCache(e,t){const s=this._fromInteractiveEditingSession(e,t);if(void 0!==s)return s;const i=this._getCacheKey(e,t);return this.memCache.get(i)}_fromInteractiveEditingSession(e,t){if(!c(this.interactiveEditingSessions))for(const s of this.interactiveEditingSessions){if(s.objectId!==e)continue;const i=s.get(t);if(void 0!==i)return i}}_getCacheKey(e,t){return`${e}-${t}`}async _queryOverridesFromAssociatedLayer(e,s,r){if(0===e.length||0===s.length)return null;e=e.sort(((e,t)=>e-t)),this.warnMaximumChangedObjectsExceeded&&(this.warnMaximumChangedObjectsExceeded=!1,this._logMaximumObjectsExceededWarning());const a=d(this.layer.associatedLayer),n=a.createQuery();n.where="1=1",n.returnGeometry=!1,n.outFields=[a.objectIdField,...s],n.cacheHint=!0,n.objectIds=e;const o=g(a),c=e.length>o?t(e,o).map((e=>{const t=n.clone();return t.objectIds=e,i(b(a,t,{signal:r}))})):[i(b(a,n,{signal:r}))];return(await Promise.all(c)).reduce(((e,t)=>e.concat(t.ok?t.value.features:[])),[])}_logMaximumObjectsExceededWarning(){let e=`The number of edited objects that are not yet cached in the scene service exceeds the maximum limit. Attribute changes will only be available for the first ${u(this._maximumNumberOfEditOVerrides)} objects. Please consider re-caching the scene service`;const t=this.layer.portalItem;t&&t.loaded?e+=` (${t.portal.url}/home/item.html?id=${t.id}#settings)`:e+=` (${this.layer.parsedUrl.path})`,p.warn("#queryOverrides()",this.layer.title,`${e}.`)}_processOverridesFromAssociatedLayer(e,t,s,{loadedAttributes:i,attributeData:r}){const a=d(this.layer.associatedLayer).objectIdField,n=s.map((e=>r[e])),o=new Map(i.map((e=>[e.name,e.index]))),c=s.map((e=>o.get(e))),h=new Map(Array.from(e,((e,t)=>[e,t])));for(const d of t){const e=d.attributes[a];for(let t=0;t<s.length;t++){const i=c[t],r=h.get(e),a=d.attributes[s[t]];n[t][r]=a,this._cacheValue(e,i,a)}}}_memCacheValueSize(e){return"string"==typeof e?a(e):n()}async _fetchChangedObjectIds(t){const s=this.layer;if(await s.load({signal:t}),this.changedObjectIds.clear(),c(s.associatedLayer)||!s.associatedLayer.capabilities?.operations?.supportsChangeTracking)return;const i=this._getFetchChangedObjectIdsServerGen();if(c(i))return null;const a=s.associatedLayer.layerId,n=await r(e(`${s.associatedLayer.url}/extractChanges`,{method:"post",query:{f:"json",returnIdsOnly:!0,layers:`${a}`,returnUpdates:!0,returnDeletes:!1,returnInserts:!1,layerServerGens:JSON.stringify([{id:a,serverGen:i}])},timeout:C,signal:t})),o=n.ok&&n.value.data?.edits?h(n.value.data.edits[0],"objectIds","updates"):null;if(l(o)){const e=Math.min(this._maximumNumberOfEditOVerrides,o.length);e<o.length&&(this.warnMaximumChangedObjectsExceeded=!0);const t=o.sort(((e,t)=>e-t));for(let s=0;s<e;s++)this.changedObjectIds.add(t[s])}}_getFetchChangedObjectIdsServerGen(){const e=this.layer;if(l(e.serviceUpdateTimeStamp)&&l(e.serviceUpdateTimeStamp.lastUpdate))return e.serviceUpdateTimeStamp.lastUpdate;const t=e.associatedLayer;return l(t)&&l(t.serverGens)&&l(t.serverGens.minServerGen)?t.serverGens.minServerGen:null}get test(){const e=Array.from(this.changedObjectIds),t=this.pendingFetchChangedObjectIds,s=this;return{changedObjectIds:e,pendingFetchChangedObjectIds:t,get maximumNumberOfEditOVerrides(){return s._maximumNumberOfEditOVerrides},set maximumNumberOfEditOVerrides(e){s._maximumNumberOfEditOVerrides=e}}}}class y{constructor(e,t){this.objectId=e,this.options=t,this.updates=new Map,this.state=O.ACTIVE}get(e){return this.updates.get(e)}set(e,t){this.isActive&&this.updates.set(e,t)}rollback(){this.isActive&&(this.state=O.ROLLED_BACK,this.options.rollback())}commit(){this.isActive&&(this.state=O.COMMITTED,this.options.commit(this.updates),this.updates.clear())}get isActive(){return this.state===O.ACTIVE}}var O;!function(e){e[e.ACTIVE=0]="ACTIVE",e[e.COMMITTED=1]="COMMITTED",e[e.ROLLED_BACK=2]="ROLLED_BACK"}(O||(O={}));const C=1e4,j=5e4;export{f as I3SAttributeOverrides};
|
|
@@ -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{_ as e}from"../../../../chunks/tslib.es6.js";import"../../../../geometry.js";import t from"../../../../core/Accessor.js";import{PositionHint as r,indexOf as s}from"../../../../core/arrayUtils.js";import i from"../../../../core/Logger.js";import{clamp as
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import"../../../../geometry.js";import t from"../../../../core/Accessor.js";import{PositionHint as r,indexOf as s}from"../../../../core/arrayUtils.js";import i from"../../../../core/Logger.js";import{clamp as o}from"../../../../core/mathUtils.js";import{isNone as n,isSome as a}from"../../../../core/maybe.js";import{whenOnce as c}from"../../../../core/reactiveUtils.js";import{getUnitString as l}from"../../../../core/unitUtils.js";import{property as p}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as u}from"../../../../core/accessorSupport/decorators/subclass.js";import{t as f,a as d,s as g}from"../../../../chunks/vec3.js";import{WhereClause as h}from"../../../../core/sql/WhereClause.js";import{projectBoundingSphere as m,load as y,project as S,projectVectorToVector as j}from"../../../../geometry/projection.js";import{create as b}from"../../../../geometry/support/aaBoundingBox.js";import{fromValues as R,expandWithNestedArray as E,expand as w}from"../../../../geometry/support/aaBoundingRect.js";import{earth as I}from"../../../../geometry/support/Ellipsoid.js";import{project as T}from"../../../../geometry/support/webMercatorUtils.js";import D from"../../../../layers/support/FeatureFilter.js";import{objectIdFilter as C,filterInPlace as A}from"./I3SUtil.js";import F from"../../../../geometry/SpatialReference.js";const v=i.getLogger("esri.views.3d.layers.i3s.I3SMeshViewFilter");let M,_=class extends t{constructor(e){super(e),this._projectionEngineLoaded=!1}initialize(){c((()=>this.filter?.geometry)).then((()=>this.loadAsyncModule(k().then((e=>{this.destroyed||(this._geometryEngine=e,this.applyFilters())})))))}get sortedObjectIds(){if(n(this.filter.objectIds))return null;const e=new Float64Array(this.filter.objectIds);return e.sort(),e}get parsedWhereClause(){const e=a(this.filter)?this.filter.where:null;if(n(e)||!e)return null;try{return h.create(e,this.layerFieldsIndex)}catch(t){v.error(`Failed to parse filter where clause: ${t}`)}return null}addFilters(e,t,r,s){const i=this.sortedObjectIds;a(i)&&e.push((e=>C(i,!0,e))),this.addSqlFilter(e,this.parsedWhereClause);const o=this.parsedGeometry;if(a(o)){const i=this.spatialRelationship;e.push(((e,n)=>P(e,n,s,t,r,o,i)))}}isMBSGeoemtryVisible(e,t,r){const s=this.parsedGeometry;if(a(s)){const i=this.spatialRelationship,o=s[0].spatialReference||t;if(!m(e,r,K,o))return v.warnOnce("SceneLayerView.filter.geometry is using unsupported SpatialReference, skipping geometry filter for MBS"),!0;return L(K,s,o,i)}return!0}get parsedGeometry(){if(n(this.filter))return null;if(!this._geometryEngine)return null;const{geometry:e}=this.filter;if(n(e))return null;const{distance:t,units:r}=this.filter,s=this.spatialRelationship,i="mesh"===e.type?e.extent:e;if(n(t)||0===t)return B(i,s);const o=r||l(i.spatialReference);if(i.spatialReference.isWGS84){return B(this._geometryEngine.geodesicBuffer(i,t,o),s)}const c=T(i,F.WGS84);if(a(c)){return B(T(this._geometryEngine.geodesicBuffer(c,t,o),i.spatialReference),s)}if(!this._projectionEngineLoaded&&(this.loadAsyncModule(y().then((()=>this._projectionEngineLoaded=!0))),!this._projectionEngineLoaded))return null;let p=null;try{p=S(i,F.WGS84)}catch(u){}if(p)try{p=S(this._geometryEngine.geodesicBuffer(p,t,o),i.spatialReference)}catch(u){p=null}return p||v.error(`Filter by geodesic buffer (distance) unsupported, failed to project input geometry (${i.spatialReference.wkid}) to WGS84.`),B(p,s)}get spatialRelationship(){return a(this.filter)?this.filter.spatialRelationship:"intersects"}static checkSupport(e){return e.timeExtent?(v.warn("Filters with a timeExtent are not supported for mesh scene layers"),!1):!!G(e.spatialRelationship)||(v.warn(`Filters with spatialRelationship other than ${O.join(", ")} are not supported for mesh scene layers`),!1)}};function x(){return!!M}async function k(){return x()||(M=await import("../../../../geometry/geometryEngine.js")),M}e([p({type:D})],_.prototype,"filter",void 0),e([p()],_.prototype,"layerFieldsIndex",void 0),e([p()],_.prototype,"loadAsyncModule",void 0),e([p()],_.prototype,"applyFilters",void 0),e([p()],_.prototype,"addSqlFilter",void 0),e([p({readOnly:!0})],_.prototype,"sortedObjectIds",null),e([p({readOnly:!0})],_.prototype,"parsedWhereClause",null),e([p({readOnly:!0})],_.prototype,"parsedGeometry",null),e([p({readOnly:!0})],_.prototype,"spatialRelationship",null),e([p()],_.prototype,"_projectionEngineLoaded",void 0),e([p()],_.prototype,"_geometryEngine",void 0),_=e([u("esri.views.3d.layers.i3s.I3SMeshViewFilter")],_);const O=(e=>e)(["contains","intersects","disjoint"]);function G(e){return null!=e&&O.includes(e)}var W;function B(e,t){if(n(e))return null;if("disjoint"===t&&"polygon"===e.type){const t=new Array(e.rings.length);for(let r=0;r<e.rings.length;++r){const s=R(1/0,1/0,-1/0,-1/0);E(s,e.rings[r]),t[r]={type:"polygon",rings:[e.rings[r]],spatialReference:e.spatialReference,aabr:s}}t.sort(((e,t)=>e.aabr[0]-t.aabr[0]));const i=new Set,o=new r;for(let e=0;e<t.length;++e){const r=t[e];for(let s=e+1;s<t.length;++s){const e=t[s];if(e.aabr[0]>=r.aabr[2])break;i.add(e)}i.forEach((e=>{if(r!==e)if(e.aabr[2]<=r.aabr[0])i.delete(e);else if(M.intersects(r,e)){r.rings=r.rings.concat(e.rings),w(r.aabr,e.aabr,r.aabr),delete r._geVersion,i.delete(e);const n=s(t,e,t.length,o);t.splice(n,1)}})),i.add(r)}for(const e of t)delete e.aabr;return t}return[e]}function L(e,t,r,s){const i=U(e,r);return t.every((e=>q(e,i,s)!==W.DISCARD))}function P(e,t,r,s,i,o,n){const a=o[0].spatialReference||s.spatialReference;if(!m(t.node.mbs,i,K,a))return void v.warnOnce("SceneLayerView.filter.geometry is using unsupported SpatialReference, skipping geometry filter");const c=U(K,a),l=V(n,s,a,r,t.objectHandle);for(const p of o){if(0===e.length)return;switch(q(p,c,n)){case W.DISCARD:return void(e.length=0);case W.KEEP:continue}A(e,t.featureIds,(e=>z(p,e,l)))}}!function(e){e[e.KEEP=0]="KEEP",e[e.DISCARD=1]="DISCARD",e[e.TEST=2]="TEST"}(W||(W={}));const K=[0,0,0,0];function V(e,t,r,s,i){const o=t.renderSpatialReference,n=new Map,a={rings:[[[0,0,0],[0,0,0],[0,0,0],[0,0,0]]],hasZ:!1,hasM:!1,type:"polygon",spatialReference:r};a.rings[0][3]=a.rings[0][0];const c={indices:null,data:null,stride:0,startIndex:0,endIndex:0};let l,p;switch(e){case"intersects":l=(e,t)=>M.intersects(e,t)?W.KEEP:W.TEST,p=N;break;case"contains":l=(e,t)=>M.contains(e,t)?W.TEST:W.DISCARD,p=N;break;default:l=(e,t)=>M.disjoint(e,t)?W.TEST:W.DISCARD,p=Z}return{collection:s,object:i,type:e,maskSR:r,renderSR:o,aabbCache:n,triangle:a,positions:c,triangleTest:l,geometryTest:p}}function U(e,t){const r={x:e[0],y:e[1],hasZ:!1,hasM:!1,type:"point",spatialReference:t},s=!t.isWGS84&&!t.isWebMercator,i=Number.isNaN(e[3])?0:o(e[3],0,2*I.radius),n=s?M.buffer(r,i,1):M.geodesicBuffer(r,i,1);return n.type="polygon",n}function q(e,t,r){switch(r){case"intersects":case"contains":return N(e,t);case"disjoint":return Z(e,t)}}function N(e,t){return M.intersects(e,t)?M.contains(e,t)?W.KEEP:W.TEST:W.DISCARD}function Z(e,t){return M.intersects(e,t)?M.contains(e,t)?W.DISCARD:W.TEST:W.KEEP}const $=2**-32;function z(e,t,r){const{collection:s,object:i,renderSR:o,maskSR:n,geometryTest:a,aabbCache:c}=r;let l=c.get(t);if(!l){const e=s.getObjectTransform(i);s.getComponentAabb(i,t,H);const r=[[H[0],H[1],0],[H[0],H[4],0],[H[3],H[4],0],[H[3],H[1],0]];for(let t=0;t<4;++t)f(r[t],r[t],e.rotationScale),d(r[t],r[t],e.position),j(r[t],o,r[t],n);l={rings:[r],hasZ:!1,hasM:!1,type:"polygon",spatialReference:n},l.rings[0][4]=l.rings[0][0],c.set(t,l)}switch(a(e,l)){case W.DISCARD:return!1;case W.KEEP:return!0}const{triangle:p,triangleTest:u,positions:h}=r,m=p.rings[0][0],y=p.rings[0][1],S=p.rings[0][2],b=s.getObjectTransform(i);s.getComponentPositions(i,t,h);const{indices:R,data:E,stride:w,startIndex:I,endIndex:T}=h;for(let D=I;D<T;D+=3){const t=w*R[D+0],r=w*R[D+1],s=w*R[D+2];g(m,E[t+0],E[t+1],E[t+2]),g(y,E[r+0],E[r+1],E[r+2]),g(S,E[s+0],E[s+1],E[s+2]),f(m,m,b.rotationScale),f(y,y,b.rotationScale),f(S,S,b.rotationScale),d(m,m,b.position),d(y,y,b.position),d(S,S,b.position),j(m,o,m,n),j(y,o,y,n),j(S,o,S,n);const i=y[0]-m[0],a=y[1]-m[1],c=S[0]-m[0],l=S[1]-m[1];if(!(Math.abs(i*l-a*c)<$))switch(delete p._geVersion,u(e,p)){case W.DISCARD:return!1;case W.KEEP:return!0}}return"intersects"!==r.type}const H=b();export{_ as I3SMeshViewFilter};
|
|
@@ -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{onAbortOrThrow as e,always as t}from"../../../../core/promiseUtils.js";class r{constructor(e,t){this.requester=e,this.apiKey=t,this.activeRequests=new Set}get busy(){return this.requester.busy}request(r,s,
|
|
5
|
+
import{onAbortOrThrow as e,always as t}from"../../../../core/promiseUtils.js";class r{constructor(e,t){this.requester=e,this.apiKey=t,this.activeRequests=new Set}get busy(){return this.requester.busy}request(r,s,o){const l=new AbortController,a=e(o,(()=>l.abort())),n={signal:l.signal,query:{token:this.apiKey}},i=this.requester.request(r,s,n),u={response:i,abortController:l,abortHandle:a};return this.activeRequests.add(u),t(i,(()=>{u.abortController=null,u.abortHandle?.remove(),u.abortHandle=null,this.activeRequests.delete(u)})),i}cancelAll(){this.activeRequests.forEach((e=>{e.abortController?.abort(),e.abortController=null,e.abortHandle?.remove()})),this.activeRequests.clear()}}export{r as I3SStreamDataController};
|