@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.
Files changed (248) hide show
  1. package/PopupTemplate.js +1 -1
  2. package/applications/Components/QuantityFormatter.js +1 -1
  3. package/applications/Components/arcadeEditorUtils.d.ts +4 -0
  4. package/applications/Components/arcadeEditorUtils.js +5 -0
  5. package/applications/Components/featureUtils.d.ts +1 -0
  6. package/applications/Components/featureUtils.js +1 -1
  7. package/arcade/Feature.js +1 -1
  8. package/arcade/Pixel.js +5 -0
  9. package/arcade/Voxel.js +1 -1
  10. package/arcade/arcadeAsyncRuntime.js +1 -1
  11. package/arcade/arcadeCompiler.js +1 -1
  12. package/arcade/arcadeRuntime.js +1 -1
  13. package/arcade/featureSetUtils.js +1 -1
  14. package/arcade/featureset/actions/GroupBy.js +1 -1
  15. package/arcade/featureset/actions/OrderBy.js +1 -1
  16. package/arcade/featureset/support/FeatureSetIterator.js +1 -1
  17. package/arcade/functions/feature.js +1 -1
  18. package/arcade/functions/featuresetbase.js +1 -1
  19. package/arcade/functions/featuresetstring.js +1 -1
  20. package/arcade/functions/fieldStats.js +1 -1
  21. package/arcade/functions/geometry.js +1 -1
  22. package/arcade/functions/maths.js +1 -1
  23. package/arcade/functions/string.js +1 -1
  24. package/arcade/languageUtils.js +1 -1
  25. package/arcade.js +1 -1
  26. package/assets/esri/core/workers/RemoteClient.js +1 -1
  27. package/assets/esri/core/workers/chunks/009556f323e58271bc7a.js +1 -0
  28. package/assets/esri/core/workers/chunks/{11acefc48c0354e675df.js → 0309d008e50e55c7ff1d.js} +1 -1
  29. package/assets/esri/core/workers/chunks/13de06e614adf92239fe.js +1 -0
  30. package/assets/esri/core/workers/chunks/14a22d1a0eefa970efa1.js +1 -0
  31. package/assets/esri/core/workers/chunks/16d66770ef841564ee3f.js +1 -0
  32. package/assets/esri/core/workers/chunks/17103e6542aae53c7301.js +1 -0
  33. package/assets/esri/core/workers/chunks/{dd447dfc50ee7f511b84.js → 19c1f1431c0b2f4525a2.js} +1 -1
  34. package/assets/esri/core/workers/chunks/{5c30252c1bb8350cae5f.js → 1c52999a6392370844a6.js} +1 -1
  35. package/assets/esri/core/workers/chunks/21bfad7283620766d9cd.js +1 -0
  36. package/assets/esri/core/workers/chunks/{7219ceab0b6fae2e69b6.js → 280af3640f8e93c1024e.js} +2 -2
  37. package/assets/esri/core/workers/chunks/{49f7a5523462aebf90fc.js.LICENSE.txt → 280af3640f8e93c1024e.js.LICENSE.txt} +1 -1
  38. package/assets/esri/core/workers/chunks/3064320d54a9b48bd697.js +1 -0
  39. package/assets/esri/core/workers/chunks/3a5f0c759dd2f4638343.js +1 -0
  40. package/assets/esri/core/workers/chunks/{d12f373fcf5848ddcd8a.js → 3f523bc8551e712c9bd4.js} +1 -1
  41. package/assets/esri/core/workers/chunks/{5b7e5ec6aea1f7f9b005.js → 3fecfe4f8ca2a5fd7360.js} +1 -1
  42. package/assets/esri/core/workers/chunks/4832faefd3b7edc17c84.js +1 -0
  43. package/assets/esri/core/workers/chunks/{78b33c6d73824085c6d1.js → 48449abe795cb7a831eb.js} +1 -1
  44. package/assets/esri/core/workers/chunks/4d47187bc0821413492d.js +1 -0
  45. package/assets/esri/core/workers/chunks/5102c20645d9708c34b4.js +1 -0
  46. package/assets/esri/core/workers/chunks/541bffd61006d0e36166.js +1 -0
  47. package/assets/esri/core/workers/chunks/58cc06ed86301f4cee75.js +1 -0
  48. package/assets/esri/core/workers/chunks/{e12e8d69c05c182b6a69.js → 61bb39597ccf89f99a72.js} +1 -1
  49. package/assets/esri/core/workers/chunks/{f4e9640306f64b1af7a3.js → 65ec21d29e8563fdbc55.js} +1 -1
  50. package/assets/esri/core/workers/chunks/67d9cfe02613cb73ee37.js.LICENSE.txt +1 -1
  51. package/assets/esri/core/workers/chunks/{6dc62c170e9583222df2.js → 70367da4ba916376f40c.js} +1 -1
  52. package/assets/esri/core/workers/chunks/{fb669a2e50ca7aacac25.js → 71fef0a33b7ed9456e47.js} +1 -1
  53. package/assets/esri/core/workers/chunks/7430c462c350fdd26349.js +1 -0
  54. package/assets/esri/core/workers/chunks/{ff3fe5c97a98c8cab4ac.js → 7a23b127f551bf13ef54.js} +2 -2
  55. package/assets/esri/core/workers/chunks/{ff3fe5c97a98c8cab4ac.js.LICENSE.txt → 7a23b127f551bf13ef54.js.LICENSE.txt} +1 -1
  56. package/assets/esri/core/workers/chunks/7b73a808922b52755abd.js +1 -0
  57. package/assets/esri/core/workers/chunks/{d682dd49bb9ee7f48f93.js → 9304c3cdf732745577fd.js} +1 -1
  58. package/assets/esri/core/workers/chunks/{8d642b34d40edfe02d8e.js → 9c64b78c5c9b35b31d98.js} +2 -2
  59. package/assets/esri/core/workers/chunks/{8d642b34d40edfe02d8e.js.LICENSE.txt → 9c64b78c5c9b35b31d98.js.LICENSE.txt} +1 -1
  60. package/assets/esri/core/workers/chunks/a0edff37fd4a3f2cb2eb.js +1 -0
  61. package/assets/esri/core/workers/chunks/a6533bab3b2fbc1e2a47.js +1 -0
  62. package/assets/esri/core/workers/chunks/a9f6054d86982b9e5a7c.js +1 -0
  63. package/assets/esri/core/workers/chunks/{10ec10ca361842efce92.js → ab005fe84952f0676020.js} +1 -1
  64. package/assets/esri/core/workers/chunks/{5c53deb45bc142219c76.js → b15ff6c9ef2de8a49853.js} +2 -2
  65. package/assets/esri/core/workers/chunks/{5a476e6743902e35f81a.js.LICENSE.txt → b15ff6c9ef2de8a49853.js.LICENSE.txt} +1 -1
  66. package/assets/esri/core/workers/chunks/b70d71144a060f7eeeeb.js +1 -0
  67. package/assets/esri/core/workers/chunks/b8d02f1b73c374767a5f.js +1 -0
  68. package/assets/esri/core/workers/chunks/ba6452acee3d6defb37e.js +1 -0
  69. package/assets/esri/core/workers/chunks/bccecd678faff927ac76.js +1 -0
  70. package/assets/esri/core/workers/chunks/{ce1f4508487298ab57b6.js → bd2dc1282c49125ede89.js} +1 -1
  71. package/assets/esri/core/workers/chunks/bfbbf180c2c8fdbb6731.js +1 -0
  72. package/assets/esri/core/workers/chunks/{f542bdc994a5ea3aa9d1.js → c38360d912f256519e06.js} +1 -1
  73. package/assets/esri/core/workers/chunks/{e3ad0a390387c5847aca.js → c6fecf2bbd2a711f15d3.js} +1 -1
  74. package/assets/esri/core/workers/chunks/c86f5bb199cf046b8952.js +1 -0
  75. package/assets/esri/core/workers/chunks/cd1869e183001266c4c1.js +2 -0
  76. package/assets/esri/core/workers/chunks/{626c18c1bbc50b3b16b2.js.LICENSE.txt → cd1869e183001266c4c1.js.LICENSE.txt} +1 -1
  77. package/assets/esri/core/workers/chunks/{90321feb56f3a84f6e58.js → d153b29c542c37ae1636.js} +2 -2
  78. package/assets/esri/core/workers/chunks/{90321feb56f3a84f6e58.js.LICENSE.txt → d153b29c542c37ae1636.js.LICENSE.txt} +1 -1
  79. package/assets/esri/core/workers/chunks/{b5f197e24982f6e14468.js → d1f181f91b36351f1d3b.js} +2 -2
  80. package/assets/esri/core/workers/chunks/d55c55d39a253630d228.js +1 -0
  81. package/assets/esri/core/workers/chunks/{49f7a5523462aebf90fc.js → d66cdb9bb494da19696b.js} +2 -2
  82. package/assets/esri/core/workers/chunks/{5c53deb45bc142219c76.js.LICENSE.txt → d66cdb9bb494da19696b.js.LICENSE.txt} +1 -1
  83. package/assets/esri/core/workers/chunks/{9c00c2263e52ad51c2a2.js → d95554f43694b4769675.js} +1 -1
  84. package/assets/esri/core/workers/chunks/dd587d51dad2d82708d1.js +1 -0
  85. package/assets/esri/core/workers/chunks/ecac5ca00c742bfb5898.js +1 -0
  86. package/assets/esri/core/workers/chunks/ed773dab5965e42a2879.js +2 -0
  87. package/assets/esri/core/workers/chunks/{7219ceab0b6fae2e69b6.js.LICENSE.txt → ed773dab5965e42a2879.js.LICENSE.txt} +1 -1
  88. package/assets/esri/core/workers/chunks/{0d946a226b846b3c0849.js → fc06014fb484fc8c697e.js} +1 -1
  89. package/assets/esri/images/portal/xrexperience16.png +0 -0
  90. package/assets/esri/libs/lyr3d/lyr3DMain.wasm +0 -0
  91. package/assets/esri/libs/lyr3d/lyr3DWorker.wasm +0 -0
  92. package/chunks/Compositing.glsl.js +4 -3
  93. package/chunks/Fog.glsl.js +6 -6
  94. package/chunks/GlowComposition.glsl.js +31 -12
  95. package/chunks/LineMarker.glsl.js +37 -36
  96. package/chunks/RibbonLine.glsl.js +83 -83
  97. package/chunks/array.js +1 -1
  98. package/chunks/cameraUtilsSpherical.js +1 -1
  99. package/chunks/languageUtils.js +1 -1
  100. package/chunks/lyr3DMain.js +1 -1
  101. package/chunks/lyr3DWorker.js +1 -1
  102. package/config.js +1 -1
  103. package/core/quantityFormatUtils.js +1 -1
  104. package/core/sql.d.ts +1 -0
  105. package/core/unitFormatUtils.js +1 -1
  106. package/core/unitUtils.js +1 -1
  107. package/form/FormTemplate.js +1 -1
  108. package/geometry/support/curves/circleUtils.js +1 -1
  109. package/geometry/support/curves/circularArcUtils.js +1 -1
  110. package/geometry/support/curves/closestPointOnCurve.js +1 -1
  111. package/geometry/support/curves/curveExtent.js +1 -1
  112. package/geometry/support/curves/lineUtils.js +5 -0
  113. package/geometry/support/heightModelInfoUtils.js +1 -1
  114. package/geometry/support/normalizeUtils.js +1 -1
  115. package/geometry/support/spatialReferenceUtils.js +1 -1
  116. package/interfaces.d.ts +315 -18
  117. package/kernel.js +1 -1
  118. package/layers/GaussianSplatLayer.js +1 -1
  119. package/layers/ImageryLayer.js +1 -1
  120. package/layers/ImageryTileLayer.js +1 -1
  121. package/layers/Lyr3DWasmPerSceneView.js +1 -1
  122. package/layers/Lyr3DWorkerHandle.js +1 -1
  123. package/layers/graphics/controllers/I3SOnDemandController.js +1 -1
  124. package/layers/support/fieldUtils.js +1 -1
  125. package/layers/support/tiles3DUtils.js +1 -1
  126. package/networks/CircuitManager.js +1 -1
  127. package/networks/support/Circuit.js +1 -1
  128. package/networks/support/CircuitSection.js +1 -1
  129. package/networks/support/Subcircuit.js +1 -1
  130. package/package.json +2 -2
  131. package/portal/PortalItem.js +1 -1
  132. package/renderers/ClassBreaksRenderer.js +1 -1
  133. package/renderers/DictionaryRenderer.js +1 -1
  134. package/renderers/DotDensityRenderer.js +1 -1
  135. package/renderers/HeatmapRenderer.js +1 -1
  136. package/renderers/PieChartRenderer.js +1 -1
  137. package/renderers/UniqueValueRenderer.js +1 -1
  138. package/renderers/mixins/VisualVariablesMixin.js +1 -1
  139. package/support/arcadeUtils.js +1 -1
  140. package/support/loadArcade.js +1 -1
  141. package/support/modeUtils.js +1 -1
  142. package/support/revision.js +1 -1
  143. package/symbols/CIMSymbol.js +1 -1
  144. package/symbols/support/FeatureExpressionInfo.js +1 -1
  145. package/views/2d/layers/LayerView2D.js +1 -1
  146. package/views/2d/layers/MediaLayerView2D.js +1 -1
  147. package/views/2d/layers/TileLayerView2D.js +1 -1
  148. package/views/3d/analysis/Dimension/DimensionVisualization.js +1 -1
  149. package/views/3d/analysis/Dimension/LengthDimensionSubTool.js +1 -1
  150. package/views/3d/analysis/Dimension/lengthDimensionManipulatorUtils.js +1 -1
  151. package/views/3d/analysis/Slice/ResizeManipulator.js +1 -1
  152. package/views/3d/analysis/Slice/RotateManipulator.js +1 -1
  153. package/views/3d/analysis/Slice/ShiftManipulator.js +1 -1
  154. package/views/3d/analysis/Viewshed/ViewshedFieldOfViewManipulation.js +1 -1
  155. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementTool.js +1 -1
  156. package/views/3d/environment/Fog.js +1 -1
  157. package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
  158. package/views/3d/interactive/visualElements/LineVisualElement.js +1 -1
  159. package/views/3d/interactive/visualElements/MarkerVisualElement.js +1 -1
  160. package/views/3d/interactive/visualElements/OutlineVisualElement.js +1 -1
  161. package/views/3d/interactive/visualElements/ParallelLineVisualElement.js +1 -1
  162. package/views/3d/interactive/visualElements/RightAngleQuadVisualElement.js +1 -1
  163. package/views/3d/layers/FlowSubView3D.js +1 -1
  164. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  165. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  166. package/views/3d/layers/Lyr3DWorker.js +1 -1
  167. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  168. package/views/3d/layers/graphics/Graphics3DPolygonFillSymbolLayer.js +1 -1
  169. package/views/3d/layers/i3s/PointCloudRenderer.js +1 -1
  170. package/views/3d/layers/support/Tiles3DIntersectionHandler.js +1 -1
  171. package/views/3d/state/SurfaceCollisionConstraint.js +1 -1
  172. package/views/3d/state/ViewStateManager.js +1 -1
  173. package/views/3d/state/controllers/SurfaceCollisionCorrectionController.js +1 -1
  174. package/views/3d/support/cameraUtils.js +1 -1
  175. package/views/3d/support/cameraUtilsSpherical.js +1 -1
  176. package/views/3d/support/flow/FlowSubViewExtent3D.js +1 -1
  177. package/views/3d/support/flow/FlowSubViewTiles3D.js +1 -1
  178. package/views/3d/support/flow/FlowWorker.js +1 -1
  179. package/views/3d/support/flow/geometryUtils.js +1 -1
  180. package/views/3d/support/flow/loadUtils.js +1 -1
  181. package/{layers/support/GaussianSplatAtlasPageAllocator.js → views/3d/support/gaussianSplatting/GaussianSplatAtlasPages.js} +1 -1
  182. package/views/3d/support/gaussianSplatting/GaussianSplatDataStore.js +5 -0
  183. package/views/3d/support/gaussianSplatting/GaussianSplatOrderTexture.js +5 -0
  184. package/views/3d/support/gaussianSplatting/GaussianSplatTextureAtlas.js +5 -0
  185. package/views/3d/support/gaussianSplatting/GaussianTile.js +5 -0
  186. package/views/3d/terrain/OverlayManager.js +1 -1
  187. package/views/3d/terrain/TerrainSurface.js +1 -1
  188. package/views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js +23 -13
  189. package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +37 -25
  190. package/views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js +11 -11
  191. package/views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js +5 -0
  192. package/views/3d/webgl-engine/effects/glow/GlowComposition.glsl.js +1 -1
  193. package/views/3d/webgl-engine/effects/glow/GlowPresets.glsl.js +1 -1
  194. package/views/3d/webgl-engine/effects/glow/GlowRenderNode.js +1 -1
  195. package/views/3d/webgl-engine/lib/CompositingHelper.js +1 -1
  196. package/views/3d/webgl-engine/lib/GaussianSplatRenderNode.js +1 -1
  197. package/views/3d/webgl-engine/lib/GridLocalOriginFactory.js +1 -1
  198. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  199. package/views/3d/webgl-engine/lib/edgeRendering/strokes.js +1 -1
  200. package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
  201. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  202. package/views/3d/webgl-engine/materials/stippleTextureRepository.js +1 -1
  203. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  204. package/views/3d/webgl-engine/shaders/CompositingTechnique.js +1 -1
  205. package/views/3d/webgl-engine/shaders/CompositingTechniqueConfiguration.js +1 -1
  206. package/views/3d/webgl-engine/shaders/LineMarker.glsl.js +1 -1
  207. package/views/3d/webgl-engine/shaders/LineMarkerTechniqueConfiguration.js +1 -1
  208. package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
  209. package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
  210. package/views/3d/webgl-engine/shaders/sources/edgeRenderer/LineOffset.glsl.js +10 -11
  211. package/views/GroundView.js +1 -1
  212. package/views/VideoView.js +1 -1
  213. package/views/interactive/snapping/allLayerSnapping.js +1 -1
  214. package/views/layers/ImageryLayerView.js +1 -1
  215. package/views/support/LayerViewManager.js +1 -1
  216. package/widgets/Feature/support/arcadeFeatureUtils.js +1 -1
  217. package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
  218. package/widgets/support/widget.js +1 -1
  219. package/assets/esri/core/workers/chunks/06bd58c219678315cf5c.js +0 -1
  220. package/assets/esri/core/workers/chunks/0751f539db31bdb5caec.js +0 -1
  221. package/assets/esri/core/workers/chunks/19228ab0fe7944c554e5.js +0 -1
  222. package/assets/esri/core/workers/chunks/2a19a4d7d1c580121065.js +0 -1
  223. package/assets/esri/core/workers/chunks/3d2629357242492afcfa.js +0 -1
  224. package/assets/esri/core/workers/chunks/5a476e6743902e35f81a.js +0 -2
  225. package/assets/esri/core/workers/chunks/5a95688651d7e8b7101d.js +0 -1
  226. package/assets/esri/core/workers/chunks/5c4ba165816809e06340.js +0 -1
  227. package/assets/esri/core/workers/chunks/5f239972cb95afdfa77a.js +0 -1
  228. package/assets/esri/core/workers/chunks/626c18c1bbc50b3b16b2.js +0 -2
  229. package/assets/esri/core/workers/chunks/6963ded8428cc8d51d85.js +0 -1
  230. package/assets/esri/core/workers/chunks/6c3ae96c6ef764fb9552.js +0 -1
  231. package/assets/esri/core/workers/chunks/6da298da2ec09cced0b5.js +0 -1
  232. package/assets/esri/core/workers/chunks/76ec3d2646ba64e3442f.js +0 -1
  233. package/assets/esri/core/workers/chunks/8b1d2bbb2b2eb1830921.js +0 -1
  234. package/assets/esri/core/workers/chunks/925ad2665c2fe0f47cc3.js +0 -1
  235. package/assets/esri/core/workers/chunks/a2f4b6d8da93f106852c.js +0 -1
  236. package/assets/esri/core/workers/chunks/ada8e07ff12bc5d4a1d9.js +0 -1
  237. package/assets/esri/core/workers/chunks/b03dcbc31bccb9fdf9fe.js +0 -1
  238. package/assets/esri/core/workers/chunks/b0de01f8c9b1c3182e0c.js +0 -1
  239. package/assets/esri/core/workers/chunks/c7ba8f2aca0fbd6ceded.js +0 -1
  240. package/assets/esri/core/workers/chunks/c908184d747d33366881.js +0 -1
  241. package/assets/esri/core/workers/chunks/d1711256493d55eca523.js +0 -1
  242. package/assets/esri/core/workers/chunks/d305ca524837c5dc81c8.js +0 -1
  243. package/assets/esri/core/workers/chunks/e6e4e2fb9568319c6207.js +0 -1
  244. package/assets/esri/core/workers/chunks/e6f2ac738df16fb5e13a.js +0 -1
  245. package/assets/esri/core/workers/chunks/e8d25d4ca9b335883f34.js +0 -1
  246. package/assets/esri/core/workers/chunks/ee391a41144855fc625d.js +0 -1
  247. package/assets/esri/core/workers/chunks/f060a52a9b69eb250d63.js +0 -1
  248. 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 a}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{OutputHighlight as t}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{RgbaFloatEncoding as c}from"../views/3d/webgl-engine/core/shaderLibrary/util/RgbaFloatEncoding.glsl.js";import{addProjViewLocalOrigin as p,addViewNormal as d,addPixelRatio as v}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float2BindUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{Float4BindUniform as h}from"../views/3d/webgl-engine/core/shaderModules/Float4BindUniform.js";import{Float4PassUniform as f}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as g}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{glsl as u,If as w}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as y}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Texture2DPassUniform as S}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{outputColorHighlightOID as b}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOID.glsl.js";import{ShaderBuilder as x}from"../views/webgl/ShaderBuilder.js";function z(z){const P=new x,{space:j,anchor:L,hasTip:k}=z,D=2===j,M=1===j;P.include(a,z),P.include(n,z),P.include(s,z);const{vertex:C,fragment:$,varyings:W}=P;$.include(c),p(C,z),P.attributes.add("position","vec3"),P.attributes.add("previousDelta","vec4"),P.attributes.add("uv0","vec2"),W.add("vColor","vec4"),W.add("vpos","vec3",{invariant:!0}),W.add("vUV","vec2"),W.add("vSize","float"),k&&W.add("vLineWidth","float"),C.uniforms.add(new m("nearFar",({camera:e})=>e.nearFar),new h("viewport",({camera:e})=>e.fullViewport)).code.add(u`vec4 projectAndScale(vec4 pos) {
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
- }`),C.code.add(u`void clip(vec4 pos, inout vec4 prev) {
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
- }`),D?(P.attributes.add("normal","vec3"),d(C),C.constants.add("tiltThreshold","float",.7),C.code.add(u`vec3 perpendicular(vec3 v) {
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
- }`)):C.code.add(u`vec2 perpendicular(vec2 v) {
21
+ }`)):$.code.add(y`vec2 perpendicular(vec2 v) {
22
22
  return vec2(v.y, -v.x);
23
- }`);const O=D?"vec3":"vec2";return C.code.add(u`
24
- ${O} normalizedSegment(${O} pos, ${O} prev) {
25
- ${O} segment = pos - prev;
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 : ${D?"vec3(0.0, 0.0, 0.0)":"vec2(0.0, 0.0)"};
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
- ${O} displace(${O} pos, ${O} prev, float displacementLen) {
33
- ${O} segment = normalizedSegment(pos, prev);
32
+ ${T} displace(${T} pos, ${T} prev, float displacementLen) {
33
+ ${T} segment = normalizedSegment(pos, prev);
34
34
 
35
- ${O} displacementDirU = perpendicular(segment);
36
- ${O} displacementDirV = segment;
35
+ ${T} displacementDirU = perpendicular(segment);
36
+ ${T} displacementDirV = segment;
37
37
 
38
- ${1===L?"pos -= 0.5 * displacementLen * displacementDirV;":""}
38
+ ${1===D?"pos -= 0.5 * displacementLen * displacementDirV;":""}
39
39
 
40
40
  return pos + displacementLen * (uv0.x * displacementDirU + uv0.y * displacementDirV);
41
41
  }
42
- `),M&&(C.uniforms.add(new y("inverseProjectionMatrix",({camera:e})=>e.inverseProjectionMatrix)),C.code.add(u`vec3 inverseProject(vec4 posScreen) {
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
- }`),C.code.add(u`bool rayIntersectPlane(vec3 rayDir, vec3 planeOrigin, vec3 planeNormal, out vec3 intersection) {
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
- }`),C.uniforms.add(new g("perScreenPixelRatio",({camera:e})=>e.perScreenPixelRatio)),C.code.add(u`
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
- ${w(z.hasCap,"if(prev.z > posLeft.z) {\n vec2 diff = posLeft.xy - posRight.xy;\n planeOrigin.xy += perpendicular(diff) / 2.0;\n }")};
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
- `)),v(C),C.main.add(u`
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
- ${D?u`${w(z.hideOnShortSegments,u`
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);`:u`
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
- ${w(M,u`
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
- ${w(!D,"vUV *= displacedPosScreen.w;")}
125
- ${w(k,"vLineWidth = lineWidth;")}
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
- }`),$.include(o,z),P.include(b,z),$.include(l),$.uniforms.add(new f("intrinsicColor",({color:e})=>e),new S("tex",({markerTexture:e})=>e)).constants.add("texelSize","float",1/e).code.add(u`float markerAlpha(vec2 samplePos) {
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
- }`),k&&$.constants.add("relativeMarkerSize","float",r/e).constants.add("relativeTipLineWidth","float",i).code.add(u`
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
- ${w(D,"halfTipLineWidth *= fwidth(samplePos.y);")}
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
- `),P.include(t,z),$.main.add(u`
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 = vUV ${w(!D,"* gl_FragCoord.w")};
162
- finalColor.a *= ${k?"max(markerAlpha(samplePos), tipAlpha(samplePos))":"markerAlpha(samplePos)"};
163
- outputColorHighlightOID(finalColor, vpos, finalColor.rgb);`),P}const P=Object.freeze(Object.defineProperty({__proto__:null,build:z},Symbol.toStringTag,{value:"Module"}));export{P as L,z as b};
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{addProjViewLocalOrigin as d,addPixelRatio as p}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float2BindUniform as c}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{Float4BindUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Float4BindUniform.js";import{Float4PassUniform as v}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as f}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as g}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as h,If as D}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as S}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{AnimatedLine as u}from"../views/3d/webgl-engine/shaders/AnimatedLine.glsl.js";import{outputColorHighlightOID as x}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOID.glsl.js";import{ShaderBuilder as L}from"../views/webgl/ShaderBuilder.js";import{alphaCutoff as w}from"../webscene/support/AlphaCutoff.js";const b=1;function y(y){const j=new L,{attributes:C,varyings:P,vertex:F,fragment:z}=j,{applyMarkerOffset:A,draped:R,output:W,capType:V,stippleEnabled:T,falloffEnabled:E,roundJoins:O,wireframe:_,innerColorEnabled:M,hasAnimation:N}=y;z.include(a),j.include(t,y),j.include(n,y),j.include(i,y),j.include(s,y),j.include(u,y);const $=A&&!R;$&&(F.uniforms.add(new g("markerScale",e=>e.markerScale)),j.include(o,{space:2})),d(F,y),F.uniforms.add(new S("inverseProjectionMatrix",e=>e.camera.inverseProjectionMatrix),new c("nearFar",e=>e.camera.nearFar),new g("miterLimit",e=>"miter"!==e.join?0:e.miterLimit),new m("viewport",e=>e.camera.fullViewport)),F.constants.add("LARGE_HALF_FLOAT","float",65500),C.add("position","vec3"),C.add("previousDelta","vec4"),C.add("nextDelta","vec4"),C.add("lineParameters","vec2"),C.add("u0","float"),P.add("vColor","vec4"),P.add("vpos","vec3",{invariant:!0}),P.add("vLineDistance","float"),P.add("vLineWidth","float");const k=T;k&&P.add("vLineSizeInv","float");const B=2===V,I=T&&B,H=E||I;H&&P.add("vLineDistanceNorm","float"),B&&(P.add("vSegmentSDF","float"),P.add("vReverseSegmentSDF","float")),F.code.add(h`vec2 perpendicular(vec2 v) {
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
- }`),F.code.add(h`vec4 projectAndScale(vec4 pos) {
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
- }`),F.code.add(h`void clipAndTransform(inout vec4 pos, inout vec4 prev, inout vec4 next, in bool isStartVertex) {
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
- }`),p(F),F.constants.add("aaWidth","float",T?0:1).main.add(h`
51
- // unpack values from vertex type
52
- bool isStartVertex = abs(abs(lineParameters.y)-3.0) == 1.0;
53
- vec3 prevPosition = position + previousDelta.xyz * previousDelta.w;
54
- vec3 nextPosition = position + nextDelta.xyz * nextDelta.w;
55
-
56
- float coverage = 1.0;
57
-
58
- // Check for special value of lineParameters.y which is used by the Renderer when graphics are removed before the
59
- // VBO is recompacted. If this is the case, then we just project outside of clip space.
60
- if (lineParameters.y == 0.0) {
61
- // Project out of clip space
62
- gl_Position = vec4(1e038, 1e038, 1e038, 1.0);
63
- }
64
- else {
65
- bool isJoin = abs(lineParameters.y) < 3.0;
66
- float lineSize = getSize();
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
- ${k?h`vLineSizeInv = 1.0 / lineSize;`:""}
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
- ${B?h`vec2 segmentEnd = mix(next.xy, pos.xy, isEndVertex);`:""}
94
- `),F.main.add(h`left = (leftLen > 0.001) ? left/leftLen : vec2(0.0, 0.0);
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)) {`),O?F.main.add(h`
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 = ${T?h`min(1.0, subdivisionFactor * ${h.float((b+2)/(b+1))})`:h`subdivisionFactor`};
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
- `):F.main.add(h`if (leftLen < 0.001) {
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 J=0!==V;return F.main.add(h`
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
- ${J?h`capDisplacementDir = isStartVertex ? -right : left;`:""}
137
+ ${G?S`capDisplacementDir = isStartVertex ? -right : left;`:""}
140
138
  }
141
- `),F.main.add(h`
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) * pos.w;
142
+ float lineDistNorm = noPerspectiveWrite(sign(lineParameters.y), pos.w);
145
143
 
146
- vLineDistance = lineWidth * lineDistNorm;
147
- ${H?h`vLineDistanceNorm = lineDistNorm;`:""}
144
+ vLineDistance = lineWidth * lineDistNorm;
145
+ ${U?S`vLineDistanceNorm = lineDistNorm;`:""}
148
146
 
149
147
  pos.xy += dpos;
150
- `),B&&F.main.add(h`vec2 segmentDir = normalize(segment);
151
- vSegmentSDF = (isJoin && isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentOrigin, segmentDir) * pos.w) ;
152
- vReverseSegmentSDF = (isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd, -segmentDir) * pos.w);`),T&&(R?F.uniforms.add(new f("worldToScreenRatio",e=>1/e.screenToPCSRatio)):F.main.add(h`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
153
- float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),F.main.add(h`float segmentLengthScreenDouble = length(segment);
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?F.main.add(h`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteWorldToScreenRatio / worldToScreenRatio;
158
- float startPseudoScreen = u0 * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):F.main.add(h`float startPseudoScreen = mix(u0, u0 - segmentLengthRender, isEndVertex) * discreteWorldToScreenRatio;
159
- float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),F.uniforms.add(new g("stipplePatternPixelSize",e=>r(e))),F.main.add(h`float patternLength = lineSize * stipplePatternPixelSize;
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 *= pos.w;
168
- vStippleDistance *= pos.w;
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);`)),F.main.add(h`
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 *= coverage;
176
+ vColor.a = noPerspectiveWrite(vColor.a * coverage, pos.w);
179
177
 
