@arcgis/core 5.2.0-next.80 → 5.2.0-next.81

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 (464) hide show
  1. package/applications/Components/imageryUtils.d.ts +5 -3
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/004966b5bf60a8a80b8c.js +1 -0
  4. package/assets/esri/core/workers/chunks/03cf74b2e488eb144ad5.js +1 -0
  5. package/assets/esri/core/workers/chunks/055802283f7e01ee87fb.js +1 -0
  6. package/assets/esri/core/workers/chunks/06df9ce870360cda06c7.js +1 -0
  7. package/assets/esri/core/workers/chunks/{08ec5461af74356e7570.js → 075eb62465edb9cbf907.js} +1 -1
  8. package/assets/esri/core/workers/chunks/09f0805b32e6cab980e6.js +1 -0
  9. package/assets/esri/core/workers/chunks/{5fe9eea35ddb428efd8b.js → 0b26c01a1190e8fd63fb.js} +1 -1
  10. package/assets/esri/core/workers/chunks/0fd7590e545864f5fff4.js +1 -0
  11. package/assets/esri/core/workers/chunks/{b9d1bb106737a05290e1.js → 104d74bc36c28c519396.js} +1 -1
  12. package/assets/esri/core/workers/chunks/14be79c4cc6137c7db95.js +1 -0
  13. package/assets/esri/core/workers/chunks/{ef47a5da641cb0d33fdf.js → 197a6d561f77ac74283a.js} +1 -1
  14. package/assets/esri/core/workers/chunks/{e4e5a171a4874c5af4a4.js → 1a7d2912c8eac8c83c70.js} +1 -1
  15. package/assets/esri/core/workers/chunks/{b9c61b20bbc91cb63036.js → 1c3861297f65ee1ca5d0.js} +1 -1
  16. package/assets/esri/core/workers/chunks/1d1cfe0bee506d34268e.js +1 -0
  17. package/assets/esri/core/workers/chunks/1ed6a8bb415999c4e8a6.js +1 -0
  18. package/assets/esri/core/workers/chunks/2161cf64601f28bbe72d.js +1 -0
  19. package/assets/esri/core/workers/chunks/218ddad849745d652a28.js +1 -0
  20. package/assets/esri/core/workers/chunks/{5b70295da76d9227f64b.js → 22c477147421e68f7f00.js} +1 -1
  21. package/assets/esri/core/workers/chunks/24944b625ed8dcd904f0.js +1 -0
  22. package/assets/esri/core/workers/chunks/25696c194457e42b3bdc.js +1 -0
  23. package/assets/esri/core/workers/chunks/25f6d5604a7959afd5a5.js +1 -0
  24. package/assets/esri/core/workers/chunks/{c1e5ffe9a251be5a0744.js → 278760d194203dd27fc3.js} +1 -1
  25. package/assets/esri/core/workers/chunks/28b576663ed4570ec825.js +1 -0
  26. package/assets/esri/core/workers/chunks/{841c81c280114412c95b.js → 2a4c91b006de1ceba539.js} +1 -1
  27. package/assets/esri/core/workers/chunks/2b299aec2a758bcd9731.js +1 -0
  28. package/assets/esri/core/workers/chunks/2b79b376b0d60d2f0d5c.js +1 -0
  29. package/assets/esri/core/workers/chunks/{b084829a3fd709dc47a8.js → 2d683ac4a993ec5fd6f6.js} +1 -1
  30. package/assets/esri/core/workers/chunks/2f3525df00fb265661fc.js +1 -0
  31. package/assets/esri/core/workers/chunks/{a8ec5b85c2fa6fb4f391.js → 30b40ee875d46e6fde02.js} +1 -1
  32. package/assets/esri/core/workers/chunks/31b3744f71750e512d4e.js +1 -0
  33. package/assets/esri/core/workers/chunks/3239c7994019f15e261d.js +1 -0
  34. package/assets/esri/core/workers/chunks/{d520d407043bc52e5410.js → 3336ad383c184dd07bb3.js} +1 -1
  35. package/assets/esri/core/workers/chunks/36265e5f6d396eadf0be.js +1 -0
  36. package/assets/esri/core/workers/chunks/{0ae0483b72f5e8d00d55.js → 3715d6b295016eeb5031.js} +1 -1
  37. package/assets/esri/core/workers/chunks/37a121316d114999ac70.js +1 -0
  38. package/assets/esri/core/workers/chunks/37fb38db03cb39e3c342.js +1 -0
  39. package/assets/esri/core/workers/chunks/3851ebf3548e2763b24f.js +1 -0
  40. package/assets/esri/core/workers/chunks/{9230ad807020fc2bbf8e.js → 388b71211a0ad5cbd6b9.js} +1 -1
  41. package/assets/esri/core/workers/chunks/3a4b117af89dab5153eb.js +1 -0
  42. package/assets/esri/core/workers/chunks/3a9ef47122e10cecd3a4.js +1 -0
  43. package/assets/esri/core/workers/chunks/3adba34224cba869a39c.js +1 -0
  44. package/assets/esri/core/workers/chunks/40b842d055b87e442156.js +1 -0
  45. package/assets/esri/core/workers/chunks/40ebe69b08ea54e0e780.js +1 -0
  46. package/assets/esri/core/workers/chunks/{c37b28f200b704ae6002.js → 4239d64f067417e0643c.js} +1 -1
  47. package/assets/esri/core/workers/chunks/453c69879f4b82ba13a1.js +1 -0
  48. package/assets/esri/core/workers/chunks/{bd88228f781a0399d8bd.js → 49e37f653b81f9e4f7cc.js} +1 -1
  49. package/assets/esri/core/workers/chunks/4a537054c99cbc492715.js +1 -0
  50. package/assets/esri/core/workers/chunks/4a6158994a8cc8b8664f.js +1 -0
  51. package/assets/esri/core/workers/chunks/4c15551e33a3c6cda61d.js +1 -0
  52. package/assets/esri/core/workers/chunks/4c5200e22b8a723f53f9.js +1 -0
  53. package/assets/esri/core/workers/chunks/{2bcb7e43578124538c3c.js → 4d672110aee304692f60.js} +1 -1
  54. package/assets/esri/core/workers/chunks/{fb12d3c63fcac8391e06.js → 4eaa93859ceec1b38530.js} +1 -1
  55. package/assets/esri/core/workers/chunks/4f36596280142be1c666.js +1 -0
  56. package/assets/esri/core/workers/chunks/50e6e43ea98cb0d05d91.js +1 -0
  57. package/assets/esri/core/workers/chunks/{8e374ce47256a567ae11.js → 519745cf844c76452a46.js} +1 -1
  58. package/assets/esri/core/workers/chunks/{3b14ed3184743df336a6.js → 53d80202b5f43542d45b.js} +1 -1
  59. package/assets/esri/core/workers/chunks/{345510a95e893fa8040a.js → 540a3685e614bb006744.js} +1 -1
  60. package/assets/esri/core/workers/chunks/54524cc4328f31d8c25d.js +1 -0
  61. package/assets/esri/core/workers/chunks/5515005e8893bd551aaf.js +1 -0
  62. package/assets/esri/core/workers/chunks/{eee1fd629619021ea279.js → 56a6c7abfb4d88ea1bb5.js} +1 -1
  63. package/assets/esri/core/workers/chunks/{24729603dcdbd95fd01e.js → 578904043e873424904c.js} +1 -1
  64. package/assets/esri/core/workers/chunks/58d10928959ae1e2e8d9.js +1 -0
  65. package/assets/esri/core/workers/chunks/59f0a2bd40b033ce77e4.js +1 -0
  66. package/assets/esri/core/workers/chunks/5a67bd724aa7fcdebe16.js +1 -0
  67. package/assets/esri/core/workers/chunks/{087bd698b80ca0cea71e.js → 5aadfd11df6618883c5d.js} +1 -1
  68. package/assets/esri/core/workers/chunks/{1f888f026b004447772c.js → 5c9a398e659ecd427fb5.js} +1 -1
  69. package/assets/esri/core/workers/chunks/{e421dee5d8b030e79ffb.js → 5d50a030bf9f4e94f69d.js} +1 -1
  70. package/assets/esri/core/workers/chunks/6065caa7981cef255277.js +1 -0
  71. package/assets/esri/core/workers/chunks/61190c833791f0833a39.js +1 -0
  72. package/assets/esri/core/workers/chunks/61312d3b5477ed9d87d9.js +2 -0
  73. package/assets/esri/core/workers/chunks/61f230e50787abbfc8ba.js +1 -0
  74. package/assets/esri/core/workers/chunks/6270acb7545be2c5126f.js +1 -0
  75. package/assets/esri/core/workers/chunks/{f3bbebedad51f776bb98.js → 62992c3d98c20f611b7b.js} +1 -1
  76. package/assets/esri/core/workers/chunks/{ac87be2210f868524996.js → 629f60ee49e0dcfb7165.js} +1 -1
  77. package/assets/esri/core/workers/chunks/645d5db85f84b1f19b59.js +1 -0
  78. package/assets/esri/core/workers/chunks/{913fb883455aeac8582b.js → 694216224d5fd3a8956d.js} +1 -1
  79. package/assets/esri/core/workers/chunks/6c372d85b5783dd2a793.js +1 -0
  80. package/assets/esri/core/workers/chunks/{702b2381acf4d1f90094.js → 6f08c8a1e8e3ffd0a96a.js} +1 -1
  81. package/assets/esri/core/workers/chunks/6f4ee60e89d154e7b1c4.js +1 -0
  82. package/assets/esri/core/workers/chunks/{c29df43817278f674707.js → 7028671ffdaafe2725bc.js} +1 -1
  83. package/assets/esri/core/workers/chunks/{40693ee558a1eb1e93f4.js → 70c371c9f133ab9f7925.js} +1 -1
  84. package/assets/esri/core/workers/chunks/7230d74ef720431cc75e.js +1 -0
  85. package/assets/esri/core/workers/chunks/73a8a3baf0fed803ef4f.js +1 -0
  86. package/assets/esri/core/workers/chunks/74cd17aca5f7e0caac90.js +1 -0
  87. package/assets/esri/core/workers/chunks/{4d7a3b3aaf876da0891b.js → 76e6d894c33221369895.js} +1 -1
  88. package/assets/esri/core/workers/chunks/7833a82d5bac2aed565e.js +1 -0
  89. package/assets/esri/core/workers/chunks/7a05f5b0848dd11d2f4f.js +1 -0
  90. package/assets/esri/core/workers/chunks/{4c82f5f23004f905a18f.js → 7b605ed92e65083da35f.js} +1 -1
  91. package/assets/esri/core/workers/chunks/7eb94fc75926bc739233.js +1 -0
  92. package/assets/esri/core/workers/chunks/{67ebde34377f98d17cda.js → 8006ffa263fb8016afdb.js} +1 -1
  93. package/assets/esri/core/workers/chunks/809349086117f199b7a5.js +1 -0
  94. package/assets/esri/core/workers/chunks/82da6d98bd4980a3d454.js +1 -0
  95. package/assets/esri/core/workers/chunks/82e62a54b350e7a325f7.js +1 -0
  96. package/assets/esri/core/workers/chunks/836c458a7eb96391cfda.js +1 -0
  97. package/assets/esri/core/workers/chunks/851a5a0262dc8dcb67eb.js +1 -0
  98. package/assets/esri/core/workers/chunks/856dba96332509fb1d7a.js +2 -0
  99. package/assets/esri/core/workers/chunks/{d7b6985984071e78c764.js → 86035e46777ed896c658.js} +1 -1
  100. package/assets/esri/core/workers/chunks/88d6a7ebded4d359deb0.js +1 -0
  101. package/assets/esri/core/workers/chunks/{38660a8cc3623c854d88.js → 89df303abcbc0167e4d2.js} +1 -1
  102. package/assets/esri/core/workers/chunks/8cfe817299eb16cb2664.js +1 -0
  103. package/assets/esri/core/workers/chunks/8d16d53643dd8d489c25.js +1 -0
  104. package/assets/esri/core/workers/chunks/{619aa1381296172ff47b.js → 8e19b2ce9868a9a08da0.js} +1 -1
  105. package/assets/esri/core/workers/chunks/8ea28a4b1afe8bb2d313.js +1 -0
  106. package/assets/esri/core/workers/chunks/8fff4a41a54d39db470a.js +1 -0
  107. package/assets/esri/core/workers/chunks/{fe71a0604f0928113419.js → 958e161634b5bfd50625.js} +1 -1
  108. package/assets/esri/core/workers/chunks/95b9eaf7a49eeb17e62f.js +1 -0
  109. package/assets/esri/core/workers/chunks/95ff342e5c29bf91a765.js +1 -0
  110. package/assets/esri/core/workers/chunks/97162bbbedb02e42d0b8.js +1 -0
  111. package/assets/esri/core/workers/chunks/973440553c9e058b0132.js +1 -0
  112. package/assets/esri/core/workers/chunks/{680dd7b7638465eb33de.js → 98739b6e7904045edbab.js} +1 -1
  113. package/assets/esri/core/workers/chunks/9a5894e8ebdf0e97b98f.js +1 -0
  114. package/assets/esri/core/workers/chunks/9aa41d098eeda01ded3a.js +1 -0
  115. package/assets/esri/core/workers/chunks/9bd4cda90daf90189bfc.js +1 -0
  116. package/assets/esri/core/workers/chunks/{315031323e11a18154e3.js → 9c04233d18a9585b5bfe.js} +1 -1
  117. package/assets/esri/core/workers/chunks/9c17bfbfc347ac289b6e.js +1 -0
  118. package/assets/esri/core/workers/chunks/9c7afe90495766bba37f.js +1 -0
  119. package/assets/esri/core/workers/chunks/{69b9a327f23e052fced7.js → 9d5d7289a9e23efc7f73.js} +1 -1
  120. package/assets/esri/core/workers/chunks/9e49a6ce4a133476092f.js +1 -0
  121. package/assets/esri/core/workers/chunks/9e840a71906c4deef776.js +1 -0
  122. package/assets/esri/core/workers/chunks/a1bf2111fee455b16e6a.js +29 -0
  123. package/assets/esri/core/workers/chunks/{910c93bbbf8113a4a51f.js → a2a231a671ff578b7b01.js} +1 -1
  124. package/assets/esri/core/workers/chunks/{e9e4b27ba06a29e6340c.js → a3cbd3e983e21f40b253.js} +1 -1
  125. package/assets/esri/core/workers/chunks/{16929524565a677db4dc.js → a406a41a2f117247f1ef.js} +1 -1
  126. package/assets/esri/core/workers/chunks/a4b63162615a485b08dc.js +1 -0
  127. package/assets/esri/core/workers/chunks/a9e944f28bd573c8230d.js +1 -0
  128. package/assets/esri/core/workers/chunks/{6c982779d6d47ec99899.js → b0a9a770b735440846cd.js} +1 -1
  129. package/assets/esri/core/workers/chunks/b2d6fd436981c890152f.js +1 -0
  130. package/assets/esri/core/workers/chunks/b3034fbcbe77ef9e7c20.js +1 -0
  131. package/assets/esri/core/workers/chunks/b3081c0b037abc49d09b.js +1 -0
  132. package/assets/esri/core/workers/chunks/b4b4fe06364bea9b0750.js +1 -0
  133. package/assets/esri/core/workers/chunks/b661aae7e3ce955a783e.js +1 -0
  134. package/assets/esri/core/workers/chunks/{75fc0b1db8e2e3fd2458.js → b8548eb7680abeaf3cd1.js} +1 -1
  135. package/assets/esri/core/workers/chunks/b9db8d059c2ea39518e7.js +1 -0
  136. package/assets/esri/core/workers/chunks/ba8777844fef6ed3ac2b.js +1 -0
  137. package/assets/esri/core/workers/chunks/ba99a650ea64f5024185.js +1 -0
  138. package/assets/esri/core/workers/chunks/bbfd2b4af8e498b61af9.js +1 -0
  139. package/assets/esri/core/workers/chunks/{24006cea112d657f053a.js → bc30c0de6dcb106b24a1.js} +1 -1
  140. package/assets/esri/core/workers/chunks/bf5831a7c12b1e42c669.js +1 -0
  141. package/assets/esri/core/workers/chunks/bfac0f47e81055585002.js +1 -0
  142. package/assets/esri/core/workers/chunks/bfd532e33800755b1f48.js +1 -0
  143. package/assets/esri/core/workers/chunks/c30b6bbabd05e4976fba.js +1 -0
  144. package/assets/esri/core/workers/chunks/c336f300fe6100e36592.js +1 -0
  145. package/assets/esri/core/workers/chunks/c5853fbb975e169c44c5.js +1 -0
  146. package/assets/esri/core/workers/chunks/c71368cd64f240da1743.js +1 -0
  147. package/assets/esri/core/workers/chunks/c899457f19b749516275.js +1 -0
  148. package/assets/esri/core/workers/chunks/c9653a15324ca53d50e7.js +1 -0
  149. package/assets/esri/core/workers/chunks/{9937920e7993814d0b2c.js → ca695ab000a1e8765d69.js} +1 -1
  150. package/assets/esri/core/workers/chunks/{b792857a178da2dd77d6.js → cc419e1c5c1dee7ec972.js} +1 -1
  151. package/assets/esri/core/workers/chunks/{2ce845c990bb4d701362.js → cc817c9d3f8e8f8c56e4.js} +1 -1
  152. package/assets/esri/core/workers/chunks/ce81f29134ab3971bd54.js +1 -0
  153. package/assets/esri/core/workers/chunks/cf6799fd008d0d7016f7.js +1 -0
  154. package/assets/esri/core/workers/chunks/cfcb258b7e464f219434.js +1 -0
  155. package/assets/esri/core/workers/chunks/d0aaa4ad7f76f577f117.js +1 -0
  156. package/assets/esri/core/workers/chunks/{ac59218847e5ef4c4160.js → d0e00f0bb7b9435e170d.js} +1 -1
  157. package/assets/esri/core/workers/chunks/{33e293836f5d28dc5d62.js → d13eeff678972a245d5d.js} +1 -1
  158. package/assets/esri/core/workers/chunks/d1aa87d846a884492b47.js +1 -0
  159. package/assets/esri/core/workers/chunks/{7529c0fcfb83998e63db.js → d1baf17f3219f70106f7.js} +1 -1
  160. package/assets/esri/core/workers/chunks/{2b3f76e03b7a28fc4453.js → d2448e26e19005ef9ab2.js} +1 -1
  161. package/assets/esri/core/workers/chunks/{0179949495c87466b428.js → d3a183d90f1ccc8da2bb.js} +10 -10
  162. package/assets/esri/core/workers/chunks/d433bfa2abf2ca8239ba.js +1 -0
  163. package/assets/esri/core/workers/chunks/d4b78d11a5ce4320a29a.js +1 -0
  164. package/assets/esri/core/workers/chunks/d4cc8eef64b8c84217a5.js +1 -0
  165. package/assets/esri/core/workers/chunks/d62a5a33a24418a3e283.js +1 -0
  166. package/assets/esri/core/workers/chunks/{2740f755c3a322cbd477.js → d672c2a1c8eddd235171.js} +1 -1
  167. package/assets/esri/core/workers/chunks/d845f2115848b56c0369.js +1 -0
  168. package/assets/esri/core/workers/chunks/d8b38c196b06e801c4e6.js +1 -0
  169. package/assets/esri/core/workers/chunks/da6134c7883531f21afe.js +1 -0
  170. package/assets/esri/core/workers/chunks/dbc36b85413fae52b56d.js +1 -0
  171. package/assets/esri/core/workers/chunks/{cada52d719c35d40958a.js → dbca32f0e0c2c2e2ccf3.js} +1 -1
  172. package/assets/esri/core/workers/chunks/dcec7fc66385c12ecdf0.js +1 -0
  173. package/assets/esri/core/workers/chunks/dd9af4ddefa0b998aa4b.js +1 -0
  174. package/assets/esri/core/workers/chunks/e2473de49189d93714d3.js +1 -0
  175. package/assets/esri/core/workers/chunks/e2ceddd6bcdabec77cc7.js +1 -0
  176. package/assets/esri/core/workers/chunks/e3eab61815ef1c521a6c.js +1 -0
  177. package/assets/esri/core/workers/chunks/e63f94c8097555b266ad.js +2 -0
  178. package/assets/esri/core/workers/chunks/e72fa08b0bd324514a0e.js +1 -0
  179. package/assets/esri/core/workers/chunks/e8a9a686a3c23afc9d1f.js +1 -0
  180. package/assets/esri/core/workers/chunks/eca0736953a20cfc64ad.js +2 -0
  181. package/assets/esri/core/workers/chunks/efaa455beeefbf97a4c5.js +1 -0
  182. package/assets/esri/core/workers/chunks/efd176c5ac35f313e7a2.js +1 -0
  183. package/assets/esri/core/workers/chunks/f16b6cd6b325eb600e82.js +1 -0
  184. package/assets/esri/core/workers/chunks/f1d0208c6b09c1c4b248.js +1 -0
  185. package/assets/esri/core/workers/chunks/f1fa377e8fa53b02876f.js +1 -0
  186. package/assets/esri/core/workers/chunks/f2d99f693a590f384315.js +1 -0
  187. package/assets/esri/core/workers/chunks/f57e5e7d0748d9a370f7.js +1 -0
  188. package/assets/esri/core/workers/chunks/f71a3fe5f30aa782193a.js +1 -0
  189. package/assets/esri/core/workers/chunks/{b9bdb1f05e904c3655e4.js → f834aa732c3f06525089.js} +1 -1
  190. package/assets/esri/core/workers/chunks/f9e9e79f78be32e5d475.js +1 -0
  191. package/assets/esri/core/workers/chunks/fa7a6906598d1002abfd.js +1 -0
  192. package/assets/esri/core/workers/chunks/{ebb722118a220c92efc3.js → fae32c9ce811934b6a64.js} +1 -1
  193. package/assets/esri/core/workers/chunks/fb86b334bfca4670dcfa.js +1 -0
  194. package/assets/esri/core/workers/chunks/fbb0b2f4ec0ba458ddeb.js +1 -0
  195. package/assets/esri/core/workers/chunks/{2d1ae18a28491b00091d.js → fbcc346fa603d6edac98.js} +1 -1
  196. package/assets/esri/core/workers/chunks/{1ef28d4457c8c943ad19.js → fbede01a363895b6381f.js} +1 -1
  197. package/assets/esri/core/workers/chunks/{073f1d5f89875c6aefb1.js → fc1aeea22f8c9d63864a.js} +1 -1
  198. package/assets/esri/core/workers/chunks/fc2234e0d202631f3abf.js +2 -0
  199. package/assets/esri/core/workers/chunks/fcb943c3b31b1bf62e65.js +2 -0
  200. package/assets/esri/core/workers/chunks/{8a3289e15e0ce92e3813.js → fe335441ea233cb0fad5.js} +1 -1
  201. package/assets/esri/core/workers/chunks/ffe2cbfea38b92a231d6.js +1 -0
  202. package/chunks/Bufferer-CclWhXVb.js +1 -1
  203. package/chunks/Distance2DCalculator-DjIp2uQi.js +1 -1
  204. package/chunks/EmissionComposite.glsl.js +1 -1
  205. package/chunks/Envelope.js +1 -1
  206. package/chunks/GaussianSplat.glsl.js +8 -8
  207. package/chunks/GaussianSplatDepth.glsl.js +4 -4
  208. package/chunks/GeodeticDistanceCalculator-zRp89-dW.js +1 -1
  209. package/chunks/GeodeticUtils.js +1 -1
  210. package/chunks/Geometry.js +1 -1
  211. package/chunks/MultiPathImpl.js +1 -1
  212. package/chunks/OperatorCrosses.js +1 -1
  213. package/chunks/OperatorCut.js +1 -1
  214. package/chunks/OperatorGeodesicBuffer.js +1 -1
  215. package/chunks/OperatorGeodeticArea.js +1 -1
  216. package/chunks/OperatorGeodeticDensifyByLength.js +1 -1
  217. package/chunks/OperatorGeodeticLength.js +1 -1
  218. package/chunks/OperatorGraphicBuffer.js +1 -1
  219. package/chunks/OperatorIntegrate.js +1 -1
  220. package/chunks/OperatorIntersects.js +1 -1
  221. package/chunks/OperatorMultiPartToSinglePart.js +1 -1
  222. package/chunks/OperatorOverlaps.js +1 -1
  223. package/chunks/OperatorProject.js +1 -1
  224. package/chunks/OperatorProximity.js +1 -1
  225. package/chunks/OperatorProximityGeodesic.js +1 -1
  226. package/chunks/OperatorShapePreservingLength.js +1 -1
  227. package/chunks/OperatorShapePreservingProject.js +1 -1
  228. package/chunks/OperatorSimplifyOGC.js +1 -1
  229. package/chunks/OperatorTouches.js +1 -1
  230. package/chunks/OperatorWithin.js +1 -1
  231. package/chunks/Point2D.js +1 -1
  232. package/chunks/ProjectionTransformation.js +1 -1
  233. package/chunks/SideCalculator2D-DX0718xq.js +1 -1
  234. package/chunks/SpatialReference.js +1 -1
  235. package/chunks/UnitFactory.js +2 -0
  236. package/chunks/containsOperator.js +1 -1
  237. package/chunks/disjointOperator.js +1 -1
  238. package/chunks/equalsOperator.js +1 -1
  239. package/chunks/relateOperator.js +1 -1
  240. package/config.js +1 -1
  241. package/geometry/operators/containsOperator.js +1 -1
  242. package/geometry/operators/disjointOperator.js +1 -1
  243. package/geometry/operators/gx/geodeticUtils.js +1 -1
  244. package/geometry/operators/gx/operatorAutoComplete.js +1 -1
  245. package/geometry/operators/gx/operatorBuffer.js +1 -1
  246. package/geometry/operators/gx/operatorDifference.js +1 -1
  247. package/geometry/operators/gx/operatorGeodesicBuffer.js +1 -1
  248. package/geometry/operators/gx/operatorGeodeticArea.js +1 -1
  249. package/geometry/operators/gx/operatorGeodeticDensify.js +1 -1
  250. package/geometry/operators/gx/operatorGeodeticDistance.js +1 -1
  251. package/geometry/operators/gx/operatorGeodeticLength.js +1 -1
  252. package/geometry/operators/gx/operatorIntersection.js +1 -1
  253. package/geometry/operators/gx/operatorLabelPoint.js +1 -1
  254. package/geometry/operators/gx/operatorLinesToPolygons.js +1 -1
  255. package/geometry/operators/gx/operatorPolygonOverlay.js +1 -1
  256. package/geometry/operators/gx/operatorProject.js +1 -1
  257. package/geometry/operators/gx/operatorProximityGeodesic.js +1 -1
  258. package/geometry/operators/gx/operatorShapePreservingProject.js +1 -1
  259. package/geometry/operators/gx/operatorSimplify.js +1 -1
  260. package/geometry/operators/gx/operatorSinglePartToMultiPart.js +1 -1
  261. package/geometry/operators/gx/operatorSymmetricDifference.js +1 -1
  262. package/geometry/operators/gx/operatorUnion.js +1 -1
  263. package/geometry/operators/json/containsOperator.js +1 -1
  264. package/geometry/operators/json/disjointOperator.js +1 -1
  265. package/geometry/operators/projectOperator.js +1 -1
  266. package/geometry/operators/reshapeOperator.js +1 -1
  267. package/geometry/operators/support/geographicTransformationUtils.js +1 -1
  268. package/geometry/operators/support/initNoPeFactory.js +1 -1
  269. package/geometry/operators/support/jsonConverter.js +1 -1
  270. package/geometry/operators/support/projectionTransformation.js +1 -1
  271. package/geometry/projection/projectionUtilsState.js +2 -0
  272. package/geometry/projectionUtils.js +1 -1
  273. package/geometry/support/geometryUtils.js +1 -1
  274. package/kernel.js +1 -1
  275. package/layers/raster/datasets/MRFRaster.js +1 -1
  276. package/layers/raster/formats/JpgPlus.js +1 -1
  277. package/layers/raster/formats/RasterCodec.js +1 -1
  278. package/layers/raster/types.d.ts +65 -0
  279. package/package.json +2 -2
  280. package/support/revision.js +1 -1
  281. package/symbols/cim/cimAnalyzer.js +1 -1
  282. package/symbols/cim/effects/EffectRadial.js +1 -1
  283. package/views/2d/engine/vectorTiles/decluttering/SymbolRepository.js +1 -1
  284. package/views/2d/engine/webgl/mesh/templates/segmentUtils.js +1 -1
  285. package/views/2d/engine/webgl/shaderGraph/techniques/fill/FillMeshWriter.js +1 -1
  286. package/views/2d/engine/webgl/shaderGraph/techniques/fill/GradientFillMeshWriter.js +1 -1
  287. package/views/2d/engine/webgl/shaderGraph/techniques/line/LineMeshWriter.js +1 -1
  288. package/views/2d/engine/webgl/shaderGraph/techniques/mesh/MeshWriter.js +1 -1
  289. package/views/2d/layers/features/schema/processor/symbols/ComplexSymbolSchema.js +1 -1
  290. package/views/3d/GroundView3D.js +1 -1
  291. package/views/3d/layers/I3SMeshView3D.js +1 -1
  292. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  293. package/views/3d/layers/IntegratedMeshLayerView3D.js +1 -1
  294. package/views/3d/layers/graphics/Graphics3DFrustumVisibility.js +1 -1
  295. package/views/3d/state/controllers/PinchAndPanControllerGlobal.js +1 -1
  296. package/views/3d/state/controllers/PinchAndPanControllerLocal.js +1 -1
  297. package/views/3d/state/controllers/RotateController.js +1 -1
  298. package/views/3d/state/controllers/ZoomControllerGlobal.js +1 -1
  299. package/views/3d/state/controllers/ZoomControllerLocal.js +1 -1
  300. package/views/3d/state/controllers/ZoomStepControllerLocal.js +1 -1
  301. package/views/3d/state/helpers/SceneIntersectionHelper.js +1 -1
  302. package/views/3d/support/QualityProfile.js +1 -1
  303. package/views/3d/support/QualitySettings.js +1 -1
  304. package/views/3d/support/gaussianSplatting/GaussianSplatFadeHelper.js +1 -1
  305. package/views/3d/terrain/PlanarPatch.js +1 -1
  306. package/views/3d/terrain/Tile.js +1 -1
  307. package/views/3d/webgl-engine/lib/BasisUtil.js +1 -1
  308. package/views/3d/webgl-engine/lib/EmissionComposite.glsl.js +1 -1
  309. package/views/3d/webgl-engine/lib/EmissionComposite.js +1 -1
  310. package/views/3d/webgl-engine/lib/EmissionCompositeTechnique.js +1 -1
  311. package/views/3d/webgl-engine/lib/GaussianSplatRenderUtils.js +1 -1
  312. package/views/3d/webgl-engine/lib/GaussianSplatRenderer.js +1 -1
  313. package/views/3d/webgl-engine/shaders/GaussianSplatDepthPolicy.js +1 -1
  314. package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +50 -22
  315. package/views/analysis/ElevationProfile/ElevationProfileController.js +1 -1
  316. package/views/support/GroundElevationSampler.js +1 -1
  317. package/widgets/BatchAttributeForm/expressions/ExpressionsManager.js +1 -1
  318. package/widgets/BatchAttributeForm/expressions/expressionUtils.js +1 -1
  319. package/widgets/ElevationProfile/ElevationProfileViewModel.js +1 -1
  320. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  321. package/widgets/OrientedImageryViewer/components/ImageLocationViewModel.js +1 -1
  322. package/widgets/OrientedImageryViewer/components/ImageLocationWidget.js +1 -1
  323. package/widgets/OrientedImageryViewer.js +1 -1
  324. package/assets/esri/core/workers/chunks/04105d83556409489835.js +0 -1
  325. package/assets/esri/core/workers/chunks/05b6b2c0b76afb100e33.js +0 -1
  326. package/assets/esri/core/workers/chunks/0909816f13d25cacf250.js +0 -1
  327. package/assets/esri/core/workers/chunks/0933203eee15ea50e123.js +0 -1
  328. package/assets/esri/core/workers/chunks/0b18de5147d76b68896f.js +0 -1
  329. package/assets/esri/core/workers/chunks/0d9d33f29124d464a4cb.js +0 -1
  330. package/assets/esri/core/workers/chunks/0d9fe49812554e7d7ba7.js +0 -1
  331. package/assets/esri/core/workers/chunks/0da5b27b070ab780f8b3.js +0 -1
  332. package/assets/esri/core/workers/chunks/0e333aced8b23aa49a0e.js +0 -1
  333. package/assets/esri/core/workers/chunks/0eaa8265a4cd64297545.js +0 -1
  334. package/assets/esri/core/workers/chunks/1142f8e9c80207d6bdae.js +0 -1
  335. package/assets/esri/core/workers/chunks/118ccfa2d685764752ee.js +0 -1
  336. package/assets/esri/core/workers/chunks/12a64eca4c571926d9d4.js +0 -1
  337. package/assets/esri/core/workers/chunks/1642fa1263d8f4a45101.js +0 -1
  338. package/assets/esri/core/workers/chunks/16a04fc184728d66e6e1.js +0 -1
  339. package/assets/esri/core/workers/chunks/18e0e993c0c39c962e61.js +0 -1
  340. package/assets/esri/core/workers/chunks/19233d0016e5b154c5ce.js +0 -1
  341. package/assets/esri/core/workers/chunks/1a467da4c0b33f655199.js +0 -1
  342. package/assets/esri/core/workers/chunks/1ac8a7a129ba33e05a24.js +0 -1
  343. package/assets/esri/core/workers/chunks/1d92d53186debd52e753.js +0 -1
  344. package/assets/esri/core/workers/chunks/1dba93abe84d30f05d8d.js +0 -1
  345. package/assets/esri/core/workers/chunks/2033e6d42453e4e67048.js +0 -1
  346. package/assets/esri/core/workers/chunks/20b54e7872d967f3be32.js +0 -1
  347. package/assets/esri/core/workers/chunks/2501d9459f6d14c797e5.js +0 -1
  348. package/assets/esri/core/workers/chunks/253c231b5a52f1d2d3a5.js +0 -1
  349. package/assets/esri/core/workers/chunks/257f1e8316877f611e11.js +0 -1
  350. package/assets/esri/core/workers/chunks/28924f31f5ba8ebdc60a.js +0 -1
  351. package/assets/esri/core/workers/chunks/28b09fe50b855a1d8a3f.js +0 -1
  352. package/assets/esri/core/workers/chunks/2b0558c1716425974563.js +0 -2
  353. package/assets/esri/core/workers/chunks/2e7c830b5b1fe406169f.js +0 -1
  354. package/assets/esri/core/workers/chunks/2f4ed8a63d57636a4ebe.js +0 -1
  355. package/assets/esri/core/workers/chunks/393f79843d5a78c1cc37.js +0 -1
  356. package/assets/esri/core/workers/chunks/3958d92c737b3a2a3bc2.js +0 -1
  357. package/assets/esri/core/workers/chunks/3978f00a03e97645b276.js +0 -1
  358. package/assets/esri/core/workers/chunks/3b5c5356353f1a2303a0.js +0 -1
  359. package/assets/esri/core/workers/chunks/40e48b720d89cd067892.js +0 -1
  360. package/assets/esri/core/workers/chunks/436d51b9f1b1b5abc4bc.js +0 -1
  361. package/assets/esri/core/workers/chunks/44a786aba84918f2b247.js +0 -1
  362. package/assets/esri/core/workers/chunks/463747a822499dd933ef.js +0 -1
  363. package/assets/esri/core/workers/chunks/484b251fbcbffcb58323.js +0 -1
  364. package/assets/esri/core/workers/chunks/495f90fe3d0ad32bb82d.js +0 -1
  365. package/assets/esri/core/workers/chunks/49a3888bf9e2481642ac.js +0 -1
  366. package/assets/esri/core/workers/chunks/4ce57dd39075e8fb357c.js +0 -1
  367. package/assets/esri/core/workers/chunks/5459ba8fdeb2370bb52b.js +0 -1
  368. package/assets/esri/core/workers/chunks/55924fb0de05e727f5e3.js +0 -1
  369. package/assets/esri/core/workers/chunks/55dda957c79fb285185f.js +0 -1
  370. package/assets/esri/core/workers/chunks/56e6d8c4a9ed893ce951.js +0 -1
  371. package/assets/esri/core/workers/chunks/57159bcac86d660dcceb.js +0 -1
  372. package/assets/esri/core/workers/chunks/58026fc30d8a0ded4102.js +0 -1
  373. package/assets/esri/core/workers/chunks/5eb29f0068f1c839d05e.js +0 -1
  374. package/assets/esri/core/workers/chunks/5f553da48d0ccbbfcd3c.js +0 -2
  375. package/assets/esri/core/workers/chunks/5fb76575575fe8cfb1f0.js +0 -1
  376. package/assets/esri/core/workers/chunks/6072c63a5da4366e9942.js +0 -1
  377. package/assets/esri/core/workers/chunks/626a715fdec93e188e0c.js +0 -1
  378. package/assets/esri/core/workers/chunks/6525c925bb91facb3575.js +0 -1
  379. package/assets/esri/core/workers/chunks/6529b5cc3ac6baa29fff.js +0 -2
  380. package/assets/esri/core/workers/chunks/65d1e338612e59063eba.js +0 -1
  381. package/assets/esri/core/workers/chunks/66e60351aacbd162775f.js +0 -1
  382. package/assets/esri/core/workers/chunks/694371f51c52a7a94da4.js +0 -1
  383. package/assets/esri/core/workers/chunks/69b0dcd7bcd8ec42e2c3.js +0 -1
  384. package/assets/esri/core/workers/chunks/7260e63252fa5452dc22.js +0 -1
  385. package/assets/esri/core/workers/chunks/72eb0ac55026a4f5d6a7.js +0 -1
  386. package/assets/esri/core/workers/chunks/79429c8be5da85713200.js +0 -1
  387. package/assets/esri/core/workers/chunks/79c0a966f7d11d3c217f.js +0 -1
  388. package/assets/esri/core/workers/chunks/7b470d6ad182548b9e95.js +0 -1
  389. package/assets/esri/core/workers/chunks/7b862a074816c099b9ff.js +0 -1
  390. package/assets/esri/core/workers/chunks/7baa363b3b0a442a63d2.js +0 -1
  391. package/assets/esri/core/workers/chunks/7d8eb4dbea1916320f74.js +0 -1
  392. package/assets/esri/core/workers/chunks/7ddf9b2718dd047f15e6.js +0 -1
  393. package/assets/esri/core/workers/chunks/835af7b4fd92cb4e7af0.js +0 -1
  394. package/assets/esri/core/workers/chunks/8566449c39eba55147f5.js +0 -1
  395. package/assets/esri/core/workers/chunks/864691186c449ca2c3db.js +0 -1
  396. package/assets/esri/core/workers/chunks/88d5541679e77117bf03.js +0 -1
  397. package/assets/esri/core/workers/chunks/88fd698b940dadcc6dc5.js +0 -1
  398. package/assets/esri/core/workers/chunks/894ebc64b698e5d7604b.js +0 -1
  399. package/assets/esri/core/workers/chunks/8be707044d992ef5f1d8.js +0 -1
  400. package/assets/esri/core/workers/chunks/8c1bddc88cc5f4251021.js +0 -1
  401. package/assets/esri/core/workers/chunks/8eecc6df6511c8830f5d.js +0 -1
  402. package/assets/esri/core/workers/chunks/8f0d4aec8bd3cbfefc40.js +0 -1
  403. package/assets/esri/core/workers/chunks/8fea514aada1195c8f30.js +0 -1
  404. package/assets/esri/core/workers/chunks/94bf7f0da6ad3f7ea277.js +0 -1
  405. package/assets/esri/core/workers/chunks/987594539981483a7c5e.js +0 -1
  406. package/assets/esri/core/workers/chunks/995a433936fc90d41634.js +0 -2
  407. package/assets/esri/core/workers/chunks/9bbff8237540409610b3.js +0 -1
  408. package/assets/esri/core/workers/chunks/9e1392a0c608a13ab036.js +0 -1
  409. package/assets/esri/core/workers/chunks/9f1211d2267fb7673c4d.js +0 -1
  410. package/assets/esri/core/workers/chunks/a486d99f9879f94151ba.js +0 -1
  411. package/assets/esri/core/workers/chunks/a50421fe79f264ae3619.js +0 -1
  412. package/assets/esri/core/workers/chunks/a5c115fc53edb52ce1de.js +0 -1
  413. package/assets/esri/core/workers/chunks/a739e617fc461014ad1f.js +0 -1
  414. package/assets/esri/core/workers/chunks/aa21031c8f12ca438eaa.js +0 -1
  415. package/assets/esri/core/workers/chunks/ad27689b231e282b7620.js +0 -1
  416. package/assets/esri/core/workers/chunks/aed16c3e26652960ad3f.js +0 -1
  417. package/assets/esri/core/workers/chunks/af6e8c961fd768fa7be3.js +0 -1
  418. package/assets/esri/core/workers/chunks/b3a1a93c6dc9247cb048.js +0 -1
  419. package/assets/esri/core/workers/chunks/b4abf82b8ac974a55ae1.js +0 -1
  420. package/assets/esri/core/workers/chunks/b8cd81d8fcc78d272130.js +0 -1
  421. package/assets/esri/core/workers/chunks/b9a1046ca2cd0cca5da5.js +0 -1
  422. package/assets/esri/core/workers/chunks/b9d6f89f9b8e9d1bc787.js +0 -1
  423. package/assets/esri/core/workers/chunks/bab5f4b2424b487b87ac.js +0 -1
  424. package/assets/esri/core/workers/chunks/c02b3b8b71205f6ce290.js +0 -1
  425. package/assets/esri/core/workers/chunks/c17dda6fadb8bfad0d51.js +0 -1
  426. package/assets/esri/core/workers/chunks/c21212c356f65244e34e.js +0 -1
  427. package/assets/esri/core/workers/chunks/c374e5d5980db74c4aca.js +0 -1
  428. package/assets/esri/core/workers/chunks/c6bf17b5ff6ec4b980a1.js +0 -1
  429. package/assets/esri/core/workers/chunks/c99dcc17fbd7acd2ad2e.js +0 -1
  430. package/assets/esri/core/workers/chunks/ce481eeb27ea9c1782ae.js +0 -1
  431. package/assets/esri/core/workers/chunks/cec1c87eb3749276ced4.js +0 -1
  432. package/assets/esri/core/workers/chunks/cef02ed3942c010da2e8.js +0 -29
  433. package/assets/esri/core/workers/chunks/cfdbc48f58433a3d5fc3.js +0 -1
  434. package/assets/esri/core/workers/chunks/d456520e4b119a2816b6.js +0 -1
  435. package/assets/esri/core/workers/chunks/d8da31bfe2bc4174e5aa.js +0 -1
  436. package/assets/esri/core/workers/chunks/da1c9257793c2817f40f.js +0 -1
  437. package/assets/esri/core/workers/chunks/dc0c3109b7558b4fe016.js +0 -1
  438. package/assets/esri/core/workers/chunks/ddd8f6154e265dbb6f9f.js +0 -1
  439. package/assets/esri/core/workers/chunks/de601f0d5a2a282d2efd.js +0 -1
  440. package/assets/esri/core/workers/chunks/e227eb44cd139fe2bc1b.js +0 -1
  441. package/assets/esri/core/workers/chunks/e2ddfc96ddba92302e0c.js +0 -1
  442. package/assets/esri/core/workers/chunks/e61ab8ef30bbe788b9d7.js +0 -1
  443. package/assets/esri/core/workers/chunks/e89e6eea380ca2c13b64.js +0 -1
  444. package/assets/esri/core/workers/chunks/e9d352d030dcad1619a6.js +0 -1
  445. package/assets/esri/core/workers/chunks/eb95464bd017fb839510.js +0 -1
  446. package/assets/esri/core/workers/chunks/ed4ac5568dc2815b066d.js +0 -1
  447. package/assets/esri/core/workers/chunks/ed564358cc7b3ee463a3.js +0 -1
  448. package/assets/esri/core/workers/chunks/ee63c693f2539f3bfa17.js +0 -2
  449. package/assets/esri/core/workers/chunks/ef2e0a014c982d9c7ca4.js +0 -1
  450. package/assets/esri/core/workers/chunks/ef9489d1dccb817460bb.js +0 -2
  451. package/assets/esri/core/workers/chunks/f086c6d229fb34a9d7f9.js +0 -1
  452. package/assets/esri/core/workers/chunks/f35e749bb5be39880cbe.js +0 -1
  453. package/assets/esri/core/workers/chunks/f4bc563c71c478d3912f.js +0 -1
  454. package/assets/esri/core/workers/chunks/f6150b51a9430691a040.js +0 -1
  455. package/assets/esri/core/workers/chunks/f6f7d885b4d6080e3f58.js +0 -1
  456. package/assets/esri/core/workers/chunks/f95870bb4d8e4e13e69e.js +0 -1
  457. package/assets/esri/core/workers/chunks/fa59f10ed0f182a2a7f3.js +0 -1
  458. package/assets/esri/core/workers/chunks/fc9065d0cd6285fe0f0d.js +0 -1
  459. /package/assets/esri/core/workers/chunks/{ee63c693f2539f3bfa17.js.LICENSE.txt → 61312d3b5477ed9d87d9.js.LICENSE.txt} +0 -0
  460. /package/assets/esri/core/workers/chunks/{6529b5cc3ac6baa29fff.js.LICENSE.txt → 856dba96332509fb1d7a.js.LICENSE.txt} +0 -0
  461. /package/assets/esri/core/workers/chunks/{995a433936fc90d41634.js.LICENSE.txt → e63f94c8097555b266ad.js.LICENSE.txt} +0 -0
  462. /package/assets/esri/core/workers/chunks/{5f553da48d0ccbbfcd3c.js.LICENSE.txt → eca0736953a20cfc64ad.js.LICENSE.txt} +0 -0
  463. /package/assets/esri/core/workers/chunks/{ef9489d1dccb817460bb.js.LICENSE.txt → fc2234e0d202631f3abf.js.LICENSE.txt} +0 -0
  464. /package/assets/esri/core/workers/chunks/{2b0558c1716425974563.js.LICENSE.txt → fcb943c3b31b1bf62e65.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{cyclicalPI as i}from"../../../../core/Cyclical.js";import{deg2rad as e}from"../../../../core/mathUtils.js";import{createScreenPointArray as n,screenPointObjectToArray as s}from"../../../../core/screenUtils.js";import{property as r,subclass as o}from"../../../../core/accessorSupport/decorators.js";import{copy as a,distance as h}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{copy as m,negate as c,length as _,subtract as p,normalize as l,add as u,scale as d,dot as P}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as g}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getReferenceEllipsoid as S}from"../../../../geometry/ellipsoidUtils.js";import{wrapAxisAngle as v}from"../../../../geometry/support/axisAngle.js";import{create as C,fromPositionAndNormal as b,getNormal as w}from"../../../../geometry/support/plane.js";import{Sphere as M}from"../../../../geometry/support/sphere.js";import{pixelDistanceToInteractionFactor as f,applyAll as z}from"../../camera/constraintUtils.js";import{ConstraintOptions as j}from"../../camera/constraintUtils/ConstraintOptions.js";import{ExponentialFalloff as E}from"../../input/util.js";import{InteractiveController as A}from"./InteractiveController.js";import{PanPlanarMomentumController as k}from"./momentum/PanPlanarMomentumController.js";import{PanSphericalMomentumController as y}from"./momentum/PanSphericalMomentumController.js";import{RotationMomentumController as R}from"./momentum/RotationMomentumController.js";import{ZoomPlanarMomentumController as x}from"./momentum/ZoomPlanarMomentumController.js";import{ZoomSphericalMomentumController as O}from"./momentum/ZoomSphericalMomentumController.js";import{inferNavigationMode as H,pickPointAndInitSphere as F,excludeTerrain as Y,sphereOrPlanePointFromScreenPoint as L,maxPanDistanceModifier as T,minPinchAndPanCameraHeight as D,pivotSearchAreaSize as U,intersectPlaneFromScreenPointAtEye as G,applyZoomOnSphere as I,findSphereHorizonY as V,computeHorizonDownLimitScreenY as Z,shouldClampScreenY as q,shouldPreserveHeading as B,applyPanSphericalPreserveHeading as J,applyPanSphericalDirectRotation as K,computeHorizonUpLimitScreenY as N,normalizeRotationDelta as Q,applyRotation as W,applyPanPlanar as X,applyZoomToPoint as $}from"../utils/navigationUtils.js";import tt from"../../webgl/RenderCamera.js";import{PanPlanarMomentumEstimator as it}from"../../../navigation/PanPlanarMomentumEstimator.js";import{PanSphericalMomentumEstimator as et}from"../../../navigation/PanSphericalMomentumEstimator.js";import{RotationMomentumEstimator as nt}from"../../../navigation/RotationMomentumEstimator.js";import{ZoomMomentumEstimator as st}from"../../../navigation/ZoomMomentumEstimator.js";let rt=class extends A{constructor(t){super(t),this.forceHorizontalPan=!1,this._smoothRotation=new E(.05),this._rotationAxis=g(),this._beginAngle=0,this._beginHeading=0,this._panningPlane=C(),this._beginRadius=0,this._smoothScaling=new E(.05),this._zoomCenterScreen=n(),this._zoomMomentumEstimator=new st,this._rotationMomentumEstimator=new nt,this._panSphericalMomentumEstimator=new et,this._panPlanarMomentumEstimator=new it,this._adjustedSphere=new M,this._referenceSphere=new M,this._tmp3d=g(),this._tmpScreenPointArray=n(),this._beginScreenPoint=n(),this._beginScenePoint=g(),this._screenPickPoint=n(),this._clampedScreenPoint=n(),this._scenePickPoint=g(),this._horizonScreenY=null,this._panLimitScreenY=null,this._panLimitFromAbove=!1,this._navigationMode=1,this._sphere=new M,this._pointerCount=0,this._tmpInteractionDirection=g(),this._beginCamera=new tt,this._constraintOptions=new j(15,0,0,this._beginCamera)}get _intersectionHelper(){return this.view.sceneIntersectionHelper}begin(t){if(!this.running)return;this._zoomMomentumEstimator.enabled=this._rotationMomentumEstimator.enabled=this._panPlanarMomentumEstimator.enabled=this._panSphericalMomentumEstimator.enabled=this.view.navigation.momentumEnabled,this._beginHeading=-i.normalize(e(this.view.camera.heading)),this._beginRadius=t.radius,this._beginAngle=t.angle,this._pointerCount=t.pointers.size,this._smoothRotation.reset(),this._referenceSphere.radius=S(this.view.spatialReference).radius,s(t.center,this._screenPickPoint),this.forceHorizontalPan?this._navigationMode=1:this._navigationMode=H(this.startCamera,this._screenPickPoint,this.view.renderCoordsHelper,this.view.viewingMode),1===this._navigationMode&&(this._initClampValues(),a(this._screenPickPoint,this._clampScreenPointToHorizonPaddingRegion(this._screenPickPoint))),a(this._beginScreenPoint,this._screenPickPoint);const n=F(this._intersectionHelper,this.startCamera,this._screenPickPoint,this._referenceSphere.radius,1,this.view.basemapTerrain.invisible?Y:{});null!=n.scenePickPoint&&(this._scenePickPoint=n.scenePickPoint,this._sphere=n.sphere,m(this._beginScenePoint,this._scenePickPoint),0===this._navigationMode?this._preparePlanarPanMode(t,n.hasGeometryIntersection):this._prepareSphericalPanMode(),this._beginCamera.copyFrom(this.startCamera))}update(t){if(!this.running)return;this.currentCamera.copyFrom(this.startCamera);const i=t.pointers.size>1;1===this._navigationMode?(i&&this._zoomSpherical(t),this._panningSpherical(t),i&&this._rotateSpherical(t)):(i&&this._zoomPlanar(t),this._panningPlanar(t),i&&this._rotatePlanar(t)),this.commitCamera()}end(t){t.pointers.size===this._pointerCount&&this.update(t),this.finishController();const i=this.view.animationsEnabled&&this._zoomMomentumEstimator.evaluateMomentum();if(i)return 1===this._navigationMode?new O({view:this.view,momentum:i,screenCenter:this._zoomCenterScreen,sceneCenter:this._beginScenePoint,radius:this._sphere.radius}):new x({view:this.view,momentum:i,zoomCenter:this._beginScenePoint});const e=this.view.animationsEnabled&&this._rotationMomentumEstimator.evaluateMomentum();if(e)return new R({view:this.view,momentum:e,center:this._sphere.center,axis:this._rotationAxis});if(1===this._navigationMode){const t=this.view.animationsEnabled&&this._panSphericalMomentumEstimator.evaluateMomentum();if(t)return new y({view:this.view,momentum:t})}else{const t=this.view.animationsEnabled&&this._panPlanarMomentumEstimator.evaluateMomentum();if(t)return new k({view:this.view,momentum:t})}return null}_preparePlanarPanMode(t,i){const e=c(this._tmp3d,this.startCamera.viewForward);b(this._scenePickPoint,e,this._panningPlane);const r=n(this._screenPickPoint[0],0),o=g(),a=_(this.startCamera.eye);this._adjustedSphere.radius=a<this._sphere.radius?a-100:this._sphere.radius,L(this._adjustedSphere,this.startCamera,r,o);const h=g(),S=g(),v=g();p(h,this._scenePickPoint,this.currentCamera.eye);const C=_(h);l(h,h);const M=T*Math.max(Math.abs(this.view.camera.position.z),D),f=this.view.stage.renderView.getMinimalDepthForArea(null,this._screenPickPoint[0],this._screenPickPoint[1],this.view.state.camera,U);let z=null!=f?f:M;i&&(z=Math.min(z,C)),m(v,u(S,this.currentCamera.eye,d(S,h,z))),this._panningPlane[3]=-P(w(this._panningPlane),v),this.startCamera.center=u(S,this.startCamera.eye,d(S,this.startCamera.viewForward,z));const j=s(t.center,this._tmpScreenPointArray);G(this._panningPlane,this.startCamera,j,this._beginScenePoint)}_zoomSpherical(t){const i=this._beginRadius/t.radius,e=.001875*Math.min(Math.max(t.radius,40),120);this._smoothScaling.gain=e,this._smoothScaling.update(i),I(this._sphere,this.currentCamera,this._smoothScaling.value),s(t.center,this._zoomCenterScreen),this._zoomMomentumEstimator.add(this._smoothScaling.value,.001*t.timestamp),this._constraintOptions.interactionType=1,this._constraintOptions.interactionFactor=f(t.radius-this._beginRadius),z(this.view,this.currentCamera,this._constraintOptions)}_initClampValues(){this._horizonScreenY=V(this.startCamera,this._referenceSphere,this._screenPickPoint);const t=null!=this._horizonScreenY;this._panLimitFromAbove=t&&this._screenPickPoint[1]<this._horizonScreenY,this._panLimitScreenY=t?Z(this.startCamera,this._horizonScreenY):null}_prepareSphericalPanMode(){null!=this._panLimitScreenY&&q(this._screenPickPoint[1],this._panLimitFromAbove,this._panLimitScreenY)&&(this._screenPickPoint[1]=this._panLimitScreenY,L(this._sphere,this.startCamera,this._screenPickPoint,this._beginScenePoint),m(this._scenePickPoint,this._beginScenePoint)),a(this._clampedScreenPoint,this._screenPickPoint)}_panningSpherical(t){const i=s(t.center,this._tmpScreenPointArray),e=this._clampScreenPointToHorizonPaddingRegion(i);L(this._sphere,this.currentCamera,e,this._tmp3d),B(this._beginScenePoint,P(this.currentCamera.up,this._beginScenePoint),this._sphere.radius,this._beginHeading,this.view.camera.tilt,this.startCamera.aboveGround)?(J(this._sphere,this.currentCamera,this._beginScenePoint,this._tmp3d,this._beginHeading,this.view.camera.tilt,!1),this._panSphericalMomentumEstimator.addMomentumPreserveHeading(e,this._tmp3d,.001*t.timestamp,this.startCamera,this._sphere,this._beginHeading,this.view.camera.tilt)):(K(this._sphere,this.currentCamera,this._beginScenePoint,this._tmp3d,this.view.camera.tilt,!1),this._panSphericalMomentumEstimator.addMomentumDirectRotation(e,this._tmp3d,.001*t.timestamp,this.startCamera,this._sphere.radius,this.view.camera.tilt)),this._constraintOptions.interactionType=4,this._constraintOptions.interactionFactor=f(h(this._screenPickPoint,e)),z(this.view,this.currentCamera,this._constraintOptions)}_clampScreenPointToHorizonPaddingRegion(t){if(a(this._clampedScreenPoint,t),null==this._panLimitScreenY)return this._clampedScreenPoint;const i=V(this.currentCamera,this._referenceSphere,t);return null!=i&&(this._horizonScreenY=i,this._panLimitScreenY=this._panLimitFromAbove?Z(this.currentCamera,i):N(this.currentCamera,i)),q(t[1],this._panLimitFromAbove,this._panLimitScreenY)&&(this._clampedScreenPoint[1]=this._panLimitScreenY,this._panSphericalMomentumEstimator.reset()),this._clampedScreenPoint}_rotateSpherical(t){l(this._rotationAxis,this._scenePickPoint),this.currentCamera.aboveGround||c(this._rotationAxis,this._rotationAxis);const i=this._smoothRotation.value,e=i+Q(t.angle-i),n=.00125*Math.min(Math.max(t.radius,40),120);this._smoothRotation.gain=n,this._smoothRotation.update(e);const s=this._smoothRotation.value-this._beginAngle;this._rotationMomentumEstimator.add(s,.001*t.timestamp),W(this.currentCamera,this._sphere.center,v(this._rotationAxis,s)),this._constraintOptions.interactionType=2,this._constraintOptions.interactionFactor=f(t.radius*e),z(this.view,this.currentCamera,this._constraintOptions)}_panningPlanar(t){const i=s(t.center,this._tmpScreenPointArray);G(this._panningPlane,this.currentCamera,i,this._tmp3d)&&(X(this.currentCamera,this._beginScenePoint,this._tmp3d),this._panPlanarMomentumEstimator.add(i,this._tmp3d,.001*t.timestamp),this._constraintOptions.interactionType=4,this._constraintOptions.interactionFactor=f(h(this._beginScreenPoint,i)),this._constraintOptions.interactionDirection=this.view.renderCoordsHelper.worldUpAtPosition(this.currentCamera.eye,this._tmpInteractionDirection),z(this.view,this.currentCamera,this._constraintOptions),this._constraintOptions.interactionDirection=null)}_zoomPlanar(t){const i=this._beginRadius/t.radius,e=.001875*Math.min(Math.max(t.radius,40),120);this._smoothScaling.gain=e,this._smoothScaling.update(i),this._zoomMomentumEstimator.add(this._smoothScaling.value,.001*t.timestamp),$(this.currentCamera,this._beginScenePoint,this._smoothScaling.value,this.view.state.constraints.minimumPoiDistance),this._constraintOptions.interactionType=1,this._constraintOptions.interactionFactor=f(t.radius-this._beginRadius),z(this.view,this.currentCamera,this._constraintOptions)}_rotatePlanar(t){m(this._rotationAxis,this._beginScenePoint),this.currentCamera.aboveGround||c(this._rotationAxis,this._rotationAxis);const i=this._smoothRotation.value;let e=t.angle-i;e=Q(e);const n=i+e,s=.00125*Math.min(Math.max(t.radius,40),120);this._smoothRotation.gain=s,this._smoothRotation.update(n);const r=this._smoothRotation.value-this._beginAngle;this._rotationMomentumEstimator.add(r,.001*t.timestamp),W(this.currentCamera,this._sphere.center,v(this._rotationAxis,r)),this._constraintOptions.interactionType=2,this._constraintOptions.interactionFactor=f(t.radius*r),z(this.view,this.currentCamera,this._constraintOptions)}};t([r()],rt.prototype,"forceHorizontalPan",void 0),rt=t([o("esri.views.3d.state.controllers.PinchAndPanControllerGlobal")],rt);export{rt as PinchAndPanControllerGlobal};
