@arcgis/core 5.2.0-next.161 → 5.2.0-next.163

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 (185) hide show
  1. package/arcgisGlobal.d.ts +1 -0
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/092e311cb7aea92a6a26.js +1 -0
  4. package/assets/esri/core/workers/chunks/17c6d66b47aa690df0d4.js +1 -0
  5. package/assets/esri/core/workers/chunks/1e1c45f75020d5e05dc3.js +1 -0
  6. package/assets/esri/core/workers/chunks/{4ed76fb5f6096a089f5b.js → 1f7f4f821d422b46cae7.js} +1 -1
  7. package/assets/esri/core/workers/chunks/1fe24ffcd88280d84fbe.js +1 -0
  8. package/assets/esri/core/workers/chunks/25a3bd8bede2d07d3a54.js +1 -0
  9. package/assets/esri/core/workers/chunks/2ad69cc496235702bbf2.js +1 -0
  10. package/assets/esri/core/workers/chunks/3f46acfda693c70abbdd.js +1 -0
  11. package/assets/esri/core/workers/chunks/434a8ba841a59e0deab9.js +1 -0
  12. package/assets/esri/core/workers/chunks/45fd2b456a6997584ca1.js +1 -0
  13. package/assets/esri/core/workers/chunks/{8480fe6b4372dbbfa7cc.js → 46c5371c7a627537098c.js} +10 -10
  14. package/assets/esri/core/workers/chunks/53ff68d4f9e365fc15cd.js +1 -0
  15. package/assets/esri/core/workers/chunks/542e5640ea1b80ef801a.js +1 -0
  16. package/assets/esri/core/workers/chunks/5a9b7eb26f936f03d02e.js +1 -0
  17. package/assets/esri/core/workers/chunks/5d76f4d97beee494bbbf.js +1 -0
  18. package/assets/esri/core/workers/chunks/5dc604e3691f36f03959.js +1 -0
  19. package/assets/esri/core/workers/chunks/5f07f52bb8b7721f08d3.js +1 -0
  20. package/assets/esri/core/workers/chunks/{32b351b047ce1eb58146.js → 60c79934799927114074.js} +1 -1
  21. package/assets/esri/core/workers/chunks/67f54efc817b241f8746.js +1 -0
  22. package/assets/esri/core/workers/chunks/7159d9c36869cd82599e.js +29 -0
  23. package/assets/esri/core/workers/chunks/771dd92cb3e6a3427f66.js +1 -0
  24. package/assets/esri/core/workers/chunks/792d2b62356a1d953c88.js +1 -0
  25. package/assets/esri/core/workers/chunks/89c8b0f684c1f27d149e.js +1 -0
  26. package/assets/esri/core/workers/chunks/{9401cc22373566e1171e.js → 8a7b02037151767542f1.js} +1 -1
  27. package/assets/esri/core/workers/chunks/8ab57cb1bfd3dc8d3c2a.js +1 -0
  28. package/assets/esri/core/workers/chunks/95b82cbbe355266c65d7.js +1 -0
  29. package/assets/esri/core/workers/chunks/97b5f4302fb867c829f4.js +1 -0
  30. package/assets/esri/core/workers/chunks/9de5ad77bc37ec142218.js +1 -0
  31. package/assets/esri/core/workers/chunks/a65951f1d5702cfd996e.js +1 -0
  32. package/assets/esri/core/workers/chunks/a6f969851d4278865cc5.js +1 -0
  33. package/assets/esri/core/workers/chunks/aa4f3751f0d830113bed.js +1 -0
  34. package/assets/esri/core/workers/chunks/b1d989b72203113a06fe.js +1 -0
  35. package/assets/esri/core/workers/chunks/{fc73737b41e086f0ce0b.js → b59aaf30c7fe2c8d1aaa.js} +1 -1
  36. package/assets/esri/core/workers/chunks/b6d71a4ab788a09714f3.js +1 -0
  37. package/assets/esri/core/workers/chunks/b704f489d0f072a0bfcd.js +1 -0
  38. package/assets/esri/core/workers/chunks/{28b74bc77f7c13080074.js → be97a629e2ae4d13ceb3.js} +1 -1
  39. package/assets/esri/core/workers/chunks/{d33360c4f85203edafff.js → bf4d913e523eae2fda28.js} +1 -1
  40. package/assets/esri/core/workers/chunks/{d6cd0039d6e9c40961e3.js → d1f98c5249c487eb96f1.js} +1 -1
  41. package/assets/esri/core/workers/chunks/e077e321a3109c2fbbe2.js +1 -0
  42. package/assets/esri/core/workers/chunks/e251921bc5367258c4d2.js +1 -0
  43. package/assets/esri/core/workers/chunks/ee08ae5b73439a1ff666.js +1 -0
  44. package/assets/esri/core/workers/chunks/fcaf9450642fcef83286.js +1 -0
  45. package/assets/esri/core/workers/chunks/feb41abc03d677df6f73.js +1 -0
  46. package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +2 -5
  47. package/assets/esri/themes/dark/main.css +1 -1
  48. package/assets/esri/themes/light/main.css +1 -1
  49. package/assets/esri/themes/light/view.css +1 -1
  50. package/chunks/DefaultMaterial.glsl.js +1 -1
  51. package/chunks/RealisticTree.glsl.js +1 -1
  52. package/chunks/RibbonLine.glsl.js +70 -64
  53. package/config.d.ts +11 -30
  54. package/config.js +1 -1
  55. package/core/workers/workerFactory.js +1 -1
  56. package/core/workers.d.ts +17 -0
  57. package/kernel.js +1 -1
  58. package/layers/FeatureLayer.d.ts +39 -19
  59. package/layers/FeatureLayer.js +1 -1
  60. package/layers/MapImageLayer.d.ts +10 -3
  61. package/layers/MapNotesLayer.d.ts +2 -2
  62. package/layers/SubtypeGroupLayer.d.ts +64 -1
  63. package/layers/SubtypeGroupLayer.js +1 -1
  64. package/layers/geospatialPDF/GeospatialPDFLayerWorker.js +1 -1
  65. package/layers/graphics/sources/FeatureLayerSource.js +1 -1
  66. package/layers/graphics/sources/support/QueryTask.js +1 -1
  67. package/layers/knowledgeGraph/KnowledgeGraphSublayer.d.ts +16 -16
  68. package/layers/mixins/ArcGISMapService.js +1 -1
  69. package/layers/ogc/ogcFeatureUtils.js +1 -1
  70. package/layers/support/LabelClass.d.ts +20 -2
  71. package/layers/support/Sublayer.d.ts +61 -17
  72. package/layers/support/Sublayer.js +1 -1
  73. package/layers/support/TimeInformation.js +2 -0
  74. package/package.json +2 -2
  75. package/rest/layerSources/DynamicDataLayer.d.ts +4 -2
  76. package/rest/layerSources/DynamicDataLayer.js +1 -1
  77. package/rest/layerSources/DynamicMapLayer.d.ts +1 -1
  78. package/rest/layerSources/DynamicWorkspaceLayer.d.ts +49 -0
  79. package/rest/layerSources/DynamicWorkspaceLayer.js +2 -0
  80. package/rest/layerSources/typeUtils.js +2 -0
  81. package/rest/query/operations/queryRelatedRecords.js +1 -1
  82. package/rest/query/operations/queryUtils.js +1 -1
  83. package/rest/support/Query.js +1 -1
  84. package/rest/support/RelationshipQuery.js +1 -1
  85. package/rest/support/timeUtils.js +2 -0
  86. package/symbols/LineSymbol3D.d.ts +5 -3
  87. package/symbols/TextSymbol.d.ts +27 -2
  88. package/views/2d/analysis/AreaMeasurement/AreaMeasurementTool.js +1 -1
  89. package/views/2d/analysis/AreaMeasurementAnalysisView2D.js +1 -1
  90. package/views/2d/analysis/DistanceMeasurement/DistanceMeasurementTool.js +1 -1
  91. package/views/2d/analysis/DistanceMeasurementAnalysisView2D.js +1 -1
  92. package/views/2d/analysis/ElevationProfileAnalysisView2D.d.ts +6 -0
  93. package/views/2d/analysis/ElevationProfileAnalysisView2D.js +1 -1
  94. package/views/2d/layers/features/layerAdapters/FeatureLayerAdapter.js +1 -1
  95. package/views/2d/layers/features/layerAdapters/SubtypeGroupLayerAdapter.js +1 -1
  96. package/views/3d/GroundView3D.js +1 -1
  97. package/views/3d/analysis/Dimension/DimensionVisualization.js +1 -1
  98. package/views/3d/analysis/Dimension/LengthDimensionSubTool.js +1 -1
  99. package/views/3d/analysis/Dimension/lengthDimensionManipulatorUtils.js +1 -1
  100. package/views/3d/analysis/ElevationProfileAnalysisView3D.d.ts +6 -0
  101. package/views/3d/analysis/ElevationProfileAnalysisView3D.js +1 -1
  102. package/views/3d/analysis/LineOfSight/LineOfSightObserverPlugin.js +1 -1
  103. package/views/3d/analysis/LineOfSight/LineOfSightTargetPlugin.js +1 -1
  104. package/views/3d/analysis/Viewshed/ViewshedFieldOfViewManipulation.js +1 -1
  105. package/views/3d/analysis/Viewshed/ViewshedPlacementPointPlugin.js +1 -1
  106. package/views/3d/analysis/ViewshedAnalysisView3D.js +1 -1
  107. package/views/3d/environment/SunLighting.d.ts +17 -1
  108. package/views/3d/environment/SunLighting.js +1 -1
  109. package/views/3d/environment/VirtualLighting.d.ts +17 -1
  110. package/views/3d/environment/VirtualLighting.js +1 -1
  111. package/views/3d/interactive/editingTools/move/MoveTool3D.js +1 -1
  112. package/views/3d/interactive/editingTools/reshape/ReshapeOperation.js +1 -1
  113. package/views/3d/interactive/manipulators/ResizeManipulator.js +1 -1
  114. package/views/3d/interactive/manipulators/RotateManipulator.js +1 -1
  115. package/views/3d/interactive/manipulators/ShiftManipulator.js +1 -1
  116. package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
  117. package/views/3d/interactive/visualElements/LineVisualElement.js +1 -1
  118. package/views/3d/interactive/visualElements/OutlineVisualElement.js +1 -1
  119. package/views/3d/interactive/visualElements/ParallelLineVisualElement.js +1 -1
  120. package/views/3d/interactive/visualElements/RightAngleQuadVisualElement.js +1 -1
  121. package/views/3d/layers/FlowSubView3D.js +1 -1
  122. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  123. package/views/3d/layers/graphics/Graphics3DPolygonFillSymbolLayer.js +1 -1
  124. package/views/3d/support/elevationUpdateUtils.js +1 -1
  125. package/views/3d/terrain/TerrainData.js +1 -1
  126. package/views/3d/terrain/terrainUtils.js +1 -1
  127. package/views/3d/webgl-engine/collections/Component/Material/ComponentData.glsl.js +2 -2
  128. package/views/3d/webgl-engine/core/shaderLibrary/attributes/SymbolColor.glsl.js +3 -3
  129. package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialExternalColor.glsl.js +2 -2
  130. package/views/3d/webgl-engine/core/shaderLibrary/output/getEmissions.glsl.js +2 -2
  131. package/views/3d/webgl-engine/lib/GridLocalOriginFactory.js +1 -1
  132. package/views/3d/webgl-engine/lib/RenderFeature.js +1 -1
  133. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  134. package/views/3d/webgl-engine/lib/RenderingContext.js +1 -1
  135. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  136. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  137. package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
  138. package/views/BasemapView.js +1 -1
  139. package/views/BreakpointsOwner.d.ts +6 -0
  140. package/views/GroundView.d.ts +1 -1
  141. package/views/GroundView.js +1 -1
  142. package/views/SceneView.js +1 -1
  143. package/views/analysis/ElevationProfile/ElevationProfileTool.js +1 -1
  144. package/views/support/ScheduledQueueProcessor.js +1 -1
  145. package/views/types.d.ts +3 -0
  146. package/views/webgl/ShaderBuilder.js +1 -1
  147. package/widgets/Daylight/DaylightViewModel.js +1 -1
  148. package/widgets/OrientedImageryViewer.js +1 -1
  149. package/widgets/Sketch/SketchViewModel.d.ts +61 -2
  150. package/widgets/Sketch/SketchViewModel.js +1 -1
  151. package/widgets/TimeSlider/TimeSliderViewModel.d.ts +3 -2
  152. package/widgets/TimeSlider.d.ts +5 -4
  153. package/assets/esri/core/workers/chunks/0a5a9885ee6f5b5f99f0.js +0 -1
  154. package/assets/esri/core/workers/chunks/0bd5012da287469b17d5.js +0 -1
  155. package/assets/esri/core/workers/chunks/112befb3b5b406f29298.js +0 -1
  156. package/assets/esri/core/workers/chunks/172cfeb5f415e4662432.js +0 -1
  157. package/assets/esri/core/workers/chunks/2d13a22f7b2427927fdc.js +0 -1
  158. package/assets/esri/core/workers/chunks/3e3e076fa5e8d5d5f33f.js +0 -1
  159. package/assets/esri/core/workers/chunks/42fd2a7b22b03dacc6a7.js +0 -1
  160. package/assets/esri/core/workers/chunks/43cf862577bf37344ff4.js +0 -1
  161. package/assets/esri/core/workers/chunks/4be559c53fe5ac0d0d2e.js +0 -1
  162. package/assets/esri/core/workers/chunks/4e350d6c76957f5beb70.js +0 -1
  163. package/assets/esri/core/workers/chunks/4fe34da1c5d63e66ce98.js +0 -1
  164. package/assets/esri/core/workers/chunks/510502a4c9a2ba8d3f7b.js +0 -1
  165. package/assets/esri/core/workers/chunks/612104dff305ff062dfa.js +0 -29
  166. package/assets/esri/core/workers/chunks/6c9266120d46e8c69dbf.js +0 -1
  167. package/assets/esri/core/workers/chunks/6c9acd9e4e201dc380e9.js +0 -1
  168. package/assets/esri/core/workers/chunks/74c866e0b66e61751861.js +0 -1
  169. package/assets/esri/core/workers/chunks/830ab9b8d000169da675.js +0 -1
  170. package/assets/esri/core/workers/chunks/8ff23ac0abeea0073b47.js +0 -1
  171. package/assets/esri/core/workers/chunks/939942b00ba380e2957e.js +0 -1
  172. package/assets/esri/core/workers/chunks/95dbbddac6581b9d671f.js +0 -1
  173. package/assets/esri/core/workers/chunks/a40b6d8b5c73e06e14d4.js +0 -1
  174. package/assets/esri/core/workers/chunks/aa1ac7954e4f0fefe15b.js +0 -1
  175. package/assets/esri/core/workers/chunks/b5df193c93e9c19f9700.js +0 -1
  176. package/assets/esri/core/workers/chunks/befa32b9e7b3fbdd431e.js +0 -1
  177. package/assets/esri/core/workers/chunks/c2c1f51a4668055c2838.js +0 -1
  178. package/assets/esri/core/workers/chunks/d0f5bee9db1ad51ae687.js +0 -1
  179. package/assets/esri/core/workers/chunks/d95d63e8d51244d71afb.js +0 -1
  180. package/assets/esri/core/workers/chunks/dfd2dc5cdc97ffba8926.js +0 -1
  181. package/assets/esri/core/workers/chunks/e1b7806ab3e1967b15f0.js +0 -1
  182. package/assets/esri/core/workers/chunks/e1f5d00878f27e1d413e.js +0 -1
  183. package/assets/esri/core/workers/chunks/e8bf653376a607f00897.js +0 -1
  184. package/assets/esri/core/workers/chunks/f4a7aa3cdbc0c429c359.js +0 -1
  185. package/assets/esri/core/workers/chunks/ffbcb816b611049a6276.js +0 -1
