@arcgis/core 5.2.0-next.40 → 5.2.0-next.41

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 (544) hide show
  1. package/assets/esri/core/workers/RemoteClient.js +1 -1
  2. package/assets/esri/core/workers/chunks/002356e675769d20e5c0.js +1 -0
  3. package/assets/esri/core/workers/chunks/02ab09285a5c4ca98066.js +1 -0
  4. package/assets/esri/core/workers/chunks/0646524250bb9fe82935.js +1 -0
  5. package/assets/esri/core/workers/chunks/06e71d52773eb656a4bf.js +261 -0
  6. package/assets/esri/core/workers/chunks/0a50efb07eee36237e21.js +1 -0
  7. package/assets/esri/core/workers/chunks/0a98a13418f53082ca7a.js +1 -0
  8. package/assets/esri/core/workers/chunks/0ae0483b72f5e8d00d55.js +1 -0
  9. package/assets/esri/core/workers/chunks/0ae35b02dda9b9662560.js +1 -0
  10. package/assets/esri/core/workers/chunks/0d1224693a62a26a0e72.js +1 -0
  11. package/assets/esri/core/workers/chunks/{542d8a6c415098b9857c.js → 0da4816c11b45b4a6289.js} +1 -1
  12. package/assets/esri/core/workers/chunks/{8a39dd585742960d3ca2.js → 0dcfd82a2669df6eb5a0.js} +1 -1
  13. package/assets/esri/core/workers/chunks/0f19bc532be24ca64755.js +1 -0
  14. package/assets/esri/core/workers/chunks/0f674c625f24ac73e25a.js +1 -0
  15. package/assets/esri/core/workers/chunks/11a3aa43fb940c21f148.js +1 -0
  16. package/assets/esri/core/workers/chunks/11e00ca5ac1b004f4ecc.js +1 -0
  17. package/assets/esri/core/workers/chunks/1276df03201c1b855fee.js +1 -0
  18. package/assets/esri/core/workers/chunks/13c893e448bedc5c1cef.js +1 -0
  19. package/assets/esri/core/workers/chunks/15c2d9bec0455fc363a9.js +1 -0
  20. package/assets/esri/core/workers/chunks/15de305ac3d6433748e7.js +1 -0
  21. package/assets/esri/core/workers/chunks/18d874739ee9ffad7480.js +1 -0
  22. package/assets/esri/core/workers/chunks/1dc1bfb3425665f560e4.js +1 -0
  23. package/assets/esri/core/workers/chunks/{1cd8dff4373494b01ad4.js → 1e342d532925569daadb.js} +1 -1
  24. package/assets/esri/core/workers/chunks/1f118d85d8271ad7690b.js +1 -0
  25. package/assets/esri/core/workers/chunks/1fece9757de7c10d1e9f.js +1 -0
  26. package/assets/esri/core/workers/chunks/{a2e754df3215e8b00a8f.js → 2015f4def2ef201bdab8.js} +1 -1
  27. package/assets/esri/core/workers/chunks/23570397304969f724b3.js +1 -0
  28. package/assets/esri/core/workers/chunks/24c0b3586bb6500eda53.js +2 -0
  29. package/assets/esri/core/workers/chunks/26e7884d8639df4d994b.js +1 -0
  30. package/assets/esri/core/workers/chunks/26fdc8382e009672924e.js +1 -0
  31. package/assets/esri/core/workers/chunks/{96860b6035e0b06672dd.js → 272c8ab189217240d05f.js} +1 -1
  32. package/assets/esri/core/workers/chunks/2791f3fe16ca5ee2f39a.js +1 -0
  33. package/assets/esri/core/workers/chunks/279a9a38b04a21cdfd11.js +1 -0
  34. package/assets/esri/core/workers/chunks/284e88805184334396fe.js +1 -0
  35. package/assets/esri/core/workers/chunks/28bc5e8e82f188b30eb9.js +1 -0
  36. package/assets/esri/core/workers/chunks/2a4868acd546312aa6d8.js +1 -0
  37. package/assets/esri/core/workers/chunks/2b8909a488cf3b231eec.js +1398 -0
  38. package/assets/esri/core/workers/chunks/2d7cfc68a38dabd8898a.js +1 -0
  39. package/assets/esri/core/workers/chunks/2da337d7fd9295f6b967.js +1 -0
  40. package/assets/esri/core/workers/chunks/2e79fb1b8445b2091cdb.js +1 -0
  41. package/assets/esri/core/workers/chunks/2f29f08cddd5add9388e.js +1 -0
  42. package/assets/esri/core/workers/chunks/30c53a7e1ad5aa52f2f3.js +1 -0
  43. package/assets/esri/core/workers/chunks/31c4db1eac8f765bb93f.js +1 -0
  44. package/assets/esri/core/workers/chunks/32fb597aef66c444758f.js +1 -0
  45. package/assets/esri/core/workers/chunks/34fcb776e4de1d870bbd.js +30 -0
  46. package/assets/esri/core/workers/chunks/352d144d7651da8a29c9.js +1 -0
  47. package/assets/esri/core/workers/chunks/354199a41de44902de84.js +1 -0
  48. package/assets/esri/core/workers/chunks/36781219ca9ba5d7fe52.js +1 -0
  49. package/assets/esri/core/workers/chunks/36999a2e383c8eb3c398.js +1 -0
  50. package/assets/esri/core/workers/chunks/36f8a912842181e1f0aa.js +1 -0
  51. package/assets/esri/core/workers/chunks/{ed1d4ebf487c7dcd5c33.js → 37a8cfec11057947b45f.js} +1 -1
  52. package/assets/esri/core/workers/chunks/{2b2b042a6d6949b06127.js → 381790e1f3df05c7eb68.js} +1 -1
  53. package/assets/esri/core/workers/chunks/383304d33b496c5d8baa.js +1 -0
  54. package/assets/esri/core/workers/chunks/{4e28f49d0be20ea50fd7.js → 383392c63202ac044b6c.js} +1 -1
  55. package/assets/esri/core/workers/chunks/394716bd1ecfd638d708.js +2 -0
  56. package/assets/esri/core/workers/chunks/3aacb935d632834d4154.js +1 -0
  57. package/assets/esri/core/workers/chunks/3c8e98cf23ad8ef12fcb.js +1 -0
  58. package/assets/esri/core/workers/chunks/4056659d5c7698265129.js +1 -0
  59. package/assets/esri/core/workers/chunks/4129b27fcd4103cdc499.js +1 -0
  60. package/assets/esri/core/workers/chunks/44e64186318728d1be51.js +1 -0
  61. package/assets/esri/core/workers/chunks/474ea8c97d101e41b3f5.js +1 -0
  62. package/assets/esri/core/workers/chunks/475c60ed8785d07911c6.js +1 -0
  63. package/assets/esri/core/workers/chunks/{c7662455252b48531da1.js → 484b3e2a220c440ccbb4.js} +1 -1
  64. package/assets/esri/core/workers/chunks/4d4710d57c72ec75cccc.js +1 -0
  65. package/assets/esri/core/workers/chunks/4e1b087453fc5e20e961.js +1 -0
  66. package/assets/esri/core/workers/chunks/4e94793aab42ebd251ca.js +1 -0
  67. package/assets/esri/core/workers/chunks/4f2a61dfae6ca8ed1ec8.js +1 -0
  68. package/assets/esri/core/workers/chunks/4f59357f535f30a6b5cc.js +1 -0
  69. package/assets/esri/core/workers/chunks/509cfac9e5d86a8ee449.js +1 -0
  70. package/assets/esri/core/workers/chunks/510acf2e8781be9b0dba.js +1 -0
  71. package/assets/esri/core/workers/chunks/52c4b4dabcb0d162be72.js +1 -0
  72. package/assets/esri/core/workers/chunks/{697e0ce10d77b90d4fee.js → 538fe46dfd685a490e23.js} +1 -1
  73. package/assets/esri/core/workers/chunks/5441f96cdd0660229efe.js +1 -0
  74. package/assets/esri/core/workers/chunks/551d0c5432f7a08dea77.js +1 -0
  75. package/assets/esri/core/workers/chunks/55924fb0de05e727f5e3.js +1 -0
  76. package/assets/esri/core/workers/chunks/55af58b6dff52dc040fe.js +2 -0
  77. package/assets/esri/core/workers/chunks/56bbde1dff96b423fbb9.js +1 -0
  78. package/assets/esri/core/workers/chunks/57824ecc10b25e3ad794.js +1 -0
  79. package/assets/esri/core/workers/chunks/{9ba705a6ddabca0f77b1.js → 580451761cadfe308919.js} +1 -1
  80. package/assets/esri/core/workers/chunks/5923ebadd4f75be2c9cc.js +1 -0
  81. package/assets/esri/core/workers/chunks/5b18696109fe84a1010a.js +2 -0
  82. package/assets/esri/core/workers/chunks/{db96a0c66578b2d1b715.js → 5b30231ae0a8f4b8435f.js} +1 -1
  83. package/assets/esri/core/workers/chunks/{77a4f6f224d7ca4b69f4.js → 5bf4ab72b9634b06cc5d.js} +1 -1
  84. package/assets/esri/core/workers/chunks/5ce168ae45ab7e7a71d1.js +1 -0
  85. package/assets/esri/core/workers/chunks/{7b1678dcf62481469544.js → 5dc17b76c6ecc24e7b9a.js} +1 -1
  86. package/assets/esri/core/workers/chunks/5e35828216020f33e26b.js +1 -0
  87. package/assets/esri/core/workers/chunks/5f0d6c853873a7f32527.js +1 -0
  88. package/assets/esri/core/workers/chunks/5fe9eea35ddb428efd8b.js +1 -0
  89. package/assets/esri/core/workers/chunks/6010b7be978698a642d0.js +1 -0
  90. package/assets/esri/core/workers/chunks/613e799377bdb767c955.js +1 -0
  91. package/assets/esri/core/workers/chunks/6210fb6cd31844f23964.js +1 -0
  92. package/assets/esri/core/workers/chunks/632ab11cdd4b0d9a5cc5.js +1 -0
  93. package/assets/esri/core/workers/chunks/64247e439ef3e1f712e9.js +1 -0
  94. package/assets/esri/core/workers/chunks/661a59133ae34f172174.js +1 -0
  95. package/assets/esri/core/workers/chunks/6b0acd1a7dd74a7367e0.js +1 -0
  96. package/assets/esri/core/workers/chunks/6d247ff53421d27628ce.js +1 -0
  97. package/assets/esri/core/workers/chunks/6e45d0db97ffa4509177.js +1 -0
  98. package/assets/esri/core/workers/chunks/6f408397e2c8a2ea9805.js +1 -0
  99. package/assets/esri/core/workers/chunks/700c08dd2e734c15e621.js +1 -0
  100. package/assets/esri/core/workers/chunks/705d6b108fd121cea887.js +1 -0
  101. package/assets/esri/core/workers/chunks/71ce1009dadcae8f8094.js +1 -0
  102. package/assets/esri/core/workers/chunks/72fe7fb03c156f26a589.js +1 -0
  103. package/assets/esri/core/workers/chunks/733b2e181683d5fc7c95.js +1 -0
  104. package/assets/esri/core/workers/chunks/79b857bb301f9c4169d6.js +1 -0
  105. package/assets/esri/core/workers/chunks/79c0a966f7d11d3c217f.js +1 -0
  106. package/assets/esri/core/workers/chunks/7a818499c1079906c2d7.js +1 -0
  107. package/assets/esri/core/workers/chunks/7ac47a9ad244100bc3b1.js +1 -0
  108. package/assets/esri/core/workers/chunks/7b862a074816c099b9ff.js +1 -0
  109. package/assets/esri/core/workers/chunks/7baa363b3b0a442a63d2.js +1 -0
  110. package/assets/esri/core/workers/chunks/7cc729b57a6a52c8ac68.js +1 -0
  111. package/assets/esri/core/workers/chunks/{4abe820bbe4f7ffccc09.js → 7df795bc4fa1d433463b.js} +1 -1
  112. package/assets/esri/core/workers/chunks/7ea65aa6d3e684e12082.js +1 -0
  113. package/assets/esri/core/workers/chunks/7f7a76f5fef25049fbf8.js +1 -0
  114. package/assets/esri/core/workers/chunks/7fa9dc39bf0a7a6fdc1f.js +1 -0
  115. package/assets/esri/core/workers/chunks/821176ee3be724621bb0.js +1 -0
  116. package/assets/esri/core/workers/chunks/825eb845216762a1ed2f.js +1 -0
  117. package/assets/esri/core/workers/chunks/82f4aa0533db009b11d8.js +2 -0
  118. package/assets/esri/core/workers/chunks/{2a344bca6837ca3b5c41.js.LICENSE.txt → 82f4aa0533db009b11d8.js.LICENSE.txt} +0 -6
  119. package/assets/esri/core/workers/chunks/830d1a7dee43422507ab.js +1 -0
  120. package/assets/esri/core/workers/chunks/835643f716f7058a2722.js +1 -0
  121. package/assets/esri/core/workers/chunks/84fa102a93b2144c28fb.js +1 -0
  122. package/assets/esri/core/workers/chunks/85ce7673d42526a79fd2.js +1 -0
  123. package/assets/esri/core/workers/chunks/893ffc38e1a43de5b63d.js +1 -0
  124. package/assets/esri/core/workers/chunks/{93df864c2e829f0fd5ce.js → 8a1970e68bc1e833cb7f.js} +1 -1
  125. package/assets/esri/core/workers/chunks/{684c9b4bd9590d2db12f.js → 8a410edcdf74ba957159.js} +1 -1
  126. package/assets/esri/core/workers/chunks/8b73694d5a97638a3a61.js +1 -0
  127. package/assets/esri/core/workers/chunks/8bb20ef549ec1c86b38e.js +1 -0
  128. package/assets/esri/core/workers/chunks/{6ef3b8d67b498d655a99.js → 8c5e65982c3f9295e844.js} +1 -1
  129. package/assets/esri/core/workers/chunks/8cb2fe91d1d8f49c14f8.js +1 -0
  130. package/assets/esri/core/workers/chunks/{1961b59756933e0a82f2.js → 8dcc6c19d5b3a5ac5512.js} +1 -1
  131. package/assets/esri/core/workers/chunks/8dee03779b569f233daf.js +1 -0
  132. package/assets/esri/core/workers/chunks/8ec5e470583b75fceae1.js +1 -0
  133. package/assets/esri/core/workers/chunks/8f2fecd8a0a972d68590.js +1 -0
  134. package/assets/esri/core/workers/chunks/9073b0f0ec93d6e243b9.js +1 -0
  135. package/assets/esri/core/workers/chunks/90ace5f9b4af1beea6bf.js +1 -0
  136. package/assets/esri/core/workers/chunks/94719ac469dadc4c05dc.js +1 -0
  137. package/assets/esri/core/workers/chunks/94e9cf8e729ec36de5be.js +1 -0
  138. package/assets/esri/core/workers/chunks/96d5fed0235558c0e348.js +1 -0
  139. package/assets/esri/core/workers/chunks/98b27cf8acbfa4259758.js +1 -0
  140. package/assets/esri/core/workers/chunks/9902fcd2070c8eb6d043.js +1 -0
  141. package/assets/esri/core/workers/chunks/99772ce7e628364434fa.js +1 -0
  142. package/assets/esri/core/workers/chunks/{b1a0eb6598309e11337f.js → 99e3aa4832ed87474ab4.js} +1 -1
  143. package/assets/esri/core/workers/chunks/9a6208ab670ad74e6f7d.js +1 -0
  144. package/assets/esri/core/workers/chunks/9a97f6cda2f36941efae.js +1 -0
  145. package/assets/esri/core/workers/chunks/9b1199104a6822ab7340.js +1 -0
  146. package/assets/esri/core/workers/chunks/9ceeae787dc7c194d60e.js +1 -0
  147. package/assets/esri/core/workers/chunks/9ebc98746b1f085b82b7.js +1 -0
  148. package/assets/esri/core/workers/chunks/9ee3741eef73f3edb18b.js +1 -0
  149. package/assets/esri/core/workers/chunks/9fb87a7dba62b527c0ba.js +1 -0
  150. package/assets/esri/core/workers/chunks/a10f63a08d976be058be.js +1 -0
  151. package/assets/esri/core/workers/chunks/a183b77854f5b42c1a86.js +1 -0
  152. package/assets/esri/core/workers/chunks/a23f4d8e7c372f5fb6d7.js +1 -0
  153. package/assets/esri/core/workers/chunks/a25f51d2d3ff6b9af7ca.js +1 -0
  154. package/assets/esri/core/workers/chunks/a27172dacdb85a774c4b.js +1 -0
  155. package/assets/esri/core/workers/chunks/a27cdf4c29dd50a6dab1.js +1 -0
  156. package/assets/esri/core/workers/chunks/a294dd12b5c708ce04af.js +1 -0
  157. package/assets/esri/core/workers/chunks/a3c882fe7599dc0f4f27.js +1 -0
  158. package/assets/esri/core/workers/chunks/a90f7b1c6c69b6033b4c.js +1 -0
  159. package/assets/esri/core/workers/chunks/a9c641bcdef161c754bf.js +1 -0
  160. package/assets/esri/core/workers/chunks/a9d391071803b1e9e8a0.js +1 -0
  161. package/assets/esri/core/workers/chunks/{757982a73174aa7ab0d1.js → aa0fb77c62a2d4eb20a5.js} +1 -1
  162. package/assets/esri/core/workers/chunks/aaa66a04b882b0ba2961.js +1 -0
  163. package/assets/esri/core/workers/chunks/ae50b2d5e63f62c088d2.js +1 -0
  164. package/assets/esri/core/workers/chunks/af3ac4bed43e901b59c7.js +1 -0
  165. package/assets/esri/core/workers/chunks/af97e19516dbbcfb5286.js +1 -0
  166. package/assets/esri/core/workers/chunks/aff0e7761276036e029d.js +1 -0
  167. package/assets/esri/core/workers/chunks/b23d1e10fc4161d1f3eb.js +1 -0
  168. package/assets/esri/core/workers/chunks/b32bdf5730953c2fb16b.js +1 -0
  169. package/assets/esri/core/workers/chunks/b3f1a442d6b7826e917f.js +1 -0
  170. package/assets/esri/core/workers/chunks/b4047333265a2665aef9.js +1 -0
  171. package/assets/esri/core/workers/chunks/b45a013039bbd2614525.js +680 -0
  172. package/assets/esri/core/workers/chunks/b7170816736769d3b7b0.js +1 -0
  173. package/assets/esri/core/workers/chunks/{5c63b38160c7d063b8af.js → b780514be87a22b49b01.js} +1 -1
  174. package/assets/esri/core/workers/chunks/b792857a178da2dd77d6.js +1 -0
  175. package/assets/esri/core/workers/chunks/b819a9187426d0c146df.js +1 -0
  176. package/assets/esri/core/workers/chunks/{1d92da90fbbc3f98b201.js → b8d788e110c212a879ab.js} +1 -1
  177. package/assets/esri/core/workers/chunks/b94cd7eac5ff4a78dd5b.js +1 -0
  178. package/assets/esri/core/workers/chunks/b9d6f89f9b8e9d1bc787.js +1 -0
  179. package/assets/esri/core/workers/chunks/b9f40681af1fa00b5bbe.js +1 -0
  180. package/assets/esri/core/workers/chunks/{bc547cf814d6703cef59.js → bb95922cd4631d6f17fb.js} +1 -1
  181. package/assets/esri/core/workers/chunks/bcb5017500d144b73908.js +1 -0
  182. package/assets/esri/core/workers/chunks/bd862382f72ebd446b46.js +1 -0
  183. package/assets/esri/core/workers/chunks/bdd19dab276d20d5381a.js +1 -0
  184. package/assets/esri/core/workers/chunks/bee5e738ecf8680909c4.js +1 -0
  185. package/assets/esri/core/workers/chunks/{9be4438ce2c7180adadf.js → bf287f0e2ecb4532dc00.js} +1 -1
  186. package/assets/esri/core/workers/chunks/{5115059b012ef84407cf.js → bfb6566c27c09deb0929.js} +1 -1
  187. package/assets/esri/core/workers/chunks/c055c16379f5bb56e930.js +1 -0
  188. package/assets/esri/core/workers/chunks/c13e55b9efb0b532f7ee.js +1 -0
  189. package/assets/esri/core/workers/chunks/c369d4266f38e9ea6592.js +1 -0
  190. package/assets/esri/core/workers/chunks/c3fae4f4522604a9c17e.js +1 -0
  191. package/assets/esri/core/workers/chunks/c4c25db769a78e677e33.js +1 -0
  192. package/assets/esri/core/workers/chunks/c50e4e8c6188e64e7d45.js +1 -0
  193. package/assets/esri/core/workers/chunks/c838cc1c786368b78598.js +1 -0
  194. package/assets/esri/core/workers/chunks/c8db0a4fb5bc982dc9fc.js +1 -0
  195. package/assets/esri/core/workers/chunks/{82adfa2dbd40e1becaf4.js → c97451f75c23be979476.js} +1 -1
  196. package/assets/esri/core/workers/chunks/ca118c42c0f609ca7912.js +1 -0
  197. package/assets/esri/core/workers/chunks/ca419858910af5505d3d.js +1 -0
  198. package/assets/esri/core/workers/chunks/cb17cd8aaf77238c0236.js +1 -0
  199. package/assets/esri/core/workers/chunks/{034dd8ee5152a12412cd.js → cba3316910ff088f4d77.js} +1 -1
  200. package/assets/esri/core/workers/chunks/cc414fd2e313d89d524d.js +1 -0
  201. package/assets/esri/core/workers/chunks/{7b8466f892a38a53c600.js → cce83896093279c70449.js} +1 -1
  202. package/assets/esri/core/workers/chunks/cda04571d7623c17ada2.js +1 -0
  203. package/assets/esri/core/workers/chunks/cea4b18e7f83c02922b1.js +1 -0
  204. package/assets/esri/core/workers/chunks/cf03d391d50a4c7aca4f.js +1 -0
  205. package/assets/esri/core/workers/chunks/d03f427442bb0c287d05.js +1 -0
  206. package/assets/esri/core/workers/chunks/d082de5dd83bd73d209b.js +1 -0
  207. package/assets/esri/core/workers/chunks/d08d3c6f21e6ba8268ca.js +1 -0
  208. package/assets/esri/core/workers/chunks/d36f17d32c654b1ac7fa.js +1 -0
  209. package/assets/esri/core/workers/chunks/d36fba71c52ea4e71546.js +1 -0
  210. package/assets/esri/core/workers/chunks/{18f980465db5a86153d1.js → d37a72111dffc4c4db70.js} +1 -1
  211. package/assets/esri/core/workers/chunks/d41ab2abcfacc87809b5.js +1 -0
  212. package/assets/esri/core/workers/chunks/d4ed094962a41d756c95.js +1 -0
  213. package/assets/esri/core/workers/chunks/d5561dff043789494845.js +1 -0
  214. package/assets/esri/core/workers/chunks/d79ce047afbc034f6008.js +1 -0
  215. package/assets/esri/core/workers/chunks/d847c3cb2043a983145b.js +1 -0
  216. package/assets/esri/core/workers/chunks/d849bdaf5bdfdc37531a.js +1 -0
  217. package/assets/esri/core/workers/chunks/da6134c7883531f21afe.js +1 -0
  218. package/assets/esri/core/workers/chunks/{c48dfda8dcb9551606fb.js → dad39ddf0f8dfb0bef47.js} +1 -1
  219. package/assets/esri/core/workers/chunks/dadefe369f49e89a2610.js +1 -0
  220. package/assets/esri/core/workers/chunks/dccb46c7dce68528c72b.js +1 -0
  221. package/assets/esri/core/workers/chunks/dd65c32ae55fcf1282fe.js +1 -0
  222. package/assets/esri/core/workers/chunks/ddafe402f1bc9e8285ef.js +1 -0
  223. package/assets/esri/core/workers/chunks/de9573871f64c01e9f01.js +1 -0
  224. package/assets/esri/core/workers/chunks/dedf678490572c500a19.js +30 -0
  225. package/assets/esri/core/workers/chunks/df174346a7e9b629a392.js +1 -0
  226. package/assets/esri/core/workers/chunks/df30053a10d4930924d5.js +1 -0
  227. package/assets/esri/core/workers/chunks/dfbdc72c7ea137e3841d.js +1 -0
  228. package/assets/esri/core/workers/chunks/e21b3490bfce75405e55.js +1 -0
  229. package/assets/esri/core/workers/chunks/e2c9393bec747f7876bb.js +1 -0
  230. package/assets/esri/core/workers/chunks/e3e966777f18164afcd8.js +1 -0
  231. package/assets/esri/core/workers/chunks/e4a2eefffe16cd5bb20f.js +1 -0
  232. package/assets/esri/core/workers/chunks/{d0983cc19d19c19c3478.js → e4aacfc1617ccf60bd5a.js} +1 -1
  233. package/assets/esri/core/workers/chunks/{3a526e1d18490b99332f.js → e5bb7ee670a3ba5ba3fe.js} +1 -1
  234. package/assets/esri/core/workers/chunks/e5c75459de85a6dd2f14.js +1 -0
  235. package/assets/esri/core/workers/chunks/e798ca23f02a2dd65bd4.js +1 -0
  236. package/assets/esri/core/workers/chunks/e94f2d6037fba042dc6e.js +1 -0
  237. package/assets/esri/core/workers/chunks/e9511627418c6864148a.js +1 -0
  238. package/assets/esri/core/workers/chunks/ea8f224da4c5c95a3547.js +1 -0
  239. package/assets/esri/core/workers/chunks/ec1a2e68957fae48e60b.js +30 -0
  240. package/assets/esri/core/workers/chunks/ec2e0b2e31fd53b81d0a.js +1 -0
  241. package/assets/esri/core/workers/chunks/ed552941eca621a51f16.js +1 -0
  242. package/assets/esri/core/workers/chunks/ee58f4bbc0a1f7d03df0.js +1 -0
  243. package/assets/esri/core/workers/chunks/f04cb48fc73635d0572f.js +1 -0
  244. package/assets/esri/core/workers/chunks/f06f591680c9e93e69f6.js +1 -0
  245. package/assets/esri/core/workers/chunks/f1d3cf674b6bea89e122.js +1 -0
  246. package/assets/esri/core/workers/chunks/f2ab8e49c7f17f488aa8.js +1 -0
  247. package/assets/esri/core/workers/chunks/{6a51499c6623ddce5f00.js → f2adf1227a795604d3b8.js} +1 -1
  248. package/assets/esri/core/workers/chunks/f30578843f4faefd53b4.js +1 -0
  249. package/assets/esri/core/workers/chunks/{57c003c6745d450558a7.js → f4aed2b6e92bd0474069.js} +1 -1
  250. package/assets/esri/core/workers/chunks/f5d7f69047e1b1116202.js +1 -0
  251. package/assets/esri/core/workers/chunks/f5d809d30cbb56be852d.js +1 -0
  252. package/assets/esri/core/workers/chunks/{2d92f0042facb55edcff.js → f65adaaa33d9f3b131f6.js} +1 -1
  253. package/assets/esri/core/workers/chunks/f9b654f801cb416e9e17.js +1 -0
  254. package/assets/esri/core/workers/chunks/fb34d6d96c8c0d53fcf6.js +1 -0
  255. package/assets/esri/core/workers/chunks/fb51f823b25c827c6b29.js +1 -0
  256. package/assets/esri/core/workers/chunks/fba8065a3a6fbd877e23.js +1 -0
  257. package/assets/esri/core/workers/chunks/fd47ee8598e37fea03fe.js +1 -0
  258. package/assets/esri/core/workers/chunks/fefbde2c2e527bb716ee.js +1 -0
  259. package/assets/esri/core/workers/chunks/ff089723a27859fe18d1.js +1 -0
  260. package/assets/esri/layers/raster/formats/lerc-wasm.wasm +0 -0
  261. package/assets/esri/rest/knowledgeGraph/wasmInterface/arcgis-knowledge-client-core-simd.wasm +0 -0
  262. package/assets/esri/rest/knowledgeGraph/wasmInterface/arcgis-knowledge-client-core.wasm +0 -0
  263. package/chunks/arcgis-knowledge-client-core-simd.js +1 -1
  264. package/chunks/arcgis-knowledge-client-core.js +1 -1
  265. package/config.js +1 -1
  266. package/geometry/support/sphere.js +1 -1
  267. package/interfaces.d.ts +5 -0
  268. package/kernel.js +1 -1
  269. package/layers/AnnotationFeatureLayer.d.ts +13 -3
  270. package/layers/DimensionFeatureLayer.d.ts +10 -3
  271. package/layers/raster/formats/ImageCanvasDecoder.js +1 -1
  272. package/layers/raster/formats/RasterCodec.js +1 -1
  273. package/package.json +3 -3
  274. package/support/revision.js +1 -1
  275. package/views/2d/engine/webgl/definitions.js +1 -1
  276. package/views/2d/engine/webgl/effects/HittestEffect.js +1 -1
  277. package/views/2d/engine/webgl/mesh/templates/segmentUtils.js +1 -1
  278. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextMeshWriter.js +1 -1
  279. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
  280. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  281. package/views/2d/layers/features/FeatureContainer.js +1 -1
  282. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  283. package/views/3d/layers/I3SMeshView3D.js +1 -1
  284. package/views/3d/layers/SceneLayerWorker.js +1 -1
  285. package/views/3d/layers/SceneLayerWorkerHandle.js +1 -1
  286. package/views/3d/state/helpers/SceneIntersectionHelper.js +1 -1
  287. package/views/3d/support/gaussianSplatting/GaussianSplatFadeHelper.js +1 -1
  288. package/views/3d/support/gaussianSplatting/GaussianTile.js +1 -1
  289. package/views/3d/webgl/RenderCamera.js +1 -1
  290. package/views/3d/webgl-engine/effects/WeatherFader.js +1 -1
  291. package/views/3d/webgl-engine/effects/clouds/CloudsParameters.js +1 -1
  292. package/views/3d/webgl-engine/lib/Intersector.js +1 -1
  293. package/views/3d/webgl-engine/lib/Octree.js +1 -1
  294. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  295. package/views/3d/webgl-engine/lib/screenPolygonTriangleIntersections.js +1 -1
  296. package/views/3d/webgl-engine/materials/DefaultBufferWriter.js +1 -1
  297. package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
  298. package/views/3d/webgl-engine/materials/HeatmapDensityMaterial.js +1 -1
  299. package/views/3d/webgl-engine/materials/ImageMaterial.js +1 -1
  300. package/views/3d/webgl-engine/materials/LineCalloutMaterial.js +1 -1
  301. package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
  302. package/views/3d/webgl-engine/materials/MeasurementArrowMaterial.js +1 -1
  303. package/views/3d/webgl-engine/materials/NativeLineMaterial.js +1 -1
  304. package/views/3d/webgl-engine/materials/PathMaterial.js +1 -1
  305. package/views/3d/webgl-engine/materials/PatternMaterial.js +1 -1
  306. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  307. package/views/3d/webgl-engine/materials/ShadedColorMaterial.js +1 -1
  308. package/views/3d/webgl-engine/materials/renderers/BufferRange.js +1 -1
  309. package/views/3d/webgl-engine/materials/renderers/VaoWriter.js +1 -1
  310. package/views/3d/webgl-engine/shaders/ScreenSpacePassAtmosphere.glsl.js +1 -1
  311. package/views/Viewport2DMixin.js +1 -1
  312. package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js +1 -1
  313. package/widgets/BatchAttributeForm/batchAttributeFormUtils.js +1 -1
  314. package/widgets/BatchAttributeForm/expressions/ExpressionsManager.js +1 -1
  315. package/widgets/BatchAttributeForm/expressions/ExpressionsModel.js +1 -1
  316. package/widgets/BatchAttributeForm/templates/support/createBatchFormTemplate.js +1 -1
  317. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  318. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  319. package/widgets/Sketch.js +1 -1
  320. package/assets/esri/core/workers/chunks/02b043a3c5fa8bcb4c5b.js +0 -1
  321. package/assets/esri/core/workers/chunks/03437a8ef35c200dbf17.js +0 -1
  322. package/assets/esri/core/workers/chunks/0603cbd938ab619c706b.js +0 -1
  323. package/assets/esri/core/workers/chunks/08405116b5feb2d00101.js +0 -1
  324. package/assets/esri/core/workers/chunks/0a6e03263ab0906d8bcf.js +0 -1
  325. package/assets/esri/core/workers/chunks/0af6b87a3d77bb93b893.js +0 -1
  326. package/assets/esri/core/workers/chunks/0edd250159ec259601b3.js +0 -1
  327. package/assets/esri/core/workers/chunks/0f10d7d592c36ee2d1ea.js +0 -1
  328. package/assets/esri/core/workers/chunks/0f8fcbd0650b6a924f75.js +0 -1
  329. package/assets/esri/core/workers/chunks/0f976bfb7db98c2c0e05.js +0 -1
  330. package/assets/esri/core/workers/chunks/1040bce57ea63a6dbca4.js +0 -2
  331. package/assets/esri/core/workers/chunks/10510f76f8538c2dfb84.js +0 -1
  332. package/assets/esri/core/workers/chunks/1079914101d69a40b3eb.js +0 -1
  333. package/assets/esri/core/workers/chunks/11af659688cf963ea6cd.js +0 -1
  334. package/assets/esri/core/workers/chunks/15081b361fc42f40b865.js +0 -1
  335. package/assets/esri/core/workers/chunks/1599dc5309a4e60017ce.js +0 -261
  336. package/assets/esri/core/workers/chunks/181e98399732f425305d.js +0 -1
  337. package/assets/esri/core/workers/chunks/1837f97f720d255a1694.js +0 -1
  338. package/assets/esri/core/workers/chunks/18c4c437ded8bfbd3305.js +0 -1
  339. package/assets/esri/core/workers/chunks/18f4b2099299942aaf97.js +0 -1
  340. package/assets/esri/core/workers/chunks/1958facb000b6c16bfe4.js +0 -1
  341. package/assets/esri/core/workers/chunks/196e7515a43bd0026f49.js +0 -1
  342. package/assets/esri/core/workers/chunks/1a0903b1d2d5101977c6.js +0 -1
  343. package/assets/esri/core/workers/chunks/1aa7496a7dc95aae11ac.js +0 -1
  344. package/assets/esri/core/workers/chunks/1bd49e8d2657c72bf3f9.js +0 -1
  345. package/assets/esri/core/workers/chunks/1c263ffb7144e171a64f.js +0 -1
  346. package/assets/esri/core/workers/chunks/1d524690c4b66289bd20.js +0 -1
  347. package/assets/esri/core/workers/chunks/20fa2c3d4360afa5e136.js +0 -1
  348. package/assets/esri/core/workers/chunks/210ffc448c73a7bf63aa.js +0 -1
  349. package/assets/esri/core/workers/chunks/23f81f4a3d7a983eef23.js +0 -1
  350. package/assets/esri/core/workers/chunks/2540beb53f1443a070d7.js +0 -1
  351. package/assets/esri/core/workers/chunks/25c1f5e2561986330b80.js +0 -1
  352. package/assets/esri/core/workers/chunks/2757c4bf0280e27f3484.js +0 -1
  353. package/assets/esri/core/workers/chunks/294537e1ac43e8dfeaea.js +0 -1
  354. package/assets/esri/core/workers/chunks/29a1d0659bbc5a039864.js +0 -1
  355. package/assets/esri/core/workers/chunks/29df3f829006719b2680.js +0 -1
  356. package/assets/esri/core/workers/chunks/2a344bca6837ca3b5c41.js +0 -2
  357. package/assets/esri/core/workers/chunks/2a5dbed88bbd96cfac9f.js +0 -1
  358. package/assets/esri/core/workers/chunks/2b044c8fab2055a8818d.js +0 -1
  359. package/assets/esri/core/workers/chunks/2d956dacb26d71d1c174.js +0 -1
  360. package/assets/esri/core/workers/chunks/2da797ae5af9d2ede42d.js +0 -1
  361. package/assets/esri/core/workers/chunks/2dbcdfdf000226bfe746.js +0 -1
  362. package/assets/esri/core/workers/chunks/2e495a28494c2351837b.js +0 -1
  363. package/assets/esri/core/workers/chunks/2ef80e003b4f0393ac2e.js +0 -1
  364. package/assets/esri/core/workers/chunks/2fc3e43b64300014dddc.js +0 -1
  365. package/assets/esri/core/workers/chunks/30cf84a47ebefd180bb7.js +0 -1
  366. package/assets/esri/core/workers/chunks/314bc1b356d43bfa72a8.js +0 -1
  367. package/assets/esri/core/workers/chunks/34a024eda22d228e1fbe.js +0 -1
  368. package/assets/esri/core/workers/chunks/37e823202424c11076cb.js +0 -1
  369. package/assets/esri/core/workers/chunks/38a76bc4ef5c10ab0488.js +0 -1
  370. package/assets/esri/core/workers/chunks/390f2beee8e3f2a302e4.js +0 -1
  371. package/assets/esri/core/workers/chunks/3a76fffa2016c16d7989.js +0 -1398
  372. package/assets/esri/core/workers/chunks/3c2eb386c0165150e039.js +0 -1
  373. package/assets/esri/core/workers/chunks/3e4b379a6a197b9c4e6b.js +0 -1
  374. package/assets/esri/core/workers/chunks/3ec91474658eae87b832.js +0 -1
  375. package/assets/esri/core/workers/chunks/3eee32db0e9a5086b9a8.js +0 -1
  376. package/assets/esri/core/workers/chunks/406c7723e8db470822bf.js +0 -1
  377. package/assets/esri/core/workers/chunks/41aca863324387576cf8.js +0 -1
  378. package/assets/esri/core/workers/chunks/442424200e7475e9a08f.js +0 -1
  379. package/assets/esri/core/workers/chunks/4452fd0c59431904d533.js +0 -1
  380. package/assets/esri/core/workers/chunks/448e0596005cba9a4225.js +0 -1
  381. package/assets/esri/core/workers/chunks/4545cf12ad0824ce6b41.js +0 -1
  382. package/assets/esri/core/workers/chunks/45530a49fa1f09d1682e.js +0 -1
  383. package/assets/esri/core/workers/chunks/459e89d1b94a3b204d20.js +0 -30
  384. package/assets/esri/core/workers/chunks/45b2e58051f42ebd236e.js +0 -1
  385. package/assets/esri/core/workers/chunks/4611cf051c3c396fdf96.js +0 -1
  386. package/assets/esri/core/workers/chunks/46e3d33e44e5398221e2.js +0 -1
  387. package/assets/esri/core/workers/chunks/47656ec12401e53f4bd3.js +0 -1
  388. package/assets/esri/core/workers/chunks/47948c72bc01bd173c20.js +0 -2
  389. package/assets/esri/core/workers/chunks/48f1c3a7c9f16d6896f6.js +0 -1
  390. package/assets/esri/core/workers/chunks/49713dfa4c8b788079d1.js +0 -1
  391. package/assets/esri/core/workers/chunks/4a8201e09bc3ad5cc00b.js +0 -1
  392. package/assets/esri/core/workers/chunks/4ad86d6b1be07c97b6f6.js +0 -1
  393. package/assets/esri/core/workers/chunks/4be0c64bbf2449d57ea5.js +0 -1
  394. package/assets/esri/core/workers/chunks/4d57c771af4137f74bfb.js +0 -1
  395. package/assets/esri/core/workers/chunks/4f25aac84d9eb10cac83.js +0 -1
  396. package/assets/esri/core/workers/chunks/50b34e246f8eef2f6e07.js +0 -1
  397. package/assets/esri/core/workers/chunks/514ab968c0d75062e6ab.js +0 -1
  398. package/assets/esri/core/workers/chunks/51838d55d8ec4ce70398.js +0 -1
  399. package/assets/esri/core/workers/chunks/557300ec03bae84d8afc.js +0 -1
  400. package/assets/esri/core/workers/chunks/57abf838fcff0f0e2c5e.js +0 -1
  401. package/assets/esri/core/workers/chunks/57dd017fed2943d24e3d.js +0 -1
  402. package/assets/esri/core/workers/chunks/59801b2ccaaf4b394e02.js +0 -1
  403. package/assets/esri/core/workers/chunks/5a2d2dcdfa8d958f277d.js +0 -1
  404. package/assets/esri/core/workers/chunks/5a62c9f64db4fcae5e52.js +0 -1
  405. package/assets/esri/core/workers/chunks/5aebecb5c2b3e7887127.js +0 -1
  406. package/assets/esri/core/workers/chunks/5e68b74fd548c7cdba36.js +0 -1
  407. package/assets/esri/core/workers/chunks/5f360492560ae07083a6.js +0 -1
  408. package/assets/esri/core/workers/chunks/6022f43ebd58e21c737a.js +0 -1
  409. package/assets/esri/core/workers/chunks/6048c89fc4dcd2e9988d.js +0 -1
  410. package/assets/esri/core/workers/chunks/61efc7f5fab1c2b1f764.js +0 -1
  411. package/assets/esri/core/workers/chunks/62b137a795e487fa06a1.js +0 -1
  412. package/assets/esri/core/workers/chunks/632de34ebd2f44b4423d.js +0 -1
  413. package/assets/esri/core/workers/chunks/63ca17f569407c89bde1.js +0 -30
  414. package/assets/esri/core/workers/chunks/643c7506f8fe8e06acd2.js +0 -1
  415. package/assets/esri/core/workers/chunks/6596b12bb286a0b45a68.js +0 -1
  416. package/assets/esri/core/workers/chunks/65cc9a48ac95523f7aa8.js +0 -1
  417. package/assets/esri/core/workers/chunks/661f50cb97604453f942.js +0 -1
  418. package/assets/esri/core/workers/chunks/686c1a1b794ebe1a0341.js +0 -1
  419. package/assets/esri/core/workers/chunks/6896a6dd36fa91a27151.js +0 -1
  420. package/assets/esri/core/workers/chunks/68bc674affe2f7269c40.js +0 -1
  421. package/assets/esri/core/workers/chunks/6c02493a1c1deff49c7e.js +0 -1
  422. package/assets/esri/core/workers/chunks/6cdf1db30793133294dd.js +0 -1
  423. package/assets/esri/core/workers/chunks/6ff6783f89ecd3a5e752.js +0 -1
  424. package/assets/esri/core/workers/chunks/70763c7b68d8abe8d5fe.js +0 -1
  425. package/assets/esri/core/workers/chunks/716b1f073e3cd807abd3.js +0 -1
  426. package/assets/esri/core/workers/chunks/71a3f05cb86ae2920f8d.js +0 -1
  427. package/assets/esri/core/workers/chunks/71b672259bac2befd9c7.js +0 -1
  428. package/assets/esri/core/workers/chunks/71c996e1ae84d9daddf2.js +0 -1
  429. package/assets/esri/core/workers/chunks/723bb56de2324b41df4e.js +0 -1
  430. package/assets/esri/core/workers/chunks/73f61107cb7e6d30bf03.js +0 -1
  431. package/assets/esri/core/workers/chunks/752c34cee981862add89.js +0 -1
  432. package/assets/esri/core/workers/chunks/75915f81caaf9e5345a9.js +0 -1
  433. package/assets/esri/core/workers/chunks/75baf6dff6e7658b17b3.js +0 -1
  434. package/assets/esri/core/workers/chunks/760dfd585b6c2c1937ce.js +0 -1
  435. package/assets/esri/core/workers/chunks/76449e50222111ba0eb1.js +0 -1
  436. package/assets/esri/core/workers/chunks/76789f46b2c65d219cf9.js +0 -1
  437. package/assets/esri/core/workers/chunks/76bed5497f42f23a27ed.js +0 -1
  438. package/assets/esri/core/workers/chunks/7849cf0352c0a604e164.js +0 -1
  439. package/assets/esri/core/workers/chunks/7908aed639521cf572e8.js +0 -1
  440. package/assets/esri/core/workers/chunks/7d65a8ec5e1f871b9321.js +0 -1
  441. package/assets/esri/core/workers/chunks/7e4093f42795ba2f8cfd.js +0 -1
  442. package/assets/esri/core/workers/chunks/7f849c8255140be6097f.js +0 -1
  443. package/assets/esri/core/workers/chunks/804c31973f7d116523cb.js +0 -1
  444. package/assets/esri/core/workers/chunks/81726d997a2d34449bb2.js +0 -1
  445. package/assets/esri/core/workers/chunks/81883bca8a79ee2ddb00.js +0 -1
  446. package/assets/esri/core/workers/chunks/832ecc1f7d45774c4726.js +0 -1
  447. package/assets/esri/core/workers/chunks/8461f50e9875db4ccfec.js +0 -1
  448. package/assets/esri/core/workers/chunks/8598997340682113a2a5.js +0 -1
  449. package/assets/esri/core/workers/chunks/860a0f9d20f53db1caf4.js +0 -1
  450. package/assets/esri/core/workers/chunks/867e39bb444947c93586.js +0 -1
  451. package/assets/esri/core/workers/chunks/88ec63501fa2f6fdadca.js +0 -1
  452. package/assets/esri/core/workers/chunks/8980767c5b626e4dc3b9.js +0 -1
  453. package/assets/esri/core/workers/chunks/89dd1b1acb0d69264c93.js +0 -1
  454. package/assets/esri/core/workers/chunks/8a66a3e8391206f7d8aa.js +0 -1
  455. package/assets/esri/core/workers/chunks/8a8b7ac6693bdfbebf07.js +0 -1
  456. package/assets/esri/core/workers/chunks/8ad5e80e911419c1685a.js +0 -1
  457. package/assets/esri/core/workers/chunks/8b526ca2dd6fc6a7e921.js +0 -1
  458. package/assets/esri/core/workers/chunks/8e80441eddef1b5be8b9.js +0 -1
  459. package/assets/esri/core/workers/chunks/8f16a358ed83d2264415.js +0 -1
  460. package/assets/esri/core/workers/chunks/8fce15ce4cfdccf407f3.js +0 -1
  461. package/assets/esri/core/workers/chunks/8fd63cb38036f331a803.js +0 -1
  462. package/assets/esri/core/workers/chunks/91c5205d1274c7f190d5.js +0 -1
  463. package/assets/esri/core/workers/chunks/92341f36a8b15f34bcca.js +0 -1
  464. package/assets/esri/core/workers/chunks/937cf55b3b9d324eea73.js +0 -1
  465. package/assets/esri/core/workers/chunks/93d4bda22bde33fafa57.js +0 -1
  466. package/assets/esri/core/workers/chunks/9639b1dd27ccc17ee21e.js +0 -1
  467. package/assets/esri/core/workers/chunks/966d002acec8c72be56a.js +0 -1
  468. package/assets/esri/core/workers/chunks/986d8c3907aeeb18c4f6.js +0 -1
  469. package/assets/esri/core/workers/chunks/98e489c2b85feded7776.js +0 -1
  470. package/assets/esri/core/workers/chunks/9aef0b87f471626abd66.js +0 -1
  471. package/assets/esri/core/workers/chunks/9ba9a3705623679bc305.js +0 -1
  472. package/assets/esri/core/workers/chunks/a188d0767825d322f96d.js +0 -1
  473. package/assets/esri/core/workers/chunks/a4d3cbc02dc1186a9a6d.js +0 -1
  474. package/assets/esri/core/workers/chunks/a638de0102c3990403d1.js +0 -1
  475. package/assets/esri/core/workers/chunks/a6bda5f17fb1c03f7e4b.js +0 -1
  476. package/assets/esri/core/workers/chunks/a6dc01847f39413f78b8.js +0 -1
  477. package/assets/esri/core/workers/chunks/acc733b4881c3e4e503e.js +0 -1
  478. package/assets/esri/core/workers/chunks/b022debf9e0bc2bff0e2.js +0 -1
  479. package/assets/esri/core/workers/chunks/b09935d0105d50a0971b.js +0 -1
  480. package/assets/esri/core/workers/chunks/b12fc1b5a9da97346684.js +0 -1
  481. package/assets/esri/core/workers/chunks/b4323e69e624c6b51754.js +0 -1
  482. package/assets/esri/core/workers/chunks/b45e91249a8ea1559a2b.js +0 -1
  483. package/assets/esri/core/workers/chunks/b50a42a9f96515beb929.js +0 -1
  484. package/assets/esri/core/workers/chunks/b5141f240ca79729686d.js +0 -1
  485. package/assets/esri/core/workers/chunks/b549a4d4b1a34bee8beb.js +0 -1
  486. package/assets/esri/core/workers/chunks/bb89b6fd93513c61b2d3.js +0 -1
  487. package/assets/esri/core/workers/chunks/bc553ecc8cbcc1b02717.js +0 -1
  488. package/assets/esri/core/workers/chunks/bcba02f61cf0abcb5600.js +0 -1
  489. package/assets/esri/core/workers/chunks/bccc199af4e2e49f7acd.js +0 -1
  490. package/assets/esri/core/workers/chunks/bd0f488e228a75fbefb3.js +0 -30
  491. package/assets/esri/core/workers/chunks/bd155794e9bc16dd0474.js +0 -1
  492. package/assets/esri/core/workers/chunks/bf6ae205fbfbfcd1a0ee.js +0 -1
  493. package/assets/esri/core/workers/chunks/c148ad0ea9258046ac1f.js +0 -1
  494. package/assets/esri/core/workers/chunks/c228b058dd91bf0e1102.js +0 -1
  495. package/assets/esri/core/workers/chunks/c4e44fde4bc4ff89e2bc.js +0 -1
  496. package/assets/esri/core/workers/chunks/c4fc85281ca83af7abaf.js +0 -1
  497. package/assets/esri/core/workers/chunks/c610ccbfdb1c5b06c217.js +0 -1
  498. package/assets/esri/core/workers/chunks/c660a5a1086870a3a6b9.js +0 -1
  499. package/assets/esri/core/workers/chunks/c8b7ffc5cb3f1493129e.js +0 -1
  500. package/assets/esri/core/workers/chunks/c9057b0ad2c2bae4a8ce.js +0 -1
  501. package/assets/esri/core/workers/chunks/c93a68618674b38b932e.js +0 -1
  502. package/assets/esri/core/workers/chunks/c961aff385e38b081204.js +0 -1
  503. package/assets/esri/core/workers/chunks/cc0efa716b8414a44398.js +0 -1
  504. package/assets/esri/core/workers/chunks/cd66bd30f654fe571e57.js +0 -1
  505. package/assets/esri/core/workers/chunks/cd88e6f02bc2e5b67abf.js +0 -1
  506. package/assets/esri/core/workers/chunks/cf826787ab8d4b27ad80.js +0 -1
  507. package/assets/esri/core/workers/chunks/cfbbfa5edffa57bd3a8e.js +0 -1
  508. package/assets/esri/core/workers/chunks/d0217187aed8bb7038f4.js +0 -1
  509. package/assets/esri/core/workers/chunks/d1928a8c86a8966e5582.js +0 -1
  510. package/assets/esri/core/workers/chunks/d2745886ba5a86fd5c4c.js +0 -680
  511. package/assets/esri/core/workers/chunks/d4c341b15d9244276fb9.js +0 -1
  512. package/assets/esri/core/workers/chunks/d5faab9799891e5da5a8.js +0 -1
  513. package/assets/esri/core/workers/chunks/d811924acc9c0be95bba.js +0 -1
  514. package/assets/esri/core/workers/chunks/db90fb8ac96579259566.js +0 -1
  515. package/assets/esri/core/workers/chunks/dd0acd0f8b96839b4f24.js +0 -2
  516. package/assets/esri/core/workers/chunks/dd785e595cd08b2d6284.js +0 -1
  517. package/assets/esri/core/workers/chunks/e0b47b08ae2c36c76fa2.js +0 -1
  518. package/assets/esri/core/workers/chunks/e1ddb8e4977b317fd40c.js +0 -1
  519. package/assets/esri/core/workers/chunks/e4015870412edd69453c.js +0 -1
  520. package/assets/esri/core/workers/chunks/e7cb1b72f0b54e845741.js +0 -1
  521. package/assets/esri/core/workers/chunks/e7e7c7cbfd8542bd7a46.js +0 -1
  522. package/assets/esri/core/workers/chunks/e80376832050a4b6d28a.js +0 -1
  523. package/assets/esri/core/workers/chunks/e8a885b576da3ec145d3.js +0 -1
  524. package/assets/esri/core/workers/chunks/e95ee94027c1934086d8.js +0 -1
  525. package/assets/esri/core/workers/chunks/e961c6140c39921816a8.js +0 -1
  526. package/assets/esri/core/workers/chunks/eb7daa0f6610983ff8db.js +0 -1
  527. package/assets/esri/core/workers/chunks/eb842cf470ce28a73187.js +0 -1
  528. package/assets/esri/core/workers/chunks/eeea5710275c967e8d51.js +0 -1
  529. package/assets/esri/core/workers/chunks/ef32e454012f3b0e3f77.js +0 -1
  530. package/assets/esri/core/workers/chunks/f31a8e76f1dde23c0900.js +0 -1
  531. package/assets/esri/core/workers/chunks/f50bba74ae72c07e131a.js +0 -1
  532. package/assets/esri/core/workers/chunks/f58ddf37dee066a5c0d8.js +0 -1
  533. package/assets/esri/core/workers/chunks/f80cadcc2a588da63b38.js +0 -1
  534. package/assets/esri/core/workers/chunks/f83e3ad67b60744afd6d.js +0 -1
  535. package/assets/esri/core/workers/chunks/f859c53432f258af77e3.js +0 -2
  536. package/assets/esri/core/workers/chunks/f8bbb52b865a0a242140.js +0 -1
  537. package/assets/esri/core/workers/chunks/f8f3579d0c1b65762902.js +0 -1
  538. package/assets/esri/core/workers/chunks/f9592bcdd9988199a7ea.js +0 -1
  539. package/assets/esri/core/workers/chunks/fedbeb488d5d7c07c7dc.js +0 -1
  540. package/assets/esri/core/workers/chunks/ff7e1eb2366d4301d288.js +0 -1
  541. /package/assets/esri/core/workers/chunks/{47948c72bc01bd173c20.js.LICENSE.txt → 24c0b3586bb6500eda53.js.LICENSE.txt} +0 -0
  542. /package/assets/esri/core/workers/chunks/{f859c53432f258af77e3.js.LICENSE.txt → 394716bd1ecfd638d708.js.LICENSE.txt} +0 -0
  543. /package/assets/esri/core/workers/chunks/{1040bce57ea63a6dbca4.js.LICENSE.txt → 55af58b6dff52dc040fe.js.LICENSE.txt} +0 -0
  544. /package/assets/esri/core/workers/chunks/{dd0acd0f8b96839b4f24.js.LICENSE.txt → 5b18696109fe84a1010a.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 e}from"tslib";import t from"../../../Color.js";import i from"../../../Graphic.js";import{removeUnordered as s,isSome as r}from"../../../core/arrayUtils.js";import has from"../../../core/has.js";import o from"../../../core/Logger.js";import{equals as n}from"../../../core/MapUtils.js";import{destroyMaybe as a}from"../../../core/maybe.js";import l from"../../../core/PooledArray.js";import{ignoreAbortErrors as d,isAbortError as h,throwIfAborted as c}from"../../../core/promiseUtils.js";import{initial as u,watch as _}from"../../../core/reactiveUtils.js";import{schedule as m}from"../../../core/scheduling.js";import{equals as g}from"../../../core/SetUtils.js";import{isArrayBuffer as f}from"../../../core/typedArrayUtil.js";import{property as p,subclass as y}from"../../../core/accessorSupport/decorators.js";import{fromMat4 as b,exactEquals as v,invert as I}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as C,IDENTITY as M}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{multiply as x,getTranslation as w}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{clone as S,create as E}from"../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{fromValues as R}from"../../../core/libs/gl-matrix-2/factories/quatf64.js";import{set as O,transformMat4 as j,transformMat3 as V,sub as F,add as D,scale as A,subtract as T,len as H}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as N}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as P}from"../../../core/libs/gl-matrix-2/math/vec4.js";import{fromValues as k}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{UpdatingHandles as U}from"../../../core/support/UpdatingHandles.js";import{getSphericalPCPF as L}from"../../../geometry/spatialReferenceEllipsoidUtils.js";import{localLinearScaleFactors as G}from"../../../geometry/projection/localLinearScaleFactors.js";import{projectBoundingSphere as B}from"../../../geometry/projection/projectBoundingSphere.js";import{projectBuffer as q}from"../../../geometry/projection/projectBuffer.js";import{getProjectorName as z}from"../../../geometry/projection/projectors.js";import{projectVectorToVector as W}from"../../../geometry/projection/projectVectorToVector.js";import{create as $,fromBuffer as K,toRect as Q}from"../../../geometry/support/aaBoundingBox.js";import{create as J,intersects as Y}from"../../../geometry/support/aaBoundingRect.js";import{newDoubleArray as X,ensurePackedMat4f64 as Z}from"../../../geometry/support/DoubleArray.js";import{compactFloatArray as ee}from"../../../geometry/support/FloatArray.js";import{compactIndices as te}from"../../../geometry/support/Indices.js";import{Sphere as ie}from"../../../geometry/support/sphere.js";import{newUByteArray as se}from"../../../geometry/support/UByteArray.js";import{fallbackObjectIDAttribute as re}from"../../../layers/LayerConstants.js";import oe from"../../../layers/graphics/controllers/I3SOnDemandController.js";import{fixFields as ne}from"../../../layers/support/fieldUtils.js";import ae from"../../../layers/support/SceneModification.js";import{getColor as le,getOpacity as de}from"../../../renderers/visualVariables/support/visualVariableUtils.js";import{isBasemapLayerView as he}from"../../../support/basemapUtils.js";import{getElevationOffset as ce}from"../../../support/elevationInfoUtils.js";import{loadArcade as ue}from"../../../support/loadArcade.js";import _e from"../../../symbols/MeshSymbol3D.js";import me from"../../../symbols/SimpleFillSymbol.js";import{ContentGeometryUpdateEvent as ge}from"./ContentGeometryLayerView.js";import fe from"./I3SMeshViewLabeler.js";import{I3SMeshViewPerformanceInfo as pe}from"./I3SMeshViewPerformanceInfo.js";import{initialize as ye,setModificationsSync as be,filterObbsForModificationsSync as ve,interpretObbModificationResults as Ie}from"./SceneLayerWorker.js";import{SceneLayerWorkerHandle as Ce,toWasmModification as Me}from"./SceneLayerWorkerHandle.js";import{overrideColor as xe}from"./graphics/graphicUtils.js";import{areLabelsVisible as we}from"./graphics/Labeler.js";import Se from"./i3s/Highlights.js";import{I3SAsyncElevationUpdater as Ee}from"./i3s/I3SAsyncElevationUpdater.js";import{getCachedAttributeValue as Re}from"./i3s/I3SBinaryReader.js";import{I3SCrossfadeHelper as Oe,NodeCrossfadeMetaData as je}from"./i3s/I3SCrossfadeHelper.js";import{boundingBoxCornerPoints as Ve}from"./i3s/I3SGeometryUtil.js";import{I3SIntersectionHandler as Fe}from"./i3s/I3SIntersectionHandler.js";import{getSupportedEncodings as De,selectEncoding as Ae,defaultMaterial as Te,createTexture as He,configureMaterial as Ne}from"./i3s/I3SMaterialUtil.js";import{I3SOverrides as Pe}from"./i3s/I3SOverrides.js";import{computeGlobalTransformation as ke}from"./i3s/I3SProjectionUtil.js";import{rendererNeedsTextures as Ue,checkSceneLayerValid as Le,checkSceneLayerCompatibleWithView as Ge,whenGraphicAttributes as Be,computeVisibilityObb as qe,filterInPlace as ze,intersectBoundingRectWithMbs as We,addWraparound as $e,getSymbolInfo as Ke,transparentEdgeMaterial as Qe,getClipRect as Je}from"./i3s/I3SUtil.js";import{IDBCache as Ye}from"./i3s/IDBCache.js";import{IDBMockCache as Xe}from"./i3s/IDBMockCache.js";import{LayerElevationProvider as Ze}from"./i3s/LayerElevationProvider.js";import{SymbologyInfo as et}from"./i3s/SymbologyInfo.js";import{attributeLookup as tt}from"./support/attributeUtils.js";import{normalizeHighlightTarget as it,emptyHighlightHandle as st}from"./support/highlightUtils.js";import{makeScheduleFunction as rt}from"./support/makeScheduleFunction.js";import{debugFlags as ot}from"../support/debugFlags.js";import{ElevationRange as nt}from"../support/ElevationRange.js";import{toBoundingRect as at}from"../support/extentUtils.js";import{Obb as lt,ensurePackedObbData as dt}from"../support/orientedBoundingBox.js";import{updatingProgress as ht}from"../support/updatingProperties.js";import{glLayout as ct}from"../support/buffer/glUtil.js";import{ObjectParameters as ut}from"../webgl-engine/collections/Component/ObjectParameters.js";import{createVertexBufferLayout as _t,ComponentGeometryParameters as mt,SourceGeometry as gt,VertexBufferLayoutCreationParameters as ft}from"../webgl-engine/collections/Component/SourceGeometry.js";import{Transform as pt}from"../webgl-engine/collections/Component/Transform.js";import{emissiveStrengthDefault as yt}from"../webgl-engine/core/shaderLibrary/output/Emissions.glsl.js";import{loadBasisTranscoder as bt}from"../webgl-engine/lib/BasisUtil.js";import{getHighlightName as vt}from"../../support/highlightOptionsUtils.js";import{TextureCompressionTracker as It}from"../../support/TextureCompressionTracker.js";import{alphaCutoff as Ct}from"../../../webscene/support/AlphaCutoff.js";const Mt=[1,1,1,1];class xt extends je{constructor(e,t,i,s,r,o,n,a,l){super(),this.node=e,this.featureIds=t,this.objectHandle=i,this.cachedRendererVersion=s,this.attributeInfo=r,this.material=o,this.textures=n,this.anchorIds=a,this.anchors=l,this.cachedElevationAnchors=null,this.cachedEdgeMaterials=new Array,this.edgeMemoryUsage=0,this.cachedSymbologyStride=5}get usedMemory(){return this.node.memory}get featureExtents(){return this._featureExtents??=new Float64Array(6*this.featureIds.length).fill(Number.POSITIVE_INFINITY),this._featureExtents}}const wt=27,St=104857600,Et=t=>{const f=t;let H=class extends f{constructor(){super(...arguments),this._applySSAO=!0,this._imShading=!!has("enable-feature:im-shading"),this._imVertexNormals=!!has("enable-feature:im-vertex-normals"),this._updatingHandles=new U,this._highlights=null,this._nodeId2Meta=new Map,this._nodeId2MetaReloading=new Map,this._i3sWasmLoaded=!1,this._snappingSourcesTrackers=[],this._compressionTracker=new It,this._hasLoadedPBRTextures=!1,this._asyncModuleLoading=0,this._addTasks=new Map,this._currentRenderer=null,this._rendererVersion=0,this._colorVariable=null,this._opacityVariable=null,this._rendererFields=null,this._symbologyFields=null,this._symbologyOverride=null,this._symbologyOverrideFields=null,this._symbolInfos=new Map,this._visibleGeometryChangedSchedulerHandle=null,this._hasComponentData=!1,this._hasVertexColors=!1,this._nodeColorOverride=null,this.updating=!0,this.holeFilling="auto",this._hasColors=!1,this._hasTextures=!1,this._hasData=!1,this.slicePlaneEnabled=!1,this._modifications=new Array,this.ignoresMemoryFactor=!1,this._layerUrl="",this._cacheKeySuffix=null,this._planetRadiusInGlobalMode=0,this._elevationTask=null,this._needFilterResolve=!1,this._filters=[],this._arcade=null,this._tmpAttributeOnlyGraphic=new i,this._crossfadeHelper=new Oe(this)}get lodCrossfadeoutDuration(){return 0}get lodCrossfadeinDuration(){return 0}get lodCrossfadeUncoveredDuration(){return 0}get layerViewUid(){return this.uid}get layerId(){return this.layer.id}get sublayerId(){return null}get _isIntegratedMesh(){return"integrated-mesh"===this.layer.type}get contentVisible(){return!this.suspended&&this._controller?.rootNodeVisible&&this.fullOpacity>Ct}get legendEnabled(){return this.contentVisible&&!0===this.layer?.legendEnabled}get updatingProgressValue(){return this._controller?.updatingProgress??0}get hasTexturesOrVertexColors(){return this._hasData?this._hasTextures||this._hasColors?"yes":"probably-not":"unknown"}get rendererTextureUsage(){return Ue(this._currentRenderer)?this._usePBR||this._hasLoadedPBRTextures?63:53:this._usePBR||this._hasLoadedPBRTextures?44:36}get elevationOffset(){const e=this.layer?.elevationInfo;return"absolute-height"===e?.mode?ce(e,this.layer.spatialReference):0}get elevationInfo(){const e=this.layer?.elevationInfo;switch(e?.mode){case"absolute-height":return new Lt(0,ce(e,this.layer.spatialReference));case"relative-to-ground":return new Lt(1,ce(e,this.layer.spatialReference));case"on-the-ground":return new Lt(2,0);default:return new Lt(0,0)}}get supportedTextureEncodings(){return De(this.view.stage.renderView.capabilities)}get clientGeometry(){return this.i3sOverrides.geometryOverrides}get elevationRange(){const e=this._nodeId2Meta,t=new nt;for(const i of e.values()){const e=i?.node.serviceMbsInIndexSR;e&&t.expandElevationRangeValues(e.center[2]-e.radius,e.center[2]+e.radius)}return t.elevationRangeValid?t:null}get fullExtent(){return this.layer.fullExtent}initialize(){const e=has("enable-feature:idb-mock-cache");this._idbCache=e?new Xe(this.view,e):new Ye("esri-scenelayer-cache","geometries"),this._preLoadBasis(),this.addResolvingPromise(this.layer.indexInfo);const t=this.view.resourceController,i=t.memoryController;this.i3sOverrides=new Pe({view:this.view,layer:this.layer,memoryController:i}),this._workerHandle=new Ce(rt(t)),this.addResolvingPromise(this._workerHandle.promise),Le(this.layer),Ge(this.layer,this.view);const s=this.layer.store.defaultGeometrySchema;if(this.addResolvingPromise(this._workerHandle.setLegacySchema(this.uid,s).catch(d)),this._layerUrl=this.layer.parsedUrl.path,this._controller=new oe({layerView:this,worker:this._workerHandle}),this._gpuMemoryEstimate=0,this._texMemoryEstimate=0,this._geoMemoryEstimate=0,this._stage=this.view.stage,this._collection=this._stage.renderView.componentObjectCollection,this._isIntegratedMesh||!s)this._hasComponentData=!1;else{const e=s.featureAttributes;this._hasComponentData=!!(e&&e.faceRange&&e.id)}this._hasVertexColors=null!=(s?.vertexAttributes.color??null)&&!this.layer.cachedDrawingInfo?.color;const r=this.view.resourceController.memoryController.newCache(`sl-${this.uid}`,e=>this._deleteComponentObject(e));this._memCache=r;const n=this._controller,l=this._nodeId2Meta,h=this._nodeId2MetaReloading,c=e=>{const t=n.index;if(!t)return;const i=t.rootNode;if(!i)return;const s=t=>{const i=t.index,s=l.get(i)||h.get(i);return e(t,s?.objectHandle??null)};t.traverse(i,s)};this._intersectionHandler=new Fe({layerViewUid:this.layerViewUid,sublayerId:this.sublayerId,collection:this._collection,slicePlaneEnabled:this.slicePlaneEnabled,isGround:this._isIntegratedMesh,traverseNodeHierarchy:c}),this._elevationProvider=new Ze({view:this.view,layerElevationSource:this,intersectionHandler:this._intersectionHandler}),this._hasLoadedPBRTextures=this._usePBR,this._updatingHandles.add(()=>this.view.clippingArea,()=>this._clippingAreaChanged(),u),this._updatingHandles.add(()=>this.fullOpacity,e=>this._opacityChange(e)),this._updatingHandles.add(()=>this.slicePlaneEnabled,e=>this._slicePlaneEnabledChange(e)),this._updatingHandles.add(()=>this.elevationOffset,(e,t)=>{this._reloadAll(t),this._controller.invalidateVisibilityObbs()}),this._updatingHandles.add(()=>this.elevationInfo,(e,t)=>this._elevationInfoChanged(e,t),u),this._updatingHandles.add(()=>!this.suspended&&0!==this.elevationInfo.mode,(e,t)=>{e?this.addHandles(this.view.basemapTerrain.on("elevation-change",({extent:e})=>this._ensureElevationTask().addExtent(e)),qt):t&&this.removeHandles(qt)},u),this._updatingHandles.add(()=>this._usePBR,e=>this._updatePBR(e));const m=()=>{this._reloadAll(),this.clearMemCache()};this._updatingHandles.add(()=>this.rendererTextureUsage,m),this._updatingHandles.add(()=>this.contentVisible,e=>this._contentVisibleChanged(e),u),this._updatingHandles.add(()=>this.layer.labelsVisible,()=>this._labelingChanged(),u),this._updatingHandles.add(()=>this.layer.labelingInfo,()=>this._labelingChanged(),u),this._updatingHandles.add(()=>this._modifications,()=>this._modificationsChanged(),u),this.addHandles([_(()=>ot.I3S_TREE_SHOW_TILES,e=>{if(e&&!this._treeDebugger){const e=this._controller.crsIndex;import("./support/I3STreeDebugger.js").then(({I3STreeDebugger:t})=>{!this._treeDebugger&&ot.I3S_TREE_SHOW_TILES&&(this._treeDebugger=new t({lv:this,view:this.view,nodeSR:e}))})}else e||ot.I3S_TREE_SHOW_TILES||(this._treeDebugger=a(this._treeDebugger))},u),_(()=>ot.I3S_SHOW_MODIFICATIONS,()=>this._showModifications(),u)]),this._cacheKeySuffix=this._getCacheKeySuffix(),this._idbCache.init().catch(e=>o.getLogger(this).warn(`Failed to initialize IndexedDB cache: ${e}`));const{view:g}=this,{viewingMode:f,renderCoordsHelper:p}=g;this._planetRadiusInGlobalMode="local"===f?0:p.referenceEllipsoid.radius}destroy(){this._clearAddTasks(),this._elevationTask=a(this._elevationTask),this.i3sOverrides=a(this.i3sOverrides),this._elevationProvider&&(this._elevationProvider.notifyObjectsChanged(this.getVisibleObbs()),this.view.elevationProvider.unregister(this._elevationProvider),this._elevationProvider=null),this._intersectionHandler&&(this._stage.view.sceneIntersectionHelper.removeIntersectionHandler(this._intersectionHandler),this._intersectionHandler=null);const e=this._workerHandle;e&&(e.destroyContextAndSelf(this.uid),this._workerHandle=null),this._removeAllNodeDataFromStage(),this._memCache=a(this._memCache),this._collection=null,this._stage=null,this._edgeView=null,this._labeler=a(this._labeler),this._treeDebugger=a(this._treeDebugger),this._controller=a(this._controller),this._highlights=a(this._highlights),this._nodeId2Meta.clear(),this._nodeId2MetaReloading.clear(),this._crossfadeHelper=a(this._crossfadeHelper),this.emit("visible-geometry-changed"),this._visibleGeometryChangedSchedulerHandle&&(this._visibleGeometryChangedSchedulerHandle.remove(),this._visibleGeometryChangedSchedulerHandle=null),this._updatingHandles=a(this._updatingHandles)}_memEstimateTextureAdded(e){const t=e.usedMemory;return this._gpuMemoryEstimate+=t,this._texMemoryEstimate+=t,t}_memEstimateTextureRemoved(e){if(null!=e){const t=e.usedMemory;this._gpuMemoryEstimate-=t,this._texMemoryEstimate-=t}}_memEstimateGeometryAdded(e){const t=this._collection.getObjectGPUMemoryUsage(e);return this._gpuMemoryEstimate+=t,this._geoMemoryEstimate+=t,t}_memEstimateGeometryRemoved(e){const t=this._collection.getObjectGPUMemoryUsage(e);this._gpuMemoryEstimate-=t,this._geoMemoryEstimate-=t}isNodeLoaded(e){return this._nodeId2Meta.has(e)}isNodeReloading(e){return this._nodeId2MetaReloading.has(e)}get usedMemory(){let e=null!=this._labeler?this._labeler.usedMemory:0;return this._nodeId2Meta.forEach(t=>e+=null!=t?t.node.memory:0),this._nodeId2MetaReloading.forEach(t=>e+=null!=t?t.node.memory:0),e}get unloadedMemory(){return(null!=this._controller?this._controller.unloadedMemoryEstimate:0)+(null!=this._labeler?this._labeler.unloadedMemoryEstimate:0)}_labelingChanged(){if(!(we(this.layer)&&this._supportsLabeling))return void(null!=this._labeler&&(this._labeler.destroy(),this._labeler=null));if(null!=this._labeler)return;const e=new fe({view:this.view,layer:this.layer,collection:this._collection,overrides:this.i3sOverrides,layerViewUid:this.uid});this._nodeId2Meta.forEach(t=>null!=t&&this._addMetaToLabeler(e,t)),this._labeler=e}_loadAsyncModule(e){return++this._asyncModuleLoading,e.then(e=>(--this._asyncModuleLoading,e),e=>{throw--this._asyncModuleLoading,e})}_modificationsChanged(){if(!this._i3sWasmLoaded&&this.hasModifications)return this._i3sWasmLoaded=ye().then(()=>{this._i3sWasmLoaded=!0,this._modificationsChanged(),this.notifyUpdate()},()=>{}),void this.notifyUpdate();if(!0!==this._i3sWasmLoaded)return;const e=e=>o.getLogger(this).error("set-modifications-error","Error when setting modifications:",e),t=this.uid,i=this.layer.spatialReference,s=i.isGeographic,r=Me(this._layerClippingArea,this._modifications,i);this._workerHandle.setModifications(t,r,s).catch(e);try{be({context:t,modifications:r,isGeodetic:s})}catch(a){e(a)}this._controller.modificationsChanged();const n=this.hasModifications?new l:null;this._nodeId2Meta.forEach((e,t)=>{null==e?(this._nodeId2Meta.delete(t),this._controller.updateLoadStatus(t,!1)):e.node.hasModifications?(this._updateFeatureIdCounts(e,-1),this._nodeId2Meta.delete(t),this._nodeId2MetaReloading.set(t,e)):null!=n&&n.push(e.node)}),this.notifyChange("elevationRange"),null!=n&&this._nodeId2MetaReloading.forEach(e=>n.push(e.node)),null!=n&&n.length>0&&(this.updateNodeModificationStatus(n),n.forAll(e=>{if(2!==e.imModificationImpact){const t=this._nodeId2Meta.get(e.index);this._controller.invalidateGeometryVisibility(e.index),null!=t?(this._updateFeatureIdCounts(t,-1),this._nodeId2Meta.delete(e.index),this._nodeId2MetaReloading.set(e.index,t),this.notifyChange("elevationRange")):this._nodeId2Meta.has(e.index)&&(this._nodeId2Meta.delete(e.index),this._controller.updateLoadStatus(e.index,!1))}})),this.clearMemCache(),this._controller.restartNodeLoading(),this._showModifications()}_showModifications(){if(null!=this._modificationGraphics&&(this.view.graphics.removeMany(this._modificationGraphics),this._modificationGraphics=null),!ot.I3S_SHOW_MODIFICATIONS||0===this._modifications.length)return;const e={clip:[227,227,79,.8],mask:[227,139,79,.8],replace:[139,227,79,.8]},t={outline:{color:[255,255,255],width:1}};this._modificationGraphics=[];for(const s of this._modifications){const r=s.geometry;r.spatialReference=this.layer.spatialReference;const o=new me({...t,color:e[s.type]});this._modificationGraphics.push(new i({geometry:r,symbol:o}))}this.view.graphics.addMany(this._modificationGraphics)}_addMetaToLabeler(e,t){e.addNodeMeta(t,(e,t)=>this._createAttributes(e,t))}_contentVisibleChanged(e){e?(this.view.elevationProvider.register(this._elevationContext,this._elevationProvider),this._stage.view.sceneIntersectionHelper.addIntersectionHandler(this._intersectionHandler)):(this._removeAllNodeDataFromStage(),this.view.elevationProvider&&this.view.elevationProvider.unregister(this._elevationProvider),this._stage.view.sceneIntersectionHelper.removeIntersectionHandler(this._intersectionHandler))}getLoadedAttributes(e){const t=this._nodeId2Meta.get(e);if(null!=t?.attributeInfo)return t.attributeInfo.loadedAttributes}getAttributeData(e){const t=this._nodeId2Meta.get(e);if(null!=t?.attributeInfo)return t.attributeInfo.attributeData}setAttributeData(e,t){const i=this._nodeId2Meta.get(e);null!=i?.attributeInfo&&(i.attributeInfo.attributeData=t,this._attributeValuesChanged(i))}async updateAttributes(e,t,i){const s=this._nodeId2Meta.get(e);null!=s&&(await this.i3sOverrides.applyAttributeOverrides(s.featureIds,t,i,this._controller.requiredAttributes),s.attributeInfo=t,this._controller.reschedule(()=>{this._nodeId2Meta.get(e)===s&&this._attributeValuesChanged(s)},i).catch(e=>{h(e)||o.getLogger(this).warn("Error while updating attribute values. Layer might not display correctly.",e)}))}_attributeValuesChanged(e){e.cachedRendererVersion=this._getInvalidRendererVersion(),e.appliedFilters=null,null!=this._labeler&&this._labeler.setNodeMetaAttributes(e,(e,t)=>this._createAttributes(e,t)),this._updateEngineObject(e)}clearMemCache(){null!=this._memCache&&this._memCache.clear(),this._addTasks.forEach(e=>e.allowMemCache=!1)}getVisibleNodes(){const e=new Array;return this._nodeId2Meta.forEach(t=>null!=t&&e.push(t.node)),e}getVisibleObbs(){const e=new Array;return this._nodeId2Meta.forEach(t=>t&&e.push(this._collection.getComponentObb(t.objectHandle))),e}getLoadedNodeIndices(e){this._nodeId2Meta.forEach((t,i)=>e.push(i)),this._nodeId2MetaReloading.forEach((t,i)=>e.push(i))}_preLoadBasis(){!has("disable-feature:i3s-basis")&&2&this.supportedTextureEncodings&&this.layer.textureSetDefinitions?.some(e=>e.formats.some(e=>"basis"===e.format||"ktx2"===e.format))&&bt()}_getVertexBufferLayout(e,t){return ct(_t(this._getGeometryParameters({hasTexture:At(e.params.material),hasNormals:t.normal,hasRegions:t.uvRegion})))}_getObjectIdField(){return this.layer.objectIdField||re}_getGlobalIdField(){return this.layer.globalIdField}_findGraphicNodeAndIndex(e){const t=tt(this.layer.fieldsIndex,e.attributes,this._getObjectIdField());for(const i of this._nodeId2Meta.values()){const e=i?.featureIds.indexOf(t);if(null!=e&&e>=0)return{node:i.node,index:e}}return null}_getGraphicIndices(e,t){const i=this._nodeId2Meta.get(e.index);if(null==i)return[];const s=[],r=this._getObjectIdField(),o=this.layer.fieldsIndex;for(const n of t){const e=tt(o,n.attributes,r),t=i.featureIds.indexOf(e);-1!==t&&s.push(t)}return s}whenGraphicBounds(e){const t=this._findGraphicNodeAndIndex(e);if(!t)return Promise.reject();const i=this.getAABB(t.node.index,t.index);return null==i?Promise.reject():Promise.resolve({boundingBox:i,screenSpaceObjects:[]})}getAABBFromIntersectorTarget(e){return null==e.nodeIndex||null==e.componentIndex?null:this.getAABB(e.nodeIndex,e.componentIndex)}getAABB(e,t){const i=this._nodeId2Meta.get(e);if(null==i?.featureIds||t>=i.featureIds.length)return null;const s=i.objectHandle,r=Ve(t,this._collection,s,X(24),0),o=this.view.renderSpatialReference,n=this.view.spatialReference;return q(r,o,0,r,n,0)?K(r):null}whenGraphicAttributes(e,t){return Be(this.layer,e,this._getObjectIdField(),t,()=>[...this._nodeId2Meta.values()].filter(r))}getGraphicFromIntersectorTarget(e,t){if(null==e.nodeIndex||null==e.componentIndex)return null;const i=this._nodeId2Meta.get(e.nodeIndex);if(null==i?.featureIds||e.componentIndex>=i.featureIds.length)return null;const s=this._createLayerGraphic(this._createAttributes(e.componentIndex,i));return s?t.defer?(t.defer(async()=>(s.geometry=(await import("./i3s/meshUtils.js")).createMesh({layerView:this,nodeIndex:e.nodeIndex,featureIndex:e.componentIndex}),s)),null):s:null}_getCacheKey(e){return`${this._layerUrl}/v${wt}/${e}${this._cacheKeySuffix}`}_getCacheKeySuffix(){const e=this.view.renderSpatialReference;if(null==e)return Wt;if(e===L(e))return $t;return this.layer.spatialReference.equals(e)?zt:null!=e.wkid?`@${e.wkid}`:null}_getMemCacheKey(e,t=this.elevationOffset){return e+"#"+t}get _idbCacheEnabled(){return!this._controller.disableIDBCache&&!this.hasModifications&&0===this.elevationOffset&&null!=this._cacheKeySuffix}loadCachedGPUData(e){return null!=this._memCache?this._memCache.pop(this._getMemCacheKey(e)):null}deleteCachedGPUData(e){null!=e&&this._deleteComponentObject(e)}_cacheGPUData(e,t=this.elevationOffset){if(null==this._memCache)return void this._deleteComponentObject(e);const i=this._controller.indexDepth-e.node.level;this._memCache.put(this._getMemCacheKey(e.node.index,t),e,i)}loadMissingTextures(e,t,i,s){const r=e?.filter((e,i)=>{if(0===(e.usage&this.rendererTextureUsage))return!1;if(null==t)return!0;const s=Ae(e.encodings,this.supportedTextureEncodings),r=t[i];return!!(null==r?.data||s&&r.encoding!==s.encoding)})??[];return 0===r.length?Promise.resolve(!1):i(r,s).then(i=>{let s=0;for(let r=0;r<e.length;r++)s<i.length&&i[s].id===e[r].id&&(t[r]=i[s],s++);return!0})}loadCachedNodeData(e,t,i){return this._idbCacheEnabled?this._idbCache.get(this._getCacheKey(e.id),t).then(s=>null==s?null:(s.globalTrafo=Z(s.globalTrafo),s.nodeVersion!==e.version?(this._idbCache.remove(this._getCacheKey(e.id)),null):(0===this.elevationInfo.mode&&(e.geometryObbInRenderSR=lt.fromData(s.geometryObbData)),this.loadMissingTextures(s.requiredTextures,s.textureData,i,t).then(i=>(i&&this._idbCache.initialized&&null!=s.textureData&&(s.byteSize=Nt(s.transformedGeometry,s.textureData),s.textureData.every(Ht)&&this._indexedDbSizeCheck(e,s)&&this._idbCache.put(this._getCacheKey(e.id),s).catch(t=>o.getLogger(this).warn(`Failed to update node with textures in IndexedDB cache: ${e.id}: ${t}`))),c(t),s))))):Promise.resolve(null)}addNode(e,t,i){return Tt(t)?null==t.geometryBuffer?(this._addNodeMeta(e.index,null),Promise.resolve()):this._addData(e,t.attributeDataInfo,()=>this._transformNode(e,t,i).then(s=>this._safeReschedule(()=>{if(null==s)return e.hasModifications=!1,this._addCachedNodeData(e,null,i);const{obb:r,componentOffsets:n,featureIds:a,anchorIds:l,anchors:d,transformedGeometry:h}=s;e.hasModifications=h.hasModifications;const c=Z(s.globalTrafo),u=O(Gt,r.center.x,r.center.y,r.center.z);j(u,u,c);const _=new lt(u,[r.extents.x,r.extents.y,r.extents.z],R(r.orientation.x,r.orientation.y,r.orientation.z,r.orientation.w));0===this.elevationInfo.mode&&(e.geometryObbInRenderSR=_),t.geometryData.componentOffsets=n,a&&(t.geometryData.featureIds=Array.from(a)),t.geometryData.anchorIds=l,t.geometryData.anchors=d;const m={nodeVersion:e.version,geometryData:t.geometryData,requiredTextures:t.requiredTextures,textureData:t.textureData,transformedGeometry:h,globalTrafo:c,geometryObbData:_.data,byteSize:Nt(h,t.textureData)};if(this._idbCacheEnabled&&this._idbCache.initialized&&this._indexedDbSizeCheck(e,m)){const t=null!=m.textureData?m.textureData.map(e=>Ht(e)?e:null):null;this._idbCache.put(this._getCacheKey(e.id),{...m,textureData:t}).catch(t=>o.getLogger(this).warn(`Failed to store node in IndexedDB cache: ${e.id}: ${t}`))}return this._addCachedNodeData(e,m,i)},i))):Promise.reject()}getElevationRange(e){const t=new nt,i=this._controller,{index:s}=i;if(!s)return t;const{rootNode:r}=s;if(!r)return t;const o=this._nodeId2Meta,n=e.radius,a=i.viewportQueries,l=this._planetRadiusInGlobalMode,{view:d}=this,{renderCoordsHelper:h}=d,c=h.referenceEllipsoid.radius,u=this._collection,_=i=>{const{childrenLoaded:s}=i;if(0===s)return!1;const r=a.getAndUpdateVisibilityObbInRenderSR(i);let d=null,_=-1;if(r){if(_=r.radius,!r.intersectSphereWithMBS(e,_))return!1}else d=a.calculateServiceMbsInRenderSRElevationAdjusted(i),d&&(_=d.radius);if(_>=0&&n>=1*_)return null!=r?Jt(t,r,l):d?.isValid&&Yt(t,d,l),!1;const m=Qt;if(m.minElevation=1/0,m.maxElevation=-1/0,(null!=r||null!=d)&&(null!=r?Jt(m,r,l):null!=d&&Yt(m,d,l),m.minElevation>=t.minElevation&&m.maxElevation<=t.maxElevation))return!1;const g=o.get(i.index);if(g){const{geometryObbInRenderSR:s}=i;if(!s||s.intersectSphereWithMBS(e)){if(s){if(n>0*s.radius)return Jt(t,s,l),!1}const{objectHandle:e}=g,i=u.getObjectTransform(e),r=h.getAltitude(i.position);u.expandRangeWithComponentObjectElevationRange(e,r,c,t)}}return s-(g?1:0)>0};return s.traverse(r,_),t}computeVisibilityObb(e){return qe(e,this.view.renderSpatialReference,this._controller.crsIndex,this.layer.spatialReference,this.elevationOffset,this._modifications,this.view.renderCoordsHelper.sphericalPCPF)}_transformNode(e,t,i){const s=t.geometryData.geometries??[],r=new Array(s.length);for(let f=0;f<s.length;++f)r[f]=this._getVertexBufferLayout(s[f],t.geometryDescriptor);const o=this.layer.normalReferenceFrame,n=t.normalReferenceFrame??o??"none",a=e.serviceMbsInIndexSR,l=this.elevationOffset,d=this._controller.crsIndex,h=this._controller.crsVertex,c=this.view.renderSpatialReference,u=ke(a,l,n,d,c),_=z(d,h),m=z(h,c);if(null==_||null==m)return Promise.resolve(null);const g={context:this.uid,geometryBuffer:t.geometryBuffer,geometryData:t.geometryData,geometryDescriptor:t.geometryDescriptor,layouts:r,globalTrafo:u,mbs:a.toJSON(),obbData:e.serviceObbInIndexSR?.data,elevationOffset:l,needNormals:this._controller.isMeshPyramid||this._imVertexNormals,computeNormals:this._isIntegratedMesh&&this._imVertexNormals,normalReferenceFrame:n,indexToVertexProjector:_,vertexToRenderProjector:m};return this._workerHandle.invoke(g,i)}get _supportsNodeCrossFading(){return!this.view?.stage?.renderer.shadowsEnabled}get nodeCrossfadingEnabled(){return this._supportsNodeCrossFading&&(this.lodCrossfadeinDuration>0||this.lodCrossfadeoutDuration>0||this.lodCrossfadeUncoveredDuration>0)}get nodeFadeoutEnabled(){return this._supportsNodeCrossFading&&this.lodCrossfadeoutDuration>0}_setNewNodeOpacity(e){const t=this.nodeCrossfadingEnabled?0:this.fullOpacity;this._setNodeOpacity(e,t)}addCachedGPUData(e,t,i){if(0===this.elevationInfo.mode&&(e.geometryObbInRenderSR=this._collection.getComponentObb(t.objectHandle).clone()),!this._controller.isGeometryVisible(e))return void this._cacheGPUData(t);null!=this._labeler&&this._addMetaToLabeler(this._labeler,t);const s=e.index;this._addNodeMeta(s,t),this.updateNodeState(s,i),this._collection.setObjectVisibility(t.objectHandle,!0),this._updateMaterial(t),this._setNewNodeOpacity(t),0!==this.elevationInfo.mode&&this._ensureElevationTask().schedule(s),this._updateEngineObject(t),this._highlights?.objectCreated(t),null!=this._treeDebugger&&this._treeDebugger.update()}addCachedNodeData(e,t,i,s){return this._addData(e,i,()=>this._addCachedNodeData(e,t,s))}async deleteCachedNodeData(e){if(this._idbCacheEnabled)return this._idbCache.remove(this._getCacheKey(e))}async _addCachedNodeData(e,t,i){if(!this.contentVisible||!this._controller.isGeometryVisible(e))return void this._removeNodeStageData(e.index,this.elevationOffset,this._nodeId2MetaReloading);if(null==t)return void this._addNodeMeta(e.index,null);const s=this._addTasks.get(e.index),{geometryData:r,transformedGeometry:n}=t;await this.i3sOverrides.applyAttributeOverrides(r.featureIds,s.attributeInfo,i,this._controller.requiredAttributes);const a=null!=t.textureData?t.textureData.filter(e=>null!=e&&0!==(e.usage&this.rendererTextureUsage)):[];!has("disable-feature:i3s-basis")&&a.some(e=>null!=e&&(2===e.encoding||1===e.encoding))&&await bt(),e.memory=0;const{componentOffsets:l,geometries:d,featureIds:h,anchorIds:c,anchors:u}=r,_=this._collection,m=d[0],{layout:g,indices:f,interleavedVertexData:p,positionData:y,hasColors:R}=n,{material:O,geometryParameters:j}=this._materialParameters(m,g),D=p.byteLength/g[0].stride,A=l||new Uint32Array([0,f?f.length:D]),T=m.transformation?S(m.transformation):E(),H=Z(t.globalTrafo);x(T,H,T);const P=w(N(),T),U=b(C(),T),L=this._isIntegratedMesh?this._imShading?2:0:1,B=j.textureCoordinateType,q=!v(U,M),z=new mt(g,L,B,q?1:0),$=new gt({interleavedVertexData:p,vertexCount:D,indexData:f},{positions:ee(y.data),indices:te(y.indices)},A,z),K=this.view.renderSpatialReference,Q=this.view.basemapTerrain.spatialReference,J=lt.fromData(dt(t.geometryObbData)).getCenter(ii),Y=[1,1,1];G(J,K,Y,Q)||o.getLogger(this).errorOnce("Unsupported coordinate system for IM overlay");const X=N();W(J,K,X,Q);const ie=C();I(ie,U);const se=N();V(se,F(se,J,P),ie);const re=X[0]-se[0]*Y[0],oe=X[1]-se[1]*Y[1],ne=2===j.textureCoordinateType,{textures:ae,texturePromise:le,materialParameters:de}=this._initMaterialAndTextures(O,a,ne,e),he=_.createObject(new ut(k(re,oe,Y[0],Y[1]),new pt(P,U),lt.fromData(dt(t.geometryObbData)),$,!this._isIntegratedMesh),de);e.memory+=this._memEstimateGeometryAdded(he),e.memory+=ae.reduce((e,t)=>e+(null!=t?this._memEstimateTextureAdded(t):0),0);const ce=!!O.hasParametersFromSource,ue="blend"!==O.alphaMode&&O.metallicRoughness.baseColorFactor[3]>=1,_e=new xt(e,h,he,this._getInvalidRendererVersion(),s.attributeInfo,{hasParametersFromSource:ce,isOpaque:ue},ae,c,u);s.meta=_e,this._hasTextures||=t.requiredTextures?.some(({usage:e})=>!!(19&e))||!!e.resources.texture,this._hasData=!0,this._hasColors||=R,this.notifyChange("hasTexturesOrVertexColors");const me=this.slicePlaneEnabled;return Promise.all([this._addOrUpdateEdgeRendering(_e),le]).then(([t,s])=>(this._addTasks.has(e.index)&&t?.updateObjectVisibility(_e.objectHandle,!1).catch(e=>this._logEdgeViewError(e,this.layer.title)),this._safeReschedule(()=>{const i=this._addTasks.get(e.index);if(!i)return;if(this._addNodeMeta(e.index,_e),i.meta=null,!this.contentVisible)return void this._removeNodeStageData(e.index,this.elevationOffset);_.setObjectVisibility(he,!0),t?.updateObjectVisibility(_e.objectHandle,!0).catch(e=>this._logEdgeViewError(e,this.layer.title)),_e.attributeInfo=i.attributeInfo;const s=_e.cachedRendererVersion!==this._rendererVersion,r=me!==this.slicePlaneEnabled;this._updateElevationOffsets(_e);const o=_e.elevationOffsets;this._updateComponentData(_e);const n=this._applyFiltersToNode(_e);(s||null!=t&&(r||n||o))&&this._addOrUpdateEdgeRendering(_e),null!=this._labeler&&this._addMetaToLabeler(this._labeler,_e),this._visibleGeometryChanged(_e,0),this._highlights?.objectCreated(_e),this._updateMaterial(_e),this._setNewNodeOpacity(_e),null!=this._treeDebugger&&this._treeDebugger.update()},i))).catch(e=>{const{meta:t,allowMemCache:i}=s;throw s.meta=null,t&&i?this._cacheGPUData(t):t&&this._deleteComponentObject(t),e})}_addNodeMeta(e,t){if(this._removeNodeStageData(e,this.elevationOffset,this._nodeId2MetaReloading),this._nodeId2Meta.has(e)){o.getLogger(this).error("Removing duplicated node");const t=this._nodeId2Meta.get(e);t&&(this._deleteComponentObject(t),this._updateFeatureIdCounts(t,-1))}else this._controller.updateLoadStatus(e,!0);t&&(t.lodCrossfadeProgress=null,this.nodeCrossfadingEnabled&&Ut(t.cachedEdgeMaterials,0),this._updateFeatureIdCounts(t,1)),this._nodeId2Meta.set(e,t),this.notifyChange("elevationRange")}_updateElevationOffsets(e){if(!e.node.serviceMbsInIndexSR)return;const{view:t,elevationInfo:i}=this,s=this._controller.crsIndex,{groundView:r,groundSpatialReference:o,renderSpatialReference:n}=t,a=i.mode;if(null==n||null==o||0===a)return void(e.elevationOffsets=null);const l=this._collection.getObjectTransform(e.objectHandle);e.elevationOffsets=e.elevationOffsets??[];const d=Gt,h=Bt,c=2===a,u=this.view.renderCoordsHelper,_=e.featureIds.length,m=(()=>{if(e.cachedElevationAnchors)return e.cachedElevationAnchors;const t=X(3*_);e.cachedElevationAnchors=t;const{center:i}=e.node.serviceMbsInIndexSR;for(let r=0;r<_;r++){const a=3*r,c=e.anchorIds?.indexOf(r)??-1;e.anchors&&c>=0?(O(d,e.anchors[3*c],e.anchors[3*c+1],e.anchors[3*c+2]),D(d,d,i),W(d,s,d,o),t[a]=d[0],t[a+1]=d[1],t[a+2]=u.getAltitude(d)):(this._collection.getComponentAabb(e.objectHandle,r,h,!0),O(d,(h[0]+h[3])/2,(h[1]+h[4])/2,h[2]),V(d,d,l.rotationScale),D(d,d,l.position),t[a+2]=u.getAltitude(d),W(d,n,d,o),t[a]=d[0],t[a+1]=d[1])}return t})(),g=i.offset,f=e.elevationOffsets,p=(e,t)=>{const i=c?m[3*e+2]:0;f[e]=g+(t??0)-i};r.getElevations(m,_,p)}_ensureElevationTask(){return null!=this._elevationTask||(this._elevationTask=new Ee(this.view.resourceController.scheduler,e=>this._controller.updateElevationChanged(e,this.view.basemapTerrain.spatialReference)?.filterInPlace(e=>null!=this._nodeId2Meta.get(e)),e=>this._nodeElevationAlignmentChanged(this._nodeId2Meta.get(e)),()=>this.elevationInfo?.mode)),this._elevationTask}_elevationInfoChanged(e,t){const i=0!==e.mode,s=!!t&&t!==e&&0!==t.mode;this._intersectionHandler.updateElevationAlignState(i,this.view.state.viewingMode),i&&!s&&this._controller.removeAllGeometryObbs(),this._nodeId2Meta.forEach(e=>this._nodeElevationAlignmentChanged(e))}_nodeElevationAlignmentChanged(e){null!=e&&(this._updateElevationOffsets(e),this._updateComponentData(e),this._updateEdgeRendering(e),null!=this._labeler&&this._labeler.updateLabelPositions(e),this._updateSnappingSources(e,2),this._elevationProvider.notifyObjectChanged(this._collection.getComponentObb(e.objectHandle)))}_safeReschedule(e,t){return c(t),this._controller.reschedule(e,t)}_materialParameters(e,t){const i=null!=e.params.material?e.params.material:Te(),s=t.some(({name:e})=>"uvRegion"===e),r=t.some(({name:e})=>"normalCompressed"===e),o=At(i);return{geometryParameters:this._getGeometryParameters({hasTexture:o,hasNormals:r,hasRegions:s}),material:i}}_initMaterialAndTextures(e,t,i,s){const r=this._stage.renderView,o=e=>{this._gpuMemoryEstimate-=e,this._texMemoryEstimate-=e,s.memory-=e},n=t.map(t=>He(t,e,i,r,this._compressionTracker,o));this._stage.addTextures(n);const{materialParameters:a,texturePromise:l}=Ne(e,n,t,this.view.stage.renderView.textures,{rendererTextureUsage:this.rendererTextureUsage,usePBR:this._usePBR,isIntegratedMesh:this._isIntegratedMesh,slicePlaneEnabled:this.slicePlaneEnabled,viewSpatialReference:this.view.spatialReference,applySSAO:this._applySSAO});return{textures:n,texturePromise:l,materialParameters:a}}_getGeometryParameters(e){return new ft(this._hasVertexColors,e.hasNormals,e.hasTexture?e.hasRegions?2:1:0)}_addData(e,t,i){let s=this._addTasks.get(e.index);if(s)s.attributeInfo=t;else{const r=Promise.withResolvers();s=new kt(t,null,r.promise),this._addTasks.set(e.index,s),i().then(r.resolve,r.reject).then(()=>this._addTasks.delete(e.index)).catch(t=>{throw this._addTasks.delete(e.index),t})}return s.promise}_clearAddTasks(){this._addTasks.forEach(e=>{null!=e.meta&&(this._cacheGPUData(e.meta),e.meta=null)}),this._addTasks.clear()}_clippingAreaChanged(){const e=this.view.renderSpatialReference,t=this.layer.spatialReference,i=J();this._renderClippingArea=at(this.view.clippingArea,i,e)?i:null;const s=J();this._layerClippingArea=at(this.view.clippingArea,s,t)?s:null,this._filterChange(),this._controller&&this._controller.updateClippingArea(this.view.clippingArea),this._isIntegratedMesh&&this._modificationsChanged()}get hasGeometryFilter(){return!1}_geometryFilterChange(){const e=this.hasGeometryFilter;this._controller.geometryFilterChanged(e),this._applyFilters(e),this._assertFeatureIdNodeCounts(e)}_assertFeatureIdNodeCounts(e){e&&!this._featureIdCounts?(this._featureIdCounts=ti(this._nodeId2Meta.values()),this._filteredIdCounts=ti(this._nodeId2Meta.values(),1),this._weaklyRemovedIdCounts=ti(this._nodeId2Meta.values(),2),this.addHandles(_(()=>this._controller.updating,e=>{!e&&this._needFilterResolve&&(this.multiGeometryFilterResolve(),this._needFilterResolve=!1,this.notifyUpdate())},{sync:!0}),"updateFinished")):!e&&this._featureIdCounts&&(this._featureIdCounts=null,this._filteredIdCounts=null,this._weaklyRemovedIdCounts=null,this._mismatchShow=null,this._mismatchHide=null,this.removeHandles("updateFinished"),this._needFilterResolve=!1,this.notifyUpdate())}_updateFeatureIdCounts(e,t){this._featureIdCounts&&(this._needFilterResolve=!0,ei(this._featureIdCounts,e.featureIds,t),ei(this._filteredIdCounts,e.filteredIds,t),ei(this._weaklyRemovedIdCounts,e.weaklyRemovedIds,t))}_updateFilteredIdCounts(e,t,i){this._filteredIdCounts&&(this._needFilterResolve=!0,ei(this._filteredIdCounts,t,-1),ei(this._filteredIdCounts,e.filteredIds,1),ei(this._weaklyRemovedIdCounts,i,-1),ei(this._weaklyRemovedIdCounts,e.weaklyRemovedIds,1))}_checkFeatureIdNodeCountInvariant(){const e=null!=this._featureIdCounts;if(this.hasGeometryFilter!==e&&o.getLogger(this).error("checkFeatureIdNodeCountInvariant()","LayerView should have feature id node counts if and only if it has a geometry filter",{layerView:this,hasNodeCounts:e}),!this._featureIdCounts||!this._filteredIdCounts)return;const t=ti(this._nodeId2Meta.values());n(this._featureIdCounts,t)||o.getLogger(this).error("checkFeatureIdNodeCountInvariant()","Incorrect _featureIdCounts",{layerView:this,counts:this._featureIdCounts,expected:t});const i=ti(this._nodeId2Meta.values(),1);n(this._filteredIdCounts,i)||o.getLogger(this).error("checkFeatureIdNodeCountInvariant()","Incorrect _filteredIdCounts",{layerView:this,counts:this._filteredIdCounts,expected:i});const s=ti(this._nodeId2Meta.values(),2);n(this._weaklyRemovedIdCounts,s)||o.getLogger(this).error("checkFeatureIdNodeCountInvariant()","Incorrect _weaklyRemovedIdCounts",{layerView:this,counts:this._weaklyRemovedIdCounts,expected:i})}multiGeometryFilterResolve(){if(!this._featureIdCounts||!this._filteredIdCounts)return;let e=null,t=null;for(const[i,s]of this._filteredIdCounts){const r=this._featureIdCounts.get(i);if(r!==s){s+(this._weaklyRemovedIdCounts?.get(i)??0)===r?(e??=new Set,e.add(i)):(t??=new Set,t.add(i))}}g(e,this._mismatchShow)&&g(t,this._mismatchHide)||(this._mismatchShow=e,this._mismatchHide=t,this._nodeId2Meta.forEach(e=>{if(!e?.filteredIds)return;const t=Zt(e,this._mismatchShow,this._mismatchHide);this._collection.setAllComponentVisibilities(e.objectHandle,t),this._visibleGeometryChanged(e,2)}))}_filterChange(){this._applyFilters(this.hasGeometryFilter)}_applyFilters(e){this._filters=this.getFilters(),e?this._controller&&this._controller.requestUpdate():this._nodeId2Meta.forEach(e=>{e&&this._applyFiltersToNode(e)&&(this._addOrUpdateEdgeRendering(e),this._visibleGeometryChanged(e,2))})}getFilters(){const e=[],t=this._renderClippingArea;return null!=t&&e.push((e,i)=>this._boundingRectFilter(e,i,t)),e}addSqlFilter(e,t,i){if(null!=t){const s=t.fieldNames;e.push((e,r)=>this._sqlFilter(e,r,t,s,i))}}_sqlFilter(e,t,i,s,r){const o={},n=this._createLayerGraphic(o);if(!n)return;const a=this.layer.objectIdField,l=t.featureIds,d=t.attributeInfo?.attributeData;s.every(e=>e===a||null!=d?.[e])&&ze(e,l,e=>{o[a]=l[e];for(const i of s)i!==a&&(o[i]=d?Re(d[i],e):null);try{return i.testFeature(n)}catch(t){return r(t),!1}})}_boundingRectNodeTest(e,t){return B(e.node.serviceMbsInIndexSR,this._controller.crsIndex,Dt,this.view.renderSpatialReference),We(t,Dt)}_boundingRectFeatureTest(e,t,i){return this._collection.getComponentAabb(e.objectHandle,t,Rt),Q(Rt,Ot),Y(i,Ot)}_boundingRectFilter(e,t,i){const s=this._collection,r=this._boundingRectNodeTest(t,i);if(3===r)return;if(0===r)return void(e.length=0);const o=s.getComponentCount(t.objectHandle);if(o.invisible+o.visible!==t.featureIds.length)return;const n=this._transformClippingArea(jt,i,t.objectHandle);ze(e,t.featureIds,e=>this._boundingRectFeatureTest(t,e,n))}_transformClippingArea(e,t,i){const s=this._collection.getObjectTransform(i),r=s.position,o=s.rotationScale;return e[0]=(t[0]-r[0])/o[0],e[1]=(t[1]-r[1])/o[4],e[2]=(t[2]-r[0])/o[0],e[3]=(t[3]-r[1])/o[4],e}async _addOrUpdateEdgeRendering(e,t=!0){const i=e.objectHandle,{hasEdges:s,perFeatureEdgeMaterials:r}=this._getFilteredEdgeMaterials(e);s&&!this._edgeView&&(this._edgeView=await this._stage.renderer.loadEdgeView());const o=this._edgeView;if(!o)return null;const n=o.hasObject(i);if(s){if(n){if(this.nodeCrossfadingEnabled){Ut(r,this.getNodeOpacity(e))}return o.updateAllComponentMaterials(i,r,this.slicePlaneEnabled,t).catch(e=>this._logEdgeViewError(e,this.layer.title)),o.updateObjectVisibility(i,!0).catch(e=>this._logEdgeViewError(e,this.layer.title)),o.updateAllVerticalOffsets(i,e.elevationOffsets).catch(e=>this._logEdgeViewError(e,this.layer.title)),o}const s=await this._collection.addEdges(i,o,r,this.slicePlaneEnabled,e.elevationOffsets);return e.edgeMemoryUsage=s,e.node.memory+=s,o}return n&&(e.node.memory-=e.edgeMemoryUsage,e.edgeMemoryUsage=0,o.removeObject(i)),null}_applyFiltersToNode(e){const{filteredIds:t,weaklyRemovedIds:i}=e,s=this._applyFiltersToNodeComponents(e);return this._updateFilteredIdCounts(e,t,i),s&&this._labeler?.applyFilterChange(e),s}_applyFiltersToNodeComponents(e){const t=this._collection,i=t.getComponentCount(e.objectHandle),s=null!=e.filteredIds,r=0===i.invisible;if(t.setAllComponentVisibilities(e.objectHandle,"all"),0===this._filters.length)return e.filteredIds=null,!r;if(null!=e.filteredIds&&e.appliedFilters===this._filters||(e.weaklyRemovedIds=null,e.filteredIds=Xt(e,this._filters),e.appliedFilters=this._filters),s&&e.filteredIds===e.featureIds&&(!this._mismatchHide||e.filteredIds.every(e=>!this._mismatchHide?.has(e))))return!r;const o=Zt(e,this._mismatchShow,this._mismatchHide);return t.setAllComponentVisibilities(e.objectHandle,o),!0}_removeAllNodeDataFromStage(e=this.elevationOffset){this._nodeId2Meta.forEach((t,i)=>this._removeNodeStageData(i,e)),this._nodeId2MetaReloading.forEach((t,i)=>this._removeNodeStageData(i,e,this._nodeId2MetaReloading)),this._elevationTask=a(this._elevationTask)}removeNode(e){const t=this.elevationOffset;this._removeNodeStageData(e,t),this._removeNodeStageData(e,t,this._nodeId2MetaReloading),null!=this._elevationTask&&this._elevationTask.remove(e)}_removeNodeStageData(e,t,i=this._nodeId2Meta){i.has(e)&&this._controller.updateLoadStatus(e,!1);const s=i.get(e);null!=s?(this._collection.setObjectVisibility(s.objectHandle,!1),null!=this._edgeView&&this._edgeView.hasObject(s.objectHandle)&&this._edgeView.updateObjectVisibility(s.objectHandle,!1).catch(e=>this._logEdgeViewError(e,this.layer.title)),this._visibleGeometryChanged(s,1),null!=this._labeler&&this._labeler.removeNodeMeta(s),i.delete(e),this._highlights?.objectDeleted(s),i===this._nodeId2Meta?(this._updateFeatureIdCounts(s,-1),this._cacheGPUData(s,t),this.nodeCrossfadingEnabled&&this._crossfadeHelper.stopNodeFading(s)):this._deleteComponentObject(s),null!=this._treeDebugger&&this._treeDebugger.update()):i.delete(e)}_deleteComponentObject(e){if(null!=this._edgeView&&this._edgeView.removeObject(e.objectHandle),this._memEstimateGeometryRemoved(e.objectHandle),this._collection.destroyObject(e.objectHandle),e.textures)for(const t of e.textures)this._memEstimateTextureRemoved(t),this._stage.removeTexture(t)}updateNodeState(e,t){const i=this._nodeId2Meta.get(e);null!=i&&i.objectHandle.updateMaterial({polygonOffset:0===t?1:0})}updateNodeIndex(e,t){if(this._nodeId2Meta.has(e)){const i=this._nodeId2Meta.get(e);this._nodeId2Meta.delete(e),this._nodeId2Meta.set(t,i),this.notifyChange("elevationRange")}const i=this._nodeId2MetaReloading.get(e);i&&(this._nodeId2MetaReloading.delete(e),this._nodeId2MetaReloading.set(t,i))}_invalidateAllSymbols(){this._rendererVersion=$e(this._rendererVersion,1),this._controller?.requestUpdate()}_getInvalidRendererVersion(){return $e(this._rendererVersion,-1)}async _rendererChange(e){if(this._currentRenderer=e,this.notifyChange("rendererTextureUsage"),this._rendererVersion=$e(this._rendererVersion,1),this._rendererFields=null,this._colorVariable=null,this._opacityVariable=null,this._invalidateAllSymbols(),e&&(this._rendererFields=await e.getRequiredFields(this.layer.fieldsIndex)),this._updateSymbologyFields(),!this._arcade&&e&&"arcadeRequired"in e&&e.arcadeRequired&&(this._arcade=await ue()),e&&"visualVariables"in e&&e.visualVariables)for(const t of e.visualVariables)"color"===t.type?this._colorVariable=t:"opacity"===t.type?this._opacityVariable=t:o.getLogger(this).warn(`Unsupported visual variable type for 3D Object Scene Services: ${t.type}`);if(e)for(const t of e.symbols)"mesh-3d"!==t.type&&o.getLogger(this).error(`Symbols of type '${t.type}' are not supported for 3D Object Scene Services.`);this._controller&&this._controller.requestUpdate()}_getCachedEdgeMaterials(e){return this._hasComponentData&&e.cachedRendererVersion!==this._rendererVersion&&this._updateCachedRendererData(e),e.cachedEdgeMaterials}_getComponentParameters(e){this._hasComponentData&&e.cachedRendererVersion!==this._rendererVersion&&this._updateCachedRendererData(e);const t=e.cachedSymbology;return(i,s)=>{const r=i*e.cachedSymbologyStride;P(s.externalColor,t[r]/255,t[r+1]/255,t[r+2]/255,t[r+3]/255);const o=this._stage.renderView.olidRenderHelper;if(o){const t=e.featureIds[i],r=this.sublayerId?`${this.layerViewUid}_${this.sublayerId}`:this.layerViewUid,n=he(this.view,this.uid);o.setUidToObjectAndLayerId(t,t,this.layerId,r,this.layerPopupEnabledAndHasTemplate&&!n,e.node.resources.attributes,i,this.sublayerId),s.olidColor=o.getObjectAndLayerIdColor({graphicUid:t,layerViewUid:r})}s.externalColorMixMode=15&t[r+4],s.castShadows=!!(16&t[r+4]),s.pickable=!!(32&t[r+4]),s.elevationOffset=e.elevationOffsets?.[i]??0,s.emissiveStrength=e.emissiveStrengths?.[i]??1,s.emissiveSource=e.emissiveSources?.[i]??0}}_getSymbolInfo(e,t){const i=e?.getSymbol(t,{arcade:this._arcade});if(!(i instanceof _e))return null;const s=i.id;if(this._symbolInfos.has(s))return this._symbolInfos.get(s);const r=Ke(i);return this._symbolInfos.set(s,r),r}_setSymbologyOverride(e,t){this._symbologyOverride!==e&&(this._symbologyOverride=e,this._symbologyOverrideFields=t,this._invalidateAllSymbols(),this._updateSymbologyFields())}_updateSymbologyFields(){this._symbologyFields=null!=this._symbologyOverrideFields&&this._symbologyOverrideFields.length>0?null!=this._rendererFields&&this._rendererFields.length>0?ne(this.layer.fieldsIndex,[...this._rendererFields,...this._symbologyOverrideFields]):this._symbologyOverrideFields:this._rendererFields}_updateCachedRendererData(e){if(e.cachedRendererVersion=this._rendererVersion,!this._hasComponentData)return;const t=this._tmpAttributeOnlyGraphic,i={};t.attributes=i;const s=this._currentRenderer,r=e.attributeInfo?.attributeData,o=e.featureIds?this.layer.objectIdField:null,n=null!=r&&null!=this._symbologyFields&&this._symbologyFields.length>0;let a=null,l=null;if(n&&null!=this._symbologyFields){a=[],l=[];for(const e of this._symbologyFields){const t=r[e];t&&(a.push(e),l.push(t))}}e.cachedSymbology||(e.cachedSymbology=se(e.featureIds.length*e.cachedSymbologyStride));const d=new et,h=this.fullOpacity,c=this.nodeCrossfadingEnabled?this.getNodeOpacity(e):h;let u=null,_=1,m=Qe,g=0;for(let f=0;f<e.featureIds.length;f++){if(null!=o&&(i[o]=e.featureIds[f]),n&&a)for(let e=0;e<a.length;e++)i[a[e]]=Re(l[e],f);const r=s?this._getSymbolInfo(s,t):null;let h,p;if(d.pickable=!0,s&&"visualVariables"in s){if(this._colorVariable){const e=le(this._colorVariable,t,{color:Ft,arcade:this._arcade});e&&(h=d.color,h[0]=e.r/255,h[1]=e.g/255,h[2]=e.b/255,h[3]=e.a??1,this._opacityVariable||null===e.a||(p=e.a))}this._opacityVariable&&(p=de(this._opacityVariable,t,{arcade:this._arcade}))}if(r?.material){const e=r.material;h=null==h||null==p?xe(h,p,e.color,e.alpha,Mt,d.color):xe(h,p,null,null,Mt,d.color)}h??=P(d.color,1,1,1,1);const y=r?.material;if(d.colorMixMode=y?.colorMixMode??1,d.edgeMaterial=r?.edgeMaterial,this._symbologyOverride?.(t,d),null!=this._nodeColorOverride&&(this._nodeColorOverride(e.node,h),d.colorMixMode=3),d.pickable&&=h[3]>=Ct,d.castShadows=r?r.castShadows:d.pickable,null!=d.edgeMaterial){const t=h[3]>=1&&(e.material.isOpaque||3===d.colorMixMode)?1:0;d.edgeMaterial===u&&t===_||(m={...d.edgeMaterial,opacity:c,objectTransparency:t},u=d.edgeMaterial,_=t),e.cachedEdgeMaterials[f]=m}else e.cachedEdgeMaterials[f]=Qe;e.cachedSymbology[g++]=Math.round(255*h[0]),e.cachedSymbology[g++]=Math.round(255*h[1]),e.cachedSymbology[g++]=Math.round(255*h[2]),e.cachedSymbology[g++]=Math.round(255*h[3]),e.cachedSymbology[g++]=d.colorMixMode|+d.castShadows<<4|+d.pickable<<5;const b=y?.emissive?.strength??yt;b===yt||e.emissiveStrengths||(e.emissiveStrengths=new Array(e.featureIds.length).fill(yt)),e.emissiveStrengths&&(e.emissiveStrengths[f]=b);const v=y?.emissive?.source||0;0===v||e.emissiveSources||(e.emissiveSources=new Array(e.featureIds.length).fill(0)),e.emissiveSources&&(e.emissiveSources[f]=v)}}_getFilteredEdgeMaterials(e){const t=this._getCachedEdgeMaterials(e);this.nodeCrossfadingEnabled||Ut(t,this.fullOpacity);const i=e.filteredIds;if(null==i){return{hasEdges:t.some(e=>e!==Qe),perFeatureEdgeMaterials:t}}let s=0,r=!1;const o=t.map((t,o)=>e.featureIds[o]!==i[s]?Qe:(r=r||t!==Qe,s++,t));return{hasEdges:r,perFeatureEdgeMaterials:o}}_updateComponentData(e){if(!this._hasComponentData)return;const{objectHandle:t}=e,i=this._getComponentParameters(e);this._collection.setComponentData(t,i),this._stage.renderView.requestRender()}_reloadAll(e=this.elevationOffset){this._removeAllNodeDataFromStage(e),null!=this._controller&&this._controller.restartNodeLoading()}_opacityChange(e){this.nodeCrossfadingEnabled&&this._crossfadeHelper.stopAllNodeFading(),this._nodeId2Meta.forEach(t=>{null!=t&&(this._collection.updateObjectOpacity(t.objectHandle,e),Ut(t.cachedEdgeMaterials,e),this._updateEdgeRendering(t))})}_updateMaterial(e){e.objectHandle.updateMaterial({slicePlaneEnabled:this.slicePlaneEnabled,usePBR:this._usePBR})}_updateEngineObject(e){this._updateComponentData(e),this._applyFiltersToNode(e),this._addOrUpdateEdgeRendering(e),this._visibleGeometryChanged(e,2)}intersect(e,t,i,s){this._intersectionHandler.intersectRay(e,t,i,s,null,!1)}_slicePlaneEnabledChange(e){this._intersectionHandler&&(this._intersectionHandler.slicePlaneEnabled=e),null!=this._labeler&&(this._labeler.slicePlaneEnabled=e),this._foreachMeta(t=>{t.objectHandle.updateMaterial({slicePlaneEnabled:e}),this._updateEdgeRendering(t,!1)})}_updatePBR(e){this._foreachMeta(t=>t.objectHandle.updateMaterial({usePBR:e})),this._hasLoadedPBRTextures=!0}_foreachMeta(e){this._nodeId2Meta.forEach(t=>{null!=t&&e(t)})}get _usePBR(){return this._imShading&&this.view.qualitySettings.physicallyBasedRenderingEnabled}_updateEdgeRendering(e,t=!0){null!=this._edgeView&&this._edgeView.hasObject(e.objectHandle)&&this._addOrUpdateEdgeRendering(e,t)}_forAllNodes(e){this._nodeId2Meta.forEach(e)}_ignoreClientNodeOverriddenFeatures(e){return this.i3sOverrides.hasGeometryChanges?(t,i,s)=>s.node.index>=0&&this.i3sOverrides.featureHasGeometryChanges(t)?0:e(t,i,s):e}_forAllFeatures(e,t,i){for(const s of this._nodeId2Meta.values())if(!(null==s||t&&s.node.serviceMbsInIndexSR&&1===t(s.node.serviceMbsInIndexSR)))switch(i){case 1:this._forAllFeaturesOfNode(s,e);break;case 0:this._forAllVisibleFeaturesOfNode(s,e);break;case 2:this._forAllQueryableFeaturesOfNode(s,e)}}_forAllFeaturesOfNode(e,t){e.featureIds.forEach((i,s)=>t(i,s,e))}_forAllVisibleFeaturesOfNode(e,t){const i=e.featureIds;this._collection.forEachVisibleComponent(e.objectHandle,s=>0===t(i[s],s,e))}_forAllQueryableFeaturesOfNode(e,t){const i=this._ignoreClientNodeOverriddenFeatures(t);if(null==this._renderClippingArea)return this._forAllFeaturesOfNode(e,i);const s=this._boundingRectNodeTest(e,this._renderClippingArea);if(0===s)return;if(3===s)return this._forAllFeaturesOfNode(e,i);const r=e.featureIds,o=e.objectHandle,n=Je(this._renderClippingArea,this._collection.getObjectTransform(o));for(let a=0;a<r.length;a++)this._boundingRectFeatureTest(e,a,n)&&i(r[a],a,e)}_createAttributes(e,t){const i={};null!=t.featureIds&&(i[this._getObjectIdField()]=t.featureIds[e]);const s=t.attributeInfo?.attributeData;if(null!=s)for(const r of Object.keys(s))i[r]=Re(s[r],e);return i}_createGraphic(e,t){return this._createLayerGraphic(this._createAttributes(e,t))}highlight(e,t){const s=it(e);if(0===s.length)return st;const r=vt(t),o=s[0]instanceof i?this._featureIdsFromGraphics(s):"number"==typeof s[0]?s:null;if(!o)return st;const n=this._ensureHighlights(),{set:a,handle:l}=n.acquireSet(r);return n.setFeatureIds(a,o),l}_featureIdsFromGraphics(e){const t=this.layer.fieldsIndex,i=this._getObjectIdField();return e.map(e=>tt(t,e.attributes,i))}_ensureHighlights(){return this._highlights??=new Se({collection:this._collection,forAllFeatures:e=>this._forAllFeatures(e,null,1),forAllFeaturesOfNode:(e,t)=>this._forAllFeaturesOfNode(e,t)}),this._highlights}resetHighlights(){this._highlights=a(this._highlights)}_visibleGeometryChanged(e,t){this._elevationProvider&&(null==this._visibleGeometryChangedSchedulerHandle&&(this._visibleGeometryChangedSchedulerHandle=m(()=>{const{node:t}=e,i=t.visibilityObbInRenderSR??t.geometryObbInRenderSR??t.serviceObbInRenderSR;if(null!=i){const e=$();i.toAaBoundingBox(e),this.emit("visible-geometry-changed",new ge(e))}else this.emit("visible-geometry-changed");this._visibleGeometryChangedSchedulerHandle=null})),this._updateSnappingSources(e,t),this._elevationProvider.notifyObjectChanged(this._collection.getComponentObb(e.objectHandle)))}get performanceInfo(){return new pe(this.usedMemory,this._nodeId2Meta.size,Math.round(this._gpuMemoryEstimate/1048576),Math.round(this._geoMemoryEstimate/1048576),Math.round(this._texMemoryEstimate/1048576),Math.round(this.unloadedMemory/1048576),this._idbCacheEnabled?Math.round(100*this._idbCache.getHitRate()):0)}checkInvariants(){}get test(){}getNodeOpacityByIndex(e){const t=this._nodeId2Meta.get(e);return this.getNodeOpacity(t)}getNodeOpacity(e){return null!=e?this._collection.getObjectOpacity(e.objectHandle):0}isNodeFullyFadedIn(e){return this._crossfadeHelper.isNodeFullyFadedIn(e)}getNodeCrossfadeMetaData(e){return this._nodeId2Meta.get(e)}getNodeComponentHandle(e){return this._nodeId2Meta.get(e)?.objectHandle}markNodeToRemove(e){this._controller&&this._controller.markNodeToRemove(e)}removeMarkedNodes(){this._controller&&this._controller.removeMarkedNodes()}foreachCrossfadeNode(e){this._nodeId2Meta.forEach(e)}fadeNode(e,t,i){if(!this.nodeCrossfadingEnabled)return;const s=this._nodeId2Meta.get(e);null!=s&&this._crossfadeHelper.fadeNode(e,s,t,i)}setNodeOpacityByIndex(e,t){const i=this._nodeId2Meta.get(e);null!=i&&this._setNodeOpacity(i,t)}_setNodeOpacity(e,t){this._collection.updateObjectOpacity(e.objectHandle,t),this._setNodeEdgeOpacity(e,t)}_setNodeEdgeOpacity(e,t){if(null==this._edgeView||!e.cachedEdgeMaterials)return;Ut(e.cachedEdgeMaterials,t);const i=e.objectHandle;this._edgeView.hasObject(i)&&this._edgeView.updateAllComponentOpacities(i,t).catch(e=>this._logEdgeViewError(e,this.layer.title))}get hasModifications(){return this._isIntegratedMesh&&null!=this._layerClippingArea||this._modifications&&this._modifications.length>0}updateNodeModificationStatus(e){const t=e.length;if(!this.hasModifications||t<=0||!0!==this._i3sWasmLoaded)return;const i=this.uid,s=Pt(e);if(s){const t={context:i,buffer:s.buffer};ve(t);const r=new Float64Array(s.buffer);e.forAll((e,t)=>{const i=r[t],s=Ie(i);e.imModificationImpact=s,0!==s&&this._controller.invalidateGeometryVisibility(e.index)})}}notifyUpdate(){this.notifyChange("updating")}notifyLODUpdate(){this._controller.notifyLODUpdate()}isUpdating(){return!(!this._controller||!this._controller.updating)||!!this._visibleGeometryChangedSchedulerHandle||null!=this._labeler&&this._labeler.updating||this._crossfadeHelper?.updating||this._i3sWasmLoaded instanceof Promise||this._asyncModuleLoading>0||null!=this._elevationTask&&this._elevationTask.readyToRun||this._needFilterResolve||this._compressionTracker.compressing}trackSnappingSources(e){const t={events:e,fetchEdgeLocations:async(e,t,i)=>{const s=this._nodeId2Meta.get(e);if(null==s)throw new Error("invalid-node");const{origin:r,buffer:o}=await this._collection.extractEdgeInformation(s.objectHandle,t,i);return this._snappingLocationsApplyElevation(s,o,r),{type:"components",objectIds:s.featureIds,locations:o,origin:r}},remove:()=>s(this._snappingSourcesTrackers,t)};return this._snappingSourcesTrackers.push(t),this._nodeId2Meta.forEach((t,i)=>{if(null==t)return;const s=this._controller.getRenderMbs(t.node);s&&e.add(i,s)}),t}_snappingLocationsApplyElevation(e,t,i){if(!e.elevationOffsets||0===this.elevationInfo.mode)return;const s=t.position0,r=t.position1,o=t.componentIndex,n=N(),a=N(),l=(e,t)=>{D(e,e,i),this.view.renderCoordsHelper.worldUpAtPosition(e,a),D(e,e,A(a,a,t)),T(e,e,i)};for(let d=0;d<s.count;d++){const t=e.elevationOffsets[o.get(d)];s.getVec(d,n),l(n,t),s.setVec(d,n),r.getVec(d,n),l(n,t),r.setVec(d,n)}}_updateSnappingSources(e,t){const{index:i}=e.node,s=this._controller.getRenderMbs(e.node);if(null!=s)for(const r of this._snappingSourcesTrackers)1!==t&&2!==t||r.events.remove(i),0!==t&&2!==t||r.events.add(i,s)}_logEdgeViewError(e,t){h(e)||o.getLogger(this).warn("Error while processing edges. Edges on this layer might not display correctly",t,e)}_indexedDbSizeCheck(e,t){return t.byteSize>St?(o.getLogger(this).warn(`Node is too big to store in IndexedDB cache: ${e.id} (${t.byteSize} bytes)`),!1):t.byteSize>0}get elevationProvider(){return this._elevationProvider}};return e([p()],H.prototype,"_hasLoadedPBRTextures",void 0),e([p()],H.prototype,"_asyncModuleLoading",void 0),e([p()],H.prototype,"_visibleGeometryChangedSchedulerHandle",void 0),e([p()],H.prototype,"view",void 0),e([p()],H.prototype,"layer",void 0),e([p()],H.prototype,"_controller",void 0),e([p()],H.prototype,"_labeler",void 0),e([p()],H.prototype,"updating",void 0),e([p()],H.prototype,"suspended",void 0),e([p()],H.prototype,"contentVisible",null),e([p({readOnly:!0})],H.prototype,"legendEnabled",null),e([p(ht)],H.prototype,"updatingProgress",void 0),e([p()],H.prototype,"updatingProgressValue",null),e([p()],H.prototype,"hasTexturesOrVertexColors",null),e([p()],H.prototype,"rendererTextureUsage",null),e([p()],H.prototype,"elevationOffset",null),e([p()],H.prototype,"elevationInfo",null),e([p({type:Boolean})],H.prototype,"slicePlaneEnabled",void 0),e([p()],H.prototype,"supportedTextureEncodings",null),e([p({type:[ae]})],H.prototype,"_modifications",void 0),e([p({readOnly:!0})],H.prototype,"clientGeometry",null),e([p()],H.prototype,"elevationRange",null),e([p()],H.prototype,"fullExtent",null),e([p()],H.prototype,"_elevationTask",void 0),e([p({readOnly:!0})],H.prototype,"_usePBR",null),H=e([y("esri.views.3d.layers.I3SMeshView3D")],H),H},Rt=$(),Ot=J(),jt=J(),Vt=new lt,Ft=new t([0,0,0,0]),Dt=new ie(0,0,0,0);function At(e){if(null==e)return!1;const t=e.metallicRoughness;return t&&t.baseColorTextureId>=0||t&&t.metallicRoughnessTextureId>=0||e.normalTextureId>=0||e.emissiveTextureId>=0||e.occlusionTextureId>=0}function Tt(e){return"geometryData"in e}function Ht(e){return null!=e&&f(e.data)}function Nt(e,t){let i=1024+e.interleavedVertexData.byteLength+(e.indices?e.indices.byteLength:0)+e.positionData.data.byteLength+e.positionData.indices.byteLength;if(null!=t)for(const s of t)null!=s&&f(s.data)&&(i+=s.data.byteLength);return i}function Pt(e){if(0===e.length)return;const t=10*e.length,i=new Float64Array(t);let s=0;return e.forAll(e=>{let t=e.serviceObbInIndexSR;null==t&&(t=Vt,e.serviceMbsInIndexSR?(t.setCenter(e.serviceMbsInIndexSR.center),t.setHalfSizeFromValues(e.serviceMbsInIndexSR.radius,e.serviceMbsInIndexSR.radius,e.serviceMbsInIndexSR.radius)):t.invalidate());const r=t.data;i[s++]=r[0],i[s++]=r[1],i[s++]=r[2],i[s++]=r[3],i[s++]=r[4],i[s++]=r[5],i[s++]=r[6],i[s++]=r[7],i[s++]=r[8],i[s++]=r[9]}),i}class kt{constructor(e,t,i){this.attributeInfo=e,this.meta=t,this.promise=i,this.allowMemCache=!0}}function Ut(e,t){e.forEach(e=>e.opacity=t)}class Lt{constructor(e,t){this.mode=e,this.offset=t}}const Gt=N(),Bt=$(),qt="elevation-change",zt="",Wt="@null",$t="@ECEF",Kt=[[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],Qt=new nt;function Jt(e,t,i){let s=e.minElevation,r=e.maxElevation;const o=i;if(o>0){t.getCorners(Kt);for(const e of Kt){const t=H(e)-o;s=Math.min(s,t),r=Math.max(r,t)}}else{t.getCorners(Kt);for(const e of Kt){const t=e[2];s=Math.min(s,t),r=Math.max(r,t)}}e.expandElevationRangeValues(s,r)}function Yt(e,t,i){const{center:s,radius:r}=t,o=i>0?H(s)-i:s[2];e.expandElevationRangeValues(o-r,o+r)}function Xt(e,t){const i=e.featureIds.slice();for(const s of t)if(s(i,e),0===i.length)break;return i.length===e.featureIds.length?e.featureIds:i}function Zt(e,t,i){const s=new Array,r=e.filteredIds;if(null==r||t?.size||i?.size){if(null!=r){let o=0;e.featureIds.forEach((e,n)=>{if(r[o]===e)++o;else if(!t?.has(e))return;i?.has(e)||s.push(n)})}}else e.featureIds.forEach((e,t)=>{r[s.length]===e&&s.push(t)});return s}function ei(e,t,i){if(e&&t)for(const s of t){const t=(e.get(s)??0)+i;t>0?e.set(s,t):e.delete(s)}}function ti(e,t=0){const i=new Map;for(const s of e){ei(i,0===t?s?.featureIds:1===t?s?.filteredIds:s?.weaklyRemovedIds,1)}return i}const ii=N();export{Et as I3SMeshView3D};
