@arcgis/core 6.0.0-next.15 → 6.0.0-next.17

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 (439) hide show
  1. package/analysis/LineOfSightAnalysis.d.ts +49 -32
  2. package/analysis/LineOfSightAnalysisObserver.d.ts +19 -3
  3. package/analysis/LineOfSightAnalysisTarget.d.ts +19 -3
  4. package/analysis/Viewshed.d.ts +23 -3
  5. package/analysis/ViewshedAnalysis.d.ts +33 -13
  6. package/arcade/geometry/operatorsWorkerConnection.js +1 -1
  7. package/assets/esri/core/workers/RemoteClient.js +1 -1
  8. package/assets/esri/core/workers/chunks/00d66e3fba5ab4d2aa3c.js +1 -0
  9. package/assets/esri/core/workers/chunks/{d994bcf0a65d1c07160f.js → 0320cbd825f9a4222042.js} +1 -1
  10. package/assets/esri/core/workers/chunks/14d5d219e7fe017f23f0.js +1 -0
  11. package/assets/esri/core/workers/chunks/164c8eeefa8232b2b191.js +2 -0
  12. package/assets/esri/core/workers/chunks/164e74d586297946a717.js +1 -0
  13. package/assets/esri/core/workers/chunks/1967b9c96045a5802d08.js +1 -0
  14. package/assets/esri/core/workers/chunks/{1bca39e0e651426bdbb5.js → 1b1d3f6916d2cb751435.js} +1 -1
  15. package/assets/esri/core/workers/chunks/{ed6e9d7f71bfd2691717.js → 1c77de1e79860f8d2228.js} +1 -1
  16. package/assets/esri/core/workers/chunks/1e40a26dcce4d1dadc28.js +1 -0
  17. package/assets/esri/core/workers/chunks/{261fea092ee7d27608a0.js → 20a2124cbe43e5527c40.js} +1 -1
  18. package/assets/esri/core/workers/chunks/237a1f68a0efbfe5b77c.js +1 -0
  19. package/assets/esri/core/workers/chunks/{3418877328f4f0830300.js → 24dac4970526a4e0ae63.js} +1 -1
  20. package/assets/esri/core/workers/chunks/26ceb0ff8d93dbb9b84f.js +1 -0
  21. package/assets/esri/core/workers/chunks/2853606099602f73d379.js +1 -0
  22. package/assets/esri/core/workers/chunks/2981e904ab62f3ed80d0.js +2 -0
  23. package/assets/esri/core/workers/chunks/2acf2952cef69e382a35.js +1 -0
  24. package/assets/esri/core/workers/chunks/32cc59e126df8c96a0cf.js +2 -0
  25. package/assets/esri/core/workers/chunks/{4df6cb1bee5d0720a43e.js → 34e0a8a3a2beea50f4f5.js} +1 -1
  26. package/assets/esri/core/workers/chunks/{481589c3eddad6e026ad.js → 369780276b2755361f7d.js} +1 -1
  27. package/assets/esri/core/workers/chunks/{1e0d2715d603f48a7e0b.js → 370aad23df597db80d65.js} +1 -1
  28. package/assets/esri/core/workers/chunks/3e30b96a8c75bd5b9ae2.js +1 -0
  29. package/assets/esri/core/workers/chunks/{25f19fc929f25ddd628c.js → 42753cf4965a94bc91ca.js} +1 -1
  30. package/assets/esri/core/workers/chunks/42d44c7d532df5ee70e9.js +1 -0
  31. package/assets/esri/core/workers/chunks/42e985a576d7aaeed0cf.js +1 -0
  32. package/assets/esri/core/workers/chunks/{6400446b7615b97c3521.js → 45f826554499c38968c6.js} +1 -1
  33. package/assets/esri/core/workers/chunks/48cc58890fddbcf69cef.js +1 -0
  34. package/assets/esri/core/workers/chunks/494bd434fee9032e1d02.js +1 -0
  35. package/assets/esri/core/workers/chunks/{33e4ff228a8c81b99022.js → 4abd3753cd9b80e4d937.js} +1 -1
  36. package/assets/esri/core/workers/chunks/{b564ec4e03478f5659db.js → 4c240ca50f70bf30813f.js} +1 -1
  37. package/assets/esri/core/workers/chunks/4c389472b8cdb0c55154.js +1 -0
  38. package/assets/esri/core/workers/chunks/4e4f747de424941a0bfa.js +1 -0
  39. package/assets/esri/core/workers/chunks/{70d3055f15d8b0cf4074.js → 532e9cda8ac3601d8892.js} +1 -1
  40. package/assets/esri/core/workers/chunks/5529831dd891382c79df.js +1 -0
  41. package/assets/esri/core/workers/chunks/{953ba13299e7aa92c1a0.js → 564565246dae080f5e6c.js} +1 -1
  42. package/assets/esri/core/workers/chunks/576248e9ae2654569420.js +1 -0
  43. package/assets/esri/core/workers/chunks/{2145a512d269d64036b0.js → 58c3ae6030def2ed5f31.js} +1 -1
  44. package/assets/esri/core/workers/chunks/5a19a9c3e01d3d415188.js +1 -0
  45. package/assets/esri/core/workers/chunks/5a830bc35adbedd33783.js +1 -0
  46. package/assets/esri/core/workers/chunks/{eb04e1717a1002cda3ab.js → 5b91e2dffdc84c006539.js} +1 -1
  47. package/assets/esri/core/workers/chunks/{aeaaff7a4b1a99540f52.js → 5cb26bbaa08114aec5ce.js} +1 -1
  48. package/assets/esri/core/workers/chunks/603fdbbe9534c614928f.js +1 -0
  49. package/assets/esri/core/workers/chunks/{4e6f40cbdb8c508e6df1.js → 60f92eb03c6e17ab4747.js} +1 -1
  50. package/assets/esri/core/workers/chunks/{67ebc5a3d46b254b725c.js → 612345f17f5eeb99ea8f.js} +1 -1
  51. package/assets/esri/core/workers/chunks/{1b077c92345ffb5916c2.js → 65c98f3449044fa4fd79.js} +1 -1
  52. package/assets/esri/core/workers/chunks/{2bd4ee083ca4ad221f8b.js → 65cb5e39c467a35621ca.js} +1 -1
  53. package/assets/esri/core/workers/chunks/661c6324529dd17b297e.js +1 -0
  54. package/assets/esri/core/workers/chunks/67a35155b8b4d36f171e.js +1 -0
  55. package/assets/esri/core/workers/chunks/68dd1fd2025c7125ead1.js +1 -0
  56. package/assets/esri/core/workers/chunks/{89e76de5ae3328d821a4.js → 69f6d5997b8ff1326e39.js} +1 -1
  57. package/assets/esri/core/workers/chunks/{ae31fd416bbb41a81392.js → 6ad309154fe84210d23c.js} +1 -1
  58. package/assets/esri/core/workers/chunks/{a40b6d8b5c73e06e14d4.js → 6c255c029d67423e4dac.js} +1 -1
  59. package/assets/esri/core/workers/chunks/7446d0dfebf93e86c098.js +1 -0
  60. package/assets/esri/core/workers/chunks/{688f2dbf784e66082308.js → 74c866e0b66e61751861.js} +1 -1
  61. package/assets/esri/core/workers/chunks/784d6c6949284ed6e10b.js +1 -0
  62. package/assets/esri/core/workers/chunks/{3ffda5bf0b91700dc308.js → 78643f116677950ea29a.js} +1 -1
  63. package/assets/esri/core/workers/chunks/{916b363c342b61ba5461.js → 787c1a8bda7d745633f2.js} +1 -1
  64. package/assets/esri/core/workers/chunks/{e2190361247f35b02b32.js → 7b5cd150a4d0139850be.js} +1 -1
  65. package/assets/esri/core/workers/chunks/7bbfe9ff352afc566367.js +1 -0
  66. package/assets/esri/core/workers/chunks/7d2cbc767c336d15e4d5.js +1 -0
  67. package/assets/esri/core/workers/chunks/{ac5a6603f7fa78d3e4c8.js → 7e8611cb709f105946f5.js} +1 -1
  68. package/assets/esri/core/workers/chunks/{05cd33d41d91f8d09633.js → 7fb7493f483cd9878bfa.js} +1 -1
  69. package/assets/esri/core/workers/chunks/{590e6c70206122e4cc3c.js → 844eedda8f749972f707.js} +2 -2
  70. package/assets/esri/core/workers/chunks/{acfa03c65ba3ca6c5685.js → 8715661a838361d4211a.js} +1 -1
  71. package/assets/esri/core/workers/chunks/{601e1d020b8115497944.js → 8a485130781b49dbf608.js} +1 -1
  72. package/assets/esri/core/workers/chunks/{0ccab50877b24f862d6e.js → 8ac2098ecdc40ad41055.js} +1 -1
  73. package/assets/esri/core/workers/chunks/{a655ebdb4bf0660615a2.js → 8b4e9fd88c0c313416d4.js} +1 -1
  74. package/assets/esri/core/workers/chunks/{4e544de61f07ca660236.js → 8c12269d26f5a4c753cb.js} +1 -1
  75. package/assets/esri/core/workers/chunks/{46b4fb6a7fe4877b0efc.js → 94baa354e50c03b82b25.js} +2 -2
  76. package/assets/esri/core/workers/chunks/9503eedfdda55fc5adab.js +1 -0
  77. package/assets/esri/core/workers/chunks/950d4578dc450467404c.js +1 -0
  78. package/assets/esri/core/workers/chunks/{68be3fb88ca61f82fb90.js → 95dbbddac6581b9d671f.js} +1 -1
  79. package/assets/esri/core/workers/chunks/98be2f621801e230aa01.js +1 -0
  80. package/assets/esri/core/workers/chunks/999c23da883eb11cb29e.js +1 -0
  81. package/assets/esri/core/workers/chunks/9b6929faf649e81265fb.js +1 -0
  82. package/assets/esri/core/workers/chunks/9d61740ef8bdcc162be1.js +1 -0
  83. package/assets/esri/core/workers/chunks/{fafb92ca2c5e4b0b2c23.js → a09d2e1e2540921e4717.js} +1 -1
  84. package/assets/esri/core/workers/chunks/a35c69a4751d28c39907.js +1 -0
  85. package/assets/esri/core/workers/chunks/{3b3e519f15ed52c83f0c.js → a49fe94933b65b4b64f8.js} +1 -1
  86. package/assets/esri/core/workers/chunks/{1819c45655c836b9a8d7.js → a4d3944700f1cc240176.js} +1 -1
  87. package/assets/esri/core/workers/chunks/{ec8b7476eac4718eb0ac.js → a504a5e06cb89a620799.js} +1 -1
  88. package/assets/esri/core/workers/chunks/a596779eaeec7310671d.js +1 -0
  89. package/assets/esri/core/workers/chunks/{d5d0fe8e198ff5a902ee.js → a5c8f9f5be4ef5063b42.js} +1 -1
  90. package/assets/esri/core/workers/chunks/{900181f68449d8f82eeb.js → aa1ac7954e4f0fefe15b.js} +1 -1
  91. package/assets/esri/core/workers/chunks/{90bdf86f553e2742d67c.js → ab1660f5f8a5268c2fac.js} +1 -1
  92. package/assets/esri/core/workers/chunks/ac24b4370dc7194a3107.js +1 -0
  93. package/assets/esri/core/workers/chunks/{b8337492e2b753aefac4.js → ace41659a5ca0e5abfc3.js} +1 -1
  94. package/assets/esri/core/workers/chunks/ae0563d573baf91e01f7.js +1 -0
  95. package/assets/esri/core/workers/chunks/{3c0ed15b544df6fb0903.js → b48952e1fb4cb7360dd0.js} +1 -1
  96. package/assets/esri/core/workers/chunks/b5e7475cc5fbf31289d3.js +1 -0
  97. package/assets/esri/core/workers/chunks/b686cd74975da09b9c91.js +2 -0
  98. package/assets/esri/core/workers/chunks/{aa36c3a9bbaa086e3757.js → b8fd7c3b36981261378b.js} +1 -1
  99. package/assets/esri/core/workers/chunks/bd046399e05e759e0bc2.js +1 -0
  100. package/assets/esri/core/workers/chunks/bd46a04a9ee4ea9e6ef1.js +2 -0
  101. package/assets/esri/core/workers/chunks/{f3da30d7300b92bd8bb0.js → befa32b9e7b3fbdd431e.js} +1 -1
  102. package/assets/esri/core/workers/chunks/bfb39590c548188f5052.js +1 -0
  103. package/assets/esri/core/workers/chunks/c4ddac23bd649d24f3f2.js +1 -0
  104. package/assets/esri/core/workers/chunks/cddc3e285f763ccf33c2.js +1 -0
  105. package/assets/esri/core/workers/chunks/d08ff41e2a9bcd58b64a.js +1 -0
  106. package/assets/esri/core/workers/chunks/d62afb71f4ece4283994.js +1 -0
  107. package/assets/esri/core/workers/chunks/dc1761cba0454fda3cf9.js +1 -0
  108. package/assets/esri/core/workers/chunks/{0f617980c7dd9ad0444f.js → dd0310184fe4832755a8.js} +1 -1
  109. package/assets/esri/core/workers/chunks/dfa5f1311806473e473f.js +1 -0
  110. package/assets/esri/core/workers/chunks/{4ac1d3e49e242e373a92.js → e0650b1408197d3ac862.js} +1 -1
  111. package/assets/esri/core/workers/chunks/{3ff6d1ed3c0f1285f3e7.js → e0d9dc97985561320bd4.js} +1 -1
  112. package/assets/esri/core/workers/chunks/eaddffcc7004101fc230.js +1 -0
  113. package/assets/esri/core/workers/chunks/eb2652ec48faa78de3c5.js +1 -0
  114. package/assets/esri/core/workers/chunks/eca44e53bcee9b08d70a.js +1 -0
  115. package/assets/esri/core/workers/chunks/f00458654c7c34c369ef.js +1 -0
  116. package/assets/esri/core/workers/chunks/f3cd610084e3f4d8656b.js +1 -0
  117. package/assets/esri/core/workers/chunks/f47fe4433b05fca5c3ad.js +1 -0
  118. package/assets/esri/core/workers/chunks/f7bfa3d33b05b250ce33.js +1 -0
  119. package/assets/esri/core/workers/chunks/f91bc1cb1014e05be763.js +1 -0
  120. package/assets/esri/core/workers/chunks/{19676b2c5f8b0a5ee680.js → facd1ff23203fed67686.js} +1 -1
  121. package/assets/esri/core/workers/chunks/{634523cc7757da9020e4.js → fb70ab267a08e24b710f.js} +1 -1
  122. package/assets/esri/core/workers/chunks/fc139f251dc0523074e7.js +1 -0
  123. package/assets/esri/core/workers/chunks/{40a584cb952e94326e9e.js → fcb86d24fc7e0666b564.js} +1 -1
  124. package/assets/esri/themes/base/widgets/_Weather.scss +1 -0
  125. package/assets/esri/themes/dark/main.css +1 -1
  126. package/assets/esri/themes/light/main.css +1 -1
  127. package/assets/esri/themes/light/view.css +1 -1
  128. package/chunks/Distance2DCalculator-DjIp2uQi.js +1 -1
  129. package/chunks/Envelope.js +1 -1
  130. package/chunks/MultiPathImpl.js +1 -1
  131. package/chunks/OperatorGeodeticArea.js +1 -1
  132. package/chunks/OperatorShapePreservingLength.js +1 -1
  133. package/chunks/OperatorShapePreservingProject.js +1 -1
  134. package/chunks/UnitFactory.js +1 -1
  135. package/chunks/basis_encoder.js +1 -1
  136. package/chunks/basis_transcoder.js +1 -1
  137. package/chunks/index.js +1 -1
  138. package/chunks/lclayout.js +1 -1
  139. package/chunks/lerc-wasm.js +1 -1
  140. package/config.d.ts +2 -0
  141. package/config.js +1 -1
  142. package/core/accessorSupport/DefaultsStore.js +1 -1
  143. package/core/accessorSupport/MultiOriginStore.js +1 -1
  144. package/core/accessorSupport/Store.js +1 -1
  145. package/core/accessorSupport/decorators/reader.js +1 -1
  146. package/core/accessorSupport/decorators/writer.js +1 -1
  147. package/core/sql/WhereGrammar.js +2 -2
  148. package/core/workers/WorkerOwner.js +1 -1
  149. package/core/workers/workerFactory.js +1 -1
  150. package/core/workers/workers.js +2 -2
  151. package/core/workers.d.ts +9 -0
  152. package/editing/sharedTemplates/executor/builders/equallySpaced.js +1 -1
  153. package/form/elements/inputs/DynamicChoiceInput.d.ts +4 -2
  154. package/geometry/Mesh.js +1 -1
  155. package/geometry/operators/gx/operatorAlphaShape.js +1 -1
  156. package/geometry/operators/gx/operatorOffset.js +1 -1
  157. package/geometry/operators/gx/operatorPolygonSlicer.js +1 -1
  158. package/geometry/operators/support/jsonConverter.js +1 -1
  159. package/geometry/support/curves/bezierCurveUtils.js +1 -1
  160. package/geometry/support/curves/ellipticArc7Utils.js +1 -1
  161. package/geometry/support/meshUtils/merge.js +1 -1
  162. package/geometry/support/meshUtils/rotate.js +1 -1
  163. package/geometry/support/polygonExtentClipping.js +1 -1
  164. package/identity/Credential.js +1 -1
  165. package/kernel.js +1 -1
  166. package/layers/AnnotationFeatureLayer.d.ts +2 -2
  167. package/layers/AnnotationFeatureLayer.js +1 -1
  168. package/layers/CatalogLayer.d.ts +2 -2
  169. package/layers/CatalogLayer.js +1 -1
  170. package/layers/DimensionFeatureLayer.d.ts +2 -2
  171. package/layers/DimensionFeatureLayer.js +1 -1
  172. package/layers/ElevationLayer.js +1 -1
  173. package/layers/FeatureLayer.d.ts +4 -4
  174. package/layers/FeatureLayer.js +1 -1
  175. package/layers/GeoJSONLayer.d.ts +1 -1
  176. package/layers/ImageryTileLayer.js +1 -1
  177. package/layers/LineOfSightLayer.d.ts +10 -8
  178. package/layers/SceneLayer.js +1 -1
  179. package/layers/SubtypeGroupLayer.d.ts +2 -2
  180. package/layers/SubtypeGroupLayer.js +1 -1
  181. package/layers/ViewshedLayer.d.ts +1 -1
  182. package/layers/VoxelLayer.js +1 -1
  183. package/layers/WMSLayer.js +1 -1
  184. package/layers/effects/parser.js +3 -3
  185. package/layers/geospatialPDF/GeospatialPDFFrame.js +1 -1
  186. package/layers/geospatialPDF/GeospatialPDFLayerWorker.js +9 -9
  187. package/layers/geospatialPDF/GeospatialPDFWorkerClient.js +1 -1
  188. package/layers/geospatialPDF/LGIDictMapFrame.js +1 -1
  189. package/layers/geospatialPDF/ViewportMeasureFrame.js +1 -1
  190. package/layers/geospatialPDF/geospatialPDFParserUtils.js +1 -1
  191. package/layers/graphics/controllers/I3SOnDemandController.js +1 -1
  192. package/layers/graphics/data/QueryEngineResult.js +1 -1
  193. package/layers/graphics/sources/connections/WebSocketConnection.js +1 -1
  194. package/layers/graphics/sources/parquet/FileProvider.js +1 -1
  195. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  196. package/layers/mixins/{FeatureLayerReload.d.ts → ReloadableLayer.d.ts} +5 -3
  197. package/layers/mixins/ReloadableLayer.js +2 -0
  198. package/layers/raster/datasets/BaseRaster.js +1 -1
  199. package/layers/raster/datasets/GeospatialPDFRaster.js +1 -1
  200. package/layers/raster/datasets/ImageAuxRaster.js +2 -2
  201. package/layers/raster/datasets/ImageServerRaster.js +1 -1
  202. package/layers/raster/datasets/InMemoryRaster.js +1 -1
  203. package/layers/raster/datasets/MRFRaster.js +1 -1
  204. package/layers/raster/datasets/TIFFRaster.js +1 -1
  205. package/layers/raster/datasets/WCSRaster.js +1 -1
  206. package/layers/raster/formats/ElevationCodec.js +2 -0
  207. package/layers/raster/formats/ImageCanvasDecoder.js +1 -1
  208. package/layers/raster/formats/Lerc.js +1 -1
  209. package/layers/raster/formats/RasterCodec.js +1 -1
  210. package/layers/raster/formats/TiffDecoder.js +1 -1
  211. package/layers/raster/formats/Zlib.js +1 -1
  212. package/layers/raster/functions/stretchUtils.js +1 -1
  213. package/layers/raster/functions/vectorFieldUtils.js +1 -1
  214. package/layers/support/FieldsIndex.js +1 -1
  215. package/layers/support/LercWorker.js +1 -1
  216. package/layers/support/RasterWorker.js +1 -1
  217. package/layers/support/TileInfo.d.ts +1 -1
  218. package/layers/support/TileInfo.js +1 -1
  219. package/layers/support/featureReductionProperties.js +1 -1
  220. package/layers/support/kmlUtils.js +1 -1
  221. package/layers/support/layerOriginUtils.js +1 -1
  222. package/layers/video/VideoController.js +10 -10
  223. package/libs/maquette/projection.js +1 -1
  224. package/networks/UtilityNetworkTraceAnalysis.js +1 -1
  225. package/package.json +6 -6
  226. package/popup/FeatureModel.js +1 -1
  227. package/popup/FeaturesModel.js +1 -1
  228. package/portal/Portal.js +1 -1
  229. package/request/process.js +1 -1
  230. package/request/types.d.ts +7 -0
  231. package/rest/knowledgeGraphService.js +1 -1
  232. package/rest/networks/trace.js +1 -1
  233. package/rest/query/executeQuery.js +1 -1
  234. package/smartMapping/raster/renderers/shadedRelief.js +1 -1
  235. package/smartMapping/renderers/univariateColorSize.js +1 -1
  236. package/smartMapping/statistics/support/statsWorker.js +1 -1
  237. package/smartMapping/statistics/support/utils.js +1 -1
  238. package/smartMapping/support/adapters/FeatureLayerAdapter.js +1 -1
  239. package/smartMapping/support/adapters/FeatureLayerBinningAdapter.js +1 -1
  240. package/smartMapping/support/adapters/InMemoryLayerAdapter.js +1 -1
  241. package/smartMapping/support/adapters/OGCFeatureLayerAdapter.js +1 -1
  242. package/smartMapping/support/adapters/SceneLayerAdapter.js +1 -1
  243. package/smartMapping/support/adapters/support/utils.js +1 -1
  244. package/smartMapping/support/clusterUtils.js +1 -1
  245. package/statistics/utils.js +1 -1
  246. package/symbols/cim/CIMCursor.js +1 -1
  247. package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
  248. package/symbols/cim/cimAnalyzer.js +1 -1
  249. package/symbols/support/ElevationInfo.d.ts +4 -3
  250. package/time/TimeExtent.d.ts +1 -1
  251. package/undoredo/support/Services.js +1 -1
  252. package/views/2d/engine/vectorTiles/buckets/SymbolBucket.js +2 -2
  253. package/views/2d/engine/webgl/shaderGraph/techniques/labels/LabelMeshWriter.js +1 -1
  254. package/views/2d/grid/GridView2D.js +1 -1
  255. package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
  256. package/views/2d/layers/features/sources/strategies/FeatureHybridTileLoadStrategy.js +1 -1
  257. package/views/2d/layers/features/sources/strategies/FeaturePagedTileLoadStrategy.js +1 -1
  258. package/views/2d/layers/features/sources/strategies/FeatureSnapshotLoadStrategy.js +1 -1
  259. package/views/2d/viewpointUtils.js +1 -1
  260. package/views/3d/analysis/AreaMeasurement/support/MeasurementData.js +1 -1
  261. package/views/3d/analysis/Dimension/LengthDimensionSubTool.js +1 -1
  262. package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
  263. package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
  264. package/views/3d/analysis/LineOfSight/types.d.ts +14 -3
  265. package/views/3d/analysis/LineOfSightAnalysisView3D.d.ts +39 -13
  266. package/views/3d/analysis/Viewshed/ViewshedEditTool.js +1 -1
  267. package/views/3d/analysis/Viewshed/ViewshedTool.js +1 -1
  268. package/views/3d/analysis/Viewshed/types.d.ts +7 -0
  269. package/views/3d/analysis/ViewshedAnalysisView3D.d.ts +43 -15
  270. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementTool.js +1 -1
  271. package/views/3d/input/handlers/KeyboardNavigation.js +1 -1
  272. package/views/3d/interactive/editingTools/draw/DrawGraphicTool3D.js +1 -1
  273. package/views/3d/interactive/editingTools/reshape/ReshapeOperation.js +1 -1
  274. package/views/3d/interactive/editingTools/transform/ExtentTransformTool.js +1 -1
  275. package/views/3d/interactive/editingTools/transform/ScaleRotateTransform.js +1 -1
  276. package/views/3d/interactive/measurementTools/areaMeasurement3D/AreaMeasurement3DTool.js +1 -1
  277. package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DTool.js +1 -1
  278. package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
  279. package/views/3d/interactive/visualElements/OutlineVisualElement.js +1 -1
  280. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  281. package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
  282. package/views/3d/layers/graphics/Graphics3DElevationAlignment.js +1 -1
  283. package/views/3d/layers/graphics/Graphics3DGraphic.js +1 -1
  284. package/views/3d/layers/graphics/Graphics3DIconSymbolLayer.js +1 -1
  285. package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
  286. package/views/3d/layers/graphics/SpatialIndex2D.js +1 -1
  287. package/views/3d/layers/i3s/I3SNode.js +1 -1
  288. package/views/3d/layers/i3s/I3SUtil.js +1 -1
  289. package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
  290. package/views/3d/layers/i3s/LayerElevationProvider.js +1 -1
  291. package/views/3d/layers/support/FeatureTileFetcher3D.js +1 -1
  292. package/views/3d/layers/support/FeatureTileFetcher3DDebugger.js +1 -1
  293. package/views/3d/layers/support/ImageHighlightHelper3D.js +1 -1
  294. package/views/3d/layers/support/MediaLayerInteraction.js +1 -1
  295. package/views/3d/layers/support/StageLayerElevationProvider.js +1 -1
  296. package/views/3d/state/helpers/SceneIntersectionHelper.js +1 -1
  297. package/views/3d/state/utils/navigationUtils.js +1 -1
  298. package/views/3d/support/elevationUpdateExtentUtils.js +1 -1
  299. package/views/3d/support/elevationUpdateUtils.js +1 -1
  300. package/views/3d/support/pointsOfInterest/Focus.js +1 -1
  301. package/views/3d/support/sphereExtentUtils.js +2 -0
  302. package/views/3d/terrain/OverlayFramebufferObject.js +1 -1
  303. package/views/3d/terrain/OverlayRenderer.js +1 -1
  304. package/views/3d/terrain/PatchRenderData.js +1 -1
  305. package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
  306. package/views/3d/webgl-engine/lib/ManagedTexture.js +1 -1
  307. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  308. package/views/3d/webgl-engine/lib/ViewshedShadowMap.js +1 -1
  309. package/views/3d/webgl-engine/materials/internal/MaterialUtil.js +1 -1
  310. package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
  311. package/views/3d/webgl-engine/materials/renderers/PerBufferData.js +1 -1
  312. package/views/SceneView.js +1 -1
  313. package/views/ToolViewManager.js +1 -1
  314. package/views/View.js +1 -1
  315. package/views/analysis/ElevationProfile/ElevationProfileTool.js +1 -1
  316. package/views/draw/DrawOperation.js +1 -1
  317. package/views/draw/support/InteractiveHandle.js +1 -1
  318. package/views/draw/support/Reshape.js +1 -1
  319. package/views/draw/support/createUtils.js +1 -1
  320. package/views/draw/support/editingSessionUtils.js +1 -1
  321. package/views/draw/support/managers/InteractiveHandleManager.js +1 -1
  322. package/views/interactive/SegmentLabels.js +1 -1
  323. package/views/interactive/editGeometry/EditGeometry.js +1 -1
  324. package/views/interactive/editGeometry/EditGeometryOperations.js +1 -1
  325. package/views/interactive/editGeometry/operations/SetAllVertexPositions.js +1 -1
  326. package/views/interactive/editGeometry/operations/UndoGroup.js +1 -1
  327. package/views/interactive/options/TooltipOptions.d.ts +2 -0
  328. package/views/interactive/sketch/SketchTooltipOptions.d.ts +2 -0
  329. package/views/interactive/sketch/constraintUtils.js +1 -1
  330. package/views/interactive/snapping/SnappingDragPipelineStep.js +1 -1
  331. package/views/interactive/snapping/SnappingManagerPool.js +1 -1
  332. package/views/interactive/snapping/allLayerSnapping.js +1 -1
  333. package/views/interactive/tooltip/components/TooltipEditableField.js +1 -1
  334. package/views/layers/LayerView.js +1 -1
  335. package/views/layers/LineOfSightLayerView.d.ts +35 -13
  336. package/views/layers/SketchLayerView.d.ts +1 -0
  337. package/views/layers/ViewshedLayerView.d.ts +36 -12
  338. package/views/webgl/Program.js +1 -1
  339. package/views/webgl/Texture.js +1 -1
  340. package/widgets/AreaMeasurement2D/AreaMeasurement2DViewModel.d.ts +2 -1
  341. package/widgets/BasemapToggle/BasemapToggleViewModel.d.ts +2 -0
  342. package/widgets/BasemapToggle/BasemapToggleViewModel.js +1 -1
  343. package/widgets/Directions.js +1 -1
  344. package/widgets/DistanceMeasurement2D/DistanceMeasurement2DViewModel.d.ts +2 -1
  345. package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
  346. package/widgets/Editor/legacy/CreateFeaturesWorkflow.js +1 -1
  347. package/widgets/ElevationProfile/components/Statistics.js +1 -1
  348. package/widgets/ElevationProfile/support/chartUtils.js +1 -1
  349. package/widgets/Expand/ExpandViewModel.d.ts +2 -0
  350. package/widgets/FeatureTable/support/FeatureStore.js +1 -1
  351. package/widgets/FeatureTable/support/GroupColumnTemplate.js +1 -1
  352. package/widgets/FeatureTable/support/TableTemplate.js +1 -1
  353. package/widgets/Fullscreen/FullscreenViewModel.d.ts +3 -1
  354. package/widgets/Home/HomeViewModel.d.ts +2 -0
  355. package/widgets/OrientedImageryViewer.js +1 -1
  356. package/widgets/Print.js +1 -1
  357. package/widgets/Sketch/SketchViewModel.js +1 -1
  358. package/widgets/Slice.js +1 -1
  359. package/widgets/Swipe/SwipeViewModel.d.ts +2 -0
  360. package/widgets/Swipe/types.d.ts +9 -2
  361. package/widgets/TimeSlider/TimeSliderViewModel.d.ts +9 -5
  362. package/widgets/TimeSlider/types.d.ts +7 -0
  363. package/widgets/TimeSlider.d.ts +2 -3
  364. package/widgets/TimeSlider.js +1 -1
  365. package/widgets/Track/TrackViewModel.d.ts +4 -0
  366. package/widgets/Track/types.d.ts +1 -0
  367. package/widgets/UtilityNetworkTraceAnalysis/UtilityNetworkTraceAnalysisViewModel.js +1 -1
  368. package/widgets/support/SelectionList/SelectionListViewModel.js +1 -1
  369. package/widgets/support/SelectionList.js +1 -1
  370. package/widgets/support/Selector3D/selectorUtils.js +1 -1
  371. package/widgets/support/componentsUtils.js +1 -1
  372. package/assets/esri/core/workers/chunks/0050916e462e3c9e0627.js +0 -1
  373. package/assets/esri/core/workers/chunks/024b44c0c8876627f904.js +0 -1
  374. package/assets/esri/core/workers/chunks/02c5d027bdaee67869cf.js +0 -1
  375. package/assets/esri/core/workers/chunks/03261b9451e293a0fac8.js +0 -1
  376. package/assets/esri/core/workers/chunks/0c8c01097847617261b9.js +0 -1
  377. package/assets/esri/core/workers/chunks/0d931c7579b6409a696d.js +0 -1
  378. package/assets/esri/core/workers/chunks/12c154342fff876f2f1e.js +0 -1
  379. package/assets/esri/core/workers/chunks/1e11d2e97d17685b878a.js +0 -1
  380. package/assets/esri/core/workers/chunks/1f339247b68b061ab0a4.js +0 -1
  381. package/assets/esri/core/workers/chunks/21ddb26526bcb2b122c3.js +0 -1
  382. package/assets/esri/core/workers/chunks/2eae542fe7f0f6576ac1.js +0 -1
  383. package/assets/esri/core/workers/chunks/34cbaf844730ac2d92c2.js +0 -2
  384. package/assets/esri/core/workers/chunks/3c301a689c7853c9fa67.js +0 -2
  385. package/assets/esri/core/workers/chunks/3f946c13ad97fbed867b.js +0 -1
  386. package/assets/esri/core/workers/chunks/444e5f214abce3d607cd.js +0 -1
  387. package/assets/esri/core/workers/chunks/46a7da93a63663878583.js +0 -1
  388. package/assets/esri/core/workers/chunks/4a1e23e021bac37a88ab.js +0 -1
  389. package/assets/esri/core/workers/chunks/4c4117e28ea358a32088.js +0 -1
  390. package/assets/esri/core/workers/chunks/54b18559280a7d2a8d93.js +0 -1
  391. package/assets/esri/core/workers/chunks/59b216b60464611742d4.js +0 -1
  392. package/assets/esri/core/workers/chunks/604f0f4150fb79ee54c8.js +0 -1
  393. package/assets/esri/core/workers/chunks/6299be5e7e26bf3c6859.js +0 -1
  394. package/assets/esri/core/workers/chunks/62ac588f7dd1d24d0c9d.js +0 -1
  395. package/assets/esri/core/workers/chunks/62c8c9ad09e0166207fd.js +0 -1
  396. package/assets/esri/core/workers/chunks/62d6e101e9bd9557a410.js +0 -1
  397. package/assets/esri/core/workers/chunks/6558488ea96620439f34.js +0 -1
  398. package/assets/esri/core/workers/chunks/665e31c494d2af505acc.js +0 -1
  399. package/assets/esri/core/workers/chunks/6f4e6022a52de0c54aab.js +0 -1
  400. package/assets/esri/core/workers/chunks/7267b17de212207142c9.js +0 -1
  401. package/assets/esri/core/workers/chunks/745a153d0cd34faa124e.js +0 -1
  402. package/assets/esri/core/workers/chunks/7572c2bc5062e66f6330.js +0 -1
  403. package/assets/esri/core/workers/chunks/76ab353d80d786777161.js +0 -2
  404. package/assets/esri/core/workers/chunks/7ef182e24cad50815b4e.js +0 -1
  405. package/assets/esri/core/workers/chunks/8293600f94553afc8c38.js +0 -1
  406. package/assets/esri/core/workers/chunks/8431ca60ad33d594e323.js +0 -1
  407. package/assets/esri/core/workers/chunks/8483c50ed8f280fd74bb.js +0 -1
  408. package/assets/esri/core/workers/chunks/876f7633c15f1e31078d.js +0 -1
  409. package/assets/esri/core/workers/chunks/8ca9648eacb894283513.js +0 -1
  410. package/assets/esri/core/workers/chunks/8cb716f110d164030309.js +0 -1
  411. package/assets/esri/core/workers/chunks/91ebb2ccab1889eb7e81.js +0 -1
  412. package/assets/esri/core/workers/chunks/94e427040edb469d58ad.js +0 -1
  413. package/assets/esri/core/workers/chunks/9ce91a909eccc4dfe388.js +0 -1
  414. package/assets/esri/core/workers/chunks/9e1a3b6a08c96dcefdde.js +0 -1
  415. package/assets/esri/core/workers/chunks/9e3e442a9874ed23a043.js +0 -1
  416. package/assets/esri/core/workers/chunks/ad76f7ab2f3e6d5a5b3c.js +0 -1
  417. package/assets/esri/core/workers/chunks/aff32980d91dab07dfb7.js +0 -1
  418. package/assets/esri/core/workers/chunks/b49df4ebd4be1181b0f9.js +0 -2
  419. package/assets/esri/core/workers/chunks/b557824bc1fa163d72a3.js +0 -2
  420. package/assets/esri/core/workers/chunks/bbf993dba74850bbf9d7.js +0 -1
  421. package/assets/esri/core/workers/chunks/d8f1cefcad02d7353d4b.js +0 -1
  422. package/assets/esri/core/workers/chunks/d938987344bce83cc660.js +0 -1
  423. package/assets/esri/core/workers/chunks/ddf0671976648f621269.js +0 -1
  424. package/assets/esri/core/workers/chunks/de02f60258e6985ef676.js +0 -1
  425. package/assets/esri/core/workers/chunks/e10b57aefcc89671116e.js +0 -1
  426. package/assets/esri/core/workers/chunks/e65dfa19f030ec298437.js +0 -1
  427. package/assets/esri/core/workers/chunks/ed8786fed345718ed684.js +0 -1
  428. package/assets/esri/core/workers/chunks/f122c18af10e56f9ec2b.js +0 -1
  429. package/assets/esri/core/workers/chunks/f92364afaefbac7e8f77.js +0 -1
  430. package/assets/esri/core/workers/chunks/fc44227c1756f65b95df.js +0 -1
  431. package/assets/esri/core/workers/chunks/fd9663952d5a94f3a83f.js +0 -1
  432. package/assets/esri/core/workers/chunks/fe9879ecd69ac4329291.js +0 -1
  433. package/layers/mixins/FeatureLayerReload.js +0 -2
  434. /package/assets/esri/core/workers/chunks/{b557824bc1fa163d72a3.js.LICENSE.txt → 164c8eeefa8232b2b191.js.LICENSE.txt} +0 -0
  435. /package/assets/esri/core/workers/chunks/{b49df4ebd4be1181b0f9.js.LICENSE.txt → 2981e904ab62f3ed80d0.js.LICENSE.txt} +0 -0
  436. /package/assets/esri/core/workers/chunks/{34cbaf844730ac2d92c2.js.LICENSE.txt → 32cc59e126df8c96a0cf.js.LICENSE.txt} +0 -0
  437. /package/assets/esri/core/workers/chunks/{590e6c70206122e4cc3c.js.LICENSE.txt → 844eedda8f749972f707.js.LICENSE.txt} +0 -0
  438. /package/assets/esri/core/workers/chunks/{3c301a689c7853c9fa67.js.LICENSE.txt → b686cd74975da09b9c91.js.LICENSE.txt} +0 -0
  439. /package/assets/esri/core/workers/chunks/{76ab353d80d786777161.js.LICENSE.txt → bd46a04a9ee4ea9e6ef1.js.LICENSE.txt} +0 -0