2
+ import{__decorate as t}from"tslib";import{cyclicalPI as i}from"../../../../core/Cyclical.js";import{deg2rad as e}from"../../../../core/mathUtils.js";import{createScreenPointArray as n,screenPointObjectToArray as s}from"../../../../core/screenUtils.js";import{property as r,subclass as o}from"../../../../core/accessorSupport/decorators.js";import{copy as a,distance as h}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{copy as m,negate as c,length as _,subtract as p,normalize as l,add as u,scale as d,dot as P}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as g}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getReferenceEllipsoid as S}from"../../../../geometry/ellipsoidUtils.js";import{wrapAxisAngle as v}from"../../../../geometry/support/axisAngle.js";import{create as C,fromPositionAndNormal as w,getNormal as b}from"../../../../geometry/support/plane.js";import{Sphere as M}from"../../../../geometry/support/sphere.js";import{pixelDistanceToInteractionFactor as f,applyAll as z}from"../../camera/constraintUtils.js";import{ConstraintOptions as j}from"../../camera/constraintUtils/ConstraintOptions.js";import{ExponentialFalloff as E}from"../../input/util.js";import{InteractiveController as A}from"./InteractiveController.js";import{PanPlanarMomentumController as k}from"./momentum/PanPlanarMomentumController.js";import{PanSphericalMomentumController as y}from"./momentum/PanSphericalMomentumController.js";import{RotationMomentumController as R}from"./momentum/RotationMomentumController.js";import{ZoomPlanarMomentumController as x}from"./momentum/ZoomPlanarMomentumController.js";import{ZoomSphericalMomentumController as O}from"./momentum/ZoomSphericalMomentumController.js";import{inferNavigationMode as H,pickPointAndInitSphere as F,excludeTerrain as Y,sphereOrPlanePointFromScreenPoint as L,maxPanDistanceModifier as T,minPinchAndPanCameraHeight as D,pivotSearchAreaSize as U,intersectPlaneFromScreenPointAtEye as G,applyZoomOnSphere as I,findSphereHorizonY as V,computeHorizonDownLimitScreenY as Z,shouldClampScreenY as q,shouldPreserveHeading as B,applyPanSphericalPreserveHeading as J,applyPanSphericalDirectRotation as K,computeHorizonUpLimitScreenY as N,normalizeRotationDelta as Q,applyRotation as W,applyPanPlanar as X,applyZoomToPoint as $}from"../utils/navigationUtils.js";import tt from"../../webgl/RenderCamera.js";import{PanPlanarMomentumEstimator as it}from"../../../navigation/PanPlanarMomentumEstimator.js";import{PanSphericalMomentumEstimator as et}from"../../../navigation/PanSphericalMomentumEstimator.js";import{RotationMomentumEstimator as nt}from"../../../navigation/RotationMomentumEstimator.js";import{ZoomMomentumEstimator as st}from"../../../navigation/ZoomMomentumEstimator.js";let rt=class extends A{constructor(t){super(t),this.forceHorizontalPan=!1,this._smoothRotation=new E(.05),this._rotationAxis=g(),this._beginAngle=0,this._beginHeading=0,this._panningPlane=C(),this._beginRadius=0,this._smoothScaling=new E(.05),this._zoomCenterScreen=n(),this._zoomMomentumEstimator=new st,this._rotationMomentumEstimator=new nt,this._panSphericalMomentumEstimator=new et,this._panPlanarMomentumEstimator=new it,this._adjustedSphere=new M,this._referenceSphere=new M,this._tmp3d=g(),this._tmpScreenPointArray=n(),this._beginScreenPoint=n(),this._beginScenePoint=g(),this._screenPickPoint=n(),this._clampedScreenPoint=n(),this._scenePickPoint=g(),this._horizonScreenY=null,this._panLimitScreenY=null,this._panLimitFromAbove=!1,this._navigationMode=1,this._sphere=new M,this._pointerCount=0,this._tmpInteractionDirection=g(),this._beginCamera=new tt,this._constraintOptions=new j(15,0,0,this._beginCamera)}get _intersectionHelper(){return this.view.sceneIntersectionHelper}begin(t){if(!this.running)return;this._zoomMomentumEstimator.enabled=this._rotationMomentumEstimator.enabled=this._panPlanarMomentumEstimator.enabled=this._panSphericalMomentumEstimator.enabled=this.view.navigation.momentumEnabled,this._beginHeading=-i.normalize(e(this.view.camera.heading)),this._beginRadius=t.radius,this._beginAngle=t.angle,this._pointerCount=t.pointers.size,this._smoothRotation.reset(),this._referenceSphere.radius=S(this.view.spatialReference).radius,s(t.center,this._screenPickPoint),this.forceHorizontalPan?this._navigationMode=1:this._navigationMode=H(this.startCamera,this._screenPickPoint,this.view.renderCoordsHelper,this.view.viewingMode),1===this._navigationMode&&(this._initClampValues(),a(this._screenPickPoint,this._clampScreenPointToHorizonPaddingRegion(this._screenPickPoint))),a(this._beginScreenPoint,this._screenPickPoint);const n=F(this._intersectionHelper,this.startCamera,this._screenPickPoint,this._referenceSphere.radius,1,this.view.groundView.invisible?Y:{});null!=n.scenePickPoint&&(this._scenePickPoint=n.scenePickPoint,this._sphere=n.sphere,m(this._beginScenePoint,this._scenePickPoint),0===this._navigationMode?this._preparePlanarPanMode(t,n.hasGeometryIntersection):this._prepareSphericalPanMode(),this._beginCamera.copyFrom(this.startCamera))}update(t){if(!this.running)return;this.currentCamera.copyFrom(this.startCamera);const i=t.pointers.size>1;1===this._navigationMode?(i&&this._zoomSpherical(t),this._panningSpherical(t),i&&this._rotateSpherical(t)):(i&&this._zoomPlanar(t),this._panningPlanar(t),i&&this._rotatePlanar(t)),this.commitCamera()}end(t){t.pointers.size===this._pointerCount&&this.update(t),this.finishController();const i=this.view.animationsEnabled&&this._zoomMomentumEstimator.evaluateMomentum();if(i)return 1===this._navigationMode?new O({view:this.view,momentum:i,screenCenter:this._zoomCenterScreen,sceneCenter:this._beginScenePoint,radius:this._sphere.radius}):new x({view:this.view,momentum:i,zoomCenter:this._beginScenePoint});const e=this.view.animationsEnabled&&this._rotationMomentumEstimator.evaluateMomentum();if(e)return new R({view:this.view,momentum:e,center:this._sphere.center,axis:this._rotationAxis});if(1===this._navigationMode){const t=this.view.animationsEnabled&&this._panSphericalMomentumEstimator.evaluateMomentum();if(t)return new y({view:this.view,momentum:t})}else{const t=this.view.animationsEnabled&&this._panPlanarMomentumEstimator.evaluateMomentum();if(t)return new k({view:this.view,momentum:t})}return null}_preparePlanarPanMode(t,i){const e=c(this._tmp3d,this.startCamera.viewForward);w(this._scenePickPoint,e,this._panningPlane);const r=n(this._screenPickPoint[0],0),o=g(),a=_(this.startCamera.eye);this._adjustedSphere.radius=a<this._sphere.radius?a-100:this._sphere.radius,L(this._adjustedSphere,this.startCamera,r,o);const h=g(),S=g(),v=g();p(h,this._scenePickPoint,this.currentCamera.eye);const C=_(h);l(h,h);const M=T*Math.max(Math.abs(this.view.camera.position.z),D),f=this.view.stage.renderView.getMinimalDepthForArea(null,this._screenPickPoint[0],this._screenPickPoint[1],this.view.state.camera,U);let z=null!=f?f:M;i&&(z=Math.min(z,C)),m(v,u(S,this.currentCamera.eye,d(S,h,z))),this._panningPlane[3]=-P(b(this._panningPlane),v),this.startCamera.center=u(S,this.startCamera.eye,d(S,this.startCamera.viewForward,z));const j=s(t.center,this._tmpScreenPointArray);G(this._panningPlane,this.startCamera,j,this._beginScenePoint)}_zoomSpherical(t){const i=this._beginRadius/t.radius,e=.001875*Math.min(Math.max(t.radius,40),120);this._smoothScaling.gain=e,this._smoothScaling.update(i),I(this._sphere,this.currentCamera,this._smoothScaling.value),s(t.center,this._zoomCenterScreen),this._zoomMomentumEstimator.add(this._smoothScaling.value,.001*t.timestamp),this._constraintOptions.interactionType=1,this._constraintOptions.interactionFactor=f(t.radius-this._beginRadius),z(this.view,this.currentCamera,this._constraintOptions)}_initClampValues(){this._horizonScreenY=V(this.startCamera,this._referenceSphere,this._screenPickPoint);const t=null!=this._horizonScreenY;this._panLimitFromAbove=t&&this._screenPickPoint[1]<this._horizonScreenY,this._panLimitScreenY=t?Z(this.startCamera,this._horizonScreenY):null}_prepareSphericalPanMode(){null!=this._panLimitScreenY&&q(this._screenPickPoint[1],this._panLimitFromAbove,this._panLimitScreenY)&&(this._screenPickPoint[1]=this._panLimitScreenY,L(this._sphere,this.startCamera,this._screenPickPoint,this._beginScenePoint),m(this._scenePickPoint,this._beginScenePoint)),a(this._clampedScreenPoint,this._screenPickPoint)}_panningSpherical(t){const i=s(t.center,this._tmpScreenPointArray),e=this._clampScreenPointToHorizonPaddingRegion(i);L(this._sphere,this.currentCamera,e,this._tmp3d),B(this._beginScenePoint,P(this.currentCamera.up,this._beginScenePoint),this._sphere.radius,this._beginHeading,this.view.camera.tilt,this.startCamera.aboveGround)?(J(this._sphere,this.currentCamera,this._beginScenePoint,this._tmp3d,this._beginHeading,this.view.camera.tilt,!1),this._panSphericalMomentumEstimator.addMomentumPreserveHeading(e,this._tmp3d,.001*t.timestamp,this.startCamera,this._sphere,this._beginHeading,this.view.camera.tilt)):(K(this._sphere,this.currentCamera,this._beginScenePoint,this._tmp3d,this.view.camera.tilt,!1),this._panSphericalMomentumEstimator.addMomentumDirectRotation(e,this._tmp3d,.001*t.timestamp,this.startCamera,this._sphere.radius,this.view.camera.tilt)),this._constraintOptions.interactionType=4,this._constraintOptions.interactionFactor=f(h(this._screenPickPoint,e)),z(this.view,this.currentCamera,this._constraintOptions)}_clampScreenPointToHorizonPaddingRegion(t){if(a(this._clampedScreenPoint,t),null==this._panLimitScreenY)return this._clampedScreenPoint;const i=V(this.currentCamera,this._referenceSphere,t);return null!=i&&(this._horizonScreenY=i,this._panLimitScreenY=this._panLimitFromAbove?Z(this.currentCamera,i):N(this.currentCamera,i)),q(t[1],this._panLimitFromAbove,this._panLimitScreenY)&&(this._clampedScreenPoint[1]=this._panLimitScreenY,this._panSphericalMomentumEstimator.reset()),this._clampedScreenPoint}_rotateSpherical(t){l(this._rotationAxis,this._scenePickPoint),this.currentCamera.aboveGround||c(this._rotationAxis,this._rotationAxis);const i=this._smoothRotation.value,e=i+Q(t.angle-i),n=.00125*Math.min(Math.max(t.radius,40),120);this._smoothRotation.gain=n,this._smoothRotation.update(e);const s=this._smoothRotation.value-this._beginAngle;this._rotationMomentumEstimator.add(s,.001*t.timestamp),W(this.currentCamera,this._sphere.center,v(this._rotationAxis,s)),this._constraintOptions.interactionType=2,this._constraintOptions.interactionFactor=f(t.radius*e),z(this.view,this.currentCamera,this._constraintOptions)}_panningPlanar(t){const i=s(t.center,this._tmpScreenPointArray);G(this._panningPlane,this.currentCamera,i,this._tmp3d)&&(X(this.currentCamera,this._beginScenePoint,this._tmp3d),this._panPlanarMomentumEstimator.add(i,this._tmp3d,.001*t.timestamp),this._constraintOptions.interactionType=4,this._constraintOptions.interactionFactor=f(h(this._beginScreenPoint,i)),this._constraintOptions.interactionDirection=this.view.renderCoordsHelper.worldUpAtPosition(this.currentCamera.eye,this._tmpInteractionDirection),z(this.view,this.currentCamera,this._constraintOptions),this._constraintOptions.interactionDirection=null)}_zoomPlanar(t){const i=this._beginRadius/t.radius,e=.001875*Math.min(Math.max(t.radius,40),120);this._smoothScaling.gain=e,this._smoothScaling.update(i),this._zoomMomentumEstimator.add(this._smoothScaling.value,.001*t.timestamp),$(this.currentCamera,this._beginScenePoint,this._smoothScaling.value,this.view.state.constraints.minimumPoiDistance),this._constraintOptions.interactionType=1,this._constraintOptions.interactionFactor=f(t.radius-this._beginRadius),z(this.view,this.currentCamera,this._constraintOptions)}_rotatePlanar(t){m(this._rotationAxis,this._beginScenePoint),this.currentCamera.aboveGround||c(this._rotationAxis,this._rotationAxis);const i=this._smoothRotation.value;let e=t.angle-i;e=Q(e);const n=i+e,s=.00125*Math.min(Math.max(t.radius,40),120);this._smoothRotation.gain=s,this._smoothRotation.update(n);const r=this._smoothRotation.value-this._beginAngle;this._rotationMomentumEstimator.add(r,.001*t.timestamp),W(this.currentCamera,this._sphere.center,v(this._rotationAxis,r)),this._constraintOptions.interactionType=2,this._constraintOptions.interactionFactor=f(t.radius*r),z(this.view,this.currentCamera,this._constraintOptions)}};t([r()],rt.prototype,"forceHorizontalPan",void 0),rt=t([o("esri.views.3d.state.controllers.PinchAndPanControllerGlobal")],rt);export{rt as PinchAndPanControllerGlobal};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{createScreenPointArray as i,screenPointObjectToArray as e}from"../../../../core/screenUtils.js";import{property as n,subclass as o}from"../../../../core/accessorSupport/decorators.js";import{copy as s,distance as r}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{negate as a,copy as m,dot as h,subtract as l,length as c,normalize as _,scale as p,add as u}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as d,fromValues as g}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{wrapAxisAngle as C}from"../../../../geometry/support/axisAngle.js";import{create as v,fromNormalAndOffset as b,setOffsetFromPoint as S,negate as M,getNormal as w}from"../../../../geometry/support/plane.js";import{pixelDistanceToInteractionFactor as z,applyAll as P}from"../../camera/constraintUtils.js";import{ConstraintOptions as f}from"../../camera/constraintUtils/ConstraintOptions.js";import{ExponentialFalloff as V}from"../../input/util.js";import{getVoxelWasm as H}from"../../layers/VoxelWasm.js";import{InteractiveController as E}from"./InteractiveController.js";import{PanPlanarMomentumController as j}from"./momentum/PanPlanarMomentumController.js";import{RotationMomentumController as F}from"./momentum/RotationMomentumController.js";import{ZoomPlanarMomentumController as y}from"./momentum/ZoomPlanarMomentumController.js";import{inferNavigationMode as Y,excludeTerrain as x,getTiltScaleFactor as L,maxPanDistanceModifier as A,minPinchAndPanCameraHeight as O,pivotSearchAreaSize as R,centroid as T,applyZoomToPoint as U,applyPanPlanar as D,normalizeRotationDelta as I,applyRotation as Z,intersectPlaneFromScreenPointAtEye as k,findPlaneHorizonY as G,computeHorizonDownLimitScreenY as W,computeHorizonUpLimitScreenY as q,shouldClampScreenY as B}from"../utils/navigationUtils.js";import J from"../../webgl/RenderCamera.js";import{PanPlanarMomentumEstimator as K}from"../../../navigation/PanPlanarMomentumEstimator.js";import{RotationMomentumEstimator as N}from"../../../navigation/RotationMomentumEstimator.js";import{ZoomMomentumEstimator as Q}from"../../../navigation/ZoomMomentumEstimator.js";const X=g(0,0,1);let $=class extends E{constructor(t){super(t),this.forceHorizontalPan=!1,this._rotationValueSmooth=new V(.05),this._scalingValueSmooth=new V(.05),this._planeHorizontal=v(),this._planeVertical=v(),this._rotationMomentumEstimator=new N,this._panMomentumEstimator=new K(300,12,.9),this._zoomMomentumEstimator=new Q,this._beginRadius=0,this._beginCenter=d(),this._beginAngle=0,this._tmpPoints=[],this._navigationMode=1,this._beginCenterScreen=i(),this._tmpCentroid3d=d(),this._tmpCentroid2d=i(),this._tmp2d=i(),this._clampedScreenPoint=i(),this._horizonScreenY=null,this._panLimitScreenY=null,this._panLimitFromAbove=!1,this._pointerCount=0,this._beginCamera=new J,this._constraintOptions=new f(15,0,0,this._beginCamera)}begin(t){if(!this.running)return;const i=this.view.navigation.momentumEnabled;this._zoomMomentumEstimator.enabled=i,this._rotationMomentumEstimator.enabled=i,this._panMomentumEstimator.enabled=i,this._beginRadius=t.radius,this._pointerCount=t.pointers.size,this._beginAngle=t.angle,this._rotationValueSmooth.reset(),this._scalingValueSmooth.reset(),e(t.center,this._beginCenterScreen),b(X,0,this._planeHorizontal);const n=d();a(n,this.startCamera.viewForward);const o=d();m(o,X);const r=h(n,o);this.forceHorizontalPan?this._navigationMode=1:this._navigationMode=Y(this.startCamera,this._beginCenterScreen,this.view.renderCoordsHelper,this.view.viewingMode),1===this._navigationMode&&(this._initClampValues(),s(this._beginCenterScreen,this._clampScreenPointToHorizonPaddingRegion(this._beginCenterScreen)));const g=d(),C=this._intersectionHelper.intersectScreenFreePointFallback(this._beginCenterScreen,g,this.view.basemapTerrain.invisible?x:{}),v=L(o,this.startCamera.viewForward,A)*Math.max(Math.abs(this.view.camera.position.z),O);S(this._planeHorizontal,this._planeHorizontal,g),this.startCamera.aboveGround||M(this._planeHorizontal,this._planeHorizontal);const z=d(),P=d(),f=d();l(z,g,this.currentCamera.eye);const V=c(z);if(_(z,z),0===this._navigationMode){p(o,o,r),l(w(this._planeVertical),n,o),_(w(this._planeVertical),w(this._planeVertical)),S(this._planeVertical,this._planeVertical,g);const i=this.view.stage.renderView.getMinimalDepthForArea(H(this.view),this._beginCenterScreen[0],this._beginCenterScreen[1],this.view.state.camera,R);let e=null!=i?i:v;C&&(e=Math.min(e,V)),m(f,u(P,this.currentCamera.eye,p(P,z,e))),this._planeVertical[3]=-h(w(this._planeVertical),f),this._computePlanePoints(t.pointers,this._planeVertical,this.startCamera,this._tmpPoints),T(this._tmpPoints,this._beginCenter)}else{const i=C?V:v;m(f,u(P,this.currentCamera.eye,p(P,z,i))),this._planeHorizontal[3]=-h(w(this._planeHorizontal),f),this._computePlanePoints(t.pointers,this._planeHorizontal,this.startCamera,this._tmpPoints),T(this._tmpPoints,this._beginCenter)}this._beginCamera.copyFrom(this.startCamera)}update(t){if(!this.running)return;this.currentCamera.copyFrom(this.startCamera);const i=t.pointers.size>1,n=1===this._navigationMode?this._planeHorizontal:this._planeVertical,o=this._beginCenter;if(i){const i=this._beginRadius/t.radius,e=.001875*Math.min(Math.max(t.radius,40),120);this._scalingValueSmooth.gain=e,this._scalingValueSmooth.update(i),U(this.currentCamera,o,this._scalingValueSmooth.value,this.view.state.constraints.minimumPoiDistance),this._zoomMomentumEstimator.add(this._scalingValueSmooth.value,.001*t.timestamp),this._constraintOptions.interactionType=1,this._constraintOptions.interactionFactor=z(Math.abs(t.radius-this._beginRadius)),P(this.view,this.currentCamera,this._constraintOptions)}this._computePlanePoints(t.pointers,n,this.currentCamera,this._tmpPoints),T(this._tmpPoints,this._tmpCentroid3d),e(t.center,this._tmpCentroid2d);const s=1===this._navigationMode?this._clampScreenPointToHorizonPaddingRegion(this._tmpCentroid2d):this._tmpCentroid2d;if(D(this.currentCamera,o,this._tmpCentroid3d),this._panMomentumEstimator.add(s,this._tmpCentroid3d,.001*t.timestamp),this._constraintOptions.interactionType=4,this._constraintOptions.interactionFactor=z(r(this._beginCenterScreen,s)),P(this.view,this.currentCamera,this._constraintOptions),i){const i=o,e=this._rotationValueSmooth.value,n=e+I(t.angle-e),s=.00125*Math.min(Math.max(t.radius,40),120);this._rotationValueSmooth.gain=s,this._rotationValueSmooth.update(n);const r=this._rotationValueSmooth.value-this._beginAngle;this._rotationMomentumEstimator.add(r,.001*t.timestamp);const a=w(this._planeHorizontal);Z(this.currentCamera,i,C(a,r)),this._constraintOptions.interactionType=2,this._constraintOptions.interactionFactor=z(Math.abs(t.radius*r)),P(this.view,this.currentCamera,this._constraintOptions)}this.commitCamera()}end(t){t.pointers.size===this._pointerCount&&this.update(t),this.finishController();const i=this.view.animationsEnabled&&this._zoomMomentumEstimator.evaluateMomentum();if(i)return new y({view:this.view,momentum:i,zoomCenter:this._beginCenter});const e=this.view.animationsEnabled&&this._rotationMomentumEstimator.evaluateMomentum();if(e)return new F({view:this.view,momentum:e,center:this._beginCenter,axis:w(this._planeHorizontal)});const n=this.view.animationsEnabled&&this._panMomentumEstimator.evaluateMomentum();return n?new j({view:this.view,momentum:n}):null}_computePlanePoints(t,i,e,n){n.length=t.size;const o=this._tmp2d;let s=0;return t.forEach(t=>{o[0]=t.x,o[1]=t.y;const r=1===this._navigationMode?this._clampScreenPointToHorizonPaddingRegion(o):o;void 0===n[s]&&(n[s]=d()),k(i,e,r,n[s]),s+=1}),n}_initClampValues(){this._horizonScreenY=G(this.startCamera,this._planeHorizontal),this._panLimitFromAbove=this._beginCenterScreen[1]<this._horizonScreenY,this._panLimitScreenY=this._panLimitFromAbove?W(this.startCamera,this._horizonScreenY):q(this.startCamera,this._horizonScreenY)}_clampScreenPointToHorizonPaddingRegion(t){return s(this._clampedScreenPoint,t),null==this._panLimitScreenY||(this._horizonScreenY=G(this.currentCamera,this._planeHorizontal),this._panLimitScreenY=this._panLimitFromAbove?W(this.currentCamera,this._horizonScreenY):q(this.currentCamera,this._horizonScreenY),B(t[1],this._panLimitFromAbove,this._panLimitScreenY)&&(this._clampedScreenPoint[1]=this._panLimitScreenY,this._panMomentumEstimator.reset())),this._clampedScreenPoint}get _intersectionHelper(){return this.view.sceneIntersectionHelper}};t([n()],$.prototype,"forceHorizontalPan",void 0),$=t([o("esri.views.3d.state.controllers.PinchAndPanControllerLocal")],$);export{$ as PinchAndPanControllerLocal};
2
+ import{__decorate as t}from"tslib";import{createScreenPointArray as i,screenPointObjectToArray as e}from"../../../../core/screenUtils.js";import{property as n,subclass as o}from"../../../../core/accessorSupport/decorators.js";import{copy as s,distance as r}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{negate as a,copy as m,dot as h,subtract as l,length as c,normalize as _,scale as p,add as u}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as d,fromValues as g}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{wrapAxisAngle as C}from"../../../../geometry/support/axisAngle.js";import{create as v,fromNormalAndOffset as b,setOffsetFromPoint as S,negate as w,getNormal as M}from"../../../../geometry/support/plane.js";import{pixelDistanceToInteractionFactor as z,applyAll as P}from"../../camera/constraintUtils.js";import{ConstraintOptions as f}from"../../camera/constraintUtils/ConstraintOptions.js";import{ExponentialFalloff as V}from"../../input/util.js";import{getVoxelWasm as H}from"../../layers/VoxelWasm.js";import{InteractiveController as E}from"./InteractiveController.js";import{PanPlanarMomentumController as j}from"./momentum/PanPlanarMomentumController.js";import{RotationMomentumController as F}from"./momentum/RotationMomentumController.js";import{ZoomPlanarMomentumController as y}from"./momentum/ZoomPlanarMomentumController.js";import{inferNavigationMode as Y,excludeTerrain as x,getTiltScaleFactor as L,maxPanDistanceModifier as A,minPinchAndPanCameraHeight as O,pivotSearchAreaSize as R,centroid as T,applyZoomToPoint as U,applyPanPlanar as D,normalizeRotationDelta as I,applyRotation as Z,intersectPlaneFromScreenPointAtEye as k,findPlaneHorizonY as G,computeHorizonDownLimitScreenY as W,computeHorizonUpLimitScreenY as q,shouldClampScreenY as B}from"../utils/navigationUtils.js";import J from"../../webgl/RenderCamera.js";import{PanPlanarMomentumEstimator as K}from"../../../navigation/PanPlanarMomentumEstimator.js";import{RotationMomentumEstimator as N}from"../../../navigation/RotationMomentumEstimator.js";import{ZoomMomentumEstimator as Q}from"../../../navigation/ZoomMomentumEstimator.js";const X=g(0,0,1);let $=class extends E{constructor(t){super(t),this.forceHorizontalPan=!1,this._rotationValueSmooth=new V(.05),this._scalingValueSmooth=new V(.05),this._planeHorizontal=v(),this._planeVertical=v(),this._rotationMomentumEstimator=new N,this._panMomentumEstimator=new K(300,12,.9),this._zoomMomentumEstimator=new Q,this._beginRadius=0,this._beginCenter=d(),this._beginAngle=0,this._tmpPoints=[],this._navigationMode=1,this._beginCenterScreen=i(),this._tmpCentroid3d=d(),this._tmpCentroid2d=i(),this._tmp2d=i(),this._clampedScreenPoint=i(),this._horizonScreenY=null,this._panLimitScreenY=null,this._panLimitFromAbove=!1,this._pointerCount=0,this._beginCamera=new J,this._constraintOptions=new f(15,0,0,this._beginCamera)}begin(t){if(!this.running)return;const i=this.view.navigation.momentumEnabled;this._zoomMomentumEstimator.enabled=i,this._rotationMomentumEstimator.enabled=i,this._panMomentumEstimator.enabled=i,this._beginRadius=t.radius,this._pointerCount=t.pointers.size,this._beginAngle=t.angle,this._rotationValueSmooth.reset(),this._scalingValueSmooth.reset(),e(t.center,this._beginCenterScreen),b(X,0,this._planeHorizontal);const n=d();a(n,this.startCamera.viewForward);const o=d();m(o,X);const r=h(n,o);this.forceHorizontalPan?this._navigationMode=1:this._navigationMode=Y(this.startCamera,this._beginCenterScreen,this.view.renderCoordsHelper,this.view.viewingMode),1===this._navigationMode&&(this._initClampValues(),s(this._beginCenterScreen,this._clampScreenPointToHorizonPaddingRegion(this._beginCenterScreen)));const g=d(),C=this._intersectionHelper.intersectScreenFreePointFallback(this._beginCenterScreen,g,this.view.groundView.invisible?x:{}),v=L(o,this.startCamera.viewForward,A)*Math.max(Math.abs(this.view.camera.position.z),O);S(this._planeHorizontal,this._planeHorizontal,g),this.startCamera.aboveGround||w(this._planeHorizontal,this._planeHorizontal);const z=d(),P=d(),f=d();l(z,g,this.currentCamera.eye);const V=c(z);if(_(z,z),0===this._navigationMode){p(o,o,r),l(M(this._planeVertical),n,o),_(M(this._planeVertical),M(this._planeVertical)),S(this._planeVertical,this._planeVertical,g);const i=this.view.stage.renderView.getMinimalDepthForArea(H(this.view),this._beginCenterScreen[0],this._beginCenterScreen[1],this.view.state.camera,R);let e=null!=i?i:v;C&&(e=Math.min(e,V)),m(f,u(P,this.currentCamera.eye,p(P,z,e))),this._planeVertical[3]=-h(M(this._planeVertical),f),this._computePlanePoints(t.pointers,this._planeVertical,this.startCamera,this._tmpPoints),T(this._tmpPoints,this._beginCenter)}else{const i=C?V:v;m(f,u(P,this.currentCamera.eye,p(P,z,i))),this._planeHorizontal[3]=-h(M(this._planeHorizontal),f),this._computePlanePoints(t.pointers,this._planeHorizontal,this.startCamera,this._tmpPoints),T(this._tmpPoints,this._beginCenter)}this._beginCamera.copyFrom(this.startCamera)}update(t){if(!this.running)return;this.currentCamera.copyFrom(this.startCamera);const i=t.pointers.size>1,n=1===this._navigationMode?this._planeHorizontal:this._planeVertical,o=this._beginCenter;if(i){const i=this._beginRadius/t.radius,e=.001875*Math.min(Math.max(t.radius,40),120);this._scalingValueSmooth.gain=e,this._scalingValueSmooth.update(i),U(this.currentCamera,o,this._scalingValueSmooth.value,this.view.state.constraints.minimumPoiDistance),this._zoomMomentumEstimator.add(this._scalingValueSmooth.value,.001*t.timestamp),this._constraintOptions.interactionType=1,this._constraintOptions.interactionFactor=z(Math.abs(t.radius-this._beginRadius)),P(this.view,this.currentCamera,this._constraintOptions)}this._computePlanePoints(t.pointers,n,this.currentCamera,this._tmpPoints),T(this._tmpPoints,this._tmpCentroid3d),e(t.center,this._tmpCentroid2d);const s=1===this._navigationMode?this._clampScreenPointToHorizonPaddingRegion(this._tmpCentroid2d):this._tmpCentroid2d;if(D(this.currentCamera,o,this._tmpCentroid3d),this._panMomentumEstimator.add(s,this._tmpCentroid3d,.001*t.timestamp),this._constraintOptions.interactionType=4,this._constraintOptions.interactionFactor=z(r(this._beginCenterScreen,s)),P(this.view,this.currentCamera,this._constraintOptions),i){const i=o,e=this._rotationValueSmooth.value,n=e+I(t.angle-e),s=.00125*Math.min(Math.max(t.radius,40),120);this._rotationValueSmooth.gain=s,this._rotationValueSmooth.update(n);const r=this._rotationValueSmooth.value-this._beginAngle;this._rotationMomentumEstimator.add(r,.001*t.timestamp);const a=M(this._planeHorizontal);Z(this.currentCamera,i,C(a,r)),this._constraintOptions.interactionType=2,this._constraintOptions.interactionFactor=z(Math.abs(t.radius*r)),P(this.view,this.currentCamera,this._constraintOptions)}this.commitCamera()}end(t){t.pointers.size===this._pointerCount&&this.update(t),this.finishController();const i=this.view.animationsEnabled&&this._zoomMomentumEstimator.evaluateMomentum();if(i)return new y({view:this.view,momentum:i,zoomCenter:this._beginCenter});const e=this.view.animationsEnabled&&this._rotationMomentumEstimator.evaluateMomentum();if(e)return new F({view:this.view,momentum:e,center:this._beginCenter,axis:M(this._planeHorizontal)});const n=this.view.animationsEnabled&&this._panMomentumEstimator.evaluateMomentum();return n?new j({view:this.view,momentum:n}):null}_computePlanePoints(t,i,e,n){n.length=t.size;const o=this._tmp2d;let s=0;return t.forEach(t=>{o[0]=t.x,o[1]=t.y;const r=1===this._navigationMode?this._clampScreenPointToHorizonPaddingRegion(o):o;void 0===n[s]&&(n[s]=d()),k(i,e,r,n[s]),s+=1}),n}_initClampValues(){this._horizonScreenY=G(this.startCamera,this._planeHorizontal),this._panLimitFromAbove=this._beginCenterScreen[1]<this._horizonScreenY,this._panLimitScreenY=this._panLimitFromAbove?W(this.startCamera,this._horizonScreenY):q(this.startCamera,this._horizonScreenY)}_clampScreenPointToHorizonPaddingRegion(t){return s(this._clampedScreenPoint,t),null==this._panLimitScreenY||(this._horizonScreenY=G(this.currentCamera,this._planeHorizontal),this._panLimitScreenY=this._panLimitFromAbove?W(this.currentCamera,this._horizonScreenY):q(this.currentCamera,this._horizonScreenY),B(t[1],this._panLimitFromAbove,this._panLimitScreenY)&&(this._clampedScreenPoint[1]=this._panLimitScreenY,this._panMomentumEstimator.reset())),this._clampedScreenPoint}get _intersectionHelper(){return this.view.sceneIntersectionHelper}};t([n()],$.prototype,"forceHorizontalPan",void 0),$=t([o("esri.views.3d.state.controllers.PinchAndPanControllerLocal")],$);export{$ as PinchAndPanControllerLocal};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{acosClamped as i,clamp as s}from"../../../../core/mathUtils.js";import{createScreenPointArray as r}from"../../../../core/screenUtils.js";import{property as e,subclass as o}from"../../../../core/accessorSupport/decorators.js";import{fromRotation as a,rotate as n}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as h}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{copy as p}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as m}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{exactEquals as c,copy as l,subtract as _,length as v,normalize as P,add as f,scale as w,dot as u,cross as C,transformMat4 as d}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as g}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{applyAll as x}from"../../camera/constraintUtils.js";import{ConstraintOptions as y}from"../../camera/constraintUtils/ConstraintOptions.js";import{getVoxelWasm as b}from"../../layers/VoxelWasm.js";import{TiltRange as j}from"../Constraints.js";import{InteractiveController as R}from"./InteractiveController.js";import{excludeTerrain as M,normalizeCoordinate as U,getTiltScaleFactor as V,maxRotatePivotDistanceModifier as D,minRotatePivotDistance as O,inferNavigationMode as T,rotatePivotSearchAreaSize as A}from"../utils/navigationUtils.js";let H=class extends R{get _intersectionHelper(){return this.view.sceneIntersectionHelper}constructor(t){super(t),this.pivot=0,this._rotScale=0,this._lastPoint=m(),this._tmpWorldUp=g(),this._tmpViewDir=g(),this._tmpRotCurPoint=m(),this._tmpTransf=h(),this._tmpAxis=g(),this._tmpPivotPoint=g(),this._pivotPos=g(),this._constraintOptions=new y(15,2,0,this.startCamera)}initialize(){this._rotScale=0===this.pivot?3:1.5}begin(t){if(this.running){switch(this.pivot){case 1:l(this._pivotPos,this.startCamera.eye),this._constraintOptions.interactionType=3,this._constraintOptions.tiltMode=1,this._constraintOptions.selection=0;break;case 0:{const i=this._intersectionHelper.intersectRayFreePointFallback(this.startCamera.ray,this._pivotPos,this.view.basemapTerrain.invisible?M:{})&&!c(this.startCamera.eye,this._pivotPos);i||l(this._pivotPos,this.startCamera.center),this._constrainPivotPoint(t,i),this.startCamera.center=this._pivotPos,this._constraintOptions.interactionType=2,this._constraintOptions.tiltMode=0,this._constraintOptions.selection=11;break}}U(this.startCamera,t,this._lastPoint)}}_constrainPivotPoint(t,i){const s=this.startCamera,e=g();_(e,this._pivotPos,s.eye);const o=v(e),a=Math.abs(this.view.camera.position.z);this.view.renderCoordsHelper.worldUpAtPosition(s.eye,F);let n=Math.max(V(F,s.viewForward,D)*a,O);i&&(n=Math.min(o,n));const h=r(s.width/s.pixelRatio*.5,s.height/s.pixelRatio*.5),p=T(this.startCamera,h,this.view.renderCoordsHelper,this.view.viewingMode);let m=this.view.stage.renderView.getMinimalDepthForArea(b(this.view),s.fullWidth/s.pixelRatio*.5,s.fullHeight/s.pixelRatio*.5,s,2.5*A,A),c=this.view.stage.renderView.getMinimalDepthForArea(b(this.view),t[0],t[1],s,A);null==m&&null==c||(m=m??c??0,c=null==c||1===p?m:c,n=m>c?c:m,n=i?Math.min(n,o):n),P(e,e),l(this._pivotPos,f(this._tmpPivotPoint,s.eye,w(this._tmpPivotPoint,e,n)))}update(t){if(this.running){switch(this.pivot){case 1:this.currentCamera.center=this._applyRotation(this.currentCamera,t,this.currentCamera.center,this._pivotPos);break;case 0:this.currentCamera.center=this._pivotPos,this.currentCamera.eye=this._applyRotation(this.currentCamera,t,this.currentCamera.eye,this._pivotPos)}x(this.view,this.currentCamera,this._constraintOptions),this.commitCamera()}}end(){this.running&&this.finishController()}_applyRotation(t,r,e,o){this.view.renderCoordsHelper.worldUpAtPosition(o,this._tmpWorldUp),U(t,r,this._tmpRotCurPoint);let h=(this._lastPoint[1]-this._tmpRotCurPoint[1])*this._rotScale,m=(this._tmpRotCurPoint[0]-this._lastPoint[0])*this._rotScale;_(this._tmpViewDir,e,o);const c=v(this._tmpViewDir),l=i(u(this._tmpViewDir,this._tmpWorldUp)/c);if(1===this.pivot){h*=-.5;const t=.5*Math.PI-l,i=.5*Math.PI*.99;h=t-Math.max(-i,Math.min(i,t+h))}return h=s(h+l,j.min,j.max)-l,C(this._tmpAxis,t.up,this._tmpViewDir),0===this.pivot&&(m=-m),a(this._tmpTransf,m,this._tmpWorldUp),n(this._tmpTransf,this._tmpTransf,h,this._tmpAxis),d(this._tmpViewDir,this._tmpViewDir,this._tmpTransf),t.up=d(W,t.up,this._tmpTransf),f(W,o,this._tmpViewDir),p(this._lastPoint,this._tmpRotCurPoint),W}};t([e()],H.prototype,"pivot",void 0),H=t([o("esri.views.3d.state.controllers.RotateController")],H);const W=g(),F=g();export{H as RotateController};
2
+ import{__decorate as t}from"tslib";import{acosClamped as i,clamp as s}from"../../../../core/mathUtils.js";import{createScreenPointArray as r}from"../../../../core/screenUtils.js";import{property as e,subclass as o}from"../../../../core/accessorSupport/decorators.js";import{fromRotation as a,rotate as n}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as h}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{copy as p}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as m}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{exactEquals as c,copy as l,subtract as _,length as v,normalize as P,add as f,scale as w,dot as u,cross as C,transformMat4 as d}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as g}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{applyAll as x}from"../../camera/constraintUtils.js";import{ConstraintOptions as y}from"../../camera/constraintUtils/ConstraintOptions.js";import{getVoxelWasm as j}from"../../layers/VoxelWasm.js";import{TiltRange as b}from"../Constraints.js";import{InteractiveController as R}from"./InteractiveController.js";import{excludeTerrain as M,normalizeCoordinate as V,getTiltScaleFactor as U,maxRotatePivotDistanceModifier as D,minRotatePivotDistance as O,inferNavigationMode as T,rotatePivotSearchAreaSize as A}from"../utils/navigationUtils.js";let H=class extends R{get _intersectionHelper(){return this.view.sceneIntersectionHelper}constructor(t){super(t),this.pivot=0,this._rotScale=0,this._lastPoint=m(),this._tmpWorldUp=g(),this._tmpViewDir=g(),this._tmpRotCurPoint=m(),this._tmpTransf=h(),this._tmpAxis=g(),this._tmpPivotPoint=g(),this._pivotPos=g(),this._constraintOptions=new y(15,2,0,this.startCamera)}initialize(){this._rotScale=0===this.pivot?3:1.5}begin(t){if(this.running){switch(this.pivot){case 1:l(this._pivotPos,this.startCamera.eye),this._constraintOptions.interactionType=3,this._constraintOptions.tiltMode=1,this._constraintOptions.selection=0;break;case 0:{const i=this._intersectionHelper.intersectRayFreePointFallback(this.startCamera.ray,this._pivotPos,this.view.groundView.invisible?M:{})&&!c(this.startCamera.eye,this._pivotPos);i||l(this._pivotPos,this.startCamera.center),this._constrainPivotPoint(t,i),this.startCamera.center=this._pivotPos,this._constraintOptions.interactionType=2,this._constraintOptions.tiltMode=0,this._constraintOptions.selection=11;break}}V(this.startCamera,t,this._lastPoint)}}_constrainPivotPoint(t,i){const s=this.startCamera,e=g();_(e,this._pivotPos,s.eye);const o=v(e),a=Math.abs(this.view.camera.position.z);this.view.renderCoordsHelper.worldUpAtPosition(s.eye,F);let n=Math.max(U(F,s.viewForward,D)*a,O);i&&(n=Math.min(o,n));const h=r(s.width/s.pixelRatio*.5,s.height/s.pixelRatio*.5),p=T(this.startCamera,h,this.view.renderCoordsHelper,this.view.viewingMode);let m=this.view.stage.renderView.getMinimalDepthForArea(j(this.view),s.fullWidth/s.pixelRatio*.5,s.fullHeight/s.pixelRatio*.5,s,2.5*A,A),c=this.view.stage.renderView.getMinimalDepthForArea(j(this.view),t[0],t[1],s,A);null==m&&null==c||(m=m??c??0,c=null==c||1===p?m:c,n=m>c?c:m,n=i?Math.min(n,o):n),P(e,e),l(this._pivotPos,f(this._tmpPivotPoint,s.eye,w(this._tmpPivotPoint,e,n)))}update(t){if(this.running){switch(this.pivot){case 1:this.currentCamera.center=this._applyRotation(this.currentCamera,t,this.currentCamera.center,this._pivotPos);break;case 0:this.currentCamera.center=this._pivotPos,this.currentCamera.eye=this._applyRotation(this.currentCamera,t,this.currentCamera.eye,this._pivotPos)}x(this.view,this.currentCamera,this._constraintOptions),this.commitCamera()}}end(){this.running&&this.finishController()}_applyRotation(t,r,e,o){this.view.renderCoordsHelper.worldUpAtPosition(o,this._tmpWorldUp),V(t,r,this._tmpRotCurPoint);let h=(this._lastPoint[1]-this._tmpRotCurPoint[1])*this._rotScale,m=(this._tmpRotCurPoint[0]-this._lastPoint[0])*this._rotScale;_(this._tmpViewDir,e,o);const c=v(this._tmpViewDir),l=i(u(this._tmpViewDir,this._tmpWorldUp)/c);if(1===this.pivot){h*=-.5;const t=.5*Math.PI-l,i=.5*Math.PI*.99;h=t-Math.max(-i,Math.min(i,t+h))}return h=s(h+l,b.min,b.max)-l,C(this._tmpAxis,t.up,this._tmpViewDir),0===this.pivot&&(m=-m),a(this._tmpTransf,m,this._tmpWorldUp),n(this._tmpTransf,this._tmpTransf,h,this._tmpAxis),d(this._tmpViewDir,this._tmpViewDir,this._tmpTransf),t.up=d(W,t.up,this._tmpTransf),f(W,o,this._tmpViewDir),p(this._lastPoint,this._tmpRotCurPoint),W}};t([e()],H.prototype,"pivot",void 0),H=t([o("esri.views.3d.state.controllers.RotateController")],H);const W=g(),F=g();export{H as RotateController};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{clamp as i}from"../../../../core/mathUtils.js";import{createScreenPointArray as r}from"../../../../core/screenUtils.js";import{subclass as e}from"../../../../core/accessorSupport/decorators.js";import{copy as s,distance as n}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as a}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{normalize as o,subtract as h,length as c,scale as m,add as p}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as l}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getReferenceEllipsoid as _}from"../../../../geometry/ellipsoidUtils.js";import{create as u,fromPoints as P}from"../../../../geometry/support/axisAngle.js";import{Sphere as y}from"../../../../geometry/support/sphere.js";import{pixelDistanceToInteractionFactor as C,applyAll as g}from"../../camera/constraintUtils.js";import{ConstraintOptions as d}from"../../camera/constraintUtils/ConstraintOptions.js";import{applySurfaceCollisionConstraint as f}from"../../camera/constraintUtils/surfaceCollision.js";import{InteractiveController as v}from"./InteractiveController.js";import{normalizeCoordinate as R,pickPointAndInitSphere as w,excludeTerrain as D,inferNavigationMode as k,zoomPivotDistanceClamp as j,getTiltScaleFactor as A,pivotSearchAreaSize as b,distanceComparisonTolerance as x,sphereOrPlanePointFromScreenPoint as M,applyRotation as O,maxZoomPivotDistanceModifier as U}from"../utils/navigationUtils.js";import{fromScreenAtEye as z}from"../../support/geometryUtils/ray.js";const H=12;let B=class extends v{constructor(){super(...arguments),this._pickPoint=l(),this._tmpP0=a(),this._panAxisAngle=u(),this._tmpRayDir=l(),this._tmpRayDirPick=l(),this._targetOnSphere=l(),this._navigationMode=1,this._tmpRay={origin:l(),direction:l()},this.dragBeginPoint=r(),this._normalizedAnchorPoint=a(),this._constraintOptions=new d(7,1,0,this.startCamera),this._sphere=new y,this._hasPickPoint=!1}get _intersectionHelper(){return this.view.sceneIntersectionHelper}begin(t){if(!this.running)return;s(this.dragBeginPoint,t),R(this.startCamera,t,this._normalizedAnchorPoint);const r=_(this.view.spatialReference),e=w(this._intersectionHelper,this.startCamera,t,r.radius,0,this.view.basemapTerrain.invisible?D:{});if(this._navigationMode=k(this.startCamera,t,this.view.renderCoordsHelper,this.view.viewingMode),1===this._navigationMode)this._hasPickPoint=!!e.scenePickPoint,this._pickPoint=e.scenePickPoint??this._pickPoint,this._sphere=e.sphere;else{let r;z(this.startCamera,t,this._tmpRay),o(this._tmpRay.direction,this._tmpRay.direction),null!=e.scenePickPoint&&(h(this._tmpRayDirPick,this.startCamera.eye,e.scenePickPoint),r=c(this._tmpRayDirPick));const s=Math.abs(this.view.camera.position.z);this.view.renderCoordsHelper.worldUpAtPosition(this.startCamera.eye,F);const n=i(A(F,this._tmpRay.direction,U)*s,j[0],j[1]),a=this.view.stage.renderView.getMinimalDepthForArea(null,t[0],t[1],this.view.state.camera,b);let l=null!=a?a:n;null!=r&&(l=Math.min(l,r)),this._hasPickPoint=!0,m(this._tmpRay.direction,this._tmpRay.direction,l),p(this._pickPoint,this._tmpRay.origin,this._tmpRay.direction)}}update(t){if(this.running){if(this.currentCamera.eye=this.startCamera.eye,this.currentCamera.center=this.startCamera.center,this.currentCamera.up=this.startCamera.up,1===this._navigationMode){h(this._tmpRayDir,this.currentCamera.center,this.currentCamera.eye);const i=c(this._tmpRayDir);R(this.currentCamera,t,this._tmpP0);const r=(this._normalizedAnchorPoint[1]-this._tmpP0[1])*H;let e=i*2**r;const s=this.view.state.constraints.minimumPoiDistance;if(r<0&&e<s&&(e=s),Math.abs(i-e)<x)return;if(this._hasPickPoint&&e<i){const t=1-(1-e/i)*(1-this._sphere.radius/c(this.currentCamera.center));this.currentCamera.center=m(S,this.currentCamera.center,t)}m(this._tmpRayDir,this._tmpRayDir,-e/i),this.currentCamera.eye=p(S,this.currentCamera.center,this._tmpRayDir),this._constraintOptions.interactionFactor=C(n(this.dragBeginPoint,t)),g(this.view,this.currentCamera,this._constraintOptions),this._hasPickPoint&&(M(this._sphere,this.currentCamera,this.dragBeginPoint,this._targetOnSphere),P(this._pickPoint,this._targetOnSphere,this._panAxisAngle),O(this.currentCamera,this._sphere.center,this._panAxisAngle))}else{const i=c(this._tmpRay.direction);R(this.currentCamera,t,this._tmpP0);const r=(this._normalizedAnchorPoint[1]-this._tmpP0[1])*H;let e=i*2**r;const s=this.view.state.constraints.minimumPoiDistance;if(r<0&&e<s&&(e=s),Math.abs(i-e)<x)return;m(this._tmpRayDir,this._tmpRay.direction,1-e/i),this.currentCamera.eye=p(S,this.currentCamera.eye,this._tmpRayDir),this.currentCamera.center=p(S,this.currentCamera.center,this._tmpRayDir),o(this._tmpRayDir,this._tmpRayDir),this._constraintOptions.interactionDirection=this._tmpRayDir,g(this.view,this.currentCamera,this._constraintOptions),this._constraintOptions.interactionDirection=null}f(this.view,null,this.currentCamera),this.commitCamera()}}finish(){this.running&&this.finishController()}};B=t([e("esri.views.3d.state.controllers.ZoomControllerGlobal")],B);const S=l(),F=l();export{B as ZoomControllerGlobal};
2
+ import{__decorate as t}from"tslib";import{clamp as i}from"../../../../core/mathUtils.js";import{createScreenPointArray as r}from"../../../../core/screenUtils.js";import{subclass as e}from"../../../../core/accessorSupport/decorators.js";import{copy as s,distance as n}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as a}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{normalize as o,subtract as h,length as c,scale as m,add as p}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as l}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getReferenceEllipsoid as _}from"../../../../geometry/ellipsoidUtils.js";import{create as u,fromPoints as P}from"../../../../geometry/support/axisAngle.js";import{Sphere as g}from"../../../../geometry/support/sphere.js";import{pixelDistanceToInteractionFactor as y,applyAll as C}from"../../camera/constraintUtils.js";import{ConstraintOptions as d}from"../../camera/constraintUtils/ConstraintOptions.js";import{applySurfaceCollisionConstraint as f}from"../../camera/constraintUtils/surfaceCollision.js";import{InteractiveController as v}from"./InteractiveController.js";import{normalizeCoordinate as R,pickPointAndInitSphere as w,excludeTerrain as D,inferNavigationMode as k,zoomPivotDistanceClamp as j,getTiltScaleFactor as A,pivotSearchAreaSize as b,distanceComparisonTolerance as x,sphereOrPlanePointFromScreenPoint as M,applyRotation as O,maxZoomPivotDistanceModifier as U}from"../utils/navigationUtils.js";import{fromScreenAtEye as z}from"../../support/geometryUtils/ray.js";const H=12;let B=class extends v{constructor(){super(...arguments),this._pickPoint=l(),this._tmpP0=a(),this._panAxisAngle=u(),this._tmpRayDir=l(),this._tmpRayDirPick=l(),this._targetOnSphere=l(),this._navigationMode=1,this._tmpRay={origin:l(),direction:l()},this.dragBeginPoint=r(),this._normalizedAnchorPoint=a(),this._constraintOptions=new d(7,1,0,this.startCamera),this._sphere=new g,this._hasPickPoint=!1}get _intersectionHelper(){return this.view.sceneIntersectionHelper}begin(t){if(!this.running)return;s(this.dragBeginPoint,t),R(this.startCamera,t,this._normalizedAnchorPoint);const r=_(this.view.spatialReference),e=w(this._intersectionHelper,this.startCamera,t,r.radius,0,this.view.groundView.invisible?D:{});if(this._navigationMode=k(this.startCamera,t,this.view.renderCoordsHelper,this.view.viewingMode),1===this._navigationMode)this._hasPickPoint=!!e.scenePickPoint,this._pickPoint=e.scenePickPoint??this._pickPoint,this._sphere=e.sphere;else{let r;z(this.startCamera,t,this._tmpRay),o(this._tmpRay.direction,this._tmpRay.direction),null!=e.scenePickPoint&&(h(this._tmpRayDirPick,this.startCamera.eye,e.scenePickPoint),r=c(this._tmpRayDirPick));const s=Math.abs(this.view.camera.position.z);this.view.renderCoordsHelper.worldUpAtPosition(this.startCamera.eye,F);const n=i(A(F,this._tmpRay.direction,U)*s,j[0],j[1]),a=this.view.stage.renderView.getMinimalDepthForArea(null,t[0],t[1],this.view.state.camera,b);let l=null!=a?a:n;null!=r&&(l=Math.min(l,r)),this._hasPickPoint=!0,m(this._tmpRay.direction,this._tmpRay.direction,l),p(this._pickPoint,this._tmpRay.origin,this._tmpRay.direction)}}update(t){if(this.running){if(this.currentCamera.eye=this.startCamera.eye,this.currentCamera.center=this.startCamera.center,this.currentCamera.up=this.startCamera.up,1===this._navigationMode){h(this._tmpRayDir,this.currentCamera.center,this.currentCamera.eye);const i=c(this._tmpRayDir);R(this.currentCamera,t,this._tmpP0);const r=(this._normalizedAnchorPoint[1]-this._tmpP0[1])*H;let e=i*2**r;const s=this.view.state.constraints.minimumPoiDistance;if(r<0&&e<s&&(e=s),Math.abs(i-e)<x)return;if(this._hasPickPoint&&e<i){const t=1-(1-e/i)*(1-this._sphere.radius/c(this.currentCamera.center));this.currentCamera.center=m(S,this.currentCamera.center,t)}m(this._tmpRayDir,this._tmpRayDir,-e/i),this.currentCamera.eye=p(S,this.currentCamera.center,this._tmpRayDir),this._constraintOptions.interactionFactor=y(n(this.dragBeginPoint,t)),C(this.view,this.currentCamera,this._constraintOptions),this._hasPickPoint&&(M(this._sphere,this.currentCamera,this.dragBeginPoint,this._targetOnSphere),P(this._pickPoint,this._targetOnSphere,this._panAxisAngle),O(this.currentCamera,this._sphere.center,this._panAxisAngle))}else{const i=c(this._tmpRay.direction);R(this.currentCamera,t,this._tmpP0);const r=(this._normalizedAnchorPoint[1]-this._tmpP0[1])*H;let e=i*2**r;const s=this.view.state.constraints.minimumPoiDistance;if(r<0&&e<s&&(e=s),Math.abs(i-e)<x)return;m(this._tmpRayDir,this._tmpRay.direction,1-e/i),this.currentCamera.eye=p(S,this.currentCamera.eye,this._tmpRayDir),this.currentCamera.center=p(S,this.currentCamera.center,this._tmpRayDir),o(this._tmpRayDir,this._tmpRayDir),this._constraintOptions.interactionDirection=this._tmpRayDir,C(this.view,this.currentCamera,this._constraintOptions),this._constraintOptions.interactionDirection=null}f(this.view,null,this.currentCamera),this.commitCamera()}}finish(){this.running&&this.finishController()}};B=t([e("esri.views.3d.state.controllers.ZoomControllerGlobal")],B);const S=l(),F=l();export{B as ZoomControllerGlobal};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{clamp as i}from"../../../../core/mathUtils.js";import{createScreenPointArray as r}from"../../../../core/screenUtils.js";import{subclass as s}from"../../../../core/accessorSupport/decorators.js";import{copy as e,distance as n}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as a}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{subtract as o,length as m,normalize as h,scale as c,add as p,negate as _,copy as l,lerp as P}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as u,fromValues as C}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as f,fromPositionAndNormal as g}from"../../../../geometry/support/plane.js";import{pixelDistanceToInteractionFactor as D,applyAll as v}from"../../camera/constraintUtils.js";import{ConstraintOptions as y}from"../../camera/constraintUtils/ConstraintOptions.js";import{getVoxelWasm as d}from"../../layers/VoxelWasm.js";import{InteractiveController as j}from"./InteractiveController.js";import{normalizeCoordinate as b,excludeTerrain as w,zoomPivotDistanceClamp as x,getTiltScaleFactor as N,maxZoomPivotDistanceModifier as O,pivotSearchAreaSize as M,intersectPlaneFromScreenPoint as R,distanceComparisonTolerance as z}from"../utils/navigationUtils.js";let A=class extends j{constructor(){super(...arguments),this._tmpP=u(),this._tmpDir=u(),this._tmpN=u(),this._tmpP0=a(),this._tmpPoi=u(),this._tmpRayDir=u(),this.dragBeginPoint=r(),this._normalizedAnchorPoint=a(),this._constraintOptions=new y(15,1,0,this.startCamera,u()),this._plane=f()}get _intersectionHelper(){return this.view.sceneIntersectionHelper}begin(t){if(!this.running)return;e(this.dragBeginPoint,t),b(this.startCamera,t,this._normalizedAnchorPoint);const r=this._intersectionHelper.intersectScreenFreePointFallback(t,this._tmpP,this.view.basemapTerrain.invisible?w:{});o(this._tmpDir,this._tmpP,this.startCamera.eye);const s=m(this._tmpDir);h(this._tmpDir,this._tmpDir);const n=Math.abs(this.view.camera.position.z),a=i(N(B,this._tmpDir,O)*n,x[0],x[1]),l=this.view.stage.renderView.getMinimalDepthForArea(d(this.view),t[0],t[1],this.view.state.camera,M);let P=null!=l?l:a;r&&(P=Math.min(P,s)),c(this._tmpDir,this._tmpDir,P),p(this._tmpP,this.startCamera.eye,this._tmpDir),o(this._tmpN,this.startCamera.eye,this.startCamera.center),h(this._tmpN,this._tmpN),this._tmpN[1]<0&&_(this._tmpN,this._tmpN),g(this._tmpP,this._tmpN,this._plane)}update(t){if(!this.running)return;R(this._plane,this.currentCamera,this.dragBeginPoint,this._tmpPoi)||l(this._tmpPoi,this.currentCamera.center),b(this.currentCamera,t,this._tmpP0);let i=4*(this._tmpP0[1]-this._normalizedAnchorPoint[1]);e(this._normalizedAnchorPoint,this._tmpP0),o(this._tmpRayDir,this._tmpPoi,this.currentCamera.eye);const r=m(this._tmpRayDir);let s=r*(1-i);this._constraintOptions.interactionDirection&&(l(this._constraintOptions.interactionDirection,this._tmpRayDir),c(this._constraintOptions.interactionDirection,this._constraintOptions.interactionDirection,Math.sign(i)/r));const a=this.view.state.constraints.minimumPoiDistance;i>=0&&s<a&&(s=a,i=-(s-r)/r),Math.abs(r-s)<z||(c(this._tmpRayDir,this._tmpRayDir,i),this.currentCamera.eye=p(U,this.currentCamera.eye,this._tmpRayDir),P(U,this.currentCamera.center,this._tmpPoi,i),this._tmpPoi[2]>this.startCamera.center[2]?U[2]=Math.max(this.startCamera.center[2],U[2]):U[2]=Math.min(this.startCamera.center[2],U[2]),this.currentCamera.center=U,this._constraintOptions.interactionFactor=D(n(this.dragBeginPoint,t)),v(this.view,this.currentCamera,this._constraintOptions),this.commitCamera())}finish(){this.running&&this.finishController()}};A=t([s("esri.views.3d.state.controllers.ZoomControllerLocal")],A);const U=u(),B=C(0,0,1);export{A as ZoomControllerLocal};
2
+ import{__decorate as t}from"tslib";import{clamp as i}from"../../../../core/mathUtils.js";import{createScreenPointArray as r}from"../../../../core/screenUtils.js";import{subclass as s}from"../../../../core/accessorSupport/decorators.js";import{copy as e,distance as n}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as a}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{subtract as o,length as m,normalize as h,scale as c,add as p,negate as _,copy as l,lerp as P}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as u,fromValues as g}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as C,fromPositionAndNormal as f}from"../../../../geometry/support/plane.js";import{pixelDistanceToInteractionFactor as D,applyAll as v}from"../../camera/constraintUtils.js";import{ConstraintOptions as y}from"../../camera/constraintUtils/ConstraintOptions.js";import{getVoxelWasm as d}from"../../layers/VoxelWasm.js";import{InteractiveController as j}from"./InteractiveController.js";import{normalizeCoordinate as w,excludeTerrain as b,zoomPivotDistanceClamp as x,getTiltScaleFactor as N,maxZoomPivotDistanceModifier as O,pivotSearchAreaSize as M,intersectPlaneFromScreenPoint as R,distanceComparisonTolerance as z}from"../utils/navigationUtils.js";let A=class extends j{constructor(){super(...arguments),this._tmpP=u(),this._tmpDir=u(),this._tmpN=u(),this._tmpP0=a(),this._tmpPoi=u(),this._tmpRayDir=u(),this.dragBeginPoint=r(),this._normalizedAnchorPoint=a(),this._constraintOptions=new y(15,1,0,this.startCamera,u()),this._plane=C()}get _intersectionHelper(){return this.view.sceneIntersectionHelper}begin(t){if(!this.running)return;e(this.dragBeginPoint,t),w(this.startCamera,t,this._normalizedAnchorPoint);const r=this._intersectionHelper.intersectScreenFreePointFallback(t,this._tmpP,this.view.groundView.invisible?b:{});o(this._tmpDir,this._tmpP,this.startCamera.eye);const s=m(this._tmpDir);h(this._tmpDir,this._tmpDir);const n=Math.abs(this.view.camera.position.z),a=i(N(B,this._tmpDir,O)*n,x[0],x[1]),l=this.view.stage.renderView.getMinimalDepthForArea(d(this.view),t[0],t[1],this.view.state.camera,M);let P=null!=l?l:a;r&&(P=Math.min(P,s)),c(this._tmpDir,this._tmpDir,P),p(this._tmpP,this.startCamera.eye,this._tmpDir),o(this._tmpN,this.startCamera.eye,this.startCamera.center),h(this._tmpN,this._tmpN),this._tmpN[1]<0&&_(this._tmpN,this._tmpN),f(this._tmpP,this._tmpN,this._plane)}update(t){if(!this.running)return;R(this._plane,this.currentCamera,this.dragBeginPoint,this._tmpPoi)||l(this._tmpPoi,this.currentCamera.center),w(this.currentCamera,t,this._tmpP0);let i=4*(this._tmpP0[1]-this._normalizedAnchorPoint[1]);e(this._normalizedAnchorPoint,this._tmpP0),o(this._tmpRayDir,this._tmpPoi,this.currentCamera.eye);const r=m(this._tmpRayDir);let s=r*(1-i);this._constraintOptions.interactionDirection&&(l(this._constraintOptions.interactionDirection,this._tmpRayDir),c(this._constraintOptions.interactionDirection,this._constraintOptions.interactionDirection,Math.sign(i)/r));const a=this.view.state.constraints.minimumPoiDistance;i>=0&&s<a&&(s=a,i=-(s-r)/r),Math.abs(r-s)<z||(c(this._tmpRayDir,this._tmpRayDir,i),this.currentCamera.eye=p(U,this.currentCamera.eye,this._tmpRayDir),P(U,this.currentCamera.center,this._tmpPoi,i),this._tmpPoi[2]>this.startCamera.center[2]?U[2]=Math.max(this.startCamera.center[2],U[2]):U[2]=Math.min(this.startCamera.center[2],U[2]),this.currentCamera.center=U,this._constraintOptions.interactionFactor=D(n(this.dragBeginPoint,t)),v(this.view,this.currentCamera,this._constraintOptions),this.commitCamera())}finish(){this.running&&this.finishController()}};A=t([s("esri.views.3d.state.controllers.ZoomControllerLocal")],A);const U=u(),B=g(0,0,1);export{A as ZoomControllerLocal};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{clamp as i}from"../../../../core/mathUtils.js";import{Milliseconds as e}from"../../../../core/time.js";import{subclass as r}from"../../../../core/accessorSupport/decorators.js";import{copy as s,subtract as a,normalize as o,length as n,add as m,scale as c,squaredDistance as h,lerp as p}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as _,fromValues as l}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{applyAll as C}from"../../camera/constraintUtils.js";import{ConstraintOptions as g}from"../../camera/constraintUtils/ConstraintOptions.js";import{getVoxelWasm as f}from"../../layers/VoxelWasm.js";import{PointToPointAnimationController as w}from"./PointToPointAnimationController.js";import{excludeTerrain as y,zoomStepDistanceClamp as b,getTiltScaleFactor as v,maxZoomStepDistanceModifier as d,distanceComparisonTolerance as j}from"../utils/navigationUtils.js";import u from"../../webgl/RenderCamera.js";import{Intersector as z}from"../../webgl-engine/lib/Intersector.js";import{outExpo as L}from"../../../animation/easing.js";const R=.6,D=4,x=60;let F=class extends w{constructor(){super(...arguments),this._zoomLocation=_(),this._tmpCamera=new u,this._tmpRayDir=_(),this._tmpCenter=_(),this._beginCamera=new u,this._constraintOptions=new g(15,1,null,this._beginCamera)}initialize(){this._intersector=new z(this.view.state.viewingMode)}step(t,e){if(!this.running)return;const r=this.view.state;this.animation.finished?this._beginCamera.copyFrom(r.camera):this.animation.cameraAt(1,this._beginCamera),this._tmpCamera.copyFrom(r.camera);let h=!1;t>0?(h=this._intersectionHelper.intersectScreenFreePointFallback(e,this._zoomLocation,this.view.basemapTerrain.invisible?y:{}),this._intersectsValidTarget(this._tmpCamera,this._tmpCenter)&&(this._tmpCamera.center=this._tmpCenter)):this._intersectsValidTarget(this._tmpCamera,this._zoomLocation)?this._tmpCamera.center=this._zoomLocation:s(this._zoomLocation,this._tmpCamera.center);const p=R**t;let l=this.view.stage.renderView.getMinimalDepthForArea(f(this.view),e[0],e[1],this.view.state.camera,x);a(V,this._tmpCamera.eye,this._zoomLocation),o(V,V);const C=Math.abs(this.view.camera.position.z),g=i(v(T,V,d)*C,b[0],b[1]);l=null!=l?l:g;const w=_();a(w,this._zoomLocation,this._tmpCamera.eye),(l<n(w)||!h)&&(o(w,w),m(this._zoomLocation,this._tmpCamera.eye,c(w,w,l))),this._updateCamera(this._tmpCamera,p,this._zoomLocation),this.begin(this._tmpCamera)}_intersectsValidTarget(t,i){return!!this._intersectionHelper.intersectRay(t.ray,this._intersector,i)&&h(t.eye,i)>=D*D}animationSettings(){return{duration:e(600),easing:L}}_updateCamera(t,i,e){a(this._tmpRayDir,e,t.eye);const r=n(this._tmpRayDir);let s=r*i;const o=i<=1,m=Math.max(D,1.01*t.nearFar[0]);0!==s&&(o&&s<m&&(s=m,i=s/r),Math.abs(r-s)<j||(c(this._tmpRayDir,this._tmpRayDir,i),t.eye=a(M,e,this._tmpRayDir),t.center=p(M,t.center,e,1-i),C(this.view,t,this._constraintOptions)))}};F=t([r("esri.views.3d.state.controllers.ZoomStepControllerLocal")],F);const M=_(),T=l(0,0,1),V=_();export{F as ZoomStepControllerLocal};
2
+ import{__decorate as t}from"tslib";import{clamp as i}from"../../../../core/mathUtils.js";import{Milliseconds as e}from"../../../../core/time.js";import{subclass as r}from"../../../../core/accessorSupport/decorators.js";import{copy as s,subtract as o,normalize as a,length as n,add as m,scale as c,squaredDistance as h,lerp as p}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as _,fromValues as l}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{applyAll as C}from"../../camera/constraintUtils.js";import{ConstraintOptions as g}from"../../camera/constraintUtils/ConstraintOptions.js";import{getVoxelWasm as f}from"../../layers/VoxelWasm.js";import{PointToPointAnimationController as w}from"./PointToPointAnimationController.js";import{excludeTerrain as y,zoomStepDistanceClamp as b,getTiltScaleFactor as d,maxZoomStepDistanceModifier as u,distanceComparisonTolerance as v}from"../utils/navigationUtils.js";import j from"../../webgl/RenderCamera.js";import{Intersector as z}from"../../webgl-engine/lib/Intersector.js";import{outExpo as L}from"../../../animation/easing.js";const R=.6,D=4,x=60;let F=class extends w{constructor(){super(...arguments),this._zoomLocation=_(),this._tmpCamera=new j,this._tmpRayDir=_(),this._tmpCenter=_(),this._beginCamera=new j,this._constraintOptions=new g(15,1,null,this._beginCamera)}initialize(){this._intersector=new z(this.view.state.viewingMode)}step(t,e){if(!this.running)return;const r=this.view.state;this.animation.finished?this._beginCamera.copyFrom(r.camera):this.animation.cameraAt(1,this._beginCamera),this._tmpCamera.copyFrom(r.camera);let h=!1;t>0?(h=this._intersectionHelper.intersectScreenFreePointFallback(e,this._zoomLocation,this.view.groundView.invisible?y:{}),this._intersectsValidTarget(this._tmpCamera,this._tmpCenter)&&(this._tmpCamera.center=this._tmpCenter)):this._intersectsValidTarget(this._tmpCamera,this._zoomLocation)?this._tmpCamera.center=this._zoomLocation:s(this._zoomLocation,this._tmpCamera.center);const p=R**t;let l=this.view.stage.renderView.getMinimalDepthForArea(f(this.view),e[0],e[1],this.view.state.camera,x);o(S,this._tmpCamera.eye,this._zoomLocation),a(S,S);const C=Math.abs(this.view.camera.position.z),g=i(d(M,S,u)*C,b[0],b[1]);l=null!=l?l:g;const w=_();o(w,this._zoomLocation,this._tmpCamera.eye),(l<n(w)||!h)&&(a(w,w),m(this._zoomLocation,this._tmpCamera.eye,c(w,w,l))),this._updateCamera(this._tmpCamera,p,this._zoomLocation),this.begin(this._tmpCamera)}_intersectsValidTarget(t,i){return!!this._intersectionHelper.intersectRay(t.ray,this._intersector,i)&&h(t.eye,i)>=D*D}animationSettings(){return{duration:e(600),easing:L}}_updateCamera(t,i,e){o(this._tmpRayDir,e,t.eye);const r=n(this._tmpRayDir);let s=r*i;const a=i<=1,m=Math.max(D,1.01*t.nearFar[0]);0!==s&&(a&&s<m&&(s=m,i=s/r),Math.abs(r-s)<v||(c(this._tmpRayDir,this._tmpRayDir,i),t.eye=o(V,e,this._tmpRayDir),t.center=p(V,t.center,e,1-i),C(this.view,t,this._constraintOptions)))}};F=t([r("esri.views.3d.state.controllers.ZoomStepControllerLocal")],F);const V=_(),M=l(0,0,1),S=_();export{F as ZoomStepControllerLocal};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{lerp as e}from"../../../../core/mathUtils.js";import t from"../../../../core/PooledArray.js";import{castRenderScreenPointArray3 as r,createRenderScreenPointArray3 as n,createScreenPointArray as i}from"../../../../core/screenUtils.js";import{getMetersPerVerticalUnitForSR as s}from"../../../../core/units.js";import{set as o}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{fromValues as l}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{add as c,normalize as a,dot as u,distance as d}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as y,clone as h}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as p,copy as g,negativeInfinity as m,expandWithNestedArray as f}from"../../../../geometry/support/aaBoundingRect.js";import{createSpatialReferenceCyclical as _}from"../../../../geometry/support/normalizeUtils.js";import{create as P}from"../../../../geometry/support/ray.js";import{sv3d as w}from"../../../../geometry/support/vectorStacks.js";import{getElevationOffsetInMeters as R}from"../../../../support/elevationInfoUtils.js";import{g as v}from"../../../../chunks/cameraUtilsSpherical.js";import{computeMapPointFromVec3d as I}from"../../support/hitTest.js";import{fromRenderAtEye as b,fromScreen as S}from"../../support/geometryUtils/ray.js";import{defaultTolerance as U,Intersector as j,defaultScreenPolygonPrimitiveProcessor as H}from"../../webgl-engine/lib/Intersector.js";import{RayIntersectionQuery as L,DrapedScreenPolygonIntersectionQuery as F}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{isValidIntersectorResult as V}from"../../webgl-engine/lib/IntersectorResult.js";import{SliceScreenPolygonPrimitiveProcessor as T,createSliceExtrusionHalfspacePlanes as x,clipPolygonAgainstSlicedAwayHalfspaces as M,sliceFilterPredicate as k}from"../../webgl-engine/lib/intersectorUtils.js";import{prepareScreenPolygonIntersectionQuery as D}from"../../webgl-engine/lib/screenPolygonIntersectionUtils.js";import{TaskPriority as E}from"../../../support/Scheduler.js";class C{constructor(e,r,n){this.viewingMode=e,this._forEachLayer=r,this._view=n,this._externalIntersectionHandlers=new t,this._tolerance=U,this._tmpRay=P(),this._tmpRegion=p(),this._validateHUDIntersector=new j(this.viewingMode),this._validateHUDIntersector.options.hud=!1,this._screenPolygonIntersectionTask=this._view.resourceController.scheduler.registerTask(E.SCREEN_POLYGON_INTERSECTION)}destroy(){this._screenPolygonIntersectionTask.remove(),this._externalIntersectionHandlers.prune()}get screenPolygonIntersectionTask(){return this._screenPolygonIntersectionTask}intersectScreen(e,t,r){return this.intersectRay(this._getPickRay(e,this._tmpRay),N(this.viewingMode),t,r)}intersectScreenFreePointFallback(e,t,r){return this.intersectRayFreePointFallback(this._getPickRay(e,this._tmpRay),t,r)}intersectRayFreePointFallback(e,t,r){return this.intersectRay(e,N(this.viewingMode),t,r)||this._intersectRayFreePointLocal(e,t)}intersectRay(e,t,r,n){return t.options.selectionMode=!1,t.options.store=0,this.computeIntersection(e,t,!1,n),!!t.results.min&&t.results.min.getIntersectionPoint(r)}getCenterRayWithSubpixelOffset(e,t,r=.5,n=.5){return e.getRenderCenter(X,r,n),X[0]+=.0466,X[1]-=.0123,b(e,X,t)}intersectIntersectorScreen(e,t,r){this.computeIntersection(this._getPickRay(e,this._tmpRay),t,!1,r)}async intersectIntersectorScreenPolygon(e,t,r){t.polygonResults.init();const n=this._view.state.camera,i=await D(n,e);null!=i&&await this._screenPolygonIntersectionTask.scheduleGenerator(e=>this._intersectIntersectorScreenPolygon(n,t,i,r,e))}*_intersectIntersectorScreenPolygon(e,t,r,n,i){const s=new Q(n,this._forEachLayer);t.options.selectOpaqueTerrainOnly=!n||!("include"in n||"exclude"in n),t.camera=e,t.point=null,t.screenPolygonPrimitiveProcessor=H,yield*t.intersectScreenPolygon(s.layers,r);const o=this._view.slice.plane,l=o?new T(o):null;t.screenPolygonPrimitiveProcessor=l??H,yield*t.intersectScreenPolygon(s.sliceableLayers,r),t.screenPolygonPrimitiveProcessor=H,yield*this._intersectPolygonHandlersGenerator(t,s,r,null,l,void 0,!0,i),yield*this._intersectDrapedScreenPolygon(t,s,r,n),yield*t.intersectHUDScreenPolygon(s.layers,r),t.screenPolygonPrimitiveProcessor=l??H,yield*t.intersectHUDScreenPolygon(s.sliceableLayers,r),t.polygonResults.sortResults()}intersectToolIntersectorScreen(e,t,r){const n=this._getPickRay(e,this._tmpRay);this.intersectToolIntersectorRay(n,t,r)}intersectToolIntersectorRay(e,t,r){t.options.selectionMode=!0,this.computeIntersection(e,t,!1,r);const n=t.results.min;!!this._view.basemapTerrain&&this._view.basemapTerrain.opaque||V(n)&&7!==n.intersector||(t.options.selectionMode=!1,this.computeIntersection(e,t,!1,r))}setTolerance(e=U){this._tolerance=e}addIntersectionHandler(e){this._externalIntersectionHandlers.push(e),this._externalIntersectionHandlers.sort((e,t)=>7===e.type?1:7===t.type?-1:0)}removeIntersectionHandler(e){null!=this._externalIntersectionHandlers.removeUnordered(e)&&this._externalIntersectionHandlers.sort((e,t)=>7===e.type?1:7===t.type?-1:0)}_getPickRay(e,t){const r=this._view.state.camera;return S(r,e,t)}_intersectRayFreePointLocal(e,t){return 2!==this.viewingMode||null==e||c(t,e.origin,a(w.get(),e.direction)),!1}intersectElevationFromScreen(e,t,r=0,n=null){return this._intersectElevation(this._getPickRay(e,this._tmpRay),t,r,n)}_intersectElevation(e,t,n=0,i=null){if(null==e)return null;const o=this._view,{renderCoordsHelper:l}=o,c=s(o.spatialReference),d=null!=t?t.mode:"absolute-height",y=R(t)/c,h=("on-the-ground"===d?0:y+n)*c/l.unitInMeters,{camera:p}=o.state;if("absolute-height"===d){const t=l?.getAltitude(p.eye),r=u(a(B,e.direction),l.worldUpAtPosition(p.eye,Y));if(t<h&&r<0||t>=h&&r>0)return null;if(l.intersectInfiniteManifold(e,h,B)){const e=I(o,B);return e.z??=0,e.z-=y,e}return null}const g=p.projectToRenderScreen(e.origin,r(w.get())),m=new Q(null,this._forEachLayer),f=o.slice.plane,_=f?k(f):null,P=new j(this.viewingMode);P.options.store=0,P.options.verticalOffset=h,P.options.normalRequired=!1;const v=this._createRayIntersectionQuery(e,g,!1);P.reset(v.beginPoint,v.endPoint,p),P.point=g;let b=null;if(i&&"type"in i&&"graphics"===i.type){const e=o.allLayerViews.find(e=>e.layer===i)?.uid;b=e?t=>t.layerViewUid===e:null}else i&&(b=e=>e.graphicUid!==i.uid);switch(d){case"relative-to-scene":{const e=e=>(!b||b(e))&&!!e.lastValidElevationBB;P.intersect(m.layers,v.screenPoint,this._tolerance,null,e),this._intersectRayHandlers(P,m,v,_,!1,e=>2===e.type||7===e.type||8===e.type,!1);break}case"on-the-ground":case"relative-to-ground":this._intersectRayHandlers(P,m,v,_,!1,e=>e.isGround,!1)}if(P.results.min.getIntersectionPoint(B)){const e=I(o,B);return e.z=n,e}return null}computeIntersection(e,t,n,i){if(null==e)return;const s=this._view.state.camera,o=s.projectToRenderScreen(e.origin,r(w.get())),l=new Q(i,this._forEachLayer);t.options.selectOpaqueTerrainOnly=!i||!("include"in i||"exclude"in i);const c=this._createRayIntersectionQuery(e,o,n);t.reset(c.beginPoint,c.endPoint,s),t.intersect(l.layers,c.screenPoint,this._tolerance);const a=this._view.slice.plane,u=a?k(a):null;t.intersect(l.sliceableLayers,c.screenPoint,this._tolerance,u);const d=i&&(i.requiresGroundFeedback||i.enableDraped);this._intersectRayHandlers(t,l,c,u,!!d);const y=w.get(),h=this._view,p=h.groundView.spatialReference;if(i&&i.enableDraped&&null!=p&&t.results.ground.getIntersectionPoint(y)){const e=h.overlayManager.renderer,r=h.renderCoordsHelper.spatialReference,n=w.get();h.renderCoordsHelper.fromRenderCoords(y,n,p),n[2]=h.elevationProvider?.getElevation(y[0],y[1],y[2],r,"ground")??0,e.intersectRay(t,n,t.results.ground,e=>l.filterRenderGeometry(e))}t.sortResults(),this._processHUDResults(t)}_processHUDResults(e){const t=e.results.hud;g(this._tmpRegion,m);const r=new Array,n=this._tmpRegion,i=e=>{r.push(new O(e))};e.sortResults(t.all),null!=t.min.distance&&i(t.min);for(const c of t.all)t.min.target.object!==c.target.object&&t.max.target.object!==c.target.object&&i(c);if(null!=t.max.distance&&t.max.target.object!==t.min.target.object&&i(t.max),!r.length)return;n[0]===n[2]&&(n[2]+=1),n[1]===n[3]&&(n[3]+=1);let s=!0;const o=null==e.results.max.distance;let l=0;for(const c of r)s&&(e.results.min.copy(c.result),s=!1),o&&e.results.max.copy(c.result),2===e.options.store&&e.results.all.splice(l++,0,c.result)}_createRayIntersectionQuery(e,t,r){return new L(e.origin,c(y(),e.origin,e.direction),t,r)}_intersectRayHandlers(e,t,r,n,i,s=()=>!0,o=!0){const{options:l}=e,c=l.isFiltered,a=l.filteredLayerViewUids;for(const{handler:u,filterPredicate:d,isFiltered:y,filteredLayerViewUids:h}of this._getFilteredIntersectionHandlers(t,n,null,s,o))(!y||u.isGround&&i)&&(l.isFiltered=y,l.filteredLayerViewUids=h,u.intersectRay(e,d,e.rayBegin,e.rayEnd,r.screenPoint,r.isVerticalRay));l.isFiltered=c,l.filteredLayerViewUids=a}*_intersectPolygonHandlersGenerator(e,t,r,n,i,s=()=>!0,o=!0,l){const{options:c}=e,a=c.isFiltered,u=c.filteredLayerViewUids,d=e.screenPolygonPrimitiveProcessor;for(const{handler:y,screenPolygonPrimitiveProcessor:h,isFiltered:p,filteredLayerViewUids:g}of this._getFilteredIntersectionHandlers(t,n,i,s,o))p||null==y.intersectScreenPolygon||(c.isFiltered=p,c.filteredLayerViewUids=g,e.screenPolygonPrimitiveProcessor=h??H,yield*y.intersectScreenPolygon(e,r,l));c.isFiltered=a,c.filteredLayerViewUids=u,e.screenPolygonPrimitiveProcessor=d}*_intersectDrapedScreenPolygon(e,t,r,n){const{basemapTerrain:i,overlayManager:s}=this._view,o=null!=this._view.groundView.spatialReference&&!s.renderer.isEmpty;if(!e.options.selectionMode||!n?.enableDraped||!o)return;const l=yield*this._createDrapedPolygonIntersectionQueries(r,i.slicePlaneEnabled?this._view.slice.plane:null);null!=l&&(yield*this._view.overlayManager.renderer.intersectScreenPolygon(e,l,e=>t.filterRenderGeometry(e)))}*_createDrapedPolygonIntersectionQueries(t,r){const{state:{camera:{eye:n}},pointsOfInterest:i}=this._view,s=this._view.groundView.spatialReference,c=new Array,a=r?new Array:null,u=v(this._view,i.focus.renderLocation),y=_(s);let p=Number.POSITIVE_INFINITY,g=null;const m=B,f=Y,P=e=>{if(!this._intersectDrapedScreenPolygonPoint(m,f,e))return!1;const t=null!=g&&y?g+y.shortestSignedDiff(g,m[0]):m[0];return g=t,c.push(l(t,m[1])),a&&a.push(h(f)),p=Math.min(p,d(n,f)),!0},{points:w}=t,{length:R}=w;for(let l=0;l<R;l++){const t=w[l],r=w[(l+1)%R];for(let n=0;n<u;n++){const i=n/u;if(!P(0===n?t:o(J,e(t[0],r[0],i),e(t[1],r[1],i))))return null;yield}}if(!Number.isFinite(p))return null;if(null==r||!a)return[z(c,p)];const I=this._clipDrapedScreenPolygonIntersectionQueries(a,r,y,n);return I.length>0?I:null}_clipDrapedScreenPolygonIntersectionQueries(e,t,r,n){const i=new Array,s=x(t);for(const o of M(s,e)){const e=this._createDrapedQueryFromRenderPolygon(o,r,n);null!=e&&i.push(e)}return i.sort((e,t)=>e.distance-t.distance),i}_createDrapedQueryFromRenderPolygon(e,t,r){const{renderCoordsHelper:n}=this._view,i=this._view.groundView.spatialReference,s=new Array;let o=Number.POSITIVE_INFINITY,c=null;for(const a of e){if(!n.fromRenderCoords(a,K,i))return null;const e=null!=c&&t?c+t.shortestSignedDiff(c,K[0]):K[0];c=e,s.push(l(e,K[1])),o=Math.min(o,d(r,a))}return s.length>=3&&Number.isFinite(o)?z(s,o):null}_intersectDrapedScreenPolygonPoint(e,t,r){const n=this._getPickRay(r,this._tmpRay);if(null==n)return!1;const{renderCoordsHelper:i}=this._view;this._intersectGroundPoint(t,n,r)||i.intersectManifoldClosestSilhouette(n,0,t);const s=this._view.groundView.spatialReference;return!!i.fromRenderCoords(t,e,s)}_intersectGroundPoint(e,t,r){const n=this._view.state.camera,i=new Q(null,this._forEachLayer),s=new j(this.viewingMode);W[0]=r[0],W[1]=r[1],W[2]=0;const o=this._createRayIntersectionQuery(t,W,!1);return s.options.selectionMode=!0,s.options.store=0,s.options.normalRequired=!1,s.options.selectOpaqueTerrainOnly=!1,s.reset(o.beginPoint,o.endPoint,n),this._intersectRayHandlers(s,i,o,null,!0,e=>e.isGround,!1),s.results.ground.getIntersectionPoint(e)}*_getFilteredIntersectionHandlers(e,t,r,n=()=>!0,i=!0){for(const s of this._externalIntersectionHandlers){if(!n(s))continue;let o=!1;const l=[];if(i){const t=s.layerViewUid,r=s.sublayerId,n=Array.isArray(t),i=n?t:[t];let c=!1;for(const s of i)e.filterLayerViewUid(s,r)?c=!0:n&&l.push(s);o=!c}yield new G(s,s.slicePlaneEnabled?t:null,s.slicePlaneEnabled?r:null,o,l)}}}class O{constructor(e){this.result=e,this.screenPoint=n()}}class G{constructor(e,t,r,n,i){this.handler=e,this.filterPredicate=t,this.screenPolygonPrimitiveProcessor=r,this.isFiltered=n,this.filteredLayerViewUids=i}}let A;function N(e){return A&&A.viewingMode===e||(A=new j(e)),A}class Q{constructor(e,t){this.layers=new Array,this.sliceableLayers=new Array,this.include=e?.include,this.exclude=e?.exclude,t(e=>{e.pickable&&this.filterLayerViewUid(e.apiLayerViewUid)&&(e.sliceable?this.sliceableLayers:this.layers).push(e)})}filterLayerViewUid(e,t){const{include:r,exclude:n}=this;if(null==e)return null==r&&null==n;const i=r instanceof Map?r.get(e)??!1:r?.has(e),s=n instanceof Map?n.get(e)??!1:n?.has(e);return(null==i||("boolean"==typeof i?i:null!=t&&i.has(t)))&&(null==s||!("boolean"==typeof s?s:null!=t&&s.has(t)))}filterRenderGeometry(e){return this.filterLayerViewUid(e.layerViewUid)}}function q(e){return"object"==typeof e&&null!=e&&"intersectRay"in e}function z(e,t){return new F(e,f(p(m),e),t)}const B=y(),Y=y(),W=n(),J=i(),K=y(),X=n();export{C as SceneIntersectionHelper,q as isIntersectionHandler};
2
+ import{lerp as e}from"../../../../core/mathUtils.js";import t from"../../../../core/PooledArray.js";import{castRenderScreenPointArray3 as r,createRenderScreenPointArray3 as n,createScreenPointArray as i}from"../../../../core/screenUtils.js";import{getMetersPerVerticalUnitForSR as s}from"../../../../core/units.js";import{set as o}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{fromValues as l}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{add as c,normalize as a,dot as u,distance as d}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as y,clone as h}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as p,copy as g,negativeInfinity as m,expandWithNestedArray as f}from"../../../../geometry/support/aaBoundingRect.js";import{createSpatialReferenceCyclical as _}from"../../../../geometry/support/normalizeUtils.js";import{create as P}from"../../../../geometry/support/ray.js";import{sv3d as w}from"../../../../geometry/support/vectorStacks.js";import{getElevationOffsetInMeters as R}from"../../../../support/elevationInfoUtils.js";import{g as I}from"../../../../chunks/cameraUtilsSpherical.js";import{computeMapPointFromVec3d as v}from"../../support/hitTest.js";import{fromRenderAtEye as b,fromScreen as S}from"../../support/geometryUtils/ray.js";import{defaultTolerance as U,Intersector as j,defaultScreenPolygonPrimitiveProcessor as H}from"../../webgl-engine/lib/Intersector.js";import{RayIntersectionQuery as L,DrapedScreenPolygonIntersectionQuery as F}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{isValidIntersectorResult as V}from"../../webgl-engine/lib/IntersectorResult.js";import{SliceScreenPolygonPrimitiveProcessor as x,createSliceExtrusionHalfspacePlanes as M,clipPolygonAgainstSlicedAwayHalfspaces as T,sliceFilterPredicate as k}from"../../webgl-engine/lib/intersectorUtils.js";import{prepareScreenPolygonIntersectionQuery as D}from"../../webgl-engine/lib/screenPolygonIntersectionUtils.js";import{TaskPriority as E}from"../../../support/Scheduler.js";class C{constructor(e,r,n){this.viewingMode=e,this._forEachLayer=r,this._view=n,this._externalIntersectionHandlers=new t,this._tolerance=U,this._tmpRay=P(),this._tmpRegion=p(),this._validateHUDIntersector=new j(this.viewingMode),this._validateHUDIntersector.options.hud=!1,this._screenPolygonIntersectionTask=this._view.resourceController.scheduler.registerTask(E.SCREEN_POLYGON_INTERSECTION)}destroy(){this._screenPolygonIntersectionTask.remove(),this._externalIntersectionHandlers.prune()}get screenPolygonIntersectionTask(){return this._screenPolygonIntersectionTask}intersectScreen(e,t,r){return this.intersectRay(this._getPickRay(e,this._tmpRay),N(this.viewingMode),t,r)}intersectScreenFreePointFallback(e,t,r){return this.intersectRayFreePointFallback(this._getPickRay(e,this._tmpRay),t,r)}intersectRayFreePointFallback(e,t,r){return this.intersectRay(e,N(this.viewingMode),t,r)||this._intersectRayFreePointLocal(e,t)}intersectRay(e,t,r,n){return t.options.selectionMode=!1,t.options.store=0,this.computeIntersection(e,t,!1,n),!!t.results.min&&t.results.min.getIntersectionPoint(r)}getCenterRayWithSubpixelOffset(e,t,r=.5,n=.5){return e.getRenderCenter(X,r,n),X[0]+=.0466,X[1]-=.0123,b(e,X,t)}intersectIntersectorScreen(e,t,r){this.computeIntersection(this._getPickRay(e,this._tmpRay),t,!1,r)}async intersectIntersectorScreenPolygon(e,t,r){t.polygonResults.init();const n=this._view.state.camera,i=await D(n,e);null!=i&&await this._screenPolygonIntersectionTask.scheduleGenerator(e=>this._intersectIntersectorScreenPolygon(n,t,i,r,e))}*_intersectIntersectorScreenPolygon(e,t,r,n,i){const s=new Q(n,this._forEachLayer);t.options.selectOpaqueTerrainOnly=!n||!("include"in n||"exclude"in n),t.camera=e,t.point=null,t.screenPolygonPrimitiveProcessor=H,yield*t.intersectScreenPolygon(s.layers,r);const o=this._view.slice.plane,l=o?new x(o):null;t.screenPolygonPrimitiveProcessor=l??H,yield*t.intersectScreenPolygon(s.sliceableLayers,r),t.screenPolygonPrimitiveProcessor=H,yield*this._intersectPolygonHandlersGenerator(t,s,r,null,l,void 0,!0,i),yield*this._intersectDrapedScreenPolygon(t,s,r,n),yield*t.intersectHUDScreenPolygon(s.layers,r),t.screenPolygonPrimitiveProcessor=l??H,yield*t.intersectHUDScreenPolygon(s.sliceableLayers,r),t.polygonResults.sortResults()}intersectToolIntersectorScreen(e,t,r){const n=this._getPickRay(e,this._tmpRay);this.intersectToolIntersectorRay(n,t,r)}intersectToolIntersectorRay(e,t,r){t.options.selectionMode=!0,this.computeIntersection(e,t,!1,r);const n=t.results.min;this._view.groundView.opaque||V(n)&&7!==n.intersector||(t.options.selectionMode=!1,this.computeIntersection(e,t,!1,r))}setTolerance(e=U){this._tolerance=e}addIntersectionHandler(e){this._externalIntersectionHandlers.push(e),this._externalIntersectionHandlers.sort((e,t)=>7===e.type?1:7===t.type?-1:0)}removeIntersectionHandler(e){null!=this._externalIntersectionHandlers.removeUnordered(e)&&this._externalIntersectionHandlers.sort((e,t)=>7===e.type?1:7===t.type?-1:0)}_getPickRay(e,t){const r=this._view.state.camera;return S(r,e,t)}_intersectRayFreePointLocal(e,t){return 2!==this.viewingMode||null==e||c(t,e.origin,a(w.get(),e.direction)),!1}intersectElevationFromScreen(e,t,r=0,n=null){return this._intersectElevation(this._getPickRay(e,this._tmpRay),t,r,n)}_intersectElevation(e,t,n=0,i=null){if(null==e)return null;const o=this._view,{renderCoordsHelper:l}=o,c=s(o.spatialReference),d=null!=t?t.mode:"absolute-height",y=R(t)/c,h=("on-the-ground"===d?0:y+n)*c/l.unitInMeters,{camera:p}=o.state;if("absolute-height"===d){const t=l?.getAltitude(p.eye),r=u(a(B,e.direction),l.worldUpAtPosition(p.eye,Y));if(t<h&&r<0||t>=h&&r>0)return null;if(l.intersectInfiniteManifold(e,h,B)){const e=v(o,B);return e.z??=0,e.z-=y,e}return null}const g=p.projectToRenderScreen(e.origin,r(w.get())),m=new Q(null,this._forEachLayer),f=o.slice.plane,_=f?k(f):null,P=new j(this.viewingMode);P.options.store=0,P.options.verticalOffset=h,P.options.normalRequired=!1;const I=this._createRayIntersectionQuery(e,g,!1);P.reset(I.beginPoint,I.endPoint,p),P.point=g;let b=null;if(i&&"type"in i&&"graphics"===i.type){const e=o.allLayerViews.find(e=>e.layer===i)?.uid;b=e?t=>t.layerViewUid===e:null}else i&&(b=e=>e.graphicUid!==i.uid);switch(d){case"relative-to-scene":{const e=e=>(!b||b(e))&&!!e.lastValidElevationBB;P.intersect(m.layers,I.screenPoint,this._tolerance,null,e),this._intersectRayHandlers(P,m,I,_,!1,e=>2===e.type||7===e.type||8===e.type,!1);break}case"on-the-ground":case"relative-to-ground":this._intersectRayHandlers(P,m,I,_,!1,e=>e.isGround,!1)}if(P.results.min.getIntersectionPoint(B)){const e=v(o,B);return e.z=n,e}return null}computeIntersection(e,t,n,i){if(null==e)return;const s=this._view.state.camera,o=s.projectToRenderScreen(e.origin,r(w.get())),l=new Q(i,this._forEachLayer);t.options.selectOpaqueTerrainOnly=!i||!("include"in i||"exclude"in i);const c=this._createRayIntersectionQuery(e,o,n);t.reset(c.beginPoint,c.endPoint,s),t.intersect(l.layers,c.screenPoint,this._tolerance);const a=this._view.slice.plane,u=a?k(a):null;t.intersect(l.sliceableLayers,c.screenPoint,this._tolerance,u);const d=i&&(i.requiresGroundFeedback||i.enableDraped);this._intersectRayHandlers(t,l,c,u,!!d);const y=w.get(),h=this._view,p=h.groundView.spatialReference;if(i&&i.enableDraped&&null!=p&&t.results.ground.getIntersectionPoint(y)){const e=h.overlayManager.renderer,r=h.renderCoordsHelper.spatialReference,n=w.get();h.renderCoordsHelper.fromRenderCoords(y,n,p),n[2]=h.elevationProvider?.getElevation(y[0],y[1],y[2],r,"ground")??0,e.intersectRay(t,n,t.results.ground,e=>l.filterRenderGeometry(e))}t.sortResults(),this._processHUDResults(t)}_processHUDResults(e){const t=e.results.hud;g(this._tmpRegion,m);const r=new Array,n=this._tmpRegion,i=e=>{r.push(new O(e))};e.sortResults(t.all),null!=t.min.distance&&i(t.min);for(const c of t.all)t.min.target.object!==c.target.object&&t.max.target.object!==c.target.object&&i(c);if(null!=t.max.distance&&t.max.target.object!==t.min.target.object&&i(t.max),!r.length)return;n[0]===n[2]&&(n[2]+=1),n[1]===n[3]&&(n[3]+=1);let s=!0;const o=null==e.results.max.distance;let l=0;for(const c of r)s&&(e.results.min.copy(c.result),s=!1),o&&e.results.max.copy(c.result),2===e.options.store&&e.results.all.splice(l++,0,c.result)}_createRayIntersectionQuery(e,t,r){return new L(e.origin,c(y(),e.origin,e.direction),t,r)}_intersectRayHandlers(e,t,r,n,i,s=()=>!0,o=!0){const{options:l}=e,c=l.isFiltered,a=l.filteredLayerViewUids;for(const{handler:u,filterPredicate:d,isFiltered:y,filteredLayerViewUids:h}of this._getFilteredIntersectionHandlers(t,n,null,s,o))(!y||u.isGround&&i)&&(l.isFiltered=y,l.filteredLayerViewUids=h,u.intersectRay(e,d,e.rayBegin,e.rayEnd,r.screenPoint,r.isVerticalRay));l.isFiltered=c,l.filteredLayerViewUids=a}*_intersectPolygonHandlersGenerator(e,t,r,n,i,s=()=>!0,o=!0,l){const{options:c}=e,a=c.isFiltered,u=c.filteredLayerViewUids,d=e.screenPolygonPrimitiveProcessor;for(const{handler:y,screenPolygonPrimitiveProcessor:h,isFiltered:p,filteredLayerViewUids:g}of this._getFilteredIntersectionHandlers(t,n,i,s,o))p||null==y.intersectScreenPolygon||(c.isFiltered=p,c.filteredLayerViewUids=g,e.screenPolygonPrimitiveProcessor=h??H,yield*y.intersectScreenPolygon(e,r,l));c.isFiltered=a,c.filteredLayerViewUids=u,e.screenPolygonPrimitiveProcessor=d}*_intersectDrapedScreenPolygon(e,t,r,n){const{basemapTerrain:i,overlayManager:s}=this._view,o=null!=this._view.groundView.spatialReference&&!s.renderer.isEmpty;if(!e.options.selectionMode||!n?.enableDraped||!o)return;const l=yield*this._createDrapedPolygonIntersectionQueries(r,i.slicePlaneEnabled?this._view.slice.plane:null);null!=l&&(yield*this._view.overlayManager.renderer.intersectScreenPolygon(e,l,e=>t.filterRenderGeometry(e)))}*_createDrapedPolygonIntersectionQueries(t,r){const{state:{camera:{eye:n}},pointsOfInterest:i}=this._view,s=this._view.groundView.spatialReference,c=new Array,a=r?new Array:null,u=I(this._view,i.focus.renderLocation),y=_(s);let p=Number.POSITIVE_INFINITY,g=null;const m=B,f=Y,P=e=>{if(!this._intersectDrapedScreenPolygonPoint(m,f,e))return!1;const t=null!=g&&y?g+y.shortestSignedDiff(g,m[0]):m[0];return g=t,c.push(l(t,m[1])),a&&a.push(h(f)),p=Math.min(p,d(n,f)),!0},{points:w}=t,{length:R}=w;for(let l=0;l<R;l++){const t=w[l],r=w[(l+1)%R];for(let n=0;n<u;n++){const i=n/u;if(!P(0===n?t:o(J,e(t[0],r[0],i),e(t[1],r[1],i))))return null;yield}}if(!Number.isFinite(p))return null;if(null==r||!a)return[z(c,p)];const v=this._clipDrapedScreenPolygonIntersectionQueries(a,r,y,n);return v.length>0?v:null}_clipDrapedScreenPolygonIntersectionQueries(e,t,r,n){const i=new Array,s=M(t);for(const o of T(s,e)){const e=this._createDrapedQueryFromRenderPolygon(o,r,n);null!=e&&i.push(e)}return i.sort((e,t)=>e.distance-t.distance),i}_createDrapedQueryFromRenderPolygon(e,t,r){const{renderCoordsHelper:n}=this._view,i=this._view.groundView.spatialReference,s=new Array;let o=Number.POSITIVE_INFINITY,c=null;for(const a of e){if(!n.fromRenderCoords(a,K,i))return null;const e=null!=c&&t?c+t.shortestSignedDiff(c,K[0]):K[0];c=e,s.push(l(e,K[1])),o=Math.min(o,d(r,a))}return s.length>=3&&Number.isFinite(o)?z(s,o):null}_intersectDrapedScreenPolygonPoint(e,t,r){const n=this._getPickRay(r,this._tmpRay);if(null==n)return!1;const{renderCoordsHelper:i}=this._view;this._intersectGroundPoint(t,n,r)||i.intersectManifoldClosestSilhouette(n,0,t);const s=this._view.groundView.spatialReference;return!!i.fromRenderCoords(t,e,s)}_intersectGroundPoint(e,t,r){const n=this._view.state.camera,i=new Q(null,this._forEachLayer),s=new j(this.viewingMode);W[0]=r[0],W[1]=r[1],W[2]=0;const o=this._createRayIntersectionQuery(t,W,!1);return s.options.selectionMode=!0,s.options.store=0,s.options.normalRequired=!1,s.options.selectOpaqueTerrainOnly=!1,s.reset(o.beginPoint,o.endPoint,n),this._intersectRayHandlers(s,i,o,null,!0,e=>e.isGround,!1),s.results.ground.getIntersectionPoint(e)}*_getFilteredIntersectionHandlers(e,t,r,n=()=>!0,i=!0){for(const s of this._externalIntersectionHandlers){if(!n(s))continue;let o=!1;const l=[];if(i){const t=s.layerViewUid,r=s.sublayerId,n=Array.isArray(t),i=n?t:[t];let c=!1;for(const s of i)e.filterLayerViewUid(s,r)?c=!0:n&&l.push(s);o=!c}yield new G(s,s.slicePlaneEnabled?t:null,s.slicePlaneEnabled?r:null,o,l)}}}class O{constructor(e){this.result=e,this.screenPoint=n()}}class G{constructor(e,t,r,n,i){this.handler=e,this.filterPredicate=t,this.screenPolygonPrimitiveProcessor=r,this.isFiltered=n,this.filteredLayerViewUids=i}}let A;function N(e){return A&&A.viewingMode===e||(A=new j(e)),A}class Q{constructor(e,t){this.layers=new Array,this.sliceableLayers=new Array,this.include=e?.include,this.exclude=e?.exclude,t(e=>{e.pickable&&this.filterLayerViewUid(e.apiLayerViewUid)&&(e.sliceable?this.sliceableLayers:this.layers).push(e)})}filterLayerViewUid(e,t){const{include:r,exclude:n}=this;if(null==e)return null==r&&null==n;const i=r instanceof Map?r.get(e)??!1:r?.has(e),s=n instanceof Map?n.get(e)??!1:n?.has(e);return(null==i||("boolean"==typeof i?i:null!=t&&i.has(t)))&&(null==s||!("boolean"==typeof s?s:null!=t&&s.has(t)))}filterRenderGeometry(e){return this.filterLayerViewUid(e.layerViewUid)}}function q(e){return"object"==typeof e&&null!=e&&"intersectRay"in e}function z(e,t){return new F(e,f(p(m),e),t)}const B=y(),Y=y(),W=n(),J=i(),K=y(),X=n();export{C as SceneIntersectionHelper,q as isIntersectionHandler};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import has from"../../../core/has.js";import{Milliseconds as e}from"../../../core/time.js";function a(e){return t[e]}function i(){return has("esri-iPhone")?"low":"medium"}const o={reset(){const e=m();for(const a of Object.keys(e))t[a]=e[a]}},l={IPhone12Pro:120,GalaxyS20:200,FullHD:240,SurfacePro7:300,FullHDRetina:430},t=m();function m(){const a=!!has("esri-mobile"),i=!!has("ios"),o=e(400);return{low:{graphics3D:{maxTotalNumberOfFeatures:5e4,maxNumberOfDrawCalls:8e3,maxTotalNumberOfVertices:255e4,polygonLodFactor:.5,polylineLodFactor:1,snapshotAvailable:!1,skipHighSymbolLods:!0},heatmap:{pixelRatio:.125},sceneService:{objectLoDFactor:.2,pointLoDFactor:1,meshLoDFactor:.6,pointCloudLoDFactor:.5},gaussianSplat:{idleMinimumSplatPixelRadius:2,nonIdleMinimumSplatPixelRadius:2,idleMinimumOpacity:0,nonIdleMinimumOpacity:0,maximumNumberOfGaussians:1e6},flow:{maxTotalNumberOfStreamlines:5e3,maxTracingResolution:1024,transitionEnabled:!1},tiledSurface:{lodBias:-1,angledSplitBias:.5,vtlContentZoom:.75,elevationLevelDelta:3,reduceTileLevelDifferences:!0},fadeDuration:e(0),physicallyBasedRenderingEnabled:!1,maxTexturePixels:a?1048576:4194304,memoryLimit:200+l.IPhone12Pro,additionalCacheMemory:0,frameRate:0,maximumPixelRatio:1},medium:{graphics3D:{maxTotalNumberOfFeatures:15e4,maxNumberOfDrawCalls:17e3,maxTotalNumberOfVertices:625e4,polygonLodFactor:a?.8:1,polylineLodFactor:a?1.2:1.5,snapshotAvailable:!i,skipHighSymbolLods:!1},heatmap:{pixelRatio:.25},sceneService:{objectLoDFactor:1,pointLoDFactor:1,meshLoDFactor:1,pointCloudLoDFactor:1},gaussianSplat:{idleMinimumSplatPixelRadius:1,nonIdleMinimumSplatPixelRadius:1.5,idleMinimumOpacity:1,nonIdleMinimumOpacity:0,maximumNumberOfGaussians:2e6},flow:{maxTotalNumberOfStreamlines:2e4,maxTracingResolution:2048,transitionEnabled:!0},tiledSurface:{lodBias:0,angledSplitBias:1,vtlContentZoom:1.5,elevationLevelDelta:3,reduceTileLevelDifferences:!0},fadeDuration:o,physicallyBasedRenderingEnabled:!0,maxTexturePixels:a?4194304:4096**2,memoryLimit:a?600+l.GalaxyS20:750+l.FullHD,additionalCacheMemory:a?-100:150,frameRate:0,maximumPixelRatio:1},high:{graphics3D:{maxTotalNumberOfFeatures:3e5,maxNumberOfDrawCalls:17e3,maxTotalNumberOfVertices:125e5,polygonLodFactor:a?1.2:2,polylineLodFactor:a?1.2:2,snapshotAvailable:!i,skipHighSymbolLods:!1},heatmap:{pixelRatio:.5},sceneService:{objectLoDFactor:1,pointLoDFactor:1,meshLoDFactor:1,pointCloudLoDFactor:1},gaussianSplat:{idleMinimumSplatPixelRadius:.5,nonIdleMinimumSplatPixelRadius:1,idleMinimumOpacity:2,nonIdleMinimumOpacity:1,maximumNumberOfGaussians:4e6},flow:{maxTotalNumberOfStreamlines:2e4,maxTracingResolution:2048,transitionEnabled:!0},tiledSurface:{lodBias:0,angledSplitBias:1,vtlContentZoom:1.5,elevationLevelDelta:2,reduceTileLevelDifferences:!0},fadeDuration:o,physicallyBasedRenderingEnabled:!0,maxTexturePixels:a?4096**2:1/0,memoryLimit:a?900+l.SurfacePro7:1500+l.FullHDRetina,additionalCacheMemory:a?-150:0,frameRate:0,maximumPixelRatio:a?1:1/0}}}export{o as QualityProfileTest,i as getDefaultQualityProfileName,a as getQualityProfileSettings};
2
+ import has from"../../../core/has.js";import{Milliseconds as e}from"../../../core/time.js";function a(e){return l[e]}function i(){return has("esri-iPhone")?"low":"medium"}const o={reset(){const e=m();for(const a of Object.keys(e))l[a]=e[a]}},t={IPhone12Pro:120,GalaxyS20:200,FullHD:240,SurfacePro7:300,FullHDRetina:430},l=m();function m(){const a=!!has("esri-mobile"),i=!!has("ios"),o=e(400);return{low:{graphics3D:{maxTotalNumberOfFeatures:5e4,maxNumberOfDrawCalls:8e3,maxTotalNumberOfVertices:255e4,polygonLodFactor:.5,polylineLodFactor:1,snapshotAvailable:!1,skipHighSymbolLods:!0},heatmap:{pixelRatio:.125},sceneService:{objectLoDFactor:.2,pointLoDFactor:1,meshLoDFactor:.6,pointCloudLoDFactor:.5},gaussianSplat:{minimumPixelRadius:2,minimumOpacity:0,maximumNumberOfGaussians:1e6},flow:{maxTotalNumberOfStreamlines:5e3,maxTracingResolution:1024,transitionEnabled:!1},tiledSurface:{lodBias:-1,angledSplitBias:.5,vtlContentZoom:.75,elevationLevelDelta:3,reduceTileLevelDifferences:!0},fadeDuration:e(0),physicallyBasedRenderingEnabled:!1,maxTexturePixels:a?1048576:4194304,memoryLimit:200+t.IPhone12Pro,additionalCacheMemory:0,frameRate:0,maximumPixelRatio:1},medium:{graphics3D:{maxTotalNumberOfFeatures:15e4,maxNumberOfDrawCalls:17e3,maxTotalNumberOfVertices:625e4,polygonLodFactor:a?.8:1,polylineLodFactor:a?1.2:1.5,snapshotAvailable:!i,skipHighSymbolLods:!1},heatmap:{pixelRatio:.25},sceneService:{objectLoDFactor:1,pointLoDFactor:1,meshLoDFactor:1,pointCloudLoDFactor:1},gaussianSplat:{minimumPixelRadius:1,minimumOpacity:1,maximumNumberOfGaussians:2e6},flow:{maxTotalNumberOfStreamlines:2e4,maxTracingResolution:2048,transitionEnabled:!0},tiledSurface:{lodBias:0,angledSplitBias:1,vtlContentZoom:1.5,elevationLevelDelta:3,reduceTileLevelDifferences:!0},fadeDuration:o,physicallyBasedRenderingEnabled:!0,maxTexturePixels:a?4194304:4096**2,memoryLimit:a?600+t.GalaxyS20:750+t.FullHD,additionalCacheMemory:a?-100:150,frameRate:0,maximumPixelRatio:1},high:{graphics3D:{maxTotalNumberOfFeatures:3e5,maxNumberOfDrawCalls:17e3,maxTotalNumberOfVertices:125e5,polygonLodFactor:a?1.2:2,polylineLodFactor:a?1.2:2,snapshotAvailable:!i,skipHighSymbolLods:!1},heatmap:{pixelRatio:.5},sceneService:{objectLoDFactor:1,pointLoDFactor:1,meshLoDFactor:1,pointCloudLoDFactor:1},gaussianSplat:{minimumPixelRadius:.5,minimumOpacity:2,maximumNumberOfGaussians:4e6},flow:{maxTotalNumberOfStreamlines:2e4,maxTracingResolution:2048,transitionEnabled:!0},tiledSurface:{lodBias:0,angledSplitBias:1,vtlContentZoom:1.5,elevationLevelDelta:2,reduceTileLevelDifferences:!0},fadeDuration:o,physicallyBasedRenderingEnabled:!0,maxTexturePixels:a?4096**2:1/0,memoryLimit:a?900+t.SurfacePro7:1500+t.FullHDRetina,additionalCacheMemory:a?-150:0,frameRate:0,maximumPixelRatio:a?1:1/0}}}export{o as QualityProfileTest,i as getDefaultQualityProfileName,a as getQualityProfileSettings};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import e from"../../../core/Accessor.js";import{Milliseconds as o}from"../../../core/time.js";import{property as i,subclass as s}from"../../../core/accessorSupport/decorators.js";let r=class extends e{constructor(t={}){super(t),this.minTotalNumberOfFeatures=2e3,this.maxTotalNumberOfFeatures=5e4,this.maxNumberOfDrawCalls=17e3,this.maxTotalNumberOfVertices=17e5,this.snapshotAvailable=!0,this.polygonLodFactor=1,this.polylineLodFactor=1,this.skipHighSymbolLods=!1}};t([i()],r.prototype,"maxTotalNumberOfFeatures",void 0),t([i()],r.prototype,"maxNumberOfDrawCalls",void 0),t([i()],r.prototype,"maxTotalNumberOfVertices",void 0),t([i()],r.prototype,"snapshotAvailable",void 0),t([i()],r.prototype,"polygonLodFactor",void 0),t([i()],r.prototype,"polylineLodFactor",void 0),t([i()],r.prototype,"skipHighSymbolLods",void 0),r=t([s("esri.views.3d.support.QualitySettings.Graphics3DSettings")],r);let a=class extends e{constructor(t={}){super(t),this.objectLoDFactor=1,this.pointLoDFactor=1,this.meshLoDFactor=1,this.pointCloudLoDFactor=1}};t([i()],a.prototype,"objectLoDFactor",void 0),t([i()],a.prototype,"pointLoDFactor",void 0),t([i()],a.prototype,"meshLoDFactor",void 0),t([i()],a.prototype,"pointCloudLoDFactor",void 0),a=t([s("esri.views.3d.support.QualitySettings.SceneServiceSettings")],a);let p=class extends e{constructor(t={}){super(t),this.lodBias=0,this.angledSplitBias=1,this.vtlContentZoom=1,this.elevationLevelDelta=3,this.reduceTileLevelDifferences=!0}};t([i()],p.prototype,"lodBias",void 0),t([i()],p.prototype,"angledSplitBias",void 0),t([i()],p.prototype,"vtlContentZoom",void 0),t([i()],p.prototype,"elevationLevelDelta",void 0),t([i()],p.prototype,"reduceTileLevelDifferences",void 0),p=t([s("esri.views.3d.support.QualitySettings.TiledSurfaceSettings")],p);let l=class extends e{constructor(t={}){super(t),this.idleMinimumSplatPixelRadius=1,this.nonIdleMinimumSplatPixelRadius=2,this.idleMinimumOpacity=1,this.nonIdleMinimumOpacity=0,this.maximumNumberOfGaussians=2e6}};t([i()],l.prototype,"idleMinimumSplatPixelRadius",void 0),t([i()],l.prototype,"nonIdleMinimumSplatPixelRadius",void 0),t([i()],l.prototype,"idleMinimumOpacity",void 0),t([i()],l.prototype,"nonIdleMinimumOpacity",void 0),t([i()],l.prototype,"maximumNumberOfGaussians",void 0),l=t([s("esri.views.3d.support.QualitySettings.GaussianSplatSettings")],l);let n=class extends e{constructor(t={}){super(t),this.pixelRatio=1}};t([i()],n.prototype,"pixelRatio",void 0),n=t([s("esri.views.3d.support.QualitySettings.HeatmapSettings")],n);let d=class extends e{constructor(){super(...arguments),this.maxTotalNumberOfStreamlines=1e5,this.maxTracingResolution=2048,this.transitionEnabled=!0}};t([i()],d.prototype,"maxTotalNumberOfStreamlines",void 0),t([i()],d.prototype,"maxTracingResolution",void 0),t([i()],d.prototype,"transitionEnabled",void 0),d=t([s("esri.views.3d.support.QualitySettings.FlowSettings")],d);let m=class extends e{constructor(t){super(t),this.graphics3D=new r,this.sceneService=new a,this.tiledSurface=new p,this.gaussianSplat=new l,this.heatmap=new n,this.flow=new d,this.fadeDuration=o(400),this.physicallyBasedRenderingEnabled=!1,this.maxTexturePixels=1/0,this.memoryLimit=750,this.additionalCacheMemory=0,this.frameRate=0,this.maximumPixelRatio=1/0}};t([i({type:r})],m.prototype,"graphics3D",void 0),t([i({type:a})],m.prototype,"sceneService",void 0),t([i({type:p})],m.prototype,"tiledSurface",void 0),t([i({type:l})],m.prototype,"gaussianSplat",void 0),t([i({type:n})],m.prototype,"heatmap",void 0),t([i({type:d})],m.prototype,"flow",void 0),t([i()],m.prototype,"fadeDuration",void 0),t([i()],m.prototype,"physicallyBasedRenderingEnabled",void 0),t([i()],m.prototype,"maxTexturePixels",void 0),t([i()],m.prototype,"memoryLimit",void 0),t([i()],m.prototype,"additionalCacheMemory",void 0),t([i()],m.prototype,"frameRate",void 0),t([i()],m.prototype,"maximumPixelRatio",void 0),m=t([s("esri.views.3d.support.QualitySettings")],m);const u=m;export{u as default};
2
+ import{__decorate as t}from"tslib";import e from"../../../core/Accessor.js";import{Milliseconds as o}from"../../../core/time.js";import{property as i,subclass as s}from"../../../core/accessorSupport/decorators.js";let r=class extends e{constructor(t={}){super(t),this.minTotalNumberOfFeatures=2e3,this.maxTotalNumberOfFeatures=5e4,this.maxNumberOfDrawCalls=17e3,this.maxTotalNumberOfVertices=17e5,this.snapshotAvailable=!0,this.polygonLodFactor=1,this.polylineLodFactor=1,this.skipHighSymbolLods=!1}};t([i()],r.prototype,"maxTotalNumberOfFeatures",void 0),t([i()],r.prototype,"maxNumberOfDrawCalls",void 0),t([i()],r.prototype,"maxTotalNumberOfVertices",void 0),t([i()],r.prototype,"snapshotAvailable",void 0),t([i()],r.prototype,"polygonLodFactor",void 0),t([i()],r.prototype,"polylineLodFactor",void 0),t([i()],r.prototype,"skipHighSymbolLods",void 0),r=t([s("esri.views.3d.support.QualitySettings.Graphics3DSettings")],r);let a=class extends e{constructor(t={}){super(t),this.objectLoDFactor=1,this.pointLoDFactor=1,this.meshLoDFactor=1,this.pointCloudLoDFactor=1}};t([i()],a.prototype,"objectLoDFactor",void 0),t([i()],a.prototype,"pointLoDFactor",void 0),t([i()],a.prototype,"meshLoDFactor",void 0),t([i()],a.prototype,"pointCloudLoDFactor",void 0),a=t([s("esri.views.3d.support.QualitySettings.SceneServiceSettings")],a);let p=class extends e{constructor(t={}){super(t),this.lodBias=0,this.angledSplitBias=1,this.vtlContentZoom=1,this.elevationLevelDelta=3,this.reduceTileLevelDifferences=!0}};t([i()],p.prototype,"lodBias",void 0),t([i()],p.prototype,"angledSplitBias",void 0),t([i()],p.prototype,"vtlContentZoom",void 0),t([i()],p.prototype,"elevationLevelDelta",void 0),t([i()],p.prototype,"reduceTileLevelDifferences",void 0),p=t([s("esri.views.3d.support.QualitySettings.TiledSurfaceSettings")],p);let l=class extends e{constructor(t={}){super(t),this.minimumPixelRadius=1,this.minimumOpacity=1,this.maximumNumberOfGaussians=2e6}};t([i()],l.prototype,"minimumPixelRadius",void 0),t([i()],l.prototype,"minimumOpacity",void 0),t([i()],l.prototype,"maximumNumberOfGaussians",void 0),l=t([s("esri.views.3d.support.QualitySettings.GaussianSplatSettings")],l);let n=class extends e{constructor(t={}){super(t),this.pixelRatio=1}};t([i()],n.prototype,"pixelRatio",void 0),n=t([s("esri.views.3d.support.QualitySettings.HeatmapSettings")],n);let d=class extends e{constructor(){super(...arguments),this.maxTotalNumberOfStreamlines=1e5,this.maxTracingResolution=2048,this.transitionEnabled=!0}};t([i()],d.prototype,"maxTotalNumberOfStreamlines",void 0),t([i()],d.prototype,"maxTracingResolution",void 0),t([i()],d.prototype,"transitionEnabled",void 0),d=t([s("esri.views.3d.support.QualitySettings.FlowSettings")],d);let m=class extends e{constructor(t){super(t),this.graphics3D=new r,this.sceneService=new a,this.tiledSurface=new p,this.gaussianSplat=new l,this.heatmap=new n,this.flow=new d,this.fadeDuration=o(400),this.physicallyBasedRenderingEnabled=!1,this.maxTexturePixels=1/0,this.memoryLimit=750,this.additionalCacheMemory=0,this.frameRate=0,this.maximumPixelRatio=1/0}};t([i({type:r})],m.prototype,"graphics3D",void 0),t([i({type:a})],m.prototype,"sceneService",void 0),t([i({type:p})],m.prototype,"tiledSurface",void 0),t([i({type:l})],m.prototype,"gaussianSplat",void 0),t([i({type:n})],m.prototype,"heatmap",void 0),t([i({type:d})],m.prototype,"flow",void 0),t([i()],m.prototype,"fadeDuration",void 0),t([i()],m.prototype,"physicallyBasedRenderingEnabled",void 0),t([i()],m.prototype,"maxTexturePixels",void 0),t([i()],m.prototype,"memoryLimit",void 0),t([i()],m.prototype,"additionalCacheMemory",void 0),t([i()],m.prototype,"frameRate",void 0),t([i()],m.prototype,"maximumPixelRatio",void 0),m=t([s("esri.views.3d.support.QualitySettings")],m);const u=m;export{u as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{signal as i}from"../../../../core/signal.js";import{Milliseconds as e}from"../../../../core/time.js";import{getGaussianSplatAlphaCutoffValue as t}from"../../webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js";class a{static{this.fadeInEase=i=>i*(2-i)}static{this.fadeOutEase=i=>i*i}static{this.inverseFadeInEase=i=>1-Math.sqrt(1-i)}static{this.inverseFadeOutEase=i=>Math.sqrt(1-i)}static{this.minimumFadeDuration=e(80)}static{this.resetFadeDurationInterval=e(1e3)}constructor(t){this._view=t,this._numFadingTiles=i(0),this._tmpFullyFadedOutTiles=new Array,this._visibilityUpdatePending=!1,this._previousNumFadingTiles=0,this._lastStoppedFading=e(0),this._currentFadeDuration=this.baseFadeDuration}get numFadingTiles(){return this._numFadingTiles.value}updateForFrame(i){if(i!==this._lastUpdatedFrameStart){if(this._lastUpdatedFrameStart=i,0===this.numFadingTiles)this._previousFrameStart=null;else{const t=e(null==this._previousFrameStart?0:i-this._previousFrameStart);this.updateAllTileFading(t),this._previousFrameStart=i}this._view.updateFadingTexture()}}fadeTile(i,e,t){const a=this._getTargetOpacity(e);if(i.fadeDirection=e,!this.fadingEnabled)return void this._instantTileFading(i,a);const s=i.opacityModifier;if(s!==a){const a=this._getFadeProgressFromOpacity(s,e);this._startTileFading(i,a,t)}else this._stopTileFading(i)}updateAllTileFading(i){const e=this._tmpFullyFadedOutTiles;e.length=0,this._view.tileHandles.forEach(t=>{this._updateTileFading(t,i)&&e.push(t)});e.length>0&&(this._view.notifyTileObbsChanged(e),this._visibilityUpdatePending=!0),0===this._numFadingTiles.value&&this._visibilityUpdatePending&&(this._visibilityUpdatePending=!1,this._view.updateGaussians()),this._numFadingTiles.value>0&&this._view.view.stage?.renderView.requestRender(2)}onFadeDurationChanged(i){0===i&&this.numFadingTiles>0&&this._instantlyFullyFadeAllTiles()}isTileFadingOut(i){return null!=i.fadeProgress&&1===i.fadeDirection}onTileDiscarded(i){null!=i.fadeProgress&&(this._numFadingTiles.value--,0===this._numFadingTiles.value&&(this._lastStoppedFading=e(performance.now())))}updateFadeDuration(){if(this.numFadingTiles&&this.numFadingTiles>=this._previousNumFadingTiles){const i=.95*this._currentFadeDuration;this._currentFadeDuration=e(Math.max(i,a.minimumFadeDuration))}else 0===this.numFadingTiles&&performance.now()-this._lastStoppedFading>a.resetFadeDurationInterval&&(this._currentFadeDuration=this.baseFadeDuration);return this._previousNumFadingTiles=this.numFadingTiles,this._currentFadeDuration}get updating(){return this._numFadingTiles.value>0}get baseFadeDuration(){return this._view.view.qualitySettings.fadeDuration}get fadingEnabled(){return 0!==this.baseFadeDuration}_startTileFading(i,e,t){null==i.fadeProgress&&this._numFadingTiles.value++,i.fadeDuration=t,i.fadeProgress=e}_stopTileFading(i){null!=i.fadeProgress&&(1===i.fadeDirection&&this._onTileFullyFadedOut(i),this._numFadingTiles.value--,0===this._numFadingTiles.value&&(this._lastStoppedFading=e(performance.now())),i.fadeDuration=null,i.fadeProgress=null)}_updateTileFading(i,e){const{fadeProgress:t,fadeDirection:s}=i;if(null==t)return!1;const n=this._fadeDirectionToSign(s),d=i.fadeDuration,r=this._getTargetOpacity(s),l=e/Math.abs(d||1),u=Math.min(t+l,1),o=r-n*(1-(0===s?a.fadeInEase:a.fadeOutEase)(u)),h=1===u||this._tileReachedFadeOutCutoff(i,o);if(i.opacityModifier=h?r:o,h){const e=1===s;return this._stopTileFading(i),this._updateOpacityModifier(i),e}return i.fadeProgress=u,this._updateOpacityModifier(i),!1}_updateOpacityModifier(i){for(let e=0;e<i.pageIds.length;e++){const t=i.pageIds[e];this._view.data.fadingTexture.updateBuffer(i.opacityModifier,t)}}_tileReachedFadeOutCutoff(i,e){if(1!==i.fadeDirection)return!1;const a=t(this._view.view.qualitySettings.gaussianSplat.nonIdleMinimumOpacity);return e*i.maxGaussianOpacity<=a}_instantTileFading(i,e){i.fadeDuration=null,i.fadeProgress=null,i.opacityModifier=e,this._updateOpacityModifier(i),1===i.fadeDirection&&this._onTileFullyFadedOut(i)}_instantlyFullyFadeAllTiles(){const i=this._tmpFullyFadedOutTiles;i.length=0,this._view.tileHandles.forEach(e=>{if(null!=e.fadeProgress){const t=1===e.fadeDirection;this._instantTileFading(e,this._getTargetOpacity(e.fadeDirection)),t&&i.push(e)}});const e=i.length>0;e&&(this._visibilityUpdatePending=!0),this._numFadingTiles.value=0,this._visibilityUpdatePending&&(this._visibilityUpdatePending=!1,this._view.updateGaussians()),e&&this._view.notifyTileObbsChanged(i)}_onTileFullyFadedOut(i){i.lifecycleState=0,this._view.moveTileToCache(i)}_fadeDirectionToSign(i){return 0===i?1:-1}_getTargetOpacity(i){return 0===i?1:0}_getFadeProgressFromOpacity(i,e){const t=Math.max(0,Math.min(i,1));return 0===e?a.inverseFadeInEase(t):a.inverseFadeOutEase(t)}}export{a as GaussianSplatFadeHelper};
2
+ import{signal as i}from"../../../../core/signal.js";import{Milliseconds as e}from"../../../../core/time.js";import{getGaussianSplatAlphaCutoffValue as t}from"../../webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js";class a{static{this.fadeInEase=i=>i*(2-i)}static{this.fadeOutEase=i=>i*i}static{this.inverseFadeInEase=i=>1-Math.sqrt(1-i)}static{this.inverseFadeOutEase=i=>Math.sqrt(1-i)}static{this.minimumFadeDuration=e(80)}static{this.resetFadeDurationInterval=e(1e3)}constructor(t){this._view=t,this._numFadingTiles=i(0),this._tmpFullyFadedOutTiles=new Array,this._visibilityUpdatePending=!1,this._previousNumFadingTiles=0,this._lastStoppedFading=e(0),this._currentFadeDuration=this.baseFadeDuration}get numFadingTiles(){return this._numFadingTiles.value}updateForFrame(i){if(i!==this._lastUpdatedFrameStart){if(this._lastUpdatedFrameStart=i,0===this.numFadingTiles)this._previousFrameStart=null;else{const t=e(null==this._previousFrameStart?0:i-this._previousFrameStart);this.updateAllTileFading(t),this._previousFrameStart=i}this._view.updateFadingTexture()}}fadeTile(i,e,t){const a=this._getTargetOpacity(e);if(i.fadeDirection=e,!this.fadingEnabled)return void this._instantTileFading(i,a);const s=i.opacityModifier;if(s!==a){const a=this._getFadeProgressFromOpacity(s,e);this._startTileFading(i,a,t)}else this._stopTileFading(i)}updateAllTileFading(i){const e=this._tmpFullyFadedOutTiles;e.length=0,this._view.tileHandles.forEach(t=>{this._updateTileFading(t,i)&&e.push(t)});e.length>0&&(this._view.notifyTileObbsChanged(e),this._visibilityUpdatePending=!0),0===this._numFadingTiles.value&&this._visibilityUpdatePending&&(this._visibilityUpdatePending=!1,this._view.updateGaussians()),this._numFadingTiles.value>0&&this._view.view.stage?.renderView.requestRender(2)}onFadeDurationChanged(i){0===i&&this.numFadingTiles>0&&this._instantlyFullyFadeAllTiles()}isTileFadingOut(i){return null!=i.fadeProgress&&1===i.fadeDirection}onTileDiscarded(i){null!=i.fadeProgress&&(this._numFadingTiles.value--,0===this._numFadingTiles.value&&(this._lastStoppedFading=e(performance.now())))}updateFadeDuration(){if(this.numFadingTiles&&this.numFadingTiles>=this._previousNumFadingTiles){const i=.95*this._currentFadeDuration;this._currentFadeDuration=e(Math.max(i,a.minimumFadeDuration))}else 0===this.numFadingTiles&&performance.now()-this._lastStoppedFading>a.resetFadeDurationInterval&&(this._currentFadeDuration=this.baseFadeDuration);return this._previousNumFadingTiles=this.numFadingTiles,this._currentFadeDuration}get updating(){return this._numFadingTiles.value>0}get baseFadeDuration(){return this._view.view.qualitySettings.fadeDuration}get fadingEnabled(){return 0!==this.baseFadeDuration}_startTileFading(i,e,t){null==i.fadeProgress&&this._numFadingTiles.value++,i.fadeDuration=t,i.fadeProgress=e}_stopTileFading(i){null!=i.fadeProgress&&(1===i.fadeDirection&&this._onTileFullyFadedOut(i),this._numFadingTiles.value--,0===this._numFadingTiles.value&&(this._lastStoppedFading=e(performance.now())),i.fadeDuration=null,i.fadeProgress=null)}_updateTileFading(i,e){const{fadeProgress:t,fadeDirection:s}=i;if(null==t)return!1;const n=this._fadeDirectionToSign(s),r=i.fadeDuration,d=this._getTargetOpacity(s),l=e/Math.abs(r||1),u=Math.min(t+l,1),o=d-n*(1-(0===s?a.fadeInEase:a.fadeOutEase)(u)),h=1===u||this._tileReachedFadeOutCutoff(i,o);if(i.opacityModifier=h?d:o,h){const e=1===s;return this._stopTileFading(i),this._updateOpacityModifier(i),e}return i.fadeProgress=u,this._updateOpacityModifier(i),!1}_updateOpacityModifier(i){for(let e=0;e<i.pageIds.length;e++){const t=i.pageIds[e];this._view.data.fadingTexture.updateBuffer(i.opacityModifier,t)}}_tileReachedFadeOutCutoff(i,e){if(1!==i.fadeDirection)return!1;const a=t(this._view.view.qualitySettings.gaussianSplat.minimumOpacity);return e*i.maxGaussianOpacity<=a}_instantTileFading(i,e){i.fadeDuration=null,i.fadeProgress=null,i.opacityModifier=e,this._updateOpacityModifier(i),1===i.fadeDirection&&this._onTileFullyFadedOut(i)}_instantlyFullyFadeAllTiles(){const i=this._tmpFullyFadedOutTiles;i.length=0,this._view.tileHandles.forEach(e=>{if(null!=e.fadeProgress){const t=1===e.fadeDirection;this._instantTileFading(e,this._getTargetOpacity(e.fadeDirection)),t&&i.push(e)}});const e=i.length>0;e&&(this._visibilityUpdatePending=!0),this._numFadingTiles.value=0,this._visibilityUpdatePending&&(this._visibilityUpdatePending=!1,this._view.updateGaussians()),e&&this._view.notifyTileObbsChanged(i)}_onTileFullyFadedOut(i){i.lifecycleState=0,this._view.moveTileToCache(i)}_fadeDirectionToSign(i){return 0===i?1:-1}_getTargetOpacity(i){return 0===i?1:0}_getFadeProgressFromOpacity(i,e){const t=Math.max(0,Math.min(i,1));return 0===e?a.inverseFadeInEase(t):a.inverseFadeOutEase(t)}}export{a as GaussianSplatFadeHelper};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{fromValues as e,create as t}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import r from"../../../geometry/SpatialReference.js";import{projectVectorToVector as o}from"../../../geometry/projection/projectVectorToVector.js";import{wrap as i}from"../../../geometry/support/aaBoundingBox.js";import{create as n}from"../../../geometry/support/aaBoundingRect.js";import{isPlateCarree as s}from"../../../geometry/support/spatialReferenceUtils.js";import{createPlanarGlobePatch as a,updateEdgesAndCornersPlanar as u,updateEdgeElevationsAndResolutionsPlanar as l}from"./PatchGeometryFactory.js";import{Tile as h}from"./Tile.js";import{intersectAabbInvDirBefore as d}from"../webgl-engine/lib/RayIntersections.js";class m extends h{constructor(e,t,r,o,i){super(),this._horizontalScaleFactor=1,this._extentInRenderSR=n(),this._baseUsedMemory=900,this._subtreeGeometryElevationBoundMin=0,this._subtreeGeometryElevationBoundMax=0,this.init(e,t,r,o,i)}init(t,i,n,a,u){super.init(t,i,n,a,u);const l=u.view.renderSpatialReference,h=u.spatialReference,d=null!=l&&s(l)&&null!=h&&h.isGeographic?this.ellipsoid.radius*Math.PI/180:1;this._horizontalScaleFactor=d;const{isWebMercatorOnPlateCarree:m}=u,c=this._extentInRenderSR,p=this.extent;if(m){const t=e(p[0],p[1],0);o(t,r.WebMercator,t,r.PlateCarree);const i=e(p[2],p[3],0);o(i,r.WebMercator,i,r.PlateCarree),c[0]=t[0],c[1]=t[1],c[2]=i[0],c[3]=i[1]}else for(let e=0;e<4;++e)c[e]=p[e]*d;this.centerAtSeaLevel[0]=.5*(c[0]+c[2]),this.centerAtSeaLevel[1]=.5*(c[1]+c[3]),this.centerAtSeaLevel[2]=0,this._edgeLen=Math.max(c[2]-c[0],c[3]-c[1]),this._edgeLen2=this._edgeLen*this._edgeLen,this.updateRadiusAndCenter()}updateRadiusAndCenter(){this._updateCenter();const e=this._extentInRenderSR,t=.5*(e[2]-e[0]),r=.5*(e[3]-e[1]),o=Math.sqrt(t*t+r*r),i=.5*(this.elevationBoundsMax-this.elevationBoundsMin),n=Math.max(o,i);this._center[1].radius=n}_calculateFrustumVisibility(e){const t=this._aabb(),r=t[0],o=t[1],i=t[2],n=t[3],s=t[4],a=t[5];let u=!0;for(let l=0;l<6;l++){const t=e[l],h=t[0],d=t[1],m=t[2],c=t[3];if(h*(h>0?r:n)+d*(d>0?o:s)+m*(m>0?i:a)+c>=0)return 2;u=u&&h*(h<0?r:n)+d*(d<0?o:s)+m*(m<0?i:a)+c<=0}return u?0:1}_aabb(){const e=this._extentInRenderSR;return i(e[0],e[1],Math.min(this.elevationBoundsMin,this._subtreeGeometryElevationBoundMin),e[2],e[3],Math.max(this.elevationBoundsMax,this._subtreeGeometryElevationBoundMax))}intersectsRay(e,t,r,o){return c[0]=1/t[0],c[1]=1/t[1],c[2]=1/t[2],d(this._aabb(),e,c,r,o)}createGeometry(){a(this.renderData),this._updateSubtreeGeometryElevationsBounds(),this.setMemoryDirty()}_updateSubtreeGeometryElevationsBounds(){const e=this._subtreeGeometryElevationBoundMin,t=this._subtreeGeometryElevationBoundMax,r=this.renderData;let o=e,i=t;if(r){const e=r.geometry.boundingBox;o=e[2],i=e[5]}else if(!this.leaf){o=1/0,i=-1/0;for(const e of this.children){const t=e;o=Math.min(o,t._subtreeGeometryElevationBoundMin),i=Math.max(i,t._subtreeGeometryElevationBoundMax)}}if(o!==this._subtreeGeometryElevationBoundMin||i!==this._subtreeGeometryElevationBoundMax){this._subtreeGeometryElevationBoundMin=o,this._subtreeGeometryElevationBoundMax=i;const e=this.parent;e?._updateSubtreeGeometryElevationsBounds()}}get minimumVerticesPerSide(){return this.level<9?3:2}updateEdgeElevations(){u(this.renderData),this._updateSubtreeGeometryElevationsBounds()}updateEdgeElevationsAndResolutions(){l(this.renderData),this._updateSubtreeGeometryElevationsBounds()}get horizontalScale(){return this._horizontalScaleFactor}}const c=t();export{m as PlanarPatch};
2
+ import{fromValues as e,create as t}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import r from"../../../geometry/SpatialReference.js";import{projectVectorToVector as i}from"../../../geometry/projection/projectVectorToVector.js";import{wrap as o}from"../../../geometry/support/aaBoundingBox.js";import{create as s}from"../../../geometry/support/aaBoundingRect.js";import{isPlateCarree as n}from"../../../geometry/support/spatialReferenceUtils.js";import{createPlanarGlobePatch as a,updateEdgesAndCornersPlanar as u,updateEdgeElevationsAndResolutionsPlanar as l}from"./PatchGeometryFactory.js";import{Tile as h}from"./Tile.js";import{intersectAabbInvDirBefore as d}from"../webgl-engine/lib/RayIntersections.js";class m extends h{constructor(e,t,r,i,o){super(),this._horizontalScaleFactor=1,this._extentInRenderSR=s(),this._baseUsedMemory=900,this._subtreeGeometryElevationBoundMin=0,this._subtreeGeometryElevationBoundMax=0,this.init(e,t,r,i,o)}init(t,o,s,a,u){super.init(t,o,s,a,u);const l=u.view.renderSpatialReference,h=u.spatialReference,d=null!=l&&n(l)&&null!=h&&h.isGeographic?this.ellipsoid.radius*Math.PI/180:1;this._horizontalScaleFactor=d;const{isWebMercatorOnPlateCarree:m}=u,c=this._extentInRenderSR,p=this.extent;if(m){const t=e(p[0],p[1],0);i(t,r.WebMercator,t,r.PlateCarree);const o=e(p[2],p[3],0);i(o,r.WebMercator,o,r.PlateCarree),c[0]=t[0],c[1]=t[1],c[2]=o[0],c[3]=o[1]}else for(let e=0;e<4;++e)c[e]=p[e]*d;this.centerAtSeaLevel[0]=.5*(c[0]+c[2]),this.centerAtSeaLevel[1]=.5*(c[1]+c[3]),this.centerAtSeaLevel[2]=0,this._edgeLen=Math.max(c[2]-c[0],c[3]-c[1]),this._edgeLen2=this._edgeLen*this._edgeLen,this.updateRadiusAndCenter()}updateRadiusAndCenter(){this._updateCenter();const e=this._extentInRenderSR,t=.5*(e[2]-e[0]),r=.5*(e[3]-e[1]),i=Math.sqrt(t*t+r*r),o=.5*(this.elevationBoundsMax-this.elevationBoundsMin),s=Math.max(i,o);this._center[1].radius=s}_calculateFrustumVisibility(e){const t=this._aabb(),r=t[0],i=t[1],o=t[2],s=t[3],n=t[4],a=t[5];let u=!0;for(let l=0;l<6;l++){const t=e[l],h=t[0],d=t[1],m=t[2],c=t[3];if(h*(h>0?r:s)+d*(d>0?i:n)+m*(m>0?o:a)+c>=0)return 2;u=u&&h*(h<0?r:s)+d*(d<0?i:n)+m*(m<0?o:a)+c<=0}return u?0:1}_aabb(){const e=this._extentInRenderSR;return o(e[0],e[1],Math.min(this.elevationBoundsMin,this._subtreeGeometryElevationBoundMin),e[2],e[3],Math.max(this.elevationBoundsMax,this._subtreeGeometryElevationBoundMax))}intersectsRay(e,t,r,i){return c[0]=1/t[0],c[1]=1/t[1],c[2]=1/t[2],d(this._aabb(),e,c,r,i)}createGeometry(){a(this.renderData),this._updateSubtreeGeometryElevationsBounds(),this.setMemoryDirty()}_updateSubtreeGeometryElevationsBounds(){const e=this._subtreeGeometryElevationBoundMin,t=this._subtreeGeometryElevationBoundMax,r=this.renderData;let i=e,o=t;if(r){const e=r.geometry.boundingBox;i=e[2],o=e[5]}else if(!this.leaf){i=1/0,o=-1/0;for(const e of this.children){const t=e;i=Math.min(i,t._subtreeGeometryElevationBoundMin),o=Math.max(o,t._subtreeGeometryElevationBoundMax)}}if(i!==this._subtreeGeometryElevationBoundMin||o!==this._subtreeGeometryElevationBoundMax){this._subtreeGeometryElevationBoundMin=i,this._subtreeGeometryElevationBoundMax=o,this.updateVisibility();const e=this.parent;e?._updateSubtreeGeometryElevationsBounds()}}get minimumVerticesPerSide(){return this.level<9?3:2}updateEdgeElevations(){u(this.renderData),this._updateSubtreeGeometryElevationsBounds()}updateEdgeElevationsAndResolutions(){l(this.renderData),this._updateSubtreeGeometryElevationsBounds()}get horizontalScale(){return this._horizontalScaleFactor}}const c=t();export{m as PlanarPatch};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{toConst as e}from"../../../core/compilerUtils.js";import"../../../core/has.js";import{clamp as t}from"../../../core/mathUtils.js";import{abortMaybe as i}from"../../../core/maybe.js";import s from"../../../core/ObjectPool.js";import{subtract as n,squaredLength as r,dot as a,scale as l,add as o,length as h,copy as u}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as d,unitZ as c}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getReferenceEllipsoid as g}from"../../../geometry/ellipsoidUtils.js";import{create as p,equals as f,rectangleContainsRectangleCyclicalAware as _,rectanglesIntersectCyclicalAware as m,width as y,height as v}from"../../../geometry/support/aaBoundingRect.js";import{Sphere as M}from"../../../geometry/support/sphere.js";import{isGroupLayer as A}from"../../../layers/support/layerUtils.js";import{isLayerViewWithFlowRenderer as x}from"../support/flowUtils.js";import{ElevationBounds as D}from"./ElevationBounds.js";import{ElevationTileAgent as L,isElevationTileAgent as S}from"./ElevationTileAgent.js";import{LayerClasses as b}from"./LayerClass.js";import{MapDataCacheItem as j}from"./MapDataCacheItem.js";import{MapTileAgent as I,isMapTileAgent as U}from"./MapTileAgent.js";import{maxPatchTesselation as T}from"./TerrainConst.js";import{isVectorTile as C,isTileTexture as B,isRasterTile as E,isCreateBitmapResult as w}from"./TerrainData.js";import{weakAssert as P,isBlendableLayerView as R,oppositeCorner as q,internalAssert as O,enableTerrainInternalChecks as V,neighborEdgeIndices as N,oppositeEdge as G,neighborCornerIndices as k,almostEquals as F,enableWaterproofTests as z,isNorth as W,isSouth as J,isWest as H,isEast as $,isWestCorner as X,isNorthCorner as Y}from"./terrainUtils.js";import{tileAgentDone as Q}from"./TileAgent.js";import{TilePerLayerInfo as K}from"./TilePerLayerInfo.js";import{fallsWithinLayerView as Z}from"./tileUtils.js";const ee=.1;class te{constructor(){this._lij=[0,0,0],this._children=[null,null,null,null],this._pendingUpdates=0,this._dirty=!0,this._previouslyRendered=!1,this._lastElevationSourceUpdateRequestSignature=null,this.extent=p(),this._elevationBoundsMin=NaN,this._elevationBoundsMax=0,this.layerInfo=[[],[]],this.extentInRadians=p(),this.centerAtSeaLevel=d(),this._center=[d(),new M,d()],this.up=c(),this._withinClippingArea=!0,this._intersectsClippingArea=!0,this._maxTesselation=0,this._usedMemory=0,this._rasterTileMemory=0,this._vectorTileMemory=0,this._mapDataRefCount=0,this.screenDepth=0,this.renderOrder=0,this._edgeLen=0,this._edgeLen2=0,this._curvatureHeight=0,this.onCompressionFinished=()=>{this.setPendingUpdate(16),this.setMemoryDirty()},this.extentMidX=0,this.extentMidY=0,this.distanceToPOI=-1,this._lastPOI=d(),this.maxLevelDeltaNeighborCount=0,this.unmergableChildCount=0}get lij(){return this._lij}get spatialReference(){return this._surface.spatialReference??this._surface.tilingScheme.spatialReference}get isDisposed(){return null==this._surface}get elevationLevelDelta(){return this._surface.getElevationLevelDelta(this.level)}_setPendingUpdateForDescendants(){const e=this._children;if(e[0])for(const t of e)t.renderData&&(t.setPendingUpdate(16),t.setMemoryDirty()),t._setPendingUpdateForDescendants()}static prune(){ne.prune(0),re.prune(0),K.prune()}get _cached(){return!this.leaf&&this._mapDataRefCount<=0}get withinClippingArea(){return this._withinClippingArea}get intersectsClippingArea(){return this._intersectsClippingArea}get clippingArea(){return this._clippingArea}get parent(){return this._parent}get children(){return this._children}get surface(){return this._surface}get elevationBoundsMin(){return this._elevationBoundsMin}get elevationBoundsMax(){return this._elevationBoundsMax}get level(){return this._lij[0]}get key(){return`${this._lij[0]}/${this._lij[1]}/${this._lij[2]}`}get edgeLen(){return this._edgeLen}get radius(){return this._center[1].radius}get visible(){return this._dirty&&this.computeVisibility(),this._visible}get frustumVisibility(){return this._dirty&&this.computeVisibility(),this._frustumVisibility}computeVisibility(){this._dirty=!1;const e=this.parent,t=e?.frustumVisibility??1;this._frustumVisibility=0===t?0:2===t&&this._elevationBoundsMin>=e._elevationBoundsMin&&this._elevationBoundsMax<=e._elevationBoundsMax?2:this._calculateFrustumVisibility(this.surface.frustum);const i=2!==this._frustumVisibility&&this._intersectsClippingArea;i!==this._visible&&(this._visible=i,this._surface.emit("tiles-visibility-changed"),this._surface.renderer.setDirty(),this.updateAgentSuspension())}get _loadable(){return this.visible||this._surface.view.state.fixedContentCamera}get rendered(){const e=!!this.renderData;return e!==this._previouslyRendered&&(this._surface.emit("tiles-visibility-changed"),this._previouslyRendered=e,this._surface.renderer.setDirty()),e}init(e,t,i,s,n){this._lij[0]=e,this._lij[1]=t,this._lij[2]=i,this.ellipsoid=g(n.tilingScheme.spatialReference),n.tilingScheme.getExtent(e,t,i,this.extent),n.tilingScheme.convertExtentToRadians(this.extent,this.extentInRadians),this.extentMidX=.5*(this.extent[0]+this.extent[2]),this.extentMidY=.5*(this.extent[1]+this.extent[3]),this._withinClippingArea=!0,this._intersectsClippingArea=!0,this._clippingArea=null,this._mapDataRefCount=0,n.upsampleMapCache.pop(this.key),this._edgeLen=0,this._edgeLen2=0,this._center[1].radius=0,this.elevationLevel=e,this._lastElevationSourceUpdateRequestSignature=null,s&&!Number.isNaN(s.elevationBoundsMin)?(this._elevationBoundsMin=s.elevationBoundsMin,this._elevationBoundsMax=s.elevationBoundsMax):(this._elevationBoundsMin=0,this._elevationBoundsMax=0),this._pendingUpdates=0,this.renderData=null,this.screenDepth=0,this._visible=!1,this._previouslyRendered=!1,this._parent=s,this.clearChildren(),this._surface=n,this.updateVisibility(),this.maxLevelDeltaNeighborCount=0,this.unmergableChildCount=0;for(const r of b){const e=n.numLayers(r),t=this.layerInfo[r];for(const i of t)i.release();t.length=e;for(let i=0;i<e;i++)t[i]=K.acquire(this._surface.upsampleInfoPool),0===r&&this.findElevationBoundsForLayer(i,-1)}this.computeElevationBounds(),this._maxTesselation=Math.min(n.tilingScheme.pixelSize,T)}dispose(){P(!this.renderData,"tile.renderData was not unloaded"),this._surface?.upsampleMapCache.pop(this.key),this.layerInfo.forEach(e=>{e.forEach(e=>e.release()),e.length=0}),this._surface=this._parent=null,this.clearChildren(),this.setMemoryDirty()}refMapData(){++this._mapDataRefCount,this._cached||this._surface.upsampleMapCache.pop(this.key)}unrefMapData(){--this._mapDataRefCount,this._cached&&this.cachedMemory>0&&this._surface.upsampleMapCache.put(this.key,new j(e(this)))}setMemoryDirty(){this._usedMemory=0}get usedMemory(){return this._ensureUsedMemory()+(this._cached?0:this.mapDataMemory)}get cachedMemory(){return this._ensureUsedMemory(),null==this._surface?this.usedMemory:this._cached?this.mapDataMemory:0}get mapDataMemory(){return this._rasterTileMemory+this._vectorTileMemory}get _cpuImageMemorySize(){const e=4,t=this._surface.tilingScheme.pixelSize;return t*t*e}_ensureUsedMemory(){if(this._usedMemory>0)return this._vectorTileMemory=this.layerInfo[1].reduce((e,{data:t})=>e+(C(t)?t.usedMemoryPerReference:0),0),this._usedMemory;this._usedMemory=this._baseUsedMemory,this._rasterTileMemory=0,this._vectorTileMemory=0;for(const{data:e}of this.layerInfo[1])C(e)?this._vectorTileMemory+=e.usedMemoryPerReference:this._rasterTileMemory+=this.getTerrainDataMemory(e);for(const e of this.layerInfo[0])this._usedMemory+=e.data?this._cpuImageMemorySize:0;return this.renderData&&(this._usedMemory+=this.renderData.estimatedGeometryMemoryUsage,this._rasterTileMemory+=this.renderData.texture?.usedMemory??0),this._cached&&this._surface.upsampleMapCache.updateSize(this.key),this._usedMemory}getUsedMemoryForLayer(e,t){const i=this.layerInfo[e][t];return i?.data?1===e?this._cached?0:this.getTerrainDataMemory(i.data):0===e?this._cpuImageMemorySize:0:0}getTerrainDataMemory(e){return B(e)?e.texture.usedMemory:E(e)?e.memoryUsage:C(e)?e.usedMemoryPerReference:w(e)?this._cpuImageMemorySize:0}updateScreenDepth(e){const[t,i,s]=this._center[1].center,n=e,r=n[2]*t+n[6]*i+n[10]*s+n[14];this.screenDepth=r<0?0:r/(n[3]*t+n[7]*i+n[11]*s+n[15])}shouldSplit(e,t,i){if(!this.visible)return 0;if(e.frustum&&(!this._intersectsClippingArea||2===this._calculateFrustumVisibility(e.frustum)))return 0;const s=this.level;n(ce,this._center[1].center,t);let u=r(ce),d=ce,c=this._center[1].center;n(ge,this._center[0],t);const g=r(ge);g<u&&(u=g,d=ge,c=this._center[0]),n(pe,this._center[2],t);const p=r(pe);if(p<u&&(u=p,d=pe,c=this._center[2]),this._edgeLen2>u&&s<e.maxLod)return 1;const f=Math.sqrt(u),_=e.fovX*f*2,m=this._edgeLen/_,y=()=>{if(s<e.maxLod)return this.elevationLevel=s,0;const t=s+Math.ceil(-Math.log2(e.relativeWidthLimit/m));return t!==this.elevationLevel?(this.elevationLevel=t,2):0},v=null!=i?i-s:1/0;if(v<=.5)return y();const M=a(this.up,ce),A=this._elevationBoundsMax-this._elevationBoundsMin,x=A/this.edgeLen;if(e.aboveGround&&M>0&&x<.001){if(M/f-Math.sin(this._curvatureHeight/(this.edgeLen*Math.SQRT1_2)*Math.PI)-x>0)return y()}const D=null!=i?3-Math.min(v,2):1;if(m*D<e.relativeWidthLimit||s>=e.maxLod)return y();if(s<7)return 1;l(fe,this.up,M),n(fe,fe,d);const L=r(fe);if(L<=this.radius*this.radius)return 1;l(fe,fe,this.radius/Math.sqrt(L)),o(fe,fe,c),n(fe,t,fe);const S=Math.min(1,(Math.abs(a(fe,this.up))+.5*A+this._curvatureHeight)/h(fe)),b=ee/e.angledSplitBias,j=e.fovY*f*2;return S*(this._edgeLen/j*D)<b*e.relativeHeightLimit?y():1}needsElevationSourceUpdate(){const e=this.renderData?.geometryState.samplerDataSourceLevels;if(null==e)return!1;const t=Math.max(this.elevationLevel-this.elevationLevelDelta,0);return e.some(e=>e>t)&&this._lastElevationSourceUpdateRequestSignature!==this._elevationSourceUpdateRequestSignature(e)}markElevationSourceUpdateRequested(){const e=this.renderData?.geometryState.samplerDataSourceLevels;this._lastElevationSourceUpdateRequestSignature=null!=e?this._elevationSourceUpdateRequestSignature(e):null}_elevationSourceUpdateRequestSignature(e){return`${Math.max(this.elevationLevel-this.elevationLevelDelta,0)}:${e.join(",")}`}createChildren(){const e=this._children,t=this.lij[0]+1,i=2*this.lij[1],s=2*this.lij[2];return e[0]=this.surface.createTile(t,i,s,this),e[1]=this.surface.createTile(t,i,s+1,this),e[2]=this.surface.createTile(t,i+1,s,this),e[3]=this.surface.createTile(t,i+1,s+1,this),e}clearChildren(){this._children[0]=this._children[1]=this._children[2]=this._children[3]=null}get loaded(){return this.renderData?.hasGeometry??!1}get hasGeometryState(){return null!=this.renderData?.geometryState}load(){this.refMapData();for(const e of b)this._createOrUpdateAgents(0,e);this.surface.renderer.loadTile(this)}unload(){this.renderData&&this.unrefMapData(),this.surface.renderer.unloadTile(this);for(const e of b){const t=this.layerInfo[e];for(const e of t)e.loadingAgent&&e.loadingAgent!==Q&&(se(e.loadingAgent),e.loadingAgent=null),e.pendingUpdates=0}this.resetPendingUpdate(8),this.resetPendingUpdate(16),this.resetPendingUpdate(32)}unloadMapData(){const e=this.layerInfo[1];for(const t of e)t.loadingAgent&&t.loadingAgent!==Q&&(se(t.loadingAgent),t.loadingAgent=null),t.pendingUpdates=0,t.invalidateSourceData();this.renderData?.releaseTexture(),this.setMemoryDirty()}updateClippingStatus(e){if(f(e,this._clippingArea))return!1;const t=this._intersectsClippingArea,i=this._withinClippingArea;null!=e?(this._intersectsClippingArea=this.intersectsExtent(e),this._withinClippingArea=this._isWithinExtent(e)):(this._intersectsClippingArea=!0,this._withinClippingArea=!0),this._clippingArea=e,this.updateVisibility();const s=i&&this._withinClippingArea,n=!(i||t||this._withinClippingArea||this._intersectsClippingArea);return!this.renderData||s||n||this.setPendingUpdate(8),!0}updateVisibility(){this._dirty=!0,this._surface.setTileTreeDirty(!1)}getLayerInfo(e,t){return this.layerInfo[t][e]}hasLayerData(e,t){const i=this.layerInfo[t][e];return!(!i?.data||i.dataInvalidated)}get updating(){if(this.hasPendingUpdates)return!0;for(const e of b){const t=this.layerInfo[e];for(const e of t)if(e.loadingAgent&&e.loadingAgent!==Q&&e.loadingAgent.updating)return!0}return!1}_isSuspended(e){return!!this.hasPendingUpdate(1)||0!==e&&!this._loadable}get hasPendingUpdates(){return 0!==this._pendingUpdates}hasPendingUpdate(e){return(this._pendingUpdates&e)===e}setPendingUpdate(e){const t=this._pendingUpdates;return this._pendingUpdates|=e,1===e||4===e?this._surface.setTileTreeDirty(!0):this._surface.requestUpdate(),t!==this._pendingUpdates}resetPendingUpdate(e){return!!this.hasPendingUpdate(e)&&(this._pendingUpdates&=~e,!0)}requestLayerData(e,t,s){const n=this.layerInfo[t][e];if(n.waitingAgents.has(s))return console.warn("agent already requested this piece of map data (tile %s, agent tile %s, layer: %d/%d)",this._lij.toString(),s.tile.lij.toString(),t,e),!0;if(n.waitingAgents.push(s),n.data&&!n.dataInvalidated){console.warn("agent requested existing data (tile %s, agent tile %s, layer: %d/%d)",this._lij.toString(),s.tile.lij.toString(),t,e);const i=C(n.data);return s.dataArrived(this,i),!0}if(n.requestPromise)return!0;i(n.requestAbort),n.requestAbort=new AbortController;const r=this._surface.requestTileData(this,e,t,{signal:n.requestAbort.signal});if(!r)return n.requestAbort=null,!1;const a=()=>{n.requestPromise===r&&(n.requestPromise=null,n.requestAbort=null)};return n.requestPromise=r,r.then(a,a),!0}get leaf(){return null==this._children[0]}hasLij(e){return this._lij[0]===e[0]&&this._lij[1]===e[1]&&this._lij[2]===e[2]}findByLij(e){if(this.hasLij(e))return this;const t=this._children;if(!t[0])return null;return t[0].findByLij(e)||t[1].findByLij(e)||t[2].findByLij(e)||t[3].findByLij(e)}distanceToSquared(e){return r(n(fe,this._center[1].center,e))}containsPoint(e){const t=this.extent;return e[0]>=t[0]&&e[1]>=t[1]&&e[0]<=t[2]&&e[1]<=t[3]}containsPointXY(e,t){const i=this.extent;return e>=i[0]&&t>=i[1]&&e<=i[2]&&t<=i[3]}unrequestLayerData(e,t,i){const s=this.layerInfo[t][e],n=s.waitingAgents,r=null!=n.removeUnordered(i);P(r,"agent has not requested this piece of map data"),n.length<1&&(s.abortRequest(),this.setMemoryDirty())}dataArrived(e,t,i){const s=C(i),n=this.layerInfo[t][e];n.data=i,n.dataInvalidated=!1,n.waitingAgents.forAll(e=>e.dataArrived(this,s)),n.waitingAgents.clear(),this.setMemoryDirty()}dataMissing(e,t){const i=this.layerInfo[t][e];i.dataMissing=!0,i.waitingAgents.forAll(e=>e.dataMissing()),i.waitingAgents.clear(),this.setMemoryDirty()}updateRenderData(e,t,i){switch(i&&this.forEachLoadedNeighbor(i=>i.updateRenderData(e,t)),e){case 1:return this._updateTexture(t);case 0:return this._updateGeometry()}}_updateTexture(e){this.renderData&&(this.resetPendingUpdate(0===e?16:32),this.setPendingUpdate(0===e?32:16))}_updateGeometry(){this.setPendingUpdate(8);for(const e of this.layerInfo[0])e.pendingUpdates|=8}invalidateLayerData(e,t){this.layerInfo[t][e].invalidateSourceData()}computeElevationBounds(){const e=this._elevationBoundsMin,t=this._elevationBoundsMax;let i=1/0,s=-1/0;const n=this.layerInfo[0];let r=!0;for(const a of n)null!=a.elevationBounds&&(i=Math.min(i,a.elevationBounds.minElevation),s=Math.max(s,a.elevationBounds.maxElevation),a.elevationBounds.hasNoDataValues||(r=!1));r&&(i=Math.min(i,0),s=Math.max(s,0)),e===i&&t===s||(this._elevationBoundsMin=i,this._elevationBoundsMax=s,this.updateRadiusAndCenter(),this._surface.setTileTreeDirty(!1))}_updateCenter(){const e=this._elevationBoundsMin,t=this._elevationBoundsMax,i=.5*(e+t),s=this._center;l(fe,this.up,i),o(s[1].center,this.centerAtSeaLevel,fe),l(fe,this.up,e),o(s[0],this.centerAtSeaLevel,fe),l(fe,this.up,t),o(s[2],this.centerAtSeaLevel,fe)}findElevationBoundsForLayer(e,t){const i=this.layerInfo[0][e],s=this.elevationLevelDelta,n=Math.max(this.elevationLevel-s,0),r=i.elevationBounds;if(null!=r&&r.level>=t&&r.level<=n)return;const a=this._surface.layerViewByIndex(e,0);if(!Z(this,a))return;const l=ae;let o=!1;const h=i.data;if(h&&h.level<=n){const e=i.data;l.minElevation=e.samplerData.data.minValue,l.maxElevation=e.samplerData.data.maxValue,l.hasNoDataValues=e.samplerData.data.hasNoDataValues,l.level=this.level,o=!0}else{let t,i,r=0;for(let a=this._parent;a&&(!i||r<s)&&(r=this.elevationLevel-a.level,t=i||t,i=a.layerInfo[0][e].data,!(!i&&t&&a.level<=n));a=a.parent);i=i||t,i&&(i.computeMinMaxValue(this._lij[0],this._lij[1],this._lij[2],l),l.minElevation!==1/0&&(l.level=i.level,o=!0))}o&&(null==i.elevationBounds&&(i.elevationBounds=new D),i.elevationBounds.copyFrom(l))}modifyLayers(e,t,i){const s=this.layerInfo[i];for(const a of s)a.loadingAgent&&a.loadingAgent!==Q&&(se(a.loadingAgent),a.loadingAgent=null),a.waitingAgents.clear();for(let a=0;a<s.length;++a)void 0===e[a]&&s[a].release();const n=new Array(...s),r=t.length;s.length=r;for(let a=0;a<r;a++){const e=t[a];s[a]=e>-1?n[e]:K.acquire(this._surface.upsampleInfoPool)}this.setMemoryDirty()}restartAgents(e){this.renderData&&(this._createOrUpdateAgents(0,e),this.updateRenderData(e,0))}updateAgents(e){if(this.renderData){const t=this.layerInfo[e];for(const e of t)e.loadingAgent===Q&&(e.loadingAgent=null);this._createOrUpdateAgents(0,e)}}updateAgentSuspension(){for(const e of b){const t=this._isSuspended(e);for(const i of this.layerInfo[e])i.loadingAgent&&i.loadingAgent!==Q&&(i.loadingAgent.setSuspension(t),i.loadingAgent===Q&&this.updateRenderData(e,0))}}removeLayerAgent(e,t){const i=this.layerInfo[t][e];i.loadingAgent&&i.loadingAgent!==Q&&i.loadingAgent.dispose(),i.loadingAgent=null}agentDone(e,t){const i=this.layerInfo[t][e];i.loadingAgent=Q,i.data||null!=i.upsampleInfo||this._createOrUpdateAgents(e+1,t)}_hasBlendableAncestor(e){return"normal"!==e.blendMode||A(e.parent)&&this._hasBlendableAncestor(e.parent)}_hasBlendModes(e,t,i){for(let s=e;s<t;++s){const e=this._surface.layerViewByIndex(s,i);if(R(e)&&"normal"!==e?.layer?.blendMode||A(e?.layer?.parent)&&this._hasBlendableAncestor(e?.layer?.parent))return!0}return!1}_createOrUpdateAgents(e,t){const i=this.layerInfo[t];if(0===i.length)return;const s=this._isSuspended(t);let n=!1;for(let r=e;r<i.length;++r){const a=i[r],l=this._surface.layerViewByIndex(r,t);let o=!1;n&&!x(l)||(a.loadingAgent?Z(this,l)?(a.loadingAgent!==Q&&a.loadingAgent.setSuspension(s),a.loadingAgent!==Q&&(o=a.loadingAgent.update())):a.dispose():Z(this,l)&&(a.loadingAgent=ie(this,r,t,s),o=a.loadingAgent.startLoading(),o?a.loadingAgent===Q&&this.setPendingUpdate(8):(se(a.loadingAgent),a.loadingAgent=Q)),a.loadingAgent===Q&&this.updateRenderData(t,0),!l.destroyed&&!this._hasBlendModes(e,i.length,t)&&o&&l.isOpaque&&(n||=!0))}}_isWithinExtent(e){const t=this.extent;return t[0]>=e[0]&&e[2]>=t[2]&&t[1]>=e[1]&&e[3]>=t[3]}intersectsExtent(e){const t=this.extent;return t[2]>=e[0]&&e[2]>=t[0]&&t[3]>=e[1]&&e[3]>=t[1]}getElevationVerticesPerSide(e){const i=this.elevationLevel-this.level,s=Math.max(this.level-e,this.elevationLevelDelta-i),n=t(1+(this._maxTesselation>>s),2,this._maxTesselation+1),r=this.minimumVerticesPerSide;return Math.max(n,r)}_findLIJ(e,t){if(!e)return null;const{rootTiles:i}=this.surface;if(null!=i)for(const s of i)if(le(s,e)){let i=s,n=e[0]-i.level-1;for(;n>=0&&!i.leaf&&!t(i);){const t=e[1]>>n&1,s=e[2]>>n&1;i=i.children[2*t+s],n--}return t(i)?i:null}return null}findNeighborTile(e,t){const i=this._lij,s=this._getNeighborLIJ(i,e);return s?oe(i,s)?t(this)?this:null:this._findLIJ(s,t):null}findCorner(e,t){const i=1===e?1:7===e?0:5===e?2:3;let s=this;for(;s.children[0]&&(!t||!t(s));)s=s.children[i];return s}findNeighborCornerTileExact(e,t){return this.findNeighborTile(e,e=>t(e)||e.level===this.level)?.findCorner(q(e),t)||null}forAllSubtreeOnSide(e,t){const i=0===e?[0,1]:1===e?[1]:2===e?[1,3]:3===e?[3]:4===e?[2,3]:5===e?[2]:6===e?[0,2]:[0],s=e=>{const n=e.children;!t(e)&&n[0]&&i.forEach(e=>s(n[e]))};s(this)}getNeighborEdgeStartVertexIndex(e,t){if(!t)return 0;const i=this.level-t.level;if(O(!V||i>=0),0===i)return 0;const s=2**i,n=!(1&~e),r=n?0:1,a=t.lij[r+1]*s,l=this._lij[r+1],o=l-a,h=n?s-1-o:o;return V&&(O(a<=l&&l<a+s),O(0<=h&&h<s)),h}forEachLoadedNeighbor(e){const t=this.level,i=e=>e.level===t||e.loaded;N.forEach(t=>{const s=this.findNeighborTile(t,i);null!=s&&s!==this&&s.forAllSubtreeOnSide(G(t),i=>!!i.loaded&&(e(i,t),!0))}),k.forEach(t=>{const s=this.findNeighborTile(t,i)?.findCorner(q(t),e=>e.loaded);O(!s||he(this,s,t)),s?.loaded&&e(s,t)})}_getNeighborLIJ(e,t){const i=W(t)?-1:J(t)?1:0,s=H(t)?-1:$(t)?1:0,n=[e[0],e[1]+i,e[2]+s];return n[1]<0?null:this.surface.isGlobal?this._wrapLIJ(n):n[2]<0?null:n}_wrapLIJ(e){return!e||e[1]<0||e[1]>=2**e[0]?null:this.surface.wrapEastWest(e)}isEdgeNeighbor(e,t){if(null==e)return!1;if(0===this.level&&0===e.level){if(this._eastEnd&&e._westEnd&&2===t)return!0;if(this._westEnd&&e._eastEnd&&6===t)return!0}const i=Math.max(1e-6*(this.extent[2]-this.extent[0]),1);switch(t){case 0:return F(this.extent[3],e.extent[1],i);case 4:return F(this.extent[1],e.extent[3],i);case 2:return F(this.extent[2],e.extent[0],i)||F(this.extent[2],-e.extent[0],i);case 6:return F(this.extent[0],e.extent[2],i)||F(this.extent[0],-e.extent[2],i)}}get _eastEnd(){return this._lij[2]===this.surface.lijEastEnd(this.level)-1}get _westEnd(){return 0===this._lij[2]}checkGeometryWaterproofness(){z&&(O(this.loaded),this.renderData?.checkGeometryWaterproofness())}shouldHaveNeighbor(e){const t=this.extent,{rootTilesExtent:i}=this._surface,s=.25*(t[2]-t[0]);if(W(e)&&t[3]+s>=i[3])return!1;if(J(e)&&t[1]-s<=i[1])return!1;const n=this.surface.isGlobal;return!(!n&&H(e)&&t[0]-s<=i[0])&&!(!n&&$(e)&&t[2]+s>=i[2])}updateDistanceToPOI(e){const t=this._lastPOI;if(this.distanceToPOI>=0&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2])return;u(this._lastPOI,e);const i=this._center[1].center,s=e[0]-i[0],n=e[1]-i[1],r=e[2]-i[2];this.distanceToPOI=s*s+n*n+r*r}updateOverlayParameters(e){const{renderData:t}=this;if(!t)return;const{overlays:i,longitudeCyclical:s}=e,n=t.overlay;if(0===i.length)this._clearTileOverlayData(0,n),this._clearTileOverlayData(1,n);else{const[e,t]=i,r=this.extent;_(e.extent,r,s)||m(r,e.extent,s)||m(r,t.extent,s)?(this._setOverlayData(i,s,r,0,n),this._setOverlayData(i,s,r,1,n)):(this._clearTileOverlayData(0,n),this._clearTileOverlayData(1,n))}}_setOverlayData(e,t,i,s,n){const r=e[s].extent,a=y(r),l=v(r);let o=i[0];if(t){o=t.minimalMonotonic(r[0],o);const e=t.minimalMonotonic(r[0],i[2]);o>e&&(o=e-(i[2]-i[0]))}if(0===a||0===l)return void n.setOffsetAndScale(s,0,0,1,1);const h=y(i)/a,u=v(i)/l,d=(o-r[0])/a,c=(i[1]-r[1])/l;n.setOffsetAndScale(s,d,c,h,u)}_clearTileOverlayData(e,t){t.setOffsetAndScale(e,-1,-1,-1,-1)}}function ie(e,t,i,s){const n=0===i?re.acquire():ne.acquire();return n.init(e,t,i,s),n}function se(e){e.dispose(),S(e)?re.release(e):U(e)&&ne.release(e)}const ne=new s(()=>new I),re=new s(()=>new L),ae=new D;function le(e,t){const i=e.lij,s=t[0]-i[0];return!(s<0)&&(t[1]>>s===i[1]&&t[2]>>s===i[2])}function oe(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function he(e,t,i){return null!=e&&null!=t&&t!==e&&(e.level>=t.level?ue(e,t,i):ue(t,e,q(i)))}function ue(e,t,i){O(e.level>=t.level);const s=X(i),n=Y(i),r=e.extent,a=t.extent,l=[s?r[0]:r[2],n?r[3]:r[1]],o=[s?a[2]:a[0],n?a[1]:a[3]],h=1e-5*(r[2]-r[0]),u=F(l[0],o[0],h)||e.surface.isGlobal&&F(l[0],-o[0],h),d=F(l[1],o[1],h);if(u&&d)return!0;if(e.level===t.level)return O(!1),!1;if(!u&&!d)return O(!1),!1;const c=u?de(a[1],a[3],r[1],r[3],h):de(a[0],a[2],r[0],r[2],h);return O(c),c}function de(e,t,i,s,n){return e-n<=i&&i<=s&&s<=t+n}const ce=d(),ge=d(),pe=d(),fe=d();export{te as Tile,he as isCornerNeighbor,oe as lijEquals};
2
+ import{toConst as e}from"../../../core/compilerUtils.js";import"../../../core/has.js";import{clamp as t}from"../../../core/mathUtils.js";import{abortMaybe as i}from"../../../core/maybe.js";import s from"../../../core/ObjectPool.js";import{subtract as n,squaredLength as r,dot as a,scale as l,add as o,length as h,copy as u}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as d,unitZ as c}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getReferenceEllipsoid as g}from"../../../geometry/ellipsoidUtils.js";import{create as p,equals as f,rectangleContainsRectangleCyclicalAware as _,rectanglesIntersectCyclicalAware as m,width as y,height as v}from"../../../geometry/support/aaBoundingRect.js";import{Sphere as M}from"../../../geometry/support/sphere.js";import{isGroupLayer as A}from"../../../layers/support/layerUtils.js";import{isLayerViewWithFlowRenderer as x}from"../support/flowUtils.js";import{ElevationBounds as D}from"./ElevationBounds.js";import{ElevationTileAgent as b,isElevationTileAgent as L}from"./ElevationTileAgent.js";import{LayerClasses as S}from"./LayerClass.js";import{MapDataCacheItem as j}from"./MapDataCacheItem.js";import{MapTileAgent as I,isMapTileAgent as U}from"./MapTileAgent.js";import{maxPatchTesselation as T}from"./TerrainConst.js";import{isVectorTile as C,isTileTexture as B,isRasterTile as w,isCreateBitmapResult as E}from"./TerrainData.js";import{weakAssert as P,isBlendableLayerView as R,oppositeCorner as q,internalAssert as V,enableTerrainInternalChecks as O,neighborEdgeIndices as N,oppositeEdge as G,neighborCornerIndices as k,almostEquals as F,enableWaterproofTests as z,isNorth as W,isSouth as J,isWest as $,isEast as H,isWestCorner as X,isNorthCorner as Y}from"./terrainUtils.js";import{tileAgentDone as Q}from"./TileAgent.js";import{TilePerLayerInfo as K}from"./TilePerLayerInfo.js";import{fallsWithinLayerView as Z}from"./tileUtils.js";const ee=.1;class te{constructor(){this._lij=[0,0,0],this._children=[null,null,null,null],this._pendingUpdates=0,this._dirty=!0,this._previouslyRendered=!1,this._lastElevationSourceUpdateRequestSignature=null,this.extent=p(),this._elevationBoundsMin=NaN,this._elevationBoundsMax=0,this.layerInfo=[[],[]],this.extentInRadians=p(),this.centerAtSeaLevel=d(),this._center=[d(),new M,d()],this.up=c(),this._withinClippingArea=!0,this._intersectsClippingArea=!0,this._maxTesselation=0,this._usedMemory=0,this._rasterTileMemory=0,this._vectorTileMemory=0,this._mapDataRefCount=0,this.screenDepth=0,this.renderOrder=0,this._edgeLen=0,this._edgeLen2=0,this._curvatureHeight=0,this.onCompressionFinished=()=>{this.setPendingUpdate(16),this.setMemoryDirty()},this.extentMidX=0,this.extentMidY=0,this.distanceToPOI=-1,this._lastPOI=d(),this.maxLevelDeltaNeighborCount=0,this.unmergableChildCount=0}get lij(){return this._lij}get spatialReference(){return this._surface.spatialReference??this._surface.tilingScheme.spatialReference}get isDisposed(){return null==this._surface}get elevationLevelDelta(){return this._surface.getElevationLevelDelta(this.level)}_setPendingUpdateForDescendants(){const e=this._children;if(e[0])for(const t of e)t.renderData&&(t.setPendingUpdate(16),t.setMemoryDirty()),t._setPendingUpdateForDescendants()}static prune(){ne.prune(0),re.prune(0),K.prune()}get _cached(){return!this.leaf&&this._mapDataRefCount<=0}get withinClippingArea(){return this._withinClippingArea}get intersectsClippingArea(){return this._intersectsClippingArea}get clippingArea(){return this._clippingArea}get parent(){return this._parent}get children(){return this._children}get surface(){return this._surface}get elevationBoundsMin(){return this._elevationBoundsMin}get elevationBoundsMax(){return this._elevationBoundsMax}get level(){return this._lij[0]}get key(){return`${this._lij[0]}/${this._lij[1]}/${this._lij[2]}`}get edgeLen(){return this._edgeLen}get radius(){return this._center[1].radius}get visible(){return this._dirty&&this.computeVisibility(),this._visible}get frustumVisibility(){return this._dirty&&this.computeVisibility(),this._frustumVisibility}checkVisibility(e){if(this._dirty)return null;const t=this._calculateVisibility(e);if(this._frustumVisibility!==t||this._visible!==(2!==t&&this._intersectsClippingArea))throw new Error(`Assertion failed: waterproof.visibility-cache-mismatch: Tile[${this.lij}]`);return t}computeVisibility(){this._dirty=!1;const e=this.parent?.frustumVisibility??1;this._frustumVisibility=this._calculateVisibility(e);const t=2!==this._frustumVisibility&&this._intersectsClippingArea;t!==this._visible&&(this._visible=t,this._surface.emit("tiles-visibility-changed"),this._surface.renderer.setDirty(),this.updateAgentSuspension())}_calculateVisibility(e){const t=this.parent;return 0===e?0:null!=t&&2===e&&this._elevationBoundsMin>=t._elevationBoundsMin&&this._elevationBoundsMax<=t._elevationBoundsMax?2:this._calculateFrustumVisibility(this.surface.frustum)}get _loadable(){return this.visible||this._surface.view.state.fixedContentCamera}get rendered(){const e=!!this.renderData;return e!==this._previouslyRendered&&(this._surface.emit("tiles-visibility-changed"),this._previouslyRendered=e,this._surface.renderer.setDirty()),e}init(e,t,i,s,n){this._lij[0]=e,this._lij[1]=t,this._lij[2]=i,this.ellipsoid=g(n.tilingScheme.spatialReference),n.tilingScheme.getExtent(e,t,i,this.extent),n.tilingScheme.convertExtentToRadians(this.extent,this.extentInRadians),this.extentMidX=.5*(this.extent[0]+this.extent[2]),this.extentMidY=.5*(this.extent[1]+this.extent[3]),this._withinClippingArea=!0,this._intersectsClippingArea=!0,this._clippingArea=null,this._mapDataRefCount=0,n.upsampleMapCache.pop(this.key),this._edgeLen=0,this._edgeLen2=0,this._center[1].radius=0,this.elevationLevel=e,this._lastElevationSourceUpdateRequestSignature=null,s&&!Number.isNaN(s.elevationBoundsMin)?(this._elevationBoundsMin=s.elevationBoundsMin,this._elevationBoundsMax=s.elevationBoundsMax):(this._elevationBoundsMin=0,this._elevationBoundsMax=0),this._pendingUpdates=0,this.renderData=null,this.screenDepth=0,this._visible=!1,this._previouslyRendered=!1,this._parent=s,this.clearChildren(),this._surface=n,this.updateVisibility(),this.maxLevelDeltaNeighborCount=0,this.unmergableChildCount=0;for(const r of S){const e=n.numLayers(r),t=this.layerInfo[r];for(const i of t)i.release();t.length=e;for(let i=0;i<e;i++)t[i]=K.acquire(this._surface.upsampleInfoPool),0===r&&this.findElevationBoundsForLayer(i,-1)}this.computeElevationBounds(),this._maxTesselation=Math.min(n.tilingScheme.pixelSize,T)}dispose(){P(!this.renderData,"tile.renderData was not unloaded"),this._surface?.upsampleMapCache.pop(this.key),this.layerInfo.forEach(e=>{e.forEach(e=>e.release()),e.length=0}),this._surface=this._parent=null,this.clearChildren(),this.setMemoryDirty()}refMapData(){++this._mapDataRefCount,this._cached||this._surface.upsampleMapCache.pop(this.key)}unrefMapData(){--this._mapDataRefCount,this._cached&&this.cachedMemory>0&&this._surface.upsampleMapCache.put(this.key,new j(e(this)))}setMemoryDirty(){this._usedMemory=0}get usedMemory(){return this._ensureUsedMemory()+(this._cached?0:this.mapDataMemory)}get cachedMemory(){return this._ensureUsedMemory(),null==this._surface?this.usedMemory:this._cached?this.mapDataMemory:0}get mapDataMemory(){return this._rasterTileMemory+this._vectorTileMemory}get _cpuImageMemorySize(){const e=4,t=this._surface.tilingScheme.pixelSize;return t*t*e}_ensureUsedMemory(){if(this._usedMemory>0)return this._vectorTileMemory=this.layerInfo[1].reduce((e,{data:t})=>e+(C(t)?t.usedMemoryPerReference:0),0),this._usedMemory;this._usedMemory=this._baseUsedMemory,this._rasterTileMemory=0,this._vectorTileMemory=0;for(const{data:e}of this.layerInfo[1])C(e)?this._vectorTileMemory+=e.usedMemoryPerReference:this._rasterTileMemory+=this.getTerrainDataMemory(e);for(const e of this.layerInfo[0])this._usedMemory+=e.data?this._cpuImageMemorySize:0;return this.renderData&&(this._usedMemory+=this.renderData.estimatedGeometryMemoryUsage,this._rasterTileMemory+=this.renderData.texture?.usedMemory??0),this._cached&&this._surface.upsampleMapCache.updateSize(this.key),this._usedMemory}getUsedMemoryForLayer(e,t){const i=this.layerInfo[e][t];return i?.data?1===e?this._cached?0:this.getTerrainDataMemory(i.data):0===e?this._cpuImageMemorySize:0:0}getTerrainDataMemory(e){return B(e)?e.texture.usedMemory:w(e)?e.memoryUsage:C(e)?e.usedMemoryPerReference:E(e)?this._cpuImageMemorySize:0}updateScreenDepth(e){const[t,i,s]=this._center[1].center,n=e,r=n[2]*t+n[6]*i+n[10]*s+n[14];this.screenDepth=r<0?0:r/(n[3]*t+n[7]*i+n[11]*s+n[15])}shouldSplit(e,t,i){if(!this.visible)return 0;if(e.frustum&&(!this._intersectsClippingArea||2===this._calculateFrustumVisibility(e.frustum)))return 0;const s=this.level;n(ce,this._center[1].center,t);let u=r(ce),d=ce,c=this._center[1].center;n(ge,this._center[0],t);const g=r(ge);g<u&&(u=g,d=ge,c=this._center[0]),n(pe,this._center[2],t);const p=r(pe);if(p<u&&(u=p,d=pe,c=this._center[2]),this._edgeLen2>u&&s<e.maxLod)return 1;const f=Math.sqrt(u),_=e.fovX*f*2,m=this._edgeLen/_,y=()=>{if(s<e.maxLod)return this.elevationLevel=s,0;const t=s+Math.ceil(-Math.log2(e.relativeWidthLimit/m));return t!==this.elevationLevel?(this.elevationLevel=t,2):0},v=null!=i?i-s:1/0;if(v<=.5)return y();const M=a(this.up,ce),A=this._elevationBoundsMax-this._elevationBoundsMin,x=A/this.edgeLen;if(e.aboveGround&&M>0&&x<.001){if(M/f-Math.sin(this._curvatureHeight/(this.edgeLen*Math.SQRT1_2)*Math.PI)-x>0)return y()}const D=null!=i?3-Math.min(v,2):1;if(m*D<e.relativeWidthLimit||s>=e.maxLod)return y();if(s<7)return 1;l(fe,this.up,M),n(fe,fe,d);const b=r(fe);if(b<=this.radius*this.radius)return 1;l(fe,fe,this.radius/Math.sqrt(b)),o(fe,fe,c),n(fe,t,fe);const L=Math.min(1,(Math.abs(a(fe,this.up))+.5*A+this._curvatureHeight)/h(fe)),S=ee/e.angledSplitBias,j=e.fovY*f*2;return L*(this._edgeLen/j*D)<S*e.relativeHeightLimit?y():1}needsElevationSourceUpdate(){const e=this.renderData?.geometryState.samplerDataSourceLevels;if(null==e)return!1;const t=Math.max(this.elevationLevel-this.elevationLevelDelta,0);return e.some(e=>e>t)&&this._lastElevationSourceUpdateRequestSignature!==this._elevationSourceUpdateRequestSignature(e)}markElevationSourceUpdateRequested(){const e=this.renderData?.geometryState.samplerDataSourceLevels;this._lastElevationSourceUpdateRequestSignature=null!=e?this._elevationSourceUpdateRequestSignature(e):null}_elevationSourceUpdateRequestSignature(e){return`${Math.max(this.elevationLevel-this.elevationLevelDelta,0)}:${e.join(",")}`}createChildren(){const e=this._children,t=this.lij[0]+1,i=2*this.lij[1],s=2*this.lij[2];return e[0]=this.surface.createTile(t,i,s,this),e[1]=this.surface.createTile(t,i,s+1,this),e[2]=this.surface.createTile(t,i+1,s,this),e[3]=this.surface.createTile(t,i+1,s+1,this),e}clearChildren(){this._children[0]=this._children[1]=this._children[2]=this._children[3]=null}get loaded(){return this.renderData?.hasGeometry??!1}get hasGeometryState(){return null!=this.renderData?.geometryState}load(){this.refMapData();for(const e of S)this._createOrUpdateAgents(0,e);this.surface.renderer.loadTile(this)}unload(){this.renderData&&this.unrefMapData(),this.surface.renderer.unloadTile(this);for(const e of S){const t=this.layerInfo[e];for(const e of t)e.loadingAgent&&e.loadingAgent!==Q&&(se(e.loadingAgent),e.loadingAgent=null),e.pendingUpdates=0}this.resetPendingUpdate(8),this.resetPendingUpdate(16),this.resetPendingUpdate(32)}unloadMapData(){const e=this.layerInfo[1];for(const t of e)t.loadingAgent&&t.loadingAgent!==Q&&(se(t.loadingAgent),t.loadingAgent=null),t.pendingUpdates=0,t.invalidateSourceData();this.renderData?.releaseTexture(),this.setMemoryDirty()}updateClippingStatus(e){if(f(e,this._clippingArea))return!1;const t=this._intersectsClippingArea,i=this._withinClippingArea;null!=e?(this._intersectsClippingArea=this.intersectsExtent(e),this._withinClippingArea=this._isWithinExtent(e)):(this._intersectsClippingArea=!0,this._withinClippingArea=!0),this._clippingArea=e,this.updateVisibility();const s=i&&this._withinClippingArea,n=!(i||t||this._withinClippingArea||this._intersectsClippingArea);return!this.renderData||s||n||this.setPendingUpdate(8),!0}updateVisibility(){this._dirty=!0,this._surface.setTileTreeDirty(!1)}getLayerInfo(e,t){return this.layerInfo[t][e]}hasLayerData(e,t){const i=this.layerInfo[t][e];return!(!i?.data||i.dataInvalidated)}get updating(){if(this.hasPendingUpdates)return!0;for(const e of S){const t=this.layerInfo[e];for(const e of t)if(e.loadingAgent&&e.loadingAgent!==Q&&e.loadingAgent.updating)return!0}return!1}_isSuspended(e){return!!this.hasPendingUpdate(1)||0!==e&&!this._loadable}get hasPendingUpdates(){return 0!==this._pendingUpdates}hasPendingUpdate(e){return(this._pendingUpdates&e)===e}setPendingUpdate(e){const t=this._pendingUpdates;return this._pendingUpdates|=e,1===e||4===e?this._surface.setTileTreeDirty(!0):this._surface.requestUpdate(),t!==this._pendingUpdates}resetPendingUpdate(e){return!!this.hasPendingUpdate(e)&&(this._pendingUpdates&=~e,!0)}requestLayerData(e,t,s){const n=this.layerInfo[t][e];if(n.waitingAgents.has(s))return console.warn("agent already requested this piece of map data (tile %s, agent tile %s, layer: %d/%d)",this._lij.toString(),s.tile.lij.toString(),t,e),!0;if(n.waitingAgents.push(s),n.data&&!n.dataInvalidated){console.warn("agent requested existing data (tile %s, agent tile %s, layer: %d/%d)",this._lij.toString(),s.tile.lij.toString(),t,e);const i=C(n.data);return s.dataArrived(this,i),!0}if(n.requestPromise)return!0;i(n.requestAbort),n.requestAbort=new AbortController;const r=this._surface.requestTileData(this,e,t,{signal:n.requestAbort.signal});if(!r)return n.requestAbort=null,!1;const a=()=>{n.requestPromise===r&&(n.requestPromise=null,n.requestAbort=null)};return n.requestPromise=r,r.then(a,a),!0}get leaf(){return null==this._children[0]}hasLij(e){return this._lij[0]===e[0]&&this._lij[1]===e[1]&&this._lij[2]===e[2]}findByLij(e){if(this.hasLij(e))return this;const t=this._children;if(!t[0])return null;return t[0].findByLij(e)||t[1].findByLij(e)||t[2].findByLij(e)||t[3].findByLij(e)}distanceToSquared(e){return r(n(fe,this._center[1].center,e))}containsPoint(e){const t=this.extent;return e[0]>=t[0]&&e[1]>=t[1]&&e[0]<=t[2]&&e[1]<=t[3]}containsPointXY(e,t){const i=this.extent;return e>=i[0]&&t>=i[1]&&e<=i[2]&&t<=i[3]}unrequestLayerData(e,t,i){const s=this.layerInfo[t][e],n=s.waitingAgents,r=null!=n.removeUnordered(i);P(r,"agent has not requested this piece of map data"),n.length<1&&(s.abortRequest(),this.setMemoryDirty())}dataArrived(e,t,i){const s=C(i),n=this.layerInfo[t][e];n.data=i,n.dataInvalidated=!1,n.waitingAgents.forAll(e=>e.dataArrived(this,s)),n.waitingAgents.clear(),this.setMemoryDirty()}dataMissing(e,t){const i=this.layerInfo[t][e];i.dataMissing=!0,i.waitingAgents.forAll(e=>e.dataMissing()),i.waitingAgents.clear(),this.setMemoryDirty()}updateRenderData(e,t,i){switch(i&&this.forEachLoadedNeighbor(i=>i.updateRenderData(e,t)),e){case 1:return this._updateTexture(t);case 0:return this._updateGeometry()}}_updateTexture(e){this.renderData&&(this.resetPendingUpdate(0===e?16:32),this.setPendingUpdate(0===e?32:16))}_updateGeometry(){this.setPendingUpdate(8);for(const e of this.layerInfo[0])e.pendingUpdates|=8}invalidateLayerData(e,t){this.layerInfo[t][e].invalidateSourceData()}computeElevationBounds(){const e=this._elevationBoundsMin,t=this._elevationBoundsMax;let i=1/0,s=-1/0;const n=this.layerInfo[0];let r=!0;for(const a of n)null!=a.elevationBounds&&(i=Math.min(i,a.elevationBounds.minElevation),s=Math.max(s,a.elevationBounds.maxElevation),a.elevationBounds.hasNoDataValues||(r=!1));r&&(i=Math.min(i,0),s=Math.max(s,0)),e===i&&t===s||(this._elevationBoundsMin=i,this._elevationBoundsMax=s,this.updateRadiusAndCenter(),this._surface.setTileTreeDirty(!1))}_updateCenter(){const e=this._elevationBoundsMin,t=this._elevationBoundsMax,i=.5*(e+t),s=this._center;l(fe,this.up,i),o(s[1].center,this.centerAtSeaLevel,fe),l(fe,this.up,e),o(s[0],this.centerAtSeaLevel,fe),l(fe,this.up,t),o(s[2],this.centerAtSeaLevel,fe)}findElevationBoundsForLayer(e,t){const i=this.layerInfo[0][e],s=this.elevationLevelDelta,n=Math.max(this.elevationLevel-s,0),r=i.elevationBounds;if(null!=r&&r.level>t&&r.level<=n)return;const a=this._surface.layerViewByIndex(e,0);if(!Z(this,a))return;const l=ae;let o=!1;const h=i.data;if(h&&h.level<=n){const e=i.data;l.minElevation=e.samplerData.data.minValue,l.maxElevation=e.samplerData.data.maxValue,l.hasNoDataValues=e.samplerData.data.hasNoDataValues,l.level=this.level,o=!0}else{let t,i,r=0;for(let a=this._parent;a&&(!i||r<s)&&(r=this.elevationLevel-a.level,t=i||t,i=a.layerInfo[0][e].data,!(!i&&t&&a.level<=n));a=a.parent);i=i||t,i&&(i.computeMinMaxValue(this._lij[0],this._lij[1],this._lij[2],l),l.minElevation!==1/0&&(l.level=i.level,o=!0))}o&&(null==i.elevationBounds&&(i.elevationBounds=new D),i.elevationBounds.copyFrom(l))}modifyLayers(e,t,i){const s=this.layerInfo[i];for(const a of s)a.loadingAgent&&a.loadingAgent!==Q&&(se(a.loadingAgent),a.loadingAgent=null),a.waitingAgents.clear();for(let a=0;a<s.length;++a)void 0===e[a]&&s[a].release();const n=new Array(...s),r=t.length;s.length=r;for(let a=0;a<r;a++){const e=t[a];s[a]=e>-1?n[e]:K.acquire(this._surface.upsampleInfoPool)}this.setMemoryDirty()}restartAgents(e){this.renderData&&(this._createOrUpdateAgents(0,e),this.updateRenderData(e,0))}updateAgents(e){if(this.renderData){const t=this.layerInfo[e];for(const e of t)e.loadingAgent===Q&&(e.loadingAgent=null);this._createOrUpdateAgents(0,e)}}updateAgentSuspension(){for(const e of S){const t=this._isSuspended(e);for(const i of this.layerInfo[e])i.loadingAgent&&i.loadingAgent!==Q&&(i.loadingAgent.setSuspension(t),i.loadingAgent===Q&&this.updateRenderData(e,0))}}removeLayerAgent(e,t){const i=this.layerInfo[t][e];i.loadingAgent&&i.loadingAgent!==Q&&i.loadingAgent.dispose(),i.loadingAgent=null}agentDone(e,t){const i=this.layerInfo[t][e];i.loadingAgent=Q,i.data||null!=i.upsampleInfo||this._createOrUpdateAgents(e+1,t)}_hasBlendableAncestor(e){return"normal"!==e.blendMode||A(e.parent)&&this._hasBlendableAncestor(e.parent)}_hasBlendModes(e,t,i){for(let s=e;s<t;++s){const e=this._surface.layerViewByIndex(s,i);if(R(e)&&"normal"!==e?.layer?.blendMode||A(e?.layer?.parent)&&this._hasBlendableAncestor(e?.layer?.parent))return!0}return!1}_createOrUpdateAgents(e,t){const i=this.layerInfo[t];if(0===i.length)return;const s=this._isSuspended(t);let n=!1;for(let r=e;r<i.length;++r){const a=i[r],l=this._surface.layerViewByIndex(r,t);let o=!1;n&&!x(l)||(a.loadingAgent?Z(this,l)?(a.loadingAgent!==Q&&a.loadingAgent.setSuspension(s),a.loadingAgent!==Q&&(o=a.loadingAgent.update())):a.dispose():Z(this,l)&&(a.loadingAgent=ie(this,r,t,s),o=a.loadingAgent.startLoading(),o?a.loadingAgent===Q&&this.setPendingUpdate(8):(se(a.loadingAgent),a.loadingAgent=Q)),a.loadingAgent===Q&&this.updateRenderData(t,0),!l.destroyed&&!this._hasBlendModes(e,i.length,t)&&o&&l.isOpaque&&(n||=!0))}}_isWithinExtent(e){const t=this.extent;return t[0]>=e[0]&&e[2]>=t[2]&&t[1]>=e[1]&&e[3]>=t[3]}intersectsExtent(e){const t=this.extent;return t[2]>=e[0]&&e[2]>=t[0]&&t[3]>=e[1]&&e[3]>=t[1]}getElevationVerticesPerSide(e){const i=this.elevationLevel-this.level,s=Math.max(this.level-e,this.elevationLevelDelta-i),n=t(1+(this._maxTesselation>>s),2,this._maxTesselation+1),r=this.minimumVerticesPerSide;return Math.max(n,r)}_findLIJ(e,t){if(!e)return null;const{rootTiles:i}=this.surface;if(null!=i)for(const s of i)if(le(s,e)){let i=s,n=e[0]-i.level-1;for(;n>=0&&!i.leaf&&!t(i);){const t=e[1]>>n&1,s=e[2]>>n&1;i=i.children[2*t+s],n--}return t(i)?i:null}return null}findNeighborTile(e,t){const i=this._lij,s=this._getNeighborLIJ(i,e);return s?oe(i,s)?t(this)?this:null:this._findLIJ(s,t):null}findCorner(e,t){const i=1===e?1:7===e?0:5===e?2:3;let s=this;for(;s.children[0]&&(!t||!t(s));)s=s.children[i];return s}findNeighborCornerTileExact(e,t){return this.findNeighborTile(e,e=>t(e)||e.level===this.level)?.findCorner(q(e),t)||null}forAllSubtreeOnSide(e,t){const i=0===e?[0,1]:1===e?[1]:2===e?[1,3]:3===e?[3]:4===e?[2,3]:5===e?[2]:6===e?[0,2]:[0],s=e=>{const n=e.children;!t(e)&&n[0]&&i.forEach(e=>s(n[e]))};s(this)}getNeighborEdgeStartVertexIndex(e,t){if(!t)return 0;const i=this.level-t.level;if(V(!O||i>=0),0===i)return 0;const s=2**i,n=!(1&~e),r=n?0:1,a=t.lij[r+1]*s,l=this._lij[r+1],o=l-a,h=n?s-1-o:o;return O&&(V(a<=l&&l<a+s),V(0<=h&&h<s)),h}forEachLoadedNeighbor(e){const t=this.level,i=e=>e.level===t||e.loaded;N.forEach(t=>{const s=this.findNeighborTile(t,i);null!=s&&s!==this&&s.forAllSubtreeOnSide(G(t),i=>!!i.loaded&&(e(i,t),!0))}),k.forEach(t=>{const s=this.findNeighborTile(t,i)?.findCorner(q(t),e=>e.loaded);V(!s||he(this,s,t)),s?.loaded&&e(s,t)})}_getNeighborLIJ(e,t){const i=W(t)?-1:J(t)?1:0,s=$(t)?-1:H(t)?1:0,n=[e[0],e[1]+i,e[2]+s];return n[1]<0?null:this.surface.isGlobal?this._wrapLIJ(n):n[2]<0?null:n}_wrapLIJ(e){return!e||e[1]<0||e[1]>=2**e[0]?null:this.surface.wrapEastWest(e)}isEdgeNeighbor(e,t){if(null==e)return!1;if(0===this.level&&0===e.level){if(this._eastEnd&&e._westEnd&&2===t)return!0;if(this._westEnd&&e._eastEnd&&6===t)return!0}const i=Math.max(1e-6*(this.extent[2]-this.extent[0]),1);switch(t){case 0:return F(this.extent[3],e.extent[1],i);case 4:return F(this.extent[1],e.extent[3],i);case 2:return F(this.extent[2],e.extent[0],i)||F(this.extent[2],-e.extent[0],i);case 6:return F(this.extent[0],e.extent[2],i)||F(this.extent[0],-e.extent[2],i)}}get _eastEnd(){return this._lij[2]===this.surface.lijEastEnd(this.level)-1}get _westEnd(){return 0===this._lij[2]}checkGeometryWaterproofness(){z&&(V(this.loaded),this.renderData?.checkGeometryWaterproofness())}shouldHaveNeighbor(e){const t=this.extent,{rootTilesExtent:i}=this._surface,s=.25*(t[2]-t[0]);if(W(e)&&t[3]+s>=i[3])return!1;if(J(e)&&t[1]-s<=i[1])return!1;const n=this.surface.isGlobal;return!(!n&&$(e)&&t[0]-s<=i[0])&&!(!n&&H(e)&&t[2]+s>=i[2])}updateDistanceToPOI(e){const t=this._lastPOI;if(this.distanceToPOI>=0&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2])return;u(this._lastPOI,e);const i=this._center[1].center,s=e[0]-i[0],n=e[1]-i[1],r=e[2]-i[2];this.distanceToPOI=s*s+n*n+r*r}updateOverlayParameters(e){const{renderData:t}=this;if(!t)return;const{overlays:i,longitudeCyclical:s}=e,n=t.overlay;if(0===i.length)this._clearTileOverlayData(0,n),this._clearTileOverlayData(1,n);else{const[e,t]=i,r=this.extent;_(e.extent,r,s)||m(r,e.extent,s)||m(r,t.extent,s)?(this._setOverlayData(i,s,r,0,n),this._setOverlayData(i,s,r,1,n)):(this._clearTileOverlayData(0,n),this._clearTileOverlayData(1,n))}}_setOverlayData(e,t,i,s,n){const r=e[s].extent,a=y(r),l=v(r);let o=i[0];if(t){o=t.minimalMonotonic(r[0],o);const e=t.minimalMonotonic(r[0],i[2]);o>e&&(o=e-(i[2]-i[0]))}if(0===a||0===l)return void n.setOffsetAndScale(s,0,0,1,1);const h=y(i)/a,u=v(i)/l,d=(o-r[0])/a,c=(i[1]-r[1])/l;n.setOffsetAndScale(s,d,c,h,u)}_clearTileOverlayData(e,t){t.setOffsetAndScale(e,-1,-1,-1,-1)}}function ie(e,t,i,s){const n=0===i?re.acquire():ne.acquire();return n.init(e,t,i,s),n}function se(e){e.dispose(),L(e)?re.release(e):U(e)&&ne.release(e)}const ne=new s(()=>new I),re=new s(()=>new b),ae=new D;function le(e,t){const i=e.lij,s=t[0]-i[0];return!(s<0)&&(t[1]>>s===i[1]&&t[2]>>s===i[2])}function oe(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function he(e,t,i){return null!=e&&null!=t&&t!==e&&(e.level>=t.level?ue(e,t,i):ue(t,e,q(i)))}function ue(e,t,i){V(e.level>=t.level);const s=X(i),n=Y(i),r=e.extent,a=t.extent,l=[s?r[0]:r[2],n?r[3]:r[1]],o=[s?a[2]:a[0],n?a[1]:a[3]],h=1e-5*(r[2]-r[0]),u=F(l[0],o[0],h)||e.surface.isGlobal&&F(l[0],-o[0],h),d=F(l[1],o[1],h);if(u&&d)return!0;if(e.level===t.level)return V(!1),!1;if(!u&&!d)return V(!1),!1;const c=u?de(a[1],a[3],r[1],r[3],h):de(a[0],a[2],r[0],r[2],h);return V(c),c}function de(e,t,i,s,n){return e-n<=i&&i<=s&&s<=t+n}const ce=d(),ge=d(),pe=d(),fe=d();export{te as Tile,he as isCornerNeighbor,oe as lijEquals};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"../../../../core/Logger.js";import{getBasisTranscoder as t}from"../../../../libs/basisu/BasisUTranscoder.js";import{CompressedTextureFormat as n}from"../../../webgl/enums.js";import r from"../../../webgl/Texture.js";import{getFormatBytesPerElement as i}from"../../../webgl/Util.js";const s=()=>e.getLogger("esri.views.3d.webgl-engine.lib.BasisUtil");let a=null,l=null;const o=16,u=0,g=1,c=2,m=3,h=5,f=7,p=8,d=9,T=10,w=14,E=1481919403,S=3140563232,C=169478669,_=67305985;async function M(){return null==l&&(l=t(),a=await l),l}function y(e,t){if(null==a)return e.byteLength;const n=new a.BasisFile(new Uint8Array(e)),r=R(n)?b(n.getNumLevels(0),n.getHasAlpha(),n.getImageWidth(0,0),n.getImageHeight(0,0),t):0;return n.close(),n.delete(),r}function A(e,t){if(null==a)return e.byteLength;const n=new a.KTX2File(new Uint8Array(e)),r=B(n)?b(n.getLevels(),n.getHasAlpha(),n.getWidth(),n.getHeight(),t):0;return n.close(),n.delete(),r}function b(e,t,r,s,a){const l=i(t?n.COMPRESSED_RGBA8_ETC2_EAC:n.COMPRESSED_RGB8_ETC2),o=a&&e>1?(4**e-1)/(3*4**(e-1)):1;return Math.ceil(r*s*l*o)}function R(e){return e.getNumImages()>=1&&!e.isUASTC()}function B(e){return e.getFaces()>=1&&(e.isETC1S()||e.isUASTC())}async function U(e,t,n){null==a&&(a=await M());const r=new a.BasisFile(new Uint8Array(n));if(!R(r))return null;r.startTranscoding();const i=D(e,t,r.getNumLevels(0),r.getHasAlpha(),r.getImageWidth(0,0),r.getImageHeight(0,0),(e,t)=>r.getImageTranscodedSizeInBytes(0,e,t),(e,t,n)=>r.transcodeImage(n,0,e,t,0,0));return r.close(),r.delete(),i}async function I(e,t,n){null==a&&(a=await M());const r=new a.KTX2File(new Uint8Array(n));if(!B(r))return null;r.startTranscoding();const i=D(e,t,r.getLevels(),r.getHasAlpha(),r.getWidth(),r.getHeight(),(e,t)=>r.getImageTranscodedSizeInBytes(e,0,0,t),(e,t,n)=>r.transcodeImage(n,e,0,0,t,0,-1,-1));return r.close(),r.delete(),i}function D(e,t,i,s,a,l,o,u){const{compressedTextureETC:g,compressedTextureS3TC:c}=e.capabilities,[m,h]=g?s?[1,n.COMPRESSED_RGBA8_ETC2_EAC]:[0,n.COMPRESSED_RGB8_ETC2]:c?s?[3,n.COMPRESSED_RGBA_S3TC_DXT5_EXT]:[2,n.COMPRESSED_RGB_S3TC_DXT1_EXT]:[13,6408],f=t.hasMipmap?i:Math.min(1,i),p=[];for(let n=0;n<f;n++)p.push(new Uint8Array(o(n,m))),u(n,m,p[n]);return t.internalFormat=h,t.hasMipmap=p.length>1,t.samplingMode=t.hasMipmap?9987:9729,t.width=a,t.height=l,new r(e,t,{type:"compressed",levels:p})}function v(e,t,n){const i=x(n,t.hasMipmap??!1);if(null==i)throw new Error("KTX1 texture data is null");const{textureData:s,internalFormat:a,width:l,height:o}=i;return t.samplingMode=s.levels.length>1?9987:9729,t.hasMipmap=s.levels.length>1,t.internalFormat=a,t.width=l,t.height=o,new r(e,t,s)}function x(e,t){const r=new Uint32Array(e.buffer,e.byteOffset,o);if(r[u]!==E||r[g]!==S||r[c]!==C)return s().error("Invalid magic number in KTX1 header"),null;if(r[m]!==_||1!==r[h]||r[f]!==n.COMPRESSED_RGB8_ETC2||6407!==r[p])return s().error("Unsupported KTX1 image"),null;const i=r[f];let a=1,l=r[d],M=r[T];if(3&l||3&M)return null;const y=l,A=M;let b,R;!1!==t&&(a=Math.max(1,r[w]));let B=e.byteOffset+4*o;const U=[];for(let n=0;n<a;++n)R=(e[B]|e[B+1]<<8|e[B+2]<<16|e[B+3]<<24)>>>0,B+=4,b=new Uint8Array(e.buffer,B,R),U.push(b),B+=R,l=Math.max(1,l>>1),M=Math.max(1,M>>1);return{textureData:{type:"compressed",levels:U},internalFormat:i,width:y,height:A}}export{B as checkKTX2,x as createKTX1TextureData,U as createTextureBasis,v as createTextureKTX1,I as createTextureKTX2,y as estimateMemoryBasis,A as estimateMemoryKTX2,M as loadBasisTranscoder};
2
+ import e from"../../../../core/Logger.js";import{getBasisTranscoder as t}from"../../../../libs/basisu/BasisUTranscoder.js";import{CompressedTextureFormat as n,SizedPixelFormat as r}from"../../../webgl/enums.js";import a from"../../../webgl/Texture.js";import{getFormatBytesPerElement as i}from"../../../webgl/Util.js";const s=()=>e.getLogger("esri.views.3d.webgl-engine.lib.BasisUtil");let l=null,o=null;const u=16,g=0,m=1,c=2,h=3,f=5,p=7,E=8,d=9,T=10,S=14,w=1481919403,_=3140563232,C=169478669,A=67305985,F=2;async function b(){return null==o&&(o=t(),l=await o),o}function M(e,t){if(null==l)return e.byteLength;const n=new l.BasisFile(new Uint8Array(e)),r=B(n)?y(n.getNumLevels(0),n.getHasAlpha(),n.getImageWidth(0,0),n.getImageHeight(0,0),t):0;return n.close(),n.delete(),r}function R(e,t){if(null==l)return e.byteLength;const n=new l.KTX2File(new Uint8Array(e)),r=D(n)?y(n.getLevels(),n.getHasAlpha(),n.getWidth(),n.getHeight(),t):0;return n.close(),n.delete(),r}function y(e,t,r,a,s){const l=i(t?n.COMPRESSED_RGBA8_ETC2_EAC:n.COMPRESSED_RGB8_ETC2),o=s&&e>1?(4**e-1)/(3*4**(e-1)):1;return Math.ceil(r*a*l*o)}function B(e){return e.getNumImages()>=1&&!e.isUASTC()}function D(e){return e.getFaces()>=1&&(e.isETC1S()||e.isUASTC())}function U(e,t,a,i){return e?a?{basisFormat:1,internalFormat:i?n.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:n.COMPRESSED_RGBA8_ETC2_EAC}:{basisFormat:0,internalFormat:i?n.COMPRESSED_SRGB8_ETC2:n.COMPRESSED_RGB8_ETC2}:t?a?{basisFormat:3,internalFormat:n.COMPRESSED_RGBA_S3TC_DXT5_EXT}:{basisFormat:2,internalFormat:n.COMPRESSED_RGB_S3TC_DXT1_EXT}:{basisFormat:13,internalFormat:i?r.SRGB8_ALPHA8:6408}}async function I(e,t,n){null==l&&(l=await b());const r=new l.BasisFile(new Uint8Array(n));if(!B(r))return null;r.startTranscoding();const a=P(e,t,r.getNumLevels(0),r.getHasAlpha(),r.getImageWidth(0,0),r.getImageHeight(0,0),(e,t)=>r.getImageTranscodedSizeInBytes(0,e,t),(e,t,n)=>r.transcodeImage(n,0,e,t,0,0));return r.close(),r.delete(),a}async function O(e,t,n,r=!1){null==l&&(l=await b());const a=new l.KTX2File(new Uint8Array(n));if(!D(a))return null;const i=r&&a.getDFDTransferFunc()===F;a.startTranscoding();const s=P(e,t,a.getLevels(),a.getHasAlpha(),a.getWidth(),a.getHeight(),(e,t)=>a.getImageTranscodedSizeInBytes(e,0,0,t),(e,t,n)=>a.transcodeImage(n,e,0,0,t,0,-1,-1),i);return a.close(),a.delete(),s}function P(e,t,n,r,i,s,l,o,u=!1){const{compressedTextureETC:g,compressedTextureS3TC:m}=e.capabilities,{basisFormat:c,internalFormat:h}=U(null!=g,null!=m,r,u),f=t.hasMipmap?n:Math.min(1,n),p=[];for(let a=0;a<f;a++)p.push(new Uint8Array(l(a,c))),o(a,c,p[a]);return t.internalFormat=h,t.hasMipmap=p.length>1,t.samplingMode=t.hasMipmap?9987:9729,t.width=i,t.height=s,new a(e,t,{type:"compressed",levels:p})}function v(e,t,n){const r=x(n,t.hasMipmap??!1);if(null==r)throw new Error("KTX1 texture data is null");const{textureData:i,internalFormat:s,width:l,height:o}=r;return t.samplingMode=i.levels.length>1?9987:9729,t.hasMipmap=i.levels.length>1,t.internalFormat=s,t.width=l,t.height=o,new a(e,t,i)}function x(e,t){const r=new Uint32Array(e.buffer,e.byteOffset,u);if(r[g]!==w||r[m]!==_||r[c]!==C)return s().error("Invalid magic number in KTX1 header"),null;if(r[h]!==A||1!==r[f]||r[p]!==n.COMPRESSED_RGB8_ETC2||6407!==r[E])return s().error("Unsupported KTX1 image"),null;const a=r[p];let i=1,l=r[d],o=r[T];if(3&l||3&o)return null;const F=l,b=o;let M,R;!1!==t&&(i=Math.max(1,r[S]));let y=e.byteOffset+4*u;const B=[];for(let n=0;n<i;++n)R=(e[y]|e[y+1]<<8|e[y+2]<<16|e[y+3]<<24)>>>0,y+=4,M=new Uint8Array(e.buffer,y,R),B.push(M),y+=R,l=Math.max(1,l>>1),o=Math.max(1,o>>1);return{textureData:{type:"compressed",levels:B},internalFormat:a,width:F,height:b}}export{D as checkKTX2,x as createKTX1TextureData,I as createTextureBasis,v as createTextureKTX1,O as createTextureKTX2,M as estimateMemoryBasis,R as estimateMemoryKTX2,b as loadBasisTranscoder,U as selectBasisTextureFormats};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import"../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../core/shaderModules/FloatPassUniform.js";import"../core/shaderModules/Texture2DPassUniform.js";import"../shaders/ToneMapping.glsl.js";import"../../../webgl/NoParameters.js";import"../../../webgl/ShaderBuilder.js";export{E as EmissionCompositePassParameters,b as build}from"../../../../chunks/EmissionComposite.glsl.js";
2
+ import"../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../core/shaderLibrary/shading/Gamma.glsl.js";import"../core/shaderModules/FloatPassUniform.js";import"../core/shaderModules/Texture2DPassUniform.js";import"../shaders/ToneMapping.glsl.js";import"../../../webgl/NoParameters.js";import"../../../webgl/ShaderBuilder.js";export{E as EmissionCompositePassParameters,b as build}from"../../../../chunks/EmissionComposite.glsl.js";
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as s}from"tslib";import{watch as e,syncAndInitial as r}from"../../../../core/reactiveUtils.js";import{property as t}from"../../../../core/accessorSupport/decorators/property.js";import{subclass as i}from"../../../../core/accessorSupport/decorators/subclass.js";import{RenderNodeOutput as o}from"../../webgl.js";import a from"../../webgl/RenderNode.js";import{E as m}from"../../../../chunks/EmissionComposite.glsl.js";import{EmissionCompositeTechnique as n}from"./EmissionCompositeTechnique.js";import{floatBlendReductionFactor as p}from"../shaders/floatBlendScale.glsl.js";import{ColorAttachment1 as c,SizedPixelFormat as d}from"../../../webgl/enums.js";let h=class extends a{constructor(){super(...arguments),this.produces=o.COMPOSITE,this.consumes={required:[o.COMPOSITE,"emissive"]},this._passParameters=new m}initialize(){this.addHandles([e(()=>0!==this.bindParameters.emissions,s=>this.produces=s?o.COMPOSITE:"disabled",r)])}precompile(){this.techniques.precompile(n)}render(){const s=this.input,e=s.obtainAttachment(c);if(!e?.attachment)return s;this._passParameters.emission=e.attachment,this._passParameters.inputScale=this._passParameters.emission?.descriptor.internalFormat===d.RGBA8?p:1;const r=this.renderingContext,t=this.techniques.get(n);return this.bindRenderTarget(),r.bindTechnique(t,this.bindParameters,this._passParameters),r.screen.draw(),s.attachColor(e,c),e?.release(),s}};s([t()],h.prototype,"produces",void 0),s([t()],h.prototype,"consumes",void 0),h=s([i("esri.views.3d.webgl-engine.lib.EmissionComposite")],h);export{h as EmissionComposite};
2
+ import{__decorate as e}from"tslib";import{watch as s,syncAndInitial as t}from"../../../../core/reactiveUtils.js";import{property as r}from"../../../../core/accessorSupport/decorators/property.js";import{subclass as i}from"../../../../core/accessorSupport/decorators/subclass.js";import{RenderNodeOutput as o}from"../../webgl.js";import a from"../../webgl/RenderNode.js";import{E as m}from"../../../../chunks/EmissionComposite.glsl.js";import{EmissionCompositeTechnique as n}from"./EmissionCompositeTechnique.js";import{floatBlendReductionFactor as p}from"../shaders/floatBlendScale.glsl.js";import{ColorAttachment1 as c,ColorAttachment0 as h,SizedPixelFormat as d}from"../../../webgl/enums.js";let l=class extends a{constructor(){super(...arguments),this.produces=o.COMPOSITE,this.consumes={required:[o.COMPOSITE,"emissive"]},this._passParameters=new m}initialize(){this.addHandles([s(()=>0!==this.bindParameters.emissions,e=>this.produces=e?o.COMPOSITE:"disabled",t)])}precompile(){this.techniques.precompile(n)}render(){const e=this.input,s=e.getAttachment(c);if(!s?.attachment)return e;this._passParameters.color=e.getAttachment(h)?.attachment,this._passParameters.emission=s.attachment,this._passParameters.inputScale=this._passParameters.emission?.descriptor.internalFormat===d.RGBA8?p:1;const t=this.renderingContext,r=this.techniques.get(n),i=this.acquireOutputFramebuffer();return t.clear(16384),t.bindTechnique(r,this.bindParameters,this._passParameters),t.screen.draw(),i.moveAttachments(e),i}};e([r()],l.prototype,"produces",void 0),e([r()],l.prototype,"consumes",void 0),l=e([i("esri.views.3d.webgl-engine.lib.EmissionComposite")],l);export{l as EmissionComposite};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{subclass as s}from"../../../../core/accessorSupport/decorators/subclass.js";import{ReloadableShader as r}from"../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as o}from"../core/shaderTechnique/ShaderTechnique.js";import{a as i}from"../../../../chunks/EmissionComposite.glsl.js";import{makePipelineState as t,add as m,defaultColorWrite as n}from"../../../webgl/renderState.js";let l=class extends o{constructor(){super(...arguments),this.shader=new r(i,()=>import("./EmissionComposite.glsl.js"))}initializePipeline(){return t({colorWrite:n,blending:m})}};l=e([s("esri.views.3d.webgl-engine.lib.EmissionCompositeTechnique")],l);export{l as EmissionCompositeTechnique};
2
+ import{__decorate as e}from"tslib";import{subclass as s}from"../../../../core/accessorSupport/decorators/subclass.js";import{ReloadableShader as r}from"../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as o}from"../core/shaderTechnique/ShaderTechnique.js";import{a as i}from"../../../../chunks/EmissionComposite.glsl.js";import{makePipelineState as t,defaultColorWrite as m}from"../../../webgl/renderState.js";let n=class extends o{constructor(){super(...arguments),this.shader=new r(i,()=>import("./EmissionComposite.glsl.js"))}initializePipeline(){return t({colorWrite:m})}};n=e([s("esri.views.3d.webgl-engine.lib.EmissionCompositeTechnique")],n);export{n as EmissionCompositeTechnique};