2
+ import{__decorate as e}from"tslib";import t from"../../../Color.js";import i from"../../../Graphic.js";import{removeUnordered as s,isSome as r}from"../../../core/arrayUtils.js";import has from"../../../core/has.js";import o from"../../../core/Logger.js";import{equals as n}from"../../../core/MapUtils.js";import{destroyMaybe as a}from"../../../core/maybe.js";import l from"../../../core/PooledArray.js";import{ignoreAbortErrors as d,isAbortError as h,throwIfAborted as c}from"../../../core/promiseUtils.js";import{initial as u,watch as g}from"../../../core/reactiveUtils.js";import{schedule as _}from"../../../core/scheduling.js";import{equals as m}from"../../../core/SetUtils.js";import{isArrayBuffer as f}from"../../../core/typedArrayUtil.js";import{property as p,subclass as y}from"../../../core/accessorSupport/decorators.js";import{fromMat4 as b,exactEquals as v,invert as I}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as C,IDENTITY as M}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{multiply as w,getTranslation as x}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{clone as R,create as E}from"../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{fromValues as O}from"../../../core/libs/gl-matrix-2/factories/quatf64.js";import{set as S,transformMat4 as j,transformMat3 as V,sub as F,add as A,scale as D,subtract as T}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as H}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as N}from"../../../core/libs/gl-matrix-2/math/vec4.js";import{fromValues as P}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{UpdatingHandles as k}from"../../../core/support/UpdatingHandles.js";import{getSphericalPCPF as G}from"../../../geometry/spatialReferenceEllipsoidUtils.js";import{localLinearScaleFactors as U}from"../../../geometry/projection/localLinearScaleFactors.js";import{projectBoundingSphere as L}from"../../../geometry/projection/projectBoundingSphere.js";import{projectBuffer as B}from"../../../geometry/projection/projectBuffer.js";import{getProjectorName as q}from"../../../geometry/projection/projectors.js";import{projectVectorToVector as z}from"../../../geometry/projection/projectVectorToVector.js";import{create as $,fromBuffer as W,toRect as K}from"../../../geometry/support/aaBoundingBox.js";import{create as Q,intersects as J}from"../../../geometry/support/aaBoundingRect.js";import{newDoubleArray as Y,ensurePackedMat4f64 as X}from"../../../geometry/support/DoubleArray.js";import{compactFloatArray as Z}from"../../../geometry/support/FloatArray.js";import{compactIndices as ee}from"../../../geometry/support/Indices.js";import{Sphere as te}from"../../../geometry/support/sphere.js";import{newUByteArray as ie}from"../../../geometry/support/UByteArray.js";import{fallbackObjectIDAttribute as se}from"../../../layers/LayerConstants.js";import re from"../../../layers/graphics/controllers/I3SOnDemandController.js";import{fixFields as oe}from"../../../layers/support/fieldUtils.js";import ne from"../../../layers/support/SceneModification.js";import{getColor as ae,getOpacity as le}from"../../../renderers/visualVariables/support/visualVariableUtils.js";import{isBasemapLayerView as de}from"../../../support/basemapUtils.js";import{getElevationOffset as he}from"../../../support/elevationInfoUtils.js";import{loadArcade as ce}from"../../../support/loadArcade.js";import ue from"../../../symbols/MeshSymbol3D.js";import ge from"../../../symbols/SimpleFillSymbol.js";import{ContentGeometryUpdateEvent as _e}from"./ContentGeometryLayerView.js";import me from"./I3SMeshViewLabeler.js";import{I3SMeshViewPerformanceInfo as fe}from"./I3SMeshViewPerformanceInfo.js";import{initialize as pe,setModificationsSync as ye,filterObbsForModificationsSync as be,interpretObbModificationResults as ve}from"./SceneLayerWorker.js";import{SceneLayerWorkerHandle as Ie,toWasmModification as Ce}from"./SceneLayerWorkerHandle.js";import{overrideColor as Me}from"./graphics/graphicUtils.js";import{areLabelsVisible as we}from"./graphics/Labeler.js";import xe from"./i3s/Highlights.js";import{I3SAsyncElevationUpdater as Re}from"./i3s/I3SAsyncElevationUpdater.js";import{getCachedAttributeValue as Ee}from"./i3s/I3SBinaryReader.js";import{I3SCrossfadeHelper as Oe,NodeCrossfadeMetaData as Se}from"./i3s/I3SCrossfadeHelper.js";import{boundingBoxCornerPoints as je}from"./i3s/I3SGeometryUtil.js";import{I3SIntersectionHandler as Ve}from"./i3s/I3SIntersectionHandler.js";import{getSupportedEncodings as Fe,selectEncoding as Ae,defaultMaterial as De,createTexture as Te,configureMaterial as He}from"./i3s/I3SMaterialUtil.js";import{I3SOverrides as Ne}from"./i3s/I3SOverrides.js";import{computeGlobalTransformation as Pe}from"./i3s/I3SProjectionUtil.js";import{rendererNeedsTextures as ke,checkSceneLayerValid as Ge,checkSceneLayerCompatibleWithView as Ue,whenGraphicAttributes as Le,computeVisibilityObb as Be,filterInPlace as qe,intersectBoundingRectWithMbs as ze,addWraparound as $e,getSymbolInfo as We,transparentEdgeMaterial as Ke,getClipRect as Qe}from"./i3s/I3SUtil.js";import{IDBCache as Je}from"./i3s/IDBCache.js";import{IDBMockCache as Ye}from"./i3s/IDBMockCache.js";import{LayerElevationProvider as Xe}from"./i3s/LayerElevationProvider.js";import{SymbologyInfo as Ze}from"./i3s/SymbologyInfo.js";import{attributeLookup as et}from"./support/attributeUtils.js";import{normalizeHighlightTarget as tt,emptyHighlightHandle as it}from"./support/highlightUtils.js";import{makeScheduleFunction as st}from"./support/makeScheduleFunction.js";import{debugFlags as rt}from"../support/debugFlags.js";import{ElevationRange as ot}from"../support/ElevationRange.js";import{toBoundingRect as nt}from"../support/extentUtils.js";import{Obb as at,ensurePackedObbData as lt}from"../support/orientedBoundingBox.js";import{updatingProgress as dt}from"../support/updatingProperties.js";import{glLayout as ht}from"../support/buffer/glUtil.js";import{ObjectParameters as ct}from"../webgl-engine/collections/Component/ObjectParameters.js";import{createVertexBufferLayout as ut,ComponentGeometryParameters as gt,SourceGeometry as _t,VertexBufferLayoutCreationParameters as mt}from"../webgl-engine/collections/Component/SourceGeometry.js";import{Transform as ft}from"../webgl-engine/collections/Component/Transform.js";import{emissiveStrengthDefault as pt}from"../webgl-engine/core/shaderLibrary/output/Emissions.glsl.js";import{loadBasisTranscoder as yt}from"../webgl-engine/lib/BasisUtil.js";import{getHighlightName as bt}from"../../support/highlightOptionsUtils.js";import{TextureCompressionTracker as vt}from"../../support/TextureCompressionTracker.js";import{alphaCutoff as It}from"../../../webscene/support/AlphaCutoff.js";const Ct=[1,1,1,1];class Mt extends Se{constructor(e,t,i,s,r,o,n,a,l,d,h){super(),this.node=e,this.featureIds=t,this.objectHandle=i,this.cachedRendererVersion=s,this.attributeInfo=r,this.material=o,this.textures=n,this.anchorIds=a,this.anchors=l,this._elevationAlignmentRange=new ot,this._geometryElevationRange=new ot,this.cachedElevationAnchors=null,this.cachedEdgeMaterials=new Array,this.edgeMemoryUsage=0,this.cachedSymbologyStride=5,this.elevationAlignmentOffset=0,this._baseGeometryElevationRange=new ot(d,h),this.updateGeometryElevationRange()}get geometryElevationRange(){return this._geometryElevationRange}updateGeometryElevationRange(){const e=this._baseGeometryElevationRange;if(!e.elevationRangeValid||e.isEmpty)return this._elevationAlignmentRange.invalidateElevationRange(),void this._geometryElevationRange.invalidateElevationRange();const t=this.elevationOffsets;if(!t||0===t.length){const t=this.elevationAlignmentOffset;return this._elevationAlignmentRange.setElevationRangeValues(t,t),void this._geometryElevationRange.setElevationRangeValues(e.minElevation+t,e.maxElevation+t)}let i=1/0,s=-1/0;for(let r=0;r<t.length;++r){const e=this.elevationAlignmentOffset+(t[r]??0);i=Math.min(i,e),s=Math.max(s,e)}this._elevationAlignmentRange.setElevationRangeValues(i,s),this._geometryElevationRange.setElevationRangeValues(e.minElevation+i,e.maxElevation+s)}get usedMemory(){return this.node.memory}get featureExtents(){return this._featureExtents??=new Float64Array(6*this.featureIds.length).fill(Number.POSITIVE_INFINITY),this._featureExtents}}const wt=28,xt=104857600,Rt=t=>{const f=t;let te=class extends f{constructor(){super(...arguments),this._applySSAO=!0,this._imShading=!!has("enable-feature:im-shading"),this._imVertexNormals=!!has("enable-feature:im-vertex-normals"),this._updatingHandles=new k,this._highlights=null,this._nodeId2Meta=new Map,this._nodeId2MetaReloading=new Map,this._i3sWasmLoaded=!1,this._snappingSourcesTrackers=[],this._compressionTracker=new vt,this._hasLoadedPBRTextures=!1,this._asyncModuleLoading=0,this._addTasks=new Map,this._currentRenderer=null,this._rendererVersion=0,this._colorVariable=null,this._opacityVariable=null,this._rendererFields=null,this._symbologyFields=null,this._symbologyOverride=null,this._symbologyOverrideFields=null,this._symbolInfos=new Map,this._visibleGeometryChangedSchedulerHandle=null,this._hasComponentData=!1,this._hasVertexColors=!1,this._nodeColorOverride=null,this.updating=!0,this.holeFilling="auto",this._hasColors=!1,this._hasTextures=!1,this._hasData=!1,this.slicePlaneEnabled=!1,this._modifications=new Array,this.ignoresMemoryFactor=!1,this._layerUrl="",this._cacheKeySuffix=null,this._planetRadiusInGlobalMode=0,this._elevationTask=null,this._needFilterResolve=!1,this._filters=[],this._arcade=null,this._tmpAttributeOnlyGraphic=new i,this._crossfadeHelper=new Oe(this)}get lodCrossfadeoutDuration(){return 0}get lodCrossfadeinDuration(){return 0}get lodCrossfadeUncoveredDuration(){return 0}get layerViewUid(){return this.uid}get layerId(){return this.layer.id}get sublayerId(){return null}get _isIntegratedMesh(){return"integrated-mesh"===this.layer.type}get contentVisible(){return!this.suspended&&this._controller?.rootNodeVisible&&this.fullOpacity>It}get legendEnabled(){return this.contentVisible&&!0===this.layer?.legendEnabled}get updatingProgressValue(){return this._controller?.updatingProgress??0}get hasTexturesOrVertexColors(){return this._hasData?this._hasTextures||this._hasColors?"yes":"probably-not":"unknown"}get rendererTextureUsage(){return ke(this._currentRenderer)?this._usePBR||this._hasLoadedPBRTextures?63:53:this._usePBR||this._hasLoadedPBRTextures?44:36}get elevationOffset(){const e=this.layer?.elevationInfo;return"absolute-height"===e?.mode?he(e,this.layer.spatialReference):0}get elevationInfo(){const e=this.layer?.elevationInfo;switch(e?.mode){case"absolute-height":return new Gt(0,he(e,this.layer.spatialReference));case"relative-to-ground":return new Gt(1,he(e,this.layer.spatialReference));case"on-the-ground":return new Gt(2,0);default:return new Gt(0,0)}}get supportedTextureEncodings(){return Fe(this.view.stage.renderView.capabilities)}get clientGeometry(){return this.i3sOverrides.geometryOverrides}get elevationRange(){const e=this._nodeId2Meta,t=new ot;for(const i of e.values()){const e=i?.geometryElevationRange;e?.elevationRangeValid&&!e.isEmpty&&t.expandElevationRange(e)}return t.elevationRangeValid&&!t.isEmpty?t:null}get fullExtent(){return this.layer.fullExtent}initialize(){const e=has("enable-feature:idb-mock-cache");this._idbCache=e?new Ye(this.view,e):new Je("esri-scenelayer-cache","geometries"),this._preLoadBasis(),this.addResolvingPromise(this.layer.indexInfo);const t=this.view.resourceController,i=t.memoryController;this.i3sOverrides=new Ne({view:this.view,layer:this.layer,memoryController:i}),this._workerHandle=new Ie(st(t)),this.addResolvingPromise(this._workerHandle.promise),Ge(this.layer),Ue(this.layer,this.view);const s=this.layer.store.defaultGeometrySchema;if(this.addResolvingPromise(this._workerHandle.setLegacySchema(this.uid,s).catch(d)),this._layerUrl=this.layer.parsedUrl.path,this._controller=new re({layerView:this,worker:this._workerHandle}),this._gpuMemoryEstimate=0,this._texMemoryEstimate=0,this._geoMemoryEstimate=0,this._stage=this.view.stage,this._collection=this._stage.renderView.componentObjectCollection,this._isIntegratedMesh||!s)this._hasComponentData=!1;else{const e=s.featureAttributes;this._hasComponentData=!!(e&&e.faceRange&&e.id)}this._hasVertexColors=null!=(s?.vertexAttributes.color??null)&&!this.layer.cachedDrawingInfo?.color;const r=this.view.resourceController.memoryController.newCache(`sl-${this.uid}`,e=>this._deleteComponentObject(e));this._memCache=r;const n=this._controller,l=this._nodeId2Meta,h=this._nodeId2MetaReloading,c=e=>{const t=n.index;if(!t)return;const i=t.rootNode;if(!i)return;const s=t=>{const i=t.index,s=l.get(i)||h.get(i);return e(t,s?.objectHandle??null)};t.traverse(i,s)};this._intersectionHandler=new Ve({layerViewUid:this.layerViewUid,sublayerId:this.sublayerId,collection:this._collection,slicePlaneEnabled:this.slicePlaneEnabled,isGround:this._isIntegratedMesh,traverseNodeHierarchy:c}),this._elevationProvider=new Xe({view:this.view,layerElevationSource:this,intersectionHandler:this._intersectionHandler}),this._hasLoadedPBRTextures=this._usePBR,this._updatingHandles.add(()=>this.view.clippingArea,()=>this._clippingAreaChanged(),u),this._updatingHandles.add(()=>this.fullOpacity,e=>this._opacityChange(e)),this._updatingHandles.add(()=>this.slicePlaneEnabled,e=>this._slicePlaneEnabledChange(e)),this._updatingHandles.add(()=>this.elevationOffset,(e,t)=>{this._reloadAll(t),this._controller.invalidateVisibilityObbs()}),this._updatingHandles.add(()=>this.elevationInfo,(e,t)=>this._elevationInfoChanged(e,t),u),this._updatingHandles.add(()=>!this.suspended&&0!==this.elevationInfo.mode,(e,t)=>{e?this.addHandles(this.view.basemapTerrain.on("elevation-change",({extent:e})=>this._ensureElevationTask().addExtent(e)),Bt):t&&this.removeHandles(Bt)},u),this._updatingHandles.add(()=>this._usePBR,e=>this._updatePBR(e));const _=()=>{this._reloadAll(),this.clearMemCache()};this._updatingHandles.add(()=>this.rendererTextureUsage,_),this._updatingHandles.add(()=>this.contentVisible,e=>this._contentVisibleChanged(e),u),this._updatingHandles.add(()=>this.layer.labelsVisible,()=>this._labelingChanged(),u),this._updatingHandles.add(()=>this.layer.labelingInfo,()=>this._labelingChanged(),u),this._updatingHandles.add(()=>this._modifications,()=>this._modificationsChanged(),u),this.addHandles([g(()=>rt.I3S_TREE_SHOW_TILES,e=>{if(e&&!this._treeDebugger){const e=this._controller.crsIndex;import("./support/I3STreeDebugger.js").then(({I3STreeDebugger:t})=>{!this._treeDebugger&&rt.I3S_TREE_SHOW_TILES&&(this._treeDebugger=new t({lv:this,view:this.view,nodeSR:e}))})}else e||rt.I3S_TREE_SHOW_TILES||(this._treeDebugger=a(this._treeDebugger))},u),g(()=>rt.I3S_SHOW_MODIFICATIONS,()=>this._showModifications(),u)]),this._cacheKeySuffix=this._getCacheKeySuffix(),this._idbCache.init().catch(e=>o.getLogger(this).warn(`Failed to initialize IndexedDB cache: ${e}`));const{view:m}=this,{viewingMode:f,renderCoordsHelper:p}=m;this._planetRadiusInGlobalMode="local"===f?0:p.referenceEllipsoid.radius}destroy(){this._clearAddTasks(),this._elevationTask=a(this._elevationTask),this.i3sOverrides=a(this.i3sOverrides),this._elevationProvider&&(this._elevationProvider.notifyObjectsChanged(this.getVisibleObbs()),this.view.elevationProvider.unregister(this._elevationProvider),this._elevationProvider=null),this._intersectionHandler&&(this._stage.view.sceneIntersectionHelper.removeIntersectionHandler(this._intersectionHandler),this._intersectionHandler=null);const e=this._workerHandle;e&&(e.destroyContextAndSelf(this.uid),this._workerHandle=null),this._removeAllNodeDataFromStage(),this._memCache=a(this._memCache),this._collection=null,this._stage=null,this._edgeView=null,this._labeler=a(this._labeler),this._treeDebugger=a(this._treeDebugger),this._controller=a(this._controller),this._highlights=a(this._highlights),this._nodeId2Meta.clear(),this._nodeId2MetaReloading.clear(),this._crossfadeHelper=a(this._crossfadeHelper),this.emit("visible-geometry-changed"),this._visibleGeometryChangedSchedulerHandle&&(this._visibleGeometryChangedSchedulerHandle.remove(),this._visibleGeometryChangedSchedulerHandle=null),this._updatingHandles=a(this._updatingHandles)}_memEstimateTextureAdded(e){const t=e.usedMemory;return this._gpuMemoryEstimate+=t,this._texMemoryEstimate+=t,t}_memEstimateTextureRemoved(e){if(null!=e){const t=e.usedMemory;this._gpuMemoryEstimate-=t,this._texMemoryEstimate-=t}}_memEstimateGeometryAdded(e){const t=this._collection.getObjectGPUMemoryUsage(e);return this._gpuMemoryEstimate+=t,this._geoMemoryEstimate+=t,t}_memEstimateGeometryRemoved(e){const t=this._collection.getObjectGPUMemoryUsage(e);this._gpuMemoryEstimate-=t,this._geoMemoryEstimate-=t}isNodeLoaded(e){return this._nodeId2Meta.has(e)}isNodeReloading(e){return this._nodeId2MetaReloading.has(e)}get usedMemory(){let e=null!=this._labeler?this._labeler.usedMemory:0;return this._nodeId2Meta.forEach(t=>e+=null!=t?t.node.memory:0),this._nodeId2MetaReloading.forEach(t=>e+=null!=t?t.node.memory:0),e}get unloadedMemory(){return(null!=this._controller?this._controller.unloadedMemoryEstimate:0)+(null!=this._labeler?this._labeler.unloadedMemoryEstimate:0)}_labelingChanged(){if(!(we(this.layer)&&this._supportsLabeling))return void(null!=this._labeler&&(this._labeler.destroy(),this._labeler=null));if(null!=this._labeler)return;const e=new me({view:this.view,layer:this.layer,collection:this._collection,overrides:this.i3sOverrides,layerViewUid:this.uid});this._nodeId2Meta.forEach(t=>null!=t&&this._addMetaToLabeler(e,t)),this._labeler=e}_loadAsyncModule(e){return++this._asyncModuleLoading,e.then(e=>(--this._asyncModuleLoading,e),e=>{throw--this._asyncModuleLoading,e})}_modificationsChanged(){if(!this._i3sWasmLoaded&&this.hasModifications)return this._i3sWasmLoaded=pe().then(()=>{this._i3sWasmLoaded=!0,this._modificationsChanged(),this.notifyUpdate()},()=>{}),void this.notifyUpdate();if(!0!==this._i3sWasmLoaded)return;const e=e=>o.getLogger(this).error("set-modifications-error","Error when setting modifications:",e),t=this.uid,i=this.layer.spatialReference,s=i.isGeographic,r=Ce(this._layerClippingArea,this._modifications,i);this._workerHandle.setModifications(t,r,s).catch(e);try{ye({context:t,modifications:r,isGeodetic:s})}catch(a){e(a)}this._controller.modificationsChanged();const n=this.hasModifications?new l:null;this._nodeId2Meta.forEach((e,t)=>{null==e?(this._nodeId2Meta.delete(t),this._controller.updateLoadStatus(t,!1)):e.node.hasModifications?(this._updateFeatureIdCounts(e,-1),this._nodeId2Meta.delete(t),this._nodeId2MetaReloading.set(t,e)):null!=n&&n.push(e.node)}),this.notifyChange("elevationRange"),null!=n&&this._nodeId2MetaReloading.forEach(e=>n.push(e.node)),null!=n&&n.length>0&&(this.updateNodeModificationStatus(n),n.forAll(e=>{if(2!==e.imModificationImpact){const t=this._nodeId2Meta.get(e.index);this._controller.invalidateGeometryVisibility(e.index),null!=t?(this._updateFeatureIdCounts(t,-1),this._nodeId2Meta.delete(e.index),this._nodeId2MetaReloading.set(e.index,t),this.notifyChange("elevationRange")):this._nodeId2Meta.has(e.index)&&(this._nodeId2Meta.delete(e.index),this._controller.updateLoadStatus(e.index,!1))}})),this.clearMemCache(),this._controller.restartNodeLoading(),this._showModifications()}_showModifications(){if(null!=this._modificationGraphics&&(this.view.graphics.removeMany(this._modificationGraphics),this._modificationGraphics=null),!rt.I3S_SHOW_MODIFICATIONS||0===this._modifications.length)return;const e={clip:[227,227,79,.8],mask:[227,139,79,.8],replace:[139,227,79,.8]},t={outline:{color:[255,255,255],width:1}};this._modificationGraphics=[];for(const s of this._modifications){const r=s.geometry;r.spatialReference=this.layer.spatialReference;const o=new ge({...t,color:e[s.type]});this._modificationGraphics.push(new i({geometry:r,symbol:o}))}this.view.graphics.addMany(this._modificationGraphics)}_addMetaToLabeler(e,t){e.addNodeMeta(t,(e,t)=>this._createAttributes(e,t))}_contentVisibleChanged(e){e?(this.view.elevationProvider.register(this._elevationContext,this._elevationProvider),this._stage.view.sceneIntersectionHelper.addIntersectionHandler(this._intersectionHandler)):(this._removeAllNodeDataFromStage(),this.view.elevationProvider&&this.view.elevationProvider.unregister(this._elevationProvider),this._stage.view.sceneIntersectionHelper.removeIntersectionHandler(this._intersectionHandler))}getLoadedAttributes(e){const t=this._nodeId2Meta.get(e);if(null!=t?.attributeInfo)return t.attributeInfo.loadedAttributes}getAttributeData(e){const t=this._nodeId2Meta.get(e);if(null!=t?.attributeInfo)return t.attributeInfo.attributeData}setAttributeData(e,t){const i=this._nodeId2Meta.get(e);null!=i?.attributeInfo&&(i.attributeInfo.attributeData=t,this._attributeValuesChanged(i))}async updateAttributes(e,t,i){const s=this._nodeId2Meta.get(e);null!=s&&(await this.i3sOverrides.applyAttributeOverrides(s.featureIds,t,i,this._controller.requiredAttributes),s.attributeInfo=t,this._controller.reschedule(()=>{this._nodeId2Meta.get(e)===s&&this._attributeValuesChanged(s)},i).catch(e=>{h(e)||o.getLogger(this).warn("Error while updating attribute values. Layer might not display correctly.",e)}))}_attributeValuesChanged(e){e.cachedRendererVersion=this._getInvalidRendererVersion(),e.appliedFilters=null,null!=this._labeler&&this._labeler.setNodeMetaAttributes(e,(e,t)=>this._createAttributes(e,t)),this._updateEngineObject(e)}clearMemCache(){null!=this._memCache&&this._memCache.clear(),this._addTasks.forEach(e=>e.allowMemCache=!1)}getVisibleNodes(){const e=new Array;return this._nodeId2Meta.forEach(t=>null!=t&&e.push(t.node)),e}getVisibleObbs(){const e=new Array;return this._nodeId2Meta.forEach(t=>t&&e.push(this._collection.getComponentObb(t.objectHandle))),e}getLoadedNodeIndices(e){this._nodeId2Meta.forEach((t,i)=>e.push(i)),this._nodeId2MetaReloading.forEach((t,i)=>e.push(i))}_preLoadBasis(){!has("disable-feature:i3s-basis")&&2&this.supportedTextureEncodings&&this.layer.textureSetDefinitions?.some(e=>e.formats.some(e=>"basis"===e.format||"ktx2"===e.format))&&yt()}_getVertexBufferLayout(e,t){return ht(ut(this._getGeometryParameters({hasTexture:At(e.params.material),hasNormals:t.normal,hasRegions:t.uvRegion})))}_getObjectIdField(){return this.layer.objectIdField||se}_getGlobalIdField(){return this.layer.globalIdField}_findGraphicNodeAndIndex(e){const t=et(this.layer.fieldsIndex,e.attributes,this._getObjectIdField());for(const i of this._nodeId2Meta.values()){const e=i?.featureIds.indexOf(t);if(null!=e&&e>=0)return{node:i.node,index:e}}return null}_getGraphicIndices(e,t){const i=this._nodeId2Meta.get(e.index);if(null==i)return[];const s=[],r=this._getObjectIdField(),o=this.layer.fieldsIndex;for(const n of t){const e=et(o,n.attributes,r),t=i.featureIds.indexOf(e);-1!==t&&s.push(t)}return s}whenGraphicBounds(e){const t=this._findGraphicNodeAndIndex(e);if(!t)return Promise.reject();const i=this.getAABB(t.node.index,t.index);return null==i?Promise.reject():Promise.resolve({boundingBox:i,screenSpaceObjects:[]})}getAABBFromIntersectorTarget(e){return null==e.nodeIndex||null==e.componentIndex?null:this.getAABB(e.nodeIndex,e.componentIndex)}getAABB(e,t){const i=this._nodeId2Meta.get(e);if(null==i?.featureIds||t>=i.featureIds.length)return null;const s=i.objectHandle,r=je(t,this._collection,s,Y(24),0),o=this.view.renderSpatialReference,n=this.view.spatialReference;return B(r,o,0,r,n,0)?W(r):null}whenGraphicAttributes(e,t){return Le(this.layer,e,this._getObjectIdField(),t,()=>[...this._nodeId2Meta.values()].filter(r))}getGraphicFromIntersectorTarget(e,t){if(null==e.nodeIndex||null==e.componentIndex)return null;const i=this._nodeId2Meta.get(e.nodeIndex);if(null==i?.featureIds||e.componentIndex>=i.featureIds.length)return null;const s=this._createLayerGraphic(this._createAttributes(e.componentIndex,i));return s?t.defer?(t.defer(async()=>(s.geometry=(await import("./i3s/meshUtils.js")).createMesh({layerView:this,nodeIndex:e.nodeIndex,featureIndex:e.componentIndex}),s)),null):s:null}_getCacheKey(e){return`${this._layerUrl}/v${wt}/${e}${this._cacheKeySuffix}`}_getCacheKeySuffix(){const e=this.view.renderSpatialReference;if(null==e)return zt;if(e===G(e))return $t;return this.layer.spatialReference.equals(e)?qt:null!=e.wkid?`@${e.wkid}`:null}_getMemCacheKey(e,t=this.elevationOffset){return e+"#"+t}get _idbCacheEnabled(){return!this._controller.disableIDBCache&&!this.hasModifications&&0===this.elevationOffset&&null!=this._cacheKeySuffix}loadCachedGPUData(e){return null!=this._memCache?this._memCache.pop(this._getMemCacheKey(e)):null}deleteCachedGPUData(e){null!=e&&this._deleteComponentObject(e)}_cacheGPUData(e,t=this.elevationOffset){if(null==this._memCache)return void this._deleteComponentObject(e);const i=this._controller.indexDepth-e.node.level;this._memCache.put(this._getMemCacheKey(e.node.index,t),e,i)}loadMissingTextures(e,t,i,s){const r=e?.filter((e,i)=>{if(0===(e.usage&this.rendererTextureUsage))return!1;if(null==t)return!0;const s=Ae(e.encodings,this.supportedTextureEncodings),r=t[i];return!!(null==r?.data||s&&r.encoding!==s.encoding)})??[];return 0===r.length?Promise.resolve(!1):i(r,s).then(i=>{let s=0;for(let r=0;r<e.length;r++)s<i.length&&i[s].id===e[r].id&&(t[r]=i[s],s++);return!0})}loadCachedNodeData(e,t,i){return this._idbCacheEnabled?this._idbCache.get(this._getCacheKey(e.id),t).then(s=>null==s?null:(s.globalTrafo=X(s.globalTrafo),s.nodeVersion!==e.version?(this._idbCache.remove(this._getCacheKey(e.id)),null):(0===this.elevationInfo.mode&&(e.geometryObbInRenderSR=at.fromData(s.geometryObbData)),this.loadMissingTextures(s.requiredTextures,s.textureData,i,t).then(i=>(i&&this._idbCache.initialized&&null!=s.textureData&&(s.byteSize=Ht(s.transformedGeometry,s.textureData),s.textureData.every(Tt)&&this._indexedDbSizeCheck(e,s)&&this._idbCache.put(this._getCacheKey(e.id),s).catch(t=>o.getLogger(this).warn(`Failed to update node with textures in IndexedDB cache: ${e.id}: ${t}`))),c(t),s))))):Promise.resolve(null)}addNode(e,t,i){return Dt(t)?null==t.geometryBuffer?(this._addNodeMeta(e.index,null),Promise.resolve()):this._addData(e,t.attributeDataInfo,()=>this._transformNode(e,t,i).then(s=>this._safeReschedule(()=>{if(null==s)return e.hasModifications=!1,this._addCachedNodeData(e,null,i);const{obb:r,componentOffsets:n,featureIds:a,anchorIds:l,anchors:d,transformedGeometry:h,geometryMinElevation:c,geometryMaxElevation:u}=s;e.hasModifications=h.hasModifications;const g=X(s.globalTrafo),_=S(Ut,r.center.x,r.center.y,r.center.z);j(_,_,g);const m=new at(_,[r.extents.x,r.extents.y,r.extents.z],O(r.orientation.x,r.orientation.y,r.orientation.z,r.orientation.w));0===this.elevationInfo.mode&&(e.geometryObbInRenderSR=m),t.geometryData.componentOffsets=n,a&&(t.geometryData.featureIds=Array.from(a)),t.geometryData.anchorIds=l,t.geometryData.anchors=d;const f={nodeVersion:e.version,geometryData:t.geometryData,requiredTextures:t.requiredTextures,textureData:t.textureData,transformedGeometry:h,globalTrafo:g,geometryObbData:m.data,geometryMinElevation:c,geometryMaxElevation:u,byteSize:Ht(h,t.textureData)};if(this._idbCacheEnabled&&this._idbCache.initialized&&this._indexedDbSizeCheck(e,f)){const t=null!=f.textureData?f.textureData.map(e=>Tt(e)?e:null):null;this._idbCache.put(this._getCacheKey(e.id),{...f,textureData:t}).catch(t=>o.getLogger(this).warn(`Failed to store node in IndexedDB cache: ${e.id}: ${t}`))}return this._addCachedNodeData(e,f,i)},i))):Promise.reject()}getElevationRange(e){const t=new ot,i=this._controller,{index:s}=i;if(!s)return t;const{rootNode:r}=s;if(!r)return t;const o=this._nodeId2Meta,n=i.viewportQueries,a=i=>{const{childrenLoaded:s}=i;if(0===s)return!1;const r=n.getAndUpdateVisibilityObbInRenderSR(i);let a=null;if(r){if(!r.intersectSphereWithMBS(e,r.radius))return!1}else if(a=n.calculateServiceMbsInRenderSRElevationAdjusted(i),a?.isValid&&!e.intersects(a))return!1;const l=o.get(i.index);if(l){const{geometryObbInRenderSR:s}=i;if(!s||s.intersectSphereWithMBS(e)){const e=l.geometryElevationRange;e.elevationRangeValid&&!e.isEmpty&&t.expandElevationRange(e)}}return s-(l?1:0)>0};return s.traverse(r,a),t}computeVisibilityObb(e){return Be(e,this.view.renderSpatialReference,this._controller.crsIndex,this.layer.spatialReference,this.elevationOffset,this._modifications,this.view.renderCoordsHelper.sphericalPCPF)}_transformNode(e,t,i){const s=t.geometryData.geometries??[],r=new Array(s.length);for(let f=0;f<s.length;++f)r[f]=this._getVertexBufferLayout(s[f],t.geometryDescriptor);const o=this.layer.normalReferenceFrame,n=t.normalReferenceFrame??o??"none",a=e.serviceMbsInIndexSR,l=this.elevationOffset,d=this._controller.crsIndex,h=this._controller.crsVertex,c=this.view.renderSpatialReference,u=Pe(a,l,n,d,c),g=q(d,h),_=q(h,c);if(null==g||null==_)return Promise.resolve(null);const m={context:this.uid,geometryBuffer:t.geometryBuffer,geometryData:t.geometryData,geometryDescriptor:t.geometryDescriptor,layouts:r,globalTrafo:u,geometryElevationOffset:l,mbs:a.toJSON(),obbData:e.serviceObbInIndexSR?.data,elevationOffset:l,planetRadiusInGlobalMode:this._planetRadiusInGlobalMode,needNormals:this._controller.isMeshPyramid||this._imVertexNormals,computeNormals:this._isIntegratedMesh&&this._imVertexNormals,normalReferenceFrame:n,indexToVertexProjector:g,vertexToRenderProjector:_};return this._workerHandle.invoke(m,i)}get _supportsNodeCrossFading(){return!this.view?.stage?.renderer.shadowsEnabled}get nodeCrossfadingEnabled(){return this._supportsNodeCrossFading&&(this.lodCrossfadeinDuration>0||this.lodCrossfadeoutDuration>0||this.lodCrossfadeUncoveredDuration>0)}get nodeFadeoutEnabled(){return this._supportsNodeCrossFading&&this.lodCrossfadeoutDuration>0}_setNewNodeOpacity(e){const t=this.nodeCrossfadingEnabled?0:this.fullOpacity;this._setNodeOpacity(e,t)}addCachedGPUData(e,t,i){if(0===this.elevationInfo.mode&&(e.geometryObbInRenderSR=this._collection.getComponentObb(t.objectHandle).clone()),!this._controller.isGeometryVisible(e))return void this._cacheGPUData(t);const s=e.index;this._addNodeMeta(s,t),this.updateNodeState(s,i),this._collection.setObjectVisibility(t.objectHandle,!0),this._updateElevationOffsets(t),null!=this._labeler&&this._addMetaToLabeler(this._labeler,t),this._updateMaterial(t),this._setNewNodeOpacity(t),0!==this.elevationInfo.mode&&this._ensureElevationTask().schedule(s),this._updateEngineObject(t),this._highlights?.objectCreated(t),null!=this._treeDebugger&&this._treeDebugger.update()}addCachedNodeData(e,t,i,s){return this._addData(e,i,()=>this._addCachedNodeData(e,t,s))}async deleteCachedNodeData(e){if(this._idbCacheEnabled)return this._idbCache.remove(this._getCacheKey(e))}async _addCachedNodeData(e,t,i){if(!this.contentVisible||!this._controller.isGeometryVisible(e))return void this._removeNodeStageData(e.index,this.elevationOffset,this._nodeId2MetaReloading);if(null==t)return void this._addNodeMeta(e.index,null);const s=this._addTasks.get(e.index),{geometryData:r,transformedGeometry:n}=t;await this.i3sOverrides.applyAttributeOverrides(r.featureIds,s.attributeInfo,i,this._controller.requiredAttributes);const a=null!=t.textureData?t.textureData.filter(e=>null!=e&&0!==(e.usage&this.rendererTextureUsage)):[];!has("disable-feature:i3s-basis")&&a.some(e=>null!=e&&(2===e.encoding||1===e.encoding))&&await yt(),e.memory=0;const{componentOffsets:l,geometries:d,featureIds:h,anchorIds:c,anchors:u}=r,g=this._collection,_=d[0],{layout:m,indices:f,interleavedVertexData:p,positionData:y,hasColors:O}=n,{material:S,geometryParameters:j}=this._materialParameters(_,m),A=p.byteLength/m[0].stride,D=l||new Uint32Array([0,f?f.length:A]),T=_.transformation?R(_.transformation):E(),N=X(t.globalTrafo);w(T,N,T);const k=x(H(),T),G=b(C(),T),L=this._isIntegratedMesh?this._imShading?2:0:1,B=j.textureCoordinateType,q=!v(G,M),$=new gt(m,L,B,q?1:0),W=new _t({interleavedVertexData:p,vertexCount:A,indexData:f},{positions:Z(y.data),indices:ee(y.indices)},D,$),K=this.view.renderSpatialReference,Q=this.view.basemapTerrain.spatialReference,J=at.fromData(lt(t.geometryObbData)).getCenter(Yt),Y=[1,1,1];U(J,K,Y,Q)||o.getLogger(this).errorOnce("Unsupported coordinate system for IM overlay");const te=H();z(J,K,te,Q);const ie=C();I(ie,G);const se=H();V(se,F(se,J,k),ie);const re=te[0]-se[0]*Y[0],oe=te[1]-se[1]*Y[1],ne=2===j.textureCoordinateType,{textures:ae,texturePromise:le,materialParameters:de}=this._initMaterialAndTextures(S,a,ne,e),he=g.createObject(new ct(P(re,oe,Y[0],Y[1]),new ft(k,G),at.fromData(lt(t.geometryObbData)),W,!this._isIntegratedMesh),de);e.memory+=this._memEstimateGeometryAdded(he),e.memory+=ae.reduce((e,t)=>e+(null!=t?this._memEstimateTextureAdded(t):0),0);const ce=!!S.hasParametersFromSource,ue="blend"!==S.alphaMode&&S.metallicRoughness.baseColorFactor[3]>=1,ge=new Mt(e,h,he,this._getInvalidRendererVersion(),s.attributeInfo,{hasParametersFromSource:ce,isOpaque:ue},ae,c,u,t.geometryMinElevation,t.geometryMaxElevation);s.meta=ge,this._hasTextures||=t.requiredTextures?.some(({usage:e})=>!!(19&e))||!!e.resources.texture,this._hasData=!0,this._hasColors||=O,this.notifyChange("hasTexturesOrVertexColors");const _e=this.slicePlaneEnabled;return Promise.all([this._addOrUpdateEdgeRendering(ge),le]).then(([t,s])=>(this._addTasks.has(e.index)&&t?.updateObjectVisibility(ge.objectHandle,!1).catch(e=>this._logEdgeViewError(e,this.layer.title)),this._safeReschedule(()=>{const i=this._addTasks.get(e.index);if(!i)return;if(this._addNodeMeta(e.index,ge),i.meta=null,!this.contentVisible)return void this._removeNodeStageData(e.index,this.elevationOffset);g.setObjectVisibility(he,!0),t?.updateObjectVisibility(ge.objectHandle,!0).catch(e=>this._logEdgeViewError(e,this.layer.title)),ge.attributeInfo=i.attributeInfo;const s=ge.cachedRendererVersion!==this._rendererVersion,r=_e!==this.slicePlaneEnabled;this._updateElevationOffsets(ge);const o=ge.elevationOffsets;this._updateComponentData(ge);const n=this._applyFiltersToNode(ge);(s||null!=t&&(r||n||o))&&this._addOrUpdateEdgeRendering(ge),null!=this._labeler&&this._addMetaToLabeler(this._labeler,ge),this._visibleGeometryChanged(ge,0),this._highlights?.objectCreated(ge),this._updateMaterial(ge),this._setNewNodeOpacity(ge),null!=this._treeDebugger&&this._treeDebugger.update()},i))).catch(e=>{const{meta:t,allowMemCache:i}=s;throw s.meta=null,t&&i?this._cacheGPUData(t):t&&this._deleteComponentObject(t),e})}_addNodeMeta(e,t){if(this._removeNodeStageData(e,this.elevationOffset,this._nodeId2MetaReloading),this._nodeId2Meta.has(e)){o.getLogger(this).error("Removing duplicated node");const t=this._nodeId2Meta.get(e);t&&(this._deleteComponentObject(t),this._updateFeatureIdCounts(t,-1))}else this._controller.updateLoadStatus(e,!0);t&&(t.lodCrossfadeProgress=null,this.nodeCrossfadingEnabled&&kt(t.cachedEdgeMaterials,0),this._updateFeatureIdCounts(t,1)),this._nodeId2Meta.set(e,t),this.notifyChange("elevationRange")}_updateElevationOffsets(e){if(!e.node.serviceMbsInIndexSR)return;const{view:t,elevationInfo:i}=this,s=this._controller.crsIndex,{groundView:r,groundSpatialReference:o,renderSpatialReference:n}=t,a=i.mode;if(0===a)return e.elevationAlignmentOffset=i.offset,e.elevationOffsets=null,e.updateGeometryElevationRange(),void this.notifyChange("elevationRange");if(e.elevationAlignmentOffset=0,null==n||null==o)return e.elevationOffsets=null,e.updateGeometryElevationRange(),void this.notifyChange("elevationRange");const l=this._collection.getObjectTransform(e.objectHandle);e.elevationOffsets=e.elevationOffsets??[];const d=Ut,h=Lt,c=2===a,u=this.view.renderCoordsHelper,g=e.featureIds.length,_=(()=>{if(e.cachedElevationAnchors)return e.cachedElevationAnchors;const t=Y(3*g);e.cachedElevationAnchors=t;const{center:i}=e.node.serviceMbsInIndexSR;for(let r=0;r<g;r++){const a=3*r,c=e.anchorIds?.indexOf(r)??-1;e.anchors&&c>=0?(S(d,e.anchors[3*c],e.anchors[3*c+1],e.anchors[3*c+2]),A(d,d,i),z(d,s,d,o),t[a]=d[0],t[a+1]=d[1],t[a+2]=u.getAltitude(d)):(this._collection.getComponentAabb(e.objectHandle,r,h,!0),S(d,(h[0]+h[3])/2,(h[1]+h[4])/2,h[2]),V(d,d,l.rotationScale),A(d,d,l.position),t[a+2]=u.getAltitude(d),z(d,n,d,o),t[a]=d[0],t[a+1]=d[1])}return t})(),m=i.offset,f=e.elevationOffsets,p=(e,t)=>{const i=c?_[3*e+2]:0;f[e]=m+(t??0)-i};r.getElevations(_,g,p),e.updateGeometryElevationRange(),this.notifyChange("elevationRange")}_ensureElevationTask(){return null!=this._elevationTask||(this._elevationTask=new Re(this.view.resourceController.scheduler,e=>this._controller.updateElevationChanged(e,this.view.basemapTerrain.spatialReference)?.filterInPlace(e=>null!=this._nodeId2Meta.get(e)),e=>this._nodeElevationAlignmentChanged(this._nodeId2Meta.get(e)),()=>this.elevationInfo?.mode)),this._elevationTask}_elevationInfoChanged(e,t){const i=0!==e.mode,s=!!t&&t!==e&&0!==t.mode;this._intersectionHandler.updateElevationAlignState(i,this.view.state.viewingMode),i&&!s&&this._controller.removeAllGeometryObbs(),this._nodeId2Meta.forEach(e=>this._nodeElevationAlignmentChanged(e))}_nodeElevationAlignmentChanged(e){null!=e&&(this._updateElevationOffsets(e),this._updateComponentData(e),this._updateEdgeRendering(e),null!=this._labeler&&this._labeler.updateLabelPositions(e),this._updateSnappingSources(e,2),this._elevationProvider.notifyObjectChanged(this._collection.getComponentObb(e.objectHandle)))}_safeReschedule(e,t){return c(t),this._controller.reschedule(e,t)}_materialParameters(e,t){const i=null!=e.params.material?e.params.material:De(),s=t.some(({name:e})=>"uvRegion"===e),r=t.some(({name:e})=>"normalCompressed"===e),o=At(i);return{geometryParameters:this._getGeometryParameters({hasTexture:o,hasNormals:r,hasRegions:s}),material:i}}_initMaterialAndTextures(e,t,i,s){const r=this._stage.renderView,o=e=>{this._gpuMemoryEstimate-=e,this._texMemoryEstimate-=e,s.memory-=e},n=t.map(t=>Te(t,e,i,r,this._compressionTracker,o));this._stage.addTextures(n);const{materialParameters:a,texturePromise:l}=He(e,n,t,this.view.stage.renderView.textures,{rendererTextureUsage:this.rendererTextureUsage,usePBR:this._usePBR,isIntegratedMesh:this._isIntegratedMesh,slicePlaneEnabled:this.slicePlaneEnabled,viewSpatialReference:this.view.spatialReference,applySSAO:this._applySSAO});return{textures:n,texturePromise:l,materialParameters:a}}_getGeometryParameters(e){return new mt(this._hasVertexColors,e.hasNormals,e.hasTexture?e.hasRegions?2:1:0)}_addData(e,t,i){let s=this._addTasks.get(e.index);if(s)s.attributeInfo=t;else{const r=Promise.withResolvers();s=new Pt(t,null,r.promise),this._addTasks.set(e.index,s),i().then(r.resolve,r.reject).then(()=>this._addTasks.delete(e.index)).catch(t=>{throw this._addTasks.delete(e.index),t})}return s.promise}_clearAddTasks(){this._addTasks.forEach(e=>{null!=e.meta&&(this._cacheGPUData(e.meta),e.meta=null)}),this._addTasks.clear()}_clippingAreaChanged(){const e=this.view.renderSpatialReference,t=this.layer.spatialReference,i=Q();this._renderClippingArea=nt(this.view.clippingArea,i,e)?i:null;const s=Q();this._layerClippingArea=nt(this.view.clippingArea,s,t)?s:null,this._filterChange(),this._controller&&this._controller.updateClippingArea(this.view.clippingArea),this._isIntegratedMesh&&this._modificationsChanged()}get hasGeometryFilter(){return!1}_geometryFilterChange(){const e=this.hasGeometryFilter;this._controller.geometryFilterChanged(e),this._applyFilters(e),this._assertFeatureIdNodeCounts(e)}_assertFeatureIdNodeCounts(e){e&&!this._featureIdCounts?(this._featureIdCounts=Jt(this._nodeId2Meta.values()),this._filteredIdCounts=Jt(this._nodeId2Meta.values(),1),this._weaklyRemovedIdCounts=Jt(this._nodeId2Meta.values(),2),this.addHandles(g(()=>this._controller.updating,e=>{!e&&this._needFilterResolve&&(this.multiGeometryFilterResolve(),this._needFilterResolve=!1,this.notifyUpdate())},{sync:!0}),"updateFinished")):!e&&this._featureIdCounts&&(this._featureIdCounts=null,this._filteredIdCounts=null,this._weaklyRemovedIdCounts=null,this._mismatchShow=null,this._mismatchHide=null,this.removeHandles("updateFinished"),this._needFilterResolve=!1,this.notifyUpdate())}_updateFeatureIdCounts(e,t){this._featureIdCounts&&(this._needFilterResolve=!0,Qt(this._featureIdCounts,e.featureIds,t),Qt(this._filteredIdCounts,e.filteredIds,t),Qt(this._weaklyRemovedIdCounts,e.weaklyRemovedIds,t))}_updateFilteredIdCounts(e,t,i){this._filteredIdCounts&&(this._needFilterResolve=!0,Qt(this._filteredIdCounts,t,-1),Qt(this._filteredIdCounts,e.filteredIds,1),Qt(this._weaklyRemovedIdCounts,i,-1),Qt(this._weaklyRemovedIdCounts,e.weaklyRemovedIds,1))}_checkFeatureIdNodeCountInvariant(){const e=null!=this._featureIdCounts;if(this.hasGeometryFilter!==e&&o.getLogger(this).error("checkFeatureIdNodeCountInvariant()","LayerView should have feature id node counts if and only if it has a geometry filter",{layerView:this,hasNodeCounts:e}),!this._featureIdCounts||!this._filteredIdCounts)return;const t=Jt(this._nodeId2Meta.values());n(this._featureIdCounts,t)||o.getLogger(this).error("checkFeatureIdNodeCountInvariant()","Incorrect _featureIdCounts",{layerView:this,counts:this._featureIdCounts,expected:t});const i=Jt(this._nodeId2Meta.values(),1);n(this._filteredIdCounts,i)||o.getLogger(this).error("checkFeatureIdNodeCountInvariant()","Incorrect _filteredIdCounts",{layerView:this,counts:this._filteredIdCounts,expected:i});const s=Jt(this._nodeId2Meta.values(),2);n(this._weaklyRemovedIdCounts,s)||o.getLogger(this).error("checkFeatureIdNodeCountInvariant()","Incorrect _weaklyRemovedIdCounts",{layerView:this,counts:this._weaklyRemovedIdCounts,expected:i})}multiGeometryFilterResolve(){if(!this._featureIdCounts||!this._filteredIdCounts)return;let e=null,t=null;for(const[i,s]of this._filteredIdCounts){const r=this._featureIdCounts.get(i);if(r!==s){s+(this._weaklyRemovedIdCounts?.get(i)??0)===r?(e??=new Set,e.add(i)):(t??=new Set,t.add(i))}}m(e,this._mismatchShow)&&m(t,this._mismatchHide)||(this._mismatchShow=e,this._mismatchHide=t,this._nodeId2Meta.forEach(e=>{if(!e?.filteredIds)return;const t=Kt(e,this._mismatchShow,this._mismatchHide);this._collection.setAllComponentVisibilities(e.objectHandle,t),this._visibleGeometryChanged(e,2)}))}_filterChange(){this._applyFilters(this.hasGeometryFilter)}_applyFilters(e){this._filters=this.getFilters(),e?this._controller&&this._controller.requestUpdate():this._nodeId2Meta.forEach(e=>{e&&this._applyFiltersToNode(e)&&(this._addOrUpdateEdgeRendering(e),this._visibleGeometryChanged(e,2))})}getFilters(){const e=[],t=this._renderClippingArea;return null!=t&&e.push((e,i)=>this._boundingRectFilter(e,i,t)),e}addSqlFilter(e,t,i){if(null!=t){const s=t.fieldNames;e.push((e,r)=>this._sqlFilter(e,r,t,s,i))}}_sqlFilter(e,t,i,s,r){const o={},n=this._createLayerGraphic(o);if(!n)return;const a=this.layer.objectIdField,l=t.featureIds,d=t.attributeInfo?.attributeData;s.every(e=>e===a||null!=d?.[e])&&qe(e,l,e=>{o[a]=l[e];for(const i of s)i!==a&&(o[i]=d?Ee(d[i],e):null);try{return i.testFeature(n)}catch(t){return r(t),!1}})}_boundingRectNodeTest(e,t){return L(e.node.serviceMbsInIndexSR,this._controller.crsIndex,Ft,this.view.renderSpatialReference),ze(t,Ft)}_boundingRectFeatureTest(e,t,i){return this._collection.getComponentAabb(e.objectHandle,t,Et),K(Et,Ot),J(i,Ot)}_boundingRectFilter(e,t,i){const s=this._collection,r=this._boundingRectNodeTest(t,i);if(3===r)return;if(0===r)return void(e.length=0);const o=s.getComponentCount(t.objectHandle);if(o.invisible+o.visible!==t.featureIds.length)return;const n=this._transformClippingArea(St,i,t.objectHandle);qe(e,t.featureIds,e=>this._boundingRectFeatureTest(t,e,n))}_transformClippingArea(e,t,i){const s=this._collection.getObjectTransform(i),r=s.position,o=s.rotationScale;return e[0]=(t[0]-r[0])/o[0],e[1]=(t[1]-r[1])/o[4],e[2]=(t[2]-r[0])/o[0],e[3]=(t[3]-r[1])/o[4],e}async _addOrUpdateEdgeRendering(e,t=!0){const i=e.objectHandle,{hasEdges:s,perFeatureEdgeMaterials:r}=this._getFilteredEdgeMaterials(e);s&&!this._edgeView&&(this._edgeView=await this._stage.renderer.loadEdgeView());const o=this._edgeView;if(!o)return null;const n=o.hasObject(i);if(s){if(n){if(this.nodeCrossfadingEnabled){kt(r,this.getNodeOpacity(e))}return o.updateAllComponentMaterials(i,r,this.slicePlaneEnabled,t).catch(e=>this._logEdgeViewError(e,this.layer.title)),o.updateObjectVisibility(i,!0).catch(e=>this._logEdgeViewError(e,this.layer.title)),o.updateAllVerticalOffsets(i,e.elevationOffsets).catch(e=>this._logEdgeViewError(e,this.layer.title)),o}const s=await this._collection.addEdges(i,o,r,this.slicePlaneEnabled,e.elevationOffsets);return e.edgeMemoryUsage=s,e.node.memory+=s,o}return n&&(e.node.memory-=e.edgeMemoryUsage,e.edgeMemoryUsage=0,o.removeObject(i)),null}_applyFiltersToNode(e){const{filteredIds:t,weaklyRemovedIds:i}=e,s=this._applyFiltersToNodeComponents(e);return this._updateFilteredIdCounts(e,t,i),s&&this._labeler?.applyFilterChange(e),s}_applyFiltersToNodeComponents(e){const t=this._collection,i=t.getComponentCount(e.objectHandle),s=null!=e.filteredIds,r=0===i.invisible;if(t.setAllComponentVisibilities(e.objectHandle,"all"),0===this._filters.length)return e.filteredIds=null,!r;if(null!=e.filteredIds&&e.appliedFilters===this._filters||(e.weaklyRemovedIds=null,e.filteredIds=Wt(e,this._filters),e.appliedFilters=this._filters),s&&e.filteredIds===e.featureIds&&(!this._mismatchHide||e.filteredIds.every(e=>!this._mismatchHide?.has(e))))return!r;const o=Kt(e,this._mismatchShow,this._mismatchHide);return t.setAllComponentVisibilities(e.objectHandle,o),!0}_removeAllNodeDataFromStage(e=this.elevationOffset){this._nodeId2Meta.forEach((t,i)=>this._removeNodeStageData(i,e)),this._nodeId2MetaReloading.forEach((t,i)=>this._removeNodeStageData(i,e,this._nodeId2MetaReloading)),this._elevationTask=a(this._elevationTask)}removeNode(e){const t=this.elevationOffset;this._removeNodeStageData(e,t),this._removeNodeStageData(e,t,this._nodeId2MetaReloading),null!=this._elevationTask&&this._elevationTask.remove(e)}_removeNodeStageData(e,t,i=this._nodeId2Meta){i.has(e)&&this._controller.updateLoadStatus(e,!1);const s=i.get(e);null!=s?(this._collection.setObjectVisibility(s.objectHandle,!1),null!=this._edgeView&&this._edgeView.hasObject(s.objectHandle)&&this._edgeView.updateObjectVisibility(s.objectHandle,!1).catch(e=>this._logEdgeViewError(e,this.layer.title)),this._visibleGeometryChanged(s,1),null!=this._labeler&&this._labeler.removeNodeMeta(s),i.delete(e),this._highlights?.objectDeleted(s),i===this._nodeId2Meta?(this._updateFeatureIdCounts(s,-1),this._cacheGPUData(s,t),this.nodeCrossfadingEnabled&&this._crossfadeHelper.stopNodeFading(s)):this._deleteComponentObject(s),null!=this._treeDebugger&&this._treeDebugger.update()):i.delete(e)}_deleteComponentObject(e){if(null!=this._edgeView&&this._edgeView.removeObject(e.objectHandle),this._memEstimateGeometryRemoved(e.objectHandle),this._collection.destroyObject(e.objectHandle),e.textures)for(const t of e.textures)this._memEstimateTextureRemoved(t),this._stage.removeTexture(t)}updateNodeState(e,t){const i=this._nodeId2Meta.get(e);null!=i&&i.objectHandle.updateMaterial({polygonOffset:0===t?1:0})}updateNodeIndex(e,t){if(this._nodeId2Meta.has(e)){const i=this._nodeId2Meta.get(e);this._nodeId2Meta.delete(e),this._nodeId2Meta.set(t,i),this.notifyChange("elevationRange")}const i=this._nodeId2MetaReloading.get(e);i&&(this._nodeId2MetaReloading.delete(e),this._nodeId2MetaReloading.set(t,i))}_invalidateAllSymbols(){this._rendererVersion=$e(this._rendererVersion,1),this._controller?.requestUpdate()}_getInvalidRendererVersion(){return $e(this._rendererVersion,-1)}async _rendererChange(e){if(this._currentRenderer=e,this.notifyChange("rendererTextureUsage"),this._rendererVersion=$e(this._rendererVersion,1),this._rendererFields=null,this._colorVariable=null,this._opacityVariable=null,this._invalidateAllSymbols(),e&&(this._rendererFields=await e.getRequiredFields(this.layer.fieldsIndex)),this._updateSymbologyFields(),!this._arcade&&e&&"arcadeRequired"in e&&e.arcadeRequired&&(this._arcade=await ce()),e&&"visualVariables"in e&&e.visualVariables)for(const t of e.visualVariables)"color"===t.type?this._colorVariable=t:"opacity"===t.type?this._opacityVariable=t:o.getLogger(this).warn(`Unsupported visual variable type for 3D Object Scene Services: ${t.type}`);if(e)for(const t of e.symbols)"mesh-3d"!==t.type&&o.getLogger(this).error(`Symbols of type '${t.type}' are not supported for 3D Object Scene Services.`);this._controller&&this._controller.requestUpdate()}_getCachedEdgeMaterials(e){return this._hasComponentData&&e.cachedRendererVersion!==this._rendererVersion&&this._updateCachedRendererData(e),e.cachedEdgeMaterials}_getComponentParameters(e){this._hasComponentData&&e.cachedRendererVersion!==this._rendererVersion&&this._updateCachedRendererData(e);const t=e.cachedSymbology;return(i,s)=>{const r=i*e.cachedSymbologyStride;N(s.externalColor,t[r]/255,t[r+1]/255,t[r+2]/255,t[r+3]/255);const o=this._stage.renderView.olidRenderHelper;if(o){const t=e.featureIds[i],r=this.sublayerId?`${this.layerViewUid}_${this.sublayerId}`:this.layerViewUid,n=de(this.view,this.uid);o.setUidToObjectAndLayerId(t,t,this.layerId,r,this.layerPopupEnabledAndHasTemplate&&!n,e.node.resources.attributes,i,this.sublayerId),s.olidColor=o.getObjectAndLayerIdColor({graphicUid:t,layerViewUid:r})}s.externalColorMixMode=15&t[r+4],s.castShadows=!!(16&t[r+4]),s.pickable=!!(32&t[r+4]),s.elevationOffset=e.elevationOffsets?.[i]??0,s.emissiveStrength=e.emissiveStrengths?.[i]??1,s.emissiveSource=e.emissiveSources?.[i]??0}}_getSymbolInfo(e,t){const i=e?.getSymbol(t,{arcade:this._arcade});if(!(i instanceof ue))return null;const s=i.id;if(this._symbolInfos.has(s))return this._symbolInfos.get(s);const r=We(i);return this._symbolInfos.set(s,r),r}_setSymbologyOverride(e,t){this._symbologyOverride!==e&&(this._symbologyOverride=e,this._symbologyOverrideFields=t,this._invalidateAllSymbols(),this._updateSymbologyFields())}_updateSymbologyFields(){this._symbologyFields=null!=this._symbologyOverrideFields&&this._symbologyOverrideFields.length>0?null!=this._rendererFields&&this._rendererFields.length>0?oe(this.layer.fieldsIndex,[...this._rendererFields,...this._symbologyOverrideFields]):this._symbologyOverrideFields:this._rendererFields}_updateCachedRendererData(e){if(e.cachedRendererVersion=this._rendererVersion,!this._hasComponentData)return;const t=this._tmpAttributeOnlyGraphic,i={};t.attributes=i;const s=this._currentRenderer,r=e.attributeInfo?.attributeData,o=e.featureIds?this.layer.objectIdField:null,n=null!=r&&null!=this._symbologyFields&&this._symbologyFields.length>0;let a=null,l=null;if(n&&null!=this._symbologyFields){a=[],l=[];for(const e of this._symbologyFields){const t=r[e];t&&(a.push(e),l.push(t))}}e.cachedSymbology||(e.cachedSymbology=ie(e.featureIds.length*e.cachedSymbologyStride));const d=new Ze,h=this.fullOpacity,c=this.nodeCrossfadingEnabled?this.getNodeOpacity(e):h;let u=null,g=1,_=Ke,m=0;for(let f=0;f<e.featureIds.length;f++){if(null!=o&&(i[o]=e.featureIds[f]),n&&a)for(let e=0;e<a.length;e++)i[a[e]]=Ee(l[e],f);const r=s?this._getSymbolInfo(s,t):null;let h,p;if(d.pickable=!0,s&&"visualVariables"in s){if(this._colorVariable){const e=ae(this._colorVariable,t,{color:Vt,arcade:this._arcade});e&&(h=d.color,h[0]=e.r/255,h[1]=e.g/255,h[2]=e.b/255,h[3]=e.a??1,this._opacityVariable||null===e.a||(p=e.a))}this._opacityVariable&&(p=le(this._opacityVariable,t,{arcade:this._arcade}))}if(r?.material){const e=r.material;h=null==h||null==p?Me(h,p,e.color,e.alpha,Ct,d.color):Me(h,p,null,null,Ct,d.color)}h??=N(d.color,1,1,1,1);const y=r?.material;if(d.colorMixMode=y?.colorMixMode??1,d.edgeMaterial=r?.edgeMaterial,this._symbologyOverride?.(t,d),null!=this._nodeColorOverride&&(this._nodeColorOverride(e.node,h),d.colorMixMode=3),d.pickable&&=h[3]>=It,d.castShadows=r?r.castShadows:d.pickable,null!=d.edgeMaterial){const t=h[3]>=1&&(e.material.isOpaque||3===d.colorMixMode)?1:0;d.edgeMaterial===u&&t===g||(_={...d.edgeMaterial,opacity:c,objectTransparency:t},u=d.edgeMaterial,g=t),e.cachedEdgeMaterials[f]=_}else e.cachedEdgeMaterials[f]=Ke;e.cachedSymbology[m++]=Math.round(255*h[0]),e.cachedSymbology[m++]=Math.round(255*h[1]),e.cachedSymbology[m++]=Math.round(255*h[2]),e.cachedSymbology[m++]=Math.round(255*h[3]),e.cachedSymbology[m++]=d.colorMixMode|+d.castShadows<<4|+d.pickable<<5;const b=y?.emissive?.strength??pt;b===pt||e.emissiveStrengths||(e.emissiveStrengths=new Array(e.featureIds.length).fill(pt)),e.emissiveStrengths&&(e.emissiveStrengths[f]=b);const v=y?.emissive?.source||0;0===v||e.emissiveSources||(e.emissiveSources=new Array(e.featureIds.length).fill(0)),e.emissiveSources&&(e.emissiveSources[f]=v)}}_getFilteredEdgeMaterials(e){const t=this._getCachedEdgeMaterials(e);this.nodeCrossfadingEnabled||kt(t,this.fullOpacity);const i=e.filteredIds;if(null==i){return{hasEdges:t.some(e=>e!==Ke),perFeatureEdgeMaterials:t}}let s=0,r=!1;const o=t.map((t,o)=>e.featureIds[o]!==i[s]?Ke:(r=r||t!==Ke,s++,t));return{hasEdges:r,perFeatureEdgeMaterials:o}}_updateComponentData(e){if(!this._hasComponentData)return;const{objectHandle:t}=e,i=this._getComponentParameters(e);this._collection.setComponentData(t,i),this._stage.renderView.requestRender()}_reloadAll(e=this.elevationOffset){this._removeAllNodeDataFromStage(e),null!=this._controller&&this._controller.restartNodeLoading()}_opacityChange(e){this.nodeCrossfadingEnabled&&this._crossfadeHelper.stopAllNodeFading(),this._nodeId2Meta.forEach(t=>{null!=t&&(this._collection.updateObjectOpacity(t.objectHandle,e),kt(t.cachedEdgeMaterials,e),this._updateEdgeRendering(t))})}_updateMaterial(e){e.objectHandle.updateMaterial({slicePlaneEnabled:this.slicePlaneEnabled,usePBR:this._usePBR})}_updateEngineObject(e){this._updateComponentData(e),this._applyFiltersToNode(e),this._addOrUpdateEdgeRendering(e),this._visibleGeometryChanged(e,2)}intersect(e,t,i,s){this._intersectionHandler.intersectRay(e,t,i,s,null,!1)}_slicePlaneEnabledChange(e){this._intersectionHandler&&(this._intersectionHandler.slicePlaneEnabled=e),null!=this._labeler&&(this._labeler.slicePlaneEnabled=e),this._foreachMeta(t=>{t.objectHandle.updateMaterial({slicePlaneEnabled:e}),this._updateEdgeRendering(t,!1)})}_updatePBR(e){this._foreachMeta(t=>t.objectHandle.updateMaterial({usePBR:e})),this._hasLoadedPBRTextures=!0}_foreachMeta(e){this._nodeId2Meta.forEach(t=>{null!=t&&e(t)})}get _usePBR(){return this._imShading&&this.view.qualitySettings.physicallyBasedRenderingEnabled}_updateEdgeRendering(e,t=!0){null!=this._edgeView&&this._edgeView.hasObject(e.objectHandle)&&this._addOrUpdateEdgeRendering(e,t)}_forAllNodes(e){this._nodeId2Meta.forEach(e)}_ignoreClientNodeOverriddenFeatures(e){return this.i3sOverrides.hasGeometryChanges?(t,i,s)=>s.node.index>=0&&this.i3sOverrides.featureHasGeometryChanges(t)?0:e(t,i,s):e}_forAllFeatures(e,t,i){for(const s of this._nodeId2Meta.values())if(!(null==s||t&&s.node.serviceMbsInIndexSR&&1===t(s.node.serviceMbsInIndexSR)))switch(i){case 1:this._forAllFeaturesOfNode(s,e);break;case 0:this._forAllVisibleFeaturesOfNode(s,e);break;case 2:this._forAllQueryableFeaturesOfNode(s,e)}}_forAllFeaturesOfNode(e,t){e.featureIds.forEach((i,s)=>t(i,s,e))}_forAllVisibleFeaturesOfNode(e,t){const i=e.featureIds;this._collection.forEachVisibleComponent(e.objectHandle,s=>0===t(i[s],s,e))}_forAllQueryableFeaturesOfNode(e,t){const i=this._ignoreClientNodeOverriddenFeatures(t);if(null==this._renderClippingArea)return this._forAllFeaturesOfNode(e,i);const s=this._boundingRectNodeTest(e,this._renderClippingArea);if(0===s)return;if(3===s)return this._forAllFeaturesOfNode(e,i);const r=e.featureIds,o=e.objectHandle,n=Qe(this._renderClippingArea,this._collection.getObjectTransform(o));for(let a=0;a<r.length;a++)this._boundingRectFeatureTest(e,a,n)&&i(r[a],a,e)}_createAttributes(e,t){const i={};null!=t.featureIds&&(i[this._getObjectIdField()]=t.featureIds[e]);const s=t.attributeInfo?.attributeData;if(null!=s)for(const r of Object.keys(s))i[r]=Ee(s[r],e);return i}_createGraphic(e,t){return this._createLayerGraphic(this._createAttributes(e,t))}highlight(e,t){const s=tt(e);if(0===s.length)return it;const r=bt(t),o=s[0]instanceof i?this._featureIdsFromGraphics(s):"number"==typeof s[0]?s:null;if(!o)return it;const n=this._ensureHighlights(),{set:a,handle:l}=n.acquireSet(r);return n.setFeatureIds(a,o),l}_featureIdsFromGraphics(e){const t=this.layer.fieldsIndex,i=this._getObjectIdField();return e.map(e=>et(t,e.attributes,i))}_ensureHighlights(){return this._highlights??=new xe({collection:this._collection,forAllFeatures:e=>this._forAllFeatures(e,null,1),forAllFeaturesOfNode:(e,t)=>this._forAllFeaturesOfNode(e,t)}),this._highlights}resetHighlights(){this._highlights=a(this._highlights)}_visibleGeometryChanged(e,t){this._elevationProvider&&(null==this._visibleGeometryChangedSchedulerHandle&&(this._visibleGeometryChangedSchedulerHandle=_(()=>{const{node:t}=e,i=t.visibilityObbInRenderSR??t.geometryObbInRenderSR??t.serviceObbInRenderSR;if(null!=i){const e=$();i.toAaBoundingBox(e),this.emit("visible-geometry-changed",new _e(e))}else this.emit("visible-geometry-changed");this._visibleGeometryChangedSchedulerHandle=null})),this._updateSnappingSources(e,t),this._elevationProvider.notifyObjectChanged(this._collection.getComponentObb(e.objectHandle)))}get performanceInfo(){return new fe(this.usedMemory,this._nodeId2Meta.size,Math.round(this._gpuMemoryEstimate/1048576),Math.round(this._geoMemoryEstimate/1048576),Math.round(this._texMemoryEstimate/1048576),Math.round(this.unloadedMemory/1048576),this._idbCacheEnabled?Math.round(100*this._idbCache.getHitRate()):0)}checkInvariants(){}get test(){}getNodeOpacityByIndex(e){const t=this._nodeId2Meta.get(e);return this.getNodeOpacity(t)}getNodeOpacity(e){return null!=e?this._collection.getObjectOpacity(e.objectHandle):0}isNodeFullyFadedIn(e){return this._crossfadeHelper.isNodeFullyFadedIn(e)}getNodeCrossfadeMetaData(e){return this._nodeId2Meta.get(e)}getNodeComponentHandle(e){return this._nodeId2Meta.get(e)?.objectHandle}markNodeToRemove(e){this._controller&&this._controller.markNodeToRemove(e)}removeMarkedNodes(){this._controller&&this._controller.removeMarkedNodes()}foreachCrossfadeNode(e){this._nodeId2Meta.forEach(e)}fadeNode(e,t,i){if(!this.nodeCrossfadingEnabled)return;const s=this._nodeId2Meta.get(e);null!=s&&this._crossfadeHelper.fadeNode(e,s,t,i)}setNodeOpacityByIndex(e,t){const i=this._nodeId2Meta.get(e);null!=i&&this._setNodeOpacity(i,t)}_setNodeOpacity(e,t){this._collection.updateObjectOpacity(e.objectHandle,t),this._setNodeEdgeOpacity(e,t)}_setNodeEdgeOpacity(e,t){if(null==this._edgeView||!e.cachedEdgeMaterials)return;kt(e.cachedEdgeMaterials,t);const i=e.objectHandle;this._edgeView.hasObject(i)&&this._edgeView.updateAllComponentOpacities(i,t).catch(e=>this._logEdgeViewError(e,this.layer.title))}get hasModifications(){return this._isIntegratedMesh&&null!=this._layerClippingArea||this._modifications&&this._modifications.length>0}updateNodeModificationStatus(e){const t=e.length;if(!this.hasModifications||t<=0||!0!==this._i3sWasmLoaded)return;const i=this.uid,s=Nt(e);if(s){const t={context:i,buffer:s.buffer};be(t);const r=new Float64Array(s.buffer);e.forAll((e,t)=>{const i=r[t],s=ve(i);e.imModificationImpact=s,0!==s&&this._controller.invalidateGeometryVisibility(e.index)})}}notifyUpdate(){this.notifyChange("updating")}notifyLODUpdate(){this._controller.notifyLODUpdate()}isUpdating(){return!(!this._controller||!this._controller.updating)||!!this._visibleGeometryChangedSchedulerHandle||null!=this._labeler&&this._labeler.updating||this._crossfadeHelper?.updating||this._i3sWasmLoaded instanceof Promise||this._asyncModuleLoading>0||null!=this._elevationTask&&this._elevationTask.readyToRun||this._needFilterResolve||this._compressionTracker.compressing}trackSnappingSources(e){const t={events:e,fetchEdgeLocations:async(e,t,i)=>{const s=this._nodeId2Meta.get(e);if(null==s)throw new Error("invalid-node");const{origin:r,buffer:o}=await this._collection.extractEdgeInformation(s.objectHandle,t,i);return this._snappingLocationsApplyElevation(s,o,r),{type:"components",objectIds:s.featureIds,locations:o,origin:r}},remove:()=>s(this._snappingSourcesTrackers,t)};return this._snappingSourcesTrackers.push(t),this._nodeId2Meta.forEach((t,i)=>{if(null==t)return;const s=this._controller.getRenderMbs(t.node);s&&e.add(i,s)}),t}_snappingLocationsApplyElevation(e,t,i){if(!e.elevationOffsets||0===this.elevationInfo.mode)return;const s=t.position0,r=t.position1,o=t.componentIndex,n=H(),a=H(),l=(e,t)=>{A(e,e,i),this.view.renderCoordsHelper.worldUpAtPosition(e,a),A(e,e,D(a,a,t)),T(e,e,i)};for(let d=0;d<s.count;d++){const t=e.elevationOffsets[o.get(d)];s.getVec(d,n),l(n,t),s.setVec(d,n),r.getVec(d,n),l(n,t),r.setVec(d,n)}}_updateSnappingSources(e,t){const{index:i}=e.node,s=this._controller.getRenderMbs(e.node);if(null!=s)for(const r of this._snappingSourcesTrackers)1!==t&&2!==t||r.events.remove(i),0!==t&&2!==t||r.events.add(i,s)}_logEdgeViewError(e,t){h(e)||o.getLogger(this).warn("Error while processing edges. Edges on this layer might not display correctly",t,e)}_indexedDbSizeCheck(e,t){return t.byteSize>xt?(o.getLogger(this).warn(`Node is too big to store in IndexedDB cache: ${e.id} (${t.byteSize} bytes)`),!1):t.byteSize>0}get elevationProvider(){return this._elevationProvider}};return e([p()],te.prototype,"_hasLoadedPBRTextures",void 0),e([p()],te.prototype,"_asyncModuleLoading",void 0),e([p()],te.prototype,"_visibleGeometryChangedSchedulerHandle",void 0),e([p()],te.prototype,"view",void 0),e([p()],te.prototype,"layer",void 0),e([p()],te.prototype,"_controller",void 0),e([p()],te.prototype,"_labeler",void 0),e([p()],te.prototype,"updating",void 0),e([p()],te.prototype,"suspended",void 0),e([p()],te.prototype,"contentVisible",null),e([p({readOnly:!0})],te.prototype,"legendEnabled",null),e([p(dt)],te.prototype,"updatingProgress",void 0),e([p()],te.prototype,"updatingProgressValue",null),e([p()],te.prototype,"hasTexturesOrVertexColors",null),e([p()],te.prototype,"rendererTextureUsage",null),e([p()],te.prototype,"elevationOffset",null),e([p()],te.prototype,"elevationInfo",null),e([p({type:Boolean})],te.prototype,"slicePlaneEnabled",void 0),e([p()],te.prototype,"supportedTextureEncodings",null),e([p({type:[ne]})],te.prototype,"_modifications",void 0),e([p({readOnly:!0})],te.prototype,"clientGeometry",null),e([p()],te.prototype,"elevationRange",null),e([p()],te.prototype,"fullExtent",null),e([p()],te.prototype,"_elevationTask",void 0),e([p({readOnly:!0})],te.prototype,"_usePBR",null),te=e([y("esri.views.3d.layers.I3SMeshView3D")],te),te},Et=$(),Ot=Q(),St=Q(),jt=new at,Vt=new t([0,0,0,0]),Ft=new te(0,0,0,0);function At(e){if(null==e)return!1;const t=e.metallicRoughness;return t&&t.baseColorTextureId>=0||t&&t.metallicRoughnessTextureId>=0||e.normalTextureId>=0||e.emissiveTextureId>=0||e.occlusionTextureId>=0}function Dt(e){return"geometryData"in e}function Tt(e){return null!=e&&f(e.data)}function Ht(e,t){let i=1024+e.interleavedVertexData.byteLength+(e.indices?e.indices.byteLength:0)+e.positionData.data.byteLength+e.positionData.indices.byteLength;if(null!=t)for(const s of t)null!=s&&f(s.data)&&(i+=s.data.byteLength);return i}function Nt(e){if(0===e.length)return;const t=10*e.length,i=new Float64Array(t);let s=0;return e.forAll(e=>{let t=e.serviceObbInIndexSR;null==t&&(t=jt,e.serviceMbsInIndexSR?(t.setCenter(e.serviceMbsInIndexSR.center),t.setHalfSizeFromValues(e.serviceMbsInIndexSR.radius,e.serviceMbsInIndexSR.radius,e.serviceMbsInIndexSR.radius)):t.invalidate());const r=t.data;i[s++]=r[0],i[s++]=r[1],i[s++]=r[2],i[s++]=r[3],i[s++]=r[4],i[s++]=r[5],i[s++]=r[6],i[s++]=r[7],i[s++]=r[8],i[s++]=r[9]}),i}class Pt{constructor(e,t,i){this.attributeInfo=e,this.meta=t,this.promise=i,this.allowMemCache=!0}}function kt(e,t){e.forEach(e=>e.opacity=t)}class Gt{constructor(e,t){this.mode=e,this.offset=t}}const Ut=H(),Lt=$(),Bt="elevation-change",qt="",zt="@null",$t="@ECEF";function Wt(e,t){const i=e.featureIds.slice();for(const s of t)if(s(i,e),0===i.length)break;return i.length===e.featureIds.length?e.featureIds:i}function Kt(e,t,i){const s=new Array,r=e.filteredIds;if(null==r||t?.size||i?.size){if(null!=r){let o=0;e.featureIds.forEach((e,n)=>{if(r[o]===e)++o;else if(!t?.has(e))return;i?.has(e)||s.push(n)})}}else e.featureIds.forEach((e,t)=>{r[s.length]===e&&s.push(t)});return s}function Qt(e,t,i){if(e&&t)for(const s of t){const t=(e.get(s)??0)+i;t>0?e.set(s,t):e.delete(s)}}function Jt(e,t=0){const i=new Map;for(const s of e){Qt(i,0===t?s?.featureIds:1===t?s?.filteredIds:s?.weaklyRemovedIds,1)}return i}const Yt=H();export{Rt as I3SMeshView3D};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{hasScaling as e}from"../../../core/mathUtils.js";import{fromMat4 as r}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as t}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import o from"../../../geometry/SpatialReference.js";import{ensurePackedMat4f64 as n,ensurePackedArray as s}from"../../../geometry/support/DoubleArray.js";import i from"../../../geometry/support/MeshGeoreferencedVertexSpace.js";import a from"../../../geometry/support/MeshLocalVertexSpace.js";import{b as f,n as c}from"../../../chunks/vec3.js";import{get as l,cleanup as u}from"../../../libs/i3s/I3SModule.js";import{processNormals as m}from"./IntegratedMeshNormals.js";import{TransformedGeometry as p,TransformedData as y}from"./SceneLayerWorkerHandle.js";async function d(e){E=await M();const r=[e.geometryBuffer];return{result:U(E,e,r),transferList:r}}async function h(e){E=await M();const r=[e.geometryBuffer],{geometryBuffer:t}=e,o=t.byteLength,n=E._malloc(o),s=new Uint8Array(E.HEAPU8.buffer,n,o);s.set(new Uint8Array(t));const i=E.dracoDecompressPointCloudData(n,s.byteLength);if(E._free(n),i.error.length>0)throw new Error(`i3s.wasm: ${i.error}`);const a=i.featureIds?.length>0?i.featureIds.slice():null,f=i.positions.slice();return a&&r.push(a.buffer),r.push(f.buffer),{result:{positions:f,featureIds:a},transferList:r}}async function g(e){await M(),P(e);const r={buffer:e.buffer};return{result:r,transferList:[r.buffer]}}async function b(e){await M(),S(e)}async function w(e){E=await M(),E.setLegacySchema(e.context,e.jsonSchema)}async function j(e){const{localMatrix:r,origin:t,positions:f,vertexSpace:c}=e,l=o.fromJSON(e.inSpatialReference),u=o.fromJSON(e.outSpatialReference),m=r?n(r):void 0,p=s(t);let y;const[{projectBuffer:d},{initializeProjection:h}]=await Promise.all([import("../../../geometry/projection/projectBuffer.js"),import("../../../geometry/projectionUtils.js")]);await h(l,u);const g=[0,0,0];if(!d(p,l,0,g,u,0))throw new Error("Failed to project");if("georeferenced"===c.type&&null==c.origin){if(y=new Float64Array(f.length),!d(f,l,0,y,u,0,y.length/3))throw new Error("Failed to project")}else{const e="georeferenced"===c.type?i.fromJSON(c):a.fromJSON(c),{projectMeshVertexPositions:r}=await import("../../../geometry/support/meshUtils/projectMeshVertexPositions.js"),t=r({vertexAttributes:{position:f},transform:m?{localMatrix:m}:void 0,vertexSpace:e,spatialReference:l},u);if(!t)throw new Error("Failed to project");y=t}const b=y.length,[w,j,A]=g;for(let o=0;o<b;o+=3)y[o]-=w,y[o+1]-=j,y[o+2]-=A;return{result:{projected:y,original:f,projectedOrigin:g},transferList:[y.buffer,f.buffer]}}async function A({normalMatrix:r,normals:t}){const o=new Float32Array(t.length);return f(o,t,r),e(r)&&c(o,o),{result:{transformed:o,original:t},transferList:[o.buffer,t.buffer]}}function x(e){_(e)}let L,E;function S(e){if(!E)return;const r=e.modifications,t=E._malloc(8*r.length),o=new Float64Array(E.HEAPU8.buffer,t,r.length);for(let n=0;n<r.length;++n)o[n]=r[n];E.setModifications(e.context,t,r.length,e.isGeodetic),E._free(t)}function U(e,o,n){const{context:s,globalTrafo:i,mbs:a,obbData:f,layouts:c,needNormals:l,computeNormals:u,elevationOffset:d,geometryBuffer:h,geometryDescriptor:g,indexToVertexProjector:b,vertexToRenderProjector:w,normalReferenceFrame:j}=o,A=e._malloc(h.byteLength),x=33,L=e._malloc(x*Float64Array.BYTES_PER_ELEMENT),E=new Uint8Array(e.HEAPU8.buffer,A,h.byteLength);E.set(new Uint8Array(h));const S=new Float64Array(e.HEAPU8.buffer,L,x);v(S,[NaN,NaN,NaN],0);let U=3;v(S,i,U),U+=16,v(S,a.center,U),U+=3,S[U++]=a.radius,f&&v(S,f,U++);const N={isDraco:!1,isLegacy:!1,color:c.some(e=>e.some(e=>"color"===e.name)),normal:l&&c.some(e=>e.some(e=>"normalCompressed"===e.name)),uv0:c.some(e=>e.some(e=>"uv0"===e.name)),uvRegion:c.some(e=>e.some(e=>"uvRegion"===e.name)),featureIndex:g.featureIndex},P=e.process(s,!!f,A,E.byteLength,g,N,L,d,b,w,j);if(e._free(L),e._free(A),P.error.length>0)throw new Error(`i3s.wasm: ${P.error}`);if(P.discarded)return null;const _=P.componentOffsets.length>0?P.componentOffsets.slice():null,I=P.featureIds.length>0?P.featureIds.slice():null,M=P.anchorIds.length>0?Array.from(P.anchorIds):null,F=P.anchors.length>0?Array.from(P.anchors):null,O=1===P.indicesType?new Uint16Array(P.indices.buffer,P.indices.byteOffset,P.indices.byteLength/2).slice():new Uint32Array(P.indices.buffer,P.indices.byteOffset,P.indices.byteLength/4).slice(),B=c[0].slice(),R=r(t(),i),T=m(P.interleavedVertedData,O,B,u&&!N.normal,R),D=P.positions.slice(),{buffer:H,byteOffset:V,byteLength:J}=P.positionIndices,C=1===P.positionIndicesType?new Uint16Array(H,V,J/2).slice():new Uint32Array(H,V,J/4).slice(),k=new p(B,T.data,T.indices,P.hasColors,P.hasModifications,{data:D,indices:C});return I&&n.push(I.buffer),_&&n.push(_.buffer),n.push(T.data),n.push(T.indices.buffer),n.push(D.buffer),n.push(C.buffer),new y(_,I,M,F,k,i,P.obb)}function N(e){return 0===e?0:1===e?1:2===e?2:3}function P(e){if(!E)return;const{context:r,buffer:t}=e,o=E._malloc(t.byteLength),n=t.byteLength/Float64Array.BYTES_PER_ELEMENT,s=new Float64Array(E.HEAPU8.buffer,o,n),i=new Float64Array(t);s.set(i),E.filterOBBs(r,o,n),i.set(s),E._free(o)}function _(e){0===E?.destroy(e)&&(E=null,L=null,u())}function v(e,r,t){for(let o=0;o<r.length;++o)e[o+t]=r[o]}async function I(){E||await M()}async function M(){return E||(E=await(L??=l())),E}const F={transform:(e,r)=>E&&U(E,e,r),destroy:_};export{x as destroyContext,h as dracoDecompressPointCloudData,g as filterObbsForModifications,P as filterObbsForModificationsSync,I as initialize,N as interpretObbModificationResults,d as process,j as project,w as setLegacySchema,b as setModifications,S as setModificationsSync,F as test,A as transformNormals};
2
+ import{hasScaling as e}from"../../../core/mathUtils.js";import{fromMat4 as t}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as r}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{multiply as o}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{clone as n,create as s}from"../../../core/libs/gl-matrix-2/factories/mat4f64.js";import i from"../../../geometry/SpatialReference.js";import{ensurePackedMat4f64 as a,ensurePackedArray as f}from"../../../geometry/support/DoubleArray.js";import c from"../../../geometry/support/MeshGeoreferencedVertexSpace.js";import l from"../../../geometry/support/MeshLocalVertexSpace.js";import{b as m,n as u}from"../../../chunks/vec3.js";import{get as p,cleanup as y}from"../../../libs/i3s/I3SModule.js";import{processNormals as h}from"./IntegratedMeshNormals.js";import{TransformedGeometry as g,TransformedData as d}from"./SceneLayerWorkerHandle.js";async function b(e){S=await B();const t=[e.geometryBuffer];return{result:N(S,e,t),transferList:t}}async function w(e){S=await B();const t=[e.geometryBuffer],{geometryBuffer:r}=e,o=r.byteLength,n=S._malloc(o),s=new Uint8Array(S.HEAPU8.buffer,n,o);s.set(new Uint8Array(r));const i=S.dracoDecompressPointCloudData(n,s.byteLength);if(S._free(n),i.error.length>0)throw new Error(`i3s.wasm: ${i.error}`);const a=i.featureIds?.length>0?i.featureIds.slice():null,f=i.positions.slice();return a&&t.push(a.buffer),t.push(f.buffer),{result:{positions:f,featureIds:a},transferList:t}}async function j(e){await B(),_(e);const t={buffer:e.buffer};return{result:t,transferList:[t.buffer]}}async function x(e){await B(),U(e)}async function A(e){S=await B(),S.setLegacySchema(e.context,e.jsonSchema)}async function E(e){const{localMatrix:t,origin:r,positions:o,vertexSpace:n}=e,s=i.fromJSON(e.inSpatialReference),m=i.fromJSON(e.outSpatialReference),u=t?a(t):void 0,p=f(r);let y;const[{projectBuffer:h},{initializeProjection:g}]=await Promise.all([import("../../../geometry/projection/projectBuffer.js"),import("../../../geometry/projectionUtils.js")]);await g(s,m);const d=[0,0,0];if(!h(p,s,0,d,m,0))throw new Error("Failed to project");if("georeferenced"===n.type&&null==n.origin){if(y=new Float64Array(o.length),!h(o,s,0,y,m,0,y.length/3))throw new Error("Failed to project")}else{const e="georeferenced"===n.type?c.fromJSON(n):l.fromJSON(n),{projectMeshVertexPositions:t}=await import("../../../geometry/support/meshUtils/projectMeshVertexPositions.js"),r=t({vertexAttributes:{position:o},transform:u?{localMatrix:u}:void 0,vertexSpace:e,spatialReference:s},m);if(!r)throw new Error("Failed to project");y=r}const b=y.length,[w,j,x]=d;for(let i=0;i<b;i+=3)y[i]-=w,y[i+1]-=j,y[i+2]-=x;return{result:{projected:y,original:o,projectedOrigin:d},transferList:[y.buffer,o.buffer]}}async function L({normalMatrix:t,normals:r}){const o=new Float32Array(r.length);return m(o,r,t),e(t)&&u(o,o),{result:{transformed:o,original:r},transferList:[o.buffer,r.buffer]}}function v(e){O(e)}let M,S;function U(e){if(!S)return;const t=e.modifications,r=S._malloc(8*t.length),o=new Float64Array(S.HEAPU8.buffer,r,t.length);for(let n=0;n<t.length;++n)o[n]=t[n];S.setModifications(e.context,r,t.length,e.isGeodetic),S._free(r)}function N(e,o,n){const{context:s,globalTrafo:i,geometryElevationOffset:a,mbs:f,obbData:c,layouts:l,needNormals:m,computeNormals:u,elevationOffset:p,planetRadiusInGlobalMode:y,geometryBuffer:b,geometryDescriptor:w,geometryData:j,indexToVertexProjector:x,vertexToRenderProjector:A,normalReferenceFrame:E}=o,L=e._malloc(b.byteLength),v=33,M=e._malloc(v*Float64Array.BYTES_PER_ELEMENT),S=new Uint8Array(e.HEAPU8.buffer,L,b.byteLength);S.set(new Uint8Array(b));const U=new Float64Array(e.HEAPU8.buffer,M,v);F(U,[NaN,NaN,NaN],0);let N=3;F(U,i,N),N+=16,F(U,f.center,N),N+=3,U[N++]=f.radius,c&&F(U,c,N++);const P={isDraco:!1,isLegacy:!1,color:l.some(e=>e.some(e=>"color"===e.name)),normal:m&&l.some(e=>e.some(e=>"normalCompressed"===e.name)),uv0:l.some(e=>e.some(e=>"uv0"===e.name)),uvRegion:l.some(e=>e.some(e=>"uvRegion"===e.name)),featureIndex:w.featureIndex},_=e.process(s,!!c,L,S.byteLength,w,P,M,p,x,A,E);if(e._free(M),e._free(L),_.error.length>0)throw new Error(`i3s.wasm: ${_.error}`);if(_.discarded)return null;const O=_.componentOffsets.length>0?_.componentOffsets.slice():null,R=_.featureIds.length>0?_.featureIds.slice():null,B=_.anchorIds.length>0?Array.from(_.anchorIds):null,T=_.anchors.length>0?Array.from(_.anchors):null,D=1===_.indicesType?new Uint16Array(_.indices.buffer,_.indices.byteOffset,_.indices.byteLength/2).slice():new Uint32Array(_.indices.buffer,_.indices.byteOffset,_.indices.byteLength/4).slice(),H=l[0].slice(),V=t(r(),i),J=h(_.interleavedVertedData,D,H,u&&!P.normal,V),C=_.positions.slice(),G=I(C,i,j?.geometries[0]?.transformation,y,a),{buffer:k,byteOffset:Y,byteLength:$}=_.positionIndices,q=1===_.positionIndicesType?new Uint16Array(k,Y,$/2).slice():new Uint32Array(k,Y,$/4).slice(),z=new g(H,J.data,J.indices,_.hasColors,_.hasModifications,{data:C,indices:q});return R&&n.push(R.buffer),O&&n.push(O.buffer),n.push(J.data),n.push(J.indices.buffer),n.push(C.buffer),n.push(q.buffer),new d(O,R,B,T,z,i,_.obb,G.minElevation,G.maxElevation)}function I(e,t,r,i,a){const f=r?n(r):s();o(f,t,f);const c=f[0],l=f[1],m=f[2],u=f[4],p=f[5],y=f[6],h=f[8],g=f[9],d=f[10],b=f[12],w=f[13],j=f[14];let x=1/0,A=-1/0;for(let o=0;o<e.length;o+=3){const t=e[o],r=e[o+1],n=e[o+2],s=t*m+r*y+n*d+j;let f=0;if(i>0){const e=t*c+r*u+n*h+b,o=t*l+r*p+n*g+w;f=Math.sqrt(e*e+o*o+s*s)-i}else f=s;f-=a,x=Math.min(x,f),A=Math.max(A,f)}return{minElevation:x,maxElevation:A}}function P(e){return 0===e?0:1===e?1:2===e?2:3}function _(e){if(!S)return;const{context:t,buffer:r}=e,o=S._malloc(r.byteLength),n=r.byteLength/Float64Array.BYTES_PER_ELEMENT,s=new Float64Array(S.HEAPU8.buffer,o,n),i=new Float64Array(r);s.set(i),S.filterOBBs(t,o,n),i.set(s),S._free(o)}function O(e){0===S?.destroy(e)&&(S=null,M=null,y())}function F(e,t,r){for(let o=0;o<t.length;++o)e[o+r]=t[o]}async function R(){S||await B()}async function B(){return S||(S=await(M??=p())),S}const T={transform:(e,t)=>S&&N(S,e,t),destroy:O};export{v as destroyContext,w as dracoDecompressPointCloudData,j as filterObbsForModifications,_ as filterObbsForModificationsSync,R as initialize,P as interpretObbModificationResults,b as process,E as project,A as setLegacySchema,x as setModifications,U as setModificationsSync,T as test,L as transformNormals};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import t from"../../../core/Logger.js";import s from"../../../core/PooledArray.js";import{create as e}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{WorkerHandle as o}from"../../../core/workers/WorkerHandle.js";import{canProjectWithoutEngine as i}from"../../../geometry/projectionUtils.js";import{projectVectorToVector as n}from"../../../geometry/projection/projectVectorToVector.js";class r{constructor(t,s,e,o,i,n){this.layout=t,this.interleavedVertexData=s,this.indices=e,this.hasColors=o,this.hasModifications=i,this.positionData=n}}class h{constructor(t,s,e,o,i,n,r){this.componentOffsets=t,this.featureIds=s,this.anchorIds=e,this.anchors=o,this.transformedGeometry=i,this.globalTrafo=n,this.obb=r}}class a extends o{constructor(t){super("SceneLayerWorker","process",{process:t=>[t.geometryBuffer],project:t=>[t.positions.buffer],transformNormals:t=>[t.normals.buffer]},t,{hasInitialize:!0}),this._schemasByContext=new Map,this._modificationsByContext=new Map}_onClientConnected(t){for(const[s,e]of this._schemasByContext)t.invoke("setLegacySchema",{context:s,jsonSchema:e}).catch(()=>{});for(const s of this._modificationsByContext.values())t.invoke("setModifications",s).catch(()=>{})}setModifications(t,s,e){const o={context:t,modifications:s,isGeodetic:e};return this._modificationsByContext.set(t,o),this.broadcast(o,"setModifications")}setLegacySchema(t,s){const e=JSON.stringify(s);return this._schemasByContext.set(t,e),this.broadcast({context:t,jsonSchema:e},"setLegacySchema")}destroyContext(t){return this._schemasByContext.delete(t),this._modificationsByContext.delete(t),this.broadcast(t,"destroyContext")}async destroyContextAndSelf(t){await this.destroyContext(t),this.destroy()}project(t,s){return this.invokeMethod("project",t,s)}transformNormals(t,s){return this.invokeMethod("transformNormals",t,s)}}const c=new s({deallocator:null}),p=e();function u(s,e,o){c.clear();let r=1/0,h=1/0,a=-1/0,u=-1/0,l=!1;for(const m of e){const s="clip"===m.type?2:"mask"===m.type?1:0,e=m.geometry;let f=t=>t;if(e.spatialReference){if(!i(e.spatialReference,o)){t.getLogger("esri.views.3d.layers.SceneLayerWorkerHandle").warn("im-modification-projection-failed","Can't project modification polygon into layer spatial reference, ignoring modification",{polygon:e});continue}f=t=>(n(t,e.spatialReference,p,o),p)}l=l||1===s;const g=e.rings.length,d=e.rings.some(t=>t.length<3);if(0===g||d)t.getLogger("esri.views.3d.layers.SceneLayerWorkerHandle").warn("im-modification-invalid-polygon","Ignoring invalid modification polygon (no rings or rings with less than 3 vertices).",{polygon:e});else{c.push(s),c.push(g);for(const t of e.rings){c.push(t.length);for(const s of t){const t=f(s);c.push(t[0]),c.push(t[1]),c.push(t[2]??0),r=Math.min(r,t[0]),h=Math.min(h,t[1]),a=Math.max(a,t[0]),u=Math.max(u,t[1])}}}}if(null!=s)if(l){const t=1e-4;c.push(2),c.push(2),c.push(4),c.push(r-t),c.push(h-t),c.push(0),c.push(a+t),c.push(h-t),c.push(0),c.push(a+t),c.push(u+t),c.push(0),c.push(r-t),c.push(u+t),c.push(0),c.push(4),c.push(s[0]),c.push(s[1]),c.push(0),c.push(s[2]),c.push(s[1]),c.push(0),c.push(s[2]),c.push(s[3]),c.push(0),c.push(s[0]),c.push(s[3]),c.push(0)}else c.push(1),c.push(1),c.push(4),c.push(s[0]),c.push(s[1]),c.push(0),c.push(s[2]),c.push(s[1]),c.push(0),c.push(s[2]),c.push(s[3]),c.push(0),c.push(s[0]),c.push(s[3]),c.push(0);c.push(3);const f=new Float64Array(c.length);for(let t=0;t<c.length;++t)f[t]=c.at(t);return f}function l(t,s){let e=0;for(const o of s){const s=o.geometry,i=s.rings.length,n=s.rings.some(t=>t.length<3);if(0!==i&&!n){e+=1,e+=1;for(let o=0;o<s.rings.length;++o){const i=s.rings[o];e+=1;for(let n=0;n<i.length;++n){const i=[t[e+0],t[e+1],t[e+2]];e+=3,s.setPoint(o,n,i)}}}}}export{a as SceneLayerWorkerHandle,h as TransformedData,r as TransformedGeometry,l as fromWasmModification,u as toWasmModification};
2
+ import t from"../../../core/Logger.js";import s from"../../../core/PooledArray.js";import{create as e}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{WorkerHandle as o}from"../../../core/workers/WorkerHandle.js";import{canProjectWithoutEngine as i}from"../../../geometry/projectionUtils.js";import{projectVectorToVector as n}from"../../../geometry/projection/projectVectorToVector.js";class r{constructor(t,s,e,o,i,n){this.layout=t,this.interleavedVertexData=s,this.indices=e,this.hasColors=o,this.hasModifications=i,this.positionData=n}}class h{constructor(t,s,e,o,i,n,r,h,a){this.componentOffsets=t,this.featureIds=s,this.anchorIds=e,this.anchors=o,this.transformedGeometry=i,this.globalTrafo=n,this.obb=r,this.geometryMinElevation=h,this.geometryMaxElevation=a}}class a extends o{constructor(t){super("SceneLayerWorker","process",{process:t=>[t.geometryBuffer],project:t=>[t.positions.buffer],transformNormals:t=>[t.normals.buffer]},t,{hasInitialize:!0}),this._schemasByContext=new Map,this._modificationsByContext=new Map}_onClientConnected(t){for(const[s,e]of this._schemasByContext)t.invoke("setLegacySchema",{context:s,jsonSchema:e}).catch(()=>{});for(const s of this._modificationsByContext.values())t.invoke("setModifications",s).catch(()=>{})}setModifications(t,s,e){const o={context:t,modifications:s,isGeodetic:e};return this._modificationsByContext.set(t,o),this.broadcast(o,"setModifications")}setLegacySchema(t,s){const e=JSON.stringify(s);return this._schemasByContext.set(t,e),this.broadcast({context:t,jsonSchema:e},"setLegacySchema")}destroyContext(t){return this._schemasByContext.delete(t),this._modificationsByContext.delete(t),this.broadcast(t,"destroyContext")}async destroyContextAndSelf(t){await this.destroyContext(t),this.destroy()}project(t,s){return this.invokeMethod("project",t,s)}transformNormals(t,s){return this.invokeMethod("transformNormals",t,s)}}const c=new s({deallocator:null}),p=e();function u(s,e,o){c.clear();let r=1/0,h=1/0,a=-1/0,u=-1/0,l=!1;for(const m of e){const s="clip"===m.type?2:"mask"===m.type?1:0,e=m.geometry;let f=t=>t;if(e.spatialReference){if(!i(e.spatialReference,o)){t.getLogger("esri.views.3d.layers.SceneLayerWorkerHandle").warn("im-modification-projection-failed","Can't project modification polygon into layer spatial reference, ignoring modification",{polygon:e});continue}f=t=>(n(t,e.spatialReference,p,o),p)}l=l||1===s;const g=e.rings.length,d=e.rings.some(t=>t.length<3);if(0===g||d)t.getLogger("esri.views.3d.layers.SceneLayerWorkerHandle").warn("im-modification-invalid-polygon","Ignoring invalid modification polygon (no rings or rings with less than 3 vertices).",{polygon:e});else{c.push(s),c.push(g);for(const t of e.rings){c.push(t.length);for(const s of t){const t=f(s);c.push(t[0]),c.push(t[1]),c.push(t[2]??0),r=Math.min(r,t[0]),h=Math.min(h,t[1]),a=Math.max(a,t[0]),u=Math.max(u,t[1])}}}}if(null!=s)if(l){const t=1e-4;c.push(2),c.push(2),c.push(4),c.push(r-t),c.push(h-t),c.push(0),c.push(a+t),c.push(h-t),c.push(0),c.push(a+t),c.push(u+t),c.push(0),c.push(r-t),c.push(u+t),c.push(0),c.push(4),c.push(s[0]),c.push(s[1]),c.push(0),c.push(s[2]),c.push(s[1]),c.push(0),c.push(s[2]),c.push(s[3]),c.push(0),c.push(s[0]),c.push(s[3]),c.push(0)}else c.push(1),c.push(1),c.push(4),c.push(s[0]),c.push(s[1]),c.push(0),c.push(s[2]),c.push(s[1]),c.push(0),c.push(s[2]),c.push(s[3]),c.push(0),c.push(s[0]),c.push(s[3]),c.push(0);c.push(3);const f=new Float64Array(c.length);for(let t=0;t<c.length;++t)f[t]=c.at(t);return f}function l(t,s){let e=0;for(const o of s){const s=o.geometry,i=s.rings.length,n=s.rings.some(t=>t.length<3);if(0!==i&&!n){e+=1,e+=1;for(let o=0;o<s.rings.length;++o){const i=s.rings[o];e+=1;for(let n=0;n<i.length;++n){const i=[t[e+0],t[e+1],t[e+2]];e+=3,s.setPoint(o,n,i)}}}}}export{a as SceneLayerWorkerHandle,h as TransformedData,r as TransformedGeometry,l as fromWasmModification,u as toWasmModification};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"../../../../core/PooledArray.js";import{castRenderScreenPointArray3 as t,createRenderScreenPointArray3 as r}from"../../../../core/screenUtils.js";import{getMetersPerVerticalUnitForSR as i}from"../../../../core/units.js";import{add as n,normalize as s,dot as o}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as l}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as c,copy as a,negativeInfinity as d}from"../../../../geometry/support/aaBoundingRect.js";import{create as u}from"../../../../geometry/support/ray.js";import{sv3d as y}from"../../../../geometry/support/vectorStacks.js";import{getElevationOffsetInMeters as h}from"../../../../support/elevationInfoUtils.js";import{computeMapPointFromVec3d as p}from"../../support/hitTest.js";import{fromRenderAtEye as g,fromScreen as m}from"../../support/geometryUtils/ray.js";import{defaultTolerance as f,Intersector as _,defaultScreenPolygonPrimitiveProcessor as P}from"../../webgl-engine/lib/Intersector.js";import{RayIntersectionQuery as w}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{isValidIntersectorResult as R}from"../../webgl-engine/lib/IntersectorResult.js";import{SliceScreenPolygonPrimitiveProcessor as v,sliceFilterPredicate as I}from"../../webgl-engine/lib/intersectorUtils.js";import{prepareScreenPolygonIntersectionQuery as b}from"../../webgl-engine/lib/screenPolygonIntersectionUtils.js";import{TaskPriority as U}from"../../../support/Scheduler.js";class j{constructor(t,r,i){this.viewingMode=t,this._forEachLayer=r,this._view=i,this._externalIntersectionHandlers=new e,this._tolerance=f,this._tmpRay=u(),this._tmpRegion=c(),this._validateHUDIntersector=new _(this.viewingMode),this._validateHUDIntersector.options.hud=!1,this._screenPolygonIntersectionTask=this._view.resourceController.scheduler.registerTask(U.SCREEN_POLYGON_INTERSECTION)}destroy(){this._screenPolygonIntersectionTask.remove(),this._externalIntersectionHandlers.prune()}intersectScreen(e,t,r){return this.intersectRay(this._getPickRay(e,this._tmpRay),F(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,F(this.viewingMode),t,r)||this._intersectRayFreePointLocal(e,t)}intersectRay(e,t,r,i){return t.options.selectionMode=!1,t.options.store=0,this.computeIntersection(e,t,!1,i),!!t.results.min&&t.results.min.getIntersectionPoint(r)}getCenterRayWithSubpixelOffset(e,t,r=.5,i=.5){return e.getRenderCenter(E,r,i),E[0]+=.0466,E[1]-=.0123,g(e,E,t)}intersectIntersectorScreen(e,t,r){this.computeIntersection(this._getPickRay(e,this._tmpRay),t,!1,r)}async intersectIntersectorScreenPolygon(e,t,r){t.polygonResults.init();const i=this._view.state.camera,n=await b(i,e);null!=n&&await this._screenPolygonIntersectionTask.scheduleGenerator(()=>this._intersectIntersectorScreenPolygon(i,t,n,r))}*_intersectIntersectorScreenPolygon(e,t,r,i){const n=new V(i,this._forEachLayer);t.options.selectOpaqueTerrainOnly=!i||!("include"in i||"exclude"in i),t.camera=e,t.point=null,t.screenPolygonPrimitiveProcessor=P,yield*t.intersectScreenPolygon(n.layers,r);const s=this._view.slice.plane,o=s?I(s):null,l=s?new v(s):null;t.screenPolygonPrimitiveProcessor=l??P,yield*t.intersectScreenPolygon(n.sliceableLayers,r),t.screenPolygonPrimitiveProcessor=P,yield*this._intersectPolygonHandlersGenerator(t,n,r,o,l),t.polygonResults.sortResults()}intersectToolIntersectorScreen(e,t,r){const i=this._getPickRay(e,this._tmpRay);this.intersectToolIntersectorRay(i,t,r)}intersectToolIntersectorRay(e,t,r){t.options.selectionMode=!0,this.computeIntersection(e,t,!1,r);const i=t.results.min;!!this._view.basemapTerrain&&this._view.basemapTerrain.opaque||R(i)&&7!==i.intersector||(t.options.selectionMode=!1,this.computeIntersection(e,t,!1,r))}setTolerance(e=f){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 m(r,e,t)}_intersectRayFreePointLocal(e,t){return 2!==this.viewingMode||null==e||n(t,e.origin,s(y.get(),e.direction)),!1}intersectElevationFromScreen(e,t,r=0,i=null){return this._intersectElevation(this._getPickRay(e,this._tmpRay),t,r,i)}_intersectElevation(e,r,n=0,l=null){if(null==e)return null;const c=this._view,{renderCoordsHelper:a}=c,d=i(c.spatialReference),u=null!=r?r.mode:"absolute-height",g=h(r)/d,m=("on-the-ground"!==u?g+n:0)*d/a.unitInMeters,{camera:f}=c.state;if("absolute-height"===u){const t=a?.getAltitude(f.eye),r=o(s(T,e.direction),a.worldUpAtPosition(f.eye,k));if(t<m&&r<0||t>=m&&r>0)return null;if(a.intersectInfiniteManifold(e,m,T)){const e=p(c,T);return e.z??=0,e.z-=g,e}return null}const P=f.projectToRenderScreen(e.origin,t(y.get())),w=new V(null,this._forEachLayer),R=c.slice.plane,v=R?I(R):null,b=new _(this.viewingMode);b.options.store=0,b.options.verticalOffset=m,b.options.normalRequired=!1;const U=this._createRayIntersectionQuery(e,P,!1);b.reset(U.beginPoint,U.endPoint,f),b.point=P;let j=null;if(l&&"type"in l&&"graphics"===l.type){const e=c.allLayerViews.find(e=>e.layer===l)?.uid;j=e?t=>t.layerViewUid===e:null}else l&&(j=e=>e.graphicUid!==l.uid);switch(u){case"relative-to-scene":{const e=e=>(!j||j(e))&&!!e.lastValidElevationBB;b.intersect(w.layers,U.screenPoint,this._tolerance,null,e),this._intersectRayHandlers(b,w,U,v,!1,e=>2===e.type||7===e.type||8===e.type,!1);break}case"on-the-ground":case"relative-to-ground":this._intersectRayHandlers(b,w,U,v,!1,e=>e.isGround,!1)}if(b.results.min.getIntersectionPoint(T)){const e=p(c,T);return e.z=n,e}return null}computeIntersection(e,r,i,n){if(null==e)return;const s=this._view.state.camera,o=s.projectToRenderScreen(e.origin,t(y.get())),l=new V(n,this._forEachLayer);r.options.selectOpaqueTerrainOnly=!n||!("include"in n||"exclude"in n);const c=this._createRayIntersectionQuery(e,o,i);r.reset(c.beginPoint,c.endPoint,s),r.intersect(l.layers,c.screenPoint,this._tolerance);const a=this._view.slice.plane,d=a?I(a):null;r.intersect(l.sliceableLayers,c.screenPoint,this._tolerance,d);const u=n&&(n.requiresGroundFeedback||n.enableDraped);this._intersectRayHandlers(r,l,c,d,!!u);const h=y.get(),p=this._view,g=p.basemapTerrain;if(n&&n.enableDraped&&null!=g.spatialReference&&r.results.ground.getIntersectionPoint(h)){const e=p.overlayManager.renderer,t=p.renderCoordsHelper.spatialReference,i=y.get();p.renderCoordsHelper.fromRenderCoords(h,i,g.spatialReference),i[2]=p.elevationProvider?.getElevation(h[0],h[1],h[2],t,"ground")??0,e.intersectRay(r,i,r.results.ground,e=>l.filterRenderGeometry(e))}r.sortResults(),this._processHUDResults(r)}_processHUDResults(e){const t=e.results.hud;a(this._tmpRegion,d);const r=new Array,i=this._tmpRegion,n=e=>{r.push(new L(e))};e.sortResults(t.all),null!=t.min.distance&&n(t.min);for(const c of t.all)t.min.target.object!==c.target.object&&t.max.target.object!==c.target.object&&n(c);if(null!=t.max.distance&&t.max.target.object!==t.min.target.object&&n(t.max),!r.length)return;i[0]===i[2]&&(i[2]+=1),i[1]===i[3]&&(i[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 w(e.origin,n(l(),e.origin,e.direction),t,r)}_intersectRayHandlers(e,t,r,i,n,s=()=>!0,o=!0){const{options:l}=e,c=l.isFiltered,a=l.filteredLayerViewUids;for(const{handler:d,filterPredicate:u,isFiltered:y,filteredLayerViewUids:h}of this._getFilteredIntersectionHandlers(t,i,null,s,o))(!y||d.isGround&&n)&&(l.isFiltered=y,l.filteredLayerViewUids=h,d.intersectRay(e,u,e.rayBegin,e.rayEnd,r.screenPoint,r.isVerticalRay));l.isFiltered=c,l.filteredLayerViewUids=a}*_intersectPolygonHandlersGenerator(e,t,r,i,n,s=()=>!0,o=!0){const{options:l}=e,c=l.isFiltered,a=l.filteredLayerViewUids,d=e.screenPolygonPrimitiveProcessor;for(const{handler:u,screenPolygonPrimitiveProcessor:y,isFiltered:h,filteredLayerViewUids:p}of this._getFilteredIntersectionHandlers(t,i,n,s,o))h||null==u.intersectScreenPolygon||(l.isFiltered=h,l.filteredLayerViewUids=p,e.screenPolygonPrimitiveProcessor=y??P,yield*u.intersectScreenPolygon(e,r));l.isFiltered=c,l.filteredLayerViewUids=a,e.screenPolygonPrimitiveProcessor=d}*_getFilteredIntersectionHandlers(e,t,r,i=()=>!0,n=!0){for(const s of this._externalIntersectionHandlers){if(!i(s))continue;let o=!1;const l=[];if(n){const t=s.layerViewUid,r=s.sublayerId,i=Array.isArray(t),n=i?t:[t];let c=!1;for(const s of n)e.filterLayerViewUid(s,r)?c=!0:i&&l.push(s);o=!c}yield new H(s,s.slicePlaneEnabled?t:null,s.slicePlaneEnabled?r:null,o,l)}}}class L{constructor(e){this.result=e,this.screenPoint=r()}}class H{constructor(e,t,r,i,n){this.handler=e,this.filterPredicate=t,this.screenPolygonPrimitiveProcessor=r,this.isFiltered=i,this.filteredLayerViewUids=n}}let x;function F(e){return x&&x.viewingMode===e||(x=new _(e)),x}class V{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:i}=this;if(null==e)return null==r&&null==i;const n=r instanceof Map?r.get(e)??!1:r?.has(e),s=i instanceof Map?i.get(e)??!1:i?.has(e);return(null==n||("boolean"==typeof n?n:null!=t&&n.has(t)))&&(null==s||!("boolean"==typeof s?s:null!=t&&s.has(t)))}filterRenderGeometry(e){return this.filterLayerViewUid(e.layerViewUid)}}function S(e){return"object"==typeof e&&null!=e&&"intersectRay"in e}const T=l(),k=l(),E=r();export{j as SceneIntersectionHelper,S as isIntersectionHandler};
2
+ import e from"../../../../core/PooledArray.js";import{castRenderScreenPointArray3 as t,createRenderScreenPointArray3 as r}from"../../../../core/screenUtils.js";import{getMetersPerVerticalUnitForSR as i}from"../../../../core/units.js";import{add as n,normalize as s,dot as o}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as l}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as c,copy as a,negativeInfinity as d}from"../../../../geometry/support/aaBoundingRect.js";import{create as u}from"../../../../geometry/support/ray.js";import{sv3d as y}from"../../../../geometry/support/vectorStacks.js";import{getElevationOffsetInMeters as h}from"../../../../support/elevationInfoUtils.js";import{computeMapPointFromVec3d as p}from"../../support/hitTest.js";import{fromRenderAtEye as g,fromScreen as m}from"../../support/geometryUtils/ray.js";import{defaultTolerance as f,Intersector as P,defaultScreenPolygonPrimitiveProcessor as _}from"../../webgl-engine/lib/Intersector.js";import{RayIntersectionQuery as w}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{isValidIntersectorResult as R}from"../../webgl-engine/lib/IntersectorResult.js";import{SliceScreenPolygonPrimitiveProcessor as v,sliceFilterPredicate as b}from"../../webgl-engine/lib/intersectorUtils.js";import{prepareScreenPolygonIntersectionQuery as I}from"../../webgl-engine/lib/screenPolygonIntersectionUtils.js";import{TaskPriority as U}from"../../../support/Scheduler.js";class H{constructor(t,r,i){this.viewingMode=t,this._forEachLayer=r,this._view=i,this._externalIntersectionHandlers=new e,this._tolerance=f,this._tmpRay=u(),this._tmpRegion=c(),this._validateHUDIntersector=new P(this.viewingMode),this._validateHUDIntersector.options.hud=!1,this._screenPolygonIntersectionTask=this._view.resourceController.scheduler.registerTask(U.SCREEN_POLYGON_INTERSECTION)}destroy(){this._screenPolygonIntersectionTask.remove(),this._externalIntersectionHandlers.prune()}intersectScreen(e,t,r){return this.intersectRay(this._getPickRay(e,this._tmpRay),F(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,F(this.viewingMode),t,r)||this._intersectRayFreePointLocal(e,t)}intersectRay(e,t,r,i){return t.options.selectionMode=!1,t.options.store=0,this.computeIntersection(e,t,!1,i),!!t.results.min&&t.results.min.getIntersectionPoint(r)}getCenterRayWithSubpixelOffset(e,t,r=.5,i=.5){return e.getRenderCenter(E,r,i),E[0]+=.0466,E[1]-=.0123,g(e,E,t)}intersectIntersectorScreen(e,t,r){this.computeIntersection(this._getPickRay(e,this._tmpRay),t,!1,r)}async intersectIntersectorScreenPolygon(e,t,r){t.polygonResults.init();const i=this._view.state.camera,n=await I(i,e);null!=n&&await this._screenPolygonIntersectionTask.scheduleGenerator(()=>this._intersectIntersectorScreenPolygon(i,t,n,r))}*_intersectIntersectorScreenPolygon(e,t,r,i){const n=new S(i,this._forEachLayer);t.options.selectOpaqueTerrainOnly=!i||!("include"in i||"exclude"in i),t.camera=e,t.point=null,t.screenPolygonPrimitiveProcessor=_,yield*t.intersectScreenPolygon(n.layers,r);const s=this._view.slice.plane,o=s?new v(s):null;t.screenPolygonPrimitiveProcessor=o??_,yield*t.intersectScreenPolygon(n.sliceableLayers,r),t.screenPolygonPrimitiveProcessor=_,yield*this._intersectPolygonHandlersGenerator(t,n,r,null,o),yield*t.intersectHUDScreenPolygon(n.layers,r),t.screenPolygonPrimitiveProcessor=o??_,yield*t.intersectHUDScreenPolygon(n.sliceableLayers,r),t.polygonResults.sortResults()}intersectToolIntersectorScreen(e,t,r){const i=this._getPickRay(e,this._tmpRay);this.intersectToolIntersectorRay(i,t,r)}intersectToolIntersectorRay(e,t,r){t.options.selectionMode=!0,this.computeIntersection(e,t,!1,r);const i=t.results.min;!!this._view.basemapTerrain&&this._view.basemapTerrain.opaque||R(i)&&7!==i.intersector||(t.options.selectionMode=!1,this.computeIntersection(e,t,!1,r))}setTolerance(e=f){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 m(r,e,t)}_intersectRayFreePointLocal(e,t){return 2!==this.viewingMode||null==e||n(t,e.origin,s(y.get(),e.direction)),!1}intersectElevationFromScreen(e,t,r=0,i=null){return this._intersectElevation(this._getPickRay(e,this._tmpRay),t,r,i)}_intersectElevation(e,r,n=0,l=null){if(null==e)return null;const c=this._view,{renderCoordsHelper:a}=c,d=i(c.spatialReference),u=null!=r?r.mode:"absolute-height",g=h(r)/d,m=("on-the-ground"!==u?g+n:0)*d/a.unitInMeters,{camera:f}=c.state;if("absolute-height"===u){const t=a?.getAltitude(f.eye),r=o(s(T,e.direction),a.worldUpAtPosition(f.eye,k));if(t<m&&r<0||t>=m&&r>0)return null;if(a.intersectInfiniteManifold(e,m,T)){const e=p(c,T);return e.z??=0,e.z-=g,e}return null}const _=f.projectToRenderScreen(e.origin,t(y.get())),w=new S(null,this._forEachLayer),R=c.slice.plane,v=R?b(R):null,I=new P(this.viewingMode);I.options.store=0,I.options.verticalOffset=m,I.options.normalRequired=!1;const U=this._createRayIntersectionQuery(e,_,!1);I.reset(U.beginPoint,U.endPoint,f),I.point=_;let H=null;if(l&&"type"in l&&"graphics"===l.type){const e=c.allLayerViews.find(e=>e.layer===l)?.uid;H=e?t=>t.layerViewUid===e:null}else l&&(H=e=>e.graphicUid!==l.uid);switch(u){case"relative-to-scene":{const e=e=>(!H||H(e))&&!!e.lastValidElevationBB;I.intersect(w.layers,U.screenPoint,this._tolerance,null,e),this._intersectRayHandlers(I,w,U,v,!1,e=>2===e.type||7===e.type||8===e.type,!1);break}case"on-the-ground":case"relative-to-ground":this._intersectRayHandlers(I,w,U,v,!1,e=>e.isGround,!1)}if(I.results.min.getIntersectionPoint(T)){const e=p(c,T);return e.z=n,e}return null}computeIntersection(e,r,i,n){if(null==e)return;const s=this._view.state.camera,o=s.projectToRenderScreen(e.origin,t(y.get())),l=new S(n,this._forEachLayer);r.options.selectOpaqueTerrainOnly=!n||!("include"in n||"exclude"in n);const c=this._createRayIntersectionQuery(e,o,i);r.reset(c.beginPoint,c.endPoint,s),r.intersect(l.layers,c.screenPoint,this._tolerance);const a=this._view.slice.plane,d=a?b(a):null;r.intersect(l.sliceableLayers,c.screenPoint,this._tolerance,d);const u=n&&(n.requiresGroundFeedback||n.enableDraped);this._intersectRayHandlers(r,l,c,d,!!u);const h=y.get(),p=this._view,g=p.basemapTerrain;if(n&&n.enableDraped&&null!=g.spatialReference&&r.results.ground.getIntersectionPoint(h)){const e=p.overlayManager.renderer,t=p.renderCoordsHelper.spatialReference,i=y.get();p.renderCoordsHelper.fromRenderCoords(h,i,g.spatialReference),i[2]=p.elevationProvider?.getElevation(h[0],h[1],h[2],t,"ground")??0,e.intersectRay(r,i,r.results.ground,e=>l.filterRenderGeometry(e))}r.sortResults(),this._processHUDResults(r)}_processHUDResults(e){const t=e.results.hud;a(this._tmpRegion,d);const r=new Array,i=this._tmpRegion,n=e=>{r.push(new L(e))};e.sortResults(t.all),null!=t.min.distance&&n(t.min);for(const c of t.all)t.min.target.object!==c.target.object&&t.max.target.object!==c.target.object&&n(c);if(null!=t.max.distance&&t.max.target.object!==t.min.target.object&&n(t.max),!r.length)return;i[0]===i[2]&&(i[2]+=1),i[1]===i[3]&&(i[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 w(e.origin,n(l(),e.origin,e.direction),t,r)}_intersectRayHandlers(e,t,r,i,n,s=()=>!0,o=!0){const{options:l}=e,c=l.isFiltered,a=l.filteredLayerViewUids;for(const{handler:d,filterPredicate:u,isFiltered:y,filteredLayerViewUids:h}of this._getFilteredIntersectionHandlers(t,i,null,s,o))(!y||d.isGround&&n)&&(l.isFiltered=y,l.filteredLayerViewUids=h,d.intersectRay(e,u,e.rayBegin,e.rayEnd,r.screenPoint,r.isVerticalRay));l.isFiltered=c,l.filteredLayerViewUids=a}*_intersectPolygonHandlersGenerator(e,t,r,i,n,s=()=>!0,o=!0){const{options:l}=e,c=l.isFiltered,a=l.filteredLayerViewUids,d=e.screenPolygonPrimitiveProcessor;for(const{handler:u,screenPolygonPrimitiveProcessor:y,isFiltered:h,filteredLayerViewUids:p}of this._getFilteredIntersectionHandlers(t,i,n,s,o))h||null==u.intersectScreenPolygon||(l.isFiltered=h,l.filteredLayerViewUids=p,e.screenPolygonPrimitiveProcessor=y??_,yield*u.intersectScreenPolygon(e,r));l.isFiltered=c,l.filteredLayerViewUids=a,e.screenPolygonPrimitiveProcessor=d}*_getFilteredIntersectionHandlers(e,t,r,i=()=>!0,n=!0){for(const s of this._externalIntersectionHandlers){if(!i(s))continue;let o=!1;const l=[];if(n){const t=s.layerViewUid,r=s.sublayerId,i=Array.isArray(t),n=i?t:[t];let c=!1;for(const s of n)e.filterLayerViewUid(s,r)?c=!0:i&&l.push(s);o=!c}yield new j(s,s.slicePlaneEnabled?t:null,s.slicePlaneEnabled?r:null,o,l)}}}class L{constructor(e){this.result=e,this.screenPoint=r()}}class j{constructor(e,t,r,i,n){this.handler=e,this.filterPredicate=t,this.screenPolygonPrimitiveProcessor=r,this.isFiltered=i,this.filteredLayerViewUids=n}}let x;function F(e){return x&&x.viewingMode===e||(x=new P(e)),x}class S{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:i}=this;if(null==e)return null==r&&null==i;const n=r instanceof Map?r.get(e)??!1:r?.has(e),s=i instanceof Map?i.get(e)??!1:i?.has(e);return(null==n||("boolean"==typeof n?n:null!=t&&n.has(t)))&&(null==s||!("boolean"==typeof s?s:null!=t&&s.has(t)))}filterRenderGeometry(e){return this.filterLayerViewUid(e.layerViewUid)}}function V(e){return"object"==typeof e&&null!=e&&"intersectRay"in e}const T=l(),k=l(),E=r();export{H as SceneIntersectionHelper,V as isIntersectionHandler};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{signal as e}from"../../../../core/signal.js";import{Milliseconds as i}from"../../../../core/time.js";class t{static{this.fadeInEase=e=>e*(2-e)}static{this.fadeOutEase=e=>e*e}static{this.inverseFadeInEase=e=>1-Math.sqrt(1-e)}static{this.inverseFadeOutEase=e=>Math.sqrt(1-e)}static{this.minimumFadeDuration=i(80)}static{this.resetFadeDurationInterval=i(1e3)}constructor(t){this.layerView=t,this._numFadingTiles=e(0),this._tmpFullyFadedOutTiles=new Array,this._previousNumFadingTiles=0,this._lastStoppedFading=i(0),this._currentFadeDuration=this.baseFadeDuration}get numFadingTiles(){return this._numFadingTiles.value}fadeTile(e,i,t){const a=this._getTargetOpacity(i);if(e.fadeDirection=i,!this.fadingEnabled)return void this._instantTileFading(e,a);const s=e.opacityModifier;if(s!==a){const a=this._getFadeProgressFromOpacity(s,i);this._startTileFading(e,a,t)}else this._stopTileFading(e)}updateAllTileFading(e){const i=this._tmpFullyFadedOutTiles;i.length=0,this.layerView.tileHandles.forEach(t=>{this._updateTileFading(t,e)&&i.push(t)});i.length>0&&(this.layerView.notifyTileObbsChanged(i),0===this._numFadingTiles.value&&this.layerView.updateGaussians()),this._numFadingTiles.value>0&&this.layerView.view.stage?.renderView.requestRender(2)}onFadeDurationChanged(e){0===e&&this.numFadingTiles>0&&this._instantlyFullyFadeAllTiles()}isTileFadingOut(e){return null!=e.fadeProgress&&1===e.fadeDirection}onTileDiscarded(e){null!=e.fadeProgress&&(this._numFadingTiles.value--,0===this._numFadingTiles.value&&(this._lastStoppedFading=i(performance.now())))}updateFadeDuration(){if(this.numFadingTiles&&this.numFadingTiles>=this._previousNumFadingTiles){const e=.95*this._currentFadeDuration;this._currentFadeDuration=i(Math.max(e,t.minimumFadeDuration))}else 0===this.numFadingTiles&&performance.now()-this._lastStoppedFading>t.resetFadeDurationInterval&&(this._currentFadeDuration=this.baseFadeDuration);return this._previousNumFadingTiles=this.numFadingTiles,this._currentFadeDuration}get updating(){return this._numFadingTiles.value>0}get baseFadeDuration(){return this.layerView.view.qualitySettings.fadeDuration}get fadingEnabled(){return 0!==this.baseFadeDuration}_startTileFading(e,i,t){null==e.fadeProgress&&this._numFadingTiles.value++,e.fadeDuration=t,e.fadeProgress=i}_stopTileFading(e){null!=e.fadeProgress&&(1===e.fadeDirection&&this._onTileFullyFadedOut(e),this._numFadingTiles.value--,0===this._numFadingTiles.value&&(this._lastStoppedFading=i(performance.now())),e.fadeDuration=null,e.fadeProgress=null)}_updateTileFading(e,i){const{fadeProgress:a,fadeDirection:s}=e;if(null==a)return!1;const n=this._fadeDirectionToSign(s),r=e.fadeDuration,d=this._getTargetOpacity(s),l=i/Math.abs(r||1),u=Math.min(a+l,1),o=n*(1-(0===s?t.fadeInEase:t.fadeOutEase)(u)),h=1===u;if(e.opacityModifier=h?d:d-o,h){const i=1===s;return this._stopTileFading(e),this._updateOpacityModifier(e),i}return e.fadeProgress=u,this._updateOpacityModifier(e),!1}_updateOpacityModifier(e){const i=255*e.opacityModifier;for(let t=0;t<e.pageIds.length;t++){const a=e.pageIds[t];this.layerView.data.fadingTexture.updateBuffer(i,a)}}_instantTileFading(e,i){e.fadeDuration=null,e.fadeProgress=null,e.opacityModifier=i,this._updateOpacityModifier(e),1===e.fadeDirection&&this._onTileFullyFadedOut(e)}_instantlyFullyFadeAllTiles(){const e=this._tmpFullyFadedOutTiles;e.length=0,this.layerView.tileHandles.forEach(i=>{if(null!=i.fadeProgress){const t=1===i.fadeDirection;this._instantTileFading(i,this._getTargetOpacity(i.fadeDirection)),t&&e.push(i)}});e.length>0&&(this.layerView.updateGaussians(),this.layerView.notifyTileObbsChanged(e)),this._numFadingTiles.value=0}_onTileFullyFadedOut(e){e.lifecycleState=0,this.layerView.moveTileToCache(e)}_fadeDirectionToSign(e){return 0===e?1:-1}_getTargetOpacity(e){return 0===e?1:0}_getFadeProgressFromOpacity(e,i){const a=Math.max(0,Math.min(e,1));return 0===i?t.inverseFadeInEase(a):t.inverseFadeOutEase(a)}}export{t as GaussianSplatFadeHelper};
2
+ import{signal as e}from"../../../../core/signal.js";import{Milliseconds as i}from"../../../../core/time.js";import{getGaussianSplatAlphaCutoffValue as t}from"../../webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js";class a{static{this.fadeInEase=e=>e*(2-e)}static{this.fadeOutEase=e=>e*e}static{this.inverseFadeInEase=e=>1-Math.sqrt(1-e)}static{this.inverseFadeOutEase=e=>Math.sqrt(1-e)}static{this.minimumFadeDuration=i(80)}static{this.resetFadeDurationInterval=i(1e3)}constructor(t){this.layerView=t,this._numFadingTiles=e(0),this._tmpFullyFadedOutTiles=new Array,this._previousNumFadingTiles=0,this._lastStoppedFading=i(0),this._currentFadeDuration=this.baseFadeDuration}get numFadingTiles(){return this._numFadingTiles.value}fadeTile(e,i,t){const a=this._getTargetOpacity(i);if(e.fadeDirection=i,!this.fadingEnabled)return void this._instantTileFading(e,a);const s=e.opacityModifier;if(s!==a){const a=this._getFadeProgressFromOpacity(s,i);this._startTileFading(e,a,t)}else this._stopTileFading(e)}updateAllTileFading(e){const i=this._tmpFullyFadedOutTiles;i.length=0,this.layerView.tileHandles.forEach(t=>{this._updateTileFading(t,e)&&i.push(t)});i.length>0&&(this.layerView.notifyTileObbsChanged(i),0===this._numFadingTiles.value&&this.layerView.updateGaussians()),this._numFadingTiles.value>0&&this.layerView.view.stage?.renderView.requestRender(2)}onFadeDurationChanged(e){0===e&&this.numFadingTiles>0&&this._instantlyFullyFadeAllTiles()}isTileFadingOut(e){return null!=e.fadeProgress&&1===e.fadeDirection}onTileDiscarded(e){null!=e.fadeProgress&&(this._numFadingTiles.value--,0===this._numFadingTiles.value&&(this._lastStoppedFading=i(performance.now())))}updateFadeDuration(){if(this.numFadingTiles&&this.numFadingTiles>=this._previousNumFadingTiles){const e=.95*this._currentFadeDuration;this._currentFadeDuration=i(Math.max(e,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.layerView.view.qualitySettings.fadeDuration}get fadingEnabled(){return 0!==this.baseFadeDuration}_startTileFading(e,i,t){null==e.fadeProgress&&this._numFadingTiles.value++,e.fadeDuration=t,e.fadeProgress=i}_stopTileFading(e){null!=e.fadeProgress&&(1===e.fadeDirection&&this._onTileFullyFadedOut(e),this._numFadingTiles.value--,0===this._numFadingTiles.value&&(this._lastStoppedFading=i(performance.now())),e.fadeDuration=null,e.fadeProgress=null)}_updateTileFading(e,i){const{fadeProgress:t,fadeDirection:s}=e;if(null==t)return!1;const n=this._fadeDirectionToSign(s),r=e.fadeDuration,d=this._getTargetOpacity(s),l=i/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(e,o);if(e.opacityModifier=h?d:o,h){const i=1===s;return this._stopTileFading(e),this._updateOpacityModifier(e),i}return e.fadeProgress=u,this._updateOpacityModifier(e),!1}_updateOpacityModifier(e){const i=255*e.opacityModifier;for(let t=0;t<e.pageIds.length;t++){const a=e.pageIds[t];this.layerView.data.fadingTexture.updateBuffer(i,a)}}_tileReachedFadeOutCutoff(e,i){if(1!==e.fadeDirection)return!1;const a=t(this.layerView.view.qualitySettings.gaussianSplat.nonIdleMinimumOpacity);return i*e.maxGaussianOpacity<=a}_instantTileFading(e,i){e.fadeDuration=null,e.fadeProgress=null,e.opacityModifier=i,this._updateOpacityModifier(e),1===e.fadeDirection&&this._onTileFullyFadedOut(e)}_instantlyFullyFadeAllTiles(){const e=this._tmpFullyFadedOutTiles;e.length=0,this.layerView.tileHandles.forEach(i=>{if(null!=i.fadeProgress){const t=1===i.fadeDirection;this._instantTileFading(i,this._getTargetOpacity(i.fadeDirection)),t&&e.push(i)}});e.length>0&&(this.layerView.updateGaussians(),this.layerView.notifyTileObbsChanged(e)),this._numFadingTiles.value=0}_onTileFullyFadedOut(e){e.lifecycleState=0,this.layerView.moveTileToCache(e)}_fadeDirectionToSign(e){return 0===e?1:-1}_getTargetOpacity(e){return 0===e?1:0}_getFadeProgressFromOpacity(e,i){const t=Math.max(0,Math.min(e,1));return 0===i?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{estimateNumberArrayMemory as t}from"../../../../core/memoryEstimations.js";import{create as s}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as i,diameter as e}from"../../../../geometry/support/aaBoundingBox.js";class o{constructor(o,n,r,a,h,b,c,u,d,l){this.handle=o,this.obb=n,this.gaussianAtlasIndices=r,this.pageIds=a,this.relativePositions=h,this.packedRotations=b,this.packedOpacityScaledScales=c,this.gaussianCount=u,this.maxSplatMbsRadiusSquared=d,this.elevationRange=l,this.bvhIntersectionGeneration=0,this.lifecycleState=0,this.cullingRevision=-1,this.cullingVisible=!1,this.fadeDirection=0,this.opacityModifier=0,this.usedMemory=t(this.gaussianAtlasIndices,this.pageIds,this.relativePositions,this.packedRotations,this.packedOpacityScaledScales);const m=s();n.getCenter(m),this.obbCenterX=m[0],this.obbCenterY=m[1],this.obbCenterZ=m[2];const f=n.radius??-1;this._mbsRadius=f;const p=f<0?-1:f*f;this._mbsRadiusSquared=p,this._obbShortestHalfsize=Math.min(n.halfSizeX,n.halfSizeY,n.halfSizeZ);const S=i();n.toAaBoundingBox(S),this.boundingBox=S;const g=f>=0?f:.5*e(S);this.paddedMbsRadius=g+Math.sqrt(Math.max(0,d))}boundingVolumeIntersectsRay(t,s){if(!this.obb)return!0;const{obbCenterX:i,obbCenterY:e,obbCenterZ:o}=this,n=i-t[0],r=e-t[1],a=o-t[2],h=n*s[0]+r*s[1]+a*s[2],b=n*n+r*r+a*a-h*h;return(this._mbsRadiusSquared<0||b<=this._mbsRadiusSquared)&&this.obb.intersectRay(t,s)}boundingVolumeIntersectsSphere(t){const s=this._mbsRadius;if(s<0)return!0;const i=t.center,e=t.radius,o=s+e,n=this.obbCenterX-i[0];if(n>o)return!1;const r=this.obbCenterY-i[1];if(r>o)return!1;const a=this.obbCenterZ-i[2];if(a>o)return!1;const h=n*n+r*r+a*a;if(h>o*o)return!1;if(h<=(this._obbShortestHalfsize+e)**2)return!0;return Math.sqrt(h)+s<=e||(this.obb?.intersectSphere(t)??!0)}}export{o as GaussianTile};
2
+ import{estimateNumberArrayMemory as t}from"../../../../core/memoryEstimations.js";import{create as s}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as i,diameter as e}from"../../../../geometry/support/aaBoundingBox.js";class a{constructor(a,o,n,r,h,c,b,u,d,l,m){this.handle=a,this.obb=o,this.gaussianAtlasIndices=n,this.pageIds=r,this.relativePositions=h,this.packedRotations=c,this.packedOpacityScaledScales=b,this.gaussianCount=u,this.maxSplatMbsRadiusSquared=d,this.maxGaussianOpacity=l,this.elevationRange=m,this.bvhIntersectionGeneration=0,this.lifecycleState=0,this.cullingRevision=-1,this.cullingVisible=!1,this.fadeDirection=0,this.opacityModifier=0,this.usedMemory=t(this.gaussianAtlasIndices,this.pageIds,this.relativePositions,this.packedRotations,this.packedOpacityScaledScales);const f=s();o.getCenter(f),this.obbCenterX=f[0],this.obbCenterY=f[1],this.obbCenterZ=f[2];const p=o.radius??-1;this._mbsRadius=p;const S=p<0?-1:p*p;this._mbsRadiusSquared=S,this._obbShortestHalfsize=Math.min(o.halfSizeX,o.halfSizeY,o.halfSizeZ);const g=i();o.toAaBoundingBox(g),this.boundingBox=g;const R=p>=0?p:.5*e(g);this.paddedMbsRadius=R+Math.sqrt(Math.max(0,d))}boundingVolumeIntersectsRay(t,s){if(!this.obb)return!0;const{obbCenterX:i,obbCenterY:e,obbCenterZ:a}=this,o=i-t[0],n=e-t[1],r=a-t[2],h=o*s[0]+n*s[1]+r*s[2],c=o*o+n*n+r*r-h*h;return(this._mbsRadiusSquared<0||c<=this._mbsRadiusSquared)&&this.obb.intersectRay(t,s)}boundingVolumeIntersectsSphere(t){const s=this._mbsRadius;if(s<0)return!0;const i=t.center,e=t.radius,a=s+e,o=this.obbCenterX-i[0];if(o>a)return!1;const n=this.obbCenterY-i[1];if(n>a)return!1;const r=this.obbCenterZ-i[2];if(r>a)return!1;const h=o*o+n*n+r*r;if(h>a*a)return!1;if(h<=(this._obbShortestHalfsize+e)**2)return!0;return Math.sqrt(h)+s<=e||(this.obb?.intersectSphere(t)??!0)}}export{a as GaussianTile};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import i from"../../../core/Accessor.js";import e from"../../../core/Logger.js";import{lerp as r}from"../../../core/mathUtils.js";import{createScreenPointArray as s,createRenderScreenPointArray3 as o}from"../../../core/screenUtils.js";import{property as n,subclass as h}from"../../../core/accessorSupport/decorators.js";import{copy as a,multiply as p,invert as u,transpose as l,frustum as _,exactEquals as c,lookAt as v}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{create as w}from"../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{copy as d,exactEquals as y}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{fromValues as g}from"../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{subtract as m,set as f,distance as x,copy as M,exactEquals as D,sub as j,dot as R,sqrLen as P,sqrDist as V,scale as F,length as C,cross as b,normalize as S,direction as T}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as I,UNIT_Z as E}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{scale as A,equals as O,exactEquals as U,copy as H,squaredDistance as z,transformMat4 as W}from"../../../core/libs/gl-matrix-2/math/vec4.js";import{fromValues as q,create as Y}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{create as k,copy as L,fromMatrix as X}from"../../../geometry/support/frustum.js";import{create as G}from"../../../geometry/support/ray.js";import{projectPointSignedLength as N}from"../../../geometry/support/vector.js";import{viewAngle as B}from"../state/utils/viewUtils.js";import{fovd2fovx as J,fovx2fovd as K,fovd2fovy as Q,fovy2fovd as Z}from"../webgl-engine/lib/fov.js";var $;let tt=$=class extends i{constructor(t){super(t),this._ray=G(),this._viewport=q(0,0,1,1),this._padding=q(0,0,0,0),this._fov=55/180*Math.PI,this._nearFar=g(1,1e3),this._viewDirty=!0,this._viewMatrix=w(),this._viewProjectionDirty=!0,this._viewProjectionMatrix=w(),this._viewInverseTransposeMatrixDirty=!0,this._viewInverseTransposeMatrix=w(),this._frustumDirty=!0,this._frustum=k(),this._fullViewport=Y(),this._pixelRatio=1,this.row=0,this.column=0,this._rows=1,this._columns=1,this._center=I(),this._up=I(),this.relativeElevation=0}get pixelRatio(){return this._pixelRatio}set pixelRatio(t){this._pixelRatio=t>0?t:1}get rows(){return this._rows}set rows(t){this._rows=Math.max(1,t)}get columns(){return this._columns}set columns(t){this._columns=Math.max(1,t)}get eye(){return this._ray.origin}set eye(t){this._compareAndSetView(t,this._ray.origin)}get center(){return this._center}set center(t){this._compareAndSetView(t,this._center,"_center")}get ray(){return m(this._ray.direction,this.center,this.eye),this._ray}get up(){return this._up}set up(t){this._compareAndSetView(t,this._up,"_up")}get viewMatrix(){return this._ensureViewClean(),this._viewMatrix}set viewMatrix(t){a(this._viewMatrix,t),this.notifyChange("_viewMatrix"),this._viewDirty=!1,this._viewInverseTransposeMatrixDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0}get viewForward(){return this._ensureViewClean(),f(I(),-this._viewMatrix[2],-this._viewMatrix[6],-this._viewMatrix[10])}get viewUp(){return this._ensureViewClean(),f(I(),this._viewMatrix[1],this._viewMatrix[5],this._viewMatrix[9])}get viewRight(){return this._ensureViewClean(),f(I(),this._viewMatrix[0],this._viewMatrix[4],this._viewMatrix[8])}get nearFar(){return this._nearFar}get near(){return this._nearFar[0]}set near(t){this._nearFar[0]!==t&&(this._nearFar[0]=t,this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_nearFar"))}get far(){return this._nearFar[1]}set far(t){this._nearFar[1]!==t&&(this._nearFar[1]=t,this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_nearFar"))}get viewport(){return this._viewport}set viewport(t){this.x=t[0],this.y=t[1],this.width=t[2],this.height=t[3]}get screenViewport(){if(1===this.pixelRatio)return this._viewport;const t=A(Y(),this._viewport,1/this.pixelRatio),i=this._get("screenViewport");return i&&O(t,i)?i:t}get screenPadding(){if(1===this.pixelRatio)return this._padding;const t=A(Y(),this._padding,1/this.pixelRatio),i=this._get("screenPadding");return i&&O(t,i)?i:t}get x(){return this._viewport[0]}set x(t){t+=this._padding[3],this._viewport[0]!==t&&(this._viewport[0]=t,this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_viewport"))}get y(){return this._viewport[1]}set y(t){t+=this._padding[2],this._viewport[1]!==t&&(this._viewport[1]=t,this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_viewport"))}get width(){return this._viewport[2]}set width(t){this._viewport[2]!==t&&(this._viewport[2]=t,this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_viewport"))}get height(){return this._viewport[3]}set height(t){this._viewport[3]!==t&&(this._viewport[3]=t,this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_viewport"))}get fullWidth(){return this._viewport[2]+this._padding[1]+this._padding[3]}set fullWidth(t){this.width=t-(this._padding[1]+this._padding[3])}get fullHeight(){return this._viewport[3]+this._padding[0]+this._padding[2]}set fullHeight(t){this.height=t-(this._padding[0]+this._padding[2])}get fullViewport(){return this._fullViewport[0]=this._viewport[0]-this._padding[3],this._fullViewport[1]=this._viewport[1]-this._padding[2],this._fullViewport[2]=this.fullWidth,this._fullViewport[3]=this.fullHeight,this._fullViewport}get _aspect(){return this.width/this.height}get padding(){return this._padding}set padding(t){U(this._padding,t)||(this._viewport[0]+=t[3]-this._padding[3],this._viewport[1]+=t[2]-this._padding[2],this._viewport[2]-=t[1]+t[3]-(this._padding[1]+this._padding[3]),this._viewport[3]-=t[0]+t[2]-(this._padding[0]+this._padding[2]),H(this._padding,t),this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_padding"),this.notifyChange("_viewport"))}get viewProjectionMatrix(){return this._viewProjectionDirty&&(p(this._viewProjectionMatrix,this.projectionMatrix,this.viewMatrix),this._viewProjectionDirty=!1),this._viewProjectionMatrix}get projectionMatrix(){return this._projectionMatrixInternal}get inverseProjectionMatrix(){return u(w(),this.projectionMatrix)||this._get("inverseProjectionMatrix")||w()}get fov(){return this._fov}set fov(t){this._fov=t,this._viewProjectionDirty=!0,this._frustumDirty=!0}get fovX(){return J(this._fov,this.width,this.height)}set fovX(t){this._fov=K(t,this.width,this.height),this._viewProjectionDirty=!0,this._frustumDirty=!0}get fovY(){return Q(this._fov,this.width,this.height)}set fovY(t){this._fov=Z(t,this.width,this.height),this._viewProjectionDirty=!0,this._frustumDirty=!0}get distance(){return x(this.center,this.eye)}get frustum(){return this._recomputeFrustum(),this._frustum}get viewInverseTransposeMatrix(){return(this._viewInverseTransposeMatrixDirty||this._viewDirty)&&(u(this._viewInverseTransposeMatrix,this.viewMatrix),l(this._viewInverseTransposeMatrix,this._viewInverseTransposeMatrix),this._viewInverseTransposeMatrixDirty=!1),this._viewInverseTransposeMatrix}depthNDCToWorld(t){const{near:i,far:e}=this;return 2*i*e/(e+i-t*(e-i))}get perRenderPixelRatio(){return Math.tan(this.fovX/2)/(this.width/2)}get perScreenPixelRatio(){return this.perRenderPixelRatio*this.pixelRatio}get aboveGround(){return null!=this.relativeElevation&&this.relativeElevation>=0}get _projectionMatrixInternal(){const t=this.width,i=this.height,e=this.near*Math.tan(this.fovY/2)*2,r=e*this._aspect,s=e/this.rows,o=r/this.columns,n=-r/2+this.column*o,h=n+o,a=-e/2+this.row*s,p=a+s,u=_(w(),n*(1+2*this._padding[3]/t),h*(1+2*this._padding[1]/t),a*(1+2*this._padding[2]/i),p*(1+2*this._padding[0]/i),this.near,this.far),l=this._get("projectionMatrix");return l&&c(l,u)?l:u}copyFrom(t){M(this._ray.origin,t.eye),this.center=t.center,this.up=t.up,H(this._viewport,t.viewport),this.notifyChange("_viewport"),H(this._padding,t.padding),this.notifyChange("_padding"),d(this._nearFar,t.nearFar),this.notifyChange("_nearFar"),this._fov=t.fov,this.row=t.row,this.column=t.column,this.rows=t.rows,this.columns=t.columns,this.relativeElevation=t.relativeElevation;const i=t;return this._viewDirty=i._viewDirty,this._viewDirty||(a(this._viewMatrix,t.viewMatrix),this.notifyChange("_viewMatrix")),this._viewProjectionDirty=!0,this._frustumDirty=i._frustumDirty,this._frustumDirty||(L(this._frustum,t.frustum),this._frustumDirty=!1),i._viewInverseTransposeMatrixDirty?this._viewInverseTransposeMatrixDirty=!0:(a(this._viewInverseTransposeMatrix,t.viewInverseTransposeMatrix),this._viewInverseTransposeMatrixDirty=!1),H(this._fullViewport,t.fullViewport),this.pixelRatio=t.pixelRatio,this}copyViewFrom(t){this.eye=t.eye,this.center=t.center,this.up=t.up,this.fov=t.fov}clone(){return(new $).copyFrom(this)}equals(t){return D(this.eye,t.eye)&&D(this.center,t.center)&&D(this.up,t.up)&&U(this._viewport,t.viewport)&&U(this._padding,t.padding)&&y(this.nearFar,t.nearFar)&&this._fov===t.fov&&this.pixelRatio===t.pixelRatio&&this.relativeElevation===t.relativeElevation&&this.row===t.row&&this.column===t.column&&this.rows===t.rows&&this.columns===t.columns}equalsView(t){return D(this.eye,t.eye)&&D(this.center,t.center)&&D(this.up,t.up)&&this._fov===t.fov}almostEquals(t){const i=Math.max(1,1/this.pixelRatio,1/t.pixelRatio);if(Math.abs(t.fov-this._fov)>=.001||z(t.screenPadding,this.screenPadding)>=i||z(this.screenViewport,t.screenViewport)>=i||this.row!==t.row||this.column!==t.column||this.rows!==t.rows||this.columns!==t.columns)return!1;j(rt,t.eye,t.center),j(st,this.eye,this.center);const e=R(rt,st),r=P(rt),s=P(st),o=5e-4;return e*e>=(1-1e-10)*r*s&&V(t.eye,this.eye)<Math.max(r,s)*o*o}computeRenderPixelSizeAt(t){return this.computeRenderPixelSizeAtDist(this._viewDirectionDistance(t))}computeRenderPixelSizeAtDist(t){return t*this.perRenderPixelRatio}computeScreenPixelSizeAt(t){return this.computeScreenPixelSizeAtDist(this._viewDirectionDistance(t))}_viewDirectionDistance(t){return Math.abs(N(this.viewForward,m(rt,t,this.eye)))}computeScreenPixelSizeAtDist(t){return t*this.perScreenPixelRatio}computeDistanceFromRadius(t,i){return t/Math.tan(Math.min(this.fovX,this.fovY)/(2*(i||1)))}getScreenCenter(t=s()){return t[0]=(this.padding[3]+this.width/2)/this.pixelRatio,t[1]=(this.padding[0]+this.height/2)/this.pixelRatio,t}getRenderCenter(t,i=.5,e=.5){return t[0]=this.padding[3]+this.width*i,t[1]=this.padding[2]+this.height*e,t[2]=.5,t}setGLViewport(t){const i=this.viewport,e=this.padding;t.setViewport(i[0]-e[3],i[1]-e[2],i[2]+e[1]+e[3],i[3]+e[0]+e[2])}applyProjection(t,i){t!==it&&M(it,t),it[3]=1,W(it,it,this.projectionMatrix);const e=Math.abs(it[3]);F(it,it,1/e);const s=this.fullViewport;i[0]=r(0,s[0]+s[2],.5+.5*it[0]),i[1]=r(0,s[1]+s[3],.5+.5*it[1]),i[2]=.5*(it[2]+1),i[3]=e}unapplyProjection(t,i){const e=this.fullViewport;it[0]=(t[0]/(e[0]+e[2])*2-1)*t[3],it[1]=(t[1]/(e[1]+e[3])*2-1)*t[3],it[2]=(2*t[2]-1)*t[3],it[3]=t[3],null!=this.inverseProjectionMatrix&&(W(it,it,this.inverseProjectionMatrix),i[0]=it[0],i[1]=it[1],i[2]=it[2])}projectToScreen(t,i){return null==this.projectToRenderScreen(t,ot)?null:(this.renderToScreen(ot,i),i)}projectToRenderScreen(t,i){if(it[0]=t[0],it[1]=t[1],it[2]=t[2],it[3]=1,W(it,it,this.viewProjectionMatrix),0===it[3])return null;const e=it;F(e,e,1/Math.abs(it[3]));const s=this.fullViewport,o=r(0,s[0]+s[2],.5+.5*e[0]),n=r(0,s[1]+s[3],.5+.5*e[1]);return"x"in i?(i.x=o,i.y=n):(i[0]=o,i[1]=n,i.length>2&&(i[2]=.5*(e[2]+1))),i}unprojectFromScreen(t,i){return this.unprojectFromRenderScreen(this.screenToRender(t,ot),i)}unprojectFromRenderScreen(t,i){if(p(et,this.projectionMatrix,this.viewMatrix),!u(et,et))return null;const e=this.fullViewport;return it[0]=2*(t[0]-e[0])/e[2]-1,it[1]=2*(t[1]-e[1])/e[3]-1,it[2]=2*t[2]-1,it[3]=1,W(it,it,et),0===it[3]?null:(i[0]=it[0]/it[3],i[1]=it[1]/it[3],i[2]=it[2]/it[3],i)}constrainWindowSize(t,i,e,r){const s=t*this.pixelRatio,o=i*this.pixelRatio,n=Math.max(s-e/2,0),h=Math.max(this.fullHeight-o-r/2,0),a=-Math.min(s-e/2,0),p=-Math.min(this.fullHeight-o-r/2,0),u=e-a- -Math.min(this.fullWidth-s-e/2,0),l=r-p- -Math.min(o-r/2,0);return[Math.round(n),Math.round(h),Math.round(u),Math.round(l)]}computeUp(t){1===t?this._computeUpGlobal():this._computeUpLocal()}screenToRender(t,i){const e=t[0]*this.pixelRatio,r=this.fullHeight-t[1]*this.pixelRatio;return i[0]=e,i[1]=r,i}renderToScreen(t,i){const e=t[0]/this.pixelRatio,r=(this.fullHeight-t[1])/this.pixelRatio;i[0]=e,i[1]=r}sphereFrustumCoverage(t,i){const{center:e,eye:r,distance:s,fovY:o}=this,n=Math.abs(Math.PI/2-B(i,e,r));return t.frustumCoverage(n,s,o)}_computeUpGlobal(){m(rt,this.center,this.eye);const t=C(this.center);t<1?D(this._up,E)&&(M(this._up,E),this._markViewDirty(),this.notifyChange("_up")):Math.abs(R(rt,this.center))>.9999*C(rt)*t||(b(st,rt,this.center),b(st,st,rt),S(st,st),D(this._up,st)||(M(this._up,st),this.notifyChange("_up"),this._markViewDirty()))}_computeUpLocal(){T(rt,this.eye,this.center),Math.abs(rt[2])<=.9999&&(F(rt,rt,rt[2]),f(rt,-rt[0],-rt[1],1-rt[2]),S(rt,rt),D(this._up,rt)||(M(this._up,rt),this.notifyChange("_up"),this._markViewDirty()))}_compareAndSetView(t,i,r=""){"number"==typeof t[0]&&isFinite(t[0])&&"number"==typeof t[1]&&isFinite(t[1])&&"number"==typeof t[2]&&isFinite(t[2])?D(t,i)||(M(i,t),this._markViewDirty(),r.length&&this.notifyChange(r)):e.getLogger("esri.views.3d.webgl-engine.lib.RenderCamera").warn("RenderCamera vector contains invalid number, ignoring value")}_markViewDirty(){this._viewDirty=!0,this._frustumDirty=!0,this._viewProjectionDirty=!0}_recomputeFrustum(){this._frustumDirty&&(X(this.viewMatrix,this.projectionMatrix,this._frustum),this._frustumDirty=!1)}_ensureViewClean(){this._viewDirty&&(v(this._viewMatrix,this.eye,this.center,this.up),this.notifyChange("_viewMatrix"),this._viewDirty=!1,this._viewInverseTransposeMatrixDirty=!0)}};t([n()],tt.prototype,"_viewport",void 0),t([n()],tt.prototype,"_padding",void 0),t([n()],tt.prototype,"_fov",void 0),t([n()],tt.prototype,"_nearFar",void 0),t([n()],tt.prototype,"_viewDirty",void 0),t([n()],tt.prototype,"_viewMatrix",void 0),t([n()],tt.prototype,"_pixelRatio",void 0),t([n()],tt.prototype,"pixelRatio",null),t([n()],tt.prototype,"row",void 0),t([n()],tt.prototype,"column",void 0),t([n()],tt.prototype,"_rows",void 0),t([n()],tt.prototype,"rows",null),t([n()],tt.prototype,"_columns",void 0),t([n()],tt.prototype,"columns",null),t([n()],tt.prototype,"eye",null),t([n()],tt.prototype,"center",null),t([n()],tt.prototype,"_center",void 0),t([n()],tt.prototype,"up",null),t([n()],tt.prototype,"_up",void 0),t([n()],tt.prototype,"viewMatrix",null),t([n({readOnly:!0})],tt.prototype,"viewForward",null),t([n({readOnly:!0})],tt.prototype,"viewUp",null),t([n({readOnly:!0})],tt.prototype,"viewRight",null),t([n({readOnly:!0})],tt.prototype,"nearFar",null),t([n()],tt.prototype,"near",null),t([n()],tt.prototype,"far",null),t([n()],tt.prototype,"viewport",null),t([n({readOnly:!0})],tt.prototype,"screenViewport",null),t([n({readOnly:!0})],tt.prototype,"screenPadding",null),t([n()],tt.prototype,"x",null),t([n()],tt.prototype,"y",null),t([n()],tt.prototype,"width",null),t([n()],tt.prototype,"height",null),t([n()],tt.prototype,"fullWidth",null),t([n()],tt.prototype,"fullHeight",null),t([n({readOnly:!0})],tt.prototype,"_aspect",null),t([n()],tt.prototype,"padding",null),t([n({readOnly:!0})],tt.prototype,"projectionMatrix",null),t([n({readOnly:!0})],tt.prototype,"inverseProjectionMatrix",null),t([n()],tt.prototype,"fov",null),t([n()],tt.prototype,"fovX",null),t([n()],tt.prototype,"fovY",null),t([n()],tt.prototype,"viewInverseTransposeMatrix",null),t([n({readOnly:!0})],tt.prototype,"_projectionMatrixInternal",null),t([n()],tt.prototype,"relativeElevation",void 0),tt=$=t([h("esri.views.3d.webgl.RenderCamera")],tt);const it=Y(),et=w(),rt=I(),st=I(),ot=o();export{tt as default};
2
+ import{__decorate as t}from"tslib";import i from"../../../core/Accessor.js";import e from"../../../core/Logger.js";import{lerp as r}from"../../../core/mathUtils.js";import{createScreenPointArray as s,createRenderScreenPointArray3 as o}from"../../../core/screenUtils.js";import{property as n,subclass as h}from"../../../core/accessorSupport/decorators.js";import{copy as a,invertOrIdentity as p,multiply as u,invert as l,transpose as _,frustum as v,exactEquals as c,lookAt as w}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{create as d}from"../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{copy as y,exactEquals as g}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{fromValues as m}from"../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{subtract as f,set as x,distance as M,copy as D,exactEquals as j,sub as R,dot as P,sqrLen as V,sqrDist as F,scale as C,length as b,cross as S,normalize as T,direction as I}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as E,UNIT_Z as A}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{scale as O,equals as U,exactEquals as H,copy as z,squaredDistance as W,transformMat4 as q}from"../../../core/libs/gl-matrix-2/math/vec4.js";import{fromValues as Y,create as k}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{create as L,copy as X,fromMatrix as G}from"../../../geometry/support/frustum.js";import{create as N}from"../../../geometry/support/ray.js";import{projectPointSignedLength as B}from"../../../geometry/support/vector.js";import{viewAngle as J}from"../state/utils/viewUtils.js";import{fovd2fovx as K,fovx2fovd as Q,fovd2fovy as Z,fovy2fovd as $}from"../webgl-engine/lib/fov.js";var tt;let it=tt=class extends i{constructor(t){super(t),this._ray=N(),this._viewport=Y(0,0,1,1),this._padding=Y(0,0,0,0),this._fov=55/180*Math.PI,this._nearFar=m(1,1e3),this._viewDirty=!0,this._viewMatrix=d(),this._viewProjectionDirty=!0,this._viewProjectionMatrix=d(),this._viewInverseTransposeMatrixDirty=!0,this._viewInverseTransposeMatrix=d(),this._frustumDirty=!0,this._frustum=L(),this._fullViewport=k(),this._pixelRatio=1,this.row=0,this.column=0,this._rows=1,this._columns=1,this._center=E(),this._up=E(),this.relativeElevation=0}get pixelRatio(){return this._pixelRatio}set pixelRatio(t){this._pixelRatio=t>0?t:1}get rows(){return this._rows}set rows(t){this._rows=Math.max(1,t)}get columns(){return this._columns}set columns(t){this._columns=Math.max(1,t)}get eye(){return this._ray.origin}set eye(t){this._compareAndSetView(t,this._ray.origin)}get center(){return this._center}set center(t){this._compareAndSetView(t,this._center,"_center")}get ray(){return f(this._ray.direction,this.center,this.eye),this._ray}get up(){return this._up}set up(t){this._compareAndSetView(t,this._up,"_up")}get viewMatrix(){return this._ensureViewClean(),this._viewMatrix}set viewMatrix(t){a(this._viewMatrix,t),this.notifyChange("_viewMatrix"),this._viewDirty=!1,this._viewInverseTransposeMatrixDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0}get inverseViewMatrix(){return p(d(),this.viewMatrix)||this._get("inverseViewMatrix")||d()}get viewForward(){return this._ensureViewClean(),x(E(),-this._viewMatrix[2],-this._viewMatrix[6],-this._viewMatrix[10])}get viewUp(){return this._ensureViewClean(),x(E(),this._viewMatrix[1],this._viewMatrix[5],this._viewMatrix[9])}get viewRight(){return this._ensureViewClean(),x(E(),this._viewMatrix[0],this._viewMatrix[4],this._viewMatrix[8])}get nearFar(){return this._nearFar}get near(){return this._nearFar[0]}set near(t){this._nearFar[0]!==t&&(this._nearFar[0]=t,this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_nearFar"))}get far(){return this._nearFar[1]}set far(t){this._nearFar[1]!==t&&(this._nearFar[1]=t,this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_nearFar"))}get viewport(){return this._viewport}set viewport(t){this.x=t[0],this.y=t[1],this.width=t[2],this.height=t[3]}get screenViewport(){if(1===this.pixelRatio)return this._viewport;const t=O(k(),this._viewport,1/this.pixelRatio),i=this._get("screenViewport");return i&&U(t,i)?i:t}get screenPadding(){if(1===this.pixelRatio)return this._padding;const t=O(k(),this._padding,1/this.pixelRatio),i=this._get("screenPadding");return i&&U(t,i)?i:t}get x(){return this._viewport[0]}set x(t){t+=this._padding[3],this._viewport[0]!==t&&(this._viewport[0]=t,this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_viewport"))}get y(){return this._viewport[1]}set y(t){t+=this._padding[2],this._viewport[1]!==t&&(this._viewport[1]=t,this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_viewport"))}get width(){return this._viewport[2]}set width(t){this._viewport[2]!==t&&(this._viewport[2]=t,this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_viewport"))}get height(){return this._viewport[3]}set height(t){this._viewport[3]!==t&&(this._viewport[3]=t,this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_viewport"))}get fullWidth(){return this._viewport[2]+this._padding[1]+this._padding[3]}set fullWidth(t){this.width=t-(this._padding[1]+this._padding[3])}get fullHeight(){return this._viewport[3]+this._padding[0]+this._padding[2]}set fullHeight(t){this.height=t-(this._padding[0]+this._padding[2])}get fullViewport(){return this._fullViewport[0]=this._viewport[0]-this._padding[3],this._fullViewport[1]=this._viewport[1]-this._padding[2],this._fullViewport[2]=this.fullWidth,this._fullViewport[3]=this.fullHeight,this._fullViewport}get _aspect(){return this.width/this.height}get padding(){return this._padding}set padding(t){H(this._padding,t)||(this._viewport[0]+=t[3]-this._padding[3],this._viewport[1]+=t[2]-this._padding[2],this._viewport[2]-=t[1]+t[3]-(this._padding[1]+this._padding[3]),this._viewport[3]-=t[0]+t[2]-(this._padding[0]+this._padding[2]),z(this._padding,t),this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_padding"),this.notifyChange("_viewport"))}get viewProjectionMatrix(){return this._viewProjectionDirty&&(u(this._viewProjectionMatrix,this.projectionMatrix,this.viewMatrix),this._viewProjectionDirty=!1),this._viewProjectionMatrix}get projectionMatrix(){return this._projectionMatrixInternal}get inverseProjectionMatrix(){return l(d(),this.projectionMatrix)||this._get("inverseProjectionMatrix")||d()}get fov(){return this._fov}set fov(t){this._fov=t,this._viewProjectionDirty=!0,this._frustumDirty=!0}get fovX(){return K(this._fov,this.width,this.height)}set fovX(t){this._fov=Q(t,this.width,this.height),this._viewProjectionDirty=!0,this._frustumDirty=!0}get fovY(){return Z(this._fov,this.width,this.height)}set fovY(t){this._fov=$(t,this.width,this.height),this._viewProjectionDirty=!0,this._frustumDirty=!0}get distance(){return M(this.center,this.eye)}get frustum(){return this._recomputeFrustum(),this._frustum}get viewInverseTransposeMatrix(){return(this._viewInverseTransposeMatrixDirty||this._viewDirty)&&(l(this._viewInverseTransposeMatrix,this.viewMatrix),_(this._viewInverseTransposeMatrix,this._viewInverseTransposeMatrix),this._viewInverseTransposeMatrixDirty=!1),this._viewInverseTransposeMatrix}depthNDCToWorld(t){const{near:i,far:e}=this;return 2*i*e/(e+i-t*(e-i))}get perRenderPixelRatio(){return Math.tan(this.fovX/2)/(this.width/2)}get perScreenPixelRatio(){return this.perRenderPixelRatio*this.pixelRatio}get aboveGround(){return null!=this.relativeElevation&&this.relativeElevation>=0}get _projectionMatrixInternal(){const t=this.width,i=this.height,e=this.near*Math.tan(this.fovY/2)*2,r=e*this._aspect,s=e/this.rows,o=r/this.columns,n=-r/2+this.column*o,h=n+o,a=-e/2+this.row*s,p=a+s,u=v(d(),n*(1+2*this._padding[3]/t),h*(1+2*this._padding[1]/t),a*(1+2*this._padding[2]/i),p*(1+2*this._padding[0]/i),this.near,this.far),l=this._get("projectionMatrix");return l&&c(l,u)?l:u}copyFrom(t){D(this._ray.origin,t.eye),this.center=t.center,this.up=t.up,z(this._viewport,t.viewport),this.notifyChange("_viewport"),z(this._padding,t.padding),this.notifyChange("_padding"),y(this._nearFar,t.nearFar),this.notifyChange("_nearFar"),this._fov=t.fov,this.row=t.row,this.column=t.column,this.rows=t.rows,this.columns=t.columns,this.relativeElevation=t.relativeElevation;const i=t;return this._viewDirty=i._viewDirty,this._viewDirty||(a(this._viewMatrix,t.viewMatrix),this.notifyChange("_viewMatrix")),this._viewProjectionDirty=!0,this._frustumDirty=i._frustumDirty,this._frustumDirty||(X(this._frustum,t.frustum),this._frustumDirty=!1),i._viewInverseTransposeMatrixDirty?this._viewInverseTransposeMatrixDirty=!0:(a(this._viewInverseTransposeMatrix,t.viewInverseTransposeMatrix),this._viewInverseTransposeMatrixDirty=!1),z(this._fullViewport,t.fullViewport),this.pixelRatio=t.pixelRatio,this}copyViewFrom(t){this.eye=t.eye,this.center=t.center,this.up=t.up,this.fov=t.fov}clone(){return(new tt).copyFrom(this)}equals(t){return j(this.eye,t.eye)&&j(this.center,t.center)&&j(this.up,t.up)&&H(this._viewport,t.viewport)&&H(this._padding,t.padding)&&g(this.nearFar,t.nearFar)&&this._fov===t.fov&&this.pixelRatio===t.pixelRatio&&this.relativeElevation===t.relativeElevation&&this.row===t.row&&this.column===t.column&&this.rows===t.rows&&this.columns===t.columns}equalsView(t){return j(this.eye,t.eye)&&j(this.center,t.center)&&j(this.up,t.up)&&this._fov===t.fov}almostEquals(t){const i=Math.max(1,1/this.pixelRatio,1/t.pixelRatio);if(Math.abs(t.fov-this._fov)>=.001||W(t.screenPadding,this.screenPadding)>=i||W(this.screenViewport,t.screenViewport)>=i||this.row!==t.row||this.column!==t.column||this.rows!==t.rows||this.columns!==t.columns)return!1;R(st,t.eye,t.center),R(ot,this.eye,this.center);const e=P(st,ot),r=V(st),s=V(ot),o=5e-4;return e*e>=(1-1e-10)*r*s&&F(t.eye,this.eye)<Math.max(r,s)*o*o}computeRenderPixelSizeAt(t){return this.computeRenderPixelSizeAtDist(this._viewDirectionDistance(t))}computeRenderPixelSizeAtDist(t){return t*this.perRenderPixelRatio}computeScreenPixelSizeAt(t){return this.computeScreenPixelSizeAtDist(this._viewDirectionDistance(t))}_viewDirectionDistance(t){return Math.abs(B(this.viewForward,f(st,t,this.eye)))}computeScreenPixelSizeAtDist(t){return t*this.perScreenPixelRatio}computeDistanceFromRadius(t,i){return t/Math.tan(Math.min(this.fovX,this.fovY)/(2*(i||1)))}getScreenCenter(t=s()){return t[0]=(this.padding[3]+this.width/2)/this.pixelRatio,t[1]=(this.padding[0]+this.height/2)/this.pixelRatio,t}getRenderCenter(t,i=.5,e=.5){return t[0]=this.padding[3]+this.width*i,t[1]=this.padding[2]+this.height*e,t[2]=.5,t}setGLViewport(t){const i=this.viewport,e=this.padding;t.setViewport(i[0]-e[3],i[1]-e[2],i[2]+e[1]+e[3],i[3]+e[0]+e[2])}applyProjection(t,i){t!==et&&D(et,t),et[3]=1,q(et,et,this.projectionMatrix);const e=Math.abs(et[3]);C(et,et,1/e);const s=this.fullViewport;i[0]=r(0,s[0]+s[2],.5+.5*et[0]),i[1]=r(0,s[1]+s[3],.5+.5*et[1]),i[2]=.5*(et[2]+1),i[3]=e}unapplyProjection(t,i){const e=this.fullViewport;et[0]=(t[0]/(e[0]+e[2])*2-1)*t[3],et[1]=(t[1]/(e[1]+e[3])*2-1)*t[3],et[2]=(2*t[2]-1)*t[3],et[3]=t[3],null!=this.inverseProjectionMatrix&&(q(et,et,this.inverseProjectionMatrix),i[0]=et[0],i[1]=et[1],i[2]=et[2])}projectToScreen(t,i){return null==this.projectToRenderScreen(t,nt)?null:(this.renderToScreen(nt,i),i)}projectToRenderScreen(t,i){if(et[0]=t[0],et[1]=t[1],et[2]=t[2],et[3]=1,q(et,et,this.viewProjectionMatrix),0===et[3])return null;const e=et;C(e,e,1/Math.abs(et[3]));const s=this.fullViewport,o=r(0,s[0]+s[2],.5+.5*e[0]),n=r(0,s[1]+s[3],.5+.5*e[1]);return"x"in i?(i.x=o,i.y=n):(i[0]=o,i[1]=n,i.length>2&&(i[2]=.5*(e[2]+1))),i}unprojectFromScreen(t,i){return this.unprojectFromRenderScreen(this.screenToRender(t,nt),i)}unprojectFromRenderScreen(t,i){if(u(rt,this.projectionMatrix,this.viewMatrix),!l(rt,rt))return null;const e=this.fullViewport;return et[0]=2*(t[0]-e[0])/e[2]-1,et[1]=2*(t[1]-e[1])/e[3]-1,et[2]=2*t[2]-1,et[3]=1,q(et,et,rt),0===et[3]?null:(i[0]=et[0]/et[3],i[1]=et[1]/et[3],i[2]=et[2]/et[3],i)}constrainWindowSize(t,i,e,r){const s=t*this.pixelRatio,o=i*this.pixelRatio,n=Math.max(s-e/2,0),h=Math.max(this.fullHeight-o-r/2,0),a=-Math.min(s-e/2,0),p=-Math.min(this.fullHeight-o-r/2,0),u=e-a- -Math.min(this.fullWidth-s-e/2,0),l=r-p- -Math.min(o-r/2,0);return[Math.round(n),Math.round(h),Math.round(u),Math.round(l)]}computeUp(t){1===t?this._computeUpGlobal():this._computeUpLocal()}screenToRender(t,i){const e=t[0]*this.pixelRatio,r=this.fullHeight-t[1]*this.pixelRatio;return i[0]=e,i[1]=r,i}renderToScreen(t,i){const e=t[0]/this.pixelRatio,r=(this.fullHeight-t[1])/this.pixelRatio;i[0]=e,i[1]=r}sphereFrustumCoverage(t,i){const{center:e,eye:r,distance:s,fovY:o}=this,n=Math.abs(Math.PI/2-J(i,e,r));return t.frustumCoverage(n,s,o)}_computeUpGlobal(){f(st,this.center,this.eye);const t=b(this.center);t<1?j(this._up,A)&&(D(this._up,A),this._markViewDirty(),this.notifyChange("_up")):Math.abs(P(st,this.center))>.9999*b(st)*t||(S(ot,st,this.center),S(ot,ot,st),T(ot,ot),j(this._up,ot)||(D(this._up,ot),this.notifyChange("_up"),this._markViewDirty()))}_computeUpLocal(){I(st,this.eye,this.center),Math.abs(st[2])<=.9999&&(C(st,st,st[2]),x(st,-st[0],-st[1],1-st[2]),T(st,st),j(this._up,st)||(D(this._up,st),this.notifyChange("_up"),this._markViewDirty()))}_compareAndSetView(t,i,r=""){"number"==typeof t[0]&&isFinite(t[0])&&"number"==typeof t[1]&&isFinite(t[1])&&"number"==typeof t[2]&&isFinite(t[2])?j(t,i)||(D(i,t),this._markViewDirty(),r.length&&this.notifyChange(r)):e.getLogger("esri.views.3d.webgl-engine.lib.RenderCamera").warn("RenderCamera vector contains invalid number, ignoring value")}_markViewDirty(){this._viewDirty=!0,this._frustumDirty=!0,this._viewProjectionDirty=!0}_recomputeFrustum(){this._frustumDirty&&(G(this.viewMatrix,this.projectionMatrix,this._frustum),this._frustumDirty=!1)}_ensureViewClean(){this._viewDirty&&(w(this._viewMatrix,this.eye,this.center,this.up),this.notifyChange("_viewMatrix"),this._viewDirty=!1,this._viewInverseTransposeMatrixDirty=!0)}};t([n()],it.prototype,"_viewport",void 0),t([n()],it.prototype,"_padding",void 0),t([n()],it.prototype,"_fov",void 0),t([n()],it.prototype,"_nearFar",void 0),t([n()],it.prototype,"_viewDirty",void 0),t([n()],it.prototype,"_viewMatrix",void 0),t([n()],it.prototype,"_pixelRatio",void 0),t([n()],it.prototype,"pixelRatio",null),t([n()],it.prototype,"row",void 0),t([n()],it.prototype,"column",void 0),t([n()],it.prototype,"_rows",void 0),t([n()],it.prototype,"rows",null),t([n()],it.prototype,"_columns",void 0),t([n()],it.prototype,"columns",null),t([n()],it.prototype,"eye",null),t([n()],it.prototype,"center",null),t([n()],it.prototype,"_center",void 0),t([n()],it.prototype,"up",null),t([n()],it.prototype,"_up",void 0),t([n()],it.prototype,"viewMatrix",null),t([n({readOnly:!0})],it.prototype,"inverseViewMatrix",null),t([n({readOnly:!0})],it.prototype,"viewForward",null),t([n({readOnly:!0})],it.prototype,"viewUp",null),t([n({readOnly:!0})],it.prototype,"viewRight",null),t([n({readOnly:!0})],it.prototype,"nearFar",null),t([n()],it.prototype,"near",null),t([n()],it.prototype,"far",null),t([n()],it.prototype,"viewport",null),t([n({readOnly:!0})],it.prototype,"screenViewport",null),t([n({readOnly:!0})],it.prototype,"screenPadding",null),t([n()],it.prototype,"x",null),t([n()],it.prototype,"y",null),t([n()],it.prototype,"width",null),t([n()],it.prototype,"height",null),t([n()],it.prototype,"fullWidth",null),t([n()],it.prototype,"fullHeight",null),t([n({readOnly:!0})],it.prototype,"_aspect",null),t([n()],it.prototype,"padding",null),t([n({readOnly:!0})],it.prototype,"projectionMatrix",null),t([n({readOnly:!0})],it.prototype,"inverseProjectionMatrix",null),t([n()],it.prototype,"fov",null),t([n()],it.prototype,"fovX",null),t([n()],it.prototype,"fovY",null),t([n()],it.prototype,"viewInverseTransposeMatrix",null),t([n({readOnly:!0})],it.prototype,"_projectionMatrixInternal",null),t([n()],it.prototype,"relativeElevation",void 0),it=tt=t([h("esri.views.3d.webgl.RenderCamera")],it);const et=k(),rt=d(),st=E(),ot=E(),nt=o();export{it as default};