@arcgis/core 6.0.0-next.35 → 6.0.0-next.37

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 (188) hide show
  1. package/assets/esri/core/workers/RemoteClient.js +1 -1
  2. package/assets/esri/core/workers/chunks/{0202eb8c2b2865f99981.js → 00311d1b18d5952a014b.js} +1 -1
  3. package/assets/esri/core/workers/chunks/0b21d0e2e5a91c34a108.js +1 -0
  4. package/assets/esri/core/workers/chunks/{f717005e14a7e9141df7.js → 2050c844b5a29b1df28a.js} +1 -1
  5. package/assets/esri/core/workers/chunks/2c3612379111457c3221.js +1 -0
  6. package/assets/esri/core/workers/chunks/2f9072563194026e320e.js +1 -0
  7. package/assets/esri/core/workers/chunks/{d9a240a3c6bf85124474.js → 342a97974a78007b25e0.js} +1 -1
  8. package/assets/esri/core/workers/chunks/34467f7d84baffd772a3.js +1 -0
  9. package/assets/esri/core/workers/chunks/{4d18b48d4a282a0f341c.js → 427d929dc7f89b0a1ea9.js} +1 -1
  10. package/assets/esri/core/workers/chunks/432728c557be5dfa26b5.js +1 -0
  11. package/assets/esri/core/workers/chunks/46969f379623810b2eca.js +1 -0
  12. package/assets/esri/core/workers/chunks/592b5db1459c02cf6a0c.js +1 -0
  13. package/assets/esri/core/workers/chunks/6a21dc13a465757ba007.js +1 -0
  14. package/assets/esri/core/workers/chunks/{379db67f78161ebd5468.js → 7023651ed6398dcf8efb.js} +1 -1
  15. package/assets/esri/core/workers/chunks/{90360c0bd053d3e3fd77.js → 7027a0e7bfabb3bb7fc2.js} +1 -1
  16. package/assets/esri/core/workers/chunks/78818c2a898444f7e890.js +1 -0
  17. package/assets/esri/core/workers/chunks/{40c2674dae73f0942751.js → 7d497df6e13162156342.js} +1 -1
  18. package/assets/esri/core/workers/chunks/8a3dfe997712dc2ddead.js +1 -0
  19. package/assets/esri/core/workers/chunks/{81bcc495e6eaf2cf7474.js → 8f82a0a6747f673a2a7e.js} +1 -1
  20. package/assets/esri/core/workers/chunks/9826baa3c15ea2062669.js +1 -0
  21. package/assets/esri/core/workers/chunks/{d3369ffed19f4c264dcd.js → 9ab0735e86cf8932bf9d.js} +1 -1
  22. package/assets/esri/core/workers/chunks/ab0ea4042f4e13874aed.js +1 -0
  23. package/assets/esri/core/workers/chunks/ab98ade3257360015d6c.js +1 -0
  24. package/assets/esri/core/workers/chunks/{796c6195b6bf59dcc9bd.js → b25a05c58b0fd0f6ac60.js} +1 -1
  25. package/assets/esri/core/workers/chunks/b90271ce38522bcf813b.js +1 -0
  26. package/assets/esri/core/workers/chunks/ba91df9835cdea7698a9.js +1 -0
  27. package/assets/esri/core/workers/chunks/bfe13ac9fa1aafb190a1.js +1 -0
  28. package/assets/esri/core/workers/chunks/ce0274847ccce6a1ac53.js +1 -0
  29. package/assets/esri/core/workers/chunks/cf2e5f827cea7d7319ce.js +1 -0
  30. package/assets/esri/core/workers/chunks/dae2036faa28dade2119.js +1 -0
  31. package/assets/esri/core/workers/chunks/{e8fb2ba7b7a4f0916325.js → eed4b90494a54f8b337b.js} +1 -1
  32. package/assets/esri/core/workers/chunks/fc77eb7683e708774168.js +1 -0
  33. package/chunks/Clouds.glsl.js +7 -11
  34. package/chunks/RibbonLine.glsl.js +158 -84
  35. package/config.js +1 -1
  36. package/core/libs/gl-matrix-2/math/vec3.js +1 -1
  37. package/kernel.js +1 -1
  38. package/layers/BaseElevationLayer.js +1 -1
  39. package/layers/ElevationLayer.js +1 -1
  40. package/layers/IntegratedMesh3DTilesLayer.js +1 -1
  41. package/layers/IntegratedMeshLayer.d.ts +2 -0
  42. package/layers/IntegratedMeshLayer.js +1 -1
  43. package/layers/knowledgeGraph/KnowledgeGraphLayerDataManager.js +1 -1
  44. package/layers/support/ElevationQuery.js +1 -1
  45. package/layers/video/VideoController.js +3 -3
  46. package/layers/video/types.d.ts +12 -0
  47. package/package.json +3 -3
  48. package/support/timeUtils.js +1 -1
  49. package/views/2d/engine/Bitmap.js +1 -1
  50. package/views/2d/engine/flow/styles/Imagery.js +1 -1
  51. package/views/2d/engine/vectorTiles/SpriteMosaic.js +1 -1
  52. package/views/2d/engine/vectorTiles/VTLPainter3D.js +1 -1
  53. package/views/2d/engine/webgl/AttributeStoreView.js +1 -1
  54. package/views/2d/engine/webgl/GlyphMosaic.js +1 -1
  55. package/views/2d/engine/webgl/Overlay.js +1 -1
  56. package/views/2d/engine/webgl/OverlayMultipoint.js +1 -1
  57. package/views/2d/engine/webgl/SpriteMosaic.js +1 -1
  58. package/views/2d/engine/webgl/VideoScreenRenderer.js +1 -1
  59. package/views/2d/engine/webgl/animations/store/AnimationStore.js +1 -1
  60. package/views/2d/engine/webgl/collisions/LabelStore.js +1 -1
  61. package/views/2d/engine/webgl/effects/highlight/HighlightGradient.js +1 -1
  62. package/views/2d/engine/webgl/shaderGraph/techniques/TextureStatisticsTechnique.js +1 -1
  63. package/views/2d/engine/webgl/shaderGraph/techniques/blend/BlendTechnique.js +1 -1
  64. package/views/2d/engine/webgl/shaderGraph/techniques/colorize/ColorizeTechnique.js +1 -1
  65. package/views/2d/engine/webgl/shaderGraph/techniques/dotDensity/DotDensityResources.js +1 -1
  66. package/views/2d/engine/webgl/shaderGraph/techniques/drop-shadow/DropShadowTechnique.js +1 -1
  67. package/views/2d/engine/webgl/shaderGraph/techniques/heatmap/HeatmapResources.js +1 -1
  68. package/views/2d/engine/webgl/shaderGraph/techniques/magnifier/MagnifierTechnique.js +1 -1
  69. package/views/2d/engine/webgl/shaderGraph/techniques/opacity/OpacityTechnique.js +1 -1
  70. package/views/2d/engine/webgl/shaderGraph/techniques/raster/RasterColorizerTechnique.js +1 -1
  71. package/views/2d/engine/webgl/shaderGraph/techniques/raster/RasterHighlightTechnique.js +1 -1
  72. package/views/2d/engine/webgl/shaderGraph/techniques/raster/processor/textureUtils.js +1 -1
  73. package/views/2d/engine/webgl/shaderGraph/techniques/tile/TileDebugInfoTexture.js +1 -1
  74. package/views/2d/engine/webgl/textureUtils.js +1 -1
  75. package/views/2d/layers/LayerView2D.js +1 -1
  76. package/views/2d/webglDeps.js +1 -1
  77. package/views/3d/GroundView3D.js +1 -1
  78. package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
  79. package/views/3d/analysis/LineOfSight/placementUtils.js +1 -1
  80. package/views/3d/analysis/Viewshed/placementUtils.js +1 -1
  81. package/views/3d/input/SceneInputManager.js +1 -1
  82. package/views/3d/interactive/Manipulator3D.js +1 -1
  83. package/views/3d/interactive/editingTools/draw/DrawGraphicTool3D.js +1 -1
  84. package/views/3d/interactive/editingTools/originGeometryVisualElementUtils.js +1 -1
  85. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  86. package/views/3d/layers/I3SMeshView3D.js +1 -1
  87. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  88. package/views/3d/layers/graphics/ElevationAligners.js +1 -1
  89. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  90. package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
  91. package/views/3d/layers/i3s/LayerElevationProvider.js +1 -1
  92. package/views/3d/layers/support/Tiles3DBVH.js +1 -1
  93. package/views/3d/layers/support/Tiles3DMeshIntersectionHandler.js +1 -1
  94. package/views/3d/support/engineContent/line.js +1 -1
  95. package/views/3d/support/engineContent/marker.js +1 -1
  96. package/views/3d/support/flow/StreamlineResources3D.js +1 -1
  97. package/views/3d/support/flow/StreamlineResources3DOverlay.js +1 -1
  98. package/views/3d/support/flow/StreamlineResources3DShape.js +1 -1
  99. package/views/3d/support/flow/geometryUtils.js +1 -1
  100. package/views/3d/support/gaussianSplatting/GaussianSplatFadeHelper.js +1 -1
  101. package/views/3d/support/gaussianSplatting/GaussianSplatIntersectionHandler.js +1 -1
  102. package/views/3d/support/gaussianSplatting/GaussianSplatOrderTexture.js +1 -1
  103. package/views/3d/support/gaussianSplatting/GaussianSplatTextureAtlas.js +1 -1
  104. package/views/3d/support/gaussianSplatting/GaussianTile.js +1 -1
  105. package/views/3d/support/gaussianSplatting/GaussianTileBuilder.js +2 -0
  106. package/views/3d/support/gaussianSplatting/formatConstants.js +2 -0
  107. package/views/3d/support/pointsOfInterest/CameraOnSurface.js +1 -1
  108. package/views/3d/support/pointsOfInterest/StableSurfaceCenter.js +1 -1
  109. package/views/3d/support/pointsOfInterest/SurfaceGeometryUpdates.js +1 -1
  110. package/views/3d/terrain/OverlayRenderer.js +1 -1
  111. package/views/3d/terrain/TerrainRenderer.js +1 -1
  112. package/views/3d/terrain/TerrainSurface.js +1 -1
  113. package/views/3d/terrain/TileCompositor.js +1 -1
  114. package/views/3d/terrain/TileRenderer.js +1 -1
  115. package/views/3d/webgl/RenderNode.d.ts +1 -1
  116. package/views/3d/webgl-engine/collections/Component/ComponentObject.js +1 -1
  117. package/views/3d/webgl-engine/core/FBOCache.js +1 -1
  118. package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
  119. package/views/3d/webgl-engine/core/shaderLibrary/hud/HUD.glsl.js +1 -1
  120. package/views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatUnpacking.glsl.js +15 -11
  121. package/views/3d/webgl-engine/effects/atmosphere/LocalAtmosphere.js +1 -1
  122. package/views/3d/webgl-engine/effects/atmosphere/MarsAtmosphere.js +1 -1
  123. package/views/3d/webgl-engine/effects/clouds/CloudsRenderer.js +1 -1
  124. package/views/3d/webgl-engine/effects/highlight/Highlight.js +1 -1
  125. package/views/3d/webgl-engine/effects/magnifier/Magnifier.js +1 -1
  126. package/views/3d/webgl-engine/effects/smaa/SMAA.js +1 -1
  127. package/views/3d/webgl-engine/effects/ssao/SSAO.js +1 -1
  128. package/views/3d/webgl-engine/effects/stars/Stars.js +1 -1
  129. package/views/3d/webgl-engine/lib/AttributeView.js +1 -1
  130. package/views/3d/webgl-engine/lib/BasisUtil.js +1 -1
  131. package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
  132. package/views/3d/webgl-engine/lib/DDSUtil.js +1 -1
  133. package/views/3d/webgl-engine/lib/DrapedHeatmapRenderer.js +1 -1
  134. package/views/3d/webgl-engine/lib/GPUPointOcclusionQuery.js +1 -1
  135. package/views/3d/webgl-engine/lib/GaussianSplatRenderUtils.js +1 -1
  136. package/views/3d/webgl-engine/lib/ManagedTexture.js +1 -1
  137. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  138. package/views/3d/webgl-engine/lib/TextTextureAtlas.js +1 -1
  139. package/views/3d/webgl-engine/lib/TextureBackedBuffer/TextureBuffer.js +1 -1
  140. package/views/3d/webgl-engine/lib/TextureBackedBuffer/TextureBufferView.js +1 -1
  141. package/views/3d/webgl-engine/lib/VerticesView.js +2 -0
  142. package/views/3d/webgl-engine/lib/attributeViewUtils.js +1 -1
  143. package/views/3d/webgl-engine/lib/edgeRendering/strokes.js +1 -1
  144. package/views/3d/webgl-engine/lib/glUtil3D.js +1 -1
  145. package/views/3d/webgl-engine/lib/lodRendering/LodRenderer.js +1 -1
  146. package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
  147. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  148. package/views/3d/webgl-engine/materials/internal/WaterTextureRepository.js +1 -1
  149. package/views/3d/webgl-engine/materials/internal/lineMarkerBufferUtils.js +2 -0
  150. package/views/3d/webgl-engine/materials/internal/ribbonLineBufferUtils.js +2 -0
  151. package/views/3d/webgl-engine/materials/renderers/VaoRenderer.js +1 -1
  152. package/views/3d/webgl-engine/materials/stippleTextureRepository.js +1 -1
  153. package/views/draw/DrawTool.js +1 -1
  154. package/views/draw/support/ManagedTooltipField.js +1 -1
  155. package/views/support/TextureCompressionHelper.js +1 -1
  156. package/views/support/imageReprojection.js +1 -1
  157. package/views/webgl/FramebufferObject.js +1 -1
  158. package/views/webgl/RenderingContext.js +1 -1
  159. package/views/webgl/Texture.js +1 -1
  160. package/views/webgl/rasterUtils.js +1 -1
  161. package/views/webgl/testSVGPremultipliedAlpha.js +1 -1
  162. package/views/webgl/textureUtils.js +1 -1
  163. package/widgets/OrientedImageryViewer/navigation/NavigationManager.js +1 -1
  164. package/widgets/OrientedImageryViewer/navigation/queries.js +1 -1
  165. package/widgets/OrientedImageryViewer/navigation/utils.js +1 -1
  166. package/widgets/OrientedImageryViewer.js +2 -2
  167. package/widgets/ScaleRangeSlider/types.d.ts +3 -3
  168. package/assets/esri/core/workers/chunks/039d9bc5b5015012f811.js +0 -1
  169. package/assets/esri/core/workers/chunks/08140725277de5d2e41a.js +0 -1
  170. package/assets/esri/core/workers/chunks/16cda273927ab0a39544.js +0 -1
  171. package/assets/esri/core/workers/chunks/29c610ce1c81ebb84a6b.js +0 -1
  172. package/assets/esri/core/workers/chunks/3223f9fbc76ba9ef8d13.js +0 -1
  173. package/assets/esri/core/workers/chunks/3fdcc383bbd9cf0d274c.js +0 -1
  174. package/assets/esri/core/workers/chunks/46c290108a90518ef695.js +0 -1
  175. package/assets/esri/core/workers/chunks/48b8b57f559a53c6c513.js +0 -1
  176. package/assets/esri/core/workers/chunks/4a979fce1c971b614a18.js +0 -1
  177. package/assets/esri/core/workers/chunks/5bd1414220e42cb8ebcf.js +0 -1
  178. package/assets/esri/core/workers/chunks/5d781c2c6204cffffd0d.js +0 -1
  179. package/assets/esri/core/workers/chunks/723df53cfa0189837d01.js +0 -1
  180. package/assets/esri/core/workers/chunks/7400b8c454b47ee4fb3c.js +0 -1
  181. package/assets/esri/core/workers/chunks/7af4edc6e87d27b9d467.js +0 -1
  182. package/assets/esri/core/workers/chunks/990e96139b5a1dccb061.js +0 -1
  183. package/assets/esri/core/workers/chunks/a607541959169741a943.js +0 -1
  184. package/assets/esri/core/workers/chunks/aa779896fd9e5c341349.js +0 -1
  185. package/assets/esri/core/workers/chunks/c131e0dd180a4c10e12e.js +0 -1
  186. package/assets/esri/core/workers/chunks/f3b4159c0722df8ffe13.js +0 -1
  187. package/assets/esri/core/workers/chunks/f75eec2cbc541eec9712.js +0 -1
  188. package/views/3d/webgl-engine/lib/GaussianSplatPrepassDepthRenderer.js +0 -2
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{create as e}from"../factories/vec3f64.js";import{getEpsilon as t,RANDOM as n}from"./common.js";function r(e){let t=e[0],n=e[1],r=e[2];return Math.sqrt(t*t+n*n+r*r)}function i(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function a(e,t,n,r){return e[0]=t,e[1]=n,e[2]=r,e}function o(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function s(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function c(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function l(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function u(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function d(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function f(e,t){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e}function p(e,t){return e[0]=Math.sign(t[0]),e[1]=Math.sign(t[1]),e[2]=Math.sign(t[2]),e}function m(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function h(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function g(e,t=0,n=1){return e[0]=Math.min(Math.max(e[0],t),n),e[1]=Math.min(Math.max(e[1],t),n),e[2]=Math.min(Math.max(e[2],t),n),e}function _(e,t){return e[0]=Math.round(t[0]),e[1]=Math.round(t[1]),e[2]=Math.round(t[2]),e}function v(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function y(e,t){return v(e,e,t/$(e))}function b(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e}function x(e,t){let n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return Math.sqrt(n*n+r*r+i*i)}function S(e,t){let n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return n*n+r*r+i*i}function C(e){let t=e[0],n=e[1],r=e[2];return t*t+n*n+r*r}function ee(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function w(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function T(e,t=e){let n=t[0],r=t[1],i=t[2],a=n*n+r*r+i*i;return a>0&&(a=1/Math.sqrt(a),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a),e}function E(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function D(e,t,n){let r=t[0],i=t[1],a=t[2],o=n[0],s=n[1],c=n[2];return e[0]=i*c-a*s,e[1]=a*o-r*c,e[2]=r*s-i*o,e}function O(e,t,n){let r=t[0],i=t[1],a=t[2],o=n[0],s=n[1],c=n[2],l=i*c-a*s,u=a*o-r*c,d=r*s-i*o,f=Math.sqrt(l*l+u*u+d*d);return e[0]=l/f,e[1]=u/f,e[2]=d/f,e}function k(e,t,n,r){let i=t[0],a=t[1],o=t[2];return e[0]=i+r*(n[0]-i),e[1]=a+r*(n[1]-a),e[2]=o+r*(n[2]-o),e}function A(e,t,n,r,i,a){let o=a*a,s=o*(2*a-3)+1,c=o*(a-2)+a,l=o*(a-1),u=o*(3-2*a);return e[0]=t[0]*s+n[0]*c+r[0]*l+i[0]*u,e[1]=t[1]*s+n[1]*c+r[1]*l+i[1]*u,e[2]=t[2]*s+n[2]*c+r[2]*l+i[2]*u,e}function j(e,t,n,r,i,a){let o=1-a,s=o*o,c=a*a,l=s*o,u=3*a*s,d=3*c*o,f=c*a;return e[0]=t[0]*l+n[0]*u+r[0]*d+i[0]*f,e[1]=t[1]*l+n[1]*u+r[1]*d+i[1]*f,e[2]=t[2]*l+n[2]*u+r[2]*d+i[2]*f,e}function M(e,t=1){let r=n,i=r()*2*Math.PI,a=r()*2-1,o=Math.sqrt(1-a*a)*t;return e[0]=Math.cos(i)*o,e[1]=Math.sin(i)*o,e[2]=a*t,e}function N(e,t,n){let r=t[0],i=t[1],a=t[2];return e[0]=n[0]*r+n[4]*i+n[8]*a+n[12],e[1]=n[1]*r+n[5]*i+n[9]*a+n[13],e[2]=n[2]*r+n[6]*i+n[10]*a+n[14],e}function P(e,t){return t[2]*e[0]+t[6]*e[1]+t[10]*e[2]+t[14]}function F(e,t,n){let r=t[0],i=t[1],a=t[2];return e[0]=r*n[0]+i*n[3]+a*n[6],e[1]=r*n[1]+i*n[4]+a*n[7],e[2]=r*n[2]+i*n[5]+a*n[8],e}function I(e,t,n){return L(e,t,n[0],n[1],n[2],n[3])}function L(e,t,n,r,i,a){let o=t[0],s=t[1],c=t[2],l=r*c-i*s,u=i*o-n*c,d=n*s-r*o,f=r*d-i*u,p=i*l-n*d,m=n*u-r*l,h=a*2;return e[0]=o+l*h+f*2,e[1]=s+u*h+p*2,e[2]=c+d*h+m*2,e}function R(e,t,n,r){let i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0],a[1]=i[1]*Math.cos(r)-i[2]*Math.sin(r),a[2]=i[1]*Math.sin(r)+i[2]*Math.cos(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function z(e,t,n,r){let i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[2]*Math.sin(r)+i[0]*Math.cos(r),a[1]=i[1],a[2]=i[2]*Math.cos(r)-i[0]*Math.sin(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function B(e,t,n,r){let i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0]*Math.cos(r)-i[1]*Math.sin(r),a[1]=i[0]*Math.sin(r)+i[1]*Math.cos(r),a[2]=i[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function V(e,t){T(H,e),T(U,t);let n=E(H,U);return n>1?0:n<-1?Math.PI:Math.acos(n)}const H=e(),U=e();function W(e){return`vec3(`+e[0]+`, `+e[1]+`, `+e[2]+`)`}function G(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function K(e,n){if(e===n)return!0;let r=e[0],i=e[1],a=e[2],o=n[0],s=n[1],c=n[2],l=t();return Math.abs(r-o)<=l*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(i-s)<=l*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(a-c)<=l*Math.max(1,Math.abs(a),Math.abs(c))}function q(e,t,n){let r=n[0]-t[0],i=n[1]-t[1],a=n[2]-t[2],o=r*r+i*i+a*a;return o>0?(o=1/Math.sqrt(o),e[0]=r*o,e[1]=i*o,e[2]=a*o,e):(e[0]=0,e[1]=0,e[2]=0,e)}const J=s,Y=c,X=l,Z=x,Q=S,$=r,te=C,ne=Object.freeze(Object.defineProperty({__proto__:null,abs:f,add:o,angle:V,bezier:j,ceil:u,clamp:g,copy:i,cross:D,crossAndNormalize:O,direction:q,dist:Z,distance:x,div:X,divide:l,dot:E,equals:K,exactEquals:G,floor:d,hermite:A,inverse:w,len:$,length:r,lerp:k,max:h,min:m,mul:Y,multiply:c,negate:ee,normalize:T,random:M,rotateX:R,rotateY:z,rotateZ:B,round:_,scale:v,scaleAndAdd:b,scaleTo:y,set:a,sign:p,sqrDist:Q,sqrLen:te,squaredDistance:S,squaredLength:C,str:W,sub:J,subtract:s,transformMat3:F,transformMat4:N,transformMat4Z:P,transformQuat:I,transformQuatValues:L},Symbol.toStringTag,{value:`Module`}));export{f as abs,o as add,V as angle,j as bezier,u as ceil,g as clamp,i as copy,D as cross,O as crossAndNormalize,q as direction,Z as dist,x as distance,X as div,l as divide,E as dot,K as equals,G as exactEquals,d as floor,A as hermite,w as inverse,$ as len,r as length,k as lerp,h as max,m as min,Y as mul,c as multiply,ee as negate,T as normalize,M as random,R as rotateX,z as rotateY,B as rotateZ,_ as round,v as scale,b as scaleAndAdd,y as scaleTo,a as set,p as sign,Q as sqrDist,te as sqrLen,S as squaredDistance,C as squaredLength,W as str,J as sub,s as subtract,F as transformMat3,N as transformMat4,P as transformMat4Z,I as transformQuat,L as transformQuatValues,ne as v};
2
+ import{create as e}from"../factories/vec3f64.js";import{getEpsilon as t,RANDOM as n}from"./common.js";function r(e){let t=e[0],n=e[1],r=e[2];return Math.sqrt(t*t+n*n+r*r)}function i(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function a(e,t,n,r){return e[0]=t,e[1]=n,e[2]=r,e}function o(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function s(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function c(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function l(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function u(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function d(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function f(e,t){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e}function p(e,t){return e[0]=Math.sign(t[0]),e[1]=Math.sign(t[1]),e[2]=Math.sign(t[2]),e}function m(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function h(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function g(e,t=0,n=1){return e[0]=Math.min(Math.max(e[0],t),n),e[1]=Math.min(Math.max(e[1],t),n),e[2]=Math.min(Math.max(e[2],t),n),e}function _(e,t){return e[0]=Math.round(t[0]),e[1]=Math.round(t[1]),e[2]=Math.round(t[2]),e}function v(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function y(e,t){return v(e,e,t/$(e))}function b(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e}function x(e,t){let n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return Math.sqrt(n*n+r*r+i*i)}function S(e,t){let n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return n*n+r*r+i*i}function C(e){let t=e[0],n=e[1],r=e[2];return t*t+n*n+r*r}function ee(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function w(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function T(e,t=e){let n=t[0],r=t[1],i=t[2],a=n*n+r*r+i*i;return a>0&&(a=1/Math.sqrt(a),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a),e}function E(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function D(e,t,n){let r=t[0],i=t[1],a=t[2],o=n[0],s=n[1],c=n[2];return e[0]=i*c-a*s,e[1]=a*o-r*c,e[2]=r*s-i*o,e}function O(e,t,n){let r=t[0],i=t[1],a=t[2],o=n[0],s=n[1],c=n[2],l=i*c-a*s,u=a*o-r*c,d=r*s-i*o,f=Math.sqrt(l*l+u*u+d*d);return e[0]=l/f,e[1]=u/f,e[2]=d/f,e}function k(e,t,n,r){let i=t[0],a=t[1],o=t[2];return e[0]=i+r*(n[0]-i),e[1]=a+r*(n[1]-a),e[2]=o+r*(n[2]-o),e}function A(e,t,n,r,i,a){let o=a*a,s=o*(2*a-3)+1,c=o*(a-2)+a,l=o*(a-1),u=o*(3-2*a);return e[0]=t[0]*s+n[0]*c+r[0]*l+i[0]*u,e[1]=t[1]*s+n[1]*c+r[1]*l+i[1]*u,e[2]=t[2]*s+n[2]*c+r[2]*l+i[2]*u,e}function j(e,t,n,r,i,a){let o=1-a,s=o*o,c=a*a,l=s*o,u=3*a*s,d=3*c*o,f=c*a;return e[0]=t[0]*l+n[0]*u+r[0]*d+i[0]*f,e[1]=t[1]*l+n[1]*u+r[1]*d+i[1]*f,e[2]=t[2]*l+n[2]*u+r[2]*d+i[2]*f,e}function M(e,t=1){let r=n,i=r()*2*Math.PI,a=r()*2-1,o=Math.sqrt(1-a*a)*t;return e[0]=Math.cos(i)*o,e[1]=Math.sin(i)*o,e[2]=a*t,e}function N(e,t,n){let r=t[0],i=t[1],a=t[2];return e[0]=n[0]*r+n[4]*i+n[8]*a+n[12],e[1]=n[1]*r+n[5]*i+n[9]*a+n[13],e[2]=n[2]*r+n[6]*i+n[10]*a+n[14],e}function P(e,t,n){return e[0]=t[0]+n[12],e[1]=t[1]+n[13],e[2]=t[2]+n[14],e}function F(e,t){return t[2]*e[0]+t[6]*e[1]+t[10]*e[2]+t[14]}function I(e,t,n){let r=t[0],i=t[1],a=t[2];return e[0]=r*n[0]+i*n[3]+a*n[6],e[1]=r*n[1]+i*n[4]+a*n[7],e[2]=r*n[2]+i*n[5]+a*n[8],e}function L(e,t,n){return R(e,t,n[0],n[1],n[2],n[3])}function R(e,t,n,r,i,a){let o=t[0],s=t[1],c=t[2],l=r*c-i*s,u=i*o-n*c,d=n*s-r*o,f=r*d-i*u,p=i*l-n*d,m=n*u-r*l,h=a*2;return e[0]=o+l*h+f*2,e[1]=s+u*h+p*2,e[2]=c+d*h+m*2,e}function z(e,t,n,r){let i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0],a[1]=i[1]*Math.cos(r)-i[2]*Math.sin(r),a[2]=i[1]*Math.sin(r)+i[2]*Math.cos(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function te(e,t,n,r){let i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[2]*Math.sin(r)+i[0]*Math.cos(r),a[1]=i[1],a[2]=i[2]*Math.cos(r)-i[0]*Math.sin(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function B(e,t,n,r){let i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0]*Math.cos(r)-i[1]*Math.sin(r),a[1]=i[0]*Math.sin(r)+i[1]*Math.cos(r),a[2]=i[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function V(e,t){T(H,e),T(U,t);let n=E(H,U);return n>1?0:n<-1?Math.PI:Math.acos(n)}const H=e(),U=e();function W(e){return`vec3(`+e[0]+`, `+e[1]+`, `+e[2]+`)`}function G(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function K(e,n){if(e===n)return!0;let r=e[0],i=e[1],a=e[2],o=n[0],s=n[1],c=n[2],l=t();return Math.abs(r-o)<=l*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(i-s)<=l*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(a-c)<=l*Math.max(1,Math.abs(a),Math.abs(c))}function q(e,t,n){let r=n[0]-t[0],i=n[1]-t[1],a=n[2]-t[2],o=r*r+i*i+a*a;return o>0?(o=1/Math.sqrt(o),e[0]=r*o,e[1]=i*o,e[2]=a*o,e):(e[0]=0,e[1]=0,e[2]=0,e)}const J=s,Y=c,X=l,Z=x,Q=S,$=r,ne=C,re=Object.freeze(Object.defineProperty({__proto__:null,abs:f,add:o,angle:V,applyTranslation:P,bezier:j,ceil:u,clamp:g,copy:i,cross:D,crossAndNormalize:O,direction:q,dist:Z,distance:x,div:X,divide:l,dot:E,equals:K,exactEquals:G,floor:d,hermite:A,inverse:w,len:$,length:r,lerp:k,max:h,min:m,mul:Y,multiply:c,negate:ee,normalize:T,random:M,rotateX:z,rotateY:te,rotateZ:B,round:_,scale:v,scaleAndAdd:b,scaleTo:y,set:a,sign:p,sqrDist:Q,sqrLen:ne,squaredDistance:S,squaredLength:C,str:W,sub:J,subtract:s,transformMat3:I,transformMat4:N,transformMat4Z:F,transformQuat:L,transformQuatValues:R},Symbol.toStringTag,{value:`Module`}));export{f as abs,o as add,V as angle,P as applyTranslation,j as bezier,u as ceil,g as clamp,i as copy,D as cross,O as crossAndNormalize,q as direction,Z as dist,x as distance,X as div,l as divide,E as dot,K as equals,G as exactEquals,d as floor,A as hermite,w as inverse,$ as len,r as length,k as lerp,h as max,m as min,Y as mul,c as multiply,ee as negate,T as normalize,M as random,z as rotateX,te as rotateY,B as rotateZ,_ as round,v as scale,b as scaleAndAdd,y as scaleTo,a as set,p as sign,Q as sqrDist,ne as sqrLen,S as squaredDistance,C as squaredLength,W as str,J as sub,s as subtract,I as transformMat3,N as transformMat4,F as transformMat4Z,L as transformQuat,R as transformQuatValues,re as v};
package/kernel.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/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=`6.0`;let n=`6.0`;n=`6.0.0-next.35`;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=`6.0`;let n=`6.0`;n=`6.0.0-next.37`;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};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../core/Error.js";import{property as n,subclass as r}from"../core/accessorSupport/decorators.js";import i from"../geometry/Extent.js";import a from"../geometry/SpatialReference.js";import{create as o}from"../geometry/support/aaBoundingRect.js";import s from"./Layer.js";import{ScaleRangeLayer as c}from"./mixins/ScaleRangeLayer.js";import l from"./support/TileInfo.js";import{TileKey as u}from"./support/TileKey.js";const d=new u(0,0,0);let f=class extends c(s){constructor(e){super(e),this.tileInfo=l.create({spatialReference:a.WebMercator,size:256}),this.fullExtent=new i(-20037508.342787,-20037508.34278,20037508.34278,20037508.342787,a.WebMercator),this.spatialReference=a.WebMercator,this.type=`base-elevation`}get memoizedElevationQueryDependencies(){return[this.loadStatus,this.tileInfo,this.fullExtent,this.spatialReference]}addResolvingPromise(e){super.addResolvingPromise(e)}getTileBounds(e,t,n,r){let i=r??o();return d.level=e,d.row=t,d.col=n,d.extent=i,this.tileInfo.updateTileInfo(d),i}fetchTile(){throw new t(`BaseElevationLayer:fetchTile-not-implemented`,`fetchTile() is not implemented`)}async queryElevation(e,t){let{query:n}=await this._importElevationQuery();return n(this,e,t)}createElevationSampler(e,t){return this._importElevationQuery().then(({createSampler:n})=>n(this,e,t))}_importElevationQuery(){return import(`./support/ElevationQuery.js`)}};e([n({type:l})],f.prototype,`tileInfo`,void 0),e([n({type:[`show`,`hide`]})],f.prototype,`listMode`,void 0),e([n()],f.prototype,`fullExtent`,void 0),e([n({type:a})],f.prototype,`spatialReference`,void 0),e([n()],f.prototype,`memoizedElevationQueryDependencies`,null),e([n({readOnly:!0,value:`base-elevation`})],f.prototype,`type`,void 0),f=e([r(`esri.layers.BaseElevationLayer`)],f);const p=f;export{p as default};
2
+ import{__decorate as e}from"tslib";import t from"../core/Error.js";import{property as n,subclass as r}from"../core/accessorSupport/decorators.js";import i from"../geometry/Extent.js";import a from"../geometry/SpatialReference.js";import{create as o}from"../geometry/support/aaBoundingRect.js";import s from"./Layer.js";import{ScaleRangeLayer as c}from"./mixins/ScaleRangeLayer.js";import l from"./support/TileInfo.js";import{TileKey as u}from"./support/TileKey.js";const d=new u(0,0,0);let f=class extends c(s){constructor(e){super(e),this.tileInfo=l.create({spatialReference:a.WebMercator,size:256}),this.fullExtent=new i(-20037508.342787,-20037508.34278,20037508.34278,20037508.342787,a.WebMercator),this.spatialReference=a.WebMercator,this.type=`base-elevation`}get memoizedElevationQueryDependencies(){return[this.loadStatus,this.tileInfo,this.fullExtent,this.spatialReference]}addResolvingPromise(e){super.addResolvingPromise(e)}getTileBounds(e,t,n,r){let i=r??o();return d.level=e,d.row=t,d.col=n,d.extent=i,this.tileInfo.updateTileInfo(d),i}fetchTile(){throw new t(`BaseElevationLayer:fetchTile-not-implemented`,`fetchTile() is not implemented`)}async queryElevation(e,t){let{query:n}=await this._importElevationQuery();return n(this,e,t)}async queryElevationForGround(e,t){let{queryElevationFromTiles:n}=await this._importElevationQuery();return n(this,e,t)}createElevationSampler(e,t){return this._importElevationQuery().then(({createSampler:n})=>n(this,e,t))}_importElevationQuery(){return import(`./support/ElevationQuery.js`)}};e([n({type:l})],f.prototype,`tileInfo`,void 0),e([n({type:[`show`,`hide`]})],f.prototype,`listMode`,void 0),e([n()],f.prototype,`fullExtent`,void 0),e([n({type:a})],f.prototype,`spatialReference`,void 0),e([n()],f.prototype,`memoizedElevationQueryDependencies`,null),e([n({readOnly:!0,value:`base-elevation`})],f.prototype,`type`,void 0),f=e([r(`esri.layers.BaseElevationLayer`)],f);const p=f;export{p as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../request.js";import n from"../core/Error.js";import{releaseMaybe as r}from"../core/maybe.js";import{MultiOriginJSONSupportMixin as i}from"../core/MultiOriginJSONSupport.js";import{throwIfAbortError as a,throwIfAborted as o}from"../core/promiseUtils.js";import{objectToQuery as s}from"../core/urlUtils.js";import{property as c,subclass as l}from"../core/accessorSupport/decorators.js";import u from"./Layer.js";import{ArcGISCachedService as d}from"./mixins/ArcGISCachedService.js";import{ArcGISService as f}from"./mixins/ArcGISService.js";import{HeightModelInfoMixin as p}from"./mixins/HeightModelInfoMixin.js";import{OperationalLayer as m}from"./mixins/OperationalLayer.js";import{PortalLayer as h}from"./mixins/PortalLayer.js";import{url as g}from"./support/commonProperties.js";import _ from"./support/ElevationTileData.js";import{acquireDecoder as v}from"./support/LercDecoder.js";import{reader as y}from"../core/accessorSupport/decorators/reader.js";let b=class extends p(d(f(m(h(i(u)))))){constructor(...e){super(...e),this.capabilities={operations:{supportsTileMap:!1}},this.copyright=null,this.path=null,this.minScale=void 0,this.maxScale=void 0,this.opacity=1,this.operationalLayerType=`ArcGISTiledElevationServiceLayer`,this.sourceJSON=null,this.type=`elevation`,this.url=null,this.version=null,this._lercDecoder=v()}normalizeCtorArgs(e,t){return typeof e==`string`?{url:e,...t}:e}destroy(){this._lercDecoder=r(this._lercDecoder)}readCapabilities(e,t){let n=t.capabilities&&t.capabilities.split(`,`).map(e=>e.toLowerCase().trim());return n?{operations:{supportsTileMap:n.includes(`tilemap`)}}:{operations:{supportsTileMap:!1}}}get memoizedElevationQueryDependencies(){return[this.loadStatus,this.tileInfo,this.fullExtent,this.spatialReference]}readVersion(e,t){let n=t.currentVersion;return n||=9.3,n}load(e){let t=e==null?null:e.signal;return this.addResolvingPromise(this.loadFromPortal({supportedTypes:[`Image Service`],supportsData:!1,validateItem:e=>{if(e.typeKeywords){for(let t=0;t<e.typeKeywords.length;t++)if(e.typeKeywords[t].toLowerCase()===`elevation 3d layer`)return!0}throw new n(`portal:invalid-layer-item-type`,"Invalid layer item type '${type}', expected '${expectedType}' ",{type:`Image Service`,expectedType:`Image Service Elevation 3D Layer`})}},e).catch(a).then(()=>this._fetchImageService(t))),Promise.resolve(this)}async fetchTile(e,r,i,a){let o=a?.signal,s={responseType:`array-buffer`,signal:o,useQueue:a?.useQueue,priority:a?.priority},c={noDataValue:a?.noDataValue};await this.load(),await this._fetchTileAvailability(e,r,i,a);let l=await t(this.getTileUrl(e,r,i),s),u=await this._lercDecoder.decode(l.data,c,o);if(!u)throw new n(`elevation-layer:tile-decode-failed`,`Failed to decode elevation tile data.`);return new _({values:u.pixelData,width:u.width,height:u.height,noDataValue:u.noDataValue})}getTileUrl(e,t,n){let r=!this.capabilities.operations.supportsTileMap&&this.supportsBlankTile,i=s({...this.parsedUrl.query,blankTile:!r&&null});return`${this.parsedUrl.path}/tile/${e}/${t}/${n}${i?`?`+i:``}`}async queryElevation(e,t){let{query:n}=await import(`./support/ElevationQuery.js`);return o(t),n(this,e,t)}async createElevationSampler(e,t){let{createSampler:n}=await import(`./support/ElevationQuery.js`);return o(t),n(this,e,t)}_fetchTileAvailability(e,t,n,r){return this.tilemapCache?this.tilemapCache.fetchAvailability(e,t,n,r):Promise.resolve(`unknown`)}async _fetchImageService(e){if(this.sourceJSON)return this.sourceJSON;let n={query:{f:`json`,...this.parsedUrl.query},responseType:`json`,signal:e},r=await t(this.parsedUrl.path,n);r.ssl&&(this.url=this.url?.replace(/^http:/i,`https:`)),this.sourceJSON=r.data,this.read(r.data,{origin:`service`,url:this.parsedUrl})}get hasOverriddenFetchTile(){return!this.fetchTile[x]}};e([c({readOnly:!0})],b.prototype,`capabilities`,void 0),e([y(`service`,`capabilities`,[`capabilities`])],b.prototype,`readCapabilities`,null),e([c({json:{read:{source:`copyrightText`}}})],b.prototype,`copyright`,void 0),e([c({type:String,json:{origins:{"web-scene":{read:!0,write:!0}},read:!1}})],b.prototype,`path`,void 0),e([c({type:[`show`,`hide`]})],b.prototype,`listMode`,void 0),e([c({json:{read:!1,write:!1,origins:{service:{read:!1,write:!1},"portal-item":{read:!1,write:!1},"web-document":{read:!1,write:!1}}},readOnly:!0})],b.prototype,`minScale`,void 0),e([c({json:{read:!1,write:!1,origins:{service:{read:!1,write:!1},"portal-item":{read:!1,write:!1},"web-document":{read:!1,write:!1}}},readOnly:!0})],b.prototype,`maxScale`,void 0),e([c({json:{read:!1,write:!1,origins:{"web-document":{read:!1,write:!1}}}})],b.prototype,`opacity`,void 0),e([c({type:[`ArcGISTiledElevationServiceLayer`]})],b.prototype,`operationalLayerType`,void 0),e([c()],b.prototype,`sourceJSON`,void 0),e([c({json:{read:!1},value:`elevation`,readOnly:!0})],b.prototype,`type`,void 0),e([c()],b.prototype,`memoizedElevationQueryDependencies`,null),e([c(g)],b.prototype,`url`,void 0),e([c()],b.prototype,`version`,void 0),e([y(`version`,[`currentVersion`])],b.prototype,`readVersion`,null),b=e([l(`esri.layers.ElevationLayer`)],b);const x=Symbol(`default-fetch-tile`);b.prototype.fetchTile[x]=!0;const S=b;export{S as default};
2
+ import{__decorate as e}from"tslib";import t from"../request.js";import n from"../core/Error.js";import{releaseMaybe as r}from"../core/maybe.js";import{MultiOriginJSONSupportMixin as i}from"../core/MultiOriginJSONSupport.js";import{throwIfAbortError as a,throwIfAborted as o}from"../core/promiseUtils.js";import{objectToQuery as s}from"../core/urlUtils.js";import{property as c,subclass as l}from"../core/accessorSupport/decorators.js";import u from"./Layer.js";import{ArcGISCachedService as d}from"./mixins/ArcGISCachedService.js";import{ArcGISService as f}from"./mixins/ArcGISService.js";import{HeightModelInfoMixin as p}from"./mixins/HeightModelInfoMixin.js";import{OperationalLayer as m}from"./mixins/OperationalLayer.js";import{PortalLayer as h}from"./mixins/PortalLayer.js";import{url as g}from"./support/commonProperties.js";import _ from"./support/ElevationTileData.js";import{acquireDecoder as v}from"./support/LercDecoder.js";import{reader as y}from"../core/accessorSupport/decorators/reader.js";let b=class extends p(d(f(m(h(i(u)))))){constructor(...e){super(...e),this.capabilities={operations:{supportsTileMap:!1}},this.copyright=null,this.path=null,this.minScale=void 0,this.maxScale=void 0,this.opacity=1,this.operationalLayerType=`ArcGISTiledElevationServiceLayer`,this.sourceJSON=null,this.type=`elevation`,this.url=null,this.version=null,this._lercDecoder=v()}normalizeCtorArgs(e,t){return typeof e==`string`?{url:e,...t}:e}destroy(){this._lercDecoder=r(this._lercDecoder)}readCapabilities(e,t){let n=t.capabilities&&t.capabilities.split(`,`).map(e=>e.toLowerCase().trim());return n?{operations:{supportsTileMap:n.includes(`tilemap`)}}:{operations:{supportsTileMap:!1}}}get memoizedElevationQueryDependencies(){return[this.loadStatus,this.tileInfo,this.fullExtent,this.spatialReference]}readVersion(e,t){let n=t.currentVersion;return n||=9.3,n}load(e){let t=e==null?null:e.signal;return this.addResolvingPromise(this.loadFromPortal({supportedTypes:[`Image Service`],supportsData:!1,validateItem:e=>{if(e.typeKeywords){for(let t=0;t<e.typeKeywords.length;t++)if(e.typeKeywords[t].toLowerCase()===`elevation 3d layer`)return!0}throw new n(`portal:invalid-layer-item-type`,"Invalid layer item type '${type}', expected '${expectedType}' ",{type:`Image Service`,expectedType:`Image Service Elevation 3D Layer`})}},e).catch(a).then(()=>this._fetchImageService(t))),Promise.resolve(this)}async fetchTile(e,r,i,a){let o=a?.signal,s={responseType:`array-buffer`,signal:o,useQueue:a?.useQueue,priority:a?.priority},c={noDataValue:a?.noDataValue};await this.load(),await this._fetchTileAvailability(e,r,i,a);let l=await t(this.getTileUrl(e,r,i),s),u=await this._lercDecoder.decode(l.data,c,o);if(!u)throw new n(`elevation-layer:tile-decode-failed`,`Failed to decode elevation tile data.`);return new _({values:u.pixelData,width:u.width,height:u.height,noDataValue:u.noDataValue})}getTileUrl(e,t,n){let r=!this.capabilities.operations.supportsTileMap&&this.supportsBlankTile,i=s({...this.parsedUrl.query,blankTile:!r&&null});return`${this.parsedUrl.path}/tile/${e}/${t}/${n}${i?`?`+i:``}`}async queryElevation(e,t){let{query:n}=await import(`./support/ElevationQuery.js`);return o(t),n(this,e,t)}async queryElevationForGround(e,t){let{queryElevationFromTiles:n}=await import(`./support/ElevationQuery.js`);return n(this,e,t)}async createElevationSampler(e,t){let{createSampler:n}=await import(`./support/ElevationQuery.js`);return o(t),n(this,e,t)}_fetchTileAvailability(e,t,n,r){return this.tilemapCache?this.tilemapCache.fetchAvailability(e,t,n,r):Promise.resolve(`unknown`)}async _fetchImageService(e){if(this.sourceJSON)return this.sourceJSON;let n={query:{f:`json`,...this.parsedUrl.query},responseType:`json`,signal:e},r=await t(this.parsedUrl.path,n);r.ssl&&(this.url=this.url?.replace(/^http:/i,`https:`)),this.sourceJSON=r.data,this.read(r.data,{origin:`service`,url:this.parsedUrl})}get hasOverriddenFetchTile(){return!this.fetchTile[x]}};e([c({readOnly:!0})],b.prototype,`capabilities`,void 0),e([y(`service`,`capabilities`,[`capabilities`])],b.prototype,`readCapabilities`,null),e([c({json:{read:{source:`copyrightText`}}})],b.prototype,`copyright`,void 0),e([c({type:String,json:{origins:{"web-scene":{read:!0,write:!0}},read:!1}})],b.prototype,`path`,void 0),e([c({type:[`show`,`hide`]})],b.prototype,`listMode`,void 0),e([c({json:{read:!1,write:!1,origins:{service:{read:!1,write:!1},"portal-item":{read:!1,write:!1},"web-document":{read:!1,write:!1}}},readOnly:!0})],b.prototype,`minScale`,void 0),e([c({json:{read:!1,write:!1,origins:{service:{read:!1,write:!1},"portal-item":{read:!1,write:!1},"web-document":{read:!1,write:!1}}},readOnly:!0})],b.prototype,`maxScale`,void 0),e([c({json:{read:!1,write:!1,origins:{"web-document":{read:!1,write:!1}}}})],b.prototype,`opacity`,void 0),e([c({type:[`ArcGISTiledElevationServiceLayer`]})],b.prototype,`operationalLayerType`,void 0),e([c()],b.prototype,`sourceJSON`,void 0),e([c({json:{read:!1},value:`elevation`,readOnly:!0})],b.prototype,`type`,void 0),e([c()],b.prototype,`memoizedElevationQueryDependencies`,null),e([c(g)],b.prototype,`url`,void 0),e([c()],b.prototype,`version`,void 0),e([y(`version`,[`currentVersion`])],b.prototype,`readVersion`,null),b=e([l(`esri.layers.ElevationLayer`)],b);const x=Symbol(`default-fetch-tile`);b.prototype.fetchTile[x]=!0;const S=b;export{S as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../request.js";import{ClonableMixin as n}from"../core/Clonable.js";import r from"../core/Error.js";import has from"../core/has.js";import i from"../core/Logger.js";import{MultiOriginJSONSupportMixin as a}from"../core/MultiOriginJSONSupport.js";import{throwIfAbortError as o}from"../core/promiseUtils.js";import{on as s,sync as c,watch as l}from"../core/reactiveUtils.js";import{property as u,subclass as d}from"../core/accessorSupport/decorators.js";import{persistable as f}from"../core/accessorSupport/decorators/persistable.js";import p from"../geometry/Extent.js";import m from"../geometry/SpatialReference.js";import h from"./Layer.js";import{APIKeyMixin as g}from"./mixins/APIKeyMixin.js";import{ArcGISService as _}from"./mixins/ArcGISService.js";import{CustomParametersMixin as v}from"./mixins/CustomParametersMixin.js";import{OperationalLayer as y}from"./mixins/OperationalLayer.js";import{PortalLayer as b}from"./mixins/PortalLayer.js";import{ScaleRangeLayer as x}from"./mixins/ScaleRangeLayer.js";import{elevationInfo as S,url as C}from"./support/commonProperties.js";import w from"./support/SceneModifications.js";import{default3DTilesSpatialReference as T,default3DTilesFullExtent as E,initFullExtent as D,hasEsriCrs as O}from"./support/tiles3DUtils.js";import k from"../portal/Portal.js";import{getElevationOffsetInMeters as A,logInvalidElevationInfoWarning as j,elevationModeRequiredMessage as M,featureExpressionUnsupportedMessage as N}from"../support/elevationInfoUtils.js";import{isGround as P}from"../support/groundInstanceUtils.js";import{f as F}from"../chunks/persistableUrlUtils.js";import{isBasemap as I}from"../support/userTypeGuards/isBasemap.js";import{initialize as L,switchMeshModificationPolygonVCSSync as R}from"../views/3d/layers/Lyr3DWorker.js";import{toWasmModification as z,fromWasmModification as B}from"../views/3d/layers/SceneLayerWorkerHandle.js";import{reader as V}from"../core/accessorSupport/decorators/reader.js";let H=class extends _(y(b(x(a(v(g(n(h)))))))){readModifications(e,t,n){this._modificationsSource={url:F(e,n),context:n}}initialize(){this.addHandles([s(()=>this.modifications,`after-changes`,()=>{this.modifications=this.modifications,this._modificationsGeneration++},c),l(()=>this.modifications,()=>this._modificationsGeneration++)])}constructor(e){super(e),this.operationalLayerType=`IntegratedMesh3DTilesLayer`,this.modifications=null,this._modificationsSource=null,this.spatialReference=T,this.fullExtent=E,this.esriCrsSpatialReference=null,this.esriCrsFullExtent=null,this.url=null,this.type=`integrated-mesh-3dtiles`,this.path=null,this.minScale=0,this.maxScale=0,this._rootTilesetJSON=null,this._rootTileset=null,this._key=null,this._session=null,this._rootRequestPromise=null,this.queryElevationCallback=null,this._modificationsGeneration=0,this._simulateGoogleUrl=!1}get supportedSpatialReferences(){return!this.initialized||!this.esriCrsSpatialReference?[m.WGS84]:[m.WGS84,this.esriCrsSpatialReference]}get fullExtents(){let e=this.fullExtent??E;return!this.initialized||!this.esriCrsFullExtent?[e]:[e,this.esriCrsFullExtent]}set elevationInfo(e){(e==null||e.mode===`absolute-height`)&&this._set(`elevationInfo`,e),this._validateElevationInfo(e)}async load(e){return this.addResolvingPromise(this._doLoad(e)),this}get rootTilesetJSON(){return this._rootTilesetJSON}get rootTileset(){return this._rootTileset}get key(){return this._key}get session(){return this._session}_findSessionParameter(e){let t=[e];for(;t?.length>0;){let e=t.pop();if(!e)return;for(let[n,r]of Object.entries(e)){if(n===`uri`)try{let e=new URL(`https://tmp`+r).searchParams.get(`session`);if(e)return e}catch{}typeof r==`object`&&r&&t.push(r)}}return null}async requestRootAndSession(e){let n=(e,t)=>new r(`3dtiles-init:`+e,t);return this._rootRequestPromise||=new Promise((r,a)=>{this.url||a(n(`url-missing`,`Layer url missing`)),this._key=this.customParameters?this.customParameters.key:null,new Promise((e,r)=>{if(this.replacesTerrain&&!this._key){let i=this.portalItem?.portal||this.parent?.portalItem?.portal||k.getDefault();i.signIn().then(()=>{i.g3dTilesEnabled?t(i.restUrl+`/portals/self/modules/g3dtiles`,{responseType:`json`,query:{f:`json`}}).then(t=>{this._key=t.data.keyString,e()},()=>r(n(`g3dtiles-key-error`,`Error fetching Google 3D Tiles key from portal`))):r(n(`g3dTilesEnabled-false`,`Google 3D Tiles are not enabled on Portal `+i.url))},()=>r(n(`sign-in-failed`,`Error signing in to Portal`)))}else e()}).then(()=>{t(this.url,{query:this._key?{key:this._key,token:this.apiKey}:{token:this.apiKey},responseType:`array-buffer`,signal:e}).then(e=>{try{this._rootTilesetJSON=JSON.parse(new TextDecoder().decode(e.data))}catch(e){a(n(`root-parse-failed`,`Error parsing root tile, details: `+e));return}this._rootTilesetJSON?(this._session=this._findSessionParameter(this._rootTilesetJSON),this._rootTileset=e.data,this.fullExtent=D(this._rootTilesetJSON),O(this._rootTilesetJSON)&&(this.esriCrsFullExtent=D(this._rootTilesetJSON,!0),this.esriCrsSpatialReference=this.esriCrsFullExtent.spatialReference,this.spatialReference=this.esriCrsSpatialReference),r(),this._rootRequestPromise=null):a(n(`root-is-null`,`Root tile is null.`))},e=>{o(e),a(n(`root-load-failed`,`Error loading root tile`)),this._rootRequestPromise=null,i.getLogger(`IntegratedMesh3DTilesLayer`).error(`Layer loading failed`,e)})},e=>a(e))}),this._rootRequestPromise}_haveWGS84ZModifications(e){for(let t of e)if(!t.geometry?.spatialReference||t.geometry?.spatialReference.vcsWkid===115700&&t.geometry?.spatialReference.wkid===4326)return!0;return!1}async _doLoad(e){let t=e==null?null:e.signal;try{await this.loadFromPortal({supportedTypes:[`3DTiles Service`],validateItem:e=>{if(e.typeKeywords?.includes(`IntegratedMesh`))return!0;throw new r(`portal:invalid-layer-item-type`,"Invalid layer item, expected '${expectedType}' ",{expectedType:`3DTiles Service containing IntegratedMesh`})}},e)}catch(e){o(e)}if(this._modificationsSource!=null){let t=await w.fromUrl(this._modificationsSource.url,this.spatialReference,e,!0);if(this._haveWGS84ZModifications(t)){await L();try{let e=z(null,t.toArray(),m.WGS84),n=R({modifications:e,inVCS:115700});n.success&&n.modifications&&B(n.modifications,t)}catch(e){i.getLogger(this).error(`convert-mesh-modification-z-error`,`Error when converting:`,e)}}this.setAtOrigin(`modifications`,t,this._modificationsSource.context.origin),this._modificationsSource=null}await this.requestRootAndSession(t)}async beforeSave(){if(this._modificationsSource==null){let{modifications:e}=this;e&&e.length>0&&await L()}else await this.load().then(()=>{},()=>{})}get memoizedElevationQueryDependencies(){return[this.loadStatus,this.queryElevationCallback!=null,A(this.elevationInfo),this._modificationsGeneration]}get hasAttributionData(){return!1}_validateElevationInfo(e){let t=`Integrated mesh 3d tiles layers`;j(i.getLogger(this),M(t,`absolute-height`,e)),j(i.getLogger(this),N(t,e))}get replacesTerrain(){return this.hasGoogleUrl&&this.isUsedAsGroundLayer}get isUsedAsGroundLayer(){return has(`enable-feature:im-as-ground`)?I(this.parent)||P(this.parent):I(this.parent)}get hasGoogleUrl(){return this._simulateGoogleUrl||!!(this.url?.match(/.+\.googleapis.com/)??!1)}get test(){}};e([u({type:[`IntegratedMesh3DTilesLayer`]})],H.prototype,`operationalLayerType`,void 0),e([u({type:w,clonable:e=>e?.clone()??null}),f({origins:[`web-scene`,`portal-item`],type:`resource`,prefix:`modifications`})],H.prototype,`modifications`,void 0),e([u({clonable:e=>e?{...e}:null})],H.prototype,`_modificationsSource`,void 0),e([V([`web-scene`,`portal-item`],`modifications`)],H.prototype,`readModifications`,null),e([u({type:m})],H.prototype,`spatialReference`,void 0),e([u({type:p})],H.prototype,`fullExtent`,void 0),e([u({readOnly:!0})],H.prototype,`supportedSpatialReferences`,null),e([u({type:[p]})],H.prototype,`fullExtents`,null),e([u(S)],H.prototype,`elevationInfo`,null),e([u({type:[`show`,`hide`]})],H.prototype,`listMode`,void 0),e([u(C)],H.prototype,`url`,void 0),e([u({readOnly:!0})],H.prototype,`type`,void 0),e([u({type:String,json:{origins:{"web-scene":{read:!0,write:!0},"portal-item":{read:!0,write:!0}},read:!1}})],H.prototype,`path`,void 0),e([u({type:Number,json:{name:`layerDefinition.minScale`,write:!0,origins:{service:{read:!1,write:!1}}}})],H.prototype,`minScale`,void 0),e([u({type:Number,json:{name:`layerDefinition.maxScale`,write:!0,origins:{service:{read:!1,write:!1}}}})],H.prototype,`maxScale`,void 0),e([u()],H.prototype,`queryElevationCallback`,void 0),e([u()],H.prototype,`_modificationsGeneration`,void 0),e([u()],H.prototype,`memoizedElevationQueryDependencies`,null),e([u({readOnly:!0})],H.prototype,`hasAttributionData`,null),e([u()],H.prototype,`replacesTerrain`,null),e([u()],H.prototype,`isUsedAsGroundLayer`,null),e([u()],H.prototype,`hasGoogleUrl`,null),e([u()],H.prototype,`_simulateGoogleUrl`,void 0),H=e([d(`esri.layers.IntegratedMesh3DTilesLayer`)],H);const U=H;export{U as default};
2
+ import{__decorate as e}from"tslib";import t from"../request.js";import{ClonableMixin as n}from"../core/Clonable.js";import r from"../core/Error.js";import has from"../core/has.js";import i from"../core/Logger.js";import{MultiOriginJSONSupportMixin as a}from"../core/MultiOriginJSONSupport.js";import{throwIfAbortError as o}from"../core/promiseUtils.js";import{on as s,sync as c,watch as l}from"../core/reactiveUtils.js";import{property as u,subclass as d}from"../core/accessorSupport/decorators.js";import{persistable as f}from"../core/accessorSupport/decorators/persistable.js";import p from"../geometry/Extent.js";import m from"../geometry/SpatialReference.js";import h from"./Layer.js";import{APIKeyMixin as g}from"./mixins/APIKeyMixin.js";import{ArcGISService as _}from"./mixins/ArcGISService.js";import{CustomParametersMixin as v}from"./mixins/CustomParametersMixin.js";import{OperationalLayer as y}from"./mixins/OperationalLayer.js";import{PortalLayer as b}from"./mixins/PortalLayer.js";import{ScaleRangeLayer as x}from"./mixins/ScaleRangeLayer.js";import{elevationInfo as S,url as C}from"./support/commonProperties.js";import{GeometryDescriptor as w}from"./support/GeometryDescriptor.js";import T from"./support/SceneModifications.js";import{default3DTilesSpatialReference as E,default3DTilesFullExtent as D,initFullExtent as O,hasEsriCrs as k}from"./support/tiles3DUtils.js";import A from"../portal/Portal.js";import{getElevationOffsetInMeters as j,logInvalidElevationInfoWarning as M,elevationModeRequiredMessage as N,featureExpressionUnsupportedMessage as P}from"../support/elevationInfoUtils.js";import{isGround as F}from"../support/groundInstanceUtils.js";import{f as I}from"../chunks/persistableUrlUtils.js";import{isBasemap as L}from"../support/userTypeGuards/isBasemap.js";import{initialize as R,switchMeshModificationPolygonVCSSync as z}from"../views/3d/layers/Lyr3DWorker.js";import{toWasmModification as B,fromWasmModification as V}from"../views/3d/layers/SceneLayerWorkerHandle.js";import{reader as H}from"../core/accessorSupport/decorators/reader.js";let U=class extends _(y(b(x(a(v(g(n(h)))))))){readModifications(e,t,n){this._modificationsSource={url:I(e,n),context:n}}initialize(){this.addHandles([s(()=>this.modifications,`after-changes`,()=>{this.modifications=this.modifications,this._modificationsGeneration++},c),l(()=>this.modifications,()=>this._modificationsGeneration++)])}constructor(e){super(e),this.operationalLayerType=`IntegratedMesh3DTilesLayer`,this.modifications=null,this._modificationsSource=null,this.spatialReference=E,this.fullExtent=D,this.esriCrsSpatialReference=null,this.esriCrsFullExtent=null,this.url=null,this.type=`integrated-mesh-3dtiles`,this.path=null,this.minScale=0,this.maxScale=0,this._rootTilesetJSON=null,this._rootTileset=null,this._key=null,this._session=null,this._rootRequestPromise=null,this.queryElevationCallback=null,this._modificationsGeneration=0,this._simulateGoogleUrl=!1}get supportedSpatialReferences(){return!this.initialized||!this.esriCrsSpatialReference?[m.WGS84]:[m.WGS84,this.esriCrsSpatialReference]}get fullExtents(){let e=this.fullExtent??D;return!this.initialized||!this.esriCrsFullExtent?[e]:[e,this.esriCrsFullExtent]}set elevationInfo(e){(e==null||e.mode===`absolute-height`)&&this._set(`elevationInfo`,e),this._validateElevationInfo(e)}async load(e){return this.addResolvingPromise(this._doLoad(e)),this}get rootTilesetJSON(){return this._rootTilesetJSON}get rootTileset(){return this._rootTileset}get key(){return this._key}get session(){return this._session}_findSessionParameter(e){let t=[e];for(;t?.length>0;){let e=t.pop();if(!e)return;for(let[n,r]of Object.entries(e)){if(n===`uri`)try{let e=new URL(`https://tmp`+r).searchParams.get(`session`);if(e)return e}catch{}typeof r==`object`&&r&&t.push(r)}}return null}async requestRootAndSession(e){let n=(e,t)=>new r(`3dtiles-init:`+e,t);return this._rootRequestPromise||=new Promise((r,a)=>{this.url||a(n(`url-missing`,`Layer url missing`)),this._key=this.customParameters?this.customParameters.key:null,new Promise((e,r)=>{if(this.replacesTerrain&&!this._key){let i=this.portalItem?.portal||this.parent?.portalItem?.portal||A.getDefault();i.signIn().then(()=>{i.g3dTilesEnabled?t(i.restUrl+`/portals/self/modules/g3dtiles`,{responseType:`json`,query:{f:`json`}}).then(t=>{this._key=t.data.keyString,e()},()=>r(n(`g3dtiles-key-error`,`Error fetching Google 3D Tiles key from portal`))):r(n(`g3dTilesEnabled-false`,`Google 3D Tiles are not enabled on Portal `+i.url))},()=>r(n(`sign-in-failed`,`Error signing in to Portal`)))}else e()}).then(()=>{t(this.url,{query:this._key?{key:this._key,token:this.apiKey}:{token:this.apiKey},responseType:`array-buffer`,signal:e}).then(e=>{try{this._rootTilesetJSON=JSON.parse(new TextDecoder().decode(e.data))}catch(e){a(n(`root-parse-failed`,`Error parsing root tile, details: `+e));return}this._rootTilesetJSON?(this._session=this._findSessionParameter(this._rootTilesetJSON),this._rootTileset=e.data,this.fullExtent=O(this._rootTilesetJSON),k(this._rootTilesetJSON)&&(this.esriCrsFullExtent=O(this._rootTilesetJSON,!0),this.esriCrsSpatialReference=this.esriCrsFullExtent.spatialReference,this.spatialReference=this.esriCrsSpatialReference),r(),this._rootRequestPromise=null):a(n(`root-is-null`,`Root tile is null.`))},e=>{o(e),a(n(`root-load-failed`,`Error loading root tile`)),this._rootRequestPromise=null,i.getLogger(`IntegratedMesh3DTilesLayer`).error(`Layer loading failed`,e)})},e=>a(e))}),this._rootRequestPromise}_haveWGS84ZModifications(e){for(let t of e)if(!t.geometry?.spatialReference||t.geometry?.spatialReference.vcsWkid===115700&&t.geometry?.spatialReference.wkid===4326)return!0;return!1}async _doLoad(e){let t=e==null?null:e.signal;try{await this.loadFromPortal({supportedTypes:[`3DTiles Service`],validateItem:e=>{if(e.typeKeywords?.includes(`IntegratedMesh`))return!0;throw new r(`portal:invalid-layer-item-type`,"Invalid layer item, expected '${expectedType}' ",{expectedType:`3DTiles Service containing IntegratedMesh`})}},e)}catch(e){o(e)}if(this._modificationsSource!=null){let t=await T.fromUrl(this._modificationsSource.url,this.spatialReference,e,!0);if(this._haveWGS84ZModifications(t)){await R();try{let e=B(null,t.toArray(),m.WGS84),n=z({modifications:e,inVCS:115700});n.success&&n.modifications&&V(n.modifications,t)}catch(e){i.getLogger(this).error(`convert-mesh-modification-z-error`,`Error when converting:`,e)}}this.setAtOrigin(`modifications`,t,this._modificationsSource.context.origin),this._modificationsSource=null}await this.requestRootAndSession(t)}async beforeSave(){if(this._modificationsSource==null){let{modifications:e}=this;e&&e.length>0&&await R()}else await this.load().then(()=>{},()=>{})}async queryElevationForGround(e,t){let n=w.fromGeometry(e),r=t.signal;if(this.queryElevationCallback&&(has(`enable-feature:im-as-ground`)?this.isUsedAsGroundLayer:this.replacesTerrain)){let i=12.9*(t.minDemResolution||0)+.71,a=await(await this.queryElevationCallback(n,{signal:r,maxGeometricError:i})).project(e.spatialReference,r);if(a){if(t.noDataValue!==void 0&&t.noDataValue!==Number.MAX_VALUE)for(let e of a.coordinates)e.z===Number.MAX_VALUE&&(e.z=t.noDataValue);let e=t.noDataValue??Number.MAX_VALUE,n=a.coordinates.map(t=>({demResolution:t.z===e?-1:1,source:this}));return{geometry:a.export(),noDataValue:e,sampleInfo:n}}}return{geometry:n.export(),noDataValue:Number.MAX_VALUE,sampleInfo:n.coordinates.map(()=>({demResolution:-1,source:this}))}}get memoizedElevationQueryDependencies(){return[this.loadStatus,this.queryElevationCallback!=null,j(this.elevationInfo),this._modificationsGeneration]}get hasAttributionData(){return!1}_validateElevationInfo(e){let t=`Integrated mesh 3d tiles layers`;M(i.getLogger(this),N(t,`absolute-height`,e)),M(i.getLogger(this),P(t,e))}get replacesTerrain(){return this.hasGoogleUrl&&this.isUsedAsGroundLayer}get isUsedAsGroundLayer(){return has(`enable-feature:im-as-ground`)?L(this.parent)||F(this.parent):L(this.parent)}get hasGoogleUrl(){return this._simulateGoogleUrl||!!(this.url?.match(/.+\.googleapis.com/)??!1)}get test(){}};e([u({type:[`IntegratedMesh3DTilesLayer`]})],U.prototype,`operationalLayerType`,void 0),e([u({type:T,clonable:e=>e?.clone()??null}),f({origins:[`web-scene`,`portal-item`],type:`resource`,prefix:`modifications`})],U.prototype,`modifications`,void 0),e([u({clonable:e=>e?{...e}:null})],U.prototype,`_modificationsSource`,void 0),e([H([`web-scene`,`portal-item`],`modifications`)],U.prototype,`readModifications`,null),e([u({type:m})],U.prototype,`spatialReference`,void 0),e([u({type:p})],U.prototype,`fullExtent`,void 0),e([u({readOnly:!0})],U.prototype,`supportedSpatialReferences`,null),e([u({type:[p]})],U.prototype,`fullExtents`,null),e([u(S)],U.prototype,`elevationInfo`,null),e([u({type:[`show`,`hide`]})],U.prototype,`listMode`,void 0),e([u(C)],U.prototype,`url`,void 0),e([u({readOnly:!0})],U.prototype,`type`,void 0),e([u({type:String,json:{origins:{"web-scene":{read:!0,write:!0},"portal-item":{read:!0,write:!0}},read:!1}})],U.prototype,`path`,void 0),e([u({type:Number,json:{name:`layerDefinition.minScale`,write:!0,origins:{service:{read:!1,write:!1}}}})],U.prototype,`minScale`,void 0),e([u({type:Number,json:{name:`layerDefinition.maxScale`,write:!0,origins:{service:{read:!1,write:!1}}}})],U.prototype,`maxScale`,void 0),e([u()],U.prototype,`queryElevationCallback`,void 0),e([u()],U.prototype,`_modificationsGeneration`,void 0),e([u()],U.prototype,`memoizedElevationQueryDependencies`,null),e([u({readOnly:!0})],U.prototype,`hasAttributionData`,null),e([u()],U.prototype,`replacesTerrain`,null),e([u()],U.prototype,`isUsedAsGroundLayer`,null),e([u()],U.prototype,`hasGoogleUrl`,null),e([u()],U.prototype,`_simulateGoogleUrl`,void 0),U=e([d(`esri.layers.IntegratedMesh3DTilesLayer`)],U);const W=U;export{W as default};
@@ -190,6 +190,8 @@ export default class IntegratedMeshLayer extends IntegratedMeshLayerSuperclass {
190
190
  /**
191
191
  * Queries the integrated mesh layer for elevation values for the given geometry.
192
192
  *
193
+ * The terrain resolution options `demResolution` and `minDemResolution` are ignored by I3S integrated mesh queries.
194
+ *
193
195
  * @param view - The [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/) whose scheduler runs the query.
194
196
  * @param geometry - The point to query.
195
197
  * @param options
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__addDisposableResource as e,__disposeResources as t,__decorate as n}from"tslib";import{isSome as r}from"../core/arrayUtils.js";import{result as i,assertResult as a}from"../core/asyncUtils.js";import{ClonableMixin as o}from"../core/Clonable.js";import s from"../core/Error.js";import{abortHandle as c,disposable as l,makeHandle as u}from"../core/handleUtils.js";import has from"../core/has.js";import d from"../core/Logger.js";import{MultiOriginJSONSupportMixin as f}from"../core/MultiOriginJSONSupport.js";import{throwIfAborted as p,throwIfAbortError as m}from"../core/promiseUtils.js";import{on as h,sync as g,watch as _}from"../core/reactiveUtils.js";import{property as v,subclass as y}from"../core/accessorSupport/decorators.js";import{persistable as b}from"../core/accessorSupport/decorators/persistable.js";import x from"./Layer.js";import{APIKeyMixin as S}from"./mixins/APIKeyMixin.js";import{ArcGISService as C}from"./mixins/ArcGISService.js";import{CustomParametersMixin as w}from"./mixins/CustomParametersMixin.js";import{OperationalLayer as T}from"./mixins/OperationalLayer.js";import{PortalLayer as E}from"./mixins/PortalLayer.js";import{ScaleRangeLayer as D}from"./mixins/ScaleRangeLayer.js";import{SceneService as O}from"./mixins/SceneService.js";import{elevationInfo as k}from"./support/commonProperties.js";import{GeometryDescriptor as A}from"./support/GeometryDescriptor.js";import{queryIntegratedMeshElevation as j,defaultNoDataValue as M}from"./support/I3SIntegratedMeshElevationQuery.js";import{I3SNodePageDefinition as N,I3SMaterialDefinition as P,I3STextureSetDefinition as F,I3SGeometryDefinition as I}from"./support/I3SLayerDefinitions.js";import L from"./support/SceneModifications.js";import{logInvalidElevationInfoWarning as R,elevationModeRequiredMessage as z,featureExpressionUnsupportedMessage as B}from"../support/elevationInfoUtils.js";import{isGround as V}from"../support/groundInstanceUtils.js";import{f as H}from"../chunks/persistableUrlUtils.js";import{isBasemap as U}from"../support/userTypeGuards/isBasemap.js";import{SceneLayerWorkerHandle as W}from"../views/3d/layers/SceneLayerWorkerHandle.js";import{I3SDataRequester as G}from"../views/3d/layers/i3s/I3SDataRequester.js";import K from"../views/3d/layers/i3s/I3SNodeLoader.js";import{ImmediateTask as q}from"../views/support/Scheduler.js";import{reader as J}from"../core/accessorSupport/decorators/reader.js";let Y=class extends O(C(T(E(D(f(w(S(o(x))))))))){constructor(...e){super(...e),this.geometryType=`mesh`,this.operationalLayerType=`IntegratedMeshLayer`,this.type=`integrated-mesh`,this.nodePages=null,this.materialDefinitions=null,this.textureSetDefinitions=null,this.geometryDefinitions=null,this.serviceUpdateTimeStamp=null,this.profile=`mesh-pyramids`,this.modifications=null,this._modificationsSource=null,this.path=null,this.definitionExpression=null,this._elevationQueryAbortController=new AbortController,this._elevationQueryWorkerContext=`i3s-elevation-query-${this.uid}`,this._elevationQueryWorkerHandle=null,this._elevationQueryWorkerSetup=null,this._modificationsGeneration=0}destroy(){this._elevationQueryAbortController.abort();let e=this._elevationQueryWorkerHandle;this._elevationQueryWorkerHandle=null,this._elevationQueryWorkerSetup=null,e?.destroyContextAndSelf(this._elevationQueryWorkerContext),super.destroy()}initialize(){this.addHandles([h(()=>this.modifications,`after-changes`,()=>{this.modifications=this.modifications,this._modificationsGeneration++},g),_(()=>this.modifications,()=>this._modificationsGeneration++,g),_(()=>this.memoizedElevationQueryDependencies,()=>this._abortElevationQueriesAfterDependencyChange(),g)])}normalizeCtorArgs(e,t){return typeof e==`string`?{url:e,...t}:e}readModifications(e,t,n){this._modificationsSource={url:H(e,n),context:n}}set elevationInfo(e){(e==null||e.mode===`absolute-height`)&&this._set(`elevationInfo`,e),this._validateElevationInfo(e)}async load(e){return this.addResolvingPromise(this._doLoad(e)),this}get _elevationQueryWorker(){return this._elevationQueryWorkerHandle??=new W((e,t)=>q.schedule(e,t))}get memoizedElevationQueryDependencies(){return[this.elevationInfo?.offset,this._modificationsGeneration]}async queryElevation(n,a,o){let s={stack:[],error:void 0,hasError:!1};try{let t=o?.noDataValue??Number.MAX_VALUE,d=this._elevationQueryWorker,f=new AbortController;n.addHandles(c(f),f),e(s,l(u(()=>n.removeHandles(f))),!1);let m=AbortSignal.any([o?.signal,this._elevationQueryAbortController.signal,f.signal].filter(r));await this.load({signal:m}),p(m);let h=A.fromGeometry(a),g={signal:m,elevationOffset:this.elevationInfo?.offset??0,scheduler:n.resourceController.scheduler};if(this._elevationQueryWorkerSetup==null){let e=this.store?.defaultGeometrySchema;e!=null&&(this._elevationQueryWorkerSetup=i(d.setLegacySchema(this._elevationQueryWorkerContext,e)))}let _=await j(this,h,g);p(m);let v=_.coordinates[0].z===M;v&&(_.coordinates[0].z=t);let y=await _.project(a.spatialReference,m);p(m);let b=y??h.clone(),x={geometry:b.export(),noDataValue:t};return o?.returnSampleInfo&&(x.sampleInfo=b.coordinates.map(()=>({demResolution:v?-1:1}))),x}catch(e){s.error=e,s.hasError=!0}finally{t(s)}}_abortElevationQueriesAfterDependencyChange(){let e=this._elevationQueryAbortController;this._elevationQueryAbortController=new AbortController,e.abort()}async processElevationQueryGeometry(e,t){let n=await this._elevationQueryWorkerSetup;return n!=null&&a(n),p(t),this._elevationQueryWorker.invoke(e,t)}async _doLoad(e){let t=e?.signal;try{await this.loadFromPortal({supportedTypes:[`Scene Service`]},e)}catch(e){m(e)}if(p(t),await this._fetchService(t),p(t),this._modificationsSource!=null){let n=await L.fromUrl(this._modificationsSource.url,this.spatialReference,e);p(t),this.setAtOrigin(`modifications`,n,this._modificationsSource.context.origin),this._modificationsSource=null}await this._fetchIndexAndUpdateExtent(this.nodePages,t),p(t)}beforeSave(){if(this._modificationsSource!=null)return this.load().then(()=>{},()=>{})}async saveAs(e,t){return this._debouncedSaveOperations(1,{...t,getTypeKeywords:()=>this._getTypeKeywords(),portalItemLayerType:`integrated-mesh`},e)}async save(){return this._debouncedSaveOperations(0,{getTypeKeywords:()=>this._getTypeKeywords(),portalItemLayerType:`integrated-mesh`})}get isUsedAsGroundLayer(){return!has(`enable-feature:im-as-ground`)||U(this.parent)||V(this.parent)}get replacesTerrain(){return!1}validateLayer(e){if(e.layerType&&e.layerType!==`IntegratedMesh`)throw new s(`integrated-mesh-layer:layer-type-not-supported`,`IntegratedMeshLayer does not support this layer type`,{layerType:e.layerType});if(isNaN(this.version.major)||isNaN(this.version.minor))throw new s(`layer:service-version-not-supported`,`Service version is not supported.`,{serviceVersion:this.version.versionString,supportedVersions:`1.x`});if(this.version.major>1)throw new s(`layer:service-version-too-new`,`Service version is too new.`,{serviceVersion:this.version.versionString,supportedVersions:`1.x`})}_getTypeKeywords(){return[`IntegratedMeshLayer`]}get elevationQueryDataRequester(){return new G(this.customParameters,this.apiKey)}get elevationQueryNodeLoader(){return new K(this,this.elevationQueryDataRequester,d.getLogger(`esri.layers.IntegratedMeshLayer`),this.store?.defaultGeometrySchema,[],{loadFeatureData:!1,textureUsageMask:0})}_validateElevationInfo(e){let t=`Integrated mesh layers`;R(d.getLogger(this),z(t,`absolute-height`,e)),R(d.getLogger(this),B(t,e))}};n([v({type:String,readOnly:!0})],Y.prototype,`geometryType`,void 0),n([v({type:[`show`,`hide`]})],Y.prototype,`listMode`,void 0),n([v({type:[`IntegratedMeshLayer`]})],Y.prototype,`operationalLayerType`,void 0),n([v({json:{read:!1},readOnly:!0})],Y.prototype,`type`,void 0),n([v({type:N,readOnly:!0,clonable:!1})],Y.prototype,`nodePages`,void 0),n([v({type:[P],readOnly:!0,clonable:!1})],Y.prototype,`materialDefinitions`,void 0),n([v({type:[F],readOnly:!0,clonable:!1})],Y.prototype,`textureSetDefinitions`,void 0),n([v({type:[I],readOnly:!0,clonable:!1})],Y.prototype,`geometryDefinitions`,void 0),n([v({readOnly:!0})],Y.prototype,`serviceUpdateTimeStamp`,void 0),n([v({type:L,clonable:e=>e?.clone()??e}),b({origins:[`web-scene`,`portal-item`],type:`resource`,prefix:`modifications`})],Y.prototype,`modifications`,void 0),n([v({clonable:e=>e?{...e}:null})],Y.prototype,`_modificationsSource`,void 0),n([J([`web-scene`,`portal-item`],`modifications`)],Y.prototype,`readModifications`,null),n([v(k)],Y.prototype,`elevationInfo`,null),n([v({type:String,json:{origins:{"web-scene":{read:!0,write:!0},"portal-item":{read:!0,write:!0}},read:!1}})],Y.prototype,`path`,void 0),n([v({clonable:!1})],Y.prototype,`_elevationQueryWorker`,null),n([v()],Y.prototype,`_modificationsGeneration`,void 0),n([v()],Y.prototype,`memoizedElevationQueryDependencies`,null),n([v()],Y.prototype,`isUsedAsGroundLayer`,null),n([v()],Y.prototype,`replacesTerrain`,null),n([v({clonable:!1})],Y.prototype,`elevationQueryDataRequester`,null),n([v({clonable:!1})],Y.prototype,`elevationQueryNodeLoader`,null),Y=n([y(`esri.layers.IntegratedMeshLayer`)],Y);const X=Y;export{X as default};
2
+ import{__addDisposableResource as e,__disposeResources as t,__decorate as n}from"tslib";import{isSome as r}from"../core/arrayUtils.js";import{result as i,assertResult as a}from"../core/asyncUtils.js";import{ClonableMixin as o}from"../core/Clonable.js";import s from"../core/Error.js";import{abortHandle as c,disposable as l,makeHandle as u}from"../core/handleUtils.js";import has from"../core/has.js";import d from"../core/Logger.js";import{MultiOriginJSONSupportMixin as f}from"../core/MultiOriginJSONSupport.js";import{throwIfAborted as p,throwIfAbortError as m}from"../core/promiseUtils.js";import{on as h,sync as g,watch as _}from"../core/reactiveUtils.js";import{property as v,subclass as y}from"../core/accessorSupport/decorators.js";import{persistable as b}from"../core/accessorSupport/decorators/persistable.js";import x from"./Layer.js";import{APIKeyMixin as S}from"./mixins/APIKeyMixin.js";import{ArcGISService as C}from"./mixins/ArcGISService.js";import{CustomParametersMixin as w}from"./mixins/CustomParametersMixin.js";import{OperationalLayer as T}from"./mixins/OperationalLayer.js";import{PortalLayer as E}from"./mixins/PortalLayer.js";import{ScaleRangeLayer as D}from"./mixins/ScaleRangeLayer.js";import{SceneService as O}from"./mixins/SceneService.js";import{elevationInfo as k}from"./support/commonProperties.js";import{GeometryDescriptor as A}from"./support/GeometryDescriptor.js";import{queryIntegratedMeshElevation as j,defaultNoDataValue as M}from"./support/I3SIntegratedMeshElevationQuery.js";import{I3SNodePageDefinition as N,I3SMaterialDefinition as P,I3STextureSetDefinition as F,I3SGeometryDefinition as I}from"./support/I3SLayerDefinitions.js";import L from"./support/SceneModifications.js";import{logInvalidElevationInfoWarning as R,elevationModeRequiredMessage as z,featureExpressionUnsupportedMessage as B}from"../support/elevationInfoUtils.js";import{isGround as V}from"../support/groundInstanceUtils.js";import{f as H}from"../chunks/persistableUrlUtils.js";import{isBasemap as U}from"../support/userTypeGuards/isBasemap.js";import{SceneLayerWorkerHandle as W}from"../views/3d/layers/SceneLayerWorkerHandle.js";import{I3SDataRequester as G}from"../views/3d/layers/i3s/I3SDataRequester.js";import K from"../views/3d/layers/i3s/I3SNodeLoader.js";import{ImmediateTask as q}from"../views/support/Scheduler.js";import{reader as J}from"../core/accessorSupport/decorators/reader.js";let Y=class extends O(C(T(E(D(f(w(S(o(x))))))))){constructor(...e){super(...e),this.geometryType=`mesh`,this.operationalLayerType=`IntegratedMeshLayer`,this.type=`integrated-mesh`,this.nodePages=null,this.materialDefinitions=null,this.textureSetDefinitions=null,this.geometryDefinitions=null,this.serviceUpdateTimeStamp=null,this.profile=`mesh-pyramids`,this.modifications=null,this._modificationsSource=null,this.path=null,this.definitionExpression=null,this._elevationQueryAbortController=new AbortController,this._elevationQueryWorkerContext=`i3s-elevation-query-${this.uid}`,this._elevationQueryWorkerHandle=null,this._elevationQueryWorkerSetup=null,this._modificationsGeneration=0}destroy(){this._elevationQueryAbortController.abort();let e=this._elevationQueryWorkerHandle;this._elevationQueryWorkerHandle=null,this._elevationQueryWorkerSetup=null,e?.destroyContextAndSelf(this._elevationQueryWorkerContext),super.destroy()}initialize(){this.addHandles([h(()=>this.modifications,`after-changes`,()=>{this.modifications=this.modifications,this._modificationsGeneration++},g),_(()=>this.modifications,()=>this._modificationsGeneration++,g),_(()=>this.memoizedElevationQueryDependencies,()=>this._abortElevationQueriesAfterDependencyChange(),g)])}normalizeCtorArgs(e,t){return typeof e==`string`?{url:e,...t}:e}readModifications(e,t,n){this._modificationsSource={url:H(e,n),context:n}}set elevationInfo(e){(e==null||e.mode===`absolute-height`)&&this._set(`elevationInfo`,e),this._validateElevationInfo(e)}async load(e){return this.addResolvingPromise(this._doLoad(e)),this}get _elevationQueryWorker(){return this._elevationQueryWorkerHandle??=new W((e,t)=>q.schedule(e,t))}get memoizedElevationQueryDependencies(){return[this.elevationInfo?.offset,this._modificationsGeneration]}async queryElevation(n,a,o){let s={stack:[],error:void 0,hasError:!1};try{let t=o?.noDataValue??Number.MAX_VALUE,d=this._elevationQueryWorker,f=new AbortController;n.addHandles(c(f),f),e(s,l(u(()=>n.removeHandles(f))),!1);let m=AbortSignal.any([o?.signal,this._elevationQueryAbortController.signal,f.signal].filter(r));await this.load({signal:m}),p(m);let h=A.fromGeometry(a),g={signal:m,elevationOffset:this.elevationInfo?.offset??0,scheduler:n.resourceController.scheduler};if(this._elevationQueryWorkerSetup==null){let e=this.store?.defaultGeometrySchema;e!=null&&(this._elevationQueryWorkerSetup=i(d.setLegacySchema(this._elevationQueryWorkerContext,e)))}let _=await j(this,h,g);p(m);let v=_.coordinates[0].z===M;v&&(_.coordinates[0].z=t);let y=await _.project(a.spatialReference,m);p(m);let b=y??h.clone(),x={geometry:b.export(),noDataValue:t};return o?.returnSampleInfo&&(x.sampleInfo=b.coordinates.map(()=>({demResolution:v?-1:1}))),x}catch(e){s.error=e,s.hasError=!0}finally{t(s)}}async queryElevationForGround(e,t){let n=A.fromGeometry(e),r=Z(e),{view:i,...a}=t;if(r!=null&&i?.type===`3d`){let e=await this.queryElevation(i,r,a),t=A.fromGeometry(e.geometry),o=t.coordinates.map((t,n)=>({demResolution:e.sampleInfo?.[n]?.demResolution??(t.z===e.noDataValue?-1:1),source:this}));return{geometry:n.clone(t.coordinates).export(),noDataValue:e.noDataValue,sampleInfo:o}}return{geometry:n.export(),noDataValue:Number.MAX_VALUE,sampleInfo:n.coordinates.map(()=>({demResolution:-1,source:this}))}}_abortElevationQueriesAfterDependencyChange(){let e=this._elevationQueryAbortController;this._elevationQueryAbortController=new AbortController,e.abort()}async processElevationQueryGeometry(e,t){let n=await this._elevationQueryWorkerSetup;return n!=null&&a(n),p(t),this._elevationQueryWorker.invoke(e,t)}async _doLoad(e){let t=e?.signal;try{await this.loadFromPortal({supportedTypes:[`Scene Service`]},e)}catch(e){m(e)}if(p(t),await this._fetchService(t),p(t),this._modificationsSource!=null){let n=await L.fromUrl(this._modificationsSource.url,this.spatialReference,e);p(t),this.setAtOrigin(`modifications`,n,this._modificationsSource.context.origin),this._modificationsSource=null}await this._fetchIndexAndUpdateExtent(this.nodePages,t),p(t)}beforeSave(){if(this._modificationsSource!=null)return this.load().then(()=>{},()=>{})}async saveAs(e,t){return this._debouncedSaveOperations(1,{...t,getTypeKeywords:()=>this._getTypeKeywords(),portalItemLayerType:`integrated-mesh`},e)}async save(){return this._debouncedSaveOperations(0,{getTypeKeywords:()=>this._getTypeKeywords(),portalItemLayerType:`integrated-mesh`})}get isUsedAsGroundLayer(){return!has(`enable-feature:im-as-ground`)||U(this.parent)||V(this.parent)}get replacesTerrain(){return!1}validateLayer(e){if(e.layerType&&e.layerType!==`IntegratedMesh`)throw new s(`integrated-mesh-layer:layer-type-not-supported`,`IntegratedMeshLayer does not support this layer type`,{layerType:e.layerType});if(isNaN(this.version.major)||isNaN(this.version.minor))throw new s(`layer:service-version-not-supported`,`Service version is not supported.`,{serviceVersion:this.version.versionString,supportedVersions:`1.x`});if(this.version.major>1)throw new s(`layer:service-version-too-new`,`Service version is too new.`,{serviceVersion:this.version.versionString,supportedVersions:`1.x`})}_getTypeKeywords(){return[`IntegratedMeshLayer`]}get elevationQueryDataRequester(){return new G(this.customParameters,this.apiKey)}get elevationQueryNodeLoader(){return new K(this,this.elevationQueryDataRequester,d.getLogger(`esri.layers.IntegratedMeshLayer`),this.store?.defaultGeometrySchema,[],{loadFeatureData:!1,textureUsageMask:0})}_validateElevationInfo(e){let t=`Integrated mesh layers`;R(d.getLogger(this),z(t,`absolute-height`,e)),R(d.getLogger(this),B(t,e))}};n([v({type:String,readOnly:!0})],Y.prototype,`geometryType`,void 0),n([v({type:[`show`,`hide`]})],Y.prototype,`listMode`,void 0),n([v({type:[`IntegratedMeshLayer`]})],Y.prototype,`operationalLayerType`,void 0),n([v({json:{read:!1},readOnly:!0})],Y.prototype,`type`,void 0),n([v({type:N,readOnly:!0,clonable:!1})],Y.prototype,`nodePages`,void 0),n([v({type:[P],readOnly:!0,clonable:!1})],Y.prototype,`materialDefinitions`,void 0),n([v({type:[F],readOnly:!0,clonable:!1})],Y.prototype,`textureSetDefinitions`,void 0),n([v({type:[I],readOnly:!0,clonable:!1})],Y.prototype,`geometryDefinitions`,void 0),n([v({readOnly:!0})],Y.prototype,`serviceUpdateTimeStamp`,void 0),n([v({type:L,clonable:e=>e?.clone()??e}),b({origins:[`web-scene`,`portal-item`],type:`resource`,prefix:`modifications`})],Y.prototype,`modifications`,void 0),n([v({clonable:e=>e?{...e}:null})],Y.prototype,`_modificationsSource`,void 0),n([J([`web-scene`,`portal-item`],`modifications`)],Y.prototype,`readModifications`,null),n([v(k)],Y.prototype,`elevationInfo`,null),n([v({type:String,json:{origins:{"web-scene":{read:!0,write:!0},"portal-item":{read:!0,write:!0}},read:!1}})],Y.prototype,`path`,void 0),n([v({clonable:!1})],Y.prototype,`_elevationQueryWorker`,null),n([v()],Y.prototype,`_modificationsGeneration`,void 0),n([v()],Y.prototype,`memoizedElevationQueryDependencies`,null),n([v()],Y.prototype,`isUsedAsGroundLayer`,null),n([v()],Y.prototype,`replacesTerrain`,null),n([v({clonable:!1})],Y.prototype,`elevationQueryDataRequester`,null),n([v({clonable:!1})],Y.prototype,`elevationQueryNodeLoader`,null),Y=n([y(`esri.layers.IntegratedMeshLayer`)],Y);const X=Y;function Z(e){return e instanceof A?Z(e.geometry):e.type===`point`?e:null}export{X as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../core/Accessor.js";import n from"../../core/Error.js";import r from"../../core/Logger.js";import{getOrCreateMapValue as i}from"../../core/MapUtils.js";import{createAbortError as a}from"../../core/promiseUtils.js";import{parseWhereClause as o}from"../../core/sql.js";import{property as s,subclass as c}from"../../core/accessorSupport/decorators.js";import l from"../../geometry/Extent.js";import u from"../../geometry/Polygon.js";import{initializeProjection as d,project as f}from"../../geometry/projectionUtils.js";import{wgs84 as p}from"../../geometry/support/spatialReferenceUtils.js";import{systemOidFieldName as m,systemOriginIdFieldName as h,systemDestinationIdFieldName as g,systemIsSpatialFieldName as _,systemLayoutGeometryFieldName as v}from"./constants.js";import{recursiveParseSqlToCypher as y,addAdditionalClausesToCypher as b}from"./cypherUtils.js";import x from"./SessionMemoryStorage.js";import{utilsExtentToInBoundsRings as S}from"./supportUtils.js";import{executeQueryStreaming as C}from"../../rest/knowledgeGraphService.js";import w from"../../rest/knowledgeGraph/GraphQueryStreaming.js";import T from"../../rest/support/Query.js";let E=class extends t{constructor(e){super(e),this._processingCacheUpdatesLookup=new Map,this.knowledgeGraph=null,this.inclusionModeDefinition={generateAllSublayers:!0,namedTypeDefinitions:new Map},this.entityTypeNames=new Set,this.relationshipTypeNames=new Set,this.geographicLookup=new Map,this.sublayerCaches=new Map,this.nodeConnectionsLookup=new Map,this.relationshipConnectionsLookup=new Map,this.memberIdTypeLookup=new Map;let t=new Map;e.knowledgeGraph.dataModel.entityTypes?.forEach(n=>{n.name&&(t.set(n.name,`entity`),this._processingCacheUpdatesLookup.set(n.name,[]),(!e.inclusionModeDefinition||e.inclusionModeDefinition?.generateAllSublayers)&&this.entityTypeNames.add(n.name),n.properties?.forEach(e=>{e.geometryType&&e.geometryType!==`esriGeometryNull`&&this.geographicLookup.set(n.name,{name:e.name??``,geometryType:e.geometryType})}))}),e.knowledgeGraph.dataModel.relationshipTypes?.forEach(n=>{n.name&&(t.set(n.name,`relationship`),this._processingCacheUpdatesLookup.set(n.name,[]),(!e.inclusionModeDefinition||e.inclusionModeDefinition?.generateAllSublayers)&&this.relationshipTypeNames.add(n.name),n.properties?.forEach(e=>{e.geometryType&&e.geometryType!==`esriGeometryNull`&&this.geographicLookup.set(n.name,{name:e.name??``,geometryType:e.geometryType})}))}),e.inclusionModeDefinition?.namedTypeDefinitions.forEach((n,a)=>{if(t.get(a)===`entity`)this.entityTypeNames.add(a);else if(t.get(a)===`relationship`)this.relationshipTypeNames.add(a);else{r.getLogger(this).warn(`A named type, ${a}, was in the inclusion list that wasn't in the data model and will be removed`),e.inclusionModeDefinition?.namedTypeDefinitions.delete(a);return}let o=new Map;n.members?.forEach(e=>{i(this.memberIdTypeLookup,e.id,()=>new Set).add(a)}),this.sublayerCaches.set(a,o)})}addToLayer(e){e.forEach(({typeName:e,id:t})=>{if(!this.inclusionModeDefinition)throw new n(`knowledge-graph:layer-data-manager`,`You cannot add to a layer's exclusion list if it was not created with an exclusion list originally`);if(!this.inclusionModeDefinition.namedTypeDefinitions.has(e)){let n=new Map;n.set(t,{id:t}),this.inclusionModeDefinition.namedTypeDefinitions.set(e,{useAllData:!1,members:n}),i(this.memberIdTypeLookup,t,()=>new Set).add(e)}else if(this.inclusionModeDefinition.namedTypeDefinitions.has(e)){let n=this.inclusionModeDefinition.namedTypeDefinitions.get(e);n.members||=new Map,n.members.set(t,{id:t}),i(this.memberIdTypeLookup,t,()=>new Set).add(e)}})}getById(e){return x.getInstance().readFromStoreById(e)}async getData(e,t,n,r){if(t.objectType.name&&this.inclusionModeDefinition?.namedTypeDefinitions&&this.inclusionModeDefinition.namedTypeDefinitions.size>0&&!this.inclusionModeDefinition.namedTypeDefinitions.has(t.objectType.name))return{features:[],cypherTranslationApplied:!1};let i;if(i=e||new T({where:`1=1`,outFields:[`*`]}),n.type===`link-chart`){let e=n,r=this._processingCacheUpdatesLookup.get(t.objectType.name??``),a=i.outFields;a&&a.length===1&&a[0]===m&&i.where===`1=1`||await Promise.all(r??[]);let o=this.sublayerCaches.has(t.objectType.name??``)?Array.from(this.sublayerCaches.get(t.objectType.name)?.values()):[],s=[];return o.forEach(n=>{if(this.relationshipTypeNames.has(t.objectType.name)){n.geometry=e.relationshipLinkChartDiagramLookup.get(n.attributes[t.objectIdField]);let r=this.memberIdTypeLookup.get(n.attributes[h]),i=this.memberIdTypeLookup.get(n.attributes[g]),a=this._isEndEntitySpatial(r,n,h),o=this._isEndEntitySpatial(i,n,g);n.attributes[_]=Number(a&&o)}else{n.geometry=e.entityLinkChartDiagramLookup.get(n.attributes[t.objectIdField]);let r=this.geographicLookup.get(t.objectType.name);r&&n.attributes[r.name]?n.attributes[_]=1:n.attributes[_]=0}n.attributes[v]=n.geometry,s.push(n)}),{features:s,cypherTranslationApplied:!1}}return this.retrieveDataFromService(i,t,n,r)}async getConnectedRecordIds(e,t,n){let r=[],i=``,a=this._getNamedTypeIdMapFromNodeIds(e);if(t&&t?.length!==0){for(let e of t)i=i+e+`|`;i=i.slice(0,-1)}let o={},s=[];for(let[e,n]of a){let r=`${e}_ids`;o[r]=n,t&&t?.length!==0?s.push(`MATCH (n:${e}) WHERE id(n) IN $${r} WITH n MATCH (n)-[r:${i}]-(m) RETURN id(r), type(r), id(m), labels(m)[0]`):s.push(`MATCH (n:${e}) WHERE id(n) IN $${r} WITH n MATCH (n)-[r]-(m) RETURN id(r), type(r), id(m), labels(m)[0]`)}if(!s.length)return r;let c=s.join(` UNION `),l=(await C(this.knowledgeGraph,new w({openCypherQuery:c,bindParameters:o}),{signal:n?.signal})).resultRowsStream.getReader();for(;;){let{done:e,value:t}=await l.read();if(e)break;for(let e=0;e<t.length;e++){let n=t[e];r.push({id:n[0],typeName:n[1]}),r.push({id:n[2],typeName:n[3]})}}return r}async getRelationshipsBetweenNodes(e,t,n){let r=this._getNamedTypeIdMapFromNodeIds(e);if(r.size===0)return[];let i={relationshipExclusionIds:t,possibleConnectionEntityIds:e},a=[];for(let[e,t]of r.entries()){let n=`${e}_ids`;i[n]=t,a.push(`MATCH (n:${e}) WHERE id(n) IN $${n} WITH n MATCH (n)-[r]->(m) WHERE id(m) IN $possibleConnectionEntityIds AND NOT id(r) IN $relationshipExclusionIds RETURN id(r), type(r)`)}let o=a.join(` UNION `),s=[],c=(await C(this.knowledgeGraph,new w({openCypherQuery:o,bindParameters:i}),{signal:n?.signal})).resultRowsStream.getReader();for(;;){let{done:e,value:t}=await c.read();if(e)break;for(let e=0;e<t.length;e++){let n=t[e];s.push({id:n[0],typeName:n[1]})}}return s}async getRelationshipsFromNodes(e,t,n,r){let i=this._getNamedTypeIdMapFromNodeIds(e);if(i.size===0||t.length===0)return[];let a={relationshipExclusionIds:n,possibleConnectionEntityIds:t},o=[];for(let[e,t]of i.entries()){let n=`${e}_ids`;a[n]=t,o.push(`MATCH (n:${e}) WHERE id(n) IN $${n} WITH n MATCH (n)-[r]-(m) WHERE id(m) IN $possibleConnectionEntityIds AND NOT id(r) IN $relationshipExclusionIds RETURN id(r), type(r)`)}let s=o.join(` UNION `),c=new Map,l=(await C(this.knowledgeGraph,new w({openCypherQuery:s,bindParameters:a}),{signal:r?.signal})).resultRowsStream.getReader();for(;;){let{done:e,value:t}=await l.read();if(e)break;for(let e=0;e<t.length;e++){let n=t[e],r=c.get(n[1]);r||(r=new Set,c.set(n[1],r)),r.add(n[0])}}let u=[];for(let[e,t]of c)for(let n of t)u.push({id:n,typeName:e});return u}async refreshCacheContent(e,t,r,o=!0,s){let c=x.getInstance(),l=[],u=new Map,d=new Map;this.knowledgeGraph.dataModel.entityTypes?.forEach(e=>{e.name&&d.set(e.name,e)}),this.knowledgeGraph.dataModel.relationshipTypes?.forEach(e=>{e.name&&d.set(e.name,e)}),!e&&!this.inclusionModeDefinition?(this.knowledgeGraph.dataModel.entityTypes?.forEach(e=>{e.name&&u.set(e.name,null)}),this.knowledgeGraph.dataModel.entityTypes?.forEach(e=>{e.name&&u.set(e.name,null)})):e?e.forEach(e=>{if(this.memberIdTypeLookup.has(e))for(let t of this.memberIdTypeLookup.get(e))u.has(t)?u.get(t)?.push(e):u.set(t,[e])}):this.inclusionModeDefinition?.namedTypeDefinitions?.forEach((e,t)=>{e.useAllData?u.set(t,null):e.members&&e.members.forEach(e=>{u.has(t)&&u.get(t)!==null?u.get(t)?.push(e.id):u.set(t,[e.id])})});for(let[e,a]of u){let u=new Set(a),f=new Promise((l,f)=>{(async()=>{let l=new Set,f=[],p=``,h=!1;if(t||d.get(e)?.properties?.forEach(e=>{e.name&&l.add(e.name)}),r&&this.geographicLookup.has(e)){let t=this.geographicLookup.get(e)?.name;t&&l.add(t)}if(this.entityTypeNames.has(e))p=`MATCH (n:${e}) ${a?`WHERE id(n) IN $ids `:``}return ID(n)`,l.forEach(e=>{p+=`, n.${e}`,f.push(e)});else if(this.relationshipTypeNames.has(e))h=!0,p=`MATCH ()-[n:${e}]->() ${a?`WHERE id(n) IN $ids `:``}return ID(n), id(startNode(n)), id(endNode(n))`,l.forEach(e=>{p+=`, n.${e}`,f.push(e)});else throw new n(`knowledge-graph:layer-data-manager`,`The graph type of ${e} could not be determined. Was this type set in the KG data model and inclusion definition?`);let g;g=a?new w({openCypherQuery:p,bindParameters:{ids:a}}):new w({openCypherQuery:p});let _=(await C(this.knowledgeGraph,g,{signal:s?.signal})).resultRowsStream.getReader();for(;;){let{done:t,value:n}=await _.read();if(t)break;let r=[];for(let e=0;e<n.length;e++){let t=n[e],a=0,o=0,s={properties:{}};for(s.id=t[a],a++,o++,h&&(s.originId=t[a],a++,o++,s.destinationId=t[a],a++,o++,i(this.nodeConnectionsLookup,s.originId,()=>new Set).add(s.id),i(this.nodeConnectionsLookup,s.destinationId,()=>new Set).add(s.id),i(this.relationshipConnectionsLookup,s.id,()=>[s.originId,s.destinationId]));a<t.length;a++)s.properties[f[a-o]]=t[a];u.delete(s.id),r.push(s)}let a=c.writeToStore(r,m,this.geographicLookup.get(e)?.name);this.sublayerCaches.has(e)||this.sublayerCaches.set(e,new Map),o&&!this.inclusionModeDefinition?.namedTypeDefinitions.has(e)&&this.inclusionModeDefinition?.namedTypeDefinitions.set(e,{useAllData:!1,members:new Map}),o&&!this.inclusionModeDefinition?.namedTypeDefinitions.get(e).members&&(this.inclusionModeDefinition.namedTypeDefinitions.get(e).members=new Map);let s=this.sublayerCaches.get(e);a.forEach(t=>{s?.set(t.attributes[m],t),o&&!this.inclusionModeDefinition?.namedTypeDefinitions.get(e).members.has(t.attributes[m])&&(this.inclusionModeDefinition?.namedTypeDefinitions.get(e).members.set(t.attributes[m],{id:t.attributes[m]}),i(this.memberIdTypeLookup,t.attributes[m],()=>new Set).add(e))})}let v=this.inclusionModeDefinition?.namedTypeDefinitions.get(e);if(v)for(let e of u)v.members?.delete(e)})().then(()=>{l(null)}).catch(e=>{e.name===`AbortError`?l(null):f(e)})});l.push(f),this._processingCacheUpdatesLookup.get(e)?.push(f)}if(await Promise.all(l),s?.signal?.aborted)throw a()}removeFromLayer(e){let t=new Set,n=new Set(e.map(e=>e.id));for(let n of e)t.add(n.typeName),this.memberIdTypeLookup.get(n.id)?.size===1?this.memberIdTypeLookup.delete(n.id):this.memberIdTypeLookup.get(n.id)?.delete(n.typeName),this.inclusionModeDefinition?.namedTypeDefinitions.forEach((e,t)=>{t===n.typeName&&e.members?.has(n.id)&&e.members.delete(n.id)});t.forEach(e=>{this.sublayerCaches.get(e)?.forEach((t,r)=>{n.has(r)&&this.sublayerCaches.get(e)?.delete(r)})})}async retrieveDataFromService(e,t,r,i){let a=x.getInstance(),s=new Set,c=[],h=``,g=[],_=!1,v,T=t.graphType===`relationship`,E=this.inclusionModeDefinition?.namedTypeDefinitions?.get(t.objectType.name)?.useAllData,D=r.sublayerIdsCache.get(t.objectType.name),O=!E&&D?Array.from(D).sort():null,k={systemOidFieldName:m,supportedSqlTypes:new Set([`column-reference`,`string`,`number`,`binary-expression`]),supportedSqlOperators:new Set([`=`,`<`,`<=`,`<>`,`>`,`>=`,`AND`,`OR`,`LIKE`]),unsupportedOperationFound:!1};if(this.inclusionModeDefinition?.namedTypeDefinitions?.get(t.objectType.name)?.useAllData)this.inclusionModeDefinition?.namedTypeDefinitions?.get(t.objectType.name)?.useAllData&&e.objectIds!=null&&(O=e.objectIds);else if(e.objectIds!=null&&O&&O.length>0){let t=e.objectIds,n=O.filter(e=>t.includes(e));if(t.length>0&&n.length===0)return{features:[],cypherTranslationApplied:_};e.objectIds=n}else if(e.objectIds!=null)O=e.objectIds;else if(this.inclusionModeDefinition?.namedTypeDefinitions.has(t.objectType.name)&&(!this.inclusionModeDefinition.namedTypeDefinitions.get(t.objectType.name)?.members||this.inclusionModeDefinition.namedTypeDefinitions.get(t.objectType.name)?.members?.size<1))return e.objectIds=[],{features:[],cypherTranslationApplied:_};else e.objectIds=O;if(e.outFields!=null){let n=e.outFields;n.includes(`*`)?t.fields.forEach(e=>{s.add(e.name)}):n.forEach(e=>{e!==m&&e!==t.geometryFieldName&&s.add(e)})}if(e.geometry!=null){let i=e.geometry,a,m=r.dataManager.knowledgeGraph.serviceDefinition,g=m?.spatialReference,_=m?.serviceCapabilities?.geometryCapabilities,y=_?.geometryMaxBoundingRectangleSizeX,b=_?.geometryMaxBoundingRectangleSizeY;if(i.type===`point`){let e=i;e.spatialReference?.isWGS84||(await d(e.spatialReference,p),e=f(e,p)),a=new l({spatialReference:p,xmin:e.x-1e-4,ymin:e.y-1e-4,xmax:e.x+1e-4,ymax:e.y+1e-4})}else i?.extent?.spatialReference&&!i.spatialReference?.isWGS84?(await d(i.extent.spatialReference,p),a=f(i.extent,p)):a=i.extent;if(y&&b&&g){if(g.wkid!==4326){let e=new l({spatialReference:g,xmax:y,ymax:b}),t=f(e,p);y=t.xmax,b=t.ymax}if(a.xmax-a.xmin>y)throw new n(`knowledge-graph:layer-data-manager`,`Extent x bounds should be within ${y}° latitude, limit exceeded`);if(a.ymax-a.ymin>b)throw new n(`knowledge-graph:layer-data-manager`,`Extent y bounds should be within ${b}° longitude, limit exceeded`)}if(e.where!=null&&e.where!==`1=1`){let n=await o(e.where.toUpperCase(),t.fieldsIndex);t.fields.forEach(e=>{n.fieldNames.includes(e.name)&&s.add(e.name)})}h=T?`Match ()-[n:${t.objectType.name}]->() WHERE esri.graph.ST_Intersects($param_filter_geom, n.${t.geometryFieldName}) return ID(n), id(startNode(r)), id(endNode(r))`:`Match (n:${t.objectType.name}) WHERE esri.graph.ST_Intersects($param_filter_geom, n.${t.geometryFieldName}) return ID(n)`,t.geometryFieldName&&s.add(t.geometryFieldName),s.forEach(e=>{h+=`, n.${e}`,c.push(e)}),v=new w({openCypherQuery:h,bindParameters:{param_filter_geom:new u({rings:S(a)})}})}else{let n=``;if(e.where!=null&&e.where!==`1=1`){let r=await o(e.where,t.fieldsIndex);t.fields.forEach(e=>{r.fieldNames.includes(e.name)&&s.add(e.name)}),n=y(r.parseTree,k),k.unsupportedOperationFound&&(n=``)}let r=``;r=T?`Match ()-[n:${t.objectType.name}]->()`:`Match (n:${t.objectType.name})`;let i=!1;O&&(i=!0,r+=` WHERE ID(n) IN $ids`),n&&(r+=i?` AND`:` WHERE`,r+=` ${n}`),r+=` return ID(n)`,T&&(r+=`, id(startNode(n)), id(endNode(n))`),e.returnGeometry&&t.geometryFieldName&&s.add(t.geometryFieldName),s.forEach(e=>{r+=`, n.${e}`,c.push(e)}),k.unsupportedOperationFound||(r=b(r,e),_=!0),v=O?new w({openCypherQuery:r,bindParameters:{ids:O}}):new w({openCypherQuery:r})}let A=(await C(r.dataManager.knowledgeGraph,v,i)).resultRowsStream.getReader();for(;;){let{done:e,value:n}=await A.read();if(e)break;let i=[];for(let e=0;e<n.length;e++){let t=n[e],r=0,a=0,o={properties:{}};for(o.id=t[r],r++,a++,T&&(o.originId=t[r],r++,a++,o.destinationId=t[r],r++,a++);r<t.length;r++)o.properties[c[r-a]]=t[r];i.push(o)}g=g.concat(a.writeToStore(i,m,r.dataManager.geographicLookup.get(t.objectType.name)?.name))}return{features:g,cypherTranslationApplied:_}}_isEndEntitySpatial(e,t,n){for(let r of e??[])if(this.entityTypeNames.has(r)){let e=this.geographicLookup.get(r),i=e&&this.sublayerCaches.get(r)?.get(t.attributes[n]);if(e&&i?.attributes[e.name])return!0}return!1}_getNamedTypeIdMapFromNodeIds(e){let t=new Map;return e.forEach(e=>{if(this.memberIdTypeLookup.has(e))for(let n of this.memberIdTypeLookup.get(e)){if(!this.entityTypeNames.has(n))return;t.has(n)?t.get(n)?.push(e):t.set(n,[e])}}),t}};e([s()],E.prototype,`knowledgeGraph`,void 0),e([s()],E.prototype,`inclusionModeDefinition`,void 0),e([s()],E.prototype,`entityTypeNames`,void 0),e([s()],E.prototype,`relationshipTypeNames`,void 0),e([s()],E.prototype,`geographicLookup`,void 0),e([s()],E.prototype,`sublayerCaches`,void 0),e([s()],E.prototype,`nodeConnectionsLookup`,void 0),e([s()],E.prototype,`relationshipConnectionsLookup`,void 0),e([s()],E.prototype,`memberIdTypeLookup`,void 0),E=e([c(`esri.layers.knowledgeGraph.KnowledgeGraphLayerDataManager`)],E);export{E as KnowledgeGraphLayerDataManager};
2
+ import{__decorate as e}from"tslib";import t from"../../core/Accessor.js";import n from"../../core/Error.js";import r from"../../core/Logger.js";import{getOrCreateMapValue as i}from"../../core/MapUtils.js";import{createAbortError as a}from"../../core/promiseUtils.js";import{parseWhereClause as o}from"../../core/sql.js";import{property as s,subclass as c}from"../../core/accessorSupport/decorators.js";import l from"../../geometry/Extent.js";import u from"../../geometry/Polygon.js";import{initializeProjection as d,project as f}from"../../geometry/projectionUtils.js";import{wgs84 as p}from"../../geometry/support/spatialReferenceUtils.js";import{systemOidFieldName as m,systemOriginIdFieldName as h,systemDestinationIdFieldName as g,systemIsSpatialFieldName as _,systemLayoutGeometryFieldName as v}from"./constants.js";import{recursiveParseSqlToCypher as y,addAdditionalClausesToCypher as b}from"./cypherUtils.js";import x from"./SessionMemoryStorage.js";import{utilsExtentToInBoundsRings as S}from"./supportUtils.js";import{executeQueryStreaming as C}from"../../rest/knowledgeGraphService.js";import w from"../../rest/knowledgeGraph/GraphQueryStreaming.js";import T from"../../rest/support/Query.js";let E=class extends t{constructor(e){super(e),this._processingCacheUpdatesLookup=new Map,this.knowledgeGraph=null,this.inclusionModeDefinition={generateAllSublayers:!0,namedTypeDefinitions:new Map},this.entityTypeNames=new Set,this.relationshipTypeNames=new Set,this.geographicLookup=new Map,this.sublayerCaches=new Map,this.nodeConnectionsLookup=new Map,this.relationshipConnectionsLookup=new Map,this.memberIdTypeLookup=new Map;let t=new Map;e.knowledgeGraph.dataModel.entityTypes?.forEach(n=>{n.name&&(t.set(n.name,`entity`),this._processingCacheUpdatesLookup.set(n.name,[]),(!e.inclusionModeDefinition||e.inclusionModeDefinition?.generateAllSublayers)&&this.entityTypeNames.add(n.name),n.properties?.forEach(e=>{e.geometryType&&e.geometryType!==`esriGeometryNull`&&this.geographicLookup.set(n.name,{name:e.name??``,geometryType:e.geometryType})}))}),e.knowledgeGraph.dataModel.relationshipTypes?.forEach(n=>{n.name&&(t.set(n.name,`relationship`),this._processingCacheUpdatesLookup.set(n.name,[]),(!e.inclusionModeDefinition||e.inclusionModeDefinition?.generateAllSublayers)&&this.relationshipTypeNames.add(n.name),n.properties?.forEach(e=>{e.geometryType&&e.geometryType!==`esriGeometryNull`&&this.geographicLookup.set(n.name,{name:e.name??``,geometryType:e.geometryType})}))}),e.inclusionModeDefinition?.namedTypeDefinitions.forEach((n,a)=>{if(t.get(a)===`entity`)this.entityTypeNames.add(a);else if(t.get(a)===`relationship`)this.relationshipTypeNames.add(a);else{r.getLogger(this).warn(`A named type, ${a}, was in the inclusion list that wasn't in the data model and will be removed`),e.inclusionModeDefinition?.namedTypeDefinitions.delete(a);return}let o=new Map;n.members?.forEach(e=>{i(this.memberIdTypeLookup,e.id,()=>new Set).add(a)}),this.sublayerCaches.set(a,o)})}addToLayer(e){e.forEach(({typeName:e,id:t})=>{if(!this.inclusionModeDefinition)throw new n(`knowledge-graph:layer-data-manager`,`You cannot add to a layer's exclusion list if it was not created with an exclusion list originally`);if(!this.inclusionModeDefinition.namedTypeDefinitions.has(e)){let n=new Map;n.set(t,{id:t}),this.inclusionModeDefinition.namedTypeDefinitions.set(e,{useAllData:!1,members:n}),i(this.memberIdTypeLookup,t,()=>new Set).add(e)}else if(this.inclusionModeDefinition.namedTypeDefinitions.has(e)){let n=this.inclusionModeDefinition.namedTypeDefinitions.get(e);n.members||=new Map,n.members.set(t,{id:t}),i(this.memberIdTypeLookup,t,()=>new Set).add(e)}})}getById(e){return x.getInstance().readFromStoreById(e)}async getData(e,t,n,r){if(t.objectType.name&&this.inclusionModeDefinition?.namedTypeDefinitions&&this.inclusionModeDefinition.namedTypeDefinitions.size>0&&!this.inclusionModeDefinition.namedTypeDefinitions.has(t.objectType.name))return{features:[],cypherTranslationApplied:!1};let i;if(i=e||new T({where:`1=1`,outFields:[`*`]}),n.type===`link-chart`){let e=n,r=this._processingCacheUpdatesLookup.get(t.objectType.name??``),a=i.outFields;a&&a.length===1&&a[0]===m&&i.where===`1=1`||await Promise.all(r??[]);let o=this.sublayerCaches.has(t.objectType.name??``)?Array.from(this.sublayerCaches.get(t.objectType.name)?.values()):[],s=[];return o.forEach(n=>{if(this.relationshipTypeNames.has(t.objectType.name)){n.geometry=e.relationshipLinkChartDiagramLookup.get(n.attributes[t.objectIdField]);let r=this.memberIdTypeLookup.get(n.attributes[h]),i=this.memberIdTypeLookup.get(n.attributes[g]),a=this._isEndEntitySpatial(r,n,h),o=this._isEndEntitySpatial(i,n,g);n.attributes[_]=Number(a&&o)}else{n.geometry=e.entityLinkChartDiagramLookup.get(n.attributes[t.objectIdField]);let r=this.geographicLookup.get(t.objectType.name);r&&n.attributes[r.name]?n.attributes[_]=1:n.attributes[_]=0}n.attributes[v]=n.geometry,s.push(n)}),{features:s,cypherTranslationApplied:!1}}return this.retrieveDataFromService(i,t,n,r)}async getConnectedRecordIds(e,t,n){let r=[],i=``,a=this._getNamedTypeIdMapFromNodeIds(e);if(t&&t?.length!==0){for(let e of t)i=i+e+`|`;i=i.slice(0,-1)}let o={},s=[];for(let[e,n]of a){let r=`${e}_ids`;o[r]=n,t&&t?.length!==0?s.push(`MATCH (n:${e}) WHERE id(n) IN $${r} WITH n MATCH (n)-[r:${i}]-(m) RETURN id(r), type(r), id(m), labels(m)[0]`):s.push(`MATCH (n:${e}) WHERE id(n) IN $${r} WITH n MATCH (n)-[r]-(m) RETURN id(r), type(r), id(m), labels(m)[0]`)}if(!s.length)return r;let c=s.join(` UNION `),l=(await C(this.knowledgeGraph,new w({openCypherQuery:c,bindParameters:o}),{signal:n?.signal})).resultRowsStream.getReader();for(;;){let{done:e,value:t}=await l.read();if(e)break;for(let e=0;e<t.length;e++){let n=t[e];r.push({id:n[0],typeName:n[1]}),r.push({id:n[2],typeName:n[3]})}}return r}async getRelationshipsBetweenNodes(e,t,n){let r=this._getNamedTypeIdMapFromNodeIds(e);if(r.size===0)return[];let i={relationshipExclusionIds:t,possibleConnectionEntityIds:e},a=[];for(let[e,t]of r.entries()){let n=`${e}_ids`;i[n]=t,a.push(`MATCH (n:${e}) WHERE id(n) IN $${n} WITH n MATCH (n)-[r]->(m) WHERE id(m) IN $possibleConnectionEntityIds AND NOT id(r) IN $relationshipExclusionIds RETURN id(r), type(r)`)}let o=a.join(` UNION `),s=[],c=(await C(this.knowledgeGraph,new w({openCypherQuery:o,bindParameters:i}),{signal:n?.signal})).resultRowsStream.getReader();for(;;){let{done:e,value:t}=await c.read();if(e)break;for(let e=0;e<t.length;e++){let n=t[e];s.push({id:n[0],typeName:n[1]})}}return s}async getRelationshipsFromNodes(e,t,n,r){let i=this._getNamedTypeIdMapFromNodeIds(e);if(i.size===0||t.length===0)return[];let a={relationshipExclusionIds:n,possibleConnectionEntityIds:t},o=[];for(let[e,t]of i.entries()){let n=`${e}_ids`;a[n]=t,o.push(`MATCH (n:${e}) WHERE id(n) IN $${n} WITH n MATCH (n)-[r]-(m) WHERE id(m) IN $possibleConnectionEntityIds AND NOT id(r) IN $relationshipExclusionIds RETURN id(r), type(r)`)}let s=o.join(` UNION `),c=new Map,l=(await C(this.knowledgeGraph,new w({openCypherQuery:s,bindParameters:a}),{signal:r?.signal})).resultRowsStream.getReader();for(;;){let{done:e,value:t}=await l.read();if(e)break;for(let e=0;e<t.length;e++){let n=t[e],r=c.get(n[1]);r||(r=new Set,c.set(n[1],r)),r.add(n[0])}}let u=[];for(let[e,t]of c)for(let n of t)u.push({id:n,typeName:e});return u}async refreshCacheContent(e,t,r,o=!0,s){let c=x.getInstance(),l=[],u=new Map,d=new Map;this.knowledgeGraph.dataModel.entityTypes?.forEach(e=>{e.name&&d.set(e.name,e)}),this.knowledgeGraph.dataModel.relationshipTypes?.forEach(e=>{e.name&&d.set(e.name,e)}),!e&&!this.inclusionModeDefinition?(this.knowledgeGraph.dataModel.entityTypes?.forEach(e=>{e.name&&u.set(e.name,null)}),this.knowledgeGraph.dataModel.entityTypes?.forEach(e=>{e.name&&u.set(e.name,null)})):e?e.forEach(e=>{if(this.memberIdTypeLookup.has(e))for(let t of this.memberIdTypeLookup.get(e))u.has(t)?u.get(t)?.push(e):u.set(t,[e])}):this.inclusionModeDefinition?.namedTypeDefinitions?.forEach((e,t)=>{e.useAllData?u.set(t,null):e.members&&e.members.forEach(e=>{u.has(t)&&u.get(t)!==null?u.get(t)?.push(e.id):u.set(t,[e.id])})});for(let[e,a]of u){let u=new Set(a),f=new Promise((l,f)=>{(async()=>{let l=new Set,f=[],p=``,h=!1;if(t||d.get(e)?.properties?.forEach(e=>{e.name&&l.add(e.name)}),r&&this.geographicLookup.has(e)){let t=this.geographicLookup.get(e)?.name;t&&l.add(t)}if(this.entityTypeNames.has(e))p=`MATCH (n:${e}) ${a?`WHERE id(n) IN $ids `:``}return ID(n)`,l.forEach(e=>{p+=`, n.${e}`,f.push(e)});else if(this.relationshipTypeNames.has(e))h=!0,p=`MATCH ()-[n:${e}]->() ${a?`WHERE id(n) IN $ids `:``}return ID(n), id(startNode(n)), id(endNode(n))`,l.forEach(e=>{p+=`, n.${e}`,f.push(e)});else throw new n(`knowledge-graph:layer-data-manager`,`The graph type of ${e} could not be determined. Was this type set in the KG data model and inclusion definition?`);let g;g=a?new w({openCypherQuery:p,bindParameters:{ids:a}}):new w({openCypherQuery:p});let _=(await C(this.knowledgeGraph,g,{signal:s?.signal})).resultRowsStream.getReader();for(;;){let{done:t,value:n}=await _.read();if(t)break;let r=[];for(let e=0;e<n.length;e++){let t=n[e],a=0,o=0,s={properties:{}};for(s.id=t[a],a++,o++,h&&(s.originId=t[a],a++,o++,s.destinationId=t[a],a++,o++,i(this.nodeConnectionsLookup,s.originId,()=>new Set).add(s.id),i(this.nodeConnectionsLookup,s.destinationId,()=>new Set).add(s.id),i(this.relationshipConnectionsLookup,s.id,()=>[s.originId,s.destinationId]));a<t.length;a++)s.properties[f[a-o]]=t[a];u.delete(s.id),r.push(s)}let a=c.writeToStore(r,m,this.geographicLookup.get(e)?.name);this.sublayerCaches.has(e)||this.sublayerCaches.set(e,new Map),o&&!this.inclusionModeDefinition?.namedTypeDefinitions.has(e)&&this.inclusionModeDefinition?.namedTypeDefinitions.set(e,{useAllData:!1,members:new Map}),o&&!this.inclusionModeDefinition?.namedTypeDefinitions.get(e).members&&(this.inclusionModeDefinition.namedTypeDefinitions.get(e).members=new Map);let s=this.sublayerCaches.get(e);a.forEach(t=>{s?.set(t.attributes[m],t),o&&!this.inclusionModeDefinition?.namedTypeDefinitions.get(e).members.has(t.attributes[m])&&(this.inclusionModeDefinition?.namedTypeDefinitions.get(e).members.set(t.attributes[m],{id:t.attributes[m]}),i(this.memberIdTypeLookup,t.attributes[m],()=>new Set).add(e))})}let v=this.inclusionModeDefinition?.namedTypeDefinitions.get(e);if(v)for(let e of u)v.members?.delete(e)})().then(()=>{l(null)}).catch(e=>{e.name===`AbortError`?l(null):f(e)})});l.push(f),this._processingCacheUpdatesLookup.get(e)?.push(f)}if(await Promise.all(l),s?.signal?.aborted)throw a()}removeFromLayer(e){let t=new Set,n=new Set(e.map(e=>e.id));for(let n of e)t.add(n.typeName),this.memberIdTypeLookup.get(n.id)?.size===1?this.memberIdTypeLookup.delete(n.id):this.memberIdTypeLookup.get(n.id)?.delete(n.typeName),this.inclusionModeDefinition?.namedTypeDefinitions.forEach((e,t)=>{t===n.typeName&&e.members?.has(n.id)&&e.members.delete(n.id)});t.forEach(e=>{this.sublayerCaches.get(e)?.forEach((t,r)=>{n.has(r)&&this.sublayerCaches.get(e)?.delete(r)})})}async retrieveDataFromService(e,t,r,i){let a=x.getInstance(),s=new Set,c=[],h=``,g=[],_=!1,v,T=t.graphType===`relationship`,E=this.inclusionModeDefinition?.namedTypeDefinitions?.get(t.objectType.name)?.useAllData,D=r.sublayerIdsCache.get(t.objectType.name),O=!E&&D?Array.from(D).sort():null,k={systemOidFieldName:m,supportedSqlTypes:new Set([`column-reference`,`string`,`number`,`binary-expression`]),supportedSqlOperators:new Set([`=`,`<`,`<=`,`<>`,`>`,`>=`,`AND`,`OR`,`LIKE`]),unsupportedOperationFound:!1};if(this.inclusionModeDefinition?.namedTypeDefinitions?.get(t.objectType.name)?.useAllData)this.inclusionModeDefinition?.namedTypeDefinitions?.get(t.objectType.name)?.useAllData&&e.objectIds!=null&&(O=e.objectIds);else{if(!O?.length)return{features:[],cypherTranslationApplied:_};if(e.objectIds!=null){let t=e.objectIds,n=O.filter(e=>t.includes(e));if(t.length>0&&n.length===0)return{features:[],cypherTranslationApplied:_};e.objectIds=n,n.length>0&&(O=n)}else e.objectIds=O}if(e.outFields!=null){let n=e.outFields;n.includes(`*`)?t.fields.forEach(e=>{s.add(e.name)}):n.forEach(e=>{e!==m&&e!==t.geometryFieldName&&s.add(e)})}if(e.geometry!=null){let i=e.geometry,a,m=r.dataManager.knowledgeGraph.serviceDefinition,g=m?.spatialReference,_=m?.serviceCapabilities?.geometryCapabilities,y=_?.geometryMaxBoundingRectangleSizeX,b=_?.geometryMaxBoundingRectangleSizeY;if(i.type===`point`){let e=i;e.spatialReference?.isWGS84||(await d(e.spatialReference,p),e=f(e,p)),a=new l({spatialReference:p,xmin:e.x-1e-4,ymin:e.y-1e-4,xmax:e.x+1e-4,ymax:e.y+1e-4})}else i?.extent?.spatialReference&&!i.spatialReference?.isWGS84?(await d(i.extent.spatialReference,p),a=f(i.extent,p)):a=i.extent;if(y&&b&&g){if(g.wkid!==4326){let e=new l({spatialReference:g,xmax:y,ymax:b}),t=f(e,p);y=t.xmax,b=t.ymax}if(a.xmax-a.xmin>y)throw new n(`knowledge-graph:layer-data-manager`,`Extent x bounds should be within ${y}° latitude, limit exceeded`);if(a.ymax-a.ymin>b)throw new n(`knowledge-graph:layer-data-manager`,`Extent y bounds should be within ${b}° longitude, limit exceeded`)}if(e.where!=null&&e.where!==`1=1`){let n=await o(e.where.toUpperCase(),t.fieldsIndex);t.fields.forEach(e=>{n.fieldNames.includes(e.name)&&s.add(e.name)})}h=T?`Match ()-[n:${t.objectType.name}]->() WHERE esri.graph.ST_Intersects($param_filter_geom, n.${t.geometryFieldName}) return ID(n), id(startNode(r)), id(endNode(r))`:`Match (n:${t.objectType.name}) WHERE esri.graph.ST_Intersects($param_filter_geom, n.${t.geometryFieldName}) return ID(n)`,t.geometryFieldName&&s.add(t.geometryFieldName),s.forEach(e=>{h+=`, n.${e}`,c.push(e)}),v=new w({openCypherQuery:h,bindParameters:{param_filter_geom:new u({rings:S(a)})}})}else{let n=``;if(e.where!=null&&e.where!==`1=1`){let r=await o(e.where,t.fieldsIndex);t.fields.forEach(e=>{r.fieldNames.includes(e.name)&&s.add(e.name)}),n=y(r.parseTree,k),k.unsupportedOperationFound&&(n=``)}let r=``;r=T?`Match ()-[n:${t.objectType.name}]->()`:`Match (n:${t.objectType.name})`;let i=!1;O&&(i=!0,r+=` WHERE ID(n) IN $ids`),n&&(r+=i?` AND`:` WHERE`,r+=` ${n}`),r+=` return ID(n)`,T&&(r+=`, id(startNode(n)), id(endNode(n))`),e.returnGeometry&&t.geometryFieldName&&s.add(t.geometryFieldName),s.forEach(e=>{r+=`, n.${e}`,c.push(e)}),k.unsupportedOperationFound||(r=b(r,e),_=!0),v=O?new w({openCypherQuery:r,bindParameters:{ids:O}}):new w({openCypherQuery:r})}let A=(await C(r.dataManager.knowledgeGraph,v,i)).resultRowsStream.getReader();for(;;){let{done:e,value:n}=await A.read();if(e)break;let i=[];for(let e=0;e<n.length;e++){let t=n[e],r=0,a=0,o={properties:{}};for(o.id=t[r],r++,a++,T&&(o.originId=t[r],r++,a++,o.destinationId=t[r],r++,a++);r<t.length;r++)o.properties[c[r-a]]=t[r];i.push(o)}g=g.concat(a.writeToStore(i,m,r.dataManager.geographicLookup.get(t.objectType.name)?.name))}return{features:g,cypherTranslationApplied:_}}_isEndEntitySpatial(e,t,n){for(let r of e??[])if(this.entityTypeNames.has(r)){let e=this.geographicLookup.get(r),i=e&&this.sublayerCaches.get(r)?.get(t.attributes[n]);if(e&&i?.attributes[e.name])return!0}return!1}_getNamedTypeIdMapFromNodeIds(e){let t=new Map;return e.forEach(e=>{if(this.memberIdTypeLookup.has(e))for(let n of this.memberIdTypeLookup.get(e)){if(!this.entityTypeNames.has(n))return;t.has(n)?t.get(n)?.push(e):t.set(n,[e])}}),t}};e([s()],E.prototype,`knowledgeGraph`,void 0),e([s()],E.prototype,`inclusionModeDefinition`,void 0),e([s()],E.prototype,`entityTypeNames`,void 0),e([s()],E.prototype,`relationshipTypeNames`,void 0),e([s()],E.prototype,`geographicLookup`,void 0),e([s()],E.prototype,`sublayerCaches`,void 0),e([s()],E.prototype,`nodeConnectionsLookup`,void 0),e([s()],E.prototype,`relationshipConnectionsLookup`,void 0),e([s()],E.prototype,`memberIdTypeLookup`,void 0),E=e([c(`esri.layers.knowledgeGraph.KnowledgeGraphLayerDataManager`)],E);export{E as KnowledgeGraphLayerDataManager};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{result as e}from"../../core/asyncUtils.js";import t from"../../core/Error.js";import has from"../../core/has.js";import{assertIsSome as n}from"../../core/maybe.js";import{whenOrAbort as r,throwIfAbortError as i}from"../../core/promiseUtils.js";import{getMetersPerUnitForSR as a}from"../../core/units.js";import{initializeProjection as o,project as s}from"../../geometry/projectionUtils.js";import{fromExtent as c}from"../../geometry/support/aaBoundingRect.js";import{GeometryQueryContext as l,ExtentQueryContext as u,isTileInfoTilemapCache as d,getLods as f}from"./ElevationQueryContext.js";import{ElevationTile as p}from"./ElevationTile.js";import m from"./ElevationTileData.js";import{GeometryDescriptor as h}from"./GeometryDescriptor.js";import{TileElevationSampler as g}from"./TileElevationSampler.js";import{TileKey as _}from"./TileKey.js";async function v(e,n,r){if(e=r?.ignoreInvisibleLayers?e.filter(e=>e.visible):e.slice(),!e.length)throw new t(V,`Elevation queries require at least one elevation layer to fetch tiles from`);let i=h.fromGeometry(n),a={...A,...r,returnSampleInfo:!0},o=await y(e.pop(),i,a),s=await C(e,o,a);return s.geometry=s.geometry.export(),r?.returnSampleInfo||delete s.sampleInfo,s}async function y(e,n,r){if(!e)throw new t(V,`Elevation queries require an elevation layer to fetch tiles from`);if(!n||!(n instanceof h)&&n.type!==`point`&&n.type!==`multipoint`&&n.type!==`polyline`)throw new t(`elevation-query:invalid-geometry`,`Only point, polyline and multipoint geometries can be used to query elevation`);let i={...A,...r},a=i.signal;if(e.type===`integrated-mesh-3dtiles`){let t=h.fromGeometry(n);if(e.queryElevationCallback&&(has(`enable-feature:im-as-ground`)?e.isUsedAsGroundLayer:e.replacesTerrain)){let o=12.9*(r?.minDemResolution||0)+.71,s=await(await e.queryElevationCallback(t,{signal:a,maxGeometricError:o})).project(n.spatialReference,a);if(s){if(i.noDataValue!==void 0&&i.noDataValue!==Number.MAX_VALUE)for(let e of s.coordinates)e.z===Number.MAX_VALUE&&(e.z=i.noDataValue);let t=i.noDataValue??Number.MAX_VALUE,n=s.coordinates.map(n=>({demResolution:n.z===t?-1:1,source:e}));return{geometry:s.export(),noDataValue:t,sampleInfo:n}}}let o=t.coordinates.map(()=>({demResolution:-1,source:e}));return{geometry:t.export(),noDataValue:Number.MAX_VALUE,sampleInfo:o}}if(e.type===`integrated-mesh`){let t=h.fromGeometry(n),r=t.coordinates.map(()=>({demResolution:-1,source:e}));return{geometry:t.export(),noDataValue:Number.MAX_VALUE,sampleInfo:r}}let o=new l(e,n.spatialReference,i);return await e.load({signal:a}),await j(o,n,a),await w(o,a),await I(o,a),R(o),z(o,a)}async function b(e,n,r){if(e=Array.isArray(e)?e:[e],e=r?.ignoreInvisibleLayers?e.filter(e=>e.visible):e.slice(),e.length===0)throw new t(V,`Elevation queries require at least one elevation layer to fetch tiles from`);if(!n||n.type!==`extent`)throw new t(`elevation-query:invalid-extent`,`Invalid or undefined extent`);let i={...A,...r,returnSampleInfo:!0},a=x(e[e.length-1],n,i);if(e.length===1)return a;let o=await a;return S(e,n,o,i)}async function x(e,t,n,r){let i=n.signal;await e.load({signal:i});let a=t.spatialReference,c=e.tileInfo.spatialReference;a.equals(c)||(await o([{source:a,dest:c}],{signal:i}),t=s(t,c));let l=new u(e,t,n,r);await w(l,i),await I(l,i);let d=l.elevationTiles,f=l.layer.tileInfo,p=l.parameters.noDataValue;return new g({noDataValue:p,tiles:d,tileInfo:f})}async function S(e,t,n,r){if(e.pop(),!e.length)return n;let i=n.samplers.filter(e=>!e.tile.hasNoDataValues).map(e=>c(e.extent)),a=await x(e[e.length-1],t,r,i);if(a.samplers.length===0)return n;let o=n.samplers.concat(a.samplers),s=r.noDataValue;return S(e,t,new g({samplers:o,noDataValue:s}),r)}async function C(e,t,r){let i=t.geometry.coordinates,a=t.sampleInfo;n(a);let o=[],s=[];for(let t=0;t<i.length;t++)a[t].demResolution<0&&e.length&&(o.push(i[t]),s.push(t));let c=e.pop();if(c==null||o.length===0)return t;let l=await y(c,t.geometry.clone(o),r),u=l.sampleInfo;if(!u)throw Error(`no sampleInfo`);return s.forEach((e,t)=>{i[e].z=l.geometry.coordinates[t].z,a[e].demResolution=u[t].demResolution,a[e].source=u[t].source}),C(e,t,r)}async function w(e,n){e.type===`geometry`&&M(e);let r=e.parameters.demResolution;if(typeof r==`number`)P(e,r);else if(r===`finest-contiguous`)await T(e,n);else if(r===`auto`)await D(e,n);else throw new t(`elevation-query:invalid-dem-resolution`,`Invalid dem resolution value '${r}', expected a number, "finest-contiguous" or "auto"`)}async function T(e,t){let{tileInfo:n,tilemapCache:r}=e.layer;await E(e,k(n,r,e.parameters.minDemResolution),t)}async function E(e,n,a){let o=e.layer;if(e.selectTilesAtLOD(n),n<0)return;let s=o.tilemapCache,c=e.getTilesToFetch();try{if(s&&!d(s))await r(Promise.all(c.map(e=>s.fetchAvailability(e.level,e.row,e.col,{signal:a}))),a);else if(await I(e,a),!e.allElevationTilesFetched())throw e.clearElevationTiles(),new t(`elevation-query:has-unavailable-tiles`,`Some elevation tiles are unavailable`)}catch(t){i(t),await E(e,n-1,a)}}async function D(t,n){F(t),L(t);let a=t.layer.tilemapCache;if(!a||d(a))return O(t,n);let o=t.getTilesToFetch(),s={},c=o.map(async t=>{let r=new _(0,0,0),o=await e(a.fetchAvailabilityUpsample(t.level,t.row,t.col,r,{signal:n}));o.ok===!1?i(o.error):t.id!=null&&(s[t.id]=r)});await r(Promise.all(c),n),t.remapTiles(s)}async function O(e,t){let n=e.layer.tileInfo;await I(e,t);let r=!1;e.forEachTileToFetch((e,t)=>{n.upsampleTile(e)?r=!0:t()}),r&&await O(e,t)}function k(e,t,n=0){let r=f(e,t),i=r.length-1;if(n>0){let t=n/a(e.spatialReference),o=r.findIndex(e=>e.resolution<t);o===0?i=0:o>0&&(i=o-1)}return i}const A={maximumAutoTileRequests:20,noDataValue:0,returnSampleInfo:!1,demResolution:`auto`,minDemResolution:0,signal:null};async function j(e,n,r){let i,a=e.layer.tileInfo.spatialReference;if(n instanceof h?i=await n.project(a,r):(await o([{source:n.spatialReference,dest:a}],{signal:r}),i=s(n,a)),!i)throw new t(`elevation-query:spatial-reference-mismatch`,`Cannot query elevation in '${n.spatialReference.wkid}' on an elevation service in '${a.wkid}'`);e.geometry=h.fromGeometry(i)}function M(e){if(e.layer.fullExtent==null)return;let t=new p(new _(-1,-1,-1));t.sample=()=>e.parameters.noDataValue,e.outsideExtentTile=t;let n=e.layer.fullExtent;e.geometry.coordinates.forEach(e=>{let r=e.x,i=e.y;(r<n.xmin||r>n.xmax||i<n.ymin||i>n.ymax)&&(e.elevationTile=t)})}function N(e,t){let{tileInfo:n,tilemapCache:r}=e.layer,i=t/a(n.spatialReference),o=f(n,r),s=o[0],c=0;for(let e=1;e<o.length;e++){let t=o[e];Math.abs(t.resolution-i)<Math.abs(s.resolution-i)&&(s=t,c=e)}return c}function P(e,t){let n=N(e,t);e.selectTilesAtLOD(n)}function F(e){let{tileInfo:t,tilemapCache:n}=e.layer,r=k(t,n,e.parameters.minDemResolution);e.selectTilesAtLOD(r,e.parameters.maximumAutoTileRequests)}async function I(e,t){let n=e.getTilesToFetch(),i={},a=e.parameters.cache,o=e.parameters.noDataValue,s={noDataValue:o,signal:t},c=n.map(async t=>{if(t.id==null)return;let n=`${e.layer.uid}:${t.id}:${o}`,r=a?.get(n)??m.from(await e.layer.fetchTile(t.level,t.row,t.col,s));a?.put(n,r),i[t.id]=new p(t,r)});await r(Promise.allSettled(c),t),e.populateElevationTiles(i)}function L(e){let t=e.layer.tileInfo,n=0,r={},i=e=>{e.id!=null&&(e.id in r?r[e.id]++:(r[e.id]=1,n++))},a=e=>{if(e.id==null)return;let t=r[e.id];t===1?(delete r[e.id],n--):r[e.id]=t-1};e.forEachTileToFetch(i,a);let o=!0;for(;o&&(o=!1,e.forEachTileToFetch(r=>{n<=e.parameters.maximumAutoTileRequests||(a(r),t.upsampleTile(r)&&(o=!0),i(r))},a),o););}function R(e){e.geometry.coordinates.forEach(t=>{let n=t.elevationTile,r=e.parameters.noDataValue;if(n){let e=n.sample(t.x,t.y);e==null?t.elevationTile=null:r=e}t.z=r})}async function z(e,t){let r=await e.geometry.project(e.outSpatialReference,t);n(r);let i={geometry:r.export(),noDataValue:e.parameters.noDataValue};return e.parameters.returnSampleInfo&&(i.sampleInfo=B(e)),e.geometry.coordinates.forEach(e=>{e.tile=null,e.elevationTile=null}),i}function B(e){let t=e.layer.tileInfo,n=a(t.spatialReference);return e.geometry.coordinates.map(r=>{let i=-1;r.elevationTile&&r.elevationTile!==e.outsideExtentTile&&(i=t.lodAt(r.elevationTile.key.level).resolution*n);let a=i===-1?void 0:e.layer;return{demResolution:i,source:a}})}const V=`elevation-query:invalid-layer`;export{V as InvalidLayerError,b as createSampler,A as defaultOptions,k as getFinestLodIndex,y as query,v as queryAll};
2
+ import{result as e}from"../../core/asyncUtils.js";import t from"../../core/Error.js";import{assertIsSome as n}from"../../core/maybe.js";import{whenOrAbort as r,throwIfAbortError as i}from"../../core/promiseUtils.js";import{getMetersPerUnitForSR as a}from"../../core/units.js";import{initializeProjection as o,project as s}from"../../geometry/projectionUtils.js";import{fromExtent as c}from"../../geometry/support/aaBoundingRect.js";import{GeometryQueryContext as l,ExtentQueryContext as u,isTileInfoTilemapCache as d,getLods as f}from"./ElevationQueryContext.js";import{ElevationTile as p}from"./ElevationTile.js";import m from"./ElevationTileData.js";import{GeometryDescriptor as h}from"./GeometryDescriptor.js";import{TileElevationSampler as g}from"./TileElevationSampler.js";import{TileKey as _}from"./TileKey.js";async function v(e,n,r){if(e=r?.ignoreInvisibleLayers?e.filter(e=>e.visible):e.slice(),!e.length)throw new t(H,`Elevation queries require at least one elevation layer to fetch tiles from`);let i=h.fromGeometry(n),a={...j,...r,returnSampleInfo:!0},o=await y(e.pop(),i,a),s=await w(e,o,a);return s.geometry=s.geometry.export(),r?.returnSampleInfo||delete s.sampleInfo,s}async function y(e,n,r){if(!e)throw new t(H,`Elevation queries require an elevation layer to fetch tiles from`);if(!n||!(n instanceof h)&&n.type!==`point`&&n.type!==`multipoint`&&n.type!==`polyline`)throw new t(`elevation-query:invalid-geometry`,`Only point, polyline and multipoint geometries can be used to query elevation`);return e.queryElevationForGround(n,{...j,...r})}async function b(e,t,n){let{view:r,...i}={...j,...n},a=i.signal,o=new l(e,t.spatialReference,i);return await e.load({signal:a}),await M(o,t,a),await T(o,a),await L(o,a),z(o),B(o,a)}async function x(e,n,r){if(e=Array.isArray(e)?e:[e],e=r?.ignoreInvisibleLayers?e.filter(e=>e.visible):e.slice(),e.length===0)throw new t(H,`Elevation queries require at least one elevation layer to fetch tiles from`);if(!n||n.type!==`extent`)throw new t(`elevation-query:invalid-extent`,`Invalid or undefined extent`);let i={...j,...r,returnSampleInfo:!0},a=S(e[e.length-1],n,i);if(e.length===1)return a;let o=await a;return C(e,n,o,i)}async function S(e,t,n,r){let i=n.signal;await e.load({signal:i});let a=t.spatialReference,c=e.tileInfo.spatialReference;a.equals(c)||(await o([{source:a,dest:c}],{signal:i}),t=s(t,c));let l=new u(e,t,n,r);await T(l,i),await L(l,i);let d=l.elevationTiles,f=l.layer.tileInfo,p=l.parameters.noDataValue;return new g({noDataValue:p,tiles:d,tileInfo:f})}async function C(e,t,n,r){if(e.pop(),!e.length)return n;let i=n.samplers.filter(e=>!e.tile.hasNoDataValues).map(e=>c(e.extent)),a=await S(e[e.length-1],t,r,i);if(a.samplers.length===0)return n;let o=n.samplers.concat(a.samplers),s=r.noDataValue;return C(e,t,new g({samplers:o,noDataValue:s}),r)}async function w(e,t,r){let i=t.geometry.coordinates,a=t.sampleInfo;n(a);let o=[],s=[];for(let t=0;t<i.length;t++)a[t].demResolution<0&&e.length&&(o.push(i[t]),s.push(t));let c=e.pop();if(c==null||o.length===0)return t;let l=await y(c,t.geometry.clone(o),r),u=l.sampleInfo;if(!u)throw Error(`no sampleInfo`);return s.forEach((e,t)=>{i[e].z=l.geometry.coordinates[t].z,a[e].demResolution=u[t].demResolution,a[e].source=u[t].source}),w(e,t,r)}async function T(e,n){e.type===`geometry`&&N(e);let r=e.parameters.demResolution;if(typeof r==`number`)F(e,r);else if(r===`finest-contiguous`)await E(e,n);else if(r===`auto`)await O(e,n);else throw new t(`elevation-query:invalid-dem-resolution`,`Invalid dem resolution value '${r}', expected a number, "finest-contiguous" or "auto"`)}async function E(e,t){let{tileInfo:n,tilemapCache:r}=e.layer;await D(e,A(n,r,e.parameters.minDemResolution),t)}async function D(e,n,a){let o=e.layer;if(e.selectTilesAtLOD(n),n<0)return;let s=o.tilemapCache,c=e.getTilesToFetch();try{if(s&&!d(s))await r(Promise.all(c.map(e=>s.fetchAvailability(e.level,e.row,e.col,{signal:a}))),a);else if(await L(e,a),!e.allElevationTilesFetched())throw e.clearElevationTiles(),new t(`elevation-query:has-unavailable-tiles`,`Some elevation tiles are unavailable`)}catch(t){i(t),await D(e,n-1,a)}}async function O(t,n){I(t),R(t);let a=t.layer.tilemapCache;if(!a||d(a))return k(t,n);let o=t.getTilesToFetch(),s={},c=o.map(async t=>{let r=new _(0,0,0),o=await e(a.fetchAvailabilityUpsample(t.level,t.row,t.col,r,{signal:n}));o.ok===!1?i(o.error):t.id!=null&&(s[t.id]=r)});await r(Promise.all(c),n),t.remapTiles(s)}async function k(e,t){let n=e.layer.tileInfo;await L(e,t);let r=!1;e.forEachTileToFetch((e,t)=>{n.upsampleTile(e)?r=!0:t()}),r&&await k(e,t)}function A(e,t,n=0){let r=f(e,t),i=r.length-1;if(n>0){let t=n/a(e.spatialReference),o=r.findIndex(e=>e.resolution<t);o===0?i=0:o>0&&(i=o-1)}return i}const j={maximumAutoTileRequests:20,noDataValue:0,returnSampleInfo:!1,demResolution:`auto`,minDemResolution:0,signal:null};async function M(e,n,r){let i,a=e.layer.tileInfo.spatialReference;if(n instanceof h?i=await n.project(a,r):(await o([{source:n.spatialReference,dest:a}],{signal:r}),i=s(n,a)),!i)throw new t(`elevation-query:spatial-reference-mismatch`,`Cannot query elevation in '${n.spatialReference.wkid}' on an elevation service in '${a.wkid}'`);e.geometry=h.fromGeometry(i)}function N(e){if(e.layer.fullExtent==null)return;let t=new p(new _(-1,-1,-1));t.sample=()=>e.parameters.noDataValue,e.outsideExtentTile=t;let n=e.layer.fullExtent;e.geometry.coordinates.forEach(e=>{let r=e.x,i=e.y;(r<n.xmin||r>n.xmax||i<n.ymin||i>n.ymax)&&(e.elevationTile=t)})}function P(e,t){let{tileInfo:n,tilemapCache:r}=e.layer,i=t/a(n.spatialReference),o=f(n,r),s=o[0],c=0;for(let e=1;e<o.length;e++){let t=o[e];Math.abs(t.resolution-i)<Math.abs(s.resolution-i)&&(s=t,c=e)}return c}function F(e,t){let n=P(e,t);e.selectTilesAtLOD(n)}function I(e){let{tileInfo:t,tilemapCache:n}=e.layer,r=A(t,n,e.parameters.minDemResolution);e.selectTilesAtLOD(r,e.parameters.maximumAutoTileRequests)}async function L(e,t){let n=e.getTilesToFetch(),i={},a=e.parameters.cache,o=e.parameters.noDataValue,s={noDataValue:o,signal:t},c=n.map(async t=>{if(t.id==null)return;let n=`${e.layer.uid}:${t.id}:${o}`,r=a?.get(n)??m.from(await e.layer.fetchTile(t.level,t.row,t.col,s));a?.put(n,r),i[t.id]=new p(t,r)});await r(Promise.allSettled(c),t),e.populateElevationTiles(i)}function R(e){let t=e.layer.tileInfo,n=0,r={},i=e=>{e.id!=null&&(e.id in r?r[e.id]++:(r[e.id]=1,n++))},a=e=>{if(e.id==null)return;let t=r[e.id];t===1?(delete r[e.id],n--):r[e.id]=t-1};e.forEachTileToFetch(i,a);let o=!0;for(;o&&(o=!1,e.forEachTileToFetch(r=>{n<=e.parameters.maximumAutoTileRequests||(a(r),t.upsampleTile(r)&&(o=!0),i(r))},a),o););}function z(e){e.geometry.coordinates.forEach(t=>{let n=t.elevationTile,r=e.parameters.noDataValue;if(n){let e=n.sample(t.x,t.y);e==null?t.elevationTile=null:r=e}t.z=r})}async function B(e,t){let r=await e.geometry.project(e.outSpatialReference,t);n(r);let i={geometry:r.export(),noDataValue:e.parameters.noDataValue};return e.parameters.returnSampleInfo&&(i.sampleInfo=V(e)),e.geometry.coordinates.forEach(e=>{e.tile=null,e.elevationTile=null}),i}function V(e){let t=e.layer.tileInfo,n=a(t.spatialReference);return e.geometry.coordinates.map(r=>{let i=-1;r.elevationTile&&r.elevationTile!==e.outsideExtentTile&&(i=t.lodAt(r.elevationTile.key.level).resolution*n);let a=i===-1?void 0:e.layer;return{demResolution:i,source:a}})}const H=`elevation-query:invalid-layer`;export{H as InvalidLayerError,x as createSampler,j as defaultOptions,A as getFinestLodIndex,y as query,v as queryAll,b as queryElevationFromTiles};