@arcgis/core 4.34.0-next.74 → 4.34.0-next.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PopupTemplate.js +1 -1
- package/applications/Components/QuantityFormatter.js +1 -1
- package/applications/Components/arcadeEditorUtils.d.ts +4 -0
- package/applications/Components/arcadeEditorUtils.js +5 -0
- package/applications/Components/featureUtils.d.ts +1 -0
- package/applications/Components/featureUtils.js +1 -1
- package/arcade/Feature.js +1 -1
- package/arcade/Pixel.js +5 -0
- package/arcade/Voxel.js +1 -1
- package/arcade/arcadeAsyncRuntime.js +1 -1
- package/arcade/arcadeCompiler.js +1 -1
- package/arcade/arcadeRuntime.js +1 -1
- package/arcade/featureSetUtils.js +1 -1
- package/arcade/featureset/actions/GroupBy.js +1 -1
- package/arcade/featureset/actions/OrderBy.js +1 -1
- package/arcade/featureset/support/FeatureSetIterator.js +1 -1
- package/arcade/functions/feature.js +1 -1
- package/arcade/functions/featuresetbase.js +1 -1
- package/arcade/functions/featuresetstring.js +1 -1
- package/arcade/functions/fieldStats.js +1 -1
- package/arcade/functions/geometry.js +1 -1
- package/arcade/functions/maths.js +1 -1
- package/arcade/functions/string.js +1 -1
- package/arcade/languageUtils.js +1 -1
- package/arcade.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/009556f323e58271bc7a.js +1 -0
- package/assets/esri/core/workers/chunks/{11acefc48c0354e675df.js → 0309d008e50e55c7ff1d.js} +1 -1
- package/assets/esri/core/workers/chunks/13de06e614adf92239fe.js +1 -0
- package/assets/esri/core/workers/chunks/14a22d1a0eefa970efa1.js +1 -0
- package/assets/esri/core/workers/chunks/16d66770ef841564ee3f.js +1 -0
- package/assets/esri/core/workers/chunks/17103e6542aae53c7301.js +1 -0
- package/assets/esri/core/workers/chunks/{dd447dfc50ee7f511b84.js → 19c1f1431c0b2f4525a2.js} +1 -1
- package/assets/esri/core/workers/chunks/{5c30252c1bb8350cae5f.js → 1c52999a6392370844a6.js} +1 -1
- package/assets/esri/core/workers/chunks/21bfad7283620766d9cd.js +1 -0
- package/assets/esri/core/workers/chunks/{7219ceab0b6fae2e69b6.js → 280af3640f8e93c1024e.js} +2 -2
- package/assets/esri/core/workers/chunks/{49f7a5523462aebf90fc.js.LICENSE.txt → 280af3640f8e93c1024e.js.LICENSE.txt} +1 -1
- package/assets/esri/core/workers/chunks/3064320d54a9b48bd697.js +1 -0
- package/assets/esri/core/workers/chunks/3a5f0c759dd2f4638343.js +1 -0
- package/assets/esri/core/workers/chunks/{d12f373fcf5848ddcd8a.js → 3f523bc8551e712c9bd4.js} +1 -1
- package/assets/esri/core/workers/chunks/{5b7e5ec6aea1f7f9b005.js → 3fecfe4f8ca2a5fd7360.js} +1 -1
- package/assets/esri/core/workers/chunks/4832faefd3b7edc17c84.js +1 -0
- package/assets/esri/core/workers/chunks/{78b33c6d73824085c6d1.js → 48449abe795cb7a831eb.js} +1 -1
- package/assets/esri/core/workers/chunks/4d47187bc0821413492d.js +1 -0
- package/assets/esri/core/workers/chunks/5102c20645d9708c34b4.js +1 -0
- package/assets/esri/core/workers/chunks/541bffd61006d0e36166.js +1 -0
- package/assets/esri/core/workers/chunks/58cc06ed86301f4cee75.js +1 -0
- package/assets/esri/core/workers/chunks/{e12e8d69c05c182b6a69.js → 61bb39597ccf89f99a72.js} +1 -1
- package/assets/esri/core/workers/chunks/{f4e9640306f64b1af7a3.js → 65ec21d29e8563fdbc55.js} +1 -1
- package/assets/esri/core/workers/chunks/67d9cfe02613cb73ee37.js.LICENSE.txt +1 -1
- package/assets/esri/core/workers/chunks/{6dc62c170e9583222df2.js → 70367da4ba916376f40c.js} +1 -1
- package/assets/esri/core/workers/chunks/{fb669a2e50ca7aacac25.js → 71fef0a33b7ed9456e47.js} +1 -1
- package/assets/esri/core/workers/chunks/7430c462c350fdd26349.js +1 -0
- package/assets/esri/core/workers/chunks/{ff3fe5c97a98c8cab4ac.js → 7a23b127f551bf13ef54.js} +2 -2
- package/assets/esri/core/workers/chunks/{ff3fe5c97a98c8cab4ac.js.LICENSE.txt → 7a23b127f551bf13ef54.js.LICENSE.txt} +1 -1
- package/assets/esri/core/workers/chunks/7b73a808922b52755abd.js +1 -0
- package/assets/esri/core/workers/chunks/{d682dd49bb9ee7f48f93.js → 9304c3cdf732745577fd.js} +1 -1
- package/assets/esri/core/workers/chunks/{8d642b34d40edfe02d8e.js → 9c64b78c5c9b35b31d98.js} +2 -2
- package/assets/esri/core/workers/chunks/{8d642b34d40edfe02d8e.js.LICENSE.txt → 9c64b78c5c9b35b31d98.js.LICENSE.txt} +1 -1
- package/assets/esri/core/workers/chunks/a0edff37fd4a3f2cb2eb.js +1 -0
- package/assets/esri/core/workers/chunks/a6533bab3b2fbc1e2a47.js +1 -0
- package/assets/esri/core/workers/chunks/a9f6054d86982b9e5a7c.js +1 -0
- package/assets/esri/core/workers/chunks/{10ec10ca361842efce92.js → ab005fe84952f0676020.js} +1 -1
- package/assets/esri/core/workers/chunks/{5c53deb45bc142219c76.js → b15ff6c9ef2de8a49853.js} +2 -2
- package/assets/esri/core/workers/chunks/{5a476e6743902e35f81a.js.LICENSE.txt → b15ff6c9ef2de8a49853.js.LICENSE.txt} +1 -1
- package/assets/esri/core/workers/chunks/b70d71144a060f7eeeeb.js +1 -0
- package/assets/esri/core/workers/chunks/b8d02f1b73c374767a5f.js +1 -0
- package/assets/esri/core/workers/chunks/ba6452acee3d6defb37e.js +1 -0
- package/assets/esri/core/workers/chunks/bccecd678faff927ac76.js +1 -0
- package/assets/esri/core/workers/chunks/{ce1f4508487298ab57b6.js → bd2dc1282c49125ede89.js} +1 -1
- package/assets/esri/core/workers/chunks/bfbbf180c2c8fdbb6731.js +1 -0
- package/assets/esri/core/workers/chunks/{f542bdc994a5ea3aa9d1.js → c38360d912f256519e06.js} +1 -1
- package/assets/esri/core/workers/chunks/{e3ad0a390387c5847aca.js → c6fecf2bbd2a711f15d3.js} +1 -1
- package/assets/esri/core/workers/chunks/c86f5bb199cf046b8952.js +1 -0
- package/assets/esri/core/workers/chunks/cd1869e183001266c4c1.js +2 -0
- package/assets/esri/core/workers/chunks/{626c18c1bbc50b3b16b2.js.LICENSE.txt → cd1869e183001266c4c1.js.LICENSE.txt} +1 -1
- package/assets/esri/core/workers/chunks/{90321feb56f3a84f6e58.js → d153b29c542c37ae1636.js} +2 -2
- package/assets/esri/core/workers/chunks/{90321feb56f3a84f6e58.js.LICENSE.txt → d153b29c542c37ae1636.js.LICENSE.txt} +1 -1
- package/assets/esri/core/workers/chunks/{b5f197e24982f6e14468.js → d1f181f91b36351f1d3b.js} +2 -2
- package/assets/esri/core/workers/chunks/d55c55d39a253630d228.js +1 -0
- package/assets/esri/core/workers/chunks/{49f7a5523462aebf90fc.js → d66cdb9bb494da19696b.js} +2 -2
- package/assets/esri/core/workers/chunks/{5c53deb45bc142219c76.js.LICENSE.txt → d66cdb9bb494da19696b.js.LICENSE.txt} +1 -1
- package/assets/esri/core/workers/chunks/{9c00c2263e52ad51c2a2.js → d95554f43694b4769675.js} +1 -1
- package/assets/esri/core/workers/chunks/dd587d51dad2d82708d1.js +1 -0
- package/assets/esri/core/workers/chunks/ecac5ca00c742bfb5898.js +1 -0
- package/assets/esri/core/workers/chunks/ed773dab5965e42a2879.js +2 -0
- package/assets/esri/core/workers/chunks/{7219ceab0b6fae2e69b6.js.LICENSE.txt → ed773dab5965e42a2879.js.LICENSE.txt} +1 -1
- package/assets/esri/core/workers/chunks/{0d946a226b846b3c0849.js → fc06014fb484fc8c697e.js} +1 -1
- package/assets/esri/images/portal/xrexperience16.png +0 -0
- package/assets/esri/libs/lyr3d/lyr3DMain.wasm +0 -0
- package/assets/esri/libs/lyr3d/lyr3DWorker.wasm +0 -0
- package/chunks/Compositing.glsl.js +4 -3
- package/chunks/Fog.glsl.js +6 -6
- package/chunks/GlowComposition.glsl.js +31 -12
- package/chunks/LineMarker.glsl.js +37 -36
- package/chunks/RibbonLine.glsl.js +83 -83
- package/chunks/array.js +1 -1
- package/chunks/cameraUtilsSpherical.js +1 -1
- package/chunks/languageUtils.js +1 -1
- package/chunks/lyr3DMain.js +1 -1
- package/chunks/lyr3DWorker.js +1 -1
- package/config.js +1 -1
- package/core/quantityFormatUtils.js +1 -1
- package/core/sql.d.ts +1 -0
- package/core/unitFormatUtils.js +1 -1
- package/core/unitUtils.js +1 -1
- package/form/FormTemplate.js +1 -1
- package/geometry/support/curves/circleUtils.js +1 -1
- package/geometry/support/curves/circularArcUtils.js +1 -1
- package/geometry/support/curves/closestPointOnCurve.js +1 -1
- package/geometry/support/curves/curveExtent.js +1 -1
- package/geometry/support/curves/lineUtils.js +5 -0
- package/geometry/support/heightModelInfoUtils.js +1 -1
- package/geometry/support/normalizeUtils.js +1 -1
- package/geometry/support/spatialReferenceUtils.js +1 -1
- package/interfaces.d.ts +315 -18
- package/kernel.js +1 -1
- package/layers/GaussianSplatLayer.js +1 -1
- package/layers/ImageryLayer.js +1 -1
- package/layers/ImageryTileLayer.js +1 -1
- package/layers/Lyr3DWasmPerSceneView.js +1 -1
- package/layers/Lyr3DWorkerHandle.js +1 -1
- package/layers/graphics/controllers/I3SOnDemandController.js +1 -1
- package/layers/support/fieldUtils.js +1 -1
- package/layers/support/tiles3DUtils.js +1 -1
- package/networks/CircuitManager.js +1 -1
- package/networks/support/Circuit.js +1 -1
- package/networks/support/CircuitSection.js +1 -1
- package/networks/support/Subcircuit.js +1 -1
- package/package.json +2 -2
- package/portal/PortalItem.js +1 -1
- package/renderers/ClassBreaksRenderer.js +1 -1
- package/renderers/DictionaryRenderer.js +1 -1
- package/renderers/DotDensityRenderer.js +1 -1
- package/renderers/HeatmapRenderer.js +1 -1
- package/renderers/PieChartRenderer.js +1 -1
- package/renderers/UniqueValueRenderer.js +1 -1
- package/renderers/mixins/VisualVariablesMixin.js +1 -1
- package/support/arcadeUtils.js +1 -1
- package/support/loadArcade.js +1 -1
- package/support/modeUtils.js +1 -1
- package/support/revision.js +1 -1
- package/symbols/CIMSymbol.js +1 -1
- package/symbols/support/FeatureExpressionInfo.js +1 -1
- package/views/2d/layers/LayerView2D.js +1 -1
- package/views/2d/layers/MediaLayerView2D.js +1 -1
- package/views/2d/layers/TileLayerView2D.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/lengthDimensionManipulatorUtils.js +1 -1
- package/views/3d/analysis/Slice/ResizeManipulator.js +1 -1
- package/views/3d/analysis/Slice/RotateManipulator.js +1 -1
- package/views/3d/analysis/Slice/ShiftManipulator.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedFieldOfViewManipulation.js +1 -1
- package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementTool.js +1 -1
- package/views/3d/environment/Fog.js +1 -1
- package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/LineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/MarkerVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/OutlineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/ParallelLineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/RightAngleQuadVisualElement.js +1 -1
- package/views/3d/layers/FlowSubView3D.js +1 -1
- package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
- package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
- package/views/3d/layers/Lyr3DWorker.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPolygonFillSymbolLayer.js +1 -1
- package/views/3d/layers/i3s/PointCloudRenderer.js +1 -1
- package/views/3d/layers/support/Tiles3DIntersectionHandler.js +1 -1
- package/views/3d/state/SurfaceCollisionConstraint.js +1 -1
- package/views/3d/state/ViewStateManager.js +1 -1
- package/views/3d/state/controllers/SurfaceCollisionCorrectionController.js +1 -1
- package/views/3d/support/cameraUtils.js +1 -1
- package/views/3d/support/cameraUtilsSpherical.js +1 -1
- package/views/3d/support/flow/FlowSubViewExtent3D.js +1 -1
- package/views/3d/support/flow/FlowSubViewTiles3D.js +1 -1
- package/views/3d/support/flow/FlowWorker.js +1 -1
- package/views/3d/support/flow/geometryUtils.js +1 -1
- package/views/3d/support/flow/loadUtils.js +1 -1
- package/{layers/support/GaussianSplatAtlasPageAllocator.js → views/3d/support/gaussianSplatting/GaussianSplatAtlasPages.js} +1 -1
- package/views/3d/support/gaussianSplatting/GaussianSplatDataStore.js +5 -0
- package/views/3d/support/gaussianSplatting/GaussianSplatOrderTexture.js +5 -0
- package/views/3d/support/gaussianSplatting/GaussianSplatTextureAtlas.js +5 -0
- package/views/3d/support/gaussianSplatting/GaussianTile.js +5 -0
- package/views/3d/terrain/OverlayManager.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js +23 -13
- package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +37 -25
- package/views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js +11 -11
- package/views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js +5 -0
- package/views/3d/webgl-engine/effects/glow/GlowComposition.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/glow/GlowPresets.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/glow/GlowRenderNode.js +1 -1
- package/views/3d/webgl-engine/lib/CompositingHelper.js +1 -1
- package/views/3d/webgl-engine/lib/GaussianSplatRenderNode.js +1 -1
- package/views/3d/webgl-engine/lib/GridLocalOriginFactory.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/strokes.js +1 -1
- package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/stippleTextureRepository.js +1 -1
- package/views/3d/webgl-engine/parts/RenderView.js +1 -1
- package/views/3d/webgl-engine/shaders/CompositingTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/CompositingTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/LineMarker.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/LineMarkerTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/sources/edgeRenderer/LineOffset.glsl.js +10 -11
- package/views/GroundView.js +1 -1
- package/views/VideoView.js +1 -1
- package/views/interactive/snapping/allLayerSnapping.js +1 -1
- package/views/layers/ImageryLayerView.js +1 -1
- package/views/support/LayerViewManager.js +1 -1
- package/widgets/Feature/support/arcadeFeatureUtils.js +1 -1
- package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
- package/widgets/support/widget.js +1 -1
- package/assets/esri/core/workers/chunks/06bd58c219678315cf5c.js +0 -1
- package/assets/esri/core/workers/chunks/0751f539db31bdb5caec.js +0 -1
- package/assets/esri/core/workers/chunks/19228ab0fe7944c554e5.js +0 -1
- package/assets/esri/core/workers/chunks/2a19a4d7d1c580121065.js +0 -1
- package/assets/esri/core/workers/chunks/3d2629357242492afcfa.js +0 -1
- package/assets/esri/core/workers/chunks/5a476e6743902e35f81a.js +0 -2
- package/assets/esri/core/workers/chunks/5a95688651d7e8b7101d.js +0 -1
- package/assets/esri/core/workers/chunks/5c4ba165816809e06340.js +0 -1
- package/assets/esri/core/workers/chunks/5f239972cb95afdfa77a.js +0 -1
- package/assets/esri/core/workers/chunks/626c18c1bbc50b3b16b2.js +0 -2
- package/assets/esri/core/workers/chunks/6963ded8428cc8d51d85.js +0 -1
- package/assets/esri/core/workers/chunks/6c3ae96c6ef764fb9552.js +0 -1
- package/assets/esri/core/workers/chunks/6da298da2ec09cced0b5.js +0 -1
- package/assets/esri/core/workers/chunks/76ec3d2646ba64e3442f.js +0 -1
- package/assets/esri/core/workers/chunks/8b1d2bbb2b2eb1830921.js +0 -1
- package/assets/esri/core/workers/chunks/925ad2665c2fe0f47cc3.js +0 -1
- package/assets/esri/core/workers/chunks/a2f4b6d8da93f106852c.js +0 -1
- package/assets/esri/core/workers/chunks/ada8e07ff12bc5d4a1d9.js +0 -1
- package/assets/esri/core/workers/chunks/b03dcbc31bccb9fdf9fe.js +0 -1
- package/assets/esri/core/workers/chunks/b0de01f8c9b1c3182e0c.js +0 -1
- package/assets/esri/core/workers/chunks/c7ba8f2aca0fbd6ceded.js +0 -1
- package/assets/esri/core/workers/chunks/c908184d747d33366881.js +0 -1
- package/assets/esri/core/workers/chunks/d1711256493d55eca523.js +0 -1
- package/assets/esri/core/workers/chunks/d305ca524837c5dc81c8.js +0 -1
- package/assets/esri/core/workers/chunks/e6e4e2fb9568319c6207.js +0 -1
- package/assets/esri/core/workers/chunks/e6f2ac738df16fb5e13a.js +0 -1
- package/assets/esri/core/workers/chunks/e8d25d4ca9b335883f34.js +0 -1
- package/assets/esri/core/workers/chunks/ee391a41144855fc625d.js +0 -1
- package/assets/esri/core/workers/chunks/f060a52a9b69eb250d63.js +0 -1
- package/layers/support/gaussianSplatUtils.js +0 -5
|
@@ -2,52 +2,52 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.34/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{markerTextureSize as e,markerSymbolSize as r,markerTipThicknessFactor as i}from"../views/3d/support/engineContent/marker.js";import{SliceDraw as o}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as
|
|
5
|
+
import{markerTextureSize as e,markerSymbolSize as r,markerTipThicknessFactor as i}from"../views/3d/support/engineContent/marker.js";import{SliceDraw as o}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{OutputHighlight as a}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{MarkerSizing as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{terrainDepthTest as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/TerrainDepthTest.glsl.js";import{ColorConversion as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as c,NoPerspectiveRead as p}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{RgbaFloatEncoding as d}from"../views/3d/webgl-engine/core/shaderLibrary/util/RgbaFloatEncoding.glsl.js";import{addProjViewLocalOrigin as v,addViewNormal as m,addPixelRatio as h}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float2BindUniform as f}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{Float4BindUniform as g}from"../views/3d/webgl-engine/core/shaderModules/Float4BindUniform.js";import{Float4PassUniform as u}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as w}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{glsl as y,If as S}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as b}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Texture2DPassUniform as x}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{outputColorHighlightOID as P}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOID.glsl.js";import{ShaderBuilder as z}from"../views/webgl/ShaderBuilder.js";function j(j){const L=new z,{space:k,anchor:D,hasTip:M}=j,C=2===k,W=1===k;L.include(t,j),L.include(n,j),L.include(s,j);const{vertex:$,fragment:U,varyings:O}=L;U.include(d),v($,j),L.attributes.add("position","vec3"),L.attributes.add("previousDelta","vec4"),L.attributes.add("uv0","vec2"),O.add("vColor","vec4"),O.add("vpos","vec3",{invariant:!0}),O.add("vUV","vec2"),O.add("vSize","float"),M&&O.add("vLineWidth","float"),$.uniforms.add(new f("nearFar",({camera:e})=>e.nearFar),new g("viewport",({camera:e})=>e.fullViewport)).code.add(y`vec4 projectAndScale(vec4 pos) {
|
|
6
6
|
vec4 posNdc = proj * pos;
|
|
7
7
|
posNdc.xy *= viewport.zw / posNdc.w;
|
|
8
8
|
return posNdc;
|
|
9
|
-
}`)
|
|
9
|
+
}`),$.code.add(y`void clip(vec4 pos, inout vec4 prev) {
|
|
10
10
|
float vnp = nearFar[0] * 0.99;
|
|
11
11
|
if (prev.z > -nearFar[0]) {
|
|
12
12
|
float interpolation = (-vnp - pos.z) / (prev.z - pos.z);
|
|
13
13
|
prev = mix(pos, prev, interpolation);
|
|
14
14
|
}
|
|
15
|
-
}`),
|
|
15
|
+
}`),C?(L.attributes.add("normal","vec3"),m($),$.constants.add("tiltThreshold","float",.7),$.code.add(y`vec3 perpendicular(vec3 v) {
|
|
16
16
|
vec3 n = (viewNormal * vec4(normal.xyz, 1.0)).xyz;
|
|
17
17
|
vec3 n2 = cross(v, n);
|
|
18
18
|
vec3 forward = vec3(0.0, 0.0, 1.0);
|
|
19
19
|
float tiltDot = dot(forward, n);
|
|
20
20
|
return abs(tiltDot) < tiltThreshold ? n : n2;
|
|
21
|
-
}`))
|
|
21
|
+
}`)):$.code.add(y`vec2 perpendicular(vec2 v) {
|
|
22
22
|
return vec2(v.y, -v.x);
|
|
23
|
-
}`);const
|
|
24
|
-
${
|
|
25
|
-
${
|
|
23
|
+
}`);const T=C?"vec3":"vec2";return $.code.add(y`
|
|
24
|
+
${T} normalizedSegment(${T} pos, ${T} prev) {
|
|
25
|
+
${T} segment = pos - prev;
|
|
26
26
|
float segmentLen = length(segment);
|
|
27
27
|
|
|
28
28
|
// normalize or zero if too short
|
|
29
|
-
return (segmentLen > 0.001) ? segment / segmentLen : ${
|
|
29
|
+
return (segmentLen > 0.001) ? segment / segmentLen : ${C?"vec3(0.0, 0.0, 0.0)":"vec2(0.0, 0.0)"};
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
${
|
|
33
|
-
${
|
|
32
|
+
${T} displace(${T} pos, ${T} prev, float displacementLen) {
|
|
33
|
+
${T} segment = normalizedSegment(pos, prev);
|
|
34
34
|
|
|
35
|
-
${
|
|
36
|
-
${
|
|
35
|
+
${T} displacementDirU = perpendicular(segment);
|
|
36
|
+
${T} displacementDirV = segment;
|
|
37
37
|
|
|
38
|
-
${1===
|
|
38
|
+
${1===D?"pos -= 0.5 * displacementLen * displacementDirV;":""}
|
|
39
39
|
|
|
40
40
|
return pos + displacementLen * (uv0.x * displacementDirU + uv0.y * displacementDirV);
|
|
41
41
|
}
|
|
42
|
-
`),
|
|
42
|
+
`),W&&($.uniforms.add(new b("inverseProjectionMatrix",({camera:e})=>e.inverseProjectionMatrix)),$.code.add(y`vec3 inverseProject(vec4 posScreen) {
|
|
43
43
|
posScreen.xy = (posScreen.xy / viewport.zw) * posScreen.w;
|
|
44
44
|
return (inverseProjectionMatrix * posScreen).xyz;
|
|
45
|
-
}`)
|
|
45
|
+
}`),$.code.add(y`bool rayIntersectPlane(vec3 rayDir, vec3 planeOrigin, vec3 planeNormal, out vec3 intersection) {
|
|
46
46
|
float cos = dot(rayDir, planeNormal);
|
|
47
47
|
float t = dot(planeOrigin, planeNormal) / cos;
|
|
48
48
|
intersection = t * rayDir;
|
|
49
49
|
return abs(cos) > 0.001 && t > 0.0;
|
|
50
|
-
}`)
|
|
50
|
+
}`),$.uniforms.add(new w("perScreenPixelRatio",({camera:e})=>e.perScreenPixelRatio)),$.code.add(y`
|
|
51
51
|
vec4 toFront(vec4 displacedPosScreen, vec3 posLeft, vec3 posRight, vec3 prev, float lineWidth) {
|
|
52
52
|
// Project displaced position back to camera space
|
|
53
53
|
vec3 displacedPos = inverseProject(displacedPosScreen);
|
|
@@ -57,7 +57,7 @@ return abs(cos) > 0.001 && t > 0.0;
|
|
|
57
57
|
vec3 planeNormal = normalize(cross(posLeft - posRight, posLeft - prev));
|
|
58
58
|
vec3 planeOrigin = posLeft;
|
|
59
59
|
|
|
60
|
-
${
|
|
60
|
+
${S(j.hasCap,"if(prev.z > posLeft.z) {\n vec2 diff = posLeft.xy - posRight.xy;\n planeOrigin.xy += perpendicular(diff) / 2.0;\n }")};
|
|
61
61
|
|
|
62
62
|
// Move the plane towards the camera by a margin dependent on the line width (approximated in world space). This tolerance corrects for the
|
|
63
63
|
// non-planarity in most cases, but sharp joins can place the prev vertices at arbitrary positions so markers can still clip.
|
|
@@ -76,7 +76,7 @@ return abs(cos) > 0.001 && t > 0.0;
|
|
|
76
76
|
displacedPos *= minDepth / length(displacedPos);
|
|
77
77
|
return vec4(displacedPos.xyz, 1.0);
|
|
78
78
|
}
|
|
79
|
-
`)),
|
|
79
|
+
`)),h($),L.include(c),$.main.add(y`
|
|
80
80
|
// Check for special value of uv0.y which is used by the Renderer when graphics
|
|
81
81
|
// are removed before the VBO is recompacted. If this is the case, then we just
|
|
82
82
|
// project outside of clip space.
|
|
@@ -85,27 +85,28 @@ return abs(cos) > 0.001 && t > 0.0;
|
|
|
85
85
|
gl_Position = vec4(1e038, 1e038, 1e038, 1.0);
|
|
86
86
|
}
|
|
87
87
|
else {
|
|
88
|
-
float lineWidth = getLineWidth();
|
|
89
|
-
float screenMarkerSize = getScreenMarkerSize();
|
|
90
|
-
|
|
91
88
|
vec4 pos = view * vec4(position, 1.0);
|
|
92
89
|
vec4 prev = view * vec4(position + previousDelta.xyz * previousDelta.w, 1.0);
|
|
90
|
+
|
|
91
|
+
float lineWidth = getLineWidth(pos.xyz);
|
|
92
|
+
float screenMarkerSize = getScreenMarkerSize(lineWidth);
|
|
93
|
+
|
|
93
94
|
clip(pos, prev);
|
|
94
95
|
|
|
95
|
-
${
|
|
96
|
-
if (areWorldMarkersHidden(pos, prev)) {
|
|
96
|
+
${C?y`${S(j.hideOnShortSegments,y`
|
|
97
|
+
if (areWorldMarkersHidden(pos.xyz, prev.xyz)) {
|
|
97
98
|
// Project out of clip space
|
|
98
99
|
gl_Position = vec4(1e038, 1e038, 1e038, 1.0);
|
|
99
100
|
return;
|
|
100
101
|
}`)}
|
|
101
|
-
pos.xyz = displace(pos.xyz, prev.xyz, getWorldMarkerSize(pos));
|
|
102
|
-
vec4 displacedPosScreen = projectAndScale(pos);`:
|
|
102
|
+
pos.xyz = displace(pos.xyz, prev.xyz, getWorldMarkerSize(pos.xyz));
|
|
103
|
+
vec4 displacedPosScreen = projectAndScale(pos);`:y`
|
|
103
104
|
vec4 posScreen = projectAndScale(pos);
|
|
104
105
|
vec4 prevScreen = projectAndScale(prev);
|
|
105
106
|
vec4 displacedPosScreen = posScreen;
|
|
106
107
|
|
|
107
108
|
displacedPosScreen.xy = displace(posScreen.xy, prevScreen.xy, screenMarkerSize);
|
|
108
|
-
${
|
|
109
|
+
${S(W,y`
|
|
109
110
|
vec2 displacementDirU = perpendicular(normalizedSegment(posScreen.xy, prevScreen.xy));
|
|
110
111
|
|
|
111
112
|
// We need three points of the ribbon line in camera space to calculate the plane it lies in
|
|
@@ -121,8 +122,8 @@ return abs(cos) > 0.001 && t > 0.0;
|
|
|
121
122
|
|
|
122
123
|
// Convert texture coordinate into [0,1]
|
|
123
124
|
vUV = (uv0 + 1.0) / 2.0;
|
|
124
|
-
${
|
|
125
|
-
${
|
|
125
|
+
${S(!C,"vUV = noPerspectiveWrite(vUV, displacedPosScreen.w);")}
|
|
126
|
+
${S(M,"vLineWidth = noPerspectiveWrite(lineWidth, displacedPosScreen.w);")}
|
|
126
127
|
|
|
127
128
|
vSize = screenMarkerSize;
|
|
128
129
|
vColor = getColor();
|
|
@@ -131,33 +132,33 @@ return abs(cos) > 0.001 && t > 0.0;
|
|
|
131
132
|
vpos = pos.xyz;
|
|
132
133
|
|
|
133
134
|
gl_Position = displacedPosScreen;
|
|
134
|
-
}`)
|
|
135
|
+
}`),U.include(o,j),L.include(P,j),U.include(l),U.uniforms.add(new u("intrinsicColor",({color:e})=>e),new x("tex",({markerTexture:e})=>e)).constants.add("texelSize","float",1/e).code.add(y`float markerAlpha(vec2 samplePos) {
|
|
135
136
|
samplePos += vec2(0.5, -0.5) * texelSize;
|
|
136
137
|
float sdf = rgbaTofloat(texture(tex, samplePos)) - 0.5;
|
|
137
138
|
float distance = sdf * vSize;
|
|
138
139
|
distance -= 0.5;
|
|
139
140
|
return clamp(0.5 - distance, 0.0, 1.0);
|
|
140
|
-
}`),
|
|
141
|
+
}`),M&&(L.include(p),U.constants.add("relativeMarkerSize","float",r/e).constants.add("relativeTipLineWidth","float",i).code.add(y`
|
|
141
142
|
float tipAlpha(vec2 samplePos) {
|
|
142
143
|
// Convert coordinates s.t. they are in pixels and relative to the tip of an arrow marker
|
|
143
144
|
samplePos -= vec2(0.5, 0.5 + 0.5 * relativeMarkerSize);
|
|
144
145
|
samplePos *= vSize;
|
|
145
146
|
|
|
146
147
|
float halfMarkerSize = 0.5 * relativeMarkerSize * vSize;
|
|
147
|
-
float halfTipLineWidth = 0.5 * max(1.0, relativeTipLineWidth * vLineWidth);
|
|
148
|
+
float halfTipLineWidth = 0.5 * max(1.0, relativeTipLineWidth * noPerspectiveRead(vLineWidth));
|
|
148
149
|
|
|
149
|
-
${
|
|
150
|
+
${S(C,"halfTipLineWidth *= fwidth(samplePos.y);")}
|
|
150
151
|
|
|
151
152
|
float distance = max(abs(samplePos.x) - halfMarkerSize, abs(samplePos.y) - halfTipLineWidth);
|
|
152
153
|
return clamp(0.5 - distance, 0.0, 1.0);
|
|
153
154
|
}
|
|
154
|
-
`),
|
|
155
|
+
`)),L.include(a,j),L.include(p),U.main.add(y`
|
|
155
156
|
discardBySlice(vpos);
|
|
156
157
|
discardByTerrainDepth();
|
|
157
158
|
|
|
158
159
|
vec4 finalColor = intrinsicColor * vColor;
|
|
159
160
|
|
|
160
161
|
// Cancel out perspective correct interpolation if in screen space or draped
|
|
161
|
-
vec2 samplePos =
|
|
162
|
-
finalColor.a *= ${
|
|
163
|
-
outputColorHighlightOID(finalColor, vpos, finalColor.rgb);`),
|
|
162
|
+
vec2 samplePos = ${S(!C,"noPerspectiveRead(vUV)","vUV")};
|
|
163
|
+
finalColor.a *= ${M?"max(markerAlpha(samplePos), tipAlpha(samplePos))":"markerAlpha(samplePos)"};
|
|
164
|
+
outputColorHighlightOID(finalColor, vpos, finalColor.rgb);`),L}const L=Object.freeze(Object.defineProperty({__proto__:null,build:j},Symbol.toStringTag,{value:"Module"}));export{L,j as b};
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.34/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{SliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{ObjectAndLayerIdColor as i}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/ObjectAndLayerIdColor.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{LineStipple as n,computePixelSize as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{MarkerSizing as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{PiUtils as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{terrainDepthTest as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/TerrainDepthTest.glsl.js";import{ColorConversion as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{
|
|
5
|
+
import{SliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{ObjectAndLayerIdColor as i}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/ObjectAndLayerIdColor.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{LineStipple as n,computePixelSize as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{MarkerSizing as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{PiUtils as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{terrainDepthTest as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/TerrainDepthTest.glsl.js";import{ColorConversion as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as d,NoPerspectiveRead as p}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as c,addPixelRatio as m}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float2BindUniform as v}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{Float4BindUniform as f}from"../views/3d/webgl-engine/core/shaderModules/Float4BindUniform.js";import{Float4PassUniform as g}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as D}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as h}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as S,If as x}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as u}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{AnimatedLine as L}from"../views/3d/webgl-engine/shaders/AnimatedLine.glsl.js";import{outputColorHighlightOID as w}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOID.glsl.js";import{ShaderBuilder as b}from"../views/webgl/ShaderBuilder.js";import{alphaCutoff as P}from"../webscene/support/AlphaCutoff.js";const y=1;function j(j){const C=new b,{attributes:z,varyings:W,vertex:R,fragment:F}=C,{applyMarkerOffset:A,draped:T,output:V,capType:E,stippleEnabled:O,falloffEnabled:M,roundJoins:N,wireframe:$,innerColorEnabled:_,hasAnimation:k}=j;F.include(a),C.include(t,j),C.include(n,j),C.include(i,j),C.include(s,j),C.include(L,j);const B=A&&!T;B&&(R.uniforms.add(new h("markerScale",e=>e.markerScale)),C.include(o,{space:2})),c(R,j),R.uniforms.add(new u("inverseProjectionMatrix",e=>e.camera.inverseProjectionMatrix),new v("nearFar",e=>e.camera.nearFar),new h("miterLimit",e=>"miter"!==e.join?0:e.miterLimit),new f("viewport",e=>e.camera.fullViewport)),R.constants.add("LARGE_HALF_FLOAT","float",65500),z.add("position","vec3"),z.add("previousDelta","vec4"),z.add("nextDelta","vec4"),z.add("lineParameters","vec2"),z.add("u0","float"),W.add("vColor","vec4"),W.add("vpos","vec3",{invariant:!0}),W.add("vLineDistance","float"),W.add("vLineWidth","float");const H=O;H&&W.add("vLineSizeInv","float");const I=2===E,J=O&&I,U=M||J;U&&W.add("vLineDistanceNorm","float"),I&&(W.add("vSegmentSDF","float"),W.add("vReverseSegmentSDF","float")),R.code.add(S`vec2 perpendicular(vec2 v) {
|
|
6
6
|
return vec2(v.y, -v.x);
|
|
7
7
|
}
|
|
8
8
|
float interp(float ncp, vec4 a, vec4 b) {
|
|
@@ -13,22 +13,22 @@ float s = sin(a);
|
|
|
13
13
|
float c = cos(a);
|
|
14
14
|
mat2 m = mat2(c, -s, s, c);
|
|
15
15
|
return m * v;
|
|
16
|
-
}`),
|
|
16
|
+
}`),R.code.add(S`vec4 projectAndScale(vec4 pos) {
|
|
17
17
|
vec4 posNdc = proj * pos;
|
|
18
18
|
posNdc.xy *= viewport.zw / posNdc.w;
|
|
19
19
|
return posNdc;
|
|
20
|
-
}`),
|
|
20
|
+
}`),R.code.add(S`void clipAndTransform(inout vec4 pos, inout vec4 prev, inout vec4 next, in bool isStartVertex, out vec4 clippedPos) {
|
|
21
21
|
float vnp = nearFar[0] * 0.99;
|
|
22
|
-
if(pos.z > -nearFar[0]) {
|
|
22
|
+
if (pos.z > -nearFar[0]) {
|
|
23
23
|
if (!isStartVertex) {
|
|
24
|
-
if(prev.z < -nearFar[0]) {
|
|
24
|
+
if (prev.z < -nearFar[0]) {
|
|
25
25
|
pos = mix(prev, pos, interp(vnp, prev, pos));
|
|
26
26
|
next = pos;
|
|
27
27
|
} else {
|
|
28
28
|
pos = vec4(0.0, 0.0, 0.0, 1.0);
|
|
29
29
|
}
|
|
30
30
|
} else {
|
|
31
|
-
if(next.z < -nearFar[0]) {
|
|
31
|
+
if (next.z < -nearFar[0]) {
|
|
32
32
|
pos = mix(pos, next, interp(vnp, pos, next));
|
|
33
33
|
prev = pos;
|
|
34
34
|
} else {
|
|
@@ -44,26 +44,36 @@ next = mix(next, pos, interp(vnp, next, pos));
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
forwardViewPosDepth(pos.xyz);
|
|
47
|
+
clippedPos = pos;
|
|
47
48
|
pos = projectAndScale(pos);
|
|
48
49
|
next = projectAndScale(next);
|
|
49
50
|
prev = projectAndScale(prev);
|
|
50
|
-
}`),
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
51
|
+
}`),m(R),R.constants.add("aaWidth","float",O?0:1).main.add(S`bool isStartVertex = abs(abs(lineParameters.y) - 3.0) == 1.0;
|
|
52
|
+
vec3 prevPosition = position + previousDelta.xyz * previousDelta.w;
|
|
53
|
+
vec3 nextPosition = position + nextDelta.xyz * nextDelta.w;
|
|
54
|
+
float coverage = 1.0;
|
|
55
|
+
if (lineParameters.y == 0.0) {
|
|
56
|
+
gl_Position = vec4(1e038, 1e038, 1e038, 1.0);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
vec4 pos = view * vec4(position, 1.0);
|
|
60
|
+
vec4 prev = view * vec4(prevPosition, 1.0);
|
|
61
|
+
vec4 next = view * vec4(nextPosition, 1.0);
|
|
62
|
+
bool isJoin = abs(lineParameters.y) < 3.0;`),B&&R.main.add(S`vec4 other = isStartVertex ? next : prev;
|
|
63
|
+
bool markersHidden = areWorldMarkersHidden(pos.xyz, other.xyz);
|
|
64
|
+
if (!isJoin && !markersHidden) {
|
|
65
|
+
pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
66
|
+
}`),C.include(d),R.main.add(S`
|
|
67
|
+
vec4 clippedPos;
|
|
68
|
+
clipAndTransform(pos, prev, next, isStartVertex, clippedPos);
|
|
69
|
+
|
|
70
|
+
vec2 left = (pos.xy - prev.xy);
|
|
71
|
+
vec2 right = (next.xy - pos.xy);
|
|
72
|
+
|
|
73
|
+
float leftLen = length(left);
|
|
74
|
+
float rightLen = length(right);
|
|
75
|
+
|
|
76
|
+
float lineSize = getSize(clippedPos.xyz);
|
|
67
77
|
|
|
68
78
|
if (lineSize < 1.0) {
|
|
69
79
|
coverage = lineSize; // convert sub-pixel coverage to alpha
|
|
@@ -72,26 +82,14 @@ prev = projectAndScale(prev);
|
|
|
72
82
|
lineSize += aaWidth;
|
|
73
83
|
|
|
74
84
|
float lineWidth = lineSize * pixelRatio;
|
|
75
|
-
vLineWidth = lineWidth;
|
|
76
|
-
${
|
|
77
|
-
|
|
78
|
-
vec4 pos = view * vec4(position, 1.0);
|
|
79
|
-
vec4 prev = view * vec4(prevPosition, 1.0);
|
|
80
|
-
vec4 next = view * vec4(nextPosition, 1.0);
|
|
81
|
-
`),$&&F.main.add(h`vec4 other = isStartVertex ? next : prev;
|
|
82
|
-
bool markersHidden = areWorldMarkersHidden(pos, other);
|
|
83
|
-
if(!isJoin && !markersHidden) {
|
|
84
|
-
pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos) * 0.5;
|
|
85
|
-
}`),F.main.add(h`clipAndTransform(pos, prev, next, isStartVertex);
|
|
86
|
-
vec2 left = (pos.xy - prev.xy);
|
|
87
|
-
vec2 right = (next.xy - pos.xy);
|
|
88
|
-
float leftLen = length(left);
|
|
89
|
-
float rightLen = length(right);`);(T||B)&&F.main.add(h`
|
|
85
|
+
vLineWidth = noPerspectiveWrite(lineWidth, pos.w);
|
|
86
|
+
${H?S`vLineSizeInv = noPerspectiveWrite(1.0 / lineSize, pos.w);`:""}
|
|
87
|
+
`);(O||I)&&R.main.add(S`
|
|
90
88
|
float isEndVertex = float(!isStartVertex);
|
|
91
89
|
vec2 segmentOrigin = mix(pos.xy, prev.xy, isEndVertex);
|
|
92
90
|
vec2 segment = mix(right, left, isEndVertex);
|
|
93
|
-
${
|
|
94
|
-
`),
|
|
91
|
+
${I?S`vec2 segmentEnd = mix(next.xy, pos.xy, isEndVertex);`:""}
|
|
92
|
+
`),R.main.add(S`left = (leftLen > 0.001) ? left/leftLen : vec2(0.0, 0.0);
|
|
95
93
|
right = (rightLen > 0.001) ? right/rightLen : vec2(0.0, 0.0);
|
|
96
94
|
vec2 capDisplacementDir = vec2(0, 0);
|
|
97
95
|
vec2 joinDisplacementDir = vec2(0, 0);
|
|
@@ -108,18 +106,18 @@ displacementLen = min(displacementLen, min(leftLen, rightLen)/abs(nDotSeg));
|
|
|
108
106
|
}
|
|
109
107
|
}
|
|
110
108
|
float subdivisionFactor = lineParameters.x;
|
|
111
|
-
if (isOutside && (displacementLen > miterLimit * lineWidth)) {`),
|
|
109
|
+
if (isOutside && (displacementLen > miterLimit * lineWidth)) {`),N?R.main.add(S`
|
|
112
110
|
vec2 startDir = leftLen < 0.001 ? right : left;
|
|
113
111
|
startDir = perpendicular(startDir);
|
|
114
112
|
|
|
115
113
|
vec2 endDir = rightLen < 0.001 ? left : right;
|
|
116
114
|
endDir = perpendicular(endDir);
|
|
117
115
|
|
|
118
|
-
float factor = ${
|
|
116
|
+
float factor = ${O?S`min(1.0, subdivisionFactor * ${S.float((y+2)/(y+1))})`:S`subdivisionFactor`};
|
|
119
117
|
|
|
120
118
|
float rotationAngle = acos(clamp(dot(startDir, endDir), -1.0, 1.0));
|
|
121
119
|
joinDisplacementDir = rotate(startDir, -sign(lineParameters.y) * factor * rotationAngle);
|
|
122
|
-
`):
|
|
120
|
+
`):R.main.add(S`if (leftLen < 0.001) {
|
|
123
121
|
joinDisplacementDir = right;
|
|
124
122
|
}
|
|
125
123
|
else if (rightLen < 0.001) {
|
|
@@ -128,7 +126,7 @@ joinDisplacementDir = left;
|
|
|
128
126
|
else {
|
|
129
127
|
joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? right : left;
|
|
130
128
|
}
|
|
131
|
-
joinDisplacementDir = perpendicular(joinDisplacementDir);`);const
|
|
129
|
+
joinDisplacementDir = perpendicular(joinDisplacementDir);`);const G=0!==E;return R.main.add(S`
|
|
132
130
|
displacementLen = lineWidth;
|
|
133
131
|
}
|
|
134
132
|
} else {
|
|
@@ -136,27 +134,27 @@ joinDisplacementDir = perpendicular(joinDisplacementDir);`);const J=0!==V;return
|
|
|
136
134
|
joinDisplacementDir = isStartVertex ? right : left;
|
|
137
135
|
joinDisplacementDir = perpendicular(joinDisplacementDir);
|
|
138
136
|
|
|
139
|
-
${
|
|
137
|
+
${G?S`capDisplacementDir = isStartVertex ? -right : left;`:""}
|
|
140
138
|
}
|
|
141
|
-
`),
|
|
139
|
+
`),R.main.add(S`
|
|
142
140
|
// Displacement (in pixels) caused by join/or cap
|
|
143
141
|
vec2 dpos = joinDisplacementDir * sign(lineParameters.y) * displacementLen + capDisplacementDir * displacementLen;
|
|
144
|
-
float lineDistNorm = sign(lineParameters.y)
|
|
142
|
+
float lineDistNorm = noPerspectiveWrite(sign(lineParameters.y), pos.w);
|
|
145
143
|
|
|
146
|
-
vLineDistance =
|
|
147
|
-
${
|
|
144
|
+
vLineDistance = lineWidth * lineDistNorm;
|
|
145
|
+
${U?S`vLineDistanceNorm = lineDistNorm;`:""}
|
|
148
146
|
|
|
149
147
|
pos.xy += dpos;
|
|
150
|
-
`),
|
|
151
|
-
vSegmentSDF = (isJoin && isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentOrigin, segmentDir)
|
|
152
|
-
vReverseSegmentSDF = (isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd, -segmentDir)
|
|
153
|
-
float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),
|
|
148
|
+
`),I&&R.main.add(S`vec2 segmentDir = normalize(segment);
|
|
149
|
+
vSegmentSDF = noPerspectiveWrite((isJoin && isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentOrigin, segmentDir)), pos.w);
|
|
150
|
+
vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd, -segmentDir)), pos.w);`),O&&(T?R.uniforms.add(new D("worldToScreenRatio",e=>1/e.screenToPCSRatio)):R.main.add(S`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
|
|
151
|
+
float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),R.main.add(S`float segmentLengthScreenDouble = length(segment);
|
|
154
152
|
float segmentLengthScreen = segmentLengthScreenDouble * 0.5;
|
|
155
153
|
float discreteWorldToScreenRatio = discretizeWorldToScreenRatio(worldToScreenRatio);
|
|
156
154
|
float segmentLengthRender = length(mix(nextPosition - position, position - prevPosition, isEndVertex));
|
|
157
|
-
vStipplePatternStretch = worldToScreenRatio / discreteWorldToScreenRatio;`),R
|
|
158
|
-
float startPseudoScreen = u0 * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):
|
|
159
|
-
float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),
|
|
155
|
+
vStipplePatternStretch = worldToScreenRatio / discreteWorldToScreenRatio;`),T?R.main.add(S`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteWorldToScreenRatio / worldToScreenRatio;
|
|
156
|
+
float startPseudoScreen = u0 * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):R.main.add(S`float startPseudoScreen = mix(u0, u0 - segmentLengthRender, isEndVertex) * discreteWorldToScreenRatio;
|
|
157
|
+
float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),R.uniforms.add(new h("stipplePatternPixelSize",e=>r(e))),R.main.add(S`float patternLength = lineSize * stipplePatternPixelSize;
|
|
160
158
|
vStippleDistanceLimits = computeStippleDistanceLimits(startPseudoScreen, segmentLengthPseudoScreen, segmentLengthScreen, patternLength);
|
|
161
159
|
vStippleDistance = mix(vStippleDistanceLimits.x, vStippleDistanceLimits.y, isEndVertex);
|
|
162
160
|
if (segmentLengthScreenDouble >= 0.001) {
|
|
@@ -164,60 +162,62 @@ vec2 stippleDisplacement = pos.xy - segmentOrigin;
|
|
|
164
162
|
float stippleDisplacementFactor = dot(segment, stippleDisplacement) / (segmentLengthScreenDouble * segmentLengthScreenDouble);
|
|
165
163
|
vStippleDistance += (stippleDisplacementFactor - isEndVertex) * (vStippleDistanceLimits.y - vStippleDistanceLimits.x);
|
|
166
164
|
}
|
|
167
|
-
vStippleDistanceLimits
|
|
168
|
-
vStippleDistance
|
|
165
|
+
vStippleDistanceLimits = noPerspectiveWrite(vStippleDistanceLimits, pos.w);
|
|
166
|
+
vStippleDistance = noPerspectiveWrite(vStippleDistance, pos.w);
|
|
169
167
|
vStippleDistanceLimits = isJoin ?
|
|
170
168
|
vStippleDistanceLimits :
|
|
171
169
|
isStartVertex ?
|
|
172
170
|
vec2(-1e34, vStippleDistanceLimits.y) :
|
|
173
|
-
vec2(vStippleDistanceLimits.x, 1e34);`)),
|
|
171
|
+
vec2(vStippleDistanceLimits.x, 1e34);`)),R.main.add(S`
|
|
174
172
|
// Convert back into NDC
|
|
175
173
|
pos.xy = (pos.xy / viewport.zw) * pos.w;
|
|
176
174
|
|
|
177
175
|
vColor = getColor();
|
|
178
|
-
vColor.a
|
|
176
|
+
vColor.a = noPerspectiveWrite(vColor.a * coverage, pos.w);
|
|
179
177
|
|
|
180
|
-
${
|
|
178
|
+
${$&&!T?"pos.z -= 0.001 * pos.w;":""}
|
|
181
179
|
|
|
182
180
|
// transform final position to camera space for slicing
|
|
183
181
|
vpos = (inverseProjectionMatrix * pos).xyz;
|
|
184
182
|
gl_Position = pos;
|
|
185
183
|
forwardObjectAndLayerIdColor();
|
|
186
|
-
}`),
|
|
187
|
-
discardByTerrainDepth();`),
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
184
|
+
}`),C.fragment.include(e,j),C.include(w,j),F.include(l),F.main.add(S`discardBySlice(vpos);
|
|
185
|
+
discardByTerrainDepth();`),C.include(p),F.main.add(S`
|
|
186
|
+
float lineWidth = noPerspectiveRead(vLineWidth);
|
|
187
|
+
float lineDistance = noPerspectiveRead(vLineDistance);
|
|
188
|
+
${x(U,S`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
|
|
189
|
+
`),$?F.main.add(S`vec4 finalColor = vec4(1.0, 0.0, 1.0, 1.0);`):(I&&F.main.add(S`
|
|
190
|
+
float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
|
|
191
|
+
vec2 fragmentPosition = vec2(min(sdf, 0.0), lineDistance);
|
|
193
192
|
|
|
194
193
|
float fragmentRadius = length(fragmentPosition);
|
|
195
|
-
float fragmentCapSDF = (fragmentRadius -
|
|
194
|
+
float fragmentCapSDF = (fragmentRadius - lineWidth) * 0.5; // Divide by 2 to transform from double pixel scale
|
|
196
195
|
float capCoverage = clamp(0.5 - fragmentCapSDF, 0.0, 1.0);
|
|
197
196
|
|
|
198
|
-
if (capCoverage < ${
|
|
197
|
+
if (capCoverage < ${S.float(P)}) {
|
|
199
198
|
discard;
|
|
200
199
|
}
|
|
201
|
-
`),
|
|
200
|
+
`),J?F.main.add(S`
|
|
202
201
|
vec2 stipplePosition = vec2(
|
|
203
202
|
min(getStippleSDF() * 2.0 - 1.0, 0.0),
|
|
204
|
-
|
|
203
|
+
lineDistanceNorm
|
|
205
204
|
);
|
|
206
|
-
float stippleRadius = length(stipplePosition *
|
|
207
|
-
float stippleCapSDF = (stippleRadius -
|
|
205
|
+
float stippleRadius = length(stipplePosition * lineWidth);
|
|
206
|
+
float stippleCapSDF = (stippleRadius - lineWidth) * 0.5; // Divide by 2 to transform from double pixel scale
|
|
208
207
|
float stippleCoverage = clamp(0.5 - stippleCapSDF, 0.0, 1.0);
|
|
209
|
-
float stippleAlpha = step(${
|
|
210
|
-
`):
|
|
208
|
+
float stippleAlpha = step(${S.float(P)}, stippleCoverage);
|
|
209
|
+
`):F.main.add(S`float stippleAlpha = getStippleAlpha(lineWidth);`),10!==V&&F.main.add(S`discardByStippleAlpha(stippleAlpha, ${S.float(P)});`),C.include(p),F.uniforms.add(new g("intrinsicColor",e=>e.color)).main.add(S`vec4 color = intrinsicColor * vColor;
|
|
210
|
+
color.a = noPerspectiveRead(color.a);`),_&&F.uniforms.add(new g("innerColor",e=>e.innerColor??e.color),new h("innerWidth",(e,i)=>e.innerWidth*i.camera.pixelRatio)).main.add(S`float distToInner = abs(lineDistance) - innerWidth;
|
|
211
211
|
float innerAA = clamp(0.5 - distToInner, 0.0, 1.0);
|
|
212
212
|
float innerAlpha = innerColor.a + color.a * (1.0 - innerColor.a);
|
|
213
|
-
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),
|
|
214
|
-
float value = abs(
|
|
215
|
-
float feather = (value - featherStartDistance) / (
|
|
216
|
-
finalColor.a *= 1.0 - clamp(feather, 0.0, 1.0);`),
|
|
213
|
+
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),F.main.add(S`vec4 finalColor = blendStipple(color, stippleAlpha);`),M&&(F.uniforms.add(new h("falloff",e=>e.falloff)),F.main.add(S`finalColor.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),O||F.main.add(S`float featherStartDistance = max(lineWidth - 2.0, 0.0);
|
|
214
|
+
float value = abs(lineDistance);
|
|
215
|
+
float feather = (value - featherStartDistance) / (lineWidth - featherStartDistance);
|
|
216
|
+
finalColor.a *= 1.0 - clamp(feather, 0.0, 1.0);`),k&&F.main.add(S`
|
|
217
217
|
finalColor = animate(finalColor);
|
|
218
218
|
|
|
219
|
-
${
|
|
220
|
-
if (finalColor.a <= ${
|
|
219
|
+
${x(10!==V,S`
|
|
220
|
+
if (finalColor.a <= ${S.float(P)}) {
|
|
221
221
|
discard;
|
|
222
222
|
}`)}
|
|
223
|
-
`)),
|
|
223
|
+
`)),F.main.add(S`outputColorHighlightOID(finalColor, vpos, finalColor.rgb);`),C}const C=Object.freeze(Object.defineProperty({__proto__:null,build:j,ribbonlineNumRoundJoinSubdivisions:y},Symbol.toStringTag,{value:"Module"}));export{C as R,j as b,y as r};
|
package/chunks/array.js
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.34/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{deepClone as n}from"../arcade/deepClone.js";import{ArcadeExecutionError as t}from"../arcade/executionError.js";import r from"../arcade/ImmutableArray.js";import{B as e,J as o,j as i,s as u,v as a,n as s,u as c,x as l,i as f,M as d}from"./languageUtils.js";import{isPromiseLike as h}from"../core/promiseUtils.js";import{isArray as w,isBoolean as g,isInteger as m}from"../support/guards.js";function F(F){function p(n,e,o){if(n instanceof r)return n.toArray();if(w(n))return n;throw new t(e,"InvalidParameter",o)}function y(n,t){const r=n.length,e=Math.floor(r/2);return 0===r?[]:1===r?[n[0]]:v(y(n.slice(0,e),t),y(n.slice(e,r),t),t)}function v(n,t,r){const e=[];for(;n.length>0||t.length>0;)if(n.length>0&&t.length>0){let o=r(n[0],t[0]);isNaN(o)&&(o=0),o<=0?(e.push(n[0]),n=n.slice(1)):(e.push(t[0]),t=t.slice(1))}else n.length>0?(e.push(n[0]),n=n.slice(1)):t.length>0&&(e.push(t[0]),t=t.slice(1));return e}async function P(n,t){const r=n.length,e=Math.floor(r/2);if(0===r)return[];if(1===r)return[n[0]];const o=[await P(n.slice(0,e),t),await P(n.slice(e,r),t)];return I(o[0],o[1],t,[])}async function I(n,t,r,e){const o=e;if(n.length>0||t.length>0){if(n.length>0&&t.length>0){let i=await r(n[0],t[0]);return isNaN(i)&&(i=1),i<=0?(o.push(n[0]),n=n.slice(1)):(o.push(t[0]),t=t.slice(1)),I(n,t,r,e)}return n.length>0?(o.push(n[0]),I(n=n.slice(1),t,r,e)):(o.push(t[0]),I(n,t=t.slice(1),r,e))}return e}function N(n,r,o,u){e(o,1,2,n,r);let s=o[0];if(i(s)&&(s=s.toArray()),!1===w(s))throw new t(n,"InvalidParameter",r);if(o.length>1){if(!1===f(o[1]))throw new t(n,"InvalidParameter",r);let e=s;const i=o[1].createFunction(n);return u?P(e,i):(e=y(e,(n,t)=>i(n,t)),e)}let l=s;if(0===l.length)return[];const h={};for(let t=0;t<l.length;t++){const n=d(l[t]);""!==n&&(h[n]=!0)}if(!0===h.Array||!0===h.Dictionary||!0===h.Feature||!0===h.Voxel||!0===h.Point||!0===h.Polygon||!0===h.Polyline||!0===h.Multipoint||!0===h.Extent||!0===h.Function)return l.slice();let g=0,m="";for(const t in h)g++,m=t;return l=g>1||"String"===m?y(l,(n,t)=>{if(null==n||n===a)return null==t||t===a?0:1;if(null==t||t===a)return-1;const r=c(n),e=c(t);return r<e?-1:r===e?0:1}):"Number"===m?y(l,(n,t)=>n-t):"Boolean"===m?y(l,(n,t)=>n===t?0:t?-1:1):"Date"===m?y(l,(n,t)=>n.toNumber()-t.toNumber()):l.slice(),l}F.functions.array=function(r,a){return F.standardFunction(r,a,(s,c,l)=>{if(e(l,0,2,r,a),0===l.length)return[];if(1===l.length&&null===l[0])return[];if(w(l[0])){if(2===l.length&&!1===g(l[1]))throw new t(r,"InvalidParameter",a);return!0===o(l[1],!1)?n(l[0]):l[0].slice()}if(i(l[0])){if(2===l.length&&!1===g(l[1]))throw new t(r,"InvalidParameter",a);return!0===o(l[1],!1)?n(l[0]):l[0].toArray().slice()}const f=u(l[0]);if(isNaN(f)||!1===m(f))throw new t(r,"InvalidParameter",a);const d=o(l[1],null),h=new Array(f);return h.fill(d),h})},F.functions.front=function(n,r){return F.standardFunction(n,r,(o,u,a)=>{if(e(a,1,1,n,r),i(a[0])){if(a[0].length()<=0)throw new t(n,"OutOfBounds",r);return a[0].get(0)}if(w(a[0])){if(a[0].length<=0)throw new t(n,"OutOfBounds",r);return a[0][0]}throw new t(n,"InvalidParameter",r)})},F.functions.back=function(n,r){return F.standardFunction(n,r,(o,u,a)=>{if(e(a,1,1,n,r),i(a[0])){if(a[0].length()<=0)throw new t(n,"OutOfBounds",r);return a[0].get(a[0].length()-1)}if(w(a[0])){if(a[0].length<=0)throw new t(n,"OutOfBounds",r);return a[0][a[0].length-1]}throw new t(n,"InvalidParameter",r)})},F.functions.push=function(n,r){return F.standardFunction(n,r,(o,i,u)=>{if(e(u,1,2,n,r),w(u[0]))return u[0][u[0].length]=u[1],u[0].length;throw new t(n,"InvalidParameter",r)})},F.functions.pop=function(n,r){return F.standardFunction(n,r,(o,i,u)=>{if(e(u,1,1,n,r),w(u[0])){if(u[0].length<=0)throw new t(n,"OutOfBounds",r);const e=u[0][u[0].length-1];return u[0].length=u[0].length-1,e}throw new t(n,"InvalidParameter",r)})},F.functions.erase=function(n,r){return F.standardFunction(n,r,(o,i,l)=>{if(e(l,2,2,n,r),w(l[0])){let e=u(l[1]);if(isNaN(e)||!1===m(e))throw new t(n,"InvalidParameter",r);const o=l[0];if(o.length<=0)throw new t(n,"OutOfBounds",r);if(e<0&&(e=o.length+e),e<0)throw new t(n,"OutOfBounds",r);if(e>=o.length)throw new t(n,"OutOfBounds",r);return o.splice(e,1),a}if(s(l[0]))return l[0].eraseField(c(l[1])),a;throw new t(n,"InvalidParameter",r)})},F.functions.insert=function(n,r){return F.standardFunction(n,r,(o,i,l)=>{if(e(l,3,3,n,r),w(l[0])){const e=u(l[1]);if(isNaN(e)||!1===m(e))throw new t(n,"InvalidParameter",r);const o=l[2],i=l[0];if(e>i.length)throw new t(n,"OutOfBounds",r);if(e<0&&e<-1*i.length)throw new t(n,"OutOfBounds",r);return e===i.length?(i[e]=o,a):(i.splice(e,0,o),a)}if(s(l[0]))return l[0].setField(c(l[1]),l[2]),a;throw new t(n,"InvalidParameter",r)})},F.functions.getkeys=function(n,r){return F.standardFunction(n,r,(n,r,o)=>{if(e(o,1,1,n,r),null==o[0])return[];if(s(o[0]))return o[0].keys();throw new t(n,"InvalidParameter",r)})},F.functions.getvalues=function(n,r){return F.standardFunction(n,r,(n,r,o)=>{if(e(o,1,1,n,r),null==o[0])return[];if(s(o[0]))return o[0].values();throw new t(n,"InvalidParameter",r)})},F.functions.resize=function(n,r){return F.standardFunction(n,r,(i,s,c)=>{if(e(c,2,3,n,r),w(c[0])){const e=u(c[1]);if(isNaN(e)||!1===m(e))throw new t(n,"InvalidParameter",r);if(e<0)throw new t(n,"InvalidParameter",r);const i=o(c[2],null),s=c[0];if(s.length>=e)return s.length=e,a;const l=s.length;s.length=e;for(let n=l;n<s.length;n++)s[n]=i;return a}throw new t(n,"InvalidParameter",r)})},F.functions.includes=function(n,r){return F.standardFunction(n,r,(o,u,a)=>{if(e(a,2,2,n,r),w(a[0])){const n=a[1];return!!a[0].some(t=>l(t,n))}if(i(a[0])){const n=a[1];return!!a[0].toArray().some(t=>l(t,n))}throw new t(n,"InvalidParameter",r)})},F.functions.slice=function(n,r){return F.standardFunction(n,r,(a,s,c)=>{if(e(c,1,3,n,r),w(c[0])){const e=u(o(c[1],0)),i=u(o(c[2],c[0].length));if(isNaN(e)||!1===m(e))throw new t(n,"InvalidParameter",r);if(isNaN(i)||!1===m(i))throw new t(n,"InvalidParameter",r);return c[0].slice(e,i)}if(i(c[0])){const e=c[0],i=u(o(c[1],0)),a=u(o(c[2],e.length()));if(isNaN(i)||!1===m(i))throw new t(n,"InvalidParameter",r);if(isNaN(a)||!1===m(a))throw new t(n,"InvalidParameter",r);return e.toArray().slice(i,a)}throw new t(n,"InvalidParameter",r)})},F.functions.splice=function(n,t){return F.standardFunction(n,t,(n,t,r)=>{const e=[];for(let o=0;o<r.length;o++)w(r[o])?e.push(...r[o]):i(r[o])?e.push(...r[o].toArray()):e.push(r[o]);return e})},F.functions.top=function(n,r){return F.standardFunction(n,r,(o,a,s)=>{if(e(s,2,2,n,r),w(s[0]))return u(s[1])>=s[0].length?s[0].slice():s[0].slice(0,u(s[1]));if(i(s[0]))return u(s[1])>=s[0].length()?s[0].slice():s[0].slice(0,u(s[1]));throw new t(n,"InvalidParameter",r)})},F.functions.first=function(n,t){return F.standardFunction(n,t,(r,o,u)=>(e(u,1,1,n,t),w(u[0])?0===u[0].length?null:u[0][0]:i(u[0])?0===u[0].length()?null:u[0].get(0):null))},"sync"===F.mode&&(F.functions.sort=function(n,t){return F.standardFunction(n,t,(t,r,e)=>N(n,r,e,!1))},F.functions.any=function(n,t){return F.standardFunction(n,t,(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r);for(const n of u){const t=i(n);if(g(t)&&!0===t)return!0}return!1})},F.functions.all=function(n,t){return F.standardFunction(n,t,(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r);for(const n of u){if(!0!==i(n))return!1}return!0})},F.functions.none=function(n,t){return F.standardFunction(n,t,(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r);for(const n of u){if(!0===i(n))return!1}return!0})},F.functions.reduce=function(n,t){return F.standardFunction(n,t,(t,r,o)=>{e(o,2,3,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r);return 2===o.length?0===u.length?null:u.reduce((n,t)=>{const r=i(n,t);return n=void 0!==r&&r!==a?r:null}):u.reduce((n,t)=>{const r=i(n,t);return n=void 0!==r&&r!==a?r:null},o[2])})},F.functions.map=function(n,t){return F.standardFunction(n,t,(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r),s=[];for(const n of u){const t=i(n);void 0!==t&&t!==a?s.push(t):s.push(null)}return s})},F.functions.filter=function(n,t){return F.standardFunction(n,t,(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r),a=[];for(const n of u){!0===i(n)&&a.push(n)}return a})}),"async"===F.mode&&(F.functions.sort=function(n,t){return F.standardFunctionAsync(n,t,async(t,r,e)=>N(n,r,e,!0))},F.functions.any=function(n,t){return F.standardFunctionAsync(n,t,async(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r);for(const n of u){const t=await i(n);let r=null;if(r=h(r)?await t:t,g(r)&&!0===r)return!0}return!1})},F.functions.all=function(n,t){return F.standardFunctionAsync(n,t,async(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r);for(const n of u){const t=await i(n);let r=null;if(r=h(r)?await t:t,!0!==r)return!1}return!0})},F.functions.none=function(n,t){return F.standardFunctionAsync(n,t,async(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r);for(const n of u){const t=await i(n);let r=null;if(r=h(r)?await t:t,!0===r)return!1}return!0})},F.functions.filter=function(n,t){return F.standardFunctionAsync(n,t,async(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r),a=[];for(const n of u){const t=await i(n);let r=null;r=h(r)?await t:t,!0===r&&a.push(n)}return a})},F.functions.reduce=function(n,t){return F.standardFunctionAsync(n,t,async(t,r,i)=>{e(i,2,3,n,r);const u=i[1].createFunction(n),s=p(i[0],n,r);let c;if(i.length>2){const n=o(i[2],null);c=s.reduce(async(n,t)=>{let r=await n;return void 0!==r&&r!==a||(r=null),u(r,t)},Promise.resolve(n))}else{if(0===s.length)return null;c=s.reduce(async(n,t,r)=>{if(r<=1)return u(n,t);let e=await n;return void 0!==e&&e!==a||(e=null),u(e,t)})}return c.then(n=>void 0!==n&&n!==a?n:null)})},F.functions.map=function(n,t){return F.standardFunctionAsync(n,t,async(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r),s=[];for(const n of u){const t=await i(n);let r=null;r=h(r)?await t:t,void 0!==r&&r!==a?s.push(r):s.push(null)}return s})})}const p=Object.freeze(Object.defineProperty({__proto__:null,registerFunctions:F},Symbol.toStringTag,{value:"Module"}));export{p as A,F as r};
|
|
5
|
+
import{deepClone as n}from"../arcade/deepClone.js";import{ArcadeExecutionError as t}from"../arcade/executionError.js";import r from"../arcade/ImmutableArray.js";import{B as e,J as o,j as i,s as u,v as a,n as s,u as c,x as l,i as f,M as d}from"./languageUtils.js";import{isPromiseLike as h}from"../core/promiseUtils.js";import{isArray as w,isBoolean as g,isInteger as m}from"../support/guards.js";function F(F){function p(n,e,o){if(n instanceof r)return n.toArray();if(w(n))return n;throw new t(e,"InvalidParameter",o)}function y(n,t){const r=n.length,e=Math.floor(r/2);return 0===r?[]:1===r?[n[0]]:v(y(n.slice(0,e),t),y(n.slice(e,r),t),t)}function v(n,t,r){const e=[];for(;n.length>0||t.length>0;)if(n.length>0&&t.length>0){let o=r(n[0],t[0]);isNaN(o)&&(o=0),o<=0?(e.push(n[0]),n=n.slice(1)):(e.push(t[0]),t=t.slice(1))}else n.length>0?(e.push(n[0]),n=n.slice(1)):t.length>0&&(e.push(t[0]),t=t.slice(1));return e}async function P(n,t){const r=n.length,e=Math.floor(r/2);if(0===r)return[];if(1===r)return[n[0]];const o=[await P(n.slice(0,e),t),await P(n.slice(e,r),t)];return I(o[0],o[1],t,[])}async function I(n,t,r,e){const o=e;if(n.length>0||t.length>0){if(n.length>0&&t.length>0){let i=await r(n[0],t[0]);return isNaN(i)&&(i=1),i<=0?(o.push(n[0]),n=n.slice(1)):(o.push(t[0]),t=t.slice(1)),I(n,t,r,e)}return n.length>0?(o.push(n[0]),I(n=n.slice(1),t,r,e)):(o.push(t[0]),I(n,t=t.slice(1),r,e))}return e}function N(n,r,o,u){e(o,1,2,n,r);let s=o[0];if(i(s)&&(s=s.toArray()),!1===w(s))throw new t(n,"InvalidParameter",r);if(o.length>1){if(!1===f(o[1]))throw new t(n,"InvalidParameter",r);let e=s;const i=o[1].createFunction(n);return u?P(e,i):(e=y(e,(n,t)=>i(n,t)),e)}let l=s;if(0===l.length)return[];const h={};for(let t=0;t<l.length;t++){const n=d(l[t]);""!==n&&(h[n]=!0)}if(!0===h.Array||!0===h.Dictionary||!0===h.Feature||!0===h.Voxel||!0===h.Pixel||!0===h.Point||!0===h.Polygon||!0===h.Polyline||!0===h.Multipoint||!0===h.Extent||!0===h.Function)return l.slice();let g=0,m="";for(const t in h)g++,m=t;return l=g>1||"String"===m?y(l,(n,t)=>{if(null==n||n===a)return null==t||t===a?0:1;if(null==t||t===a)return-1;const r=c(n),e=c(t);return r<e?-1:r===e?0:1}):"Number"===m?y(l,(n,t)=>n-t):"Boolean"===m?y(l,(n,t)=>n===t?0:t?-1:1):"Date"===m?y(l,(n,t)=>n.toNumber()-t.toNumber()):l.slice(),l}F.functions.array=function(r,a){return F.standardFunction(r,a,(s,c,l)=>{if(e(l,0,2,r,a),0===l.length)return[];if(1===l.length&&null===l[0])return[];if(w(l[0])){if(2===l.length&&!1===g(l[1]))throw new t(r,"InvalidParameter",a);return!0===o(l[1],!1)?n(l[0]):l[0].slice()}if(i(l[0])){if(2===l.length&&!1===g(l[1]))throw new t(r,"InvalidParameter",a);return!0===o(l[1],!1)?n(l[0]):l[0].toArray().slice()}const f=u(l[0]);if(isNaN(f)||!1===m(f))throw new t(r,"InvalidParameter",a);const d=o(l[1],null),h=new Array(f);return h.fill(d),h})},F.functions.front=function(n,r){return F.standardFunction(n,r,(o,u,a)=>{if(e(a,1,1,n,r),i(a[0])){if(a[0].length()<=0)throw new t(n,"OutOfBounds",r);return a[0].get(0)}if(w(a[0])){if(a[0].length<=0)throw new t(n,"OutOfBounds",r);return a[0][0]}throw new t(n,"InvalidParameter",r)})},F.functions.back=function(n,r){return F.standardFunction(n,r,(o,u,a)=>{if(e(a,1,1,n,r),i(a[0])){if(a[0].length()<=0)throw new t(n,"OutOfBounds",r);return a[0].get(a[0].length()-1)}if(w(a[0])){if(a[0].length<=0)throw new t(n,"OutOfBounds",r);return a[0][a[0].length-1]}throw new t(n,"InvalidParameter",r)})},F.functions.push=function(n,r){return F.standardFunction(n,r,(o,i,u)=>{if(e(u,1,2,n,r),w(u[0]))return u[0][u[0].length]=u[1],u[0].length;throw new t(n,"InvalidParameter",r)})},F.functions.pop=function(n,r){return F.standardFunction(n,r,(o,i,u)=>{if(e(u,1,1,n,r),w(u[0])){if(u[0].length<=0)throw new t(n,"OutOfBounds",r);const e=u[0][u[0].length-1];return u[0].length=u[0].length-1,e}throw new t(n,"InvalidParameter",r)})},F.functions.erase=function(n,r){return F.standardFunction(n,r,(o,i,l)=>{if(e(l,2,2,n,r),w(l[0])){let e=u(l[1]);if(isNaN(e)||!1===m(e))throw new t(n,"InvalidParameter",r);const o=l[0];if(o.length<=0)throw new t(n,"OutOfBounds",r);if(e<0&&(e=o.length+e),e<0)throw new t(n,"OutOfBounds",r);if(e>=o.length)throw new t(n,"OutOfBounds",r);return o.splice(e,1),a}if(s(l[0]))return l[0].eraseField(c(l[1])),a;throw new t(n,"InvalidParameter",r)})},F.functions.insert=function(n,r){return F.standardFunction(n,r,(o,i,l)=>{if(e(l,3,3,n,r),w(l[0])){const e=u(l[1]);if(isNaN(e)||!1===m(e))throw new t(n,"InvalidParameter",r);const o=l[2],i=l[0];if(e>i.length)throw new t(n,"OutOfBounds",r);if(e<0&&e<-1*i.length)throw new t(n,"OutOfBounds",r);return e===i.length?(i[e]=o,a):(i.splice(e,0,o),a)}if(s(l[0]))return l[0].setField(c(l[1]),l[2]),a;throw new t(n,"InvalidParameter",r)})},F.functions.getkeys=function(n,r){return F.standardFunction(n,r,(n,r,o)=>{if(e(o,1,1,n,r),null==o[0])return[];if(s(o[0]))return o[0].keys();throw new t(n,"InvalidParameter",r)})},F.functions.getvalues=function(n,r){return F.standardFunction(n,r,(n,r,o)=>{if(e(o,1,1,n,r),null==o[0])return[];if(s(o[0]))return o[0].values();throw new t(n,"InvalidParameter",r)})},F.functions.resize=function(n,r){return F.standardFunction(n,r,(i,s,c)=>{if(e(c,2,3,n,r),w(c[0])){const e=u(c[1]);if(isNaN(e)||!1===m(e))throw new t(n,"InvalidParameter",r);if(e<0)throw new t(n,"InvalidParameter",r);const i=o(c[2],null),s=c[0];if(s.length>=e)return s.length=e,a;const l=s.length;s.length=e;for(let n=l;n<s.length;n++)s[n]=i;return a}throw new t(n,"InvalidParameter",r)})},F.functions.includes=function(n,r){return F.standardFunction(n,r,(o,u,a)=>{if(e(a,2,2,n,r),w(a[0])){const n=a[1];return!!a[0].some(t=>l(t,n))}if(i(a[0])){const n=a[1];return!!a[0].toArray().some(t=>l(t,n))}throw new t(n,"InvalidParameter",r)})},F.functions.slice=function(n,r){return F.standardFunction(n,r,(a,s,c)=>{if(e(c,1,3,n,r),w(c[0])){const e=u(o(c[1],0)),i=u(o(c[2],c[0].length));if(isNaN(e)||!1===m(e))throw new t(n,"InvalidParameter",r);if(isNaN(i)||!1===m(i))throw new t(n,"InvalidParameter",r);return c[0].slice(e,i)}if(i(c[0])){const e=c[0],i=u(o(c[1],0)),a=u(o(c[2],e.length()));if(isNaN(i)||!1===m(i))throw new t(n,"InvalidParameter",r);if(isNaN(a)||!1===m(a))throw new t(n,"InvalidParameter",r);return e.toArray().slice(i,a)}throw new t(n,"InvalidParameter",r)})},F.functions.splice=function(n,t){return F.standardFunction(n,t,(n,t,r)=>{const e=[];for(let o=0;o<r.length;o++)w(r[o])?e.push(...r[o]):i(r[o])?e.push(...r[o].toArray()):e.push(r[o]);return e})},F.functions.top=function(n,r){return F.standardFunction(n,r,(o,a,s)=>{if(e(s,2,2,n,r),w(s[0]))return u(s[1])>=s[0].length?s[0].slice():s[0].slice(0,u(s[1]));if(i(s[0]))return u(s[1])>=s[0].length()?s[0].slice():s[0].slice(0,u(s[1]));throw new t(n,"InvalidParameter",r)})},F.functions.first=function(n,t){return F.standardFunction(n,t,(r,o,u)=>(e(u,1,1,n,t),w(u[0])?0===u[0].length?null:u[0][0]:i(u[0])?0===u[0].length()?null:u[0].get(0):null))},"sync"===F.mode&&(F.functions.sort=function(n,t){return F.standardFunction(n,t,(t,r,e)=>N(n,r,e,!1))},F.functions.any=function(n,t){return F.standardFunction(n,t,(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r);for(const n of u){const t=i(n);if(g(t)&&!0===t)return!0}return!1})},F.functions.all=function(n,t){return F.standardFunction(n,t,(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r);for(const n of u){if(!0!==i(n))return!1}return!0})},F.functions.none=function(n,t){return F.standardFunction(n,t,(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r);for(const n of u){if(!0===i(n))return!1}return!0})},F.functions.reduce=function(n,t){return F.standardFunction(n,t,(t,r,o)=>{e(o,2,3,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r);return 2===o.length?0===u.length?null:u.reduce((n,t)=>{const r=i(n,t);return n=void 0!==r&&r!==a?r:null}):u.reduce((n,t)=>{const r=i(n,t);return n=void 0!==r&&r!==a?r:null},o[2])})},F.functions.map=function(n,t){return F.standardFunction(n,t,(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r),s=[];for(const n of u){const t=i(n);void 0!==t&&t!==a?s.push(t):s.push(null)}return s})},F.functions.filter=function(n,t){return F.standardFunction(n,t,(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r),a=[];for(const n of u){!0===i(n)&&a.push(n)}return a})}),"async"===F.mode&&(F.functions.sort=function(n,t){return F.standardFunctionAsync(n,t,async(t,r,e)=>N(n,r,e,!0))},F.functions.any=function(n,t){return F.standardFunctionAsync(n,t,async(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r);for(const n of u){const t=await i(n);let r=null;if(r=h(r)?await t:t,g(r)&&!0===r)return!0}return!1})},F.functions.all=function(n,t){return F.standardFunctionAsync(n,t,async(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r);for(const n of u){const t=await i(n);let r=null;if(r=h(r)?await t:t,!0!==r)return!1}return!0})},F.functions.none=function(n,t){return F.standardFunctionAsync(n,t,async(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r);for(const n of u){const t=await i(n);let r=null;if(r=h(r)?await t:t,!0===r)return!1}return!0})},F.functions.filter=function(n,t){return F.standardFunctionAsync(n,t,async(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r),a=[];for(const n of u){const t=await i(n);let r=null;r=h(r)?await t:t,!0===r&&a.push(n)}return a})},F.functions.reduce=function(n,t){return F.standardFunctionAsync(n,t,async(t,r,i)=>{e(i,2,3,n,r);const u=i[1].createFunction(n),s=p(i[0],n,r);let c;if(i.length>2){const n=o(i[2],null);c=s.reduce(async(n,t)=>{let r=await n;return void 0!==r&&r!==a||(r=null),u(r,t)},Promise.resolve(n))}else{if(0===s.length)return null;c=s.reduce(async(n,t,r)=>{if(r<=1)return u(n,t);let e=await n;return void 0!==e&&e!==a||(e=null),u(e,t)})}return c.then(n=>void 0!==n&&n!==a?n:null)})},F.functions.map=function(n,t){return F.standardFunctionAsync(n,t,async(t,r,o)=>{e(o,2,2,n,r);const i=o[1].createFunction(n),u=p(o[0],n,r),s=[];for(const n of u){const t=await i(n);let r=null;r=h(r)?await t:t,void 0!==r&&r!==a?s.push(r):s.push(null)}return s})})}const p=Object.freeze(Object.defineProperty({__proto__:null,registerFunctions:F},Symbol.toStringTag,{value:"Module"}));export{p as A,F as r};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.34/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{
|
|
5
|
+
import{cyclical2PI as t}from"../core/Cyclical.js";import{deg2rad as e,rad2deg as r,asinClamped as s,lerp as o,clamp as a}from"../core/mathUtils.js";import{fromRotation as n,rotate as i}from"../core/libs/gl-matrix-2/math/mat4.js";import{create as c}from"../core/libs/gl-matrix-2/factories/mat4f64.js";import{h as l,e as m,n as p,t as u,u as f,l as h,g as d,j as g,m as y,x as M,b as j}from"./vec32.js";import{fromValues as b,create as v,ZEROS as x,clone as T}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{s as w,b as R}from"./vec42.js";import{create as C}from"../core/libs/gl-matrix-2/factories/vec4f64.js";import{getEpsilon as S}from"../core/libs/gl-matrix-2/math/common.js";import{getReferenceEllipsoid as U}from"../geometry/ellipsoidUtils.js";import P from"../geometry/Extent.js";import I from"../geometry/Polygon.js";import H from"../geometry/SpatialReference.js";import{isClockwise as q}from"../geometry/support/coordsUtils.js";import{fromPoints as A,create as E}from"../geometry/support/lineSegment.js";import{gcsCyclical as k}from"../geometry/support/normalizeUtils.js";import{fromPositionAndNormal as _,create as z,isPointInside as F,intersectLineOrRay as G,getNormal as W}from"../geometry/support/plane.js";import{wrap as O}from"../geometry/support/ray.js";import{b as D,c as L,d as N}from"./sphere.js";import{geographicToWebMercator as Y}from"../geometry/support/webMercatorUtils.js";import{Frustum as B}from"../views/3d/state/Frustum.js";import{minNearDistanceInMeters as J}from"../views/3d/state/NearFarHeuristic.js";import{viewAngle as K}from"../views/3d/state/utils/viewUtils.js";import{createDirectionUp as Q,directionToHeadingTilt as V,clampLineSegmentToPlane as X}from"../views/3d/support/cameraUtilsInternal.js";import{getLonDeltaForDistance as Z}from"../views/3d/support/earthUtils.js";import{slerp as $}from"../views/3d/support/mathUtils.js";const tt=b(0,0,1),et=p(v(),b(1,1,1)),rt=c(),st=v(),ot=v();function at(t,r,s,o=Q()){l(st,t,tt),0===m(st,st)&&l(st,t,et),n(rt,-e(r),t),i(rt,rt,-e(s),st);const{up:a,direction:c}=o;return l(a,st,t),p(a,a),u(a,a,rt),p(c,t),f(c,c),u(c,c,rt),o}function nt(t,e,r,s){const o=st,a=ot;return p(o,t),l(ot,o,tt),0===m(ot,ot)&&l(ot,o,et),l(a,ot,o),V(e,r,s,o,a)}function it(t,r,o,a){const n={eye:v(),up:null,tilt:a,heading:o},i=st;i[0]=t[0],i[1]=t[2],i[2]=-t[1];const c=r,l=e(o),m=e(a),p=Math.sin(l),u=Math.cos(l),f=Math.sin(m),g=Math.cos(m),y=h(i);let M;if(Math.abs(m)<1e-8)M=c+y;else{const t=y/f,e=s(c/t),r=Math.PI-m-e;M=t*Math.sin(r)}const j=g*c,b=c*c*(f*f),x=u*u*b,T=M-j,w=T*T,R=x*(x+w-i[1]*i[1]);if(R<0)return d(n.eye,i,M/y),n.tilt=0,lt(n,t);const C=Math.sqrt(R),S=i[1]*T,U=x+w;let P;if(P=u>0?-C+S:C+S,Math.abs(U)<1e-8)return y<1e-8?(n.eye[0]=0,n.eye[1]=0,n.eye[2]=c):d(n.eye,i,M/y),n.tilt=0,ct(n.eye),lt(n,t);n.eye[1]=P/U;const I=p*p*b,H=f*c,q=u*H*n.eye[1],A=n.eye[1]*n.eye[1],E=1-A,k=Math.sqrt(E),_=x*A+I-2*q*k*T+E*w;return Math.abs(_)<1e-8?(d(n.eye,i,M/y),n.tilt=0,ct(n.eye),lt(n,t)):(n.eye[0]=(E*(M*i[0]-j*i[0])-H*k*(i[0]*n.eye[1]*u+i[2]*p))/_,n.eye[2]=(E*(M*i[2]-j*i[2])-H*k*(i[2]*n.eye[1]*u-i[0]*p))/_,d(n.eye,n.eye,M),ct(n.eye),lt(n,t))}function ct(t){const e=t[1];t[1]=-t[2],t[2]=e}function lt(t,e){const r=at(e,t.heading,t.tilt);return t.up=r.up,t}function mt(t,e,o){const a=h(e),n=Math.sqrt(o*o+a*a-2*o*a*Math.cos(Math.PI-t)),i=s(o/(n/Math.sin(t)));return r(t-i)}function pt(t,r,o){const a=e(t),n=h(r);return s(o/(n/Math.sin(a)))+a}function ut(s,o,a,n,i){let c,l,m,p;const u=o.latitude,f=U(s.spatialReference).radius,h=o.longitude,d=Z(u,a,f)/2;c=h-d,l=h+d;const g=e(u),y=(1+Math.sin(g))/(1-Math.sin(g)),M=(y+1)*Math.tan(n/f/2),j=M*M;function b(e){const r=Math.PI/2;return(e=t.normalize(e,-r))>r&&(e=Math.PI-e),e}if(m=1.5*Math.PI-2*Math.atan(.5*(M+Math.sqrt(4*y+j))),p=m+n/f,m=b(m),p=b(p),p<m){const t=p;p=m,m=t}if(m=Math.max(r(m),-90),p=Math.min(r(p),90),l=k.monotonic(c,l),l-c>180){const t=(l-c-180)/2;c+=t,l-=t}const v=s.spatialReference&&s.spatialReference.isGeographic?s.spatialReference:H.WGS84;return i?(i.xmin=c,i.ymin=m,i.xmax=l,i.ymax=p,i.spatialReference=v):i=new P(c,m,l,p,v),s.spatialReference&&s.spatialReference.isWebMercator&&Y(i,!1,i),i}function ft(t,e){const{renderCoordsHelper:r}=t,s=t.state.camera.clone(),n=new B(r);s.near=J,n.update(s);const i=r.getAltitude(e),c=t.spatialReference,l=r.referenceEllipsoid.radius,m=s.eye,p=1+g(m,e)/(l+i),u=Math.sqrt(p*p-1),{minCurvature:f,maxCurvature:h,minSamples:d,maxSamples:j}=Mt,b=yt(t),v=a((u-f)/(h-f),0,1),C=Math.round(o(d,j,v)),S=s.aboveGround,U=n.planes[5],P=[],H=_(x,jt,z()),q=_(x,bt,z());w(Ct,0,0,0,0);const A=t=>{};for(let a=0;a<4;a++){const t=1===a&&!S||3===a&&S?1-b:0,e=1===a&&S||3===a&&!S?b:1,s=n.lines[a],c=n.lines[3===a?0:a+1];for(let n=0;n<C;n++){const l=n/C,p=0===n?0:o(t,e,1===a?1-(1-l)**2:3===a?l**2:l),u=y(xt,s.origin,c.origin,p),f=$(s.direction,c.direction,p,vt);r.intersectManifoldClosestSilhouette(O(u,f),i,Tt),X(Tt,m,Tt,U),P.push(T(Tt)),0!==P.length&&A(M(P.at(-1),Tt));const h=(F(H,Tt)?1:0)|(F(q,Tt)?2:0);Ct[h]=1}}P.length>2&&A(M(P[0],P.at(-1)));const E=ht(R(Ct)>1?dt(gt(P,H),q):[P],r,c);return new I({rings:E,spatialReference:c})}function ht(t,e,r){const s=2*S();return t.map(t=>{const o=[];let a=!1;for(const n of t)e.fromRenderCoords(n,Tt,r),Math.abs(n[0])<s&&Math.abs(n[1])<s?(o.push([null,Tt[1]]),o.push([null,Tt[1]]),a=!0):o.push([Tt[0],Tt[1]]);if(a)for(let e=0;e<o.length;e++){const t=o[e];if(null!=t[0])continue;const r=o[e+1],s=o.at(0===e?-1:e-1);t[0]=s[0],e++;const a=o.at(e===o.length-1?0:e+1);r[0]=a[0]}return o.push(o[0]),q(o)||o.reverse(),o})}function dt(t,e){const r=[];for(const s of t)r.push(...gt(s,e));return r}function gt(t,e){const r=[],s=[],o=S();for(let n=0;n<t.length;n++){const a=t[n],i=n===t.length-1?t[0]:t[n+1],c=A(a,i,Rt),l=G(e,c.origin,c.vector,0,Tt);switch(l){case 2:r.push(a);break;case 3:s.push(a);break;case 0:case 1:{const[t,n,i]=0===l?[1,r,s]:[-1,s,r],c=W(e),m=j(v(),Tt,c,t*o),p=j(v(),Tt,c,t*-o);n.push(a),n.push(m),i.push(p)}}}const a=[];return r.length&&a.push(r),s.length&&a.push(s),a}function yt(t){const{renderCoordsHelper:e,state:{camera:r}}=t,{center:s,eye:o}=r,a=Math.abs(e.getAltitude(s)),n=Math.abs(Math.PI/2-K(e,s,o));return D(wt,e.referenceEllipsoid.radius+a),N(wt,n,r.distance,r.fovY)}const Mt={minCurvature:e(5),maxCurvature:e(50),minSamples:1,maxSamples:6},jt=b(1,0,0),bt=b(0,1,0),vt=v(),xt=v(),Tt=v(),wt=L(),Rt=E(),Ct=C(),St=Object.freeze(Object.defineProperty({__proto__:null,directionToHeadingTilt:nt,eyeForCenterWithHeadingTilt:it,eyeTiltToLookAtTilt:pt,headingTiltToDirectionUp:at,lookAtTiltToEyeTilt:mt,toArea:ft,toExtent:ut},Symbol.toStringTag,{value:"Module"}));export{pt as a,ft as b,St as c,nt as d,it as e,at as h,mt as l,ut as t};
|