@@ -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{destroyHandle as n,makeHandle as r}from"../../../../core/handleUtils.js";import{deg2rad as i}from"../../../../core/mathUtils.js";import{abortMaybe as a,destroyMaybe as o}from"../../../../core/maybe.js";import{debounce as s}from"../../../../core/promiseUtils.js";import{initial as c,watch as l,syncAndInitial as u}from"../../../../core/reactiveUtils.js";import{getMetersPerUnitForSR as d}from"../../../../core/units.js";import{property as f,subclass as p}from"../../../../core/accessorSupport/decorators.js";import{fromRotation as m}from"../../../../core/libs/gl-matrix-2/math/mat2d.js";import{create as h}from"../../../../core/libs/gl-matrix-2/factories/mat2df64.js";import{set as g,transformMat2d as _}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as v}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{UpdatingHandles as y}from"../../../../core/support/UpdatingHandles.js";import{ControlPointOperations as b}from"../../interactive/editingTools/media/ControlPointOperations.js";import{ViewEventPriorities as x}from"../../../input/InputManager.js";import{KeyBindings as S,mediaKeys as C}from"../../../interactive/keybindings.js";import{acquire as w}from"../../../interactive/snapping/SnappingManagerPool.js";const T=Symbol(),E=Symbol();let D=class extends t{get editSourcePoints(){return!!this.options?.reshapeOptions.editSourcePoints!==this._isEditSourcePointsToggled}get updating(){return this._updatingHandles.updating}get _preferredInteractionTool(){return this.options?.tool??`transform`}get _toolType(){switch(this._preferredInteractionTool){case`transform`:return`transform-3d`;case`reshape`:return`reshape-3d`}}get _validatedSelectedElement(){let e=this.selectedElement;if(!e)return null;let{layer:{source:t}}=this;return t?`hasElement`in t?t.hasElement(e)?e:null:t===e?e:null:null}constructor(e){super(e),this.enabled=!1,this._isEditSourcePointsToggled=!1,this._updatingHandles=new y,this._isOpacityToggled=!1,this._factor=1,this._tool=null,this._object=null,this._createToolAbortController=null,this._onPointerMove=s(async e=>{let t=await this._updatingHandles.addPromise(this._findElementAtScreenPoint(e));this.destroyed||(this.removeHandles(E),t&&t!==this.selectedElement&&this.addHandles(this.view.acquireCursor(`pointer`,`high`),E))}),this._tmpMat2=h(),this._tmpVec2=v()}destroy(){this._createToolAbortController=a(this._createToolAbortController)}initialize(){this.addHandles([n(this._updatingHandles),this._updatingHandles.add(()=>this.enabled,e=>this._enableDisable(e),c),this._updatingHandles.add(()=>this._preferredInteractionTool,e=>this._preferredInteractionToolChanged(e))])}_enableDisable(e){if(!e){this.removeHandles(T);return}this._dynamicImports();let{view:t}=this,n=new S;n.add(C.undo,()=>{this._object?.operations?.undo(),this._object?.emit(`modified-externally`)}),n.add(C.redo,()=>{this._object?.operations?.redo(),this._object?.emit(`modified-externally`)}),n.addToggle(C.preserveAspectRatio,e=>{this._tool?.type===`transform-3d`&&(this._tool.preserveAspectRatio=e.type===`key-down`)}),n.addToggle(C.editSourcePoints,e=>{this._tool?.type===`reshape-3d`&&(this._isEditSourcePointsToggled=e.type===`key-down`)}),n.addToggle(C.rotateIncrements,e=>{this._tool?.type===`transform-3d`&&(this._tool.snapRotation=e.type===`key-down`)}),n.add(C.toggleOpacity,()=>{let e=this._object?.element;e&&(e.opacity*=this._isOpacityToggled?2:.5,this._isOpacityToggled=!this._isOpacityToggled)}),n.add(C.moveUp,()=>this._move(0,this._factor)),n.add(C.moveDown,()=>this._move(0,-this._factor)),n.add(C.moveRight,()=>this._move(this._factor,0)),n.add(C.moveLeft,()=>this._move(-this._factor,0)),n.addToggle(C.factorModifier,e=>this._factor=e.type===`key-down`?10:1),this._isOpacityToggled=!1,this.addHandles([n.register(t,x.TOOL),r(()=>{this._isOpacityToggled&&this.selectedElement&&(this.selectedElement.opacity*=2,this._isOpacityToggled=!1)}),t.on(`immediate-click`,e=>this._onClick(e),x.TOOL),t.on(`pointer-move`,e=>this._onPointerMove(e).catch(()=>{}),x.TOOL),this._updatingHandles.add(()=>this._validatedSelectedElement,(e,t)=>{t&&e!==t&&this._isOpacityToggled&&(t.opacity*=2,this._isOpacityToggled=!1),this._selectedElementChanged(e)},c),r(()=>{this.removeHandles(E),this._removeTool()})],T)}async _onClick(e){await this._updatingHandles.addPromise(e.defer(async()=>{let t=await this._findElementAtScreenPoint(e);this.destroyed||(t&&e.stopPropagation(),this.selectedElement=t,this.selectedElement&&this.removeHandles(E))}))}async _selectedElementChanged(e){e?.georeference?this._object?.element!==e&&await this._updatingHandles.addPromise(this._recreateTool()):this._removeTool()}async _recreateTool(){this._createToolAbortController=a(this._createToolAbortController),this._removeTool();let e=this._validatedSelectedElement;if(!e)return;let t=new AbortController;this._createToolAbortController=t;let{ManipulatedObject3DMediaElement:n,ExtentTransformTool:i,ReshapeTool3D:s}=await this._dynamicImports();if(t.signal.aborted)return;let{view:c,layer:d,_toolType:f}=this;switch(this._object=new n({view:c,layer:d,element:e,tool:this._preferredInteractionTool}),f){case`transform-3d`:this._tool=new i({view:c,object:this._object}),c.inputManager.isModifierKeyDown(C.rotateIncrements.key)&&(this._tool.snapRotation=!0),c.inputManager.isModifierKeyDown(C.preserveAspectRatio.key)&&(this._tool.preserveAspectRatio=!0);break;case`reshape-3d`:{let e=w(c),{snappingManager:t}=e;this._tool=new s({view:c,object:this._object,enableMidpoints:!1,enableZShape:!1,snappingManager:t,enableMoveObject:!1,autoHideManipulators:!0,enableDeleteVertices:!1,toolOptions:{tooltips:{enabled:!0,inputEnabled:!0,visibleElements:{area:!1}}}}),this.addHandles([e,l(()=>({editSourcePoints:this.editSourcePoints,operations:this._object?.operations}),e=>{e.operations instanceof b&&(e.operations.editSourcePoints=e.editSourcePoints)},u)],this._tool)}}this.addHandles([r(()=>{this._object=o(this._object),this._tool&&=(c.tools.remove(this._tool),null)})],this._tool),c.addAndActivateTool(this._tool)}_preferredInteractionToolChanged(e){let{_tool:t}=this;if(!t)return;if(this._toolType!==t.type){this._updatingHandles.consumePromise(this._recreateTool());return}let{_object:n}=this;n&&(n.tool=e)}async _dynamicImports(){let[{ManipulatedObject3DMediaElement:e},{ExtentTransformTool:t,ReshapeTool3D:n}]=await Promise.all([import(`../../interactive/editingTools/ManipulatedObject3DMediaElement.js`),import(`../../interactive/editingTools.js`)]);return{ManipulatedObject3DMediaElement:e,ExtentTransformTool:t,ReshapeTool3D:n}}async _findElementAtScreenPoint(e){let t=(await this.view.hitTest(e,{include:[this.layer]})).results[0];return t?.type===`media`?t.element:null}_removeTool(){this._tool&&this.removeHandles(this._tool)}_move(e,t){let{view:n,_object:r}=this,a=r?.operations;if(!a)return;let o=n.overlayPixelSizeInMapUnits(n.pointsOfInterest.focus.location)*d(n.spatialReference)/d(a.data.spatialReference),{_tmpMat2:s,_tmpVec2:c}=this,l=m(s,i(360-this.view.camera.heading)),u=g(c,o*e,o*t);_(u,u,l),a.move(u[0],u[1],0),r.emit(`modified-externally`)}};e([f({constructOnly:!0})],D.prototype,`view`,void 0),e([f({constructOnly:!0})],D.prototype,`layer`,void 0),e([f()],D.prototype,`selectedElement`,void 0),e([f()],D.prototype,`enabled`,void 0),e([f()],D.prototype,`options`,void 0),e([f()],D.prototype,`editSourcePoints`,null),e([f()],D.prototype,`_isEditSourcePointsToggled`,void 0),e([f()],D.prototype,`updating`,null),e([f()],D.prototype,`_preferredInteractionTool`,null),e([f()],D.prototype,`_validatedSelectedElement`,null),D=e([p(`esri.views.3d.layers.support.MediaLayerInteraction`)],D);export{D as MediaLayerInteraction};
2
+ import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{destroyHandle as n,makeHandle as r}from"../../../../core/handleUtils.js";import{deg2rad as i}from"../../../../core/mathUtils.js";import{abortMaybe as a,destroyMaybe as o}from"../../../../core/maybe.js";import{debounce as s}from"../../../../core/promiseUtils.js";import{initial as c,watch as l,syncAndInitial as u}from"../../../../core/reactiveUtils.js";import{getMetersPerUnitForSR as d}from"../../../../core/units.js";import{property as f,subclass as p}from"../../../../core/accessorSupport/decorators.js";import{fromRotation as m}from"../../../../core/libs/gl-matrix-2/math/mat2d.js";import{create as h}from"../../../../core/libs/gl-matrix-2/factories/mat2df64.js";import{set as g,transformMat2d as _}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as v}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{UpdatingHandles as y}from"../../../../core/support/UpdatingHandles.js";import{ControlPointOperations as b}from"../../interactive/editingTools/media/ControlPointOperations.js";import{ViewEventPriorities as x}from"../../../input/InputManager.js";import{KeyBindings as S,mediaKeys as C}from"../../../interactive/keybindings.js";import{acquireForFeaturePlacement as w}from"../../../interactive/snapping/SnappingManagerPool.js";const T=Symbol(),E=Symbol();let D=class extends t{get editSourcePoints(){return!!this.options?.reshapeOptions.editSourcePoints!==this._isEditSourcePointsToggled}get updating(){return this._updatingHandles.updating}get _preferredInteractionTool(){return this.options?.tool??`transform`}get _toolType(){switch(this._preferredInteractionTool){case`transform`:return`transform-3d`;case`reshape`:return`reshape-3d`}}get _validatedSelectedElement(){let e=this.selectedElement;if(!e)return null;let{layer:{source:t}}=this;return t?`hasElement`in t?t.hasElement(e)?e:null:t===e?e:null:null}constructor(e){super(e),this.enabled=!1,this._isEditSourcePointsToggled=!1,this._updatingHandles=new y,this._isOpacityToggled=!1,this._factor=1,this._tool=null,this._object=null,this._createToolAbortController=null,this._onPointerMove=s(async e=>{let t=await this._updatingHandles.addPromise(this._findElementAtScreenPoint(e));this.destroyed||(this.removeHandles(E),t&&t!==this.selectedElement&&this.addHandles(this.view.acquireCursor(`pointer`,`high`),E))}),this._tmpMat2=h(),this._tmpVec2=v()}destroy(){this._createToolAbortController=a(this._createToolAbortController)}initialize(){this.addHandles([n(this._updatingHandles),this._updatingHandles.add(()=>this.enabled,e=>this._enableDisable(e),c),this._updatingHandles.add(()=>this._preferredInteractionTool,e=>this._preferredInteractionToolChanged(e))])}_enableDisable(e){if(!e){this.removeHandles(T);return}this._dynamicImports();let{view:t}=this,n=new S;n.add(C.undo,()=>{this._object?.operations?.undo(),this._object?.emit(`modified-externally`)}),n.add(C.redo,()=>{this._object?.operations?.redo(),this._object?.emit(`modified-externally`)}),n.addToggle(C.preserveAspectRatio,e=>{this._tool?.type===`transform-3d`&&(this._tool.preserveAspectRatio=e.type===`key-down`)}),n.addToggle(C.editSourcePoints,e=>{this._tool?.type===`reshape-3d`&&(this._isEditSourcePointsToggled=e.type===`key-down`)}),n.addToggle(C.rotateIncrements,e=>{this._tool?.type===`transform-3d`&&(this._tool.snapRotation=e.type===`key-down`)}),n.add(C.toggleOpacity,()=>{let e=this._object?.element;e&&(e.opacity*=this._isOpacityToggled?2:.5,this._isOpacityToggled=!this._isOpacityToggled)}),n.add(C.moveUp,()=>this._move(0,this._factor)),n.add(C.moveDown,()=>this._move(0,-this._factor)),n.add(C.moveRight,()=>this._move(this._factor,0)),n.add(C.moveLeft,()=>this._move(-this._factor,0)),n.addToggle(C.factorModifier,e=>this._factor=e.type===`key-down`?10:1),this._isOpacityToggled=!1,this.addHandles([n.register(t,x.TOOL),r(()=>{this._isOpacityToggled&&this.selectedElement&&(this.selectedElement.opacity*=2,this._isOpacityToggled=!1)}),t.on(`immediate-click`,e=>this._onClick(e),x.TOOL),t.on(`pointer-move`,e=>this._onPointerMove(e).catch(()=>{}),x.TOOL),this._updatingHandles.add(()=>this._validatedSelectedElement,(e,t)=>{t&&e!==t&&this._isOpacityToggled&&(t.opacity*=2,this._isOpacityToggled=!1),this._selectedElementChanged(e)},c),r(()=>{this.removeHandles(E),this._removeTool()})],T)}async _onClick(e){await this._updatingHandles.addPromise(e.defer(async()=>{let t=await this._findElementAtScreenPoint(e);this.destroyed||(t&&e.stopPropagation(),this.selectedElement=t,this.selectedElement&&this.removeHandles(E))}))}async _selectedElementChanged(e){e?.georeference?this._object?.element!==e&&await this._updatingHandles.addPromise(this._recreateTool()):this._removeTool()}async _recreateTool(){this._createToolAbortController=a(this._createToolAbortController),this._removeTool();let e=this._validatedSelectedElement;if(!e)return;let t=new AbortController;this._createToolAbortController=t;let{ManipulatedObject3DMediaElement:n,ExtentTransformTool:i,ReshapeTool3D:s}=await this._dynamicImports();if(t.signal.aborted)return;let{view:c,layer:d,_toolType:f}=this;switch(this._object=new n({view:c,layer:d,element:e,tool:this._preferredInteractionTool}),f){case`transform-3d`:this._tool=new i({view:c,object:this._object}),c.inputManager.isModifierKeyDown(C.rotateIncrements.key)&&(this._tool.snapRotation=!0),c.inputManager.isModifierKeyDown(C.preserveAspectRatio.key)&&(this._tool.preserveAspectRatio=!0);break;case`reshape-3d`:{let e=w(c),{snappingManager:t}=e;this._tool=new s({view:c,object:this._object,enableMidpoints:!1,enableZShape:!1,snappingManager:t,enableMoveObject:!1,autoHideManipulators:!0,enableDeleteVertices:!1,toolOptions:{tooltips:{enabled:!0,inputEnabled:!0,visibleElements:{area:!1}}}}),this.addHandles([e,l(()=>({editSourcePoints:this.editSourcePoints,operations:this._object?.operations}),e=>{e.operations instanceof b&&(e.operations.editSourcePoints=e.editSourcePoints)},u)],this._tool)}}this.addHandles([r(()=>{this._object=o(this._object),this._tool&&=(c.tools.remove(this._tool),null)})],this._tool),c.addAndActivateTool(this._tool)}_preferredInteractionToolChanged(e){let{_tool:t}=this;if(!t)return;if(this._toolType!==t.type){this._updatingHandles.consumePromise(this._recreateTool());return}let{_object:n}=this;n&&(n.tool=e)}async _dynamicImports(){let[{ManipulatedObject3DMediaElement:e},{ExtentTransformTool:t,ReshapeTool3D:n}]=await Promise.all([import(`../../interactive/editingTools/ManipulatedObject3DMediaElement.js`),import(`../../interactive/editingTools.js`)]);return{ManipulatedObject3DMediaElement:e,ExtentTransformTool:t,ReshapeTool3D:n}}async _findElementAtScreenPoint(e){let t=(await this.view.hitTest(e,{include:[this.layer]})).results[0];return t?.type===`media`?t.element:null}_removeTool(){this._tool&&this.removeHandles(this._tool)}_move(e,t){let{view:n,_object:r}=this,a=r?.operations;if(!a)return;let o=n.overlayPixelSizeInMapUnits(n.pointsOfInterest.focus.location)*d(n.spatialReference)/d(a.data.spatialReference),{_tmpMat2:s,_tmpVec2:c}=this,l=m(s,i(360-this.view.camera.heading)),u=g(c,o*e,o*t);_(u,u,l),a.move(u[0],u[1],0),r.emit(`modified-externally`)}};e([f({constructOnly:!0})],D.prototype,`view`,void 0),e([f({constructOnly:!0})],D.prototype,`layer`,void 0),e([f()],D.prototype,`selectedElement`,void 0),e([f()],D.prototype,`enabled`,void 0),e([f()],D.prototype,`options`,void 0),e([f()],D.prototype,`editSourcePoints`,null),e([f()],D.prototype,`_isEditSourcePointsToggled`,void 0),e([f()],D.prototype,`updating`,null),e([f()],D.prototype,`_preferredInteractionTool`,null),e([f()],D.prototype,`_validatedSelectedElement`,null),D=e([p(`esri.views.3d.layers.support.MediaLayerInteraction`)],D);export{D as MediaLayerInteraction};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{EventedAccessor as t}from"../../../../core/Evented.js";import n from"../../../../core/Logger.js";import{getMetersPerVerticalUnitForSR as r}from"../../../../core/units.js";import{property as i,subclass as a}from"../../../../core/accessorSupport/decorators.js";import{create as o,ZEROS as s}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{isEmpty as c,copy as l,center as u,diameter as d,squaredDistanceToPoint as f}from"../../../../geometry/support/aaBoundingBox.js";import{allFinite as p}from"../../../../geometry/support/aaBoundingRect.js";import{getInfo as m}from"../../../../geometry/support/spatialReferenceUtils.js";import{getMetersPerUnit as h}from"../../../../symbols/support/unitConversionUtils.js";import{ElevationUpdateEvent as g}from"../../support/ElevationUpdateEvent.js";import{ProjectedElevationUpdateExtent as _,calculateElevationUpdateExtents as v,fullWorldElevationUpdateExtent as y,planetCenterProximityToleranceMeters as b}from"../../support/elevationUpdateExtentUtils.js";import{affectsGeometry as x}from"../../webgl-engine/lib/affectsGeometry.js";import{Intersector as S}from"../../webgl-engine/lib/Intersector.js";const C=Symbol(`layerHandles`);let w=class extends t{get spatialReference(){return this.view.spatialReference}constructor(e){super(e),this._elevationOffset=0}initialize(){this._renderCoordsHelper=this.view.renderCoordsHelper,this._projectedExtent=new _(this._renderCoordsHelper),this._intersectLayers=[this.stageLayer],this._intersector=new S(this.view.state.viewingMode),this._intersector.options.store=0;let[e,t]=this._computeLayerElevationRange(this.spatialReference,this.stageLayer);this._zmin=e,this._zmax=t;let n=this.stageLayer.events;this.addHandles([n.on([`layerObjectAdded`,`layerObjectRemoved`,`transformationChanged`,`shaderTransformationChanged`],e=>this._objectChanged(e)),n.on([`geometryAdded`,`geometryRemoved`],({object:e})=>this._objectChanged(e)),n.on(`attributesChanged`,({attribute:e,object:t})=>x(e)&&this._objectChanged(t))],C)}destroy(){this.removeHandles(C)}elevationInfoChanged(){let e=this.layer==null?null:this.layer.elevationInfo;if(e!=null&&e.mode!==`on-the-ground`){let t=r(this.layer.spatialReference),n=h(e.unit??`meters`);this._elevationOffset=(e.offset??0)*n/t}else this._elevationOffset=0}getElevation(e,t,r,i){if(A[0]=e,A[1]=t,A[2]=r,!this._renderCoordsHelper.toRenderCoords(A,i,A))return n.getLogger(this).error(`could not project point for elevation alignment`),null;let a=this._elevationOffset,o=this._zmin+a,s=this._zmax+a;return this._renderCoordsHelper.setAltitude(j,s,A),this._renderCoordsHelper.setAltitude(M,o,A),this._intersector.reset(j,M,null),this._intersector.intersect(this._intersectLayers,null,1,null,e=>!!e.lastValidElevationBB),this._intersector.results.min.getIntersectionPoint(A)?this._renderCoordsHelper.getAltitude(A):null}_objectChanged(e){let t=this.spatialReference;if(!e.lastValidElevationBB||!t)return;let n=e.lastValidElevationBB,{box:r,sphere:i}=e.boundingVolumeWorldSpace;if(this.view.state.viewingMode===1&&(!c(n)&&T(n)||T(r))){this._emitFullExtentElevationChange(t),l(n,r);return}let a=!c(n),o=new Float64Array(a?8:4),s=1/0,u=-1/0,d=!1;if(a&&(this._resetProjectedExtent(n,t),this._expandExtent(t,n,O,this._projectedExtent)||(d=!0),p(this._projectedExtent.extent)?(s=Math.min(s,O[0]),u=Math.max(u,O[1]),o.set(this._projectedExtent.extent)):d=!0),this._projectedExtent.reset(i.center,i.radius,t),this._expandExtent(t,r,E,this._projectedExtent)||(d=!0),p(this._projectedExtent.extent)?(s=Math.min(s,E[0]),u=Math.max(u,E[1]),o.set(this._projectedExtent.extent,a?4:0)):d=!0,d){this._emitFullExtentElevationChange(t),l(n,r);return}let f=v(o,t);f.length>0&&(this._zmin=Math.min(this._zmin,s),this._zmax=Math.max(this._zmax,u));for(let e of f)this._emitElevationChangeEvent(e,t);l(n,r)}_computeLayerElevationRange(e,t){let n=1/0,r=-1/0;return e!=null&&t.objects.forEach(t=>{this._expandExtent(e,t.boundingVolumeWorldSpace.box,D)&&(n=Math.min(n,D[0]),r=Math.max(r,D[1]))}),[n,r]}_expandExtent(e,t,n,r=null){n[0]=1/0,n[1]=-1/0;for(let i=0;i<8;++i){A[0]=t[i&1?0:3],A[1]=t[i&2?1:4],A[2]=t[i&4?2:5];let a=r==null?this._renderCoordsHelper.fromRenderCoords(A,A,e):r.addRenderPoint(A,e);if(a!=null)n[0]=Math.min(n[0],a[2]),n[1]=Math.max(n[1],a[2]);else if(r!=null)return!1}return!0}_emitFullExtentElevationChange(e){let t=m(e);t!=null&&this._emitElevationChangeEvent(y(e,t),e)}_emitElevationChangeEvent(e,t){let n=new g(t,e);this.emit(`elevation-change`,n)}_resetProjectedExtent(e,t){u(e,k),this._projectedExtent.reset(k,.5*d(e),t)}};e([i({constructOnly:!0})],w.prototype,`layer`,void 0),e([i({constructOnly:!0})],w.prototype,`stageLayer`,void 0),e([i({constructOnly:!0})],w.prototype,`view`,void 0),e([i()],w.prototype,`spatialReference`,null),w=e([a(`esri.views.3d.layers.support.StageLayerElevationProvider`)],w);function T(e){return f(e,s)<=b*b}const E=new Float64Array(2),D=new Float64Array(2),O=new Float64Array(2),k=o(),A=o(),j=o(),M=o();export{w as StageLayerElevationProvider};
2
+ import{__decorate as e}from"tslib";import{EventedAccessor as t}from"../../../../core/Evented.js";import n from"../../../../core/Logger.js";import{getMetersPerVerticalUnitForSR as r}from"../../../../core/units.js";import{property as i,subclass as a}from"../../../../core/accessorSupport/decorators.js";import{copy as o}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as s,ZEROS as c}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{isEmpty as l,copy as u,center as d,diameter as f,squaredDistanceToPoint as p}from"../../../../geometry/support/aaBoundingBox.js";import{allFinite as m}from"../../../../geometry/support/aaBoundingRect.js";import{getInfo as h}from"../../../../geometry/support/spatialReferenceUtils.js";import{getMetersPerUnit as g}from"../../../../symbols/support/unitConversionUtils.js";import{ElevationUpdateEvent as _}from"../../support/ElevationUpdateEvent.js";import{ProjectedElevationUpdateExtent as v,calculateElevationUpdateExtents as y,fullWorldElevationUpdateExtent as b,planetCenterProximityToleranceMeters as x}from"../../support/elevationUpdateExtentUtils.js";import{affectsGeometry as S}from"../../webgl-engine/lib/affectsGeometry.js";import{Intersector as C}from"../../webgl-engine/lib/Intersector.js";const w=Symbol(`layerHandles`);let T=class extends t{get spatialReference(){return this.view.spatialReference}constructor(e){super(e),this._elevationOffset=0}initialize(){this._renderCoordsHelper=this.view.renderCoordsHelper,this._projectedExtent=new v(this._renderCoordsHelper),this._intersectLayers=[this.stageLayer],this._intersector=new C(this.view.state.viewingMode),this._intersector.options.store=0;let[e,t]=this._computeLayerElevationRange(this.spatialReference,this.stageLayer);this._zmin=e,this._zmax=t;let n=this.stageLayer.events;this.addHandles([n.on([`layerObjectAdded`,`layerObjectRemoved`,`transformationChanged`,`shaderTransformationChanged`],e=>this._objectChanged(e)),n.on([`geometryAdded`,`geometryRemoved`],({object:e})=>this._objectChanged(e)),n.on(`attributesChanged`,({attribute:e,object:t})=>S(e)&&this._objectChanged(t))],w)}destroy(){this.removeHandles(w)}elevationInfoChanged(){let e=this.layer==null?null:this.layer.elevationInfo;if(e!=null&&e.mode!==`on-the-ground`){let t=r(this.layer.spatialReference),n=g(e.unit??`meters`);this._elevationOffset=(e.offset??0)*n/t}else this._elevationOffset=0}getElevation(e,t,r,i){if(j[0]=e,j[1]=t,j[2]=r,!this._renderCoordsHelper.toRenderCoords(j,i,j))return n.getLogger(this).error(`could not project point for elevation alignment`),null;let a=this._elevationOffset,o=this._zmin+a,s=this._zmax+a;return this._renderCoordsHelper.setAltitude(N,s,j),this._renderCoordsHelper.setAltitude(P,o,j),this._intersector.reset(N,P,null),this._intersector.intersect(this._intersectLayers,null,1,null,e=>!!e.lastValidElevationBB),this._intersector.results.min.getIntersectionPoint(j)?this._renderCoordsHelper.getAltitude(j):null}_objectChanged(e){let t=this.spatialReference;if(!e.lastValidElevationBB||!t)return;let n=e.lastValidElevationBB,{box:r,sphere:i}=e.boundingVolumeWorldSpace;if(this.view.state.viewingMode===1&&(!l(n)&&E(n)||E(r))){this._emitFullExtentElevationChange(t),u(n,r);return}let a=!l(n),o=new Float64Array(a?8:4),s=1/0,c=-1/0,d=!1;if(a&&(this._resetProjectedExtent(n,t),this._expandExtent(t,n,k,this._projectedExtent)||(d=!0),m(this._projectedExtent.extent)?(s=Math.min(s,k[0]),c=Math.max(c,k[1]),o.set(this._projectedExtent.extent)):d=!0),this._projectedExtent.reset(i.center,i.radius,t),this._expandExtent(t,r,D,this._projectedExtent)||(d=!0),m(this._projectedExtent.extent)?(s=Math.min(s,D[0]),c=Math.max(c,D[1]),o.set(this._projectedExtent.extent,a?4:0)):d=!0,d){this._emitFullExtentElevationChange(t),u(n,r);return}let f=y(o,t);f.length>0&&(this._zmin=Math.min(this._zmin,s),this._zmax=Math.max(this._zmax,c));for(let e of f)this._emitElevationChangeEvent(e,t);u(n,r)}_computeLayerElevationRange(e,t){let n=1/0,r=-1/0;return e!=null&&t.objects.forEach(t=>{this._expandExtent(e,t.boundingVolumeWorldSpace.box,O)&&(n=Math.min(n,O[0]),r=Math.max(r,O[1]))}),[n,r]}_expandExtent(e,t,n,r=null){n[0]=1/0,n[1]=-1/0;for(let i=0;i<8;++i){j[0]=t[i&1?0:3],j[1]=t[i&2?1:4],j[2]=t[i&4?2:5];let a=r==null?this._renderCoordsHelper.fromRenderCoords(j,j,e):r.addRenderPoint(j,e);if(a!=null)n[0]=Math.min(n[0],a[2]),n[1]=Math.max(n[1],a[2]);else if(r!=null)return!1;if(r!=null){for(let n=0;n<3;++n)if(!(i&1<<n)&&(o(M,j),M[n]=t[n],!r.addRenderEdge(j,M,e)))return!1}}return!0}_emitFullExtentElevationChange(e){let t=h(e);t!=null&&this._emitElevationChangeEvent(b(e,t),e)}_emitElevationChangeEvent(e,t){let n=new _(t,e);this.emit(`elevation-change`,n)}_resetProjectedExtent(e,t){d(e,A),this._projectedExtent.reset(A,.5*f(e),t)}};e([i({constructOnly:!0})],T.prototype,`layer`,void 0),e([i({constructOnly:!0})],T.prototype,`stageLayer`,void 0),e([i({constructOnly:!0})],T.prototype,`view`,void 0),e([i()],T.prototype,`spatialReference`,null),T=e([a(`esri.views.3d.layers.support.StageLayerElevationProvider`)],T);function E(e){return p(e,c)<=x*x}const D=new Float64Array(2),O=new Float64Array(2),k=new Float64Array(2),A=s(),j=s(),M=s(),N=s(),P=s();export{T as StageLayerElevationProvider};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{lerp as e}from"../../../../core/mathUtils.js";import t from"../../../../core/PooledArray.js";import{castRenderScreenPointArray3 as n,createRenderScreenPointArray3 as r,createScreenPointArray as i}from"../../../../core/screenUtils.js";import{getMetersPerVerticalUnitForSR as a}from"../../../../core/units.js";import{set as o}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{fromValues as s}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{add as c,normalize as l,dot as u,distance as d}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as f,clone as p}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as m,copy as h,negativeInfinity as g,expandWithNestedArray as _}from"../../../../geometry/support/aaBoundingRect.js";import{createSpatialReferenceCyclical as v}from"../../../../geometry/support/normalizeUtils.js";import{create as y}from"../../../../geometry/support/ray.js";import{sv3d as b}from"../../../../geometry/support/vectorStacks.js";import{getElevationOffsetInMeters as x}from"../../../../support/elevationInfoUtils.js";import{g as S}from"../../../../chunks/cameraUtilsSpherical.js";import{computeMapPointFromVec3d as C}from"../../support/hitTest.js";import{fromRenderAtEye as w,fromScreen as T}from"../../support/geometryUtils/ray.js";import{defaultTolerance as E,Intersector as D,defaultScreenPolygonPrimitiveProcessor as O}from"../../webgl-engine/lib/Intersector.js";import{RayIntersectionQuery as k,DrapedScreenPolygonIntersectionQuery as A}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{isValidIntersectorResult as j}from"../../webgl-engine/lib/IntersectorResult.js";import{SliceScreenPolygonPrimitiveProcessor as M,createSliceExtrusionHalfspacePlanes as N,clipPolygonAgainstSlicedAwayHalfspaces as P,sliceFilterPredicate as F}from"../../webgl-engine/lib/intersectorUtils.js";import{prepareScreenPolygonIntersectionQuery as I}from"../../webgl-engine/lib/screenPolygonIntersectionUtils.js";import{TaskPriority as L}from"../../../support/Scheduler.js";class R{constructor(e,n,r){this.viewingMode=e,this._forEachLayer=n,this._view=r,this._externalIntersectionHandlers=new t,this._tolerance=E,this._tmpRay=y(),this._tmpRegion=m(),this._validateHUDIntersector=new D(this.viewingMode),this._validateHUDIntersector.options.hud=!1,this._screenPolygonIntersectionTask=this._view.resourceController.scheduler.registerTask(L.SCREEN_POLYGON_INTERSECTION)}destroy(){this._screenPolygonIntersectionTask.remove(),this._externalIntersectionHandlers.prune()}get screenPolygonIntersectionTask(){return this._screenPolygonIntersectionTask}intersectScreen(e,t,n){return this.intersectRay(this._getPickRay(e,this._tmpRay),H(this.viewingMode),t,n)}intersectScreenFreePointFallback(e,t,n){return this.intersectRayFreePointFallback(this._getPickRay(e,this._tmpRay),t,n)}intersectRayFreePointFallback(e,t,n){return this.intersectRay(e,H(this.viewingMode),t,n)||this._intersectRayFreePointLocal(e,t)}intersectRay(e,t,n,r){return t.options.selectionMode=!1,t.options.store=0,this.computeIntersection(e,t,!1,r),t.results.min?t.results.min.getIntersectionPoint(n):!1}getCenterRayWithSubpixelOffset(e,t,n=.5,r=.5){return e.getRenderCenter(Z,n,r),Z[0]+=.0466,Z[1]-=.0123,w(e,Z,t)}intersectIntersectorScreen(e,t,n){this.computeIntersection(this._getPickRay(e,this._tmpRay),t,!1,n)}async intersectIntersectorScreenPolygon(e,t,n){t.polygonResults.init();let r=this._view.state.camera,i=await I(r,e);i!=null&&await this._screenPolygonIntersectionTask.scheduleGenerator(e=>this._intersectIntersectorScreenPolygon(r,t,i,n,e))}*_intersectIntersectorScreenPolygon(e,t,n,r,i){let a=new U(r,this._forEachLayer);t.options.selectOpaqueTerrainOnly=!r||!(`include`in r||`exclude`in r),t.camera=e,t.point=null,t.screenPolygonPrimitiveProcessor=O,yield*t.intersectScreenPolygon(a.layers,n);let o=this._view.slice.plane,s=o?new M(o):null;t.screenPolygonPrimitiveProcessor=s??O,yield*t.intersectScreenPolygon(a.sliceableLayers,n),t.screenPolygonPrimitiveProcessor=O,yield*this._intersectPolygonHandlersGenerator(t,a,n,null,s,void 0,!0,i),yield*this._intersectDrapedScreenPolygon(t,a,n,r),yield*t.intersectHUDScreenPolygon(a.layers,n),t.screenPolygonPrimitiveProcessor=s??O,yield*t.intersectHUDScreenPolygon(a.sliceableLayers,n),t.polygonResults.sortResults()}intersectToolIntersectorScreen(e,t,n){let r=this._getPickRay(e,this._tmpRay);this.intersectToolIntersectorRay(r,t,n)}intersectToolIntersectorRay(e,t,n){t.options.selectionMode=!0,this.computeIntersection(e,t,!1,n);let r=t.results.min;!this._view.groundView.opaque&&(!j(r)||r.intersector===7)&&(t.options.selectionMode=!1,this.computeIntersection(e,t,!1,n))}setTolerance(e=E){this._tolerance=e}addIntersectionHandler(e){this._externalIntersectionHandlers.push(e),this._externalIntersectionHandlers.sort((e,t)=>e.type===7?1:t.type===7?-1:0)}removeIntersectionHandler(e){this._externalIntersectionHandlers.removeUnordered(e)!=null&&this._externalIntersectionHandlers.sort((e,t)=>e.type===7?1:t.type===7?-1:0)}_getPickRay(e,t){let n=this._view.state.camera;return T(n,e,t)}_intersectRayFreePointLocal(e,t){return this.viewingMode!==2||e==null||c(t,e.origin,l(b.get(),e.direction)),!1}intersectElevationFromScreen(e,t,n=0,r=null){return this._intersectElevation(this._getPickRay(e,this._tmpRay),t,n,r)}_intersectElevation(e,t,r=0,i=null){if(e==null)return null;let o=this._view,{renderCoordsHelper:s}=o,c=a(o.spatialReference),d=t==null?`absolute-height`:t.mode,f=x(t)/c,p=(d===`on-the-ground`?0:f+r)*c/s.unitInMeters,{camera:m}=o.state;if(d===`absolute-height`){let t=s?.getAltitude(m.eye),n=u(l(K,e.direction),s.worldUpAtPosition(m.eye,q));if(t<p&&n<0||t>=p&&n>0)return null;if(s.intersectInfiniteManifold(e,p,K)){let e=C(o,K);return e.z??=0,e.z-=f,e}return null}let h=m.projectToRenderScreen(e.origin,n(b.get())),g=new U(null,this._forEachLayer),_=o.slice.plane,v=_?F(_):null,y=new D(this.viewingMode);y.options.store=0,y.options.verticalOffset=p,y.options.normalRequired=!1;let S=this._createRayIntersectionQuery(e,h,!1);y.reset(S.beginPoint,S.endPoint,m),y.point=h;let w=null;if(i&&`type`in i&&i.type===`graphics`){let e=o.allLayerViews.find(e=>e.layer===i)?.uid;w=e?t=>t.layerViewUid===e:null}else i&&(w=e=>e.graphicUid!==i.uid);switch(d){case`relative-to-scene`:y.intersect(g.layers,S.screenPoint,this._tolerance,null,e=>(!w||w(e))&&!!e.lastValidElevationBB),this._intersectRayHandlers(y,g,S,v,!1,e=>e.type===2||e.type===7||e.type===8,!1);break;case`on-the-ground`:case`relative-to-ground`:this._intersectRayHandlers(y,g,S,v,!1,e=>e.isGround,!1)}if(y.results.min.getIntersectionPoint(K)){let e=C(o,K);return e.z=r,e}return null}computeIntersection(e,t,r,i){if(e==null)return;let a=this._view.state.camera,o=a.projectToRenderScreen(e.origin,n(b.get())),s=new U(i,this._forEachLayer);t.options.selectOpaqueTerrainOnly=!i||!(`include`in i||`exclude`in i);let c=this._createRayIntersectionQuery(e,o,r);t.reset(c.beginPoint,c.endPoint,a),t.intersect(s.layers,c.screenPoint,this._tolerance,null,s.objectFilter);let l=this._view.slice.plane,u=l?F(l):null;t.intersect(s.sliceableLayers,c.screenPoint,this._tolerance,u,s.objectFilter);let d=i&&(i.requiresGroundFeedback||i.enableDraped);this._intersectRayHandlers(t,s,c,u,!!d,e=>s.allowedIntersectorTypes==null||s.allowedIntersectorTypes.has(e.type));let f=b.get(),p=this._view,m=p.groundView.spatialReference;if(i&&i.enableDraped&&m!=null&&t.results.ground.getIntersectionPoint(f)){let e=p.overlayManager.renderer,n=p.renderCoordsHelper.spatialReference,r=b.get();p.renderCoordsHelper.fromRenderCoords(f,r,m),r[2]=p.elevationProvider?.getElevation(f[0],f[1],f[2],n,`ground`)??0,e.intersectRay(t,r,t.results.ground,e=>s.filterRenderGeometry(e))}t.sortResults(),this._processHUDResults(t)}_processHUDResults(e){let t=e.results.hud;h(this._tmpRegion,g);let n=[],r=this._tmpRegion,i=e=>{n.push(new z(e))};e.sortResults(t.all),t.min.distance!=null&&i(t.min);for(let e of t.all)t.min.target.object!==e.target.object&&t.max.target.object!==e.target.object&&i(e);if(t.max.distance!=null&&t.max.target.object!==t.min.target.object&&i(t.max),!n.length)return;r[0]===r[2]&&(r[2]+=1),r[1]===r[3]&&(r[3]+=1);let a=!0,o=e.results.max.distance==null,s=0;for(let t of n)a&&=(e.results.min.copy(t.result),!1),o&&e.results.max.copy(t.result),e.options.store===2&&e.results.all.splice(s++,0,t.result)}_createRayIntersectionQuery(e,t,n){return new k(e.origin,c(f(),e.origin,e.direction),t,n)}_intersectRayHandlers(e,t,n,r,i,a=()=>!0,o=!0){let{options:s}=e,c=s.isFiltered,l=s.filteredLayerViewUids;for(let{handler:c,filterPredicate:l,isFiltered:u,filteredLayerViewUids:d}of this._getFilteredIntersectionHandlers(t,r,null,a,o))(!u||c.isGround&&i)&&(s.isFiltered=u,s.filteredLayerViewUids=d,c.intersectRay(e,l,e.rayBegin,e.rayEnd,n.screenPoint,n.isVerticalRay));s.isFiltered=c,s.filteredLayerViewUids=l}*_intersectPolygonHandlersGenerator(e,t,n,r,i,a=()=>!0,o=!0,s){let{options:c}=e,l=c.isFiltered,u=c.filteredLayerViewUids,d=e.screenPolygonPrimitiveProcessor;for(let{handler:l,screenPolygonPrimitiveProcessor:u,isFiltered:d,filteredLayerViewUids:f}of this._getFilteredIntersectionHandlers(t,r,i,a,o))d||l.intersectScreenPolygon==null||(c.isFiltered=d,c.filteredLayerViewUids=f,e.screenPolygonPrimitiveProcessor=u??O,yield*l.intersectScreenPolygon(e,n,s));c.isFiltered=l,c.filteredLayerViewUids=u,e.screenPolygonPrimitiveProcessor=d}*_intersectDrapedScreenPolygon(e,t,n,r){let{basemapTerrain:i,overlayManager:a}=this._view,o=this._view.groundView.spatialReference!=null&&!a.renderer.isEmpty;if(!e.options.selectionMode||!r?.enableDraped||!o)return;let s=yield*this._createDrapedPolygonIntersectionQueries(n,i.slicePlaneEnabled?this._view.slice.plane:null);s!=null&&(yield*this._view.overlayManager.renderer.intersectScreenPolygon(e,s,e=>t.filterRenderGeometry(e)))}*_createDrapedPolygonIntersectionQueries(t,n){let{state:{camera:{eye:r}},pointsOfInterest:i}=this._view,a=this._view.groundView.spatialReference,c=[],l=n?[]:null,u=S(this._view,i.focus.renderLocation),f=v(a),m=1/0,h=null,g=K,_=q,y=e=>{if(!this._intersectDrapedScreenPolygonPoint(g,_,e))return!1;let t=h!=null&&f?h+f.shortestSignedDiff(h,g[0]):g[0];return h=t,c.push(s(t,g[1])),l&&l.push(p(_)),m=Math.min(m,d(r,_)),!0},{points:b}=t,{length:x}=b;for(let t=0;t<x;t++){let n=b[t],r=b[(t+1)%x];for(let t=0;t<u;t++){let i=t/u;if(!y(t===0?n:o(Y,e(n[0],r[0],i),e(n[1],r[1],i))))return null;yield}}if(!Number.isFinite(m))return null;if(n==null||!l)return[G(c,m)];let C=this._clipDrapedScreenPolygonIntersectionQueries(l,n,f,r);return C.length>0?C:null}_clipDrapedScreenPolygonIntersectionQueries(e,t,n,r){let i=[],a=N(t);for(let t of P(a,e)){let e=this._createDrapedQueryFromRenderPolygon(t,n,r);e!=null&&i.push(e)}return i.sort((e,t)=>e.distance-t.distance),i}_createDrapedQueryFromRenderPolygon(e,t,n){let{renderCoordsHelper:r}=this._view,i=this._view.groundView.spatialReference,a=[],o=1/0,c=null;for(let l of e){if(!r.fromRenderCoords(l,X,i))return null;let e=c!=null&&t?c+t.shortestSignedDiff(c,X[0]):X[0];c=e,a.push(s(e,X[1])),o=Math.min(o,d(n,l))}return a.length>=3&&Number.isFinite(o)?G(a,o):null}_intersectDrapedScreenPolygonPoint(e,t,n){let r=this._getPickRay(n,this._tmpRay);if(r==null)return!1;let{renderCoordsHelper:i}=this._view;this._intersectGroundPoint(t,r,n)||i.intersectManifoldClosestSilhouette(r,0,t);let a=this._view.groundView.spatialReference;return!!i.fromRenderCoords(t,e,a)}_intersectGroundPoint(e,t,n){let r=this._view.state.camera,i=new U(null,this._forEachLayer),a=new D(this.viewingMode);J[0]=n[0],J[1]=n[1],J[2]=0;let o=this._createRayIntersectionQuery(t,J,!1);return a.options.selectionMode=!0,a.options.store=0,a.options.normalRequired=!1,a.options.selectOpaqueTerrainOnly=!1,a.reset(o.beginPoint,o.endPoint,r),this._intersectRayHandlers(a,i,o,null,!0,e=>e.isGround,!1),a.results.ground.getIntersectionPoint(e)}*_getFilteredIntersectionHandlers(e,t,n,r=()=>!0,i=!0){for(let a of this._externalIntersectionHandlers){if(!r(a))continue;let o=!1,s=[];if(i){let t=a.layerViewUid,n=a.sublayerId,r=Array.isArray(t),i=r?t:[t],c=!1;for(let t of i)e.filterLayerViewUid(t,n)?c=!0:r&&s.push(t);o=!c}yield new B(a,a.slicePlaneEnabled?t:null,a.slicePlaneEnabled?n:null,o,s)}}}class z{constructor(e){this.result=e,this.screenPoint=r()}}class B{constructor(e,t,n,r,i){this.handler=e,this.filterPredicate=t,this.screenPolygonPrimitiveProcessor=n,this.isFiltered=r,this.filteredLayerViewUids=i}}let V;function H(e){return(!V||V.viewingMode!==e)&&(V=new D(e)),V}class U{constructor(e,t){this.layers=[],this.sliceableLayers=[],this.include=e?.include,this.exclude=e?.exclude,this.objectFilter=e?.objectFilter,this.allowedIntersectorTypes=e?.allowedIntersectorTypes,t(e=>{e.pickable&&this.filterLayerViewUid(e.apiLayerViewUid)&&(e.sliceable?this.sliceableLayers:this.layers).push(e)})}filterLayerViewUid(e,t){let{include:n,exclude:r}=this;if(e==null)return n==null&&r==null;let i=n instanceof Map?n.get(e)??!1:n?.has(e),a=r instanceof Map?r.get(e)??!1:r?.has(e);return(i==null||(typeof i==`boolean`?i:t!=null&&i.has(t)))&&(a==null||!(typeof a==`boolean`?a:t!=null&&a.has(t)))}filterRenderGeometry(e){return this.filterLayerViewUid(e.layerViewUid)}}function W(e){return typeof e==`object`&&!!e&&`intersectRay`in e}function G(e,t){return new A(e,_(m(g),e),t)}const K=f(),q=f(),J=r(),Y=i(),X=f(),Z=r();export{R as SceneIntersectionHelper,W as isIntersectionHandler};
2
+ import{lerp as e}from"../../../../core/mathUtils.js";import t from"../../../../core/PooledArray.js";import{castRenderScreenPointArray3 as n,createRenderScreenPointArray3 as r,createScreenPointArray as i}from"../../../../core/screenUtils.js";import{getMetersPerVerticalUnitForSR as a}from"../../../../core/units.js";import{set as o}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{fromValues as s}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{add as c,normalize as l,dot as u,distance as d}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as f,clone as p}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as m,copy as h,negativeInfinity as g,expandWithNestedArray as _}from"../../../../geometry/support/aaBoundingRect.js";import{createSpatialReferenceCyclical as v}from"../../../../geometry/support/normalizeUtils.js";import{create as y}from"../../../../geometry/support/ray.js";import{sv3d as b}from"../../../../geometry/support/vectorStacks.js";import{getElevationOffsetInMeters as x}from"../../../../support/elevationInfoUtils.js";import{g as S}from"../../../../chunks/cameraUtilsSpherical.js";import{computeMapPointFromVec3d as C}from"../../support/hitTest.js";import{fromRenderAtEye as w,fromScreen as T}from"../../support/geometryUtils/ray.js";import{defaultTolerance as E,Intersector as D,defaultScreenPolygonPrimitiveProcessor as O}from"../../webgl-engine/lib/Intersector.js";import{RayIntersectionQuery as k,DrapedScreenPolygonIntersectionQuery as A}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{isValidIntersectorResult as j}from"../../webgl-engine/lib/IntersectorResult.js";import{SliceScreenPolygonPrimitiveProcessor as M,createSliceExtrusionHalfspacePlanes as N,clipPolygonAgainstSlicedAwayHalfspaces as P,sliceFilterPredicate as F}from"../../webgl-engine/lib/intersectorUtils.js";import{prepareScreenPolygonIntersectionQuery as I}from"../../webgl-engine/lib/screenPolygonIntersectionUtils.js";import{TaskPriority as L}from"../../../support/Scheduler.js";class R{constructor(e,n,r){this.viewingMode=e,this._forEachLayer=n,this._view=r,this._externalIntersectionHandlers=new t,this._tolerance=E,this._tmpRay=y(),this._tmpRegion=m(),this._validateHUDIntersector=new D(this.viewingMode),this._validateHUDIntersector.options.hud=!1,this._screenPolygonIntersectionTask=this._view.resourceController.scheduler.registerTask(L.SCREEN_POLYGON_INTERSECTION)}destroy(){this._screenPolygonIntersectionTask.remove(),this._externalIntersectionHandlers.prune()}get screenPolygonIntersectionTask(){return this._screenPolygonIntersectionTask}intersectScreen(e,t,n){return this.intersectRay(this._getPickRay(e,this._tmpRay),H(this.viewingMode),t,n)}intersectScreenFreePointFallback(e,t,n){return this.intersectRayFreePointFallback(this._getPickRay(e,this._tmpRay),t,n)}intersectRayFreePointFallback(e,t,n){return this.intersectRay(e,H(this.viewingMode),t,n)||this._intersectRayFreePointLocal(e,t)}intersectRay(e,t,n,r){return t.options.selectionMode=!1,t.options.store=0,this.computeIntersection(e,t,!1,r),t.results.min?t.results.min.getIntersectionPoint(n):!1}getCenterRayWithSubpixelOffset(e,t,n=.5,r=.5){return e.getRenderCenter(Z,n,r),Z[0]+=.0466,Z[1]-=.0123,w(e,Z,t)}intersectIntersectorScreen(e,t,n){this.computeIntersection(this._getPickRay(e,this._tmpRay),t,!1,n)}async intersectIntersectorScreenPolygon(e,t,n){t.polygonResults.init();let r=this._view.state.camera,i=await I(r,e);i!=null&&await this._screenPolygonIntersectionTask.scheduleGenerator(e=>this._intersectIntersectorScreenPolygon(r,t,i,n,e))}*_intersectIntersectorScreenPolygon(e,t,n,r,i){let a=new U(r,this._forEachLayer);t.options.selectOpaqueTerrainOnly=!r||!(`include`in r||`exclude`in r),t.camera=e,t.point=null,t.screenPolygonPrimitiveProcessor=O,yield*t.intersectScreenPolygon(a.layers,n);let o=this._view.slice.plane,s=o?new M(o):null;t.screenPolygonPrimitiveProcessor=s??O,yield*t.intersectScreenPolygon(a.sliceableLayers,n),t.screenPolygonPrimitiveProcessor=O,yield*this._intersectPolygonHandlersGenerator(t,a,n,null,s,void 0,!0,i),yield*this._intersectDrapedScreenPolygon(t,a,n,r),yield*t.intersectHUDScreenPolygon(a.layers,n),t.screenPolygonPrimitiveProcessor=s??O,yield*t.intersectHUDScreenPolygon(a.sliceableLayers,n),t.polygonResults.sortResults()}intersectToolIntersectorScreen(e,t,n){let r=this._getPickRay(e,this._tmpRay);this.intersectToolIntersectorRay(r,t,n)}intersectToolIntersectorRay(e,t,n){t.options.selectionMode=!0,this.computeIntersection(e,t,!1,n);let r=t.results.min;this._view.groundView.opaque||j(r)&&r.intersector!==7||(t.options.selectionMode=!1,this.computeIntersection(e,t,!1,n))}setTolerance(e=E){this._tolerance=e}addIntersectionHandler(e){this._externalIntersectionHandlers.push(e),this._externalIntersectionHandlers.sort((e,t)=>e.type===7?1:t.type===7?-1:0)}removeIntersectionHandler(e){this._externalIntersectionHandlers.removeUnordered(e)!=null&&this._externalIntersectionHandlers.sort((e,t)=>e.type===7?1:t.type===7?-1:0)}_getPickRay(e,t){let n=this._view.state.camera;return T(n,e,t)}_intersectRayFreePointLocal(e,t){return this.viewingMode!==2||e==null||c(t,e.origin,l(b.get(),e.direction)),!1}intersectElevationFromScreen(e,t,n=0,r=null){return this._intersectElevation(this._getPickRay(e,this._tmpRay),t,n,r)}_intersectElevation(e,t,r=0,i=null){if(e==null)return null;let o=this._view,{renderCoordsHelper:s}=o,c=a(o.spatialReference),d=t==null?`absolute-height`:t.mode,f=x(t)/c,p=(d===`on-the-ground`?0:f+r)*c/s.unitInMeters,{camera:m}=o.state;if(d===`absolute-height`){let t=s?.getAltitude(m.eye),n=u(l(K,e.direction),s.worldUpAtPosition(m.eye,q));if(t<p&&n<0||t>=p&&n>0)return null;if(s.intersectInfiniteManifold(e,p,K)){let e=C(o,K);return e.z??=0,e.z-=f,e}return null}let h=m.projectToRenderScreen(e.origin,n(b.get())),g=new U(null,this._forEachLayer),_=o.slice.plane,v=_?F(_):null,y=new D(this.viewingMode);y.options.store=0,y.options.verticalOffset=p,y.options.normalRequired=!1;let S=this._createRayIntersectionQuery(e,h,!1);y.reset(S.beginPoint,S.endPoint,m),y.point=h;let w=null;if(i&&`type`in i&&i.type===`graphics`){let e=o.allLayerViews.find(e=>e.layer===i)?.uid;w=e?t=>t.layerViewUid===e:null}else i&&(w=e=>e.graphicUid!==i.uid);switch(d){case`relative-to-scene`:y.intersect(g.layers,S.screenPoint,this._tolerance,null,e=>(!w||w(e))&&!!e.lastValidElevationBB),this._intersectRayHandlers(y,g,S,v,!1,e=>e.type===2||e.type===7||e.type===8,!1);break;case`on-the-ground`:case`relative-to-ground`:this._intersectRayHandlers(y,g,S,v,!1,e=>e.isGround,!1)}if(y.results.min.getIntersectionPoint(K)){let e=C(o,K);return e.z=r,e}return null}computeIntersection(e,t,r,i){if(e==null)return;let a=this._view.state.camera,o=a.projectToRenderScreen(e.origin,n(b.get())),s=new U(i,this._forEachLayer);t.options.selectOpaqueTerrainOnly=!i||!(`include`in i||`exclude`in i);let c=this._createRayIntersectionQuery(e,o,r);t.reset(c.beginPoint,c.endPoint,a),t.intersect(s.layers,c.screenPoint,this._tolerance,null,s.objectFilter);let l=this._view.slice.plane,u=l?F(l):null;t.intersect(s.sliceableLayers,c.screenPoint,this._tolerance,u,s.objectFilter);let d=i&&(i.requiresGroundFeedback||i.enableDraped);this._intersectRayHandlers(t,s,c,u,!!d,e=>s.allowedIntersectorTypes==null||s.allowedIntersectorTypes.has(e.type));let f=b.get(),p=this._view,m=p.groundView.spatialReference;if(i&&i.enableDraped&&m!=null&&t.results.ground.getIntersectionPoint(f)){let e=p.overlayManager.renderer,n=p.renderCoordsHelper.spatialReference,r=b.get();p.renderCoordsHelper.fromRenderCoords(f,r,m),r[2]=p.elevationProvider?.getElevation(f[0],f[1],f[2],n,`ground`)??0,e.intersectRay(t,r,t.results.ground,e=>s.filterRenderGeometry(e))}t.sortResults(),this._processHUDResults(t)}_processHUDResults(e){let t=e.results.hud;h(this._tmpRegion,g);let n=[],r=this._tmpRegion,i=e=>{n.push(new z(e))};e.sortResults(t.all),t.min.distance!=null&&i(t.min);for(let e of t.all)t.min.target.object!==e.target.object&&t.max.target.object!==e.target.object&&i(e);if(t.max.distance!=null&&t.max.target.object!==t.min.target.object&&i(t.max),!n.length)return;r[0]===r[2]&&(r[2]+=1),r[1]===r[3]&&(r[3]+=1);let a=!0,o=e.results.max.distance==null,s=0;for(let t of n)a&&=(e.results.min.copy(t.result),!1),o&&e.results.max.copy(t.result),e.options.store===2&&e.results.all.splice(s++,0,t.result)}_createRayIntersectionQuery(e,t,n){return new k(e.origin,c(f(),e.origin,e.direction),t,n)}_intersectRayHandlers(e,t,n,r,i,a=()=>!0,o=!0){let{options:s}=e,c=s.isFiltered,l=s.filteredLayerViewUids;for(let{handler:c,filterPredicate:l,isFiltered:u,filteredLayerViewUids:d}of this._getFilteredIntersectionHandlers(t,r,null,a,o))(!u||c.isGround&&i)&&(s.isFiltered=u,s.filteredLayerViewUids=d,c.intersectRay(e,l,e.rayBegin,e.rayEnd,n.screenPoint,n.isVerticalRay));s.isFiltered=c,s.filteredLayerViewUids=l}*_intersectPolygonHandlersGenerator(e,t,n,r,i,a=()=>!0,o=!0,s){let{options:c}=e,l=c.isFiltered,u=c.filteredLayerViewUids,d=e.screenPolygonPrimitiveProcessor;for(let{handler:l,screenPolygonPrimitiveProcessor:u,isFiltered:d,filteredLayerViewUids:f}of this._getFilteredIntersectionHandlers(t,r,i,a,o))d||l.intersectScreenPolygon==null||(c.isFiltered=d,c.filteredLayerViewUids=f,e.screenPolygonPrimitiveProcessor=u??O,yield*l.intersectScreenPolygon(e,n,s));c.isFiltered=l,c.filteredLayerViewUids=u,e.screenPolygonPrimitiveProcessor=d}*_intersectDrapedScreenPolygon(e,t,n,r){let{basemapTerrain:i,overlayManager:a}=this._view,o=this._view.groundView.spatialReference!=null&&!a.renderer.isEmpty;if(!e.options.selectionMode||!r?.enableDraped||!o)return;let s=yield*this._createDrapedPolygonIntersectionQueries(n,i.slicePlaneEnabled?this._view.slice.plane:null);s!=null&&(yield*this._view.overlayManager.renderer.intersectScreenPolygon(e,s,e=>t.filterRenderGeometry(e)))}*_createDrapedPolygonIntersectionQueries(t,n){let{state:{camera:{eye:r}},pointsOfInterest:i}=this._view,a=this._view.groundView.spatialReference,c=[],l=n?[]:null,u=S(this._view,i.focus.renderLocation),f=v(a),m=1/0,h=null,g=K,_=q,y=e=>{if(!this._intersectDrapedScreenPolygonPoint(g,_,e))return!1;let t=h!=null&&f?h+f.shortestSignedDiff(h,g[0]):g[0];return h=t,c.push(s(t,g[1])),l&&l.push(p(_)),m=Math.min(m,d(r,_)),!0},{points:b}=t,{length:x}=b;for(let t=0;t<x;t++){let n=b[t],r=b[(t+1)%x];for(let t=0;t<u;t++){let i=t/u;if(!y(t===0?n:o(Y,e(n[0],r[0],i),e(n[1],r[1],i))))return null;yield}}if(!Number.isFinite(m))return null;if(n==null||!l)return[G(c,m)];let C=this._clipDrapedScreenPolygonIntersectionQueries(l,n,f,r);return C.length>0?C:null}_clipDrapedScreenPolygonIntersectionQueries(e,t,n,r){let i=[],a=N(t);for(let t of P(a,e)){let e=this._createDrapedQueryFromRenderPolygon(t,n,r);e!=null&&i.push(e)}return i.sort((e,t)=>e.distance-t.distance),i}_createDrapedQueryFromRenderPolygon(e,t,n){let{renderCoordsHelper:r}=this._view,i=this._view.groundView.spatialReference,a=[],o=1/0,c=null;for(let l of e){if(!r.fromRenderCoords(l,X,i))return null;let e=c!=null&&t?c+t.shortestSignedDiff(c,X[0]):X[0];c=e,a.push(s(e,X[1])),o=Math.min(o,d(n,l))}return a.length>=3&&Number.isFinite(o)?G(a,o):null}_intersectDrapedScreenPolygonPoint(e,t,n){let r=this._getPickRay(n,this._tmpRay);if(r==null)return!1;let{renderCoordsHelper:i}=this._view;this._intersectGroundPoint(t,r,n)||i.intersectManifoldClosestSilhouette(r,0,t);let a=this._view.groundView.spatialReference;return!!i.fromRenderCoords(t,e,a)}_intersectGroundPoint(e,t,n){let r=this._view.state.camera,i=new U(null,this._forEachLayer),a=new D(this.viewingMode);J[0]=n[0],J[1]=n[1],J[2]=0;let o=this._createRayIntersectionQuery(t,J,!1);return a.options.selectionMode=!0,a.options.store=0,a.options.normalRequired=!1,a.options.selectOpaqueTerrainOnly=!1,a.reset(o.beginPoint,o.endPoint,r),this._intersectRayHandlers(a,i,o,null,!0,e=>e.isGround,!1),a.results.ground.getIntersectionPoint(e)}*_getFilteredIntersectionHandlers(e,t,n,r=()=>!0,i=!0){for(let a of this._externalIntersectionHandlers){if(!r(a))continue;let o=!1,s=[];if(i){let t=a.layerViewUid,n=a.sublayerId,r=Array.isArray(t),i=r?t:[t],c=!1;for(let t of i)e.filterLayerViewUid(t,n)?c=!0:r&&s.push(t);o=!c}yield new B(a,a.slicePlaneEnabled?t:null,a.slicePlaneEnabled?n:null,o,s)}}}class z{constructor(e){this.result=e,this.screenPoint=r()}}class B{constructor(e,t,n,r,i){this.handler=e,this.filterPredicate=t,this.screenPolygonPrimitiveProcessor=n,this.isFiltered=r,this.filteredLayerViewUids=i}}let V;function H(e){return V&&V.viewingMode===e||(V=new D(e)),V}class U{constructor(e,t){this.layers=[],this.sliceableLayers=[],this.include=e?.include,this.exclude=e?.exclude,this.objectFilter=e?.objectFilter,this.allowedIntersectorTypes=e?.allowedIntersectorTypes,t(e=>{e.pickable&&this.filterLayerViewUid(e.apiLayerViewUid)&&(e.sliceable?this.sliceableLayers:this.layers).push(e)})}filterLayerViewUid(e,t){let{include:n,exclude:r}=this;if(e==null)return n==null&&r==null;let i=n instanceof Map?n.get(e)??!1:n?.has(e),a=r instanceof Map?r.get(e)??!1:r?.has(e);return(i==null||(typeof i==`boolean`?i:t!=null&&i.has(t)))&&(a==null||!(typeof a==`boolean`?a:t!=null&&a.has(t)))}filterRenderGeometry(e){return this.filterLayerViewUid(e.layerViewUid)}}function W(e){return typeof e==`object`&&!!e&&`intersectRay`in e}function G(e,t){return new A(e,_(m(g),e),t)}const K=f(),q=f(),J=r(),Y=i(),X=f(),Z=r();export{R as SceneIntersectionHelper,W as isIntersectionHandler};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{cyclicalPI as e}from"../../../../core/Cyclical.js";import{deg2rad as t,clamp as n,acosClamped as r,asinClamped as i}from"../../../../core/mathUtils.js";import{createScreenPointArray as a}from"../../../../core/screenUtils.js";import{fromRotation as o,exactEquals as s,rotate as c,multiply as l}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{IDENTITY as u,create as d}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as f}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as p}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{exactEquals as ee,length as m,dot as h,subtract as g,normalize as _,squaredDistance as v,copy as y,transformMat4 as b,add as x,distance as te,cross as S,scale as C,lerp as ne,set as re}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{clone as ie,create as w}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as ae,axis as oe,fromPoints as se,wrapAxisAngle as ce}from"../../../../geometry/support/axisAngle.js";import{coordinateSystemFromOneAxisAndNormalVector as le,vectorCoordinates as ue}from"../../../../geometry/support/coordinateSystem.js";import{create as de,fromNormalAndOffset as fe,intersectRay as T}from"../../../../geometry/support/plane.js";import{Sphere as pe}from"../../../../geometry/support/sphere.js";import{sm4d as me,sv3d as E}from"../../../../geometry/support/vectorStacks.js";import{fromScreenAtEye as D,fromScreen as he}from"../../support/geometryUtils/ray.js";import{intersectScreen as ge}from"../../support/geometryUtils/sphere.js";import _e from"../../webgl/RenderCamera.js";import{Intersector as ve}from"../../webgl-engine/lib/Intersector.js";import{terrainId as ye}from"../../webgl-engine/lib/verticalOffsetUtils.js";const be=30,xe=[1,3e8],Se=8,Ce=[200,1508e5],we=5,Te=50,Ee=5,De=10,Oe=90,O=1e-6,ke={exclude:new Set([ye])};function Ae(e,t,n){return n[0]=t[0]/(e.fullWidth/e.pixelRatio),n[1]=t[1]/(e.fullHeight/e.pixelRatio),n}function je(e){for(;e>Math.PI;)e-=2*Math.PI;for(;e<-Math.PI;)e+=2*Math.PI;return e}function k(e,t,n){let r=o(me.get(),n[3],oe(n));r==null||s(r,u)||(g(Y,e.eye,t),b(Y,Y,r),e.eye=x(Y,Y,t),g(Y,e.center,t),b(Y,Y,r),e.center=x(Y,Y,t),e.up=b(Y,e.up,r))}function Me(e,t,n,r){return T(e,he(t,n,dt),r)}function Ne(e,t,n,r){return T(e,D(t,n,dt),r)}function Pe(e,t,n,r){let i=E.get(),a=1-n;g(i,t,e.eye);let o=m(i),s=o*(1-a);a>=0&&s<r&&(s=r,a=-(s-o)/o),!(Math.abs(o-s)<O)&&(C(i,i,a),e.eye=x(Y,e.eye,i),e.center=ne(Y,e.center,t,a))}function Fe(e,t,n){t.getScreenCenter(Ie),ge(e,t,Ie,Y)&&(t.center=Y);let r=t.distance,i=r*n;if(Math.abs(r-i)<O)return;let a=C(E.get(),t.viewForward,i);t.eye=g(Y,t.center,a)}const Ie=a();function Le(e,t){re(t,0,0,0);for(let n of e)x(t,t,n);C(t,t,1/e.length)}function Re(e,t,n,r){return Math.sin(e/m(t))*(n+r.radius)}function ze(e,t,n,r){return Re(Math.PI/2,t,n,r)+(e-Math.PI/2)}const A={Elevation:3e4,Angle:t(16)},j=t(80);function Be(e,t,n,r,i,a){let o=e.sceneIntersectionHelper,s=new ve(e.state.viewingMode);s.options.selectionMode=!1,s.options.store=0,s.options.hud=!1,s.options.normalRequired=!0;let c=null,l=w(),u=new pe,d=!0,f=!0,{eye:p}=t;o.intersectIntersectorScreen(n,s,a);let h=s.results.min;return h.getIntersectionPoint(l)&&!ee(p,l)&&it(p,l,r)?(c=ie(h.normal),u.radius=m(l)):(f=!1,u.radius=!t.aboveGround||i===0?m(t.eye)-t.relativeElevation:Math.max(m(t.center),.9*r),i===1?Ue(u,t,n,l):d=ge(u,t,n,l)),{sphere:u,scenePickPoint:d?l:null,hasGeometryIntersection:f,intersectorType:h.intersector,normal:c}}function Ve(e,t,n,r){let i=e.relativeElevation;if(i>A.Elevation&&r===`global`)return 1;D(e,t,$);let a=Math.sign(i),o=n.worldUpAtPosition(e.eye,Y);return-a*h(o,$.direction)<Math.sin(A.Angle)*m($.direction)?0:1}function He(e,t,n){g(M,n,t),e.eye=g(Y,e.eye,M),e.center=g(Y,e.center,M)}const M=w();function Ue(e,t,n,r){let i=D(t,n,dt);return i!=null&&(e.closestPointOnSilhouette(i,N),e.intersectRay(i,r)?v(N,i.origin)<v(r,i.origin)?(y(r,N),!1):!0:(g(P,t.eye,t.center),_(P,P),fe(P,-h(_(P,P),N),We),T(We,i,r),!1))}const N=w(),P=w(),We=de();function Ge(a,o,s,c,l,u){let d=0;if(S(Q,a,o),g(X,a,o),m(a)<=l||!c.aboveGround){S(s,X,c.eye);let f=h(a,o)/(m(a)*m(o));if(f<.9999)d=r(f);else{let e=m(S(w(),a,o))/(m(a)*m(o));d=i(e)}let p=Math.cos(n(e.normalize(t(u)),0,j));d=-d-Math.max(0,m(o)-l)/(p*l)}else g(Ke,c.eye,c.center),S(s,X,Ke),d=-m(X)/l;return _(s,s),C(s,s,m(Q)),d}const Ke=w();function F(i,a,o,s){let c,l,u=Math.cos(n(e.normalize(t(s)),0,j));return c=a>o?-(a-o)/(u*o):a<-o?Math.PI-(a+o)/(u*o):r(a/o),l=i>o?-(i-o)/(u*o):i<-o?Math.PI-(i+o)/(u*o):r(i/o),(l-c)*o}function qe(e,t,n,r,i,a,o,s,c,l){let u=F(e[2],t[2],a.radius,s),d=c?F(e[0],t[0],a.radius,180):t[0]-e[0],p=Math.sin(o)*d-Math.cos(o)*u,ee=Math.cos(o)*d+Math.sin(o)*u;_(Y,i);let m=c?p/Math.sqrt(Math.abs(a.radius**2-h(n,Y)**2)):p/a.radius,g=ee/Math.sqrt(Math.abs(a.radius**2-h(n,r)**2));f(l,m,g)}function Je(e,t,n,r,i,a,o,s,c,l){S(Q,e,t),le(a.up,a.eye,V,H,U),le([0,0,1],a.eye,z,B,at),y(n,B),y(r,z),_(n,n),C(n,n,m(Q)),ue(e,_(H,H),_(U,U),_(V,V),ot),ue(t,H,U,V,st),qe(ot,st,e,z,B,o,s,c,l,i)}function Ye(e,t,n,r,i,a,s){o(G,i,r),o(K,s,a),l(q,G,K),g(t,e,n),b(t,t,q),x(t,t,n)}function Xe(e,t,n,r,i,a){o(G,r,n),o(K,a,i),l(q,G,K),g(Y,e.eye,t),b(Y,Y,q),e.eye=x(Y,Y,t),g(Y,e.center,t),b(Y,Y,q),e.center=x(Y,Y,t),g(Y,e.up,t),b(Y,Y,q),e.up=x(Y,Y,t)}const I={Pole:.95,Angle:t(18),Tilt:45,TiltHysteresisMargin:1e-7};let L=!1;function R(e,t,n,r,i,a){let o=Math.abs(r)>Math.PI-I.Angle||Math.abs(r)<I.Angle,s=(Math.abs(e[2])<n*I.Pole||Math.abs(t)>n)&&a;return o&&s?!L&&i<I.Tilt-I.TiltHysteresisMargin?L=!0:L&&i>I.Tilt+I.TiltHysteresisMargin&&(L=!1):L=!1,L}function Ze(e,t,n,r,i,a){if(a)se(n,r,ct),k(t,e.center,ct);else{let a=Ge(n,r,lt,t,e.radius,i);k(t,e.center,ce(lt,a))}}function Qe(e,t,n,r,i,a,o){let s=o?20:1;y(J,r),Z.copyFrom(t);let c,l;for(let r=0;r<s&&v(n,J)>1e-12&&(c=v(n,J),Je(n,J,B,z,W,Z,e,i,a,o),Xe(Z,e.center,z,W[1],B,W[0]),Ye(J,J,e.center,z,W[1],B,W[0]),l=v(n,J),l<c||r===0);r++)t.copyFrom(Z)}function $e(n,r,i,a,o,s,c){R(i,h(r.up,i),n.radius,-e.normalize(t(o)),s,r.aboveGround)?Qe(n,r,i,a,-e.normalize(t(o)),s,c):Ze(n,r,i,a,s,c)}function et(e,t,n,r,i,a){let{eye:o}=e;le([0,0,1],o,z,B,at);let s=t.translation[0]*n.pan,l=i.mode===`zoom`?0:t.translation[1]*n.pan,u=Math.max(Math.sqrt(Math.abs(1-h(e.center,z)**2/m(e.center)**2)),.5),d=(Math.sin(a)*l+Math.cos(a)*s)/u,f=-Math.cos(a)*l+Math.sin(a)*s;switch(c(r.pan.matrix,r.pan.matrix,d,z),r.pan.enabled=!0,i.mode){case`pan`:c(r.pan.matrix,r.pan.matrix,f,B),r.pan.enabled=!0;break;case`zoom`:r.zoom=-t.translation[1]*n.zoom}}function tt(e,t,n,r,i){let{eye:a,viewRight:o}=e,s=S(E.get(),o,a),l=t.translation[0]*n.pan;switch(l!==0&&(c(r.pan.matrix,r.pan.matrix,-l,s),r.pan.enabled=!0),i.mode){case`pan`:{let e=t.translation[1]*n.pan;e!==0&&(c(r.pan.matrix,r.pan.matrix,e,o),r.pan.enabled=!0);break}case`zoom`:r.zoom=-t.translation[1]*n.zoom}}function nt(n,r,i,a,o,s,c,l,u){R(n.center,h(n.up,n.center),m(n.center),-e.normalize(t(s)),c,r.aboveGround)?et(r,i,a,l,u,-e.normalize(t(o))):tt(r,i,a,l,u)}function rt(e,t,n=1/0){let r=Math.abs(h(e,t));return Math.min(n,1/r)}function it(e,t,n){let r=te(e,t),i=m(e);return r<Math.max(i,n)}const z=w(),B=w(),at=w(),V=w(),H=w(),U=w(),ot=w(),st=w(),W=p(),ct=ae(),G=d(),K=d(),q=d(),J=w(),Y=w(),X=w();let Z=new _e;const Q=w(),lt=w();function ut(){Z=new _e}const dt={origin:w(),direction:w()},$={origin:w(),direction:w()};export{j as TiltThresholdPanningSpeed,A as VerticalPanTresholds,He as applyPanPlanar,Ze as applyPanSphericalDirectRotation,Qe as applyPanSphericalPreserveHeading,k as applyRotation,Xe as applyRotationWithTwoAxes,Fe as applyZoomOnSphere,Pe as applyZoomToPoint,Le as centroid,ut as cleanupNavigationUtils,O as distanceComparisonTolerance,ke as excludeTerrain,rt as getTiltScaleFactor,Ve as inferNavigationMode,Me as intersectPlaneFromScreenPoint,Ne as intersectPlaneFromScreenPointAtEye,it as isHitOnSamePlanetSide,F as lengthFromPoints,we as maxPanDistanceModifier,Ee as maxRotatePivotDistanceModifier,be as maxZoomPivotDistanceModifier,Se as maxZoomStepDistanceModifier,Te as minPinchAndPanCameraHeight,De as minRotatePivotDistance,Ae as normalizeCoordinate,je as normalizeRotationDelta,ze as offSurfaceTiltToEyeTiltGlobal,Re as onSurfaceTiltToEyeTiltGlobal,nt as panMotionToRotationMatrix,$e as panToPosition,Be as pickPointAndInitSphere,I as preservingHeadingThresholds,Ye as rotatePointAroundTwoAxes,Ge as rotationAngleAndAxisDirectRotation,Je as rotationAnglesAndAxesHeadingPreserving,qe as rotationAnglesHeadingPreserving,Oe as searchAreaSize,R as shouldPreserveHeading,Ue as sphereOrPlanePointFromScreenPoint,xe as zoomPivotDistanceClamp,Ce as zoomStepDistanceClamp};
2
+ import{cyclicalPI as e}from"../../../../core/Cyclical.js";import{deg2rad as t,clamp as n,acosClamped as r,asinClamped as i}from"../../../../core/mathUtils.js";import{createScreenPointArray as a}from"../../../../core/screenUtils.js";import{fromRotation as o,exactEquals as s,multiply as c,rotate as l}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{IDENTITY as u,create as d}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as f}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as p}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{exactEquals as ee,length as m,dot as h,subtract as g,normalize as _,squaredDistance as v,copy as y,transformMat4 as b,add as x,distance as te,cross as S,scale as C,lerp as ne,set as re}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{clone as ie,create as w}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as ae,axis as oe,fromPoints as se,wrapAxisAngle as ce}from"../../../../geometry/support/axisAngle.js";import{coordinateSystemFromOneAxisAndNormalVector as le,vectorCoordinates as ue}from"../../../../geometry/support/coordinateSystem.js";import{create as de,fromNormalAndOffset as fe,intersectRay as T}from"../../../../geometry/support/plane.js";import{Sphere as pe}from"../../../../geometry/support/sphere.js";import{sm4d as me,sv3d as E}from"../../../../geometry/support/vectorStacks.js";import{fromScreenAtEye as D,fromScreen as he}from"../../support/geometryUtils/ray.js";import{intersectScreen as ge}from"../../support/geometryUtils/sphere.js";import _e from"../../webgl/RenderCamera.js";import{Intersector as ve}from"../../webgl-engine/lib/Intersector.js";import{terrainId as ye}from"../../webgl-engine/lib/verticalOffsetUtils.js";const be=30,xe=[1,3e8],Se=8,Ce=[200,1508e5],we=5,Te=50,Ee=5,De=10,Oe=90,O=1e-6,ke={exclude:new Set([ye])};function Ae(e,t,n){return n[0]=t[0]/(e.fullWidth/e.pixelRatio),n[1]=t[1]/(e.fullHeight/e.pixelRatio),n}function je(e){for(;e>Math.PI;)e-=2*Math.PI;for(;e<-Math.PI;)e+=2*Math.PI;return e}function k(e,t,n){let r=o(me.get(),n[3],oe(n));r==null||s(r,u)||(g(Y,e.eye,t),b(Y,Y,r),e.eye=x(Y,Y,t),g(Y,e.center,t),b(Y,Y,r),e.center=x(Y,Y,t),e.up=b(Y,e.up,r))}function Me(e,t,n,r){return T(e,he(t,n,dt),r)}function Ne(e,t,n,r){return T(e,D(t,n,dt),r)}function Pe(e,t,n,r){let i=E.get(),a=1-n;g(i,t,e.eye);let o=m(i),s=o*(1-a);a>=0&&s<r&&(s=r,a=-(s-o)/o),!(Math.abs(o-s)<O)&&(C(i,i,a),e.eye=x(Y,e.eye,i),e.center=ne(Y,e.center,t,a))}function Fe(e,t,n){t.getScreenCenter(Ie),ge(e,t,Ie,Y)&&(t.center=Y);let r=t.distance,i=r*n;if(Math.abs(r-i)<O)return;let a=C(E.get(),t.viewForward,i);t.eye=g(Y,t.center,a)}const Ie=a();function Le(e,t){re(t,0,0,0);for(let n of e)x(t,t,n);C(t,t,1/e.length)}function Re(e,t,n,r){return Math.sin(e/m(t))*(n+r.radius)}function ze(e,t,n,r){return Re(Math.PI/2,t,n,r)+(e-Math.PI/2)}const A={Elevation:3e4,Angle:t(16)},j=t(80);function Be(e,t,n,r,i,a){let o=e.sceneIntersectionHelper,s=new ve(e.state.viewingMode);s.options.selectionMode=!1,s.options.store=0,s.options.hud=!1,s.options.normalRequired=!0;let c=null,l=w(),u=new pe,d=!0,f=!0,{eye:p}=t;o.intersectIntersectorScreen(n,s,a);let h=s.results.min;return h.getIntersectionPoint(l)&&!ee(p,l)&&it(p,l,r)?(c=ie(h.normal),u.radius=m(l)):(f=!1,u.radius=!t.aboveGround||i===0?m(t.eye)-t.relativeElevation:Math.max(m(t.center),.9*r),i===1?Ue(u,t,n,l):d=ge(u,t,n,l)),{sphere:u,scenePickPoint:d?l:null,hasGeometryIntersection:f,intersectorType:h.intersector,normal:c}}function Ve(e,t,n,r){let i=e.relativeElevation;if(i>A.Elevation&&r===`global`)return 1;D(e,t,$);let a=Math.sign(i),o=n.worldUpAtPosition(e.eye,Y);return-a*h(o,$.direction)<Math.sin(A.Angle)*m($.direction)?0:1}function He(e,t,n){g(M,n,t),e.eye=g(Y,e.eye,M),e.center=g(Y,e.center,M)}const M=w();function Ue(e,t,n,r){let i=D(t,n,dt);return i!=null&&(e.closestPointOnSilhouette(i,N),e.intersectRay(i,r)?v(N,i.origin)<v(r,i.origin)?(y(r,N),!1):!0:(g(P,t.eye,t.center),_(P,P),fe(P,-h(_(P,P),N),We),T(We,i,r),!1))}const N=w(),P=w(),We=de();function Ge(a,o,s,c,l,u){let d=0;if(S(Q,a,o),g(X,a,o),m(a)<=l||!c.aboveGround){S(s,X,c.eye);let f=h(a,o)/(m(a)*m(o));if(f<.9999)d=r(f);else{let e=m(S(w(),a,o))/(m(a)*m(o));d=i(e)}let p=Math.cos(n(e.normalize(t(u)),0,j));d=-d-Math.max(0,m(o)-l)/(p*l)}else g(Ke,c.eye,c.center),S(s,X,Ke),d=-m(X)/l;return _(s,s),C(s,s,m(Q)),d}const Ke=w();function F(i,a,o,s){let c,l,u=Math.cos(n(e.normalize(t(s)),0,j));return c=a>o?-(a-o)/(u*o):a<-o?Math.PI-(a+o)/(u*o):r(a/o),l=i>o?-(i-o)/(u*o):i<-o?Math.PI-(i+o)/(u*o):r(i/o),(l-c)*o}function qe(e,t,n,r,i,a,o,s,c,l){let u=F(e[2],t[2],a.radius,s),d=c?F(e[0],t[0],a.radius,180):t[0]-e[0],p=Math.sin(o)*d-Math.cos(o)*u,ee=Math.cos(o)*d+Math.sin(o)*u;_(Y,i);let m=c?p/Math.sqrt(Math.abs(a.radius**2-h(n,Y)**2)):p/a.radius,g=ee/Math.sqrt(Math.abs(a.radius**2-h(n,r)**2));f(l,m,g)}function Je(e,t,n,r,i,a,o,s,c,l){S(Q,e,t),le(a.up,a.eye,V,H,U),le([0,0,1],a.eye,z,B,at),y(n,B),y(r,z),_(n,n),C(n,n,m(Q)),ue(e,_(H,H),_(U,U),_(V,V),ot),ue(t,H,U,V,st),qe(ot,st,e,z,B,o,s,c,l,i)}function Ye(e,t,n,r,i,a,s){o(G,i,r),o(K,s,a),c(q,G,K),g(t,e,n),b(t,t,q),x(t,t,n)}function Xe(e,t,n,r,i,a){o(G,r,n),o(K,a,i),c(q,G,K),g(Y,e.eye,t),b(Y,Y,q),e.eye=x(Y,Y,t),g(Y,e.center,t),b(Y,Y,q),e.center=x(Y,Y,t),g(Y,e.up,t),b(Y,Y,q),e.up=x(Y,Y,t)}const I={Pole:.95,Angle:t(18),Tilt:45,TiltHysteresisMargin:1e-7};let L=!1;function R(e,t,n,r,i,a){let o=Math.abs(r)>Math.PI-I.Angle||Math.abs(r)<I.Angle,s=(Math.abs(e[2])<n*I.Pole||Math.abs(t)>n)&&a;return o&&s?!L&&i<I.Tilt-I.TiltHysteresisMargin?L=!0:L&&i>I.Tilt+I.TiltHysteresisMargin&&(L=!1):L=!1,L}function Ze(e,t,n,r,i,a){if(a)se(n,r,ct),k(t,e.center,ct);else{let a=Ge(n,r,lt,t,e.radius,i);k(t,e.center,ce(lt,a))}}function Qe(e,t,n,r,i,a,o){let s=o?20:1;y(J,r),Z.copyFrom(t);let c,l;for(let r=0;r<s&&v(n,J)>1e-12&&(c=v(n,J),Je(n,J,B,z,W,Z,e,i,a,o),Xe(Z,e.center,z,W[1],B,W[0]),Ye(J,J,e.center,z,W[1],B,W[0]),l=v(n,J),l<c||r===0);r++)t.copyFrom(Z)}function $e(n,r,i,a,o,s,c){R(i,h(r.up,i),n.radius,-e.normalize(t(o)),s,r.aboveGround)?Qe(n,r,i,a,-e.normalize(t(o)),s,c):Ze(n,r,i,a,s,c)}function et(e,t,n,r,i,a){let{eye:o}=e;le([0,0,1],o,z,B,at);let s=t.translation[0]*n.pan,c=i.mode===`zoom`?0:t.translation[1]*n.pan,u=Math.max(Math.sqrt(Math.abs(1-h(e.center,z)**2/m(e.center)**2)),.5),d=(Math.sin(a)*c+Math.cos(a)*s)/u,f=-Math.cos(a)*c+Math.sin(a)*s;switch(l(r.pan.matrix,r.pan.matrix,d,z),r.pan.enabled=!0,i.mode){case`pan`:l(r.pan.matrix,r.pan.matrix,f,B),r.pan.enabled=!0;break;case`zoom`:r.zoom=-t.translation[1]*n.zoom}}function tt(e,t,n,r,i){let{eye:a,viewRight:o}=e,s=S(E.get(),o,a),c=t.translation[0]*n.pan;switch(c!==0&&(l(r.pan.matrix,r.pan.matrix,-c,s),r.pan.enabled=!0),i.mode){case`pan`:{let e=t.translation[1]*n.pan;e!==0&&(l(r.pan.matrix,r.pan.matrix,e,o),r.pan.enabled=!0);break}case`zoom`:r.zoom=-t.translation[1]*n.zoom}}function nt(n,r,i,a,o,s,c,l,u){R(n.center,h(n.up,n.center),m(n.center),-e.normalize(t(s)),c,r.aboveGround)?et(r,i,a,l,u,-e.normalize(t(o))):tt(r,i,a,l,u)}function rt(e,t,n=1/0){let r=Math.abs(h(e,t));return Math.min(n,1/r)}function it(e,t,n){let r=te(e,t),i=m(e);return r<Math.max(i,n)}const z=w(),B=w(),at=w(),V=w(),H=w(),U=w(),ot=w(),st=w(),W=p(),ct=ae(),G=d(),K=d(),q=d(),J=w(),Y=w(),X=w();let Z=new _e;const Q=w(),lt=w();function ut(){Z=new _e}const dt={origin:w(),direction:w()},$={origin:w(),direction:w()};export{j as TiltThresholdPanningSpeed,A as VerticalPanTresholds,He as applyPanPlanar,Ze as applyPanSphericalDirectRotation,Qe as applyPanSphericalPreserveHeading,k as applyRotation,Xe as applyRotationWithTwoAxes,Fe as applyZoomOnSphere,Pe as applyZoomToPoint,Le as centroid,ut as cleanupNavigationUtils,O as distanceComparisonTolerance,ke as excludeTerrain,rt as getTiltScaleFactor,Ve as inferNavigationMode,Me as intersectPlaneFromScreenPoint,Ne as intersectPlaneFromScreenPointAtEye,it as isHitOnSamePlanetSide,F as lengthFromPoints,we as maxPanDistanceModifier,Ee as maxRotatePivotDistanceModifier,be as maxZoomPivotDistanceModifier,Se as maxZoomStepDistanceModifier,Te as minPinchAndPanCameraHeight,De as minRotatePivotDistance,Ae as normalizeCoordinate,je as normalizeRotationDelta,ze as offSurfaceTiltToEyeTiltGlobal,Re as onSurfaceTiltToEyeTiltGlobal,nt as panMotionToRotationMatrix,$e as panToPosition,Be as pickPointAndInitSphere,I as preservingHeadingThresholds,Ye as rotatePointAroundTwoAxes,Ge as rotationAngleAndAxisDirectRotation,Je as rotationAnglesAndAxesHeadingPreserving,qe as rotationAnglesHeadingPreserving,Oe as searchAreaSize,R as shouldPreserveHeading,Ue as sphereOrPlanePointFromScreenPoint,xe as zoomPivotDistanceClamp,Ce as zoomStepDistanceClamp};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{asinClamped as e}from"../../../core/mathUtils.js";import{len as t}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as n}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{empty as r,expand as i,create as a,fromValues as o}from"../../../geometry/support/aaBoundingRect.js";import{getInfo as s,isGeographic as c}from"../../../geometry/support/spatialReferenceUtils.js";const l=1;function u(e,t){let n=t.valid,r=c(e)?90:n[1];return o(n[0],-r,n[1],r)}function d(e,t){let n=s(t);if(t==null||n==null){if(e.length===0)return[];let t=a();return m(e,t),[t]}return e.length===0?[u(t,n)]:p(e,n)}class f{constructor(e){this._renderCoordsHelper=e,this.extent=r(),this._mapCenterX=NaN,this._worldXWidth=0}reset(n,i,a){r(this.extent),this._mapCenterX=NaN;let o=s(a);if(this._renderCoordsHelper.viewingMode!==1||o==null)return;let c=t(n);if(i>=c)return;let l=Math.asin(i/c),u=e(n[2]/c);if(l>g||Math.abs(u)+l>=Math.PI/2||this._renderCoordsHelper.fromRenderCoords(n,_,a)==null)return;this._mapCenterX=_[0];let d=o.valid;this._worldXWidth=d[1]-d[0]}addRenderPoint(e,t){return this._renderCoordsHelper.fromRenderCoords(e,_,t)==null?null:(Number.isFinite(this._mapCenterX)&&(_[0]+=Math.round((this._mapCenterX-_[0])/this._worldXWidth)*this._worldXWidth),i(this.extent,_,this.extent),_)}}function p(e,t){let n=t.valid,r=n[1]-n[0],i=e[0],a=1/0,s=1/0,c=-1/0,l=-1/0,u=1/0,d=-1/0;for(let t=0;t<e.length;t+=4){let n=e[t],o=e[t+1],f=e[t+2],p=e[t+3];a=Math.min(a,n),c=Math.max(c,f),s=Math.min(s,o),l=Math.max(l,p);let m=Math.round((i-n)/r),h=n+m*r,g=f+m*r;u=Math.min(u,h),d=Math.max(d,g)}let f=o(a,s,c,l),p=a,m=c;if(d-u<m-p&&(p=u,m=d),m-p>=r)return f[0]=n[0],f[2]=n[1],[f];let g=h(p,n[0],r);return p+=g*r,m+=g*r,m<=n[1]?(f[0]=p,f[2]=m,[f]):(f[0]=n[0],f[2]=m-r,[f,o(p,s,n[1],l)])}function m(e,t){let n=1/0,r=1/0,i=-1/0,a=-1/0;for(let t=0;t<e.length;t+=4){let o=e[t],s=e[t+1],c=e[t+2],l=e[t+3];n=Math.min(n,o),r=Math.min(r,s),i=Math.max(i,c),a=Math.max(a,l)}o(n,r,i,a,t)}function h(e,t,n){return Math.ceil((t-e)/n)}const g=Math.PI/4,_=n();export{f as ProjectedElevationUpdateExtent,d as calculateElevationUpdateExtents,u as fullWorldElevationUpdateExtent,l as planetCenterProximityToleranceMeters};
2
+ import{asinClamped as e}from"../../../core/mathUtils.js";import{len as t,lerp as n}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as r,fromValues as i}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import a from"../../../geometry/SpatialReference.js";import{projectBoundingRect as o}from"../../../geometry/projection/projectBoundingRect.js";import{projectBuffer as s}from"../../../geometry/projection/projectBuffer.js";import{wgs84ToWebMercator as c}from"../../../geometry/projection/projectors.js";import{empty as l,expand as u,copy as d,create as f,fromValues as p}from"../../../geometry/support/aaBoundingRect.js";import{getInfo as m,isWebMercator as h,isGeographic as g}from"../../../geometry/support/spatialReferenceUtils.js";export{intersectsGeographicExtent as intersectsElevationUpdateExtent,sphereToGeographicExtent}from"./sphereExtentUtils.js";const _=1;function v(e,t,n,r){let i=e[1],c=e[3];if(t==null||r==null||!o(e,t,n,r))return!1;if(!h(t)||h(r))return!0;if(i<=-x[1]){if(!s(y,a.WGS84,0,S,r,0))return!1;n[1]=S[1]}if(c>=x[1]){if(!s(b,a.WGS84,0,S,r,0))return!1;n[3]=S[1]}return!0}const y=i(0,-90,0),b=i(0,90,0),x=r();c(b,0,x,0);const S=r();function C(e,t,n,r){if(n<e[1]||n>e[3])return!1;if(t>=e[0]&&t<=e[2])return!0;let i=m(r);if(i==null)return!1;let a=i.valid[1]-i.valid[0];return Math.ceil((e[0]-t)/a)<=Math.floor((e[2]-t)/a)}function w(e,t){let n=t.valid,r=g(e)?90:n[1];return h(e)&&(r=x[1]),p(n[0],-r,n[1],r)}function T(e,t){let n=m(t);if(t==null||n==null){if(e.length===0)return[];let t=f();return O(e,t),[t]}return e.length===0?[w(t,n)]:D(e,n)}class E{constructor(e){this._renderCoordsHelper=e,this.extent=l(),this._mapCenterX=NaN,this._worldXWidth=0}reset(n,r,i){l(this.extent),this._mapCenterX=NaN;let a=m(i);if(this._renderCoordsHelper.viewingMode!==1||i==null||a==null)return;let o=t(n);if(r>=o){this._setFullWorldExtent(i,a);return}let s=Math.asin(r/o),c=e(n[2]/o);if(s>A||Math.abs(c)+s>=Math.PI/2){this._setFullWorldExtent(i,a);return}if(this._renderCoordsHelper.fromRenderCoords(n,j,i)==null)return;this._mapCenterX=j[0];let u=a.valid;this._worldXWidth=u[1]-u[0]}addRenderPoint(e,t){return this._renderCoordsHelper.fromRenderCoords(e,j,t)==null?null:(Number.isFinite(this._mapCenterX)&&(j[0]+=Math.round((this._mapCenterX-j[0])/this._worldXWidth)*this._worldXWidth),u(this.extent,j,this.extent),j)}addRenderEdge(e,t,r){if(this._renderCoordsHelper.viewingMode!==1)return!0;let i=t[0]-e[0],a=t[1]-e[1],o=t[2]-e[2],s=e[0]*e[0]+e[1]*e[1],c=e[0]*i+e[1]*a,l=i*i+a*a,u=o*c-e[2]*l,d=(e[2]*c-o*s)/u;return d>0&&d<1?(n(M,e,t,d),this.addRenderPoint(M,r)!=null):!0}_setFullWorldExtent(e,t){d(this.extent,w(e,t))}}function D(e,t){let n=t.valid,r=n[1]-n[0],i=e[0],a=1/0,o=1/0,s=-1/0,c=-1/0,l=1/0,u=-1/0;for(let t=0;t<e.length;t+=4){let n=e[t],d=e[t+1],f=e[t+2],p=e[t+3];a=Math.min(a,n),s=Math.max(s,f),o=Math.min(o,d),c=Math.max(c,p);let m=Math.round((i-n)/r),h=n+m*r,g=f+m*r;l=Math.min(l,h),u=Math.max(u,g)}let d=p(a,o,s,c),f=a,m=s;if(u-l<m-f&&(f=l,m=u),m-f>=r)return d[0]=n[0],d[2]=n[1],[d];let h=k(f,n[0],r);return f+=h*r,m+=h*r,m<=n[1]?(d[0]=f,d[2]=m,[d]):(d[0]=n[0],d[2]=m-r,[d,p(f,o,n[1],c)])}function O(e,t){let n=1/0,r=1/0,i=-1/0,a=-1/0;for(let t=0;t<e.length;t+=4){let o=e[t],s=e[t+1],c=e[t+2],l=e[t+3];n=Math.min(n,o),r=Math.min(r,s),i=Math.max(i,c),a=Math.max(a,l)}p(n,r,i,a,t)}function k(e,t,n){return Math.ceil((t-e)/n)}const A=Math.PI/4,j=r(),M=r();export{E as ProjectedElevationUpdateExtent,T as calculateElevationUpdateExtents,C as containsElevationUpdatePoint,w as fullWorldElevationUpdateExtent,_ as planetCenterProximityToleranceMeters,v as projectElevationUpdateExtent};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{handlesGroup as e}from"../../../core/handleUtils.js";import{watch as t,initial as n}from"../../../core/reactiveUtils.js";import{assertNotMesh as r}from"../../../geometry/asserts.js";import i from"../../../geometry/Extent.js";import{projectOrLoad as a}from"../../../geometry/projectionUtils.js";import{projectBoundingRect as o}from"../../../geometry/projection/projectBoundingRect.js";import{intersects as s,fromExtent as c,empty as l}from"../../../geometry/support/aaBoundingRect.js";function u(l){let u=!1,m=(e,t,n)=>{if(u||d(e,n)||t==null)return;r(t);let h=a(t,l.view.spatialReference);if(h.pending!=null){u=!0,h.pending.finally(()=>{u=!1,m(e,t,n)});return}let g=h.geometry;if(g==null)return;let _=g.type===`point`?i.fromPoint(g):g.extent;_!=null&&o(e.extent,e.spatialReference,f,l.view.spatialReference)&&s(f,c(_,p))&&l.onElevationChanges()},h,g=t(()=>({elevationMode:l.elevationInfo?.mode,geometry:l.geometry}),({elevationMode:e,geometry:t})=>{h?.remove(),e!==`absolute-height`&&(h=l.view.elevationProvider.on(`elevation-change`,n=>m(n,t,e)))},n);return e([g,h])}function d({context:e},t){return t==null?!1:t===`absolute-height`||e===`scene`&&t!==`relative-to-scene`}const f=l(),p=l();export{u as createElevationUpdateHandle};
2
+ import{handlesGroup as e}from"../../../core/handleUtils.js";import{watch as t,initial as n}from"../../../core/reactiveUtils.js";import{assertNotMesh as r}from"../../../geometry/asserts.js";import i from"../../../geometry/Extent.js";import{projectOrLoad as a}from"../../../geometry/projectionUtils.js";import{fromExtent as o,empty as s}from"../../../geometry/support/aaBoundingRect.js";import{projectElevationUpdateExtent as c}from"./elevationUpdateExtentUtils.js";import{intersectsGeographicExtent as l}from"./sphereExtentUtils.js";function u(s){let u=!1,m=(e,t,n)=>{if(u||d(e,n)||t==null)return;r(t);let h=a(t,s.view.spatialReference);if(h.pending!=null){u=!0,h.pending.finally(()=>{u=!1,m(e,t,n)});return}let g=h.geometry;if(g==null)return;let _=g.type===`point`?i.fromPoint(g):g.extent;_!=null&&c(e.extent,e.spatialReference,f,s.view.spatialReference)&&l(f,o(_,p),s.view.spatialReference)&&s.onElevationChanges()},h,g=t(()=>({elevationMode:s.elevationInfo?.mode,geometry:s.geometry}),({elevationMode:e,geometry:t})=>{h?.remove(),e!==`absolute-height`&&(h=s.view.elevationProvider.on(`elevation-change`,n=>m(n,t,e)))},n);return e([g,h])}function d({context:e},t){return t==null?!1:t===`absolute-height`||e===`scene`&&t!==`relative-to-scene`}const f=s(),p=s();export{u as createElevationUpdateHandle};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{clamp as t}from"../../../../core/mathUtils.js";import{destroyMaybe as n}from"../../../../core/maybe.js";import{watch as r}from"../../../../core/reactiveUtils.js";import{createRenderScreenPointArray3 as i}from"../../../../core/screenUtils.js";import{property as a,subclass as o}from"../../../../core/accessorSupport/decorators.js";import{exactEquals as s,dot as c,copy as l,lerp as u,subtract as d,normalize as f}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as p}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import m from"../../../../geometry/Point.js";import{wrap as h}from"../../../../geometry/support/ray.js";import{PointOfInterest as g}from"./PointOfInterest.js";import{PropertiesPool as _}from"../../../support/PropertiesPool.js";import{TaskPriority as v}from"../../../support/Scheduler.js";import{Yield as y}from"../../../support/Yield.js";let b=class extends g{constructor(e){super(e),this._propertiesPool=new _({location:()=>new m,renderLocation:()=>p()},this),this._dirty=!0,this.renderLocation=this._propertiesPool.get(`renderLocation`)}initialize(){this.addHandles([r(()=>this.centerOnSurface.renderLocation,()=>this.updateRenderLocation(),{equals:s}),r(()=>this.state.contentCamera,()=>this.updateRenderLocation())]),this.scheduler&&this.addHandles(this.scheduler.registerTask(v.POINT_OF_INTEREST_FREQUENT,this))}destroy(){this._propertiesPool=n(this._propertiesPool)}get updating(){return this._dirty||this.centerOnSurface.updating}get location(){let e=this._propertiesPool.get(`location`);return e.spatialReference=this.state.spatialReference,this.renderCoordsHelper.fromRenderCoords(this.renderLocation,e),e}get worldUnitsPerContentPixel(){let{camera:e,contentPixelRatio:t}=this.state;return e.computeRenderPixelSizeAt(this.renderLocation)*(e.pixelRatio/t)}get readyToRun(){return this._dirty}runTask(){let e=this._get(`renderLocation`),n=this.centerOnSurface.renderLocation,r=this.renderCoordsHelper,i=this.state.contentCamera;this._dirty=!1,r.worldUpAtPosition(n,x);let a=Math.max(0,(Math.acos(c(x,i.viewForward))-.5*Math.PI)*(i.aboveGround?1:-1));if(Number.isNaN(a)){if(!e||!s(e,n)){let e=this._propertiesPool.get(`renderLocation`);l(e,n),this._set(`renderLocation`,e)}return y}let o=1-t(a/(.5*Math.PI),0,1),d=o*o*o;this._calculateScreenHorizontalEdgeOnSurface(C);let f=this._propertiesPool.get(`renderLocation`);return u(f,n,C,d),(!e||!s(e,f))&&this._set(`renderLocation`,f),y}_calculateScreenHorizontalEdgeOnSurface(e){let t=this.state.contentCamera,n=t.getRenderCenter(i());if(n[1]=t.aboveGround?t.padding[2]:t.fullHeight-t.padding[0],this.estimateSurfaceIntersectionAtRenderPoint(n,e))return e;let r=this.renderCoordsHelper.getAltitude(this.centerOnSurface.renderLocation);if(t.unprojectFromRenderScreen(n,S)){d(S,S,t.eye);let n=f(S,S);if(this.renderCoordsHelper.intersectInfiniteManifold(h(t.eye,n),r,e))return e}return this.renderCoordsHelper.setAltitude(e,r,t.eye)}updateRenderLocation(){this._dirty=!0}};e([a()],b.prototype,`_dirty`,void 0),e([a({constructOnly:!0})],b.prototype,`scheduler`,void 0),e([a({constructOnly:!0})],b.prototype,`centerOnSurface`,void 0),e([a({constructOnly:!0})],b.prototype,`estimateSurfaceIntersectionAtRenderPoint`,void 0),e([a()],b.prototype,`updating`,null),e([a()],b.prototype,`location`,null),e([a()],b.prototype,`renderLocation`,void 0),e([a()],b.prototype,`worldUnitsPerContentPixel`,null),b=e([o(`esri.views.3d.support.pointsOfInterest.Focus`)],b);const x=p(),S=p(),C=p();export{b as Focus};
2
+ import{__decorate as e}from"tslib";import{clamp as t}from"../../../../core/mathUtils.js";import{destroyMaybe as n}from"../../../../core/maybe.js";import{watch as r}from"../../../../core/reactiveUtils.js";import{createRenderScreenPointArray3 as i}from"../../../../core/screenUtils.js";import{property as a,subclass as o}from"../../../../core/accessorSupport/decorators.js";import{exactEquals as s,dot as c,copy as l,lerp as u,subtract as d,normalize as f}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as p}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import m from"../../../../geometry/Point.js";import{wrap as h}from"../../../../geometry/support/ray.js";import{PointOfInterest as g}from"./PointOfInterest.js";import{PropertiesPool as _}from"../../../support/PropertiesPool.js";import{TaskPriority as v}from"../../../support/Scheduler.js";import{Yield as y}from"../../../support/Yield.js";let b=class extends g{constructor(e){super(e),this._propertiesPool=new _({location:()=>new m,renderLocation:()=>p()},this),this._dirty=!0,this.renderLocation=this._propertiesPool.get(`renderLocation`)}initialize(){this.addHandles([r(()=>this.centerOnSurface.renderLocation,()=>this.updateRenderLocation(),{equals:s}),r(()=>this.state.contentCamera,()=>this.updateRenderLocation())]),this.scheduler&&this.addHandles(this.scheduler.registerTask(v.POINT_OF_INTEREST_FREQUENT,this))}destroy(){this._propertiesPool=n(this._propertiesPool)}get updating(){return this._dirty||this.centerOnSurface.updating}get location(){let e=this._propertiesPool.get(`location`);return e.spatialReference=this.state.spatialReference,this.renderCoordsHelper.fromRenderCoords(this.renderLocation,e),e}get worldUnitsPerContentPixel(){let{camera:e,contentPixelRatio:t}=this.state;return e.computeRenderPixelSizeAt(this.renderLocation)*(e.pixelRatio/t)}get readyToRun(){return this._dirty}runTask(){let e=this._get(`renderLocation`),n=this.centerOnSurface.renderLocation,r=this.renderCoordsHelper,i=this.state.contentCamera;this._dirty=!1,r.worldUpAtPosition(n,x);let a=Math.max(0,(Math.acos(c(x,i.viewForward))-.5*Math.PI)*(i.aboveGround?1:-1));if(Number.isNaN(a)){if(!e||!s(e,n)){let e=this._propertiesPool.get(`renderLocation`);l(e,n),this._set(`renderLocation`,e)}return y}let o=1-t(a/(.5*Math.PI),0,1),d=o*o*o;this._calculateScreenHorizontalEdgeOnSurface(C);let f=this._propertiesPool.get(`renderLocation`);return u(f,n,C,d),e&&s(e,f)||this._set(`renderLocation`,f),y}_calculateScreenHorizontalEdgeOnSurface(e){let t=this.state.contentCamera,n=t.getRenderCenter(i());if(n[1]=t.aboveGround?t.padding[2]:t.fullHeight-t.padding[0],this.estimateSurfaceIntersectionAtRenderPoint(n,e))return e;let r=this.renderCoordsHelper.getAltitude(this.centerOnSurface.renderLocation);if(t.unprojectFromRenderScreen(n,S)){d(S,S,t.eye);let n=f(S,S);if(this.renderCoordsHelper.intersectInfiniteManifold(h(t.eye,n),r,e))return e}return this.renderCoordsHelper.setAltitude(e,r,t.eye)}updateRenderLocation(){this._dirty=!0}};e([a()],b.prototype,`_dirty`,void 0),e([a({constructOnly:!0})],b.prototype,`scheduler`,void 0),e([a({constructOnly:!0})],b.prototype,`centerOnSurface`,void 0),e([a({constructOnly:!0})],b.prototype,`estimateSurfaceIntersectionAtRenderPoint`,void 0),e([a()],b.prototype,`updating`,null),e([a()],b.prototype,`location`,null),e([a()],b.prototype,`renderLocation`,void 0),e([a()],b.prototype,`worldUnitsPerContentPixel`,null),b=e([o(`esri.views.3d.support.pointsOfInterest.Focus`)],b);const x=p(),S=p(),C=p();export{b as Focus};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
+ import{length as e}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{intersects as t,fromValues as n}from"../../../geometry/support/aaBoundingRect.js";import{getInfo as r}from"../../../geometry/support/spatialReferenceUtils.js";function i(e,n,i){if(t(e,n))return!0;let a=r(i);if(a==null||e[1]>n[3]||e[3]<n[1])return!1;let o=a.valid[1]-a.valid[0];return Math.ceil((e[0]-n[2])/o)<=Math.floor((e[2]-n[0])/o)}function a(t,r){let i=e(t.center);if(!t.isValid||i<=t.radius)return n(-1/0,-1/0,1/0,1/0,r);let a=Math.asin(t.radius/i),s=Math.atan2(t.center[2],Math.hypot(t.center[0],t.center[1])),c=s*180/Math.PI;return o(Math.atan2(t.center[1],t.center[0])*180/Math.PI,c,s,a,r)}function o(e,t,r,i,a){let o=i*180/Math.PI;if(Math.abs(r)+i>=Math.PI/2)return n(-180,Math.max(-90,t-o),180,Math.min(90,t+o),a);let s=Math.asin(Math.min(1,Math.sin(i)/Math.cos(r)))*180/Math.PI;return n(e-s,t-o,e+s,t+o,a)}export{i as intersectsGeographicExtent,a as sphereToGeographicExtent};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{releaseMaybe as e}from"../../../core/maybe.js";class t{constructor(e,t,n){this._fbos=e,this._format=t,this._name=n}get valid(){return this._handle?.getTexture()!=null}dispose(){this._handle=e(this._handle)}get texture(){return this._handle?.getTexture()}ensureFramebuffer(e,t){(!this._handle||this._handle.fbo?.width!==e||this._handle.fbo?.height!==t)&&(this._handle?.release(),this._handle=this._fbos.acquire(e,t,this._name,this._format))}bind(e){e.bindFramebuffer(this._handle?.fbo)}generateMipMap(){this._handle?.getTexture()?.descriptor?.hasMipmap&&this._handle?.getTexture()?.generateMipmap()}}export{t as OverlayFramebufferObject};
2
+ import{releaseMaybe as e}from"../../../core/maybe.js";class t{constructor(e,t,n){this._fbos=e,this._format=t,this._name=n}get valid(){return this._handle?.getTexture()!=null}dispose(){this._handle=e(this._handle)}get texture(){return this._handle?.getTexture()}ensureFramebuffer(e,t){this._handle&&this._handle.fbo?.width===e&&this._handle.fbo?.height===t||(this._handle?.release(),this._handle=this._fbos.acquire(e,t,this._name,this._format))}bind(e){e.bindFramebuffer(this._handle?.fbo)}generateMipMap(){this._handle?.getTexture()?.descriptor?.hasMipmap&&this._handle?.getTexture()?.generateMipmap()}}export{t as OverlayFramebufferObject};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{unique as t}from"../../../core/arrayUtils.js";import{EventEmitter as n}from"../../../core/Evented.js";import"../../../core/has.js";import{someMap as r,everyMap as i}from"../../../core/MapUtils.js";import{disposeMaybe as a}from"../../../core/maybe.js";import o from"../../../core/PooledArray.js";import{watch as s,syncAndInitial as c,on as l,initial as u}from"../../../core/reactiveUtils.js";import{someSet as d}from"../../../core/SetUtils.js";import{property as f,subclass as p}from"../../../core/accessorSupport/decorators.js";import{ortho as m,fromTranslation as h}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{set as g}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{ones as _}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{debugFlags as v}from"../support/debugFlags.js";import{Overlay as y}from"./Overlay.js";import{OverlayRenderTargets as b}from"./OverlayRenderTargets.js";import x from"../webgl/RenderCamera.js";import{SyncRenderPlugin as S}from"../webgl-engine/effects/RenderPlugin.js";import{trackHighlightOptions as C,renderHighlightBuffer as w}from"../webgl-engine/effects/highlight/Highlight.js";import{GLMaterialRepository as T}from"../webgl-engine/lib/GLMaterialRepository.js";import{GridLocalOriginFactory as E}from"../webgl-engine/lib/GridLocalOriginFactory.js";import{RenderContext as D,defaultRenderOccludedMask as O}from"../webgl-engine/lib/RenderContext.js";import{ShadowMap as k}from"../webgl-engine/lib/ShadowMap.js";import{T as A}from"../../../chunks/Texture.glsl.js";import{TextureTechnique as j}from"../webgl-engine/lib/TextureTechnique.js";import{TextureTechniqueConfiguration as M}from"../webgl-engine/lib/TextureTechniqueConfiguration.js";import{AmbientLight as N}from"../webgl-engine/lighting/Lightsources.js";import{O as P}from"../../../chunks/OverlayCompositing.glsl.js";import{OverlayCompositingTechnique as F}from"../webgl-engine/shaders/OverlayCompositingTechnique.js";import{TaskPriority as I}from"../../support/Scheduler.js";import L from"../../webgl/Texture.js";import{TextureDescriptor as R}from"../../webgl/TextureDescriptor.js";let z=class extends S{constructor(e){super(e),this._overlays=null,this._renderTargets=null,this._overlayParameters=new P,this.hasHighlights=!1,this.renderOccludedFlags=1,this._hasWater=!1,this._renderers=new Map,this._sortedDrapeSourceRenderersDirty=!1,this._sortedRenderers=new o,this._passParameters=new A,this._screenToMapUnitsRatio=1,this._localOriginFactory=null,this.unloadedMemory=0,this.ignoresMemoryFactor=!1,this._camera=new x,this.events=new n,this.longitudeCyclical=null,this.produces=new Map([[18,e=>e!==10||this.hasHighlights],[19,()=>this._hasWater]]),this._hasTargetWithoutRasterImage=!1,this._hasDrapedFeatureSource=!1,this._hasDrapedRasterSource=!1,this._hasDrapedFlowSource=!1;let{state:t,stage:r}=e.parent.view,i=r.renderer.fboCache,a=r.renderView.renderingContext,s=r.renderView.techniques;this._renderContext=new D(a,new k(i,t.viewingMode),s)}initialize(){let e=this._view,t=e.stage.renderView.waterTextures;this.addHandles([s(()=>t.updating,()=>this.events.emit(`content-changed`),c),s(()=>this._spatialReference,e=>this._localOriginFactory=new E(e),c),l(()=>e.allLayerViews,`after-changes`,()=>this._sortedDrapeSourceRenderersDirty=!0),s(()=>C(e.state.highlights),()=>this._sortedDrapeSourceRenderersDirty=!0,u),s(()=>e.state.highlights,e=>{this._bindParameters.highlights=e},u),e.resourceController.scheduler.registerTask(I.OVERLAY_RENDERER,this)]);let n=this._camera;n.near=1,n.far=1e4,n.relativeElevation=null,this._bindParameters.slot=18,this._bindParameters.camera=n,this._bindParameters.updateLighting(new N(_()),0,0,0)}destroy(){this._renderers.forEach(e=>e.destroy()),this._renderers.clear(),this._passParameters.texture=a(this._passParameters.texture),this.disposeOverlays(),this._renderContext.destroy(),this._sortedRenderers.prune()}get _bindParameters(){return this._renderContext.bind}get _rctx(){return this._stage.renderView.renderingContext}get _view(){return this.parent.view}get _stage(){return this.parent.view.stage}get _spatialReference(){return this.parent.spatialReference}get _techniques(){return this._stage.renderView.techniques}get rctx(){return this._rctx}get materials(){return this._pluginContext.materials}get screenToMapUnitsRatio(){return this._screenToMapUnitsRatio}get mapUnitsToGroundRatio(){return this.parent.mapUnitsToPlanarDistanceRatio*this._bindParameters.planarDistanceToGroundRatio}get localOriginFactory(){return this._localOriginFactory}set overlayStretch(e){this._bindParameters.overlayStretch=e}get overlayStretch(){return this._bindParameters.overlayStretch}set time(e){this._renderContext.time=e}get pluginContext(){return this._pluginContext}initializeRenderContext(e){let t=new T(this._view.stage.renderView.textures,this._techniques,()=>{this._onMaterialOrContentChanged(),this.events.emit(`content-changed`),this.notifyChange(`updating`),this.notifyChange(`isEmpty`)},()=>this.events.emit(`content-changed`));this._pluginContext={...e,materials:t},this._techniques.precompile(F)}uninitializeRenderContext(){}acquireTechniques(){return[]}render(){}get updating(){return this._sortedDrapeSourceRenderersDirty||r(this._renderers,e=>e.updating||e.canCompact)}get hasOverlays(){return this._overlays!=null&&this._renderTargets!=null}getMaterialRenderer(e){for(let t of this._renderers.values()){let n=t.getMaterialRenderer(e);if(n)return n}return null}get layers(){return this._sortedDrapeSourceRenderersDirty&&this._updateSortedDrapeSourceRenderers(),t(this._sortedRenderers.map(e=>e.drapeSource.layer).filter(e=>!!e))}registerDrapeSource(e,t){this._renderers.get(e)?.destroy(),this._renderers.set(e,t),this._sortedDrapeSourceRenderersDirty=!0,`fullOpacity`in e&&this.addHandles(s(()=>e.fullOpacity,()=>this.events.emit(`content-changed`)),e)}removeDrapeSourceRenderer(e){if(e==null)return;let t=this._renderers.get(e);t!=null&&(this._sortedDrapeSourceRenderersDirty=!0,this._renderers.delete(e),this.removeHandles(e),t.destroy())}computeValidity(){return this._renderTargets?.computeValidity()??0}releaseRenderTargets(e){this._renderTargets?.dispose(e)}get overlays(){return this._overlays??[]}ensureDrapeTargets(e){this._hasTargetWithoutRasterImage=this._overlays?d(e,e=>e.drapeTargetType===1):!1}ensureDrapeSources(e){this._overlays?(this._hasDrapedFeatureSource=d(e,e=>e.drapeSourceType===1),this._hasDrapedRasterSource=d(e,e=>e.drapeSourceType===0),this._hasDrapedFlowSource=d(e,e=>e.drapeSourceType===2)):this._hasDrapedFeatureSource=this._hasDrapedRasterSource=this._hasDrapedFlowSource=!1}get _needsColorWithoutRasterImage(){return this._hasDrapedRasterSource&&this._hasDrapedFeatureSource&&this._hasTargetWithoutRasterImage}ensureOverlays(e,t){this._overlays??=(this._renderTargets=new b(this._stage.renderer.fboCache),[new y,new y]),this.ensureDrapeTargets(e),this.ensureDrapeSources(t)}disposeOverlays(){this._overlays=null,this._renderTargets?.dispose(1),this._renderTargets=null,this.events.emit(`textures-disposed`)}_useOverlayColorInsteadOfColorNoRasterImage(e){return e===1&&!this._needsColorWithoutRasterImage&&(this._hasDrapedFeatureSource||this._hasDrapedRasterSource)}getTexture(e){let t=this._useOverlayColorInsteadOfColorNoRasterImage(e);return this._renderTargets?.getTexture(t?0:e)}get readyToRun(){return this.updating}runTask(e){this._processDrapeSources(()=>!0,e)}_onMaterialOrContentChanged(){this.renderOccludedFlags=r(this._renderers,e=>e.hasOccluders)?H:1}_processDrapeSources(e,t){let n=!1;for(let[r,i]of this._renderers){if(t?.done)break;(r.destroyed||e(r))&&i.commitChanges()&&(n=!0,t?.madeProgress())}this._sortedDrapeSourceRenderersDirty&&(this._sortedDrapeSourceRenderersDirty=!1,n=!0,this._updateSortedDrapeSourceRenderers(),t?.madeProgress()),t&&this.compact(t),n&&(this._overlays!=null&&this._renderers.size===0&&this.disposeOverlays(),this.notifyChange(`updating`),this.notifyChange(`isEmpty`),this._onMaterialOrContentChanged(),this.hasHighlights=r(this._renderers,e=>e.hasHighlights),this.events.emit(`content-changed`))}compact(e){let t=!1;for(let n of this._renderers.values()){if(e.done)break;t=n.compact(e)||t}return t&&this.notifyChange(`updating`),t}hasHighlight(e){return r(this._renderers,t=>t.hasHighlight(e))}processSyncDrapeSources(){this._processDrapeSources(e=>e.updatePolicy===1)}get isEmpty(){return!v.OVERLAY_DRAW_DEBUG_TEXTURE&&i(this._renderers,e=>e.isEmpty)}get hasWater(){let e=r(this._renderers,({hasWater:e})=>e);return e!==this._hasWater&&(this._hasWater=e,this.events.emit(`has-water`)),this._hasWater}renders(e){if(v.OVERLAY_DRAW_DEBUG_TEXTURE&&e!==4&&e!==2)return!0;if(!this._overlays)return!1;let t=this._overlays[0];for(let e of this._overlays)e.setupGeometryViews(this.longitudeCyclical);if(!t.hasSomeSizedView())return!1;let n=this._setOutput(this._renderTargets?.targets.find(t=>t.content===e)?.output??0);++this._techniques.precompiling;let r=this._sortedRenderers.some(({renderer:e})=>e.precompile(this._renderContext));return--this._techniques.precompiling,this._setOutput(n),r}_setOutput(e){let t=this._bindParameters.output;return this._bindParameters.output=e,this._bindParameters.slot=e===4?19:18,t}get mode(){return this.isEmpty?0:this.hasWater&&this.renders(3)?2:+!!this._renderTargets?.getTexture(0)}updateAnimation(e){let t=!1;return this._renderers.forEach(n=>t=n.updateAnimation(e)||t),t&&this.parent.requestRender(0),t}updateDrapeSourceOrder(){this._sortedDrapeSourceRenderersDirty=!0}precompileShaders(e){if(!this._overlays||!this._renderTargets)return!1;let t=this._bindParameters;t.alignPixelEnabled=e.alignPixelEnabled,++this._techniques.precompiling;for(let e of this._renderTargets.targets){if(e.content===1&&!this._needsColorWithoutRasterImage)continue;let{output:n}=e;this._setOutput(n),n===10&&(t.highlightMixTexture=t.highlights.length>1?this._rctx.emptyTexture:null);let r=this._renderContext.renderOccludedMask;e.content===4&&(this._renderContext.renderOccludedMask=H),this._sortedRenderers.forAll(({drapeSource:t,renderer:n})=>{(e.content!==1||t.drapeSourceType!==0)&&(e.content===4&&n.hasOnlyOccluders||n.precompile(this._renderContext))}),this._renderContext.renderOccludedMask=r,t.highlightMixTexture=null}return--this._techniques.precompiling,!0}drawOverlays(e,t){if(!this._overlays||!this._renderTargets)return;for(let e of this._overlays)e.setupGeometryViews(this.longitudeCyclical);this._bindParameters.alignPixelEnabled=e.alignPixelEnabled;let n=this.allSourcesOccluders;for(let e of this._renderTargets.targets){if(!(e.content===0&&this._hasDrapedFlowSource)&&!e.handleRenderRequest(t)||e.content===1&&!this._needsColorWithoutRasterImage||e.content===4&&n)continue;let r=this._drawTarget(0,e),i=this._drawTarget(1,e);(r||i)&&e.fbo.generateMipMap()}}_drawTarget(e,t){let n=this._overlays[e],r=n.canvasGeometries;if(r.numViews===0)return!1;let i=this._view.state.contentPixelRatio;this._screenToMapUnitsRatio=i*n.mapUnitsPerPixel/this._bindParameters.overlayStretch;let{output:a,content:o}=t;if(this.isEmpty||a===4&&!this.hasWater||!n.hasSomeSizedView())return!1;let{_rctx:s,_camera:c,_renderContext:l,_bindParameters:u}=this;if(c.pixelRatio=n.pixelRatio*i,this._setOutput(a),u.screenToMapUnitsRatio=this._screenToMapUnitsRatio,u.screenToPlanarDistanceRatio=this._screenToMapUnitsRatio*this.parent.mapUnitsToPlanarDistanceRatio,o===4&&(l.renderOccludedMask=H),!this.renders(o))return l.renderOccludedMask=O,!1;let{resolution:d}=n,f=e===0,p=f?0:d;if(s.setViewport(p,0,d,d),this._bindTargetFBO(t),f&&(a===10?s.gl.clearBufferuiv(s.gl.COLOR,0,[0,0,0,0]):(s.setClearColor(0,0,0,0),s.clear(16384))),v.OVERLAY_DRAW_DEBUG_TEXTURE&&o!==4&&o!==2){this._techniques.precompile(j,U);let t=this._techniques.get(j,U);for(let i=0;i<r.numViews;i++)this._setViewParameters(r.extents[i],n),this._ensureDebugPatternResources(n.resolution,V[e]),s.bindTechnique(t,u,this._passParameters),s.screen.draw()}if(a===10){let{fboCache:n}=this._stage.renderer,r=this._resolution;this._bindTargetFBO(t),w(s,n,r,r,u,()=>this._renderAllGeometry(e,t),p)}else this._renderAllGeometry(e,t);return s.bindFramebuffer(null),l.renderOccludedMask=O,!0}get allSourcesOccluders(){return i(this._renderers,e=>e.hasOnlyOccluders)}_renderAllGeometry(e,t){let n=this._overlays[e],r=n.canvasGeometries;this._sortedRenderers.forAll(({drapeSource:i,renderer:a})=>{if(t.content===1&&i.drapeSourceType===0)return;let{fullOpacity:o}=i,s=o!=null&&o<1&&t.output===0&&this._bindTemporaryFBO();for(let e=0;e<r.numViews;e++)this._setViewParameters(r.extents[e],n),a.render(this._renderContext);if(s){this._bindTargetFBO(t),this._overlayParameters.texture=s.getTexture(),this._overlayParameters.opacity=o,this._overlayParameters.overlayIndex=e;let n=this._techniques.get(F);this._rctx.bindTechnique(n,this._bindParameters,this._overlayParameters),this._rctx.screen.draw(),s.release()}})}_bindTargetFBO(e){let t=this._resolution,n=2*t;e.fbo.ensureFramebuffer(n,t),e.fbo.bind(this._rctx)}_bindTemporaryFBO(){let e=this._resolution,t=2*e,n=this._stage.renderer.fboCache,r=n.acquire(t,e,`overlay tmp`);return n.rctx.bindFramebuffer(r.fbo),n.rctx.clear(16384),r}get _resolution(){return this._overlays?.[0].resolution??0}notifyContentChanged(){this.events.emit(`content-changed`)}intersectRay(e,t,n,r){this._sortedDrapeSourceRenderersDirty&&this._updateSortedDrapeSourceRenderers();let i=0;for(let{renderer:a}of this._sortedRenderers)i=a.intersectRay?.(e,t,n,r,i)??i}*intersectScreenPolygon(e,t,n){this._sortedDrapeSourceRenderersDirty&&this._updateSortedDrapeSourceRenderers();let r=0;for(let{renderer:i}of this._sortedRenderers)r=yield*i.intersectScreenPolygon(e,t,n,r)}_updateSortedDrapeSourceRenderers(){if(this._sortedRenderers.clear(),this._renderers.size===0)return;let e=this._view.map.allLayers.map(e=>e.uid),t=e.length;this._renderers.forEach((n,r)=>{let i=e.indexOf(r.layer?.uid),a=i>=0,o=r.renderGroup??+!a,s=r.drapeSourcePriorityOffset??0,c=t*o+(a?i:0)+s;this._sortedRenderers.push(new B(r,n,c))}),this._sortedRenderers.sort((e,t)=>e.index-t.index)}_setViewParameters(e,t){let n=this._camera;n.viewport=[0,0,t.resolution,t.resolution],this._bindParameters.planarDistanceToGroundRatio=this.parent.getPlanarDistanceToGroundRatio((e[1]+e[3])*.5),m(n.projectionMatrix,0,e[2]-e[0],0,e[3]-e[1],n.near,n.far),h(n.viewMatrix,[-e[0],-e[1],0])}_ensureDebugPatternResources(e,t){if(g(this._passParameters.color,t[0],t[1],t[2]),this._passParameters.texture)return;let n=new Uint8Array(e*e*4),r=0;for(let t=0;t<e;t++)for(let i=0;i<e;i++){let a=Math.floor(i/10),o=Math.floor(t/10);a<2||o<2||a*10>e-20||o*10>e-20?(n[r++]=255,n[r++]=255,n[r++]=255,n[r++]=255):(n[r++]=255,n[r++]=255,n[r++]=255,a&1&&o&1?n[r++]=i&1^t&1?0:255:n[r++]=a&1^o&1?0:128)}let i=new R(e);i.samplingMode=9728,this._passParameters.texture=new L(this._rctx,i,n)}get test(){}};e([f()],z.prototype,`hasHighlights`,void 0),e([f()],z.prototype,`renderOccludedFlags`,void 0),e([f()],z.prototype,`_sortedDrapeSourceRenderersDirty`,void 0),e([f({constructOnly:!0})],z.prototype,`parent`,void 0),e([f({readOnly:!0})],z.prototype,`_techniques`,null),e([f({type:Boolean,readOnly:!0})],z.prototype,`updating`,null),e([f()],z.prototype,`isEmpty`,null),z=e([p(`esri.views.3d.terrain.OverlayRenderer`)],z);class B{constructor(e,t,n){this.drapeSource=e,this.renderer=t,this.index=n}}const V=[[1,.5,.5],[.5,.5,1]],H=4,U=new M;U.hasAlpha=!0;export{z as OverlayRenderer,H as overlayRenderOccludedFlag};
2
+ import{__decorate as e}from"tslib";import{unique as t}from"../../../core/arrayUtils.js";import{EventEmitter as n}from"../../../core/Evented.js";import"../../../core/has.js";import{someMap as r,everyMap as i}from"../../../core/MapUtils.js";import{disposeMaybe as a}from"../../../core/maybe.js";import o from"../../../core/PooledArray.js";import{watch as s,syncAndInitial as c,on as l,initial as u}from"../../../core/reactiveUtils.js";import{someSet as d}from"../../../core/SetUtils.js";import{property as f,subclass as p}from"../../../core/accessorSupport/decorators.js";import{ortho as m,fromTranslation as h}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{set as g}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{ones as _}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{debugFlags as v}from"../support/debugFlags.js";import{Overlay as y}from"./Overlay.js";import{OverlayRenderTargets as b}from"./OverlayRenderTargets.js";import x from"../webgl/RenderCamera.js";import{SyncRenderPlugin as S}from"../webgl-engine/effects/RenderPlugin.js";import{trackHighlightOptions as C,renderHighlightBuffer as w}from"../webgl-engine/effects/highlight/Highlight.js";import{GLMaterialRepository as T}from"../webgl-engine/lib/GLMaterialRepository.js";import{GridLocalOriginFactory as E}from"../webgl-engine/lib/GridLocalOriginFactory.js";import{RenderContext as D,defaultRenderOccludedMask as O}from"../webgl-engine/lib/RenderContext.js";import{ShadowMap as k}from"../webgl-engine/lib/ShadowMap.js";import{T as A}from"../../../chunks/Texture.glsl.js";import{TextureTechnique as j}from"../webgl-engine/lib/TextureTechnique.js";import{TextureTechniqueConfiguration as M}from"../webgl-engine/lib/TextureTechniqueConfiguration.js";import{AmbientLight as N}from"../webgl-engine/lighting/Lightsources.js";import{O as P}from"../../../chunks/OverlayCompositing.glsl.js";import{OverlayCompositingTechnique as F}from"../webgl-engine/shaders/OverlayCompositingTechnique.js";import{TaskPriority as I}from"../../support/Scheduler.js";import L from"../../webgl/Texture.js";import{TextureDescriptor as R}from"../../webgl/TextureDescriptor.js";let z=class extends S{constructor(e){super(e),this._overlays=null,this._renderTargets=null,this._overlayParameters=new P,this.hasHighlights=!1,this.renderOccludedFlags=1,this._hasWater=!1,this._renderers=new Map,this._sortedDrapeSourceRenderersDirty=!1,this._sortedRenderers=new o,this._passParameters=new A,this._screenToMapUnitsRatio=1,this._localOriginFactory=null,this.unloadedMemory=0,this.ignoresMemoryFactor=!1,this._camera=new x,this.events=new n,this.longitudeCyclical=null,this.produces=new Map([[18,e=>e!==10||this.hasHighlights],[19,()=>this._hasWater]]),this._hasTargetWithoutRasterImage=!1,this._hasDrapedFeatureSource=!1,this._hasDrapedRasterSource=!1,this._hasDrapedFlowSource=!1;let{state:t,stage:r}=e.parent.view,i=r.renderer.fboCache,a=r.renderView.renderingContext,s=r.renderView.techniques;this._renderContext=new D(a,new k(i,t.viewingMode),s)}initialize(){let e=this._view,t=e.stage.renderView.waterTextures;this.addHandles([s(()=>t.updating,()=>this.events.emit(`content-changed`),c),s(()=>this._spatialReference,e=>this._localOriginFactory=new E(e),c),l(()=>e.allLayerViews,`after-changes`,()=>this._sortedDrapeSourceRenderersDirty=!0),s(()=>C(e.state.highlights),()=>this._sortedDrapeSourceRenderersDirty=!0,u),s(()=>e.state.highlights,e=>{this._bindParameters.highlights=e},u),e.resourceController.scheduler.registerTask(I.OVERLAY_RENDERER,this)]);let n=this._camera;n.near=1,n.far=1e4,n.relativeElevation=null,this._bindParameters.slot=18,this._bindParameters.camera=n,this._bindParameters.updateLighting(new N(_()),0,0,0)}destroy(){this._renderers.forEach(e=>e.destroy()),this._renderers.clear(),this._passParameters.texture=a(this._passParameters.texture),this.disposeOverlays(),this._renderContext.destroy(),this._sortedRenderers.prune()}get _bindParameters(){return this._renderContext.bind}get _rctx(){return this._stage.renderView.renderingContext}get _view(){return this.parent.view}get _stage(){return this.parent.view.stage}get _spatialReference(){return this.parent.spatialReference}get _techniques(){return this._stage.renderView.techniques}get rctx(){return this._rctx}get materials(){return this._pluginContext.materials}get screenToMapUnitsRatio(){return this._screenToMapUnitsRatio}get mapUnitsToGroundRatio(){return this.parent.mapUnitsToPlanarDistanceRatio*this._bindParameters.planarDistanceToGroundRatio}get localOriginFactory(){return this._localOriginFactory}set overlayStretch(e){this._bindParameters.overlayStretch=e}get overlayStretch(){return this._bindParameters.overlayStretch}set time(e){this._renderContext.time=e}get pluginContext(){return this._pluginContext}initializeRenderContext(e){let t=new T(this._view.stage.renderView.textures,this._techniques,()=>{this._onMaterialOrContentChanged(),this.events.emit(`content-changed`),this.notifyChange(`updating`),this.notifyChange(`isEmpty`)},()=>this.events.emit(`content-changed`));this._pluginContext={...e,materials:t},this._techniques.precompile(F)}uninitializeRenderContext(){}acquireTechniques(){return[]}render(){}get updating(){return this._sortedDrapeSourceRenderersDirty||r(this._renderers,e=>e.updating||e.canCompact)}get hasOverlays(){return this._overlays!=null&&this._renderTargets!=null}getMaterialRenderer(e){for(let t of this._renderers.values()){let n=t.getMaterialRenderer(e);if(n)return n}return null}get layers(){return this._sortedDrapeSourceRenderersDirty&&this._updateSortedDrapeSourceRenderers(),t(this._sortedRenderers.map(e=>e.drapeSource.layer).filter(e=>!!e))}registerDrapeSource(e,t){this._renderers.get(e)?.destroy(),this._renderers.set(e,t),this._sortedDrapeSourceRenderersDirty=!0,`fullOpacity`in e&&this.addHandles(s(()=>e.fullOpacity,()=>this.events.emit(`content-changed`)),e)}removeDrapeSourceRenderer(e){if(e==null)return;let t=this._renderers.get(e);t!=null&&(this._sortedDrapeSourceRenderersDirty=!0,this._renderers.delete(e),this.removeHandles(e),t.destroy())}computeValidity(){return this._renderTargets?.computeValidity()??0}releaseRenderTargets(e){this._renderTargets?.dispose(e)}get overlays(){return this._overlays??[]}ensureDrapeTargets(e){this._hasTargetWithoutRasterImage=this._overlays?d(e,e=>e.drapeTargetType===1):!1}ensureDrapeSources(e){this._overlays?(this._hasDrapedFeatureSource=d(e,e=>e.drapeSourceType===1),this._hasDrapedRasterSource=d(e,e=>e.drapeSourceType===0),this._hasDrapedFlowSource=d(e,e=>e.drapeSourceType===2)):this._hasDrapedFeatureSource=this._hasDrapedRasterSource=this._hasDrapedFlowSource=!1}get _needsColorWithoutRasterImage(){return this._hasDrapedRasterSource&&this._hasDrapedFeatureSource&&this._hasTargetWithoutRasterImage}ensureOverlays(e,t){this._overlays??=(this._renderTargets=new b(this._stage.renderer.fboCache),[new y,new y]),this.ensureDrapeTargets(e),this.ensureDrapeSources(t)}disposeOverlays(){this._overlays=null,this._renderTargets?.dispose(1),this._renderTargets=null,this.events.emit(`textures-disposed`)}_useOverlayColorInsteadOfColorNoRasterImage(e){return e===1&&!this._needsColorWithoutRasterImage&&(this._hasDrapedFeatureSource||this._hasDrapedRasterSource)}getTexture(e){let t=this._useOverlayColorInsteadOfColorNoRasterImage(e);return this._renderTargets?.getTexture(t?0:e)}get readyToRun(){return this.updating}runTask(e){this._processDrapeSources(()=>!0,e)}_onMaterialOrContentChanged(){this.renderOccludedFlags=r(this._renderers,e=>e.hasOccluders)?H:1}_processDrapeSources(e,t){let n=!1;for(let[r,i]of this._renderers){if(t?.done)break;(r.destroyed||e(r))&&i.commitChanges()&&(n=!0,t?.madeProgress())}this._sortedDrapeSourceRenderersDirty&&(this._sortedDrapeSourceRenderersDirty=!1,n=!0,this._updateSortedDrapeSourceRenderers(),t?.madeProgress()),t&&this.compact(t),n&&(this._overlays!=null&&this._renderers.size===0&&this.disposeOverlays(),this.notifyChange(`updating`),this.notifyChange(`isEmpty`),this._onMaterialOrContentChanged(),this.hasHighlights=r(this._renderers,e=>e.hasHighlights),this.events.emit(`content-changed`))}compact(e){let t=!1;for(let n of this._renderers.values()){if(e.done)break;t=n.compact(e)||t}return t&&this.notifyChange(`updating`),t}hasHighlight(e){return r(this._renderers,t=>t.hasHighlight(e))}processSyncDrapeSources(){this._processDrapeSources(e=>e.updatePolicy===1)}get isEmpty(){return!v.OVERLAY_DRAW_DEBUG_TEXTURE&&i(this._renderers,e=>e.isEmpty)}get hasWater(){let e=r(this._renderers,({hasWater:e})=>e);return e!==this._hasWater&&(this._hasWater=e,this.events.emit(`has-water`)),this._hasWater}renders(e){if(v.OVERLAY_DRAW_DEBUG_TEXTURE&&e!==4&&e!==2)return!0;if(!this._overlays)return!1;let t=this._overlays[0];for(let e of this._overlays)e.setupGeometryViews(this.longitudeCyclical);if(!t.hasSomeSizedView())return!1;let n=this._setOutput(this._renderTargets?.targets.find(t=>t.content===e)?.output??0);++this._techniques.precompiling;let r=this._sortedRenderers.some(({renderer:e})=>e.precompile(this._renderContext));return--this._techniques.precompiling,this._setOutput(n),r}_setOutput(e){let t=this._bindParameters.output;return this._bindParameters.output=e,this._bindParameters.slot=e===4?19:18,t}get mode(){return this.isEmpty?0:this.hasWater&&this.renders(3)?2:+!!this._renderTargets?.getTexture(0)}updateAnimation(e){let t=!1;return this._renderers.forEach(n=>t=n.updateAnimation(e)||t),t&&this.parent.requestRender(0),t}updateDrapeSourceOrder(){this._sortedDrapeSourceRenderersDirty=!0}precompileShaders(e){if(!this._overlays||!this._renderTargets)return!1;let t=this._bindParameters;t.alignPixelEnabled=e.alignPixelEnabled,++this._techniques.precompiling;for(let e of this._renderTargets.targets){if(e.content===1&&!this._needsColorWithoutRasterImage)continue;let{output:n}=e;this._setOutput(n),n===10&&(t.highlightMixTexture=t.highlights.length>1?this._rctx.emptyTexture:null);let r=this._renderContext.renderOccludedMask;e.content===4&&(this._renderContext.renderOccludedMask=H),this._sortedRenderers.forAll(({drapeSource:t,renderer:n})=>{e.content===1&&t.drapeSourceType===0||e.content===4&&n.hasOnlyOccluders||n.precompile(this._renderContext)}),this._renderContext.renderOccludedMask=r,t.highlightMixTexture=null}return--this._techniques.precompiling,!0}drawOverlays(e,t){if(!this._overlays||!this._renderTargets)return;for(let e of this._overlays)e.setupGeometryViews(this.longitudeCyclical);this._bindParameters.alignPixelEnabled=e.alignPixelEnabled;let n=this.allSourcesOccluders;for(let e of this._renderTargets.targets){if(!(e.content===0&&this._hasDrapedFlowSource)&&!e.handleRenderRequest(t)||e.content===1&&!this._needsColorWithoutRasterImage||e.content===4&&n)continue;let r=this._drawTarget(0,e),i=this._drawTarget(1,e);(r||i)&&e.fbo.generateMipMap()}}_drawTarget(e,t){let n=this._overlays[e],r=n.canvasGeometries;if(r.numViews===0)return!1;let i=this._view.state.contentPixelRatio;this._screenToMapUnitsRatio=i*n.mapUnitsPerPixel/this._bindParameters.overlayStretch;let{output:a,content:o}=t;if(this.isEmpty||a===4&&!this.hasWater||!n.hasSomeSizedView())return!1;let{_rctx:s,_camera:c,_renderContext:l,_bindParameters:u}=this;if(c.pixelRatio=n.pixelRatio*i,this._setOutput(a),u.screenToMapUnitsRatio=this._screenToMapUnitsRatio,u.screenToPlanarDistanceRatio=this._screenToMapUnitsRatio*this.parent.mapUnitsToPlanarDistanceRatio,o===4&&(l.renderOccludedMask=H),!this.renders(o))return l.renderOccludedMask=O,!1;let{resolution:d}=n,f=e===0,p=f?0:d;if(s.setViewport(p,0,d,d),this._bindTargetFBO(t),f&&(a===10?s.gl.clearBufferuiv(s.gl.COLOR,0,[0,0,0,0]):(s.setClearColor(0,0,0,0),s.clear(16384))),v.OVERLAY_DRAW_DEBUG_TEXTURE&&o!==4&&o!==2){this._techniques.precompile(j,U);let t=this._techniques.get(j,U);for(let i=0;i<r.numViews;i++)this._setViewParameters(r.extents[i],n),this._ensureDebugPatternResources(n.resolution,V[e]),s.bindTechnique(t,u,this._passParameters),s.screen.draw()}if(a===10){let{fboCache:n}=this._stage.renderer,r=this._resolution;this._bindTargetFBO(t),w(s,n,r,r,u,()=>this._renderAllGeometry(e,t),p)}else this._renderAllGeometry(e,t);return s.bindFramebuffer(null),l.renderOccludedMask=O,!0}get allSourcesOccluders(){return i(this._renderers,e=>e.hasOnlyOccluders)}_renderAllGeometry(e,t){let n=this._overlays[e],r=n.canvasGeometries;this._sortedRenderers.forAll(({drapeSource:i,renderer:a})=>{if(t.content===1&&i.drapeSourceType===0)return;let{fullOpacity:o}=i,s=o!=null&&o<1&&t.output===0&&this._bindTemporaryFBO();for(let e=0;e<r.numViews;e++)this._setViewParameters(r.extents[e],n),a.render(this._renderContext);if(s){this._bindTargetFBO(t),this._overlayParameters.texture=s.getTexture(),this._overlayParameters.opacity=o,this._overlayParameters.overlayIndex=e;let n=this._techniques.get(F);this._rctx.bindTechnique(n,this._bindParameters,this._overlayParameters),this._rctx.screen.draw(),s.release()}})}_bindTargetFBO(e){let t=this._resolution,n=2*t;e.fbo.ensureFramebuffer(n,t),e.fbo.bind(this._rctx)}_bindTemporaryFBO(){let e=this._resolution,t=2*e,n=this._stage.renderer.fboCache,r=n.acquire(t,e,`overlay tmp`);return n.rctx.bindFramebuffer(r.fbo),n.rctx.clear(16384),r}get _resolution(){return this._overlays?.[0].resolution??0}notifyContentChanged(){this.events.emit(`content-changed`)}intersectRay(e,t,n,r){this._sortedDrapeSourceRenderersDirty&&this._updateSortedDrapeSourceRenderers();let i=0;for(let{renderer:a}of this._sortedRenderers)i=a.intersectRay?.(e,t,n,r,i)??i}*intersectScreenPolygon(e,t,n){this._sortedDrapeSourceRenderersDirty&&this._updateSortedDrapeSourceRenderers();let r=0;for(let{renderer:i}of this._sortedRenderers)r=yield*i.intersectScreenPolygon(e,t,n,r)}_updateSortedDrapeSourceRenderers(){if(this._sortedRenderers.clear(),this._renderers.size===0)return;let e=this._view.map.allLayers.map(e=>e.uid),t=e.length;this._renderers.forEach((n,r)=>{let i=e.indexOf(r.layer?.uid),a=i>=0,o=r.renderGroup??+!a,s=r.drapeSourcePriorityOffset??0,c=t*o+(a?i:0)+s;this._sortedRenderers.push(new B(r,n,c))}),this._sortedRenderers.sort((e,t)=>e.index-t.index)}_setViewParameters(e,t){let n=this._camera;n.viewport=[0,0,t.resolution,t.resolution],this._bindParameters.planarDistanceToGroundRatio=this.parent.getPlanarDistanceToGroundRatio((e[1]+e[3])*.5),m(n.projectionMatrix,0,e[2]-e[0],0,e[3]-e[1],n.near,n.far),h(n.viewMatrix,[-e[0],-e[1],0])}_ensureDebugPatternResources(e,t){if(g(this._passParameters.color,t[0],t[1],t[2]),this._passParameters.texture)return;let n=new Uint8Array(e*e*4),r=0;for(let t=0;t<e;t++)for(let i=0;i<e;i++){let a=Math.floor(i/10),o=Math.floor(t/10);a<2||o<2||a*10>e-20||o*10>e-20?(n[r++]=255,n[r++]=255,n[r++]=255,n[r++]=255):(n[r++]=255,n[r++]=255,n[r++]=255,a&1&&o&1?n[r++]=i&1^t&1?0:255:n[r++]=a&1^o&1?0:128)}let i=new R(e);i.samplingMode=9728,this._passParameters.texture=new L(this._rctx,i,n)}get test(){}};e([f()],z.prototype,`hasHighlights`,void 0),e([f()],z.prototype,`renderOccludedFlags`,void 0),e([f()],z.prototype,`_sortedDrapeSourceRenderersDirty`,void 0),e([f({constructOnly:!0})],z.prototype,`parent`,void 0),e([f({readOnly:!0})],z.prototype,`_techniques`,null),e([f({type:Boolean,readOnly:!0})],z.prototype,`updating`,null),e([f()],z.prototype,`isEmpty`,null),z=e([p(`esri.views.3d.terrain.OverlayRenderer`)],z);class B{constructor(e,t,n){this.drapeSource=e,this.renderer=t,this.index=n}}const V=[[1,.5,.5],[.5,.5,1]],H=4,U=new M;U.hasAlpha=!0;export{z as OverlayRenderer,H as overlayRenderOccludedFlag};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{equals as e}from"../../../core/arrayUtils.js";import"../../../core/has.js";import{isPowerOfTwo as t}from"../../../core/mathUtils.js";import{disposeMaybe as n,releaseMaybe as r}from"../../../core/maybe.js";import{glLayout as i}from"../support/buffer/glUtil.js";import{GeometryState as a}from"./GeometryState.js";import{PatchGeometry as o}from"./PatchGeometry.js";import"../../../geometry/Extent.js";import"../../../geometry/support/Ellipsoid.js";import{internalAssert as s,neighborEdgeIndices as c,oppositeEdge as l,neighborCornerIndices as u,enableTerrainInternalChecks as d}from"./terrainUtils.js";import{maxTileNeighborLevelDelta as f}from"./TerrainConst.js";import{TextureFader as p}from"./TextureFader.js";import{TextureReference as m}from"./TextureReference.js";import h from"./TileOverlayData.js";import{fallsWithinLayerView as g}from"./tileUtils.js";import{VertexArrayObject as _}from"../webgl-engine/lib/VertexArrayObject.js";import{BufferObject as v}from"../../webgl/BufferObject.js";import{VertexBuffer as y}from"../../webgl/VertexBuffer.js";class b{constructor(){this.geometry=new o,this.geometryState=null,this._texture=null,this._textureOpacity=1,this._textureFader=new p(()=>this._tile.surface.fadeDuration),this.overlay=new h,this._localOrigin=null,this._geometryStateChangedSinceLastUpdate=!0,this._hasGeometry=!1,this._modifiedFlags=0}get tile(){return this._tile}get localOrigin(){return this._localOrigin}init(e,t){this.clear(),this._tile=e,this.geometry.reset(),this.intersectionData=null,this.geometryState=new a,this._localOrigin=t,this.overlay.clear()}clear(){this.releaseGeometry(),this.releaseTexture(),this._textureFader.clear(),this._tile=null,this.intersectionData=null,this.geometryState=null}updateGeometryIfNeeded(e){if(this._tile&&this.geometryState&&((!this._vao||this._geometryStateChangedSinceLastUpdate||this.wireframeChanged||this.clippingAreaChanged||this.samplerDataChanged||this.numVerticesPerSideChanged||this.dirtyCorners||this.dirtyEdgeResolutions||this.dirtyEdges)&&(this._updateGeometry(e),this._geometryStateChangedSinceLastUpdate=!1),d&&this.tile.intersectsClippingArea))for(let e=0;e<A;++e)s(this.geometry.getEdgeCount(e)===this.geometryState.edgeResolutions[e]+1)}_calculateEdgeResolution(e,t){let n=this.tile,r=this.geometryState.numVerticesPerSide-1;if(!n.surface.isGlobal){let t=n.surface.groundExtent;if(t!=null&&(e===0&&n.extent[3]>t[3]||e===1&&n.extent[2]>t[2]||e===2&&n.extent[1]<t[1]||e===3&&n.extent[0]<t[0]))return r}let i=n.level,a=c[e];if(!t)return s(n.surface?.rootTiles==null||n.surface.updatingRootTiles||!n.shouldHaveNeighbor(a)),r;if(t.loaded){let n=t,a=n.renderData?.geometryState;if(!a)return r;let o=i-n.level;if(s(o>=0),o===0){let e=a.numVerticesPerSide-1;return Math.max(e,r)}let c=2**o,l=a.edgeResolutions[(e+2)%4]/c;return Math.max(1,l)}s(!t.leaf);let o=r;return t.forAllSubtreeOnSide(l(a),e=>e===n?!0:e.loaded?(o=Math.max(o,2**(e.level-i)),!0):(s(!e.leaf),!1)),o}updateNeighborData(){let e=this.tile;if(!e.intersectsClippingArea)return;let n=e.renderData.geometryState,r=t=>(t.loaded||t.level===e.level)&&t.intersectsClippingArea,i=n.edgePeerNeighbors,a=n.edgePeerNeighborSamplerVersions;for(let o=0;o<A;++o){let l=e.findNeighborTile(c[o],r),u=S(e,l),p=u?.renderData?.geometryState.samplerDataVersion??-1,m=i[o],h=u!==S(e,m),g=a[o]!==p;d&&l&&(s(e.level>=l.level),s(e.level-l.level<=f)),i[o]=l,(h||g)&&(a[o]=p,this._markEdgeDirty(o));let _=n.edgeResolutions[o],v=this._calculateEdgeResolution(o,l);s(t(v)),s(v>=1),n.edgeResolutions[o]=v,_!==v&&this._markEdgeResolutionDirty(o)}for(let t=0;t<A;++t){let a=e.findNeighborTile(u[t],r);n.cornerPeerNeighbors[t]=a;let o=S(e,i[t]),c=S(e,i[(t+1)%A]),l=S(e,a);x[t]=l,x[(t+1)%A]=c,x[(t+2)%A]=e,x[(t+3)%A]=o,s(x.some(t=>t?.loaded||t===e));let f=x.reduce((e,t)=>Math.min(e,t?.level??1/0),1/0);x.forEach((e,t)=>{e&&e.level>f&&(x[t]=null)}),s(x.some(t=>t?.loaded||t===e));let p=n.cornerNeighborCornerTiles,m=n.cornerNeighborCornerTileSamplerVersions;for(let e=0;e<A;++e){let n=x[e],r=n?.renderData?.geometryState?.samplerDataVersion??-1,i=t*A+e,a=p[i]!==n,o=!a&&m[i]!==r;(a||o)&&(p[i]=n,m[i]=r,this._markCornerDirty(t))}d&&s(j.some(n=>{let r=p[t*A+n];return r?.loaded||r===e}))}d&&s(n.edgeResolutions.every(e=>e>0));for(let e=0;e<A;++e)x[e]=null}_updateGeometry(e){if(!this.tile.intersectsClippingArea)return;d&&s(!this.tile.intersectsClippingArea||this.geometryState.edgeResolutions.every(e=>e>0)),this.intersectionData=null;let{tile:t,_vao:n,geometry:r,geometryState:i}=this,{vertexAttributes:a}=r,o=!n||!a||this.wireframeChanged||this.samplerDataChanged||this.clippingAreaChanged,c=this.dirtyEdgeResolutions!==0,l=i.edgeResolutions.reduce((e,t)=>Math.max(e,t),0)+1,u=c&&l>r.maxEdgeVertexCount,f=o||this.numVerticesPerSideChanged||u,p=!f&&c,m=!p&&this.dirtyEdges!==0,h=!m&&this.dirtyCorners!==0;f?(this.releaseGeometry(),this._createGeometry(e)):p?t.updateEdgeElevationsAndResolutions():m||h?t.updateEdgeElevations():console.warn(`Update for no reason?`),this._modifiedFlags=0}get hasGeometry(){return this._hasGeometry}releaseGeometry(){return this._hasGeometry=!1,this.intersectionData=null,this._vao?(this._vao=n(this._vao),this.geometry.release(),!0):!1}ensureTexture(e,t,n,r){let i=t?6408:6407;return this._texture!=null&&(n===0&&this._tile.surface.fadeDuration>0&&this._isTextureVisible(this._texture)||this._texture.descriptor.width!==e||this._texture.descriptor.pixelFormat!==i)&&this.releaseTexture(),this._texture??(this._texture=r(),this.tile.setMemoryDirty()),this._texture}releaseTexture(){this._texture&&(this._texture=r(this._texture),this.tile.setMemoryDirty())}reuseTexture(e,t){return!e||!this._texture?!1:(e.setTextureReference(new m(this._texture,0,t,this._textureOpacity,0,1)),!0)}get numVerticesPerSideChanged(){return(this._modifiedFlags&C)!==0}get samplerDataChanged(){return(this._modifiedFlags&w)!==0}get clippingAreaChanged(){return(this._modifiedFlags&T)!==0}get wireframeChanged(){return(this._modifiedFlags&E)!==0}get dirtyEdges(){return this._modifiedFlags>>D&15}get dirtyCorners(){return this._modifiedFlags>>O&15}get dirtyEdgeResolutions(){return this._modifiedFlags>>k&15}_markCornerDirty(e){let t=1<<e<<O;this._modifiedFlags|=t}_markEdgeDirty(e){let t=1<<e<<D;this._modifiedFlags|=t,this._markCornerDirty((e+0)%4),this._markCornerDirty((e+3)%4)}_markEdgeResolutionDirty(e){let t=1<<e<<k;this._modifiedFlags|=t,this._markEdgeDirty(e)}_markAllEdgesAndCornersDirty(){this._modifiedFlags|=15<<O|15<<D|15<<k}updateGeometryState(){let t=this._elevationInfo,n=this.tile,r=t.samplerData?n.getElevationVerticesPerSide(t.maxTileLevel):n.minimumVerticesPerSide,i=Math.max(r,5),a=n.clippingArea;(!n.intersectsClippingArea||n.withinClippingArea)&&(a=null);let o=this.geometryState,s=!1;o.numVerticesPerSide!==i&&(this._modifiedFlags|=C,o.numVerticesPerSide=i,o.samplerDataVersion++,s=!0),t.changed&&(this._modifiedFlags|=w,o.samplerData=t.samplerData,o.samplerDataSourceLevels=t.samplerDataSourceLevels,o.samplerDataVersion++,s=!0),e(o.clippingArea,a)||(this._modifiedFlags|=T,o.clippingArea=a,s=!0);let c=n.surface.wireframe;return o.wireframe!==c&&(this._modifiedFlags|=E,o.wireframe=c,s=!0),this._geometryStateChangedSinceLastUpdate||=s,s&&this._markAllEdgesAndCornersDirty(),this._hasGeometry=!0,this._geometryStateChangedSinceLastUpdate}_createGeometry(e){this.tile.createGeometry();let{vertexAttributes:t,indices:n}=this.geometry,r=e.gl;this._vao=new _(e,new y(e,i(t.layout),t.buffer),v.createIndex(e,r.STATIC_DRAW,n)),this._hasGeometry=!0}get vao(){return this._vao}setTextureReference(e,t=0){e?.texture===this._texture?this._textureOpacity=e.opacities[0]:this.releaseTexture(),this._textureFader.push(e,t)}get textureReference(){return this._textureFader.current}get nextTextureReference(){return this._textureFader.next}get textureFadeFactor(){return this._textureFader.fadeFactor}get textureIsFading(){return this._textureFader.isFading}_isTextureVisible(e){return this._textureFader.current?.texture===e||this._textureFader.next?.texture===e&&this._textureFader.fadeFactor<1}get _elevationInfo(){let t=this.geometryState.samplerData,n=this.geometryState.samplerDataSourceLevels,r=this.tile.layerInfo[0],i=r.length,a=Array(i),o=Array(i),s=0,c=0,l=!1;for(let e=0;e<i;e++){let n=r[e],i=n.upsampleInfo?.tile;if(i){let n=i.layerInfo[0][e].data,r=n&&n.samplerData;(!t||t[s]!==r)&&(l=!0),a[s++]=r,o[s-1]=n?.level??i.level,c=Math.max(c,i.lij[0])}else if(n.data){let r=this.tile.surface.layerViewByIndex(e,0);if(g(this.tile,r)){let e=n.data;(!t||t[s]!==e.samplerData)&&(l=!0),a[s++]=e.samplerData,o[s-1]=e.level,c=this.tile.level}}}t!=null&&t.length!==s&&(l=!0);let u=s>0,d=u?a:null,f=u?o:null;return u&&(a.length=s,o.length=s),e(n,f)||(l=!0),{changed:l,samplerData:d,samplerDataSourceLevels:f,maxTileLevel:c}}get estimatedGeometryMemoryUsage(){let e=this.intersectionData?.estimatedMemoryUsage??0;return(this.geometry.indices?.byteLength??0)+(this.geometry.vertexAttributes?.byteLength??0)+e}get texture(){return this._texture}get test(){}checkGeometryWaterproofness(){}}const x=[null,null,null,null];function S(e,t){return t?.loaded||t===e?t:null}const C=1,w=2,T=4,E=8,D=4,O=8,k=12,A=4,j=[0,1,2,3];export{b as PatchRenderData,S as neighborTileIfLoadedOrSelf,j as zeroToFour};
2
+ import{equals as e}from"../../../core/arrayUtils.js";import"../../../core/has.js";import{isPowerOfTwo as t}from"../../../core/mathUtils.js";import{disposeMaybe as n,releaseMaybe as r}from"../../../core/maybe.js";import{glLayout as i}from"../support/buffer/glUtil.js";import{GeometryState as a}from"./GeometryState.js";import{PatchGeometry as o}from"./PatchGeometry.js";import"../../../geometry/Extent.js";import"../../../geometry/support/Ellipsoid.js";import{internalAssert as s,neighborEdgeIndices as c,oppositeEdge as l,neighborCornerIndices as u,enableTerrainInternalChecks as d}from"./terrainUtils.js";import{maxTileNeighborLevelDelta as f}from"./TerrainConst.js";import{TextureFader as p}from"./TextureFader.js";import{TextureReference as m}from"./TextureReference.js";import h from"./TileOverlayData.js";import{fallsWithinLayerView as g}from"./tileUtils.js";import{VertexArrayObject as _}from"../webgl-engine/lib/VertexArrayObject.js";import{BufferObject as v}from"../../webgl/BufferObject.js";import{VertexBuffer as y}from"../../webgl/VertexBuffer.js";class b{constructor(){this.geometry=new o,this.geometryState=null,this._texture=null,this._textureOpacity=1,this._textureFader=new p(()=>this._tile.surface.fadeDuration),this.overlay=new h,this._localOrigin=null,this._geometryStateChangedSinceLastUpdate=!0,this._hasGeometry=!1,this._modifiedFlags=0}get tile(){return this._tile}get localOrigin(){return this._localOrigin}init(e,t){this.clear(),this._tile=e,this.geometry.reset(),this.intersectionData=null,this.geometryState=new a,this._localOrigin=t,this.overlay.clear()}clear(){this.releaseGeometry(),this.releaseTexture(),this._textureFader.clear(),this._tile=null,this.intersectionData=null,this.geometryState=null}updateGeometryIfNeeded(e){if(this._tile&&this.geometryState&&((!this._vao||this._geometryStateChangedSinceLastUpdate||this.wireframeChanged||this.clippingAreaChanged||this.samplerDataChanged||this.numVerticesPerSideChanged||this.dirtyCorners||this.dirtyEdgeResolutions||this.dirtyEdges)&&(this._updateGeometry(e),this._geometryStateChangedSinceLastUpdate=!1),d&&this.tile.intersectsClippingArea))for(let e=0;e<A;++e)s(this.geometry.getEdgeCount(e)===this.geometryState.edgeResolutions[e]+1)}_calculateEdgeResolution(e,t){let n=this.tile,r=this.geometryState.numVerticesPerSide-1;if(!n.surface.isGlobal){let t=n.surface.groundExtent;if(t!=null&&(e===0&&n.extent[3]>t[3]||e===1&&n.extent[2]>t[2]||e===2&&n.extent[1]<t[1]||e===3&&n.extent[0]<t[0]))return r}let i=n.level,a=c[e];if(!t)return s(n.surface?.rootTiles==null||n.surface.updatingRootTiles||!n.shouldHaveNeighbor(a)),r;if(t.loaded){let n=t,a=n.renderData?.geometryState;if(!a)return r;let o=i-n.level;if(s(o>=0),o===0){let e=a.numVerticesPerSide-1;return Math.max(e,r)}let c=2**o,l=a.edgeResolutions[(e+2)%4]/c;return Math.max(1,l)}s(!t.leaf);let o=r;return t.forAllSubtreeOnSide(l(a),e=>e===n?!0:e.loaded?(o=Math.max(o,2**(e.level-i)),!0):(s(!e.leaf),!1)),o}updateNeighborData(){let e=this.tile;if(!e.intersectsClippingArea)return;let n=e.renderData.geometryState,r=t=>(t.loaded||t.level===e.level)&&t.intersectsClippingArea,i=n.edgePeerNeighbors,a=n.edgePeerNeighborSamplerVersions;for(let o=0;o<A;++o){let l=e.findNeighborTile(c[o],r),u=S(e,l),p=u?.renderData?.geometryState.samplerDataVersion??-1,m=i[o],h=u!==S(e,m),g=a[o]!==p;d&&l&&(s(e.level>=l.level),s(e.level-l.level<=f)),i[o]=l,(h||g)&&(a[o]=p,this._markEdgeDirty(o));let _=n.edgeResolutions[o],v=this._calculateEdgeResolution(o,l);s(t(v)),s(v>=1),n.edgeResolutions[o]=v,_!==v&&this._markEdgeResolutionDirty(o)}for(let t=0;t<A;++t){let a=e.findNeighborTile(u[t],r);n.cornerPeerNeighbors[t]=a;let o=S(e,i[t]),c=S(e,i[(t+1)%A]),l=S(e,a);x[t]=l,x[(t+1)%A]=c,x[(t+2)%A]=e,x[(t+3)%A]=o,s(x.some(t=>t?.loaded||t===e));let f=x.reduce((e,t)=>Math.min(e,t?.level??1/0),1/0);x.forEach((e,t)=>{e&&e.level>f&&(x[t]=null)}),s(x.some(t=>t?.loaded||t===e));let p=n.cornerNeighborCornerTiles,m=n.cornerNeighborCornerTileSamplerVersions;for(let e=0;e<A;++e){let n=x[e],r=n?.renderData?.geometryState?.samplerDataVersion??-1,i=t*A+e,a=p[i]!==n,o=!a&&m[i]!==r;(a||o)&&(p[i]=n,m[i]=r,this._markCornerDirty(t))}d&&s(j.some(n=>{let r=p[t*A+n];return r?.loaded||r===e}))}d&&s(n.edgeResolutions.every(e=>e>0));for(let e=0;e<A;++e)x[e]=null}_updateGeometry(e){if(!this.tile.intersectsClippingArea)return;d&&s(!this.tile.intersectsClippingArea||this.geometryState.edgeResolutions.every(e=>e>0)),this.intersectionData=null;let{tile:t,_vao:n,geometry:r,geometryState:i}=this,{vertexAttributes:a}=r,o=!n||!a||this.wireframeChanged||this.samplerDataChanged||this.clippingAreaChanged,c=this.dirtyEdgeResolutions!==0,l=i.edgeResolutions.reduce((e,t)=>Math.max(e,t),0)+1,u=c&&l>r.maxEdgeVertexCount,f=o||this.numVerticesPerSideChanged||u,p=!f&&c,m=!p&&this.dirtyEdges!==0,h=!m&&this.dirtyCorners!==0;f?(this.releaseGeometry(),this._createGeometry(e)):p?t.updateEdgeElevationsAndResolutions():m||h?t.updateEdgeElevations():console.warn(`Update for no reason?`),this._modifiedFlags=0}get hasGeometry(){return this._hasGeometry}releaseGeometry(){return this._hasGeometry=!1,this.intersectionData=null,this._vao?(this._vao=n(this._vao),this.geometry.release(),!0):!1}ensureTexture(e,t,n,r){let i=t?6408:6407;return this._texture!=null&&(n===0&&this._tile.surface.fadeDuration>0&&this._isTextureVisible(this._texture)||this._texture.descriptor.width!==e||this._texture.descriptor.pixelFormat!==i)&&this.releaseTexture(),this._texture??(this._texture=r(),this.tile.setMemoryDirty()),this._texture}releaseTexture(){this._texture&&(this._texture=r(this._texture),this.tile.setMemoryDirty())}reuseTexture(e,t){return!e||!this._texture?!1:(e.setTextureReference(new m(this._texture,0,t,this._textureOpacity,0,1)),!0)}get numVerticesPerSideChanged(){return(this._modifiedFlags&C)!==0}get samplerDataChanged(){return(this._modifiedFlags&w)!==0}get clippingAreaChanged(){return(this._modifiedFlags&T)!==0}get wireframeChanged(){return(this._modifiedFlags&E)!==0}get dirtyEdges(){return this._modifiedFlags>>D&15}get dirtyCorners(){return this._modifiedFlags>>O&15}get dirtyEdgeResolutions(){return this._modifiedFlags>>k&15}_markCornerDirty(e){let t=1<<e<<O;this._modifiedFlags|=t}_markEdgeDirty(e){let t=1<<e<<D;this._modifiedFlags|=t,this._markCornerDirty((e+0)%4),this._markCornerDirty((e+3)%4)}_markEdgeResolutionDirty(e){let t=1<<e<<k;this._modifiedFlags|=t,this._markEdgeDirty(e)}_markAllEdgesAndCornersDirty(){this._modifiedFlags|=15<<O|15<<D|15<<k}updateGeometryState(){let t=this._elevationInfo,n=this.tile,r=t.samplerData?n.getElevationVerticesPerSide(t.maxTileLevel):n.minimumVerticesPerSide,i=Math.max(r,5),a=n.clippingArea;(!n.intersectsClippingArea||n.withinClippingArea)&&(a=null);let o=this.geometryState,s=!1;o.numVerticesPerSide!==i&&(this._modifiedFlags|=C,o.numVerticesPerSide=i,o.samplerDataVersion++,s=!0),t.changed&&(this._modifiedFlags|=w,o.samplerData=t.samplerData,o.samplerDataSourceLevels=t.samplerDataSourceLevels,o.samplerDataVersion++,s=!0),e(o.clippingArea,a)||(this._modifiedFlags|=T,o.clippingArea=a,s=!0);let c=n.surface.wireframe;return o.wireframe!==c&&(this._modifiedFlags|=E,o.wireframe=c,s=!0),this._geometryStateChangedSinceLastUpdate||=s,s&&this._markAllEdgesAndCornersDirty(),this._hasGeometry=!0,this._geometryStateChangedSinceLastUpdate}_createGeometry(e){this.tile.createGeometry();let{vertexAttributes:t,indices:n}=this.geometry,r=e.gl;this._vao=new _(e,new y(e,i(t.layout),t.buffer),v.createIndex(e,r.STATIC_DRAW,n)),this._hasGeometry=!0}get vao(){return this._vao}setTextureReference(e,t=0){e?.texture===this._texture?this._textureOpacity=e.opacities[0]:this.releaseTexture(),this._textureFader.push(e,t)}get textureReference(){return this._textureFader.current}get nextTextureReference(){return this._textureFader.next}get textureFadeFactor(){return this._textureFader.fadeFactor}get textureIsFading(){return this._textureFader.isFading}_isTextureVisible(e){return this._textureFader.current?.texture===e||this._textureFader.next?.texture===e&&this._textureFader.fadeFactor<1}get _elevationInfo(){let t=this.geometryState.samplerData,n=this.geometryState.samplerDataSourceLevels,r=this.tile.layerInfo[0],i=r.length,a=Array(i),o=Array(i),s=0,c=0,l=!1;for(let e=0;e<i;e++){let n=r[e],i=n.upsampleInfo?.tile;if(i){let n=i.layerInfo[0][e].data,r=n&&n.samplerData;t&&t[s]===r||(l=!0),a[s++]=r,o[s-1]=n?.level??i.level,c=Math.max(c,i.lij[0])}else if(n.data){let r=this.tile.surface.layerViewByIndex(e,0);if(g(this.tile,r)){let e=n.data;t&&t[s]===e.samplerData||(l=!0),a[s++]=e.samplerData,o[s-1]=e.level,c=this.tile.level}}}t!=null&&t.length!==s&&(l=!0);let u=s>0,d=u?a:null,f=u?o:null;return u&&(a.length=s,o.length=s),e(n,f)||(l=!0),{changed:l,samplerData:d,samplerDataSourceLevels:f,maxTileLevel:c}}get estimatedGeometryMemoryUsage(){let e=this.intersectionData?.estimatedMemoryUsage??0;return(this.geometry.indices?.byteLength??0)+(this.geometry.vertexAttributes?.byteLength??0)+e}get texture(){return this._texture}get test(){}checkGeometryWaterproofness(){}}const x=[null,null,null,null];function S(e,t){return t?.loaded||t===e?t:null}const C=1,w=2,T=4,E=8,D=4,O=8,k=12,A=4,j=[0,1,2,3];export{b as PatchRenderData,S as neighborTileIfLoadedOrSelf,j as zeroToFour};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{releaseMaybe as e}from"../../../../core/maybe.js";import{signal as t}from"../../../../core/signal.js";import{create as n}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import r from"../../webgl/RenderCamera.js";import{isColor as i}from"../core/shaderLibrary/ShaderOutput.js";import{CloudsParameters as a}from"../effects/clouds/CloudsParameters.js";import{ReprojectionUniforms as o}from"./ReprojectionUniforms.js";import{ScreenSpaceReflectionsUniforms as s}from"./ScreenSpaceReflectionsUniforms.js";import{SceneLighting as c}from"../lighting/SceneLighting.js";class l{constructor(e,t){this.width=e,this.height=t}}class u{constructor(e){this.shadowMap=e,this.output=0,this.slot=2,this.slicePlane=null,this.planarDistanceToGroundRatio=1,this.metersPerRenderUnit=1,this.hasOccludees=!1,this._emissions=t(0),this.transparentWithoutDepthEmissionDimmingPass=!1,this.useFloatBlend=t(!0),this.globalIlluminationDirectFactor=.8,this.globalIlluminationAmbientFactor=1,this.enableFillLights=!0,this.alignPixelEnabled=!1,this.decorations=!0,this.frameRendererTarget=0,this.overlayStretch=1,this.viewshedEnabled=!1,this.laserlinesEnabled=!1,this.shadowAnalysisEnabled=!1,this.cutFillComputationEnabled=!1,this.cutFillVisualizationEnabled=!1,this._camera=t(new r),this._inverseViewport=n(),this._oldLighting=new c,this._newLighting=new c,this._fadedLighting=new c,this._lighting=this._newLighting,this.screenSpaceReflections=new s,this.reprojection=new o,this.highlights=[],this.highlightMixOrigin=n(),this.highlightMixTexture=null,this.globalIlluminationEnabled=!1,this.hudRenderStyle=0,this.snowCover=0,this.clouds=new a,this.hasShadowHighlights=!1}destroy(){this._camera=this.contentCamera=null,this.mainDepth=this.overlay=this.ssao=this.shadowHighlight=null,this.depth=e(this.depth),this.shadowMap?.dispose()}get emissions(){return this._emissions.value}set emissions(e){this._emissions.value=e}get hasEmission(){switch(this.output){case 0:return this.hasOpaqueEmission;case 1:case 2:return this.hasTransparentEmission;default:return!1}}get hasOpaqueEmission(){return this.emissions===1||this.emissions===3}get hasTransparentEmission(){return this.emissions===2||this.emissions===3}get hasEmissions(){return this.emissions!==0}get camera(){return this._camera.value}set camera(e){this._camera.value=e,this._inverseViewport[0]=1/e.fullViewport[2],this._inverseViewport[1]=1/e.fullViewport[3]}get enableOITOffset(){return this.camera.relativeElevation<5e5}get inverseViewport(){return this._inverseViewport}get lighting(){return this._lighting}fadeLighting(){switch(this.clouds.fadeFactor){case 0:this._lighting=this._oldLighting;break;default:this._fadedLighting.lerpLighting(this._oldLighting,this._newLighting,this.clouds.fadeFactor),this._lighting=this._fadedLighting;break;case 1:this._lighting=this._newLighting,this._oldLighting.copyFrom(this._newLighting)}}updateLighting(e,t,n,r){this._oldLighting.copyFrom(this.lighting),this._newLighting.noonFactor=t,this._newLighting.globalFactor=n,this._newLighting.set(e),this._oldLighting.updateLegacy(),r===1&&this.clouds.requestFade(),this.fadeLighting()}get hasScreenSpaceReflections(){return i(this.output)&&this.screenSpaceReflections.enabled&&this.reprojection.lastFrameColor!=null}get highlight(){return this.highlightLevel==null?null:this.highlights[this.highlightLevel]}get depth(){return this._depth}set depth(e){e&&(e.name=`geometry depth`),this._depth=e}get occluder(){return this.slot===10||this.slot===11?this.slot:null}}export{u as BindParameters,l as ViewportSize};
2
+ import{releaseMaybe as e}from"../../../../core/maybe.js";import{signal as t}from"../../../../core/signal.js";import{create as n}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import r from"../../webgl/RenderCamera.js";import{isColor as i}from"../core/shaderLibrary/ShaderOutput.js";import{CloudsParameters as a}from"../effects/clouds/CloudsParameters.js";import{ReprojectionUniforms as o}from"./ReprojectionUniforms.js";import{ScreenSpaceReflectionsUniforms as s}from"./ScreenSpaceReflectionsUniforms.js";import{SceneLighting as c}from"../lighting/SceneLighting.js";class l{constructor(e,t){this.width=e,this.height=t}}class u{constructor(e){this.shadowMap=e,this.output=0,this.slot=2,this.slicePlane=null,this.planarDistanceToGroundRatio=1,this.metersPerRenderUnit=1,this.hasOccludees=!1,this._emissions=t(0),this.transparentWithoutDepthEmissionDimmingPass=!1,this.useFloatBlend=t(!0),this.globalIlluminationDirectFactor=.55,this.globalIlluminationAmbientFactor=.85,this.enableFillLights=!0,this.alignPixelEnabled=!1,this.decorations=!0,this.frameRendererTarget=0,this.overlayStretch=1,this.viewshedEnabled=!1,this.laserlinesEnabled=!1,this.shadowAnalysisEnabled=!1,this.cutFillComputationEnabled=!1,this.cutFillVisualizationEnabled=!1,this._camera=t(new r),this._inverseViewport=n(),this._oldLighting=new c,this._newLighting=new c,this._fadedLighting=new c,this._lighting=this._newLighting,this.screenSpaceReflections=new s,this.reprojection=new o,this.highlights=[],this.highlightMixOrigin=n(),this.highlightMixTexture=null,this.globalIlluminationEnabled=!1,this.hudRenderStyle=0,this.snowCover=0,this.clouds=new a,this.hasShadowHighlights=!1}destroy(){this._camera=this.contentCamera=null,this.mainDepth=this.overlay=this.ssao=this.shadowHighlight=null,this.depth=e(this.depth),this.shadowMap?.dispose()}get emissions(){return this._emissions.value}set emissions(e){this._emissions.value=e}get hasEmission(){switch(this.output){case 0:return this.hasOpaqueEmission;case 1:case 2:return this.hasTransparentEmission;default:return!1}}get hasOpaqueEmission(){return this.emissions===1||this.emissions===3}get hasTransparentEmission(){return this.emissions===2||this.emissions===3}get hasEmissions(){return this.emissions!==0}get camera(){return this._camera.value}set camera(e){this._camera.value=e,this._inverseViewport[0]=1/e.fullViewport[2],this._inverseViewport[1]=1/e.fullViewport[3]}get enableOITOffset(){return this.camera.relativeElevation<5e5}get inverseViewport(){return this._inverseViewport}get lighting(){return this._lighting}fadeLighting(){switch(this.clouds.fadeFactor){case 0:this._lighting=this._oldLighting;break;default:this._fadedLighting.lerpLighting(this._oldLighting,this._newLighting,this.clouds.fadeFactor),this._lighting=this._fadedLighting;break;case 1:this._lighting=this._newLighting,this._oldLighting.copyFrom(this._newLighting)}}updateLighting(e,t,n,r){this._oldLighting.copyFrom(this.lighting),this._newLighting.noonFactor=t,this._newLighting.globalFactor=n,this._newLighting.set(e),this._oldLighting.updateLegacy(),r===1&&this.clouds.requestFade(),this.fadeLighting()}get hasScreenSpaceReflections(){return i(this.output)&&this.screenSpaceReflections.enabled&&this.reprojection.lastFrameColor!=null}get highlight(){return this.highlightLevel==null?null:this.highlights[this.highlightLevel]}get depth(){return this._depth}set depth(e){e&&(e.name=`geometry depth`),this._depth=e}get occluder(){return this.slot===10||this.slot===11?this.slot:null}}export{u as BindParameters,l as ViewportSize};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import e from"../../../../core/Error.js";import{EventEmitter as t}from"../../../../core/Evented.js";import{disposeMaybe as n,removeMaybe as r}from"../../../../core/maybe.js";import{throwIfAborted as i,onAbort as a,createAbortError as o}from"../../../../core/promiseUtils.js";import{isUint8Array as s,isArrayBuffer as c,isTypedArray as l}from"../../../../core/typedArrayUtil.js";import{generateUID as u}from"../../../../core/uid.js";import{isBlobProtocol as d,isDataProtocol as f}from"../../../../core/urlUtils.js";import{whenVideoPlayable as p}from"../../../../layers/support/videoUtils.js";import{requestImage as m}from"../../../../request/image.js";import{loadImage as h}from"../../../../request/loadImage.js";import{createTextureKTX1 as g,createTextureKTX2 as _,createTextureBasis as v,estimateMemoryKTX2 as y,estimateMemoryBasis as b}from"./BasisUtil.js";import{createDDSTexture as x}from"./DDSUtil.js";import{ensureImageMaxSize as S}from"./textureUtils.js";import{assert as C}from"./Util.js";import w from"../../../webgl/Texture.js";import{TextureDescriptor as T}from"../../../webgl/TextureDescriptor.js";import{isCompressedFormat as E,isSizedPixelFormat as D,isSizedDepthFormat as O,isSizedDepthStencilFormat as k}from"../../../webgl/textureUtils.js";import{getFormatComponents as A}from"../../../webgl/Util.js";class j{constructor(e,n){this._data=e,this.id=u(),this.events=new t,this._parameters={...P,...n},this._startPreload(e)}dispose(){this.unload(),this._data=this.update=void 0}_startPreload(e){e instanceof HTMLVideoElement?(this.update=t=>this._update(e,t),this._startPreloadVideoElement(e)):e instanceof HTMLImageElement&&this._startPreloadImageElement(e)}_startPreloadVideoElement(e){if(!d(e.src)&&(e.preload!==`auto`||!e.crossOrigin)&&(e.preload=`auto`,e.crossOrigin=`anonymous`,e.src=e.src,e.paused&&e.autoplay)){let t=[];p(e,e=>t.push(e)).then(()=>{e.play()}).finally(()=>t.forEach(e=>e.remove()))}}_startPreloadImageElement(e){!f(e.src)&&!d(e.src)&&!e.crossOrigin&&(e.crossOrigin=`anonymous`,e.src=e.src)}_createDescriptor(e){let t=new T;return t.wrapMode=this._parameters.wrap??10497,t.flipped=!this._parameters.noUnpackFlip,t.samplingMode=this._parameters.mipmap?9987:9729,t.hasMipmap=!!this._parameters.mipmap,t.preMultiplyAlpha=!!this._parameters.preMultiplyAlpha,t.maxAnisotropy=this._parameters.maxAnisotropy??(this._parameters.mipmap?e.parameters.maxMaxAnisotropy:1),t.dataType=this._parameters.dataType??t.dataType,t.pixelFormat=this._parameters.pixelFormat??t.pixelFormat,t.internalFormat=this._parameters.internalFormat??t.internalFormat,t.isImmutable=this._parameters.immutable===!0&&F(this._parameters.internalFormat),t}get texture(){return this._texture??this._emptyTexture}get loaded(){return this._texture!=null}get usedMemory(){return this._texture?.usedMemory||M(this._data,this._parameters)}load(e){if(this._loadingPromise)return this._loadingPromise;if(this._texture)return this._texture;let t=this._data;return t==null?(this._texture=new w(e,this._createDescriptor(e),null),this._texture):(this._emptyTexture=e.emptyTexture,this._parameters.reloadable||(this._data=void 0),typeof t==`string`?this._loadFromURL(e,t):t instanceof Image?this._loadFromImageElement(e,t):t instanceof HTMLVideoElement?this._loadFromVideoElement(e,t):t instanceof ImageData||t instanceof HTMLCanvasElement?this._loadFromImage(e,t):s(t)&&this._parameters.encoding===`image/vnd-ms.dds`?this._loadFromDDSData(e,t):c(t)&&this._parameters.encoding===`image/vnd-ms.dds`?this._loadFromDDSData(e,new Uint8Array(t)):s(t)&&this._parameters.encoding===`image/ktx`?this._loadFromKTX1(e,t):c(t)&&this._parameters.encoding===`image/ktx`?this._loadFromKTX1(e,new Uint8Array(t)):(c(t)||s(t))&&this._parameters.encoding===`image/ktx2`?this._loadFromKTX2(e,t):(c(t)||s(t))&&this._parameters.encoding===`image/x.basis`?this._loadFromBasis(e,t):c(t)?this._loadFromPixelData(e,new Uint8Array(t)):l(t)?this._loadFromPixelData(e,t):null)}_update(e,t){return this._texture==null||e.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||t===e.currentTime?t:(this._texture.setData(e),this._texture.descriptor.hasMipmap&&this._texture.generateMipmap(),this._parameters.updateCallback&&this._parameters.updateCallback(),e.currentTime)}_loadFromDDSData(e,t){return this._texture=x(e,this._createDescriptor(e),t),this._emptyTexture=null,this._texture}_loadFromKTX1(e,t){return this._texture=g(e,this._createDescriptor(e),t),this._emptyTexture=null,this._texture}_loadFromKTX2(e,t){return this._loadAsync(()=>_(e,this._createDescriptor(e),t).then(e=>(this._texture=e,e)))}_loadFromBasis(e,t){return this._loadAsync(()=>v(e,this._createDescriptor(e),t).then(e=>(this._texture=e,e)))}_loadFromPixelData(e,t){C(this._parameters.width>0&&this._parameters.height>0);let n=this._createDescriptor(e);return(n.pixelFormat===6407||n.pixelFormat===6408)&&(n.compress=this._parameters.compressionOptions),n.width=this._parameters.width??0,n.height=this._parameters.height??0,this._texture=new w(e,n,t),this._texture}_loadFromURL(e,t){return this._loadAsync(async n=>{let r=await m(t,{signal:n});return i(n),this._loadFromImage(e,r)})}_loadFromImageElement(e,t){return t.complete?this._loadFromImage(e,t):this._loadAsync(async n=>{let r=await h(t,t.src,!1,n);return i(n),this._loadFromImage(e,r)})}_loadFromVideoElement(e,t){return t.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA?this._loadFromImage(e,t):this._loadFromVideoElementAsync(e,t)}_loadFromVideoElementAsync(t,n){return this._loadAsync(i=>new Promise((s,c)=>{let l=()=>{n.removeEventListener(`loadeddata`,u),n.removeEventListener(`error`,d),r(f)},u=()=>{n.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA&&(l(),s(this._loadFromImage(t,n)))},d=t=>{l(),c(t||new e(`texture:load-error`,`Failed to load video`))};n.addEventListener(`loadeddata`,u),n.addEventListener(`error`,d);let f=a(i,()=>d(o()))}))}_loadFromImage(e,t){let n=t;n instanceof HTMLVideoElement||(n=S(n,e.parameters));let r=N(n);this._parameters.width=r.width,this._parameters.height=r.height;let i=this._createDescriptor(e);return i.width=r.width,i.height=r.height,i.compress=this._parameters.compressionOptions,this._texture=new w(e,i,n),this._emptyTexture=null,this.events.emit(`loaded`),this._texture}_loadAsync(e){let t=new AbortController;this._loadingController=t;let n=e(t.signal);this._loadingPromise=n;let r=()=>{this._loadingController===t&&(this._loadingController=null),this._loadingPromise===n&&(this._loadingPromise=null),this._emptyTexture=null};return n.then(r,r),n}unload(){if(this._texture=n(this._texture),this._emptyTexture=null,this._loadingController!=null){let e=this._loadingController;this._loadingController=null,this._loadingPromise=null,e.abort()}this.events.emit(`unloaded`)}get parameters(){return this._parameters}}function M(e,t){if(e==null)return 0;if(c(e)||s(e))return t.encoding===`image/ktx2`?y(e,!!t.mipmap):t.encoding===`image/x.basis`?b(e,!!t.mipmap):e.byteLength;let{width:n,height:r}=e instanceof Image||e instanceof ImageData||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement?N(e):t,i=t.pixelFormat??6408,a=A(i);return(t.mipmap?4/3:1)*n*r*a||0}function N(e){return e instanceof HTMLVideoElement?{width:e.videoWidth,height:e.videoHeight}:e}const P={wrap:{s:10497,t:10497},mipmap:!0,noUnpackFlip:!1,preMultiplyAlpha:!1};function F(e){return e!=null&&(E(e)||D(e)||O(e)||k(e))}export{j as ManagedTexture};
2
+ import e from"../../../../core/Error.js";import{EventEmitter as t}from"../../../../core/Evented.js";import{disposeMaybe as n,removeMaybe as r}from"../../../../core/maybe.js";import{throwIfAborted as i,onAbort as a,createAbortError as o}from"../../../../core/promiseUtils.js";import{isUint8Array as s,isArrayBuffer as c,isTypedArray as l}from"../../../../core/typedArrayUtil.js";import{generateUID as u}from"../../../../core/uid.js";import{isBlobProtocol as d,isDataProtocol as f}from"../../../../core/urlUtils.js";import{whenVideoPlayable as p}from"../../../../layers/support/videoUtils.js";import{requestImage as m}from"../../../../request/image.js";import{loadImage as h}from"../../../../request/loadImage.js";import{createTextureKTX1 as g,createTextureKTX2 as _,createTextureBasis as v,estimateMemoryKTX2 as y,estimateMemoryBasis as b}from"./BasisUtil.js";import{createDDSTexture as x}from"./DDSUtil.js";import{ensureImageMaxSize as S}from"./textureUtils.js";import{assert as C}from"./Util.js";import w from"../../../webgl/Texture.js";import{TextureDescriptor as T}from"../../../webgl/TextureDescriptor.js";import{isCompressedFormat as E,isSizedPixelFormat as D,isSizedDepthFormat as O,isSizedDepthStencilFormat as k}from"../../../webgl/textureUtils.js";import{getFormatComponents as A}from"../../../webgl/Util.js";class j{constructor(e,n){this._data=e,this.id=u(),this.events=new t,this._parameters={...P,...n},this._startPreload(e)}dispose(){this.unload(),this._data=this.update=void 0}_startPreload(e){e instanceof HTMLVideoElement?(this.update=t=>this._update(e,t),this._startPreloadVideoElement(e)):e instanceof HTMLImageElement&&this._startPreloadImageElement(e)}_startPreloadVideoElement(e){if(!d(e.src)&&(e.preload!==`auto`||!e.crossOrigin)&&(e.preload=`auto`,e.crossOrigin=`anonymous`,e.src=e.src,e.paused&&e.autoplay)){let t=[];p(e,e=>t.push(e)).then(()=>{e.play()}).finally(()=>t.forEach(e=>e.remove()))}}_startPreloadImageElement(e){f(e.src)||d(e.src)||e.crossOrigin||(e.crossOrigin=`anonymous`,e.src=e.src)}_createDescriptor(e){let t=new T;return t.wrapMode=this._parameters.wrap??10497,t.flipped=!this._parameters.noUnpackFlip,t.samplingMode=this._parameters.mipmap?9987:9729,t.hasMipmap=!!this._parameters.mipmap,t.preMultiplyAlpha=!!this._parameters.preMultiplyAlpha,t.maxAnisotropy=this._parameters.maxAnisotropy??(this._parameters.mipmap?e.parameters.maxMaxAnisotropy:1),t.dataType=this._parameters.dataType??t.dataType,t.pixelFormat=this._parameters.pixelFormat??t.pixelFormat,t.internalFormat=this._parameters.internalFormat??t.internalFormat,t.isImmutable=this._parameters.immutable===!0&&F(this._parameters.internalFormat),t}get texture(){return this._texture??this._emptyTexture}get loaded(){return this._texture!=null}get usedMemory(){return this._texture?.usedMemory||M(this._data,this._parameters)}load(e){if(this._loadingPromise)return this._loadingPromise;if(this._texture)return this._texture;let t=this._data;return t==null?(this._texture=new w(e,this._createDescriptor(e),null),this._texture):(this._emptyTexture=e.emptyTexture,this._parameters.reloadable||(this._data=void 0),typeof t==`string`?this._loadFromURL(e,t):t instanceof Image?this._loadFromImageElement(e,t):t instanceof HTMLVideoElement?this._loadFromVideoElement(e,t):t instanceof ImageData||t instanceof HTMLCanvasElement?this._loadFromImage(e,t):s(t)&&this._parameters.encoding===`image/vnd-ms.dds`?this._loadFromDDSData(e,t):c(t)&&this._parameters.encoding===`image/vnd-ms.dds`?this._loadFromDDSData(e,new Uint8Array(t)):s(t)&&this._parameters.encoding===`image/ktx`?this._loadFromKTX1(e,t):c(t)&&this._parameters.encoding===`image/ktx`?this._loadFromKTX1(e,new Uint8Array(t)):(c(t)||s(t))&&this._parameters.encoding===`image/ktx2`?this._loadFromKTX2(e,t):(c(t)||s(t))&&this._parameters.encoding===`image/x.basis`?this._loadFromBasis(e,t):c(t)?this._loadFromPixelData(e,new Uint8Array(t)):l(t)?this._loadFromPixelData(e,t):null)}_update(e,t){return this._texture==null||e.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||t===e.currentTime?t:(this._texture.setData(e),this._texture.descriptor.hasMipmap&&this._texture.generateMipmap(),this._parameters.updateCallback&&this._parameters.updateCallback(),e.currentTime)}_loadFromDDSData(e,t){return this._texture=x(e,this._createDescriptor(e),t),this._emptyTexture=null,this._texture}_loadFromKTX1(e,t){return this._texture=g(e,this._createDescriptor(e),t),this._emptyTexture=null,this._texture}_loadFromKTX2(e,t){return this._loadAsync(()=>_(e,this._createDescriptor(e),t).then(e=>(this._texture=e,e)))}_loadFromBasis(e,t){return this._loadAsync(()=>v(e,this._createDescriptor(e),t).then(e=>(this._texture=e,e)))}_loadFromPixelData(e,t){C(this._parameters.width>0&&this._parameters.height>0);let n=this._createDescriptor(e);return(n.pixelFormat===6407||n.pixelFormat===6408)&&(n.compress=this._parameters.compressionOptions),n.width=this._parameters.width??0,n.height=this._parameters.height??0,this._texture=new w(e,n,t),this._texture}_loadFromURL(e,t){return this._loadAsync(async n=>{let r=await m(t,{signal:n});return i(n),this._loadFromImage(e,r)})}_loadFromImageElement(e,t){return t.complete?this._loadFromImage(e,t):this._loadAsync(async n=>{let r=await h(t,t.src,!1,n);return i(n),this._loadFromImage(e,r)})}_loadFromVideoElement(e,t){return t.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA?this._loadFromImage(e,t):this._loadFromVideoElementAsync(e,t)}_loadFromVideoElementAsync(t,n){return this._loadAsync(i=>new Promise((s,c)=>{let l=()=>{n.removeEventListener(`loadeddata`,u),n.removeEventListener(`error`,d),r(f)},u=()=>{n.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA&&(l(),s(this._loadFromImage(t,n)))},d=t=>{l(),c(t||new e(`texture:load-error`,`Failed to load video`))};n.addEventListener(`loadeddata`,u),n.addEventListener(`error`,d);let f=a(i,()=>d(o()))}))}_loadFromImage(e,t){let n=t;n instanceof HTMLVideoElement||(n=S(n,e.parameters));let r=N(n);this._parameters.width=r.width,this._parameters.height=r.height;let i=this._createDescriptor(e);return i.width=r.width,i.height=r.height,i.compress=this._parameters.compressionOptions,this._texture=new w(e,i,n),this._emptyTexture=null,this.events.emit(`loaded`),this._texture}_loadAsync(e){let t=new AbortController;this._loadingController=t;let n=e(t.signal);this._loadingPromise=n;let r=()=>{this._loadingController===t&&(this._loadingController=null),this._loadingPromise===n&&(this._loadingPromise=null),this._emptyTexture=null};return n.then(r,r),n}unload(){if(this._texture=n(this._texture),this._emptyTexture=null,this._loadingController!=null){let e=this._loadingController;this._loadingController=null,this._loadingPromise=null,e.abort()}this.events.emit(`unloaded`)}get parameters(){return this._parameters}}function M(e,t){if(e==null)return 0;if(c(e)||s(e))return t.encoding===`image/ktx2`?y(e,!!t.mipmap):t.encoding===`image/x.basis`?b(e,!!t.mipmap):e.byteLength;let{width:n,height:r}=e instanceof Image||e instanceof ImageData||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement?N(e):t,i=t.pixelFormat??6408,a=A(i);return(t.mipmap?4/3:1)*n*r*a||0}function N(e){return e instanceof HTMLVideoElement?{width:e.videoWidth,height:e.videoHeight}:e}const P={wrap:{s:10497,t:10497},mipmap:!0,noUnpackFlip:!1,preMultiplyAlpha:!1};function F(e){return e!=null&&(E(e)||D(e)||O(e)||k(e))}export{j as ManagedTexture};