@arcgis/core 4.28.0-next.20230713 → 4.28.0-next.20230715
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Basemap.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{0b28b5eec6dc67be8ce9.js → 0121bfc81b794745e024.js} +1 -1
- package/assets/esri/core/workers/chunks/067d3d45caeaaba18d81.js +1 -0
- package/assets/esri/core/workers/chunks/080a13dc08a8db498ffa.js +1 -0
- package/assets/esri/core/workers/chunks/0dccbc6c2559fdc0c2ad.js +1 -0
- package/assets/esri/core/workers/chunks/{c912466351e37db68b6c.js → 14ab33573bb02d6c6b1a.js} +1 -1
- package/assets/esri/core/workers/chunks/{c4b066760e9aa85b7607.js → 1b948f8429d8f9b1bbfb.js} +1 -1
- package/assets/esri/core/workers/chunks/204ed2ebd2d3da659791.js +1 -0
- package/assets/esri/core/workers/chunks/{5d5d4a4fdf5ca8d7837f.js → 239d4176ff2d5142b7f1.js} +1 -1
- package/assets/esri/core/workers/chunks/23bb98aaa20b180ee680.js +1 -0
- package/assets/esri/core/workers/chunks/27cf3ef9566d5226b0df.js +1 -0
- package/assets/esri/core/workers/chunks/{1c86f80d73dee1a4d9b7.js → 2f1695e4807a534e1743.js} +1 -1
- package/assets/esri/core/workers/chunks/{60b422009f58d7bbb8c4.js → 3164b862a6b3f654fade.js} +1 -1
- package/assets/esri/core/workers/chunks/35f60625ada14eb801fd.js +1 -0
- package/assets/esri/core/workers/chunks/{4e4e62462deec25e82ce.js → 3a04bf1cdce263fe2191.js} +1 -1
- package/assets/esri/core/workers/chunks/41011207b6cc5eb6232f.js +1 -0
- package/assets/esri/core/workers/chunks/{8d50449c029c73136204.js → 432e3558db53574d21b4.js} +1 -1
- package/assets/esri/core/workers/chunks/4767f69b81d36dde9550.js +1 -0
- package/assets/esri/core/workers/chunks/{08ee2bd914867fd2cbd5.js → 490629c6f9fee501c9cd.js} +1 -1
- package/assets/esri/core/workers/chunks/{044b15794b6403792f04.js → 4f079d0e69189c1d8bd9.js} +1 -1
- package/assets/esri/core/workers/chunks/4f1f4cc82fea0d1f79ec.js +1 -0
- package/assets/esri/core/workers/chunks/503a393327df755d8843.js +1 -0
- package/assets/esri/core/workers/chunks/50e05f479c7d414fc06b.js +1 -0
- package/assets/esri/core/workers/chunks/{3835a76c017431f19422.js → 51da3c5c50b153ce6bc7.js} +1 -1
- package/assets/esri/core/workers/chunks/54b97ca5f2164b941f5b.js +1 -0
- package/assets/esri/core/workers/chunks/5a3fb63dab89cf3418f7.js +1 -0
- package/assets/esri/core/workers/chunks/5ceaf1f05b219034a10c.js +1 -0
- package/assets/esri/core/workers/chunks/70aabffaaa0a1da8e609.js +1 -0
- package/assets/esri/core/workers/chunks/78cb95d1594a0cb0dd7a.js +1 -0
- package/assets/esri/core/workers/chunks/7f391ae5e0ea7812baca.js +1 -0
- package/assets/esri/core/workers/chunks/{1d2b8b937bbda91a6549.js → 82dfbc175b52c7a10475.js} +1 -1
- package/assets/esri/core/workers/chunks/{036cd65514eab1749363.js → 8467d05626a3a72462c9.js} +1 -1
- package/assets/esri/core/workers/chunks/9038b1317f1252e31f09.js +1 -0
- package/assets/esri/core/workers/chunks/929ddc4d9975ed893767.js +1 -0
- package/assets/esri/core/workers/chunks/{e86dcc239c6a57000afc.js → 94633cc9cfb089ef010e.js} +1 -1
- package/assets/esri/core/workers/chunks/{2f5f398374ff77fb17f0.js → 975eef6d20c17a0ed07b.js} +1 -1
- package/assets/esri/core/workers/chunks/{8913bddc76b82cb24664.js → 98cf4e744e8f2c3fc536.js} +1 -1
- package/assets/esri/core/workers/chunks/a00414550fa21c5662f3.js +1 -0
- package/assets/esri/core/workers/chunks/a3a1d4f32e518e97d071.js +1 -0
- package/assets/esri/core/workers/chunks/{4e2029c8cc8a5afe5759.js → a5348f117dacdcae99ee.js} +1 -1
- package/assets/esri/core/workers/chunks/b0f0a3178d88fa600a11.js +1 -0
- package/assets/esri/core/workers/chunks/b4446ce010bc4a5aa917.js +1 -0
- package/assets/esri/core/workers/chunks/b8a45b28a915a423d09d.js +1 -0
- package/assets/esri/core/workers/chunks/{fb97d39b25b0b009d2f0.js → bd9e6f38c9ec4195322a.js} +1 -1
- package/assets/esri/core/workers/chunks/{30deb5a8e9a82186991d.js → c15c4bd52d4472ed50bc.js} +1 -1
- package/assets/esri/core/workers/chunks/{55109f141c9f120833f6.js → c3d773c93efb41088c54.js} +1 -1
- package/assets/esri/core/workers/chunks/c518410b1214ffc58017.js +1 -0
- package/assets/esri/core/workers/chunks/d55faafe2ac914a3ebd1.js +1 -0
- package/assets/esri/core/workers/chunks/d5fd4780d57173f3e303.js +1 -0
- package/assets/esri/core/workers/chunks/da01e520a1ae0048e73e.js +1 -0
- package/assets/esri/core/workers/chunks/dd7603c9e5fd178c88f7.js +1 -0
- package/assets/esri/core/workers/chunks/ddcf58937924ab5a3d76.js +1 -0
- package/assets/esri/core/workers/chunks/e03a0f52d438f53a3057.js +1 -0
- package/assets/esri/core/workers/chunks/e433440fecd0114cb23d.js +1 -0
- package/assets/esri/core/workers/chunks/ea1560129e426980a4e2.js +1 -0
- package/assets/esri/core/workers/chunks/f73e2143f8d053aef092.js +1 -0
- package/assets/esri/core/workers/chunks/{0a0af540f4fe64c3d292.js → fa14238f1c308a74f843.js} +1 -1
- package/assets/esri/themes/base/widgets/_ElevationProfile.scss +3 -0
- 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/chunks/RibbonLine.glsl.js +57 -72
- package/chunks/ar.js +1 -1
- package/chunks/ar2.js +1 -1
- package/chunks/bg_BG.js +1 -1
- package/chunks/bg_BG2.js +1 -1
- package/chunks/bs_BA.js +1 -1
- package/chunks/bs_BA2.js +1 -1
- package/chunks/ca_ES.js +1 -1
- package/chunks/ca_ES2.js +1 -1
- package/chunks/chartUtilsAm5.js +1 -1
- package/chunks/cs_CZ.js +1 -1
- package/chunks/cs_CZ2.js +1 -1
- package/chunks/da_DK.js +1 -1
- package/chunks/da_DK2.js +1 -1
- package/chunks/de_CH.js +1 -1
- package/chunks/de_CH2.js +1 -1
- package/chunks/de_DE.js +1 -1
- package/chunks/de_DE2.js +1 -1
- package/chunks/el_GR.js +1 -1
- package/chunks/el_GR2.js +1 -1
- package/chunks/en_CA.js +1 -1
- package/chunks/en_CA2.js +1 -1
- package/chunks/en_US.js +1 -1
- package/chunks/en_US2.js +1 -1
- package/chunks/es_ES.js +1 -1
- package/chunks/es_ES2.js +1 -1
- package/chunks/et_EE.js +1 -1
- package/chunks/et_EE2.js +1 -1
- package/chunks/fi_FI.js +1 -1
- package/chunks/fi_FI2.js +1 -1
- package/chunks/fr_FR.js +1 -1
- package/chunks/fr_FR2.js +1 -1
- package/chunks/he_IL.js +1 -1
- package/chunks/he_IL2.js +1 -1
- package/chunks/hr_HR.js +1 -1
- package/chunks/hr_HR2.js +1 -1
- package/chunks/hu_HU.js +1 -1
- package/chunks/hu_HU2.js +1 -1
- package/chunks/id_ID.js +1 -1
- package/chunks/id_ID2.js +1 -1
- package/chunks/it_IT.js +1 -1
- package/chunks/it_IT2.js +1 -1
- package/chunks/ja_JP.js +1 -1
- package/chunks/ja_JP2.js +1 -1
- package/chunks/ko_KR.js +1 -1
- package/chunks/ko_KR2.js +1 -1
- package/chunks/lt_LT.js +1 -1
- package/chunks/lt_LT2.js +1 -1
- package/chunks/lv_LV.js +1 -1
- package/chunks/lv_LV2.js +1 -1
- package/chunks/nb_NO.js +1 -1
- package/chunks/nb_NO2.js +1 -1
- package/chunks/nl_NL.js +1 -1
- package/chunks/nl_NL2.js +1 -1
- package/chunks/pl_PL.js +1 -1
- package/chunks/pl_PL2.js +1 -1
- package/chunks/pt_BR.js +1 -1
- package/chunks/pt_BR2.js +1 -1
- package/chunks/pt_PT.js +1 -1
- package/chunks/pt_PT2.js +1 -1
- package/chunks/ro_RO.js +1 -1
- package/chunks/ro_RO2.js +1 -1
- package/chunks/ru_RU.js +1 -1
- package/chunks/ru_RU2.js +1 -1
- package/chunks/sk_SK.js +1 -1
- package/chunks/sk_SK2.js +1 -1
- package/chunks/sl_SL.js +1 -1
- package/chunks/sl_SL2.js +1 -1
- package/chunks/sr_RS.js +1 -1
- package/chunks/sr_RS2.js +1 -1
- package/chunks/sv_SE.js +1 -1
- package/chunks/sv_SE2.js +1 -1
- package/chunks/th_TH.js +1 -1
- package/chunks/th_TH2.js +1 -1
- package/chunks/tr_TR.js +1 -1
- package/chunks/tr_TR2.js +1 -1
- package/chunks/uk_UA.js +1 -1
- package/chunks/uk_UA2.js +1 -1
- package/chunks/vi_VN.js +1 -1
- package/chunks/vi_VN2.js +1 -1
- package/chunks/zh_Hans.js +1 -1
- package/chunks/zh_Hans2.js +1 -1
- package/chunks/zh_Hant.js +1 -1
- package/chunks/zh_Hant2.js +1 -1
- package/config.js +1 -1
- package/core/colorUtils.js +1 -1
- package/core/image/apng.js +1 -1
- package/core/image/gif.js +1 -1
- package/core/urlUtils.js +1 -1
- package/core/workers/WorkerOwner.js +1 -1
- package/core/workers/staticWorkerMessages.js +5 -0
- package/geometry/projection.js +1 -1
- package/interfaces.d.ts +42 -2
- package/kernel.js +1 -1
- package/layers/support/ImageElement.js +1 -1
- package/layers/video/VideoController.js +1 -1
- package/package.json +1 -1
- package/portal/Portal.js +1 -1
- package/support/BasemapStyle.js +5 -0
- package/support/basemapUtils.js +1 -1
- package/support/revision.js +1 -1
- package/symbols/support/previewSymbol2D.js +1 -1
- package/views/2d/GoToManager.js +5 -0
- package/views/2d/engine/Stage.js +1 -1
- package/views/2d/engine/webgl/Overlay.js +1 -1
- package/views/2d/engine/webgl/animatedFormats/utils.js +1 -1
- package/views/2d/interactive/editingTools/ControlPointsTransformTool.js +1 -1
- package/views/2d/interactive/editingTools/TransformTool.js +1 -1
- package/views/2d/layers/BaseLayerViewGL2D.js +1 -1
- package/views/2d/layers/MediaLayerView2D.js +1 -1
- package/views/2d/layers/TileLayerView2D.js +1 -1
- package/views/2d/support/engineHelpers.js +1 -1
- package/views/2d/support/screenshotUtils.js +5 -0
- package/views/3d/analysis/AreaMeasurement/support/AreaMeasurementVisualization.js +1 -1
- package/views/3d/analysis/Dimension/DimensionTool.js +1 -1
- package/views/3d/analysis/Dimension/DimensionVisualization.js +1 -1
- package/views/3d/analysis/Dimension/LengthDimensionSubTool.js +1 -1
- package/views/3d/analysis/Dimension/LengthDimensionVisualization.js +1 -1
- package/views/3d/analysis/Dimension/lengthDimensionConstraintUtils.js +1 -1
- package/views/3d/analysis/Dimension/lengthDimensionManipulatorUtils.js +1 -1
- package/views/3d/analysis/Dimension/settings.js +1 -1
- package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementVisualization.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightToolConfiguration.js +1 -1
- package/views/3d/analysis/Slice/SliceTool.js +1 -1
- package/views/3d/analysis/Slice/SliceVisualization.js +1 -1
- package/views/3d/analysis/Slice/settings.js +1 -1
- package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
- package/views/3d/interactive/SnappingVisualizer3D.js +1 -1
- package/views/3d/interactive/editingTools/draw/DrawGraphicTool3D.js +1 -1
- package/views/3d/interactive/editingTools/lineGraphicVisualElementUtils.js +1 -1
- package/views/3d/interactive/editingTools/manipulations/MoveXYAxisManipulation.js +1 -1
- package/views/3d/interactive/editingTools/manipulations/MoveXYDiscManipulation.js +1 -1
- package/views/3d/interactive/editingTools/manipulations/MoveZManipulation.js +1 -1
- package/views/3d/interactive/editingTools/originGraphicVisualElementUtils.js +1 -1
- package/views/3d/interactive/editingTools/reshapeGraphic/ReshapeOperation.js +1 -1
- package/views/3d/interactive/editingTools/settings.js +1 -1
- package/views/3d/interactive/editingTools/transformGraphic/ExtentTransformTool.js +1 -1
- package/views/3d/interactive/editingTools/transformGraphic/GraphicScaleRotateTransform.js +1 -1
- package/views/3d/interactive/measurementTools/areaMeasurement3D/AreaMeasurement3DView.js +1 -1
- package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DView.js +1 -1
- package/views/3d/interactive/visualElements/MeasurementArrowVisualElement.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPolygonFillSymbolLayer.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/terrain/Tile.js +1 -1
- package/views/3d/terrain/TileRenderer.js +1 -1
- package/views/3d/terrain/TileTexture.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +12 -13
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/TextureBackedBuffer/TextureBackedBuffer.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/strokes.js +1 -1
- package/views/3d/webgl-engine/lib/glUtil3D.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/internal/WaterTextureRepository.js +1 -1
- package/views/3d/webgl-engine/shaders/HUDMaterialTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/statistics/RendererPerformanceInfo.js +1 -1
- package/views/MapView.js +1 -1
- package/views/Theme.js +5 -0
- package/views/View.js +1 -1
- package/views/interactive/SegmentLabels.js +1 -1
- package/views/support/colorUtils.js +1 -1
- package/views/webgl/Texture.js +1 -1
- package/widgets/AreaMeasurement2D/AreaMeasurement2DTool.js +1 -1
- package/widgets/Attachments.js +1 -1
- package/widgets/DistanceMeasurement2D/DistanceMeasurement2DTool.js +1 -1
- package/widgets/ElevationProfile/support/InputRepresentation3D.js +1 -1
- package/widgets/ElevationProfile/support/chartUtils.js +1 -1
- package/widgets/Feature/FeatureMedia/chartCommon.js +1 -1
- package/widgets/Feature/FeatureMedia.js +1 -1
- package/widgets/support/chartUtils.js +1 -1
- package/widgets/support/chartUtilsAm5.js +1 -1
- package/assets/esri/core/workers/chunks/05f3374114bce72d3560.js +0 -1
- package/assets/esri/core/workers/chunks/10028df973ef7f9531c8.js +0 -1
- package/assets/esri/core/workers/chunks/1cbb03eec9dc23ef043b.js +0 -1
- package/assets/esri/core/workers/chunks/289061552a2a64bebd76.js +0 -1
- package/assets/esri/core/workers/chunks/308eeeaec591b4eea1de.js +0 -1
- package/assets/esri/core/workers/chunks/3155c750fc5a4e04a785.js +0 -1
- package/assets/esri/core/workers/chunks/346f67995b327bca8ee0.js +0 -1
- package/assets/esri/core/workers/chunks/3736e17dd6461f74cfaf.js +0 -1
- package/assets/esri/core/workers/chunks/37e60f9ca86f9d4bf4ea.js +0 -1
- package/assets/esri/core/workers/chunks/3a0b45ecc48e23a3a5d5.js +0 -1
- package/assets/esri/core/workers/chunks/417377c8e76944f428a7.js +0 -1
- package/assets/esri/core/workers/chunks/498dca81073e1fb477b9.js +0 -1
- package/assets/esri/core/workers/chunks/536962375ce4f1394481.js +0 -1
- package/assets/esri/core/workers/chunks/64bb4093c019a02d5309.js +0 -1
- package/assets/esri/core/workers/chunks/69de4733173ee2dee6e1.js +0 -1
- package/assets/esri/core/workers/chunks/6dcffe6683a798a42c78.js +0 -1
- package/assets/esri/core/workers/chunks/7a898d167029ee11a680.js +0 -1
- package/assets/esri/core/workers/chunks/7a973d70e6bc42d804ee.js +0 -1
- package/assets/esri/core/workers/chunks/7d9d2629af373c84624f.js +0 -1
- package/assets/esri/core/workers/chunks/885cb0da78e6853b23a4.js +0 -1
- package/assets/esri/core/workers/chunks/8e28862296972e9e6f82.js +0 -1
- package/assets/esri/core/workers/chunks/928431e1c449c6054547.js +0 -1
- package/assets/esri/core/workers/chunks/afdf30439d71a7cc19ae.js +0 -1
- package/assets/esri/core/workers/chunks/b1fa1571fd98d3b8dffe.js +0 -1
- package/assets/esri/core/workers/chunks/b20167d9163d0ee74b65.js +0 -1
- package/assets/esri/core/workers/chunks/b2a0e3e1dfccda7ed12e.js +0 -1
- package/assets/esri/core/workers/chunks/c09db831248054600e16.js +0 -1
- package/assets/esri/core/workers/chunks/dcccc9760998271254b5.js +0 -1
- package/assets/esri/core/workers/chunks/ddea45acae89759e57fa.js +0 -1
- package/assets/esri/core/workers/chunks/e039108eb3a592f6d8e3.js +0 -1
- package/assets/esri/core/workers/chunks/e70314ac10cc1f8f9f86.js +0 -1
- package/assets/esri/core/workers/chunks/f2d399b394a1a9156214.js +0 -1
- package/assets/esri/core/workers/chunks/f74d4e1eecec06f84ee2.js +0 -1
- package/assets/esri/core/workers/chunks/fb7eff7f76386f81d57b.js +0 -1
- package/assets/esri/core/workers/chunks/fe277d33b5b8a11c76df.js +0 -1
- package/core/analysisThemeUtils.js +0 -5
- package/views/support/createScreenshotPlan.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.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../chunks/tslib.es6.js";import{makeHandle as t}from"../../../core/handleUtils.js";import i from"../../../core/Logger.js";import{isAbortError as r}from"../../../core/promiseUtils.js";import{watch as s}from"../../../core/reactiveUtils.js";import{property as o}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import{subclass as l}from"../../../core/accessorSupport/decorators/subclass.js";import{equals as h}from"../../../geometry/support/spatialReferenceUtils.js";import{GraphicsCollection as a}from"../../../support/GraphicsCollection.js";import"../../../core/Error.js";import"../../../core/scheduling.js";import"../../../config.js";import"../../../request.js";import"../../../core/urlUtils.js";import"../../../chunks/index.js";import"../../../chunks/index2.js";import"../../../layers/effects/EffectView.js";import"../engine/DisplayObject.js";import"../engine/webgl/effects/highlight/HighlightGradient.js";import"../engine/webgl/BufferPool.js";import"../engine/webgl/enums.js";import"../engine/webgl/brushes/BrushBitmap.js";import"../../../chunks/vec4f32.js";import"../engine/webgl/Utils.js";import"../engine/webgl/shaders/BackgroundPrograms.js";import"../../webgl/enums.js";import"../../webgl/checkWebGLError.js";import"../../webgl/contextUtils.js";import"../../../chunks/builtins.js";import"../engine/webgl/definitions.js";import"../../../core/RandomLCG.js";import"../engine/webgl/materialKey/MaterialKey.js";import"../engine/webgl/techniques/Technique.js";import"../engine/webgl/techniques/dotDensity/TechniqueDotDensity.js";import"../engine/webgl/techniques/heatmap/TechniqueHeatmap.js";import"../engine/webgl/techniques/pieChart/TechniquePieChart.js";import"../../webgl/BufferObject.js";import"../../webgl/FramebufferObject.js";import"../../webgl/GLObjectType.js";import"../../webgl/Texture.js";import"../../webgl/VertexArrayObject.js";import"../engine/webgl/brushes/WGLBrushHeatmap.js";import"../engine/webgl/DefaultVertexAttributeLayouts.js";import"../engine/webgl/shaders/TileInfoPrograms.js";import"../engine/webgl/brushes/WGLGeometryBrushMarker.js";import"../../../core/mathUtils.js";import"../engine/webgl/number.js";import"../engine/vectorTiles/style/StyleDefinition.js";import"../../../chunks/vec2f32.js";import"../engine/vectorTiles/enums.js";import"../engine/vectorTiles/shaders/sources/resolver.js";import"../engine/webgl/shaders/BitBlitPrograms.js";import"../engine/webgl/shaders/sources/resolver.js";import"../engine/webgl/TextureManager.js";import"../engine/webgl/shaders/StencilPrograms.js";import"../engine/webgl/effects/BlendEffect.js";import"../engine/webgl/shaders/HighlightPrograms.js";import"../engine/webgl/Profiler.js";import"../../webgl/renderState.js";import"../../3d/webgl-engine/core/shaderModules/interfaces.js";import"../../../core/floatRGBA.js";import"../../3d/webgl-engine/lib/OrderIndependentTransparency.js";import"../../webgl/testSVGPremultipliedAlpha.js";import"../LabelManager.js";import n from"./graphics/GraphicsView2D.js";import"
|
|
5
|
+
import{_ as e}from"../../../chunks/tslib.es6.js";import{makeHandle as t}from"../../../core/handleUtils.js";import i from"../../../core/Logger.js";import{isAbortError as r}from"../../../core/promiseUtils.js";import{watch as s}from"../../../core/reactiveUtils.js";import{property as o}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import{subclass as l}from"../../../core/accessorSupport/decorators/subclass.js";import{equals as h}from"../../../geometry/support/spatialReferenceUtils.js";import{GraphicsCollection as a}from"../../../support/GraphicsCollection.js";import"../../../core/Error.js";import"../../../core/scheduling.js";import"../../../core/accessorSupport/tracking/Flags.js";import"../../../config.js";import"../../../request.js";import"../../../core/urlUtils.js";import"../../../chunks/index.js";import"../../../chunks/index2.js";import"../../../layers/effects/EffectView.js";import"../engine/DisplayObject.js";import"../engine/webgl/effects/highlight/HighlightGradient.js";import"../engine/webgl/BufferPool.js";import"../engine/webgl/enums.js";import"../engine/webgl/brushes/BrushBitmap.js";import"../../../chunks/vec4f32.js";import"../engine/webgl/Utils.js";import"../engine/webgl/shaders/BackgroundPrograms.js";import"../../webgl/enums.js";import"../../webgl/checkWebGLError.js";import"../../webgl/contextUtils.js";import"../../../chunks/builtins.js";import"../engine/webgl/definitions.js";import"../../../core/RandomLCG.js";import"../engine/webgl/materialKey/MaterialKey.js";import"../engine/webgl/techniques/Technique.js";import"../engine/webgl/techniques/dotDensity/TechniqueDotDensity.js";import"../engine/webgl/techniques/heatmap/TechniqueHeatmap.js";import"../engine/webgl/techniques/pieChart/TechniquePieChart.js";import"../../webgl/BufferObject.js";import"../../webgl/FramebufferObject.js";import"../../webgl/GLObjectType.js";import"../../webgl/Texture.js";import"../../webgl/VertexArrayObject.js";import"../engine/webgl/brushes/WGLBrushHeatmap.js";import"../engine/webgl/DefaultVertexAttributeLayouts.js";import"../engine/webgl/shaders/TileInfoPrograms.js";import"../engine/webgl/brushes/WGLGeometryBrushMarker.js";import"../../../core/mathUtils.js";import"../engine/webgl/number.js";import"../engine/vectorTiles/style/StyleDefinition.js";import"../../../chunks/vec2f32.js";import"../engine/vectorTiles/enums.js";import"../engine/vectorTiles/shaders/sources/resolver.js";import"../engine/webgl/shaders/BitBlitPrograms.js";import"../engine/webgl/shaders/sources/resolver.js";import"../engine/webgl/TextureManager.js";import"../engine/webgl/shaders/StencilPrograms.js";import"../engine/webgl/effects/BlendEffect.js";import"../engine/webgl/shaders/HighlightPrograms.js";import"../engine/webgl/Profiler.js";import"../../webgl/renderState.js";import"../../3d/webgl-engine/core/shaderModules/interfaces.js";import"../../../core/floatRGBA.js";import"../../3d/webgl-engine/lib/OrderIndependentTransparency.js";import"../../webgl/testSVGPremultipliedAlpha.js";import"../LabelManager.js";import n from"./graphics/GraphicsView2D.js";import"../engine/webgl/AttributeStoreView.js";import"../../../chunks/earcut.js";import"../../../layers/graphics/featureConversionUtils.js";import"../../../core/unitUtils.js";import"../../../renderers/support/lengthUtils.js";import"../../../chunks/vec3f32.js";import"../../../geometry/support/normalizeUtils.js";import"../navigation/MapViewNavigation.js";import"../../../core/asyncUtils.js";import"../engine/webgl/shaders/MagnifierPrograms.js";import{BitmapTileLayerView2D as p}from"./BitmapTileLayerView2D.js";import{LayerView2DMixin as g}from"./LayerView2D.js";import c from"./graphics/HighlightGraphicContainer.js";import{createBlankImage as m,resampleImage as u}from"./support/imageUtils.js";import f from"../tiling/TileInfoView.js";import w from"../tiling/TileKey.js";import j from"../tiling/TileQueue.js";import d from"../tiling/TileStrategy.js";import y from"../../layers/LayerView.js";import b from"../../layers/RefreshableLayerView.js";import{isMapServiceLayerView as _,MapServiceLayerViewHelper as V}from"../../layers/support/MapServiceLayerViewHelper.js";import{createQueryGeometry as T}from"../../support/drapedUtils.js";const v=[0,0];let I=class extends(b(p(g(y)))){constructor(){super(...arguments),this._fetchQueue=null,this._highlightGraphics=new a,this._highlightView=null,this._popupHighlightHelper=null,this._tileStrategy=null,this.layer=null}get resampling(){return!("resampling"in this.layer)||!1!==this.layer.resampling}get tilemapCache(){return"tilemapCache"in this.layer?this.layer.tilemapCache:null}update(e){this._fetchQueue.pause(),this._fetchQueue.state=e.state,this._tileStrategy.update(e),this._fetchQueue.resume(),this._highlightView?.processUpdate(e)}attach(){const e="tileServers"in this.layer?this.layer.tileServers:null,t=this.tilemapCache;if(this._tileInfoView=new f(this.layer.tileInfo,this.layer.fullExtent,t?.effectiveMinLOD,t?.effectiveMaxLOD),this._fetchQueue=new j({tileInfoView:this._tileInfoView,concurrency:e&&10*e.length||10,process:(e,t)=>this.fetchTile(e,t)}),this._tileStrategy=new d({cachePolicy:"keep",resampling:this.resampling,acquireTile:e=>this.acquireTile(e),releaseTile:e=>this.releaseTile(e),tileInfoView:this._tileInfoView}),_(this,this.layer)){const e=this._highlightView=new n({view:this.view,graphics:this._highlightGraphics,requestUpdateCallback:()=>this.requestUpdate(),container:new c(this.view.featuresTilingScheme),defaultPointSymbolEnabled:!1});this.container.addChild(this._highlightView.container),this._popupHighlightHelper=new V({createFetchPopupFeaturesQueryGeometry:(e,t)=>T(e,t,this.view),highlightGraphics:this._highlightGraphics,highlightGraphicUpdated:(t,i)=>{e.graphicUpdateHandler({graphic:t,property:i})},layerView:this,updatingHandles:this._updatingHandles})}this.requestUpdate(),this.addAttachHandles(s((()=>this.resampling),(()=>{this.doRefresh()}))),super.attach()}detach(){super.detach(),this._tileStrategy.destroy(),this._fetchQueue.clear(),this.container.removeAllChildren(),this._popupHighlightHelper?.destroy(),this._fetchQueue=this._tileStrategy=this._tileInfoView=this._popupHighlightHelper=null}async fetchPopupFeatures(e,t){return this._popupHighlightHelper?this._popupHighlightHelper.fetchPopupFeatures(e,t):[]}highlight(e){return this._popupHighlightHelper?this._popupHighlightHelper.highlight(e):t()}moveStart(){this.requestUpdate()}viewChange(){this.requestUpdate()}moveEnd(){this.requestUpdate()}supportsSpatialReference(e){return h(this.layer.tileInfo?.spatialReference,e)}async doRefresh(){!this.attached||this.updateRequested||this.suspended||(this._fetchQueue.reset(),this._tileStrategy.refresh((e=>this._enqueueTileFetch(e))))}isUpdating(){return this._fetchQueue?.updating??!1}acquireTile(e){const t=this._bitmapView.createTile(e),i=t.bitmap;return[i.x,i.y]=this._tileInfoView.getTileCoords(v,t.key),i.resolution=this._tileInfoView.getTileResolution(t.key),[i.width,i.height]=this._tileInfoView.tileInfo.size,this._enqueueTileFetch(t),this._bitmapView.addChild(t),this.requestUpdate(),t}releaseTile(e){this._fetchQueue.abort(e.key.id),this._bitmapView.removeChild(e),e.once("detach",(()=>e.destroy())),this.requestUpdate()}async fetchTile(e,t={}){const i=this.tilemapCache,{signal:s,resamplingLevel:o=0}=t;if(!i)try{return await this._fetchImage(e,s)}catch(a){if(!r(a)&&!this.resampling)return m(this._tileInfoView.tileInfo.size);if(o<3){const i=this._tileInfoView.getTileParentId(e.id);if(i){const r=new w(i),s=await this.fetchTile(r,{...t,resamplingLevel:o+1});return u(this._tileInfoView,s,r,e)}}throw a}const l=new w(0,0,0,0);let h;try{if(await i.fetchAvailabilityUpsample(e.level,e.row,e.col,l,{signal:s}),l.level!==e.level&&!this.resampling)return m(this._tileInfoView.tileInfo.size);h=await this._fetchImage(l,s)}catch(a){if(r(a))throw a;h=await this._fetchImage(e,s)}return this.resampling?u(this._tileInfoView,h,l,e):h}async _enqueueTileFetch(e){if(!this._fetchQueue.has(e.key.id)){try{const t=await this._fetchQueue.push(e.key);e.bitmap.source=t,e.bitmap.width=this._tileInfoView.tileInfo.size[0],e.bitmap.height=this._tileInfoView.tileInfo.size[1],e.requestRender(),e.once("attach",(()=>this.requestUpdate()))}catch(t){r(t)||i.getLogger(this).error(t)}this.requestUpdate()}}async _fetchImage(e,t){return this.layer.fetchImageBitmapTile(e.level,e.row,e.col,{signal:t})}};e([o()],I.prototype,"_fetchQueue",void 0),e([o()],I.prototype,"resampling",null),e([o()],I.prototype,"tilemapCache",null),I=e([l("esri.views.2d.layers.TileLayerView2D")],I);const U=I;export{U 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.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{bidiText as e}from"../../../core/BidiText.js";import{pt2px as t}from"../../../core/screenUtils.js";import{getXAnchorDirection as i,getYAnchorDirection as n}from"../engine/webgl/alignmentUtils.js";import{MAGIC_LABEL_LINE_HEIGHT as o,GLYPH_SIZE as r}from"../engine/webgl/definitions.js";import{shapeGlyphs as s}from"../engine/webgl/mesh/templates/shapingUtils.js";async function a(a,l,m){const d=i("center"),
|
|
5
|
+
import{bidiText as e}from"../../../core/BidiText.js";import{pt2px as t}from"../../../core/screenUtils.js";import{getXAnchorDirection as i,getYAnchorDirection as n}from"../engine/webgl/alignmentUtils.js";import{MAGIC_LABEL_LINE_HEIGHT as o,GLYPH_SIZE as r}from"../engine/webgl/definitions.js";import{shapeGlyphs as s}from"../engine/webgl/mesh/templates/shapingUtils.js";async function a(a,l,m){const d=i("center"),g=n("middle"),f=l.painter.textureManager.rasterizeItem(a.toJSON(),window.devicePixelRatio||1,void 0,m),[,c]=e(a.text),h=(await f).glyphMosaicItems;return s(h??[],c,{angle:a.angle??0,xOffset:t(a.xoffset??0),yOffset:t(a.yoffset??0),lineHeight:o*Math.max(.25,a.lineHeight),maxLineWidth:Math.max(32,Math.min(t(a.lineWidth),512)),decoration:a.font.decoration,scale:Math.min(Math.round(t(a.font.size)),127)/r,hAlign:d,vAlign:g,isCIM:!1,hasBackground:!!a.backgroundColor,borderLineSize:a.borderLineSize}).boundsT}let l=a;async function m(e,t,i){return l(e,t.stage,i)}const d={stubGetTextBounds:e=>l=e,restoreGetTextBounds:()=>l=a};export{m as getTextBounds,d as test};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*
|
|
2
|
+
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
|
+
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
|
+
*/
|
|
5
|
+
import{getFormatAndQuality as t,encode as i,encodeData as h,getMaximumResolutionScale as e}from"../../support/screenshotUtils.js";const n={flipY:!0,premultipliedAlpha:!0};async function o(h,e){const o=await r(h,e),{format:a,quality:l}=t(e?.format,e?.quality);return i(o,{format:a,quality:l,rotation:0,disableDecorations:!1},n)}async function a(t,i){const e=await r(t,i);return h(e,n)}function r(t,i){const h=d(i||{},u(t.stage,t.size),t.size,t.padding),e=l(i,t.allLayerViews);return t.stage.takeScreenshot(h,e,i?.rotation)}function l(t={},i){if(!t.layers)return;const h=[];return t.layers.forEach((t=>{const e=i.find((i=>i.layer.id===t.id));e?.container&&h.push(e.container)})),h}function u(t,i){return Math.min(4,e(i,Math.min(4096,t.context.parameters.maxTextureSize)))}function d(t,i,h,e){t.ignorePadding&&(e={left:0,right:0,top:0,bottom:0});let n=null;null!=t.width&&null!=t.height?n=[t.width,t.height]:null==t.width&&null!=t.height?n=[t.height,t.height]:null!=t.width&&null==t.height?n=[t.width,t.width]:null==t.width&&null==t.height&&(n=null);const o=h[0]-(e.left+e.right),a=h[1]-(e.top+e.bottom);let r,l,u=t.area||{x:0,y:0,width:o,height:a};if(n){const t=o/a,i=n[0]/n[1];if(i>t){const t=u.width/i;u={x:u.x,y:Math.round(u.y+(u.height-t)/2),width:u.width,height:Math.round(t)}}else{const t=u.height*i;u={x:Math.round(u.x+(u.width-t)/2),y:u.y,width:Math.round(t),height:u.height}}}else n=[u.width,u.height];return n[0]>u.width?(r=Math.min(n[0]/u.width,i),l=n[0]/u.width/r):(r=1,l=n[0]/u.width),{cropArea:{x:Math.round((u.x+e.left)*r),y:Math.round((u.y+e.top)*r),width:Math.round(u.width*r),height:Math.round(u.height*r)},outputScale:l,resolutionScale:r}}export{d as createScreenshotRegion,a as takeRawScreenshot,o as takeScreenshot};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../../../chunks/tslib.es6.js";import t from"../../../../../Color.js";import"../../../../../intl.js";import i from"../../../../../core/Accessor.js";import{getAccentColor as s,getContrastColor as r,getTextHaloColor as n,getTextColor as a}from"../../../../../core/analysisThemeUtils.js";import"../../../../../core/has.js";import{nextHighestPowerOfTen as o}from"../../../../../core/mathUtils.js";import{destroyMaybe as l}from"../../../../../core/maybe.js";import{formatDecimal as h}from"../../../../../core/quantityFormatUtils.js";import{toUnit as c}from"../../../../../core/quantityUtils.js";import{watch as m,syncAndInitial as p}from"../../../../../core/reactiveUtils.js";import{convertUnit as u,preferredImperialAreaUnit as d,preferredMetricAreaUnit as g,preferredImperialLengthUnit as L,preferredMetricLengthUnit as _}from"../../../../../core/unitUtils.js";import{property as b}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import{subclass as v}from"../../../../../core/accessorSupport/decorators/subclass.js";import{f}from"../../../../../chunks/mat4.js";import{c as S}from"../../../../../chunks/mat4f64.js";import{b as w}from"../../../../../chunks/vec3.js";import{c as y}from"../../../../../chunks/vec3f64.js";import{midpoint as j}from"../../support/viewUtils.js";import{LabelVisualElement as C}from"../../../interactive/visualElements/LabelVisualElement.js";import{LineVisualElement as A}from"../../../interactive/visualElements/LineVisualElement.js";import{MeasurementAreaVisualElement as D}from"../../../interactive/visualElements/MeasurementAreaVisualElement.js";import{GeodesicSegment as P,EuclideanSegment as V}from"../../../interactive/visualElements/support/Segment.js";import{RenderOccludedFlag as M}from"../../../webgl-engine/lib/Material.js";import{createStipplePatternSimple as R}from"../../../webgl-engine/materials/lineStippleUtils.js";import{onLocaleChange as U}from"../../../../../intl/locale.js";import{fetchMessageBundle as I}from"../../../../../intl/messages.js";let O=class extends i{get visible(){return this.analysisViewData.visible}get testData(){return{labels:{area:this._areaLabel,pathLength:this._pathLengthLabel,cursorSegmentLength:this._cursorSegmentLengthLabel,perimeterLength:this._perimeterLengthLabel}}}constructor(e){super(e),this._params={pathLineColor:t.toUnitRGBA(s()),pathLineWidth:3,intersectingLineColor:[1,.2,0,1],perimeterLineColor:t.toUnitRGBA(s()),perimeterLineWidth:2,projectionLineColor:t.toUnitRGBA(s()),projectionLineWidth:2,projectionLineStippleSize:5,areaColor1:t.toUnitRGBA(s(.5)),areaColor2:t.toUnitRGBA(r(.5)),labelDistance:25},this._path=null,this._intersectedPath=null,this._perimeter=null,this._intersectedPerimeter=null,this._projectionLines=null,this._measurementArea=null,this._areaLabel=null,this._pathLengthLabel=null,this._cursorSegmentLengthLabel=null,this._perimeterLengthLabel=null,this._pathSegments=[],this._perimeterSegments=[],this._cursorSegment=null,this._origin=y(),this._originTransform=S(),this._cursorPositionRenderSpace=y(),this.messages=null,this.viewData=k,this.areaLabel=null,this.perimeterLengthLabel=null,this.loadingMessages=!0}initialize(){const{analysisViewData:e,_params:t,view:i}=this;this._path=new A({view:i,attached:!0,width:t.pathLineWidth,color:t.pathLineColor,polygonOffset:!0,renderOccluded:M.OccludeAndTransparent,isDecoration:!0}),this._intersectedPath=new A({view:i,attached:!0,width:t.pathLineWidth,color:t.intersectingLineColor,polygonOffset:!0,renderOccluded:M.OccludeAndTransparent,isDecoration:!0}),this._perimeter=new A({view:i,attached:!0,width:t.perimeterLineWidth,color:t.perimeterLineColor,polygonOffset:!0,renderOccluded:M.OccludeAndTransparent,isDecoration:!0}),this._intersectedPerimeter=new A({view:i,attached:!0,width:t.perimeterLineWidth,color:t.intersectingLineColor,polygonOffset:!0,renderOccluded:M.OccludeAndTransparent,isDecoration:!0}),this._projectionLines=new A({view:i,attached:!0,width:t.projectionLineWidth,color:t.projectionLineColor,stipplePattern:R(t.projectionLineStippleSize),polygonOffset:!0,renderOccluded:M.OccludeAndTransparent,isDecoration:!0}),this._measurementArea=new D({view:i,attached:!0,color1:t.areaColor1,color2:t.areaColor2,isDecoration:!0});const s={attached:!0,backgroundColor:n(.6),calloutColor:n(.5),textColor:a(),view:i,isDecoration:!0};this._areaLabel=new C({...s,fontSize:z.Large}),this._pathLengthLabel=new C({...s,fontSize:z.Small}),this._cursorSegmentLengthLabel=new C({...s,fontSize:z.Small}),this._perimeterLengthLabel=new C({...s,fontSize:z.Small}),this.addHandles([m((()=>[e.mode,this.visible,e.unit,e.measurementData,e.cursorPoint]),(()=>this._update()),p),m((()=>i.state?.camera),(()=>this._updateLabels()),p),U((()=>this._updateMessageBundle()))]),this._updateMessageBundle()}destroy(){this._measurementArea=l(this._measurementArea),this._path=l(this._path),this._intersectedPath=l(this._intersectedPath),this._perimeter=l(this._perimeter),this._intersectedPerimeter=l(this._intersectedPerimeter),this._areaLabel=l(this._areaLabel),this._pathLengthLabel=l(this._pathLengthLabel),this._cursorSegmentLengthLabel=l(this._cursorSegmentLengthLabel),this._perimeterLengthLabel=l(this._perimeterLengthLabel),this._projectionLines=l(this._projectionLines),this.set("view",null)}_update(){if(this.destroyed||!this.view.ready||!this.view.renderCoordsHelper)return;const{analysisViewData:{measurementData:e},analysisViewData:t}=this;null!=e&&(this._updateViewData(e,t.path,t.cursorPoint),this._updateOrigin(),this._updatePathSegments(),this._updatePerimeterSegments(),this._updateArea(),this._updateProjectionLines(),this._updateLabels())}_updateViewData(e,t,i){const s=t.isValidPolygon,r="geodesic"===e.actualMeasurementMode,n=r?e.geodesicArea:e.area;let a=1;if(n){const t=this._toPreferredAreaUnit(n,this.analysisViewData.unit);a=o(Math.sqrt(t.value)/Math.sqrt(300)),a*=Math.sqrt(u(1,t.unit,"square-meters")),a/=e.unitNormalizer.normalizeDistance(1)}const l={validMeasurement:s,path:t,pathVersion:t.version,cursorPoint:i,measurementData:e,mode:e.actualMeasurementMode,positionsGeographic:e.positionsGeographic,positionsRenderCoords:e.positionsRenderCoords,positionsProjected:e.positionsProjectedWorldCoords,positionsFittedRenderCoords:e.positionsFittedRenderCoords,intersectingSegments:r?e.geodesicIntersectingSegments:e.intersectingSegments,triangleIndices:r?e.geodesicTriangleIndices:e.triangleIndices,fittingMode:e.fittingMode,areaCentroid:r?e.geodesicAreaCentroidRenderCoords:e.areaCentroidRenderCoords,pathLengthLabelSegmentIndex:s?0:t.numVertices-2,perimeterLengthLabelSegmentIndex:0,checkerSize:a};this._set("viewData",l)}_updateOrigin(){const e=this.viewData;j(e.positionsRenderCoords,this._origin),f(this._originTransform,this._origin),this._measurementArea.transform=this._originTransform,this._projectionLines.transform=this._originTransform}_createSegments(e){const t=this.viewData,i=t.path,s=this.view.renderCoordsHelper.spatialReference,r=t.mode,n=[],a=[],o=[],l=t.validMeasurement?i.numVertices:i.numVertices-1;for(let h=0;h<l;++h){const l=t[e][h],c=t[e][(h+1)%i.numVertices];let m=null;switch(r){case"euclidean":m=new V(l,c);break;case"geodesic":m=new P(l,c,s)}t.intersectingSegments.has(h)?o.push(m):a.push(m),n.push(m)}return{all:n,nonIntersecting:a,intersecting:o}}_updatePathSegments(){const{view:{renderCoordsHelper:e},viewData:t,visible:i}=this,s=this._createSegments("positionsRenderCoords"),{cursorPoint:r,mode:n,path:a}=t,o=!a.isValidPolygon,l=e.spatialReference;if(this._cursorSegment=null,a.numVertices>0&&o&&null!=r){if(e.toRenderCoords(r,this._cursorPositionRenderSpace)){const e=t.positionsRenderCoords[a.numVertices-1],i=this._cursorPositionRenderSpace;let r=null;switch(n){case"euclidean":r=new V(e,i);break;case"geodesic":r=new P(e,i,l)}s.nonIntersecting.push(r),this._cursorSegment=r}}this._path.setGeometryFromSegments(s.nonIntersecting,this._origin),this._path.visible=i,this._intersectedPath.setGeometryFromSegments(s.intersecting,this._origin),this._intersectedPath.visible=i,this._pathSegments=s.all}_updatePerimeterSegments(){const e=this.visible&&"euclidean"===this.viewData.mode,t=this._createSegments("positionsFittedRenderCoords");this._perimeter.setGeometryFromSegments(t.nonIntersecting,this._origin),this._perimeter.visible=e,this._intersectedPerimeter.setGeometryFromSegments(t.intersecting,this._origin),this._intersectedPerimeter.visible=e,this._perimeterSegments=t.all}_updateArea(){const e=this.viewData;switch(e.mode){case"euclidean":this._updateAreaEuclidean(e);break;case"geodesic":this._updateAreaGeodesic()}}_updateAreaEuclidean(e){const t=this.visible;e.validMeasurement&&0===e.intersectingSegments.size&&e.triangleIndices?(this._measurementArea.geometry={uv:e.positionsProjected,position:e.positionsFittedRenderCoords,triangleIndices:e.triangleIndices},this._measurementArea.size=[e.checkerSize,e.checkerSize],this._measurementArea.visible=t):this._measurementArea.visible=!1}_updateAreaGeodesic(){this._measurementArea.visible=!1}_updateProjectionLines(){const e=this.viewData,t=this.visible,i=e.path,s=e.mode;if(i.numVertices>0&&e.validMeasurement&&"euclidean"===s){const s=[];for(let t=0;t<i.numVertices;++t){const i=y();w(i,e.positionsRenderCoords[t],this._origin);const r=y();w(r,e.positionsFittedRenderCoords[t],this._origin),s.push([i,r])}this._projectionLines.geometry=s,this._projectionLines.visible=t}else this._projectionLines.geometry=null,this._projectionLines.visible=!1}_updateLabels(){if(this.destroyed)return;const{viewData:e}=this,{measurementData:t,mode:i,path:s}=e;if(!s)return;const r=!s.isValidPolygon,n=this.visible,a=this._formatAreaLabel(this.messages,"geodesic"===i?t.geodesicArea:t.area,this.analysisViewData.unit);null!=a?(this._areaLabel.geometry={type:"point",point:e.areaCentroid},this._areaLabel.text=a,this._areaLabel.visible=e.validMeasurement&&0===e.intersectingSegments.size&&n):this._areaLabel.visible=!1,this._set("areaLabel",a);const o=this._formatLengthLabel(this.messages,"geodesic"===i?t.geodesicPathLength:t.pathLength,this.analysisViewData.unit);if(null!=o&&e.pathLengthLabelSegmentIndex>=0&&e.pathLengthLabelSegmentIndex<this._pathSegments.length){const t=this._pathSegments[e.pathLengthLabelSegmentIndex],i=null!=this._cursorSegment?this._cursorSegment:q;this._pathLengthLabel.distance=this._params.labelDistance,this._pathLengthLabel.geometry={type:"corner",left:t,right:i},this._pathLengthLabel.text=o,this._pathLengthLabel.visible=r&&s.numVertices>0&&n}else this._pathLengthLabel.visible=!1;const l="geodesic"===i?e.measurementData.geodesicCursorSegmentLength:e.measurementData.cursorSegmentLength;if(null!=l){const e=this._formatLengthLabel(this.messages,l,this.analysisViewData.unit);this._cursorSegmentLengthLabel.distance=this._params.labelDistance,this._cursorSegmentLengthLabel.geometry=null!=this._cursorSegment?{type:"segment",segment:this._cursorSegment,sampleLocation:"end"}:null,this._cursorSegmentLengthLabel.anchor="bottom",this._cursorSegmentLengthLabel.text=e,this._cursorSegmentLengthLabel.visible=r&&0!==l.value&&n}else this._cursorSegmentLengthLabel.visible=!1;this._cursorSegmentLengthLabel.overlaps(this._pathLengthLabel)&&(this._cursorSegmentLengthLabel.visible=!1),this._pathLengthLabel.overlaps(this._areaLabel)&&(this._pathLengthLabel.visible=!1);const h="geodesic"===e.mode,c=h?t.geodesicPathLength:t.perimeterLength,m=this._formatLengthLabel(this.messages,c,this.analysisViewData.unit);if(this._set("perimeterLengthLabel",m),e.validMeasurement&&0===e.intersectingSegments.size){this._perimeterLengthLabel.distance=this._params.labelDistance,this._perimeterLengthLabel.anchor="top",this._perimeterLengthLabel.text=m,this._perimeterLengthLabel.visible=!0;let t=!0;for(let i=0;i<e.path.numVertices;++i){const s=(e.perimeterLengthLabelSegmentIndex+i)%e.path.numVertices,r=h?this._pathSegments[s]:this._perimeterSegments[s];if(t=!0,this._perimeterLengthLabel.geometry={type:"segment",segment:r,sampleLocation:"center"},!this._perimeterLengthLabel.overlaps(this._areaLabel))break;t=!1}this._perimeterLengthLabel.visible=t&&n}else this._perimeterLengthLabel.visible=!1}_toPreferredAreaUnit(e,t){return c(e,this._preferredAreaUnit(e,t))}_preferredAreaUnit(e,t){switch(t){case"metric":return g(e.value,e.unit);case"imperial":return d(e.value,e.unit);default:return t}}_preferredLengthUnit(e,t){const i=this._deriveLengthUnitFromAreaUnit(t);switch(i){case"metric":return _(e.value,e.unit);case"imperial":return L(e.value,e.unit);default:return i}}_deriveLengthUnitFromAreaUnit(e){switch(e){case"metric":case"ares":case"hectares":return"metric";case"imperial":case"acres":return"imperial";case"square-inches":return"inches";case"square-feet":return"feet";case"square-yards":return"yards";case"square-miles":return"miles";case"square-us-feet":return"us-feet";case"square-millimeters":return"millimeters";case"square-centimeters":return"centimeters";case"square-decimeters":return"decimeters";case"square-meters":return"meters";case"square-kilometers":return"kilometers"}throw new Error("unhandled area unit")}_formatAreaLabel(e,t,i){return e&&t&&h(e,t,this._preferredAreaUnit(t,i))}_formatLengthLabel(e,t,i){return e&&t&&h(e,t,this._preferredLengthUnit(t,i))}_updateMessageBundle(){this.loadingMessages=!0,I("esri/core/t9n/Units").then((e=>{this.messages=e,this.view&&this._update()})).finally((()=>{this.loadingMessages=!1}))}};var z;e([b()],O.prototype,"view",void 0),e([b()],O.prototype,"messages",void 0),e([b()],O.prototype,"analysis",void 0),e([b()],O.prototype,"viewData",void 0),e([b()],O.prototype,"analysisViewData",void 0),e([b({readOnly:!0})],O.prototype,"areaLabel",void 0),e([b({readOnly:!0})],O.prototype,"perimeterLengthLabel",void 0),e([b()],O.prototype,"loadingMessages",void 0),e([b()],O.prototype,"visible",null),O=e([v("esri.views.3d.analysis.AreaMeasurement.support.AreaMeasurementVisualization")],O),function(e){e[e.Small=12]="Small",e[e.Large=16]="Large"}(z||(z={}));const k={validMeasurement:!1,path:null,pathVersion:-1,cursorPoint:null,measurementData:null,mode:null,positionsGeographic:null,positionsRenderCoords:null,positionsProjected:null,positionsFittedRenderCoords:null,intersectingSegments:null,triangleIndices:null,fittingMode:null,areaCentroid:null,pathLengthLabelSegmentIndex:null,perimeterLengthLabelSegmentIndex:null,checkerSize:null},q=new V(y(),y());export{O as AreaMeasurementVisualization};
|
|
5
|
+
import{_ as e}from"../../../../../chunks/tslib.es6.js";import t from"../../../../../Color.js";import"../../../../../intl.js";import i from"../../../../../core/Accessor.js";import{multiplyOpacity as s,getContrast as r}from"../../../../../core/colorUtils.js";import"../../../../../core/has.js";import{nextHighestPowerOfTen as n}from"../../../../../core/mathUtils.js";import{destroyMaybe as a}from"../../../../../core/maybe.js";import{formatDecimal as o}from"../../../../../core/quantityFormatUtils.js";import{toUnit as l}from"../../../../../core/quantityUtils.js";import{watch as h,syncAndInitial as c}from"../../../../../core/reactiveUtils.js";import{convertUnit as m,preferredImperialAreaUnit as p,preferredMetricAreaUnit as u,preferredImperialLengthUnit as d,preferredMetricLengthUnit as g}from"../../../../../core/unitUtils.js";import{property as L}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import{subclass as _}from"../../../../../core/accessorSupport/decorators/subclass.js";import{f as b}from"../../../../../chunks/mat4.js";import{c as v}from"../../../../../chunks/mat4f64.js";import{b as f}from"../../../../../chunks/vec3.js";import{c as S}from"../../../../../chunks/vec3f64.js";import{midpoint as w}from"../../support/viewUtils.js";import{LabelVisualElement as y}from"../../../interactive/visualElements/LabelVisualElement.js";import{LineVisualElement as j}from"../../../interactive/visualElements/LineVisualElement.js";import{MeasurementAreaVisualElement as C}from"../../../interactive/visualElements/MeasurementAreaVisualElement.js";import{GeodesicSegment as D,EuclideanSegment as A}from"../../../interactive/visualElements/support/Segment.js";import{RenderOccludedFlag as P}from"../../../webgl-engine/lib/Material.js";import{createStipplePatternSimple as V}from"../../../webgl-engine/materials/lineStippleUtils.js";import{onLocaleChange as M}from"../../../../../intl/locale.js";import{fetchMessageBundle as R}from"../../../../../intl/messages.js";let U=class extends i{get _parameters(){const{accentColor:e}=this.view.effectiveTheme,i=t.toUnitRGBA(e);return{pathLineColor:i,pathLineWidth:3,intersectingLineColor:[1,.2,0,1],perimeterLineColor:i,perimeterLineWidth:2,projectionLineColor:i,projectionLineWidth:2,projectionLineStippleSize:5,areaColor1:t.toUnitRGBA(s(e,.5)),areaColor2:t.toUnitRGBA(s(r(e),.5)),labelDistance:25}}get visible(){return this.analysisViewData.visible}get testData(){return{labels:{area:this._areaLabel,pathLength:this._pathLengthLabel,cursorSegmentLength:this._cursorSegmentLengthLabel,perimeterLength:this._perimeterLengthLabel}}}constructor(e){super(e),this._path=null,this._intersectedPath=null,this._perimeter=null,this._intersectedPerimeter=null,this._projectionLines=null,this._measurementArea=null,this._areaLabel=null,this._pathLengthLabel=null,this._cursorSegmentLengthLabel=null,this._perimeterLengthLabel=null,this._pathSegments=[],this._perimeterSegments=[],this._cursorSegment=null,this._origin=S(),this._originTransform=v(),this._cursorPositionRenderSpace=S(),this.messages=null,this.viewData=O,this.areaLabel=null,this.perimeterLengthLabel=null,this.loadingMessages=!0}initialize(){const{analysisViewData:e,_parameters:t,view:i}=this;this._path=new j({view:i,attached:!0,width:t.pathLineWidth,color:t.pathLineColor,polygonOffset:!0,renderOccluded:P.OccludeAndTransparent,isDecoration:!0}),this._intersectedPath=new j({view:i,attached:!0,width:t.pathLineWidth,color:t.intersectingLineColor,polygonOffset:!0,renderOccluded:P.OccludeAndTransparent,isDecoration:!0}),this._perimeter=new j({view:i,attached:!0,width:t.perimeterLineWidth,color:t.perimeterLineColor,polygonOffset:!0,renderOccluded:P.OccludeAndTransparent,isDecoration:!0}),this._intersectedPerimeter=new j({view:i,attached:!0,width:t.perimeterLineWidth,color:t.intersectingLineColor,polygonOffset:!0,renderOccluded:P.OccludeAndTransparent,isDecoration:!0}),this._projectionLines=new j({view:i,attached:!0,width:t.projectionLineWidth,color:t.projectionLineColor,stipplePattern:V(t.projectionLineStippleSize),polygonOffset:!0,renderOccluded:P.OccludeAndTransparent,isDecoration:!0}),this._measurementArea=new C({view:i,attached:!0,color1:t.areaColor1,color2:t.areaColor2,isDecoration:!0});const{textColor:n}=i.effectiveTheme,a={attached:!0,backgroundColor:s(r(n),.6),calloutColor:s(r(n),.5),textColor:n,view:i,isDecoration:!0};this._areaLabel=new y({...a,fontSize:I.Large}),this._pathLengthLabel=new y({...a,fontSize:I.Small}),this._cursorSegmentLengthLabel=new y({...a,fontSize:I.Small}),this._perimeterLengthLabel=new y({...a,fontSize:I.Small}),this.addHandles([h((()=>[e.mode,this.visible,e.unit,e.measurementData,e.cursorPoint]),(()=>this._update()),c),h((()=>i.state?.camera),(()=>this._updateLabels()),c),M((()=>this._updateMessageBundle()))]),this._updateMessageBundle()}destroy(){this._measurementArea=a(this._measurementArea),this._path=a(this._path),this._intersectedPath=a(this._intersectedPath),this._perimeter=a(this._perimeter),this._intersectedPerimeter=a(this._intersectedPerimeter),this._areaLabel=a(this._areaLabel),this._pathLengthLabel=a(this._pathLengthLabel),this._cursorSegmentLengthLabel=a(this._cursorSegmentLengthLabel),this._perimeterLengthLabel=a(this._perimeterLengthLabel),this._projectionLines=a(this._projectionLines),this.set("view",null)}_update(){if(this.destroyed||!this.view.ready||!this.view.renderCoordsHelper)return;const{analysisViewData:{measurementData:e},analysisViewData:t}=this;null!=e&&(this._updateViewData(e,t.path,t.cursorPoint),this._updateOrigin(),this._updatePathSegments(),this._updatePerimeterSegments(),this._updateArea(),this._updateProjectionLines(),this._updateLabels())}_updateViewData(e,t,i){const s=t.isValidPolygon,r="geodesic"===e.actualMeasurementMode,a=r?e.geodesicArea:e.area;let o=1;if(a){const t=this._toPreferredAreaUnit(a,this.analysisViewData.unit);o=n(Math.sqrt(t.value)/Math.sqrt(300)),o*=Math.sqrt(m(1,t.unit,"square-meters")),o/=e.unitNormalizer.normalizeDistance(1)}const l={validMeasurement:s,path:t,pathVersion:t.version,cursorPoint:i,measurementData:e,mode:e.actualMeasurementMode,positionsGeographic:e.positionsGeographic,positionsRenderCoords:e.positionsRenderCoords,positionsProjected:e.positionsProjectedWorldCoords,positionsFittedRenderCoords:e.positionsFittedRenderCoords,intersectingSegments:r?e.geodesicIntersectingSegments:e.intersectingSegments,triangleIndices:r?e.geodesicTriangleIndices:e.triangleIndices,fittingMode:e.fittingMode,areaCentroid:r?e.geodesicAreaCentroidRenderCoords:e.areaCentroidRenderCoords,pathLengthLabelSegmentIndex:s?0:t.numVertices-2,perimeterLengthLabelSegmentIndex:0,checkerSize:o};this._set("viewData",l)}_updateOrigin(){const e=this.viewData;w(e.positionsRenderCoords,this._origin),b(this._originTransform,this._origin),this._measurementArea.transform=this._originTransform,this._projectionLines.transform=this._originTransform}_createSegments(e){const t=this.viewData,i=t.path,s=this.view.renderCoordsHelper.spatialReference,r=t.mode,n=[],a=[],o=[],l=t.validMeasurement?i.numVertices:i.numVertices-1;for(let h=0;h<l;++h){const l=t[e][h],c=t[e][(h+1)%i.numVertices];let m=null;switch(r){case"euclidean":m=new A(l,c);break;case"geodesic":m=new D(l,c,s)}t.intersectingSegments.has(h)?o.push(m):a.push(m),n.push(m)}return{all:n,nonIntersecting:a,intersecting:o}}_updatePathSegments(){const{view:{renderCoordsHelper:e},viewData:t,visible:i}=this,s=this._createSegments("positionsRenderCoords"),{cursorPoint:r,mode:n,path:a}=t,o=!a.isValidPolygon,l=e.spatialReference;if(this._cursorSegment=null,a.numVertices>0&&o&&null!=r){if(e.toRenderCoords(r,this._cursorPositionRenderSpace)){const e=t.positionsRenderCoords[a.numVertices-1],i=this._cursorPositionRenderSpace;let r=null;switch(n){case"euclidean":r=new A(e,i);break;case"geodesic":r=new D(e,i,l)}s.nonIntersecting.push(r),this._cursorSegment=r}}this._path.setGeometryFromSegments(s.nonIntersecting,this._origin),this._path.visible=i,this._intersectedPath.setGeometryFromSegments(s.intersecting,this._origin),this._intersectedPath.visible=i,this._pathSegments=s.all}_updatePerimeterSegments(){const e=this.visible&&"euclidean"===this.viewData.mode,t=this._createSegments("positionsFittedRenderCoords");this._perimeter.setGeometryFromSegments(t.nonIntersecting,this._origin),this._perimeter.visible=e,this._intersectedPerimeter.setGeometryFromSegments(t.intersecting,this._origin),this._intersectedPerimeter.visible=e,this._perimeterSegments=t.all}_updateArea(){const e=this.viewData;switch(e.mode){case"euclidean":this._updateAreaEuclidean(e);break;case"geodesic":this._updateAreaGeodesic()}}_updateAreaEuclidean(e){const t=this.visible;e.validMeasurement&&0===e.intersectingSegments.size&&e.triangleIndices?(this._measurementArea.geometry={uv:e.positionsProjected,position:e.positionsFittedRenderCoords,triangleIndices:e.triangleIndices},this._measurementArea.size=[e.checkerSize,e.checkerSize],this._measurementArea.visible=t):this._measurementArea.visible=!1}_updateAreaGeodesic(){this._measurementArea.visible=!1}_updateProjectionLines(){const e=this.viewData,t=this.visible,i=e.path,s=e.mode;if(i.numVertices>0&&e.validMeasurement&&"euclidean"===s){const s=[];for(let t=0;t<i.numVertices;++t){const i=S();f(i,e.positionsRenderCoords[t],this._origin);const r=S();f(r,e.positionsFittedRenderCoords[t],this._origin),s.push([i,r])}this._projectionLines.geometry=s,this._projectionLines.visible=t}else this._projectionLines.geometry=null,this._projectionLines.visible=!1}_updateLabels(){if(this.destroyed)return;const{viewData:e}=this,{measurementData:t,mode:i,path:s}=e;if(!s)return;const r=!s.isValidPolygon,n=this.visible,a=this._formatAreaLabel(this.messages,"geodesic"===i?t.geodesicArea:t.area,this.analysisViewData.unit);null!=a?(this._areaLabel.geometry={type:"point",point:e.areaCentroid},this._areaLabel.text=a,this._areaLabel.visible=e.validMeasurement&&0===e.intersectingSegments.size&&n):this._areaLabel.visible=!1,this._set("areaLabel",a);const o=this._formatLengthLabel(this.messages,"geodesic"===i?t.geodesicPathLength:t.pathLength,this.analysisViewData.unit);if(null!=o&&e.pathLengthLabelSegmentIndex>=0&&e.pathLengthLabelSegmentIndex<this._pathSegments.length){const t=this._pathSegments[e.pathLengthLabelSegmentIndex],i=null!=this._cursorSegment?this._cursorSegment:z;this._pathLengthLabel.distance=this._parameters.labelDistance,this._pathLengthLabel.geometry={type:"corner",left:t,right:i},this._pathLengthLabel.text=o,this._pathLengthLabel.visible=r&&s.numVertices>0&&n}else this._pathLengthLabel.visible=!1;const l="geodesic"===i?e.measurementData.geodesicCursorSegmentLength:e.measurementData.cursorSegmentLength;if(null!=l){const e=this._formatLengthLabel(this.messages,l,this.analysisViewData.unit);this._cursorSegmentLengthLabel.distance=this._parameters.labelDistance,this._cursorSegmentLengthLabel.geometry=null!=this._cursorSegment?{type:"segment",segment:this._cursorSegment,sampleLocation:"end"}:null,this._cursorSegmentLengthLabel.anchor="bottom",this._cursorSegmentLengthLabel.text=e,this._cursorSegmentLengthLabel.visible=r&&0!==l.value&&n}else this._cursorSegmentLengthLabel.visible=!1;this._cursorSegmentLengthLabel.overlaps(this._pathLengthLabel)&&(this._cursorSegmentLengthLabel.visible=!1),this._pathLengthLabel.overlaps(this._areaLabel)&&(this._pathLengthLabel.visible=!1);const h="geodesic"===e.mode,c=h?t.geodesicPathLength:t.perimeterLength,m=this._formatLengthLabel(this.messages,c,this.analysisViewData.unit);if(this._set("perimeterLengthLabel",m),e.validMeasurement&&0===e.intersectingSegments.size){this._perimeterLengthLabel.distance=this._parameters.labelDistance,this._perimeterLengthLabel.anchor="top",this._perimeterLengthLabel.text=m,this._perimeterLengthLabel.visible=!0;let t=!0;for(let i=0;i<e.path.numVertices;++i){const s=(e.perimeterLengthLabelSegmentIndex+i)%e.path.numVertices,r=h?this._pathSegments[s]:this._perimeterSegments[s];if(t=!0,this._perimeterLengthLabel.geometry={type:"segment",segment:r,sampleLocation:"center"},!this._perimeterLengthLabel.overlaps(this._areaLabel))break;t=!1}this._perimeterLengthLabel.visible=t&&n}else this._perimeterLengthLabel.visible=!1}_toPreferredAreaUnit(e,t){return l(e,this._preferredAreaUnit(e,t))}_preferredAreaUnit(e,t){switch(t){case"metric":return u(e.value,e.unit);case"imperial":return p(e.value,e.unit);default:return t}}_preferredLengthUnit(e,t){const i=this._deriveLengthUnitFromAreaUnit(t);switch(i){case"metric":return g(e.value,e.unit);case"imperial":return d(e.value,e.unit);default:return i}}_deriveLengthUnitFromAreaUnit(e){switch(e){case"metric":case"ares":case"hectares":return"metric";case"imperial":case"acres":return"imperial";case"square-inches":return"inches";case"square-feet":return"feet";case"square-yards":return"yards";case"square-miles":return"miles";case"square-us-feet":return"us-feet";case"square-millimeters":return"millimeters";case"square-centimeters":return"centimeters";case"square-decimeters":return"decimeters";case"square-meters":return"meters";case"square-kilometers":return"kilometers"}throw new Error("unhandled area unit")}_formatAreaLabel(e,t,i){return e&&t&&o(e,t,this._preferredAreaUnit(t,i))}_formatLengthLabel(e,t,i){return e&&t&&o(e,t,this._preferredLengthUnit(t,i))}_updateMessageBundle(){this.loadingMessages=!0,R("esri/core/t9n/Units").then((e=>{this.messages=e,this.view&&this._update()})).finally((()=>{this.loadingMessages=!1}))}};var I;e([L()],U.prototype,"_parameters",null),e([L()],U.prototype,"view",void 0),e([L()],U.prototype,"messages",void 0),e([L()],U.prototype,"analysis",void 0),e([L()],U.prototype,"viewData",void 0),e([L()],U.prototype,"analysisViewData",void 0),e([L({readOnly:!0})],U.prototype,"areaLabel",void 0),e([L({readOnly:!0})],U.prototype,"perimeterLengthLabel",void 0),e([L()],U.prototype,"loadingMessages",void 0),e([L()],U.prototype,"visible",null),U=e([_("esri.views.3d.analysis.AreaMeasurement.support.AreaMeasurementVisualization")],U),function(e){e[e.Small=12]="Small",e[e.Large=16]="Large"}(I||(I={}));const O={validMeasurement:!1,path:null,pathVersion:-1,cursorPoint:null,measurementData:null,mode:null,positionsGeographic:null,positionsRenderCoords:null,positionsProjected:null,positionsFittedRenderCoords:null,intersectingSegments:null,triangleIndices:null,fittingMode:null,areaCentroid:null,pathLengthLabelSegmentIndex:null,perimeterLengthLabelSegmentIndex:null,checkerSize:null},z=new A(S(),S());export{U as AreaMeasurementVisualization};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../../chunks/tslib.es6.js";import{clock as t}from"../../../../core/clock.js";import{destroyHandle as i,makeHandle as o}from"../../../../core/handleUtils.js";import{removeMaybe as s}from"../../../../core/maybe.js";import{watch as n,syncAndInitial as r,when as a}from"../../../../core/reactiveUtils.js";import{property as l}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as c}from"../../../../core/accessorSupport/decorators/subclass.js";import{sv3d as u}from"../../../../geometry/support/vectorStacks.js";import{DidPointerMoveRecentlyFlag as p}from"./lengthDimensionManipulatorUtils.js";import{LengthDimensionSubTool as m}from"./LengthDimensionSubTool.js";import{
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import{clock as t}from"../../../../core/clock.js";import{destroyHandle as i,makeHandle as o}from"../../../../core/handleUtils.js";import{removeMaybe as s}from"../../../../core/maybe.js";import{watch as n,syncAndInitial as r,when as a}from"../../../../core/reactiveUtils.js";import{property as l}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as c}from"../../../../core/accessorSupport/decorators/subclass.js";import{sv3d as u}from"../../../../geometry/support/vectorStacks.js";import{DidPointerMoveRecentlyFlag as p}from"./lengthDimensionManipulatorUtils.js";import{LengthDimensionSubTool as m}from"./LengthDimensionSubTool.js";import{pointerMoveTimeoutMs as h}from"./settings.js";import{newIntersector as d}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as v}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{AnalysisToolBase as _}from"../../../interactive/AnalysisToolBase.js";import{SKETCH_KEYS as y}from"../../../interactive/keybindings.js";import{createScreenPointArrayFromEvent as T}from"../../../support/screenUtils.js";var g;!function(e){e.Ready="ready",e.Creating="creating",e.Created="created"}(g||(g={}));let S=class extends _{constructor(e){super(e),this.automaticManipulatorSelection=!1,this.removeIncompleteOnCancel=!1,this._pointerMoveTimerMs=h,this._prevPointerMoveTimeout=null}initialize(){this._intersector=d(this.view.state.viewingMode),this._intersector.options.store=v.MIN,this._lengthDimensionSubTool=new m({analysis:this.analysis,analysisViewData:this.analysisViewData,manipulators:this.manipulators,parentTool:this,view:this.view}),this.addHandles([i(this._lengthDimensionSubTool),o((()=>this._clearPointerMoveTimeout())),n((()=>this.state),(e=>{e===g.Created&&this.finishToolCreation()}),r),a((()=>this.firstGrabbedManipulator),(e=>{this.selectedDimension=e.metadata}),r),n((()=>this.selectedDimension),(()=>this._resetPointerMoveTimeout()),r)])}get state(){return this.analysis.dimensions.some((e=>"length"===e.type))?null!=this._activeSubTool?g.Creating:g.Created:g.Ready}get updating(){return this._lengthDimensionSubTool.updating}get cursor(){return this.active?"crosshair":null}get selectedDimension(){return this.analysisViewData.selectedDimension}set selectedDimension(e){this.analysisViewData.selectedDimension=e}onInputEvent(e){switch(e.type){case"immediate-click":this._clickHandler(e);break;case"immediate-double-click":this._doubleClickHandler(e);break;case"pointer-move":this._pointerMoveHandler(e);break;case"key-down":if(y.cancel===e.key){if(null!=this._activeSubTool&&this._activeSubTool.removeStaged())return void e.stopPropagation();this.active||(this.selectedDimension=null)}else y.delete.includes(e.key)&&this._deleteKeyHandler()}}onActivate(){this._activeSubTool=this._lengthDimensionSubTool}onDeactivate(){null!=this._activeSubTool&&(this._activeSubTool.onDeactivate(),this._activeSubTool=null)}onShow(){this._resetPointerMoveTimeout()}onManipulatorSelectionChanged(){this._lengthDimensionSubTool.onManipulatorSelectionChanged()}onHide(){this.selectedDimension=null}_clickHandler(e){if(this.hasFocusedManipulators)return void e.stopPropagation();if(null==this._activeSubTool)return;const t=this._intersectScreen(e);null!=t&&(this.selectedDimension=this._activeSubTool.onClick({mapPoint:t,pointerType:e.pointerType}),e.stopPropagation())}_doubleClickHandler(e){this.active&&(this.view.activeTool=null,e.stopPropagation())}_pointerMoveHandler(e){if(this._resetPointerMoveTimeout(),null==this._activeSubTool)return;if(this.hasFocusedManipulators)return;const t=this._intersectScreen(e);null!=t&&this._activeSubTool.onPointerMove({mapPoint:t,pointerType:e.pointerType})}_deleteKeyHandler(){null!=this._activeSubTool&&this._activeSubTool.removeStaged(),this._removeSelected()}_intersectScreen(e){const t=T(e);this.view.sceneIntersectionHelper.intersectToolIntersectorScreen(t,this._intersector);const i=this._intersector.results.min,o=u.get();return i.getIntersectionPoint(o)?this.view.renderCoordsHelper.fromRenderCoords(o,this.view.spatialReference):null}_removeSelected(){null!=this.selectedDimension&&(this.analysis.dimensions.remove(this.selectedDimension),this.selectedDimension=null)}_clearPointerMoveTimeout(){this._prevPointerMoveTimeout=s(this._prevPointerMoveTimeout)}_resetPointerMoveTimeout(){this._clearPointerMoveTimeout(),this.manipulators.forEach((e=>{e.manipulator.state|=p})),this._prevPointerMoveTimeout=t.setTimeout((()=>{this.manipulators.forEach((e=>{e.manipulator.state&=~p}))}),this._pointerMoveTimerMs)}get testInfo(){return{...this._lengthDimensionSubTool.testInfo,setManipulatorAutoHideDelay:e=>{this._pointerMoveTimerMs=e,this._resetPointerMoveTimeout()}}}};e([l({constructOnly:!0})],S.prototype,"view",void 0),e([l({constructOnly:!0})],S.prototype,"analysis",void 0),e([l({readOnly:!0})],S.prototype,"state",null),e([l({readOnly:!0})],S.prototype,"updating",null),e([l({readOnly:!0})],S.prototype,"cursor",null),e([l({constructOnly:!0})],S.prototype,"analysisViewData",void 0),e([l()],S.prototype,"selectedDimension",null),e([l()],S.prototype,"automaticManipulatorSelection",void 0),e([l()],S.prototype,"_activeSubTool",void 0),e([l()],S.prototype,"_lengthDimensionSubTool",void 0),S=e([c("esri.views.3d.analysis.Dimension.DimensionTool")],S);export{S as DimensionTool};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../../chunks/tslib.es6.js";import i from"../../../../Color.js";import"../../../../intl.js";import s from"../../../../core/Accessor.js";import{makeHandle as t,destroyHandle as a}from"../../../../core/handleUtils.js";import{mapCollection as r,watch as n,syncAndInitial as o,when as l,sync as
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import i from"../../../../Color.js";import"../../../../intl.js";import s from"../../../../core/Accessor.js";import{makeHandle as t,destroyHandle as a}from"../../../../core/handleUtils.js";import{mapCollection as r,watch as n,syncAndInitial as o,when as l,sync as m}from"../../../../core/reactiveUtils.js";import{pt2px as c}from"../../../../core/screenUtils.js";import{property as d}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as h}from"../../../../core/accessorSupport/decorators/subclass.js";import{Z as p}from"../../../../chunks/vec4f64.js";import{LengthDimensionVisualization as u}from"./LengthDimensionVisualization.js";import{Settings as f}from"./settings.js";import{RenderOccludedFlag as g}from"../../webgl-engine/lib/Material.js";import{LineMarkerMaterial as M}from"../../webgl-engine/materials/LineMarkerMaterial.js";import{createStipplePatternSimple as _}from"../../webgl-engine/materials/lineStippleUtils.js";import{RibbonLineMaterial as y}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{LineMarkerAnchor as w}from"../../webgl-engine/shaders/LineMarkerTechniqueConfiguration.js";import{onLocaleChange as v}from"../../../../intl/locale.js";import{fetchMessageBundle as L}from"../../../../intl/messages.js";let z=class extends s{get analysis(){return this.analysisViewData.analysis}get visible(){return this.analysisViewData.visible}constructor(e){super(e),this.loadingMessages=!1,this._messages=null}initialize(){this._settings=new f(this.view.effectiveTheme);const e=this.isDecoration;this._markerMaterial=new M({width:1,anchor:w.Tip,color:p,placement:"begin-end",worldSpace:!0,hideOnShortSegments:!0,hasTip:!0,renderOccluded:g.OccludeAndTransparent,markerPrimitive:"triangle",isDecoration:e}),this._dimensionLineMaterial=new y({width:1,color:p,renderOccluded:g.OccludeAndTransparent,markerParameters:this._markerMaterial.parameters,isDecoration:e}),this._offsetLineMaterial=new y({width:1,color:p,renderOccluded:g.OccludeAndTransparent,stipplePattern:_(5),isDecoration:e}),this._smallDimensionLineMaterial=new y({width:1,color:p,renderOccluded:g.OccludeAndTransparent,isDecoration:e}),this._smallOffsetLineMaterial=new y({width:1,color:p,renderOccluded:g.OccludeAndTransparent,stipplePattern:_(5),isDecoration:e});for(const i of this._lineMaterials())this.view._stage.add(i),this.addHandles(t((()=>{this.view._stage?.remove(i),i.dispose()})));const s=r((()=>this.analysisViewData.computations),(({computation:e})=>this._createVisualization(e)));this._dimensionVisualizations=s,this.addHandles([a(s),n((()=>i.toUnitRGBA(this.analysis.style.color)),(e=>{for(const i of this._lineMaterials())i.setParameters({color:e})}),o),n((()=>this.analysis.style.lineSize),(e=>{const i=c(e);this._markerMaterial.setParameters({width:i*this._settings.markers.lineSizeFraction}),this._dimensionLineMaterial.setParameters({width:i,markerParameters:this._markerMaterial.parameters});const s=Math.max(i*this._settings.offsetLine.lineSizeFraction,1);this._offsetLineMaterial.setParameters({width:s})}),o),n((()=>({camera:this.view.state.camera,style:j(this.analysis)})),(({camera:e,style:i})=>{for(const{visualization:s}of this._dimensionVisualizations)s.updateCameraDependentElements(e,s.computation.geometry,i),s.updateLabelStyle(i)})),n((()=>this.visible),(e=>{for(const{visualization:i}of this._dimensionVisualizations)i.visible=e}))]),this.addHandles([v((()=>this._updateMessageBundle())),l((()=>!this.loadingMessages),(()=>{for(const{visualization:e}of this._dimensionVisualizations)e.updateUnitsMessages(this._messages)}),m)]),this._updateMessageBundle()}get testInfo(){return{visualizations:this._dimensionVisualizations.items.map((({visualization:e})=>e)),disablePartialOcclusion:()=>{for(const e of this._lineMaterials())e.setParameters({renderOccluded:g.Occlude})}}}_createVisualization(e){const i=new u({analysis:this.analysis,computation:e,view:this.view,visible:this.visible,markerMaterial:this._markerMaterial,dimensionLineMaterial:this._dimensionLineMaterial,offsetLineMaterial:this._offsetLineMaterial,smallDimensionLineMaterial:this._smallDimensionLineMaterial,smallOffsetLineMaterial:this._smallOffsetLineMaterial,messages:this._messages,isDecoration:this.isDecoration});return{visualization:i,remove:()=>i.destroy()}}_lineMaterials(){return[this._markerMaterial,this._dimensionLineMaterial,this._offsetLineMaterial,this._smallDimensionLineMaterial,this._smallOffsetLineMaterial]}async _updateMessageBundle(){this.loadingMessages=!0;try{this._messages=await L("esri/core/t9n/Units")}finally{this.loadingMessages=!1}}};function j(e){const{fontSize:i,lineSize:s,textColor:t,textBackgroundColor:a}=e.style;return{fontSize:i,lineSize:s,textBackgroundColor:a.clone(),textColor:t.clone()}}e([d({constructOnly:!0})],z.prototype,"analysisViewData",void 0),e([d({constructOnly:!0,nonNullable:!0})],z.prototype,"view",void 0),e([d({constructOnly:!0})],z.prototype,"isDecoration",void 0),e([d()],z.prototype,"analysis",null),e([d()],z.prototype,"visible",null),e([d()],z.prototype,"loadingMessages",void 0),z=e([h("esri.views.3d.analysis.Dimension.DimensionVisualization")],z);export{z as DimensionVisualization};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../Color.js";import"../../../../geometry.js";import{LengthDimensionMeasureType as i}from"../../../../analysis/dimensionUtils.js";import n from"../../../../analysis/LengthDimension.js";import a from"../../../../core/Accessor.js";import s from"../../../../core/Handles.js";import{destroyHandle as o}from"../../../../core/handleUtils.js";import{equals as r}from"../../../../core/lang.js";import{destroyMaybe as p}from"../../../../core/maybe.js";import{memoize as l}from"../../../../core/memoize.js";import{ignoreAbortErrors as u}from"../../../../core/promiseUtils.js";import{mapCollection as d,watch as c,sync as m,syncAndInitial as h,initial as g,when as f}from"../../../../core/reactiveUtils.js";import{property as _}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as M}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as y}from"../../../../chunks/vec3f64.js";import{UpdatingHandles as v}from"../../../../core/support/UpdatingHandles.js";import{clonePoint as S}from"../../../../layers/graphics/hydratedFeatures.js";import{reapplyConstraint as C,LengthDimensionConstraint as b,applyConstraint as w,computeConstraint as D,constraintDependencies as P}from"./lengthDimensionConstraintUtils.js";import{LengthDimensionManipulators as O,createPointManipulator as j,pointManipulatorHandles as H,createOffsetManipulator as T,offsetManipulatorHandles as G,createOrientationManipulator as I,headingManipulatorHandles as z,rotationManipulatorHandles as x,createMeasureTypeManipulator as U,measureTypeManipulatorHandles as V,updateOffsetManipulatorTransform as R,updateHeadingManipulatorTransform as A,updateRotationManipulatorTransform as k,updateMeasureTypeManipulatorTransform as E,unfocusedOffsetWidth as F,focusedOffsetWidth as L,updateOrientationManipulator as q}from"./lengthDimensionManipulatorUtils.js";import{isValidComputation as B,arePointsVerticallyAligned as N,computeGeometryFromDimension as J,computationToGeometryDependencies as K}from"./lengthDimensionUtils.js";import{settings as Q}from"./settings.js";import{getRotateHeadingTexture as W}from"../Slice/images/Factory.js";import{SnappingVisualizer3D as X}from"../../interactive/SnappingVisualizer3D.js";import{LineVisualElement as Y}from"../../interactive/visualElements/LineVisualElement.js";import{VerticesVisualElement as Z}from"../../interactive/visualElements/VerticesVisualElement.js";import{RenderOccludedFlag as $}from"../../webgl-engine/lib/Material.js";import{ImageMaterial as tt}from"../../webgl-engine/materials/ImageMaterial.js";import{createStipplePatternSimple as et}from"../../webgl-engine/materials/lineStippleUtils.js";import{RibbonLineMaterial as it}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{createCoordinateHelper as nt}from"../../../interactive/coordinateHelper.js";import{EditGeometry as at}from"../../../interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as st}from"../../../interactive/editGeometry/EditGeometryOperations.js";import{acquire as ot}from"../../../interactive/snapping/SceneSnappingManagerPool.js";import{SnappingContext as rt}from"../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as pt}from"../../../interactive/snapping/SnappingDragPipelineStep.js";import{SnappingOperation as lt}from"../../../interactive/snapping/SnappingOperation.js";import{setupSnappingToggleHandles as ut}from"../../../interactive/snapping/snappingUtils.js";import dt from"../../../../geometry/Point.js";let ct=class extends a{constructor(t){super(t),this._stagedDimension=null,this._computationManipulators=new Map,this._computationHandles=new s,this._updatingHandles=new v,this._getSnappingContext=l((t=>new rt({elevationInfo:{mode:"absolute-height",offset:0},pointer:t,editGeometryOperations:new st(new at("point",nt(!0,!1,this.view.spatialReference))),visualizer:new X})));const{view:i}=t;this._snappingManagerResult=ot(i),this.addHandles(this._snappingManagerResult),this._unfocusedOffsetManipulatorMaterial=mt(),this._focusedOffsetManipulatorMaterial=mt(),this._thinOffsetManipulatorMaterial=mt(),this._thinOffsetManipulatorMaterial.setParameters({stipplePattern:et(2)}),this._constraintSnappingIndicator=new Y({view:i,attached:!0,width:1,color:e.toUnitRGBA(Q.constraint.color),renderOccluded:$.OccludeAndTransparent,stipplePattern:et(5),isDecoration:!0});const n=e.toUnitRGBA(Q.disabledPointIndicator.color);this._stagedStartIndicator=new Z({view:i,attached:!1,elevationInfo:{mode:"absolute-height",offset:0},spatialReference:t.view.renderCoordsHelper.spatialReference,color:n,size:2*Q.disabledPointIndicator.radius,outlineSize:0,renderOccluded:$.OccludeAndTransparent,isDecoration:!0})}initialize(){this._snappingOperation=new lt({view:this.view});const{color:t,contrastColor:e}=Q.orientationManipulator,i=!this.view._stage?.renderView.renderingContext.driverTest.svgPremultipliesAlpha.result;this._orientationManipulatorTexture=W(this.view.toolViewManager.textures,{accentColor:t,contrastColor:e,preMultiplyAlpha:i}),this._orientationManipulatorMaterial=new tt({transparent:!0,writeDepth:!1,textureId:this._orientationManipulatorTexture.texture.id,renderOccluded:$.Opaque,isDecoration:!0});const n=d((()=>this.analysisViewData.computations),(({computation:t})=>this._createManipulators(t)));this.addHandles(o(n)),this.addHandles([c((()=>({stagedPoint:this._snappingOperation.stagedPoint,stagedComputation:this._stagedComputation})),(({stagedPoint:t,stagedComputation:e})=>{if(null==e||null==t)return;const i=S(t,new dt);this._applyPointUpdate(e,{endPoint:i})}),m),c((()=>({stagedDimension:this._stagedDimension,selectedComputation:this.analysisViewData.selectedComputation,firstGrabbedManipulator:this.firstGrabbedManipulator})),((t,e)=>{const{stagedDimension:i,selectedComputation:n,firstGrabbedManipulator:a}=t;if(i===e?.stagedDimension&&a===e?.firstGrabbedManipulator){for(const s of[n,e?.selectedComputation])if(null!=s){const e=this._computationManipulators.get(s);null!=e&&this._updateManipulators(s,e,t)}}else for(const[s,o]of this._computationManipulators)this._updateManipulators(s,o,t)}),h),c((()=>this.analysis.style.lineSize),(t=>{this._updateManipulatorStyle(t)}),g),c((()=>this.view.state.camera),(()=>{null!=this._stagedComputation&&this._updateStagedDimensionOffset(this._stagedComputation)})),c((()=>{const t=this._stagedComputation;if(!t)return null;const e=t.elevationAlignedStartPoint,i=y();return null!=e&&this.view.renderCoordsHelper.toRenderCoords(e,i)?i:null}),(t=>{null!=t?(this._stagedStartIndicator.vertices=[t],this._stagedStartIndicator.attached=!0):this._stagedStartIndicator.attached=!1}))]),this.addHandles(this._constraintHandles),this.addHandles(this._snappingIndicatorHandles),ut(this,(()=>{const t=this._activeComputation,e=this._stagedComputation;if(null==t||null!=e){const t=this.view.inputManager.latestPointerType??"mouse",e=this._getSnappingContext(t);this._updatingHandles.addPromise(u(this._snappingOperation.resnap(this._snappingManager,e)))}if(null!=t){const{start:e,end:i}=this._computationManipulators.get(t);if(e.grabbing||i.grabbing){const i=e.grabbing?"start":"end",n=this._computeConstraint(t);C(t,i,{constraint:n,view:this.view})}}}))}destroy(){this._snappingOperation=p(this._snappingOperation),this._computationHandles.destroy(),this._constraintSnappingIndicator.destroy(),this._stagedStartIndicator.destroy(),this._orientationManipulatorMaterial.dispose(),this._orientationManipulatorTexture.release()}get updating(){return this._updatingHandles.updating||this._snappingManager.updating}get firstGrabbedManipulator(){return this.parentTool.firstGrabbedManipulator}get hasGrabbedManipulators(){return this.parentTool.hasGrabbedManipulators}get snappingOptions(){return this._snappingManager.options}get _snappingManager(){return this._snappingManagerResult.snappingManager}get _activeComputation(){if(null!=this._stagedComputation)return this._stagedComputation;const{selectedComputation:t}=this.analysisViewData;return this.hasGrabbedManipulators&&null!=t?t:null}get _stagedComputation(){const t=this._stagedDimension,e=this.analysisViewData.computations.at(-1)?.computation;return null==t||null==e||e.dimension!==t?null:e}get _constraintHandles(){return[f((()=>this.analysisViewData.selectedComputation),(t=>{t.previousConstraint=this._computeConstraint(t)}),{...h,equals:r}),c((()=>{const t=this._activeComputation;if(null==t)return null;const{measureType:e,orientation:i}=t.dimension;return{measureType:e,orientation:i,computation:t}}),((t,e)=>{if(null!=t&&null==e){const{measureType:e,orientation:n,computation:a}=t;switch(a.previousConstraint){case b.Horizontal:a.preConstraintProperties={measureType:i.Horizontal,orientation:0};break;case b.Vertical:a.preConstraintProperties={measureType:i.Vertical,orientation:0};break;case b.Direct:a.preConstraintProperties={measureType:i.Direct,orientation:n};break;default:a.preConstraintProperties={measureType:e,orientation:n}}}null==t&&null!=e&&(e.computation.preConstraintProperties=null)}),m)]}get _snappingIndicatorHandles(){const t="snapping-indicator-event-handles";return[c((()=>({stagedComputation:this._stagedComputation,activeComputation:this._activeComputation})),(({stagedComputation:e,activeComputation:i})=>{const n=this._constraintSnappingIndicator;if(this.removeHandles(t),null!=i)if(i===e)n.attached=!0;else{const{start:e,end:a}=this._computationManipulators.get(i),s=()=>{n.attached=e.grabbing||a.grabbing};s(),this.addHandles([e.events.on("grab-changed",s),a.events.on("grab-changed",s)],t)}else n.attached=!1})),c((()=>{const t=this._activeComputation;return null!=t?{geometry:t.geometry,constraint:t.previousConstraint}:{}}),(({geometry:t,constraint:e})=>{const i=this._constraintSnappingIndicator;null!=t&&null!=e&&e!==b.Direct?(i.visible=!0,i.setGeometryFromSegment(t.directSegment)):i.visible=!1}))]}removeStaged(){return null!=this._stagedDimension&&(this.analysis.dimensions.remove(this._stagedDimension),this._stagedDimension=null,!0)}onDeactivate(){this.removeStaged(),this._resetSnappingState()}onClick(t){const{_stagedDimension:e}=this;if(null==e){const e=this._onUnstagedClick(t);return this.analysis.dimensions.add(e),null}return this._onStagedClick(t),e}onPointerMove({mapPoint:t,pointerType:e}){if("touch"===e)return;const i=this._getSnappingContext(e);this._updatingHandles.addPromise(u(this._snappingOperation.snap({point:t},this._snappingManager,i)))}onManipulatorSelectionChanged(){if(null!=this.analysisViewData.selectedComputation){this._computationManipulators.get(this.analysisViewData.selectedComputation).offset.selected||(this.analysisViewData.selectedDimension=null)}}_onUnstagedClick({mapPoint:t,pointerType:e}){let a=t;if("mouse"===e){const i=this._getSnappingContext(e);a=this._snappingManager.update({point:t,context:i})}const s=new n({startPoint:S(a,new dt),endPoint:null,measureType:i.Horizontal});return this._stagedDimension=s,this._resetSnappingState(),s}_onStagedClick({mapPoint:t,pointerType:e}){const i=this._stagedComputation;if(null==i)return;let n=t;if("mouse"===e){const i=this._getSnappingContext(e);n=this._snappingManager.update({point:t,context:i})}const a=S(n,new dt);this._applyPointUpdate(i,{endPoint:a}),this._stagedDimension=null,this._resetSnappingState()}_resetSnappingState(){this._snappingManager.doneSnapping(),this._snappingOperation.abort(),this._snappingOperation.stagedPoint=null}_createManipulators(t){const e=this._setupPointManipulator(t,{isStart:!0}),n=this._setupPointManipulator(t,{isStart:!1}),a=this._setupOffsetManipulator(t),s=this._setupHeadingManipulator(t),o=this._setupRotationManipulator(t),r=this._setupMeasureTypeManipulator(t,i.Direct),p=this._setupMeasureTypeManipulator(t,i.Horizontal),l=this._setupMeasureTypeManipulator(t,i.Vertical),u=new O({start:e,end:n,offset:a,heading:s,rotation:o,direct:r,horizontal:p,vertical:l});return this._setupComputationToManipulatorsSync(t,u),this._computationManipulators.set(t,u),this.manipulators.addMany(u.values()),{manipulators:u,remove:()=>{this._computationHandles.remove(t),this._computationManipulators.delete(t);for(const t of u.values())this.manipulators.remove(t)}}}_setupComputationToManipulatorsSync(t,e){this._computationHandles.add([c((()=>t.geometry),(()=>this._updateManipulators(t,e)),{...h,equals:r})],t)}_setupPointManipulator(t,e){const{view:i}=this,{dimension:n}=t,a=j(i,{metadata:n}),s=H(a,{isStart:e.isStart,createSnappingPipelineStep:t=>pt({snappingContext:this._getSnappingContext(t),snappingManager:this._snappingManager,updatingHandles:this._updatingHandles}),dimension:n,onUpdate:e=>this._applyPointUpdate(t,e),view:i});return this._computationHandles.add(s,t),a}_setupOffsetManipulator(t){const{view:e}=this,i=T(e,{lineSizePt:this.analysis.style.lineSize,unfocusedMaterial:this._unfocusedOffsetManipulatorMaterial,focusedMaterial:this._focusedOffsetManipulatorMaterial,metadata:t.dimension}),n=G(i,{computation:t,view:e});return this._computationHandles.add(n,t),i}_setupHeadingManipulator(t){const{view:e}=this,i=I(e,{lineSizePt:this.analysis.style.lineSize,material:this._orientationManipulatorMaterial,metadata:t.dimension}),n=z(i,{computation:t,view:e});return this._computationHandles.add(n,t),i}_setupRotationManipulator(t){const{view:e}=this,i=I(e,{lineSizePt:this.analysis.style.lineSize,material:this._orientationManipulatorMaterial,metadata:t.dimension}),n=x(i,{computation:t,view:e});return this._computationHandles.add(n,t),i}_setupMeasureTypeManipulator(t,e){const{view:i}=this,n=U(i,{lineSizePt:this.analysis.style.lineSize,unfocusedMaterial:this._unfocusedOffsetManipulatorMaterial,focusedMaterial:this._focusedOffsetManipulatorMaterial,thinOffsetManipulatorMaterial:this._thinOffsetManipulatorMaterial,metadata:t.dimension}),a=V(n,{computation:t,manipulatorMeasureType:e,view:i});return this._computationHandles.add(a,t),n}_updateManipulators(t,e,n={stagedDimension:this._stagedDimension,selectedComputation:this.analysisViewData.selectedComputation,firstGrabbedManipulator:this.firstGrabbedManipulator}){const{stagedDimension:a,selectedComputation:s,firstGrabbedManipulator:o}=n,{start:r,end:p,offset:l,heading:u,rotation:d}=e,c=s===t,m=B(t),{dimension:h}=t;for(const i of e.values()){const t=m&&null==a&&(null==o||i===o);i===l?(i.available=t,i.selected=c):i.available=t&&c}if(!m)return;null!=this._computeConstraint(t)?e.forEachMeasureTypeManipulator((t=>t.available=!1)):e.manipulatorForMeasureType(h.measureType).available=!1;for(const _ of[u,d])h.measureType===i.Direct&&0!==h.offset||(_.available=!1);N(t)?d.available=!1:u.available=!1;const{geometry:g}=t;r.renderLocation=g.directSegment.startRenderSpace,p.renderLocation=g.directSegment.endRenderSpace;const{renderCoordsHelper:f}=this.view;R(l,g,f),u.available&&A(u,t,f),d.available&&k(d,t,f),e.forEachMeasureTypeManipulator(((e,i)=>{e.available&&E(e,t,i,f)}))}_updateManipulatorStyle(t){const e=F(t),i=L(t),n={lineSizePt:t,material:this._orientationManipulatorMaterial};for(const{offset:a,heading:s,rotation:o}of this._computationManipulators.values())a.radius=i/2,q(s,n),q(o,n);this._unfocusedOffsetManipulatorMaterial.setParameters({width:e}),this._focusedOffsetManipulatorMaterial.setParameters({width:i})}_applyPointUpdate(t,e){const{view:i}=this,n=K(t);"startPoint"in e&&(n.elevationAlignedStartPoint=e.startPoint),"endPoint"in e&&(n.elevationAlignedEndPoint=e.endPoint);const a=J(n,i.renderCoordsHelper);if(null==a)return;const s=this._computeConstraint({...n,geometry:a});w(t,e,{...n,constraint:s,unconstrainedGeometry:a,view:i}),t===this._stagedComputation&&this._updateStagedDimensionOffset(t)}_updateStagedDimensionOffset(t){if(null==t.geometry)return;t.geometry.directSegment.eval(.5,ht);const e=this.view.state.camera.computeRenderPixelSizeAt(ht);t.dimension.offset=Q.initialOffsetPx*e}_computeConstraint(t){return D(P(t,this._snappingManager.options),this.view)}get testInfo(){const t=t=>this.analysisViewData.computations.find((({computation:e})=>e.dimension===t))?.computation;return{disableManipulatorPartialOcclusion:()=>{this._stagedStartIndicator.renderOccluded=$.Occlude,this.manipulators.forEach((({manipulator:t})=>{for(const{geometry:e}of t.renderObjects)e.material.setParameters({renderOccluded:$.Occlude})}))},getManipulatorsForDimension:e=>this._computationManipulators.get(t(e)),getComputationForDimension:e=>t(e),getConstraintForDimension:e=>{const i=t(e);return null!=i?this._computeConstraint(i):null},stagedDimension:this._stagedDimension,stagedStartIndicator:this._stagedStartIndicator,constraintSnappingIndicator:this._constraintSnappingIndicator,snappingManager:this._snappingManager}}};function mt(){const{color:t}=Q.offsetManipulator;return new it({color:e.toUnitRGBA(t),width:1,renderOccluded:$.OccludeAndTransparent,writeDepth:!1,hasPolygonOffset:!0,isDecoration:!0})}t([_({constructOnly:!0})],ct.prototype,"analysis",void 0),t([_({constructOnly:!0})],ct.prototype,"analysisViewData",void 0),t([_({constructOnly:!0})],ct.prototype,"manipulators",void 0),t([_({constructOnly:!0})],ct.prototype,"parentTool",void 0),t([_({constructOnly:!0,nonNullable:!0})],ct.prototype,"view",void 0),t([_({readOnly:!0})],ct.prototype,"updating",null),t([_()],ct.prototype,"firstGrabbedManipulator",null),t([_()],ct.prototype,"hasGrabbedManipulators",null),t([_()],ct.prototype,"snappingOptions",null),t([_()],ct.prototype,"_stagedDimension",void 0),t([_()],ct.prototype,"_activeComputation",null),t([_()],ct.prototype,"_stagedComputation",null),ct=t([M("esri.views.3d.analysis.Dimension.LengthDimensionSubTool")],ct);const ht=y();export{ct as LengthDimensionSubTool};
|
|
5
|
+
import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../Color.js";import"../../../../geometry.js";import{LengthDimensionMeasureType as i}from"../../../../analysis/dimensionUtils.js";import n from"../../../../analysis/LengthDimension.js";import a from"../../../../core/Accessor.js";import s from"../../../../core/Handles.js";import{destroyHandle as o}from"../../../../core/handleUtils.js";import{equals as r}from"../../../../core/lang.js";import{destroyMaybe as p}from"../../../../core/maybe.js";import{memoize as l}from"../../../../core/memoize.js";import{ignoreAbortErrors as u}from"../../../../core/promiseUtils.js";import{mapCollection as d,watch as c,sync as m,syncAndInitial as h,initial as g,when as _}from"../../../../core/reactiveUtils.js";import{property as f}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as M}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as y}from"../../../../chunks/vec3f64.js";import{UpdatingHandles as v}from"../../../../core/support/UpdatingHandles.js";import{clonePoint as S}from"../../../../layers/graphics/hydratedFeatures.js";import{reapplyConstraint as C,LengthDimensionConstraint as w,applyConstraint as b,computeConstraint as D,constraintDependencies as O}from"./lengthDimensionConstraintUtils.js";import{LengthDimensionManipulators as P,createPointManipulator as j,pointManipulatorHandles as H,createOffsetManipulator as T,offsetManipulatorHandles as G,createOrientationManipulator as I,headingManipulatorHandles as z,rotationManipulatorHandles as x,createMeasureTypeManipulator as U,measureTypeManipulatorHandles as V,updateOffsetManipulatorTransform as R,updateHeadingManipulatorTransform as A,updateRotationManipulatorTransform as k,updateMeasureTypeManipulatorTransform as E,updateOrientationManipulator as F,unfocusedOffsetWidth as L,focusedOffsetWidth as q}from"./lengthDimensionManipulatorUtils.js";import{isValidComputation as B,arePointsVerticallyAligned as N,computeGeometryFromDimension as J,computationToGeometryDependencies as K}from"./lengthDimensionUtils.js";import{Settings as Q}from"./settings.js";import{getRotateHeadingTexture as W}from"../Slice/images/Factory.js";import{SnappingVisualizer3D as X}from"../../interactive/SnappingVisualizer3D.js";import{LineVisualElement as Y}from"../../interactive/visualElements/LineVisualElement.js";import{VerticesVisualElement as Z}from"../../interactive/visualElements/VerticesVisualElement.js";import{RenderOccludedFlag as $}from"../../webgl-engine/lib/Material.js";import{ImageMaterial as tt}from"../../webgl-engine/materials/ImageMaterial.js";import{createStipplePatternSimple as et}from"../../webgl-engine/materials/lineStippleUtils.js";import{RibbonLineMaterial as it}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{createCoordinateHelper as nt}from"../../../interactive/coordinateHelper.js";import{EditGeometry as at}from"../../../interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as st}from"../../../interactive/editGeometry/EditGeometryOperations.js";import{acquire as ot}from"../../../interactive/snapping/SceneSnappingManagerPool.js";import{SnappingContext as rt}from"../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as pt}from"../../../interactive/snapping/SnappingDragPipelineStep.js";import{SnappingOperation as lt}from"../../../interactive/snapping/SnappingOperation.js";import{setupSnappingToggleHandles as ut}from"../../../interactive/snapping/snappingUtils.js";import dt from"../../../../geometry/Point.js";let ct=class extends a{constructor(t){super(t),this._stagedDimension=null,this._computationManipulators=new Map,this._computationHandles=new s,this._updatingHandles=new v,this._getSnappingContext=l((t=>new rt({elevationInfo:{mode:"absolute-height",offset:0},pointer:t,editGeometryOperations:new st(new at("point",nt(!0,!1,this.view.spatialReference))),visualizer:new X})));const{view:i}=t;this._settings=new Q(i.effectiveTheme),this._snappingManagerResult=ot(i),this.addHandles(this._snappingManagerResult),this._unfocusedOffsetManipulatorMaterial=this._createOffsetManipulatorMaterial(),this._focusedOffsetManipulatorMaterial=this._createOffsetManipulatorMaterial(),this._thinOffsetManipulatorMaterial=this._createOffsetManipulatorMaterial(),this._thinOffsetManipulatorMaterial.setParameters({stipplePattern:et(2)}),this._constraintSnappingIndicator=new Y({view:i,attached:!0,width:1,color:e.toUnitRGBA(this._settings.constraint.color),renderOccluded:$.OccludeAndTransparent,stipplePattern:et(5),isDecoration:!0});const n=e.toUnitRGBA(this._settings.disabledPointIndicator.color);this._stagedStartIndicator=new Z({view:i,attached:!1,elevationInfo:{mode:"absolute-height",offset:0},spatialReference:t.view.renderCoordsHelper.spatialReference,color:n,size:2*this._settings.disabledPointIndicator.radius,outlineSize:0,renderOccluded:$.OccludeAndTransparent,isDecoration:!0})}initialize(){this._snappingOperation=new lt({view:this.view});const{color:t,contrastColor:e}=this._settings.orientationManipulator,i=!this.view._stage?.renderView.renderingContext.driverTest.svgPremultipliesAlpha.result;this._orientationManipulatorTexture=W(this.view.toolViewManager.textures,{accentColor:t,contrastColor:e,preMultiplyAlpha:i}),this._orientationManipulatorMaterial=new tt({transparent:!0,writeDepth:!1,textureId:this._orientationManipulatorTexture.texture.id,renderOccluded:$.Opaque,isDecoration:!0});const n=d((()=>this.analysisViewData.computations),(({computation:t})=>this._createManipulators(t)));this.addHandles(o(n)),this.addHandles([c((()=>({stagedPoint:this._snappingOperation.stagedPoint,stagedComputation:this._stagedComputation})),(({stagedPoint:t,stagedComputation:e})=>{if(null==e||null==t)return;const i=S(t,new dt);this._applyPointUpdate(e,{endPoint:i})}),m),c((()=>({stagedDimension:this._stagedDimension,selectedComputation:this.analysisViewData.selectedComputation,firstGrabbedManipulator:this.firstGrabbedManipulator})),((t,e)=>{const{stagedDimension:i,selectedComputation:n,firstGrabbedManipulator:a}=t;if(i===e?.stagedDimension&&a===e?.firstGrabbedManipulator){for(const s of[n,e?.selectedComputation])if(null!=s){const e=this._computationManipulators.get(s);null!=e&&this._updateManipulators(s,e,t)}}else for(const[s,o]of this._computationManipulators)this._updateManipulators(s,o,t)}),h),c((()=>this.analysis.style.lineSize),(t=>{this._updateManipulatorStyle(t)}),g),c((()=>this.view.state.camera),(()=>{null!=this._stagedComputation&&this._updateStagedDimensionOffset(this._stagedComputation)})),c((()=>{const t=this._stagedComputation;if(!t)return null;const e=t.elevationAlignedStartPoint,i=y();return null!=e&&this.view.renderCoordsHelper.toRenderCoords(e,i)?i:null}),(t=>{null!=t?(this._stagedStartIndicator.vertices=[t],this._stagedStartIndicator.attached=!0):this._stagedStartIndicator.attached=!1}))]),this.addHandles(this._constraintHandles),this.addHandles(this._snappingIndicatorHandles),ut(this,(()=>{const t=this._activeComputation,e=this._stagedComputation;if(null==t||null!=e){const t=this.view.inputManager.latestPointerType??"mouse",e=this._getSnappingContext(t);this._updatingHandles.addPromise(u(this._snappingOperation.resnap(this._snappingManager,e)))}if(null!=t){const{start:e,end:i}=this._computationManipulators.get(t);if(e.grabbing||i.grabbing){const i=e.grabbing?"start":"end",n=this._computeConstraint(t);C(t,i,{constraint:n,view:this.view})}}}))}destroy(){this._snappingOperation=p(this._snappingOperation),this._computationHandles.destroy(),this._constraintSnappingIndicator.destroy(),this._stagedStartIndicator.destroy(),this._orientationManipulatorMaterial.dispose(),this._orientationManipulatorTexture.release()}get updating(){return this._updatingHandles.updating||this._snappingManager.updating}get firstGrabbedManipulator(){return this.parentTool.firstGrabbedManipulator}get hasGrabbedManipulators(){return this.parentTool.hasGrabbedManipulators}get snappingOptions(){return this._snappingManager.options}get _snappingManager(){return this._snappingManagerResult.snappingManager}get _activeComputation(){if(null!=this._stagedComputation)return this._stagedComputation;const{selectedComputation:t}=this.analysisViewData;return this.hasGrabbedManipulators&&null!=t?t:null}get _stagedComputation(){const t=this._stagedDimension,e=this.analysisViewData.computations.at(-1)?.computation;return null==t||null==e||e.dimension!==t?null:e}get _constraintHandles(){return[_((()=>this.analysisViewData.selectedComputation),(t=>{t.previousConstraint=this._computeConstraint(t)}),{...h,equals:r}),c((()=>{const t=this._activeComputation;if(null==t)return null;const{measureType:e,orientation:i}=t.dimension;return{measureType:e,orientation:i,computation:t}}),((t,e)=>{if(null!=t&&null==e){const{measureType:e,orientation:n,computation:a}=t;switch(a.previousConstraint){case w.Horizontal:a.preConstraintProperties={measureType:i.Horizontal,orientation:0};break;case w.Vertical:a.preConstraintProperties={measureType:i.Vertical,orientation:0};break;case w.Direct:a.preConstraintProperties={measureType:i.Direct,orientation:n};break;default:a.preConstraintProperties={measureType:e,orientation:n}}}null==t&&null!=e&&(e.computation.preConstraintProperties=null)}),m)]}get _snappingIndicatorHandles(){const t="snapping-indicator-event-handles";return[c((()=>({stagedComputation:this._stagedComputation,activeComputation:this._activeComputation})),(({stagedComputation:e,activeComputation:i})=>{const n=this._constraintSnappingIndicator;if(this.removeHandles(t),null!=i)if(i===e)n.attached=!0;else{const{start:e,end:a}=this._computationManipulators.get(i),s=()=>{n.attached=e.grabbing||a.grabbing};s(),this.addHandles([e.events.on("grab-changed",s),a.events.on("grab-changed",s)],t)}else n.attached=!1})),c((()=>{const t=this._activeComputation;return null!=t?{geometry:t.geometry,constraint:t.previousConstraint}:{}}),(({geometry:t,constraint:e})=>{const i=this._constraintSnappingIndicator;null!=t&&null!=e&&e!==w.Direct?(i.visible=!0,i.setGeometryFromSegment(t.directSegment)):i.visible=!1}))]}removeStaged(){return null!=this._stagedDimension&&(this.analysis.dimensions.remove(this._stagedDimension),this._stagedDimension=null,!0)}onDeactivate(){this.removeStaged(),this._resetSnappingState()}onClick(t){const{_stagedDimension:e}=this;if(null==e){const e=this._onUnstagedClick(t);return this.analysis.dimensions.add(e),null}return this._onStagedClick(t),e}onPointerMove({mapPoint:t,pointerType:e}){if("touch"===e)return;const i=this._getSnappingContext(e);this._updatingHandles.addPromise(u(this._snappingOperation.snap({point:t},this._snappingManager,i)))}onManipulatorSelectionChanged(){if(null!=this.analysisViewData.selectedComputation){this._computationManipulators.get(this.analysisViewData.selectedComputation).offset.selected||(this.analysisViewData.selectedDimension=null)}}_onUnstagedClick({mapPoint:t,pointerType:e}){let a=t;if("mouse"===e){const i=this._getSnappingContext(e);a=this._snappingManager.update({point:t,context:i})}const s=new n({startPoint:S(a,new dt),endPoint:null,measureType:i.Horizontal});return this._stagedDimension=s,this._resetSnappingState(),s}_onStagedClick({mapPoint:t,pointerType:e}){const i=this._stagedComputation;if(null==i)return;let n=t;if("mouse"===e){const i=this._getSnappingContext(e);n=this._snappingManager.update({point:t,context:i})}const a=S(n,new dt);this._applyPointUpdate(i,{endPoint:a}),this._stagedDimension=null,this._resetSnappingState()}_resetSnappingState(){this._snappingManager.doneSnapping(),this._snappingOperation.abort(),this._snappingOperation.stagedPoint=null}_createManipulators(t){const e=this._setupPointManipulator(t,{isStart:!0}),n=this._setupPointManipulator(t,{isStart:!1}),a=this._setupOffsetManipulator(t),s=this._setupHeadingManipulator(t),o=this._setupRotationManipulator(t),r=this._setupMeasureTypeManipulator(t,i.Direct),p=this._setupMeasureTypeManipulator(t,i.Horizontal),l=this._setupMeasureTypeManipulator(t,i.Vertical),u=new P({start:e,end:n,offset:a,heading:s,rotation:o,direct:r,horizontal:p,vertical:l});return this._setupComputationToManipulatorsSync(t,u),this._computationManipulators.set(t,u),this.manipulators.addMany(u.values()),{manipulators:u,remove:()=>{this._computationHandles.remove(t),this._computationManipulators.delete(t);for(const t of u.values())this.manipulators.remove(t)}}}_setupComputationToManipulatorsSync(t,e){this._computationHandles.add([c((()=>t.geometry),(()=>this._updateManipulators(t,e)),{...h,equals:r})],t)}_setupPointManipulator(t,e){const{view:i}=this,{dimension:n}=t,a=j(i,{metadata:n}),s=H(a,{isStart:e.isStart,createSnappingPipelineStep:t=>pt({snappingContext:this._getSnappingContext(t),snappingManager:this._snappingManager,updatingHandles:this._updatingHandles}),dimension:n,onUpdate:e=>this._applyPointUpdate(t,e),view:i});return this._computationHandles.add(s,t),a}_setupOffsetManipulator(t){const{view:e}=this,i=T(e,{lineSizePt:this.analysis.style.lineSize,unfocusedMaterial:this._unfocusedOffsetManipulatorMaterial,focusedMaterial:this._focusedOffsetManipulatorMaterial,metadata:t.dimension}),n=G(i,{computation:t,view:e});return this._computationHandles.add(n,t),i}_setupHeadingManipulator(t){const{view:e}=this,i=I(e,{lineSizePt:this.analysis.style.lineSize,material:this._orientationManipulatorMaterial,metadata:t.dimension}),n=z(i,{computation:t,view:e});return this._computationHandles.add(n,t),i}_setupRotationManipulator(t){const{view:e}=this,i=I(e,{lineSizePt:this.analysis.style.lineSize,material:this._orientationManipulatorMaterial,metadata:t.dimension}),n=x(i,{computation:t,view:e});return this._computationHandles.add(n,t),i}_setupMeasureTypeManipulator(t,e){const{view:i}=this,n=U(i,{lineSizePt:this.analysis.style.lineSize,unfocusedMaterial:this._unfocusedOffsetManipulatorMaterial,focusedMaterial:this._focusedOffsetManipulatorMaterial,thinOffsetManipulatorMaterial:this._thinOffsetManipulatorMaterial,metadata:t.dimension}),a=V(n,{computation:t,manipulatorMeasureType:e,view:i});return this._computationHandles.add(a,t),n}_updateManipulators(t,e,n={stagedDimension:this._stagedDimension,selectedComputation:this.analysisViewData.selectedComputation,firstGrabbedManipulator:this.firstGrabbedManipulator}){const{stagedDimension:a,selectedComputation:s,firstGrabbedManipulator:o}=n,{start:r,end:p,offset:l,heading:u,rotation:d}=e,c=s===t,m=B(t),{dimension:h}=t;for(const i of e.values()){const t=m&&null==a&&(null==o||i===o);i===l?(i.available=t,i.selected=c):i.available=t&&c}if(!m)return;null!=this._computeConstraint(t)?e.forEachMeasureTypeManipulator((t=>t.available=!1)):e.manipulatorForMeasureType(h.measureType).available=!1;for(const f of[u,d])h.measureType===i.Direct&&0!==h.offset||(f.available=!1);N(t)?d.available=!1:u.available=!1;const{geometry:g}=t;r.renderLocation=g.directSegment.startRenderSpace,p.renderLocation=g.directSegment.endRenderSpace;const{renderCoordsHelper:_}=this.view;R(l,g,_),u.available&&A(u,t,_),d.available&&k(d,t,_),e.forEachMeasureTypeManipulator(((e,i)=>{e.available&&E(e,t,i,_)}))}_updateManipulatorStyle(t){const e=L(t),i=q(t),n={lineSizePt:t,material:this._orientationManipulatorMaterial};for(const{offset:a,heading:s,rotation:o}of this._computationManipulators.values())a.radius=i/2,F(this.view,s,n),F(this.view,o,n);this._unfocusedOffsetManipulatorMaterial.setParameters({width:e}),this._focusedOffsetManipulatorMaterial.setParameters({width:i})}_applyPointUpdate(t,e){const{view:i}=this,n=K(t);"startPoint"in e&&(n.elevationAlignedStartPoint=e.startPoint),"endPoint"in e&&(n.elevationAlignedEndPoint=e.endPoint);const a=J(n,i.renderCoordsHelper);if(null==a)return;const s=this._computeConstraint({...n,geometry:a});b(t,e,{...n,constraint:s,unconstrainedGeometry:a,view:i}),t===this._stagedComputation&&this._updateStagedDimensionOffset(t)}_updateStagedDimensionOffset(t){if(null==t.geometry)return;t.geometry.directSegment.eval(.5,mt);const e=this.view.state.camera.computeRenderPixelSizeAt(mt);t.dimension.offset=this._settings.initialOffsetPx*e}_computeConstraint(t){return D(O(t,this._snappingManager.options),this.view)}_createOffsetManipulatorMaterial(){const{color:t}=this._settings.offsetManipulator;return new it({color:e.toUnitRGBA(t),width:1,renderOccluded:$.OccludeAndTransparent,writeDepth:!1,hasPolygonOffset:!0,isDecoration:!0})}get testInfo(){const t=t=>this.analysisViewData.computations.find((({computation:e})=>e.dimension===t))?.computation;return{disableManipulatorPartialOcclusion:()=>{this._stagedStartIndicator.renderOccluded=$.Occlude,this.manipulators.forEach((({manipulator:t})=>{for(const{geometry:e}of t.renderObjects)e.material.setParameters({renderOccluded:$.Occlude})}))},getManipulatorsForDimension:e=>this._computationManipulators.get(t(e)),getComputationForDimension:e=>t(e),getConstraintForDimension:e=>{const i=t(e);return null!=i?this._computeConstraint(i):null},stagedDimension:this._stagedDimension,stagedStartIndicator:this._stagedStartIndicator,constraintSnappingIndicator:this._constraintSnappingIndicator,snappingManager:this._snappingManager}}};t([f({constructOnly:!0})],ct.prototype,"analysis",void 0),t([f({constructOnly:!0})],ct.prototype,"analysisViewData",void 0),t([f({constructOnly:!0})],ct.prototype,"manipulators",void 0),t([f({constructOnly:!0})],ct.prototype,"parentTool",void 0),t([f({constructOnly:!0,nonNullable:!0})],ct.prototype,"view",void 0),t([f({readOnly:!0})],ct.prototype,"updating",null),t([f()],ct.prototype,"firstGrabbedManipulator",null),t([f()],ct.prototype,"hasGrabbedManipulators",null),t([f()],ct.prototype,"snappingOptions",null),t([f()],ct.prototype,"_stagedDimension",void 0),t([f()],ct.prototype,"_activeComputation",null),t([f()],ct.prototype,"_stagedComputation",null),ct=t([M("esri.views.3d.analysis.Dimension.LengthDimensionSubTool")],ct);const mt=y();export{ct as LengthDimensionSubTool};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../../../core/Handles.js";import{equals as t}from"../../../../core/lang.js";import{destroyMaybe as s}from"../../../../core/maybe.js";import{formatDecimal as i}from"../../../../core/quantityFormatUtils.js";import{watch as n,initial as l}from"../../../../core/reactiveUtils.js";import{pt2px as a}from"../../../../core/screenUtils.js";import{c as o}from"../../../../chunks/vec3f64.js";import{computeSpanningSegment as m,OffsetSegmentLocation as r,maxScreenLengthSquaredFromGeometry as f,offsetSegment as d}from"./lengthDimensionUtils.js";import{
|
|
5
|
+
import e from"../../../../core/Handles.js";import{equals as t}from"../../../../core/lang.js";import{destroyMaybe as s}from"../../../../core/maybe.js";import{formatDecimal as i}from"../../../../core/quantityFormatUtils.js";import{watch as n,initial as l}from"../../../../core/reactiveUtils.js";import{pt2px as a}from"../../../../core/screenUtils.js";import{c as o}from"../../../../chunks/vec3f64.js";import{computeSpanningSegment as m,OffsetSegmentLocation as r,maxScreenLengthSquaredFromGeometry as f,offsetSegment as d}from"./lengthDimensionUtils.js";import{Settings as h}from"./settings.js";import{LabelVisualElement as c}from"../../interactive/visualElements/LabelVisualElement.js";import{LineVisualElement as u}from"../../interactive/visualElements/LineVisualElement.js";import{MarkerVisualElement as S}from"../../interactive/visualElements/MarkerVisualElement.js";import{EuclideanSegment as g}from"../../interactive/visualElements/support/Segment.js";class v{set visible(e){for(const t of this._visualElements.values())t.attached=e}constructor(s){this.destroyed=!1,this._handles=new e,this._messages=null,this._labelSegment=new g;const{analysis:i,computation:o,view:m,messages:r,isDecoration:f}=s;this.analysis=i,this.computation=o,this.view=m,this._messages=r,this._settings=new h(m.effectiveTheme);const d=s.visible,v={view:m,attached:d,isDecoration:f},{fontSize:b,textColor:p,textBackgroundColor:_}=i.style;this._visualElements=new O({marker:new S(v,s.markerMaterial),dimension:new u(v,s.dimensionLineMaterial),startOffset:new u(v,s.offsetLineMaterial),endOffset:new u(v,s.offsetLineMaterial),dimensionSmall:new u(v,s.smallDimensionLineMaterial),startOffsetSmall:new u(v,s.smallOffsetLineMaterial),endOffsetSmall:new u(v,s.smallOffsetLineMaterial),label:new c({view:m,attached:d,distance:0,geometry:{type:"segment",sampleLocation:"center",segment:this._labelSegment,callout:!1},fontSize:a(b),textColor:p.clone(),backgroundColor:_.clone(),isDecoration:f})}),this._handles.add([n((()=>o.geometry),(e=>{this.updateCameraDependentElements(m.state.camera,e,i.style),null!=o.geometry&&this._updateLines(o.geometry)}),{...l,equals:t}),n((()=>o.length),(e=>this._updateLabelContent(e)),l)])}destroy(){this.destroyed=!0,this._handles=s(this._handles);for(const e of this._visualElements.values())e.destroy()}get testInfo(){return{dimensionVisualElement:this._visualElements.dimension,label:this._visualElements.label}}_updateLines(e){const t=m(b,r.Start,e.directSegment,e.dimensionSegment),s=m(p,r.End,e.directSegment,e.dimensionSegment),i=this._visualElements;i.marker.setGeometryFromSegment(e.dimensionSegment,e.primaryOffsetAxis),i.dimension.setGeometryFromSegment(e.dimensionSegment),i.startOffset.setGeometryFromSegment(t),i.endOffset.setGeometryFromSegment(s),i.dimensionSmall.setGeometryFromSegment(e.dimensionSegment),i.startOffsetSmall.setGeometryFromSegment(t),i.endOffsetSmall.setGeometryFromSegment(s)}updateCameraDependentElements(e,t,s){const i=this._visualElements;if(null==t){for(const e of i.values())e.visible=!1;return}const n=e.computeScreenPixelSizeAt(t.dimensionSegment.eval(.5,_)),l=f(t,n),o=l<(a(s.lineSize)*this._settings.smallScreenLengthLineSizeFactor)**2,m=!o;i.marker.visible=m,i.dimension.visible=m,i.startOffset.visible=m,i.endOffset.visible=m,i.dimensionSmall.visible=o,i.startOffsetSmall.visible=o,i.endOffsetSmall.visible=o;const r=a(s.fontSize)*this._settings.labels.minScreenLengthFontSizeFactor,{label:h}=i;if(h.visible=l>=r**2,!h.visible)return;const{dimensionSegment:c,primaryOffsetAxis:u}=t,{offset:S}=this.computation.dimension,g=(Math.sign(S)>=0?1:-1)*this._labelOffsetPx(s)*n;d(this._labelSegment,c,u,g),h.updateLabelPosition()}updateLabelStyle(e){const{label:t}=this._visualElements;t.fontSize=a(e.fontSize),t.textColor=e.textColor,t.backgroundColor=e.textBackgroundColor}updateUnitsMessages(e){this._messages=e;const{length:t}=this.computation;this._updateLabelContent(t)}_updateLabelContent(e){const{label:t}=this._visualElements;null!=e&&null!=this._messages?t.text=i(this._messages,e,e.unit):t.text=""}_labelOffsetPx(e){return 1.5*a(e.fontSize)+this._settings.labels.marginPx+a(e.lineSize/2)}}const b=new g,p=new g,_=o();class O{constructor(e){this.marker=e.marker,this.dimension=e.dimension,this.startOffset=e.startOffset,this.endOffset=e.endOffset,this.dimensionSmall=e.dimensionSmall,this.startOffsetSmall=e.startOffsetSmall,this.endOffsetSmall=e.endOffsetSmall,this.label=e.label}values(){return[this.marker,this.dimension,this.startOffset,this.endOffset,this.dimensionSmall,this.startOffsetSmall,this.endOffsetSmall,this.label]}}export{O as LengthDimensionVisualElements,v as LengthDimensionVisualization};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import"../../../../geometry.js";import{LengthDimensionMeasureType as e}from"../../../../analysis/dimensionUtils.js";import"../../../../core/has.js";import{k as t,g as n,e as i,b as o,p as r}from"../../../../chunks/vec3.js";import{sv3d as a}from"../../../../geometry/support/vectorStacks.js";import{automaticHeadingFromCamera as s}from"./lengthDimensionManipulatorUtils.js";import{isGeodesicDimension as l,directUp as d,directStartToEnd as c}from"./lengthDimensionUtils.js";import{
|
|
5
|
+
import"../../../../geometry.js";import{LengthDimensionMeasureType as e}from"../../../../analysis/dimensionUtils.js";import"../../../../core/has.js";import{k as t,g as n,e as i,b as o,p as r}from"../../../../chunks/vec3.js";import{sv3d as a}from"../../../../geometry/support/vectorStacks.js";import{automaticHeadingFromCamera as s}from"./lengthDimensionManipulatorUtils.js";import{isGeodesicDimension as l,directUp as d,directStartToEnd as c}from"./lengthDimensionUtils.js";import{constraintThresholdPx as m}from"./settings.js";import u from"../../../../geometry/Point.js";var P;function p(e,t){return{enabled:t.effectiveFeatureEnabled,elevationAlignedStartPoint:e.elevationAlignedStartPoint,elevationAlignedEndPoint:e.elevationAlignedEndPoint,geometry:e.geometry}}function g(e,s){if(l(e))return P.Direct;if(!e.enabled)return null;const{geometry:u}=e;if(null==u||t(u.directSegment.startRenderSpace,u.directSegment.endRenderSpace))return null;const{camera:p}=s.state,g=d(a.get(),u,s.renderCoordsHelper),f=c(a.get(),u),v=n(a.get(),g,i(f,g)),y=o(a.get(),f,v),S=r(y),A=r(v),{startRenderSpace:R,endRenderSpace:z}=u.directSegment,j=Math.max(p.computeRenderPixelSizeAt(R)*m,p.computeRenderPixelSizeAt(z)*m)**2;return S<j?P.Vertical:A<j?P.Horizontal:null}function f(e,t,{constraint:n,view:i}){const{unconstrainedGeometry:o}=e;if(null==o)return;const{renderCoordsHelper:r,spatialReference:a}=i,{startRenderSpace:s,endRenderSpace:l}=o.directSegment,d=r.fromRenderCoords(s,new u,a),c=r.fromRenderCoords(l,new u,a);let m;m="start"===t?{startPoint:d}:{endPoint:c},v(e,m,{constraint:n,elevationAlignedStartPoint:e.elevationAlignedStartPoint,elevationAlignedEndPoint:e.elevationAlignedEndPoint,unconstrainedGeometry:o,view:i})}function v(t,n,i){const{constraint:o,elevationAlignedStartPoint:r,elevationAlignedEndPoint:a,unconstrainedGeometry:l,view:d}=i,{dimension:c,previousConstraint:m,preConstraintProperties:u}=t;if(null==r||null==a)return;const p=()=>{"startPoint"in n?c.startPoint=n.startPoint:"endPoint"in n&&(c.endPoint=n.endPoint)};if(null==o)p(),null!=m&&null!=u&&(c.measureType=u.measureType,c.orientation=u.orientation);else switch(c.measureType=e.Direct,o){case P.Horizontal:if(o!==m&&(c.orientation=0),"startPoint"in n){const e=n.startPoint;null!=e&&(e.z=a.z),c.startPoint=e}else if("endPoint"in n){const e=n.endPoint;null!=e&&(e.z=r.z),c.endPoint=e}break;case P.Vertical:if(o!==m&&(c.orientation=s(l,d)),"startPoint"in n){const e=n.startPoint;null!=e&&(e.x=a.x,e.y=a.y),c.startPoint=e}else if("endPoint"in n){const e=n.endPoint;null!=e&&(e.x=r.x,e.y=r.y),c.endPoint=e}break;case P.Direct:o!==m&&null!=u&&(c.orientation=u.orientation),p()}t.previousConstraint=o,t.unconstrainedGeometry=l}!function(e){e[e.Horizontal=0]="Horizontal",e[e.Vertical=1]="Vertical",e[e.Direct=2]="Direct"}(P||(P={}));export{P as LengthDimensionConstraint,v as applyConstraint,g as computeConstraint,p as constraintDependencies,f as reapplyConstraint};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../../../Color.js";import"../../../../geometry.js";import{lengthDimensionMeasureType as t,LengthDimensionMeasureType as n}from"../../../../analysis/dimensionUtils.js";import{cyclicalDegrees as r}from"../../../../core/Cyclical.js";import{rad2deg as o}from"../../../../core/mathUtils.js";import{pt2px as i}from"../../../../core/screenUtils.js";import{i as a,k as s}from"../../../../chunks/mat4.js";import{c}from"../../../../chunks/mat4f64.js";import{g as m,c as d,b as
|
|
5
|
+
import e from"../../../../Color.js";import"../../../../geometry.js";import{lengthDimensionMeasureType as t,LengthDimensionMeasureType as n}from"../../../../analysis/dimensionUtils.js";import{cyclicalDegrees as r}from"../../../../core/Cyclical.js";import{rad2deg as o}from"../../../../core/mathUtils.js";import{pt2px as i}from"../../../../core/screenUtils.js";import{i as a,k as s}from"../../../../chunks/mat4.js";import{c}from"../../../../chunks/mat4f64.js";import{g as m,c as d,b as u,f as l,e as f,k as p,l as g,s as h,A as v}from"../../../../chunks/vec3.js";import{c as y,Z as S,f as j}from"../../../../chunks/vec3f64.js";import{fromPositionAndNormal as w,create as x,signedDistance as H,normal as M}from"../../../../geometry/support/plane.js";import{sv3d as C}from"../../../../geometry/support/vectorStacks.js";import{clonePoint as P}from"../../../../layers/graphics/hydratedFeatures.js";import{isValidComputation as T,computeGeometryFromDimension as b,computationToGeometryDependencies as k,headingFromGeometry as R,computeOffsetForPoint as U,computeSegmentForMeasureType as z,computeOffsetAxis as O,directUp as A,directStartToEnd as D,dimensionStartToEnd as E}from"./lengthDimensionUtils.js";import{PointStyle as F,lengthFraction as L,orientationSnapThresholdDegrees as G,minLengthMeters as B,linePaddingPx as I,focusedLinePaddingPx as W,OrientationManipulatorStyle as N,MarkerStyle as V}from"./settings.js";import{Manipulator3D as Z}from"../../interactive/Manipulator3D.js";import{createSphereManipulator as q,worldScaledManipulatorSettings as J,createRotateManipulator as K,updateRotateManipulator as Q,calculateInputRotationTransform as X,calculateTranslateRotateFromBases as Y}from"../../interactive/manipulatorUtils.js";import{RenderObject as $}from"../../interactive/RenderObject.js";import{screenToMap3D as _,screenToRenderPlane as ee,hideManipulatorWhileDragging as te}from"../../interactive/editingTools/dragEventPipeline3D.js";import{EuclideanSegment as ne}from"../../interactive/visualElements/support/Segment.js";import{MARKER_SIZE_PER_LINE_WIDTH as re}from"../../support/engineContent/marker.js";import{createPolylineGeometry as oe}from"../../webgl-engine/lib/GeometryUtil.js";import{createManipulatorDragEventPipeline as ie,resetProperties as ae,EventPipeline as se}from"../../../interactive/dragEventPipeline.js";import{ManipulatorStateCustomFlags as ce,ManipulatorStateFlags as me}from"../../../interactive/interfaces.js";import de from"../../../../geometry/Point.js";class ue{constructor(e){this.start=e.start,this.end=e.end,this.offset=e.offset,this.heading=e.heading,this.rotation=e.rotation,this.direct=e.direct,this.horizontal=e.horizontal,this.vertical=e.vertical}manipulatorName(e){return Object.keys(this).find((t=>this.hasOwnProperty(t)&&e===this[t]))}values(){return[this.start,this.end,this.offset,this.heading,this.rotation,this.direct,this.horizontal,this.vertical]}forEachMeasureTypeManipulator(e){for(const n of t)e(this.manipulatorForMeasureType(n),n)}manipulatorForMeasureType(e){switch(e){case n.Direct:return this.direct;case n.Horizontal:return this.horizontal;case n.Vertical:return this.vertical}}}function le(t,n){const r=new F(t.effectiveTheme),o=q(t,e.toUnitRGBA(r.color),We);return o.available=!1,o.grabCursor="crosshair",o.radius=r.radius,o.metadata=n.metadata,o.collisionPriority=1,o}function fe(e,t){const n=[j(-.5,0,0),j(.5,0,0)],r=oe(t.unfocusedMaterial,n.map((e=>m(y(),e,L)))),o=r.instantiate({material:t.focusedMaterial});return new Z({view:e,renderObjects:[new $(r,me.Unfocused|me.Selected|We),new $(o,me.Focused|We)],collisionType:{type:"line",paths:[n]},radius:Ie(t.lineSizePt)/2,metadata:t.metadata,available:!1,...J})}function pe(t,n,{lineSizePt:r,material:o}){const a=new N(t.effectiveTheme),{calloutOffsetPx:s,calloutWidth:c,discScale:m,focusMultiplier:d,color:u}=a,l=new V;return{calloutLength:.25*re*l.lineSizeFraction*i(r)+s,calloutColor:e.toUnitRGBA(u),calloutWidth:c,customStateMask:We,discScale:m,focusMultiplier:d,material:o,metadata:n}}function ge(e,t){return K(e,pe(e,t.metadata,t))}function he(e,t,n){Q(t,pe(e,t.metadata,n))}function ve(e,t){const n=[j(-.5,0,0),j(.5,0,0)],r=oe(t.thinOffsetManipulatorMaterial,n),o=oe(t.unfocusedMaterial,n.map((e=>m(y(),e,L)))),i=o.instantiate({material:t.focusedMaterial});return new Z({view:e,renderObjects:[new $(o,me.Unfocused|We),new $(i,me.Focused|We),new $(r,We)],collisionType:{type:"line",paths:[n]},radius:Ie(t.lineSizePt)/2,available:!1,metadata:t.metadata,...J})}function ye(e,{isStart:t,createSnappingPipelineStep:n,dimension:r,onUpdate:o,view:i}){const a=t?"startPoint":"endPoint",s=ie(e,((e,t,s,c)=>{const m=te(e),{snappingStep:d,cancelSnapping:u}=n(c);s=s.next(m).next(ae(r,[a,"measureType","orientation"])).next(u),t.next(m).next(_(i)).next(...d).next((e=>{const t=P(e.mapEnd,new de);o("startPoint"===a?{startPoint:t}:{endPoint:t})}))}));return[s]}function Se(e,{computation:t,view:n}){return[ie(e,((e,r,o)=>{if(!T(t)||!e.selected)return;const{geometry:i,dimension:a}=t,s=te(e);r.next(s).next(Pe(n,a,i.dimensionSegment,i.primaryOffsetAxis)),o.next(s).next(ae(a,["offset"]))}))]}function je(e,{computation:t,view:n}){return[ie(e,((e,r,o)=>{He({cancel:o,computation:t,settingHeading:!0,steps:r,view:n})}))]}function we(e,{computation:t,view:n}){return[ie(e,((e,r,o)=>{He({cancel:o,computation:t,settingHeading:!1,steps:r,view:n})})),e.events.on("immediate-click",(e=>{xe(e,t,n)}))]}function xe(e,t,n){const{dimension:o,geometry:i}=t;if(90===o.orientation||270===o.orientation)return o.orientation=0,void e.stopPropagation();if(null==i)return;const{renderCoordsHelper:a}=n,s=b({...k(t),orientation:90},a),c=b({...k(t),orientation:270},a);if(null==s||null==c)return;const m=R(s,a),d=R(c,a),u=Te(i,n),l=r.shortestSignedDiff(u,m),f=r.shortestSignedDiff(u,d);o.orientation=Math.abs(l)<Math.abs(f)?90:270,e.stopPropagation()}function He(e){const{cancel:t,computation:n,settingHeading:r,steps:i,view:a}=e;if(!T(n))return;const{renderCoordsHelper:s}=a,{dimension:c,geometry:m}=n,u=y(),l=De(y(),m,m.directSegment,s),f=Ee(C.get(),{forHeading:r,geometry:m,renderCoordsHelper:s}),p=w(l,f,x()),g=r?c.orientation??R(m,a.renderCoordsHelper):c.orientation??0;i.next(ee(a,p)).next((e=>{"start"===e.action&&d(u,e.renderStart);const t=M(p),n=X(u,e.renderEnd,l,t);let i=g-o(n);r||(i=Me(i)),c.orientation=i})),t.next(ae(c,["orientation"]))}function Me(e){const t=r.normalize(e)%90;return t<G?e-t:90-t<G?e+(90-t):e}function Ce(e,{computation:t,manipulatorMeasureType:r,view:o}){let i=n.Direct,a=0,s=0;return[e.events.on("grab-changed",(n=>{if("start"!==n.action||!T(t))return;const{dimension:c,geometry:m}=t;i=c.measureType,a=c.offset,s=c.orientation;const u=d(C.get(),e.renderLocation);c.measureType=r,c.offset=U(u,r,m,o.renderCoordsHelper),c.orientation=0})),ie(e,((e,n,c)=>{if(!T(t))return;const{geometry:m,dimension:d}=t,{renderCoordsHelper:u}=o,l=z(qe,r,t,u),f=O(C.get(),{measureType:r,directSegment:m.directSegment,renderCoordsHelper:u}),p=te(e);n.next(p).next(Pe(o,d,l,f)),c.next(p).next((e=>(d.measureType=i,d.offset=a,d.orientation=s,e)))}))]}function Pe(e,t,n,r){const o=u(C.get(),n.endRenderSpace,n.startRenderSpace);l(o,o,r);const i=w(n.startRenderSpace,o,x()),a=w(n.startRenderSpace,r,x()),s=t.offset;let c,m=0;const d=new se;return d.next(ee(e,i)).next((n=>{"start"===n.action&&(m=H(a,n.renderStart));const r=(H(a,n.renderEnd)-m)*e.renderCoordsHelper.unitInMeters;t.offset=s+r,c=n})),e=>(d.execute(e),c)}function Te(e,t){const{directSegment:n}=e,{renderCoordsHelper:r}=t,o=A(C.get(),e,r),i=D(C.get(),e),a=l(C.get(),i,o),{viewForward:s}=t.state.camera;f(a,s)>0&&m(a,a,-1);const c=n.eval(.5,C.get());return r.headingAtPosition(c,a)}function be(e,t,n){const{dimensionSegment:r,primaryOffsetAxis:o}=t,i=E(Ne,t),c=p(i,S)?a(Ze):Y(i,o,S,Ze),m=Math.max(g(i),B/n.unitInMeters);s(c,c,h(Ne,m,m,m)),e.modelTransform=c,e.renderLocation=r.eval(.5,Ne)}function ke(e,t,n){Ue(e,t,n,{forHeading:!0})}function Re(e,t,n){Ue(e,t,n,{forHeading:!1})}function Ue(e,t,n,{forHeading:r}){const{dimension:o,geometry:i}=t,{primaryOffsetAxis:a}=i,s=m(ze,a,o.offset>=0?1:-1),c=Ee(Oe,{forHeading:r,geometry:i,renderCoordsHelper:n});l(c,c,s);const d=Y(s,c,S,Ze);e.modelTransform=d,e.renderLocation=De(Ne,i,i.dimensionSegment,n)}const ze=y(),Oe=y();function Ae(e,t,n,r){const{geometry:o}=t,i=z(qe,n,t,r),a=O(Ne,{measureType:n,directSegment:o.directSegment,renderCoordsHelper:r}),c=v(Ve,i.endRenderSpace,i.startRenderSpace),m=Y(c,a,S,Ze),d=g(c);s(m,m,h(Ve,d,d,d)),e.modelTransform=m,e.renderLocation=i.eval(.5,Ve)}function De(e,t,n,r){const{startRenderSpace:o,endRenderSpace:i}=n,a=Fe(t,r)?o:i;return d(e,a)}function Ee(e,{forHeading:t,geometry:n,renderCoordsHelper:r}){return t?A(e,n,r):E(e,n,{invert:!0})}function Fe(e,t){const n=D(Le,e),r=A(Ge,e,t);return f(n,r)>0}const Le=y(),Ge=y();function Be(e){return i(e)+I}function Ie(e){return i(e)+W}const We=ce.Custom1,Ne=y(),Ve=y(),Ze=c(),qe=new ne;export{We as DidPointerMoveRecentlyFlag,ue as LengthDimensionManipulators,Te as automaticHeadingFromCamera,ve as createMeasureTypeManipulator,fe as createOffsetManipulator,ge as createOrientationManipulator,le as createPointManipulator,Ie as focusedOffsetWidth,je as headingManipulatorHandles,Ce as measureTypeManipulatorHandles,Se as offsetManipulatorHandles,ye as pointManipulatorHandles,we as rotationManipulatorHandles,Me as snapOrientationToNearestRightAngle,Be as unfocusedOffsetWidth,ke as updateHeadingManipulatorTransform,Ae as updateMeasureTypeManipulatorTransform,be as updateOffsetManipulatorTransform,he as updateOrientationManipulator,Re as updateRotationManipulatorTransform};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import t from"../../../../Color.js";import{
|
|
5
|
+
import t from"../../../../Color.js";import{multiplyOpacity as s,getContrast as i}from"../../../../core/colorUtils.js";class o{constructor(t){this._theme=t,this.color=s(this._theme.accentColor,.5),this.radius=5}}class e{constructor(){this.color=new t([127,127,127,.5]),this.radius=5}}class c{constructor(){this.lineSizeFraction=.8}}const h=4,r=6,n=.1,l=.5;class a{constructor(t){this._theme=t,this.color=s(this._theme.accentColor,.5)}}class m{constructor(t){this._theme=t,this.calloutOffsetPx=18,this.calloutWidth=2,this.discScale=.3,this.focusMultiplier=2,this.color=s(this._theme.accentColor,.5),this.contrastColor=i(this._theme.accentColor)}}class u{constructor(){this.lineSizeFraction=.25}}class _{constructor(){this.marginPx=20,this.minScreenLengthFontSizeFactor=5}}class f{constructor(t){this._theme=t,this.color=s(this._theme.accentColor,.5)}}const w=5,p=10,d=2500;class C{constructor(t){this._theme=t,this.pointManipulators=new o(this._theme),this.offsetManipulator=new a(this._theme),this.orientationManipulator=new m(this._theme),this.markers=new c,this.labels=new _,this.offsetLine=new u,this.constraint=new f(this._theme),this.initialOffsetPx=50,this.disabledPointIndicator=new e,this.smallScreenLengthLineSizeFactor=2}}export{c as MarkerStyle,m as OrientationManipulatorStyle,o as PointStyle,C as Settings,p as constraintThresholdPx,r as focusedLinePaddingPx,l as lengthFraction,h as linePaddingPx,n as minLengthMeters,w as orientationSnapThresholdDegrees,d as pointerMoveTimeoutMs};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../Color.js";import"../../../../intl.js";import i from"../../../../core/Accessor.js";import{getAccentColor as s,getTextHaloColor as n,getTextColor as o}from"../../../../core/analysisThemeUtils.js";import{nextHighestPowerOfTen as l,deg2rad as a}from"../../../../core/mathUtils.js";import{destroyMaybe as r}from"../../../../core/maybe.js";import{formatDecimal as c,formatImperialLength as d,formatImperialVerticalLength as h,formatMetricLength as u,formatMetricVerticalLength as m}from"../../../../core/quantityFormatUtils.js";import{toUnit as g}from"../../../../core/quantityUtils.js";import{watch as p,syncAndInitial as _}from"../../../../core/reactiveUtils.js";import{createRenderScreenPointArray3 as v,createRenderScreenPointArray as b}from"../../../../core/screenUtils.js";import{preferredImperialLengthUnit as L,convertUnit as w}from"../../../../core/unitUtils.js";import{property as S}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as y}from"../../../../core/accessorSupport/decorators/subclass.js";import{g as f}from"../../../../chunks/vec2.js";import{g as A,a as P}from"../../../../chunks/vec3.js";import{c as V}from"../../../../chunks/vec3f64.js";import{MeasurementMode as j}from"../interfaces.js";import{ViewMode as E,VisualElementOrientation as z}from"./interfaces.js";import{screenSpaceTangent as M}from"../support/viewUtils.js";import{LabelVisualElement as D,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 U}from"../../webgl-engine/lib/Material.js";import{createStipplePatternSimple as k}from"../../webgl-engine/materials/lineStippleUtils.js";import{onLocaleChange as R}from"../../../../intl/locale.js";import{fetchMessageBundle as F}from"../../../../intl/messages.js";let B=class extends i{get visible(){return this.analysisView.visible}get viewMode(){const{elevationAlignedStartPoint:e,elevationAlignedEndPoint:t}=this.analysisView;if(null==e||null==t||e.equals(t))return E.None;const i=this.analysisView.result;if(null==i)return E.Direct;if("geodesic"===i.mode)return this._requiresGeodesicGuideAt(this._startPosition)||this._requiresGeodesicGuideAt(this._endPosition)?E.ProjectedGeodesic:E.Direct;const{verticalDistance:s,horizontalDistance:n}=i,o=s.value,l=n.value;return Math.min(o/l,l/o)<this.triangleCollapseRatioThreshold?E.Direct:E.Triangle}get actualVisualizedMeasurement(){if(null==this.analysisView.result)switch(this.analysisView.measurementMode){case j.Auto:case j.Euclidean:default:return"euclidean";case j.Geodesic:return"geodesic"}return this.analysisView.result.mode}get allowVisualElementsOrientationChange(){return null==this._triangleOrientationOverride}set allowVisualElementsOrientationChange(e){null==this._triangleOrientationOverride!==e&&(null==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}}constructor(e){super(e),this._params={triangleColor:t.toUnitRGBA(s(.75)),triangleLineWidth:3,geodesicProjectionLineWidth:2,geodesicProjectionLineColor:t.toUnitRGBA(s(.75)),guideLineWidth:2,guideStippleLengthPixels:6,directLabelFontSize:16,horizontalLabelFontSize:12,verticalLabelFontSize:12},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._triangleOrientationOverride=null,this.messages=null,this.loadingMessages=!0,this.visualElementOrientation=z.Auto,this.triangleCollapseRatioThreshold=.03}initialize(){const e=this._params,i={attached:!0,view:this.view,isDecoration:!0};this._segmentVisualElement=new C({...i,geometry:null,renderOccluded:U.OccludeAndTransparent}),this._triangleVisualElement=new G({...i,width:e.triangleLineWidth,color:e.triangleColor,renderOccluded:U.OccludeAndTransparent}),this._rightAngleQuad=new x({...i,color:t.toUnitRGBA(s(.75)),renderOccluded:U.OccludeAndTransparent});const l={...i,polygonOffset:!0,renderOccluded:U.OccludeAndTransparent};this._projectedGeodesicLine=new G({...l,width:e.geodesicProjectionLineWidth,color:e.geodesicProjectionLineColor,stipplePattern:k(e.guideStippleLengthPixels)}),this._geodesicStartHint=new G({...l,width:e.guideLineWidth,color:e.geodesicProjectionLineColor,stipplePattern:k(e.guideStippleLengthPixels)}),this._geodesicEndHint=new G({...l,width:e.guideLineWidth,color:e.geodesicProjectionLineColor,stipplePattern:k(e.guideStippleLengthPixels)});const a={...i,backgroundColor:n(.6),calloutColor:n(.5),textColor:o()};this._segmentLabel=new D({...a,fontSize:e.directLabelFontSize}),this._verticalLabel=new D({...a,fontSize:e.verticalLabelFontSize}),this._horizontalLabel=new D({...a,fontSize:e.horizontalLabelFontSize}),this.addHandles([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})),(e=>this._updateLabelVisibility(e)),_),p((()=>this._measurementArrowStripeLength),(e=>this._updateSegmentStripeLength(e)),_),R((async()=>this._updateMessageBundle()))]),this._updateMessageBundle()}destroy(){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)}_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 E.None:break;case E.Direct:this._segmentVisualElement.visible=!0;break;case E.Triangle:this._segmentVisualElement.visible=!0,this._triangleVisualElement.visible=!0,this._rightAngleQuad.visible=!0;break;case E.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:l,stripeLength:a}){const r=e.renderCoordsHelper;if(null==r||null==s||null==n||s.equals(n))return;let c=this._startPosition,d=this._endPosition;r.toRenderCoords(s,c),r.toRenderCoords(n,d);const h=o===z.AboveSegment?1:-1,u=h*(r.getAltitude(d)-r.getAltitude(c));u<0&&(c=this._endPosition,d=this._startPosition);const m="geodesic"===l?new T(this._startPosition,this._endPosition,r.spatialReference):new H(this._startPosition,this._endPosition);switch(this._segmentVisualElement.geometry=m,this._updateSegmentStripeLength(a),i){case E.Direct:this._updateSegment(m,o);break;case E.Triangle:this._updateSegmentAndTriangle({view:e,camera:t,segment:m,orientation:o,startPosition:c,endPosition:d,deltaSign:h,altitudeDelta:u});break;case E.ProjectedGeodesic:this._updateSegmentAndProjection({view:e,orientation:o,startPosition:c,endPosition:d})}}_updateSegment(e,t){this._segmentLabel.anchor=t===z.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:o,deltaSign:l,altitudeDelta:a}){const r=this._cornerPosition;e.worldUpAtPosition(n,r),A(r,r,l*Math.abs(a)),P(r,r,n),this._triangleVisualElement.geometry=[[[n[0],n[1],n[2]],[r[0],r[1],r[2]],[o[0],o[1],o[2]]]],this._rightAngleQuad.geometry={previous:n,center:r,next:o};const c=new H(n,r),d=new H(r,o),h=Q(n,o,r,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===z.AboveSegment?"top":"bottom"}_updateLabelText({text:e,visualizedMeasurement:t}){null!=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 E.Direct:i.visible=!0;break;case E.Triangle:i.visible=!0,s.visible=!0,n.visible=!0;break;case E.ProjectedGeodesic:i.visible=!0;case E.None:}}get _labelsText(){if(this.destroyed)return null;const e=this.messages,t=this.analysisView.result;if(null==t||null==e)return null;const{directDistance:i,horizontalDistance:s,verticalDistance:n,geodesicDistance:o}=t,l=this.analysisView.unit,a=e=>({euclideanDistance:"",geodesicDistance:"",horizontalDistance:"",verticalDistance:"",...e});switch(l){case"metric":return a({euclideanDistance:i&&u(e,i),geodesicDistance:o&&u(e,o),horizontalDistance:s&&u(e,s),verticalDistance:n&&m(e,n)});case"imperial":return a({euclideanDistance:i&&d(e,i),geodesicDistance:o&&d(e,o),horizontalDistance:s&&d(e,s),verticalDistance:n&&h(e,n)});default:return a({euclideanDistance:i&&c(e,i,l),geodesicDistance:o&&c(e,o,l),horizontalDistance:s&&c(e,s,l),verticalDistance:n&&c(e,n,l)})}}_updateSegmentStripeLength(e){const t=this._segmentVisualElement;null!=e?(t.stripeLength=e,t.stripesEnabled=!0):t.stripesEnabled=!1}get _actualVisualElementsOrientation(){if(null!=this._triangleOrientationOverride)return this._triangleOrientationOverride;const e=this.visualElementOrientation;return e===z.Auto?this.view.state.camera.aboveGround?z.AboveSegment:z.BelowSegment:e}_requiresGeodesicGuideAt(e){const t=this.view;if(!t?.state)return!1;const i=t.state.camera,s=t.renderCoordsHelper;if(!s)return!1;const n=i.computeScreenPixelSizeAt(e);return s.getAltitude(e)/n>=10}get _measurementArrowStripeLength(){const{result:e,unit:t}=this.analysisView;if(null==e)return null;let i=null;const s=e.directDistance;switch(t){case"metric":i=s&&g(s,"meters");break;case"imperial":i=s&&g(s,L(s.value,s.unit));break;default:i=s&&g(s,t)}if(null==i)return null;return l(i.value/30)*w(1,i.unit,"meters")}_updateMessageBundle(){this.loadingMessages=!0,F("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 o=W,l=N;n.projectToRenderScreen(i,o),n.projectToRenderScreen(t,l);const a={segment:"bottom",horizontal:"top",vertical:o[0]<l[0]?"left":"right"};{const s=I,o=J;if(M(e,i,s,n),M(e,t,o,n),f(s,o)>=q){const e=Math.sign(s[1])===Math.sign(o[1]);a.segment=e?O(a.vertical):a.vertical}else{const e=K;M(i,t,e,n),f(e,o)>=q&&(a.segment=Math.sign(e[0])===Math.sign(o[0])?O(a.horizontal):a.horizontal)}}if(s===z.BelowSegment){const e=e=>"top"===e?"bottom":"top";a.segment=e(a.segment),a.horizontal=e(a.horizontal),a.vertical=e(a.vertical)}return a}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,"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,"_labelsText",null),e([S()],B.prototype,"_actualVisualElementsOrientation",null),e([S()],B.prototype,"_measurementArrowStripeLength",null),B=e([y("esri.views.3d.analysis.DirectLineMeasurement.DirectLineMeasurementVisualization")],B);const q=Math.cos(a(12)),W=v(),N=v(),I=b(),J=b(),K=b();export{B as DirectLineMeasurementVisualization};
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../Color.js";import"../../../../intl.js";import i from"../../../../core/Accessor.js";import{multiplyOpacity as s,getContrast as n}from"../../../../core/colorUtils.js";import{nextHighestPowerOfTen as o,deg2rad as l}from"../../../../core/mathUtils.js";import{destroyMaybe as r}from"../../../../core/maybe.js";import{formatDecimal as a,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 v,createRenderScreenPointArray as _}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/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as S}from"../../../../core/accessorSupport/decorators/subclass.js";import{g as f}from"../../../../chunks/vec2.js";import{g as y,a as A}from"../../../../chunks/vec3.js";import{c as P}from"../../../../chunks/vec3f64.js";import{MeasurementMode as V}from"../interfaces.js";import{ViewMode as j,VisualElementOrientation as E}from"./interfaces.js";import{screenSpaceTangent as z}from"../support/viewUtils.js";import{LabelVisualElement as M,mirrorPosition as D}from"../../interactive/visualElements/LabelVisualElement.js";import{LineVisualElement as O}from"../../interactive/visualElements/LineVisualElement.js";import{MeasurementArrowVisualElement as C}from"../../interactive/visualElements/MeasurementArrowVisualElement.js";import{RightAngleQuadVisualElement as G}from"../../interactive/visualElements/RightAngleQuadVisualElement.js";import{GeodesicSegment as x,EuclideanSegment as T}from"../../interactive/visualElements/support/Segment.js";import{RenderOccludedFlag as H}from"../../webgl-engine/lib/Material.js";import{createStipplePatternSimple as k}from"../../webgl-engine/materials/lineStippleUtils.js";import{onLocaleChange as U}from"../../../../intl/locale.js";import{fetchMessageBundle as R}from"../../../../intl/messages.js";let F=class extends i{get _parameters(){const e=t.toUnitRGBA(s(this.view.effectiveTheme.accentColor,.75));return{triangleColor:e,triangleLineWidth:3,geodesicProjectionLineWidth:2,geodesicProjectionLineColor:e,guideLineWidth:2,guideStippleLengthPixels:3,directLabelFontSize:16,horizontalLabelFontSize:12,verticalLabelFontSize:12}}get visible(){return this.analysisView.visible}get viewMode(){const{elevationAlignedStartPoint:e,elevationAlignedEndPoint:t}=this.analysisView;if(null==e||null==t||e.equals(t))return j.None;const i=this.analysisView.result;if(null==i)return j.Direct;if("geodesic"===i.mode)return this._requiresGeodesicGuideAt(this._startPosition)||this._requiresGeodesicGuideAt(this._endPosition)?j.ProjectedGeodesic:j.Direct;const{verticalDistance:s,horizontalDistance:n}=i,o=s.value,l=n.value;return Math.min(o/l,l/o)<this.triangleCollapseRatioThreshold?j.Direct:j.Triangle}get actualVisualizedMeasurement(){if(null==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 null==this._triangleOrientationOverride}set allowVisualElementsOrientationChange(e){null==this._triangleOrientationOverride!==e&&(null==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}}constructor(e){super(e),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=P(),this._endPosition=P(),this._cornerPosition=P(),this._startPositionAtSeaLevel=P(),this._endPositionAtSeaLevel=P(),this._triangleOrientationOverride=null,this.messages=null,this.loadingMessages=!0,this.visualElementOrientation=E.Auto,this.triangleCollapseRatioThreshold=.03}initialize(){const e=this._parameters,i={attached:!0,view:this.view,isDecoration:!0},{accentColor:o,textColor:l}=this.view.effectiveTheme;this._segmentVisualElement=new C({...i,geometry:null,renderOccluded:H.OccludeAndTransparent}),this._triangleVisualElement=new O({...i,width:e.triangleLineWidth,color:e.triangleColor,renderOccluded:H.OccludeAndTransparent}),this._rightAngleQuad=new G({...i,color:t.toUnitRGBA(s(o,.75)),renderOccluded:H.OccludeAndTransparent});const r={...i,polygonOffset:!0,renderOccluded:H.OccludeAndTransparent};this._projectedGeodesicLine=new O({...r,width:e.geodesicProjectionLineWidth,color:e.geodesicProjectionLineColor,stipplePattern:k(e.guideStippleLengthPixels)}),this._geodesicStartHint=new O({...r,width:e.guideLineWidth,color:e.geodesicProjectionLineColor,stipplePattern:k(e.guideStippleLengthPixels)}),this._geodesicEndHint=new O({...r,width:e.guideLineWidth,color:e.geodesicProjectionLineColor,stipplePattern:k(e.guideStippleLengthPixels)});const a={...i,backgroundColor:s(n(l),.6),calloutColor:s(n(l),.5),textColor:l};this._segmentLabel=new M({...a,fontSize:e.directLabelFontSize}),this._verticalLabel=new M({...a,fontSize:e.verticalLabelFontSize}),this._horizontalLabel=new M({...a,fontSize:e.horizontalLabelFontSize}),this.addHandles([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),U((async()=>this._updateMessageBundle()))]),this._updateMessageBundle()}destroy(){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)}_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 j.None:break;case j.Direct:this._segmentVisualElement.visible=!0;break;case j.Triangle:this._segmentVisualElement.visible=!0,this._triangleVisualElement.visible=!0,this._rightAngleQuad.visible=!0;break;case j.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:l,stripeLength:r}){const a=e.renderCoordsHelper;if(null==a||null==s||null==n||s.equals(n))return;let c=this._startPosition,d=this._endPosition;a.toRenderCoords(s,c),a.toRenderCoords(n,d);const h=o===E.AboveSegment?1:-1,u=h*(a.getAltitude(d)-a.getAltitude(c));u<0&&(c=this._endPosition,d=this._startPosition);const m="geodesic"===l?new x(this._startPosition,this._endPosition,a.spatialReference):new T(this._startPosition,this._endPosition);switch(this._segmentVisualElement.geometry=m,this._updateSegmentStripeLength(r),i){case j.Direct:this._updateSegment(m,o);break;case j.Triangle:this._updateSegmentAndTriangle({view:e,camera:t,segment:m,orientation:o,startPosition:c,endPosition:d,deltaSign:h,altitudeDelta:u});break;case j.ProjectedGeodesic:this._updateSegmentAndProjection({view:e,orientation:o,startPosition:c,endPosition:d})}}_updateSegment(e,t){this._segmentLabel.anchor=t===E.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:o,deltaSign:l,altitudeDelta:r}){const a=this._cornerPosition;e.worldUpAtPosition(n,a),y(a,a,l*Math.abs(r)),A(a,a,n),this._triangleVisualElement.geometry=[[[n[0],n[1],n[2]],[a[0],a[1],a[2]],[o[0],o[1],o[2]]]],this._rightAngleQuad.geometry={previous:n,center:a,next:o};const c=new T(n,a),d=new T(a,o),h=Q(n,o,a,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 x(this._startPositionAtSeaLevel,this._endPositionAtSeaLevel,e.spatialReference);this._projectedGeodesicLine.setGeometryFromSegment(n),this._geodesicStartHint.setGeometryFromSegment(new T(this._startPositionAtSeaLevel,i)),this._geodesicEndHint.setGeometryFromSegment(new T(this._endPositionAtSeaLevel,s)),this._segmentLabel.geometry={type:"segment",segment:n,sampleLocation:"center"},this._segmentLabel.anchor=t===E.AboveSegment?"top":"bottom"}_updateLabelText({text:e,visualizedMeasurement:t}){null!=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 j.Direct:i.visible=!0;break;case j.Triangle:i.visible=!0,s.visible=!0,n.visible=!0;break;case j.ProjectedGeodesic:i.visible=!0;case j.None:}}get _labelsText(){if(this.destroyed)return null;const e=this.messages,t=this.analysisView.result;if(null==t||null==e)return null;const{directDistance:i,horizontalDistance:s,verticalDistance:n,geodesicDistance:o}=t,l=this.analysisView.unit,r=e=>({euclideanDistance:"",geodesicDistance:"",horizontalDistance:"",verticalDistance:"",...e});switch(l){case"metric":return r({euclideanDistance:i&&h(e,i),geodesicDistance:o&&h(e,o),horizontalDistance:s&&h(e,s),verticalDistance:n&&u(e,n)});case"imperial":return r({euclideanDistance:i&&c(e,i),geodesicDistance:o&&c(e,o),horizontalDistance:s&&c(e,s),verticalDistance:n&&d(e,n)});default:return r({euclideanDistance:i&&a(e,i,l),geodesicDistance:o&&a(e,o,l),horizontalDistance:s&&a(e,s,l),verticalDistance:n&&a(e,n,l)})}}_updateSegmentStripeLength(e){const t=this._segmentVisualElement;null!=e?(t.stripeLength=e,t.stripesEnabled=!0):t.stripesEnabled=!1}get _actualVisualElementsOrientation(){if(null!=this._triangleOrientationOverride)return this._triangleOrientationOverride;const e=this.visualElementOrientation;return e===E.Auto?this.view.state.camera.aboveGround?E.AboveSegment:E.BelowSegment:e}_requiresGeodesicGuideAt(e){const t=this.view;if(!t?.state)return!1;const i=t.state.camera,s=t.renderCoordsHelper;if(!s)return!1;const n=i.computeScreenPixelSizeAt(e);return s.getAltitude(e)/n>=10}get _measurementArrowStripeLength(){const{result:e,unit:t}=this.analysisView;if(null==e)return null;let i=null;const s=e.directDistance;switch(t){case"metric":i=s&&m(s,"meters");break;case"imperial":i=s&&m(s,b(s.value,s.unit));break;default:i=s&&m(s,t)}if(null==i)return null;return o(i.value/30)*L(1,i.unit,"meters")}_updateMessageBundle(){this.loadingMessages=!0,R("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 o=B,l=W;n.projectToRenderScreen(i,o),n.projectToRenderScreen(t,l);const r={segment:"bottom",horizontal:"top",vertical:o[0]<l[0]?"left":"right"};{const s=N,o=I;if(z(e,i,s,n),z(e,t,o,n),f(s,o)>=q){const e=Math.sign(s[1])===Math.sign(o[1]);r.segment=e?D(r.vertical):r.vertical}else{const e=J;z(i,t,e,n),f(e,o)>=q&&(r.segment=Math.sign(e[0])===Math.sign(o[0])?D(r.horizontal):r.horizontal)}}if(s===E.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()],F.prototype,"_parameters",null),e([w()],F.prototype,"_triangleOrientationOverride",void 0),e([w()],F.prototype,"messages",void 0),e([w()],F.prototype,"view",void 0),e([w()],F.prototype,"analysis",void 0),e([w()],F.prototype,"analysisView",void 0),e([w()],F.prototype,"loadingMessages",void 0),e([w()],F.prototype,"visible",null),e([w()],F.prototype,"viewMode",null),e([w()],F.prototype,"actualVisualizedMeasurement",null),e([w()],F.prototype,"visualElementOrientation",void 0),e([w()],F.prototype,"triangleCollapseRatioThreshold",void 0),e([w()],F.prototype,"allowVisualElementsOrientationChange",null),e([w()],F.prototype,"labels",null),e([w()],F.prototype,"_labelsText",null),e([w()],F.prototype,"_actualVisualElementsOrientation",null),e([w()],F.prototype,"_measurementArrowStripeLength",null),F=e([S("esri.views.3d.analysis.DirectLineMeasurement.DirectLineMeasurementVisualization")],F);const q=Math.cos(l(12)),B=v(),W=v(),N=_(),I=_(),J=_();export{F as DirectLineMeasurementVisualization};
|