180
- ${_&&!R?"pos.z -= 0.001 * pos.w;":""}
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
- }`),j.fragment.include(e,y),j.include(x,y),z.include(l),z.main.add(h`discardBySlice(vpos);
187
- discardByTerrainDepth();`),_?z.main.add(h`vec4 finalColor = vec4(1.0, 0.0, 1.0, 1.0);`):(B&&z.main.add(h`
188
- float sdf = min(vSegmentSDF, vReverseSegmentSDF);
189
- vec2 fragmentPosition = vec2(
190
- min(sdf, 0.0),
191
- vLineDistance
192
- ) * gl_FragCoord.w;
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 - vLineWidth) * 0.5; // Divide by 2 to transform from double pixel scale
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 < ${h.float(w)}) {
197
+ if (capCoverage < ${S.float(P)}) {
199
198
  discard;
200
199
  }
201
- `),I?z.main.add(h`
200
+ `),J?F.main.add(S`
202
201
  vec2 stipplePosition = vec2(
203
202
  min(getStippleSDF() * 2.0 - 1.0, 0.0),
204
- vLineDistanceNorm * gl_FragCoord.w
203
+ lineDistanceNorm
205
204
  );
206
- float stippleRadius = length(stipplePosition * vLineWidth);
207
- float stippleCapSDF = (stippleRadius - vLineWidth) * 0.5; // Divide by 2 to transform from double pixel scale
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(${h.float(w)}, stippleCoverage);
210
- `):z.main.add(h`float stippleAlpha = getStippleAlpha();`),10!==W&&z.main.add(h`discardByStippleAlpha(stippleAlpha, ${h.float(w)});`),z.uniforms.add(new v("intrinsicColor",e=>e.color)).main.add(h`vec4 color = intrinsicColor * vColor;`),M&&z.uniforms.add(new v("innerColor",e=>e.innerColor??e.color),new g("innerWidth",(e,i)=>e.innerWidth*i.camera.pixelRatio)).main.add(h`float distToInner = abs(vLineDistance * gl_FragCoord.w) - innerWidth;
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);`),z.main.add(h`vec4 finalColor = blendStipple(color, stippleAlpha);`),E&&(z.uniforms.add(new g("falloff",e=>e.falloff)),z.main.add(h`finalColor.a *= pow(max(0.0, 1.0 - abs(vLineDistanceNorm * gl_FragCoord.w)), falloff);`)),T||z.main.add(h`float featherStartDistance = max(vLineWidth - 2.0, 0.0);
214
- float value = abs(vLineDistance) * gl_FragCoord.w;
215
- float feather = (value - featherStartDistance) / (vLineWidth - featherStartDistance);
216
- finalColor.a *= 1.0 - clamp(feather, 0.0, 1.0);`),N&&z.main.add(h`
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
- ${D(10!==W,h`
220
- if (finalColor.a <= ${h.float(w)}) {
219
+ ${x(10!==V,S`
220
+ if (finalColor.a <= ${S.float(P)}) {
221
221
  discard;
222
222
  }`)}
223
- `)),z.main.add(h`outputColorHighlightOID(finalColor, vpos, finalColor.rgb);`),j}const j=Object.freeze(Object.defineProperty({__proto__:null,build:y,ribbonlineNumRoundJoinSubdivisions:b},Symbol.toStringTag,{value:"Module"}));export{j as R,y as b,b as r};
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{Cyclical as t,cyclical2PI as e}from"../core/Cyclical.js";import{deg2rad as r,rad2deg as s,asinClamped as o,lerp as a,clamp as n}from"../core/mathUtils.js";import{fromRotation as i,rotate as c}from"../core/libs/gl-matrix-2/math/mat4.js";import{create as l}from"../core/libs/gl-matrix-2/factories/mat4f64.js";import{h as m,e as p,n as u,t as f,u as h,l as d,g,j as y,m as M,x as j,b}from"./vec32.js";import{fromValues as v,create as x,ZEROS as T,clone as w}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{s as R,b as C}from"./vec42.js";import{create as S}from"../core/libs/gl-matrix-2/factories/vec4f64.js";import{getEpsilon as U}from"../core/libs/gl-matrix-2/math/common.js";import{getReferenceEllipsoid as P}from"../geometry/ellipsoidUtils.js";import I from"../geometry/Extent.js";import H from"../geometry/Polygon.js";import q from"../geometry/SpatialReference.js";import{isClockwise as A}from"../geometry/support/coordsUtils.js";import{fromPoints as E,create as k}from"../geometry/support/lineSegment.js";import{fromPositionAndNormal as _,create as F,isPointInside as G,intersectLineOrRay as W,getNormal as z}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=v(0,0,1),et=u(x(),v(1,1,1)),rt=new t(-180,180),st=l(),ot=x(),at=x();function nt(t,e,s,o=Q()){m(ot,t,tt),0===p(ot,ot)&&m(ot,t,et),i(st,-r(e),t),c(st,st,-r(s),ot);const{up:a,direction:n}=o;return m(a,ot,t),u(a,a),f(a,a,st),u(n,t),h(n,n),f(n,n,st),o}function it(t,e,r,s){const o=ot,a=at;return u(o,t),m(at,o,tt),0===p(at,at)&&m(at,o,et),m(a,at,o),V(e,r,s,o,a)}function ct(t,e,s,a){const n={eye:x(),up:null,tilt:a,heading:s},i=ot;i[0]=t[0],i[1]=t[2],i[2]=-t[1];const c=e,l=r(s),m=r(a),p=Math.sin(l),u=Math.cos(l),f=Math.sin(m),h=Math.cos(m),y=d(i);let M;if(Math.abs(m)<1e-8)M=c+y;else{const t=y/f,e=o(c/t),r=Math.PI-m-e;M=t*Math.sin(r)}const j=h*c,b=c*c*(f*f),v=u*u*b,T=M-j,w=T*T,R=v*(v+w-i[1]*i[1]);if(R<0)return g(n.eye,i,M/y),n.tilt=0,mt(n,t);const C=Math.sqrt(R),S=i[1]*T,U=v+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):g(n.eye,i,M/y),n.tilt=0,lt(n.eye),mt(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),_=v*A+I-2*q*k*T+E*w;return Math.abs(_)<1e-8?(g(n.eye,i,M/y),n.tilt=0,lt(n.eye),mt(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))/_,g(n.eye,n.eye,M),lt(n.eye),mt(n,t))}function lt(t){const e=t[1];t[1]=-t[2],t[2]=e}function mt(t,e){const r=nt(e,t.heading,t.tilt);return t.up=r.up,t}function pt(t,e,r){const a=d(e),n=Math.sqrt(r*r+a*a-2*r*a*Math.cos(Math.PI-t)),i=o(r/(n/Math.sin(t)));return s(t-i)}function ut(t,e,s){const a=r(t),n=d(e);return o(s/(n/Math.sin(a)))+a}function ft(t,o,a,n,i){let c,l,m,p;const u=o.latitude,f=P(t.spatialReference).radius,h=o.longitude,d=Z(u,a,f)/2;c=h-d,l=h+d;const g=r(u),y=(1+Math.sin(g))/(1-Math.sin(g)),M=(y+1)*Math.tan(n/f/2),j=M*M;function b(t){const r=Math.PI/2;return(t=e.normalize(t,-r))>r&&(t=Math.PI-t),t}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(s(m),-90),p=Math.min(s(p),90),l=rt.monotonic(c,l),l-c>180){const t=(l-c-180)/2;c+=t,l-=t}const v=t.spatialReference&&t.spatialReference.isGeographic?t.spatialReference:q.WGS84;return i?(i.xmin=c,i.ymin=m,i.xmax=l,i.ymax=p,i.spatialReference=v):i=new I(c,m,l,p,v),t.spatialReference&&t.spatialReference.isWebMercator&&Y(i,!1,i),i}function ht(t,e){const{renderCoordsHelper:r}=t,s=t.state.camera.clone(),o=new B(r);s.near=J,o.update(s);const i=r.getAltitude(e),c=t.spatialReference,l=r.referenceEllipsoid.radius,m=s.eye,p=1+y(m,e)/(l+i),u=Math.sqrt(p*p-1),{minCurvature:f,maxCurvature:h,minSamples:d,maxSamples:g}=jt,b=Mt(t),v=n((u-f)/(h-f),0,1),x=Math.round(a(d,g,v)),S=s.aboveGround,U=o.planes[5],P=[],I=_(T,bt,F()),q=_(T,vt,F());R(St,0,0,0,0);const A=t=>{};for(let n=0;n<4;n++){const t=1===n&&!S||3===n&&S?1-b:0,e=1===n&&S||3===n&&!S?b:1,s=o.lines[n],c=o.lines[3===n?0:n+1];for(let o=0;o<x;o++){const l=o/x,p=0===o?0:a(t,e,1===n?1-(1-l)**2:3===n?l**2:l),u=M(Tt,s.origin,c.origin,p),f=$(s.direction,c.direction,p,xt);r.intersectManifoldClosestSilhouette(O(u,f),i,wt),X(wt,m,wt,U),P.push(w(wt)),0!==P.length&&A(j(P.at(-1),wt));const h=(G(I,wt)?1:0)|(G(q,wt)?2:0);St[h]=1}}P.length>2&&A(j(P[0],P.at(-1)));const E=dt(C(St)>1?gt(yt(P,I),q):[P],r,c);return new H({rings:E,spatialReference:c})}function dt(t,e,r){const s=2*U();return t.map(t=>{const o=[];let a=!1;for(const n of t)e.fromRenderCoords(n,wt,r),Math.abs(n[0])<s&&Math.abs(n[1])<s?(o.push([null,wt[1]]),o.push([null,wt[1]]),a=!0):o.push([wt[0],wt[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]),A(o)||o.reverse(),o})}function gt(t,e){const r=[];for(const s of t)r.push(...yt(s,e));return r}function yt(t,e){const r=[],s=[],o=U();for(let n=0;n<t.length;n++){const a=t[n],i=n===t.length-1?t[0]:t[n+1],c=E(a,i,Ct),l=W(e,c.origin,c.vector,0,wt);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=z(e),m=b(x(),wt,c,t*o),p=b(x(),wt,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 Mt(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(Rt,e.referenceEllipsoid.radius+a),N(Rt,n,r.distance,r.fovY)}const jt={minCurvature:r(5),maxCurvature:r(50),minSamples:1,maxSamples:6},bt=v(1,0,0),vt=v(0,1,0),xt=x(),Tt=x(),wt=x(),Rt=L(),Ct=k(),St=S(),Ut=Object.freeze(Object.defineProperty({__proto__:null,directionToHeadingTilt:it,eyeForCenterWithHeadingTilt:ct,eyeTiltToLookAtTilt:ut,headingTiltToDirectionUp:nt,lookAtTiltToEyeTilt:pt,toArea:ht,toExtent:ft},Symbol.toStringTag,{value:"Module"}));export{ut as a,ht as b,Ut as c,it as d,ct as e,nt as h,pt as l,ft as t};
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};