@arcgis/core 5.2.0-next.146 → 5.2.0-next.148
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/03afeefb9d16b6f1d844.js +1 -0
- package/assets/esri/core/workers/chunks/{79c83f4e066682543ca1.js → 0a078721c7e0e24027f0.js} +1 -1
- package/assets/esri/core/workers/chunks/{72019baeba520edb6bb0.js → 112befb3b5b406f29298.js} +1 -1
- package/assets/esri/core/workers/chunks/131e89663014bc76c4ee.js +1 -0
- package/assets/esri/core/workers/chunks/14a3808427deaaa85bf2.js +1 -0
- package/assets/esri/core/workers/chunks/{392bcef780df52fb4cca.js → 16053ce50642c5ffbfa9.js} +1 -1
- package/assets/esri/core/workers/chunks/19689c66776b39cec234.js +1 -0
- package/assets/esri/core/workers/chunks/{ba46869e700ba1d2787f.js → 1b3f59fcad6e14c4d0e0.js} +1 -1
- package/assets/esri/core/workers/chunks/{6dd0b79fa3a629ab4f27.js → 1bca39e0e651426bdbb5.js} +1 -1
- package/assets/esri/core/workers/chunks/{305a718719ef15fda90c.js → 20458fffda7692c78135.js} +1 -1
- package/assets/esri/core/workers/chunks/219d0935ce281902a49f.js +1 -0
- package/assets/esri/core/workers/chunks/2416518db4a0117541a8.js +1 -0
- package/assets/esri/core/workers/chunks/{8b1c17cc52d989924313.js → 27a425d87c57b91489b3.js} +1 -1
- package/assets/esri/core/workers/chunks/2d9a1f23ec6ce90723ac.js +1 -0
- package/assets/esri/core/workers/chunks/{06e7400f5ebe0719b81c.js → 2e75df54852d65e71330.js} +1 -1
- package/assets/esri/core/workers/chunks/39d1d2fbe94afcd0a590.js +1 -0
- package/assets/esri/core/workers/chunks/{d01381b548c204835509.js → 3e9f056e4d1f0d067fc6.js} +1 -1
- package/assets/esri/core/workers/chunks/407f1e8176f3b0af73b4.js +1 -0
- package/assets/esri/core/workers/chunks/{1ba0dfbe0958cdbd7c9f.js → 42fd2a7b22b03dacc6a7.js} +1 -1
- package/assets/esri/core/workers/chunks/43321f244effd3d67069.js +1 -0
- package/assets/esri/core/workers/chunks/{d201fbf3ceff946d2bd6.js → 44d5508042cacdfcac47.js} +1 -1
- package/assets/esri/core/workers/chunks/47e6b5631a625298db5b.js +1 -0
- package/assets/esri/core/workers/chunks/4a6b92ecbb1f1c55cc43.js +1 -0
- package/assets/esri/core/workers/chunks/4fc337240e7cddd0e988.js +1 -0
- package/assets/esri/core/workers/chunks/52c25809edf7ac008a52.js +1 -0
- package/assets/esri/core/workers/chunks/54b18559280a7d2a8d93.js +1 -0
- package/assets/esri/core/workers/chunks/561c48cb4d49b150765b.js +1 -0
- package/assets/esri/core/workers/chunks/{5c855af73ee3c3e764fb.js → 5732fdf6d8b87739aeea.js} +1 -1
- package/assets/esri/core/workers/chunks/5924ec3167a2941ebb1f.js +1 -0
- package/assets/esri/core/workers/chunks/5f0c06f59121e09091f7.js +1 -0
- package/assets/esri/core/workers/chunks/5fa1ec357c3ad1f91bc7.js +1 -0
- package/assets/esri/core/workers/chunks/606ea251075fe81a1206.js +1 -0
- package/assets/esri/core/workers/chunks/{ceb680688fe7e570a774.js → 608be1172a908e92b9f1.js} +1 -1
- package/assets/esri/core/workers/chunks/{6f358116f79021ff9687.js → 612104dff305ff062dfa.js} +2 -2
- package/assets/esri/core/workers/chunks/68be3fb88ca61f82fb90.js +1 -0
- package/assets/esri/core/workers/chunks/6c9266120d46e8c69dbf.js +1 -0
- package/assets/esri/core/workers/chunks/6eb5cc8ddf772c0062e6.js +1 -0
- package/assets/esri/core/workers/chunks/709e019885822b1f6f3e.js +1 -0
- package/assets/esri/core/workers/chunks/70ee81ba22badbbf045c.js +1 -0
- package/assets/esri/core/workers/chunks/731018c0deffc41ffc97.js +1 -0
- package/assets/esri/core/workers/chunks/7320a4913b6cad7cc5d7.js +1 -0
- package/assets/esri/core/workers/chunks/7a4f1484b119ebafc2e7.js +1 -0
- package/assets/esri/core/workers/chunks/8293600f94553afc8c38.js +1 -0
- package/assets/esri/core/workers/chunks/{c18189710d6198516175.js → 830ab9b8d000169da675.js} +1 -1
- package/assets/esri/core/workers/chunks/8602b3587d4bdd9cc9f5.js +1 -0
- package/assets/esri/core/workers/chunks/{956a40f40bde416efe93.js → 898f43feeec74acde1ec.js} +1 -1
- package/assets/esri/core/workers/chunks/{700b1d5bc67b7e1b3ff3.js → 8aa80b892fde552577e8.js} +1 -1
- package/assets/esri/core/workers/chunks/8ef802ef8d108ae2e473.js +1 -0
- package/assets/esri/core/workers/chunks/900181f68449d8f82eeb.js +1 -0
- package/assets/esri/core/workers/chunks/925271bb763607a326ae.js +1 -0
- package/assets/esri/core/workers/chunks/937824bc7948f7bc7845.js +1 -0
- package/assets/esri/core/workers/chunks/939942b00ba380e2957e.js +1 -0
- package/assets/esri/core/workers/chunks/{a52bf03bffb6ffac3b54.js → a101b89c18488f213d80.js} +1 -1
- package/assets/esri/core/workers/chunks/a337ca943862b30b978d.js +1 -0
- package/assets/esri/core/workers/chunks/ac03976b8450331aa31e.js +1 -0
- package/assets/esri/core/workers/chunks/af349c7bc8ef41a0e1bd.js +1 -0
- package/assets/esri/core/workers/chunks/afc3b2af20e9d1dfd260.js +1 -0
- package/assets/esri/core/workers/chunks/{97dbbedea9fe03bd1306.js → b0fd7cd5fc9526d30ddc.js} +1 -1
- package/assets/esri/core/workers/chunks/b3e812c3a06b486f05d2.js +1 -0
- package/assets/esri/core/workers/chunks/{6883a5c6883eccaddf64.js → b6ba66a05030d3815dfd.js} +1 -1
- package/assets/esri/core/workers/chunks/{9ab25ee06041f907b9a2.js → c2c1f51a4668055c2838.js} +1 -1
- package/assets/esri/core/workers/chunks/c598b22f78ccc57f9d6d.js +1 -0
- package/assets/esri/core/workers/chunks/c5d85be6e16bc895e7fb.js +1 -0
- package/assets/esri/core/workers/chunks/c62738f84c914671b143.js +1 -0
- package/assets/esri/core/workers/chunks/{820f41d66b2056a3ebc8.js → c7699edd14497d174445.js} +1 -1
- package/assets/esri/core/workers/chunks/cfae60b9d2f2939e9c16.js +1 -0
- package/assets/esri/core/workers/chunks/{a7985d20fa6e8d4878e7.js → d0f5bee9db1ad51ae687.js} +1 -1
- package/assets/esri/core/workers/chunks/dbcac8c1a76d4a9db13d.js +1 -0
- package/assets/esri/core/workers/chunks/{4ed8655770a3e018e366.js → de8d7f11f5a078c01b83.js} +1 -1
- package/assets/esri/core/workers/chunks/e0351753f6b4d1adf11e.js +1 -0
- package/assets/esri/core/workers/chunks/{534186fc921a0ccf58dc.js → e1f5d00878f27e1d413e.js} +1 -1
- package/assets/esri/core/workers/chunks/{4479a166b5ac8db1e12e.js → f2b69bd704db62915a6b.js} +1 -1
- package/assets/esri/core/workers/chunks/{711cfb84659cb4437679.js → f528ac5c648ca6a98582.js} +1 -1
- package/assets/esri/core/workers/chunks/fdbf6208df5c58746d9d.js +1 -0
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ar.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.bg.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.bs.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ca.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.cs.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.da.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.de.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.el.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.es.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.et.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.fi.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.fr.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.he.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.hr.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.hu.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.id.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.it.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ja.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ko.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.lt.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.lv.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.nl.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.no.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pl.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pt-BR.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pt-PT.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ro.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ru.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sk.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sl.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sr.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sv.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.th.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.tr.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.uk.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.vi.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-CN.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-HK.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-TW.json +1 -1
- package/config.js +1 -1
- package/geometry/support/TileClipper.js +1 -1
- package/geometry/support/meshUtils.d.ts +1 -1
- package/geometry/support/scaleUtils.js +1 -1
- package/kernel.js +1 -1
- package/layers/CSVLayer.d.ts +1 -1
- package/layers/CatalogLayer.d.ts +1 -1
- package/layers/FeatureLayer.d.ts +1 -1
- package/layers/GeoJSONLayer.d.ts +1 -1
- package/layers/OrientedImageryLayer.js +1 -1
- package/layers/ParquetLayer.d.ts +4 -3
- package/layers/ParquetLayer.js +1 -1
- package/layers/SceneLayer.d.ts +4 -5
- package/layers/SceneLayer.js +1 -1
- package/layers/SketchLayer.d.ts +0 -1
- package/layers/SubtypeGroupLayer.d.ts +1 -1
- package/layers/WFSLayer.d.ts +1 -1
- package/layers/buildingSublayers/BuildingComponentSublayer.d.ts +1 -1
- package/layers/catalog/CatalogFootprintLayer.d.ts +1 -1
- package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
- package/layers/knowledgeGraph/KnowledgeGraphSublayer.d.ts +1 -1
- package/layers/mixins/ArcGISImageService.d.ts +1 -1
- package/layers/mixins/PortalLayer.js +1 -1
- package/layers/mixins/ScaleRangeLayer.js +1 -1
- package/layers/mixins/SublayersOwner.js +1 -1
- package/layers/orientedImagery/core/ExposurePoint.js +1 -1
- package/layers/orientedImagery/core/utils.js +1 -1
- package/layers/support/FeatureFilter.d.ts +1 -1
- package/layers/support/ParquetPortalItemData.js +1 -1
- package/layers/support/PortalItemData.js +1 -1
- package/layers/support/Sublayer.js +1 -1
- package/layers/support/SubtypeSublayer.d.ts +1 -1
- package/layers/support/SubtypeSublayer.js +1 -1
- package/package.json +2 -2
- package/popup/FeaturesModel.d.ts +26 -5
- package/popup/FeaturesModel.js +1 -1
- package/portal/support/layersLoader.js +1 -1
- package/portal/support/portalLayers.js +1 -1
- package/rest/print.js +1 -1
- package/rest/support/printTaskUtils.js +1 -1
- package/symbols/cim/CIMSymbolHelper.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/hittestUtils.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
- package/views/2d/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiles2D.js +1 -1
- package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
- package/views/2d/layers/LayerView2D.js +1 -1
- package/views/2d/layers/features/sources/FeatureSource.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedPlacementController.js +1 -1
- package/views/3d/analysis/Viewshed/types.d.ts +3 -1
- package/views/3d/layers/BuildingComponentSublayerView3D.js +1 -1
- package/views/3d/layers/BuildingSceneLayerView3D.js +1 -1
- package/views/3d/layers/DynamicLayerView3D.js +1 -1
- package/views/3d/layers/FeatureLikeLayerViewBase3D.js +1 -1
- package/views/3d/layers/FlowSubView3D.js +1 -1
- package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
- package/views/3d/layers/GraphicsLayerView3D.js +1 -1
- package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
- package/views/3d/layers/IntegratedMeshLayerView3D.js +1 -1
- package/views/3d/layers/MediaLayerView3D.js +1 -1
- package/views/3d/layers/PointCloudLayerView3D.js +1 -1
- package/views/3d/layers/RouteLayerView3D.js +1 -1
- package/views/3d/layers/SceneLayerGraphicsView3D.js +1 -1
- package/views/3d/layers/SceneLayerView3D.js +1 -1
- package/views/3d/layers/TiledLayerView3D.js +1 -1
- package/views/3d/layers/VoxelLayerView3D.js +1 -1
- package/views/3d/layers/graphics/Graphics3DScaleVisibility.js +1 -1
- package/views/3d/layers/graphics/Labeler.js +1 -1
- package/views/3d/layers/support/HeatmapFeatureProcessor.js +1 -1
- package/views/3d/support/popupHitTest.js +1 -1
- package/views/View2D.d.ts +1 -1
- package/views/interactive/snapping/FeatureSnappingSourceInfo.js +1 -1
- package/views/interactive/snapping/SnappingOptions.d.ts +1 -1
- package/views/layers/FeatureLikeLayerView.d.ts +1 -1
- package/views/layers/LayerView.js +1 -1
- package/views/layers/LineOfSightLayerView.d.ts +3 -4
- package/views/layers/ParquetLayerView.js +1 -1
- package/views/layers/PointCloudLayerView.d.ts +1 -1
- package/views/layers/SceneLayerView.d.ts +1 -1
- package/views/layers/ViewshedLayerView.d.ts +5 -6
- package/views/support/layerViewUtils.js +1 -1
- package/webdoc/support/saveUtils.js +1 -1
- package/webdoc/support/unsupportedErrors.js +1 -1
- package/widgets/Editor.d.ts +10 -0
- package/widgets/Legend.d.ts +1 -0
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/adapters/draw/HeightMeasurementAdapter.js +1 -1
- package/widgets/OrientedImageryViewer/adapters/sketch/MeasurementAdapter.js +1 -1
- package/widgets/OrientedImageryViewer/adapters/sketch/TriangulatedMeasurementAdapter.js +1 -1
- package/widgets/OrientedImageryViewer/components/ImageLocationViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/services/ImageMeasurementService.js +1 -1
- package/widgets/support/SnappingControls.d.ts +1 -1
- package/assets/esri/core/workers/chunks/00a600c71ceebe7bfeee.js +0 -1
- package/assets/esri/core/workers/chunks/0193df3f9fb23633da87.js +0 -1
- package/assets/esri/core/workers/chunks/050c4b212f2b5691db34.js +0 -1
- package/assets/esri/core/workers/chunks/07aa6d36f1006b6ab7ff.js +0 -1
- package/assets/esri/core/workers/chunks/0bb11751efa2023ec937.js +0 -1
- package/assets/esri/core/workers/chunks/222af8522773c7dc80b1.js +0 -1
- package/assets/esri/core/workers/chunks/303fde8f3459dde16555.js +0 -1
- package/assets/esri/core/workers/chunks/347bf269c2b1583d2dca.js +0 -1
- package/assets/esri/core/workers/chunks/350540770781b281c39a.js +0 -1
- package/assets/esri/core/workers/chunks/3b017b718ea2d4ed498f.js +0 -1
- package/assets/esri/core/workers/chunks/3e81dfc9d621ece038fe.js +0 -1
- package/assets/esri/core/workers/chunks/46b2d4addfc73f9183a4.js +0 -1
- package/assets/esri/core/workers/chunks/4d82db661365daa513a6.js +0 -1
- package/assets/esri/core/workers/chunks/4f48d45baa8ada16f579.js +0 -1
- package/assets/esri/core/workers/chunks/50ca55ad2f5421acc492.js +0 -1
- package/assets/esri/core/workers/chunks/532a1b6ff9a7c950e325.js +0 -1
- package/assets/esri/core/workers/chunks/5450f339f97b2b042ee2.js +0 -1
- package/assets/esri/core/workers/chunks/55cc8581978c71b17998.js +0 -1
- package/assets/esri/core/workers/chunks/58c252289411b0d86473.js +0 -1
- package/assets/esri/core/workers/chunks/633a9051580c5302d2f7.js +0 -1
- package/assets/esri/core/workers/chunks/641d196a554bd07f729e.js +0 -1
- package/assets/esri/core/workers/chunks/655c3afda1eef01611dd.js +0 -1
- package/assets/esri/core/workers/chunks/6569797d3c22442e5e97.js +0 -1
- package/assets/esri/core/workers/chunks/70793967db45fb142962.js +0 -1
- package/assets/esri/core/workers/chunks/798a63653f82c0e842c5.js +0 -1
- package/assets/esri/core/workers/chunks/84fcbf7a1d04f01685d1.js +0 -1
- package/assets/esri/core/workers/chunks/8e511079918e2fd9261f.js +0 -1
- package/assets/esri/core/workers/chunks/8fcfd515ee1b18c902e5.js +0 -1
- package/assets/esri/core/workers/chunks/9001e9a1e81bce175ddd.js +0 -1
- package/assets/esri/core/workers/chunks/9401cc22373566e1171e.js +0 -1
- package/assets/esri/core/workers/chunks/95b82cbbe355266c65d7.js +0 -1
- package/assets/esri/core/workers/chunks/9c0fd8baa00ee9733ba4.js +0 -1
- package/assets/esri/core/workers/chunks/9c1e69ac82e2bf746191.js +0 -1
- package/assets/esri/core/workers/chunks/a010d2e4e34eb7bc1fec.js +0 -1
- package/assets/esri/core/workers/chunks/a05790444115e4cf1bcc.js +0 -1
- package/assets/esri/core/workers/chunks/a7edf7541569fef77cb3.js +0 -1
- package/assets/esri/core/workers/chunks/b2c29bc48c7b3b0c9357.js +0 -1
- package/assets/esri/core/workers/chunks/b61008f28b788f759e2a.js +0 -1
- package/assets/esri/core/workers/chunks/b7d77dd2abb255fd2e5a.js +0 -1
- package/assets/esri/core/workers/chunks/b8054adc45bca069b948.js +0 -1
- package/assets/esri/core/workers/chunks/ca7fb75e2c62e7d37122.js +0 -1
- package/assets/esri/core/workers/chunks/d21257d2e2a37266c0f7.js +0 -1
- package/assets/esri/core/workers/chunks/d270cc9807161033686e.js +0 -1
- package/assets/esri/core/workers/chunks/d4f038e04c42aed588c1.js +0 -1
- package/assets/esri/core/workers/chunks/e32b96c08cb272a59851.js +0 -1
- package/assets/esri/core/workers/chunks/e7c60bd85abbd36cdc64.js +0 -1
- package/assets/esri/core/workers/chunks/f0a68d2900d24f56afa0.js +0 -1
- package/assets/esri/core/workers/chunks/f511a304e9dea9eb3e01.js +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../core/Error.js";import{makeHandle as n,handlesGroup as r,destroyHandle as i}from"../../../core/handleUtils.js";import"../../../core/has.js";import{isIterable as a}from"../../../core/iteratorUtils.js";import{getProjectiveTransform as o}from"../../../core/perspectiveUtils.js";import{debounce as s,isPromiseLike as c}from"../../../core/promiseUtils.js";import{watch as l,syncAndInitial as u,on as d}from"../../../core/reactiveUtils.js";import{property as f,subclass as p}from"../../../core/accessorSupport/decorators.js";import{create as m}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{toExtent as h}from"../../../geometry/support/aaBoundingRect.js";import{
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../core/Error.js";import{makeHandle as n,handlesGroup as r,destroyHandle as i}from"../../../core/handleUtils.js";import"../../../core/has.js";import{isIterable as a}from"../../../core/iteratorUtils.js";import{getProjectiveTransform as o}from"../../../core/perspectiveUtils.js";import{debounce as s,isPromiseLike as c}from"../../../core/promiseUtils.js";import{watch as l,syncAndInitial as u,on as d}from"../../../core/reactiveUtils.js";import{property as f,subclass as p}from"../../../core/accessorSupport/decorators.js";import{create as m}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{toExtent as h}from"../../../geometry/support/aaBoundingRect.js";import{isInEffectiveScaleRange as g}from"../../../geometry/support/scaleUtils.js";import{MediaElementView as _}from"../../../layers/support/MediaElementView.js";import{LayerView3D as v}from"./LayerView3D.js";import{MediaLayerInteraction as y}from"./support/MediaLayerInteraction.js";import{drapedZ as b}from"../terrain/DrapedZ.js";import{Attribute as x}from"../webgl-engine/lib/Attribute.js";import{Geometry as S}from"../webgl-engine/lib/Geometry.js";import{ManagedTexture as C}from"../webgl-engine/lib/ManagedTexture.js";import{Object3DHighlightStateID as w}from"../webgl-engine/lib/Object3DStateID.js";import{RenderGeometry as T}from"../webgl-engine/lib/RenderGeometry.js";import{Parameters as E,ImageMaterial as D}from"../webgl-engine/materials/ImageMaterial.js";import O from"../../layers/MediaLayerView.js";import{getHighlightName as k}from"../../support/highlightOptionsUtils.js";let A=class extends v(O){get interactive(){return this._interaction.enabled}set interactive(e){this._interaction&&(this._interaction.enabled=e)}get selectedElement(){return this._interaction.selectedElement}set selectedElement(e){this._interaction&&(this._interaction.selectedElement=e)}get visibleAtCurrentScale(){return g(this.layer.effectiveScaleRange,this.view.scale)}get usedMemory(){return this._renderElements.values().reduce((e,t)=>e+(t.getRenderData()?.texture.usedMemory??0),0)}constructor(e){super(e),this.type=`media-3d`,this.drapeSourceType=1,this.updatePolicy=1,this.ignoresMemoryFactor=!0,this.unloadedMemory=0,this._uidToElement=new Map,this._highlightedElements=new Map,this._elementsInHighlightedId=new Map,this._renderElements=new Map,this._lastDrapingExtent=null,this._update=s(async(e,t,n)=>{let r=await this._collectMediaElements(e,t,n);this._synchronizeRenderElements(r)},0);let{view:t,layer:n}=e;this._interaction=new y({view:t,layer:n}),this.addHandles(l(()=>this.interactionOptions,e=>this._interaction.options=e,u))}initialize(){let{view:e,layer:t}=this;this._renderer=e.overlayManager.registerGeometryDrapeSource(this);let r=()=>this._updateWithLastDrapingExtent();this.addHandles([n(()=>e.overlayManager.unregisterDrapeSource(this)),d(()=>t.effectiveSource,`change`,r),d(()=>t.effectiveSource,`refresh`,r)]),this._updatingHandles.add(()=>this.suspended,r)}destroy(){this._synchronizeRenderElements(new Set)}setDrapingExtent(e,t){this._lastDrapingExtent={overlays:e,spatialReference:t},this._updateWithLastDrapingExtent()}getHit(e){let t=this._uidToElement.get(e);return t?{type:`media`,element:t,layer:this.layer}:null}highlight(e,t){let r=k(t),i=new w(r),o=a(e)?Array.from(e):[e];this._elementsInHighlightedId.set(i,o);for(let e of o){let t=this._highlightedElements.get(e);t?t.add(i):this._highlightedElements.set(e,new Set([i]));let n=this._renderElements.get(e)?.getRenderData();n&&(n.renderGeometry.geometry.addHighlight(i),this._renderer.modifyGeometries([n.renderGeometry],8))}return n(()=>{let e=this._elementsInHighlightedId.get(i);if(e){for(let t of e){let e=this._highlightedElements.get(t);if(!e)continue;e.delete(i);let n=this._renderElements.get(t)?.getRenderData();n&&(n.renderGeometry.geometry.removeHighlight(i),this._renderer.modifyGeometries([n.renderGeometry],8)),e.size===0&&this._highlightedElements.delete(t)}this._elementsInHighlightedId.delete(i)}})}isUpdating(){return super.isUpdating()||this._interaction.updating}_updateWithLastDrapingExtent(){if(this._lastDrapingExtent==null||this.suspended){this._renderer&&this._synchronizeRenderElements(new Set);return}let{overlays:e,spatialReference:t}=this._lastDrapingExtent;this._updatingHandles.consumePromise(this._update(e,t))}async _collectMediaElements(e,t,n){let r=this.layer.effectiveSource;return r==null?new Set:new Set((await Promise.all(e.map(e=>r.queryElements(h(e.extent,t),{signal:n})))).flat())}_synchronizeRenderElements(e){this._synchronizeRenderElementsRemove(e),this._synchronizeRenderElementsAdd(e)}_synchronizeRenderElementsRemove(e){this._renderElements.forEach((t,n)=>{e.has(n)||(this._removeElement(n,t),this.emit(`element-render-changed`,{element:n}))})}_synchronizeRenderElementsAdd(e){for(let t of e)this._renderElements.has(t)||this._createRenderElement(t)}_removeElement(e,t){this._destroyRenderData(e,t),this._renderElements.delete(e),this._uidToElement.delete(e.uid),t.handle.remove()}_createRenderElement(e){let t=new _({spatialReference:this.view.spatialReference,element:e}),n=new M(r([this._updatingHandles.add(()=>e.opacity,e=>n.getRenderData()?.material.setParameters({opacity:e})),this._updatingHandles.add(()=>t.coords,()=>{n.data?this._updateGeometry(t,n):this._initializeRenderData(t,n)}),this._updatingHandles.add(()=>e.content,()=>this._initializeRenderData(t,n)),i(t)]));this._renderElements.set(e,n),this._uidToElement.set(e.uid,e),this._updatingHandles.consumePromise(e.load()),this._initializeRenderData(t,n)}_initializeRenderData(e,t){let{coords:n,element:r}=e,{contentWidth:i,contentHeight:a}=r;if(n==null||r.content==null){this._destroyRenderData(r,t);return}if(t.data)return;let o=this._createTexture(r.content),s=o.load(this.view.stage.renderView.renderingContext),l=()=>{if(!o.loaded)return;this.view.stage.addTexture(o);let e=new E(o,!0);e.opacity=r.opacity,e.perspectiveInterpolation=!0;let s=new D(e),c=this._getPositionAttributeArray(n),l=[0,0,1,0,1,1,0,1],u=this._getPerspectiveDivideAttributeArray(c,i,a),d=[0,1,2,0,2,3],f=new S(s,[[`position`,new x(c,d,3,!0)],[`uv0`,new x(l,d,2,!0)],[`perspectiveDivide`,new x(u,d,1,!0)]]),p=new T(f,{layerViewUid:this.uid,graphicUid:r.uid});this._highlightedElements.get(r)?.forEach(e=>p.geometry.addHighlight(e)),this._renderer.addGeometries([p],0),t.data=new N(p,o,s),this.emit(`element-render-changed`,{element:r})};c(s)?(t.data=o,this._updatingHandles.consumePromise(s),s.then(l).catch(()=>o.dispose())):l()}_updateGeometry(e,t){let{coords:n,element:r}=e;if(n==null||r.content==null){this._destroyRenderData(r,t);return}let i=t.getRenderData();if(!i)return;let a=this._getPositionAttributeArray(n);i.renderGeometry.geometry.setAttributeData(`position`,a);let o=this._getPerspectiveDivideAttributeArray(a,r.contentWidth,r.contentHeight);i.renderGeometry.geometry.setAttributeData(`perspectiveDivide`,o),i.renderGeometry.geometry.invalidateBoundingInfo(),this._renderer.modifyGeometries([i.renderGeometry],2),this.emit(`element-render-changed`,{element:r})}_getPositionAttributeArray(e){let[t,n,r,i]=e.rings[0];return[t[0],t[1],b,i[0],i[1],b,r[0],r[1],b,n[0],n[1],b]}_getPerspectiveDivideAttributeArray(e,t,n){o(j,[0,0,t,0,t,n,0,n],[e[0],e[1],e[3],e[4],e[6],e[7],e[9],e[10]]);let r=j[6]/j[8]*t,i=j[7]/j[8]*n;return[1,1+r,1+r+i,1+i]}_destroyRenderData(e,t){let n=t.data;if(n==null)return;if(t.data=null,`dispose`in n){n.dispose();return}let r=n.texture;r.unload(),this.view.stage.removeTexture(r),this._renderer.removeGeometries([n.renderGeometry],2),this.emit(`element-render-changed`,{element:e})}_createTexture(e){let n=e instanceof HTMLImageElement?e.naturalWidth:e.width,r=e instanceof HTMLImageElement?e.naturalHeight:e.height;if(`getFrame`in e)throw new t(`media-layer-view-3d`,`animation is not supported`);return new C(e,{wrap:{s:33071,t:33071},preMultiplyAlpha:!0,width:n,height:r,mipmap:!0,updateCallback:()=>this.view.overlayManager.requestRender()})}get test(){}};e([f({readOnly:!0})],A.prototype,`type`,void 0),e([f()],A.prototype,`interactive`,null),e([f()],A.prototype,`selectedElement`,null),e([f({readOnly:!0})],A.prototype,`visibleAtCurrentScale`,null),A=e([p(`esri.views.3d.layers.MediaLayerView3D`)],A);const j=m();class M{constructor(e){this.handle=e}getRenderData(){return this.data&&`type`in this.data&&this.data.type===`RenderData`?this.data:null}}class N{constructor(e,t,n){this.renderGeometry=e,this.texture=t,this.material=n,this.type=`RenderData`}}const P=A;export{P as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../Graphic.js";import n from"../../../request.js";import{isSome as r}from"../../../core/arrayUtils.js";import{result as i,forEach as a}from"../../../core/asyncUtils.js";import"../../../core/has.js";import o from"../../../core/Logger.js";import{destroyMaybe as s,abortMaybe as c}from"../../../core/maybe.js";import{estimateNumberArrayMemory as l,baseObjectMemory as u,estimateNumberMemory as d,estimateFixedArrayMemory as f,baseArrayMemory as p}from"../../../core/memoryEstimations.js";import{isAbortError as m,allSettledValues as h,throwIfAborted as g}from"../../../core/promiseUtils.js";import{initial as _,watch as v,sync as y,syncAndInitial as b}from"../../../core/reactiveUtils.js";import{pt2px as x}from"../../../core/screenUtils.js";import{isArrayBuffer as ee}from"../../../core/typedArrayUtil.js";import{property as S,subclass as C}from"../../../core/accessorSupport/decorators.js";import{add as te,dot as ne,copy as re}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{clone as ie}from"../../../core/libs/gl-matrix-2/factories/vec3f32.js";import{create as w,fromValues as ae}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import oe from"../../../geometry/Extent.js";import se from"../../../geometry/Point.js";import{projectBoundingSphere as ce}from"../../../geometry/projection/projectBoundingSphere.js";import{projectVectorToVector as le}from"../../../geometry/projection/projectVectorToVector.js";import{create as ue,fromMinMax as T}from"../../../geometry/support/aaBoundingBox.js";import{create as E,fromNormalAndOffset as D}from"../../../geometry/support/plane.js";import{Sphere as O}from"../../../geometry/support/sphere.js";import k from"../../../layers/graphics/OptimizedGeometry.js";import{QueryEngine as A}from"../../../layers/graphics/data/QueryEngine.js";import j from"../../../layers/support/CodedValue.js";import M from"../../../layers/support/CodedValueDomain.js";import{unpackFieldNames as N}from"../../../layers/support/fieldUtils.js";import P from"../../../rest/support/FeatureSet.js";import F from"../../../rest/support/Query.js";import{getElevationOffset as I}from"../../../support/elevationInfoUtils.js";import{LayerView3D as L}from"./LayerView3D.js";import{PointCloudLayerViewPerformanceInfo as R,QueuePerformanceInfo as z}from"./PointCloudLayerViewPerformanceInfo.js";import{PointCloudWorkerHandle as B}from"./PointCloudWorkerHandle.js";import{I3SQueryFeatureStore as V}from"./i3s/I3SQueryFeatureStore.js";import{checkPointCloudLayerValid as H,checkPointCloudLayerCompatibleWithView as U}from"./i3s/I3SUtil.js";import{nodeDiff as de,sortFrontToBack as fe,splitWorkEntries as pe}from"./i3s/LoDUtil.js";import{PagedNodeIndex as me}from"./i3s/PagedNodeIndex.js";import{PointCloudGraphic as W}from"./i3s/PointCloudGraphic.js";import{PointCloudRenderer as he}from"./i3s/PointCloudRenderer.js";import{isPointRendererNode as ge,PointCloudRendererNode as _e}from"./i3s/PointCloudRendererNode.js";import{getSplatSizeAlgorithm as ve,getFixedSizeAlgorithm as G,getRendererInfo as K,getFilterInfo as q,rendererUsesFixedSizes as ye,canUpdateRendererWithoutReload as be,getAttributeInfo as J}from"./i3s/PointCloudRendererUtil.js";import{getAttributeValues as xe,readGeometry as Se,elevationFromPositions as Ce}from"./i3s/PointCloudWorkerUtil.js";import{normalizeHighlightTarget as we,emptyHighlightHandle as Te}from"./support/highlightUtils.js";import{PopupSceneLayerView as Ee}from"./support/PopupSceneLayerView.js";import{projectToBoundingBox as De}from"../support/extentUtils.js";import{computeMapPointFromVec3d as Oe}from"../support/hitTest.js";import{Obb as Y}from"../support/orientedBoundingBox.js";import{updatingProgress as ke}from"../support/updatingProperties.js";import Ae from"../../layers/LayerView.js";import{PointCloudLayerViewMixin as X}from"../../layers/PointCloudLayerView.js";import{getHighlightName as je}from"../../support/highlightOptionsUtils.js";import{isInEffectiveScaleRange as Me}from"../../support/layerViewUtils.js";import{PromiseQueue as Ne}from"../../support/PromiseQueue.js";import{TaskPriority as Pe}from"../../support/Scheduler.js";const Fe=E();let Z=class extends X(Ee(L(Ae))){constructor(){super(...arguments),this.type=`point-cloud-3d`,this.maximumPointCount=4e6,this.slicePlaneEnabled=!1,this._renderer=null,this._rendererAdded=!1,this._renderedNodes=new Set,this._updateViewNeeded=!0,this._lodFactor=1,this._maxLoggedBoxWarnings=5,this._pageMultiplier=1,this._nodeLoadEpoch=0,this._indexQueue=[],this._workQueue=[],this._idleQueue=new Ne,this._loadingPages=new Map,this._loadingNodes=new Map,this._recalcWork=!0,this._layerIsVisible=!1,this._codedDomainPopulationPromise=null,this._codedDomainPopulationAbortController=null,this._totalWork=0,this._index=null,this._loadingInitNodePage=!1,this._nodeIdArray=[],this.ignoresMemoryFactor=!1}get baseUrl(){return this.layer.parsedUrl?.path??``}get pointScale(){let e=ve(this.layer?.renderer);return e?.scaleFactor==null?1:e.scaleFactor}get useRealWorldSymbolSizes(){let e=G(this.layer?.renderer);return e?.useRealWorldSymbolSizes!=null&&e.useRealWorldSymbolSizes}get pointSize(){let e=G(this.layer?.renderer);return e?.size==null?0:e.size}get inverseDensity(){return this.layer?.renderer?96/this.layer.renderer.pointsPerInch:5}get availableFields(){let e=K(this.layer),t=new Set;e.primaryAttribute&&t.add(e.primaryAttribute.name),e.modulationAttribute&&t.add(e.modulationAttribute.name);let n=q(this.layer);if(n)for(let e of n)e.attributeInfo&&t.add(e.attributeInfo.name);if(this.layer.outFields)for(let e of N(this.layer.fieldsIndex,this.layer.outFields))t.add(e);return Array.from(t)}get _clippingBox(){if(!this.view||!this.view.clippingArea)return null;let e=ue(),t=this.view.renderSpatialReference;return De(this.view.clippingArea,e,t)?e:null}get _elevationOffset(){let e=this.layer&&this.layer.elevationInfo;return e?.mode===`absolute-height`?I(e,this.layer.spatialReference):0}get _graphicOrigin(){return this.layer.graphicOrigin}initialize(){let e=this.view.resourceController,t=Re(e);this._worker=new B(t),this.addResolvingPromise(this._worker.promise),this.addResolvingPromise(this.layer.rootPagePromise),H(this.layer),U(this.layer,this.view),this._initRenderer();let n=this._initNodePages(),r=this.view.resourceController.memoryController;this._memCache=r.newCache(`pcl-${this.layer.uid}`),this._queryFeaturesCache=r.newCache(`pcl-query-features-${this.layer.uid};`),this._updatingHandles.add(()=>this._clippingBox,()=>this._setUpdateViewNeeded(),_),this._updatingHandles.add(()=>this._elevationOffset,()=>this._elevationOffsetChanged(),_),this._updatingHandles.add(()=>this.layer.renderer,(e,t)=>this._rendererChanged(e,t),_),this._updatingHandles.add(()=>this.layer.filters,()=>this._reload(),_),this._updatingHandles.add(()=>this.layer.outFields,()=>this._reload(),_),this._updatingHandles.add(()=>this.layer.effectiveScaleRange,()=>this._setUpdateViewNeeded()),this._updatingHandles.add(()=>this.view.state.contentCamera,()=>this._setUpdateViewNeeded()),this.addHandles([v(()=>this.view.quality,()=>this._setUpdateViewNeeded(),y)]),this.addResolvingPromise(n),this.when(()=>{this.addHandles([e.scheduler.registerTask(Pe.POINT_CLOUD_LAYER,this),v(()=>this.view.state.mode===2,()=>this._setUpdateViewNeeded(),b),this._updatingHandles.add(()=>this.suspended,e=>{e?this._clearNodeState():this._setUpdateViewNeeded()},_)])},()=>{this._updatingHandles.removeAll(),this.removeAllHandles()})}_setUpdateViewNeeded(){this._updateViewNeeded=!0,this._updateLoading()}destroy(){this.cancelLoading(),this._worker=s(this._worker),this._destroyRenderer(),this._memCache=s(this._memCache),this._queryFeaturesCache=s(this._queryFeaturesCache),this._queryEngine=s(this._queryEngine),this._codedDomainPopulationAbortController=c(this._codedDomainPopulationAbortController),this._codedDomainPopulationPromise=null}_initRenderer(){this._renderer=new he({createGraphic:(e,t,n)=>this._createGraphic(e,t,n)}),this._renderer.layerViewUid=this.uid,this._updatingHandles.add(()=>this._clippingBox,e=>this._renderer.clippingBox=e,_),this._updatingHandles.add(()=>this.suspended,e=>this._setPointsVisible(!e),_),this._updatingHandles.add(()=>this.pointScale,e=>this._renderer.scaleFactor=e,_),this._renderer.minSizePx=Math.sqrt(2),this._updatingHandles.add(()=>this.useRealWorldSymbolSizes,e=>this._renderer.useRealWorldSymbolSizes=e,_),this._updatingHandles.add(()=>this.pointSize,e=>{let t=x(e);this._renderer.size=e,this._renderer.sizePx=t},_),this._updatingHandles.add(()=>this.slicePlaneEnabled,e=>this._renderer.slicePlaneEnabled=e,_),this._updatingHandles.add(()=>this.inverseDensity,()=>this._setUpdateViewNeeded(),_),this._updatingHandles.add(()=>this.maximumPointCount,()=>this._setUpdateViewNeeded(),_),this._updatingHandles.add(()=>this.view.qualitySettings.sceneService.pointCloudLoDFactor,e=>{this._lodFactor=e,this._setUpdateViewNeeded()},_)}_destroyRenderer(){this._renderer.removeAll(),this._setPointsVisible(!1)}_createGraphic(e,t,n,r){let i=e.pointIdFilterMap==null?t:e.pointIdFilterMap[t],a=n?`declaredClass`in n?n:Oe(this.view,n):null;return r??=this._createGraphicAttributes(e,i),new W({pointCloudMetadata:{nodeId:e.id,pointIndexInNode:t,attributePointIndexInNode:i,epoch:this._nodeLoadEpoch},geometry:a,attributes:r,layer:this.layer,sourceLayer:this.layer,origin:this._graphicOrigin})}_createGraphicAttributes(e,t){let n={};for(let r of e.attributes)this._encodeGraphicAttribute(r.attributeInfo,r.values,t,n);return n}_getGraphicAttribute(e,t,n){let r=e.storageInfo?.attributeValues,i=r?.valuesPerElement??1;if(i===1)return t[n];if(r?.valueType===`UInt8`&&i<=4){let e=0,r=n*i;for(let n=r;n<r+i;n++)e=(e<<8)+t[n];return e}}_encodeGraphicAttribute(e,t,n,r){r[e.name]=this._getGraphicAttribute(e,t,n)}_setPointsVisible(e){e&&!this._rendererAdded?(this.view.stage.addRenderPlugin(this._renderer),this._rendererAdded=!0):!e&&this._rendererAdded&&(this.view.stage.removeRenderPlugin(this._renderer),this._rendererAdded=!1)}_rendererChanged(e,t){if(this._renderer.useFixedSizes=ye(e),be(e,t)){this._setUpdateViewNeeded();return}this._reload()}_reload(){this._clearNodeState(),this._memCache.clear(),this._setUpdateViewNeeded()}_elevationOffsetChanged(){this._clearNodeState(),this._memCache.clear(),this._initNodePages().catch(()=>{})}_displayNodes(e){this._workQueue=de([...this._renderedNodes],e,this._index),fe(this._workQueue,this.view.state.contentCamera.viewForward,this._index),pe(this._workQueue,8,this._index),this._updateQueues(),this._totalWork=this._computeWork(),this._updateLoading(),this._layerIsVisible=e.length>0||this._loadingInitNodePage,this.notifyChange(`suspended`)}cancelLoading(){this._cancelNodeLoading(),this._cancelIndexLoading()}_cancelNodeLoading(){[...this._loadingNodes.values()].forEach(e=>e.abort()),this._workQueue=[],this._idleQueue.cancelAll(),this._totalWork=this._computeWork(),this._updateLoading()}_updateQueues(){let e=new Set;this._workQueue.forEach(t=>t.load.forEach(t=>e.add(t)));let t=[];this._loadingNodes.forEach((n,r)=>{e.has(r)||(this._loadingNodes.delete(r),t.push(n))}),t.forEach(e=>e.abort()),this._workQueue=this._workQueue.filter(e=>{for(let t of e.load)if(this._loadingNodes.has(t))return this._recalcWork=!0,!1;return!0}),this._totalWork=this._computeWork(),this._updateLoading()}_cancelIndexLoading(){this._indexQueue=[],this._loadingPages.forEach(e=>e.abort()),this._loadingPages.clear(),this._totalWork=this._computeWork(),this._updateLoading()}_clearNodeState(){this._nodeLoadEpoch++,this._renderedNodes.forEach(e=>this._removeFromRenderer(e)),this._cancelNodeLoading()}get readyToRun(){return this.suspended?this._updateViewNeeded:this._updateViewNeeded||this._indexQueue.length>0||this._workQueue.length>0||this._idleQueue.readyToRun}runTask(e){if(this.suspended){if(this._updateViewNeeded){this._updateViewNeeded=!1;let e=this._isRootNodeVisible();e!==this._layerIsVisible&&(this._layerIsVisible=e,this.notifyChange(`suspended`)),this._updateLoading()}return}for(e.run(()=>this._updateWorkQueues());this._indexQueue.length>0&&!e.done;)this._processIndexQueue(),e.madeProgress();this._processWorkQueue(e),this._idleQueue.runTask(e)}async _processIndexQueue(){let e=this._indexQueue.shift(),t=new AbortController;this._loadingPages.set(e,t);try{let n=await this._loadNodePage(e,t.signal);this._index.addPage(e,n,this._elevationOffset),this._setUpdateViewNeeded(),this._loadingPages.delete(e)}catch{this._loadingPages.get(e)===t&&this._loadingPages.delete(e)}}_processWorkQueue(e){for(;!e.done;){let t=this._scheduleWorkEntry();if(t==null){e.madeProgress();return}this._processWorkEntry(t),e.madeProgress()}}_scheduleWorkEntry(){let e=this._workQueue.length;for(;e--;){let e=this._workQueue.shift();if(e.remove.find(e=>!this._renderedNodes.has(e)))this._workQueue.push(e);else return e}return null}async _processWorkEntry(e){if(e.load.length===0){for(let t of e.remove)this._removeFromRenderer(t);return}let t=e.load.map(e=>{let t=new AbortController;return this._loadingNodes.set(e,t),t});this._updateLoading();try{let n=await Promise.all(e.load.map((e,n)=>this._memCache.pop(`${e}`)??this._loadNode(e,t[n].signal)));for(let t=0;t<e.load.length;t++)if(n[t]){let r=this._setupRendererData(e.load[t],n[t]);this._addToRenderer(r)}for(let t of e.remove)this._removeFromRenderer(t);for(let t of e.load)this._loadingNodes.delete(t)}catch{e.load.forEach((e,n)=>{this._loadingNodes.get(e)===t[n]&&this._loadingNodes.delete(e)})}this._updateLoading(),this._recalcWork&&!this._idleQueue.updating&&this._indexQueue.length===0&&this._loadingNodes.size===0&&(this._recalcWork=!1,this._setUpdateViewNeeded())}async _populateClassCodeCodedDomain(e,t){let n=`CLASS_CODE`,r=this.layer.fieldsIndex.get(n);if(!r||r.domain||!e.includes(r.name))return;let a=await i(this.layer.queryCachedStatistics(n,{signal:t}));if(a.ok===!1)return;let o=a.value?.stats?.labels?.labels;o&&Array.isArray(o)&&(r.domain=new M({name:`CLASS_CODE`,codedValues:o.map(e=>new j({code:e.value,name:e.label}))}))}async prepareFetchPopupFeatures(e){return this._codedDomainPopulationPromise||=(this._codedDomainPopulationAbortController=new AbortController,this._populateClassCodeCodedDomain(e,this._codedDomainPopulationAbortController.signal).then(()=>{this._codedDomainPopulationAbortController=null})),this._codedDomainPopulationPromise}async whenGraphicAttributes(e,t){let n=this._splitGraphicsPerNode(e),i=this.layer.attributeStorageInfo,o=t.map(e=>J(i,e)).filter(r),s=async(e,t)=>{let n=this._index.getNode(t);await a(o,async t=>{let r=t.useElevation?await this._loadElevationAttributeFromGeometry(n.resourceId):await this._loadAndParseAttribute(n,t);if(r){for(let n of e)if(this._isValidPointGraphic(n)){let e=n.pointCloudMetadata.attributePointIndexInNode;this._encodeGraphicAttribute(t,r,e,n.attributes)}}})},c=[];return n.forEach((e,t)=>{c.push(s(e,t))}),await Promise.allSettled(c),e}_isValidPointGraphic(e){return e instanceof W&&e.pointCloudMetadata?.epoch===this._nodeLoadEpoch}_splitGraphicsPerNode(e){let t=new Map;for(let n of e){if(!this._isValidPointGraphic(n))continue;let e=n.pointCloudMetadata,r=t.get(e.nodeId);r?r.push(n):t.set(e.nodeId,[n])}return t}async _loadAndParseAttribute(e,t){let n=await this._loadAttribute(e.resourceId,t,null);return n?xe({attributeInfo:t,buffer:n},null,e.vertexCount):null}async _loadElevationAttributeFromGeometry(e){let t=this.layer.store.defaultGeometrySchema,n=Se(t,await this._loadGeometry(e,null));return Ce(n,n.length/3)}highlight(e,n){let r=we(e);if(r.length===0||!(r[0]instanceof t))return Te;let i=r;return this._renderer.highlight(i.map(e=>this._graphicToPointDefinition(e)),je(n))}_graphicToPointDefinition(e){if(!this._isValidPointGraphic(e))return null;let{nodeId:t,pointIndexInNode:n}=e.pointCloudMetadata;return t!=null&&n!=null?{nodeId:t,pointId:n}:null}_computeWork(){let e=0;for(let t of this._workQueue)e+=t.load.length+t.remove.length;return e+=this._loadingNodes.size,e+=(this._indexQueue.length+this._loadingPages.size)*this._index.pageSize,e+=this._loadingInitNodePage?100:0,e+=this._updateViewNeeded?100:0,e}get updatingProgressValue(){if(this.suspended)return+!this._updateViewNeeded;let e=this._computeWork();return 1-Math.min(this._totalWork,e)/this._totalWork}_updateLoading(){this.notifyChange(`updating`),this.notifyChange(`updatingProgressValue`)}canResume(){return super.canResume()&&this._layerIsVisible}isUpdating(){return this.suspended?this._updateViewNeeded:this._computeWork()>0}get visibleAtCurrentScale(){return Me(this.layer.effectiveScaleRange,this.view.scale)}async queryFeatures(e,n){let r=await this._ensureQueryEngine().executeQuery(this._ensureQueryJSON(e),n?.signal),i=r.features;r.features=[];let a=P.fromJSON(r),o=this.view.spatialReference;return a.features=i.map(e=>{let{attributes:n,metadata:r}=e;if(!r){let n=t.fromJSON(e);return n.geometry&&(n.geometry.spatialReference=a.spatialReference??o),n.layer=this.layer,n.sourceLayer=this.layer,n.origin=this._graphicOrigin,n}let i=e.geometry?se.fromJSON(e.geometry):void 0;return i&&(i.spatialReference=a.spatialReference??o),this._createGraphic(r.node,r.pointId,i,n)}),a}createQuery(){let e={outFields:[`*`],returnGeometry:!0,outSpatialReference:this.view.spatialReference,returnZ:!0};return new F(e)}async queryFeatureCount(e,t){return await this._ensureQueryEngine().executeQueryForCount(this._ensureQueryJSON(e),t?.signal)}async queryExtent(e,t){let{count:n,extent:r}=await this._ensureQueryEngine().executeQueryForExtent(this._ensureQueryJSON(e),t?.signal);return{count:n,extent:oe.fromJSON(r)}}_ensureQueryJSON(e){return e==null?new F({outSpatialReference:this.view.spatialReference}).toJSON():F.from(e).toJSON()}_ensureQueryEngine(){if(this._queryEngine)return this._queryEngine;let{spatialReference:e}=this.view;return this._queryEngine=new A({fieldsIndex:this.layer.fieldsIndex.toJSON(),geometryType:`esriGeometryPoint`,spatialReference:e,featureIdInfo:{type:`object-id`,fieldName:`objectId`},hasZ:!0,featureStore:new V({sourceSpatialReference:e,viewSpatialReference:e,forAllFeatures:(e,t)=>{this._renderer.forEachNode(n=>{if(t){let e=n.obb,r=new O(e.getCenter(w()),e.radius);if(ce(r,this.view.renderSpatialReference,r,this.view.spatialReference),t(r)===1)return}let r=this._queryFeaturesCache.get(`${n.id}`);r||(r=this._createQueryPointFeatures(n),this._queryFeaturesCache.put(`${n.id}`,r)),r.features.forEach(e)})},getFeatureExtent:({point:e},t)=>T(e,e,t),featureAdapter:{cloneWithGeometry:(e,t,n)=>new Q(e.node,e.pointId,t.coords),getAttribute:({node:e,attributePointId:t},n)=>{for(let r of e.attributes)if(r.attributeInfo.name===n)return this._getGraphicAttribute(r.attributeInfo,r.values,t)},getAttributes:({node:e,attributePointId:t})=>this._createGraphicAttributes(e,t),getCentroid:e=>e.getGeometry(),getGeometry:e=>e.getGeometry(),getObjectId:()=>void 0,getMetadata:e=>e}})}),this._queryEngine}_createQueryPointFeatures(e){let t=e.coordinates,n=[];for(let r=0;r<t.length/3;r++){let i=r*3,a=ae(t[i+0],t[i+1],t[i+2]);te(a,a,e.origin),le(a,this.view.renderSpatialReference,a,this.view.spatialReference);let o=new Q(e,r,a);n.push(o)}return new Le(n)}async _initNodePages(){let e=this.layer.store.index,t=e.nodesPerPage||e.nodePerIndexBlock;this._index=new me(this.layer.spatialReference,this.view.renderCoordsHelper.spatialReference,t),this._cancelIndexLoading(),this._traverseVisible=this._index.createVisibilityTraverse(),this._loadingInitNodePage=!0,this._layerIsVisible=!0,this.notifyChange(`suspended`),this._updateLoading(),this._pageMultiplier=e.nodesPerPage==null?e.nodePerIndexBlock:1;let n=await this.layer.rootPagePromise;if(this._loadingInitNodePage=!1,!n){o.getLogger(this).error(`Point cloud layer root page not loaded`);return}this._index.addPage(0,this._processJSONNodes(n,0),this._elevationOffset),this._setUpdateViewNeeded()}_loadNodePage(e,t){let n=`${this.baseUrl}/nodepages/${e*this._pageMultiplier}`;return this._requestNodePage(n,t).then(t=>this._processJSONNodes(t,e))}_processJSONNodes(e,t){let n=t*this._index.pageSize;return e.nodes.map((e,t)=>({resourceId:e.resourceId??n+t,obb:Y.fromJSON(e.obb),obbInRenderSR:new Y,firstChild:e.firstChild,childCount:e.childCount,vertexCount:e.vertexCount??e.pointCount,lodThreshold:e.lodThreshold??e.effectiveArea}))}_updateWorkQueues(){if(!this._updateViewNeeded)return!1;let e=this.view.quality,t=this.inverseDensity/this._lodFactor*e,n=this.maximumPointCount*this._lodFactor*e,r=this._computeNodesForMinimumDensity(t),i=this._computePointCount(r),a=Math.sqrt(i/(n*.75));for(;i>n;)t*=a,r=this._computeNodesForMinimumDensity(t),i=this._computePointCount(r),a=Math.sqrt(2);return this._displayNodes(r),this._updateViewNeeded=!1,this._updateLoading(),!0}_computePointCount(e){let t=0;for(let n=0;n<e.length;n++){let r=this._index.getNode(e[n]);r&&(t+=r.vertexCount)}return t}_isRootNodeVisible(){let e=!1;return this._traverseVisible({frustum:this.view.state.contentCamera.frustum,clippingBox:this._clippingBox},{predicate:(t,n,r)=>(e=r,!1),pageMiss:()=>{}}),e}_computeNodesForMinimumDensity(e){let t=this.view.state.contentCamera,n=t.frustum,r=this._clippingBox,i=t.viewForward,a=ne(i,t.eye),o=D(i,-a,Fe),s=t.screenPixelSizePerDistance/2,c=e*e,l=this._nodeIdArray;l.length=0;let u=e=>l.push(e);return this._traverseVisible({frustum:n,clippingBox:r},{predicate:(e,t,n)=>{if(!n)return!1;if(t.childCount===0)return u(e),!1;let r=this._index.getRenderObb(e);return this._computeAveragePixelArea(r,t.lodThreshold,t.vertexCount,o,s)<=c?(u(e),!1):!0},pageMiss:(e,t)=>{u(e),this._indexQueue.includes(t)||this._indexQueue.push(t)}}),l}_computeAveragePixelArea(e,t,n,r,i){let a=Math.max(1e-7,e.signedDistanceRangePlane(r).min);return t/(a*a)/(4*i*i)/n}_loadNode(e,t){try{return this._loadNodeAsync(e,t)}catch(e){throw m(e)||o.getLogger(this).error(e),e}}async _loadAdditionalUserAttributes(e,t,n){let i=this.layer.outFields;if(!i)return[];let a=N(this.layer.fieldsIndex,i),o=new Set(e.map(e=>e==null?null:e.name)),s=this.layer.attributeStorageInfo,c=[];for(let e of a){if(o.has(e))continue;let n=J(s,e);n&&c.push(t(n))}let l=await h(c);return g(n),l.filter(r)}async _loadNodeAsync(e,t){let n=this._index.getNode(e),r=K(this.layer),i=q(this.layer),a=n.resourceId,o=async e=>{if(!e)return null;if(e.useElevation)return{attributeInfo:e,buffer:null};let n=await this._loadAttribute(a,e,t);return n==null?null:{attributeInfo:e,buffer:n}};return this._idleQueue.push(async()=>{let n=this._loadGeometry(a,t),{primaryAttribute:s,modulationAttribute:c}=r,l=o(s),u=o(c),d=i.map(e=>e.attributeInfo),f=d.map(e=>o(e)),p=this._loadAdditionalUserAttributes([s,c,...d],o,t),[m,h,_,v,y]=await Promise.all([n,l,u,Promise.all(f),p]);g(t);let b={geometryBuffer:m,primaryAttributeData:h,modulationAttributeData:_,filterAttributesData:v,userAttributesData:y,schema:this.layer.store.defaultGeometrySchema,rendererInfo:r,filterInfo:i,obbData:this._index.getRenderObb(e).data,elevationOffset:this._elevationOffset,inSR:this.layer.spatialReference.toJSON(),outSR:this.view.renderCoordsHelper.spatialReference.toJSON()};return this._worker.invoke(b,t)},t)}async _loadGeometry(e,t){return this._requestData(`${this.baseUrl}/nodes/${e}/geometries/0`,t)}async _loadAttribute(e,t,n){if(!t?.storageInfo)return null;let r=t.storageInfo.key;return this._requestData(`${this.baseUrl}/nodes/${e}/attributes/${r}`,n)}async _requestNodePage(e,t){let r={useQueue:!1,query:{f:`json`,...this.layer.customParameters,token:this.layer.apiKey},responseType:`json`,signal:t};return(await n(e,r)).data}async _requestData(e,t){let r={useQueue:!1,query:{...this.layer.customParameters,token:this.layer.apiKey},responseType:`array-buffer`,signal:t};return(await n(e,r)).data}_removeFromRenderer(e){if(this._renderedNodes.has(e)){let t=this._renderer.removeNode(e);this._renderedNodes.delete(e),this._memCache.put(`${t.id}`,t)}}_addToRenderer(e){this._renderedNodes.has(e.id)||(this._renderedNodes.add(e.id),this._renderer.addNode(e))}_setupRendererData(e,t){let n=this._index.getNode(e),r=Math.sqrt(n.lodThreshold/n.vertexCount),i=this._index.getRenderObb(e);if(ge(t))return t.splatSize=r,t.obb=i,re(t.origin,t.obb.getCenter(w())),t;let a=Y.fromData(t.obbData),{halfSizeX:s,halfSizeY:c,halfSizeZ:l}=a,{halfSizeX:u,halfSizeY:d,halfSizeZ:f}=i,p=.01*Math.max(u,d,f);if(s>u+p||c>d+p||l>f+p){if(this._maxLoggedBoxWarnings>0){let t=e=>`[${e.halfSizeX}, ${e.halfSizeY}, ${e.halfSizeZ}]`;o.getLogger(this).warn(`Node ${e} reported bounding box too small. got ${t(i)} but points cover ${t(a)}`),--this._maxLoggedBoxWarnings===0&&o.getLogger(this).warn(` Too many bounding box errors, stopping reporting for this layer.`)}this._index.setRenderObb(e,a)}return new _e(e,r,ie(i.getCenter(w())),i,n.childCount===0,t.points,t.rgb,t.attributes,t.pointIdFilterMap)}get usedMemory(){let e=0;return this._renderer.forEachNode(t=>{e+=$,e+=l(t.coordinates);for(let n of t.attributes){let t=n.values;ee(t.buffer)&&(e+=l(t))}}),e}get unloadedMemory(){let e=this._renderedNodes.size;if(e<4)return 0;let t=this._renderedNodes.values().reduce((e,t)=>e+this._index.getNode(t).vertexCount),n=this._loadingNodes.size;for(let e=0;e<this._workQueue.length;e++)n+=this._workQueue[e].load.length,n-=this._workQueue[e].remove.length;return n<0?0:n*t/e*((this.usedMemory-e*$)/t)+n*$}get performanceInfo(){return new R(this.usedMemory,this._renderedNodes.size,this._renderedNodes.values().reduce((e,t)=>e+this._index.getNode(t).vertexCount,0),this.maximumPointCount,new z(this._loadingNodes.size,this._indexQueue.length,this._workQueue.length,this._idleQueue.length))}get test(){}};e([S()],Z.prototype,`layer`,void 0),e([S()],Z.prototype,`baseUrl`,null),e([S()],Z.prototype,`pointScale`,null),e([S()],Z.prototype,`useRealWorldSymbolSizes`,null),e([S()],Z.prototype,`pointSize`,null),e([S()],Z.prototype,`inverseDensity`,null),e([S()],Z.prototype,`maximumPointCount`,void 0),e([S({readOnly:!0})],Z.prototype,`availableFields`,null),e([S({readOnly:!0})],Z.prototype,`_clippingBox`,null),e([S({readOnly:!0})],Z.prototype,`_elevationOffset`,null),e([S({type:Boolean})],Z.prototype,`slicePlaneEnabled`,void 0),e([S()],Z.prototype,`_graphicOrigin`,null),e([S()],Z.prototype,`updating`,void 0),e([S(ke)],Z.prototype,`updatingProgress`,void 0),e([S({readOnly:!0})],Z.prototype,`updatingProgressValue`,null),e([S({readOnly:!0})],Z.prototype,`visibleAtCurrentScale`,null),Z=e([C(`esri.views.3d.layers.PointCloudLayerView3D`)],Z);const Ie=Z;class Q{constructor(e,t,n){this.node=e,this.pointId=t,this.point=n}getGeometry(){return new k([],Array.from(this.point),!0,!1)}get attributePointId(){let{node:e,pointId:t}=this;return e.pointIdFilterMap==null?t:e.pointIdFilterMap[t]}get usedMemory(){return u+u+d+f(this.point,d)}}class Le{constructor(e){this.features=e}get usedMemory(){return this.features.reduce((e,t)=>e+t.usedMemory,u+p)}}const $=160;function Re(e){return t=>e.immediate.schedule(t)}export{Ie as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../Graphic.js";import n from"../../../request.js";import{isSome as r}from"../../../core/arrayUtils.js";import{result as i,forEach as a}from"../../../core/asyncUtils.js";import"../../../core/has.js";import o from"../../../core/Logger.js";import{destroyMaybe as s,abortMaybe as c}from"../../../core/maybe.js";import{estimateNumberArrayMemory as l,baseObjectMemory as u,estimateNumberMemory as d,estimateFixedArrayMemory as f,baseArrayMemory as p}from"../../../core/memoryEstimations.js";import{isAbortError as m,allSettledValues as h,throwIfAborted as g}from"../../../core/promiseUtils.js";import{initial as _,watch as v,sync as y,syncAndInitial as b}from"../../../core/reactiveUtils.js";import{pt2px as x}from"../../../core/screenUtils.js";import{isArrayBuffer as ee}from"../../../core/typedArrayUtil.js";import{property as S,subclass as C}from"../../../core/accessorSupport/decorators.js";import{add as te,dot as ne,copy as re}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{clone as ie}from"../../../core/libs/gl-matrix-2/factories/vec3f32.js";import{create as w,fromValues as ae}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import oe from"../../../geometry/Extent.js";import se from"../../../geometry/Point.js";import{projectBoundingSphere as ce}from"../../../geometry/projection/projectBoundingSphere.js";import{projectVectorToVector as le}from"../../../geometry/projection/projectVectorToVector.js";import{create as ue,fromMinMax as T}from"../../../geometry/support/aaBoundingBox.js";import{create as E,fromNormalAndOffset as D}from"../../../geometry/support/plane.js";import{isInEffectiveScaleRange as O}from"../../../geometry/support/scaleUtils.js";import{Sphere as k}from"../../../geometry/support/sphere.js";import A from"../../../layers/graphics/OptimizedGeometry.js";import{QueryEngine as j}from"../../../layers/graphics/data/QueryEngine.js";import M from"../../../layers/support/CodedValue.js";import N from"../../../layers/support/CodedValueDomain.js";import{unpackFieldNames as P}from"../../../layers/support/fieldUtils.js";import F from"../../../rest/support/FeatureSet.js";import I from"../../../rest/support/Query.js";import{getElevationOffset as L}from"../../../support/elevationInfoUtils.js";import{LayerView3D as R}from"./LayerView3D.js";import{PointCloudLayerViewPerformanceInfo as z,QueuePerformanceInfo as B}from"./PointCloudLayerViewPerformanceInfo.js";import{PointCloudWorkerHandle as V}from"./PointCloudWorkerHandle.js";import{I3SQueryFeatureStore as H}from"./i3s/I3SQueryFeatureStore.js";import{checkPointCloudLayerValid as U,checkPointCloudLayerCompatibleWithView as de}from"./i3s/I3SUtil.js";import{nodeDiff as fe,sortFrontToBack as pe,splitWorkEntries as me}from"./i3s/LoDUtil.js";import{PagedNodeIndex as he}from"./i3s/PagedNodeIndex.js";import{PointCloudGraphic as W}from"./i3s/PointCloudGraphic.js";import{PointCloudRenderer as ge}from"./i3s/PointCloudRenderer.js";import{isPointRendererNode as _e,PointCloudRendererNode as ve}from"./i3s/PointCloudRendererNode.js";import{getSplatSizeAlgorithm as ye,getFixedSizeAlgorithm as G,getRendererInfo as K,getFilterInfo as q,rendererUsesFixedSizes as be,canUpdateRendererWithoutReload as xe,getAttributeInfo as J}from"./i3s/PointCloudRendererUtil.js";import{getAttributeValues as Se,readGeometry as Ce,elevationFromPositions as we}from"./i3s/PointCloudWorkerUtil.js";import{normalizeHighlightTarget as Te,emptyHighlightHandle as Ee}from"./support/highlightUtils.js";import{PopupSceneLayerView as De}from"./support/PopupSceneLayerView.js";import{projectToBoundingBox as Oe}from"../support/extentUtils.js";import{computeMapPointFromVec3d as ke}from"../support/hitTest.js";import{Obb as Y}from"../support/orientedBoundingBox.js";import{updatingProgress as Ae}from"../support/updatingProperties.js";import X from"../../layers/LayerView.js";import{PointCloudLayerViewMixin as je}from"../../layers/PointCloudLayerView.js";import{getHighlightName as Me}from"../../support/highlightOptionsUtils.js";import{PromiseQueue as Ne}from"../../support/PromiseQueue.js";import{TaskPriority as Pe}from"../../support/Scheduler.js";const Fe=E();let Z=class extends je(De(R(X))){constructor(){super(...arguments),this.type=`point-cloud-3d`,this.maximumPointCount=4e6,this.slicePlaneEnabled=!1,this._renderer=null,this._rendererAdded=!1,this._renderedNodes=new Set,this._updateViewNeeded=!0,this._lodFactor=1,this._maxLoggedBoxWarnings=5,this._pageMultiplier=1,this._nodeLoadEpoch=0,this._indexQueue=[],this._workQueue=[],this._idleQueue=new Ne,this._loadingPages=new Map,this._loadingNodes=new Map,this._recalcWork=!0,this._layerIsVisible=!1,this._codedDomainPopulationPromise=null,this._codedDomainPopulationAbortController=null,this._totalWork=0,this._index=null,this._loadingInitNodePage=!1,this._nodeIdArray=[],this.ignoresMemoryFactor=!1}get baseUrl(){return this.layer.parsedUrl?.path??``}get pointScale(){let e=ye(this.layer?.renderer);return e?.scaleFactor==null?1:e.scaleFactor}get useRealWorldSymbolSizes(){let e=G(this.layer?.renderer);return e?.useRealWorldSymbolSizes!=null&&e.useRealWorldSymbolSizes}get pointSize(){let e=G(this.layer?.renderer);return e?.size==null?0:e.size}get inverseDensity(){return this.layer?.renderer?96/this.layer.renderer.pointsPerInch:5}get availableFields(){let e=K(this.layer),t=new Set;e.primaryAttribute&&t.add(e.primaryAttribute.name),e.modulationAttribute&&t.add(e.modulationAttribute.name);let n=q(this.layer);if(n)for(let e of n)e.attributeInfo&&t.add(e.attributeInfo.name);if(this.layer.outFields)for(let e of P(this.layer.fieldsIndex,this.layer.outFields))t.add(e);return Array.from(t)}get _clippingBox(){if(!this.view||!this.view.clippingArea)return null;let e=ue(),t=this.view.renderSpatialReference;return Oe(this.view.clippingArea,e,t)?e:null}get _elevationOffset(){let e=this.layer&&this.layer.elevationInfo;return e?.mode===`absolute-height`?L(e,this.layer.spatialReference):0}get _graphicOrigin(){return this.layer.graphicOrigin}initialize(){let e=this.view.resourceController,t=Re(e);this._worker=new V(t),this.addResolvingPromise(this._worker.promise),this.addResolvingPromise(this.layer.rootPagePromise),U(this.layer),de(this.layer,this.view),this._initRenderer();let n=this._initNodePages(),r=this.view.resourceController.memoryController;this._memCache=r.newCache(`pcl-${this.layer.uid}`),this._queryFeaturesCache=r.newCache(`pcl-query-features-${this.layer.uid};`),this._updatingHandles.add(()=>this._clippingBox,()=>this._setUpdateViewNeeded(),_),this._updatingHandles.add(()=>this._elevationOffset,()=>this._elevationOffsetChanged(),_),this._updatingHandles.add(()=>this.layer.renderer,(e,t)=>this._rendererChanged(e,t),_),this._updatingHandles.add(()=>this.layer.filters,()=>this._reload(),_),this._updatingHandles.add(()=>this.layer.outFields,()=>this._reload(),_),this._updatingHandles.add(()=>this.layer.effectiveScaleRange,()=>this._setUpdateViewNeeded()),this._updatingHandles.add(()=>this.view.state.contentCamera,()=>this._setUpdateViewNeeded()),this.addHandles([v(()=>this.view.quality,()=>this._setUpdateViewNeeded(),y)]),this.addResolvingPromise(n),this.when(()=>{this.addHandles([e.scheduler.registerTask(Pe.POINT_CLOUD_LAYER,this),v(()=>this.view.state.mode===2,()=>this._setUpdateViewNeeded(),b),this._updatingHandles.add(()=>this.suspended,e=>{e?this._clearNodeState():this._setUpdateViewNeeded()},_)])},()=>{this._updatingHandles.removeAll(),this.removeAllHandles()})}_setUpdateViewNeeded(){this._updateViewNeeded=!0,this._updateLoading()}destroy(){this.cancelLoading(),this._worker=s(this._worker),this._destroyRenderer(),this._memCache=s(this._memCache),this._queryFeaturesCache=s(this._queryFeaturesCache),this._queryEngine=s(this._queryEngine),this._codedDomainPopulationAbortController=c(this._codedDomainPopulationAbortController),this._codedDomainPopulationPromise=null}_initRenderer(){this._renderer=new ge({createGraphic:(e,t,n)=>this._createGraphic(e,t,n)}),this._renderer.layerViewUid=this.uid,this._updatingHandles.add(()=>this._clippingBox,e=>this._renderer.clippingBox=e,_),this._updatingHandles.add(()=>this.suspended,e=>this._setPointsVisible(!e),_),this._updatingHandles.add(()=>this.pointScale,e=>this._renderer.scaleFactor=e,_),this._renderer.minSizePx=Math.sqrt(2),this._updatingHandles.add(()=>this.useRealWorldSymbolSizes,e=>this._renderer.useRealWorldSymbolSizes=e,_),this._updatingHandles.add(()=>this.pointSize,e=>{let t=x(e);this._renderer.size=e,this._renderer.sizePx=t},_),this._updatingHandles.add(()=>this.slicePlaneEnabled,e=>this._renderer.slicePlaneEnabled=e,_),this._updatingHandles.add(()=>this.inverseDensity,()=>this._setUpdateViewNeeded(),_),this._updatingHandles.add(()=>this.maximumPointCount,()=>this._setUpdateViewNeeded(),_),this._updatingHandles.add(()=>this.view.qualitySettings.sceneService.pointCloudLoDFactor,e=>{this._lodFactor=e,this._setUpdateViewNeeded()},_)}_destroyRenderer(){this._renderer.removeAll(),this._setPointsVisible(!1)}_createGraphic(e,t,n,r){let i=e.pointIdFilterMap==null?t:e.pointIdFilterMap[t],a=n?`declaredClass`in n?n:ke(this.view,n):null;return r??=this._createGraphicAttributes(e,i),new W({pointCloudMetadata:{nodeId:e.id,pointIndexInNode:t,attributePointIndexInNode:i,epoch:this._nodeLoadEpoch},geometry:a,attributes:r,layer:this.layer,sourceLayer:this.layer,origin:this._graphicOrigin})}_createGraphicAttributes(e,t){let n={};for(let r of e.attributes)this._encodeGraphicAttribute(r.attributeInfo,r.values,t,n);return n}_getGraphicAttribute(e,t,n){let r=e.storageInfo?.attributeValues,i=r?.valuesPerElement??1;if(i===1)return t[n];if(r?.valueType===`UInt8`&&i<=4){let e=0,r=n*i;for(let n=r;n<r+i;n++)e=(e<<8)+t[n];return e}}_encodeGraphicAttribute(e,t,n,r){r[e.name]=this._getGraphicAttribute(e,t,n)}_setPointsVisible(e){e&&!this._rendererAdded?(this.view.stage.addRenderPlugin(this._renderer),this._rendererAdded=!0):!e&&this._rendererAdded&&(this.view.stage.removeRenderPlugin(this._renderer),this._rendererAdded=!1)}_rendererChanged(e,t){if(this._renderer.useFixedSizes=be(e),xe(e,t)){this._setUpdateViewNeeded();return}this._reload()}_reload(){this._clearNodeState(),this._memCache.clear(),this._setUpdateViewNeeded()}_elevationOffsetChanged(){this._clearNodeState(),this._memCache.clear(),this._initNodePages().catch(()=>{})}_displayNodes(e){this._workQueue=fe([...this._renderedNodes],e,this._index),pe(this._workQueue,this.view.state.contentCamera.viewForward,this._index),me(this._workQueue,8,this._index),this._updateQueues(),this._totalWork=this._computeWork(),this._updateLoading(),this._layerIsVisible=e.length>0||this._loadingInitNodePage,this.notifyChange(`suspended`)}cancelLoading(){this._cancelNodeLoading(),this._cancelIndexLoading()}_cancelNodeLoading(){[...this._loadingNodes.values()].forEach(e=>e.abort()),this._workQueue=[],this._idleQueue.cancelAll(),this._totalWork=this._computeWork(),this._updateLoading()}_updateQueues(){let e=new Set;this._workQueue.forEach(t=>t.load.forEach(t=>e.add(t)));let t=[];this._loadingNodes.forEach((n,r)=>{e.has(r)||(this._loadingNodes.delete(r),t.push(n))}),t.forEach(e=>e.abort()),this._workQueue=this._workQueue.filter(e=>{for(let t of e.load)if(this._loadingNodes.has(t))return this._recalcWork=!0,!1;return!0}),this._totalWork=this._computeWork(),this._updateLoading()}_cancelIndexLoading(){this._indexQueue=[],this._loadingPages.forEach(e=>e.abort()),this._loadingPages.clear(),this._totalWork=this._computeWork(),this._updateLoading()}_clearNodeState(){this._nodeLoadEpoch++,this._renderedNodes.forEach(e=>this._removeFromRenderer(e)),this._cancelNodeLoading()}get readyToRun(){return this.suspended?this._updateViewNeeded:this._updateViewNeeded||this._indexQueue.length>0||this._workQueue.length>0||this._idleQueue.readyToRun}runTask(e){if(this.suspended){if(this._updateViewNeeded){this._updateViewNeeded=!1;let e=this._isRootNodeVisible();e!==this._layerIsVisible&&(this._layerIsVisible=e,this.notifyChange(`suspended`)),this._updateLoading()}return}for(e.run(()=>this._updateWorkQueues());this._indexQueue.length>0&&!e.done;)this._processIndexQueue(),e.madeProgress();this._processWorkQueue(e),this._idleQueue.runTask(e)}async _processIndexQueue(){let e=this._indexQueue.shift(),t=new AbortController;this._loadingPages.set(e,t);try{let n=await this._loadNodePage(e,t.signal);this._index.addPage(e,n,this._elevationOffset),this._setUpdateViewNeeded(),this._loadingPages.delete(e)}catch{this._loadingPages.get(e)===t&&this._loadingPages.delete(e)}}_processWorkQueue(e){for(;!e.done;){let t=this._scheduleWorkEntry();if(t==null){e.madeProgress();return}this._processWorkEntry(t),e.madeProgress()}}_scheduleWorkEntry(){let e=this._workQueue.length;for(;e--;){let e=this._workQueue.shift();if(e.remove.find(e=>!this._renderedNodes.has(e)))this._workQueue.push(e);else return e}return null}async _processWorkEntry(e){if(e.load.length===0){for(let t of e.remove)this._removeFromRenderer(t);return}let t=e.load.map(e=>{let t=new AbortController;return this._loadingNodes.set(e,t),t});this._updateLoading();try{let n=await Promise.all(e.load.map((e,n)=>this._memCache.pop(`${e}`)??this._loadNode(e,t[n].signal)));for(let t=0;t<e.load.length;t++)if(n[t]){let r=this._setupRendererData(e.load[t],n[t]);this._addToRenderer(r)}for(let t of e.remove)this._removeFromRenderer(t);for(let t of e.load)this._loadingNodes.delete(t)}catch{e.load.forEach((e,n)=>{this._loadingNodes.get(e)===t[n]&&this._loadingNodes.delete(e)})}this._updateLoading(),this._recalcWork&&!this._idleQueue.updating&&this._indexQueue.length===0&&this._loadingNodes.size===0&&(this._recalcWork=!1,this._setUpdateViewNeeded())}async _populateClassCodeCodedDomain(e,t){let n=`CLASS_CODE`,r=this.layer.fieldsIndex.get(n);if(!r||r.domain||!e.includes(r.name))return;let a=await i(this.layer.queryCachedStatistics(n,{signal:t}));if(a.ok===!1)return;let o=a.value?.stats?.labels?.labels;o&&Array.isArray(o)&&(r.domain=new N({name:`CLASS_CODE`,codedValues:o.map(e=>new M({code:e.value,name:e.label}))}))}async prepareFetchPopupFeatures(e){return this._codedDomainPopulationPromise||=(this._codedDomainPopulationAbortController=new AbortController,this._populateClassCodeCodedDomain(e,this._codedDomainPopulationAbortController.signal).then(()=>{this._codedDomainPopulationAbortController=null})),this._codedDomainPopulationPromise}async whenGraphicAttributes(e,t){let n=this._splitGraphicsPerNode(e),i=this.layer.attributeStorageInfo,o=t.map(e=>J(i,e)).filter(r),s=async(e,t)=>{let n=this._index.getNode(t);await a(o,async t=>{let r=t.useElevation?await this._loadElevationAttributeFromGeometry(n.resourceId):await this._loadAndParseAttribute(n,t);if(r){for(let n of e)if(this._isValidPointGraphic(n)){let e=n.pointCloudMetadata.attributePointIndexInNode;this._encodeGraphicAttribute(t,r,e,n.attributes)}}})},c=[];return n.forEach((e,t)=>{c.push(s(e,t))}),await Promise.allSettled(c),e}_isValidPointGraphic(e){return e instanceof W&&e.pointCloudMetadata?.epoch===this._nodeLoadEpoch}_splitGraphicsPerNode(e){let t=new Map;for(let n of e){if(!this._isValidPointGraphic(n))continue;let e=n.pointCloudMetadata,r=t.get(e.nodeId);r?r.push(n):t.set(e.nodeId,[n])}return t}async _loadAndParseAttribute(e,t){let n=await this._loadAttribute(e.resourceId,t,null);return n?Se({attributeInfo:t,buffer:n},null,e.vertexCount):null}async _loadElevationAttributeFromGeometry(e){let t=this.layer.store.defaultGeometrySchema,n=Ce(t,await this._loadGeometry(e,null));return we(n,n.length/3)}highlight(e,n){let r=Te(e);if(r.length===0||!(r[0]instanceof t))return Ee;let i=r;return this._renderer.highlight(i.map(e=>this._graphicToPointDefinition(e)),Me(n))}_graphicToPointDefinition(e){if(!this._isValidPointGraphic(e))return null;let{nodeId:t,pointIndexInNode:n}=e.pointCloudMetadata;return t!=null&&n!=null?{nodeId:t,pointId:n}:null}_computeWork(){let e=0;for(let t of this._workQueue)e+=t.load.length+t.remove.length;return e+=this._loadingNodes.size,e+=(this._indexQueue.length+this._loadingPages.size)*this._index.pageSize,e+=this._loadingInitNodePage?100:0,e+=this._updateViewNeeded?100:0,e}get updatingProgressValue(){if(this.suspended)return+!this._updateViewNeeded;let e=this._computeWork();return 1-Math.min(this._totalWork,e)/this._totalWork}_updateLoading(){this.notifyChange(`updating`),this.notifyChange(`updatingProgressValue`)}canResume(){return super.canResume()&&this._layerIsVisible}isUpdating(){return this.suspended?this._updateViewNeeded:this._computeWork()>0}get visibleAtCurrentScale(){return O(this.layer.effectiveScaleRange,this.view.scale)}async queryFeatures(e,n){let r=await this._ensureQueryEngine().executeQuery(this._ensureQueryJSON(e),n?.signal),i=r.features;r.features=[];let a=F.fromJSON(r),o=this.view.spatialReference;return a.features=i.map(e=>{let{attributes:n,metadata:r}=e;if(!r){let n=t.fromJSON(e);return n.geometry&&(n.geometry.spatialReference=a.spatialReference??o),n.layer=this.layer,n.sourceLayer=this.layer,n.origin=this._graphicOrigin,n}let i=e.geometry?se.fromJSON(e.geometry):void 0;return i&&(i.spatialReference=a.spatialReference??o),this._createGraphic(r.node,r.pointId,i,n)}),a}createQuery(){let e={outFields:[`*`],returnGeometry:!0,outSpatialReference:this.view.spatialReference,returnZ:!0};return new I(e)}async queryFeatureCount(e,t){return await this._ensureQueryEngine().executeQueryForCount(this._ensureQueryJSON(e),t?.signal)}async queryExtent(e,t){let{count:n,extent:r}=await this._ensureQueryEngine().executeQueryForExtent(this._ensureQueryJSON(e),t?.signal);return{count:n,extent:oe.fromJSON(r)}}_ensureQueryJSON(e){return e==null?new I({outSpatialReference:this.view.spatialReference}).toJSON():I.from(e).toJSON()}_ensureQueryEngine(){if(this._queryEngine)return this._queryEngine;let{spatialReference:e}=this.view;return this._queryEngine=new j({fieldsIndex:this.layer.fieldsIndex.toJSON(),geometryType:`esriGeometryPoint`,spatialReference:e,featureIdInfo:{type:`object-id`,fieldName:`objectId`},hasZ:!0,featureStore:new H({sourceSpatialReference:e,viewSpatialReference:e,forAllFeatures:(e,t)=>{this._renderer.forEachNode(n=>{if(t){let e=n.obb,r=new k(e.getCenter(w()),e.radius);if(ce(r,this.view.renderSpatialReference,r,this.view.spatialReference),t(r)===1)return}let r=this._queryFeaturesCache.get(`${n.id}`);r||(r=this._createQueryPointFeatures(n),this._queryFeaturesCache.put(`${n.id}`,r)),r.features.forEach(e)})},getFeatureExtent:({point:e},t)=>T(e,e,t),featureAdapter:{cloneWithGeometry:(e,t,n)=>new Q(e.node,e.pointId,t.coords),getAttribute:({node:e,attributePointId:t},n)=>{for(let r of e.attributes)if(r.attributeInfo.name===n)return this._getGraphicAttribute(r.attributeInfo,r.values,t)},getAttributes:({node:e,attributePointId:t})=>this._createGraphicAttributes(e,t),getCentroid:e=>e.getGeometry(),getGeometry:e=>e.getGeometry(),getObjectId:()=>void 0,getMetadata:e=>e}})}),this._queryEngine}_createQueryPointFeatures(e){let t=e.coordinates,n=[];for(let r=0;r<t.length/3;r++){let i=r*3,a=ae(t[i+0],t[i+1],t[i+2]);te(a,a,e.origin),le(a,this.view.renderSpatialReference,a,this.view.spatialReference);let o=new Q(e,r,a);n.push(o)}return new Le(n)}async _initNodePages(){let e=this.layer.store.index,t=e.nodesPerPage||e.nodePerIndexBlock;this._index=new he(this.layer.spatialReference,this.view.renderCoordsHelper.spatialReference,t),this._cancelIndexLoading(),this._traverseVisible=this._index.createVisibilityTraverse(),this._loadingInitNodePage=!0,this._layerIsVisible=!0,this.notifyChange(`suspended`),this._updateLoading(),this._pageMultiplier=e.nodesPerPage==null?e.nodePerIndexBlock:1;let n=await this.layer.rootPagePromise;if(this._loadingInitNodePage=!1,!n){o.getLogger(this).error(`Point cloud layer root page not loaded`);return}this._index.addPage(0,this._processJSONNodes(n,0),this._elevationOffset),this._setUpdateViewNeeded()}_loadNodePage(e,t){let n=`${this.baseUrl}/nodepages/${e*this._pageMultiplier}`;return this._requestNodePage(n,t).then(t=>this._processJSONNodes(t,e))}_processJSONNodes(e,t){let n=t*this._index.pageSize;return e.nodes.map((e,t)=>({resourceId:e.resourceId??n+t,obb:Y.fromJSON(e.obb),obbInRenderSR:new Y,firstChild:e.firstChild,childCount:e.childCount,vertexCount:e.vertexCount??e.pointCount,lodThreshold:e.lodThreshold??e.effectiveArea}))}_updateWorkQueues(){if(!this._updateViewNeeded)return!1;let e=this.view.quality,t=this.inverseDensity/this._lodFactor*e,n=this.maximumPointCount*this._lodFactor*e,r=this._computeNodesForMinimumDensity(t),i=this._computePointCount(r),a=Math.sqrt(i/(n*.75));for(;i>n;)t*=a,r=this._computeNodesForMinimumDensity(t),i=this._computePointCount(r),a=Math.sqrt(2);return this._displayNodes(r),this._updateViewNeeded=!1,this._updateLoading(),!0}_computePointCount(e){let t=0;for(let n=0;n<e.length;n++){let r=this._index.getNode(e[n]);r&&(t+=r.vertexCount)}return t}_isRootNodeVisible(){let e=!1;return this._traverseVisible({frustum:this.view.state.contentCamera.frustum,clippingBox:this._clippingBox},{predicate:(t,n,r)=>(e=r,!1),pageMiss:()=>{}}),e}_computeNodesForMinimumDensity(e){let t=this.view.state.contentCamera,n=t.frustum,r=this._clippingBox,i=t.viewForward,a=ne(i,t.eye),o=D(i,-a,Fe),s=t.screenPixelSizePerDistance/2,c=e*e,l=this._nodeIdArray;l.length=0;let u=e=>l.push(e);return this._traverseVisible({frustum:n,clippingBox:r},{predicate:(e,t,n)=>{if(!n)return!1;if(t.childCount===0)return u(e),!1;let r=this._index.getRenderObb(e);return this._computeAveragePixelArea(r,t.lodThreshold,t.vertexCount,o,s)<=c?(u(e),!1):!0},pageMiss:(e,t)=>{u(e),this._indexQueue.includes(t)||this._indexQueue.push(t)}}),l}_computeAveragePixelArea(e,t,n,r,i){let a=Math.max(1e-7,e.signedDistanceRangePlane(r).min);return t/(a*a)/(4*i*i)/n}_loadNode(e,t){try{return this._loadNodeAsync(e,t)}catch(e){throw m(e)||o.getLogger(this).error(e),e}}async _loadAdditionalUserAttributes(e,t,n){let i=this.layer.outFields;if(!i)return[];let a=P(this.layer.fieldsIndex,i),o=new Set(e.map(e=>e==null?null:e.name)),s=this.layer.attributeStorageInfo,c=[];for(let e of a){if(o.has(e))continue;let n=J(s,e);n&&c.push(t(n))}let l=await h(c);return g(n),l.filter(r)}async _loadNodeAsync(e,t){let n=this._index.getNode(e),r=K(this.layer),i=q(this.layer),a=n.resourceId,o=async e=>{if(!e)return null;if(e.useElevation)return{attributeInfo:e,buffer:null};let n=await this._loadAttribute(a,e,t);return n==null?null:{attributeInfo:e,buffer:n}};return this._idleQueue.push(async()=>{let n=this._loadGeometry(a,t),{primaryAttribute:s,modulationAttribute:c}=r,l=o(s),u=o(c),d=i.map(e=>e.attributeInfo),f=d.map(e=>o(e)),p=this._loadAdditionalUserAttributes([s,c,...d],o,t),[m,h,_,v,y]=await Promise.all([n,l,u,Promise.all(f),p]);g(t);let b={geometryBuffer:m,primaryAttributeData:h,modulationAttributeData:_,filterAttributesData:v,userAttributesData:y,schema:this.layer.store.defaultGeometrySchema,rendererInfo:r,filterInfo:i,obbData:this._index.getRenderObb(e).data,elevationOffset:this._elevationOffset,inSR:this.layer.spatialReference.toJSON(),outSR:this.view.renderCoordsHelper.spatialReference.toJSON()};return this._worker.invoke(b,t)},t)}async _loadGeometry(e,t){return this._requestData(`${this.baseUrl}/nodes/${e}/geometries/0`,t)}async _loadAttribute(e,t,n){if(!t?.storageInfo)return null;let r=t.storageInfo.key;return this._requestData(`${this.baseUrl}/nodes/${e}/attributes/${r}`,n)}async _requestNodePage(e,t){let r={useQueue:!1,query:{f:`json`,...this.layer.customParameters,token:this.layer.apiKey},responseType:`json`,signal:t};return(await n(e,r)).data}async _requestData(e,t){let r={useQueue:!1,query:{...this.layer.customParameters,token:this.layer.apiKey},responseType:`array-buffer`,signal:t};return(await n(e,r)).data}_removeFromRenderer(e){if(this._renderedNodes.has(e)){let t=this._renderer.removeNode(e);this._renderedNodes.delete(e),this._memCache.put(`${t.id}`,t)}}_addToRenderer(e){this._renderedNodes.has(e.id)||(this._renderedNodes.add(e.id),this._renderer.addNode(e))}_setupRendererData(e,t){let n=this._index.getNode(e),r=Math.sqrt(n.lodThreshold/n.vertexCount),i=this._index.getRenderObb(e);if(_e(t))return t.splatSize=r,t.obb=i,re(t.origin,t.obb.getCenter(w())),t;let a=Y.fromData(t.obbData),{halfSizeX:s,halfSizeY:c,halfSizeZ:l}=a,{halfSizeX:u,halfSizeY:d,halfSizeZ:f}=i,p=.01*Math.max(u,d,f);if(s>u+p||c>d+p||l>f+p){if(this._maxLoggedBoxWarnings>0){let t=e=>`[${e.halfSizeX}, ${e.halfSizeY}, ${e.halfSizeZ}]`;o.getLogger(this).warn(`Node ${e} reported bounding box too small. got ${t(i)} but points cover ${t(a)}`),--this._maxLoggedBoxWarnings===0&&o.getLogger(this).warn(` Too many bounding box errors, stopping reporting for this layer.`)}this._index.setRenderObb(e,a)}return new ve(e,r,ie(i.getCenter(w())),i,n.childCount===0,t.points,t.rgb,t.attributes,t.pointIdFilterMap)}get usedMemory(){let e=0;return this._renderer.forEachNode(t=>{e+=$,e+=l(t.coordinates);for(let n of t.attributes){let t=n.values;ee(t.buffer)&&(e+=l(t))}}),e}get unloadedMemory(){let e=this._renderedNodes.size;if(e<4)return 0;let t=this._renderedNodes.values().reduce((e,t)=>e+this._index.getNode(t).vertexCount),n=this._loadingNodes.size;for(let e=0;e<this._workQueue.length;e++)n+=this._workQueue[e].load.length,n-=this._workQueue[e].remove.length;return n<0?0:n*t/e*((this.usedMemory-e*$)/t)+n*$}get performanceInfo(){return new z(this.usedMemory,this._renderedNodes.size,this._renderedNodes.values().reduce((e,t)=>e+this._index.getNode(t).vertexCount,0),this.maximumPointCount,new B(this._loadingNodes.size,this._indexQueue.length,this._workQueue.length,this._idleQueue.length))}get test(){}};e([S()],Z.prototype,`layer`,void 0),e([S()],Z.prototype,`baseUrl`,null),e([S()],Z.prototype,`pointScale`,null),e([S()],Z.prototype,`useRealWorldSymbolSizes`,null),e([S()],Z.prototype,`pointSize`,null),e([S()],Z.prototype,`inverseDensity`,null),e([S()],Z.prototype,`maximumPointCount`,void 0),e([S({readOnly:!0})],Z.prototype,`availableFields`,null),e([S({readOnly:!0})],Z.prototype,`_clippingBox`,null),e([S({readOnly:!0})],Z.prototype,`_elevationOffset`,null),e([S({type:Boolean})],Z.prototype,`slicePlaneEnabled`,void 0),e([S()],Z.prototype,`_graphicOrigin`,null),e([S()],Z.prototype,`updating`,void 0),e([S(Ae)],Z.prototype,`updatingProgress`,void 0),e([S({readOnly:!0})],Z.prototype,`updatingProgressValue`,null),e([S({readOnly:!0})],Z.prototype,`visibleAtCurrentScale`,null),Z=e([C(`esri.views.3d.layers.PointCloudLayerView3D`)],Z);const Ie=Z;class Q{constructor(e,t,n){this.node=e,this.pointId=t,this.point=n}getGeometry(){return new A([],Array.from(this.point),!0,!1)}get attributePointId(){let{node:e,pointId:t}=this;return e.pointIdFilterMap==null?t:e.pointIdFilterMap[t]}get usedMemory(){return u+u+d+f(this.point,d)}}class Le{constructor(e){this.features=e}get usedMemory(){return this.features.reduce((e,t)=>e+t.usedMemory,u+p)}}const $=160;function Re(e){return t=>e.immediate.schedule(t)}export{Ie as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../core/Collection.js";import n from"../../../core/CollectionFlattener.js";import{destroyMaybe as r}from"../../../core/maybe.js";import{initial as i,when as a,watch as o}from"../../../core/reactiveUtils.js";import{property as s,subclass as c}from"../../../core/accessorSupport/decorators.js";import{projectAsync as l}from"../../../geometry/projectionUtils.js";import u from"../../../rest/support/DirectionLine.js";import
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../core/Collection.js";import n from"../../../core/CollectionFlattener.js";import{destroyMaybe as r}from"../../../core/maybe.js";import{initial as i,when as a,watch as o}from"../../../core/reactiveUtils.js";import{property as s,subclass as c}from"../../../core/accessorSupport/decorators.js";import{projectAsync as l}from"../../../geometry/projectionUtils.js";import{isInEffectiveScaleRange as u}from"../../../geometry/support/scaleUtils.js";import d from"../../../rest/support/DirectionLine.js";import f from"../../../rest/support/DirectionPoint.js";import p from"../../../rest/support/PointBarrier.js";import m from"../../../rest/support/PolygonBarrier.js";import h from"../../../rest/support/PolylineBarrier.js";import g from"../../../rest/support/RouteInfo.js";import _ from"../../../rest/support/Stop.js";import{LayerView3D as v}from"./LayerView3D.js";import{GraphicsProcessor as y}from"./graphics/GraphicsProcessor.js";import{LayerViewPerformanceInfo as b}from"./support/LayerViewPerformanceInfo.js";import{EventedSet as x}from"../support/EventedSet.js";import S from"../../layers/LayerView.js";import{getHighlightName as C}from"../../support/highlightOptionsUtils.js";import{hasLayerBasedScaleVisibility as w}from"../../support/layerViewUtils.js";function T(e){return e instanceof d||e instanceof f||e instanceof p||e instanceof m||e instanceof h||e instanceof g||e instanceof _}let E=class extends v(S){constructor(){super(...arguments),this.type=`route-3d`,this.loadedGraphics=new x,this._networkFeatureToGraphic=new Map,this._graphicToNetworkFeature=new Map,this.slicePlaneEnabled=!1,this.fullExtentInLocalViewSpatialReference=null}initialize(){this._set(`processor`,new y({owner:this,scaleVisibilityEnabled:!0,frustumVisibilityEnabled:!0})),this.addResolvingPromise(this.processor.initializePromise),this._updatingHandles.addOnCollectionChange(()=>this._routeItems,e=>this._routeItemsChanged(e),i),this.view.viewingMode===`local`&&this.addResolvingPromise((async()=>this.fullExtentInLocalViewSpatialReference=await l(this.layer.fullExtent,this.view.spatialReference).catch(()=>null))()),this.addHandles(a(()=>this.view?.groundView?.ready,()=>()=>this.notifyChange(`updating`),{once:!0}))}destroy(){this._updatingHandles.removeAll(),this._networkFeatureToGraphic.clear(),this._graphicToNetworkFeature.clear(),this._set(`processor`,r(this.processor)),this._get(`_routeItems`)?.destroy()}get _routeItems(){return new n({getCollections:()=>[this.layer.pointBarriers,this.layer.polygonBarriers,this.layer.polylineBarriers,this.layer.stops,this.layer.directionLines,this.layer.directionPoints,this.layer.routeInfo==null?null:new t([this.layer.routeInfo])]})}_routeItemsChanged(e){if(e.removed.length){this.loadedGraphics.removeMany(e.removed.map(e=>{let t=this._networkFeatureToGraphic.get(e);return this._networkFeatureToGraphic.delete(e),this._graphicToNetworkFeature.delete(t),t}));for(let t of e.removed)this.removeHandles(t)}if(e.added.length){this.loadedGraphics.addMany(e.added.map(e=>{let t=e.toGraphic();return this._networkFeatureToGraphic.set(e,t),this._graphicToNetworkFeature.set(t,e),t}));for(let t of e.added)this.addHandles([o(()=>t.geometry,(e,n)=>{this._updateGraphic(t,`geometry`,e,n)}),o(()=>t.symbol,(e,n)=>{this._updateGraphic(t,`symbol`,e,n)})],t)}}get legendEnabled(){return this.canResume()&&!this.processor?.frustumVisibilitySuspended}get visibleAtCurrentScale(){return w()?u(this.layer.effectiveScaleRange,this.view.scale):!this.processor?.scaleVisibilitySuspended}getSuspendInfo(){let e=super.getSuspendInfo();return e.outsideOfView=this.processor?.frustumVisibilitySuspended??!1,e}getHit(e){let t=this.processor.getHit(e,null);if(t?.type===`graphic`){let e=this._graphicToNetworkFeature.get(t.graphic);if(e)return{type:`route`,layer:this.layer,networkFeature:e}}return null}whenGraphicBounds(e,t){return this.processor.whenGraphicBounds(e,t)}computeAttachmentOrigin(e,t){return this.processor?.computeAttachmentOrigin(e,t)}getSymbolLayerSize(e,t){return this.processor.getSymbolLayerSize(e,t)}async queryGraphics(){return new t(this.loadedGraphics.toArray())}maskOccludee(e){return this.processor.maskOccludee(e)}highlight(e,t){return T(e)&&(e=this._networkFeatureToGraphic.get(e)),this.processor.highlight(e,C(t))}notifyContentGeometryUpdate(){this.emit(`visible-geometry-changed`)}get updatePolicy(){return this.processor?.graphicsCore.effectiveUpdatePolicy||1}isUpdating(){return!(!this.processor?.updating&&this.view?.groundView?.ready)}get performanceInfo(){return new b(this.processor?.graphicsCore.usedMemory??0,this.loadedGraphics.length,-1,-1,0,this.processor?.graphicsCore.performanceInfo??null)}_updateGraphic(e,t,n,r){let i=this._networkFeatureToGraphic.get(e);i[t]=n,D.graphic=i,D.property=t,D.oldValue=r,D.newValue=n,this.processor?.graphicsCore.graphicUpdateHandler(D),D.graphic=null}};e([s()],E.prototype,`_routeItems`,null),e([s()],E.prototype,`loadedGraphics`,void 0),e([s({readOnly:!0})],E.prototype,`legendEnabled`,null),e([s({readOnly:!0})],E.prototype,`visibleAtCurrentScale`,null),e([s()],E.prototype,`layer`,void 0),e([s({readOnly:!0})],E.prototype,`processor`,void 0),e([s({type:Boolean})],E.prototype,`slicePlaneEnabled`,void 0),E=e([c(`esri.views.3d.layers.RouteLayerView3D`)],E);const D={graphic:null,property:null,oldValue:null,newValue:null},O=E;export{O as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import"../../../core/has.js";import t from"../../../core/Logger.js";import{destroyMaybe as n}from"../../../core/maybe.js";import{estimateNumberArrayMemory as r}from"../../../core/memoryEstimations.js";import{throwIfAborted as i}from"../../../core/promiseUtils.js";import{initial as a,watch as o,sync as s}from"../../../core/reactiveUtils.js";import{generateUID as c}from"../../../core/uid.js";import{property as l,subclass as u}from"../../../core/accessorSupport/decorators.js";import{set as d}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as f,create as p}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{projectBuffer as m}from"../../../geometry/projection/projectBuffer.js";import{projectVectorToVector as h}from"../../../geometry/projection/projectVectorToVector.js";import{extentContainsCoords3D as g,extentContainsCoords2D as ee}from"../../../geometry/support/contains.js";import{newDoubleArray as _,doubleArrayFrom as te}from"../../../geometry/support/DoubleArray.js";import{getGeometryZScaler as v}from"../../../geometry/support/zscale.js";import{fallbackObjectIDAttribute as y}from"../../../layers/LayerConstants.js";import{estimateSize as b}from"../../../layers/graphics/dehydratedFeatures.js";import{ImmutableDehydratedPoint as ne}from"../../../layers/graphics/dehydratedPoint.js";import{hydrateGraphic as re}from"../../../layers/graphics/hydratedFeatures.js";import ie from"../../../layers/graphics/controllers/I3SOnDemandController.js";import ae from"../../../layers/support/FeatureFilter.js";import{I3SExtractChanges as oe}from"../../../layers/support/I3SExtractChanges.js";import x from"../../../rest/support/Query.js";import{isBasemapLayerView as se}from"../../../support/basemapUtils.js";import{isGraphic as ce}from"../../../support/graphicInstanceUtils.js";import{I3SPointsWorkerHandle as S}from"./I3SPointsWorkerHandle.js";import{LayerView3D as le}from"./LayerView3D.js";import{Graphics3DFeatureProcessor as C}from"./graphics/Graphics3DFeatureProcessor.js";import{QueryEngine as w}from"./graphics/QueryEngine.js";import{QueryEngineContext as T}from"./graphics/QueryEngineContext.js";import{createInteractiveEditSession as E,normalizeEditResultsEvent as D,processAttributeEdits as O}from"./i3s/featureEditing.js";import{getCachedAttributeValue as k}from"./i3s/I3SBinaryReader.js";import{I3SGraphicsMap as A}from"./i3s/I3SGraphicsMap.js";import{I3SOverrides as j}from"./i3s/I3SOverrides.js";import{checkRecyclable as M,checkSpatialReferences as N,containsDraco as P,whenGraphicAttributes as F}from"./i3s/I3SUtil.js";import{attributeLookup as I}from"./support/attributeUtils.js";import{DefinitionExpressionSceneLayerView as L}from"./support/DefinitionExpressionSceneLayerView.js";import{defineFieldProperties as R}from"./support/fieldProperties.js";import{normalizeHighlightTarget as z,emptyHighlightHandle as B,isObjectId as V}from"./support/highlightUtils.js";import{LayerViewPerformanceInfo as H}from"./support/LayerViewPerformanceInfo.js";import{PopupSceneLayerView as ue}from"./support/PopupSceneLayerView.js";import{SceneLayerViewRequiredFields as U}from"./support/SceneLayerViewRequiredFields.js";import{TemporalSceneLayerView as de}from"./support/TemporalSceneLayerView.js";import{debugFlags as W}from"../support/debugFlags.js";import{compute as fe}from"../support/orientedBoundingBox.js";import{updatingProgress as pe}from"../support/updatingProperties.js";import{Vertices as me}from"../webgl-engine/lib/Attribute.js";import he from"../../layers/SceneLayerView.js";import{hasPopupTemplate as ge}from"../../layers/support/popupUtils.js";import{getHighlightName as _e}from"../../support/highlightOptionsUtils.js";import{hasLayerBasedScaleVisibility as G,isInEffectiveScaleRange as ve}from"../../support/layerViewUtils.js";import{TaskPriority as ye}from"../../support/Scheduler.js";const K=R();class be{constructor(e,t,n,r){this.graphics=e,this.featureIds=t,this.attributeInfo=n,this.node=r}get usedMemory(){return this.graphics.reduce((e,t)=>b(t)+e,r(this.featureIds)+1024)}}let q=class extends de(L(ue(le(he)))){constructor(){super(...arguments),this.type=`scene-layer-graphics-3d`,this._queryEngine=null,this._memCache=null,this._interactiveEditingSessions=new Map,this._pendingEditsQueue=Promise.resolve(),this.loadedGraphics=new A((e,t,n)=>Ce(e,t,n),e=>this.processor.graphicsCore.recreateGraphics(e),this.logError),this.holeFilling=`always`,this.progressiveLoadFactor=1,this.supportsHeightUnitConversion=!0,this._coordinatesOutsideExtentErrors=0,this._maxCoordinatesOutsideExtentErrors=20}tryRecycleWith(e,t){return e.url!==this.layer.url||!this._i3sOverrides.isEmpty?null:e.load(t).then(()=>{i(t),M(this.layer,e,this._i3sOverrides),this.layer=e,this._reinitializeOverrides(),n(this._queryEngine),this._setupQueryEngine(),this.processor.resetObjectStates()})}initialize(){this.addResolvingPromise(this.layer.indexInfo),this._reinitializeOverrides(),N(this.layer,this.view.spatialReference,this.view.viewingMode),this._fieldsHelper=new U({layerView:this}),this._updatingHandles.add(()=>this.layer.rangeInfos,e=>this._rangeInfosChanged(e),a),this._updatingHandles.add(()=>this.layer.renderer,(e,t)=>this._rendererChange(e,t)),this._updatingHandles.add(()=>[this.parsedDefinitionExpression,this.layer.excludeObjectIds],()=>this._filterChange()),this._set(`processor`,new C({owner:this,preferredUpdatePolicy:0,scaleVisibilityEnabled:!G(),filterVisibilityEnabled:!0,timeExtentEnabled:!1,frustumVisibilityEnabled:!1,elevationAlignmentEnabled:!0,elevationFeatureExpressionEnabled:!1,setUidToIdOnAdd:!1,dataExtent:this.layer.fullExtent,updateClippingExtent:e=>this._updateClippingExtent(e)})),this.processor.elevationAlignment?.events.on(`invalidate-elevation`,({extent:e,spatialReference:t})=>this._controller.updateElevationChanged(e,t)),this.supportsHeightUnitConversion&&(this._verticalScale=v(`point`,this.layer.spatialReference,this.view.spatialReference)),this.addResolvingPromise(this.processor.when()),this._memCache=this.view.resourceController.memoryController.newCache(`psl-${this.uid}`),this._controller=new ie({layerView:this}),P(this.layer.geometryDefinitions)&&(this._workerHandle=new S(e=>this.view.resourceController.immediate.schedule(e))),this.addHandles(this.layer.on(`apply-edits`,e=>this._updatingHandles.addPromise(e.result))),this.addHandles([this.layer.on(`edits`,e=>{let t=this._pendingEditsQueue.then(()=>this._handleEdits(e)).then();this._pendingEditsQueue=t,this._updatingHandles.consumePromise(t)}),o(()=>W.I3S_TREE_SHOW_TILES,e=>{if(e&&!this._treeDebugger){let e=this._controller.crsIndex;import(`./support/I3STreeDebugger.js`).then(({I3STreeDebugger:t})=>{!this._treeDebugger&&W.I3S_TREE_SHOW_TILES&&(this._treeDebugger=new t({lv:this,view:this.view,nodeSR:e}))})}else!e&&this._treeDebugger&&!W.I3S_TREE_SHOW_TILES&&(this._treeDebugger.destroy(),this._treeDebugger=null)},a)]),this.when(()=>{this._setupQueryEngine(),this._updatingHandles.add(()=>this.availableFields,()=>this._queryEngine?.clear(),s),this._updatingHandles.add(()=>this.maximumNumberOfFeatures,e=>this._controller.featureTarget=e,a),this._updatingHandles.add(()=>this.suspended,e=>{e&&this._removeAllNodeData()})}).catch(()=>{})}_reinitializeOverrides(){this._i3sOverrides?.destroy(),this._extractChanges?.destroy();let{layer:e}=this,t=this.view.resourceController?.memoryController;this._extractChanges=new oe({layer:e}),this._i3sOverrides=new j({view:this.view,layer:e,memoryController:t,extractChanges:this._extractChanges})}destroy(){this._treeDebugger=n(this._treeDebugger),this._i3sOverrides=n(this._i3sOverrides),this._extractChanges=n(this._extractChanges),this._set(`processor`,n(this.processor)),this._controller=n(this._controller),this._queryEngine=n(this._queryEngine),this._workerHandle=n(this._workerHandle),this._memCache=n(this._memCache),this.loadedGraphics.clear(),this._fieldsHelper=n(this._fieldsHelper)}get layerViewUid(){return this.uid}get updatingProgressValue(){return this._controller?.updatingProgress??1}get visibleAtCurrentScale(){return G()?ve(this.layer.effectiveScaleRange,this.view.scale):!this.processor?.scaleVisibilitySuspended}get requiredFields(){return this._fieldsHelper?.requiredFields??[]}get maximumNumberOfFeatures(){return this.processor?.graphicsCore?.displayFeatureLimit?.maximumNumberOfFeatures??0}set maximumNumberOfFeatures(e){e==null?(this._clearOverride(`maximumNumberOfFeatures`),this._controller.fixedFeatureTarget=!1):(this._override(`maximumNumberOfFeatures`,e),this._controller.fixedFeatureTarget=!0)}get maximumNumberOfFeaturesExceeded(){return!this.suspended&&!!this._controller?.useMaximumNumberOfFeatures&&!this._controller.leavesReached}get _excludeObjectIds(){return new Set(this.layer.excludeObjectIds)}get lodFactor(){return this.layer.semantic===`Labels`?1:this.view.qualitySettings.sceneService.pointLoDFactor}get hasM(){return!1}get hasZ(){return!0}get contentVisible(){return!this.suspended&&!!this._controller?.rootNodeVisible}get legendEnabled(){return this.contentVisible&&this.layer?.legendEnabled===!0}get _graphicOrigin(){return this.layer.graphicOrigin}async whenGraphicAttributes(e,t){return F(this.layer,e,this._getObjectIdField(),t,()=>[...this.loadedGraphics.nodes()])}getHit(e){if(!this.loadedGraphics)return null;let t=re(this.loadedGraphics.find(t=>t.uid===e),this.layer,this._graphicOrigin),n=this._getObjectIdField();return t?.attributes?.[n]==null?null:{type:`graphic`,graphic:t,layer:t.layer}}whenGraphicBounds(e,t){return this.processor.whenGraphicBounds(e,t)}computeAttachmentOrigin(e,t){return this.processor.computeAttachmentOrigin(e,t)}isUpdating(){return!!(this._controller?.updating||this.processor?.updating||this._fieldsHelper?.updating||this.layerFilterUpdating)}highlight(e,t){let n=_e(t),r=this.layer.objectIdField,i=z(e);if(i.length===0)return B;if(ce(i[0])){let e=i;if(I(this.layer.fieldsIndex,e[0].attributes,r)!=null){let t=e.map(e=>I(this.layer.fieldsIndex,e.attributes,r));return this.processor.highlightByObjectIds(t,r,n)}return this.processor.highlightByGraphics(e,n)}return V(i[0])?this.processor.highlightByObjectIds(i,r,n):B}get updatePolicy(){return this.processor.graphicsCore.effectiveUpdatePolicy}createInteractiveEditSession(e){return E(this._attributeEditingContext,e)}async _decompressBinaryPointData(e,t){let n={geometryBuffer:e.geometryBuffer};this._workerHandle??=new S(e=>this.view.resourceController.immediate.schedule(e));let r=await this._workerHandle.invoke(n,t);if(r==null)throw Error(`Failed to decompress Draco point data`);return{positionData:r.positions,featureIds:r.featureIds}}async addNode(e,n,r){if(!J(n)&&!Se(n))throw Error();if(this.loadedGraphics.hasNode(e.index)){t.getLogger(this).error(`I3S node `+e.id+` already added`);return}let i=this.layer.fullExtent==null?null:X(this.layer.fullExtent.clone(),.5),{featureIds:a,pointPositions:o}=J(n)?await this._extractBinaryPointPositions(e,n,r):this._extractLegacyPointPositions(n),s=[];this._validatePositions(e,a,o,i,s);let c=this._controller.crsVertex,l=this.view.spatialReference;m(o,c,0,o,l,0,a.length);let u=J(n)?e.level:0,d=this._createGraphics(a,o,e.index,u),f=new be(d,a,n.attributeDataInfo,e);if(await this._i3sOverrides.applyAttributeOverrides(f.featureIds,n.attributeDataInfo,r),e.numFeatures=f.graphics.length,this._updateNodeMemory(e),Y(f),s.length>0&&(this._computeObb(e,s,c),this._controller.updateVisibility(e.index)),!this._controller.isGeometryVisible(e)){this._cacheNodeData(f);return}if(this._verticalScale!=null)for(let e of f.graphics)this._verticalScale(e.geometry);let p=this.view.stage.renderView.olidRenderHelper;if(p){let e=se(this.view,this.uid);for(let t=0;t<f.featureIds.length;t++){let n=f.featureIds[t];p.setUidToObjectAndLayerId(n,f.graphics[t].uid,this.layer.id,this.uid,this.layer.popupEnabled&&!e&&ge(this.layer,this.view.popup?.defaultPopupTemplateEnabled),f.node.resources.attributes,t)}}this.loadedGraphics.addNode(e.index,f),this._controller.updateLoadStatus(e.index,!0),this._filterNode(f),this._treeDebugger&&this._treeDebugger.update()}_computeObb(e,t,n){let r=this._controller.crsIndex,i=r.isGeographic?this.view.renderSpatialReference:r;m(t,n,0,t,i,0),e.serviceObbInIndexSR=fe(new me(t,3)),r.isGeographic&&(h(e.serviceObbInIndexSR.getCenter(Z),i,Z,r),e.serviceObbInIndexSR.setCenter(Z))}isNodeLoaded(e){return this.loadedGraphics.hasNode(e)}isNodeReloading(){return!1}updateNodeState(){}getNodeComponentHandle(){}async _extractBinaryPointPositions(e,t,n){let r=await this._decompressBinaryPointData(t,n),i=r.positionData,a=i.length/3,o=_(a*3),s=e.serviceObbInIndexSR==null?f:e.serviceObbInIndexSR.getCenter(Te),c=Math.abs(s[2])*2**-20;for(let e=0;e<a;e++){let t=e*3;o[t]=i[t]+s[0],o[t+1]=i[t+1]+s[1],o[t+2]=i[t+2]+s[2],Math.abs(o[t+2])<c&&(o[t+2]=0)}return{featureIds:r.featureIds?te(r.featureIds):[],pointPositions:o}}_extractLegacyPointPositions(e){let t=e.pointData.length,n=_(3*t),r=[];for(let i=0;i<t;i++){let t=e.pointData[i],a=t.featureDataPosition,o=a.length,s=t.geometries?.[0]??we[o],c=t.featureIds[0];if(s.type!==`Embedded`||s.params.type!==`points`||o<2||o>3)continue;let l=s.params.vertexAttributes?.position??[0,0,0],u=r.length*3;n[u]=a[0]+l[0],n[u+1]=a[1]+l[1],n[u+2]=o===3?a[2]+l[2]:NaN,r.push(c)}return{featureIds:r,pointPositions:n}}_validatePositions(e,n,r,i,a){if(i==null&&e.serviceObbInIndexSR)return;let o=n.length;for(let n=0;n<o;n++){let o=n*3;d(Z,r[o],r[o+1],r[o+2]);let s=!Number.isNaN(r[2]);i!=null&&(s?!g(i,Z):!ee(i,Z))&&(this._coordinatesOutsideExtentErrors<this._maxCoordinatesOutsideExtentErrors&&t.getLogger(this).error(`Service Error: Coordinates outside of layer extent`),this._coordinatesOutsideExtentErrors+1===this._maxCoordinatesOutsideExtentErrors&&t.getLogger(this).error(`Maximum number of errors reached. Further errors are ignored.`),this._coordinatesOutsideExtentErrors++),e.serviceObbInIndexSR||a.push(Z[0],Z[1],Z[2])}}_createGraphics(e,t,n,r){let i=e.length,a=this._getObjectIdField(),o=this.processor.graphicsCore,s=[],l=this.view.spatialReference;for(let u=0;u<i;u++){let i=e[u],d={};i!=null&&(d[a]=i);let f=i??c(),p=u*3,m=isNaN(t[p+2])?void 0:t[p+2],h=new ne(l,t[p],t[p+1],m),g=this.loadedGraphics.get(f);if(g!=null)(g.level==null||g.level<r)&&(Q.property=`geometry`,Q.graphic=g,Q.oldValue=g.geometry,Q.newValue=h,g.geometry=h,g.level=r,o.graphicUpdateHandler(Q),$()),s.push(g);else{let e=c();s.push({objectId:f,uid:e,geometry:h,attributes:d,visible:!0,nodeIndex:n,level:r})}}return s}_updateNodeMemory(e){e.memory=4096+(e.numFeatures??0)*this.processor.graphicsCore.usedMemoryPerGraphic}_cacheNodeData(e){this._memCache.put(this._getMemCacheKey(e.node),e)}_getMemCacheKey(e){return`${e.index}`}_removeAllNodeData(){this.loadedGraphics.forEachNode((e,t)=>{if(e){let t=e.node;this._updateNodeMemory(t),this._cacheNodeData(e)}this._controller.updateLoadStatus(t,!1)}),this._treeDebugger&&this._treeDebugger.update(),this.loadedGraphics.clear()}removeNode(e){let t=this._removeNodeStageData(e);t&&(this._updateNodeMemory(t.node),this._cacheNodeData(t))}_removeNodeStageData(e){let t=this.loadedGraphics.getNode(e);return t==null?null:(this._controller.updateLoadStatus(e,!1),this.loadedGraphics.removeNode(e),this._treeDebugger&&this._treeDebugger.update(),t)}async loadCachedNodeData(e){return this._memCache?.pop(this._getMemCacheKey(e))}async addCachedNodeData(e,n,r,i){if(this.loadedGraphics.hasNode(e.index)){t.getLogger(this).error(`I3S node `+e.id+` already added`);return}await this._i3sOverrides.applyAttributeOverrides(n.featureIds,r,i),n.attributeInfo=r,this.loadedGraphics.addNode(e.index,n),this._controller.updateLoadStatus(e.index,!0),this._updateNodeMemory(e),Y(n),this._filterNode(n),this._treeDebugger&&this._treeDebugger.update()}getLoadedNodeIds(){let e=[];return this.loadedGraphics.forEachNode(t=>e.push(t.node.id)),e.sort()}getVisibleNodes(){let e=[];return this.loadedGraphics.forEachNode(t=>e.push(t.node)),e}getLoadedNodeIndices(e){this.loadedGraphics.forEachNode((t,n)=>e.push(n))}getLoadedAttributes(e){let t=this.loadedGraphics.getNode(e);if(t?.attributeInfo!=null)return t.attributeInfo.loadedAttributes}getAttributeData(e){let t=this.loadedGraphics.getNode(e);if(t?.attributeInfo!=null)return t.attributeInfo.attributeData}_setAttributeData(e,t){let n=this.loadedGraphics.getNode(e);n?.attributeInfo!=null&&(n.attributeInfo.attributeData=t,this._attributeValuesChanged(n))}async updateAttributes(e,t,n){let r=this.loadedGraphics.getNode(e);r!=null&&(await this._i3sOverrides.applyAttributeOverrides(r.featureIds,t,n),r.attributeInfo=t,this._attributeValuesChanged(r))}_attributeValuesChanged(e){Y(e),this._filterNode(e);let{processor:t}=this,{graphicsCore:n}=t;if(n.labelsEnabled){let t=e.node.index,r=[];e.graphics.forEach(e=>e.nodeIndex===t&&r.push(e.uid)),n.updateLabelingInfo(r)}t.refreshFilter()}_updateClippingExtent(e){return this._controller&&this._controller.updateClippingArea(e),!1}_getObjectIdField(){return this.layer.objectIdField||y}_getGlobalIdField(){return this.layer.globalIdField}async _rendererChange(e,t){let{layer:{fieldsIndex:n}}=this,r=new Set,i;e?(await e.collectRequiredFields(r,n),i=Array.from(r).sort()):i=[],r.clear();let a;t?(await t.collectRequiredFields(r,n),a=Array.from(r).sort()):a=[],!(i.length===a.length&&i.every((e,t)=>i[t]===a[t]))&&this._reloadAllNodes()}_rangeInfosChanged(e){e!=null&&e.length>0&&t.getLogger(this).warn(`Unsupported property: rangeInfos are currently only serialized to and from web scenes but do not affect rendering.`)}_filterChange(){this.loadedGraphics.forEachNode(e=>this._filterNode(e))}_reloadAllNodes(){this._removeAllNodeData(),this._controller&&this._controller.restartNodeLoading()}_filterNode(e){let t=this.parsedDefinitionExpression,n=this._excludeObjectIds,r=this._getObjectIdField();for(let i of e.graphics){let e=i.visible,a=this._evaluateClause(t,i),o=!n.has(i.attributes[r]);i.visible=a&&o,e!==i.visible&&(Q.graphic=i,Q.property=`visible`,Q.oldValue=e,Q.newValue=i.visible,this.processor.graphicsCore.graphicUpdateHandler(Q),$())}}createQuery(){let e={outFields:[`*`],returnGeometry:!0,outSpatialReference:this.view.spatialReference};return this.filter?.createQuery(e)??new x(e)}queryFeatures(e,t){return this._queryEngine.executeQuery(this._ensureQuery(e),t?.signal)}queryObjectIds(e,t){return this._queryEngine.executeQueryForIds(this._ensureQuery(e),t?.signal)}queryFeatureCount(e,t){return this._queryEngine.executeQueryForCount(this._ensureQuery(e),t?.signal)}queryExtent(e,t){return this._queryEngine.executeQueryForExtent(this._ensureQuery(e),t?.signal)}_ensureQuery(e){return this._addDefinitionExpressionToQuery(e==null?this.createQuery():x.from(e))}_setupQueryEngine(){let{layer:e,view:t,hasM:n,hasZ:r}=this,{spatialReference:i,resourceController:a}=t,o=new T(i,e,a,()=>this.processor.featureStore,r,n,()=>this.availableFields);this._queryEngine=new w({context:o,priority:ye.FEATURE_QUERY_ENGINE})}get usedMemory(){return this.processor?.graphicsCore?.usedMemory??0}get unloadedMemory(){return((this._controller?.unloadedMemoryEstimate??0)+(this.processor?.graphicsCore?.unprocessedMemoryEstimate??0))*.8}get ignoresMemoryFactor(){return this._controller&&this._controller.fixedFeatureTarget}async _handleEdits(e){let t=this._attributeEditingContext,n=await D(t,e);O(t,n)}get _attributeEditingContext(){let e=this._getObjectIdField(),t=this._getGlobalIdField();return{sessions:this._interactiveEditingSessions,fieldsIndex:this.layer.fieldsIndex,objectIdField:e,globalIdField:t,forEachNode:e=>this.loadedGraphics.forEachNode(t=>e(t.node,t.featureIds)),attributeStorageInfo:this.layer.attributeStorageInfo??[],i3sOverrides:this._i3sOverrides,getAttributeData:e=>this.getAttributeData(e),setAttributeData:(t,n,r)=>{this._setAttributeData(t,n);let i=this.loadedGraphics.getNode(t);if(r!=null){let t=this.loadedGraphics.get(r.attributes[e]);t!=null&&this.processor.graphicsCore.recreateGraphics([t])}else i!=null&&this.processor.graphicsCore.recreateGraphics(i.graphics)},clearMemCache:()=>{}}}get performanceInfo(){return new H(this.usedMemory,this.loadedGraphics.length,-1,this.maximumNumberOfFeatures,this.loadedGraphics.nodeCount,this.processor.graphicsCore.performanceInfo)}get test(){}};e([l()],q.prototype,`processor`,void 0),e([l({type:ae})],q.prototype,`filter`,void 0),e([l()],q.prototype,`loadedGraphics`,void 0),e([l()],q.prototype,`layerViewUid`,null),e([l()],q.prototype,`_controller`,void 0),e([l()],q.prototype,`updating`,void 0),e([l()],q.prototype,`suspended`,void 0),e([l(pe)],q.prototype,`updatingProgress`,void 0),e([l()],q.prototype,`updatingProgressValue`,null),e([l({readOnly:!0})],q.prototype,`visibleAtCurrentScale`,null),e([l(K.requiredFields)],q.prototype,`requiredFields`,null),e([l(K.availableFields)],q.prototype,`availableFields`,void 0),e([l()],q.prototype,`_fieldsHelper`,void 0),e([l({type:Number})],q.prototype,`maximumNumberOfFeatures`,null),e([l({readOnly:!0})],q.prototype,`maximumNumberOfFeaturesExceeded`,null),e([l()],q.prototype,`_excludeObjectIds`,null),e([l({readOnly:!0})],q.prototype,`lodFactor`,null),e([l({readOnly:!0})],q.prototype,`hasM`,null),e([l({readOnly:!0})],q.prototype,`hasZ`,null),e([l()],q.prototype,`contentVisible`,null),e([l({readOnly:!0})],q.prototype,`legendEnabled`,null),e([l()],q.prototype,`_graphicOrigin`,null),q=e([u(`esri.views.3d.layers.SceneLayerGraphicsView3D`)],q);const xe=q;function Se(e){return`pointData`in e}function J(e){return`geometryBuffer`in e&&e.geometryBuffer!==null}function Ce(e,t,n){let r=t.attributeInfo;if(r?.loadedAttributes==null||r.attributeData==null)return!1;let i=!1;for(let{name:t}of r.loadedAttributes)if(r.attributeData[t]){let a=k(r.attributeData[t],n);a!==e.attributes[t]&&(e.attributes[t]=a,i=!0)}return i}function Y(e){let t=e.attributeInfo;if(t?.loadedAttributes==null||t.attributeData==null)return;let n=e.node.index;for(let r=0;r<e.graphics.length;r++){let i=e.graphics[r];if(i.nodeIndex===n){i.attributes||={};for(let{name:e}of t.loadedAttributes)t.attributeData[e]&&(i.attributes[e]=k(t.attributeData[e],r))}}}function X(e,t){return e.xmin-=t,e.ymin-=t,e.xmax+=t,e.ymax+=t,e.zmin!=null&&e.zmax!=null&&(e.zmin-=t,e.zmax+=t),e.mmin!=null&&e.mmax!=null&&(e.mmin-=t,e.mmax+=t),e}const we={2:{type:`Embedded`,params:{type:`points`,vertexAttributes:{position:[0,0]}}},3:{type:`Embedded`,params:{type:`points`,vertexAttributes:{position:[0,0,0]}}}},Z=p(),Q={graphic:null,property:null,oldValue:null,newValue:null},Te=p();function $(){Q.graphic=null,Q.property=null,Q.oldValue=null,Q.newValue=null}export{xe as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import"../../../core/has.js";import t from"../../../core/Logger.js";import{destroyMaybe as n}from"../../../core/maybe.js";import{estimateNumberArrayMemory as r}from"../../../core/memoryEstimations.js";import{throwIfAborted as i}from"../../../core/promiseUtils.js";import{initial as a,watch as o,sync as s}from"../../../core/reactiveUtils.js";import{generateUID as c}from"../../../core/uid.js";import{property as l,subclass as u}from"../../../core/accessorSupport/decorators.js";import{set as d}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as f,create as p}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{projectBuffer as m}from"../../../geometry/projection/projectBuffer.js";import{projectVectorToVector as h}from"../../../geometry/projection/projectVectorToVector.js";import{extentContainsCoords3D as g,extentContainsCoords2D as _}from"../../../geometry/support/contains.js";import{newDoubleArray as v,doubleArrayFrom as ee}from"../../../geometry/support/DoubleArray.js";import{isInEffectiveScaleRange as te}from"../../../geometry/support/scaleUtils.js";import{getGeometryZScaler as ne}from"../../../geometry/support/zscale.js";import{fallbackObjectIDAttribute as re}from"../../../layers/LayerConstants.js";import{estimateSize as ie}from"../../../layers/graphics/dehydratedFeatures.js";import{ImmutableDehydratedPoint as y}from"../../../layers/graphics/dehydratedPoint.js";import{hydrateGraphic as b}from"../../../layers/graphics/hydratedFeatures.js";import x from"../../../layers/graphics/controllers/I3SOnDemandController.js";import ae from"../../../layers/support/FeatureFilter.js";import{I3SExtractChanges as S}from"../../../layers/support/I3SExtractChanges.js";import C from"../../../rest/support/Query.js";import{isBasemapLayerView as oe}from"../../../support/basemapUtils.js";import{isGraphic as se}from"../../../support/graphicInstanceUtils.js";import{I3SPointsWorkerHandle as w}from"./I3SPointsWorkerHandle.js";import{LayerView3D as ce}from"./LayerView3D.js";import{Graphics3DFeatureProcessor as T}from"./graphics/Graphics3DFeatureProcessor.js";import{QueryEngine as E}from"./graphics/QueryEngine.js";import{QueryEngineContext as D}from"./graphics/QueryEngineContext.js";import{createInteractiveEditSession as O,normalizeEditResultsEvent as k,processAttributeEdits as A}from"./i3s/featureEditing.js";import{getCachedAttributeValue as j}from"./i3s/I3SBinaryReader.js";import{I3SGraphicsMap as M}from"./i3s/I3SGraphicsMap.js";import{I3SOverrides as N}from"./i3s/I3SOverrides.js";import{checkRecyclable as P,checkSpatialReferences as F,containsDraco as I,whenGraphicAttributes as L}from"./i3s/I3SUtil.js";import{attributeLookup as R}from"./support/attributeUtils.js";import{DefinitionExpressionSceneLayerView as z}from"./support/DefinitionExpressionSceneLayerView.js";import{defineFieldProperties as B}from"./support/fieldProperties.js";import{normalizeHighlightTarget as V,emptyHighlightHandle as H,isObjectId as U}from"./support/highlightUtils.js";import{LayerViewPerformanceInfo as le}from"./support/LayerViewPerformanceInfo.js";import{PopupSceneLayerView as W}from"./support/PopupSceneLayerView.js";import{SceneLayerViewRequiredFields as ue}from"./support/SceneLayerViewRequiredFields.js";import{TemporalSceneLayerView as de}from"./support/TemporalSceneLayerView.js";import{debugFlags as G}from"../support/debugFlags.js";import{compute as fe}from"../support/orientedBoundingBox.js";import{updatingProgress as pe}from"../support/updatingProperties.js";import{Vertices as me}from"../webgl-engine/lib/Attribute.js";import he from"../../layers/SceneLayerView.js";import{hasPopupTemplate as ge}from"../../layers/support/popupUtils.js";import{getHighlightName as _e}from"../../support/highlightOptionsUtils.js";import{hasLayerBasedScaleVisibility as K}from"../../support/layerViewUtils.js";import{TaskPriority as ve}from"../../support/Scheduler.js";const q=B();class ye{constructor(e,t,n,r){this.graphics=e,this.featureIds=t,this.attributeInfo=n,this.node=r}get usedMemory(){return this.graphics.reduce((e,t)=>ie(t)+e,r(this.featureIds)+1024)}}let J=class extends de(z(W(ce(he)))){constructor(){super(...arguments),this.type=`scene-layer-graphics-3d`,this._queryEngine=null,this._memCache=null,this._interactiveEditingSessions=new Map,this._pendingEditsQueue=Promise.resolve(),this.loadedGraphics=new M((e,t,n)=>Se(e,t,n),e=>this.processor.graphicsCore.recreateGraphics(e),this.logError),this.holeFilling=`always`,this.progressiveLoadFactor=1,this.supportsHeightUnitConversion=!0,this._coordinatesOutsideExtentErrors=0,this._maxCoordinatesOutsideExtentErrors=20}tryRecycleWith(e,t){return e.url!==this.layer.url||!this._i3sOverrides.isEmpty?null:e.load(t).then(()=>{i(t),P(this.layer,e,this._i3sOverrides),this.layer=e,this._reinitializeOverrides(),n(this._queryEngine),this._setupQueryEngine(),this.processor.resetObjectStates()})}initialize(){this.addResolvingPromise(this.layer.indexInfo),this._reinitializeOverrides(),F(this.layer,this.view.spatialReference,this.view.viewingMode),this._fieldsHelper=new ue({layerView:this}),this._updatingHandles.add(()=>this.layer.rangeInfos,e=>this._rangeInfosChanged(e),a),this._updatingHandles.add(()=>this.layer.renderer,(e,t)=>this._rendererChange(e,t)),this._updatingHandles.add(()=>[this.parsedDefinitionExpression,this.layer.excludeObjectIds],()=>this._filterChange()),this._set(`processor`,new T({owner:this,preferredUpdatePolicy:0,scaleVisibilityEnabled:!K(),filterVisibilityEnabled:!0,timeExtentEnabled:!1,frustumVisibilityEnabled:!1,elevationAlignmentEnabled:!0,elevationFeatureExpressionEnabled:!1,setUidToIdOnAdd:!1,dataExtent:this.layer.fullExtent,updateClippingExtent:e=>this._updateClippingExtent(e)})),this.processor.elevationAlignment?.events.on(`invalidate-elevation`,({extent:e,spatialReference:t})=>this._controller.updateElevationChanged(e,t)),this.supportsHeightUnitConversion&&(this._verticalScale=ne(`point`,this.layer.spatialReference,this.view.spatialReference)),this.addResolvingPromise(this.processor.when()),this._memCache=this.view.resourceController.memoryController.newCache(`psl-${this.uid}`),this._controller=new x({layerView:this}),I(this.layer.geometryDefinitions)&&(this._workerHandle=new w(e=>this.view.resourceController.immediate.schedule(e))),this.addHandles(this.layer.on(`apply-edits`,e=>this._updatingHandles.addPromise(e.result))),this.addHandles([this.layer.on(`edits`,e=>{let t=this._pendingEditsQueue.then(()=>this._handleEdits(e)).then();this._pendingEditsQueue=t,this._updatingHandles.consumePromise(t)}),o(()=>G.I3S_TREE_SHOW_TILES,e=>{if(e&&!this._treeDebugger){let e=this._controller.crsIndex;import(`./support/I3STreeDebugger.js`).then(({I3STreeDebugger:t})=>{!this._treeDebugger&&G.I3S_TREE_SHOW_TILES&&(this._treeDebugger=new t({lv:this,view:this.view,nodeSR:e}))})}else!e&&this._treeDebugger&&!G.I3S_TREE_SHOW_TILES&&(this._treeDebugger.destroy(),this._treeDebugger=null)},a)]),this.when(()=>{this._setupQueryEngine(),this._updatingHandles.add(()=>this.availableFields,()=>this._queryEngine?.clear(),s),this._updatingHandles.add(()=>this.maximumNumberOfFeatures,e=>this._controller.featureTarget=e,a),this._updatingHandles.add(()=>this.suspended,e=>{e&&this._removeAllNodeData()})}).catch(()=>{})}_reinitializeOverrides(){this._i3sOverrides?.destroy(),this._extractChanges?.destroy();let{layer:e}=this,t=this.view.resourceController?.memoryController;this._extractChanges=new S({layer:e}),this._i3sOverrides=new N({view:this.view,layer:e,memoryController:t,extractChanges:this._extractChanges})}destroy(){this._treeDebugger=n(this._treeDebugger),this._i3sOverrides=n(this._i3sOverrides),this._extractChanges=n(this._extractChanges),this._set(`processor`,n(this.processor)),this._controller=n(this._controller),this._queryEngine=n(this._queryEngine),this._workerHandle=n(this._workerHandle),this._memCache=n(this._memCache),this.loadedGraphics.clear(),this._fieldsHelper=n(this._fieldsHelper)}get layerViewUid(){return this.uid}get updatingProgressValue(){return this._controller?.updatingProgress??1}get visibleAtCurrentScale(){return K()?te(this.layer.effectiveScaleRange,this.view.scale):!this.processor?.scaleVisibilitySuspended}get requiredFields(){return this._fieldsHelper?.requiredFields??[]}get maximumNumberOfFeatures(){return this.processor?.graphicsCore?.displayFeatureLimit?.maximumNumberOfFeatures??0}set maximumNumberOfFeatures(e){e==null?(this._clearOverride(`maximumNumberOfFeatures`),this._controller.fixedFeatureTarget=!1):(this._override(`maximumNumberOfFeatures`,e),this._controller.fixedFeatureTarget=!0)}get maximumNumberOfFeaturesExceeded(){return!this.suspended&&!!this._controller?.useMaximumNumberOfFeatures&&!this._controller.leavesReached}get _excludeObjectIds(){return new Set(this.layer.excludeObjectIds)}get lodFactor(){return this.layer.semantic===`Labels`?1:this.view.qualitySettings.sceneService.pointLoDFactor}get hasM(){return!1}get hasZ(){return!0}get contentVisible(){return!this.suspended&&!!this._controller?.rootNodeVisible}get legendEnabled(){return this.contentVisible&&this.layer?.legendEnabled===!0}get _graphicOrigin(){return this.layer.graphicOrigin}async whenGraphicAttributes(e,t){return L(this.layer,e,this._getObjectIdField(),t,()=>[...this.loadedGraphics.nodes()])}getHit(e){if(!this.loadedGraphics)return null;let t=b(this.loadedGraphics.find(t=>t.uid===e),this.layer,this._graphicOrigin),n=this._getObjectIdField();return t?.attributes?.[n]==null?null:{type:`graphic`,graphic:t,layer:t.layer}}whenGraphicBounds(e,t){return this.processor.whenGraphicBounds(e,t)}computeAttachmentOrigin(e,t){return this.processor.computeAttachmentOrigin(e,t)}isUpdating(){return!!(this._controller?.updating||this.processor?.updating||this._fieldsHelper?.updating||this.layerFilterUpdating)}highlight(e,t){let n=_e(t),r=this.layer.objectIdField,i=V(e);if(i.length===0)return H;if(se(i[0])){let e=i;if(R(this.layer.fieldsIndex,e[0].attributes,r)!=null){let t=e.map(e=>R(this.layer.fieldsIndex,e.attributes,r));return this.processor.highlightByObjectIds(t,r,n)}return this.processor.highlightByGraphics(e,n)}return U(i[0])?this.processor.highlightByObjectIds(i,r,n):H}get updatePolicy(){return this.processor.graphicsCore.effectiveUpdatePolicy}createInteractiveEditSession(e){return O(this._attributeEditingContext,e)}async _decompressBinaryPointData(e,t){let n={geometryBuffer:e.geometryBuffer};this._workerHandle??=new w(e=>this.view.resourceController.immediate.schedule(e));let r=await this._workerHandle.invoke(n,t);if(r==null)throw Error(`Failed to decompress Draco point data`);return{positionData:r.positions,featureIds:r.featureIds}}async addNode(e,n,r){if(!Y(n)&&!xe(n))throw Error();if(this.loadedGraphics.hasNode(e.index)){t.getLogger(this).error(`I3S node `+e.id+` already added`);return}let i=this.layer.fullExtent==null?null:Ce(this.layer.fullExtent.clone(),.5),{featureIds:a,pointPositions:o}=Y(n)?await this._extractBinaryPointPositions(e,n,r):this._extractLegacyPointPositions(n),s=[];this._validatePositions(e,a,o,i,s);let c=this._controller.crsVertex,l=this.view.spatialReference;m(o,c,0,o,l,0,a.length);let u=Y(n)?e.level:0,d=this._createGraphics(a,o,e.index,u),f=new ye(d,a,n.attributeDataInfo,e);if(await this._i3sOverrides.applyAttributeOverrides(f.featureIds,n.attributeDataInfo,r),e.numFeatures=f.graphics.length,this._updateNodeMemory(e),X(f),s.length>0&&(this._computeObb(e,s,c),this._controller.updateVisibility(e.index)),!this._controller.isGeometryVisible(e)){this._cacheNodeData(f);return}if(this._verticalScale!=null)for(let e of f.graphics)this._verticalScale(e.geometry);let p=this.view.stage.renderView.olidRenderHelper;if(p){let e=oe(this.view,this.uid);for(let t=0;t<f.featureIds.length;t++){let n=f.featureIds[t];p.setUidToObjectAndLayerId(n,f.graphics[t].uid,this.layer.id,this.uid,this.layer.popupEnabled&&!e&&ge(this.layer,this.view.popup?.defaultPopupTemplateEnabled),f.node.resources.attributes,t)}}this.loadedGraphics.addNode(e.index,f),this._controller.updateLoadStatus(e.index,!0),this._filterNode(f),this._treeDebugger&&this._treeDebugger.update()}_computeObb(e,t,n){let r=this._controller.crsIndex,i=r.isGeographic?this.view.renderSpatialReference:r;m(t,n,0,t,i,0),e.serviceObbInIndexSR=fe(new me(t,3)),r.isGeographic&&(h(e.serviceObbInIndexSR.getCenter(Z),i,Z,r),e.serviceObbInIndexSR.setCenter(Z))}isNodeLoaded(e){return this.loadedGraphics.hasNode(e)}isNodeReloading(){return!1}updateNodeState(){}getNodeComponentHandle(){}async _extractBinaryPointPositions(e,t,n){let r=await this._decompressBinaryPointData(t,n),i=r.positionData,a=i.length/3,o=v(a*3),s=e.serviceObbInIndexSR==null?f:e.serviceObbInIndexSR.getCenter(Te),c=Math.abs(s[2])*2**-20;for(let e=0;e<a;e++){let t=e*3;o[t]=i[t]+s[0],o[t+1]=i[t+1]+s[1],o[t+2]=i[t+2]+s[2],Math.abs(o[t+2])<c&&(o[t+2]=0)}return{featureIds:r.featureIds?ee(r.featureIds):[],pointPositions:o}}_extractLegacyPointPositions(e){let t=e.pointData.length,n=v(3*t),r=[];for(let i=0;i<t;i++){let t=e.pointData[i],a=t.featureDataPosition,o=a.length,s=t.geometries?.[0]??we[o],c=t.featureIds[0];if(s.type!==`Embedded`||s.params.type!==`points`||o<2||o>3)continue;let l=s.params.vertexAttributes?.position??[0,0,0],u=r.length*3;n[u]=a[0]+l[0],n[u+1]=a[1]+l[1],n[u+2]=o===3?a[2]+l[2]:NaN,r.push(c)}return{featureIds:r,pointPositions:n}}_validatePositions(e,n,r,i,a){if(i==null&&e.serviceObbInIndexSR)return;let o=n.length;for(let n=0;n<o;n++){let o=n*3;d(Z,r[o],r[o+1],r[o+2]);let s=!Number.isNaN(r[2]);i!=null&&(s?!g(i,Z):!_(i,Z))&&(this._coordinatesOutsideExtentErrors<this._maxCoordinatesOutsideExtentErrors&&t.getLogger(this).error(`Service Error: Coordinates outside of layer extent`),this._coordinatesOutsideExtentErrors+1===this._maxCoordinatesOutsideExtentErrors&&t.getLogger(this).error(`Maximum number of errors reached. Further errors are ignored.`),this._coordinatesOutsideExtentErrors++),e.serviceObbInIndexSR||a.push(Z[0],Z[1],Z[2])}}_createGraphics(e,t,n,r){let i=e.length,a=this._getObjectIdField(),o=this.processor.graphicsCore,s=[],l=this.view.spatialReference;for(let u=0;u<i;u++){let i=e[u],d={};i!=null&&(d[a]=i);let f=i??c(),p=u*3,m=isNaN(t[p+2])?void 0:t[p+2],h=new y(l,t[p],t[p+1],m),g=this.loadedGraphics.get(f);if(g!=null)(g.level==null||g.level<r)&&(Q.property=`geometry`,Q.graphic=g,Q.oldValue=g.geometry,Q.newValue=h,g.geometry=h,g.level=r,o.graphicUpdateHandler(Q),$()),s.push(g);else{let e=c();s.push({objectId:f,uid:e,geometry:h,attributes:d,visible:!0,nodeIndex:n,level:r})}}return s}_updateNodeMemory(e){e.memory=4096+(e.numFeatures??0)*this.processor.graphicsCore.usedMemoryPerGraphic}_cacheNodeData(e){this._memCache.put(this._getMemCacheKey(e.node),e)}_getMemCacheKey(e){return`${e.index}`}_removeAllNodeData(){this.loadedGraphics.forEachNode((e,t)=>{if(e){let t=e.node;this._updateNodeMemory(t),this._cacheNodeData(e)}this._controller.updateLoadStatus(t,!1)}),this._treeDebugger&&this._treeDebugger.update(),this.loadedGraphics.clear()}removeNode(e){let t=this._removeNodeStageData(e);t&&(this._updateNodeMemory(t.node),this._cacheNodeData(t))}_removeNodeStageData(e){let t=this.loadedGraphics.getNode(e);return t==null?null:(this._controller.updateLoadStatus(e,!1),this.loadedGraphics.removeNode(e),this._treeDebugger&&this._treeDebugger.update(),t)}async loadCachedNodeData(e){return this._memCache?.pop(this._getMemCacheKey(e))}async addCachedNodeData(e,n,r,i){if(this.loadedGraphics.hasNode(e.index)){t.getLogger(this).error(`I3S node `+e.id+` already added`);return}await this._i3sOverrides.applyAttributeOverrides(n.featureIds,r,i),n.attributeInfo=r,this.loadedGraphics.addNode(e.index,n),this._controller.updateLoadStatus(e.index,!0),this._updateNodeMemory(e),X(n),this._filterNode(n),this._treeDebugger&&this._treeDebugger.update()}getLoadedNodeIds(){let e=[];return this.loadedGraphics.forEachNode(t=>e.push(t.node.id)),e.sort()}getVisibleNodes(){let e=[];return this.loadedGraphics.forEachNode(t=>e.push(t.node)),e}getLoadedNodeIndices(e){this.loadedGraphics.forEachNode((t,n)=>e.push(n))}getLoadedAttributes(e){let t=this.loadedGraphics.getNode(e);if(t?.attributeInfo!=null)return t.attributeInfo.loadedAttributes}getAttributeData(e){let t=this.loadedGraphics.getNode(e);if(t?.attributeInfo!=null)return t.attributeInfo.attributeData}_setAttributeData(e,t){let n=this.loadedGraphics.getNode(e);n?.attributeInfo!=null&&(n.attributeInfo.attributeData=t,this._attributeValuesChanged(n))}async updateAttributes(e,t,n){let r=this.loadedGraphics.getNode(e);r!=null&&(await this._i3sOverrides.applyAttributeOverrides(r.featureIds,t,n),r.attributeInfo=t,this._attributeValuesChanged(r))}_attributeValuesChanged(e){X(e),this._filterNode(e);let{processor:t}=this,{graphicsCore:n}=t;if(n.labelsEnabled){let t=e.node.index,r=[];e.graphics.forEach(e=>e.nodeIndex===t&&r.push(e.uid)),n.updateLabelingInfo(r)}t.refreshFilter()}_updateClippingExtent(e){return this._controller&&this._controller.updateClippingArea(e),!1}_getObjectIdField(){return this.layer.objectIdField||re}_getGlobalIdField(){return this.layer.globalIdField}async _rendererChange(e,t){let{layer:{fieldsIndex:n}}=this,r=new Set,i;e?(await e.collectRequiredFields(r,n),i=Array.from(r).sort()):i=[],r.clear();let a;t?(await t.collectRequiredFields(r,n),a=Array.from(r).sort()):a=[],!(i.length===a.length&&i.every((e,t)=>i[t]===a[t]))&&this._reloadAllNodes()}_rangeInfosChanged(e){e!=null&&e.length>0&&t.getLogger(this).warn(`Unsupported property: rangeInfos are currently only serialized to and from web scenes but do not affect rendering.`)}_filterChange(){this.loadedGraphics.forEachNode(e=>this._filterNode(e))}_reloadAllNodes(){this._removeAllNodeData(),this._controller&&this._controller.restartNodeLoading()}_filterNode(e){let t=this.parsedDefinitionExpression,n=this._excludeObjectIds,r=this._getObjectIdField();for(let i of e.graphics){let e=i.visible,a=this._evaluateClause(t,i),o=!n.has(i.attributes[r]);i.visible=a&&o,e!==i.visible&&(Q.graphic=i,Q.property=`visible`,Q.oldValue=e,Q.newValue=i.visible,this.processor.graphicsCore.graphicUpdateHandler(Q),$())}}createQuery(){let e={outFields:[`*`],returnGeometry:!0,outSpatialReference:this.view.spatialReference};return this.filter?.createQuery(e)??new C(e)}queryFeatures(e,t){return this._queryEngine.executeQuery(this._ensureQuery(e),t?.signal)}queryObjectIds(e,t){return this._queryEngine.executeQueryForIds(this._ensureQuery(e),t?.signal)}queryFeatureCount(e,t){return this._queryEngine.executeQueryForCount(this._ensureQuery(e),t?.signal)}queryExtent(e,t){return this._queryEngine.executeQueryForExtent(this._ensureQuery(e),t?.signal)}_ensureQuery(e){return this._addDefinitionExpressionToQuery(e==null?this.createQuery():C.from(e))}_setupQueryEngine(){let{layer:e,view:t,hasM:n,hasZ:r}=this,{spatialReference:i,resourceController:a}=t,o=new D(i,e,a,()=>this.processor.featureStore,r,n,()=>this.availableFields);this._queryEngine=new E({context:o,priority:ve.FEATURE_QUERY_ENGINE})}get usedMemory(){return this.processor?.graphicsCore?.usedMemory??0}get unloadedMemory(){return((this._controller?.unloadedMemoryEstimate??0)+(this.processor?.graphicsCore?.unprocessedMemoryEstimate??0))*.8}get ignoresMemoryFactor(){return this._controller&&this._controller.fixedFeatureTarget}async _handleEdits(e){let t=this._attributeEditingContext,n=await k(t,e);A(t,n)}get _attributeEditingContext(){let e=this._getObjectIdField(),t=this._getGlobalIdField();return{sessions:this._interactiveEditingSessions,fieldsIndex:this.layer.fieldsIndex,objectIdField:e,globalIdField:t,forEachNode:e=>this.loadedGraphics.forEachNode(t=>e(t.node,t.featureIds)),attributeStorageInfo:this.layer.attributeStorageInfo??[],i3sOverrides:this._i3sOverrides,getAttributeData:e=>this.getAttributeData(e),setAttributeData:(t,n,r)=>{this._setAttributeData(t,n);let i=this.loadedGraphics.getNode(t);if(r!=null){let t=this.loadedGraphics.get(r.attributes[e]);t!=null&&this.processor.graphicsCore.recreateGraphics([t])}else i!=null&&this.processor.graphicsCore.recreateGraphics(i.graphics)},clearMemCache:()=>{}}}get performanceInfo(){return new le(this.usedMemory,this.loadedGraphics.length,-1,this.maximumNumberOfFeatures,this.loadedGraphics.nodeCount,this.processor.graphicsCore.performanceInfo)}get test(){}};e([l()],J.prototype,`processor`,void 0),e([l({type:ae})],J.prototype,`filter`,void 0),e([l()],J.prototype,`loadedGraphics`,void 0),e([l()],J.prototype,`layerViewUid`,null),e([l()],J.prototype,`_controller`,void 0),e([l()],J.prototype,`updating`,void 0),e([l()],J.prototype,`suspended`,void 0),e([l(pe)],J.prototype,`updatingProgress`,void 0),e([l()],J.prototype,`updatingProgressValue`,null),e([l({readOnly:!0})],J.prototype,`visibleAtCurrentScale`,null),e([l(q.requiredFields)],J.prototype,`requiredFields`,null),e([l(q.availableFields)],J.prototype,`availableFields`,void 0),e([l()],J.prototype,`_fieldsHelper`,void 0),e([l({type:Number})],J.prototype,`maximumNumberOfFeatures`,null),e([l({readOnly:!0})],J.prototype,`maximumNumberOfFeaturesExceeded`,null),e([l()],J.prototype,`_excludeObjectIds`,null),e([l({readOnly:!0})],J.prototype,`lodFactor`,null),e([l({readOnly:!0})],J.prototype,`hasM`,null),e([l({readOnly:!0})],J.prototype,`hasZ`,null),e([l()],J.prototype,`contentVisible`,null),e([l({readOnly:!0})],J.prototype,`legendEnabled`,null),e([l()],J.prototype,`_graphicOrigin`,null),J=e([u(`esri.views.3d.layers.SceneLayerGraphicsView3D`)],J);const be=J;function xe(e){return`pointData`in e}function Y(e){return`geometryBuffer`in e&&e.geometryBuffer!==null}function Se(e,t,n){let r=t.attributeInfo;if(r?.loadedAttributes==null||r.attributeData==null)return!1;let i=!1;for(let{name:t}of r.loadedAttributes)if(r.attributeData[t]){let a=j(r.attributeData[t],n);a!==e.attributes[t]&&(e.attributes[t]=a,i=!0)}return i}function X(e){let t=e.attributeInfo;if(t?.loadedAttributes==null||t.attributeData==null)return;let n=e.node.index;for(let r=0;r<e.graphics.length;r++){let i=e.graphics[r];if(i.nodeIndex===n){i.attributes||={};for(let{name:e}of t.loadedAttributes)t.attributeData[e]&&(i.attributes[e]=j(t.attributeData[e],r))}}}function Ce(e,t){return e.xmin-=t,e.ymin-=t,e.xmax+=t,e.ymax+=t,e.zmin!=null&&e.zmax!=null&&(e.zmin-=t,e.zmax+=t),e.mmin!=null&&e.mmax!=null&&(e.mmin-=t,e.mmax+=t),e}const we={2:{type:`Embedded`,params:{type:`points`,vertexAttributes:{position:[0,0]}}},3:{type:`Embedded`,params:{type:`points`,vertexAttributes:{position:[0,0,0]}}}},Z=p(),Q={graphic:null,property:null,oldValue:null,newValue:null},Te=p();function $(){Q.graphic=null,Q.property=null,Q.oldValue=null,Q.newValue=null}export{be as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../Graphic.js";import n from"../../../core/Logger.js";import{destroyMaybe as r}from"../../../core/maybe.js";import{throwIfAborted as i}from"../../../core/promiseUtils.js";import a from"../../../core/ReactiveSet.js";import{initial as o}from"../../../core/reactiveUtils.js";import{property as s,subclass as c}from"../../../core/accessorSupport/decorators.js";import l from"../../../core/sql/WhereClause.js";import u from"../../../layers/support/FeatureFilter.js";import{getFloorFilterClause as d}from"../../../layers/support/floorFilterUtils.js";import f from"../../../rest/support/Query.js";import{isNumber as p}from"../../../support/guards.js";import{I3SMeshView3D as m}from"./I3SMeshView3D.js";import{LayerView3D as h}from"./LayerView3D.js";import{createInteractiveEditSession as g,normalizeEditResultsEvent as _,processGeometryEdits as v,processAttributeEdits as y}from"./i3s/featureEditing.js";import{createGetFeatureExtent as b}from"./i3s/I3SGeometryUtil.js";import{I3SMeshViewFilter as x}from"./i3s/I3SMeshViewFilter.js";import{I3SOverrides as S}from"./i3s/I3SOverrides.js";import{I3SQueryEngine as C}from"./i3s/I3SQueryEngine.js";import{I3SQueryFeatureAdapter as w,I3SQueryFeature as T}from"./i3s/I3SQueryFeatureAdapter.js";import{I3SQueryFeatureStore as E}from"./i3s/I3SQueryFeatureStore.js";import{checkRecyclable as D,getIndexCrs as O,objectIdFilter as k}from"./i3s/I3SUtil.js";import{DefinitionExpressionSceneLayerView as A}from"./support/DefinitionExpressionSceneLayerView.js";import{defineFieldProperties as j}from"./support/fieldProperties.js";import{PopupSceneLayerView as M}from"./support/PopupSceneLayerView.js";import{SceneLayerViewRequiredFields as N}from"./support/SceneLayerViewRequiredFields.js";import{TemporalSceneLayerView as P}from"./support/TemporalSceneLayerView.js";import{updatingProgress as F}from"../support/updatingProperties.js";import I from"../../layers/SceneLayerView.js";import{hasPopupTemplate as L}from"../../layers/support/popupUtils.js";import{isInEffectiveScaleRange as R}from"../../support/layerViewUtils.js";import{TaskPriority as z}from"../../support/Scheduler.js";const B=j();let V=class extends m(P(A(M(h(I))))){constructor(){super(...arguments),this.type=`scene-layer-3d`,this.viewFilter=null,this._setVisibilityHiddenObjectIds=new a,this.progressiveLoadFactor=1,this._elevationContext=2,this._supportsLabeling=!0,this._pendingEditsQueue=Promise.resolve(),this._interactiveEditingSessions=new Map,this._queryEngine=null}tryRecycleWith(e,t){return e.url!==this.layer.url||!this.i3sOverrides.isEmpty?null:e.load(t).then(()=>{i(t),D(this.layer,e,this.i3sOverrides),this.layer=e,this.i3sOverrides.destroy();let n=this.view.resourceController?.memoryController;this.i3sOverrides=new S({view:this.view,layer:e,memoryController:n,extractChanges:this.extractChanges}),this.resetHighlights()})}get layerPopupEnabledAndHasTemplate(){return this.layer.popupEnabled&&L(this.layer,this.view.popup?.defaultPopupTemplateEnabled)}get filter(){return this._get(`filter`)}set filter(e){this._set(`filter`,x.checkSupport(e)?e:null)}get requiredFields(){return this._fieldsHelper?.requiredFields??[]}get _floorFilterClause(){let e=d(this);return e==null?null:l.create(e,{fieldsIndex:this.layer.fieldsIndex})}get _excludeObjectIdsSorted(){let e=this.layer.excludeObjectIds.toArray();return e.length?e.sort((e,t)=>e-t):null}get _setVisibilityHiddenObjectIdsSorted(){return this._setVisibilityHiddenObjectIds.size?Array.from(this._setVisibilityHiddenObjectIds).sort((e,t)=>e-t):null}get lodFactor(){return this.view?.qualitySettings?.sceneService?.objectLoDFactor??1}get lodCrossfadeUncoveredDuration(){return this.view?.qualitySettings?.fadeDuration??0}get updatingProgressValue(){return this._controller?.updatingProgress??0}get visibleAtCurrentScale(){return R(this.layer.effectiveScaleRange,this.view.scale)}get _graphicOrigin(){return this.layer.graphicOrigin}initialize(){this._fieldsHelper=new N({layerView:this}),this._updatingHandles.add(()=>this.layer.rangeInfos,e=>this._rangeInfosChanged(e),o),this._updatingHandles.add(()=>this.layer.renderer,e=>this._updatingHandles.addPromise(this._rendererChange(e)),o);let e=()=>this._filterChange();this._updatingHandles.add(()=>this.parsedDefinitionExpression,e),this._updatingHandles.add(()=>this.mergedFilter,e),this._updatingHandles.add(()=>this._floorFilterClause,e),this._updatingHandles.add(()=>this._excludeObjectIdsSorted,e),this._updatingHandles.add(()=>this._setVisibilityHiddenObjectIdsSorted,e),this._updatingHandles.add(()=>this.viewFilter?.sortedObjectIds,e),this._updatingHandles.add(()=>this.viewFilter?.parsedWhereClause,e),this._updatingHandles.add(()=>this.getTimeFilterDependencies(),e),this._updatingHandles.add(()=>[this.viewFilter?.parsedGeometry,this.mergedFilter?.spatialRelationship,this.layer.filter?.spatialRelationship],()=>this._geometryFilterChange()),this._updatingHandles.add(()=>({layerViewFilter:this.mergedFilter,layerFilter:this.layerFilter}),({layerViewFilter:e,layerFilter:t})=>{if(e==null&&t==null){this._set(`viewFilter`,null);return}let n=this.viewFilter;if(n){n.viewFilter=e,n.layerFilter=t,this._filterChange();return}this._set(`viewFilter`,new x({layerFilter:t,viewFilter:e,layerFieldsIndex:this.layer.fieldsIndex,loadAsyncModule:e=>this._loadAsyncModule(e),addSqlFilter:(e,t)=>this.addSqlFilter(e,t,this.logError),addTimeFilter:(e,t)=>this.addTimeFilter(e,t)}))},o),this.i3sOverrides.is3DOFL&&this._updatingHandles.add(()=>this.i3sOverrides.sortedGeometryChangedObjectIds,e),this.addHandles(this.layer.on(`apply-edits`,e=>this._updatingHandles.addPromise(e.result))),this.addHandles(this.layer.on(`edits`,e=>{let t=this._pendingEditsQueue.then(()=>this._handleEdits(e)).then();this._pendingEditsQueue=t,this._updatingHandles.consumePromise(t)}))}destroy(){this._fieldsHelper=r(this._fieldsHelper)}_rangeInfosChanged(e){e!=null&&e.length>0&&n.getLogger(this).warn(`Unsupported property: rangeInfos are currently only serialized to and from web scenes but do not affect rendering.`)}createQuery(){let e={outFields:[`*`],returnGeometry:!0,returnZ:!0,outSpatialReference:this.view.spatialReference};return this.mergedFilter?.createQuery(e)??new f(e)}queryExtent(e,t){return this._ensureQueryEngine().executeQueryForExtent(this._ensureQuery(e),t?.signal)}queryFeatureCount(e,t){return this._ensureQueryEngine().executeQueryForCount(this._ensureQuery(e),t?.signal)}queryFeatures(e,t){return this._ensureQueryEngine().executeQuery(this._ensureQuery(e),t?.signal).then(e=>{if(!e?.features)return e;let t=this.layer,n=this._graphicOrigin;for(let r of e.features)r.layer=t,r.sourceLayer=t,r.origin=n;return e})}async queryObjectIds(e,t){return(await this._ensureQueryEngine().executeQueryForIds(this._ensureQuery(e),t?.signal)).filter(p)}_ensureQueryEngine(){return this._queryEngine??=this._createQueryEngine(),this._queryEngine}_createQueryEngine(){let e=b(this.view.spatialReference,this.view.renderSpatialReference,this._collection);return new C({layerView:this,priority:z.FEATURE_QUERY_ENGINE,spatialIndex:new E({featureAdapter:new w({objectIdField:this.layer.objectIdField,attributeStorageInfo:this.layer.attributeStorageInfo??[],getFeatureExtent:e}),forAllFeatures:(e,t)=>this._forAllFeatures((t,n,r)=>e(new T(t,n,r)),t,2),getFeatureExtent:e,sourceSpatialReference:O(this.layer),viewSpatialReference:this.view.spatialReference})})}createInteractiveEditSession(e){return g(this._attributeEditingContext,e)}_createLayerGraphic(e){return new t({attributes:e,layer:this.layer,sourceLayer:this.layer,origin:this._graphicOrigin})}getFilters(){let e=super.getFilters();this.i3sOverrides.is3DOFL&&this.i3sOverrides.sortedGeometryChangedObjectIds.length>0&&e.push((e,t)=>{t.node.index>=0&&k(this.i3sOverrides.sortedGeometryChangedObjectIds,!1,e)});let t=this._setVisibilityHiddenObjectIdsSorted;t!=null&&e.push(e=>k(t,!1,e));let n=this._excludeObjectIdsSorted;return n!=null&&e.push(e=>k(n,!1,e)),this._floorFilterClause&&this.addSqlFilter(e,this._floorFilterClause,this.logError),this.addSqlFilter(e,this.parsedDefinitionExpression,this.logError),this.viewFilter!=null&&this.viewFilter.addFilters(e,this.view,this._controller.crsIndex,this._collection),e}setVisibility(e,t){t?this._setVisibilityHiddenObjectIds.delete(e):this._setVisibilityHiddenObjectIds.add(e)}isUpdating(){return super.isUpdating()||!!this._fieldsHelper?.updating||this.layerFilterUpdating||this.viewFilter!=null&&this.viewFilter.updating||this.i3sOverrides!=null&&this.i3sOverrides.updating}_ensureQuery(e){return this._validateQuery(this._addDefinitionExpressionToQuery(e==null?this.createQuery():f.from(e)))}_validateQuery(e){return e.outSpatialReference&&!e.outSpatialReference.equals(this.view.spatialReference)&&(n.getLogger(this).warn(`query: outSpatialReference different from the view's spatial reference is not supported`),e.outSpatialReference=this.view.spatialReference),e.returnGeometry&&(e.returnZ=!0),e.returnCentroid=!1,e}get _attributeEditingContext(){return{sessions:this._interactiveEditingSessions,fieldsIndex:this.layer.fieldsIndex,objectIdField:this._getObjectIdField(),globalIdField:this._getGlobalIdField(),forEachNode:e=>this._forAllNodes(t=>t==null?null:e(t.node,t.featureIds)),attributeStorageInfo:this.layer.attributeStorageInfo??[],i3sOverrides:this.i3sOverrides,getAttributeData:e=>this.getAttributeData(e),setAttributeData:(e,t)=>this.setAttributeData(e,t),clearMemCache:()=>this.clearMemCache()}}async _handleEdits(e){let t=this._attributeEditingContext,n=await _(t,e);v(t,n),y(t,n)}get hasGeometryFilter(){return this.viewFilter?.parsedGeometry!=null}computeNodeFiltering(e){let t=this.viewFilter;return+!(t==null||!this.view.spatialReference||t.isMBSGeometryVisible(e,this.view.spatialReference,this._controller.crsIndex))}};e([s(F)],V.prototype,`updatingProgress`,void 0),e([s({type:u})],V.prototype,`filter`,null),e([s({readOnly:!0})],V.prototype,`viewFilter`,void 0),e([s(B.requiredFields)],V.prototype,`requiredFields`,null),e([s(B.availableFields)],V.prototype,`availableFields`,void 0),e([s()],V.prototype,`_fieldsHelper`,void 0),e([s()],V.prototype,`_floorFilterClause`,null),e([s()],V.prototype,`_excludeObjectIdsSorted`,null),e([s()],V.prototype,`_setVisibilityHiddenObjectIds`,void 0),e([s()],V.prototype,`_setVisibilityHiddenObjectIdsSorted`,null),e([s()],V.prototype,`lodFactor`,null),e([s()],V.prototype,`updatingProgressValue`,null),e([s({readOnly:!0})],V.prototype,`visibleAtCurrentScale`,null),e([s()],V.prototype,`_graphicOrigin`,null),V=e([c(`esri.views.3d.layers.SceneLayerView3D`)],V);const H=V;export{H as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../Graphic.js";import n from"../../../core/Logger.js";import{destroyMaybe as r}from"../../../core/maybe.js";import{throwIfAborted as i}from"../../../core/promiseUtils.js";import a from"../../../core/ReactiveSet.js";import{initial as o}from"../../../core/reactiveUtils.js";import{property as s,subclass as c}from"../../../core/accessorSupport/decorators.js";import l from"../../../core/sql/WhereClause.js";import{isInEffectiveScaleRange as u}from"../../../geometry/support/scaleUtils.js";import d from"../../../layers/support/FeatureFilter.js";import{getFloorFilterClause as f}from"../../../layers/support/floorFilterUtils.js";import p from"../../../rest/support/Query.js";import{isNumber as m}from"../../../support/guards.js";import{I3SMeshView3D as h}from"./I3SMeshView3D.js";import{LayerView3D as g}from"./LayerView3D.js";import{createInteractiveEditSession as _,normalizeEditResultsEvent as v,processGeometryEdits as y,processAttributeEdits as b}from"./i3s/featureEditing.js";import{createGetFeatureExtent as x}from"./i3s/I3SGeometryUtil.js";import{I3SMeshViewFilter as S}from"./i3s/I3SMeshViewFilter.js";import{I3SOverrides as C}from"./i3s/I3SOverrides.js";import{I3SQueryEngine as w}from"./i3s/I3SQueryEngine.js";import{I3SQueryFeatureAdapter as T,I3SQueryFeature as E}from"./i3s/I3SQueryFeatureAdapter.js";import{I3SQueryFeatureStore as D}from"./i3s/I3SQueryFeatureStore.js";import{checkRecyclable as O,getIndexCrs as k,objectIdFilter as A}from"./i3s/I3SUtil.js";import{DefinitionExpressionSceneLayerView as j}from"./support/DefinitionExpressionSceneLayerView.js";import{defineFieldProperties as M}from"./support/fieldProperties.js";import{PopupSceneLayerView as N}from"./support/PopupSceneLayerView.js";import{SceneLayerViewRequiredFields as P}from"./support/SceneLayerViewRequiredFields.js";import{TemporalSceneLayerView as F}from"./support/TemporalSceneLayerView.js";import{updatingProgress as I}from"../support/updatingProperties.js";import L from"../../layers/SceneLayerView.js";import{hasPopupTemplate as R}from"../../layers/support/popupUtils.js";import{TaskPriority as z}from"../../support/Scheduler.js";const B=M();let V=class extends h(F(j(N(g(L))))){constructor(){super(...arguments),this.type=`scene-layer-3d`,this.viewFilter=null,this._setVisibilityHiddenObjectIds=new a,this.progressiveLoadFactor=1,this._elevationContext=2,this._supportsLabeling=!0,this._pendingEditsQueue=Promise.resolve(),this._interactiveEditingSessions=new Map,this._queryEngine=null}tryRecycleWith(e,t){return e.url!==this.layer.url||!this.i3sOverrides.isEmpty?null:e.load(t).then(()=>{i(t),O(this.layer,e,this.i3sOverrides),this.layer=e,this.i3sOverrides.destroy();let n=this.view.resourceController?.memoryController;this.i3sOverrides=new C({view:this.view,layer:e,memoryController:n,extractChanges:this.extractChanges}),this.resetHighlights()})}get layerPopupEnabledAndHasTemplate(){return this.layer.popupEnabled&&R(this.layer,this.view.popup?.defaultPopupTemplateEnabled)}get filter(){return this._get(`filter`)}set filter(e){this._set(`filter`,S.checkSupport(e)?e:null)}get requiredFields(){return this._fieldsHelper?.requiredFields??[]}get _floorFilterClause(){let e=f(this);return e==null?null:l.create(e,{fieldsIndex:this.layer.fieldsIndex})}get _excludeObjectIdsSorted(){let e=this.layer.excludeObjectIds.toArray();return e.length?e.sort((e,t)=>e-t):null}get _setVisibilityHiddenObjectIdsSorted(){return this._setVisibilityHiddenObjectIds.size?Array.from(this._setVisibilityHiddenObjectIds).sort((e,t)=>e-t):null}get lodFactor(){return this.view?.qualitySettings?.sceneService?.objectLoDFactor??1}get lodCrossfadeUncoveredDuration(){return this.view?.qualitySettings?.fadeDuration??0}get updatingProgressValue(){return this._controller?.updatingProgress??0}get visibleAtCurrentScale(){return u(this.layer.effectiveScaleRange,this.view.scale)}get _graphicOrigin(){return this.layer.graphicOrigin}initialize(){this._fieldsHelper=new P({layerView:this}),this._updatingHandles.add(()=>this.layer.rangeInfos,e=>this._rangeInfosChanged(e),o),this._updatingHandles.add(()=>this.layer.renderer,e=>this._updatingHandles.addPromise(this._rendererChange(e)),o);let e=()=>this._filterChange();this._updatingHandles.add(()=>this.parsedDefinitionExpression,e),this._updatingHandles.add(()=>this.mergedFilter,e),this._updatingHandles.add(()=>this._floorFilterClause,e),this._updatingHandles.add(()=>this._excludeObjectIdsSorted,e),this._updatingHandles.add(()=>this._setVisibilityHiddenObjectIdsSorted,e),this._updatingHandles.add(()=>this.viewFilter?.sortedObjectIds,e),this._updatingHandles.add(()=>this.viewFilter?.parsedWhereClause,e),this._updatingHandles.add(()=>this.getTimeFilterDependencies(),e),this._updatingHandles.add(()=>[this.viewFilter?.parsedGeometry,this.mergedFilter?.spatialRelationship,this.layer.filter?.spatialRelationship],()=>this._geometryFilterChange()),this._updatingHandles.add(()=>({layerViewFilter:this.mergedFilter,layerFilter:this.layerFilter}),({layerViewFilter:e,layerFilter:t})=>{if(e==null&&t==null){this._set(`viewFilter`,null);return}let n=this.viewFilter;if(n){n.viewFilter=e,n.layerFilter=t,this._filterChange();return}this._set(`viewFilter`,new S({layerFilter:t,viewFilter:e,layerFieldsIndex:this.layer.fieldsIndex,loadAsyncModule:e=>this._loadAsyncModule(e),addSqlFilter:(e,t)=>this.addSqlFilter(e,t,this.logError),addTimeFilter:(e,t)=>this.addTimeFilter(e,t)}))},o),this.i3sOverrides.is3DOFL&&this._updatingHandles.add(()=>this.i3sOverrides.sortedGeometryChangedObjectIds,e),this.addHandles(this.layer.on(`apply-edits`,e=>this._updatingHandles.addPromise(e.result))),this.addHandles(this.layer.on(`edits`,e=>{let t=this._pendingEditsQueue.then(()=>this._handleEdits(e)).then();this._pendingEditsQueue=t,this._updatingHandles.consumePromise(t)}))}destroy(){this._fieldsHelper=r(this._fieldsHelper)}_rangeInfosChanged(e){e!=null&&e.length>0&&n.getLogger(this).warn(`Unsupported property: rangeInfos are currently only serialized to and from web scenes but do not affect rendering.`)}createQuery(){let e={outFields:[`*`],returnGeometry:!0,returnZ:!0,outSpatialReference:this.view.spatialReference};return this.mergedFilter?.createQuery(e)??new p(e)}queryExtent(e,t){return this._ensureQueryEngine().executeQueryForExtent(this._ensureQuery(e),t?.signal)}queryFeatureCount(e,t){return this._ensureQueryEngine().executeQueryForCount(this._ensureQuery(e),t?.signal)}queryFeatures(e,t){return this._ensureQueryEngine().executeQuery(this._ensureQuery(e),t?.signal).then(e=>{if(!e?.features)return e;let t=this.layer,n=this._graphicOrigin;for(let r of e.features)r.layer=t,r.sourceLayer=t,r.origin=n;return e})}async queryObjectIds(e,t){return(await this._ensureQueryEngine().executeQueryForIds(this._ensureQuery(e),t?.signal)).filter(m)}_ensureQueryEngine(){return this._queryEngine??=this._createQueryEngine(),this._queryEngine}_createQueryEngine(){let e=x(this.view.spatialReference,this.view.renderSpatialReference,this._collection);return new w({layerView:this,priority:z.FEATURE_QUERY_ENGINE,spatialIndex:new D({featureAdapter:new T({objectIdField:this.layer.objectIdField,attributeStorageInfo:this.layer.attributeStorageInfo??[],getFeatureExtent:e}),forAllFeatures:(e,t)=>this._forAllFeatures((t,n,r)=>e(new E(t,n,r)),t,2),getFeatureExtent:e,sourceSpatialReference:k(this.layer),viewSpatialReference:this.view.spatialReference})})}createInteractiveEditSession(e){return _(this._attributeEditingContext,e)}_createLayerGraphic(e){return new t({attributes:e,layer:this.layer,sourceLayer:this.layer,origin:this._graphicOrigin})}getFilters(){let e=super.getFilters();this.i3sOverrides.is3DOFL&&this.i3sOverrides.sortedGeometryChangedObjectIds.length>0&&e.push((e,t)=>{t.node.index>=0&&A(this.i3sOverrides.sortedGeometryChangedObjectIds,!1,e)});let t=this._setVisibilityHiddenObjectIdsSorted;t!=null&&e.push(e=>A(t,!1,e));let n=this._excludeObjectIdsSorted;return n!=null&&e.push(e=>A(n,!1,e)),this._floorFilterClause&&this.addSqlFilter(e,this._floorFilterClause,this.logError),this.addSqlFilter(e,this.parsedDefinitionExpression,this.logError),this.viewFilter!=null&&this.viewFilter.addFilters(e,this.view,this._controller.crsIndex,this._collection),e}setVisibility(e,t){t?this._setVisibilityHiddenObjectIds.delete(e):this._setVisibilityHiddenObjectIds.add(e)}isUpdating(){return super.isUpdating()||!!this._fieldsHelper?.updating||this.layerFilterUpdating||this.viewFilter!=null&&this.viewFilter.updating||this.i3sOverrides!=null&&this.i3sOverrides.updating}_ensureQuery(e){return this._validateQuery(this._addDefinitionExpressionToQuery(e==null?this.createQuery():p.from(e)))}_validateQuery(e){return e.outSpatialReference&&!e.outSpatialReference.equals(this.view.spatialReference)&&(n.getLogger(this).warn(`query: outSpatialReference different from the view's spatial reference is not supported`),e.outSpatialReference=this.view.spatialReference),e.returnGeometry&&(e.returnZ=!0),e.returnCentroid=!1,e}get _attributeEditingContext(){return{sessions:this._interactiveEditingSessions,fieldsIndex:this.layer.fieldsIndex,objectIdField:this._getObjectIdField(),globalIdField:this._getGlobalIdField(),forEachNode:e=>this._forAllNodes(t=>t==null?null:e(t.node,t.featureIds)),attributeStorageInfo:this.layer.attributeStorageInfo??[],i3sOverrides:this.i3sOverrides,getAttributeData:e=>this.getAttributeData(e),setAttributeData:(e,t)=>this.setAttributeData(e,t),clearMemCache:()=>this.clearMemCache()}}async _handleEdits(e){let t=this._attributeEditingContext,n=await v(t,e);y(t,n),b(t,n)}get hasGeometryFilter(){return this.viewFilter?.parsedGeometry!=null}computeNodeFiltering(e){let t=this.viewFilter;return+!(t==null||!this.view.spatialReference||t.isMBSGeometryVisible(e,this.view.spatialReference,this._controller.crsIndex))}};e([s(I)],V.prototype,`updatingProgress`,void 0),e([s({type:d})],V.prototype,`filter`,null),e([s({readOnly:!0})],V.prototype,`viewFilter`,void 0),e([s(B.requiredFields)],V.prototype,`requiredFields`,null),e([s(B.availableFields)],V.prototype,`availableFields`,void 0),e([s()],V.prototype,`_fieldsHelper`,void 0),e([s()],V.prototype,`_floorFilterClause`,null),e([s()],V.prototype,`_excludeObjectIdsSorted`,null),e([s()],V.prototype,`_setVisibilityHiddenObjectIds`,void 0),e([s()],V.prototype,`_setVisibilityHiddenObjectIdsSorted`,null),e([s()],V.prototype,`lodFactor`,null),e([s()],V.prototype,`updatingProgressValue`,null),e([s({readOnly:!0})],V.prototype,`visibleAtCurrentScale`,null),e([s()],V.prototype,`_graphicOrigin`,null),V=e([c(`esri.views.3d.layers.SceneLayerView3D`)],V);const H=V;export{H as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../core/Error.js";import{whenOnce as n}from"../../../core/reactiveUtils.js";import{property as r,subclass as i}from"../../../core/accessorSupport/decorators.js";import{
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../core/Error.js";import{whenOnce as n}from"../../../core/reactiveUtils.js";import{property as r,subclass as i}from"../../../core/accessorSupport/decorators.js";import{isScaleRangeActive as a,validateScaleRange as o}from"../../../geometry/support/scaleUtils.js";import{LayerViewPerformanceInfo as s}from"./support/LayerViewPerformanceInfo.js";import{updatingProgress as c,updatingProgressValue as l}from"../support/updatingProperties.js";import{checkIfTileInfoSupportedForView as u}from"../terrain/terrainUtils.js";const d=d=>{let f=d,p=class extends f{constructor(){super(...arguments),this.hasMixedImageFormats=!0}get imageFormatIsOpaque(){return!1}get fullExtent(){return this.layer.fullExtent}get isOpaque(){return this.fullOpacity>=1&&this.imageFormatIsOpaque}initialize(){this.addHandles(this.view.basemapTerrain.on(`tile-data-changed`,({layerClass:e,layerIndex:t})=>{e===1&&t===this.view.basemapTerrain.getLayerIndexByUID(1,this.uid)&&this.notifyChange(`visibleAtCurrentScale`)}))}tilesVisibleAtCurrentScale(){let{minScale:e,maxScale:t}=this.layer;if(!a(e,t))return!0;let{basemapTerrain:n}=this.view,r=n.getLayerIndexByUID(1,this.uid);if(r==null)return!1;let{tilingScheme:i}=n,o=e&&i.levelAtScale(e),s=t&&i.levelAtScale(t);return n.renderer.visibleTiles.some(e=>!!e.layerInfo[1][r]&&(!o||e.level>=o)&&(!s||e.level<=s))}get visibleAtCurrentScale(){return this.tilesVisibleAtCurrentScale()}get dataScaleRange(){let e=this.tileInfo.lods,t=e[0].scale,n=e[e.length-1].scale;if(`tilemapCache`in this.layer&&this.layer.tilemapCache){let{effectiveMinLOD:e,effectiveMaxLOD:r}=this.layer.tilemapCache;t=this.tileInfo.lodAt(e).scale,n=this.tileInfo.lodAt(r).scale}return{minScale:t,maxScale:n}}canResume(){let e=this.layer&&`effectiveScaleRange`in this.layer?this.layer.effectiveScaleRange:null;return this.visible&&this.layer?.loaded&&!this.parent?.suspended&&this.view?.ready&&o(e)&&this.visibleAtCurrentTimeExtent||!1}get dataLevelRange(){let{minScale:e,maxScale:t}=this.dataScaleRange;return this.levelRangeFromScaleRange(e,t)}get displayLevelRange(){let e=this.layer.minScale||this.dataScaleRange.minScale,t=this.layer.maxScale||this.dataScaleRange.maxScale,n=this.levelRangeFromScaleRange(e,t);return this.layer.maxScale&&n.maxLevel++,n}get performanceInfo(){return new s(this.view.basemapTerrain.getUsedMemoryForLayerView(this))}getTileUrl(e){return`getTileUrl`in this.layer?this.layer.getTileUrl(e[0],e[1],e[2]):null}_addTilingSchemeMatchPromise(){if(this.fullExtent==null)return this.addResolvingPromise(Promise.reject(new t(`tilingscheme:extent-not-defined`,`This layer doesn't define a fullExtent.`)));let e=this._getTileInfoSupportError(this.tileInfo,this.fullExtent);if(e)return this.addResolvingPromise(Promise.reject(e));this.addResolvingPromise(n(()=>this.view?.basemapTerrain?.tilingSchemeLocked).then(()=>{let e=this.view.basemapTerrain.tilingScheme,t=`tilemapCache`in this.layer?this.layer.tilemapCache?.effectiveMaxLOD:void 0,n=this._getTileInfoCompatibilityError(this.tileInfo,e,t);if(n)throw n}))}_getTileInfoSupportError(e,n){let r=u(e,n,this.view.spatialReference,this.view.state.viewingMode,`tilemapCache`in this.layer?this.layer.tilemapCache?.effectiveMaxLOD:void 0);if(!r)return;let i={layer:this.layer,error:r};switch(r.name){case`tilingscheme:spatial-reference-mismatch`:case`tilingscheme:global-unsupported-spatial-reference`:case`tilingscheme:local-unsupported-spatial-reference`:return new t(`layerview:spatial-reference-incompatible`,`The spatial reference of this layer does not meet the requirements of the view`,i);default:return new t(`layerview:tiling-scheme-unsupported`,`The tiling scheme of this layer is not supported by SceneView`,i)}}_getTileInfoCompatibilityError(e,n,r){return e==null||!n.compatibleWith(e,r)?new t(`layerview:tiling-scheme-incompatible`,`The tiling scheme of this layer is incompatible with the tiling scheme of the surface`):null}levelRangeFromScaleRange(e,t){let n={minLevel:0,maxLevel:1/0},r=this.view&&this.view.basemapTerrain&&this.view.basemapTerrain.tilingScheme;if(!r)return n;let i=r.levels[0],a=e=>{let t=Math.log(i.scale/e)/Math.LN2;return .5-Math.abs(.5-t%1)<1e-9?Math.round(t):Math.ceil(t)};return e!=null&&e>0&&(n.minLevel=Math.max(0,a(e))),t!=null&&t>0&&(n.maxLevel=Math.max(0,a(t))),n}isUpdating(){return!!(this.view&&this.view.basemapTerrain&&this.view.basemapTerrain.updating)}};return e([r({readOnly:!0})],p.prototype,`imageFormatIsOpaque`,null),e([r({readOnly:!0})],p.prototype,`updating`,void 0),e([r(c)],p.prototype,`updatingProgress`,void 0),e([r(l)],p.prototype,`updatingProgressValue`,void 0),e([r()],p.prototype,`hasMixedImageFormats`,void 0),e([r()],p.prototype,`fullExtent`,null),e([r({readOnly:!0})],p.prototype,`isOpaque`,null),e([r({readOnly:!0})],p.prototype,`visibleAtCurrentScale`,null),e([r()],p.prototype,`dataScaleRange`,null),e([r({readOnly:!0})],p.prototype,`dataLevelRange`,null),e([r({readOnly:!0})],p.prototype,`displayLevelRange`,null),e([r()],p.prototype,`layer`,void 0),p=e([i(`esri.views.3d.layers.TiledLayerView3D`)],p),p};export{d as TiledLayerView3D};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../core/Error.js";import n from"../../../core/Logger.js";import{watch as r,initial as i}from"../../../core/reactiveUtils.js";import{property as a,subclass as o}from"../../../core/accessorSupport/decorators.js";import{cross as s,normalize as c,set as l}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as u}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import d from"../../../geometry/SpatialReference.js";import{projectVectorToVector as f}from"../../../geometry/projection/projectVectorToVector.js";import{empty as p,expandWithVec3 as m}from"../../../geometry/support/aaBoundingBox.js";import{
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../core/Error.js";import n from"../../../core/Logger.js";import{watch as r,initial as i}from"../../../core/reactiveUtils.js";import{property as a,subclass as o}from"../../../core/accessorSupport/decorators.js";import{cross as s,normalize as c,set as l}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as u}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import d from"../../../geometry/SpatialReference.js";import{projectVectorToVector as f}from"../../../geometry/projection/projectVectorToVector.js";import{empty as p,expandWithVec3 as m}from"../../../geometry/support/aaBoundingBox.js";import{isInEffectiveScaleRange as h}from"../../../geometry/support/scaleUtils.js";import{equals as g}from"../../../geometry/support/spatialReferenceUtils.js";import{LayerView3D as _}from"./LayerView3D.js";import{VoxelGraphic as v}from"./VoxelGraphic.js";import{addLayerViewToWasm as y,getVoxelWasm as b,removeLayerViewFromWasm as x}from"./VoxelWasm.js";import{LayerViewPerformanceInfo as S}from"./support/LayerViewPerformanceInfo.js";import{PopupSceneLayerView as C}from"./support/PopupSceneLayerView.js";import w from"../../layers/LayerView.js";import{spatialReferenceIncompatibleError as T}from"../../support/layerViewUtils.js";const E=u(),D=u();let O=class extends C(_(w)){constructor(){super(...arguments),this.type=`voxel-3d`,this.ignoresMemoryFactor=!0,this._suspendedHandle=null,this._usedMemory=0,this._futureMemory=0,this.slicePlaneEnabled=!1,this._wasmLayerId=-1,this._dbgFlags=new Set}initialize(){if(this._dbgFlags.add(3),this.view.viewingMode!==`local`)throw new t(`voxel:unsupported-viewingMode`,`Voxel layers support local viewingMode only.`,{});if(!this.view.stage.renderView.renderingContext.capabilities.colorBufferFloat?.textureFloat)throw new t(`voxel:missing-color-buffer-float`,`Voxel layers require the WebGL2 extension EXT_color_buffer_float`,{});let e=this.layer.spatialReference;if(!g(e,this.view.spatialReference))throw T(`voxel layer`,e.wkid,this.view.spatialReference.wkid);let n=this.layer.currentVariableId,a=this.layer.getVolume(n),o=this.layer.getVariable(n);if(a!=null&&o!=null){let e=a.dimensions[0],t=a.dimensions[1],n=a.zDimension;if(n>1){let r=a.dimensions[n],i=e.size*t.size*r.size,s=1;switch(o.renderingFormat.type){case`Int16`:case`UInt16`:s=2;break;case`Int32`:case`UInt32`:case`Float32`:s=4}this._futureMemory=s*i}}let s=y(this).then(e=>{this._wasmLayerId=e,this._suspendedHandle=r(()=>this.suspended,e=>{let t=b(this.view);t&&t.setEnabled(this,!e)},i),this.addHandles([r(()=>this.layer.renderMode,e=>this._pushRenderModeToWasm(e)),r(()=>this.layer.currentVariableId,e=>this._pushCurrentVariableIdToWasm(e)),r(()=>this.layer.getSections(),e=>this._pushSectionsToWasm(e)),r(()=>this.layer.getVariableStyles(),e=>this._pushVariableStylesToWasm(e)),r(()=>this.layer.getVolumeStyles(),e=>this._pushVolumeStylesToWasm(e)),r(()=>this.layer.enableDynamicSections,e=>this._pushEnableDynamicSectionsToWasm(e)),r(()=>this.layer.enableIsosurfaces,e=>this._pushEnableIsosurfacesToWasm(e)),r(()=>this.layer.enableSections,e=>this._pushEnableSectionsToWasm(e)),r(()=>this.layer.enableSlices,e=>this._pushEnableSlicesToWasm(e)),r(()=>[this.layer.timeOffset,this.layer.timeExtent,this.layer.useViewTime],()=>this._updateLayerTimeProperties()),r(()=>this.slicePlaneEnabled,e=>this._pushAnalysisSliceToWasm(e,this.view.slice.plane)),r(()=>this.view.slice.plane,e=>this._pushAnalysisSliceToWasm(this.slicePlaneEnabled,e))])}).catch(e=>{if(x(this),this._wasmLayerId=-1,e===-1)throw new t(`voxel:addLayer-failure`,`The voxel layer description was invalid.`,{});if(e===-2)throw new t(`voxel:addLayer-failure`,`The voxel layer web assembly module failed to download.`,{})});this.addResolvingPromise(s)}destroy(){x(this),this._suspendedHandle&&=(this._suspendedHandle.remove(),null)}isUpdating(){let e=b(this.view);return this._wasmLayerId<0||e==null?!1:e.isUpdating(this._wasmLayerId)}updatingFlagChanged(){this.notifyChange(`updating`)}get usedMemory(){return this._usedMemory}get unloadedMemory(){return this._futureMemory}get performanceInfo(){return new S(this.usedMemory)}get visibleAtCurrentScale(){return h(this.layer.effectiveScaleRange,this.view.scale)}whenGraphicBounds(e,t){let n=e.attributes[`Voxel.WorldPosition`];if(n){let e=p(),t=JSON.parse(n);if(f(t,this.view.renderSpatialReference,D,this.view.spatialReference||d.WGS84))return m(e,D),Promise.resolve({boundingBox:e,screenSpaceObjects:[]})}return Promise.reject()}async whenGraphicAttributes(e,t){let n=b(this.view);if(!n)return e;let r=[];for(let t of e)this._isValidVoxelGraphic(t)&&r.push(t);return r.length&&await n.getOtherFieldPopupValues(r,t),e}_isValidVoxelGraphic(e){return e instanceof v}setUsedMemory(e){this._usedMemory=e,this._futureMemory=0}captureFrustum(){b(this.view)?.captureFrustum()}toggleFullVolumeExtentDraw(){b(this.view)?.toggleFullVolumeExtentDraw(this)}getLayerTimes(){return b(this.view)?.getLayerTimes(this)??[]}getCurrentLayerTimeIndex(){return b(this.view)?.getCurrentLayerTimeIndex(this)??0}dropQueryRenderTarget(){b(this.view)?.dropQueryRenderTarget()}_pushRenderModeToWasm(e){let t=b(this.view);this._dbg(2,`VoxelLayerView3D._pushRenderModeToWasm() called, ${t?`have WASM`:`don't have WASM!!!`}`),t?.setRenderMode(this,e)||this._dbg(3,`VoxelLayerView3D._pushRenderModeToWasm() failed!`)}_pushSectionsToWasm(e){let t=b(this.view);this._dbg(2,`VoxelLayerView3D._pushSectionsToWasm() called, ${t?`have WASM`:`don't have WASM!!!`}`),t?.setStaticSections(this,e)||this._dbg(3,`VoxelLayerView3D._pushSectionsToWasm() failed!`)}_pushCurrentVariableIdToWasm(e){let t=b(this.view);this._dbg(2,`VoxelLayerView3D._pushCurrentVariableIdToWasm() called!, ${t?`have WASM`:`don't have WASM!!!`}`),t?.setCurrentVariable(this,e)||this._dbg(3,`VoxelLayerView3D._pushCurrentVariableIdToWasm() failed!`)}_pushVariableStylesToWasm(e){let t=b(this.view);this._dbg(2,`VoxelLayerView3D._pushVariableStylesToWasm() called, ${t?`have WASM`:`don't have WASM!!!`}`),t?.setVariableStyles(this,e)||this._dbg(3,`VoxelLayerView3D._pushVariableStylesToWasm() failed!`)}_accountForEnableSlices(e,t){let n=t??this.layer.enableSlices;for(let t=0;t<e.length;++t){let r=e[t];for(let e of r.slices)e.enabled=e.enabled&&n}}_pushVolumeStylesToWasm(e){let t=b(this.view);this._dbg(2,`VoxelLayerView3D._pushVolumeStylesToWasm() called, ${t?`have WASM`:`don't have WASM!!!`}`),t&&(this._accountForEnableSlices(e,null),t.setVolumeStyles(this,e)||this._dbg(3,`VoxelLayerView3D._pushVolumeStylesToWasm() failed!`))}_pushAnalysisSliceToWasm(e,t){let n=b(this.view);this._dbg(2,`VoxelLayerView3D._pushAnalysisSliceToWasm() called, ${n?`have WASM`:`don't have WASM!!!`}`);let r=!1;if(n){if(t){let i=t.origin;s(E,t.basis1,t.basis2),c(E,E),r=n.setAnalysisSlice(this,e,i,E)}else l(E,0,0,1),r=n.setAnalysisSlice(this,!1,E,E);r||this._dbg(3,`VoxelLayerView3D._pushAnalysisSliceToWasm() failed!`)}}_updateLayerTimeProperties(){let e=b(this.view);this._dbg(2,`VoxelLayerView3D._updateLayerTimeProperties() called, ${e?`have WASM`:`don't have WASM!!!`}`),e&&e.updateLayerTimeProperties(this)}_pushEnableDynamicSectionsToWasm(e){let t=b(this.view);this._dbg(2,`VoxelLayerView3D._pushEnableDynamicSectionsToWasm() called, ${t?`have WASM`:`don't have WASM!!!`}`),t?.setEnableDynamicSections(this,e)||this._dbg(3,`VoxelLayerView3D._pushEnableDynamicSectionsToWasm() failed!`)}_pushEnableSlicesToWasm(e){let t=b(this.view);if(this._dbg(2,`VoxelLayerView3D._pushEnableSlicesToWasm() called, ${t?`have WASM`:`don't have WASM!!!`}`),t){let n=this.layer.getVolumeStyles();this._accountForEnableSlices(n,e),t.setVolumeStyles(this,n)||this._dbg(3,`VoxelLayerView3D._pushEnableSlicesToWasm() failed!`)}}_pushEnableIsosurfacesToWasm(e){let t=b(this.view);this._dbg(2,`VoxelLayerView3D._pushEnableIsosurfacesToWasm() called, ${t?`have WASM`:`don't have WASM!!!`}`),t?.setEnableIsosurfaces(this,e)||this._dbg(3,`VoxelLayerView3D._pushEnableIsosurfacesToWasm() failed!`)}_pushEnableSectionsToWasm(e){let t=b(this.view);this._dbg(2,`VoxelLayerView3D._pushEnableSectionsToWasm() called, ${t?`have WASM`:`don't have WASM!!!`}`),t?.setEnableSections(this,e)||this._dbg(3,`VoxelLayerView3D._pushEnableSectionsToWasm() failed!`)}get baseUrl(){return this.layer.parsedUrl?.path??``}get wasmLayerId(){return this._wasmLayerId}_dbg(e,t){this._dbgFlags.has(e)&&(e===3?n.getLogger(this).error(t):n.getLogger(this).warn(t))}};e([a({readOnly:!0})],O.prototype,`visibleAtCurrentScale`,null),e([a()],O.prototype,`layer`,void 0),e([a()],O.prototype,`baseUrl`,null),e([a({type:Boolean})],O.prototype,`slicePlaneEnabled`,void 0),O=e([o(`esri.views.3d.layers.VoxelLayerView3D`)],O);const k=O;export{k as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import n from"../../../../core/Logger.js";import{property as r,subclass as i}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as a}from"../../../../core/support/UpdatingHandles.js";import{projectBoundingRect as o}from"../../../../geometry/projection/projectBoundingRect.js";import{create as s}from"../../../../geometry/support/aaBoundingRect.js";import{scaleBoundsPredicate as c}from"
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import n from"../../../../core/Logger.js";import{property as r,subclass as i}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as a}from"../../../../core/support/UpdatingHandles.js";import{projectBoundingRect as o}from"../../../../geometry/projection/projectBoundingRect.js";import{create as s}from"../../../../geometry/support/aaBoundingRect.js";import{scaleBoundsPredicate as c}from"../../../../geometry/support/scaleUtils.js";import{TaskPriority as l}from"../../../support/Scheduler.js";import{Yield as u}from"../../../support/Yield.js";let d=class extends t{constructor(e){super(e),this._scaleRangeActive=!1,this._layerScaleRangeVisibilityQuery=!1,this._extent=null,this._updatingHandles=new a,this.graphicsCoreOwner=null,this.layer=null,this.queryGraphicUIDsInExtent=null,this.graphicsCore=null,this.basemapTerrain=null,this.layerScaleEnabled=!0,this.suspended=!1,this._dirty=!0}initialize(){this.updateScaleRangeActive();let e=this.graphicsCoreOwner.view.resourceController.scheduler;this.addHandles(e.registerTask(l.SCALE_VISIBILITY,this)),this._updatingHandles.add(()=>this.layer.effectiveScaleRange,()=>this.layerMinMaxScaleChangeHandler())}destroy(){this._updatingHandles.destroy(),this.removeHandles(),this._dirty=!1,this._extent=null,this.graphicsCoreOwner=null,this.layer=null,this.queryGraphicUIDsInExtent=null,this.graphicsCore=null,this.basemapTerrain=null}get updating(){return this._dirty||this._updatingHandles.updating}_setDirty(){this._dirty=!0}setExtent(e){let t=this.graphicsCoreOwner.view.spatialReference,n=this.graphicsCoreOwner.view.groundView.spatialReference;if(t===n)this._extent=e??null;else{let r=s();this._extent=o(e,t,r,n)?r:null}this._setDirty()}scaleRangeActive(){return this._scaleRangeActive}updateScaleRangeActive(){let e=this.layer,t=e.effectiveScaleRange,n=this.layerScaleEnabled&&t!=null&&f(t.minScale,t.maxScale);e.labelingInfo&&!n&&(n=e.labelingInfo.some(e=>e&&f(e.minScale??0,e.maxScale??0)));let r=this._scaleRangeActive!==n;return this._scaleRangeActive=n,n&&!this.hasHandles(p)&&this.basemapTerrain?(this.addHandles(this.basemapTerrain.on(`scale-change`,e=>this._scaleUpdateHandler(e)),p),this.layerScaleEnabled&&this.addHandles(this.basemapTerrain.on(`tiles-visibility-changed`,()=>this._setDirty()),p)):!n&&this.hasHandles(p)&&this.removeHandles(p),r}get readyToRun(){return!!(this.graphicsCoreOwner.view.basemapTerrain&&this.updating)}runTask(e){let{groundView:t}=this.graphicsCoreOwner.view;if(!this._extent||!t||!t.ready||!this._scaleRangeActive||!this.layerScaleEnabled)this._finishUpdate(!0);else if(this._layerScaleRangeVisibilityQuery)return u;else{this._layerScaleRangeVisibilityQuery=!0;let{minScale:e,maxScale:t}=this.layer.effectiveScaleRange;this.graphicsCoreOwner.view.basemapTerrain.queryVisibleScaleRange(this._extent,e,t,e=>this._finishUpdate(e))}e.madeProgress()}_finishUpdate(e){this._layerScaleRangeVisibilityQuery=!1,this._set(`suspended`,!e),this._dirty=!1}_visibleAtLayerScale(e){let t=this.layer.effectiveScaleRange;return!this.layerScaleEnabled||c(e,t.minScale||0,t.maxScale||0)}_visibleAtLabelScale(e,t){return c(e,t.minScale||0,t.maxScale||0)}_graphicScale(e){let t;return e.centroid==null?e.graphic.geometry!=null&&e.graphic.geometry.type===`point`&&(t=e.graphic.geometry):t=e.centroid,t?this.graphicsCoreOwner.view.basemapTerrain?this.graphicsCoreOwner.view.basemapTerrain.getScale(t):1:null}_graphicVisible(e){if(!this.layerScaleEnabled)return!0;let t=this._graphicScale(e);return this._visibleAtLayerScale(t)}updateVisibility(e){if(!this._scaleRangeActive)return!1;let t=this._graphicVisible(e);return e.setVisibilityFlag(1,2,t)}updateGraphicLabelScaleVisibility(e){if(!this._scaleRangeActive||!e.labelLayers.length)return!1;let t=this._graphicScale(e),n=this._updateLabelScaleVisibility(e,t);return n&&(this.graphicsCore.deconflictor?.setDirty(),this.graphicsCore.labeler?.setDirty()),n}_updateLabelScaleVisibility(e,t){if(!e.labelLayers.length)return!1;let n=e.labelLayers[0].labelClass;if(n?.minScale!=null&&n.maxScale!=null){let r=this._visibleAtLabelScale(t,n);if(e.setVisibilityFlag(16,2,r))return!0}return!1}_scaleUpdateHandler(e){if(this._setDirty(),!this.graphicsCore.visible)return;let t=e.extent,r=e.scale,i=this._visibleAtLayerScale(r),a=!1,s=this.graphicsCoreOwner.view.spatialReference,c=e.spatialReference;if(c==null){n.getLogger(this).error(`scaleUpdate: Internal error, no SpatialReference given for tiles`);return}let l=!c.equals(s);if(l&&!o(t,c,m,s)){n.getLogger(this).error(`scaleUpdate: Internal error, cannot project AABR from `+c+` to wkid `+s);return}let u=l?m:t;this.queryGraphicUIDsInExtent(u,s,e=>{let n=this.graphicsCore.getGraphics3DGraphicById(e);if(n==null)return;let o=n.centroid;o!=null&&(t[0]>o.x||t[1]>o.y||t[2]<o.x||t[3]<o.y)||(n.setVisibilityFlag(1,2,i)&&(a=!0),this._updateLabelScaleVisibility(n,r)&&(a=!0))}),a&&(this.graphicsCore.deconflictor?.setDirty(),this.graphicsCore.labeler?.setDirty())}layerMinMaxScaleChangeHandler(){this.updateScaleRangeActive()&&!this._scaleRangeActive?this.graphicsCore.modifyGraphics3DGraphicVisibilities(e=>e.setVisibilityFlag(1,2,!0)):this._scaleRangeActive&&this.graphicsCore.updateGraphicsVisibilities(),this._setDirty()}};e([r()],d.prototype,`graphicsCoreOwner`,void 0),e([r()],d.prototype,`layer`,void 0),e([r()],d.prototype,`queryGraphicUIDsInExtent`,void 0),e([r()],d.prototype,`graphicsCore`,void 0),e([r()],d.prototype,`basemapTerrain`,void 0),e([r({constructOnly:!0})],d.prototype,`layerScaleEnabled`,void 0),e([r({readOnly:!0})],d.prototype,`suspended`,void 0),e([r({readOnly:!0})],d.prototype,`updating`,null),e([r()],d.prototype,`_dirty`,void 0),d=e([i(`esri.views.3d.layers.graphics.Graphics3DScaleVisibility`)],d);function f(e,t){return e>0||t>0}const p=`terrain-events`,m=s();export{d as Graphics3DScaleVisibility};
|