@@ -43,7 +43,7 @@ import{Offset as e}from"../views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.
43
43
  ${M(X,`vColor.rgb *`)} matColor,
44
44
  texColor.rgb,
45
45
  vExternalColor.rgb,
46
- colorMixMode
46
+ int(colorMixMode)
47
47
  );
48
48
  float opacity_ = getDefaultMaterialOpacity(texColor.a);
49
49
 
@@ -34,7 +34,7 @@ import{Offset as e}from"../views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.
34
34
  ${O(P.hasVertexColors,`vColor.rgb * `)} matColor,
35
35
  texColor.rgb,
36
36
  vExternalColor.rgb,
37
- colorMixMode
37
+ int(colorMixMode)
38
38
  );
39
39
  float opacity_ = getDefaultMaterialOpacity(texColor.a);
40
40
 
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{sliceDraw as e}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{evaluateSceneLightingFragment as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/evaluateSceneLightingFragment.glsl.js";import{LineStipple as r,computePixelSize as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{MarkerSizing as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{NormalUtils as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{PiUtils as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as c}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{metersPerRenderUnit as l,screenPixelSizePerDistance as u,inverseProjectionMatrix as d,nearFar as f,viewport as p}from"../views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js";import{ColorConversion as m}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as h,NoPerspectiveRead as g}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as _,addPixelRatio as v}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float4PassUniform as y}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as b}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as x}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as S,If as C}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{alphaCutoff as w}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{animatedAlpha as T}from"../views/3d/webgl-engine/shaders/animatedAlpha.glsl.js";import{outputColorHighlightOLID as E}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{getTextureBackedBufferModule as ee}from"../views/3d/webgl-engine/shaders/RibbonLineTextureBuffer.glsl.js";import{ShaderBuilder as D}from"../views/webgl/ShaderBuilder.js";const O=1;function k(O){let k=new D,{attributes:A,varyings:j,vertex:M,fragment:N}=k,{applyMarkerOffset:P,draped:F,shadingEnabled:I,output:L,capType:R,stippleEnabled:z,falloffEnabled:B,wireframe:V,innerColorEnabled:H,hasAnimation:U,hasScreenSizePerspective:W,worldSized:G,imagePattern:K}=O,q=R===2,J=z&&q,Y=B||J,X=z||q,Z=O.usePerspectiveCorrectStipple,Q=ee(O).createBuilder(k,O);M.inputs.add(`position`,()=>Q.getTextureAttribute(`position`)),O.hasVVSize?M.inputs.add(`sizeFeatureAttribute`,()=>Q.getTextureAttribute(`sizeFeatureAttribute`)):M.inputs.add(`size`,()=>Q.getTextureAttribute(`size`)),O.hasVVOpacity&&M.inputs.add(`opacityFeatureAttribute`,()=>Q.getTextureAttribute(`opacityFeatureAttribute`)),O.hasVVColor?M.inputs.add(`colorFeatureAttribute`,()=>Q.getTextureAttribute(`colorFeatureAttribute`)):M.inputs.add(`color`,()=>Q.getTextureAttribute(`color`)),N.include(s),k.include(t,O),k.include(r,O),L===11?(k.varyings.add(`objectAndLayerIdColorVarying`,`vec4`),M.code.add(S`
2
+ import{sliceDraw as e}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{evaluateSceneLightingFragment as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/evaluateSceneLightingFragment.glsl.js";import{LineStipple as r,computePixelSize as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{MarkerSizing as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{NormalUtils as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{PiUtils as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as c}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{metersPerRenderUnit as l,screenPixelSizePerDistance as u,inverseProjectionMatrix as d,nearFar as f,viewport as p}from"../views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js";import{ColorConversion as ee}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as m,NoPerspectiveRead as h}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as g,addPixelRatio as _}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float4PassUniform as v}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as y}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as b}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as x,If as S}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{alphaCutoff as C}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{animatedAlpha as w}from"../views/3d/webgl-engine/shaders/animatedAlpha.glsl.js";import{outputColorHighlightOLID as T}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{getTextureBackedBufferModule as E}from"../views/3d/webgl-engine/shaders/RibbonLineTextureBuffer.glsl.js";import{ShaderBuilder as te}from"../views/webgl/ShaderBuilder.js";const D=1;function O(D){let O=new te,{attributes:k,varyings:A,vertex:j,fragment:M}=O,{applyMarkerOffset:N,draped:P,shadingEnabled:F,output:I,capType:L,stippleEnabled:R,falloffEnabled:z,wireframe:B,innerColorEnabled:V,hasAnimation:H,hasScreenSizePerspective:U,worldSized:W,imagePattern:G,useFlatJoinVarying:K}=D,q=L===2,J=R&&q,Y=z||J,X=R||q,Z=D.usePerspectiveCorrectStipple,Q=E(D).createBuilder(O,D);j.inputs.add(`position`,()=>Q.getTextureAttribute(`position`)),D.hasVVSize?j.inputs.add(`sizeFeatureAttribute`,()=>Q.getTextureAttribute(`sizeFeatureAttribute`)):j.inputs.add(`size`,()=>Q.getTextureAttribute(`size`)),D.hasVVOpacity&&j.inputs.add(`opacityFeatureAttribute`,()=>Q.getTextureAttribute(`opacityFeatureAttribute`)),D.hasVVColor?j.inputs.add(`colorFeatureAttribute`,()=>Q.getTextureAttribute(`colorFeatureAttribute`)):j.inputs.add(`color`,()=>Q.getTextureAttribute(`color`)),M.include(s),O.include(t,D),O.include(r,D),I===11?(O.varyings.add(`objectAndLayerIdColorVarying`,`vec4`),j.code.add(x`
3
3
  vec4 getOlidColor() {
4
4
  return ${Q.getTextureAttribute(`olidColor`)};
5
5
  }
@@ -7,9 +7,9 @@ import{sliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.gls
7
7
  void forwardObjectAndLayerIdColor() {
8
8
  objectAndLayerIdColorVarying = getOlidColor();
9
9
  }
10
- `),N.code.add(S`void outputObjectAndLayerIdColor() {
10
+ `),M.code.add(x`void outputObjectAndLayerIdColor() {
11
11
  fragColor = objectAndLayerIdColorVarying;
12
- }`)):(M.code.add(S`void forwardObjectAndLayerIdColor() {}`),N.code.add(S`void outputObjectAndLayerIdColor() {}`));let $=P&&!F;if($&&k.include(a,O),_(M,O),F&&(G||z)){let e=G?`groundMetersToScreenRatio`:`planarDistanceToScreenRatio`;M.uniforms.add(new b(e,e=>1/(e.screenToPlanarDistanceRatio*(G?e.planarDistanceToGroundRatio:1))))}return G&&!F&&M.uniforms.add(l,u),M.uniforms.add(d,f,p,new x(`miterLimit`,e=>e.join===`miter`?e.miterLimit:0)),M.constants.add(`LARGE_HALF_FLOAT`,`float`,65500),M.constants.add(`EPS`,`float`,.001),M.constants.add(`NUM_JOIN_SUBDIVISIONS`,`float`,O.numJoinSubdivisions),A.add(`textureElementIndex`,`uint`),A.add(`lineParameters`,`vec2`),j.add(`vColor`,`vec4`),j.add(`vpos`,`vec3`,{invariant:!0}),j.add(`vLineDistance`,`float`),j.add(`vLineWidth`,`float`),j.add(`vIsInsideJoin`,`int`),j.add(`vStretchFactor`,`float`),j.add(`vJoinCenterLineSDFs`,`vec2`),j.add(`vSubdivisionFactor`,`float`),z&&j.add(`vLineSizeInv`,`float`),Y&&j.add(`vLineDistanceNorm`,`float`),q&&(j.add(`vSegmentSDF`,`float`),j.add(`vReverseSegmentSDF`,`float`)),M.code.add(S`vec3 perpendicular(vec3 v) {
12
+ }`)):(j.code.add(x`void forwardObjectAndLayerIdColor() {}`),M.code.add(x`void outputObjectAndLayerIdColor() {}`));let $=N&&!P;if($&&O.include(a,D),g(j,D),P&&(W||R)){let e=W?`groundMetersToScreenRatio`:`planarDistanceToScreenRatio`;j.uniforms.add(new y(e,e=>1/(e.screenToPlanarDistanceRatio*(W?e.planarDistanceToGroundRatio:1))))}return W&&!P&&j.uniforms.add(l,u),j.uniforms.add(d,f,p,new b(`miterLimit`,e=>e.join===`miter`?e.miterLimit:0)),j.constants.add(`LARGE_HALF_FLOAT`,`float`,65500),j.constants.add(`EPS`,`float`,.001),j.constants.add(`NUM_JOIN_SUBDIVISIONS`,`float`,D.numJoinSubdivisions),k.add(`textureElementIndex`,`uint`),k.add(`lineParameters`,`vec2`),A.add(`vColor`,`vec4`),A.add(`vpos`,`vec3`,{invariant:!0}),A.add(`vLineDistance`,`float`),A.add(`vLineWidth`,`float`),K?A.add(`vIsInsideJoin`,`int`,{flat:!0}):A.add(`vIsInsideJoin`,`float`),A.add(`vStretchFactor`,`float`),A.add(`vJoinCenterLineSDFs`,`vec2`),A.add(`vSubdivisionFactor`,`float`),R&&A.add(`vLineSizeInv`,`float`),Y&&A.add(`vLineDistanceNorm`,`float`),q&&(A.add(`vSegmentSDF`,`float`),A.add(`vReverseSegmentSDF`,`float`)),j.code.add(x`vec3 perpendicular(vec3 v) {
13
13
  return vec3(v.y, -v.x, 0.0);
14
14
  }
15
15
  float nearPlaneInterpolationFactor(float nearPlaneDistance, vec4 start, vec4 end) {
@@ -20,17 +20,17 @@ float s = sin(a);
20
20
  float c = cos(a);
21
21
  mat2 m = mat2(c, -s, s, c);
22
22
  return vec3(m * v.xy, v.z);
23
- }`),M.code.add(S`vec4 projectAndScale(vec4 pos) {
23
+ }`),j.code.add(x`vec4 projectAndScale(vec4 pos) {
24
24
  vec4 posNdc = proj * pos;
25
25
  posNdc.xy *= viewport.zw / posNdc.w;
26
26
  posNdc.z /= posNdc.w;
27
27
  return posNdc;
28
- }`),M.code.add(S`
28
+ }`),j.code.add(x`
29
29
  void clip(
30
30
  inout vec4 pos,
31
31
  inout vec4 prev,
32
32
  inout vec4 next,
33
- ${C(Z,S`inout float u0, inout float prevU0, inout float nextU0,`)}
33
+ ${S(Z,x`inout float u0, inout float prevU0, inout float nextU0,`)}
34
34
  bool isStartVertex
35
35
  ) {
36
36
  float adjustedNearPlaneDistance = nearFar[0] * 0.99;
@@ -41,7 +41,7 @@ return posNdc;
41
41
  if (prev.z < -nearFar[0]) {
42
42
  // Previous position in front of near plane
43
43
  float clipFactor = nearPlaneInterpolationFactor(adjustedNearPlaneDistance, prev, pos);
44
- ${C(Z,S`u0 = mix(prevU0, u0, clipFactor); nextU0 = u0;`)}
44
+ ${S(Z,x`u0 = mix(prevU0, u0, clipFactor); nextU0 = u0;`)}
45
45
  pos = mix(prev, pos, clipFactor);
46
46
  next = pos;
47
47
  } else {
@@ -51,7 +51,7 @@ return posNdc;
51
51
  if (next.z < -nearFar[0]) {
52
52
  // Next position in front of near plane
53
53
  float clipFactor = nearPlaneInterpolationFactor(adjustedNearPlaneDistance, pos, next);
54
- ${C(Z,S`u0 = mix(u0, nextU0, clipFactor); prevU0 = u0;`)}
54
+ ${S(Z,x`u0 = mix(u0, nextU0, clipFactor); prevU0 = u0;`)}
55
55
  pos = mix(pos, next, clipFactor);
56
56
  prev = pos;
57
57
  } else {
@@ -63,25 +63,25 @@ return posNdc;
63
63
  if (prev.z > -nearFar[0]) {
64
64
  // Previous position behind near plane
65
65
  float clipFactor = nearPlaneInterpolationFactor(adjustedNearPlaneDistance, pos, prev);
66
- ${C(Z,S`prevU0 = mix(u0, prevU0, clipFactor);`)}
66
+ ${S(Z,x`prevU0 = mix(u0, prevU0, clipFactor);`)}
67
67
  prev = mix(pos, prev, clipFactor);
68
68
  }
69
69
 
70
70
  if (next.z > -nearFar[0]) {
71
71
  // Next position behind near plane
72
72
  float clipFactor = nearPlaneInterpolationFactor(adjustedNearPlaneDistance, next, pos);
73
- ${C(Z,S`nextU0 = mix(nextU0, u0, clipFactor);`)}
73
+ ${S(Z,x`nextU0 = mix(nextU0, u0, clipFactor);`)}
74
74
  next = mix(next, pos, clipFactor);
75
75
  }
76
76
  }
77
77
  }
78
- `),v(M),M.constants.add(`aaWidth`,`float`,1),N.constants.add(`aaWidth`,`float`,1),M.main.add(S`
78
+ `),_(j),j.constants.add(`aaWidth`,`float`,1),M.constants.add(`aaWidth`,`float`,1),j.main.add(x`
79
79
  vec3 position = ${Q.getTextureAttribute(`position`)};
80
80
  float u0 = ${Q.getTextureAttribute(`u0`)};
81
- ${C(G,S`
81
+ ${S(W,x`
82
82
  float prevU0 = ${Q.getTextureAttribute(`u0`,-1)};
83
83
  float nextU0 = ${Q.getTextureAttribute(`u0`,1)};
84
- ${C(!F,S`
84
+ ${S(!P,x`
85
85
  u0 *= metersPerRenderUnit;
86
86
  prevU0 *= metersPerRenderUnit;
87
87
  nextU0 *= metersPerRenderUnit;
@@ -90,6 +90,10 @@ return posNdc;
90
90
 
91
91
  // unpack values from vertex type
92
92
  float vertexType = abs(lineParameters.y);
93
+ ${S(!K,x`
94
+ bool isInsideJoin = vertexType > 8.0;
95
+ vertexType -= isInsideJoin ? 8.0 : 0.0;
96
+ `)}
93
97
  float lineSide = sign(lineParameters.y);
94
98
  bool isStartVertex = vertexType == 2.0 || vertexType == 4.0;
95
99
  vec3 prevPosition = ${Q.getTextureAttribute(`position`,-1)};
@@ -106,11 +110,11 @@ return posNdc;
106
110
  vec4 next = view * vec4(nextPosition, 1.0);
107
111
 
108
112
  bool isJoin = vertexType < 3.0;
109
- `),$&&M.main.add(S`vec4 other = isStartVertex ? next : prev;
113
+ `),$&&j.main.add(x`vec4 other = isStartVertex ? next : prev;
110
114
  bool markersHidden = areWorldMarkersHidden(pos.xyz, other.xyz);
111
115
  if (!isJoin && !markersHidden) {
112
116
  pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
113
- }`),k.include(h),M.code.add(S`
117
+ }`),O.include(m),j.code.add(x`
114
118
  vec2 computeJoinAndCapDisplacement(
115
119
  bool isJoin,
116
120
  bool isStartVertex,
@@ -156,9 +160,11 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
156
160
  }
157
161
 
158
162
  // Compute stretch compensation for feathering.
159
- if (subdivisionFactor > 0.0) {
160
- vIsInsideJoin = 1;
161
- }
163
+ ${S(K,x`
164
+ if (subdivisionFactor > 0.0) {
165
+ vIsInsideJoin = 1;
166
+ }
167
+ `)}
162
168
  vSubdivisionFactor = isOutside ? subdivisionFactor : 0.5;
163
169
 
164
170
  if (miterDisplacementLen > miterLimit * lineWidth) {
@@ -188,14 +194,14 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
188
194
  }
189
195
 
190
196
  if (isOutside && displacementLen > miterLimit * lineWidth) {
191
- ${C(O.roundJoins,S`
197
+ ${S(D.roundJoins,x`
192
198
  vec3 startDir = perpendicular(leftLen < EPS ? right : left);
193
199
  vec3 endDir = perpendicular(rightLen < EPS ? left : right);
194
- float factor = ${z?S`min(1.0, subdivisionFactor * ((NUM_JOIN_SUBDIVISIONS + 1.0) / NUM_JOIN_SUBDIVISIONS))`:S`subdivisionFactor`};
200
+ float factor = ${R?x`min(1.0, subdivisionFactor * ((NUM_JOIN_SUBDIVISIONS + 1.0) / NUM_JOIN_SUBDIVISIONS))`:x`subdivisionFactor`};
195
201
 
196
202
  float rotationAngle = acos(clamp(dot(startDir.xy, endDir.xy), -1.0, 1.0));
197
203
  joinDisplacementDir = rotateZ(startDir, -lineSide * factor * rotationAngle);
198
- `,S`
204
+ `,x`
199
205
  /**
200
206
  * Convert to bevel join if miterLimit is exceeded.
201
207
  * Here vertices with a subdivisionFactor > 0 are either START vertices or
@@ -207,19 +213,19 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
207
213
  vec3 startDir = perpendicular(leftLen < EPS ? right : left);
208
214
  vec3 endDir = perpendicular(rightLen < EPS ? left : right);
209
215
 
210
- ${C(z,S`joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? endDir : startDir;`,S`joinDisplacementDir = mix(startDir, endDir, subdivisionFactor);`)}
216
+ ${S(R,x`joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? endDir : startDir;`,x`joinDisplacementDir = mix(startDir, endDir, subdivisionFactor);`)}
211
217
  `)}
212
218
  displacementLen = lineWidth;
213
219
  }
214
220
  } else {
215
221
  joinDisplacementDir = perpendicular(isStartVertex ? right : left);
216
- ${R===0?``:S`capDisplacementDir = vec3((isStartVertex ? -right : left).xy, 0.0);`}
222
+ ${L===0?``:x`capDisplacementDir = vec3((isStartVertex ? -right : left).xy, 0.0);`}
217
223
  }
218
224
 
219
225
  return (joinDisplacementDir.xy * lineSide + capDisplacementDir.xy) * displacementLen;
220
226
  }
221
- `),M.main.add(S`
222
- clip(pos, prev, next, ${C(Z,S`u0, prevU0, nextU0,`)} isStartVertex);
227
+ `),j.main.add(x`
228
+ clip(pos, prev, next, ${S(Z,x`u0, prevU0, nextU0,`)} isStartVertex);
223
229
 
224
230
  vec3 clippedPos = pos.xyz;
225
231
  vec3 clippedCenter = mix(pos.xyz, isStartVertex ? next.xyz : prev.xyz, 0.5);
@@ -231,29 +237,29 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
231
237
  vec3 left = (pos.xyz - prev.xyz);
232
238
  vec3 right = (next.xyz - pos.xyz);
233
239
 
234
- float lineSize = getSize(${C(W,`clippedPos`)});
235
- ${C(z&&W,`float patternLineSize = getSize(clippedCenter);`)}
236
- ${C(z&&!W,`float patternLineSize = lineSize;`)}
240
+ float lineSize = getSize(${S(U,`clippedPos`)});
241
+ ${S(R&&U,`float patternLineSize = getSize(clippedCenter);`)}
242
+ ${S(R&&!U,`float patternLineSize = lineSize;`)}
237
243
 
238
- ${C(G,S`
239
- ${C(F,S`float lineSizeScreen = lineSize * groundMetersToScreenRatio;`,S`
244
+ ${S(W,x`
245
+ ${S(P,x`float lineSizeScreen = lineSize * groundMetersToScreenRatio;`,x`
240
246
  float metersPerScreenPixel = max(-clippedPos.z, nearFar[0]) * metersPerRenderUnit * screenPixelSizePerDistance;
241
247
  float lineSizeScreen = lineSize / metersPerScreenPixel;
242
248
  `)}
243
249
  float lineWidth = lineSizeScreen * pixelRatio + aaWidth;
244
- `,S`
250
+ `,x`
245
251
  float lineWidth = lineSize * pixelRatio + aaWidth;
246
252
  `)}
247
253
 
248
254
  vLineWidth = noPerspectiveWrite(lineWidth, pos.w);
249
- ${z?S`vLineSizeInv = noPerspectiveWrite(1.0 / ${G?`lineSize`:`max(lineSize, 1.0)`}, pos.w);`:``}
250
- `),X&&M.main.add(S`
255
+ ${R?x`vLineSizeInv = noPerspectiveWrite(1.0 / ${W?`lineSize`:`max(lineSize, 1.0)`}, pos.w);`:``}
256
+ `),X&&j.main.add(x`
251
257
  float isEndVertex = float(!isStartVertex);
252
258
  vec3 segmentOrigin = mix(pos.xyz, prev.xyz, isEndVertex);
253
259
  vec3 segment = mix(right, left, isEndVertex);
254
- ${q?S`vec3 segmentEnd = mix(next.xyz, pos.xyz, isEndVertex);`:``}
255
- `),M.main.add(S`
256
- vIsInsideJoin = 0;
260
+ ${q?x`vec3 segmentEnd = mix(next.xyz, pos.xyz, isEndVertex);`:``}
261
+ `),j.main.add(x`
262
+ vIsInsideJoin = ${K?x`0`:x`float(isInsideJoin)`};
257
263
  vStretchFactor = 1.0;
258
264
  vSubdivisionFactor = 0.0;
259
265
  vJoinCenterLineSDFs = vec2(LARGE_HALF_FLOAT);
@@ -282,10 +288,10 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
282
288
  float lineDistNorm = noPerspectiveWrite(lineSide, pos.w);
283
289
 
284
290
  vLineDistance = lineWidth * lineDistNorm;
285
- ${Y?S`vLineDistanceNorm = lineDistNorm;`:``}
291
+ ${Y?x`vLineDistanceNorm = lineDistNorm;`:``}
286
292
 
287
293
  pos.xyz += displacement;
288
- `),M.main.add(S`if (isJoin) {
294
+ `),j.main.add(x`if (isJoin) {
289
295
  vec2 joinCenterToVertex = displacementXY;
290
296
  vec2 leftCenterlineDir = left.xy;
291
297
  vec2 rightCenterlineDir = right.xy;
@@ -300,36 +306,36 @@ dot(vec2(leftCenterlineDir.y, -leftCenterlineDir.x), joinCenterToVertex)
300
306
  ),
301
307
  pos.w
302
308
  );
303
- }`),q&&M.main.add(S`vec2 segmentDir = normalize(segment.xy);
309
+ }`),q&&j.main.add(x`vec2 segmentDir = normalize(segment.xy);
304
310
  vSegmentSDF = noPerspectiveWrite((isJoin && isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentOrigin.xy, segmentDir)), pos.w);
305
- vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),z&&(F?M.main.add(S`float stippleDistanceToScreenRatio = ${G?`groundMetersToScreenRatio`:`planarDistanceToScreenRatio`};`):M.main.add(S`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
306
- float stippleDistanceToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),M.main.add(S`
311
+ vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),R&&(P?j.main.add(x`float stippleDistanceToScreenRatio = ${W?`groundMetersToScreenRatio`:`planarDistanceToScreenRatio`};`):j.main.add(x`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
312
+ float stippleDistanceToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),j.main.add(x`
307
313
  float segmentLengthScreenDouble = length(segment.xy);
308
314
  float segmentLengthScreen = segmentLengthScreenDouble * 0.5;
309
315
  float discreteStippleDistanceToScreenRatio = discretizeStippleDistanceToScreenRatio(stippleDistanceToScreenRatio);
310
- float segmentLengthRender = ${C(G,S`abs(mix(nextU0 - u0, u0 - prevU0, isEndVertex))`,S`length(mix(nextPosition - position, position - prevPosition, isEndVertex))`)};
316
+ float segmentLengthRender = ${S(W,x`abs(mix(nextU0 - u0, u0 - prevU0, isEndVertex))`,x`length(mix(nextPosition - position, position - prevPosition, isEndVertex))`)};
311
317
 
312
- ${C(!F||G,S`
313
- float segmentStartRender = ${C(G,S`mix(u0, prevU0, isEndVertex)`,S`mix(u0, u0 - segmentLengthRender, isEndVertex)`)};
318
+ ${S(!P||W,x`
319
+ float segmentStartRender = ${S(W,x`mix(u0, prevU0, isEndVertex)`,x`mix(u0, u0 - segmentLengthRender, isEndVertex)`)};
314
320
  `)}
315
321
 
316
322
  vStipplePatternStretch = stippleDistanceToScreenRatio / discreteStippleDistanceToScreenRatio;
317
- `),F?M.main.add(S`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteStippleDistanceToScreenRatio / stippleDistanceToScreenRatio;
318
- float startPseudoScreen = u0 * discreteStippleDistanceToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):M.main.add(S`float startPseudoScreen = segmentStartRender * discreteStippleDistanceToScreenRatio;
319
- float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceToScreenRatio;`),M.uniforms.add(new x(`stipplePatternPixelSize`,e=>i(e))),M.main.add(S`
323
+ `),P?j.main.add(x`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteStippleDistanceToScreenRatio / stippleDistanceToScreenRatio;
324
+ float startPseudoScreen = u0 * discreteStippleDistanceToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):j.main.add(x`float startPseudoScreen = segmentStartRender * discreteStippleDistanceToScreenRatio;
325
+ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceToScreenRatio;`),j.uniforms.add(new b(`stipplePatternPixelSize`,e=>i(e))),j.main.add(x`
320
326
  float patternLength = patternLineSize * stipplePatternPixelSize;
321
327
  vec2 stippleDistanceLimits;
322
328
 
323
- ${C(G,S`
329
+ ${S(W,x`
324
330
  stippleDistanceLimits = vec2(segmentStartRender, segmentStartRender + segmentLengthRender);
325
331
  vStipplePatternStretch = 1.0;
326
332
 
327
- ${C(K,S`
333
+ ${S(G,x`
328
334
  // The v-coordinate used in case of an image pattern.
329
335
  bool isLeft = lineSide < 0.0;
330
336
  vStippleV = isLeft ? 0.0 : 1.0;
331
337
  `)}
332
- `,S`
338
+ `,x`
333
339
  // Compute the coordinates at both start and end of the line segment, because we need both to clamp to in the
334
340
  // fragment shader
335
341
  stippleDistanceLimits = computeStippleDistanceLimits(startPseudoScreen, segmentLengthPseudoScreen, segmentLengthScreen, patternLength);
@@ -349,7 +355,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
349
355
  vStippleDistance += (stippleDisplacementFactor - isEndVertex) * (stippleDistanceLimits.y - stippleDistanceLimits.x);
350
356
  }
351
357
 
352
- ${C(Z,S`
358
+ ${S(Z,x`
353
359
  float segmentStartInverseW = 1.0 / mix(pos.w, prev.w, isEndVertex);
354
360
  float segmentEndInverseW = 1.0 / mix(next.w, pos.w, isEndVertex);
355
361
  vStipplePerspective = noPerspectiveWrite(
@@ -365,7 +371,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
365
371
  // Disable stipple distance limits on caps
366
372
  vStippleLimitsAndCaps.zw = isJoin ? vec2(0.0) :
367
373
  isStartVertex ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
368
- `)),M.main.add(S`
374
+ `)),j.main.add(x`
369
375
  // Convert back into NDC
370
376
  pos.xy = (pos.xy / viewport.zw) * pos.w;
371
377
  pos.z = pos.z * pos.w;
@@ -373,14 +379,14 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
373
379
  vColor = getColor();
374
380
  vColor.a = noPerspectiveWrite(vColor.a, pos.w);
375
381
 
376
- ${V&&!F?`pos.z -= EPS * pos.w;`:``}
382
+ ${B&&!P?`pos.z -= EPS * pos.w;`:``}
377
383
 
378
384
  // transform final position to camera space for slicing
379
385
  vpos = (inverseProjectionMatrix * pos).xyz;
380
386
  gl_Position = pos;
381
387
  forwardObjectAndLayerIdColor();
382
- }`),k.include(E,O),k.include(g),N.include(m),N.include(w),N.include(e,O),N.main.add(`discardBySlice(vpos);`),N.code.add(S`float lineFeatheringFactor(float lineWidth, float lineDistance) {
383
- float stretchFactor = vIsInsideJoin == 1 ? noPerspectiveRead(vStretchFactor) : 1.0;
388
+ }`),O.include(T,D),O.include(h),M.include(ee),M.include(C),M.include(e,D),M.main.add(`discardBySlice(vpos);`),M.code.add(x`float lineFeatheringFactor(float lineWidth, float lineDistance) {
389
+ float stretchFactor = float(vIsInsideJoin) > 0.5 ? noPerspectiveRead(vStretchFactor) : 1.0;
384
390
  float featherWidth = 2.0;
385
391
  float featherStartDistance = lineWidth - featherWidth / stretchFactor;
386
392
  float straightFeatherStartDistance = lineWidth - featherWidth;
@@ -389,15 +395,15 @@ float feather = (value - featherStartDistance) / (lineWidth - featherStartDistan
389
395
  vec2 joinCenterSDFs = noPerspectiveRead(vJoinCenterLineSDFs);
390
396
  float joinCenterDistance = abs(vSubdivisionFactor > 0.5 ? joinCenterSDFs.x : joinCenterSDFs.y);
391
397
  float straightFeather = (joinCenterDistance - straightFeatherStartDistance) / (lineWidth - straightFeatherStartDistance);
392
- feather = vIsInsideJoin == 1 ? max(feather, straightFeather) : feather;
398
+ feather = float(vIsInsideJoin) > 0.5 ? max(feather, straightFeather) : feather;
393
399
  float coverage = min(lineWidth - aaWidth, 1.0);
394
400
  return clamp(1.0 - feather, 0.0, coverage);
395
- }`),N.main.add(S`
401
+ }`),M.main.add(x`
396
402
  float lineWidth = noPerspectiveRead(vLineWidth);
397
403
  float lineDistance = noPerspectiveRead(vLineDistance);
398
- ${C(Y,S`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
399
- `),J&&N.main.add(S`float nominalLineWidth = lineWidth - aaWidth;`),V?N.main.add(S`vec4 albedo = vec4(1.0, 0.0, 1.0, 1.0);
400
- vec4 finalColor = albedo;`):(q&&N.main.add(S`
404
+ ${S(Y,x`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
405
+ `),J&&M.main.add(x`float nominalLineWidth = lineWidth - aaWidth;`),B?M.main.add(x`vec4 albedo = vec4(1.0, 0.0, 1.0, 1.0);
406
+ vec4 finalColor = albedo;`):(q&&M.main.add(x`
401
407
  float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
402
408
  vec2 fragmentPosition = vec2(min(sdf, 0.0), lineDistance);
403
409
 
@@ -408,7 +414,7 @@ vec4 finalColor = albedo;`):(q&&N.main.add(S`
408
414
  if (capCoverage < alphaCutoff) {
409
415
  discard;
410
416
  }
411
- `),J?N.main.add(S`vec2 stipplePosition = vec2(
417
+ `),J?M.main.add(x`vec2 stipplePosition = vec2(
412
418
  min(getStippleCapDistance(), 0.0) * nominalLineWidth,
413
419
  lineDistance
414
420
  );
@@ -416,8 +422,8 @@ float stippleRadius = length(stipplePosition);
416
422
  float stippleCapSDF = (stippleRadius - nominalLineWidth) * 0.5;
417
423
  float stippleCoverage = clamp(0.5 - stippleCapSDF, 0.0, 1.0);
418
424
  float lineCoverage = min(lineFeatheringFactor(lineWidth, lineDistance), capCoverage);
419
- float stippleAlpha = lineCoverage > 0.0 ? min(stippleCoverage, lineCoverage) / lineCoverage : 0.0;`):N.main.add(S`float stippleAlpha = getStippleAlpha(lineWidth);`),L!==11&&N.main.add(S`discardByStippleAlpha(stippleAlpha, alphaCutoff);`),N.uniforms.add(new y(`intrinsicColor`,e=>e.color)).main.add(S`vec4 color = intrinsicColor * vColor;
420
- color.a = noPerspectiveRead(color.a);`),H&&N.uniforms.add(new y(`innerColor`,e=>e.innerColor??e.color),new x(`innerWidth`,(e,t)=>e.innerWidth*t.camera.pixelRatio)).main.add(S`float distToInner = abs(lineDistance) - innerWidth;
425
+ float stippleAlpha = lineCoverage > 0.0 ? min(stippleCoverage, lineCoverage) / lineCoverage : 0.0;`):M.main.add(x`float stippleAlpha = getStippleAlpha(lineWidth);`),I!==11&&M.main.add(x`discardByStippleAlpha(stippleAlpha, alphaCutoff);`),M.uniforms.add(new v(`intrinsicColor`,e=>e.color)).main.add(x`vec4 color = intrinsicColor * vColor;
426
+ color.a = noPerspectiveRead(color.a);`),V&&M.uniforms.add(new v(`innerColor`,e=>e.innerColor??e.color),new b(`innerWidth`,(e,t)=>e.innerWidth*t.camera.pixelRatio)).main.add(x`float distToInner = abs(lineDistance) - innerWidth;
421
427
  float innerAA = clamp(0.5 - distToInner, 0.0, 1.0);
422
428
  float innerAlpha = innerColor.a + color.a * (1.0 - innerColor.a);
423
- color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),N.main.add(`vec4 albedo = blendStipple(color, stippleAlpha);`),B&&(N.uniforms.add(new x(`falloff`,e=>e.falloff)),N.main.add(S`albedo.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),N.main.add(S`albedo.a *= ${J?`lineCoverage`:`lineFeatheringFactor(lineWidth, lineDistance)`};`),U&&(M.main.add(`vec4 animatedAlphaTimeStamps = ${Q.getTextureAttribute(`timeStamps`)};`),k.include(T,O),N.main.add(`albedo.a *= animatedAlpha();`)),I?(j.add(`vnormal`,`vec3`),M.include(o,O),M.main.add(`vnormal = getLocalUp(vpos, localOrigin);`),k.include(n,O),N.main.add(`vec4 finalColor = evaluateSceneLightingFragment(vpos, vnormal, albedo);`)):N.main.add(`vec4 finalColor = albedo;`)),N.main.add(S`outputColorHighlightOLID(applySlice(finalColor, vpos), albedo.rgb);`),k}const A=Object.freeze(Object.defineProperty({__proto__:null,build:k,numRoundJoinSubdivisions:1},Symbol.toStringTag,{value:`Module`}));export{A as R,k as b,O as n};
429
+ color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),M.main.add(`vec4 albedo = blendStipple(color, stippleAlpha);`),z&&(M.uniforms.add(new b(`falloff`,e=>e.falloff)),M.main.add(x`albedo.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),M.main.add(x`albedo.a *= ${J?`lineCoverage`:`lineFeatheringFactor(lineWidth, lineDistance)`};`),H&&(j.main.add(`vec4 animatedAlphaTimeStamps = ${Q.getTextureAttribute(`timeStamps`)};`),O.include(w,D),M.main.add(`albedo.a *= animatedAlpha();`)),F?(A.add(`vnormal`,`vec3`),j.include(o,D),j.main.add(`vnormal = getLocalUp(vpos, localOrigin);`),O.include(n,D),M.main.add(`vec4 finalColor = evaluateSceneLightingFragment(vpos, vnormal, albedo);`)):M.main.add(`vec4 finalColor = albedo;`)),M.main.add(x`outputColorHighlightOLID(applySlice(finalColor, vpos), albedo.rgb);`),O}const k=Object.freeze(Object.defineProperty({__proto__:null,build:O,numRoundJoinSubdivisions:1},Symbol.toStringTag,{value:`Module`}));export{k as R,O as b,D as n};
package/config.d.ts CHANGED
@@ -235,27 +235,7 @@ export interface Config {
235
235
  /**
236
236
  * An object with properties that control various aspects of [the workers framework](https://developers.arcgis.com/javascript/latest/references/core/core/workers/).
237
237
  *
238
- * @example
239
- * // Load an ESM worker module and invoke its "getMaxNumber" function.
240
- *
241
- * const connection = await workers.open(new URL("./workersFolder/Calculator.js", import.meta.url).href, {
242
- * isESM: true
243
- * });
244
- *
245
- * try {
246
- * // Invoke the worker function and receive its result on the main thread.
247
- * const result = await connection.invoke("getMaxNumber", [0, 1, 2, 3, 4]);
248
- * console.log(result);
249
- * } finally {
250
- * connection.close();
251
- * }
252
- *
253
- * //*********************************************************
254
- * // module: workersFolder/Calculator.js
255
- * //*********************************************************
256
- * export function getMaxNumber(numbers) {
257
- * return Math.max(...numbers);
258
- * }
238
+ * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
259
239
  */
260
240
  workers: WorkersConfig;
261
241
  }
@@ -284,11 +264,12 @@ export interface ApiKeysScopeConfig {
284
264
  urls: RegExp | string | Array<RegExp | string>;
285
265
  }
286
266
 
267
+ /** @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead. */
287
268
  export interface WorkersConfig {
288
269
  /**
289
270
  * The absolute URL to the AMD or SystemJS loader used in the worker. The AMD CDN build has a default value for when this property isn't set. This is required when using custom workers.
290
271
  *
291
- * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [workers.open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead. See this [ESM sample](https://github.com/Esri/jsapi-resources/tree/main/templates/geometry-operator-worker).
272
+ * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead. See this [ESM sample](https://github.com/Esri/jsapi-resources/tree/main/templates/geometry-operator-worker).
292
273
  */
293
274
  loaderUrl?: string;
294
275
  /**
@@ -297,13 +278,13 @@ export interface WorkersConfig {
297
278
  *
298
279
  * `RemoteClient` is the SDK’s internal worker-side runtime. It loads and instantiates the worker module, then manages communication with the main thread through the worker connection.
299
280
  *
300
- * @deprecated since version 5.2. Custom worker runtime paths are deprecated. Use the default worker runtime with ESM worker modules opened via [workers.open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open).
281
+ * @deprecated since version 5.2. Custom worker runtime paths are deprecated. Use the default worker runtime with ESM worker modules opened via [open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open).
301
282
  */
302
283
  workerPath?: string;
303
284
  /**
304
285
  * The AMD configuration object that is set in each worker.
305
286
  *
306
- * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [workers.open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
287
+ * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
307
288
  */
308
289
  loaderConfig?: WorkersLoaderConfig;
309
290
  }
@@ -311,37 +292,37 @@ export interface WorkersConfig {
311
292
  /**
312
293
  * Configuration for the legacy AMD worker loader.
313
294
  *
314
- * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [workers.open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
295
+ * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
315
296
  */
316
297
  export interface WorkersLoaderConfig {
317
298
  /**
318
299
  * The AMD loader loads all code relative to the baseUrl.
319
300
  *
320
- * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [workers.open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
301
+ * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
321
302
  */
322
303
  baseUrl?: string;
323
304
  /**
324
305
  * Determines if the specified feature capabilities are supported.
325
306
  *
326
- * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [workers.open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
307
+ * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
327
308
  */
328
309
  has?: Record<string, any>;
329
310
  /**
330
311
  * Map paths in module identifiers to different paths.
331
312
  *
332
- * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [workers.open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
313
+ * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
333
314
  */
334
315
  map?: Record<string, Record<string, string>>;
335
316
  /**
336
317
  * An array of objects which provide the package name and its location.
337
318
  *
338
- * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [workers.open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
319
+ * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
339
320
  */
340
321
  packages?: object[];
341
322
  /**
342
323
  * Map of module id fragments to file paths.
343
324
  *
344
- * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [workers.open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
325
+ * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
345
326
  */
346
327
  paths?: Record<string, string>;
347
328
  }
package/config.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import"./core/has.js";import{deepMerge as e}from"./core/object.js";const t={apiKey:void 0,apiKeys:{scopes:[]},applicationName:``,applicationUrl:globalThis.location?.href,assetsPath:``,fontsUrl:`https://static.arcgis.com/fonts`,geometryServiceUrl:`https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer`,geoRSSServiceUrl:`https://utility.arcgis.com/sharing/rss`,kmlServiceUrl:`https://utility.arcgis.com/sharing/kml`,userPrivilegesApplied:!0,portalUrl:`https://www.arcgis.com`,respectPrefersReducedMotion:!0,routeServiceUrl:`https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World`,workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{crossOriginNoCorsDomains:null,httpsDomains:[`arcgis.com`,`arcgisonline.com`,`esrikr.com`,`premiumservices.blackbridge.com`,`esripremium.accuweather.com`,`gbm.digitalglobe.com`,`firstlook.digitalglobe.com`,`msi.digitalglobe.com`],interceptors:[],internalInterceptors:[],maxUrlLength:2e3,priority:`high`,proxyRules:[],proxyUrl:null,timeout:62e3,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};globalThis.esriConfig&&(e(t,globalThis.esriConfig,!0),delete t.has),!t.assetsPath&&(t.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@5.2.0-next.161/assets`,t.defaultAssetsPath=t.assetsPath);export{t as default};
2
+ import"./core/has.js";import{deepMerge as e}from"./core/object.js";const t={apiKey:void 0,apiKeys:{scopes:[]},applicationName:``,applicationUrl:globalThis.location?.href,assetsPath:``,fontsUrl:`https://static.arcgis.com/fonts`,geometryServiceUrl:`https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer`,geoRSSServiceUrl:`https://utility.arcgis.com/sharing/rss`,kmlServiceUrl:`https://utility.arcgis.com/sharing/kml`,userPrivilegesApplied:!0,portalUrl:`https://www.arcgis.com`,respectPrefersReducedMotion:!0,routeServiceUrl:`https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World`,workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{crossOriginNoCorsDomains:null,httpsDomains:[`arcgis.com`,`arcgisonline.com`,`esrikr.com`,`premiumservices.blackbridge.com`,`esripremium.accuweather.com`,`gbm.digitalglobe.com`,`firstlook.digitalglobe.com`,`msi.digitalglobe.com`],interceptors:[],internalInterceptors:[],maxUrlLength:2e3,priority:`high`,proxyRules:[],proxyUrl:null,timeout:62e3,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};globalThis.esriConfig&&(e(t,globalThis.esriConfig,!0),delete t.has),!t.assetsPath&&(t.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@5.2.0-next.163/assets`,t.defaultAssetsPath=t.assetsPath);export{t as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{getAssetUrl as e}from"../../assets.js";import t from"../../config.js";import{getLocale as n}from"../../intl.js";import{fullVersion as r}from"../../kernel.js";import has from"../has.js";import i from"../Logger.js";import{makeAbsolute as a}from"../urlUtils.js";import{loaderConfig as o}from"./loaderConfig.js";import{receiveMessage as s,MessageType as c}from"./utils.js";import l from"./WorkerFallback.js";const u=()=>i.getLogger(`esri.core.workers.workerFactory`),{HANDSHAKE:d}=c;let f,p;const m=`Failed to create Worker. Fallback to execute module in main thread`;async function h(){if(!has(`esri-workers`))return g(new l);if(!f&&!p)try{let e='"use strict";let globalId=0;const outgoing=new Map,configuration={CONFIGURATION};self.esriConfig=configuration.esriConfig;const workerPath=self.esriConfig.workers.workerPath,HANDSHAKE=0,OPEN=1,OPENED=2,RESPONSE=3,INVOKE=4,ABORT=5;function createAbortError(){const e=new Error("Aborted");return e.name="AbortError",e}function receiveMessage(e){return e&&e.data?"string"==typeof e.data?JSON.parse(e.data):e.data:null}self.invokeStaticMessage=(e,o,r)=>{const t=r&&r.signal,n=globalId++;let s=null;return new Promise((r,i)=>{if(t){if(t.aborted)return i(createAbortError());s=()=>{outgoing.get(n)&&(outgoing.delete(n),self.postMessage({type:5,jobId:n}),i(createAbortError()))},t.addEventListener("abort",s)}outgoing.set(n,{resolve:r,reject:i}),self.postMessage({type:4,jobId:n,methodName:e,abortable:null!=t,data:o})}).finally(()=>{t&&t.removeEventListener("abort",s)})};let workerVersionChecked=!1;function checkWorkerVersion(e){if(!workerVersionChecked&&e.kernelInfo){workerVersionChecked=!0;const{fullVersion:o}=configuration.kernelInfo,{fullVersion:r,version:t}=e.kernelInfo;esriConfig.assetsPath!==esriConfig.defaultAssetsPath&&o!==r&&console.warn(`Version mismatch detected between ArcGIS Maps SDK for JavaScript modules and assets. For more information visit https://esriurl.com/using-local-assets.\\nModules version: ${o}\\nAssets version: ${r??t}\\nAssets path: ${esriConfig.assetsPath}`)}}function messageHandler(e){const o=receiveMessage(e);if(!o)return;const r=o.jobId;switch(o.type){case 1:let t;function n(e){const o=t.connect(e);self.postMessage({type:2,jobId:r,data:o},[o])}"function"==typeof define&&define.amd?require([workerPath],e=>{t=e.default||e,checkWorkerVersion(t),t.loadWorker(o.modulePath).then(e=>e||o.isESM&&import(o.modulePath)||new Promise(e=>{require([o.modulePath],e)})).then(n)}):"System"in self&&"function"==typeof System.import?System.import(workerPath).then(e=>(t=e.default,checkWorkerVersion(t),t.loadWorker(o.modulePath))).then(e=>e||o.isESM&&import(o.modulePath)||System.import(o.modulePath)).then(n):esriConfig.workers.useDynamicImport?import(workerPath).then(e=>{t=e.default||e,checkWorkerVersion(t),t.loadWorker(o.modulePath).then(e=>e||import(o.modulePath)).then(n)}):(self.RemoteClient||importScripts(workerPath),t=self.RemoteClient.default||self.RemoteClient,checkWorkerVersion(t),t.loadWorker(o.modulePath).then(e=>e||import(o.modulePath)).then(n));break;case 3:if(outgoing.has(r)){const s=outgoing.get(r);outgoing.delete(r),o.error?s.reject(JSON.parse(o.error)):s.resolve(o.data)}}}self.dojoConfig=configuration.loaderConfig,esriConfig.workers.loaderUrl&&(self.importScripts(esriConfig.workers.loaderUrl),"function"==typeof require&&"function"==typeof require.config&&require.config(configuration.loaderConfig)),self.addEventListener("message",messageHandler),self.postMessage({type:0});'.split(`{CONFIGURATION}`).join(_());f=URL.createObjectURL(new Blob([e],{type:`text/javascript`}))}catch(e){p=e||{}}let e;if(!f)u().warn(m,p),e=new l;else try{e=new Worker(f,{name:`esri-worker-${v++}`})}catch{u().warn(m,p),e=new l}return g(e)}async function g(e){return new Promise(t=>{function n(i){let a=s(i);a&&a.type===d&&(e.removeEventListener(`message`,n),e.removeEventListener(`error`,r),t(e))}function r(t){t.preventDefault(),e.removeEventListener(`message`,n),e.removeEventListener(`error`,r),u().warn(`Failed to create Worker. Fallback to execute module in main thread`,t),e=new l,e.addEventListener(`message`,n),e.addEventListener(`error`,r)}e.addEventListener(`message`,n),e.addEventListener(`error`,r)})}function _(){let i;if(t.default!=null){let e={...t};delete e.default,i=JSON.parse(JSON.stringify(e))}else i=JSON.parse(JSON.stringify(t));i.assetsPath=a(i.assetsPath),i.defaultAssetsPath=i.defaultAssetsPath?a(i.defaultAssetsPath):void 0,i.request.interceptors=[],i.log.interceptors=[],i.locale=n(),i.has={"esri-csp-restrictions":has(`esri-csp-restrictions`),"esri-2d-debug":!1,"esri-2d-update-debug":has(`esri-2d-update-debug`),"esri-2d-annotation-dimension-debug":has(`esri-2d-annotation-dimension-debug`),"esri-2d-log-updating":!1,"esri-2d-complex-shaping":has(`esri-2d-complex-shaping`),"esri-2d-force-complex-shaping":has(`esri-2d-force-complex-shaping`),"esri-2d-stabilize-glyphs":has(`esri-2d-stabilize-glyphs`),"featurelayer-pbf":has(`featurelayer-pbf`),"featurelayer-simplify-thresholds":has(`featurelayer-simplify-thresholds`),"featurelayer-simplify-payload-size-factors":has(`featurelayer-simplify-payload-size-factors`),"featurelayer-simplify-mobile-factor":has(`featurelayer-simplify-mobile-factor`),"featurelayer-query-max-depth":has(`featurelayer-query-max-depth`),"featurelayer-query-max-page-size":has(`featurelayer-query-max-page-size`),"featurelayer-query-tile-max-features":has(`featurelayer-query-tile-max-features`),"featurelayer-query-tile-concurrency":has(`featurelayer-query-tile-concurrency`),"featurelayer-query-pausing-enabled":has(`featurelayer-query-pausing-enabled`),"featurelayer-snapshot-concurrency":has(`featurelayer-snapshot-concurrency`),"featurelayer-snapshot-enabled":has(`featurelayer-snapshot-enabled`),"featurelayer-pixel-buffering-enabled":has(`featurelayer-pixel-buffering-enabled`),"parquetlayer-full-query-feature-count":has(`parquetlayer-full-query-feature-count`),"parquetlayer-cache-enabled":has(`parquetlayer-cache-enabled`),"parquetlayer-legacy-field-overrides-enabled":has(`parquetlayer-legacy-field-overrides-enabled`),"esri-atomics":has(`esri-atomics`),"esri-shared-array-buffer":has(`esri-shared-array-buffer`),"esri-tiles-debug":has(`esri-tiles-debug`),"esri-workers-arraybuffer-transfer":has(`esri-workers-arraybuffer-transfer`),"feature-polyline-generalization-factor":has(`feature-polyline-generalization-factor`),"host-webworker":1},i.workers.loaderUrl&&(i.workers.loaderUrl=a(i.workers.loaderUrl)),i.workers.workerPath?i.workers.workerPath=a(i.workers.workerPath):i.workers.workerPath=a(e(`esri/core/workers/RemoteClient.js`)),i.workers.useDynamicImport=has(`esri-esbuild-build`);let s=t.workers.loaderConfig,c=o({baseUrl:s?.baseUrl,locale:n(),has:{"csp-restrictions":1,"dojo-test-sniff":0,"host-webworker":1,...s?.has},map:{...s?.map},paths:{...s?.paths},packages:s?.packages||[]});return JSON.stringify({esriConfig:i,loaderConfig:c,kernelInfo:{fullVersion:r}})}let v=0;export{h as createWorker};
2
+ import{getAssetUrl as e}from"../../assets.js";import t from"../../config.js";import{getLocale as n}from"../../intl.js";import{fullVersion as r}from"../../kernel.js";import{deprecatedProperty as i}from"../deprecate.js";import has from"../has.js";import a from"../Logger.js";import{notDeepEqual as o}from"../object.js";import{makeAbsolute as s}from"../urlUtils.js";import{loaderConfig as c}from"./loaderConfig.js";import{receiveMessage as l,MessageType as u}from"./utils.js";import d from"./WorkerFallback.js";const f=()=>a.getLogger(`esri.core.workers.workerFactory`),{HANDSHAKE:p}=u;let m,h;const g=`Failed to create Worker. Fallback to execute module in main thread`;async function _(){if(!has(`esri-workers`))return v(new d);if(!m&&!h)try{let e='"use strict";let globalId=0;const outgoing=new Map,configuration={CONFIGURATION};self.esriConfig=configuration.esriConfig;const workerPath=self.esriConfig.workers.workerPath,HANDSHAKE=0,OPEN=1,OPENED=2,RESPONSE=3,INVOKE=4,ABORT=5;function createAbortError(){const e=new Error("Aborted");return e.name="AbortError",e}function receiveMessage(e){return e&&e.data?"string"==typeof e.data?JSON.parse(e.data):e.data:null}self.invokeStaticMessage=(e,o,r)=>{const t=r&&r.signal,n=globalId++;let s=null;return new Promise((r,i)=>{if(t){if(t.aborted)return i(createAbortError());s=()=>{outgoing.get(n)&&(outgoing.delete(n),self.postMessage({type:5,jobId:n}),i(createAbortError()))},t.addEventListener("abort",s)}outgoing.set(n,{resolve:r,reject:i}),self.postMessage({type:4,jobId:n,methodName:e,abortable:null!=t,data:o})}).finally(()=>{t&&t.removeEventListener("abort",s)})};let workerVersionChecked=!1;function checkWorkerVersion(e){if(!workerVersionChecked&&e.kernelInfo){workerVersionChecked=!0;const{fullVersion:o}=configuration.kernelInfo,{fullVersion:r,version:t}=e.kernelInfo;esriConfig.assetsPath!==esriConfig.defaultAssetsPath&&o!==r&&console.warn(`Version mismatch detected between ArcGIS Maps SDK for JavaScript modules and assets. For more information visit https://esriurl.com/using-local-assets.\\nModules version: ${o}\\nAssets version: ${r??t}\\nAssets path: ${esriConfig.assetsPath}`)}}function messageHandler(e){const o=receiveMessage(e);if(!o)return;const r=o.jobId;switch(o.type){case 1:let t;function n(e){const o=t.connect(e);self.postMessage({type:2,jobId:r,data:o},[o])}"function"==typeof define&&define.amd?require([workerPath],e=>{t=e.default||e,checkWorkerVersion(t),t.loadWorker(o.modulePath).then(e=>e||o.isESM&&import(o.modulePath)||new Promise(e=>{require([o.modulePath],e)})).then(n)}):"System"in self&&"function"==typeof System.import?System.import(workerPath).then(e=>(t=e.default,checkWorkerVersion(t),t.loadWorker(o.modulePath))).then(e=>e||o.isESM&&import(o.modulePath)||System.import(o.modulePath)).then(n):esriConfig.workers.useDynamicImport?import(workerPath).then(e=>{t=e.default||e,checkWorkerVersion(t),t.loadWorker(o.modulePath).then(e=>e||import(o.modulePath)).then(n)}):(self.RemoteClient||importScripts(workerPath),t=self.RemoteClient.default||self.RemoteClient,checkWorkerVersion(t),t.loadWorker(o.modulePath).then(e=>e||import(o.modulePath)).then(n));break;case 3:if(outgoing.has(r)){const s=outgoing.get(r);outgoing.delete(r),o.error?s.reject(JSON.parse(o.error)):s.resolve(o.data)}}}self.dojoConfig=configuration.loaderConfig,esriConfig.workers.loaderUrl&&(self.importScripts(esriConfig.workers.loaderUrl),"function"==typeof require&&"function"==typeof require.config&&require.config(configuration.loaderConfig)),self.addEventListener("message",messageHandler),self.postMessage({type:0});'.split(`{CONFIGURATION}`).join(y());m=URL.createObjectURL(new Blob([e],{type:`text/javascript`}))}catch(e){h=e||{}}let e;if(!m)f().warn(g,h),e=new d;else try{e=new Worker(m,{name:`esri-worker-${b++}`})}catch{f().warn(g,h),e=new d}return v(e)}async function v(e){return new Promise(t=>{function n(i){let a=l(i);a&&a.type===p&&(e.removeEventListener(`message`,n),e.removeEventListener(`error`,r),t(e))}function r(t){t.preventDefault(),e.removeEventListener(`message`,n),e.removeEventListener(`error`,r),f().warn(`Failed to create Worker. Fallback to execute module in main thread`,t),e=new d,e.addEventListener(`message`,n),e.addEventListener(`error`,r)}e.addEventListener(`message`,n),e.addEventListener(`error`,r)})}function y(){o(t.workers,{loaderConfig:{has:{},paths:{},map:{},packages:[]}})&&i(a.getLogger(`esri.config`),`workers`,{see:`https://developers.arcgis.com/javascript/latest/references/core/config/#Config-workers`,version:`5.2`,warnOnce:!0});let l;if(t.default!=null){let e={...t};delete e.default,l=JSON.parse(JSON.stringify(e))}else l=JSON.parse(JSON.stringify(t));l.assetsPath=s(l.assetsPath),l.defaultAssetsPath=l.defaultAssetsPath?s(l.defaultAssetsPath):void 0,l.request.interceptors=[],l.log.interceptors=[],l.locale=n(),l.has={"esri-csp-restrictions":has(`esri-csp-restrictions`),"esri-2d-debug":!1,"esri-2d-update-debug":has(`esri-2d-update-debug`),"esri-2d-annotation-dimension-debug":has(`esri-2d-annotation-dimension-debug`),"esri-2d-log-updating":!1,"esri-2d-complex-shaping":has(`esri-2d-complex-shaping`),"esri-2d-force-complex-shaping":has(`esri-2d-force-complex-shaping`),"esri-2d-stabilize-glyphs":has(`esri-2d-stabilize-glyphs`),"featurelayer-pbf":has(`featurelayer-pbf`),"featurelayer-simplify-thresholds":has(`featurelayer-simplify-thresholds`),"featurelayer-simplify-payload-size-factors":has(`featurelayer-simplify-payload-size-factors`),"featurelayer-simplify-mobile-factor":has(`featurelayer-simplify-mobile-factor`),"featurelayer-query-max-depth":has(`featurelayer-query-max-depth`),"featurelayer-query-max-page-size":has(`featurelayer-query-max-page-size`),"featurelayer-query-tile-max-features":has(`featurelayer-query-tile-max-features`),"featurelayer-query-tile-concurrency":has(`featurelayer-query-tile-concurrency`),"featurelayer-query-pausing-enabled":has(`featurelayer-query-pausing-enabled`),"featurelayer-snapshot-concurrency":has(`featurelayer-snapshot-concurrency`),"featurelayer-snapshot-enabled":has(`featurelayer-snapshot-enabled`),"featurelayer-pixel-buffering-enabled":has(`featurelayer-pixel-buffering-enabled`),"parquetlayer-full-query-feature-count":has(`parquetlayer-full-query-feature-count`),"parquetlayer-cache-enabled":has(`parquetlayer-cache-enabled`),"parquetlayer-legacy-field-overrides-enabled":has(`parquetlayer-legacy-field-overrides-enabled`),"esri-atomics":has(`esri-atomics`),"esri-shared-array-buffer":has(`esri-shared-array-buffer`),"esri-tiles-debug":has(`esri-tiles-debug`),"esri-workers-arraybuffer-transfer":has(`esri-workers-arraybuffer-transfer`),"feature-polyline-generalization-factor":has(`feature-polyline-generalization-factor`),"host-webworker":1},l.workers.loaderUrl&&(l.workers.loaderUrl=s(l.workers.loaderUrl)),l.workers.workerPath?l.workers.workerPath=s(l.workers.workerPath):l.workers.workerPath=s(e(`esri/core/workers/RemoteClient.js`)),l.workers.useDynamicImport=has(`esri-esbuild-build`);let u=t.workers.loaderConfig,d=c({baseUrl:u?.baseUrl,locale:n(),has:{"csp-restrictions":1,"dojo-test-sniff":0,"host-webworker":1,...u?.has},map:{...u?.map},paths:{...u?.paths},packages:u?.packages||[]});return JSON.stringify({esriConfig:l,loaderConfig:d,kernelInfo:{fullVersion:r}})}let b=0;export{_ as createWorker};
package/core/workers.d.ts CHANGED
@@ -65,6 +65,10 @@ export interface OpenOptions extends AbortOptions {
65
65
  /**
66
66
  * Opens a connection to workers and loads a script with the workers framework.
67
67
  *
68
+ * Custom ES module workers can load SDK modules using standard ES module imports
69
+ * in npm-based applications or `$arcgis.import()` in CDN applications.
70
+ * Only modules that do not depend on the DOM can be used within a worker.
71
+ *
68
72
  * @param modulePath - A fully qualified URL to a script to execute with the workers framework.
69
73
  * @param options - Worker options. See properties below for object specifications.
70
74
  * @returns Resolves to an instance of [Connection](https://developers.arcgis.com/javascript/latest/references/core/core/workers/Connection/).
@@ -119,5 +123,18 @@ export interface OpenOptions extends AbortOptions {
119
123
  * return `The time is ${time}`;
120
124
  * }
121
125
  * }
126
+ * @example
127
+ * // CustomWorker.js - load an SDK module inside a custom ES module worker in a CDN application.
128
+ * export async function createPoint(coordinates) {
129
+ * const Point = await $arcgis.import("@arcgis/core/geometry/Point.js");
130
+ *
131
+ * const point = new Point({
132
+ * longitude: coordinates.longitude,
133
+ * latitude: coordinates.latitude
134
+ * });
135
+ *
136
+ * // Return serializable data to the main thread.
137
+ * return point.toJSON();
138
+ * }
122
139
  */
123
140
  export function open(modulePath: string, options?: OpenOptions): Promise<Connection>;
package/kernel.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import"./core/has.js";import{addQueryParameter as e}from"./core/urlUtils.js";Symbol.dispose??=Symbol(`Symbol.dispose`),Symbol.asyncDispose??=Symbol(`Symbol.asyncDispose`);const t=`5.2`;let n=`5.2`;n=`5.2.0-next.161`;let r;function i(e){r=e}function a(t){let n=r?.findCredential(t);return n?.token?e(t,`token`,n.token):t}globalThis.$arcgis||Object.defineProperty(globalThis,"$arcgis",{configurable:!1,enumerable:!0,writable:!1,value:{}});export{a as addTokenParameter,n as fullVersion,r as id,i as setId,t as version};
2
+ import"./core/has.js";import{addQueryParameter as e}from"./core/urlUtils.js";Symbol.dispose??=Symbol(`Symbol.dispose`),Symbol.asyncDispose??=Symbol(`Symbol.asyncDispose`);const t=`5.2`;let n=`5.2`;n=`5.2.0-next.163`;let r;function i(e){r=e}function a(t){let n=r?.findCredential(t);return n?.token?e(t,`token`,n.token):t}globalThis.$arcgis||Object.defineProperty(globalThis,"$arcgis",{configurable:!1,enumerable:!0,writable:!1,value:{}});export{a as addTokenParameter,n as fullVersion,r as id,i as setId,t as version};