@arcgis/core 4.24.0-next.20220607 → 4.24.0-next.20220610
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/analysis/Analysis.js +1 -1
- package/analysis/LineOfSightAnalysis.js +1 -1
- package/arcade/arcadeCompiler.js +1 -1
- package/arcade.d.ts +4 -0
- package/arcade.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{4d2181bde97983ecac8b.js → 03ddf44e6fb8bf9db3ff.js} +1 -1
- package/assets/esri/core/workers/chunks/{2e2d7f5952934af43fd7.js → 04034dabc8e0a489b0f8.js} +1 -1
- package/assets/esri/core/workers/chunks/{d7168ff8f26ca2537080.js → 0747c28fce0b344dc89b.js} +1 -1
- package/assets/esri/core/workers/chunks/1e4e5d147263e98536bc.js +1 -0
- package/assets/esri/core/workers/chunks/{cbe98327181d8d7ad9e5.js → 262fabdc409d55831ffa.js} +1 -1
- package/assets/esri/core/workers/chunks/2a52c2c6edd70432f4a5.js +1 -0
- package/assets/esri/core/workers/chunks/{71d445d1e6812e03a1d7.js → 3ce7adaefc9de28d9c87.js} +1 -1
- package/assets/esri/core/workers/chunks/{c165845a117c21246b1e.js → 42aa8ce4eb7bd851475e.js} +1 -1
- package/assets/esri/core/workers/chunks/{a9a4bb1d781b1a995fb3.js → 4824926501e11d04eb4a.js} +1 -1
- package/assets/esri/core/workers/chunks/{e51420d231c286b9c062.js → 540f1ed1ea9cddc739af.js} +1 -1
- package/assets/esri/core/workers/chunks/6196cfdeb91ceba52af3.js +1 -0
- package/assets/esri/core/workers/chunks/71a4618d959a09302c51.js +1 -0
- package/assets/esri/core/workers/chunks/76fbc8eaabba62fd4f9c.js +1 -0
- package/assets/esri/core/workers/chunks/{cb906a3f03dd0805c880.js → 7cc17b716b16a6684023.js} +1 -1
- package/assets/esri/core/workers/chunks/871681c1353026cb6d4b.js +1 -0
- package/assets/esri/core/workers/chunks/{13e9e6f0b4942d79b0eb.js → 88942e9f60687ac006dc.js} +1 -1
- package/assets/esri/core/workers/chunks/{4c5b80ba3dbfe6f6cafb.js → acb1e649cda99d4f69a5.js} +1 -1
- package/assets/esri/core/workers/chunks/b71a0a8a2f446c671161.js +1 -0
- package/assets/esri/core/workers/chunks/b8002aaa665712299121.js +1 -0
- package/assets/esri/core/workers/chunks/{e4ca3f04ca7f71b46240.js → bb3480e231934b7bb34e.js} +1 -1
- package/assets/esri/core/workers/chunks/{185da42e7cc8e440c0f0.js → c157b46b0724f3f0947e.js} +1 -1
- package/assets/esri/core/workers/chunks/{1aba8c73c62a64e0658c.js → c6af8b0903d8d934d542.js} +1 -1
- package/assets/esri/core/workers/chunks/c8402e32307a7b7eaaeb.js +1 -0
- package/assets/esri/core/workers/chunks/c8e08a956b16034d9819.js +1 -0
- package/assets/esri/core/workers/chunks/d0d2566bedc493ed0a3b.js +1 -0
- package/assets/esri/core/workers/chunks/{8152cd26ebeae910b753.js → d3c73da9c2abb59e762a.js} +1 -1
- package/assets/esri/core/workers/chunks/d828a0656e7351a74fc4.js +1 -0
- package/assets/esri/core/workers/chunks/{172368d4eb6e6f8d2bdb.js → d8b9551df1bd196d0126.js} +1 -1
- package/assets/esri/core/workers/chunks/e5c8584ae764892c324d.js +1 -0
- package/assets/esri/core/workers/chunks/{1d893ebc6f203ff1fc3d.js → efe605ff4ba2a95c14c5.js} +1 -1
- package/assets/esri/core/workers/chunks/f54d5abbb9668c45bd19.js +1 -0
- package/assets/esri/core/workers/chunks/{bd2f4a01cb71e25837ba.js → f7ba74fc4eb541c424fc.js} +1 -1
- package/assets/esri/core/workers/chunks/{1ebed6d6f561f926bd36.js → faf6e48f9f1205fb2e43.js} +1 -1
- package/assets/esri/geometry/support/pe-wasm.wasm +0 -0
- package/assets/esri/themes/base/widgets/_BasemapToggle.scss +6 -23
- package/assets/esri/themes/base/widgets/_Directions.scss +0 -3
- package/assets/esri/themes/base/widgets/_FeatureTable.scss +10 -2
- package/assets/esri/themes/base/widgets/_Slider.scss +8 -3
- package/assets/esri/themes/base/widgets/_Tooltip.scss +8 -8
- package/assets/esri/themes/base/widgets/_Weather.scss +5 -1
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_ar.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_bg.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_bs.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_ca.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_cs.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_da.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_de.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_el.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_en.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_es.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_et.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_fi.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_fr.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_he.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_hr.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_hu.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_id.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_it.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_ja.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_ko.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_lt.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_lv.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_nb.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_nl.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_pl.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_pt-BR.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_pt-PT.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_ro.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_ru.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_sk.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_sl.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_sr.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_sv.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_th.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_tr.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_uk.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_vi.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_zh-CN.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_zh-HK.json +1 -1
- package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_zh-TW.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_en.json +1 -1
- package/chunks/RasterColorizer.glsl.js +22 -18
- package/chunks/basis_transcoder.js +1 -1
- package/chunks/i3s.js +1 -1
- package/chunks/lclayout.js +1 -1
- package/chunks/lerc-wasm.js +1 -1
- package/chunks/libtess-asm.js +1 -1
- package/chunks/libtess.js +1 -1
- package/chunks/pe-wasm.js +1 -1
- package/chunks/persistableUrlUtils.js +1 -1
- package/chunks/vxlLayer.js +1 -1
- package/core/quantityUtils.js +1 -1
- package/geometry/projection.js +1 -1
- package/geometry/support/geodesicUtils.js +1 -1
- package/geometry/support/plane.js +1 -1
- package/interfaces.d.ts +471 -52
- package/layers/LineOfSightLayer.js +1 -1
- package/layers/RouteLayer.js +1 -1
- package/layers/VectorTileLayer.js +1 -1
- package/layers/support/LayerContingentValuesCache.js +1 -1
- package/layers/support/RasterInfo.js +1 -1
- package/layers/support/rasterDatasets/ImageAuxRaster.js +1 -1
- package/layers/support/rasterDatasets/InMemoryRaster.js +1 -1
- package/layers/support/rasterDatasets/WCSRaster.js +1 -1
- package/layers/support/rasterDatasets/wcsCoverageParser.js +1 -1
- package/layers/support/rasterFormats/JpgPlus.js +1 -1
- package/layers/support/rasterFormats/RasterCodec.js +1 -1
- package/layers/support/rasterFormats/TiffDecoder.js +1 -1
- package/package.json +1 -1
- package/portal/support/urlUtils.js +5 -0
- package/renderers/support/colorRampUtils.js +1 -1
- package/rest/imageService/fetchRasterInfo.js +1 -1
- package/smartMapping/renderers/pieChart.js +1 -1
- package/smartMapping/support/adapters/FeatureLayerAdapter.js +1 -1
- package/support/arcadeUtils.js +1 -1
- package/support/elevationInfoUtils.js +1 -1
- package/support/persistableUrlUtils.js +1 -1
- package/support/revision.js +1 -1
- package/symbols/cim/cimAnalyzer.js +1 -1
- package/views/2d/engine/vectorTiles/shaders/VTLMaterial.js +1 -1
- package/views/2d/engine/webgl/Utils.js +1 -1
- package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
- package/views/2d/layers/graphics/GraphicStoreItem.js +1 -1
- package/views/2d/layers/imagery/BaseImageryTileSubView2D.js +1 -1
- package/views/3d/analysis/AnalysisViewManager3D.js +1 -1
- package/views/3d/analysis/Dimensioning/LengthDimensionComputation.js +1 -1
- package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementVisualization.js +1 -1
- package/views/3d/analysis/DirectLineMeasurementAnalysisView3D.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightRayIntersector.js +1 -1
- package/views/3d/input/SceneInputManager.js +1 -1
- package/views/3d/interactive/editingTools/draw/DrawGraphicTool3D.js +1 -1
- package/views/3d/interactive/editingTools/moveGraphic/GraphicMoveTool.js +1 -1
- package/views/3d/interactive/editingTools/reshapeGraphic/ReshapeOperation.js +1 -1
- package/views/3d/interactive/editingTools/transformGraphic/ExtentTransformTool.js +1 -1
- package/views/3d/interactive/editingTools/transformGraphic/GraphicTransformTool.js +1 -1
- package/views/3d/layers/i3s/I3SAttributeOverrides.js +1 -1
- package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
- package/views/3d/support/MemoryController.js +1 -1
- package/views/3d/terrain/RasterColorizerTechnique.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/terrain/TileCompositor.js +1 -1
- package/views/3d/terrain/TileRenderer.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/output/BlendOptions.js +1 -1
- package/views/MapView.js +1 -1
- package/views/SceneView.js +1 -1
- package/views/View.js +1 -1
- package/views/draw/DrawOperation.js +1 -1
- package/views/draw/support/GraphicMover.js +1 -1
- package/views/interactive/SegmentLabels.js +1 -1
- package/views/interactive/editGeometry/support/editPlaneUtils.js +1 -1
- package/views/interactive/tooltip/TranslateTooltipInfos.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentTranslateVertex.js +1 -1
- package/views/interactive/tooltip/support/measurements.js +1 -1
- package/views/support/areaMeasurementUtils.js +1 -1
- package/views/support/automaticLengthMeasurementUtils.js +5 -0
- package/views/support/euclideanLengthMeasurementUtils.js +5 -0
- package/views/support/geodesicLengthMeasurementUtils.js +5 -0
- package/views/support/measurementUtils.js +5 -0
- package/widgets/BasemapToggle/BasemapToggleViewModel.js +1 -1
- package/widgets/BasemapToggle.js +1 -1
- package/widgets/BuildingExplorer/BuildingDisciplinesTree/BuildingDisciplinesTree.js +1 -1
- package/widgets/BuildingExplorer/BuildingLevelPicker/BuildingLevelPicker.js +1 -1
- package/widgets/BuildingExplorer/BuildingPhasePicker/BuildingPhasePicker.js +1 -1
- package/widgets/BuildingExplorer.js +1 -1
- package/widgets/Daylight/DaylightViewModel.js +1 -1
- package/widgets/Directions/DirectionsViewModel.js +1 -1
- package/widgets/Directions.js +1 -1
- package/widgets/Feature/FeatureMedia/FeatureMediaViewModel.js +1 -1
- package/widgets/Feature/support/featureUtils.js +1 -1
- package/widgets/FeatureTable/FieldColumn.js +1 -1
- package/widgets/Legend/support/sizeRampUtils.js +1 -1
- package/widgets/Print/PrintViewModel.js +1 -1
- package/widgets/Sketch/SketchViewModel.js +1 -1
- package/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel.js +1 -1
- package/widgets/UtilityNetworkTrace.js +1 -1
- package/widgets/Weather.js +1 -1
- package/widgets/Widget.js +1 -1
- package/widgets/support/AnalysisViewModel.js +1 -1
- package/widgets/support/AnchorElementViewModel.js +1 -1
- package/widgets/support/InteractiveAnalysisViewModel.js +1 -1
- package/assets/esri/core/workers/chunks/2ac6c99aacb873134f7c.js +0 -1
- package/assets/esri/core/workers/chunks/471beeb6924599209567.js +0 -1
- package/assets/esri/core/workers/chunks/5242c9badca17ba2ab25.js +0 -1
- package/assets/esri/core/workers/chunks/72c7d48408d1f8050026.js +0 -1
- package/assets/esri/core/workers/chunks/770cf0a66102100abe74.js +0 -1
- package/assets/esri/core/workers/chunks/96ff15d6c2bfca0c6061.js +0 -1
- package/assets/esri/core/workers/chunks/9c4c721d890b49697132.js +0 -1
- package/assets/esri/core/workers/chunks/af3766a2d27419c7766c.js +0 -1
- package/assets/esri/core/workers/chunks/b50bbfd75768d9a8de88.js +0 -1
- package/assets/esri/core/workers/chunks/b577ec80647cf2ece397.js +0 -1
- package/assets/esri/core/workers/chunks/c1653b6cb201ecbaabaa.js +0 -1
- package/assets/esri/core/workers/chunks/e99b58d07475bffce7ea.js +0 -1
- package/assets/esri/core/workers/chunks/f3d885aec4bca18928d4.js +0 -1
- package/assets/esri/core/workers/chunks/fc0da1dfeef041182ddf.js +0 -1
- package/views/support/lengthMeasurementUtils.js +0 -5
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../../chunks/tslib.es6.js";import"../../../../geometry.js";import{HandleOwner as t}from"../../../../core/HandleOwner.js";import i from"../../../../core/Logger.js";import{isSome as s,unwrap as r}from"../../../../core/maybe.js";import{debounce as l,isAbortError as a,eachAlways as o}from"../../../../core/promiseUtils.js";import{property as h}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as n}from"../../../../core/accessorSupport/decorators/subclass.js";import c from"../../../../geometry/Point.js";import u from"../../../../layers/support/PixelBlock.js";import p from"../../../../layers/support/TileInfo.js";import{update as y,unregister as d,register as m,getRasterId as g}from"../../../../layers/support/rasterDatasets/RawBlockCache.js";import{extractBands as _}from"../../../../layers/support/rasterFunctions/pixelUtils.js";import{getWorldWidth as f,computeProjectedScales as w}from"../../../../layers/support/rasterFunctions/rasterProjectionHelper.js";import"../../tiling/PagedTileQueue.js";import b from"../../tiling/TileInfoView.js";import"../../tiling/TileKey.js";import P from"../../tiling/TileQueue.js";import I from"../../tiling/TileStrategy.js";import{getWebGLCapabilities as C}from"../../../webgl/capabilities.js";import v from"../../../../geometry/Extent.js";const R=[0,0],V=i.getLogger("esri.views.2d.layers.ImageryTileLayerView2D");let T=class extends t{constructor(){super(...arguments),this._emptyTilePixelBlock=null,this._tileStrategy=null,this._tileInfoView=null,this._fetchQueue=null,this._blockCacheRegistryUrl=null,this._blockCacheRegistryId=null,this._srcResolutions=null,this.previousLOD=null,this._needBlockCacheUpdate=!1,this._globalSymbolizerParams=null,this._symbolizerParams=null,this._abortController=null,this._isCustomTilingScheme=!1,this._globalUpdateRequested=!1,this.attached=!1,this.container=null,this.layer=null,this.timeExtent=null,this.redrawOrRefetch=l(((e,t)=>!this.previousLOD||this.layerView.suspended?Promise.resolve():e?this.doRefresh():this._redrawImage(t)))}get useWebGLForProcessing(){return this._get("useWebGLForProcessing")??!0}set useWebGLForProcessing(e){this._set("useWebGLForProcessing",e)}get useProgressiveUpdate(){return null==this._get("useProgressiveUpdate")||this._get("useProgressiveUpdate")}set useProgressiveUpdate(e){if(this._tileStrategy&&this.useProgressiveUpdate!==e){this._tileStrategy.destroy(),this.container.removeAllChildren();const t=this._getCacheSize(e);this._tileStrategy=new I({cachePolicy:"purge",acquireTile:e=>this.acquireTile(e),releaseTile:e=>this.releaseTile(e),cacheSize:t,tileInfoView:this._tileInfoView}),this._set("useProgressiveUpdate",e),this.layerView.requestUpdate()}}update(e){this._fetchQueue.pause(),this._fetchQueue.state=e.state,this._tileStrategy.update(e),this._fetchQueue.resume();const{extent:t,resolution:i,scale:s}=e.state,r=this._tileInfoView.getClosestInfoForScale(s);if(this.layer.raster){if(!this.useProgressiveUpdate||this._needBlockCacheUpdate){const e=this._srcResolutions[r.level],s=t.toJSON?t:v.fromJSON(t);y(this._blockCacheRegistryUrl,this._blockCacheRegistryId,s,i,e,this.layer.raster.ioConfig.sampling)}this._needBlockCacheUpdate=!1,this.previousLOD?.level!==r.level&&(this.previousLOD=r,null==this._symbolizerParams||this.layerView.hasTilingEffects||this._updateSymbolizerParams(),this._tileStrategy.updateCacheSize(0))}}moveEnd(){!this.layerView.hasTilingEffects&&this.useProgressiveUpdate||(this._abortController&&this._abortController.abort(),this._abortController=new AbortController,0===this._fetchQueue.length&&this._redrawImage(this._abortController.signal).then((()=>{this._globalUpdateRequested=!1,this.layerView.requestUpdate()})));const e=this._getCacheSize(this.useProgressiveUpdate);this._tileStrategy.updateCacheSize(e),this.layerView.requestUpdate()}get updating(){return this._fetchQueue.updating||this._globalUpdateRequested||!(!this.updatingHandles||!this.updatingHandles.updating)}attach(){C("2d").supportsTextureFloat||(this.useWebGLForProcessing=!1),this._initializeTileInfo(),this._tileInfoView=new b(this.layerView.tileInfo,this.layerView.fullExtent);const e=this._computeFetchConcurrency();this._fetchQueue=new P({tileInfoView:this._tileInfoView,concurrency:e,process:(e,t)=>this._fetchTile1(e,t)});const t=this._getCacheSize(this.useProgressiveUpdate);this._tileStrategy=new I({cachePolicy:"purge",acquireTile:e=>this.acquireTile(e),releaseTile:e=>this.releaseTile(e),cacheSize:t,tileInfoView:this._tileInfoView}),this._updateBlockCacheRegistry()}detach(){this._tileStrategy.destroy(),this._fetchQueue.clear(),this.container.removeAllChildren(),this._fetchQueue=this._tileStrategy=this._tileInfoView=null,d(this._blockCacheRegistryUrl,this._blockCacheRegistryId),this._blockCacheRegistryUrl=this._blockCacheRegistryId=null}acquireTile(e){const t=this.container.createTile(e);return this._enqueueTileFetch(t),this.layerView.requestUpdate(),this._needBlockCacheUpdate=!0,this._globalUpdateRequested=this.layerView.hasTilingEffects||!this.useProgressiveUpdate,t}releaseTile(e){this._fetchQueue.abort(e.key.id),this.container.removeChild(e),e.once("detach",(()=>{e.destroy(),this.layerView.requestUpdate()})),this.layerView.requestUpdate()}createEmptyTilePixelBlock(e=null){const t=null==e||e.join(",")===this._tileInfoView.tileInfo.size.join(",");if(t&&s(this._emptyTilePixelBlock))return this._emptyTilePixelBlock;e=e||this._tileInfoView.tileInfo.size;const[i,r]=e,l=new u({width:i,height:r,pixels:[new Uint8Array(i*r)],mask:new Uint8Array(i*r),pixelType:"u8"});return t&&(this._emptyTilePixelBlock=l),l}_fetchTile1(e,t){const i=s(t)&&t.signal,l=this.canUseWebGLForProcessing(),{layerView:a}=this,o=!a.tileInfo.isWrappable&&s(f(a.view.spatialReference)),h={allowPartialFill:!0,datumTransformation:a.datumTransformation,interpolation:l?"nearest":this.layer.interpolation,registryId:this._blockCacheRegistryId,requestRawData:l,signal:r(i),srcResolution:this._srcResolutions[e.level],timeExtent:a.timeExtent,tileInfo:a.tileInfo,disableWrapAround:o};return this.fetchTile(e,h)}_getCacheSize(e){return e?40:0}_initializeTileInfo(){const e=this.layerView.view.spatialReference,t=new c({x:this.layerView.fullExtent.xmin,y:this.layerView.fullExtent.ymax,spatialReference:e}),{scales:i,srcResolutions:s,isCustomTilingScheme:r}=w(this.layer.rasterInfo,e),l=p.create({spatialReference:e,size:512,scales:i});(0===l.origin.x||l.origin.x>t.x)&&(l.origin=t),this._isCustomTilingScheme=r,this.layerView.set("tileInfo",l),this._srcResolutions=s??[]}_computeFetchConcurrency(){const{blockBoundary:e}=this.layer.rasterInfo.storageInfo,t=e[e.length-1];return(t.maxCol-t.minCol+1)*(t.maxRow-t.minRow+1)>64?2:10}async _enqueueTileFetch(e,t){if(!this._fetchQueue.has(e.key.id)){try{const t=await this._fetchQueue.push(e.key),{bandIds:s}=this.layer;let r=!this.useProgressiveUpdate||this.layerView.hasTilingEffects&&!this._globalSymbolizerParams;if(this._globalUpdateRequested&&!this.layerView.moving&&0===this._fetchQueue.length){r=!1;try{await this._redrawImage(this._abortController&&this._abortController.signal)}catch(i){a(i)&&V.error(i)}this._globalUpdateRequested=!1}!this.canUseWebGLForProcessing()&&"rasterVF"!==this.type||this.layerView.hasTilingEffects||null!=this._symbolizerParams||this._updateSymbolizerParams();const l=this._tileInfoView.getTileCoords(R,e.key),o=this._tileInfoView.getTileResolution(e.key);await this.updateTileSource(e,{source:t,symbolizerParams:this._symbolizerParams,globalSymbolizerParams:this._globalSymbolizerParams,suspended:r,bandIds:s,coords:l,resolution:o}),e.once("attach",(()=>this.layerView.requestUpdate())),this.container.addChild(e)}catch(i){a(i)||V.error(i)}this.layerView.requestUpdate()}}async _redrawImage(e){if(0===this.container.children.length)return;await this.updatingHandles.addPromise(this.layer.updateRenderer()),this.layerView.hasTilingEffects?await this._updateGlobalSymbolizerParams(e):(this._updateSymbolizerParams(),this._globalSymbolizerParams=null);const t=this.container.children.map((async e=>this.updateTileSymbolizerParameters(e,{local:this._symbolizerParams,global:this._globalSymbolizerParams})));await o(t),this.container.requestRender()}async _updateGlobalSymbolizerParams(e){const t={srcResolution:this._srcResolutions[this.previousLOD.level],registryId:this._blockCacheRegistryId,signal:e},i=await this.layer.fetchPixels(this.layerView.view.extent,this.layerView.view.width,this.layerView.view.height,t);if(!i||!i.pixelBlock)return;const s=this.layer.symbolizer.generateWebGLParameters({pixelBlock:_(i.pixelBlock,this.layer.bandIds),isGCS:this.layerView.view.spatialReference.isGeographic,resolution:{x:this.previousLOD.resolution,y:this.previousLOD.resolution},bandIds:this.layer.bandIds});!this.canUseWebGLForProcessing()&&s&&"stretch"===s.type&&this.layer.renderer&&"raster-stretch"===this.layer.renderer.type&&(s.factor=s.factor.map((e=>255*e)),s.outMin=Math.round(255*s.outMin),s.outMax=Math.round(255*s.outMax)),this._globalSymbolizerParams=s}_updateSymbolizerParams(){this._symbolizerParams=this.layer.symbolizer.generateWebGLParameters({pixelBlock:null,isGCS:this.layerView.view.spatialReference.isGeographic,resolution:{x:this.previousLOD.resolution,y:this.previousLOD.resolution},bandIds:this.layer.bandIds})}_updateBlockCacheRegistry(e=!1){const{url:t,rasterInfo:i,raster:s}=this.layer,{multidimensionalDefinition:r}=this.layer.normalizeRasterFetchOptions({multidimensionalDefinition:this.layer.multidimensionalDefinition,timeExtent:this.layerView.timeExtent}),l=i?.multidimensionalInfo?s.getSliceIndex(r):null,a=g(t,l);if(a!==this._blockCacheRegistryUrl){if(null!=this._blockCacheRegistryUrl&&d(this._blockCacheRegistryUrl,this._blockCacheRegistryId),this._blockCacheRegistryId=m(a,this.layer.raster.rasterInfo),e){const e=this._tileInfoView.getClosestInfoForScale(this.layerView.view.scale),t=this._srcResolutions[e.level];y(a,this._blockCacheRegistryId,this.layerView.view.extent,this.layerView.view.resolution,t,this.layer.raster.ioConfig.sampling)}this._blockCacheRegistryUrl=a}}async doRefresh(){await this.updatingHandles.addPromise(this.layer.updateRenderer()),this.layerView.hasTilingEffects||this._updateSymbolizerParams(),this._updateBlockCacheRegistry(!0),this._fetchQueue.reset();const e=[];this._tileStrategy.tiles.forEach((t=>e.push(this._enqueueTileFetch(t)))),await o(e)}};e([h()],T.prototype,"_fetchQueue",void 0),e([h()],T.prototype,"_globalUpdateRequested",void 0),e([h()],T.prototype,"attached",void 0),e([h()],T.prototype,"container",void 0),e([h()],T.prototype,"layer",void 0),e([h()],T.prototype,"layerView",void 0),e([h()],T.prototype,"type",void 0),e([h()],T.prototype,"useWebGLForProcessing",null),e([h()],T.prototype,"useProgressiveUpdate",null),e([h()],T.prototype,"timeExtent",void 0),e([h()],T.prototype,"updating",null),T=e([n("esri.views.2d.layers.imagery.BaseImageryTileSubView2D")],T);export{T as BaseImageryTileSubView2D};
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import"../../../../geometry.js";import{HandleOwner as t}from"../../../../core/HandleOwner.js";import i from"../../../../core/Logger.js";import{isSome as s,unwrap as r}from"../../../../core/maybe.js";import{debounce as l,isAbortError as a,eachAlways as o}from"../../../../core/promiseUtils.js";import{property as h}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as n}from"../../../../core/accessorSupport/decorators/subclass.js";import c from"../../../../geometry/Point.js";import u from"../../../../layers/support/PixelBlock.js";import p from"../../../../layers/support/TileInfo.js";import{update as y,unregister as d,register as g,getRasterId as m}from"../../../../layers/support/rasterDatasets/RawBlockCache.js";import{extractBands as _}from"../../../../layers/support/rasterFunctions/pixelUtils.js";import{getWorldWidth as f,computeProjectedScales as w}from"../../../../layers/support/rasterFunctions/rasterProjectionHelper.js";import"../../tiling/PagedTileQueue.js";import b from"../../tiling/TileInfoView.js";import"../../tiling/TileKey.js";import P from"../../tiling/TileQueue.js";import I from"../../tiling/TileStrategy.js";import{getWebGLCapabilities as C}from"../../../webgl/capabilities.js";import v from"../../../../geometry/Extent.js";const R=[0,0],V=i.getLogger("esri.views.2d.layers.ImageryTileLayerView2D");let T=class extends t{constructor(){super(...arguments),this._emptyTilePixelBlock=null,this._tileStrategy=null,this._tileInfoView=null,this._fetchQueue=null,this._blockCacheRegistryUrl=null,this._blockCacheRegistryId=null,this._srcResolutions=null,this.previousLOD=null,this._needBlockCacheUpdate=!1,this._globalSymbolizerParams=null,this._symbolizerParams=null,this._abortController=null,this._isCustomTilingScheme=!1,this._globalUpdateRequested=!1,this.attached=!1,this.container=null,this.layer=null,this.timeExtent=null,this.redrawOrRefetch=l(((e,t)=>!this.previousLOD||this.layerView.suspended?Promise.resolve():e?this.doRefresh():this._redrawImage(t)))}get useWebGLForProcessing(){return this._get("useWebGLForProcessing")??!0}set useWebGLForProcessing(e){this._set("useWebGLForProcessing",e)}get useProgressiveUpdate(){return null==this._get("useProgressiveUpdate")||this._get("useProgressiveUpdate")}set useProgressiveUpdate(e){if(this._tileStrategy&&this.useProgressiveUpdate!==e){this._tileStrategy.destroy(),this.container.removeAllChildren();const t=this._getCacheSize(e);this._tileStrategy=new I({cachePolicy:"purge",acquireTile:e=>this.acquireTile(e),releaseTile:e=>this.releaseTile(e),cacheSize:t,tileInfoView:this._tileInfoView}),this._set("useProgressiveUpdate",e),this.layerView.requestUpdate()}}update(e){this._fetchQueue.pause(),this._fetchQueue.state=e.state,this._tileStrategy.update(e),this._fetchQueue.resume();const{extent:t,resolution:i,scale:s}=e.state,r=this._tileInfoView.getClosestInfoForScale(s);if(this.layer.raster){if(!this.useProgressiveUpdate||this._needBlockCacheUpdate){const e=this._srcResolutions[r.level],s=t.toJSON?t:v.fromJSON(t);y(this._blockCacheRegistryUrl,this._blockCacheRegistryId,s,i,e,this.layer.raster.ioConfig.sampling)}this._needBlockCacheUpdate=!1,this.previousLOD?.level!==r.level&&(this.previousLOD=r,null==this._symbolizerParams||this.layerView.hasTilingEffects||this._updateSymbolizerParams(),this._tileStrategy.updateCacheSize(0))}}moveEnd(){!this.layerView.hasTilingEffects&&this.useProgressiveUpdate||(this._abortController&&this._abortController.abort(),this._abortController=new AbortController,0===this._fetchQueue.length&&this._redrawImage(this._abortController.signal).then((()=>{this._globalUpdateRequested=!1,this.layerView.requestUpdate()})));const e=this._getCacheSize(this.useProgressiveUpdate);this._tileStrategy.updateCacheSize(e),this.layerView.requestUpdate()}get updating(){return this._fetchQueue.updating||this._globalUpdateRequested||!(!this.updatingHandles||!this.updatingHandles.updating)}attach(){C("2d").supportsTextureFloat||(this.useWebGLForProcessing=!1),this._initializeTileInfo(),this._tileInfoView=new b(this.layerView.tileInfo,this.layerView.fullExtent);const e=this._computeFetchConcurrency();this._fetchQueue=new P({tileInfoView:this._tileInfoView,concurrency:e,process:(e,t)=>this._fetchTile1(e,t)});const t=this._getCacheSize(this.useProgressiveUpdate);this._tileStrategy=new I({cachePolicy:"purge",acquireTile:e=>this.acquireTile(e),releaseTile:e=>this.releaseTile(e),cacheSize:t,tileInfoView:this._tileInfoView}),this._updateBlockCacheRegistry()}detach(){this._tileStrategy.destroy(),this._fetchQueue.clear(),this.container.removeAllChildren(),this._fetchQueue=this._tileStrategy=this._tileInfoView=null,d(this._blockCacheRegistryUrl,this._blockCacheRegistryId),this._blockCacheRegistryUrl=this._blockCacheRegistryId=null}acquireTile(e){const t=this.container.createTile(e);return this._enqueueTileFetch(t),this.layerView.requestUpdate(),this._needBlockCacheUpdate=!0,this._globalUpdateRequested=this.layerView.hasTilingEffects||!this.useProgressiveUpdate,t}releaseTile(e){this._fetchQueue.abort(e.key.id),this.container.removeChild(e),e.once("detach",(()=>{e.destroy(),this.layerView.requestUpdate()})),this.layerView.requestUpdate()}createEmptyTilePixelBlock(e=null){const t=null==e||e.join(",")===this._tileInfoView.tileInfo.size.join(",");if(t&&s(this._emptyTilePixelBlock))return this._emptyTilePixelBlock;e=e||this._tileInfoView.tileInfo.size;const[i,r]=e,l=new u({width:i,height:r,pixels:[new Uint8Array(i*r)],mask:new Uint8Array(i*r),pixelType:"u8"});return t&&(this._emptyTilePixelBlock=l),l}_fetchTile1(e,t){const i=s(t)&&t.signal,l=this.canUseWebGLForProcessing(),{layerView:a}=this,o=!a.tileInfo.isWrappable&&s(f(a.view.spatialReference)),h={allowPartialFill:!0,datumTransformation:a.datumTransformation,interpolation:l?"nearest":this.layer.interpolation,registryId:this._blockCacheRegistryId,requestRawData:l,signal:r(i),srcResolution:this._srcResolutions[e.level],timeExtent:a.timeExtent,tileInfo:a.tileInfo,disableWrapAround:o};return this.fetchTile(e,h)}_getCacheSize(e){return e?40:0}_initializeTileInfo(){const e=this.layerView.view.spatialReference,t=new c({x:this.layerView.fullExtent.xmin,y:this.layerView.fullExtent.ymax,spatialReference:e}),{scales:i,srcResolutions:s,isCustomTilingScheme:r}=w(this.layer.rasterInfo,e),l=p.create({spatialReference:e,size:512,scales:i});(0===l.origin.x||l.origin.x>t.x)&&(l.origin=t),this._isCustomTilingScheme=r,this.layerView.set("tileInfo",l),this._srcResolutions=s??[]}_computeFetchConcurrency(){const{blockBoundary:e}=this.layer.rasterInfo.storageInfo,t=e[e.length-1];return(t.maxCol-t.minCol+1)*(t.maxRow-t.minRow+1)>64?2:10}async _enqueueTileFetch(e,t){if(!this._fetchQueue.has(e.key.id)){try{const t=await this._fetchQueue.push(e.key),{bandIds:s}=this.layer;let r=!this.useProgressiveUpdate||this.layerView.hasTilingEffects&&!this._globalSymbolizerParams;if(this._globalUpdateRequested&&!this.layerView.moving&&0===this._fetchQueue.length){r=!1;try{await this._redrawImage(this._abortController&&this._abortController.signal)}catch(i){a(i)&&V.error(i)}this._globalUpdateRequested=!1}!this.canUseWebGLForProcessing()&&"rasterVF"!==this.type||this.layerView.hasTilingEffects||null!=this._symbolizerParams||this._updateSymbolizerParams();const l=this._tileInfoView.getTileCoords(R,e.key),o=this._tileInfoView.getTileResolution(e.key);await this.updateTileSource(e,{source:t,symbolizerParams:this._symbolizerParams,globalSymbolizerParams:this._globalSymbolizerParams,suspended:r,bandIds:s,coords:l,resolution:o}),e.once("attach",(()=>this.layerView.requestUpdate())),this.container.addChild(e)}catch(i){a(i)||V.error(i)}this.layerView.requestUpdate()}}async _redrawImage(e){if(0===this.container.children.length)return;await this.updatingHandles.addPromise(this.layer.updateRenderer()),this.layerView.hasTilingEffects?await this._updateGlobalSymbolizerParams(e):(this._updateSymbolizerParams(),this._globalSymbolizerParams=null);const t=this.container.children.map((async e=>this.updateTileSymbolizerParameters(e,{local:this._symbolizerParams,global:this._globalSymbolizerParams})));await o(t),this.container.requestRender()}async _updateGlobalSymbolizerParams(e){const t={srcResolution:this._srcResolutions[this.previousLOD.level],registryId:this._blockCacheRegistryId,signal:e},i=await this.layer.fetchPixels(this.layerView.view.extent,this.layerView.view.width,this.layerView.view.height,t);if(!i||!i.pixelBlock)return;const s=this.layer.symbolizer.generateWebGLParameters({pixelBlock:_(i.pixelBlock,this.layer.bandIds),isGCS:this.layerView.view.spatialReference.isGeographic,resolution:{x:this.previousLOD.resolution,y:this.previousLOD.resolution},bandIds:this.layer.bandIds});!this.canUseWebGLForProcessing()&&s&&"stretch"===s.type&&this.layer.renderer&&"raster-stretch"===this.layer.renderer.type&&(s.factor=s.factor.map((e=>255*e)),s.outMin=Math.round(255*s.outMin),s.outMax=Math.round(255*s.outMax)),this._globalSymbolizerParams=s}_updateSymbolizerParams(){this._symbolizerParams=this.layer.symbolizer.generateWebGLParameters({pixelBlock:null,isGCS:this.layerView.view.spatialReference.isGeographic,resolution:{x:this.previousLOD.resolution,y:this.previousLOD.resolution},bandIds:this.layer.bandIds})}_updateBlockCacheRegistry(e=!1){const{url:t,rasterInfo:i,raster:s}=this.layer,{multidimensionalDefinition:r}=this.layer.normalizeRasterFetchOptions({multidimensionalDefinition:this.layer.multidimensionalDefinition,timeExtent:this.layerView.timeExtent}),l=i?.multidimensionalInfo?s.getSliceIndex(r):null,a=m(t,l);if(a!==this._blockCacheRegistryUrl){if(null!=this._blockCacheRegistryUrl&&d(this._blockCacheRegistryUrl,this._blockCacheRegistryId),this._blockCacheRegistryId=g(a,this.layer.raster.rasterInfo),e){const e=this._tileInfoView.getClosestInfoForScale(this.layerView.view.scale),t=this._srcResolutions[e.level];y(a,this._blockCacheRegistryId,this.layerView.view.extent,this.layerView.view.resolution,t,this.layer.raster.ioConfig.sampling)}this._blockCacheRegistryUrl=a}}async doRefresh(){await this.updatingHandles.addPromise(this.layer.updateRenderer()),this.layerView.hasTilingEffects||this._updateSymbolizerParams(),this._updateBlockCacheRegistry(!0),this._fetchQueue.reset();const e=[];this._globalUpdateRequested=this.layerView.hasTilingEffects||!this.useProgressiveUpdate,this._tileStrategy.tiles.forEach((t=>e.push(this._enqueueTileFetch(t)))),await o(e)}};e([h()],T.prototype,"_fetchQueue",void 0),e([h()],T.prototype,"_globalUpdateRequested",void 0),e([h()],T.prototype,"attached",void 0),e([h()],T.prototype,"container",void 0),e([h()],T.prototype,"layer",void 0),e([h()],T.prototype,"layerView",void 0),e([h()],T.prototype,"type",void 0),e([h()],T.prototype,"useWebGLForProcessing",null),e([h()],T.prototype,"useProgressiveUpdate",null),e([h()],T.prototype,"timeExtent",void 0),e([h()],T.prototype,"updating",null),T=e([n("esri.views.2d.layers.imagery.BaseImageryTileSubView2D")],T);export{T as BaseImageryTileSubView2D};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../chunks/tslib.es6.js";import s from"../../../core/
|
|
5
|
+
import{_ as e}from"../../../chunks/tslib.es6.js";import s from"../../../core/Collection.js";import i from"../../../core/Error.js";import{HandleOwner as t}from"../../../core/HandleOwner.js";import a from"../../../core/Logger.js";import{isNone as n,isSome as o,removeMaybe as r,destroyMaybe as l,abortMaybe as c}from"../../../core/maybe.js";import{createResolver as d,createAbortError as h,createTask as w,isAborted as u}from"../../../core/promiseUtils.js";import{schedule as m}from"../../../core/scheduling.js";import{property as y}from"../../../core/accessorSupport/decorators/property.js";import{subclass as _}from"../../../core/accessorSupport/decorators/subclass.js";const p=a.getLogger("esri.views.3d.analysis.AnalysisViewManager3D"),V="analyses-owner-handles";var A,v;!function(e){e[e.PENDING=0]="PENDING",e[e.CREATED=1]="CREATED"}(A||(A={})),function(e){e[e.ADDED=0]="ADDED",e[e.REMOVED=1]="REMOVED"}(v||(v={}));let g=class extends t{constructor(e){super(e),this._allAnalysisViews=new s,this._creatingViewCount=0,this._items=new Map,this._scheduledUpdateHandle=null,this._attachedToViewResolver=d(),this._analysisModules={"area-measurement":{module:null},dimensioning:{module:null},"direct-line-measurement":{module:null},"line-of-sight":{module:null},slice:{module:null}}}destroy(){this._disconnectOwners(),this._attachedToViewResolver.reject(h("AnalysisViewManager was destroyed"))}attach(){this._connectOwners(),this._attachedToViewResolver.resolve()}detach(){this._disconnectOwners(),this._attachedToViewResolver.reject(h()),this._attachedToViewResolver=d(),this._attachedToViewResolver.promise.catch((()=>{}))}get updating(){return!this.view.ready||0!==this._creatingViewCount||this._allAnalysisViews.some((e=>e.updating))}get testInfo(){return{allAnalysisViews:this._allAnalysisViews}}async whenAnalysisView(e){await this._attachedToViewResolver.promise;const s=this._items.get(e);if(n(s)||s.state.list===v.REMOVED){throw new i("AnalysisViewManager:no-analysisview-for-analysis","The analysis has not been added to view.analyses",{analysis:e})}return s.createAnalysisViewTask.promise}_connectOwners(){this.handles.add(this._connectAnalysesCollection(this.view.analyses),V)}_disconnectOwners(){this.handles.remove(V),this._update(),this._creatingViewCount=0}_connectAnalysesCollection(e){for(const t of e)this._addAnalysis(t);const s=e.on("after-add",(e=>this._addAnalysis(e.item))),i=e.on("after-remove",(e=>this._removeAnalysis(e.item)));return{remove:()=>{s.remove(),i.remove();for(const s of e)this._removeAnalysis(s)}}}_addAnalysis(e){const s=this._items.get(e);if(null==s){const s={state:{view:A.PENDING,list:v.ADDED},analysis:e,view:null,createAnalysisViewTask:null};this._items.set(e,s),s.createAnalysisViewTask=w((e=>this._createAnalysisViewPromise(s,e)))}else s.state.list=v.ADDED}_removeAnalysis(e){const s=this._items.get(e);null!=s?(s.state.list=v.REMOVED,this._scheduleUpdate()):p.error("Trying to remove analysis which was not added")}_scheduleUpdate(){o(this._scheduledUpdateHandle)||(this._scheduledUpdateHandle=m((()=>this._update())))}_update(){this._scheduledUpdateHandle=r(this._scheduledUpdateHandle),this._items.forEach((e=>{if(e.state.list===v.REMOVED)switch(this._items.delete(e.analysis),e.state.view){case A.PENDING:e.createAnalysisViewTask=c(e.createAnalysisViewTask);break;case A.CREATED:o(e.view)&&(this._allAnalysisViews.remove(e.view),e.view=l(e.view),e.createAnalysisViewTask=null)}}))}async _createAnalysisViewPromise(e,s){const i=e.analysis,t=i.type,a=this._analysisModules[t];if(this._creatingViewCount+=1,n(a.module))try{a.module=await this._loadAnalysisModule(t)}catch(r){throw this._creatingViewCount-=1,r}if(u(s))throw this._creatingViewCount-=1,h("AnalysisView creation aborted");const o=new a.module.default({analysis:i,view:this.view});try{await o.when()}catch(r){throw this._creatingViewCount-=1,r}if(u(s))throw this._creatingViewCount-=1,o.destroy(),h("AnalysisView creation aborted");return e.view=o,e.state.view=A.CREATED,this._allAnalysisViews.add(o),this._creatingViewCount-=1,o}_loadAnalysisModule(e){switch(e){case"area-measurement":return import("./AreaMeasurementAnalysisView3D.js");case"dimensioning":return import("./DimensioningAnalysisView3D.js");case"direct-line-measurement":return import("./DirectLineMeasurementAnalysisView3D.js");case"line-of-sight":return import("./LineOfSightAnalysisView3D.js");case"slice":return import("./SliceAnalysisView3D.js")}}};e([y()],g.prototype,"updating",null),e([y({constructOnly:!0})],g.prototype,"view",void 0),e([y()],g.prototype,"_allAnalysisViews",void 0),e([y()],g.prototype,"_creatingViewCount",void 0),g=e([_("esri.views.3d.analysis.AnalysisViewManager3D")],g);const D=g;export{D as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as o}from"../../../../chunks/tslib.es6.js";import r from"../../../../core/Accessor.js";import{isNone as s}from"../../../../core/maybe.js";import{property as t}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as e}from"../../../../core/accessorSupport/decorators/subclass.js";import n from"../LengthDimensionResult.js";import{euclideanDistanceBetweenPoints as i}from"../../../support/
|
|
5
|
+
import{_ as o}from"../../../../chunks/tslib.es6.js";import r from"../../../../core/Accessor.js";import{isNone as s}from"../../../../core/maybe.js";import{property as t}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as e}from"../../../../core/accessorSupport/decorators/subclass.js";import n from"../LengthDimensionResult.js";import{euclideanDistanceBetweenPoints as i}from"../../../support/euclideanLengthMeasurementUtils.js";let p=class extends r{constructor(o){super(o)}initialize(){this._set("result",new n({dimension:this.dimension}))}get length(){const{startPoint:o,endPoint:r,axis:t}=this.dimension;if(s(o)||s(r))return null;const e=i(o,r);if(s(e))return null;return e[t]}};o([t({constructOnly:!0,nonNullable:!0})],p.prototype,"dimension",void 0),o([t({constructOnly:!0,nonNullable:!0})],p.prototype,"result",void 0),o([t()],p.prototype,"length",null),p=o([e("esri.views.3d.analysis.LengthDimensionComputation")],p);export{p as LengthDimensionComputation};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../../chunks/tslib.es6.js";import"../../../../intl.js";import t from"../../../../core/Accessor.js";import i from"../../../../core/Handles.js";import{nextHighestPowerOfTen as s,deg2rad as n}from"../../../../core/mathUtils.js";import{isNone as a,destroyMaybe as r,isSome as o}from"../../../../core/maybe.js";import{formatDecimal as l,formatImperialLength as c,formatImperialVerticalLength as d,formatMetricLength as h,formatMetricVerticalLength as u}from"../../../../core/quantityFormatUtils.js";import{toUnit as m}from"../../../../core/quantityUtils.js";import{when as g,watch as p,syncAndInitial as _,whenOnce as v}from"../../../../core/reactiveUtils.js";import{createRenderScreenPointArray3 as b,createRenderScreenPointArray as L}from"../../../../core/screenUtils.js";import{preferredImperialLengthUnit as w,convertUnit as y}from"../../../../core/unitUtils.js";import{property as S}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as f}from"../../../../core/accessorSupport/decorators/subclass.js";import{h as P}from"../../../../chunks/vec2.js";import{g as A,a as E}from"../../../../chunks/vec3.js";import{c as V}from"../../../../chunks/vec3f64.js";import{f as j}from"../../../../chunks/vec4f32.js";import{MeasurementMode as z}from"../interfaces.js";import{VisualElementOrientation as D,ViewMode as M}from"./interfaces.js";import{screenSpaceTangent as O}from"../support/viewUtils.js";import{LabelVisualElement as G,mirrorPosition as C}from"../../interactive/visualElements/LabelVisualElement.js";import{LineVisualElement as x}from"../../interactive/visualElements/LineVisualElement.js";import{MeasurementArrowVisualElement as T}from"../../interactive/visualElements/MeasurementArrowVisualElement.js";import{RightAngleQuadVisualElement as H}from"../../interactive/visualElements/RightAngleQuadVisualElement.js";import{GeodesicSegment as R,EuclideanSegment as k}from"../../interactive/visualElements/support/Segment.js";import{RenderOccludedFlag as F}from"../../webgl-engine/lib/Material.js";import{createStipplePatternSimple as U}from"../../webgl-engine/materials/lineStippleUtils.js";import{onLocaleChange as W}from"../../../../intl/locale.js";import{fetchMessageBundle as Q}from"../../../../intl/messages.js";var q;!function(e){e[e.Pending=0]="Pending",e[e.Ready=1]="Ready",e[e.Destroyed=2]="Destroyed"}(q||(q={}));let B=class extends t{constructor(e){super(e),this._params={...J},this._handles=new i,this._segmentVisualElement=null,this._triangleVisualElement=null,this._rightAngleQuad=null,this._projectedGeodesicLine=null,this._geodesicStartHint=null,this._geodesicEndHint=null,this._segmentLabel=null,this._verticalLabel=null,this._horizontalLabel=null,this._startPosition=V(),this._endPosition=V(),this._cornerPosition=V(),this._startPositionAtSeaLevel=V(),this._endPositionAtSeaLevel=V(),this._state=q.Pending,this._triangleOrientationOverride=null,this.messages=null,this.loadingMessages=!0,this.visualElementOrientation=D.Auto,this.triangleCollapseRatioThreshold=.03}get ready(){return this._state===q.Ready}get visible(){return this.analysisView.visible}get viewMode(){const{elevationAlignedStartPoint:e,elevationAlignedEndPoint:t}=this.analysisView;if(a(e)||a(t)||e.equals(t))return M.None;const i=this.analysisView.result;if(a(i))return M.Direct;if("geodesic"===i.mode)return this._requiresGeodesicGuideAt(this._startPosition)||this._requiresGeodesicGuideAt(this._endPosition)?M.ProjectedGeodesic:M.Direct;const{verticalDistance:s,horizontalDistance:n}=i,r=s.value,o=n.value;return Math.min(r/o,o/r)<this.triangleCollapseRatioThreshold?M.Direct:M.Triangle}get actualVisualizedMeasurement(){if(a(this.analysisView.result))switch(this.analysisView.measurementMode){case z.Auto:case z.Euclidean:default:return"euclidean";case z.Geodesic:return"geodesic"}return this.analysisView.result.mode}get allowVisualElementsOrientationChange(){return a(this._triangleOrientationOverride)}set allowVisualElementsOrientationChange(e){a(this._triangleOrientationOverride)!==e&&(a(this._triangleOrientationOverride)?this._triangleOrientationOverride=this._actualVisualElementsOrientation:this._triangleOrientationOverride=null)}get labels(){const e="geodesic"===this.actualVisualizedMeasurement;return{direct:this._segmentLabel,horizontal:e?this._segmentLabel:this._horizontalLabel,vertical:this._verticalLabel}}get testData(){return{labels:this.labels,stripeLength:this._segmentVisualElement?.stripeLength}}initialize(){this._handles.add(g((()=>this.view.ready),(()=>this._initialize()),{once:!0,sync:!0,initial:!0}))}_initialize(){switch(this._state){case q.Ready:throw new Error("invalid state");case q.Destroyed:return}const e=this._params,t={attached:!0,view:this.view};this._segmentVisualElement=new T({...t,geometry:null,renderOccluded:F.OccludeAndTransparent}),this._triangleVisualElement=new x({...t,width:e.triangleLineWidth,color:e.triangleColor,renderOccluded:F.OccludeAndTransparent}),this._rightAngleQuad=new H({...t,color:I,renderOccluded:F.OccludeAndTransparent});const i={...t,polygonOffset:!0,renderOccluded:F.OccludeAndTransparent};this._projectedGeodesicLine=new x({...i,width:e.geodesicProjectionLineWidth,color:e.geodesicProjectionLineColor,stipplePattern:U(e.guideStippleLengthPixels)}),this._geodesicStartHint=new x({...i,width:e.guideLineWidth,color:e.geodesicProjectionLineColor,stipplePattern:U(e.guideStippleLengthPixels)}),this._geodesicEndHint=new x({...i,width:e.guideLineWidth,color:e.geodesicProjectionLineColor,stipplePattern:U(e.guideStippleLengthPixels)}),this._segmentLabel=new G({...t,fontSize:e.direcLabelFontSize}),this._verticalLabel=new G({...t,fontSize:e.verticalLabelFontSize}),this._horizontalLabel=new G({...t,fontSize:e.horizontalLabelFontSize}),this._handles.add([p((()=>{const{elevationAlignedStartPoint:e,elevationAlignedEndPoint:t}=this.analysisView,i=this.view;return{view:i,camera:i.state.camera,viewMode:this.viewMode,elevationAlignedStartPoint:e,elevationAlignedEndPoint:t,orientation:this._actualVisualElementsOrientation,visualizedMeasurement:this.actualVisualizedMeasurement,stripeLength:this._measurementArrowStripeLength}}),(e=>this._updateGeometryAndViewMode(e)),_),p((()=>({visible:this.visible,viewMode:this.viewMode})),(e=>this._updateVisualElementVisibility(e)),_),p((()=>({text:this._labelsText,visualizedMeasurement:this.actualVisualizedMeasurement})),(e=>this._updateLabelText(e)),_),p((()=>({visible:this.visible,viewMode:this.viewMode,state:this._state})),(e=>this._updateLabelVisibility(e)),_),p((()=>this._measurementArrowStripeLength),(e=>this._updateSegmentStripeLength(e)),_),W((async()=>this._updateMessageBundle()))]),this._state=q.Ready,this._updateMessageBundle()}destroy(){this._state!==q.Destroyed&&(this._handles=r(this._handles),this._segmentVisualElement=r(this._segmentVisualElement),this._triangleVisualElement=r(this._triangleVisualElement),this._rightAngleQuad=r(this._rightAngleQuad),this._projectedGeodesicLine=r(this._projectedGeodesicLine),this._geodesicStartHint=r(this._geodesicStartHint),this._geodesicEndHint=r(this._geodesicEndHint),this._segmentLabel=r(this._segmentLabel),this._verticalLabel=r(this._verticalLabel),this._horizontalLabel=r(this._horizontalLabel),this.set("view",null),this._state=q.Destroyed)}async whenReady(){await v((()=>this.ready))}_updateVisualElementVisibility({visible:e,viewMode:t}){if(this._segmentVisualElement.visible=!1,this._triangleVisualElement.visible=!1,this._rightAngleQuad.visible=!1,this._projectedGeodesicLine.visible=!1,this._geodesicStartHint.visible=!1,this._geodesicEndHint.visible=!1,e)switch(t){case M.None:break;case M.Direct:this._segmentVisualElement.visible=!0;break;case M.Triangle:this._segmentVisualElement.visible=!0,this._triangleVisualElement.visible=!0,this._rightAngleQuad.visible=!0;break;case M.ProjectedGeodesic:this._segmentVisualElement.visible=!0,this._projectedGeodesicLine.visible=!0,this._geodesicStartHint.visible=!0,this._geodesicEndHint.visible=!0}}_updateGeometryAndViewMode({view:e,camera:t,viewMode:i,elevationAlignedStartPoint:s,elevationAlignedEndPoint:n,orientation:r,visualizedMeasurement:o,stripeLength:l}){const c=e.renderCoordsHelper;if(a(c)||a(s)||a(n)||s.equals(n))return;let d=this._startPosition,h=this._endPosition;c.toRenderCoords(s,d),c.toRenderCoords(n,h);const u=r===D.AboveSegment?1:-1,m=u*(c.getAltitude(h)-c.getAltitude(d));m<0&&(d=this._endPosition,h=this._startPosition);const g="geodesic"===o?new R(this._startPosition,this._endPosition,c.spatialReference):new k(this._startPosition,this._endPosition);switch(this._segmentVisualElement.geometry=g,this._updateSegmentStripeLength(l),i){case M.Direct:this._updateSegment(g,r);break;case M.Triangle:this._updateSegmentAndTriangle({view:e,camera:t,segment:g,orientation:r,startPosition:d,endPosition:h,deltaSign:u,altitudeDelta:m});break;case M.ProjectedGeodesic:this._updateSegmentAndProjection({view:e,orientation:r,startPosition:d,endPosition:h})}}_updateSegment(e,t){this._segmentLabel.anchor=t===D.AboveSegment?"top":"bottom",this._segmentLabel.geometry={type:"segment",segment:e,sampleLocation:"center"}}_updateSegmentAndTriangle({view:{renderCoordsHelper:e},camera:t,segment:i,orientation:s,startPosition:n,endPosition:a,deltaSign:r,altitudeDelta:o}){const l=this._cornerPosition;e.worldUpAtPosition(n,l),A(l,l,r*Math.abs(o)),E(l,l,n),this._triangleVisualElement.geometry=[[[n[0],n[1],n[2]],[l[0],l[1],l[2]],[a[0],a[1],a[2]]]],this._rightAngleQuad.geometry={previous:n,center:l,next:a};const c=new k(n,l),d=new k(l,a),h=N(n,a,l,s,t);this._segmentLabel.anchor=h.segment,this._segmentLabel.geometry={type:"segment",segment:i,sampleLocation:"center"},this._verticalLabel.geometry={type:"segment",segment:c,sampleLocation:"center"},this._verticalLabel.anchor=h.vertical,this._horizontalLabel.geometry={type:"segment",segment:d,sampleLocation:"center"},this._horizontalLabel.anchor=h.horizontal}_updateSegmentAndProjection({view:{renderCoordsHelper:e},orientation:t,startPosition:i,endPosition:s}){e.setAltitude(this._startPositionAtSeaLevel,0,i),e.setAltitude(this._endPositionAtSeaLevel,0,s);const n=new R(this._startPositionAtSeaLevel,this._endPositionAtSeaLevel,e.spatialReference);this._projectedGeodesicLine.setGeometryFromSegment(n),this._geodesicStartHint.setGeometryFromSegment(new k(this._startPositionAtSeaLevel,i)),this._geodesicEndHint.setGeometryFromSegment(new k(this._endPositionAtSeaLevel,s)),this._segmentLabel.geometry={type:"segment",segment:n,sampleLocation:"center"},this._segmentLabel.anchor=t===D.AboveSegment?"top":"bottom"}_updateLabelText({text:e,visualizedMeasurement:t}){o(e)?(this._segmentLabel.text="euclidean"===t?e.euclideanDistance:e.geodesicDistance,this._horizontalLabel.text=e.horizontalDistance,this._verticalLabel.text=e.verticalDistance):(this._segmentLabel.text=null,this._horizontalLabel.text=null,this._verticalLabel.text=null),this.notifyChange("labels")}_updateLabelVisibility({state:e,visible:t,viewMode:i}){if(e!==q.Ready)return;const s=this._segmentLabel,n=this._horizontalLabel,a=this._verticalLabel;if(s.visible=!1,n.visible=!1,a.visible=!1,t)switch(i){case M.Direct:s.visible=!0;break;case M.Triangle:s.visible=!0,n.visible=!0,a.visible=!0;break;case M.ProjectedGeodesic:s.visible=!0;case M.None:}}get _labelsText(){if(this._state!==q.Ready)return null;const e=this.messages,t=this.analysisView.result;if(a(t)||a(e))return null;const{directDistance:i,horizontalDistance:s,verticalDistance:n,geodesicDistance:r}=t,o=this.analysisView.unit,m=e=>({euclideanDistance:"",geodesicDistance:"",horizontalDistance:"",verticalDistance:"",...e});switch(o){case"metric":return m({euclideanDistance:i&&h(e,i),geodesicDistance:r&&h(e,r),horizontalDistance:s&&h(e,s),verticalDistance:n&&u(e,n)});case"imperial":return m({euclideanDistance:i&&c(e,i),geodesicDistance:r&&c(e,r),horizontalDistance:s&&c(e,s),verticalDistance:n&&d(e,n)});default:return m({euclideanDistance:i&&l(e,i,o),geodesicDistance:r&&l(e,r,o),horizontalDistance:s&&l(e,s,o),verticalDistance:n&&l(e,n,o)})}}_updateSegmentStripeLength(e){const t=this._segmentVisualElement;o(e)?(t.stripeLength=e,t.stripesEnabled=!0):t.stripesEnabled=!1}get _actualVisualElementsOrientation(){if(o(this._triangleOrientationOverride))return this._triangleOrientationOverride;const e=this.visualElementOrientation;return e===D.Auto?this.view.state.camera.aboveGround?D.AboveSegment:D.BelowSegment:e}_requiresGeodesicGuideAt(e){const t=this.view;if(!t?.state)return!1;const i=t.state.camera,s=t.renderCoordsHelper,n=i.computeScreenPixelSizeAt(e);return s.getAltitude(e)/n>=10}get _measurementArrowStripeLength(){const{result:e,unit:t}=this.analysisView;if(a(e))return null;let i=null;const n=e.directDistance;switch(t){case"metric":i=n&&m(n,"meters");break;case"imperial":i=n&&m(n,w(n.value,n.unit));break;default:i=n&&m(n,t)}if(a(i))return null;return s(i.value/30)*y(1,i.unit,"meters")}_updateMessageBundle(){this.loadingMessages=!0,Q("esri/core/t9n/Units").then((e=>{this.messages=e})).finally((()=>{this.loadingMessages=!1}))}};function N(e,t,i,s,n){const a=X,r=Y;n.projectToRenderScreen(i,a),n.projectToRenderScreen(t,r);const o={segment:"bottom",horizontal:"top",vertical:a[0]<r[0]?"left":"right"};{const s=Z,a=$;if(O(e,i,s,n),O(e,t,a,n),P(s,a)>=K){const e=Math.sign(s[1])===Math.sign(a[1]);o.segment=e?C(o.vertical):o.vertical}else{const e=ee;O(i,t,e,n),P(e,a)>=K&&(o.segment=Math.sign(e[0])===Math.sign(a[0])?C(o.horizontal):o.horizontal)}}if(s===D.BelowSegment){const e=e=>"top"===e?"bottom":"top";o.segment=e(o.segment),o.horizontal=e(o.horizontal),o.vertical=e(o.vertical)}return o}e([S()],B.prototype,"_state",void 0),e([S()],B.prototype,"_triangleOrientationOverride",void 0),e([S()],B.prototype,"messages",void 0),e([S()],B.prototype,"view",void 0),e([S()],B.prototype,"analysis",void 0),e([S()],B.prototype,"analysisView",void 0),e([S()],B.prototype,"ready",null),e([S()],B.prototype,"loadingMessages",void 0),e([S()],B.prototype,"visible",null),e([S()],B.prototype,"viewMode",null),e([S()],B.prototype,"actualVisualizedMeasurement",null),e([S()],B.prototype,"visualElementOrientation",void 0),e([S()],B.prototype,"triangleCollapseRatioThreshold",void 0),e([S()],B.prototype,"allowVisualElementsOrientationChange",null),e([S()],B.prototype,"labels",null),e([S()],B.prototype,"testData",null),e([S()],B.prototype,"_labelsText",null),e([S()],B.prototype,"_actualVisualElementsOrientation",null),e([S()],B.prototype,"_measurementArrowStripeLength",null),B=e([f("esri.views.3d.analysis.DirectLineMeasurement.DirectLineMeasurementVisualization")],B);const I=j(1,.5,0,.75),J={laserLineGlowColor:[1,.5,0],laserLineGlowWidth:8,laserLineGlowFalloff:8,laserLineInnerColor:[1,1,1],laserLineInnerWidth:.75,laserLineGlobalAlpha:.75,laserLineEnabled:!0,handleColor:[1,.5,0],handleOpacity:.5,handleRadius:5,triangleColor:I,triangleLineWidth:3,triangleCornerSize:32,triangleSubdivisions:128,arrowWidth:16,arrowOutlineColor:[1,.5,0,1],arrowOutlineWidth:.2,arrowStripeEvenColor:[1,1,1,1],arrowStripeOddColor:[1,.5,0,1],arrowStripeLength:16,arrowSubdivisions:128,geodesicProjectionLineWidth:2,geodesicProjectionLineColor:I,guideLineWidth:2,guideLineColor:I,guideStippleLengthPixels:6,labelDistance:25,direcLabelFontSize:16,horizontalLabelFontSize:12,verticalLabelFontSize:12},K=Math.cos(n(12)),X=b(),Y=b(),Z=L(),$=L(),ee=L();export{B as DirectLineMeasurementVisualization,q as State};
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import"../../../../intl.js";import t from"../../../../core/Accessor.js";import i from"../../../../core/Handles.js";import{nextHighestPowerOfTen as s,deg2rad as n}from"../../../../core/mathUtils.js";import{isNone as a,destroyMaybe as o,isSome as r}from"../../../../core/maybe.js";import{formatDecimal as l,formatImperialLength as c,formatImperialVerticalLength as d,formatMetricLength as h,formatMetricVerticalLength as u}from"../../../../core/quantityFormatUtils.js";import{toUnit as m}from"../../../../core/quantityUtils.js";import{watch as g,syncAndInitial as p}from"../../../../core/reactiveUtils.js";import{createRenderScreenPointArray3 as _,createRenderScreenPointArray as v}from"../../../../core/screenUtils.js";import{preferredImperialLengthUnit as b,convertUnit as L}from"../../../../core/unitUtils.js";import{property as w}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as S}from"../../../../core/accessorSupport/decorators/subclass.js";import{h as y}from"../../../../chunks/vec2.js";import{g as f,a as P}from"../../../../chunks/vec3.js";import{c as A}from"../../../../chunks/vec3f64.js";import{f as E}from"../../../../chunks/vec4f32.js";import{MeasurementMode as V}from"../interfaces.js";import{VisualElementOrientation as j,ViewMode as z}from"./interfaces.js";import{screenSpaceTangent as D}from"../support/viewUtils.js";import{LabelVisualElement as M,mirrorPosition as O}from"../../interactive/visualElements/LabelVisualElement.js";import{LineVisualElement as G}from"../../interactive/visualElements/LineVisualElement.js";import{MeasurementArrowVisualElement as C}from"../../interactive/visualElements/MeasurementArrowVisualElement.js";import{RightAngleQuadVisualElement as x}from"../../interactive/visualElements/RightAngleQuadVisualElement.js";import{GeodesicSegment as T,EuclideanSegment as H}from"../../interactive/visualElements/support/Segment.js";import{RenderOccludedFlag as k}from"../../webgl-engine/lib/Material.js";import{createStipplePatternSimple as R}from"../../webgl-engine/materials/lineStippleUtils.js";import{onLocaleChange as F}from"../../../../intl/locale.js";import{fetchMessageBundle as U}from"../../../../intl/messages.js";var W;!function(e){e[e.Pending=0]="Pending",e[e.Ready=1]="Ready",e[e.Destroyed=2]="Destroyed"}(W||(W={}));let Q=class extends t{constructor(e){super(e),this._params={...N},this._handles=new i,this._segmentVisualElement=null,this._triangleVisualElement=null,this._rightAngleQuad=null,this._projectedGeodesicLine=null,this._geodesicStartHint=null,this._geodesicEndHint=null,this._segmentLabel=null,this._verticalLabel=null,this._horizontalLabel=null,this._startPosition=A(),this._endPosition=A(),this._cornerPosition=A(),this._startPositionAtSeaLevel=A(),this._endPositionAtSeaLevel=A(),this._triangleOrientationOverride=null,this.messages=null,this.loadingMessages=!0,this.visualElementOrientation=j.Auto,this.triangleCollapseRatioThreshold=.03}get visible(){return this.analysisView.visible}get viewMode(){const{elevationAlignedStartPoint:e,elevationAlignedEndPoint:t}=this.analysisView;if(a(e)||a(t)||e.equals(t))return z.None;const i=this.analysisView.result;if(a(i))return z.Direct;if("geodesic"===i.mode)return this._requiresGeodesicGuideAt(this._startPosition)||this._requiresGeodesicGuideAt(this._endPosition)?z.ProjectedGeodesic:z.Direct;const{verticalDistance:s,horizontalDistance:n}=i,o=s.value,r=n.value;return Math.min(o/r,r/o)<this.triangleCollapseRatioThreshold?z.Direct:z.Triangle}get actualVisualizedMeasurement(){if(a(this.analysisView.result))switch(this.analysisView.measurementMode){case V.Auto:case V.Euclidean:default:return"euclidean";case V.Geodesic:return"geodesic"}return this.analysisView.result.mode}get allowVisualElementsOrientationChange(){return a(this._triangleOrientationOverride)}set allowVisualElementsOrientationChange(e){a(this._triangleOrientationOverride)!==e&&(a(this._triangleOrientationOverride)?this._triangleOrientationOverride=this._actualVisualElementsOrientation:this._triangleOrientationOverride=null)}get labels(){const e="geodesic"===this.actualVisualizedMeasurement;return{direct:this._segmentLabel,horizontal:e?this._segmentLabel:this._horizontalLabel,vertical:this._verticalLabel}}initialize(){const e=this._params,t={attached:!0,view:this.view};this._segmentVisualElement=new C({...t,geometry:null,renderOccluded:k.OccludeAndTransparent}),this._triangleVisualElement=new G({...t,width:e.triangleLineWidth,color:e.triangleColor,renderOccluded:k.OccludeAndTransparent}),this._rightAngleQuad=new x({...t,color:B,renderOccluded:k.OccludeAndTransparent});const i={...t,polygonOffset:!0,renderOccluded:k.OccludeAndTransparent};this._projectedGeodesicLine=new G({...i,width:e.geodesicProjectionLineWidth,color:e.geodesicProjectionLineColor,stipplePattern:R(e.guideStippleLengthPixels)}),this._geodesicStartHint=new G({...i,width:e.guideLineWidth,color:e.geodesicProjectionLineColor,stipplePattern:R(e.guideStippleLengthPixels)}),this._geodesicEndHint=new G({...i,width:e.guideLineWidth,color:e.geodesicProjectionLineColor,stipplePattern:R(e.guideStippleLengthPixels)}),this._segmentLabel=new M({...t,fontSize:e.direcLabelFontSize}),this._verticalLabel=new M({...t,fontSize:e.verticalLabelFontSize}),this._horizontalLabel=new M({...t,fontSize:e.horizontalLabelFontSize}),this._handles.add([g((()=>{const{elevationAlignedStartPoint:e,elevationAlignedEndPoint:t}=this.analysisView,i=this.view;return{view:i,camera:i.state.camera,viewMode:this.viewMode,elevationAlignedStartPoint:e,elevationAlignedEndPoint:t,orientation:this._actualVisualElementsOrientation,visualizedMeasurement:this.actualVisualizedMeasurement,stripeLength:this._measurementArrowStripeLength}}),(e=>this._updateGeometryAndViewMode(e)),p),g((()=>({visible:this.visible,viewMode:this.viewMode})),(e=>this._updateVisualElementVisibility(e)),p),g((()=>({text:this._labelsText,visualizedMeasurement:this.actualVisualizedMeasurement})),(e=>this._updateLabelText(e)),p),g((()=>({visible:this.visible,viewMode:this.viewMode})),(e=>this._updateLabelVisibility(e)),p),g((()=>this._measurementArrowStripeLength),(e=>this._updateSegmentStripeLength(e)),p),F((async()=>this._updateMessageBundle()))]),this._updateMessageBundle()}destroy(){this._handles=o(this._handles),this._segmentVisualElement=o(this._segmentVisualElement),this._triangleVisualElement=o(this._triangleVisualElement),this._rightAngleQuad=o(this._rightAngleQuad),this._projectedGeodesicLine=o(this._projectedGeodesicLine),this._geodesicStartHint=o(this._geodesicStartHint),this._geodesicEndHint=o(this._geodesicEndHint),this._segmentLabel=o(this._segmentLabel),this._verticalLabel=o(this._verticalLabel),this._horizontalLabel=o(this._horizontalLabel),this.set("view",null)}_updateVisualElementVisibility({visible:e,viewMode:t}){if(this._segmentVisualElement.visible=!1,this._triangleVisualElement.visible=!1,this._rightAngleQuad.visible=!1,this._projectedGeodesicLine.visible=!1,this._geodesicStartHint.visible=!1,this._geodesicEndHint.visible=!1,e)switch(t){case z.None:break;case z.Direct:this._segmentVisualElement.visible=!0;break;case z.Triangle:this._segmentVisualElement.visible=!0,this._triangleVisualElement.visible=!0,this._rightAngleQuad.visible=!0;break;case z.ProjectedGeodesic:this._segmentVisualElement.visible=!0,this._projectedGeodesicLine.visible=!0,this._geodesicStartHint.visible=!0,this._geodesicEndHint.visible=!0}}_updateGeometryAndViewMode({view:e,camera:t,viewMode:i,elevationAlignedStartPoint:s,elevationAlignedEndPoint:n,orientation:o,visualizedMeasurement:r,stripeLength:l}){const c=e.renderCoordsHelper;if(a(c)||a(s)||a(n)||s.equals(n))return;let d=this._startPosition,h=this._endPosition;c.toRenderCoords(s,d),c.toRenderCoords(n,h);const u=o===j.AboveSegment?1:-1,m=u*(c.getAltitude(h)-c.getAltitude(d));m<0&&(d=this._endPosition,h=this._startPosition);const g="geodesic"===r?new T(this._startPosition,this._endPosition,c.spatialReference):new H(this._startPosition,this._endPosition);switch(this._segmentVisualElement.geometry=g,this._updateSegmentStripeLength(l),i){case z.Direct:this._updateSegment(g,o);break;case z.Triangle:this._updateSegmentAndTriangle({view:e,camera:t,segment:g,orientation:o,startPosition:d,endPosition:h,deltaSign:u,altitudeDelta:m});break;case z.ProjectedGeodesic:this._updateSegmentAndProjection({view:e,orientation:o,startPosition:d,endPosition:h})}}_updateSegment(e,t){this._segmentLabel.anchor=t===j.AboveSegment?"top":"bottom",this._segmentLabel.geometry={type:"segment",segment:e,sampleLocation:"center"}}_updateSegmentAndTriangle({view:{renderCoordsHelper:e},camera:t,segment:i,orientation:s,startPosition:n,endPosition:a,deltaSign:o,altitudeDelta:r}){const l=this._cornerPosition;e.worldUpAtPosition(n,l),f(l,l,o*Math.abs(r)),P(l,l,n),this._triangleVisualElement.geometry=[[[n[0],n[1],n[2]],[l[0],l[1],l[2]],[a[0],a[1],a[2]]]],this._rightAngleQuad.geometry={previous:n,center:l,next:a};const c=new H(n,l),d=new H(l,a),h=q(n,a,l,s,t);this._segmentLabel.anchor=h.segment,this._segmentLabel.geometry={type:"segment",segment:i,sampleLocation:"center"},this._verticalLabel.geometry={type:"segment",segment:c,sampleLocation:"center"},this._verticalLabel.anchor=h.vertical,this._horizontalLabel.geometry={type:"segment",segment:d,sampleLocation:"center"},this._horizontalLabel.anchor=h.horizontal}_updateSegmentAndProjection({view:{renderCoordsHelper:e},orientation:t,startPosition:i,endPosition:s}){e.setAltitude(this._startPositionAtSeaLevel,0,i),e.setAltitude(this._endPositionAtSeaLevel,0,s);const n=new T(this._startPositionAtSeaLevel,this._endPositionAtSeaLevel,e.spatialReference);this._projectedGeodesicLine.setGeometryFromSegment(n),this._geodesicStartHint.setGeometryFromSegment(new H(this._startPositionAtSeaLevel,i)),this._geodesicEndHint.setGeometryFromSegment(new H(this._endPositionAtSeaLevel,s)),this._segmentLabel.geometry={type:"segment",segment:n,sampleLocation:"center"},this._segmentLabel.anchor=t===j.AboveSegment?"top":"bottom"}_updateLabelText({text:e,visualizedMeasurement:t}){r(e)?(this._segmentLabel.text="euclidean"===t?e.euclideanDistance:e.geodesicDistance,this._horizontalLabel.text=e.horizontalDistance,this._verticalLabel.text=e.verticalDistance):(this._segmentLabel.text=null,this._horizontalLabel.text=null,this._verticalLabel.text=null),this.notifyChange("labels")}_updateLabelVisibility({visible:e,viewMode:t}){const i=this._segmentLabel,s=this._horizontalLabel,n=this._verticalLabel;if(i.visible=!1,s.visible=!1,n.visible=!1,e)switch(t){case z.Direct:i.visible=!0;break;case z.Triangle:i.visible=!0,s.visible=!0,n.visible=!0;break;case z.ProjectedGeodesic:i.visible=!0;case z.None:}}get _labelsText(){if(this.destroyed)return null;const e=this.messages,t=this.analysisView.result;if(a(t)||a(e))return null;const{directDistance:i,horizontalDistance:s,verticalDistance:n,geodesicDistance:o}=t,r=this.analysisView.unit,m=e=>({euclideanDistance:"",geodesicDistance:"",horizontalDistance:"",verticalDistance:"",...e});switch(r){case"metric":return m({euclideanDistance:i&&h(e,i),geodesicDistance:o&&h(e,o),horizontalDistance:s&&h(e,s),verticalDistance:n&&u(e,n)});case"imperial":return m({euclideanDistance:i&&c(e,i),geodesicDistance:o&&c(e,o),horizontalDistance:s&&c(e,s),verticalDistance:n&&d(e,n)});default:return m({euclideanDistance:i&&l(e,i,r),geodesicDistance:o&&l(e,o,r),horizontalDistance:s&&l(e,s,r),verticalDistance:n&&l(e,n,r)})}}_updateSegmentStripeLength(e){const t=this._segmentVisualElement;r(e)?(t.stripeLength=e,t.stripesEnabled=!0):t.stripesEnabled=!1}get _actualVisualElementsOrientation(){if(r(this._triangleOrientationOverride))return this._triangleOrientationOverride;const e=this.visualElementOrientation;return e===j.Auto?this.view.state.camera.aboveGround?j.AboveSegment:j.BelowSegment:e}_requiresGeodesicGuideAt(e){const t=this.view;if(!t?.state)return!1;const i=t.state.camera,s=t.renderCoordsHelper,n=i.computeScreenPixelSizeAt(e);return s.getAltitude(e)/n>=10}get _measurementArrowStripeLength(){const{result:e,unit:t}=this.analysisView;if(a(e))return null;let i=null;const n=e.directDistance;switch(t){case"metric":i=n&&m(n,"meters");break;case"imperial":i=n&&m(n,b(n.value,n.unit));break;default:i=n&&m(n,t)}if(a(i))return null;return s(i.value/30)*L(1,i.unit,"meters")}_updateMessageBundle(){this.loadingMessages=!0,U("esri/core/t9n/Units").then((e=>{this.messages=e})).finally((()=>{this.loadingMessages=!1}))}get testData(){return{labels:this.labels,stripeLength:this._segmentVisualElement?.stripeLength}}};function q(e,t,i,s,n){const a=J,o=K;n.projectToRenderScreen(i,a),n.projectToRenderScreen(t,o);const r={segment:"bottom",horizontal:"top",vertical:a[0]<o[0]?"left":"right"};{const s=X,a=Y;if(D(e,i,s,n),D(e,t,a,n),y(s,a)>=I){const e=Math.sign(s[1])===Math.sign(a[1]);r.segment=e?O(r.vertical):r.vertical}else{const e=Z;D(i,t,e,n),y(e,a)>=I&&(r.segment=Math.sign(e[0])===Math.sign(a[0])?O(r.horizontal):r.horizontal)}}if(s===j.BelowSegment){const e=e=>"top"===e?"bottom":"top";r.segment=e(r.segment),r.horizontal=e(r.horizontal),r.vertical=e(r.vertical)}return r}e([w()],Q.prototype,"_triangleOrientationOverride",void 0),e([w()],Q.prototype,"messages",void 0),e([w()],Q.prototype,"view",void 0),e([w()],Q.prototype,"analysis",void 0),e([w()],Q.prototype,"analysisView",void 0),e([w()],Q.prototype,"loadingMessages",void 0),e([w()],Q.prototype,"visible",null),e([w()],Q.prototype,"viewMode",null),e([w()],Q.prototype,"actualVisualizedMeasurement",null),e([w()],Q.prototype,"visualElementOrientation",void 0),e([w()],Q.prototype,"triangleCollapseRatioThreshold",void 0),e([w()],Q.prototype,"allowVisualElementsOrientationChange",null),e([w()],Q.prototype,"labels",null),e([w()],Q.prototype,"_labelsText",null),e([w()],Q.prototype,"_actualVisualElementsOrientation",null),e([w()],Q.prototype,"_measurementArrowStripeLength",null),Q=e([S("esri.views.3d.analysis.DirectLineMeasurement.DirectLineMeasurementVisualization")],Q);const B=E(1,.5,0,.75),N={laserLineGlowColor:[1,.5,0],laserLineGlowWidth:8,laserLineGlowFalloff:8,laserLineInnerColor:[1,1,1],laserLineInnerWidth:.75,laserLineGlobalAlpha:.75,laserLineEnabled:!0,handleColor:[1,.5,0],handleOpacity:.5,handleRadius:5,triangleColor:B,triangleLineWidth:3,triangleCornerSize:32,triangleSubdivisions:128,arrowWidth:16,arrowOutlineColor:[1,.5,0,1],arrowOutlineWidth:.2,arrowStripeEvenColor:[1,1,1,1],arrowStripeOddColor:[1,.5,0,1],arrowStripeLength:16,arrowSubdivisions:128,geodesicProjectionLineWidth:2,geodesicProjectionLineColor:B,guideLineWidth:2,guideLineColor:B,guideStippleLengthPixels:6,labelDistance:25,direcLabelFontSize:16,horizontalLabelFontSize:12,verticalLabelFontSize:12},I=Math.cos(n(12)),J=_(),K=_(),X=v(),Y=v(),Z=v();export{Q as DirectLineMeasurementVisualization,W as State};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as t}from"../../../chunks/tslib.es6.js";import
|
|
5
|
+
import{_ as t}from"../../../chunks/tslib.es6.js";import i from"../../../core/Accessor.js";import{destroyMaybe as e,unwrapOr as a}from"../../../core/maybe.js";import{property as s}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as l}from"../../../core/accessorSupport/decorators/subclass.js";import{defaultUnitPropertyMetadata as n}from"../../../properties/defaultUnit.js";import{AnalysisView3D as o}from"./AnalysisView3D.js";import{MeasurementMode as r}from"./interfaces.js";import{DirectLineMeasurementController as u}from"./DirectLineMeasurement/DirectLineMeasurementController.js";import{DirectLineMeasurementVisualization as p}from"./DirectLineMeasurement/DirectLineMeasurementVisualization.js";let y=class extends(o(i)){constructor(t){super(t),this.type="direct-line-measurement-view-3d",this.result=null,this.measurementMode=r.Auto,this.elevationAlignedStartPoint=null,this.elevationAlignedEndPoint=null,this.interactive=!1}initialize(){const t=this.view,i=this.analysis;this._analysisVisualization=new p({view:t,analysis:i,analysisView:this}),this._analysisController=new u({view:t,analysis:i,viewData:this})}destroy(){this._analysisController=e(this._analysisController),this._analysisVisualization=e(this._analysisVisualization)}get updating(){return!!this._analysisVisualization?.loadingMessages}get viewMode(){return this._analysisVisualization.viewMode}get actualVisualizedMeasurement(){return this._analysisVisualization.actualVisualizedMeasurement}get visualElementOrientation(){return this._analysisVisualization.visualElementOrientation}set visualElementOrientation(t){this._analysisVisualization.visualElementOrientation=t}get allowVisualElementsOrientationChange(){return this._analysisVisualization.allowVisualElementsOrientationChange}set allowVisualElementsOrientationChange(t){this._analysisVisualization.allowVisualElementsOrientationChange=t}get triangleCollapseRatioThreshold(){return this._analysisVisualization.triangleCollapseRatioThreshold}set triangleCollapseRatioThreshold(t){this._analysisVisualization.triangleCollapseRatioThreshold=t}get directLabelText(){return this._analysisVisualization.labels.direct.text}get horizontalLabelText(){return this._analysisVisualization.labels.horizontal.text}get verticalLabelText(){return this._analysisVisualization.labels.vertical.text}get unit(){return a(this.analysis.unit,this._defaultUnit)}get testData(){return this.destroyed?{labels:null,stripeLength:null,visualization:null,controller:null}:{...this._analysisVisualization?.testData,visualization:this._analysisVisualization,controller:this._analysisController}}};t([s()],y.prototype,"updating",null),t([s({readOnly:!0})],y.prototype,"type",void 0),t([s({constructOnly:!0,nonNullable:!0})],y.prototype,"analysis",void 0),t([s()],y.prototype,"result",void 0),t([s()],y.prototype,"measurementMode",void 0),t([s()],y.prototype,"elevationAlignedStartPoint",void 0),t([s()],y.prototype,"elevationAlignedEndPoint",void 0),t([s({readOnly:!0})],y.prototype,"viewMode",null),t([s({readOnly:!0})],y.prototype,"actualVisualizedMeasurement",null),t([s()],y.prototype,"visualElementOrientation",null),t([s()],y.prototype,"allowVisualElementsOrientationChange",null),t([s()],y.prototype,"triangleCollapseRatioThreshold",null),t([s({readOnly:!0})],y.prototype,"directLabelText",null),t([s({readOnly:!0})],y.prototype,"horizontalLabelText",null),t([s({readOnly:!0})],y.prototype,"verticalLabelText",null),t([s()],y.prototype,"interactive",void 0),t([s()],y.prototype,"_analysisVisualization",void 0),t([s()],y.prototype,"_analysisController",void 0),t([s()],y.prototype,"unit",null),t([s(n)],y.prototype,"_defaultUnit",void 0),y=t([l("esri.views.3d.analysis.DirectLineMeasurementAnalysisView3D")],y);const h=y;export{h as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../../chunks/tslib.es6.js";import"../../../../geometry.js";import{getFeatureId as t}from"../../../../analysis/analysisUtils.js";import o from"../../../../core/Accessor.js";import i from"../../../../core/Evented.js";import n from"../../../../core/Handles.js";import{handlesGroup as r,makeHandle as s}from"../../../../core/handleUtils.js";import{equals as a}from"../../../../core/lang.js";import c from"../../../../core/Logger.js";import{isNone as l,isSome as p,abortMaybe as u,unwrapOr as d,none as g}from"../../../../core/maybe.js";import{createTask as h,ignoreAbortErrors as m}from"../../../../core/promiseUtils.js";import{watch as v,on as f,syncAndInitial as _,sync as b}from"../../../../core/reactiveUtils.js";import{property as y}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as C}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as I,i as T,b as P,n as O,g as S,a as j,j as w,v as R}from"../../../../chunks/vec3.js";import{c as A}from"../../../../chunks/vec3f64.js";import{WatchUpdatingTracking as E}from"../../../../core/support/WatchUpdatingTracking.js";import{projectOrLoad as L,projectBoundingRect as F}from"../../../../geometry/projection.js";import{empty as V,containsPointObject as H,intersectsSegment as x}from"../../../../geometry/support/aaBoundingRect.js";import{fromPoints as D,create as N}from"../../../../geometry/support/ray.js";import{zValueInAbsoluteHeightMode as k}from"../../../../support/elevationInfoUtils.js";import{LineOfSightAnalysisResult as z}from"../LineOfSightAnalysisResult.js";import{LineOfSightComputation as M}from"./LineOfSightComputation.js";import{LineOfSightRayIntersector as U}from"./LineOfSightRayIntersector.js";import{logFailedGeometryProjectionError as G}from"../support/projectionUtils.js";import{StoreResults as q}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{toGraphic as B,getIntersectedFeatureBSRadius as W}from"../../webgl-engine/lib/intersectorUtilsConversions.js";import{ImmediateTask as Z,TaskPriority as J}from"../../../support/Scheduler.js";import K from"../../../../geometry/Point.js";const Q=c.getLogger("esri.views.3d.analysis.LineOfSight.LineOfSightController");let X=class extends(i.EventedMixin(o)){constructor(e){super(e),this.updateOnCameraChange=!0,this._effectiveObserverElevationMode="absolute-height",this._observerFeatureId=null,this._updatingHandles=new E,this._frameTask=Z,this._handles=new n,this._computationHandles=new n,this._externalObserverUpdate=!0}initialize(){const e=this.view.resourceController?.scheduler;this._frameTask=e?e.registerTask(J.LINE_OF_SIGHT_TOOL):Z,this._intersector=new U({view:this.view}),this._handles.add([this._connectObserver(),this._connectComputations(),this._connectTargets()])}destroy(){this._handles.destroy(),this._computationHandles.destroy(),this._computations.removeAll(),this._updatingHandles.destroy()}get updating(){return this._frameTask.updating||this._updatingHandles.updating}get priority(){return this._frameTask.priority}set priority(e){this._frameTask.priority=e}get _computations(){return this.analysisViewData.computations}get _elevationAlignedObserverPositionRenderSpace(){return this.analysisViewData.observerEngineLocation}set _elevationAlignedObserverPositionRenderSpace(e){this.analysisViewData.observerEngineLocation=e}get _screenPixelSize(){return this.view.state.camera.computeScreenPixelSizeAt(this._elevationAlignedObserverPositionRenderSpace)}getLineOfSightComputationDependencies(e){const{inputPoints:t}=e;return{inputPoints:t}}_computeResult(e){const t=e.computation,{inputPoints:o,computationResult:i}=t,{observerAdjusted:n,targetAdjusted:r}=o,{start:s,end:a}=i;I(s,n),I(a,r);this._canCompute(t)?this._computeIntersection(e):this._interpolateIntersection(e),t.notifyResultChanged(),this.emit("result-changed",{target:e.computation.target,result:t.result})}_adjustStartEndPositionsFromFeatures(e){const o=this.view,{sceneIntersectionHelper:i}=o,{inputPoints:n}=e,{observer:r,target:s,observerFeatureId:a,targetFeatureId:c}=n;if(l(a)&&l(c))return;const u=T(r,s),d=this._intersector.intersector,g=D(n.observer,n.target,ee);d.options.store=q.ALL,i.intersectToolIntersectorRay(g,d);let h=null,m=null,v=null,f=null;for(const _ of d.results.all){const e=B(_,this.view);if(l(e)||l(_.distanceInRenderSpace))continue;const i=t(e);if(!l(i)){if(p(a)&&i===a){if(l(h)){const e=W(_,o);h=p(e)?e*oe:0}_.distanceInRenderSpace<h&&(v=_)}if(p(c)&&i===c){if(l(m)){const e=W(_,o);m=p(e)?e*oe:0}_.distanceInRenderSpace<u&&u-_.distanceInRenderSpace<m&&(f=_)}}}p(v)&&v.getIntersectionPoint(r)&&(n.observerSurfaceNormal=v.getTransformedNormal(A())),p(f)&&f.getIntersectionPoint(s)&&(n.targetSurfaceNormal=f.getTransformedNormal(A()))}_adjustStartEndPositions(e){const t=this._screenPixelSize,o=this.view,{inputPoints:i}=e,{observer:n,observerSurfaceNormal:r,target:s,targetSurfaceNormal:a,observerAdjusted:c,targetAdjusted:l}=i,u=$;p(r)?I(u,r):P(u,s,n);const d=t;O(u,u),S(u,u,Math.min(d,1)),j(c,n,u),p(a)?I(u,a):P(u,n,s);const g=o.state.camera.computeScreenPixelSizeAt(s);O(u,u),S(u,u,Math.min(g,1)),j(l,s,u)}_computeIntersection({computation:e,interpolationInfo:t}){const{view:o}=this,{sceneIntersectionHelper:i,renderCoordsHelper:n}=o;if(l(i))return;const r=this._intersector.intersector,{computationResult:s,inputPoints:a}=e,{observer:c,target:u}=a,{start:d,end:g}=s,h=D(d,g,ee);r.options.store=q.MIN,i.intersectToolIntersectorRay(h,r);const m=r.results.min,v=s.intersection,f=$;let _=!0;if(p(m)&&m.getIntersectionPoint(v)){I(t.originalIntersection,v),I(t.originalObserver,d),I(t.originalTarget,g),n.fromRenderCoords(v,f,o.spatialReference);const e=1-w(g,u)/w(d,u);_=w(c,v)>=e*w(c,u)}const b=new K(f,o.spatialReference);{const{result:t,target:i}=e;p(t)?(t.target=i,t.intersectedGraphic=_?null:B(m,o),t.intersectedLocation=_?null:b,t.visible=_):e.result=new z({target:i,elevationAlignedTargetLocation:e.elevationAlignedTargetLocation,intersectedGraphic:_?null:B(m,o),intersectedLocation:_?null:b,visible:_})}s.isValid=a.isValid=!0,s.isTargetVisible=_}_interpolateIntersection({computation:e,interpolationInfo:t}){const{computationResult:o,inputPoints:i}=e,{start:n,end:r,intersection:s}=o,{originalIntersection:a,originalObserver:c,originalTarget:l}=t;if(I(s,a),i.isValid){const e=$,t=w(c,a)/w(c,l);R(e,n,c),S(e,e,1-t),j(s,s,e),R(e,r,l),S(e,e,t),j(s,s,e),o.isValid=!0}else e.result=null,o.isValid=!1,o.isTargetVisible=!1}_canCompute(e){const t=this.analysisViewData.elevationAlignedObserver,o=this.view.frustum;if(l(t)||l(e.elevationAlignedTargetLocation)||l(o))return!1;const{observerAdjusted:i,targetAdjusted:n}=e.inputPoints,r=o.intersectsPoint(i),s=o.intersectsPoint(n);return r&&s}_onObserverPositionChange(e,o,i,n,r){if(this._externalObserverUpdate=r,l(e))return this.analysisViewData.elevationAlignedObserver=null,void(this._observerFeatureId=null);if(l(o))return G(this.analysis,e.spatialReference,Q),void(this.analysisViewData.elevationAlignedObserver=null);const s=this._getEffectiveElevationInfo(o,i);o.z=k(o.x,o.y,o.z,this.view.spatialReference,this.view,s),this._effectiveObserverElevationMode=s.mode,this.analysisViewData.elevationAlignedObserver=o;const a=A();this.view.renderCoordsHelper.toRenderCoords(o,a),this._elevationAlignedObserverPositionRenderSpace=a,this._observerFeatureId=t(n),this.priority=J.LINE_OF_SIGHT_TOOL_INTERACTIVE}_onObserverRenderSpacePositionChangeForComputation(e,t,o,i){const{inputPoints:n}=e;switch(I(n.observer,t),o){case"on-the-ground":case"relative-to-ground":n.observerSurfaceNormal=this._intersector.adjustFromGroundIntersection(t,n.observer);break;case"relative-to-scene":case"absolute-height":n.observerSurfaceNormal=null}n.observerFeatureId=i,this._adjustStartEndPositions(e),e.notifyInputPointsChanged(),this.priority=J.LINE_OF_SIGHT_TOOL_INTERACTIVE}_onTargetPositionChange(e,o,i,n,r,s=!0){const a=e.inputPoints;if(s&&(a.isValid=!1),l(i))return G(this.analysis,o.spatialReference,Q),e.elevationAlignedTargetLocation=null,void e.notifyInputPointsChanged();const c=this._getEffectiveElevationInfo(i,n);switch(i.z=k(i.x,i.y,i.z,this.view.spatialReference,this.view,c),e.elevationAlignedTargetLocation=i,this.view.renderCoordsHelper.toRenderCoords(e.elevationAlignedTargetLocation,a.target),c.mode){case"on-the-ground":case"relative-to-ground":a.targetSurfaceNormal=this._intersector.adjustFromGroundIntersection(a.target,a.targetAdjusted);break;case"relative-to-scene":case"absolute-height":a.targetSurfaceNormal=null}a.targetFeatureId=t(r),this._adjustStartEndPositionsFromFeatures(e),this._adjustStartEndPositions(e),e.notifyInputPointsChanged(),this.priority=J.LINE_OF_SIGHT_TOOL_INTERACTIVE}_connectComputationToTarget(e){return r([v((()=>({computation:e,targetPosition:e.target.position,targetElevationInfo:e.target.elevationInfo,targetFeatureInfo:e.target.feature,projectedTargetPosition:L(e.target.position,this.view.spatialReference)})),(({computation:e,targetPosition:t,targetElevationInfo:o,targetFeatureInfo:i,projectedTargetPosition:n})=>{l(t)||(p(n.pending)?this._updatingHandles.addPromise(n.pending):this._onTargetPositionChange(e,t,n.geometry,o,i))}),_)])}_connectComputationToObserver(e){return v((()=>({computation:e,observer:this.analysisViewData.elevationAlignedObserver})),(({computation:e})=>{this._externalObserverUpdate&&(e.inputPoints.isValid=!1,e.notifyInputPointsChanged())}),_)}_connectComputationToRenderSpaceObserver(e){return v((()=>({computation:e,observer:this._elevationAlignedObserverPositionRenderSpace,observerElevationMode:this._effectiveObserverElevationMode,observerFeatureId:this._observerFeatureId})),(({computation:e,observer:t,observerElevationMode:o,observerFeatureId:i})=>{this._onObserverRenderSpacePositionChangeForComputation(e,t,o,i)}),_)}_connectComputationToCamera(e){return v((()=>({camera:this.view.state.camera,isDirty:this._isCameraDirty})),(({isDirty:t})=>{!this.updateOnCameraChange||e.inputPoints.isValid&&!t||e.notifyInputPointsChanged()}),b)}_connectComputationToSlicePlane(e){return v((()=>this.view.slicePlane),(()=>{e.inputPoints.isValid=!1,e.notifyInputPointsChanged()}))}_connectComputationToElevation(e){const t=(o,i)=>{const n=this.analysis.observer,r=e.target;let s=null,a=null,c=null,u=null,d=null,g=null;if(p(n)&&p(n.position)){const e=L(n.position,this.view.spatialReference);if(p(e.pending))return this._updatingHandles.addPromise(e.pending),void e.pending.finally((()=>t(o,i)));s=e.geometry,a=n.elevationInfo,c=n.feature}if(p(r.position)){const e=L(r.position,this.view.spatialReference);if(p(e.pending))return this._updatingHandles.addPromise(e.pending),void e.pending.finally((()=>t(o,i)));u=e.geometry,d=r.elevationInfo,g=r.feature}l(s)&&l(u)||(F(o,i,te,this.view.spatialReference),p(n)&&p(s)&&H(te,s)&&this._onObserverPositionChange(n.position,s,a,c,!1),p(r)&&p(r.position)&&p(u)&&H(te,u)&&this._onTargetPositionChange(e,r.position,u,d,g,!1),p(s)&&p(u)&&x(te,s,u)&&e.notifyInputPointsChanged())};return this.view.elevationProvider.on("elevation-change",(e=>t(e.extent,e.spatialReference)))}_connectComputationToTask(e){let t=g;const o={computation:e,interpolationInfo:{originalIntersection:A(),originalObserver:A(),originalTarget:A()}};return r([v((()=>this.getLineOfSightComputationDependencies(e)),(()=>{t=u(t),t=h((async e=>{await m(this._frameTask.schedule((()=>this._computeResult(o)),e))}))}),{sync:!0,initial:!0,equals:a}),s((()=>t=u(t)))])}_connectComputation(e){const t=this._computationHandles;t.has(e)||t.add([this._connectComputationToTarget(e),this._connectComputationToObserver(e),this._connectComputationToRenderSpaceObserver(e),this._connectComputationToCamera(e),this._connectComputationToSlicePlane(e),this._connectComputationToElevation(e),this._connectComputationToTask(e)],e)}_disconnectComputation(e){this._computationHandles.remove(e)}_onComputationCollectionChange({added:e,removed:t}){for(const o of t)this._disconnectComputation(o);for(const o of e)this._connectComputation(o)}_onTargetCollectionChange({added:e,removed:t}){for(const o of t)this._removeTarget(o);for(const o of e)this._addTarget(o)}_onCursorTargetChange(e,t){p(t)&&this._removeTarget(t),p(e)&&this._addTarget(e)}_addTarget(e){this._computations.some((t=>t.target===e))||this._computations.add(new M({target:e}))}_removeTarget(e){const t=this._computations.findIndex((t=>t.target===e));this._computations.removeAt(t)}_connectObserver(){return r([v((()=>({observerPosition:p(this.analysis.observer)?this.analysis.observer.position:null,projectedObserverPosition:L(p(this.analysis.observer)?this.analysis.observer.position:null,this.view.spatialReference),observerElevationInfo:p(this.analysis.observer)?this.analysis.observer.elevationInfo:null,observerFeatureInfo:p(this.analysis.observer)?this.analysis.observer.feature:null})),(({observerPosition:e,projectedObserverPosition:t,observerElevationInfo:o,observerFeatureInfo:i})=>{p(t.pending)?this._updatingHandles.addPromise(t.pending):this._onObserverPositionChange(e,t.geometry,o,i,!0)}),_)])}_connectComputations(){return f((()=>this._computations),"change",(e=>this._onComputationCollectionChange(e)),{onListenerAdd:e=>{for(const t of e)this._connectComputation(t)},onListenerRemove:e=>{for(const t of e)this._disconnectComputation(t)},sync:!0})}_connectTargets(){return r([this._updatingHandles.addOnCollectionChange((()=>this.analysis.targets),(e=>this._onTargetCollectionChange(e)),{initial:!0,final:!0}),v((()=>this.analysisViewData.cursorTarget),((e,t)=>{this._onCursorTargetChange(e,t)}))])}get _isCameraDirty(){const e=this.analysisViewData.elevationAlignedObserver,{view:t}=this,{renderCoordsHelper:o}=t;if(l(e)||l(o))return!1;const i=$;o.toRenderCoords(e,i);const n=t.state.camera.computeScreenPixelSizeAt(i);return Math.abs((n-this._screenPixelSize)/this._screenPixelSize)>Y}_getEffectiveElevationInfo(e,t){return e.hasZ?d(t,{mode:"absolute-height",offset:0}):{mode:"on-the-ground",offset:0}}};e([y({constructOnly:!0})],X.prototype,"analysis",void 0),e([y({constructOnly:!0})],X.prototype,"analysisViewData",void 0),e([y({constructOnly:!0})],X.prototype,"view",void 0),e([y()],X.prototype,"updating",null),e([y()],X.prototype,"priority",null),e([y()],X.prototype,"updateOnCameraChange",void 0),e([y()],X.prototype,"_computations",null),e([y()],X.prototype,"_elevationAlignedObserverPositionRenderSpace",null),e([y()],X.prototype,"_effectiveObserverElevationMode",void 0),e([y()],X.prototype,"_observerFeatureId",void 0),e([y()],X.prototype,"_screenPixelSize",null),e([y({readOnly:!0})],X.prototype,"_updatingHandles",void 0),e([y()],X.prototype,"_frameTask",void 0),e([y()],X.prototype,"_isCameraDirty",null),X=e([C("esri.views.3d.analysis.LineOfSight.LineOfSightController")],X);const Y=.1,$=A(),ee=N(),te=V(),oe=.05;export{X as LineOfSightController};
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import"../../../../geometry.js";import{getFeatureId as t}from"../../../../analysis/analysisUtils.js";import o from"../../../../core/Accessor.js";import i from"../../../../core/Evented.js";import n from"../../../../core/Handles.js";import{handlesGroup as r,makeHandle as s}from"../../../../core/handleUtils.js";import{equals as a}from"../../../../core/lang.js";import c from"../../../../core/Logger.js";import{isNone as l,isSome as p,abortMaybe as u,unwrapOr as d,none as h}from"../../../../core/maybe.js";import{createTask as g,ignoreAbortErrors as v}from"../../../../core/promiseUtils.js";import{watch as m,on as f,syncAndInitial as _,sync as b}from"../../../../core/reactiveUtils.js";import{property as y}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as C}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as I,i as T,b as O,n as P,g as S,a as w,j as R,v as j}from"../../../../chunks/vec3.js";import{c as A}from"../../../../chunks/vec3f64.js";import{WatchUpdatingTracking as E}from"../../../../core/support/WatchUpdatingTracking.js";import{projectOrLoad as L,projectBoundingRect as F}from"../../../../geometry/projection.js";import{empty as V,containsPointObject as H,intersectsSegment as x}from"../../../../geometry/support/aaBoundingRect.js";import{fromPoints as D,create as N}from"../../../../geometry/support/ray.js";import{zValueInAbsoluteHeightMode as k}from"../../../../support/elevationInfoUtils.js";import{LineOfSightAnalysisResult as z}from"../LineOfSightAnalysisResult.js";import{LineOfSightComputation as G}from"./LineOfSightComputation.js";import{LineOfSightRayIntersector as M}from"./LineOfSightRayIntersector.js";import{logFailedGeometryProjectionError as U}from"../support/projectionUtils.js";import{StoreResults as Z}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{toGraphic as q,getIntersectedFeatureBSRadius as B}from"../../webgl-engine/lib/intersectorUtilsConversions.js";import{ImmediateTask as W,TaskPriority as J}from"../../../support/Scheduler.js";import K from"../../../../geometry/Point.js";const Q=c.getLogger("esri.views.3d.analysis.LineOfSight.LineOfSightController");let X=class extends(i.EventedMixin(o)){constructor(e){super(e),this.updateOnCameraChange=!0,this._effectiveObserverElevationMode="absolute-height",this._observerFeatureId=null,this._updatingHandles=new E,this._frameTask=W,this._handles=new n,this._computationHandles=new n,this._externalObserverUpdate=!0}initialize(){const e=this.view.resourceController?.scheduler;this._frameTask=e?e.registerTask(J.LINE_OF_SIGHT_TOOL):W,this._intersector=new M({view:this.view}),this._handles.add([this._connectObserver(),this._connectComputations(),this._connectTargets()])}destroy(){this._handles.destroy(),this._computationHandles.destroy(),this._computations.removeAll(),this._updatingHandles.destroy()}get updating(){return this._frameTask.updating||this._updatingHandles.updating}get priority(){return this._frameTask.priority}set priority(e){this._frameTask.priority=e}get _computations(){return this.analysisViewData.computations}get _elevationAlignedObserverPositionRenderSpace(){return this.analysisViewData.observerEngineLocation}set _elevationAlignedObserverPositionRenderSpace(e){this.analysisViewData.observerEngineLocation=e}get _screenPixelSize(){return this.view.state.camera.computeScreenPixelSizeAt(this._elevationAlignedObserverPositionRenderSpace)}getLineOfSightComputationDependencies(e){const{inputPoints:t}=e;return{inputPoints:t}}_computeResult(e){const t=e.computation,{inputPoints:o,computationResult:i}=t,{observerAdjusted:n,targetAdjusted:r}=o,{start:s,end:a}=i;I(s,n),I(a,r);this._canCompute(t)?this._computeIntersection(e):this._interpolateIntersection(e),t.notifyResultChanged(),this.emit("result-changed",{target:e.computation.target,result:t.result})}_updatePointsFromFeatures(e){const o=this.view,{sceneIntersectionHelper:i}=o,{inputPoints:n}=e,{observer:r,target:s,observerFeatureId:a,targetFeatureId:c}=n;if(l(a)&&l(c))return;const u=T(r,s),d=this._intersector.intersector,h=D(n.observer,n.target,ee);d.options.store=Z.ALL,i.intersectToolIntersectorRay(h,d);let g=null,v=null,m=null,f=null;for(const _ of d.results.all){const e=q(_,this.view);if(l(e)||l(_.distanceInRenderSpace))continue;const i=t(e);if(!l(i)){if(p(a)&&i===a){if(l(g)){const e=B(_,o);g=p(e)?e*oe:0}_.distanceInRenderSpace<g&&(m=_)}if(p(c)&&i===c){if(l(v)){const e=B(_,o);v=p(e)?e*oe:0}_.distanceInRenderSpace<u&&u-_.distanceInRenderSpace<v&&(f=_)}}}p(m)&&m.getIntersectionPoint(r)&&(n.observerSurfaceNormal=m.getTransformedNormal(A())),p(f)&&f.getIntersectionPoint(s)&&(n.targetSurfaceNormal=f.getTransformedNormal(A()))}_adjustStartEndPositions(e){this._updatePointsFromFeatures(e);const t=this._screenPixelSize,o=this.view,{inputPoints:i}=e,{observer:n,observerSurfaceNormal:r,target:s,targetSurfaceNormal:a,observerAdjusted:c,targetAdjusted:l}=i,u=$;p(r)?I(u,r):O(u,s,n);const d=t;P(u,u),S(u,u,Math.min(d,1)),w(c,n,u),p(a)?I(u,a):O(u,n,s);const h=o.state.camera.computeScreenPixelSizeAt(s);P(u,u),S(u,u,Math.min(h,1)),w(l,s,u)}_computeIntersection({computation:e,interpolationInfo:t}){const{view:o}=this,{sceneIntersectionHelper:i,renderCoordsHelper:n}=o;if(l(i))return;const r=this._intersector.intersector,{computationResult:s,inputPoints:a}=e,{observer:c,target:u}=a,{start:d,end:h}=s,g=D(d,h,ee);r.options.store=Z.MIN,i.intersectToolIntersectorRay(g,r);const v=r.results.min,m=s.intersection,f=$;let _=!0;if(p(v)&&v.getIntersectionPoint(m)){I(t.originalIntersection,m),I(t.originalObserver,d),I(t.originalTarget,h),n.fromRenderCoords(m,f,o.spatialReference);const e=1-R(h,u)/R(d,u);_=R(c,m)>=e*R(c,u)}const b=new K(f,o.spatialReference);{const{result:t,target:i}=e;p(t)?(t.target=i,t.intersectedGraphic=_?null:q(v,o),t.intersectedLocation=_?null:b,t.visible=_):e.result=new z({target:i,elevationAlignedTargetLocation:e.elevationAlignedTargetLocation,intersectedGraphic:_?null:q(v,o),intersectedLocation:_?null:b,visible:_})}s.isValid=a.isValid=!0,s.isTargetVisible=_}_interpolateIntersection({computation:e,interpolationInfo:t}){const{computationResult:o,inputPoints:i}=e,{start:n,end:r,intersection:s}=o,{originalIntersection:a,originalObserver:c,originalTarget:l}=t;if(I(s,a),i.isValid){const e=$,t=R(c,a)/R(c,l);j(e,n,c),S(e,e,1-t),w(s,s,e),j(e,r,l),S(e,e,t),w(s,s,e),o.isValid=!0}else e.result=null,o.isValid=!1,o.isTargetVisible=!1}_canCompute(e){const t=this.analysisViewData.elevationAlignedObserver,o=this.view.frustum;if(l(t)||l(e.elevationAlignedTargetLocation)||l(o))return!1;const{observerAdjusted:i,targetAdjusted:n}=e.inputPoints,r=o.intersectsPoint(i),s=o.intersectsPoint(n);return r&&s}_onObserverPositionChange(e,o,i,n,r){if(this._externalObserverUpdate=r,l(e))return this.analysisViewData.elevationAlignedObserver=null,void(this._observerFeatureId=null);if(l(o))return U(this.analysis,e.spatialReference,Q),void(this.analysisViewData.elevationAlignedObserver=null);const s=this._getEffectiveElevationInfo(o,i),{absoluteZ:a,elevation:c}=k(o.x,o.y,o.z,this.view.spatialReference,this.view,s),p=o.clone();p.z=a,this._effectiveObserverElevationMode=s.mode,this.analysisViewData.elevationAlignedObserver=p;const u=A();this.view.renderCoordsHelper.toRenderCoords(p,u),this._elevationAlignedObserverPositionRenderSpace=u,this._observerGroundOffsetRenderSpace=a-c,this._observerFeatureId=t(n),this.priority=J.LINE_OF_SIGHT_TOOL_INTERACTIVE}_onObserverRenderSpacePositionChangeForComputation(e,t,o,i,n){const{inputPoints:r}=e;switch(I(r.observer,t),i){case"on-the-ground":case"relative-to-ground":r.observerSurfaceNormal=this._intersector.updateFromGroundIntersection(r.observer,o,r.observer);break;case"relative-to-scene":case"absolute-height":r.observerSurfaceNormal=null}r.observerFeatureId=n,this._adjustStartEndPositions(e),e.notifyInputPointsChanged(),this.priority=J.LINE_OF_SIGHT_TOOL_INTERACTIVE}_onTargetPositionChange(e,o,i,n,r,s=!0){const a=e.inputPoints;if(s&&(a.isValid=!1),l(i))return p(o)&&U(this.analysis,o.spatialReference,Q),e.elevationAlignedTargetLocation=null,void e.notifyInputPointsChanged();const c=this._getEffectiveElevationInfo(i,n),{absoluteZ:u,elevation:d}=k(i.x,i.y,i.z,this.view.spatialReference,this.view,c),h=i.clone();switch(h.z=u,e.elevationAlignedTargetLocation=h,this.view.renderCoordsHelper.toRenderCoords(e.elevationAlignedTargetLocation,a.target),c.mode){case"on-the-ground":case"relative-to-ground":a.targetSurfaceNormal=this._intersector.updateFromGroundIntersection(a.target,u-d,a.target);break;case"relative-to-scene":case"absolute-height":a.targetSurfaceNormal=null}a.targetFeatureId=t(r),this._adjustStartEndPositions(e),e.notifyInputPointsChanged(),this.priority=J.LINE_OF_SIGHT_TOOL_INTERACTIVE}_connectComputationToTarget(e){return r([m((()=>({computation:e,targetPosition:e.target.position,targetElevationInfo:e.target.elevationInfo,targetFeatureInfo:e.target.feature,projectedTargetPosition:L(e.target.position,this.view.spatialReference)})),(({computation:e,targetPosition:t,targetElevationInfo:o,targetFeatureInfo:i,projectedTargetPosition:n})=>{p(n.pending)?this._updatingHandles.addPromise(n.pending):this._onTargetPositionChange(e,t,n.geometry,o,i)}),_)])}_connectComputationToObserver(e){return m((()=>({computation:e,observer:this.analysisViewData.elevationAlignedObserver})),(({computation:e})=>{this._externalObserverUpdate&&(e.inputPoints.isValid=!1,e.notifyInputPointsChanged())}),_)}_connectComputationToRenderSpaceObserver(e){return m((()=>({computation:e,observer:this._elevationAlignedObserverPositionRenderSpace,observerGroundOffset:this._observerGroundOffsetRenderSpace,observerElevationMode:this._effectiveObserverElevationMode,observerFeatureId:this._observerFeatureId})),(({computation:e,observer:t,observerGroundOffset:o,observerElevationMode:i,observerFeatureId:n})=>{this._onObserverRenderSpacePositionChangeForComputation(e,t,o,i,n)}),_)}_connectComputationToCamera(e){return m((()=>({camera:this.view.state.camera,isDirty:this._isCameraDirty})),(({isDirty:t})=>{!this.updateOnCameraChange||e.inputPoints.isValid&&!t||e.notifyInputPointsChanged()}),b)}_connectComputationToSlicePlane(e){return m((()=>this.view.slicePlane),(()=>{e.inputPoints.isValid=!1,e.notifyInputPointsChanged()}))}_connectComputationToElevation(e){const t=(o,i)=>{const n=this.analysis.observer,r=e.target;let s=null,a=null,c=null,u=null,d=null,h=null;if(p(n)&&p(n.position)){const e=L(n.position,this.view.spatialReference);if(p(e.pending))return this._updatingHandles.addPromise(e.pending),void e.pending.finally((()=>t(o,i)));s=e.geometry,a=n.elevationInfo,c=n.feature}if(p(r.position)){const e=L(r.position,this.view.spatialReference);if(p(e.pending))return this._updatingHandles.addPromise(e.pending),void e.pending.finally((()=>t(o,i)));u=e.geometry,d=r.elevationInfo,h=r.feature}l(s)&&l(u)||(F(o,i,te,this.view.spatialReference),p(s)&&H(te,s)&&this._onObserverPositionChange(p(n)?n.position:null,s,a,c,!1),p(u)&&H(te,u)&&this._onTargetPositionChange(e,r.position,u,d,h,!1),p(s)&&p(u)&&x(te,s,u)&&e.notifyInputPointsChanged())};return this.view.elevationProvider.on("elevation-change",(e=>t(e.extent,e.spatialReference)))}_connectComputationToTask(e){let t=h;const o={computation:e,interpolationInfo:{originalIntersection:A(),originalObserver:A(),originalTarget:A()}};return r([m((()=>this.getLineOfSightComputationDependencies(e)),(()=>{t=u(t),t=g((async e=>{await v(this._frameTask.schedule((()=>this._computeResult(o)),e))}))}),{sync:!0,initial:!0,equals:a}),s((()=>t=u(t)))])}_connectComputation(e){const t=this._computationHandles;t.has(e)||t.add([this._connectComputationToTarget(e),this._connectComputationToObserver(e),this._connectComputationToRenderSpaceObserver(e),this._connectComputationToCamera(e),this._connectComputationToSlicePlane(e),this._connectComputationToElevation(e),this._connectComputationToTask(e)],e)}_disconnectComputation(e){this._computationHandles.remove(e)}_onComputationCollectionChange({added:e,removed:t}){for(const o of t)this._disconnectComputation(o);for(const o of e)this._connectComputation(o)}_onTargetCollectionChange({added:e,removed:t}){for(const o of t)this._removeTarget(o);for(const o of e)this._addTarget(o)}_onCursorTargetChange(e,t){p(t)&&this._removeTarget(t),p(e)&&this._addTarget(e)}_addTarget(e){this._computations.some((t=>t.target===e))||this._computations.add(new G({target:e}))}_removeTarget(e){const t=this._computations.findIndex((t=>t.target===e));this._computations.removeAt(t)}_connectObserver(){return r([m((()=>({observerPosition:p(this.analysis.observer)?this.analysis.observer.position:null,projectedObserverPosition:L(p(this.analysis.observer)?this.analysis.observer.position:null,this.view.spatialReference),observerElevationInfo:p(this.analysis.observer)?this.analysis.observer.elevationInfo:null,observerFeatureInfo:p(this.analysis.observer)?this.analysis.observer.feature:null})),(({observerPosition:e,projectedObserverPosition:t,observerElevationInfo:o,observerFeatureInfo:i})=>{p(t.pending)?this._updatingHandles.addPromise(t.pending):this._onObserverPositionChange(e,t.geometry,o,i,!0)}),_)])}_connectComputations(){return f((()=>this._computations),"change",(e=>this._onComputationCollectionChange(e)),{onListenerAdd:e=>{for(const t of e)this._connectComputation(t)},onListenerRemove:e=>{for(const t of e)this._disconnectComputation(t)},sync:!0})}_connectTargets(){return r([this._updatingHandles.addOnCollectionChange((()=>this.analysis.targets),(e=>this._onTargetCollectionChange(e)),{initial:!0,final:!0}),m((()=>this.analysisViewData.cursorTarget),((e,t)=>{this._onCursorTargetChange(e,t)}))])}get _isCameraDirty(){const e=this.analysisViewData.elevationAlignedObserver,{view:t}=this,{renderCoordsHelper:o}=t;if(l(e)||l(o))return!1;const i=$;o.toRenderCoords(e,i);const n=t.state.camera.computeScreenPixelSizeAt(i);return Math.abs((n-this._screenPixelSize)/this._screenPixelSize)>Y}_getEffectiveElevationInfo(e,t){return e.hasZ?d(t,{mode:"absolute-height",offset:0}):{mode:"on-the-ground",offset:0}}};e([y({constructOnly:!0})],X.prototype,"analysis",void 0),e([y({constructOnly:!0})],X.prototype,"analysisViewData",void 0),e([y({constructOnly:!0})],X.prototype,"view",void 0),e([y()],X.prototype,"updating",null),e([y()],X.prototype,"priority",null),e([y()],X.prototype,"updateOnCameraChange",void 0),e([y()],X.prototype,"_computations",null),e([y()],X.prototype,"_elevationAlignedObserverPositionRenderSpace",null),e([y()],X.prototype,"_observerGroundOffsetRenderSpace",void 0),e([y()],X.prototype,"_effectiveObserverElevationMode",void 0),e([y()],X.prototype,"_observerFeatureId",void 0),e([y()],X.prototype,"_screenPixelSize",null),e([y({readOnly:!0})],X.prototype,"_updatingHandles",void 0),e([y()],X.prototype,"_frameTask",void 0),e([y()],X.prototype,"_isCameraDirty",null),X=e([C("esri.views.3d.analysis.LineOfSight.LineOfSightController")],X);const Y=.1,$=A(),ee=N(),te=V(),oe=.05;export{X as LineOfSightController};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../../chunks/tslib.es6.js";import
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import r from"../../../../core/Accessor.js";import{isNone as t,isSome as s}from"../../../../core/maybe.js";import{screenPointObjectToArray as o}from"../../../../core/screenUtils.js";import{property as i}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as n}from"../../../../core/accessorSupport/decorators/subclass.js";import{c,n as a,g as p,a as l}from"../../../../chunks/vec3.js";import{d as m,a as d,c as u}from"../../../../chunks/vec3f64.js";import{create as h,copy as f,fromPoints as y}from"../../../../geometry/support/ray.js";import{sv2d as g}from"../../../../geometry/support/vectorStacks.js";import{getObjectId as I}from"../../../../layers/graphics/dehydratedFeatures.js";import{LineOfSightIntersectionResult as j}from"./LineOfSightIntersectionResult.js";import{isI3sIntersectorResult as w}from"../../layers/i3s/Intersector.js";import{fromScreen as v}from"../../support/geometryUtils/ray.js";import{isTerrainIntersectorResult as b}from"../../terrain/Intersector.js";import{newIntersector as R}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as C,IntersectorType as S}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{toGraphic as U}from"../../webgl-engine/lib/intersectorUtilsConversions.js";let O=class extends r{constructor(e){super(e),this._terrainIntersectionOptionsLayerUids=new Set(["terrain"])}initialize(){this.intersector=R(this.view.state.viewingMode),this.intersector.options.hud=!1,this.intersector.options.store=C.MIN}getScreenPointIntersection(e){const r=o(e,g.get()),t=v(this.view.state.camera,r,M);return this._getRayIntersection(t)}_getRayIntersection(e,r){if(t(e)||t(this.view.sceneIntersectionHelper))return null;this.intersector.options.store=C.MIN,this.view.sceneIntersectionHelper.intersectToolIntersectorRay(e,this.intersector,r);const o=this.intersector.results.min;if(!o.getIntersectionPoint(H))return null;const i=this.view.renderCoordsHelper.fromRenderCoords(H,this.view.spatialReference),n=m(o.normal);if(w(o))return new j({type:S.OBJECT,id:`${o.target.layerUid}/${o.target.nodeIndex}/${o.target.componentIndex}`,point:i,normal:n,ray:f(e),graphic:null});if(b(o))return new j({type:S.TERRAIN,id:o.target.lij.slice(),point:i,normal:n,ray:f(e),graphic:null});const c=U(o,this.view);if(s(c)){const r=c.layer,t=c.sourceLayer;let s;if(t)if("scene"===t.type)s=I(c,t.objectIdField);else s=c.uid;else s=c.uid;return new j({type:S.OBJECT,id:`${r.uid}/${s}`,point:i,normal:n,ray:f(e),graphic:c})}return null}updateFromGroundIntersection(e,r,t){const o=H,i=L,n=T,m=_,u=x;c(i,e),this.view.renderCoordsHelper.worldUpAtPosition(i,n),a(n,n);const h=this.view.basemapTerrain.elevationBounds,f=this.view.renderCoordsHelper.getAltitude(i),g=h?Math.abs(h.max-h.min):100,I=f>0?1:-1;p(m,n,I*(g+Math.abs(r))),l(o,i,m),y(o,i,M);const j=this._getRayIntersection(M,{include:this._terrainIntersectionOptionsLayerUids});return s(j)&&s(j.point)?(this.view.renderCoordsHelper.toRenderCoords(j.point,u),p(m,n,I*r),l(t,u,m),d(j.normal)):(c(t,e),null)}};e([i()],O.prototype,"view",void 0),e([i()],O.prototype,"intersector",void 0),O=e([n("esri.views.3d.analysis.LineOfSight.LineOfSightRayIntersector")],O);const H=u(),L=u(),T=u(),_=u(),x=u(),M=h();export{O as LineOfSightRayIntersector};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Accessor.js";import r from"../../../core/Handles.js";import{watch as o,initial as n}from"../../../core/reactiveUtils.js";import{property as i}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as a}from"../../../core/accessorSupport/decorators/subclass.js";import{DoubleClickZoom as s}from"./handlers/DoubleClickZoom.js";import{DragRotate as p}from"./handlers/DragRotate.js";import{DragZoom as m}from"./handlers/DragZoom.js";import{GamepadNavigation as d}from"./handlers/GamepadNavigation.js";import{KeyboardNavigation as l}from"./handlers/KeyboardNavigation.js";import{MouseWheelZoom as c}from"./handlers/MouseWheelZoom.js";import{PinchAndPanNavigation as g}from"./handlers/PinchAndPanNavigation.js";import{PointerDownCancelAnimation as h}from"./handlers/PointerDownCancelAnimation.js";import{SingleKeyResetHeading as u}from"./handlers/SingleKeyResetHeading.js";import{SingleKeyResetTilt as w}from"./handlers/SingleKeyResetTilt.js";import{TwoFingerTilt as _}from"./handlers/TwoFingerTilt.js";import{BrowserEventSource as y}from"../../input/BrowserEventSource.js";import{InputManager as D,ViewEventPriorities as f}from"../../input/InputManager.js";import{PreventContextMenu as j}from"../../input/handlers/PreventContextMenu.js";import{Drag as v}from"../../input/recognizers/Drag.js";import{ImmediateDoubleClick as A}from"../../input/recognizers/ImmediateDoubleClick.js";import{PointerClickHoldAndDrag as
|
|
5
|
+
import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Accessor.js";import r from"../../../core/Handles.js";import{watch as o,initial as n}from"../../../core/reactiveUtils.js";import{property as i}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as a}from"../../../core/accessorSupport/decorators/subclass.js";import{DoubleClickZoom as s}from"./handlers/DoubleClickZoom.js";import{DragRotate as p}from"./handlers/DragRotate.js";import{DragZoom as m}from"./handlers/DragZoom.js";import{GamepadNavigation as d}from"./handlers/GamepadNavigation.js";import{KeyboardNavigation as l}from"./handlers/KeyboardNavigation.js";import{MouseWheelZoom as c}from"./handlers/MouseWheelZoom.js";import{PinchAndPanNavigation as g}from"./handlers/PinchAndPanNavigation.js";import{PointerDownCancelAnimation as h}from"./handlers/PointerDownCancelAnimation.js";import{SingleKeyResetHeading as u}from"./handlers/SingleKeyResetHeading.js";import{SingleKeyResetTilt as w}from"./handlers/SingleKeyResetTilt.js";import{TwoFingerTilt as _}from"./handlers/TwoFingerTilt.js";import{BrowserEventSource as y}from"../../input/BrowserEventSource.js";import{InputManager as D,ViewEventPriorities as f}from"../../input/InputManager.js";import{PreventContextMenu as j}from"../../input/handlers/PreventContextMenu.js";import{Drag as v}from"../../input/recognizers/Drag.js";import{ImmediateDoubleClick as A}from"../../input/recognizers/ImmediateDoubleClick.js";import{PointerClickHoldAndDrag as M}from"../../input/recognizers/PointerClickHoldAndDrag.js";import{SingleAndDoubleClick as P}from"../../input/recognizers/SingleAndDoubleClick.js";import{VerticalTwoFingerDrag as R}from"../../input/recognizers/VerticalTwoFingerDrag.js";import{PivotPoint as T}from"../state/controllers/RotateController.js";let z=class extends t{constructor(){super(...arguments),this._handles=new r}destroy(){this._handles&&(this._handles.removeAll(),this._handles=null),this.disconnect()}get primaryDragAction(){return this._get("primaryDragAction")}set primaryDragAction(e){"pan"!==e&&"rotate"!==e||e===this._get("primaryDragAction")||(this._set("primaryDragAction",e),this._updateMode())}get mode(){return this._get("mode")}set mode(e){"default"!==e&&"pro"!==e||e===this._get("mode")||(this._set("mode",e),this._updateMode())}get hasPendingInputs(){return this._inputManager?.hasPendingInputs}get latestPointerType(){return null===this._inputManager?null:this._inputManager.latestPointerType}get latestPointerLocation(){return this._inputManager.latestPointerLocation}disconnect(){this.view.viewEvents.disconnect(),this._inputManager&&(this._inputManager.destroy(),this._inputManager=null),this._source&&(this._source.destroy(),this._source=null)}connect(){const e=this.view;this._source=new y(this.view.surface,e.input);const t=[new A,new M,new P,new v(this.view.navigation),new R],r=new D({eventSource:this._source,recognizers:t});this._inputManager=r,r.installHandlers("prevent-context-menu",[new j],f.INTERNAL),this._modeDragPan=new g(e,"primary"),this._modeDragRotate=new p(e,"secondary",T.CENTER),this._modeDragZoom=new m(e,"tertiary");const i={lookAround:"b",pan:{left:"ArrowLeft",right:"ArrowRight",forward:"ArrowUp",backward:"ArrowDown",up:"u",down:"j",headingLeft:"a",headingRight:"d",tiltUp:"w",tiltDown:"s",zoomIn:"+",zoomOut:"-"},resetHeading:"n",resetTilt:"p"};r.installHandlers("navigation",[new h(e),new s(e),new d(e),new l(e,i.pan),new c(e),new w(e,i.resetTilt),new u(e,i.resetHeading),new p(e,"primary",T.EYE,[i.lookAround]),new p(e,"secondary",T.CENTER,[i.lookAround]),new g(e,"tertiary",[i.lookAround]),this._modeDragRotate,this._modeDragZoom,this._modeDragPan,new _(e)],f.INTERNAL),this.view.viewEvents.connect(r),this._updateMode(),this._handles.add(o((()=>this.view.navigation?.browserTouchPanEnabled),(e=>{this._source.browserTouchPanningEnabled=!e}),n))}_updateMode(){const e=this.mode,t=this.primaryDragAction,r=E.get(e).get(t);this._modeDragPan&&(this._modeDragPan.pointerAction=r.pan),this._modeDragRotate&&(this._modeDragRotate.pointerAction=r.rotate),this._modeDragZoom&&(this._modeDragZoom.pointerAction=r.zoom)}get test(){return{inputManager:this._inputManager,modeDragPan:this._modeDragPan,modeDragRotate:this._modeDragRotate,modeDragZoom:this._modeDragZoom}}};e([i()],z.prototype,"view",void 0),e([i({value:"pan"})],z.prototype,"primaryDragAction",null),e([i({value:"default"})],z.prototype,"mode",null),e([i({readOnly:!0})],z.prototype,"hasPendingInputs",null),e([i()],z.prototype,"latestPointerType",null),e([i()],z.prototype,"latestPointerLocation",null),e([i()],z.prototype,"_inputManager",void 0),z=e([a("esri.views.3d.input.SceneInputManager")],z);const E=new Map,b=new Map,k=new Map;b.set("pan",{pan:"primary",rotate:"secondary",zoom:"tertiary"}),b.set("rotate",{pan:"secondary",rotate:"primary",zoom:"tertiary"}),k.set("pan",{pan:"primary",rotate:"tertiary",zoom:"secondary"}),k.set("rotate",{pan:"tertiary",rotate:"primary",zoom:"secondary"}),E.set("default",b),E.set("pro",k);const C=z;export{C as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../../../chunks/tslib.es6.js";import{handlesGroup as t,makeHandle as i}from"../../../../../core/handleUtils.js";import{isSome as s,destroyMaybe as r,applySome as a}from"../../../../../core/maybe.js";import{watch as n,initial as o}from"../../../../../core/reactiveUtils.js";import{property as l}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import"../../../../../core/accessorSupport/ensureType.js";import{subclass as p}from"../../../../../core/accessorSupport/decorators/subclass.js";import{getEffectiveElevationMode as c}from"../../../../../support/elevationInfoUtils.js";import h from"../../../../../symbols/support/ElevationInfo.js";import{SegmentLabels3D as u}from"../../SegmentLabels3D.js";import{SnappingVisualizer3D as m}from"../../SnappingVisualizer3D.js";import{settings as v}from"../settings.js";import{OutlineVisualElement as d}from"../../visualElements/OutlineVisualElement.js";import{VerticesVisualElement as f}from"../../visualElements/VerticesVisualElement.js";import{GraphicState as w}from"../../../layers/graphics/GraphicState.js";import{DrawGraphicTool as V,geometryTypeToDrawOperationGeometryType as y}from"../../../../draw/DrawGraphicTool.js";import{DrawOperation as E}from"../../../../draw/DrawOperation.js";import{SceneDrawSurface as _,ElevationDrawSurface as g}from"../../../../draw/drawSurfaces.js";import O from"../../../../interactive/sketch/SketchLabelOptions.js";import j from"../../../../interactive/sketch/SketchTooltipOptions.js";let S=class extends V{constructor(e){super(e),this._activeVertexVisualElement=null,this._createGraphicState=null,this._outlineVisualElement=null,this._verticesVisualElement=null,this.geometryType=null,this.labelOptions=new O,this.tooltipOptions=new j,this.type="draw-3d"}initialize(){const{mode:e,offset:t}=this.elevationInfo;this.internalGraphicsLayer.elevationInfo=new h({mode:e,offset:t})}normalizeCtorArgs(e){if(!e.elevationInfo){const t=e.hasZ??!0;return{...e,elevationInfo:{mode:t?"absolute-height":"on-the-ground",offset:0}}}return e}initializeGraphic(e){const i=this._createGraphicState=new w({graphic:e});return t([this.view.maskOccludee(e),this.view.trackGraphicState(i),n((()=>({element:this._outlineVisualElement,isDraped:i.isDraped})),(({element:e,isDraped:t})=>{a(e,(e=>e.isDraped=t))}),o)])}makeDrawOperation(){return new E({view:this.view,manipulators:this.manipulators,geometryType:y(
|
|
5
|
+
import{_ as e}from"../../../../../chunks/tslib.es6.js";import{handlesGroup as t,makeHandle as i}from"../../../../../core/handleUtils.js";import{isSome as s,destroyMaybe as r,applySome as a}from"../../../../../core/maybe.js";import{watch as n,initial as o}from"../../../../../core/reactiveUtils.js";import{property as l}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import"../../../../../core/accessorSupport/ensureType.js";import{subclass as p}from"../../../../../core/accessorSupport/decorators/subclass.js";import{getEffectiveElevationMode as c}from"../../../../../support/elevationInfoUtils.js";import h from"../../../../../symbols/support/ElevationInfo.js";import{SegmentLabels3D as u}from"../../SegmentLabels3D.js";import{SnappingVisualizer3D as m}from"../../SnappingVisualizer3D.js";import{settings as v}from"../settings.js";import{OutlineVisualElement as d}from"../../visualElements/OutlineVisualElement.js";import{VerticesVisualElement as f}from"../../visualElements/VerticesVisualElement.js";import{GraphicState as w}from"../../../layers/graphics/GraphicState.js";import{DrawGraphicTool as V,geometryTypeToDrawOperationGeometryType as y}from"../../../../draw/DrawGraphicTool.js";import{DrawOperation as E}from"../../../../draw/DrawOperation.js";import{SceneDrawSurface as _,ElevationDrawSurface as g}from"../../../../draw/drawSurfaces.js";import O from"../../../../interactive/sketch/SketchLabelOptions.js";import j from"../../../../interactive/sketch/SketchTooltipOptions.js";let S=class extends V{constructor(e){super(e),this._activeVertexVisualElement=null,this._createGraphicState=null,this._outlineVisualElement=null,this._verticesVisualElement=null,this.geometryType=null,this.labelOptions=new O,this.tooltipOptions=new j,this.type="draw-3d"}initialize(){const{mode:e,offset:t}=this.elevationInfo;this.internalGraphicsLayer.elevationInfo=new h({mode:e,offset:t})}normalizeCtorArgs(e){if(!e.elevationInfo){const t=e.hasZ??!0;return{...e,elevationInfo:{mode:t?"absolute-height":"on-the-ground",offset:0}}}return e}initializeGraphic(e){const i=this._createGraphicState=new w({graphic:e});return t([this.view.maskOccludee(e),this.view.trackGraphicState(i),n((()=>({element:this._outlineVisualElement,isDraped:i.isDraped})),(({element:e,isDraped:t})=>{a(e,(e=>e.isDraped=t))}),o)])}makeDrawOperation(){const{geometryType:e}=this,t="circle"!==e&&"rectangle"!==e;return new E({view:this.view,manipulators:this.manipulators,geometryType:y(e),drawingMode:this.mode,hasZ:this.hasZ,defaultZ:this.defaultZ,snapToSceneEnabled:this.snapToScene,drawSurface:new _(this.view,this.elevationInfo,[this.internalGraphicsLayer]),elevationDrawSurface:new g(this.elevationInfo,this.defaultZ,this.view,this.internalGraphicsLayer),hasM:!1,elevationInfo:this.elevationInfo,snappingManager:this.snappingManager,snappingVisualizer:new m,segmentLabels:t?new u:null,labelOptions:this.labelOptions,tooltipOptions:this.tooltipOptions})}onActiveVertexChanged(e){return s(this._activeVertexVisualElement)?(this._activeVertexVisualElement.vertices=[e],null):(this._activeVertexVisualElement=new f({view:this.view,spatialReference:this.view.spatialReference,vertices:[e],elevationInfo:this.internalGraphicsLayer.elevationInfo,renderOccluded:v.reshapeManipulators.vertex.renderOccluded,attached:!1}),this._activeVertexVisualElement.color=v.colorToVec4(v.reshapeManipulators.selected.color),this._activeVertexVisualElement.attached=!0,i((()=>{this._activeVertexVisualElement=r(this._activeVertexVisualElement)})))}onOutlineChanged(e){if(s(this._outlineVisualElement))return this._outlineVisualElement.geometry=e,null;const t=this.internalGraphicsLayer.elevationInfo;return this._outlineVisualElement=new d({view:this.view,geometry:e,elevationInfo:t,isDraped:s(this._createGraphicState)?this._createGraphicState.isDraped:"on-the-ground"===c(this.hasZ,t),attached:!1}),v.visualElements.lineGraphics.outline.apply(this._outlineVisualElement),v.visualElements.lineGraphics.shadowStyle.apply(this._outlineVisualElement),this._outlineVisualElement.attached=!0,this._outlineVisualElement.laserlineEnabled=!0,i((()=>{this._outlineVisualElement=r(this._outlineVisualElement)}))}onRegularVerticesChanged(e){return s(this._verticesVisualElement)?(this._verticesVisualElement.vertices=e,null):(this._verticesVisualElement=new f({view:this.view,spatialReference:this.view.spatialReference,vertices:e,elevationInfo:this.internalGraphicsLayer.elevationInfo,renderOccluded:v.reshapeManipulators.vertex.renderOccluded,attached:!1}),this._verticesVisualElement.attached=!0,i((()=>{this._verticesVisualElement=r(this._verticesVisualElement)})))}};e([l({constructOnly:!0})],S.prototype,"elevationInfo",void 0),e([l({constructOnly:!0})],S.prototype,"geometryType",void 0),e([l({constructOnly:!0,type:O})],S.prototype,"labelOptions",void 0),e([l({constructOnly:!0,type:j})],S.prototype,"tooltipOptions",void 0),e([l()],S.prototype,"type",void 0),e([l({constructOnly:!0})],S.prototype,"view",void 0),S=e([p("esri.views.3d.interactive.editingTools.draw.DrawGraphicTool3D")],S);export{S as DrawGraphicTool3D};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as t}from"../../../../../chunks/tslib.es6.js";import i from"../../../../../core/Collection.js";import e from"../../../../../core/Evented.js";import{HandleOwnerMixin as o}from"../../../../../core/HandleOwner.js";import{makeHandle as n}from"../../../../../core/handleUtils.js";import{destroyMaybe as a,isNone as s,unwrap as r,isSome as p}from"../../../../../core/maybe.js";import{watch as l,initial as h}from"../../../../../core/reactiveUtils.js";import{property as c}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import"../../../../../core/accessorSupport/ensureType.js";import{subclass as m}from"../../../../../core/accessorSupport/decorators/subclass.js";import{makeDehydratedPoint as u}from"../../../../../layers/graphics/dehydratedFeatures.js";import{getGraphicEffectiveElevationInfo as d,getConvertedElevation as g}from"../../../../../support/elevationInfoUtils.js";import{getGraphicAttachmentOrigin as v}from"../../manipulatorUtils.js";import{SnappingVisualizer3D as f}from"../../SnappingVisualizer3D.js";import{SupportedGraphicResult as y}from"../isSupportedGraphicUtils.js";import{ManipulatorType as M}from"../ManipulatorType.js";import{canMoveZ as _}from"../manipulatorUtils.js";import{createVisualElements as w}from"../visualElementUtils.js";import{DISC_RADIUS as j}from"../manipulations/config.js";import{ManipulationType as b,MoveManipulation as S}from"../manipulations/MoveManipulation.js";import{shapeOrientation as x}from"../manipulations/moveUtils.js";import{MoveXYGraphicManipulation as E}from"../manipulations/MoveXYGraphicManipulation.js";import{isSupportedGraphic as O}from"./isSupportedGraphic.js";import{OutlineVisualElement as T}from"../../visualElements/OutlineVisualElement.js";import{GraphicState as A}from"../../../layers/graphics/GraphicState.js";import{dragGraphicMany as P,resetGraphicMany as X}from"../../../../interactive/dragEventPipeline.js";import{InteractiveToolBase as D}from"../../../../interactive/InteractiveToolBase.js";import{EditGeometryOperations as Y}from"../../../../interactive/editGeometry/EditGeometryOperations.js";import G from"../../../../interactive/sketch/SketchTooltipOptions.js";import{SnappingContext as R}from"../../../../interactive/snapping/SnappingContext.js";import{SnappingPipeline as U}from"../../../../interactive/snapping/SnappingDragPipelineStep.js";import{Tooltip as z}from"../../../../interactive/tooltip/Tooltip.js";import{TranslateGraphicTooltipInfo as k,TranslateZTooltipInfo as I}from"../../../../interactive/tooltip/TranslateTooltipInfos.js";import{euclideanHorizontalDistanceBetweenPoints as Z,verticalSignedDistanceBetweenPoints as C}from"../../../../support/lengthMeasurementUtils.js";class H{constructor(t){this.allGraphics=t,this.type="graphic-move-start"}}class V{constructor(t,i,e){this.dx=t,this.dy=i,this.allGraphics=e,this.type="graphic-move"}}class N{constructor(t){this.allGraphics=t,this.type="graphic-move-stop"}}let F=class extends(o(e.EventedMixin(D))){constructor(t){super(t),this.graphics=new i,this.enableZ=!0,this.tooltipOptions=new G,this.type="move-3d",this._snappingPipeline=new U,this._tooltip=null}initialize(){const{graphics:t,view:i}=this;this._tooltip=new z({view:i}),this.own([t.on("change",(()=>this._refreshManipulators())),l((()=>this.tooltipOptions.enabled),(t=>{this._tooltip=t?new z({view:i}):a(this._tooltip)}),h)]),this._refreshManipulators(),this.finishToolCreation()}destroy(){this._tooltip=a(this._tooltip),this.graphics.removeAll(),this._set("view",null)}get updating(){return this.updatingHandles.updating}reset(){}_refreshManipulators(){this.handles.removeAll(),this._moveManipulation&&this._moveManipulation.destroy(),this.manipulators.removeAll();const t=this.graphics.toArray().filter((t=>O(t)===y.SUPPORTED)).map((t=>new L(t)));t.length&&(this._createManipulators(t),this._createVisualElements(t),this.handles.add(t.map((t=>this.view.trackGraphicState(t.state)))),this._updateMoveManipulation(t))}_createManipulators(t){for(const i of t){const e=i.state;i.manipulationXY=new E({tool:this,view:this.view,graphicState:e}),i.manipulationXY.forEachManipulator((t=>this.handles.add([t.events.on("immediate-click",(t=>{this.emit("immediate-click",{...t,graphic:e.graphic}),t.stopPropagation()})),t.events.on("grab-changed",(({action:t})=>{if(s(this._tooltip))return;const{tooltipOptions:i}=this;"focus"===t&&i.enabled?this._tooltip.info=new k({tooltipOptions:i}):this._tooltip.clear()}))]))),this.handles.add(i.manipulationXY.createDragPipeline(((i,e,o,n)=>this._buildDragEventPipeline(t,b.XY,i,e,o,n))))}this._createMoveManipulation(t)}_createMoveManipulation(t){const i=new S({tool:this,view:this.view,snapToScene:!1,xyAvailable:!0,xyAxisAvailable:!0,zAvailable:!0,radius:1===t.length?S.radiusForSymbol(t[0].graphic.symbol):j});this._moveManipulation=i,i.elevationInfo={mode:"absolute-height",offset:0},i.forEachManipulator(((t,e)=>{this.handles.add(t.events.on("immediate-click",(e=>{i.zManipulation.hasManipulator(t)||1!==this.graphics.length||this.emit("immediate-click",{...e,graphic:this.graphics.getItemAt(0)}),e.stopPropagation()}))),e===M.TRANSLATE_XY&&this.handles.add(t.events.on("focus-changed",(({action:t})=>{if(s(this._tooltip))return;const{tooltipOptions:i}=this;"focus"===t&&i.enabled?this._tooltip.info=new k({tooltipOptions:i}):this._tooltip.clear()}))),e===M.TRANSLATE_Z&&this.handles.add(t.events.on("focus-changed",(({action:t})=>{if(s(this._tooltip))return;const{tooltipOptions:i}=this;"focus"===t&&i.enabled?this._tooltip.info=new I({tooltipOptions:i}):this._tooltip.clear()})))}));const e=()=>this._updateMoveManipulation(t);for(const n of t)this.handles.add([n.state.on("changed",e),l((()=>n.state.displaying),e)]);const o=t[t.length-1];this.handles.add(o.state.on("changed",(()=>this._updateMoveManipulationAngle(o)))),this.handles.add(i.createDragPipeline(((i,e,o,n,a)=>this._buildDragEventPipeline(t,i,e,o,n,a)),d(o.graphic),r(o.graphic.geometry).spatialReference,o.graphic)),this._updateMoveManipulationAngle(o)}_createVisualElements(t){for(const i of t){const e=i.graphic,o=w({view:this.view,graphic:e,forEachManipulator:t=>{i.manipulationXY.forEachManipulator(t),this._moveManipulation.forEachManipulator(t)},onManipulatorsChanged:()=>n()});s(o)||(i.geometryRepresentation=o.visualElement,i.geometryRepresentation instanceof T&&this.handles.add([i.geometryRepresentation.events.on("attachment-origin-changed",(()=>{i.state.isDraped||this._updateMoveManipulation(t)})),l((()=>i.state.isDraped),(()=>this._updateMoveManipulation(t)))]),this.handles.add(o))}}_updateMoveManipulationAngle(t){this._moveManipulation.angleDeferred=()=>x(t.graphic.geometry)}_updateMoveManipulation(t){const i=u(0,0,0,this.view.spatialReference);let e=0,o=!1;const n=this._moveManipulation;for(const a of t){if(!a.state.displaying)continue;const t=a.state.graphic;this.enableZ&&_(t)&&(o=!0);const n=a.geometryRepresentation instanceof T&&!a.state.isDraped?a.geometryRepresentation.attachmentOrigin:v(this.view,t);p(n)&&(i.x+=n.x,i.y+=n.y,i.z+=n.z,e++)}e>0?(i.x/=e,i.y/=e,i.z/=e,n.location=i,n.xyManipulation.available=!0,n.xyAxisManipulation.available=!0,n.zManipulation.available=o):n.available=!1}_buildDragEventPipeline(t,i,e,o,n,a){const s=[],r=[];let p=null,l=null;const h=()=>{for(const t of s)t.dragging=!1;s.length=0,r.length=0,p=null,l=null,this._moveManipulation.interactive=!0};if(1===t.length&&i===b.XY){const i=t[0].graphic;o=this._buildSnappingPipelineSteps(i,d(i),o,n,a)}const c=o.next((i=>{if("start"===i.action){s.length=0,r.length=0;for(const i of t)i.dragging||!i.manipulationXY.hasManipulator(e)&&i.manipulationXY.grabbing||(s.push(i),r.push(i.graphic),i.dragging=!0);if(0!==r.length&&(this._moveManipulation.interactive=!1,p=P(r,this.view.state.viewingMode),l=X(r),this.emit("graphic-move-start",new H(r)),this.destroyed))return null}return 0!==r.length?i:null})).next((t=>p(t))).next((t=>this._updateMoveTooltip(t,i))).next((t=>{switch(t.action){case"start":case"update":if(t.translationX||t.translationY||t.translationZ){const i=this.view.toScreen(t.mapStart),e=this.view.toScreen(t.mapEnd),o=e.x-i.x,n=e.y-i.y;if(this.emit("graphic-move",new V(o,n,r)),this.destroyed)return null}break;case"end":if(this.emit("graphic-move-stop",new N(r)),this.destroyed)return null;h()}}));return n.next((t=>l(t))).next((()=>{if(this.emit("graphic-move-stop",new N(r)),this.destroyed)return null;h()})),c}_updateMoveTooltip(t,i){if(s(this._tooltip))return t;const{tooltipOptions:e}=this;if(!e.enabled)return this._tooltip.clear(),t;if(i===b.XY||i===b.XY_AXIS){const i=Z(t.mapStart,t.mapEnd);p(i)&&(this._tooltip.info=new k({tooltipOptions:e,distance:i}))}if(i===b.Z){const i=C(t.mapStart,t.mapEnd);p(i)&&(this._tooltip.info=new I({tooltipOptions:e,distance:i}))}return t}_buildSnappingPipelineSteps(t,i,e,o,n){const a=t.geometry;if(s(a)||"point"!==a.type&&"mesh"!==a.type)return e;const r=("point"===a.type?a:a.anchor).clone(),p=new R({elevationInfo:i,pointer:n,editGeometryOperations:Y.fromGeometry(r,this.view.state.viewingMode),visualizer:new f,excludeFeature:t}),l=this.snappingManager;return e.next((i=>{r.z=g(this.view,r,d(t),{mode:"absolute-height",offset:0});return{...i,snapOrigin:p.coordinateHelper.pointToVector(r)}})).next(this._snappingPipeline.createSnapDragEventPipelineStep({snappingContext:p,snappingManager:l,cancel:o,updatingHandles:this.updatingHandles}),this._snappingPipeline.next)}};t([c({constructOnly:!0,nonNullable:!0})],F.prototype,"view",void 0),t([c()],F.prototype,"graphics",void 0),t([c({constructOnly:!0,nonNullable:!0})],F.prototype,"enableZ",void 0),t([c({constructOnly:!0,type:G})],F.prototype,"tooltipOptions",void 0),t([c({constructOnly:!0})],F.prototype,"snappingManager",void 0),t([c()],F.prototype,"type",void 0),t([c()],F.prototype,"updating",null),F=t([m("esri.views.3d.interactive.editingTools.graphicMove3D.GraphicMoveTool")],F);class L{constructor(t){this.state=null,this.geometryRepresentation=null,this.manipulationXY=null,this.dragging=!1,this.state=new A({graphic:t})}get graphic(){return this.state.graphic}}export{V as GraphicMoveEvent,H as GraphicMoveStartEvent,N as GraphicMoveStopEvent,F as GraphicMoveTool};
|
|
5
|
+
import{_ as t}from"../../../../../chunks/tslib.es6.js";import i from"../../../../../core/Collection.js";import e from"../../../../../core/Evented.js";import{HandleOwnerMixin as o}from"../../../../../core/HandleOwner.js";import{makeHandle as n}from"../../../../../core/handleUtils.js";import{destroyMaybe as a,isNone as s,unwrap as r,isSome as p}from"../../../../../core/maybe.js";import{watch as l,initial as h}from"../../../../../core/reactiveUtils.js";import{property as c}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import"../../../../../core/accessorSupport/ensureType.js";import{subclass as m}from"../../../../../core/accessorSupport/decorators/subclass.js";import{makeDehydratedPoint as u}from"../../../../../layers/graphics/dehydratedFeatures.js";import{getGraphicEffectiveElevationInfo as d,getConvertedElevation as g}from"../../../../../support/elevationInfoUtils.js";import{getGraphicAttachmentOrigin as v}from"../../manipulatorUtils.js";import{SnappingVisualizer3D as f}from"../../SnappingVisualizer3D.js";import{SupportedGraphicResult as y}from"../isSupportedGraphicUtils.js";import{ManipulatorType as M}from"../ManipulatorType.js";import{canMoveZ as _}from"../manipulatorUtils.js";import{createVisualElements as w}from"../visualElementUtils.js";import{DISC_RADIUS as j}from"../manipulations/config.js";import{ManipulationType as b,MoveManipulation as S}from"../manipulations/MoveManipulation.js";import{shapeOrientation as x}from"../manipulations/moveUtils.js";import{MoveXYGraphicManipulation as E}from"../manipulations/MoveXYGraphicManipulation.js";import{isSupportedGraphic as O}from"./isSupportedGraphic.js";import{OutlineVisualElement as T}from"../../visualElements/OutlineVisualElement.js";import{GraphicState as A}from"../../../layers/graphics/GraphicState.js";import{dragGraphicMany as P,resetGraphicMany as X}from"../../../../interactive/dragEventPipeline.js";import{InteractiveToolBase as D}from"../../../../interactive/InteractiveToolBase.js";import{EditGeometryOperations as Y}from"../../../../interactive/editGeometry/EditGeometryOperations.js";import G from"../../../../interactive/sketch/SketchTooltipOptions.js";import{SnappingContext as R}from"../../../../interactive/snapping/SnappingContext.js";import{SnappingPipeline as U}from"../../../../interactive/snapping/SnappingDragPipelineStep.js";import{Tooltip as z}from"../../../../interactive/tooltip/Tooltip.js";import{TranslateGraphicTooltipInfo as k,TranslateZTooltipInfo as I}from"../../../../interactive/tooltip/TranslateTooltipInfos.js";import{euclideanHorizontalDistanceBetweenPoints as Z,verticalSignedDistanceBetweenPoints as C}from"../../../../support/euclideanLengthMeasurementUtils.js";class H{constructor(t){this.allGraphics=t,this.type="graphic-move-start"}}class V{constructor(t,i,e){this.dx=t,this.dy=i,this.allGraphics=e,this.type="graphic-move"}}class N{constructor(t){this.allGraphics=t,this.type="graphic-move-stop"}}let F=class extends(o(e.EventedMixin(D))){constructor(t){super(t),this.graphics=new i,this.enableZ=!0,this.tooltipOptions=new G,this.type="move-3d",this._snappingPipeline=new U,this._tooltip=null}initialize(){const{graphics:t,view:i}=this;this._tooltip=new z({view:i}),this.own([t.on("change",(()=>this._refreshManipulators())),l((()=>this.tooltipOptions.enabled),(t=>{this._tooltip=t?new z({view:i}):a(this._tooltip)}),h)]),this._refreshManipulators(),this.finishToolCreation()}destroy(){this._tooltip=a(this._tooltip),this.graphics.removeAll(),this._set("view",null)}get updating(){return this.updatingHandles.updating}reset(){}_refreshManipulators(){this.handles.removeAll(),this._moveManipulation&&this._moveManipulation.destroy(),this.manipulators.removeAll();const t=this.graphics.toArray().filter((t=>O(t)===y.SUPPORTED)).map((t=>new L(t)));t.length&&(this._createManipulators(t),this._createVisualElements(t),this.handles.add(t.map((t=>this.view.trackGraphicState(t.state)))),this._updateMoveManipulation(t))}_createManipulators(t){for(const i of t){const e=i.state;i.manipulationXY=new E({tool:this,view:this.view,graphicState:e}),i.manipulationXY.forEachManipulator((t=>this.handles.add([t.events.on("immediate-click",(t=>{this.emit("immediate-click",{...t,graphic:e.graphic}),t.stopPropagation()})),t.events.on("grab-changed",(({action:t})=>{if(s(this._tooltip))return;const{tooltipOptions:i}=this;"focus"===t&&i.enabled?this._tooltip.info=new k({tooltipOptions:i}):this._tooltip.clear()}))]))),this.handles.add(i.manipulationXY.createDragPipeline(((i,e,o,n)=>this._buildDragEventPipeline(t,b.XY,i,e,o,n))))}this._createMoveManipulation(t)}_createMoveManipulation(t){const i=new S({tool:this,view:this.view,snapToScene:!1,xyAvailable:!0,xyAxisAvailable:!0,zAvailable:!0,radius:1===t.length?S.radiusForSymbol(t[0].graphic.symbol):j});this._moveManipulation=i,i.elevationInfo={mode:"absolute-height",offset:0},i.forEachManipulator(((t,e)=>{this.handles.add(t.events.on("immediate-click",(e=>{i.zManipulation.hasManipulator(t)||1!==this.graphics.length||this.emit("immediate-click",{...e,graphic:this.graphics.getItemAt(0)}),e.stopPropagation()}))),e===M.TRANSLATE_XY&&this.handles.add(t.events.on("focus-changed",(({action:t})=>{if(s(this._tooltip))return;const{tooltipOptions:i}=this;"focus"===t&&i.enabled?this._tooltip.info=new k({tooltipOptions:i}):this._tooltip.clear()}))),e===M.TRANSLATE_Z&&this.handles.add(t.events.on("focus-changed",(({action:t})=>{if(s(this._tooltip))return;const{tooltipOptions:i}=this;"focus"===t&&i.enabled?this._tooltip.info=new I({tooltipOptions:i}):this._tooltip.clear()})))}));const e=()=>this._updateMoveManipulation(t);for(const n of t)this.handles.add([n.state.on("changed",e),l((()=>n.state.displaying),e)]);const o=t[t.length-1];this.handles.add(o.state.on("changed",(()=>this._updateMoveManipulationAngle(o)))),this.handles.add(i.createDragPipeline(((i,e,o,n,a)=>this._buildDragEventPipeline(t,i,e,o,n,a)),d(o.graphic),r(o.graphic.geometry).spatialReference,o.graphic)),this._updateMoveManipulationAngle(o)}_createVisualElements(t){for(const i of t){const e=i.graphic,o=w({view:this.view,graphic:e,forEachManipulator:t=>{i.manipulationXY.forEachManipulator(t),this._moveManipulation.forEachManipulator(t)},onManipulatorsChanged:()=>n()});s(o)||(i.geometryRepresentation=o.visualElement,i.geometryRepresentation instanceof T&&this.handles.add([i.geometryRepresentation.events.on("attachment-origin-changed",(()=>{i.state.isDraped||this._updateMoveManipulation(t)})),l((()=>i.state.isDraped),(()=>this._updateMoveManipulation(t)))]),this.handles.add(o))}}_updateMoveManipulationAngle(t){this._moveManipulation.angleDeferred=()=>x(t.graphic.geometry)}_updateMoveManipulation(t){const i=u(0,0,0,this.view.spatialReference);let e=0,o=!1;const n=this._moveManipulation;for(const a of t){if(!a.state.displaying)continue;const t=a.state.graphic;this.enableZ&&_(t)&&(o=!0);const n=a.geometryRepresentation instanceof T&&!a.state.isDraped?a.geometryRepresentation.attachmentOrigin:v(this.view,t);p(n)&&(i.x+=n.x,i.y+=n.y,i.z+=n.z,e++)}e>0?(i.x/=e,i.y/=e,i.z/=e,n.location=i,n.xyManipulation.available=!0,n.xyAxisManipulation.available=!0,n.zManipulation.available=o):n.available=!1}_buildDragEventPipeline(t,i,e,o,n,a){const s=[],r=[];let p=null,l=null;const h=()=>{for(const t of s)t.dragging=!1;s.length=0,r.length=0,p=null,l=null,this._moveManipulation.interactive=!0};if(1===t.length&&i===b.XY){const i=t[0].graphic;o=this._buildSnappingPipelineSteps(i,d(i),o,n,a)}const c=o.next((i=>{if("start"===i.action){s.length=0,r.length=0;for(const i of t)i.dragging||!i.manipulationXY.hasManipulator(e)&&i.manipulationXY.grabbing||(s.push(i),r.push(i.graphic),i.dragging=!0);if(0!==r.length&&(this._moveManipulation.interactive=!1,p=P(r,this.view.state.viewingMode),l=X(r),this.emit("graphic-move-start",new H(r)),this.destroyed))return null}return 0!==r.length?i:null})).next((t=>p(t))).next((t=>this._updateMoveTooltip(t,i))).next((t=>{switch(t.action){case"start":case"update":if(t.translationX||t.translationY||t.translationZ){const i=this.view.toScreen(t.mapStart),e=this.view.toScreen(t.mapEnd),o=e.x-i.x,n=e.y-i.y;if(this.emit("graphic-move",new V(o,n,r)),this.destroyed)return null}break;case"end":if(this.emit("graphic-move-stop",new N(r)),this.destroyed)return null;h()}}));return n.next((t=>l(t))).next((()=>{if(this.emit("graphic-move-stop",new N(r)),this.destroyed)return null;h()})),c}_updateMoveTooltip(t,i){if(s(this._tooltip))return t;const{tooltipOptions:e}=this;if(!e.enabled)return this._tooltip.clear(),t;if(i===b.XY||i===b.XY_AXIS){const i=Z(t.mapStart,t.mapEnd);p(i)&&(this._tooltip.info=new k({tooltipOptions:e,distance:i}))}if(i===b.Z){const i=C(t.mapStart,t.mapEnd);p(i)&&(this._tooltip.info=new I({tooltipOptions:e,distance:i}))}return t}_buildSnappingPipelineSteps(t,i,e,o,n){const a=t.geometry;if(s(a)||"point"!==a.type&&"mesh"!==a.type)return e;const r=("point"===a.type?a:a.anchor).clone(),p=new R({elevationInfo:i,pointer:n,editGeometryOperations:Y.fromGeometry(r,this.view.state.viewingMode),visualizer:new f,excludeFeature:t}),l=this.snappingManager;return e.next((i=>{r.z=g(this.view,r,d(t),{mode:"absolute-height",offset:0});return{...i,snapOrigin:p.coordinateHelper.pointToVector(r)}})).next(this._snappingPipeline.createSnapDragEventPipelineStep({snappingContext:p,snappingManager:l,cancel:o,updatingHandles:this.updatingHandles}),this._snappingPipeline.next)}};t([c({constructOnly:!0,nonNullable:!0})],F.prototype,"view",void 0),t([c()],F.prototype,"graphics",void 0),t([c({constructOnly:!0,nonNullable:!0})],F.prototype,"enableZ",void 0),t([c({constructOnly:!0,type:G})],F.prototype,"tooltipOptions",void 0),t([c({constructOnly:!0})],F.prototype,"snappingManager",void 0),t([c()],F.prototype,"type",void 0),t([c()],F.prototype,"updating",null),F=t([m("esri.views.3d.interactive.editingTools.graphicMove3D.GraphicMoveTool")],F);class L{constructor(t){this.state=null,this.geometryRepresentation=null,this.manipulationXY=null,this.dragging=!1,this.state=new A({graphic:t})}get graphic(){return this.state.graphic}}export{V as GraphicMoveEvent,H as GraphicMoveStartEvent,N as GraphicMoveStopEvent,F as GraphicMoveTool};
|