@arcgis/core 5.2.0-next.94 → 5.2.0-next.96

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 (604) hide show
  1. package/applications/WebEditor/geometryUtils.d.ts +1 -1
  2. package/arcade/arcadeAsyncRuntime.js +1 -1
  3. package/arcade/arcadeCompiler.js +1 -1
  4. package/arcade/arcadeRuntime.js +1 -1
  5. package/arcade/containerUtils.js +1 -1
  6. package/arcade/functions/track.js +1 -1
  7. package/arcgisGlobal.d.ts +2 -0
  8. package/assets/components/assets/icon/aiAgent16.json +1 -0
  9. package/assets/components/assets/icon/aiAgent24.json +1 -0
  10. package/assets/components/assets/icon/aiAgent32.json +1 -0
  11. package/assets/components/assets/icon/aiAgents16.json +1 -0
  12. package/assets/components/assets/icon/aiAgents24.json +1 -0
  13. package/assets/components/assets/icon/aiAgents32.json +1 -0
  14. package/assets/components/assets/icon/explodeGeometry16.json +1 -0
  15. package/assets/components/assets/icon/explodeGeometry24.json +1 -0
  16. package/assets/components/assets/icon/explodeGeometry32.json +1 -0
  17. package/assets/components/assets/icon/integration16.json +1 -0
  18. package/assets/components/assets/icon/integration24.json +1 -0
  19. package/assets/components/assets/icon/integration32.json +1 -0
  20. package/assets/components/assets/icon/spatiotemporalCatalog16.json +1 -0
  21. package/assets/components/assets/icon/spatiotemporalCatalog24.json +1 -0
  22. package/assets/components/assets/icon/spatiotemporalCatalog32.json +1 -0
  23. package/assets/components/assets/input-time-zone/t9n/messages.de.json +1 -1
  24. package/assets/esri/core/workers/RemoteClient.js +1 -1
  25. package/assets/esri/core/workers/chunks/000f91a18c22377f8525.js +1 -0
  26. package/assets/esri/core/workers/chunks/{c4a0d3149947a1d2c484.js → 006146ad6d4a5cbf1a1f.js} +1 -1
  27. package/assets/esri/core/workers/chunks/{bd1a7e95a797e1ed4a7b.js → 013c17e07756fa465845.js} +1 -1
  28. package/assets/esri/core/workers/chunks/014eaccf2c2d357981f0.js +1 -0
  29. package/assets/esri/core/workers/chunks/{f253875feb11883deb84.js → 04d4cd66485b622403d0.js} +1 -1
  30. package/assets/esri/core/workers/chunks/05eb064f9b543890ae24.js +1 -0
  31. package/assets/esri/core/workers/chunks/05fbd1f373cfa3724f0c.js +1 -0
  32. package/assets/esri/core/workers/chunks/0809a55a2f9be07cc5a9.js +1 -0
  33. package/assets/esri/core/workers/chunks/0930738f43ce09b2ed2d.js +1 -0
  34. package/assets/esri/core/workers/chunks/{691434d4c6a38e63d819.js → 0a242e76bc293b0ad04b.js} +1 -1
  35. package/assets/esri/core/workers/chunks/0a4092578dc7578bcf76.js +1 -0
  36. package/assets/esri/core/workers/chunks/0e11bee9b56a7f51b012.js +1 -0
  37. package/assets/esri/core/workers/chunks/0e65869a5dd5a3917da7.js +1 -0
  38. package/assets/esri/core/workers/chunks/0ffb5a1275d07dcd9115.js +1 -0
  39. package/assets/esri/core/workers/chunks/{e370a3337b3c90240e73.js → 105da965fc90604eb6bf.js} +1 -1
  40. package/assets/esri/core/workers/chunks/1082bb0858585bd4fa21.js +2 -0
  41. package/assets/esri/core/workers/chunks/10c13c36c42c5ac41d12.js +1 -0
  42. package/assets/esri/core/workers/chunks/{5235b9c21ac4156c2375.js → 10f4c5533f50c3693318.js} +1 -1
  43. package/assets/esri/core/workers/chunks/1201bb22a2bfd7d7ecba.js +1 -0
  44. package/assets/esri/core/workers/chunks/16f55c5d642a23c2547e.js +1 -0
  45. package/assets/esri/core/workers/chunks/{09e01fd1c199be0c8e03.js → 16ffbe484f6cd4736f79.js} +1 -1
  46. package/assets/esri/core/workers/chunks/{1bf967c68d0c795d3fb4.js → 19a4907fc93ae8b817e9.js} +1 -1
  47. package/assets/esri/core/workers/chunks/{f74c7cbe4bd12f73ae90.js → 19d7339f20f3008c4893.js} +1 -1
  48. package/assets/esri/core/workers/chunks/{9226205850e35b7fc610.js → 1a9f17781e0a3bc5106f.js} +1 -1
  49. package/assets/esri/core/workers/chunks/{bf7875fda48b15271a10.js → 1bef7097fe5e402539ea.js} +1 -1
  50. package/assets/esri/core/workers/chunks/1d7f633f158062eb3f64.js +1 -0
  51. package/assets/esri/core/workers/chunks/{fa377112ef3b78f6ed18.js → 1de1cc0ed0f169a58aff.js} +1 -1
  52. package/assets/esri/core/workers/chunks/{0549e2badf511e27aa54.js → 1e3b07cf0e608431a277.js} +1 -1
  53. package/assets/esri/core/workers/chunks/{8a87e1a89a0d8c6203a7.js → 20feca2fdd304b3e9664.js} +1 -1
  54. package/assets/esri/core/workers/chunks/{4c73c2f4331351e2a50c.js → 22ff018342860249b3eb.js} +1 -1
  55. package/assets/esri/core/workers/chunks/248df6fda489a9de5852.js +1 -0
  56. package/assets/esri/core/workers/chunks/2524e2385f61a6898411.js +1 -0
  57. package/assets/esri/core/workers/chunks/279b16727d4b515eca44.js +1 -0
  58. package/assets/esri/core/workers/chunks/2b10d6597af3eeec5396.js +1 -0
  59. package/assets/esri/core/workers/chunks/2bd4b536e329112591c4.js +1 -0
  60. package/assets/esri/core/workers/chunks/2c01477b69c38f691e19.js +1 -0
  61. package/assets/esri/core/workers/chunks/2e2349387a2b9903f13c.js +2 -0
  62. package/assets/esri/core/workers/chunks/{e594b6db9caee1f7b9fc.js → 32aa1529e84b839d051d.js} +1 -1
  63. package/assets/esri/core/workers/chunks/33041e50ea02d99480b0.js +1 -0
  64. package/assets/esri/core/workers/chunks/{5d7a5aa608ed6192b016.js → 349982635e921e838030.js} +1 -1
  65. package/assets/esri/core/workers/chunks/35d0a7597473d46866de.js +1 -0
  66. package/assets/esri/core/workers/chunks/374d726fdd0a9848cea5.js +1 -0
  67. package/assets/esri/core/workers/chunks/379f5ca5372d834af497.js +1 -0
  68. package/assets/esri/core/workers/chunks/37ae52c71bf9c70fbb92.js +1 -0
  69. package/assets/esri/core/workers/chunks/{05393b23ab24126d4236.js → 38bc5d09ae07f486d457.js} +1 -1
  70. package/assets/esri/core/workers/chunks/{d270b49c037085503016.js → 3a9435569ba460ff7e3d.js} +1 -1
  71. package/assets/esri/core/workers/chunks/3bafa01ca01a67d09432.js +1 -0
  72. package/assets/esri/core/workers/chunks/3c7901ea007c9615ba54.js +1 -0
  73. package/assets/esri/core/workers/chunks/4047208f9559e06d7102.js +1 -0
  74. package/assets/esri/core/workers/chunks/4049e9b86c8e27a7ff12.js +1 -0
  75. package/assets/esri/core/workers/chunks/411bbdecba340df11d95.js +2 -0
  76. package/assets/esri/core/workers/chunks/42b5533f94ebcdc4befe.js +1 -0
  77. package/assets/esri/core/workers/chunks/44ca13c874b5aa0ed5a0.js +1 -0
  78. package/assets/esri/core/workers/chunks/{e488e5c62cb375c87a39.js → 471027e4280bd51167b0.js} +1 -1
  79. package/assets/esri/core/workers/chunks/4717831effb1ac6d5f5d.js +1 -0
  80. package/assets/esri/core/workers/chunks/{a89dbef8155d7c4354da.js → 476535cfb06ced74d611.js} +2 -2
  81. package/assets/esri/core/workers/chunks/486f1277fe834c0fc4c1.js +1 -0
  82. package/assets/esri/core/workers/chunks/48ade66f1685a1aaffba.js +1 -0
  83. package/assets/esri/core/workers/chunks/4c088c26d5d546c95c90.js +1 -0
  84. package/assets/esri/core/workers/chunks/4d13c1a04788e5222678.js +1 -0
  85. package/assets/esri/core/workers/chunks/{a46ac0be9aabc4cfedc7.js → 4d7f6c92041d52cc8732.js} +1 -1
  86. package/assets/esri/core/workers/chunks/{595edbc1e9bba47d5676.js → 4f89da01b67b66a92c01.js} +1 -1
  87. package/assets/esri/core/workers/chunks/507bbcde2b39321b50a4.js +1 -0
  88. package/assets/esri/core/workers/chunks/{9b8e33985310f281f084.js → 56a5b65961e722f5cae9.js} +1 -1
  89. package/assets/esri/core/workers/chunks/5830deda121e4c95d199.js +1 -0
  90. package/assets/esri/core/workers/chunks/{19e93d4d37018e3ee849.js → 58a52adc42fbe5cd12c6.js} +1 -1
  91. package/assets/esri/core/workers/chunks/{b0e25ccb5a1e57a82628.js → 58b93f13316196d2e97d.js} +1 -1
  92. package/assets/esri/core/workers/chunks/58f98bd89b644cfdafae.js +1 -0
  93. package/assets/esri/core/workers/chunks/5a8658e4ef5163e8ab3b.js +1 -0
  94. package/assets/esri/core/workers/chunks/5aa3e1e9c701c7fef6e4.js +1 -0
  95. package/assets/esri/core/workers/chunks/5bb8d9d887dd4211afd2.js +1 -0
  96. package/assets/esri/core/workers/chunks/5d7625eb9997cd0dff09.js +1 -0
  97. package/assets/esri/core/workers/chunks/5e56a004b4407b8066eb.js +1 -0
  98. package/assets/esri/core/workers/chunks/5efc66be4576c6f67064.js +1 -0
  99. package/assets/esri/core/workers/chunks/60b1af54e7fc20fd9588.js +1 -0
  100. package/assets/esri/core/workers/chunks/6134a2c6983792787184.js +1 -0
  101. package/assets/esri/core/workers/chunks/6319413b89e23f671487.js +1 -0
  102. package/assets/esri/core/workers/chunks/{e50adcfb392adfb3f79c.js → 633454b27c34f9ec7940.js} +1 -1
  103. package/assets/esri/core/workers/chunks/63c43ebf46964c283b4d.js +1 -0
  104. package/assets/esri/core/workers/chunks/65d3638ded62c5606ae3.js +1 -0
  105. package/assets/esri/core/workers/chunks/{aa0ef4493a7e9bed159f.js → 662f4b39ec44c68e0733.js} +1 -1
  106. package/assets/esri/core/workers/chunks/680bef5e8237cc3bdd84.js +1 -0
  107. package/assets/esri/core/workers/chunks/6835f959952f70972fce.js +1 -0
  108. package/assets/esri/core/workers/chunks/{ddf284648a73b6993737.js → 68d823697c298122ee08.js} +1 -1
  109. package/assets/esri/core/workers/chunks/6aaefd61505027267c9b.js +1 -0
  110. package/assets/esri/core/workers/chunks/6ceb17eada151230abf7.js +1 -0
  111. package/assets/esri/core/workers/chunks/6df29716f75696434807.js +1 -0
  112. package/assets/esri/core/workers/chunks/6e804bd6bb4b0ee44fa9.js +1 -0
  113. package/assets/esri/core/workers/chunks/{ee77999df3785468b2b6.js → 6f6e8b7e6e2c856e4ed1.js} +1 -1
  114. package/assets/esri/core/workers/chunks/{8ea28a4b1afe8bb2d313.js → 7091bbdc36f1f03f14b3.js} +1 -1
  115. package/assets/esri/core/workers/chunks/7608de0d942b4c16b2f6.js +1 -0
  116. package/assets/esri/core/workers/chunks/{4b6f433022a6822706cb.js → 762817d30474c15142b4.js} +1 -1
  117. package/assets/esri/core/workers/chunks/762e9a15b2638475a2b4.js +1 -0
  118. package/assets/esri/core/workers/chunks/79088d5c9c2e6a780929.js +1 -0
  119. package/assets/esri/core/workers/chunks/7bb3411a86cdd736d555.js +1 -0
  120. package/assets/esri/core/workers/chunks/{f3d57c5b9dffd12e45b4.js → 7c3a89c12ea32a071ad4.js} +1 -1
  121. package/assets/esri/core/workers/chunks/7c67596c0792282afdfc.js +1 -0
  122. package/assets/esri/core/workers/chunks/7cef6e5f39137e74bbc3.js +1 -0
  123. package/assets/esri/core/workers/chunks/7efc51324cfc8e08c756.js +1 -0
  124. package/assets/esri/core/workers/chunks/{87e0ceb1a64ab08e679a.js → 7fd54fa2f91cdab44ab3.js} +1 -1
  125. package/assets/esri/core/workers/chunks/822a5020afbca21df7f7.js +1 -0
  126. package/assets/esri/core/workers/chunks/8599d2f2eb0fbb4a8bf5.js +1 -0
  127. package/assets/esri/core/workers/chunks/862f7090ba4a56c07093.js +1 -0
  128. package/assets/esri/core/workers/chunks/{97c7dfd29ad4c2966cb4.js → 88252899a5291ad29710.js} +1 -1
  129. package/assets/esri/core/workers/chunks/8837fbcc0d484659b79c.js +1 -0
  130. package/assets/esri/core/workers/chunks/8dcc7749de3391710864.js +1 -0
  131. package/assets/esri/core/workers/chunks/900dad076347443b3ad9.js +1 -0
  132. package/assets/esri/core/workers/chunks/{f8f7b86bbd62106bc3d4.js → 925f83be3c1eb4b5c6af.js} +1 -1
  133. package/assets/esri/core/workers/chunks/{a4a22149077c7780481c.js → 9378ce457b02717304e6.js} +1 -1
  134. package/assets/esri/core/workers/chunks/93a7cf23f73b23fc7802.js +1 -0
  135. package/assets/esri/core/workers/chunks/93c1d1e7c0935242071e.js +1 -0
  136. package/assets/esri/core/workers/chunks/{fddcb8be714ad18ad0c8.js → 970b33947bf61fccd461.js} +1 -1
  137. package/assets/esri/core/workers/chunks/97aaff86e06380a68df8.js +1 -0
  138. package/assets/esri/core/workers/chunks/9bc7df2b8ae0ed443d13.js +1 -0
  139. package/assets/esri/core/workers/chunks/9cc14a41d4a90f6d626e.js +1 -0
  140. package/assets/esri/core/workers/chunks/9e514a58b1165e273202.js +1 -0
  141. package/assets/esri/core/workers/chunks/9fe1db0762ab3326eab4.js +1 -0
  142. package/assets/esri/core/workers/chunks/{a5bb19d2b7d7db22222b.js → a10188c4d1904965898a.js} +1 -1
  143. package/assets/esri/core/workers/chunks/a2288d44cba34d947613.js +1 -0
  144. package/assets/esri/core/workers/chunks/a26916de4c105859621e.js +1 -0
  145. package/assets/esri/core/workers/chunks/a322afbb48898ce35851.js +1 -0
  146. package/assets/esri/core/workers/chunks/a34cadd486e7fcc79063.js +1 -0
  147. package/assets/esri/core/workers/chunks/{cefb70d633c220cbedf9.js → a4dc1a80ed6604d71722.js} +1 -1
  148. package/assets/esri/core/workers/chunks/{20f6e681ccd8bf884b77.js → a72983c3621810d4b1af.js} +1 -1
  149. package/assets/esri/core/workers/chunks/a8e9aa5461c71c88e2e5.js +1 -0
  150. package/assets/esri/core/workers/chunks/{32f11b4aeae1ef00e466.js → a8f70cece5ce2b095cdd.js} +1 -1
  151. package/assets/esri/core/workers/chunks/ab332bd411d6c7d4190c.js +1 -0
  152. package/assets/esri/core/workers/chunks/{777f2fdf1f4b9f243893.js → ab3a6ce7bc2a27b92469.js} +1 -1
  153. package/assets/esri/core/workers/chunks/{15f4f7e34e14e3cf52e6.js → abd2f8fae6b918fbdd6d.js} +1 -1
  154. package/assets/esri/core/workers/chunks/{b13d2da33ec07e9d41ff.js → b0da2b089a89d643df1e.js} +1 -1
  155. package/assets/esri/core/workers/chunks/{65f4ca7201e7267bfc81.js → b5fcf4165ac72654742d.js} +1 -1
  156. package/assets/esri/core/workers/chunks/b82b523b6837ed1f28d3.js +2 -0
  157. package/assets/esri/core/workers/chunks/{527b87fddf33bb5d519e.js → ba77a8892cb23c7a297d.js} +1 -1
  158. package/assets/esri/core/workers/chunks/bb8089929ded0613d8e7.js +1 -0
  159. package/assets/esri/core/workers/chunks/bc7ca87d3bfe8a4aec81.js +1 -0
  160. package/assets/esri/core/workers/chunks/bc9b96a539f28afcb8cb.js +1 -0
  161. package/assets/esri/core/workers/chunks/{2d07d5a9ec67c39ef10c.js → bd4f29d2681e5596591a.js} +1 -1
  162. package/assets/esri/core/workers/chunks/bf9eba555aebca2c132b.js +1 -0
  163. package/assets/esri/core/workers/chunks/{903c7bd079888f65fef1.js → c3fbd81bb5820e48038f.js} +1 -1
  164. package/assets/esri/core/workers/chunks/c9df18e9ff7367a004b6.js +1 -0
  165. package/assets/esri/core/workers/chunks/ca8061e0a6d78d646ebf.js +1 -0
  166. package/assets/esri/core/workers/chunks/cc73ac8404615dc392d2.js +1 -0
  167. package/assets/esri/core/workers/chunks/{e823c9ccb7bc348d8824.js → ccb26860518dce6d01c0.js} +1 -1
  168. package/assets/esri/core/workers/chunks/cded34b161fcc790e672.js +1 -0
  169. package/assets/esri/core/workers/chunks/{1bf5c0a4bc5a960a3fa2.js → d1d4979e9dcabe5e4619.js} +1 -1
  170. package/assets/esri/core/workers/chunks/d2865c604849ce79183f.js +1 -0
  171. package/assets/esri/core/workers/chunks/{9b81bd62a2c72f592db1.js → d826f6d32b4c5885276a.js} +1 -1
  172. package/assets/esri/core/workers/chunks/d92540d3ffc4af980dd8.js +1 -0
  173. package/assets/esri/core/workers/chunks/dc7853795439ae77ace9.js +1 -0
  174. package/assets/esri/core/workers/chunks/dd55737fba0a8fe68101.js +1684 -0
  175. package/assets/esri/core/workers/chunks/dd8d19eb6b8e955c8067.js +1 -0
  176. package/assets/esri/core/workers/chunks/dda269a088275c823b40.js +1 -0
  177. package/assets/esri/core/workers/chunks/{97e41500fc2d24a88938.js → de95dee8db92cf8f796f.js} +1 -1
  178. package/assets/esri/core/workers/chunks/e1c8767143f9f9d1f049.js +1 -0
  179. package/assets/esri/core/workers/chunks/e5b6fa57cc4028fbd401.js +1 -0
  180. package/assets/esri/core/workers/chunks/{2cf2f2842c19be84ab4d.js → e6cb31c727f799c1297c.js} +1 -1
  181. package/assets/esri/core/workers/chunks/e7fdad0c07beb3614b60.js +1 -0
  182. package/assets/esri/core/workers/chunks/e934ef66d130c212c05b.js +1 -0
  183. package/assets/esri/core/workers/chunks/{7c56446184abcd14678b.js → ea77654c8964cc39b9a6.js} +1 -1
  184. package/assets/esri/core/workers/chunks/eb167f9f6132a6348d2e.js +1 -0
  185. package/assets/esri/core/workers/chunks/ed5ac1efd3cba49be756.js +1 -0
  186. package/assets/esri/core/workers/chunks/ef24fd6c0322e5de9fdf.js +2 -0
  187. package/assets/esri/core/workers/chunks/f219ba010c480bb75684.js +1 -0
  188. package/assets/esri/core/workers/chunks/f331c24247d132589859.js +1 -0
  189. package/assets/esri/core/workers/chunks/fbf2d90240d36f8b423f.js +1 -0
  190. package/assets/esri/core/workers/chunks/{4ee99e654dad6f09abee.js → fc042b9936686785c39e.js} +1 -1
  191. package/assets/esri/core/workers/chunks/fc1658eae7b312502fab.js +1 -0
  192. package/assets/esri/core/workers/chunks/{1ab8307ba9981124f669.js → fd4d124c5bf810d9e352.js} +1 -1
  193. package/assets/esri/core/workers/chunks/ffa35ecc681ec1c4739a.js +1 -0
  194. package/assets/esri/core/workers/chunks/ffca0b2333e760b66d3a.js +1 -0
  195. package/chunks/{GlowBlur.glsl.js → BlurEmission.glsl.js} +1 -1
  196. package/chunks/EmissionComposite.glsl.js +3 -3
  197. package/chunks/Fog.glsl.js +5 -3
  198. package/chunks/RibbonLine.glsl.js +52 -52
  199. package/config.js +1 -1
  200. package/core/timeUtils.d.ts +62 -0
  201. package/core/timeUtils.js +1 -1
  202. package/editing/sharedTemplates/executor/builders/bufferLineToPolygon.js +1 -1
  203. package/editing/sharedTemplates/executor/builders/bufferPointToPolygon.js +1 -1
  204. package/editing/sharedTemplates/executor/builders/bufferPolygonToPolygon.js +1 -1
  205. package/editing/sharedTemplates/executor/builders/pointAtIntersectionVerticesOfLine.js +1 -1
  206. package/editing/sharedTemplates/executor/builders/support/offsetUtils.js +1 -1
  207. package/editing/sharedTemplates/executor/support/createPresetServiceEdit.js +1 -1
  208. package/geometry/Polygon.js +1 -1
  209. package/geometry/geometryEngine.d.ts +36 -36
  210. package/geometry/operators/affineTransformOperator.d.ts +30 -1
  211. package/geometry/operators/affineTransformOperator.js +1 -1
  212. package/geometry/operators/alphaShapeOperator.d.ts +49 -5
  213. package/geometry/operators/alphaShapeOperator.js +1 -1
  214. package/geometry/operators/areaOperator.d.ts +28 -4
  215. package/geometry/operators/areaOperator.js +1 -1
  216. package/geometry/operators/autoCompleteOperator.d.ts +25 -2
  217. package/geometry/operators/autoCompleteOperator.js +1 -1
  218. package/geometry/operators/boundaryOperator.d.ts +40 -2
  219. package/geometry/operators/boundaryOperator.js +1 -1
  220. package/geometry/operators/bufferOperator.d.ts +51 -6
  221. package/geometry/operators/bufferOperator.js +1 -1
  222. package/geometry/operators/centroidOperator.d.ts +23 -2
  223. package/geometry/operators/centroidOperator.js +1 -1
  224. package/geometry/operators/clipOperator.d.ts +34 -2
  225. package/geometry/operators/clipOperator.js +1 -1
  226. package/geometry/operators/containsOperator.d.ts +32 -2
  227. package/geometry/operators/containsOperator.js +1 -1
  228. package/geometry/operators/convexHullOperator.d.ts +47 -4
  229. package/geometry/operators/convexHullOperator.js +1 -1
  230. package/geometry/operators/crossesOperator.d.ts +35 -2
  231. package/geometry/operators/crossesOperator.js +1 -1
  232. package/geometry/operators/cutOperator.d.ts +23 -2
  233. package/geometry/operators/cutOperator.js +1 -1
  234. package/geometry/operators/densifyOperator.d.ts +61 -6
  235. package/geometry/operators/densifyOperator.js +1 -1
  236. package/geometry/operators/differenceOperator.d.ts +34 -2
  237. package/geometry/operators/differenceOperator.js +1 -1
  238. package/geometry/operators/disjointOperator.d.ts +33 -2
  239. package/geometry/operators/disjointOperator.js +1 -1
  240. package/geometry/operators/distanceOperator.d.ts +29 -4
  241. package/geometry/operators/distanceOperator.js +1 -1
  242. package/geometry/operators/equalsOperator.d.ts +32 -2
  243. package/geometry/operators/equalsOperator.js +1 -1
  244. package/geometry/operators/extendOperator.d.ts +29 -3
  245. package/geometry/operators/extendOperator.js +1 -1
  246. package/geometry/operators/generalizeOperator.d.ts +46 -5
  247. package/geometry/operators/generalizeOperator.js +1 -1
  248. package/geometry/operators/geodesicBufferOperator.d.ts +71 -7
  249. package/geometry/operators/geodesicBufferOperator.js +1 -1
  250. package/geometry/operators/geodesicProximityOperator.d.ts +106 -14
  251. package/geometry/operators/geodesicProximityOperator.js +1 -1
  252. package/geometry/operators/geodeticAreaOperator.d.ts +51 -5
  253. package/geometry/operators/geodeticAreaOperator.js +1 -1
  254. package/geometry/operators/geodeticDensifyOperator.d.ts +65 -6
  255. package/geometry/operators/geodeticDensifyOperator.js +1 -1
  256. package/geometry/operators/geodeticDistanceOperator.d.ts +52 -5
  257. package/geometry/operators/geodeticDistanceOperator.js +1 -1
  258. package/geometry/operators/geodeticLengthOperator.d.ts +51 -5
  259. package/geometry/operators/geodeticLengthOperator.js +1 -1
  260. package/geometry/operators/geodeticUtilsOperator.d.ts +79 -9
  261. package/geometry/operators/geodeticUtilsOperator.js +1 -1
  262. package/geometry/operators/graphicBufferOperator.d.ts +47 -4
  263. package/geometry/operators/graphicBufferOperator.js +1 -1
  264. package/geometry/operators/integrateOperator.d.ts +24 -2
  265. package/geometry/operators/integrateOperator.js +1 -1
  266. package/geometry/operators/intersectionOperator.d.ts +88 -3
  267. package/geometry/operators/intersectionOperator.js +1 -1
  268. package/geometry/operators/intersectsOperator.d.ts +32 -2
  269. package/geometry/operators/intersectsOperator.js +1 -1
  270. package/geometry/operators/isNearOperator.d.ts +31 -4
  271. package/geometry/operators/isNearOperator.js +1 -1
  272. package/geometry/operators/json/bufferOperator.js +1 -1
  273. package/geometry/operators/json/containsOperator.js +1 -1
  274. package/geometry/operators/json/convexHullOperator.js +1 -1
  275. package/geometry/operators/json/crossesOperator.js +1 -1
  276. package/geometry/operators/json/disjointOperator.js +1 -1
  277. package/geometry/operators/json/generalizeOperator.js +1 -1
  278. package/geometry/operators/json/geodesicBufferOperator.js +1 -1
  279. package/geometry/operators/json/graphicBufferOperator.js +1 -1
  280. package/geometry/operators/json/intersectionOperator.js +1 -1
  281. package/geometry/operators/json/intersectsOperator.js +1 -1
  282. package/geometry/operators/json/lengthOperator.js +1 -1
  283. package/geometry/operators/json/offsetOperator.js +1 -1
  284. package/geometry/operators/json/overlapsOperator.js +1 -1
  285. package/geometry/operators/json/projectOperator.js +1 -1
  286. package/geometry/operators/json/simplifyOperator.js +1 -1
  287. package/geometry/operators/json/simplifyOperatorOGC.js +1 -1
  288. package/geometry/operators/json/touchesOperator.js +1 -1
  289. package/geometry/operators/json/unionOperator.js +1 -1
  290. package/geometry/operators/json/withinOperator.js +1 -1
  291. package/geometry/operators/labelPointOperator.d.ts +32 -2
  292. package/geometry/operators/labelPointOperator.js +1 -1
  293. package/geometry/operators/lengthOperator.d.ts +28 -4
  294. package/geometry/operators/lengthOperator.js +1 -1
  295. package/geometry/operators/linesToPolygonsOperator.d.ts +23 -2
  296. package/geometry/operators/linesToPolygonsOperator.js +1 -1
  297. package/geometry/operators/locateBetweenOperator.d.ts +28 -2
  298. package/geometry/operators/locateBetweenOperator.js +1 -1
  299. package/geometry/operators/minimumBoundingCircleOperator.d.ts +38 -4
  300. package/geometry/operators/minimumBoundingCircleOperator.js +1 -1
  301. package/geometry/operators/multiPartToSinglePartOperator.d.ts +33 -4
  302. package/geometry/operators/multiPartToSinglePartOperator.js +1 -1
  303. package/geometry/operators/offsetOperator.d.ts +50 -5
  304. package/geometry/operators/offsetOperator.js +1 -1
  305. package/geometry/operators/overlapsOperator.d.ts +33 -2
  306. package/geometry/operators/overlapsOperator.js +1 -1
  307. package/geometry/operators/polygonOverlayOperator.d.ts +31 -5
  308. package/geometry/operators/polygonOverlayOperator.js +1 -1
  309. package/geometry/operators/polygonSlicerOperator.d.ts +72 -10
  310. package/geometry/operators/polygonSlicerOperator.js +1 -1
  311. package/geometry/operators/projectOperator.d.ts +63 -3
  312. package/geometry/operators/projectOperator.js +1 -1
  313. package/geometry/operators/proximityOperator.d.ts +71 -9
  314. package/geometry/operators/proximityOperator.js +1 -1
  315. package/geometry/operators/relateOperator.d.ts +41 -2
  316. package/geometry/operators/relateOperator.js +1 -1
  317. package/geometry/operators/reshapeOperator.d.ts +28 -2
  318. package/geometry/operators/reshapeOperator.js +1 -1
  319. package/geometry/operators/shapePreservingProjectOperator.d.ts +64 -6
  320. package/geometry/operators/shapePreservingProjectOperator.js +1 -1
  321. package/geometry/operators/simplifyOGCOperator.d.ts +72 -6
  322. package/geometry/operators/simplifyOGCOperator.js +1 -1
  323. package/geometry/operators/simplifyOperator.d.ts +72 -4
  324. package/geometry/operators/simplifyOperator.js +1 -1
  325. package/geometry/operators/singlePartToMultiPartOperator.js +1 -1
  326. package/geometry/operators/support/Transformation.d.ts +17 -11
  327. package/geometry/operators/support/jsonConverter.js +1 -1
  328. package/geometry/operators/symmetricDifferenceOperator.d.ts +33 -2
  329. package/geometry/operators/symmetricDifferenceOperator.js +1 -1
  330. package/geometry/operators/touchesOperator.d.ts +32 -2
  331. package/geometry/operators/touchesOperator.js +1 -1
  332. package/geometry/operators/types.d.ts +4 -1
  333. package/geometry/operators/unionOperator.d.ts +33 -2
  334. package/geometry/operators/unionOperator.js +1 -1
  335. package/geometry/operators/withinOperator.d.ts +32 -2
  336. package/geometry/operators/withinOperator.js +1 -1
  337. package/geometry/projectionUtils.js +1 -1
  338. package/geometry/support/geometryUtils.js +1 -1
  339. package/geometry/support/normalizeUtils.d.ts +5 -3
  340. package/geometry/support/normalizeUtils.js +1 -1
  341. package/interfaces.d.ts +202 -202
  342. package/kernel.js +1 -1
  343. package/layers/AnnotationFeatureLayer.d.ts +0 -1
  344. package/layers/graphics/data/QueryEngineResult.js +1 -1
  345. package/layers/graphics/data/queryUtils.js +1 -1
  346. package/layers/graphics/data/spatialQuerySupport.js +1 -1
  347. package/layers/graphics/sources/support/sourceUtils.js +1 -1
  348. package/layers/mixins/ArcGISImageService.js +1 -1
  349. package/layers/mixins/TiledImagery.js +1 -1
  350. package/layers/orientedImagery/transformations/updateElevationUtils.js +1 -1
  351. package/layers/raster/datasets/FunctionRaster.js +1 -1
  352. package/layers/raster/datasets/pixelReader.js +1 -1
  353. package/layers/raster/functions/clipUtils.js +1 -1
  354. package/layers/raster/functions/rasterProjectionHelper.js +1 -1
  355. package/layers/support/Sublayer.js +1 -1
  356. package/layers/video/videoUtils.js +1 -1
  357. package/package.json +4 -4
  358. package/popup/FeatureContentCollection.d.ts +3 -3
  359. package/popup/FeatureContentCollection.js +1 -1
  360. package/rest/imageService/fetchRasterInfo.js +1 -1
  361. package/smartMapping/support/adapters/InMemoryLayerAdapter.js +1 -1
  362. package/support/revision.js +1 -1
  363. package/support/tests/serviceMockDependencies.js +1 -1
  364. package/support/tests/setupServiceMocksMesh.js +1 -1
  365. package/symbols/cim/CIMEffects.js +1 -1
  366. package/symbols/cim/effects/EffectBuffer.js +1 -1
  367. package/symbols/cim/effects/EffectControlMeasureLine.js +1 -1
  368. package/symbols/cim/effects/EffectDonut.js +1 -1
  369. package/symbols/cim/effects/EffectEnclosingPolygon.js +1 -1
  370. package/symbols/cim/effects/EffectOffset.js +1 -1
  371. package/symbols/cim/effects/EffectTaperedPolygon.js +1 -1
  372. package/symbols/cim/types.d.ts +2 -1
  373. package/views/2d/analysis/AreaMeasurement/AreaMeasurementController.js +1 -1
  374. package/views/2d/analysis/DistanceMeasurement/DistanceMeasurementController.js +1 -1
  375. package/views/2d/engine/webgl/Overlay.js +1 -1
  376. package/views/2d/engine/webgl/VideoScreenRenderer.js +1 -1
  377. package/views/2d/engine/webgl/shaderGraph/techniques/labels/LabelMeshWriter.js +1 -1
  378. package/views/2d/layers/TileLayerView2D.js +1 -1
  379. package/views/2d/layers/support/RouteLayerWaypointVisualization.js +1 -1
  380. package/views/3d/analysis/ShadowCastAnalysisView3D.js +1 -1
  381. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementController.js +1 -1
  382. package/views/3d/layers/ElevationLayerView3D.js +1 -1
  383. package/views/3d/layers/ElevationLayerView3DModifications.js +1 -1
  384. package/views/3d/layers/I3SMeshView3D.js +1 -1
  385. package/views/3d/layers/graphics/Deconflictor.js +1 -1
  386. package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
  387. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  388. package/views/3d/layers/i3s/I3SMeshViewFilter.js +1 -1
  389. package/views/3d/state/ViewStateManager.js +1 -1
  390. package/views/3d/support/buffer/InterleavedLayout.js +1 -1
  391. package/views/3d/webgl/RenderCamera.js +1 -1
  392. package/views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js +1 -5
  393. package/views/3d/webgl-engine/effects/fog/Fog.glsl.js +1 -1
  394. package/views/3d/webgl-engine/effects/fog/Fog.js +1 -1
  395. package/views/3d/webgl-engine/effects/fog/FogTechnique.js +1 -1
  396. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
  397. package/views/3d/webgl-engine/effects/glow/{GlowBlur.glsl.js → BlurEmission.glsl.js} +1 -1
  398. package/views/3d/webgl-engine/effects/glow/BlurEmission.js +2 -0
  399. package/views/3d/webgl-engine/effects/glow/BlurEmissionTechnique.js +2 -0
  400. package/views/3d/webgl-engine/effects/glow/applyEmissiveGlow.glsl.js +37 -0
  401. package/views/3d/webgl-engine/lib/BufferGeometry.js +2 -0
  402. package/views/3d/webgl-engine/lib/EmissionComposite.glsl.js +1 -1
  403. package/views/3d/webgl-engine/lib/EmissionComposite.js +1 -1
  404. package/views/3d/webgl-engine/lib/EmissionCompositeTechnique.js +1 -1
  405. package/views/3d/webgl-engine/lib/Geometry.js +1 -1
  406. package/views/3d/webgl-engine/lib/GeometryBaseInstance.js +1 -1
  407. package/views/3d/webgl-engine/lib/RenderGeometry.js +1 -1
  408. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  409. package/views/3d/webgl-engine/lib/rendererUtils.js +1 -1
  410. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  411. package/views/3d/webgl-engine/materials/renderers/Instance.js +1 -1
  412. package/views/3d/webgl-engine/materials/renderers/MergedBuffer.js +1 -1
  413. package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
  414. package/views/3d/webgl-engine/materials/renderers/VaoWriter.js +1 -1
  415. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  416. package/views/3d/webgl-engine/shaders/EmissiveTechniqueConfiguration.js +1 -1
  417. package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
  418. package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
  419. package/views/3d/webgl-engine/shaders/floatBlendScale.glsl.js +1 -1
  420. package/views/MapView.d.ts +3 -3
  421. package/views/SceneView.d.ts +1 -0
  422. package/views/SceneView.js +1 -1
  423. package/views/VideoView.js +1 -1
  424. package/views/View2D.d.ts +22 -22
  425. package/views/analysis/ElevationProfile/elevationProfileGeometryUtils.js +1 -1
  426. package/views/draw/DrawTool.js +1 -1
  427. package/views/draw/support/createUtils.js +1 -1
  428. package/views/layers/SceneLayerView.js +1 -1
  429. package/views/support/GeometryWorker.js +1 -1
  430. package/views/support/imageReprojection.js +1 -1
  431. package/views/video/VideoOperationalDataView.js +1 -1
  432. package/widgets/AreaMeasurement2D/AreaMeasurement2DTool.js +1 -1
  433. package/widgets/BatchAttributeForm/expressions/ExpressionsModel.js +1 -1
  434. package/widgets/BatchAttributeForm/expressions/expressionUtils.js +1 -1
  435. package/widgets/BatchAttributeForm/inputs/support/DynamicChoiceController.js +1 -1
  436. package/widgets/BatchAttributeForm/templates/FieldElementTemplate.js +1 -1
  437. package/widgets/BatchAttributeForm/templates/support/createBatchFormTemplate.js +1 -1
  438. package/widgets/DistanceMeasurement2D/DistanceMeasurement2DTool.js +1 -1
  439. package/widgets/Editor/support/mergeFeaturesUtils.js +1 -1
  440. package/widgets/Editor/support/splitFeatureUtils.js +1 -1
  441. package/widgets/ElevationProfile/support/ElevationProfileView.js +1 -1
  442. package/widgets/ElevationProfile/support/InputRepresentation2D.js +1 -1
  443. package/widgets/ElevationProfile/support/InputRepresentation3D.js +1 -1
  444. package/widgets/ElevationProfile/support/geometryUtils.js +1 -1
  445. package/widgets/FeatureForm/FeatureFormUtilityNetworkAssociations/UtilityNetworkAssociationItemList.js +1 -1
  446. package/widgets/Features/FeaturesViewModel.js +1 -1
  447. package/widgets/Features.js +1 -1
  448. package/widgets/FloorFilter/FloorFilterViewModel.js +1 -1
  449. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  450. package/widgets/OrientedImageryViewer/adapters/view/MapViewAdapter.js +1 -1
  451. package/widgets/OrientedImageryViewer/components/ImageViewerViewModel.js +1 -1
  452. package/widgets/OrientedImageryViewer/components/OrientedImageryVideoViewModel.js +1 -1
  453. package/widgets/OrientedImageryViewer/imageMeasurementUtils.js +1 -1
  454. package/widgets/OrientedImageryViewer/support/panConstraint.js +1 -1
  455. package/widgets/OrientedImageryViewer/support/superimposeUtils.js +1 -1
  456. package/widgets/OrientedImageryViewer/videoViewerUtils.js +1 -1
  457. package/widgets/Print.js +1 -1
  458. package/widgets/Search/SearchViewModel.js +1 -1
  459. package/widgets/Search/support/layerSearchUtils.js +1 -1
  460. package/widgets/Search/support/locatorUtils.js +1 -1
  461. package/widgets/UtilityNetworkTrace/support/GeometryHandler.js +1 -1
  462. package/widgets/support/FilterBuilder/FilterBuilderViewModel.d.ts +104 -0
  463. package/widgets/support/FilterBuilder/FilterBuilderViewModel.js +1 -1
  464. package/widgets/support/FilterBuilder.js +1 -1
  465. package/widgets/support/FilterCondition/FilterConditionViewModel.d.ts +145 -0
  466. package/widgets/support/FilterCondition/FilterConditionViewModel.js +1 -1
  467. package/widgets/support/FilterCondition/types.d.ts +20 -0
  468. package/widgets/support/ItemList.js +1 -1
  469. package/widgets/support/SelectionList/FeatureItem.d.ts +17 -68
  470. package/widgets/support/SelectionList/FeatureItem.js +1 -1
  471. package/widgets/support/SelectionList/GroupLayerItem.d.ts +12 -50
  472. package/widgets/support/SelectionList/GroupLayerItem.js +1 -1
  473. package/widgets/support/SelectionList/ItemBase.d.ts +14 -44
  474. package/widgets/support/SelectionList/ItemBase.js +1 -1
  475. package/widgets/support/SelectionList/LayerItem.d.ts +10 -56
  476. package/widgets/support/SelectionList/LayerItem.js +1 -1
  477. package/widgets/support/SelectionList/types.d.ts +4 -4
  478. package/widgets/support/Selector2D/selectorUtils.js +1 -1
  479. package/assets/esri/core/workers/chunks/0336f4f8498a22347720.js +0 -1
  480. package/assets/esri/core/workers/chunks/090ea7a131f8f60203ed.js +0 -1
  481. package/assets/esri/core/workers/chunks/0b4a7209b99227a842ad.js +0 -1
  482. package/assets/esri/core/workers/chunks/0be98adfef79fc5036f0.js +0 -1
  483. package/assets/esri/core/workers/chunks/0d2e2d90a4e4a28e2c0c.js +0 -1
  484. package/assets/esri/core/workers/chunks/0d7763d39a5a8586a0ae.js +0 -1
  485. package/assets/esri/core/workers/chunks/0d95f72e1c07ab867d21.js +0 -1
  486. package/assets/esri/core/workers/chunks/0dbbac7a2378728571a7.js +0 -1
  487. package/assets/esri/core/workers/chunks/104d74bc36c28c519396.js +0 -1
  488. package/assets/esri/core/workers/chunks/1554feab934e8e1bcd28.js +0 -1
  489. package/assets/esri/core/workers/chunks/1670e9867efde4d7a6d6.js +0 -1
  490. package/assets/esri/core/workers/chunks/188c6ff5f4664827c254.js +0 -2
  491. package/assets/esri/core/workers/chunks/19ab024f6f732fd6c69b.js +0 -1
  492. package/assets/esri/core/workers/chunks/1e192ac0533a5c0b5a7a.js +0 -1
  493. package/assets/esri/core/workers/chunks/1fe077f57a087c0e9119.js +0 -1
  494. package/assets/esri/core/workers/chunks/20f7b5fe64a217cb3d3d.js +0 -1
  495. package/assets/esri/core/workers/chunks/212222b64039d436b9a6.js +0 -1
  496. package/assets/esri/core/workers/chunks/22c94f9a69b2157f8dbd.js +0 -1
  497. package/assets/esri/core/workers/chunks/24944b625ed8dcd904f0.js +0 -1
  498. package/assets/esri/core/workers/chunks/24c44541046576fee7e0.js +0 -2
  499. package/assets/esri/core/workers/chunks/2754ba5cc094028a7a3c.js +0 -1
  500. package/assets/esri/core/workers/chunks/2bc3e7f394386fa75447.js +0 -1
  501. package/assets/esri/core/workers/chunks/2ec44ebc48beeba11201.js +0 -1
  502. package/assets/esri/core/workers/chunks/30af0f7c4cfa541c9efd.js +0 -1
  503. package/assets/esri/core/workers/chunks/30d816bdeea00f6fa1ca.js +0 -1
  504. package/assets/esri/core/workers/chunks/349b0c7febc46267441d.js +0 -1684
  505. package/assets/esri/core/workers/chunks/35d46c2f658a8e92d913.js +0 -1
  506. package/assets/esri/core/workers/chunks/3869dca884d7ca6488f5.js +0 -1
  507. package/assets/esri/core/workers/chunks/3a65693964e3976d8035.js +0 -1
  508. package/assets/esri/core/workers/chunks/3f5234120d3a14186c1c.js +0 -1
  509. package/assets/esri/core/workers/chunks/45c1c90ac6c14657f3ff.js +0 -1
  510. package/assets/esri/core/workers/chunks/48726010778d6004e347.js +0 -2
  511. package/assets/esri/core/workers/chunks/4a40b894ec89b0a4f9bf.js +0 -1
  512. package/assets/esri/core/workers/chunks/5165d367328ac7badf47.js +0 -1
  513. package/assets/esri/core/workers/chunks/545bec045167c433af8f.js +0 -1
  514. package/assets/esri/core/workers/chunks/5782c0362a1799ceef41.js +0 -1
  515. package/assets/esri/core/workers/chunks/59598023c0aea62a6297.js +0 -1
  516. package/assets/esri/core/workers/chunks/59f0a2bd40b033ce77e4.js +0 -1
  517. package/assets/esri/core/workers/chunks/5aa23b0f4521ba9a07ad.js +0 -1
  518. package/assets/esri/core/workers/chunks/5af16937904c06fb06f6.js +0 -1
  519. package/assets/esri/core/workers/chunks/5bf2ce280ea35ea4c96b.js +0 -1
  520. package/assets/esri/core/workers/chunks/607acd9f615f87e14075.js +0 -1
  521. package/assets/esri/core/workers/chunks/62ee6c247f783acabb74.js +0 -1
  522. package/assets/esri/core/workers/chunks/6564f17c4700dc8d9c0e.js +0 -2
  523. package/assets/esri/core/workers/chunks/6a2d890640b2cd6c5ccb.js +0 -1
  524. package/assets/esri/core/workers/chunks/6b84982dfaf084a61b93.js +0 -1
  525. package/assets/esri/core/workers/chunks/6b9dbf43c0659e55c539.js +0 -1
  526. package/assets/esri/core/workers/chunks/6cbc30b31f0bb39c73ca.js +0 -1
  527. package/assets/esri/core/workers/chunks/75b90fb05e4a2d32b7bb.js +0 -1
  528. package/assets/esri/core/workers/chunks/75bddfe2be64379db8fd.js +0 -1
  529. package/assets/esri/core/workers/chunks/76e7d3cde2da4bdd7820.js +0 -1
  530. package/assets/esri/core/workers/chunks/7cf903db44f3647c8fd4.js +0 -1
  531. package/assets/esri/core/workers/chunks/7e41cee4a0ae75e1490d.js +0 -1
  532. package/assets/esri/core/workers/chunks/7eae9053065d3d38e54e.js +0 -1
  533. package/assets/esri/core/workers/chunks/87e9f7e85221bc7e6709.js +0 -1
  534. package/assets/esri/core/workers/chunks/88f03352a4dc6184ea1f.js +0 -1
  535. package/assets/esri/core/workers/chunks/909ee7d2a0eec773037a.js +0 -1
  536. package/assets/esri/core/workers/chunks/91ac9328afff8a51bd96.js +0 -1
  537. package/assets/esri/core/workers/chunks/91de343844ac578e7c93.js +0 -1
  538. package/assets/esri/core/workers/chunks/9246e2468528650bdc7c.js +0 -1
  539. package/assets/esri/core/workers/chunks/94ddfe165ac25aef8229.js +0 -1
  540. package/assets/esri/core/workers/chunks/9509bef285929c52c244.js +0 -1
  541. package/assets/esri/core/workers/chunks/95a3f09751bff63f4fab.js +0 -1
  542. package/assets/esri/core/workers/chunks/98d614d6fc9de8ebaf94.js +0 -1
  543. package/assets/esri/core/workers/chunks/99966339b061eb9945b8.js +0 -1
  544. package/assets/esri/core/workers/chunks/99f627938dbf0152fc02.js +0 -1
  545. package/assets/esri/core/workers/chunks/9e2b3754a76e0dd4a94a.js +0 -1
  546. package/assets/esri/core/workers/chunks/a0565137027c83108953.js +0 -1
  547. package/assets/esri/core/workers/chunks/a0eb882a5a81d25b9153.js +0 -1
  548. package/assets/esri/core/workers/chunks/a785e827f0215a73103d.js +0 -1
  549. package/assets/esri/core/workers/chunks/abe7670db06b27c0c8c8.js +0 -1
  550. package/assets/esri/core/workers/chunks/b19cff0e43fab2632660.js +0 -1
  551. package/assets/esri/core/workers/chunks/b6af90be328ebda26b8d.js +0 -1
  552. package/assets/esri/core/workers/chunks/bd7d87d175ba933ab2ce.js +0 -1
  553. package/assets/esri/core/workers/chunks/bdfffa5f88b559a4b42d.js +0 -1
  554. package/assets/esri/core/workers/chunks/c30b6bbabd05e4976fba.js +0 -1
  555. package/assets/esri/core/workers/chunks/c352696478b48a2090d5.js +0 -1
  556. package/assets/esri/core/workers/chunks/c35553d07ad169910742.js +0 -1
  557. package/assets/esri/core/workers/chunks/c4fef90cf08bbe4f0bb5.js +0 -1
  558. package/assets/esri/core/workers/chunks/c5c2fed38e0ccf84f1fa.js +0 -1
  559. package/assets/esri/core/workers/chunks/c88bfa51d2a8a024fc24.js +0 -1
  560. package/assets/esri/core/workers/chunks/c91042f8bf886056a29c.js +0 -1
  561. package/assets/esri/core/workers/chunks/ca36d85a47179d95f2fc.js +0 -1
  562. package/assets/esri/core/workers/chunks/cd02a6078443b8f63927.js +0 -1
  563. package/assets/esri/core/workers/chunks/d0cf9ff48f051adbd455.js +0 -1
  564. package/assets/esri/core/workers/chunks/d1304d414b1fa725168a.js +0 -1
  565. package/assets/esri/core/workers/chunks/d24125a791247019e2ca.js +0 -1
  566. package/assets/esri/core/workers/chunks/d26be8313526ecea9c68.js +0 -1
  567. package/assets/esri/core/workers/chunks/d2cb3d5ef0a9285afb78.js +0 -1
  568. package/assets/esri/core/workers/chunks/d44338bf5edafa3ca926.js +0 -1
  569. package/assets/esri/core/workers/chunks/d4b0012ae1d3b8a9ba01.js +0 -1
  570. package/assets/esri/core/workers/chunks/d58d6b55b2749a535eb3.js +0 -1
  571. package/assets/esri/core/workers/chunks/d7d5275d8b3c9430de1f.js +0 -1
  572. package/assets/esri/core/workers/chunks/da8a314800944706511b.js +0 -1
  573. package/assets/esri/core/workers/chunks/e018cbd97e6e0e4ca5c4.js +0 -1
  574. package/assets/esri/core/workers/chunks/e39bccc000c768120a32.js +0 -1
  575. package/assets/esri/core/workers/chunks/e4380706b629729f2212.js +0 -1
  576. package/assets/esri/core/workers/chunks/e90076ac1cf88a83a7f9.js +0 -1
  577. package/assets/esri/core/workers/chunks/ea1877ce00da3b585a30.js +0 -1
  578. package/assets/esri/core/workers/chunks/ea91c57a0b31f3f65ee5.js +0 -1
  579. package/assets/esri/core/workers/chunks/ec77222776f755dc372c.js +0 -1
  580. package/assets/esri/core/workers/chunks/ef851a2cff76fd211c07.js +0 -1
  581. package/assets/esri/core/workers/chunks/f3e53be08ab9dbdf17ae.js +0 -1
  582. package/assets/esri/core/workers/chunks/f53010adb70463b75bb9.js +0 -1
  583. package/assets/esri/core/workers/chunks/f5a058a0ce006bce2a2a.js +0 -1
  584. package/assets/esri/core/workers/chunks/f5f5b54cab722abe88e0.js +0 -1
  585. package/assets/esri/core/workers/chunks/f60ed579981913d44675.js +0 -1
  586. package/assets/esri/core/workers/chunks/f6f56f3e011dcef90bbb.js +0 -1
  587. package/assets/esri/core/workers/chunks/f83c3597e9332bd991eb.js +0 -1
  588. package/assets/esri/core/workers/chunks/f9a4387f850d85c44ca5.js +0 -1
  589. package/assets/esri/core/workers/chunks/fbc7576ed12964059da6.js +0 -1
  590. package/assets/esri/core/workers/chunks/fdd0e6d9927d3c43b0d3.js +0 -1
  591. package/assets/esri/core/workers/chunks/ff83d0337ac489ab08de.js +0 -2
  592. package/chunks/GlowComposite.glsl.js +0 -2
  593. package/geometry/operators/importUtils.js +0 -2
  594. package/views/3d/webgl-engine/effects/glow/Glow.js +0 -2
  595. package/views/3d/webgl-engine/effects/glow/GlowBlurTechnique.js +0 -2
  596. package/views/3d/webgl-engine/effects/glow/GlowComposite.glsl.js +0 -2
  597. package/views/3d/webgl-engine/effects/glow/GlowCompositeTechnique.js +0 -2
  598. package/views/3d/webgl-engine/effects/glow/blurEmission.glsl.js +0 -38
  599. /package/assets/esri/core/workers/chunks/{188c6ff5f4664827c254.js.LICENSE.txt → 1082bb0858585bd4fa21.js.LICENSE.txt} +0 -0
  600. /package/assets/esri/core/workers/chunks/{24c44541046576fee7e0.js.LICENSE.txt → 2e2349387a2b9903f13c.js.LICENSE.txt} +0 -0
  601. /package/assets/esri/core/workers/chunks/{ff83d0337ac489ab08de.js.LICENSE.txt → 411bbdecba340df11d95.js.LICENSE.txt} +0 -0
  602. /package/assets/esri/core/workers/chunks/{a89dbef8155d7c4354da.js.LICENSE.txt → 476535cfb06ced74d611.js.LICENSE.txt} +0 -0
  603. /package/assets/esri/core/workers/chunks/{6564f17c4700dc8d9c0e.js.LICENSE.txt → b82b523b6837ed1f28d3.js.LICENSE.txt} +0 -0
  604. /package/assets/esri/core/workers/chunks/{48726010778d6004e347.js.LICENSE.txt → ef24fd6c0322e5de9fdf.js.LICENSE.txt} +0 -0
package/kernel.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import has from"./core/has.js";import{addQueryParameter as o}from"./core/urlUtils.js";export{buildDate,revision}from"./support/revision.js";Symbol.dispose??=Symbol("Symbol.dispose"),Symbol.asyncDispose??=Symbol("Symbol.asyncDispose");const e="5.2";let r,s=e;function i(o){r=o}function t(e){const s=r?.findCredential(e);return s?.token?o(e,"token",s.token):e}s="5.2.0-next.94",has("host-webworker")||globalThis.$arcgis||Object.defineProperty(globalThis,"$arcgis",{configurable:!1,enumerable:!0,writable:!1,value:{}}),has("host-webworker");export{t as addTokenParameter,s as fullVersion,r as id,i as setId,e as version};
2
+ import has from"./core/has.js";import{addQueryParameter as o}from"./core/urlUtils.js";export{buildDate,revision}from"./support/revision.js";Symbol.dispose??=Symbol("Symbol.dispose"),Symbol.asyncDispose??=Symbol("Symbol.asyncDispose");const e="5.2";let r,s=e;function i(o){r=o}function t(e){const s=r?.findCredential(e);return s?.token?o(e,"token",s.token):e}s="5.2.0-next.96",has("host-webworker")||globalThis.$arcgis||Object.defineProperty(globalThis,"$arcgis",{configurable:!1,enumerable:!0,writable:!1,value:{}}),has("host-webworker");export{t as addTokenParameter,s as fullVersion,r as id,i as setId,e as version};
@@ -111,7 +111,6 @@ export interface AnnotationFeatureLayerEvents extends EditBusLayerEvents, Refres
111
111
  * > - The AnnotationFeatureLayer requires `ZOrder`, `AnnotationClassID`, `Element`, `SymbolID`, `Status` fields
112
112
  * > for proper functionality. If a required field is not present, the layer will fail. See [Annotation Fields](https://doc.esri.com/en/arcgis-pro/latest/help/data/annotation/managing-annotation-feature-class-properties.html)
113
113
  * > for more information on required fields.
114
- * > - The AnnotationFeatureLayer does not support annotation features with `CIMTextGraphic`. Annotation features with `CIMTextGraphic` will not be displayed in the view.
115
114
  * >
116
115
  * > The following features are not currently supported in this release. Future releases will see increased functionality and support for additional features.
117
116
  * > - Editing
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{insertSortedStableTopN as e}from"../../../core/arrayUtils.js";import{clone as t}from"../../../core/lang.js";import s from"../../../geometry/SpatialReference.js";import{importLazily as i}from"../../../geometry/operators/importUtils.js";import{polygonCentroid as a,extentCentroid as r}from"../../../geometry/support/centroid.js";import{getPolygonExtent as n,getGeometryExtent as o,expandExtent as l}from"../../../geometry/support/extentUtils.js";import{toQuantizationTransform as u}from"../../../geometry/support/quantizationUtils.js";import{isValid as c,equals as m}from"../../../geometry/support/spatialReferenceUtils.js";import{closestPointOnCurve as d}from"../../../geometry/support/curves/closestPointOnCurve.js";import{getEndpoint as f,isCoordinate as p,cloneCurve as h}from"../../../geometry/support/curves/curveUtils.js";import g from"./AttributesBuilder.js";import{cleanFromGeometryEngine as y,getGeometry as x,transformCentroid as I}from"./geometryUtils.js";import{project as T}from"./projectionSupport.js";import{getDateInNumber as F}from"./queryUtils.js";import{SnappingCandidateEdge as _,SnappingCandidateVertex as v}from"./SnappingCandidate.js";import{isDateField as V,isDateOnlyField as S,isTimestampOffsetField as b,isStringField as R,isTimeOnlyField as z}from"../../support/fieldUtils.js";import B from"../../../rest/support/AutoIntervalBinParameters.js";import M from"../../../rest/support/DateBinParameters.js";import{unitsDict as A}from"../../../rest/support/DateBinUtils.js";import w from"../../../rest/support/FixedBoundariesBinParameters.js";import N from"../../../rest/support/FixedIntervalBinParameters.js";import{calculateStringStatistics as P,calculateStatistics as D,processSummaryStatisticsResult as O,calculateUniqueValuesCount as j,createUVResult as q,calculateClassBreaks as C,resolveCBResult as G,calculateHistogram as Z,calculatePercentile as E,binIndex as U,getBinParams as H,isNullCountSupported as k,getAttributeComparator as J}from"../../../statistics/utils.js";import{utc as Q}from"../../../time/constants.js";import{DateTime as Y}from"luxon";const X="bin",L=i(()=>import("../../../geometry/operators/json/convexHullOperator.js"));class W{constructor(e,t,s){this.items=e,this.query=t,this.geometryType=s.geometryType,this.hasZ=!!t.returnZ&&s.hasZ,this.hasM=!!t.returnM&&s.hasM,this.fieldsIndex=s.fieldsIndex,this.spatialReference=s.spatialReference,this.featureAdapter=s.featureAdapter,this.featureIdInfo=s.featureIdInfo}get size(){return this.items.length}createQueryResponseForCount(){const e=new g(this.query,this.featureAdapter,this.fieldsIndex);if(!this.query.outStatistics)return e.countDistinctValues(this.items);const{groupByFieldsForStatistics:t,having:s,outStatistics:i}=this.query,a=t?.length;if(!!!a)return 1;const r=new Map,n=new Map,o=new Set;for(const l of i){const{statisticType:i}=l,a="exceedslimit"!==i?l.onStatisticField:void 0;if(!n.has(a)){const s=[];for(const i of t){const t=this._getAttributeValues(e,i,this.items,r);s.push(t)}n.set(a,this._calculateUniqueValues(s,this.items,e.returnDistinctValues))}const u=n.get(a);for(const t in u){const{data:i,items:a}=u[t],r=i.join(",");s&&!e.validateItems(a,s)||o.add(r)}}return o.size}async createQueryResponse(){let e;if(this.query.outStatistics){e=this.query.outStatistics.some(e=>"exceedslimit"===e.statisticType)?this._createExceedsLimitQueryResponse():await this._createStatisticsQueryResponse(this.query,this.items)}else e=this._createFeatureQueryResponse(this.query);if(this.query.returnQueryGeometry){const t=this.query.geometry;c(this.query.outSR)&&!m(t.spatialReference,this.query.outSR)?e.queryGeometry=y({spatialReference:this.query.outSR,...T(t,t.spatialReference,this.query.outSR)}):e.queryGeometry=y({spatialReference:this.query.outSR,...t})}return e}createSnappingResponse(e,t,s){const i=this.featureAdapter,{point:a}=e,r="number"==typeof e.distance?e.distance:e.distance.x,n="number"==typeof e.distance?e.distance:e.distance.y;function o(e,t){const s=(e-a.x)/r,i=(t-a.y)/n;return s*s+i*i}const l={candidates:[]},u="esriGeometryPolygon"===this.geometryType,c="esriGeometryPolyline"===this.geometryType||"esriGeometryPoint"===this.geometryType,m=this._getPointCreator(t,this.spatialReference,s),g=new ee(null,0),y=new ee(null,0),x={x:0,y:0,z:0};for(const d of this.items){const e=i.getObjectId(d),t=i.getGeometryWithCurves?.(d);if(null!=t){T(t,e);continue}const s=i.getGeometry(d);null==s||I(s,e)}return l.candidates.sort((e,t)=>e.distance-t.distance),l;function I(t,s){const{coords:i,stride:r}=t,n=t.isPoint?te:t.lengths;if(g.coords=i,y.coords=i,e.returnEdge){let e=0;for(let t=0;t<n.length;t++){const i=n[t],c=e;for(let t=0;t<i;t++,e+=r){if(!u&&t===i-1)continue;if(g.coordsIndex=e,y.coordsIndex=t===i-1?c:e+r,!$(x,a,g,y))continue;const n=o(x.x,x.y);n<=1&&l.candidates.push(new _(s,m(x),Math.sqrt(n),m(g),m(y)))}}}if("all"===e.vertexMode){let e=0;for(let t=0;t<n.length;t++){const i=n[t],a=e,c=y;c.coordsIndex=a;for(let t=0;t<i;t++,e+=r){if(g.coordsIndex=e,u&&t===i-1&&g.x===c.x&&g.y===c.y)continue;const a=o(g.x,g.y);a<=1&&l.candidates.push(new v(s,m(g),Math.sqrt(a)))}}}else if(c&&"ends"===e.vertexMode){let e=0;const t=[];for(let s=0;s<n.length;s++){t.push(e);const i=n[s];e+=i*r,i>1&&t.push(e-r)}for(const i of t){g.coordsIndex=i;const e=o(g.x,g.y);e<=1&&l.candidates.push(new v(s,m(g),Math.sqrt(e)))}}}function T(t,s){const{candidates:i}=l,r={x:0,y:0,z:0};if(e.returnEdge){const e=[a.x,a.y],n=new ee(e,0),l=new ee(e,0);for(const{segments:a}of t.parts)for(const{start:t,curve:u}of a){const{curvePoint:a}=d(t,u,e),c=o(...a);if(c>1)continue;[r.x,r.y]=a,n.coords=t,l.coords=f(u);const g=p(u)?null:h(u);i.push(new _(s,m(r),Math.sqrt(c),m(n),m(l),!1,g))}}function n(e){r.x=t.vertexXY[2*e],r.y=t.vertexXY[2*e+1];const a=o(r.x,r.y);a>1||(r.z=t.vertexZ?.[e]??0,i.push(new v(s,m(r),Math.sqrt(a))))}if("all"===e.vertexMode){const{vertexCount:e}=t;for(let t=0;t<e;++t)n(t);return}if("ends"===e.vertexMode)switch(t.type){case"point":n(0);break;case"polyline":for(let e=0;e<t.partCount;++e){const s=t.partOffsets[e],i=t.partOffsets[e+1]-1;n(s),i!==s&&n(i)}}}}_getPointCreator(e,t,s){const i=null==s||m(t,s)?e=>e:e=>T(e,t,s),{hasZ:a}=this,r=0;return a&&e?({x:e,y:t,z:s})=>i({x:e,y:t,z:s}):({x:e,y:t})=>i({x:e,y:t,z:r})}async createSummaryStatisticsResponse(e){const{field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:r,minValue:n,maxValue:o,scale:l,timeZone:u,outStatisticTypes:c}=e,m=this.fieldsIndex.get(t),d=V(m)||S(m)||b(m),f=await this._getDataValues({field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:r,scale:l,timeZone:u},this.items),p=k({normalizationType:a,normalizationField:i,minValue:n,maxValue:o}),h={value:.5,fieldType:m?.type},g=R(m)?P({values:f,supportsNullCount:p,percentileParams:h,outStatisticTypes:c}):D({values:f,minValue:n,maxValue:o,useSampleStdDev:!a,supportsNullCount:p,percentileParams:h,outStatisticTypes:c});return O(g,c,d)}async createUniqueValuesResponse(e){const{field:t,valueExpression:s,domains:i,returnAllCodedValues:a,scale:r,timeZone:n}=e,o=await this._getDataValues({field:t,field2:e.field2,field3:e.field3,fieldDelimiter:e.fieldDelimiter,valueExpression:s,scale:r,timeZone:n},this.items,!1),l=j(o);return q(l,i,a,e.fieldDelimiter)}async createClassBreaksResponse(e){const{field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:r,classificationMethod:n,standardDeviationInterval:o,minValue:l,maxValue:u,numClasses:c,scale:m,timeZone:d}=e,f=await this._getDataValues({field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:r,scale:m,timeZone:d},this.items),p=C(f,{field:t,normalizationField:i,normalizationType:a,normalizationTotal:r,classificationMethod:n,standardDeviationInterval:o,minValue:l,maxValue:u,numClasses:c});return G(p,n)}async createHistogramResponse(e){const{field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:r,classificationMethod:n,standardDeviationInterval:o,minValue:l,maxValue:u,numBins:c,scale:m,timeZone:d}=e,f=await this._getDataValues({field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:r,scale:m,timeZone:d},this.items);return Z(f,{field:t,normalizationField:i,normalizationType:a,normalizationTotal:r,classificationMethod:n,standardDeviationInterval:o,minValue:l,maxValue:u,numBins:c})}_sortFeatures(e,t,s){if(e.length>1&&t?.length)for(const i of t.slice().reverse()){const{compare:t,fieldOrExpression:a,fieldInfo:r}=se(i,this.fieldsIndex);e.sort((e,i)=>t(s(e,a,r),s(i,a,r)))}}_topNFeatures(t,s,i,a){if(t.length>1&&s?.length){const r=s.map(e=>{const{compare:t,fieldOrExpression:s,fieldInfo:i}=se(e,this.fieldsIndex);return(e,r)=>t(a(e,s,i),a(r,s,i))}).reduceRight((e,t)=>(s,i)=>{const a=t(s,i);return 0===a||Number.isNaN(a)?e(s,i):a}),n=[];for(const s of t)e(n,s,i,r);return n}return t.slice(0,i)}_createFeatureQueryResponse(e){const{items:t,geometryType:s,hasM:i,hasZ:a,featureIdInfo:r,spatialReference:n}=this,{outFields:o,outSR:l,quantizationParameters:c,resultRecordCount:m,resultOffset:d,returnZ:f,returnM:p}=e,h=null!=m&&t.length>(d||0)+m,g=o&&(o.includes("*")?[...this.fieldsIndex.fields]:o.map(e=>this.fieldsIndex.get(e)));return{exceededTransferLimit:h,features:this._createFeatures(e,t),fields:g,geometryType:s,hasM:i&&p,hasZ:a&&f,objectIdFieldName:"object-id"===r.type?r.fieldName:null,spatialReference:y(l||n),transform:c&&u(c)||null}}_createFeatures(e,t){const s=new g(e,this.featureAdapter,this.fieldsIndex),{hasM:i,hasZ:a}=this,{orderByFields:r,quantizationParameters:n,returnGeometry:o,returnCentroid:l,maxAllowableOffset:c,resultOffset:m,resultRecordCount:d,returnZ:f=!1,returnM:p=!1}=e,h=a&&f,y=i&&p;let T;const F=m||0,_=null!=d?F+d:null;null!=_&&_<=5e3&&_<t.length?T=this._topNFeatures(t,r,_,(e,t,i)=>s.getFieldValue(e,t,i)):(T=[...t],this._sortFeatures(T,r,(e,t,i)=>s.getFieldValue(e,t,i))),(F>0||null!=_)&&(T=T.slice(F,_??void 0));const v=[];let V=0;if(this.geometryType&&(o||l)){const e=u(n)??void 0,t="esriGeometryPolygon"===this.geometryType||"esriGeometryPolyline"===this.geometryType;if(o&&!l)for(const i of T){const a=this.featureAdapter.getGeometry(i),r=this._addFeatureJSONMetadata(i,{attributes:s.getAttributes(i),geometry:x(this.geometryType,a,c,e,h,y)});t&&a&&!r.geometry&&(r.centroid=I(this,this.featureAdapter.getCentroid(i,this),e)),v[V++]=r}else if(!o&&l)for(const i of T)v[V++]=this._addFeatureJSONMetadata(i,{attributes:s.getAttributes(i),centroid:I(this,this.featureAdapter.getCentroid(i,this),e)});else for(const i of T)v[V++]=this._addFeatureJSONMetadata(i,{attributes:s.getAttributes(i),centroid:I(this,this.featureAdapter.getCentroid(i,this),e),geometry:x(this.geometryType,this.featureAdapter.getGeometry(i),c,e,h,y)})}else for(const u of T){const e=s.getAttributes(u);e&&(v[V++]=this._addFeatureJSONMetadata(u,{attributes:e}))}return v}_addFeatureJSONMetadata(e,t){const s=this.featureAdapter.getMetadata?.(e);return void 0!==s&&(t.metadata=s),t}_createExceedsLimitQueryResponse(){let e=!1,t=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY,i=Number.POSITIVE_INFINITY;for(const a of this.query.outStatistics??[])if("exceedslimit"===a.statisticType){t=null!=a.maxPointCount?a.maxPointCount:Number.POSITIVE_INFINITY,s=null!=a.maxRecordCount?a.maxRecordCount:Number.POSITIVE_INFINITY,i=null!=a.maxVertexCount?a.maxVertexCount:Number.POSITIVE_INFINITY;break}if("esriGeometryPoint"===this.geometryType)e=this.items.length>t;else if(this.items.length>s)e=!0;else{e=this.items.reduce((e,t)=>{const s=this.featureAdapter.getGeometry(t);return e+(s?.size??0)},0)>i}return{fields:[{name:"exceedslimit",type:"esriFieldTypeInteger",alias:"exceedslimit",sqlType:"sqlTypeInteger",domain:null,defaultValue:null}],features:[{attributes:{exceedslimit:Number(e)}}]}}async _createStatisticsQueryResponse(e,t,s={attributes:{}}){const i=[],a=new Map,r=new Map,n=new Map,o=new Map,l=new g(e,this.featureAdapter,this.fieldsIndex),u=e.outStatistics,{groupByFieldsForStatistics:c,having:m,orderByFields:d,resultRecordCount:f}=e,p=c?.length,h=!!p,y=h?c[0]:null,x=h&&!this.fieldsIndex.get(y);for(const g of u??[]){const{outStatisticFieldName:u,statisticType:d}=g,f=g,I="exceedslimit"!==d?g.onStatisticField:void 0,T="percentile_disc"===d||"percentile_cont"===d,F="EnvelopeAggregate"===d||"CentroidAggregate"===d||"ConvexHullAggregate"===d,_=h&&1===p&&(I===y||x)&&"count"===d;if(h){if(!n.has(I)){const e=[];for(const s of c){const i=this._getAttributeValues(l,s,t,a);e.push(i)}n.set(I,this._calculateUniqueValues(e,t,!F&&l.returnDistinctValues))}const s=n.get(I);if(!s)continue;const i=Object.keys(s);for(const r of i){const{count:i,data:n,items:d,itemPositions:p}=s[r],h=n.join(",");if(!m||l.validateItems(d,m)){const s=o.get(h)||{attributes:{}};if(e.returnAggIds&&(s.aggregateIds=d.map(e=>this.featureAdapter.getObjectId(e)).filter(e=>null!=e)),F){s.aggregateGeometries||(s.aggregateGeometries={});const{aggregateGeometries:e,outStatisticFieldName:t}=await this._getAggregateGeometry(f,d);s.aggregateGeometries[t]=e}else{let e=null;if(_)e=i;else{const s=this._getAttributeValues(l,I,t,a),i=p.map(e=>s[e]);e=T&&"statisticParameters"in f?this._getPercentileValue(f,i):this._getStatisticValue(f,i,null,l.returnDistinctValues)}s.attributes[u]=e}let r=0;c.forEach((e,t)=>s.attributes[this.fieldsIndex.get(e)?e:"EXPR_"+ ++r]=n[t]),o.set(h,s)}}}else if(F){s.aggregateGeometries||(s.aggregateGeometries={});const{aggregateGeometries:e,outStatisticFieldName:i}=await this._getAggregateGeometry(f,t);s.aggregateGeometries[i]=e}else{const e=this._getAttributeValues(l,I,t,a);s.attributes[u]=T&&"statisticParameters"in f?this._getPercentileValue(f,e):this._getStatisticValue(f,e,r,l.returnDistinctValues)}const v="min"!==d&&"max"!==d||!R(this.fieldsIndex.get(I))&&!this._isAnyDateField(I)?null:this.fieldsIndex.get(I)?.type;i.push({name:u,alias:u,type:v||"esriFieldTypeDouble"})}const I=h?Array.from(o.values()):[s];return this._sortFeatures(I,d,(e,t)=>e.attributes[t]),f&&(I.length=Math.min(f,I.length)),{fields:i,features:I}}_isAnyDateField(e){const t=this.fieldsIndex.get(e);return V(t)||S(t)||b(t)||z(t)}async _getAggregateGeometry(e,t){const{statisticType:s,outStatisticFieldName:i}=e,{featureAdapter:o,spatialReference:l,geometryType:u}=this,c=t.map(e=>x(u,o.getGeometry(e))),m={aggregateGeometries:null,outStatisticFieldName:null},d=await L.getImportPromise();let[f]=d.executeMany(c,{merge:!0});if(f&&f.rings[0].length<=3&&(f=null),"EnvelopeAggregate"===s){const e=f?n(f):K(c);m.aggregateGeometries={...e,spatialReference:l},m.outStatisticFieldName=i||"extent"}else if("CentroidAggregate"===s){const[e,t]=f?a(f):r(K(c));m.aggregateGeometries={x:e,y:t,spatialReference:l},m.outStatisticFieldName=i||"centroid"}else"ConvexHullAggregate"===s&&(m.aggregateGeometries=f&&{...f,spatialReference:l},m.outStatisticFieldName=i||"convexHull");return m}_getStatisticValue(e,t,s,i){const{onStatisticField:a,statisticType:r}=e;let n=null;n=s?.has(a)?s.get(a):R(this.fieldsIndex.get(a))||this._isAnyDateField(a)?P({values:t,returnDistinct:i}):D({values:i?[...new Set(t)]:t,minValue:null,maxValue:null,useSampleStdDev:!0}),s&&s.set(a,n);return n["var"===r?"variance":r]}_getPercentileValue(e,t){const{onStatisticField:s,statisticParameters:i,statisticType:a}=e,{value:r,orderBy:n}=i,o=this.fieldsIndex.get(s);return E(t,{value:r,orderBy:n,fieldType:o?.type,isDiscrete:"percentile_disc"===a})}_getAttributeValues(e,t,s,i){if(i.has(t))return i.get(t);const a=this.fieldsIndex.get(t),r=s.map(s=>e.getFieldValue(s,t,a));return i.set(t,r),r}_calculateUniqueValues(e,t,s){const i={},a=t.length;for(let r=0;r<a;r++){const a=t[r],n=[];for(const t of e)n.push(t[r]);const o=n.join(",");null==i[o]?i[o]={count:1,data:n,items:[a],itemPositions:[r]}:(s||i[o].count++,i[o].items.push(a),i[o].itemPositions.push(r))}return i}async _getDataValues(e,i,a=!0){const r=new g(this.query,this.featureAdapter,this.fieldsIndex),{valueExpression:n,scale:o,timeZone:l}=e,u=s.fromJSON(this.query.outSR||this.spatialReference);return n?r.getExpressionValues(i,n,{viewingMode:"map",scale:o,spatialReference:u},{geometryType:this.geometryType,hasZ:this.hasZ,hasM:this.hasM},l):r.getDataValues(i,t(e),a)}_calculateHistogramBins(e,t,s){if(null==t.min&&null==t.max)return[];const i=t.intervals,a=t.min??0,r=t.max??0,n=i.map(([e,t])=>({minValue:e,maxValue:t,count:0,items:[]}));for(let o=0;o<e.length;o++){const t=e[o],l=s[o];if(null!=t&&t>=a&&t<=r){const e=U(i,t);e>-1&&(n[e].count++,n[e].items.push(l))}}return n}async createQueryBinsResponse(e){const t=e.bin?.splitBy;if(!t)return this._createBinsResponse(e);const{value:s,outAlias:i,valueType:a}=t,r=[],n=[{name:i??s,alias:i??s,type:a??"esriFieldTypeString"},{name:X,alias:X,type:"esriFieldTypeInteger"}],o=new g(e,this.featureAdapter,this.fieldsIndex),l=new Map,u=[...this.items];this._sortFeatures(u,[s],(e,t,s)=>o.getFieldValue(e,t,s));const c=this._getAttributeValues(o,s,u,l),m=this._calculateUniqueValues([c],u,o.returnDistinctValues);for(const d in m){const{items:t}=m[d],a=await this._createBinsResponse(e,t);if(r.push(...a.features.map(e=>({...e,attributes:{...e.attributes,[i??s]:d}}))),a.fields)for(const e of a.fields)n.some(t=>t.name===e.name)||n.push(e)}return{fields:n,features:r}}async _createBinsResponse(e,t){const s=e.bin;switch(t=t??this.items,s.type){case"autoIntervalBin":return this._createAutoIntervalBinsResponse(B.fromJSON(s),e,t);case"dateBin":return this._createDateBinsResponse(M.fromJSON(s),e,t);case"fixedBoundariesBin":return this._createFixedBoundariesBinsResponse(w.fromJSON(s),e,t);case"fixedIntervalBin":return this._createFixedIntervalBinsResponse(N.fromJSON(s),e,t)}}async _createAutoIntervalBinsResponse(e,t,s){const{field:i,normalizationField:a,numBins:r,normalizationType:n,normalizationTotal:o,start:l,end:u}=e,c=await this._getDataValues({field:e.field||e.expression,normalizationField:e.normalizationField,normalizationType:e.normalizationType,normalizationTotal:e.normalizationTotal,timeZone:t.outTimeReference?.ianaTimeZone},s),m=H(c,{field:i,normalizationField:a,normalizationType:n,normalizationTotal:o,numBins:r,minValue:F(n?e.normalizationMinValue:l,!1),maxValue:F(n?e.normalizationMaxValue:u,!1)}),d=this._calculateHistogramBins(c,m,s);return this._createFeaturesFromHistogramBins(d,t)}async _createDateBinsResponse(e,t,s){const{field:i,interval:a,start:r,end:n,snapToData:o,returnFullIntervalBin:l,offset:u,firstDayOfWeek:c}=e,m=a.unit,d=await this._getDataValues({field:i||e.expression,timeZone:t.outTimeReference?.ianaTimeZone},s),f=z(this.fieldsIndex.get(i)),p=A.toJSON(m),h=d.filter(Boolean).sort((e,t)=>e-t),g=null!=r?F(r,f):h[0],y=null!=n?F(n,f):h[h.length-1],x=[];if(null!=g&&null!=y){const e={zone:t.outTimeReference?.ianaTimeZone??Q},s=u?.unit?A.toJSON(u.unit):"milliseconds",i={[s]:u?.value||0},r=Y.fromMillis(g,e).minus(i),n=Y.fromMillis(y,e).minus(i),m="number"==typeof c&&c>=1&&c<=7?c:7,d=(e,t)=>{const s=(e.weekday-t+7)%7;return e.minus({days:s}).startOf("day")};if("last"===o){let e="week"===p?((e,t)=>d(e,t).plus({days:7}))(n,m):n;for(;e>r;){const t=e.minus({[p]:a.value});if(t<r){x.unshift([l?t.plus(i).toMillis():r.plus(i).toMillis(),e.plus(i).toMillis()]);break}x.unshift([t.plus(i).toMillis(),e.plus(i).toMillis()]),e=t}}else{let e="first"===o?r:"week"===p?d(r,m):r.startOf(p);for(;e<=n;){const t=e.plus({[p]:a.value});if(t>n){x.push([e.plus(i).toMillis(),l?t.plus(i).toMillis():n.plus(i).toMillis()]);break}x.push([e.plus(i).toMillis(),t.plus(i).toMillis()]),e=t}}}const I=this._calculateHistogramBins(d,{intervals:x,min:g,max:y},s);return this._createFeaturesFromHistogramBins(I,t)}async _createFixedBoundariesBinsResponse(e,t,s){const{field:i}=e,a=await this._getDataValues({field:i||e.expression,timeZone:t.outTimeReference?.ianaTimeZone},s),r=z(this.fieldsIndex.get(i)),n=e.boundaries.map(e=>F(e,r)).sort((e,t)=>e-t),o=[];for(let c=0;c<n.length-1;c++)o.push([n[c],n[c+1]]);const l={intervals:o,min:n.at(0),max:n.at(-1)},u=this._calculateHistogramBins(a,l,s);return this._createFeaturesFromHistogramBins(u,t)}async _createFixedIntervalBinsResponse(e,t,s){const{field:i,interval:a,normalizationType:r,start:n,end:o}=e,l=await this._getDataValues({field:i||e.expression,normalizationField:e.normalizationField,normalizationType:r,normalizationTotal:e.normalizationTotal,timeZone:t.outTimeReference?.ianaTimeZone},s),u=z(this.fieldsIndex.get(i)),c=H(l,{field:i,classificationMethod:"defined-interval",definedInterval:a,minValue:F(r?e.normalizationMinValue:n,u),maxValue:F(r?e.normalizationMaxValue:o,u)},!0),m=this._calculateHistogramBins(l,c,s);return this._createFeaturesFromHistogramBins(m,t)}async _createFeaturesFromHistogramBins(e,t){const{upperBoundaryAlias:s,lowerBoundaryAlias:i}=t,a=i||"lowerBoundary",r=s||"upperBoundary",n=[],o=[{name:a,alias:a,type:"esriFieldTypeDouble"},{name:r,alias:r,type:"esriFieldTypeDouble"}],l=t.bin?.stackBy?.value,u=t.bin?.stackBy?.outAlias;l&&o.push({name:X,alias:X,type:"esriFieldTypeInteger"},{name:u??l,alias:u??l,type:"esriFieldTypeString"});let c=0;const m="dateBin"===t.bin.type,d=t.outTimeReference?.ianaTimeZone;for(const f of e){const{minValue:e,maxValue:s,items:i}=f,p={attributes:{}};let h;if(p.attributes[a]=m&&d&&null!=e?Y.fromMillis(e,{zone:d}).toISO():e,t.bin.hideUpperBound||(p.attributes[r]=m&&d&&null!=s?Y.fromMillis(s,{zone:d}).toISO():s),t.returnAggIds&&(p.aggregateIds=i.map(e=>this.featureAdapter.getObjectId(e)).filter(e=>null!=e)),l?(h=await this._createStatisticsQueryResponse({...t,groupByFieldsForStatistics:[l],orderByFields:[l]},i),p.attributes[X]=++c,"flat"===t.bin.jsonStyle?n.push(...h.features.map(({attributes:{EXPR_1:e,...t},...s})=>({...s,attributes:u??e?{...t,[u??e]:e,...p.attributes}:{...t,...p.attributes}}))):(p.stackedAttributes=h.features.map(({attributes:{EXPR_1:e,...t}})=>u??e?{...t,[u??e]:e}:t),n.push(p))):(t.bin?.splitBy&&(p.attributes[X]=++c),h=await this._createStatisticsQueryResponse(t,i,p),n.push(p)),h.fields)for(const t of h.fields)o.some(e=>e.name===t.name)||o.push(t)}return"desc"===t.binOrder&&n.reverse(),{fields:o,features:n}}}function K(e){const t=o(e[0]);for(const s of e.slice(1))l(t,o(s));return t}function $(e,t,s,i){const a=i.x-s.x,r=i.y-s.y,n=t.x-s.x,o=t.y-s.y,l=a*a+r*r;if(0===l)return!1;const u=n*a+o*r,c=Math.min(1,Math.max(0,u/l));return e.x=s.x+a*c,e.y=s.y+r*c,!0}class ee{constructor(e,t){this.coords=e,this.coordsIndex=t}get x(){return this.coords[this.coordsIndex]}get y(){return this.coords[this.coordsIndex+1]}get z(){return this.coords[this.coordsIndex+2]}}const te=[1];function se(e,t){const s=e.split(" "),i=s[0],a=t.get(i),r=!!s[1]&&"desc"===s[1].toLowerCase();return{compare:J(a?.type,r,"case-insensitive"),fieldOrExpression:i,fieldInfo:a}}export{W as QueryEngineResult};
2
+ import{insertSortedStableTopN as e}from"../../../core/arrayUtils.js";import{importLazily as t}from"../../../core/importUtils.js";import{clone as s}from"../../../core/lang.js";import i from"../../../geometry/SpatialReference.js";import{polygonCentroid as a,extentCentroid as r}from"../../../geometry/support/centroid.js";import{getPolygonExtent as n,getGeometryExtent as o,expandExtent as l}from"../../../geometry/support/extentUtils.js";import{toQuantizationTransform as u}from"../../../geometry/support/quantizationUtils.js";import{isValid as c,equals as m}from"../../../geometry/support/spatialReferenceUtils.js";import{closestPointOnCurve as d}from"../../../geometry/support/curves/closestPointOnCurve.js";import{getEndpoint as f,isCoordinate as p,cloneCurve as h}from"../../../geometry/support/curves/curveUtils.js";import g from"./AttributesBuilder.js";import{cleanFromGeometryEngine as y,getGeometry as x,transformCentroid as I}from"./geometryUtils.js";import{project as T}from"./projectionSupport.js";import{getDateInNumber as F}from"./queryUtils.js";import{SnappingCandidateEdge as _,SnappingCandidateVertex as v}from"./SnappingCandidate.js";import{isDateField as V,isDateOnlyField as S,isTimestampOffsetField as b,isStringField as R,isTimeOnlyField as z}from"../../support/fieldUtils.js";import B from"../../../rest/support/AutoIntervalBinParameters.js";import M from"../../../rest/support/DateBinParameters.js";import{unitsDict as A}from"../../../rest/support/DateBinUtils.js";import w from"../../../rest/support/FixedBoundariesBinParameters.js";import N from"../../../rest/support/FixedIntervalBinParameters.js";import{calculateStringStatistics as P,calculateStatistics as D,processSummaryStatisticsResult as O,calculateUniqueValuesCount as j,createUVResult as q,calculateClassBreaks as C,resolveCBResult as G,calculateHistogram as Z,calculatePercentile as E,binIndex as H,getBinParams as U,isNullCountSupported as k,getAttributeComparator as J}from"../../../statistics/utils.js";import{utc as Q}from"../../../time/constants.js";import{DateTime as Y}from"luxon";const X="bin",L=t(()=>import("../../../geometry/operators/json/convexHullOperator.js"));class W{constructor(e,t,s){this.items=e,this.query=t,this.geometryType=s.geometryType,this.hasZ=!!t.returnZ&&s.hasZ,this.hasM=!!t.returnM&&s.hasM,this.fieldsIndex=s.fieldsIndex,this.spatialReference=s.spatialReference,this.featureAdapter=s.featureAdapter,this.featureIdInfo=s.featureIdInfo}get size(){return this.items.length}createQueryResponseForCount(){const e=new g(this.query,this.featureAdapter,this.fieldsIndex);if(!this.query.outStatistics)return e.countDistinctValues(this.items);const{groupByFieldsForStatistics:t,having:s,outStatistics:i}=this.query,a=t?.length;if(!!!a)return 1;const r=new Map,n=new Map,o=new Set;for(const l of i){const{statisticType:i}=l,a="exceedslimit"!==i?l.onStatisticField:void 0;if(!n.has(a)){const s=[];for(const i of t){const t=this._getAttributeValues(e,i,this.items,r);s.push(t)}n.set(a,this._calculateUniqueValues(s,this.items,e.returnDistinctValues))}const u=n.get(a);for(const t in u){const{data:i,items:a}=u[t],r=i.join(",");s&&!e.validateItems(a,s)||o.add(r)}}return o.size}async createQueryResponse(){let e;if(this.query.outStatistics){e=this.query.outStatistics.some(e=>"exceedslimit"===e.statisticType)?this._createExceedsLimitQueryResponse():await this._createStatisticsQueryResponse(this.query,this.items)}else e=this._createFeatureQueryResponse(this.query);if(this.query.returnQueryGeometry){const t=this.query.geometry;c(this.query.outSR)&&!m(t.spatialReference,this.query.outSR)?e.queryGeometry=y({spatialReference:this.query.outSR,...T(t,t.spatialReference,this.query.outSR)}):e.queryGeometry=y({spatialReference:this.query.outSR,...t})}return e}createSnappingResponse(e,t,s){const i=this.featureAdapter,{point:a}=e,r="number"==typeof e.distance?e.distance:e.distance.x,n="number"==typeof e.distance?e.distance:e.distance.y;function o(e,t){const s=(e-a.x)/r,i=(t-a.y)/n;return s*s+i*i}const l={candidates:[]},u="esriGeometryPolygon"===this.geometryType,c="esriGeometryPolyline"===this.geometryType||"esriGeometryPoint"===this.geometryType,m=this._getPointCreator(t,this.spatialReference,s),g=new ee(null,0),y=new ee(null,0),x={x:0,y:0,z:0};for(const d of this.items){const e=i.getObjectId(d),t=i.getGeometryWithCurves?.(d);if(null!=t){T(t,e);continue}const s=i.getGeometry(d);null==s||I(s,e)}return l.candidates.sort((e,t)=>e.distance-t.distance),l;function I(t,s){const{coords:i,stride:r}=t,n=t.isPoint?te:t.lengths;if(g.coords=i,y.coords=i,e.returnEdge){let e=0;for(let t=0;t<n.length;t++){const i=n[t],c=e;for(let t=0;t<i;t++,e+=r){if(!u&&t===i-1)continue;if(g.coordsIndex=e,y.coordsIndex=t===i-1?c:e+r,!$(x,a,g,y))continue;const n=o(x.x,x.y);n<=1&&l.candidates.push(new _(s,m(x),Math.sqrt(n),m(g),m(y)))}}}if("all"===e.vertexMode){let e=0;for(let t=0;t<n.length;t++){const i=n[t],a=e,c=y;c.coordsIndex=a;for(let t=0;t<i;t++,e+=r){if(g.coordsIndex=e,u&&t===i-1&&g.x===c.x&&g.y===c.y)continue;const a=o(g.x,g.y);a<=1&&l.candidates.push(new v(s,m(g),Math.sqrt(a)))}}}else if(c&&"ends"===e.vertexMode){let e=0;const t=[];for(let s=0;s<n.length;s++){t.push(e);const i=n[s];e+=i*r,i>1&&t.push(e-r)}for(const i of t){g.coordsIndex=i;const e=o(g.x,g.y);e<=1&&l.candidates.push(new v(s,m(g),Math.sqrt(e)))}}}function T(t,s){const{candidates:i}=l,r={x:0,y:0,z:0};if(e.returnEdge){const e=[a.x,a.y],n=new ee(e,0),l=new ee(e,0);for(const{segments:a}of t.parts)for(const{start:t,curve:u}of a){const{curvePoint:a}=d(t,u,e),c=o(...a);if(c>1)continue;[r.x,r.y]=a,n.coords=t,l.coords=f(u);const g=p(u)?null:h(u);i.push(new _(s,m(r),Math.sqrt(c),m(n),m(l),!1,g))}}function n(e){r.x=t.vertexXY[2*e],r.y=t.vertexXY[2*e+1];const a=o(r.x,r.y);a>1||(r.z=t.vertexZ?.[e]??0,i.push(new v(s,m(r),Math.sqrt(a))))}if("all"===e.vertexMode){const{vertexCount:e}=t;for(let t=0;t<e;++t)n(t);return}if("ends"===e.vertexMode)switch(t.type){case"point":n(0);break;case"polyline":for(let e=0;e<t.partCount;++e){const s=t.partOffsets[e],i=t.partOffsets[e+1]-1;n(s),i!==s&&n(i)}}}}_getPointCreator(e,t,s){const i=null==s||m(t,s)?e=>e:e=>T(e,t,s),{hasZ:a}=this,r=0;return a&&e?({x:e,y:t,z:s})=>i({x:e,y:t,z:s}):({x:e,y:t})=>i({x:e,y:t,z:r})}async createSummaryStatisticsResponse(e){const{field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:r,minValue:n,maxValue:o,scale:l,timeZone:u,outStatisticTypes:c}=e,m=this.fieldsIndex.get(t),d=V(m)||S(m)||b(m),f=await this._getDataValues({field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:r,scale:l,timeZone:u},this.items),p=k({normalizationType:a,normalizationField:i,minValue:n,maxValue:o}),h={value:.5,fieldType:m?.type},g=R(m)?P({values:f,supportsNullCount:p,percentileParams:h,outStatisticTypes:c}):D({values:f,minValue:n,maxValue:o,useSampleStdDev:!a,supportsNullCount:p,percentileParams:h,outStatisticTypes:c});return O(g,c,d)}async createUniqueValuesResponse(e){const{field:t,valueExpression:s,domains:i,returnAllCodedValues:a,scale:r,timeZone:n}=e,o=await this._getDataValues({field:t,field2:e.field2,field3:e.field3,fieldDelimiter:e.fieldDelimiter,valueExpression:s,scale:r,timeZone:n},this.items,!1),l=j(o);return q(l,i,a,e.fieldDelimiter)}async createClassBreaksResponse(e){const{field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:r,classificationMethod:n,standardDeviationInterval:o,minValue:l,maxValue:u,numClasses:c,scale:m,timeZone:d}=e,f=await this._getDataValues({field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:r,scale:m,timeZone:d},this.items),p=C(f,{field:t,normalizationField:i,normalizationType:a,normalizationTotal:r,classificationMethod:n,standardDeviationInterval:o,minValue:l,maxValue:u,numClasses:c});return G(p,n)}async createHistogramResponse(e){const{field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:r,classificationMethod:n,standardDeviationInterval:o,minValue:l,maxValue:u,numBins:c,scale:m,timeZone:d}=e,f=await this._getDataValues({field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:r,scale:m,timeZone:d},this.items);return Z(f,{field:t,normalizationField:i,normalizationType:a,normalizationTotal:r,classificationMethod:n,standardDeviationInterval:o,minValue:l,maxValue:u,numBins:c})}_sortFeatures(e,t,s){if(e.length>1&&t?.length)for(const i of t.slice().reverse()){const{compare:t,fieldOrExpression:a,fieldInfo:r}=se(i,this.fieldsIndex);e.sort((e,i)=>t(s(e,a,r),s(i,a,r)))}}_topNFeatures(t,s,i,a){if(t.length>1&&s?.length){const r=s.map(e=>{const{compare:t,fieldOrExpression:s,fieldInfo:i}=se(e,this.fieldsIndex);return(e,r)=>t(a(e,s,i),a(r,s,i))}).reduceRight((e,t)=>(s,i)=>{const a=t(s,i);return 0===a||Number.isNaN(a)?e(s,i):a}),n=[];for(const s of t)e(n,s,i,r);return n}return t.slice(0,i)}_createFeatureQueryResponse(e){const{items:t,geometryType:s,hasM:i,hasZ:a,featureIdInfo:r,spatialReference:n}=this,{outFields:o,outSR:l,quantizationParameters:c,resultRecordCount:m,resultOffset:d,returnZ:f,returnM:p}=e,h=null!=m&&t.length>(d||0)+m,g=o&&(o.includes("*")?[...this.fieldsIndex.fields]:o.map(e=>this.fieldsIndex.get(e)));return{exceededTransferLimit:h,features:this._createFeatures(e,t),fields:g,geometryType:s,hasM:i&&p,hasZ:a&&f,objectIdFieldName:"object-id"===r.type?r.fieldName:null,spatialReference:y(l||n),transform:c&&u(c)||null}}_createFeatures(e,t){const s=new g(e,this.featureAdapter,this.fieldsIndex),{hasM:i,hasZ:a}=this,{orderByFields:r,quantizationParameters:n,returnGeometry:o,returnCentroid:l,maxAllowableOffset:c,resultOffset:m,resultRecordCount:d,returnZ:f=!1,returnM:p=!1}=e,h=a&&f,y=i&&p;let T;const F=m||0,_=null!=d?F+d:null;null!=_&&_<=5e3&&_<t.length?T=this._topNFeatures(t,r,_,(e,t,i)=>s.getFieldValue(e,t,i)):(T=[...t],this._sortFeatures(T,r,(e,t,i)=>s.getFieldValue(e,t,i))),(F>0||null!=_)&&(T=T.slice(F,_??void 0));const v=[];let V=0;if(this.geometryType&&(o||l)){const e=u(n)??void 0,t="esriGeometryPolygon"===this.geometryType||"esriGeometryPolyline"===this.geometryType;if(o&&!l)for(const i of T){const a=this.featureAdapter.getGeometry(i),r=this._addFeatureJSONMetadata(i,{attributes:s.getAttributes(i),geometry:x(this.geometryType,a,c,e,h,y)});t&&a&&!r.geometry&&(r.centroid=I(this,this.featureAdapter.getCentroid(i,this),e)),v[V++]=r}else if(!o&&l)for(const i of T)v[V++]=this._addFeatureJSONMetadata(i,{attributes:s.getAttributes(i),centroid:I(this,this.featureAdapter.getCentroid(i,this),e)});else for(const i of T)v[V++]=this._addFeatureJSONMetadata(i,{attributes:s.getAttributes(i),centroid:I(this,this.featureAdapter.getCentroid(i,this),e),geometry:x(this.geometryType,this.featureAdapter.getGeometry(i),c,e,h,y)})}else for(const u of T){const e=s.getAttributes(u);e&&(v[V++]=this._addFeatureJSONMetadata(u,{attributes:e}))}return v}_addFeatureJSONMetadata(e,t){const s=this.featureAdapter.getMetadata?.(e);return void 0!==s&&(t.metadata=s),t}_createExceedsLimitQueryResponse(){let e=!1,t=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY,i=Number.POSITIVE_INFINITY;for(const a of this.query.outStatistics??[])if("exceedslimit"===a.statisticType){t=null!=a.maxPointCount?a.maxPointCount:Number.POSITIVE_INFINITY,s=null!=a.maxRecordCount?a.maxRecordCount:Number.POSITIVE_INFINITY,i=null!=a.maxVertexCount?a.maxVertexCount:Number.POSITIVE_INFINITY;break}if("esriGeometryPoint"===this.geometryType)e=this.items.length>t;else if(this.items.length>s)e=!0;else{e=this.items.reduce((e,t)=>{const s=this.featureAdapter.getGeometry(t);return e+(s?.size??0)},0)>i}return{fields:[{name:"exceedslimit",type:"esriFieldTypeInteger",alias:"exceedslimit",sqlType:"sqlTypeInteger",domain:null,defaultValue:null}],features:[{attributes:{exceedslimit:Number(e)}}]}}async _createStatisticsQueryResponse(e,t,s={attributes:{}}){const i=[],a=new Map,r=new Map,n=new Map,o=new Map,l=new g(e,this.featureAdapter,this.fieldsIndex),u=e.outStatistics,{groupByFieldsForStatistics:c,having:m,orderByFields:d,resultRecordCount:f}=e,p=c?.length,h=!!p,y=h?c[0]:null,x=h&&!this.fieldsIndex.get(y);for(const g of u??[]){const{outStatisticFieldName:u,statisticType:d}=g,f=g,I="exceedslimit"!==d?g.onStatisticField:void 0,T="percentile_disc"===d||"percentile_cont"===d,F="EnvelopeAggregate"===d||"CentroidAggregate"===d||"ConvexHullAggregate"===d,_=h&&1===p&&(I===y||x)&&"count"===d;if(h){if(!n.has(I)){const e=[];for(const s of c){const i=this._getAttributeValues(l,s,t,a);e.push(i)}n.set(I,this._calculateUniqueValues(e,t,!F&&l.returnDistinctValues))}const s=n.get(I);if(!s)continue;const i=Object.keys(s);for(const r of i){const{count:i,data:n,items:d,itemPositions:p}=s[r],h=n.join(",");if(!m||l.validateItems(d,m)){const s=o.get(h)||{attributes:{}};if(e.returnAggIds&&(s.aggregateIds=d.map(e=>this.featureAdapter.getObjectId(e)).filter(e=>null!=e)),F){s.aggregateGeometries||(s.aggregateGeometries={});const{aggregateGeometries:e,outStatisticFieldName:t}=await this._getAggregateGeometry(f,d);s.aggregateGeometries[t]=e}else{let e=null;if(_)e=i;else{const s=this._getAttributeValues(l,I,t,a),i=p.map(e=>s[e]);e=T&&"statisticParameters"in f?this._getPercentileValue(f,i):this._getStatisticValue(f,i,null,l.returnDistinctValues)}s.attributes[u]=e}let r=0;c.forEach((e,t)=>s.attributes[this.fieldsIndex.get(e)?e:"EXPR_"+ ++r]=n[t]),o.set(h,s)}}}else if(F){s.aggregateGeometries||(s.aggregateGeometries={});const{aggregateGeometries:e,outStatisticFieldName:i}=await this._getAggregateGeometry(f,t);s.aggregateGeometries[i]=e}else{const e=this._getAttributeValues(l,I,t,a);s.attributes[u]=T&&"statisticParameters"in f?this._getPercentileValue(f,e):this._getStatisticValue(f,e,r,l.returnDistinctValues)}const v="min"!==d&&"max"!==d||!R(this.fieldsIndex.get(I))&&!this._isAnyDateField(I)?null:this.fieldsIndex.get(I)?.type;i.push({name:u,alias:u,type:v||"esriFieldTypeDouble"})}const I=h?Array.from(o.values()):[s];return this._sortFeatures(I,d,(e,t)=>e.attributes[t]),f&&(I.length=Math.min(f,I.length)),{fields:i,features:I}}_isAnyDateField(e){const t=this.fieldsIndex.get(e);return V(t)||S(t)||b(t)||z(t)}async _getAggregateGeometry(e,t){const{statisticType:s,outStatisticFieldName:i}=e,{featureAdapter:o,spatialReference:l,geometryType:u}=this,c=t.map(e=>x(u,o.getGeometry(e))),m={aggregateGeometries:null,outStatisticFieldName:null},{convexHullExecuteMany:d}=await L.getImportPromise();let[f]=d(c,{merge:!0});if(f&&f.rings[0].length<=3&&(f=null),"EnvelopeAggregate"===s){const e=f?n(f):K(c);m.aggregateGeometries={...e,spatialReference:l},m.outStatisticFieldName=i||"extent"}else if("CentroidAggregate"===s){const[e,t]=f?a(f):r(K(c));m.aggregateGeometries={x:e,y:t,spatialReference:l},m.outStatisticFieldName=i||"centroid"}else"ConvexHullAggregate"===s&&(m.aggregateGeometries=f&&{...f,spatialReference:l},m.outStatisticFieldName=i||"convexHull");return m}_getStatisticValue(e,t,s,i){const{onStatisticField:a,statisticType:r}=e;let n=null;n=s?.has(a)?s.get(a):R(this.fieldsIndex.get(a))||this._isAnyDateField(a)?P({values:t,returnDistinct:i}):D({values:i?[...new Set(t)]:t,minValue:null,maxValue:null,useSampleStdDev:!0}),s&&s.set(a,n);return n["var"===r?"variance":r]}_getPercentileValue(e,t){const{onStatisticField:s,statisticParameters:i,statisticType:a}=e,{value:r,orderBy:n}=i,o=this.fieldsIndex.get(s);return E(t,{value:r,orderBy:n,fieldType:o?.type,isDiscrete:"percentile_disc"===a})}_getAttributeValues(e,t,s,i){if(i.has(t))return i.get(t);const a=this.fieldsIndex.get(t),r=s.map(s=>e.getFieldValue(s,t,a));return i.set(t,r),r}_calculateUniqueValues(e,t,s){const i={},a=t.length;for(let r=0;r<a;r++){const a=t[r],n=[];for(const t of e)n.push(t[r]);const o=n.join(",");null==i[o]?i[o]={count:1,data:n,items:[a],itemPositions:[r]}:(s||i[o].count++,i[o].items.push(a),i[o].itemPositions.push(r))}return i}async _getDataValues(e,t,a=!0){const r=new g(this.query,this.featureAdapter,this.fieldsIndex),{valueExpression:n,scale:o,timeZone:l}=e,u=i.fromJSON(this.query.outSR||this.spatialReference);return n?r.getExpressionValues(t,n,{viewingMode:"map",scale:o,spatialReference:u},{geometryType:this.geometryType,hasZ:this.hasZ,hasM:this.hasM},l):r.getDataValues(t,s(e),a)}_calculateHistogramBins(e,t,s){if(null==t.min&&null==t.max)return[];const i=t.intervals,a=t.min??0,r=t.max??0,n=i.map(([e,t])=>({minValue:e,maxValue:t,count:0,items:[]}));for(let o=0;o<e.length;o++){const t=e[o],l=s[o];if(null!=t&&t>=a&&t<=r){const e=H(i,t);e>-1&&(n[e].count++,n[e].items.push(l))}}return n}async createQueryBinsResponse(e){const t=e.bin?.splitBy;if(!t)return this._createBinsResponse(e);const{value:s,outAlias:i,valueType:a}=t,r=[],n=[{name:i??s,alias:i??s,type:a??"esriFieldTypeString"},{name:X,alias:X,type:"esriFieldTypeInteger"}],o=new g(e,this.featureAdapter,this.fieldsIndex),l=new Map,u=[...this.items];this._sortFeatures(u,[s],(e,t,s)=>o.getFieldValue(e,t,s));const c=this._getAttributeValues(o,s,u,l),m=this._calculateUniqueValues([c],u,o.returnDistinctValues);for(const d in m){const{items:t}=m[d],a=await this._createBinsResponse(e,t);if(r.push(...a.features.map(e=>({...e,attributes:{...e.attributes,[i??s]:d}}))),a.fields)for(const e of a.fields)n.some(t=>t.name===e.name)||n.push(e)}return{fields:n,features:r}}async _createBinsResponse(e,t){const s=e.bin;switch(t=t??this.items,s.type){case"autoIntervalBin":return this._createAutoIntervalBinsResponse(B.fromJSON(s),e,t);case"dateBin":return this._createDateBinsResponse(M.fromJSON(s),e,t);case"fixedBoundariesBin":return this._createFixedBoundariesBinsResponse(w.fromJSON(s),e,t);case"fixedIntervalBin":return this._createFixedIntervalBinsResponse(N.fromJSON(s),e,t)}}async _createAutoIntervalBinsResponse(e,t,s){const{field:i,normalizationField:a,numBins:r,normalizationType:n,normalizationTotal:o,start:l,end:u}=e,c=await this._getDataValues({field:e.field||e.expression,normalizationField:e.normalizationField,normalizationType:e.normalizationType,normalizationTotal:e.normalizationTotal,timeZone:t.outTimeReference?.ianaTimeZone},s),m=U(c,{field:i,normalizationField:a,normalizationType:n,normalizationTotal:o,numBins:r,minValue:F(n?e.normalizationMinValue:l,!1),maxValue:F(n?e.normalizationMaxValue:u,!1)}),d=this._calculateHistogramBins(c,m,s);return this._createFeaturesFromHistogramBins(d,t)}async _createDateBinsResponse(e,t,s){const{field:i,interval:a,start:r,end:n,snapToData:o,returnFullIntervalBin:l,offset:u,firstDayOfWeek:c}=e,m=a.unit,d=await this._getDataValues({field:i||e.expression,timeZone:t.outTimeReference?.ianaTimeZone},s),f=z(this.fieldsIndex.get(i)),p=A.toJSON(m),h=d.filter(Boolean).sort((e,t)=>e-t),g=null!=r?F(r,f):h[0],y=null!=n?F(n,f):h[h.length-1],x=[];if(null!=g&&null!=y){const e={zone:t.outTimeReference?.ianaTimeZone??Q},s=u?.unit?A.toJSON(u.unit):"milliseconds",i={[s]:u?.value||0},r=Y.fromMillis(g,e).minus(i),n=Y.fromMillis(y,e).minus(i),m="number"==typeof c&&c>=1&&c<=7?c:7,d=(e,t)=>{const s=(e.weekday-t+7)%7;return e.minus({days:s}).startOf("day")};if("last"===o){let e="week"===p?((e,t)=>d(e,t).plus({days:7}))(n,m):n;for(;e>r;){const t=e.minus({[p]:a.value});if(t<r){x.unshift([l?t.plus(i).toMillis():r.plus(i).toMillis(),e.plus(i).toMillis()]);break}x.unshift([t.plus(i).toMillis(),e.plus(i).toMillis()]),e=t}}else{let e="first"===o?r:"week"===p?d(r,m):r.startOf(p);for(;e<=n;){const t=e.plus({[p]:a.value});if(t>n){x.push([e.plus(i).toMillis(),l?t.plus(i).toMillis():n.plus(i).toMillis()]);break}x.push([e.plus(i).toMillis(),t.plus(i).toMillis()]),e=t}}}const I=this._calculateHistogramBins(d,{intervals:x,min:g,max:y},s);return this._createFeaturesFromHistogramBins(I,t)}async _createFixedBoundariesBinsResponse(e,t,s){const{field:i}=e,a=await this._getDataValues({field:i||e.expression,timeZone:t.outTimeReference?.ianaTimeZone},s),r=z(this.fieldsIndex.get(i)),n=e.boundaries.map(e=>F(e,r)).sort((e,t)=>e-t),o=[];for(let c=0;c<n.length-1;c++)o.push([n[c],n[c+1]]);const l={intervals:o,min:n.at(0),max:n.at(-1)},u=this._calculateHistogramBins(a,l,s);return this._createFeaturesFromHistogramBins(u,t)}async _createFixedIntervalBinsResponse(e,t,s){const{field:i,interval:a,normalizationType:r,start:n,end:o}=e,l=await this._getDataValues({field:i||e.expression,normalizationField:e.normalizationField,normalizationType:r,normalizationTotal:e.normalizationTotal,timeZone:t.outTimeReference?.ianaTimeZone},s),u=z(this.fieldsIndex.get(i)),c=U(l,{field:i,classificationMethod:"defined-interval",definedInterval:a,minValue:F(r?e.normalizationMinValue:n,u),maxValue:F(r?e.normalizationMaxValue:o,u)},!0),m=this._calculateHistogramBins(l,c,s);return this._createFeaturesFromHistogramBins(m,t)}async _createFeaturesFromHistogramBins(e,t){const{upperBoundaryAlias:s,lowerBoundaryAlias:i}=t,a=i||"lowerBoundary",r=s||"upperBoundary",n=[],o=[{name:a,alias:a,type:"esriFieldTypeDouble"},{name:r,alias:r,type:"esriFieldTypeDouble"}],l=t.bin?.stackBy?.value,u=t.bin?.stackBy?.outAlias;l&&o.push({name:X,alias:X,type:"esriFieldTypeInteger"},{name:u??l,alias:u??l,type:"esriFieldTypeString"});let c=0;const m="dateBin"===t.bin.type,d=t.outTimeReference?.ianaTimeZone;for(const f of e){const{minValue:e,maxValue:s,items:i}=f,p={attributes:{}};let h;if(p.attributes[a]=m&&d&&null!=e?Y.fromMillis(e,{zone:d}).toISO():e,t.bin.hideUpperBound||(p.attributes[r]=m&&d&&null!=s?Y.fromMillis(s,{zone:d}).toISO():s),t.returnAggIds&&(p.aggregateIds=i.map(e=>this.featureAdapter.getObjectId(e)).filter(e=>null!=e)),l?(h=await this._createStatisticsQueryResponse({...t,groupByFieldsForStatistics:[l],orderByFields:[l]},i),p.attributes[X]=++c,"flat"===t.bin.jsonStyle?n.push(...h.features.map(({attributes:{EXPR_1:e,...t},...s})=>({...s,attributes:u??e?{...t,[u??e]:e,...p.attributes}:{...t,...p.attributes}}))):(p.stackedAttributes=h.features.map(({attributes:{EXPR_1:e,...t}})=>u??e?{...t,[u??e]:e}:t),n.push(p))):(t.bin?.splitBy&&(p.attributes[X]=++c),h=await this._createStatisticsQueryResponse(t,i,p),n.push(p)),h.fields)for(const t of h.fields)o.some(e=>e.name===t.name)||o.push(t)}return"desc"===t.binOrder&&n.reverse(),{fields:o,features:n}}}function K(e){const t=o(e[0]);for(const s of e.slice(1))l(t,o(s));return t}function $(e,t,s,i){const a=i.x-s.x,r=i.y-s.y,n=t.x-s.x,o=t.y-s.y,l=a*a+r*r;if(0===l)return!1;const u=n*a+o*r,c=Math.min(1,Math.max(0,u/l));return e.x=s.x+a*c,e.y=s.y+r*c,!0}class ee{constructor(e,t){this.coords=e,this.coordsIndex=t}get x(){return this.coords[this.coordsIndex]}get y(){return this.coords[this.coordsIndex+1]}get z(){return this.coords[this.coordsIndex+2]}}const te=[1];function se(e,t){const s=e.split(" "),i=s[0],a=t.get(i),r=!!s[1]&&"desc"===s[1].toLowerCase();return{compare:J(a?.type,r,"case-insensitive"),fieldOrExpression:i,fieldInfo:a}}export{W as QueryEngineResult};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import t from"../../../core/Error.js";import{JSONMap as e}from"../../../core/jsonMap.js";import{getUnitString as i}from"../../../core/units.js";import r from"../../../geometry/Polygon.js";import{canProjectWithoutEngine as o}from"../../../geometry/projectionUtils.js";import{getGeometryExtent as s}from"../../../geometry/support/extentUtils.js";import{isExtent as a,isPolygon as n,isPolyline as l}from"../../../geometry/support/jsonTypeUtils.js";import{fromJSON as m}from"../../../geometry/support/jsonUtils.js";import{normalizeCentralMeridian as u}from"../../../geometry/support/normalizeUtils.js";import{equals as p,isGeographic as c,isWebMercator as f,wgs84 as y}from"../../../geometry/support/spatialReferenceUtils.js";import{checkProjectionSupport as d,project as g}from"./projectionSupport.js";const S=new e({esriSRUnit_Meter:"meters",esriSRUnit_Kilometer:"kilometers",esriSRUnit_Foot:"feet",esriSRUnit_StatuteMile:"miles",esriSRUnit_NauticalMile:"nautical-miles",esriSRUnit_USNauticalMile:"us-nautical-miles"}),R=Object.freeze({}),j="frequency";async function w(t,e,i){const r=t.bin;return r.onField&&(r.onField=r.onField.trim()),r.onExpression?.value&&(r.onExpression.value=r.onExpression.value.trim()),r.splitBy&&(r.splitBy.value&&(r.splitBy.value=r.splitBy.value.trim()),r.splitBy.outAlias&&(r.splitBy.outAlias=r.splitBy.outAlias.trim())),r.stackBy&&(r.stackBy.value&&(r.stackBy.value=r.stackBy.value.trim()),r.stackBy.outAlias&&(r.stackBy.outAlias=r.stackBy.outAlias.trim())),"normalizationField"in r.parameters&&r.parameters.normalizationField&&(r.parameters.normalizationField=r.parameters.normalizationField.trim()),t.outStatistics?.length||(t.outStatistics=[{statisticType:"count",onStatisticField:"1",outStatisticFieldName:j}]),B(t,e,i)}async function B(t,e,i){const{outFields:r,orderByFields:o,groupByFieldsForStatistics:s,outStatistics:a}=t;if(r)for(let n=0;n<r.length;n++)r[n]=r[n].trim();if(o)for(let n=0;n<o.length;n++)o[n]=o[n].trim();if(s)for(let n=0;n<s.length;n++)s[n]=s[n].trim();if(a)for(let n=0;n<a.length;n++)a[n].onStatisticField&&(a[n].onStatisticField=a[n].onStatisticField.trim());return t.geometry&&!t.outSR&&(t.outSR=t.geometry.spatialReference),F(t,e,i)}async function F(t,e,i){if(!t)return null;let{where:c}=t;if(t.where=c=c?.trim(),(!c||/^1 *= *1$/.test(c)||e&&e===c)&&(t.where=null),!t.geometry)return t;let f=await v(t);if(t.distance=0,t.units=null,"esriSpatialRelEnvelopeIntersects"===t.spatialRel){const{spatialReference:e}=t.geometry;f=s(f),f.spatialReference=e}if(!f)return t;await d(f.spatialReference,i);let[y]=await u(m(f));if(null==y)throw R;let S=!1;(a(y)||n(y)||l(y))&&(S=!p(y.spatialReference,i)&&!o(y.spatialReference,i)),S&&a(y)&&(y=r.fromExtent(y));const j="quantizationParameters"in t&&t.quantizationParameters?.tolerance||"maxAllowableOffset"in t&&t.maxAllowableOffset||0,w=S&&j?{extendedParams:{densificationStep:8*j}}:void 0,B=y.toJSON(),F=g(B,B.spatialReference,i,w);if(!F)throw R;return F.spatialReference=i,t.geometry=F,t}async function v(e){const{distance:r,units:o}=e,s=e.geometry;if(!r||"vertexAttributes"in s)return s;const a=s.spatialReference,l=o?S.fromJSON(o):i(a),m=a&&(c(a)||f(a))?s:await d(a,y).then(()=>g(s,y)),u=await(import("../../../geometry/operators/json/geodesicBufferOperator.js"));await u.load();const p=u.execute(m,r||1,{unit:l})??void 0;if(!p||!n(p)||0===p.rings.length)throw new t("unsupported-query:invalid-parameters","Invalid parameters for query by distance");return p}function h(t,e){return null==t?null:"string"==typeof t?e?new Date(`1970-01-01T${t}Z`).getTime():new Date(t).getTime():t instanceof Date?t.getTime():t}export{h as getDateInNumber,w as normalizeAttributeBinsQuery,B as normalizeQuery,F as normalizeQueryLike,R as queryEngineEmptyResult,S as unitsKebabDict};
2
+ import t from"../../../core/Error.js";import{JSONMap as e}from"../../../core/jsonMap.js";import{getUnitString as i}from"../../../core/units.js";import r from"../../../geometry/Polygon.js";import{canProjectWithoutEngine as o}from"../../../geometry/projectionUtils.js";import{getGeometryExtent as s}from"../../../geometry/support/extentUtils.js";import{isExtent as a,isPolygon as n,isPolyline as l}from"../../../geometry/support/jsonTypeUtils.js";import{fromJSON as m}from"../../../geometry/support/jsonUtils.js";import{normalizeCentralMeridian as u}from"../../../geometry/support/normalizeUtils.js";import{equals as c,isGeographic as p,isWebMercator as f,wgs84 as y}from"../../../geometry/support/spatialReferenceUtils.js";import{checkProjectionSupport as d,project as g}from"./projectionSupport.js";const S=new e({esriSRUnit_Meter:"meters",esriSRUnit_Kilometer:"kilometers",esriSRUnit_Foot:"feet",esriSRUnit_StatuteMile:"miles",esriSRUnit_NauticalMile:"nautical-miles",esriSRUnit_USNauticalMile:"us-nautical-miles"}),R=Object.freeze({}),j="frequency";async function B(t,e,i){const r=t.bin;return r.onField&&(r.onField=r.onField.trim()),r.onExpression?.value&&(r.onExpression.value=r.onExpression.value.trim()),r.splitBy&&(r.splitBy.value&&(r.splitBy.value=r.splitBy.value.trim()),r.splitBy.outAlias&&(r.splitBy.outAlias=r.splitBy.outAlias.trim())),r.stackBy&&(r.stackBy.value&&(r.stackBy.value=r.stackBy.value.trim()),r.stackBy.outAlias&&(r.stackBy.outAlias=r.stackBy.outAlias.trim())),"normalizationField"in r.parameters&&r.parameters.normalizationField&&(r.parameters.normalizationField=r.parameters.normalizationField.trim()),t.outStatistics?.length||(t.outStatistics=[{statisticType:"count",onStatisticField:"1",outStatisticFieldName:j}]),w(t,e,i)}async function w(t,e,i){const{outFields:r,orderByFields:o,groupByFieldsForStatistics:s,outStatistics:a}=t;if(r)for(let n=0;n<r.length;n++)r[n]=r[n].trim();if(o)for(let n=0;n<o.length;n++)o[n]=o[n].trim();if(s)for(let n=0;n<s.length;n++)s[n]=s[n].trim();if(a)for(let n=0;n<a.length;n++)a[n].onStatisticField&&(a[n].onStatisticField=a[n].onStatisticField.trim());return t.geometry&&!t.outSR&&(t.outSR=t.geometry.spatialReference),F(t,e,i)}async function F(t,e,i){if(!t)return null;let{where:p}=t;if(t.where=p=p?.trim(),(!p||/^1 *= *1$/.test(p)||e&&e===p)&&(t.where=null),!t.geometry)return t;let f=await v(t);if(t.distance=0,t.units=null,"esriSpatialRelEnvelopeIntersects"===t.spatialRel){const{spatialReference:e}=t.geometry;f=s(f),f.spatialReference=e}if(!f)return t;await d(f.spatialReference,i);let[y]=await u(m(f));if(null==y)throw R;let S=!1;(a(y)||n(y)||l(y))&&(S=!c(y.spatialReference,i)&&!o(y.spatialReference,i)),S&&a(y)&&(y=r.fromExtent(y));const j="quantizationParameters"in t&&t.quantizationParameters?.tolerance||"maxAllowableOffset"in t&&t.maxAllowableOffset||0,B=S&&j?{extendedParams:{densificationStep:8*j}}:void 0,w=y.toJSON(),F=g(w,w.spatialReference,i,B);if(!F)throw R;return F.spatialReference=i,t.geometry=F,t}async function v(e){const{distance:r,units:o}=e,s=e.geometry;if(!r||"vertexAttributes"in s)return s;const a=s.spatialReference,l=o?S.fromJSON(o):i(a),m=a&&(p(a)||f(a))?s:await d(a,y).then(()=>g(s,y)),{geodesicBufferExecute:u,geodesicBufferLoad:c}=await(import("../../../geometry/operators/json/geodesicBufferOperator.js"));await c();const R=u(m,r||1,{unit:l})??void 0;if(!R||!n(R)||0===R.rings.length)throw new t("unsupported-query:invalid-parameters","Invalid parameters for query by distance");return R}function h(t,e){return null==t?null:"string"==typeof t?e?new Date(`1970-01-01T${t}Z`).getTime():new Date(t).getTime():t instanceof Date?t.getTime():t}export{h as getDateInNumber,B as normalizeAttributeBinsQuery,w as normalizeQuery,F as normalizeQueryLike,R as queryEngineEmptyResult,S as unitsKebabDict};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"../../../core/Error.js";import{extentContainsPoint as r,extentContainsMultipoint as t}from"../../../geometry/support/contains.js";import{getExtentIntersector as i}from"../../../geometry/support/intersects.js";import{isPolygon as o,isExtent as s,getJsonType as n}from"../../../geometry/support/jsonTypeUtils.js";import{isValid as a}from"../../../geometry/support/spatialReferenceUtils.js";import{polygonContainsPoint as l,polygonContainsMultipoint as p}from"../contains.js";import{convertFromPolygon as u}from"../featureConversionUtils.js";import{getGeometry as m}from"./geometryUtils.js";import{checkProjectionSupport as y}from"./projectionSupport.js";const c="unsupported-query",f={spatialRelationship:{esriSpatialRelIntersects:!0,esriSpatialRelContains:!0,esriSpatialRelWithin:!0,esriSpatialRelCrosses:!0,esriSpatialRelDisjoint:!0,esriSpatialRelTouches:!0,esriSpatialRelOverlaps:!0,esriSpatialRelEnvelopeIntersects:!0,esriSpatialRelIndexIntersects:!1,esriSpatialRelRelation:!1},queryGeometry:{esriGeometryPoint:!0,esriGeometryMultiPatch:!1,esriGeometryMultipoint:!0,esriGeometryPolyline:!0,esriGeometryPolygon:!0,esriGeometryEnvelope:!0},layerGeometry:{esriGeometryPoint:!0,esriGeometryMultiPatch:!0,esriGeometryMultipoint:!0,esriGeometryPolyline:!0,esriGeometryPolygon:!0,esriGeometryEnvelope:!1}};function R(e){return null!=e&&!0===f.spatialRelationship[e]}function S(e){return null!=e&&!0===f.queryGeometry[n(e)]}function j(e){return null!=e&&!0===f.layerGeometry[e]}const g={esriSpatialRelIntersects:()=>import("../../../geometry/operators/json/intersectsOperator.js"),esriSpatialRelContains:()=>import("../../../geometry/operators/json/containsOperator.js"),esriSpatialRelCrosses:()=>import("../../../geometry/operators/json/crossesOperator.js"),esriSpatialRelDisjoint:()=>import("../../../geometry/operators/json/disjointOperator.js"),esriSpatialRelEnvelopeIntersects:null,esriSpatialRelIndexIntersects:null,esriSpatialRelOverlaps:()=>import("../../../geometry/operators/json/overlapsOperator.js"),esriSpatialRelTouches:()=>import("../../../geometry/operators/json/touchesOperator.js"),esriSpatialRelWithin:()=>import("../../../geometry/operators/json/withinOperator.js"),esriSpatialRelRelation:null};function G(e){const r=g[e];if(null==r)throw new Error(`Cannot load unsupported spatial operator: ${e}`);return r()}async function h(e,n,a){if(o(n)){if("esriGeometryPoint"===a&&("esriSpatialRelIntersects"===e||"esriSpatialRelContains"===e)){const e=u(n,!1,!1);return r=>l(e,r)}if("esriGeometryMultipoint"===a){const r=u(n,!1,!1);if("esriSpatialRelContains"===e)return e=>p(r,e)}}if(s(n)){if("esriGeometryPoint"===a&&("esriSpatialRelIntersects"===e||"esriSpatialRelContains"===e))return e=>r(n,m(a,e));if("esriGeometryMultipoint"===a&&"esriSpatialRelContains"===e)return e=>t(n,m(a,e));if("esriSpatialRelIntersects"===e){const e=i(a);return r=>e(n,m(a,r))}}"esriSpatialRelEnvelopeIntersects"===e&&(e="esriSpatialRelIntersects");const y=await G(e);return e=>y.execute(n,m(a,e))}async function I(r,t,i){const{spatialRel:o,geometry:s}=r;if(s){if(!R(o))throw new e(c,"Unsupported query spatial relationship",{query:r});if(a(s.spatialReference)&&a(i)){if(!S(s))throw new e(c,"Unsupported query geometry type",{query:r});if(!j(t))throw new e(c,"Unsupported layer geometry type",{query:r});if(r.outSR)return y(r.geometry?.spatialReference,r.outSR)}}}function w(e){if(s(e))return!0;if(o(e)){for(const r of e.rings){if(5!==r.length)return!1;if(r[0][0]!==r[1][0]||r[0][0]!==r[4][0]||r[2][0]!==r[3][0]||r[0][1]!==r[3][1]||r[0][1]!==r[4][1]||r[1][1]!==r[2][1])return!1}return!0}return!1}export{w as canQueryWithRBush,I as checkSpatialQuerySupport,h as getSpatialQueryOperator};
2
+ import e from"../../../core/Error.js";import{extentContainsPoint as t,extentContainsMultipoint as r}from"../../../geometry/support/contains.js";import{getExtentIntersector as i}from"../../../geometry/support/intersects.js";import{isPolygon as o,isExtent as s,getJsonType as n}from"../../../geometry/support/jsonTypeUtils.js";import{isValid as a}from"../../../geometry/support/spatialReferenceUtils.js";import{polygonContainsPoint as l,polygonContainsMultipoint as p}from"../contains.js";import{convertFromPolygon as u}from"../featureConversionUtils.js";import{getGeometry as m}from"./geometryUtils.js";import{checkProjectionSupport as c}from"./projectionSupport.js";const y="unsupported-query",f={spatialRelationship:{esriSpatialRelIntersects:!0,esriSpatialRelContains:!0,esriSpatialRelWithin:!0,esriSpatialRelCrosses:!0,esriSpatialRelDisjoint:!0,esriSpatialRelTouches:!0,esriSpatialRelOverlaps:!0,esriSpatialRelEnvelopeIntersects:!0,esriSpatialRelIndexIntersects:!1,esriSpatialRelRelation:!1},queryGeometry:{esriGeometryPoint:!0,esriGeometryMultiPatch:!1,esriGeometryMultipoint:!0,esriGeometryPolyline:!0,esriGeometryPolygon:!0,esriGeometryEnvelope:!0},layerGeometry:{esriGeometryPoint:!0,esriGeometryMultiPatch:!0,esriGeometryMultipoint:!0,esriGeometryPolyline:!0,esriGeometryPolygon:!0,esriGeometryEnvelope:!1}};function R(e){return null!=e&&!0===f.spatialRelationship[e]}function S(e){return null!=e&&!0===f.queryGeometry[n(e)]}function j(e){return null!=e&&!0===f.layerGeometry[e]}const h={esriSpatialRelIntersects:()=>import("../../../geometry/operators/json/intersectsOperator.js").then(e=>e.intersectsExecute),esriSpatialRelContains:()=>import("../../../geometry/operators/json/containsOperator.js").then(e=>e.containsExecute),esriSpatialRelCrosses:()=>import("../../../geometry/operators/json/crossesOperator.js").then(e=>e.crossesExecute),esriSpatialRelDisjoint:()=>import("../../../geometry/operators/json/disjointOperator.js").then(e=>e.disjointExecute),esriSpatialRelEnvelopeIntersects:null,esriSpatialRelIndexIntersects:null,esriSpatialRelOverlaps:()=>import("../../../geometry/operators/json/overlapsOperator.js").then(e=>e.overlapsExecute),esriSpatialRelTouches:()=>import("../../../geometry/operators/json/touchesOperator.js").then(e=>e.touchesExecute),esriSpatialRelWithin:()=>import("../../../geometry/operators/json/withinOperator.js").then(e=>e.withinExecute),esriSpatialRelRelation:null};function g(e){const t=h[e];if(null==t)throw new Error(`Cannot load unsupported spatial operator: ${e}`);return t()}async function G(e,n,a){if(o(n)){if("esriGeometryPoint"===a&&("esriSpatialRelIntersects"===e||"esriSpatialRelContains"===e)){const e=u(n,!1,!1);return t=>l(e,t)}if("esriGeometryMultipoint"===a){const t=u(n,!1,!1);if("esriSpatialRelContains"===e)return e=>p(t,e)}}if(s(n)){if("esriGeometryPoint"===a&&("esriSpatialRelIntersects"===e||"esriSpatialRelContains"===e))return e=>t(n,m(a,e));if("esriGeometryMultipoint"===a&&"esriSpatialRelContains"===e)return e=>r(n,m(a,e));if("esriSpatialRelIntersects"===e){const e=i(a);return t=>e(n,m(a,t))}}"esriSpatialRelEnvelopeIntersects"===e&&(e="esriSpatialRelIntersects");const c=await g(e);return e=>c(n,m(a,e))}async function E(t,r,i){const{spatialRel:o,geometry:s}=t;if(s){if(!R(o))throw new e(y,"Unsupported query spatial relationship",{query:t});if(a(s.spatialReference)&&a(i)){if(!S(s))throw new e(y,"Unsupported query geometry type",{query:t});if(!j(r))throw new e(y,"Unsupported layer geometry type",{query:t});if(t.outSR)return c(t.geometry?.spatialReference,t.outSR)}}}function I(e){if(s(e))return!0;if(o(e)){for(const t of e.rings){if(5!==t.length)return!1;if(t[0][0]!==t[1][0]||t[0][0]!==t[4][0]||t[2][0]!==t[3][0]||t[0][1]!==t[3][1]||t[0][1]!==t[4][1]||t[1][1]!==t[2][1])return!1}return!0}return!1}export{I as canQueryWithRBush,E as checkSpatialQuerySupport,G as getSpatialQueryOperator};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{parseDate as t}from"../../../../core/date.js";import{importLazily as e}from"../../../../geometry/operators/importUtils.js";import{isPolygon as r,isPolyline as o}from"../../../../geometry/support/jsonTypeUtils.js";import{isValid as s}from"../../../../geometry/support/spatialReferenceUtils.js";import{validateFieldValue as n,validationErrorToString as i,isNumericField as l,sanitizedParseFloat as u,isStringField as p,isDateField as a,sanitizeNullFieldValue as c}from"../../../support/fieldUtils.js";class f{constructor(t){this.description=t,this.code=null}}class m{constructor(t){this.globalId=null,this.objectId=null,this.success=!1,this.uniqueId=null,this.error=new f(t)}}function d(t){return new m(t)}class g{constructor(t){this.globalId=null,this.success=!0,this.objectId=this.uniqueId=t}}function y(t){return new g(t)}const h=new Set;function I(t,e,r,o=!1){h.clear();for(const s in r){const l=t.get(s);if(!l)continue;const u=j(l,r[s]);if(h.add(l.name),l&&(o||l.editable)){const t=n(l,u);if(t)return d(i(t,l,u));e[l.name]=u}}for(const s of t.requiredFields??[])if(!h.has(s.name))return d(`missing required field "${s.name}"`);return null}function j(e,r){let o=r;return l(e)&&"string"==typeof r?o=u(r):p(e)&&null!=r&&"string"!=typeof r?o=String(r):a(e)&&"string"==typeof r&&(o=t(r)),c(o)}const T=e(()=>import("../../../../geometry/operators/json/simplifyOperator.js"));function E(t,e){if(!r(t)&&!o(t))return t;if(!s(e))return t;const n=T.module;if(null==n)throw new TypeError("simplify operator not loaded");return n.execute({...t,spatialReference:e})??t}async function S(t,e){!s(t)||"esriGeometryPolygon"!==e&&"esriGeometryPolyline"!==e||await T.getImportPromise()}const w={supportsAutoIntervalBin:!0,supportsFixedIntervalBin:!0,supportsFixedBoundariesBin:!0,supportsDateBin:!0,supportsStackBy:!0,supportsSplitBy:!0,supportsNormalization:!0,supportedStatisticTypes:["COUNT","SUM","AVG","VAR","STDDEV","MIN","MAX","PERCENTILE_CONT","PERCENTILE_DISC","CentroidAggregate","EnvelopeAggregate","ConvexHullAggregate"],supportedNormalizationTypes:["field","log","naturalLog","percentOfTotal","squareRoot"]};export{d as createFeatureEditErrorResult,y as createFeatureEditSuccessResult,S as loadGeometryEngineForSimplify,I as mixAttributes,w as queryBinsCapabilities,E as simplify};
2
+ import{parseDate as t}from"../../../../core/date.js";import{importLazily as e}from"../../../../core/importUtils.js";import{isPolygon as r,isPolyline as o}from"../../../../geometry/support/jsonTypeUtils.js";import{isValid as s}from"../../../../geometry/support/spatialReferenceUtils.js";import{validateFieldValue as n,validationErrorToString as i,isNumericField as l,sanitizedParseFloat as u,isStringField as p,isDateField as c,sanitizeNullFieldValue as a}from"../../../support/fieldUtils.js";class f{constructor(t){this.description=t,this.code=null}}class m{constructor(t){this.globalId=null,this.objectId=null,this.success=!1,this.uniqueId=null,this.error=new f(t)}}function d(t){return new m(t)}class g{constructor(t){this.globalId=null,this.success=!0,this.objectId=this.uniqueId=t}}function y(t){return new g(t)}const h=new Set;function I(t,e,r,o=!1){h.clear();for(const s in r){const l=t.get(s);if(!l)continue;const u=j(l,r[s]);if(h.add(l.name),l&&(o||l.editable)){const t=n(l,u);if(t)return d(i(t,l,u));e[l.name]=u}}for(const s of t.requiredFields??[])if(!h.has(s.name))return d(`missing required field "${s.name}"`);return null}function j(e,r){let o=r;return l(e)&&"string"==typeof r?o=u(r):p(e)&&null!=r&&"string"!=typeof r?o=String(r):c(e)&&"string"==typeof r&&(o=t(r)),a(o)}const E=e(()=>import("../../../../geometry/operators/json/simplifyOperator.js"));function T(t,e){if(!r(t)&&!o(t))return t;if(!s(e))return t;const n=E.module;if(null==n)throw new TypeError("simplify operator not loaded");return n.simplifyExecute({...t,spatialReference:e})??t}async function S(t,e){!s(t)||"esriGeometryPolygon"!==e&&"esriGeometryPolyline"!==e||await E.getImportPromise()}const w={supportsAutoIntervalBin:!0,supportsFixedIntervalBin:!0,supportsFixedBoundariesBin:!0,supportsDateBin:!0,supportsStackBy:!0,supportsSplitBy:!0,supportsNormalization:!0,supportedStatisticTypes:["COUNT","SUM","AVG","VAR","STDDEV","MIN","MAX","PERCENTILE_CONT","PERCENTILE_DISC","CentroidAggregate","EnvelopeAggregate","ConvexHullAggregate"],supportedNormalizationTypes:["field","log","naturalLog","percentOfTotal","squareRoot"]};export{d as createFeatureEditErrorResult,y as createFeatureEditSuccessResult,S as loadGeometryEngineForSimplify,I as mixAttributes,w as queryBinsCapabilities,T as simplify};
@@ -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"../../Graphic.js";import i from"../../request.js";import r from"../../core/Error.js";import{clone as s}from"../../core/lang.js";import n from"../../core/Logger.js";import{QueueProcessor as a}from"../../core/QueueProcessor.js";import{watch as o}from"../../core/reactiveUtils.js";import{urlToObject as l}from"../../core/urlUtils.js";import{property as u,subclass as p}from"../../core/accessorSupport/decorators.js";import{Integer as c,ensureClass as m}from"../../core/accessorSupport/ensureType.js";import{runUntracked as h}from"../../core/accessorSupport/tracking.js";import d from"../../geometry/Extent.js";import f from"../../geometry/Polygon.js";import g from"../../geometry/SpatialReference.js";import{srToRESTValue as y}from"../../geometry/support/spatialReferenceUtils.js";import{intersectMultimensionalSubset as R,getEffectiveMultidimensionalDefinition as x,getSubsetVariablesFromMdInfo as I,getDefaultMultidimensionalDefinition as w}from"../raster/datasets/multidimensionalUtils.js";import{decode as v,getFormat as b}from"../raster/formats/RasterCodec.js";import{mosaicPixelData as S}from"../raster/functions/pixelUtils.js";import{uvComponentToVector as _}from"../raster/functions/vectorFieldUtils.js";import{opacity as F,url as D}from"../support/commonProperties.js";import O from"../support/DimensionalDefinition.js";import{ExportImageServiceParameters as T}from"../support/ExportImageServiceParameters.js";import M from"../support/Field.js";import C from"../support/FieldsIndex.js";import{createBitmap as q}from"../support/imageBitmapUtils.js";import{isSupportedRendererType as N}from"../support/imageryRendererUtils.js";import P from"../support/MosaicRule.js";import j from"../support/MultidimensionalSubset.js";import E from"../support/PixelBlock.js";import{interpolationKebab as A,noDataInterpretationKebab as Q,pixelTypeKebabDict as V}from"../support/rasterEnums.js";import{getServicePixelValueField as J,getItemPixelValueField as B,getRawServicePixelValueField as U,getProcessedServicePixelValueField as z,getMagnitudeField as L,getDirectionField as H,getMultidimensionalFields as G,getRasterAttributeTableFields as k,addMultidimensionalFieldValues as W,commonRasterFieldNames as $,rasterFieldPrefix as X}from"../support/rasterFieldUtils.js";import K from"../support/RasterFunction.js";import Y from"../support/RasterInfo.js";import{createDefaultRenderer as Z,getDefaultBandCombination as ee,getSupportedRendererTypes as te,matchPresetRenderer as ie,normalizeRendererJSON as re}from"../../renderers/support/rasterRendererHelper.js";import se from"../../renderers/support/RasterSymbolizer.js";import{rasterRendererTypes as ne,websceneRasterRendererTypes as ae,read as oe}from"../../renderers/support/rasterTypeUtils.js";import{calculateVolume as le,computeAngles as ue,computePixelSpaceLocations as pe,computeHistograms as ce,computeStatisticsHistograms as me,measureHeight as he,measureAreaAndPerimeter as de,measureDistanceAndAngle as fe,measurePointOrCentroid as ge,measureLengthFromImage as ye,measureAreaFromImage as Re,getImageSpatialReferenceQueryParameter as xe,getSamples as Ie,identify as we,imageToMap as ve,imageToMapMultiray as be,mapToImage as Se,findImages as _e,getImageUrl as Fe,queryBoundary as De,queryGPSInfo as Oe}from"../../rest/imageService.js";import{fetchServiceRasterInfo as Te,generateRasterInfo as Me,patchServiceInfo as Ce}from"../../rest/imageService/fetchRasterInfo.js";import{getCatalogItemRasterInfo as qe}from"../../rest/imageService/getCatalogItemRasterInfo.js";import{executeForCount as Ne}from"../../rest/query/executeForCount.js";import{executeForExtent as Pe}from"../../rest/query/executeForExtent.js";import{executeForIds as je}from"../../rest/query/executeForIds.js";import{executeQueryJSON as Ee}from"../../rest/query/executeQueryJSON.js";import Ae from"../../rest/support/FeatureSet.js";import Qe from"../../rest/support/ImageIdentifyParameters.js";import Ve from"../../rest/support/Query.js";import{reader as Je}from"../../core/accessorSupport/decorators/reader.js";import{writer as Be}from"../../core/accessorSupport/decorators/writer.js";const Ue=512,ze=4096,Le=new Set(["png","png8","png24","png32","jpg","bmp","gif","jpgpng","lerc","tiff"]);function He(e){const t=JSON.stringify(e),i=t.includes('"rasterFunctionDefinition":{'),r=i?t.match(/"type":"(.*?FunctionArguments")/gi):t.match(/"rasterFunction":"(.*?")/gi),s=r?.map(e=>i?e.slice(8,-18):e.slice(18,-1));return s?s.join("/"):null}const Ge=Ge=>{const ke=Ge;let We=class extends ke{constructor(){super(...arguments),this._functionRasterInfos={},this._serviceSupportsMosaicRule=null,this._exportTileQueue=new a({concurrency:4,process:(e,t)=>this._fetchPixels(e.extent,e.width,e.height,{...e.options,signal:t})}),this.adjustAspectRatio=null,this.bandIds=void 0,this.capabilities=null,this.compressionQuality=void 0,this.compressionTolerance=.01,this.copyright=null,this.defaultMosaicRule=null,this.definitionExpression=null,this.exportImageServiceParameters=null,this.rasterInfo=null,this.fields=null,this.fullExtent=null,this.hasMultidimensions=!1,this.imageMaxHeight=4100,this.imageMaxWidth=4100,this.interpolation=void 0,this.minScale=0,this.maxScale=0,this.multidimensionalInfo=null,this.multidimensionalSubset=null,this.noData=null,this.noDataInterpretation=void 0,this.objectIdField=null,this.geometryType="polygon",this.typeIdField=null,this.types=[],this.pixelFilter=null,this.raster=void 0,this.sourceType=null,this.viewId=void 0,this.symbolizer=null,this.rasterFunctionInfos=null,this.serviceDataType=null,this.spatialReference=null,this.pixelType=null,this.serviceRasterInfo=null,this.sourceJSON=null,this.url=null,this.version=void 0}initialize(){this._set("exportImageServiceParameters",new T({layer:this}))}readServiceSupportsMosaicRule(e,t){return this._isMosaicRuleSupported(t)}get _rasterFunctionNamesIndex(){const e=new Map;return!this.rasterFunctionInfos||null!=this.rasterFunctionInfos&&this.rasterFunctionInfos.length<1||null!=this.rasterFunctionInfos&&this.rasterFunctionInfos.forEach(t=>{e.set(t.name.toLowerCase().replaceAll(/ /gi,"_"),t.name)}),e}readBandIds(e,t){if(Array.isArray(e)&&e.length>0&&e.every(e=>"number"==typeof e))return e}readCapabilities(e,t){return this._readCapabilities(t)}writeCompressionQuality(e,t,i){null!=e&&"lerc"!==this.format&&(t[i]=e)}writeCompressionTolerance(e,t,i){"lerc"===this.format&&null!=e&&(t[i]=e)}readDefaultMosaicRule(e,t){return this._serviceSupportsMosaicRule?h(()=>P.fromJSON(t)):null}get fieldsIndex(){return this.fields?new C(this.fields):null}set format(e){e&&Le.has(e.toLowerCase())&&this._set("format",e.toLowerCase())}readFormat(e,t){return"esriImageServiceDataTypeVector-UV"===t.serviceDataType||"esriImageServiceDataTypeVector-MagDir"===t.serviceDataType||null!=this.pixelFilter?"lerc":"jpgpng"}get isRenderedFormat(){return!this.format||this.format.includes("jpg")||this.format.includes("png")}readMinScale(e,t){return null!=t.minLOD&&null!=t.maxLOD?e:0}readMaxScale(e,t){return null!=t.minLOD&&null!=t.maxLOD?e:0}set mosaicRule(e){let t=e;t?.mosaicMethod&&(t=P.fromJSON({...t.toJSON(),mosaicMethod:t.mosaicMethod,mosaicOperation:t.mosaicOperation})),this._set("mosaicRule",t)}readMosaicRule(e,t){const i=e||t.mosaicRule;return i?P.fromJSON(i):this._isMosaicRuleSupported(t)?P.fromJSON(t):null}writeMosaicRule(e,t,i){const{mosaicRule:r}=this;this._isValidCustomizedMosaicRule(r)&&(t[i]=r.toJSON())}readObjectIdField(e,t){if(!e){const i=t.fields.find(e=>"esriFieldTypeOID"===e.type||"oid"===e.type);e=i?.name}return e}get parsedUrl(){return l(this.url)}readSourceType(e,t){return this._isMosaicDataset(t)?"mosaic-dataset":"raster-dataset"}get renderer(){const{activePresetRendererName:e,presetRenderers:t}=this;if(e){const i=t?.find(({name:t})=>t===e);return i?.renderer.clone()}return this.internalRenderer}set renderer(e){this.activePresetRendererName=null,this.internalRenderer=e}set internalRenderer(e){this.loaded&&(e=this._configRenderer(e)),this._set("internalRenderer",e)}readRenderer(e,t,i){const r=t?.layerDefinition?.drawingInfo?.renderer,s=oe(r,i);return null==s?null:("vector-field"===s.type&&t.symbolTileSize&&!r.symbolTileSize&&(s.symbolTileSize=t.symbolTileSize),N(s)||n.getLogger(this).warn("ArcGISImageService","Imagery layer doesn't support given renderer type."),s)}writeRenderer(e,t,i){t.layerDefinition=t.layerDefinition||{},t.layerDefinition.drawingInfo=t.layerDefinition.drawingInfo||{},t.layerDefinition.drawingInfo.renderer=e.toJSON()}get rasterFields(){const e=this.fields?.map(e=>e.clone())??[];e.push(J()),"mosaic-dataset"===this.sourceType&&this.fields?.length&&e.push(B()),this.version>=10.4&&null!=this.rasterFunctionInfos&&this.rasterFunctionInfos.some(({name:e})=>"none"===e.toLowerCase())&&e.push(U()),null!=this.rasterFunctionInfos&&this.rasterFunctionInfos.filter(({name:e})=>"none"!==e.toLowerCase()).forEach(({name:t})=>e.push(z(t)));const{rasterInfo:t}=this;if(this._isVectorDataSet()){const i=t?.multidimensionalInfo?.variables[0].unit?.trim(),r=L(i),s=H();e.push(r,s)}if(t?.multidimensionalInfo&&"raster-dataset"===this.sourceType){const i=G(t.multidimensionalInfo);e.push(...i)}const i=t?.attributeTable;if(null!=i){const t=k(i);e.push(...t)}return e}set rasterFunction(e){let t=e;t?.rasterFunction&&(t=K.fromJSON({...t.toJSON(),rasterFunction:t.rasterFunction,rasterFunctionArguments:t.rasterFunctionArguments})),this._set("rasterFunction",t)}readRasterFunction(e,t){const i=t.rasterFunctionInfos,r=t.renderingRule,s=null!=r&&Object.keys(r).length>0;return s||i?.length&&"None"!==i[0].name?this._isRFTJson(r)?K.fromJSON({rasterFunctionDefinition:r}):K.fromJSON(s?r:{rasterFunctionInfos:i}):null}readSpatialReference(e,t){const i=e||t.extent.spatialReference;return i?g.fromJSON(i):null}writePixelType(e,t,i){null!=this.serviceRasterInfo&&this.pixelType===this.serviceRasterInfo.pixelType||(t[i]=V.toJSON(e))}readVersion(e,t){let i=t.currentVersion;return i||(i=t.hasOwnProperty("fields")||t.hasOwnProperty("timeInfo")?10:9.3),i}applyFilter(e){let t=e;return this.pixelFilter&&(t=this._clonePixelData(e),this.pixelFilter(t)),t}async applyRenderer(e,t){let i=e,{renderer:r,symbolizer:s,pixelFilter:n}=this;const{isRawData:a}=e;if(a&&"lerc"!==this.format&&(r??=Z(this.rasterInfo,{bandIds:this.bandIds,variableName:this.rasterFunction?null:this.mosaicRule?.multidimensionalDefinition?.[0].variableName}),s||(this.symbolizer=new se({rendererJSON:r.toJSON(),rasterInfo:this.rasterInfo}),s=this.symbolizer)),(a||!this.isRenderedFormat)&&r&&s&&!n){await this._updateSymbolizer(s,r);const n=this.bandIds?.length?this.bandIds:ee(this.rasterInfo);i=await this._symbolize({pixelData:e,bandIds:n,symbolizer:s},t)}return i}destroy(){this._shutdownJobHandler()}async calculateVolume(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsCalculateVolume)throw new r("imagery-layer:compute-pixel-space-locations","this operation is not supported on the input image service");return e=s(e),this.mosaicRule&&null==e.mosaicRule&&(e.mosaicRule=this.mosaicRule),le(this.url,e,this._getRequestOptions(t))}async computeAngles(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsComputeAngles)throw new r("imagery-layer:compute-angles","this operation is not supported on the input image service");return ue(this.url,e,this._getRequestOptions(t))}async computePixelSpaceLocations(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsComputePixelLocation)throw new r("imagery-layer:compute-pixel-space-locations","this operation is not supported on the input image service");return pe(this.url,e,this._getRequestOptions(t))}async computeHistograms(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsComputeHistograms)throw new r("imagery-layer:compute-histograms","this operation is not supported on the input image service");return e=s(e),this._applyMosaicAndRenderingRules(e),ce(this.url,e,this._getRequestOptions(t))}async computeStatisticsHistograms(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsComputeStatisticsHistograms)throw new r("imagery-layer:compute-statistics-histograms","this operation is not supported on the input image service");return e=s(e),this._applyMosaicAndRenderingRules(e),me(this.url,e,this._getRequestOptions(t))}async measureHeight(e,t){const i=await this._fetchCapabilities(t?.signal);if(!("base-and-top"===e.operationType?i.mensuration.supportsHeightFromBaseAndTop:"base-and-top-shadow"===e.operationType?i.mensuration.supportsHeightFromBaseAndTopShadow:i.mensuration.supportsHeightFromTopAndTopShadow))throw new r("imagery-layer:measure-height","this operation is not supported on the input image service");return e=s(e),this._applyMosaicRule(e),he(this.url,e,this._getRequestOptions(t))}async measureAreaAndPerimeter(e,t){const i=await this._fetchCapabilities(t?.signal);if(!(i.mensuration.supportsAreaAndPerimeter&&(!e.is3D||i.mensuration.supports3D)))throw new r("imagery-layer:measure-area-and-perimeter","this operation is not supported on the input image service");return e=s(e),this._applyMosaicRule(e),de(this.url,e,this._getRequestOptions(t))}async measureDistanceAndAngle(e,t){const i=await this._fetchCapabilities(t?.signal);if(!(i.mensuration.supportsDistanceAndAngle&&(!e.is3D||i.mensuration.supports3D)))throw new r("imagery-layer:measure-distance-and-angle","this operation is not supported on the input image service");return e=s(e),this._applyMosaicRule(e),fe(this.url,e,this._getRequestOptions(t))}async measurePointOrCentroid(e,t){const i=await this._fetchCapabilities(t?.signal);if(!(i.mensuration.supportsPointOrCentroid&&(!e.is3D||i.mensuration.supports3D)))throw new r("imagery-layer:measure-point-or-centroid","this operation is not supported on the input image service");return e=s(e),this._applyMosaicRule(e),ge(this.url,e,this._getRequestOptions(t))}async measureLengthFromImage(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsMeasureFromImage)throw new r("imagery-layer:measure-length-from-image","this operation is not supported on the input image service");if("polyline"!==e.geometry.type)throw new r("imagery-layer:measure-length-from-image","this input geometry must be a polyline");return ye(this.url,e,this._getRequestOptions(t))}async measureAreaFromImage(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsMeasureFromImage)throw new r("imagery-layer:measure-area-from-image","this operation is not supported on the input image service");if("polygon"!==e.geometry.type)throw new r("imagery-layer:measure-area-from-image","this input geometry must be a polygon");return Re(this.url,e,this._getRequestOptions(t))}getField(e){const{fieldsIndex:t}=this;return null!=t?t.get(e):void 0}getFieldDomain(e,t){const i=this.getField(e);return i?i.domain:null}async internalFetchImage(e,t,i,r={}){await this._updateCurrentRasterInfo();const{exportImageServiceParameters:s}=this;let n=!1;if(r.requestRawData&&(await this._initJobHandler(),!s.requestRawData&&"lerc"!==this.format)){n=!0,s.requestRawData=!0;let e=this.bandIds;if(!e?.length){const t=ee(this.rasterInfo),i=Array.from({length:this.rasterInfo.bandCount},(e,t)=>t);i?.join(",")!==t?.join(",")&&(e=t)}s.rawDataRequestBandIds=e}const a=this.getExportImageServiceParameters(e,t,i,r.timeExtent);if(n&&(s.requestRawData=!1,s.rawDataRequestBandIds=null),null==a){if(r.requestAsImageElement&&this._canRequestImageElement(this.format)){const e=document.createElement("canvas");if(e.width=t,e.height=i,r.returnImageBitmap){const{bitmap:t}=await q(e,`${$e(this.parsedUrl)}/exportImage`,r);return{imageBitmap:t}}return{imageOrCanvasElement:e}}const{bandIds:s,rasterInfo:n}=this,a=(s?.length||n.bandCount)??0,o=t*i,l=n.pixelType,u=[];for(let e=0;e<a;e++)u.push(E.createEmptyBand(l,o));return{pixelData:{pixelBlock:new E({width:t,height:i,pixels:u,mask:new Uint8Array(o),pixelType:l}),extent:e}}}const o=!!r.requestAsImageElement&&!this.pixelFilter,l=o&&!!r.returnImageBitmap,u={imageServiceParameters:a,imageProps:{extent:e,width:t,height:i,format:this.format},requestAsImageElement:o,returnImageBitmap:l,signal:r.signal};return this._requestArrayBuffer(u)}async fetchPixels(e,t,i,s={}){await this._initJobHandler(),s.applyRendering&&await this._updateCurrentRasterInfo();const{imageMaxWidth:n,imageMaxHeight:a}=this;if(t<=n&&i<=a)return this._exportTileQueue.push({extent:e,width:t,height:i,options:s},{signal:s.signal});if(t>ze||i>ze||n<Ue||a<Ue)throw new r("imagery-layer:fetch-pixels",`The image service has a maximum export size of ${n}x${a}. The requested size of ${t}x${i} exceeds this limit.`);let{xmin:o,ymax:l,spatialReference:u}=this._projectedFullExtent??this.fullExtent;if(!u?.equals(e.spatialReference)){const t=await(import("../../geometry/operators/projectOperator.js"));await t.load();const i=t.execute(this.fullExtent,e.spatialReference);o=i.xmin,l=i.ymax,this._projectedFullExtent=i}const p=e.width/t,c=e.height/i,m=Math.floor((e.xmin-o)/p),h=Math.floor((l-e.ymax)/c),f=m+t,g=h+i,y=Math.floor(m/Ue),R=Math.floor(h/Ue),x=Math.ceil(f/Ue)-1,I=Math.ceil(g/Ue)-1,w=Ue*p,v=Ue*c,b=[];for(let r=R;r<=I;r++){const t=l-r*v,i=t-v;for(let r=y;r<=x;r++){const n=o+r*w,a=new d({xmin:n,ymin:i,xmax:n+w,ymax:t,spatialReference:e.spatialReference});b.push(this._exportTileQueue.push({extent:a,width:Ue,height:Ue,options:s},{signal:s.signal}))}}const _=await Promise.all(b);if(_.some(e=>null==e.pixelBlock))return{extent:e,pixelBlock:null};return{extent:e,pixelBlock:this._rasterJobHandler?await this._rasterJobHandler.mosaicPixelData({pixelBlocks:_,destExtent:e},{signal:s.signal,transferPixelsToWorker:!0}):S(_,e)?.pixelBlock}}async _fetchPixels(e,t,i,r={}){const s=r.applyRendering?void 0:new T({layer:this,requestRawData:!0,interpolation:r.interpolation??"nearest",bandIds:r.bandIds??[]}),n=this.getExportImageServiceParameters(e,t,i,r.timeExtent,s);if(null==n)return{extent:e,pixelBlock:null};delete n.pixelType,r.bandIds||delete n.bandIds,delete n.compressionQuality;const a={imageServiceParameters:n,imageProps:{extent:e,width:t,height:i,format:this.format},requestAsImageElement:!1,returnImageBitmap:!1,signal:r.signal},{pixelData:o}=await this._requestArrayBuffer(a);return o??{extent:e,pixelBlock:null}}fetchKeyProperties(e){return i($e(this.parsedUrl)+"/keyProperties",{query:this._getQueryParams({renderingRule:this.version>=10.3?e?.rasterFunction:null})}).then(e=>e.data)}fetchRasterAttributeTable(e){return this.version<10.1?Promise.reject(new r("#fetchRasterAttributeTable()","Failed to get rasterAttributeTable")):i($e(this.parsedUrl)+"/rasterAttributeTable",{query:this._getQueryParams({renderingRule:this.version>=10.3?e?.rasterFunction:null})}).then(e=>Ae.fromJSON(e.data))}getCatalogItemRasterInfo(e,t){const i={...t,query:this._getQueryParams()};return qe($e(this.parsedUrl),e,i)}async getCatalogItemICSInfo(e,t){const{data:r}=await i($e(this.parsedUrl)+"/"+e+"/info/ics",{query:this._getQueryParams(),...t}),s=r?.ics;if(!s)return;let n=null;try{n=(await i($e(this.parsedUrl)+"/"+e+"/info",{query:this._getQueryParams(),...t})).data.extent}catch{}if(!n?.spatialReference)return{ics:s,icsToPixelTransform:null,icsExtent:null,northDirection:null};const a=this.version>=10.7?i($e(this.parsedUrl)+"/"+e+"/info/icstopixel",{query:this._getQueryParams(),...t}).then(e=>e.data).catch(()=>({})):{},o=n.spatialReference,l={geometries:JSON.stringify({geometryType:"esriGeometryEnvelope",geometries:[n]}),inSR:y(o),outSR:"0:"+e},u=i($e(this.parsedUrl)+"/project",{query:this._getQueryParams(l),...t}).then(e=>e.data).catch(()=>({})),p=5,c=(n.xmin+n.xmax)/2,m=(n.ymax-n.ymin)/(p+1),h=n.ymin+m,f=[];for(let i=0;i<p;i++)f.push({x:c,y:h+m*i});const R={geometries:JSON.stringify({geometryType:"esriGeometryPoint",geometries:f}),inSR:y(o),outSR:"0:"+e},x=i($e(this.parsedUrl)+"/project",{query:this._getQueryParams(R),...t}).then(e=>e.data).catch(()=>({})),I=await Promise.all([a,u,x]);let w=I[0].ipxf;if(null==w){const e=s.geodataXform?.xf_0;"topup"===e?.name?.toLowerCase()&&6===e?.coefficients?.length&&(w={affine:{name:"ics [sensor: Frame] to pixel (column, row) transformation",coefficients:e.coefficients,cellsizeRatio:0,type:"GeometricXform"}})}const v=d.fromJSON(I[1]?.geometries?.[0]);v&&(v.spatialReference=new g({wkid:0,imageCoordinateSystem:s}));const b=I[2].geometries?I[2].geometries.filter(e=>null!=e?.x&&null!=e.y&&"NaN"!==e.x&&"NaN"!==e.y):[],S=b.length;if(S<3)return{ics:s,icsToPixelTransform:w,icsExtent:v,northDirection:null};let _=0,F=0,D=0,O=0;for(let i=0;i<S;i++)_+=b[i].x,F+=b[i].y,D+=b[i].x*b[i].x,O+=b[i].x*b[i].y;const T=(S*O-_*F)/(S*D-_*_);let M=0;const C=b[p-1].x>b[0].x,q=b[p-1].y>b[0].y;return T===1/0?M=q?90:270:0===T?M=C?0:180:T>0?M=C?180*Math.atan(T)/Math.PI:180*Math.atan(T)/Math.PI+180:T<0&&(M=q?180+180*Math.atan(T)/Math.PI:360+180*Math.atan(T)/Math.PI),{ics:s,icsToPixelTransform:w,icsExtent:v,northDirection:M}}async generateRasterInfo(e,t){const i=m(K,e),s={...t,query:this._getQueryParams()};if(!i||"none"===i.functionName?.toLowerCase()||this._isVectorFieldResampleFunction(i))return this.serviceRasterInfo??Te($e(this.parsedUrl),this.sourceJSON,s);const n=He(i);if(!n)throw new r("imagery-layer:generate-raster-info","the rendering rule is not supported");if(this._functionRasterInfos[n])return this._functionRasterInfos[n];const a=Me($e(this.parsedUrl),i,s);this._functionRasterInfos[n]=a;try{const t=await a,{rasterFunction:i}=this;return(i===e||JSON.stringify(i)===JSON.stringify(e))&&JSON.stringify(this.rasterInfo)!==JSON.stringify(t)&&(this.rasterInfo=t),t}catch(o){throw this._functionRasterInfos[n]=null,o}}getExportImageServiceParameters(e,t,i,r,s){e=e.clone().shiftCentralMeridian();const n=xe(e.spatialReference,$e(this.parsedUrl));s??=this.exportImageServiceParameters;const a=s.toJSON(),{bandIds:o,noData:l}=a;let{renderingRule:u}=a;const p=this.rasterFunction?.rasterFunctionDefinition,c=this.renderer?.type,m=!c||"raster-stretch"===c||"raster-colormap"===c||"unique-value"===c||"class-breaks"===c||"raster-shaded-relief"===c;if(o?.length&&this._hasRasterFunction(this.rasterFunction)&&!p&&m){const e={rasterFunction:"ExtractBand",rasterFunctionArguments:{BandIds:o}};if("Stretch"===u.rasterFunction)e.rasterFunctionArguments.Raster=u.rasterFunctionArguments.Raster,u.rasterFunctionArguments.Raster=e;else if("Colormap"===u.rasterFunction){const t=u.rasterFunctionArguments.Raster;"Stretch"===t?.rasterFunction?(e.rasterFunctionArguments.Raster=t.rasterFunctionArguments.Raster,t.rasterFunctionArguments.Raster=e):(e.rasterFunctionArguments.Raster=t,u.rasterFunctionArguments.Raster=e)}else e.rasterFunctionArguments.Raster=u,u=e;a.bandIds=void 0}else a.bandIds=o?.join(",");Array.isArray(l)&&l.length>0&&(a.noData=l.join(","));const h=this._processMultidimensionalIntersection(null,r,s.mosaicRule);if(h.isOutSide)return null;a.mosaicRule=null!=h.mosaicRule?JSON.stringify(h.mosaicRule):null,r=h.timeExtent,a.renderingRule=this._getRenderingRuleString(K.fromJSON(u));const d={};if(null!=r){const{start:e,end:t}=r.toJSON();e&&t&&e===t?d.time=""+e:null==e&&null==t||(d.time=`${e??"null"},${t??"null"}`)}return{bbox:e.xmin+","+e.ymin+","+e.xmax+","+e.ymax,bboxSR:n,imageSR:n,size:t+","+i,...a,...d}}async getSamples(e,t){const i=await this._fetchCapabilities(t?.signal);if(!i?.operations.supportsGetSamples)throw new r("imagery-layer:get-samples","getSamples operation is not supported on the input image service");e=s(e);const{raster:n}=this;return n&&null==e.raster&&(e.raster=n),Ie(this.url,e,this._getRequestOptions(t))}async identify(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsIdentify)throw new r("imagery-layer:identify","identify operation is not supported on the input image service");e=s(e),this.version<10.91&&"extent"===e.geometry?.type&&(e.geometry=f.fromExtent(e.geometry));const i=this._processMultidimensionalIntersection(e.geometry,e.timeExtent,e.mosaicRule||this.mosaicRule);if(i.isOutSide)throw new r("imagery-layer:identify","the request cannot be fulfilled when falling outside of the multidimensional subset");e.timeExtent=i.timeExtent,e.mosaicRule=i.mosaicRule;const{raster:n,rasterFunction:a}=this;return a&&null==e.rasterFunction&&(e.rasterFunction=a),n&&null==e.raster&&(e.raster=n),we(this.url,e,this._getRequestOptions(t))}async imageToMap(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsImageToMap)throw new r("imagery-layer:image-to-map","imageToMap operation is not supported on the input image service");return ve($e(this.parsedUrl),e,this._getRequestOptions(t))}async imageToMapMultiray(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsImageToMapMultiray)throw new r("imagery-layer:image-to-map-multiray","imageToMapMultiray operation is not supported on the input image service");return be($e(this.parsedUrl),e,this._getRequestOptions(t))}async mapToImage(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsMapToImage)throw new r("imagery-layer:map-to-image","mapToImage operation is not supported on the input image service");return Se($e(this.parsedUrl),e,this._getRequestOptions(t))}async findImages(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsFindImages)throw new r("imagery-layer:find-images","findImages operation is not supported on the input image service");return _e($e(this.parsedUrl),e,this._getRequestOptions(t))}async getImageUrl(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsGetImageUrl)throw new r("imagery-layer:get-image-url","getImageUrl operation is not supported on the input image service");return Fe($e(this.parsedUrl),e,this._getRequestOptions(t))}createQuery(){return new Ve({outFields:["*"],returnGeometry:!0,where:this.definitionExpression||"1=1"})}async queryBoundary(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsQueryBoundary)throw new r("imagery-layer:query-boundary","queryBoundary operation is not supported on the input image service");return e=e??{outSpatialReference:this.spatialReference},De($e(this.parsedUrl),e,this._getRequestOptions(t))}async queryExtent(e,t){({query:e,requestOptions:t}=await this._prepareForQuery(e,t));const{where:i,objectIds:r,geometry:s,timeExtent:n,start:a,num:o,pixelSize:l}=e,u=null!=i&&"1=1"!==i,p=null!=r&&r.length>0,c=null!=s&&("extent"!==s.type||!s.equals(this.fullExtent)),m=null!=l,h=null!=a||null!=o,{timeInfo:d}=this,f=null!=n&&null!=d&&!n.equals(d.fullTimeExtent);if(!(u||p||c||m||f||h)){const i=await Ne(this.url,e,t),{outSpatialReference:r}=e;if(!r||r.equals(this.spatialReference))return{count:i,extent:this.fullExtent.clone()};const s=await(import("../../geometry/operators/projectOperator.js"));await s.load();return{count:i,extent:s.execute(this.fullExtent,r)}}return Pe(this.url,e,t)}async queryRasters(e,t){({query:e,requestOptions:t}=await this._prepareForQuery(e,t));const i=await Ee(this.url,e,t),r=this.graphicOrigin;return i.features.forEach(e=>{e.layer=this,e.origin=r}),i}async queryObjectIds(e,t){return({query:e,requestOptions:t}=await this._prepareForQuery(e,t)),je(this.url,e,t)}async queryGPSInfo(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsQueryGPSInfo)throw new r("imagery-layer:query-gps-info","queryGPSInfo operation is not supported on the input image service");return e=e??{where:"1=1"},Oe($e(this.parsedUrl),e,this._getRequestOptions(t))}async queryRasterCount(e,t){return({query:e,requestOptions:t}=await this._prepareForQuery(e,t)),Ne(this.url,e,t)}async queryVisibleRasters(e,t){if(!e)throw new r("imagery-layer: query-visible-rasters","missing query parameter");await this.load();const{pixelSize:i,returnDomainValues:s,returnTopmostRaster:n,showNoDataRecords:a}=t||{pixelSize:null,returnDomainValues:!1,returnTopmostRaster:!1,showNoDataRecords:!1};let o=!1,l=null,u=null;const p=$.servicePixelValue.toLowerCase(),c=this._rasterFunctionNamesIndex;if(null!=e.outFields&&(o=e.outFields.some(e=>!e.toLowerCase().startsWith(p)),this.version>=10.4)){const t=e.outFields.filter(e=>e.toLowerCase().startsWith(p)&&e.length>p.length).map(e=>{const t=e.slice(p.length+1);return[this._updateRenderingRulesFunctionName(t,c),t]});l=t.map(e=>new K({functionName:e[0]})),u=t.map(e=>e[1]);const{rasterFunction:i}=this;0===l.length?i?.functionName?(l.push(i),u.push(i.functionName)):l=null:i?.functionName&&!l.some(e=>e.functionName===i.functionName)&&(l.push(i),u.push(i.functionName))}const m=null==e.outSpatialReference||e.outSpatialReference.equals(this.spatialReference),{multidimensionalSubset:h}=this;let d=e.timeExtent||this.timeExtent;if(h){const{isOutside:t,intersection:i}=R(h,{geometry:e.geometry,timeExtent:e.timeExtent,multidimensionalDefinition:this.exportImageServiceParameters.mosaicRule?.multidimensionalDefinition});if(t)throw new r("imagery-layer:query-visible-rasters","the request cannot be fulfilled when falling outside of the multidimensional subset");null!=i?.timeExtent&&(d=i.timeExtent)}const g=this._combineMosaicRuleWithTimeExtent(this.exportImageServiceParameters.mosaicRule,d);let y=e.geometry;this.version<10.91&&"extent"===y?.type&&(y=f.fromExtent(y));const I=this._getQueryParams({geometry:y,timeExtent:d,mosaicRule:g,rasterFunction:this.version<10.4?this.rasterFunction:null,rasterFunctions:l,pixelSize:i,returnCatalogItems:o,returnGeometry:m,raster:this.raster,maxItemCount:n?1:null});delete I.f;const w=new Qe(I);try{await this._generateRasterInfo(this.rasterFunction);const i=await we(this.url,w,{signal:t?.signal,query:{...this.customParameters}}),r=e.outFields,n=null!=i.value&&i.value.toLowerCase().includes("nodata"),l=o&&!m&&i?.catalogItems?.features.length&&(a||!n),p=this.multidimensionalInfo&&"raster-dataset"===this.sourceType?x({rasterInfo:this.rasterInfo,multidimensionalDefinition:g?.multidimensionalDefinition,timeExtent:d,multidimensionalSubset:this.multidimensionalSubset}):null;if(!l)return this._processVisibleRastersResponse(i,{returnDomainValues:s,templateRRFunctionNames:u,showNoDataRecords:a,templateFields:r,effectiveMultidimensionalDefinition:p});const c=this.objectIdField||"ObjectId",h=i.catalogItems?.features??[],f=h.map(e=>e.attributes?.[c]),y=new Ve({objectIds:f,returnGeometry:!0,outSpatialReference:e.outSpatialReference,outFields:[c]}),R=await this.queryRasters(y);return R?.features?.length&&R.features.forEach(t=>{h.forEach(i=>{i.attributes[c]===t.attributes[c]&&t.geometry&&(i.geometry=t.geometry.clone(),null!=e.outSpatialReference&&(i.geometry.spatialReference=e.outSpatialReference))})}),this._processVisibleRastersResponse(i,{returnDomainValues:s,templateRRFunctionNames:u,showNoDataRecords:a,templateFields:r,effectiveMultidimensionalDefinition:p})}catch{throw new r("imagery-layer:query-visible-rasters","encountered error when querying visible rasters")}}async fetchVariableStatisticsHistograms(e,t){const r=i($e(this.parsedUrl)+"/statistics",{query:this._getQueryParams({variable:e}),signal:t}).then(e=>e.data?.statistics),s=i($e(this.parsedUrl)+"/histograms",{query:this._getQueryParams({variable:e}),signal:t}).then(e=>e.data?.histograms),n=await Promise.all([r,s]);return n[0]&&n[0].forEach(e=>{e.avg=e.mean,e.stddev=e.standardDeviation}),{statistics:n[0]||null,histograms:n[1]||null}}getMultidimensionalSubsetVariables(e){const t=e??this.serviceRasterInfo.multidimensionalInfo;return I(this.multidimensionalSubset,t)}async _fetchService(e){await this._fetchServiceInfo(e),this.rasterInfo||(this.rasterInfo=this.serviceRasterInfo);const t=this.sourceJSON,i=null!=this.serviceRasterInfo?Promise.resolve(this.serviceRasterInfo):Te($e(this.parsedUrl),t,{signal:e,query:this._getQueryParams()}).then(e=>(this._set("serviceRasterInfo",e),this._set("multidimensionalInfo",e.multidimensionalInfo),Ce(e,t),e)),r=this._hasRasterFunction(this.rasterFunction)?this._generateRasterInfo(this.rasterFunction,{signal:e}):null,s=this._getRasterFunctionInfos();return Promise.all([i,r,s]).then(e=>{e[1]?this._set("rasterInfo",e[1]):this._set("rasterInfo",e[0]),e[2]&&this._set("rasterFunctionInfos",e[2]),this.internalRenderer&&!this._isSupportedRenderer(this.internalRenderer)&&(this._set("internalRenderer",null),n.getLogger(this).warn("ArcGISImageService","Switching to the default renderer. Renderer applied is not valid for this Imagery Layer")),this._set("internalRenderer",this._configRenderer(this.renderer)),this.addHandles([o(()=>this.rasterFunction,e=>{(this.renderer||this.symbolizer||this.popupEnabled&&this.popupTemplate)&&this._generateRasterInfo(e).then(e=>{e&&(this.rasterInfo=e)})})]);const{serviceRasterInfo:t}=this;null!=t.multidimensionalInfo&&this._updateMultidimensionalDefinition(t)})}_combineMosaicRuleWithTimeExtent(e,t){const i=this.timeInfo,{multidimensionalInfo:r}=this.serviceRasterInfo;if(null==e||null==r||null==t||null==i?.startField)return e;const{startField:s}=i,n=r.variables.some(e=>e.dimensions.some(e=>e.name===s))?s:"StdTime";if(e=e.clone(),"mosaic-dataset"===this.sourceType)return e.multidimensionalDefinition=e.multidimensionalDefinition?.filter(e=>e.dimensionName!==n),this._cleanupMultidimensionalDefinition(e);e.multidimensionalDefinition=e.multidimensionalDefinition||[];const a=e.multidimensionalDefinition.filter(e=>e.dimensionName===n),o=null!=t.start?t.start.getTime():null,l=null!=t.end?t.end.getTime():null,u=null==o||null==l||o===l,p=u?[o||l]:[[o,l]],c=this.version>=10.8;if(a.length)a.forEach(e=>{e.dimensionName===n&&(c?(e.dimensionName=null,e.isSlice=!1,e.values=[]):(e.isSlice=u,e.values=p))});else if(!c){const t=e.multidimensionalDefinition.filter(e=>null!=e.variableName&&null==e.dimensionName);t.length?t.forEach(e=>{e.dimensionName=n,e.isSlice=u,e.values=p}):e.multidimensionalDefinition.push(new O({variableName:"",dimensionName:n,isSlice:u,values:p}))}return this._cleanupMultidimensionalDefinition(e)}_cleanupMultidimensionalDefinition(e){return null==e?null:(e.multidimensionalDefinition&&(e.multidimensionalDefinition=e.multidimensionalDefinition.filter(e=>!(!e.variableName&&!e.dimensionName)),0===e.multidimensionalDefinition.length&&(e.multidimensionalDefinition=null)),"mosaic-dataset"!==this.sourceType&&null==e.multidimensionalDefinition?null:e)}async _prepareForQuery(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsQuery)throw new r("imagery-layer:query-rasters","query operation is not supported on the input image service");const i=null!=e?m(Ve,e):this.createQuery();return t=this._getRequestOptions(t),this.raster&&(t.query={...t.query,raster:this.raster}),{query:i,requestOptions:t}}_isSupportedRenderer(e){const{rasterInfo:t,rasterFunction:i}=this;return"unique-value"===e.type&&this._hasRasterFunction(i)&&1===t?.bandCount&&["u8","s8"].includes(t.pixelType)||null!=t&&null!=e&&te(t).includes(e.type)}async _fetchCapabilities(e){return this.capabilities||await this._fetchServiceInfo(e),this.capabilities}async _fetchServiceInfo(e){let t=this.sourceJSON;if(!t){const{data:r,ssl:s}=await i($e(this.parsedUrl),{query:this._getQueryParams(),signal:e});t=r,this.sourceJSON=t,s&&(this.url=this.url.replace(/^http:/i,"https:"))}if(t.capabilities?.toLowerCase().split(",").map(e=>e.trim()).indexOf("tilesonly")>-1)throw new r("imagery-layer:fetch-service-info","use ImageryTileLayer to open tiles-only image services");this.read(t,{origin:"service",url:this.parsedUrl})}_isMosaicDataset(e){return e.serviceSourceType?"esriImageServiceSourceTypeMosaicDataset"===e.serviceSourceType:e.fields?.length>0}_isMosaicRuleSupported(e){if(!e)return!1;const t=this._isMosaicDataset(e),i=e.currentVersion>=10.71&&e.hasMultidimensions&&!(e.fields?.length>1);return t||i}_isVectorFieldResampleFunction(e){if(null==e)return!1;const{functionName:t,functionArguments:i}=e,r="resample"===t?.toLowerCase(),s=i?.ResampleType||i?.resampleType;return r&&(7===s||10===s)}_configRenderer(e){const{rasterInfo:t}=this;if(!this.isRenderedFormat&&!this.pixelFilter||this._isVectorDataSet()){const i=this.mosaicRule?.multidimensionalDefinition?.[0].variableName,r=ie({variableName:i,rasterFunctionName:this.rasterFunction?.functionName,presetRenderers:this.presetRenderers});if(!this.bandIds&&t.bandCount>=3){const e=r?.bandIds??ee(t);!e||3===t.bandCount&&0===e[0]&&1===e[1]&&2===e[2]||(this.bandIds=e)}e||(e=r?.renderer??Z(t,{bandIds:this.bandIds,variableName:this.rasterFunction?null:i}));const s=re(e.toJSON());this.symbolizer?(this.symbolizer.rendererJSON=s,this.symbolizer.rasterInfo=t):this.symbolizer=new se({rendererJSON:s,rasterInfo:t}),this.symbolizer.bind().success||(this.symbolizer=null)}return e}_clonePixelData(e){return null==e?e:{extent:e.extent&&e.extent.clone(),pixelBlock:null!=e.pixelBlock?e.pixelBlock.clone():null}}_getQueryParams(e){null!=e?.renderingRule&&"string"!=typeof e.renderingRule&&(e.renderingRule=this._getRenderingRuleString(e.renderingRule));const{raster:t,viewId:i}=this;return{raster:t,viewId:i,f:"json",...e,...this.customParameters}}_getRequestOptions(e){return{...e,query:{...e?.query,...this.customParameters}}}_decodePixelBlock(e,t,i){return this._rasterJobHandler?this._rasterJobHandler.decode({data:e,options:t}):v(e,t,i)}async _getRasterFunctionInfos(e){const t=this.sourceJSON.rasterFunctionInfos;if(this.loaded)return t;if(t&&this.version>=10.3){if(1===t.length&&"none"===t[0].name.toLowerCase())return t;const r=await i($e(this.parsedUrl)+"/rasterFunctionInfos",{query:this._getQueryParams(),signal:e});return r.data?.rasterFunctionInfos}return null}_canRequestImageElement(e){return!this.pixelFilter&&(!e||e.includes("png"))}async _requestArrayBuffer(e){const{imageProps:t,requestAsImageElement:s,returnImageBitmap:n,signal:a}=e;if(s&&this._canRequestImageElement(t.format)){const r=`${$e(this.parsedUrl)}/exportImage`,{data:s}=await i(r,{responseType:n?"blob":"image",query:this._getQueryParams({f:"image",...this.refreshParameters,...e.imageServiceParameters}),signal:a});if(s instanceof Blob){const{bitmap:e}=await q(s,r,{signal:a});return{imageBitmap:e,params:t}}return{imageOrCanvasElement:s,params:t}}const o=this._initJobHandler(),l=i($e(this.parsedUrl)+"/exportImage",{responseType:"array-buffer",query:this._getQueryParams({f:"image",...e.imageServiceParameters}),signal:a}),u=(await Promise.all([l,o]))[0].data,p=t.format||"jpgpng";let c=p;if("bsq"!==c&&"bip"!==c&&(c=b(u)),!c)throw new r("imagery-layer:fetch-image","unsupported format signature "+String.fromCharCode.apply(null,new Uint8Array(u)));const m={signal:a},h=this._decodePixelBlock(u,{width:t.width,height:t.height,format:p,applyJpegMask:!0},m);return{pixelData:{pixelBlock:await h,extent:t.extent},params:t}}_generateRasterInfo(e,t){return this.generateRasterInfo(e,t).catch(()=>null)}_isValidCustomizedMosaicRule(e){return e&&JSON.stringify(e.toJSON())!==JSON.stringify(this.defaultMosaicRule?.toJSON())}_updateMultidimensionalDefinition(e){if(this._isValidCustomizedMosaicRule(this.mosaicRule))return;let t=w(e,{multidimensionalSubset:this.multidimensionalSubset});if(null!=t&&t.length>0){this.mosaicRule=this.mosaicRule||new P;const e=this.mosaicRule.multidimensionalDefinition;!this.sourceJSON.defaultVariableName&&this.rasterFunction&&"none"!==this.rasterFunction.functionName?.toLowerCase()&&t.forEach(e=>e.variableName=""),t=t.filter(({variableName:e,dimensionName:t})=>e&&"*"!==e||t),!e?.length&&t.length&&(this.mosaicRule.multidimensionalDefinition=t)}}_processVisibleRastersResponse(e,i){i=i||{};const r=e.value,{templateRRFunctionNames:s,showNoDataRecords:n,returnDomainValues:a,templateFields:o}=i,l=e.processedValues;let u=e.catalogItems?.features,p=e.properties?.Values?.map(e=>e.replaceAll(/ /gi,", "))||[];const c=this.objectIdField||"ObjectId",m="string"==typeof r&&r.toLowerCase().includes("nodata"),h=[];if(r&&!u&&(!m||n)){const e={};e[c]=0;p=[r],u=[new t({geometry:this.fullExtent,attributes:e})],this.multidimensionalInfo&&"raster-dataset"===this.sourceType&&W(this.rasterFields,e,i.effectiveMultidimensionalDefinition)}if(!u)return[];this._updateResponseFieldNames(u,o),m&&!n&&(u=[]);const{itemPixelValue:d,servicePixelValue:f}=$,g=this.rasterFields.some(e=>e.name===d),y=this.graphicOrigin;for(let t=0;t<u.length;t++){const e=u[t];if(null!=r){const i=p[t],a=this.rasterFunction&&l&&l.length>0&&s&&s.length>0&&s.includes(this.rasterFunction.functionName)?l[s.indexOf(this.rasterFunction.functionName)]:r;if("nodata"===i.toLowerCase()&&!n)continue;g&&(e.attributes[d]=i),e.attributes[f]=a,this._updateFeatureWithMagDirValues(e,i);const o=this.fields&&this.fields.length>0;let u=this.rasterFunction&&null!=this.serviceRasterInfo.attributeTable?o?i:r:a;this.rasterFunction||(u=o?i:r),this._updateFeatureWithRasterAttributeTableValues(e,u)}if(e.sourceLayer=e.layer=this,e.origin=y,a&&this._updateFeatureWithDomainValues(e),s&&l&&s.length===l.length)for(let t=0;t<s.length;t++){const i=`${$.servicePixelValue}.${s[t]}`;e.attributes[i]=l[t]}h.push(u[t])}return h}_processMultidimensionalIntersection(e,t,i){const{multidimensionalSubset:r}=this;if(!r)return{isOutSide:!1,timeExtent:t,mosaicRule:i=this._combineMosaicRuleWithTimeExtent(i,t)};if(r){const{isOutside:i,intersection:s}=R(r,{geometry:e,timeExtent:t});if(i)return{isOutSide:!0,timeExtent:null,mosaicRule:null};null!=s?.timeExtent&&(t=s.timeExtent)}if(i=this._combineMosaicRuleWithTimeExtent(i,t),i?.multidimensionalDefinition){const{isOutside:e}=R(r,{multidimensionalDefinition:i.multidimensionalDefinition});if(e)return{isOutSide:!0,timeExtent:null,mosaicRule:null}}return{isOutSide:!1,timeExtent:t,mosaicRule:i}}_updateFeatureWithRasterAttributeTableValues(e,t){const i=this.rasterInfo.attributeTable||this.serviceRasterInfo.attributeTable;if(null==i)return;const{features:r,fields:s}=i,n=s.map(e=>e.name).find(e=>"value"===e.toLowerCase());if(!n)return;const a=r.filter(e=>e.attributes[n]===(null!=t?parseInt(t,10):null));a&&a[0]&&s.forEach(t=>{const i=X+t.name;e.attributes[i]=a[0].attributes[t.name]})}_updateFeatureWithMagDirValues(e,t){if(!this._isVectorDataSet())return;const i=t.split(/,\s*/).map(e=>parseFloat(e)),r=i.map(e=>[e]),s=i.map(e=>({minValue:e,maxValue:e,noDataValue:null})),n=new E({height:1,width:1,pixelType:"f32",pixels:r,statistics:s});null!=this.pixelFilter&&this.pixelFilter({pixelBlock:n,extent:new d(0,0,0,0,this.spatialReference)});const a="esriImageServiceDataTypeVector-MagDir"===this.serviceDataType?[n.pixels[0][0],n.pixels[1][0]]:_([n.pixels[0][0],n.pixels[1][0]]);e.attributes[$.magnitude]=a[0],e.attributes[$.direction]=a[1]}_updateFeatureWithDomainValues(e){const t=this.fields&&this.fields.filter(e=>"coded-value"===e.domain?.type);null!=t&&t.forEach(t=>{const i=e.attributes[t.name];if(null!=i){const r=t.domain.codedValues.find(e=>e.code===i);r&&(e.attributes[t.name]=r.name)}})}_updateResponseFieldNames(e,t){if(!t||t.length<1)return;const i=this.fieldsIndex;null!=i&&e.forEach(e=>{if(e?.attributes)for(const r of t){const t=i.get(r)?.name;t&&t!==r&&(e.attributes[r]=e.attributes[t],delete e.attributes[t])}})}_getRenderingRuleString(e){if(e){let t=e.toJSON();return t=t.rasterFunctionDefinition??t,(t.thumbnail||t.thumbnailEx)&&(t.thumbnail=t.thumbnailEx=null),JSON.stringify(t)}return null}_hasRasterFunction(e){return null!=e?.functionName&&"none"!==e.functionName.toLowerCase()}_updateRenderingRulesFunctionName(e,t){if(!e||e.length<1)return;if("Raw"===e)return e.replace("Raw","None");const i=e.toLowerCase().replaceAll(/ /gi,"_");return t.has(i)?t.get(i):e}_isRFTJson(e){return e?.name&&e.arguments&&e.function&&e.hasOwnProperty("functionType")}_isVectorDataSet(){return"esriImageServiceDataTypeVector-UV"===this.serviceDataType||"esriImageServiceDataTypeVector-MagDir"===this.serviceDataType}_applyMosaicAndRenderingRules(e){const{raster:t,mosaicRule:i,rasterFunction:r}=this;r&&null==e.rasterFunction&&(e.rasterFunction=r),i&&null==e.mosaicRule&&(e.mosaicRule=i),t&&null==e.raster&&(e.raster=t)}async _updateCurrentRasterInfo(e){if(this.renderer||this.symbolizer){const t=await this._generateRasterInfo(this.rasterFunction,{signal:e});t&&(this.rasterInfo=t)}}_applyMosaicRule(e){const{raster:t,mosaicRule:i}=this;i&&null==e.mosaicRule&&(e.mosaicRule=i),t&&null==e.raster&&(e.raster=t)}_readCapabilities(e){const t=e.capabilities?e.capabilities.toLowerCase().split(",").map(e=>e.trim()):["image","catalog"],{currentVersion:i,maxRecordCount:r}=e,s=t.includes("image"),n="esriImageServiceDataTypeElevation"===e.serviceDataType,a=!(!e.spatialReference&&!e.extent?.spatialReference),o=t.includes("edit"),l=t.includes("mensuration")&&a,u=null==e.mensurationCapabilities?[]:e.mensurationCapabilities.toLowerCase().split(",").map(e=>e.trim()),p=l&&u.includes("basic"),c=this._isMosaicDataset(e)&&t.includes("catalog"),m=t.includes("download"),h=i>=10.7&&n||i>=11.4&&(n||l&&u.includes("3d")),d=c&&e.fields&&e.fields.length>0,f=d&&e.supportsAdvancedQueries?e.advancedQueryCapabilities:void 0;return{data:{supportsAttachment:!1},operations:{supportsComputeHistograms:s,supportsExportImage:s,supportsIdentify:s,supportsImageToMap:i>=11.2&&c,supportsImageToMapMultiray:i>=11.2&&c,supportsMapToImage:i>=11.2&&c,supportsFindImages:i>=11.2&&c,supportsGetImageUrl:i>=11.3&&m,supportsMeasure:l,supportsMeasureFromImage:i>=11.2,supportsDownload:m,supportsQuery:d,supportsGetSamples:i>=10.2&&s,supportsProject:i>=10.3&&s,supportsComputeStatisticsHistograms:i>=10.4&&s,supportsQueryBoundary:i>=10.6&&s,supportsCalculateVolume:h,supportsComputePixelLocation:i>=10.7&&c,supportsComputeAngles:i>=10.91,supportsQueryGPSInfo:i>=11.2&&c,supportsAdd:o,supportsDelete:o,supportsEditing:o,supportsUpdate:o,supportsCalculate:!1,supportsTruncate:!1,supportsValidateSql:!1,supportsChangeTracking:!1,supportsQueryAttachments:!1,supportsResizeAttachments:!1,supportsSync:!1,supportsExceedsLimitStatistics:!1,supportsQueryAnalytics:!1,supportsQueryBins:!1,supportsQueryPivot:!1,supportsQueryTopFeatures:!1,supportsAsyncConvert3D:!1},query:{maxRecordCount:r,maxRecordCountFactor:void 0,maxUniqueIDCount:void 0,relativeTimeBinWindow:void 0,supportsStatisticsAggregatedIds:!!f?.supportsAggregateIds,supportsStatistics:!!f?.supportsStatistics,supportsOrderBy:!!f?.supportsOrderBy,supportsDistinct:!!f?.supportsDistinct,supportsPagination:!!f?.supportsPagination,supportsPaginationOnAggregatedQueries:!!f?.supportsPaginationOnAggregatedQueries,supportsStandardizedQueriesOnly:!!f?.useStandardizedQueries,supportsPercentileStatistics:!!f?.supportsPercentileStatistics,supportsCentroid:!!f?.supportsReturningGeometryCentroid,supportsCentroidOnDegeneratedQuantizedGeometry:!1,supportsCurrentUser:!1,supportsDegeneratedQuantizedGeometry:!1,supportsDistance:!!f?.supportsQueryWithDistance,supportsOutDistance:!!f?.supportsOutDistance,supportsExtent:!!f?.supportsReturningQueryExtent,supportsGeometryProperties:!!f?.supportsReturningGeometryProperties,supportsHavingClause:!!f?.supportsHavingClause,supportsQuantization:!1,supportsQuantizationEditMode:!1,supportsQueryGeometry:!1,supportsResultType:!1,supportsReturnMesh:!1,supportsReturnExceededLimitGeometries:!1,supportsMaxRecordCountFactor:!1,supportsSqlExpression:f?.supportsSqlExpression??!!f,supportsTopFeaturesQuery:!1,supportsQueryByAnonymous:!1,supportsQueryByOthers:!1,supportsHistoricMoment:!1,supportsFormatPBF:!1,supportsFormatPBFWithCurves:!1,supportsDisjointSpatialRelationship:!1,supportsCacheHint:!1,supportsSpatialAggregationStatistics:!1,supportedSpatialAggregationStatistics:{envelope:!1,centroid:!1,convexHull:!1},supportsDefaultSpatialReference:!!f?.supportsDefaultSR,supportsFullTextSearch:!1,supportsCompactGeometry:!1,standardMaxRecordCount:void 0,standardMaxRecordCountNoGeometry:void 0,tileMaxRecordCount:void 0,supportsTrueCurve:!1},mensuration:{supportsDistanceAndAngle:p,supportsAreaAndPerimeter:p,supportsPointOrCentroid:p,supportsHeightFromBaseAndTop:l&&u.includes("base-top height"),supportsHeightFromBaseAndTopShadow:l&&u.includes("base-top shadow height"),supportsHeightFromTopAndTopShadow:l&&u.includes("top-top shadow height"),supports3D:l&&u.includes("3d")}}}};function $e(e){return e?.path??""}return e([u({clonable:!1})],We.prototype,"_functionRasterInfos",void 0),e([u({readOnly:!0})],We.prototype,"_serviceSupportsMosaicRule",void 0),e([Je("_serviceSupportsMosaicRule",["currentVersion","fields"])],We.prototype,"readServiceSupportsMosaicRule",null),e([u({readOnly:!0})],We.prototype,"_rasterFunctionNamesIndex",null),e([u()],We.prototype,"_projectedFullExtent",void 0),e([u({clonable:!1})],We.prototype,"_exportTileQueue",void 0),e([u()],We.prototype,"adjustAspectRatio",void 0),e([u({type:[c],json:{write:!0}})],We.prototype,"bandIds",void 0),e([Je("bandIds")],We.prototype,"readBandIds",null),e([u({readOnly:!0,json:{read:!1}})],We.prototype,"capabilities",void 0),e([Je("service","capabilities",["capabilities","currentVersion","serviceDataType"])],We.prototype,"readCapabilities",null),e([u({type:Number})],We.prototype,"compressionQuality",void 0),e([Be("compressionQuality")],We.prototype,"writeCompressionQuality",null),e([u({type:Number})],We.prototype,"compressionTolerance",void 0),e([Be("compressionTolerance")],We.prototype,"writeCompressionTolerance",null),e([u({json:{read:{source:"copyrightText"}}})],We.prototype,"copyright",void 0),e([u({readOnly:!0})],We.prototype,"defaultMosaicRule",void 0),e([Je("defaultMosaicRule",["defaultMosaicMethod"])],We.prototype,"readDefaultMosaicRule",null),e([u({type:String,json:{name:"layerDefinition.definitionExpression",write:{enabled:!0,allowNull:!0}}})],We.prototype,"definitionExpression",void 0),e([u({readOnly:!0,constructOnly:!0})],We.prototype,"exportImageServiceParameters",void 0),e([u()],We.prototype,"rasterInfo",void 0),e([u({readOnly:!0,type:[M]})],We.prototype,"fields",void 0),e([u({readOnly:!0})],We.prototype,"fieldsIndex",null),e([u({type:["png","png8","png24","png32","jpg","bmp","gif","jpgpng","lerc","tiff","bip","bsq"],json:{write:!0}})],We.prototype,"format",null),e([Je("service","format",["serviceDataType"])],We.prototype,"readFormat",null),e([u({type:d})],We.prototype,"fullExtent",void 0),e([u({readOnly:!0})],We.prototype,"hasMultidimensions",void 0),e([u({json:{read:{source:"maxImageHeight"}}})],We.prototype,"imageMaxHeight",void 0),e([u({json:{read:{source:"maxImageWidth"}}})],We.prototype,"imageMaxWidth",void 0),e([u({type:String,json:{type:A.jsonValues,read:A.read,write:A.write}})],We.prototype,"interpolation",void 0),e([u()],We.prototype,"minScale",void 0),e([Je("service","minScale")],We.prototype,"readMinScale",null),e([u()],We.prototype,"maxScale",void 0),e([Je("service","maxScale")],We.prototype,"readMaxScale",null),e([u({type:P})],We.prototype,"mosaicRule",null),e([Je("mosaicRule",["mosaicRule","defaultMosaicMethod"])],We.prototype,"readMosaicRule",null),e([Be("mosaicRule")],We.prototype,"writeMosaicRule",null),e([u()],We.prototype,"multidimensionalInfo",void 0),e([u({type:j,json:{write:!0}})],We.prototype,"multidimensionalSubset",void 0),e([u({json:{type:[Number,[Number]],write:!0}})],We.prototype,"noData",void 0),e([u({type:String,json:{type:Q.jsonValues,read:Q.read,write:Q.write}})],We.prototype,"noDataInterpretation",void 0),e([u({type:String,readOnly:!0,json:{read:{source:["fields"]}}})],We.prototype,"objectIdField",void 0),e([Je("objectIdField")],We.prototype,"readObjectIdField",null),e([u({readOnly:!0})],We.prototype,"geometryType",void 0),e([u({})],We.prototype,"typeIdField",void 0),e([u({})],We.prototype,"types",void 0),e([u({readOnly:!0})],We.prototype,"parsedUrl",null),e([u({type:Function})],We.prototype,"pixelFilter",void 0),e([u()],We.prototype,"raster",void 0),e([u({readOnly:!0})],We.prototype,"sourceType",void 0),e([Je("sourceType",["serviceSourceType","fields"])],We.prototype,"readSourceType",null),e([u()],We.prototype,"viewId",void 0),e([u({types:ne})],We.prototype,"renderer",null),e([u({types:ne,json:{name:"layerDefinition.drawingInfo.renderer",origins:{"web-scene":{types:ae,name:"layerDefinition.drawingInfo.renderer",write:{overridePolicy:e=>({enabled:e&&"vector-field"!==e.type})}}}}})],We.prototype,"internalRenderer",null),e([Je("internalRenderer")],We.prototype,"readRenderer",null),e([Be("internalRenderer")],We.prototype,"writeRenderer",null),e([u({clonable:!1})],We.prototype,"symbolizer",void 0),e([u(F)],We.prototype,"opacity",void 0),e([u({readOnly:!0})],We.prototype,"rasterFields",null),e([u({constructOnly:!0})],We.prototype,"rasterFunctionInfos",void 0),e([u({type:K,json:{name:"renderingRule"}})],We.prototype,"rasterFunction",null),e([Je("rasterFunction",["renderingRule","rasterFunctionInfos"])],We.prototype,"readRasterFunction",null),e([u({readOnly:!0})],We.prototype,"serviceDataType",void 0),e([u({readOnly:!0,type:g})],We.prototype,"spatialReference",void 0),e([Je("spatialReference",["spatialReference","extent"])],We.prototype,"readSpatialReference",null),e([u({type:V.apiValues,json:{read:V.read,type:V.jsonValues}})],We.prototype,"pixelType",void 0),e([Be("pixelType")],We.prototype,"writePixelType",null),e([u({constructOnly:!0,type:Y})],We.prototype,"serviceRasterInfo",void 0),e([u()],We.prototype,"sourceJSON",void 0),e([u(D)],We.prototype,"url",void 0),e([u({readOnly:!0})],We.prototype,"version",void 0),e([Je("version",["currentVersion","fields","timeInfo"])],We.prototype,"readVersion",null),We=e([p("esri.layers.mixins.ArcGISImageService")],We),We};export{Ge as ArcGISImageService};
2
+ import{__decorate as e}from"tslib";import t from"../../Graphic.js";import i from"../../request.js";import r from"../../core/Error.js";import{clone as s}from"../../core/lang.js";import n from"../../core/Logger.js";import{QueueProcessor as a}from"../../core/QueueProcessor.js";import{watch as o}from"../../core/reactiveUtils.js";import{urlToObject as l}from"../../core/urlUtils.js";import{property as u,subclass as p}from"../../core/accessorSupport/decorators.js";import{Integer as c,ensureClass as m}from"../../core/accessorSupport/ensureType.js";import{runUntracked as h}from"../../core/accessorSupport/tracking.js";import d from"../../geometry/Extent.js";import f from"../../geometry/Polygon.js";import g from"../../geometry/SpatialReference.js";import{srToRESTValue as y}from"../../geometry/support/spatialReferenceUtils.js";import{intersectMultimensionalSubset as R,getEffectiveMultidimensionalDefinition as x,getSubsetVariablesFromMdInfo as I,getDefaultMultidimensionalDefinition as w}from"../raster/datasets/multidimensionalUtils.js";import{decode as v,getFormat as b}from"../raster/formats/RasterCodec.js";import{mosaicPixelData as S}from"../raster/functions/pixelUtils.js";import{uvComponentToVector as _}from"../raster/functions/vectorFieldUtils.js";import{opacity as F,url as D}from"../support/commonProperties.js";import O from"../support/DimensionalDefinition.js";import{ExportImageServiceParameters as T}from"../support/ExportImageServiceParameters.js";import M from"../support/Field.js";import C from"../support/FieldsIndex.js";import{createBitmap as q}from"../support/imageBitmapUtils.js";import{isSupportedRendererType as N}from"../support/imageryRendererUtils.js";import j from"../support/MosaicRule.js";import P from"../support/MultidimensionalSubset.js";import E from"../support/PixelBlock.js";import{interpolationKebab as A,noDataInterpretationKebab as Q,pixelTypeKebabDict as V}from"../support/rasterEnums.js";import{getServicePixelValueField as J,getItemPixelValueField as B,getRawServicePixelValueField as U,getProcessedServicePixelValueField as z,getMagnitudeField as L,getDirectionField as H,getMultidimensionalFields as G,getRasterAttributeTableFields as k,addMultidimensionalFieldValues as W,commonRasterFieldNames as $,rasterFieldPrefix as X}from"../support/rasterFieldUtils.js";import K from"../support/RasterFunction.js";import Y from"../support/RasterInfo.js";import{createDefaultRenderer as Z,getDefaultBandCombination as ee,getSupportedRendererTypes as te,matchPresetRenderer as ie,normalizeRendererJSON as re}from"../../renderers/support/rasterRendererHelper.js";import se from"../../renderers/support/RasterSymbolizer.js";import{rasterRendererTypes as ne,websceneRasterRendererTypes as ae,read as oe}from"../../renderers/support/rasterTypeUtils.js";import{calculateVolume as le,computeAngles as ue,computePixelSpaceLocations as pe,computeHistograms as ce,computeStatisticsHistograms as me,measureHeight as he,measureAreaAndPerimeter as de,measureDistanceAndAngle as fe,measurePointOrCentroid as ge,measureLengthFromImage as ye,measureAreaFromImage as Re,getImageSpatialReferenceQueryParameter as xe,getSamples as Ie,identify as we,imageToMap as ve,imageToMapMultiray as be,mapToImage as Se,findImages as _e,getImageUrl as Fe,queryBoundary as De,queryGPSInfo as Oe}from"../../rest/imageService.js";import{fetchServiceRasterInfo as Te,generateRasterInfo as Me,patchServiceInfo as Ce}from"../../rest/imageService/fetchRasterInfo.js";import{getCatalogItemRasterInfo as qe}from"../../rest/imageService/getCatalogItemRasterInfo.js";import{executeForCount as Ne}from"../../rest/query/executeForCount.js";import{executeForExtent as je}from"../../rest/query/executeForExtent.js";import{executeForIds as Pe}from"../../rest/query/executeForIds.js";import{executeQueryJSON as Ee}from"../../rest/query/executeQueryJSON.js";import Ae from"../../rest/support/FeatureSet.js";import Qe from"../../rest/support/ImageIdentifyParameters.js";import Ve from"../../rest/support/Query.js";import{reader as Je}from"../../core/accessorSupport/decorators/reader.js";import{writer as Be}from"../../core/accessorSupport/decorators/writer.js";const Ue=512,ze=4096,Le=new Set(["png","png8","png24","png32","jpg","bmp","gif","jpgpng","lerc","tiff"]);function He(e){const t=JSON.stringify(e),i=t.includes('"rasterFunctionDefinition":{'),r=i?t.match(/"type":"(.*?FunctionArguments")/gi):t.match(/"rasterFunction":"(.*?")/gi),s=r?.map(e=>i?e.slice(8,-18):e.slice(18,-1));return s?s.join("/"):null}const Ge=Ge=>{const ke=Ge;let We=class extends ke{constructor(){super(...arguments),this._functionRasterInfos={},this._serviceSupportsMosaicRule=null,this._exportTileQueue=new a({concurrency:4,process:(e,t)=>this._fetchPixels(e.extent,e.width,e.height,{...e.options,signal:t})}),this.adjustAspectRatio=null,this.bandIds=void 0,this.capabilities=null,this.compressionQuality=void 0,this.compressionTolerance=.01,this.copyright=null,this.defaultMosaicRule=null,this.definitionExpression=null,this.exportImageServiceParameters=null,this.rasterInfo=null,this.fields=null,this.fullExtent=null,this.hasMultidimensions=!1,this.imageMaxHeight=4100,this.imageMaxWidth=4100,this.interpolation=void 0,this.minScale=0,this.maxScale=0,this.multidimensionalInfo=null,this.multidimensionalSubset=null,this.noData=null,this.noDataInterpretation=void 0,this.objectIdField=null,this.geometryType="polygon",this.typeIdField=null,this.types=[],this.pixelFilter=null,this.raster=void 0,this.sourceType=null,this.viewId=void 0,this.symbolizer=null,this.rasterFunctionInfos=null,this.serviceDataType=null,this.spatialReference=null,this.pixelType=null,this.serviceRasterInfo=null,this.sourceJSON=null,this.url=null,this.version=void 0}initialize(){this._set("exportImageServiceParameters",new T({layer:this}))}readServiceSupportsMosaicRule(e,t){return this._isMosaicRuleSupported(t)}get _rasterFunctionNamesIndex(){const e=new Map;return!this.rasterFunctionInfos||null!=this.rasterFunctionInfos&&this.rasterFunctionInfos.length<1||null!=this.rasterFunctionInfos&&this.rasterFunctionInfos.forEach(t=>{e.set(t.name.toLowerCase().replaceAll(/ /gi,"_"),t.name)}),e}readBandIds(e,t){if(Array.isArray(e)&&e.length>0&&e.every(e=>"number"==typeof e))return e}readCapabilities(e,t){return this._readCapabilities(t)}writeCompressionQuality(e,t,i){null!=e&&"lerc"!==this.format&&(t[i]=e)}writeCompressionTolerance(e,t,i){"lerc"===this.format&&null!=e&&(t[i]=e)}readDefaultMosaicRule(e,t){return this._serviceSupportsMosaicRule?h(()=>j.fromJSON(t)):null}get fieldsIndex(){return this.fields?new C(this.fields):null}set format(e){e&&Le.has(e.toLowerCase())&&this._set("format",e.toLowerCase())}readFormat(e,t){return"esriImageServiceDataTypeVector-UV"===t.serviceDataType||"esriImageServiceDataTypeVector-MagDir"===t.serviceDataType||null!=this.pixelFilter?"lerc":"jpgpng"}get isRenderedFormat(){return!this.format||this.format.includes("jpg")||this.format.includes("png")}readMinScale(e,t){return null!=t.minLOD&&null!=t.maxLOD?e:0}readMaxScale(e,t){return null!=t.minLOD&&null!=t.maxLOD?e:0}set mosaicRule(e){let t=e;t?.mosaicMethod&&(t=j.fromJSON({...t.toJSON(),mosaicMethod:t.mosaicMethod,mosaicOperation:t.mosaicOperation})),this._set("mosaicRule",t)}readMosaicRule(e,t){const i=e||t.mosaicRule;return i?j.fromJSON(i):this._isMosaicRuleSupported(t)?j.fromJSON(t):null}writeMosaicRule(e,t,i){const{mosaicRule:r}=this;this._isValidCustomizedMosaicRule(r)&&(t[i]=r.toJSON())}readObjectIdField(e,t){if(!e){const i=t.fields.find(e=>"esriFieldTypeOID"===e.type||"oid"===e.type);e=i?.name}return e}get parsedUrl(){return l(this.url)}readSourceType(e,t){return this._isMosaicDataset(t)?"mosaic-dataset":"raster-dataset"}get renderer(){const{activePresetRendererName:e,presetRenderers:t}=this;if(e){const i=t?.find(({name:t})=>t===e);return i?.renderer.clone()}return this.internalRenderer}set renderer(e){this.activePresetRendererName=null,this.internalRenderer=e}set internalRenderer(e){this.loaded&&(e=this._configRenderer(e)),this._set("internalRenderer",e)}readRenderer(e,t,i){const r=t?.layerDefinition?.drawingInfo?.renderer,s=oe(r,i);return null==s?null:("vector-field"===s.type&&t.symbolTileSize&&!r.symbolTileSize&&(s.symbolTileSize=t.symbolTileSize),N(s)||n.getLogger(this).warn("ArcGISImageService","Imagery layer doesn't support given renderer type."),s)}writeRenderer(e,t,i){t.layerDefinition=t.layerDefinition||{},t.layerDefinition.drawingInfo=t.layerDefinition.drawingInfo||{},t.layerDefinition.drawingInfo.renderer=e.toJSON()}get rasterFields(){const e=this.fields?.map(e=>e.clone())??[];e.push(J()),"mosaic-dataset"===this.sourceType&&this.fields?.length&&e.push(B()),this.version>=10.4&&null!=this.rasterFunctionInfos&&this.rasterFunctionInfos.some(({name:e})=>"none"===e.toLowerCase())&&e.push(U()),null!=this.rasterFunctionInfos&&this.rasterFunctionInfos.filter(({name:e})=>"none"!==e.toLowerCase()).forEach(({name:t})=>e.push(z(t)));const{rasterInfo:t}=this;if(this._isVectorDataSet()){const i=t?.multidimensionalInfo?.variables[0].unit?.trim(),r=L(i),s=H();e.push(r,s)}if(t?.multidimensionalInfo&&"raster-dataset"===this.sourceType){const i=G(t.multidimensionalInfo);e.push(...i)}const i=t?.attributeTable;if(null!=i){const t=k(i);e.push(...t)}return e}set rasterFunction(e){let t=e;t?.rasterFunction&&(t=K.fromJSON({...t.toJSON(),rasterFunction:t.rasterFunction,rasterFunctionArguments:t.rasterFunctionArguments})),this._set("rasterFunction",t)}readRasterFunction(e,t){const i=t.rasterFunctionInfos,r=t.renderingRule,s=null!=r&&Object.keys(r).length>0;return s||i?.length&&"None"!==i[0].name?this._isRFTJson(r)?K.fromJSON({rasterFunctionDefinition:r}):K.fromJSON(s?r:{rasterFunctionInfos:i}):null}readSpatialReference(e,t){const i=e||t.extent.spatialReference;return i?g.fromJSON(i):null}writePixelType(e,t,i){null!=this.serviceRasterInfo&&this.pixelType===this.serviceRasterInfo.pixelType||(t[i]=V.toJSON(e))}readVersion(e,t){let i=t.currentVersion;return i||(i=t.hasOwnProperty("fields")||t.hasOwnProperty("timeInfo")?10:9.3),i}applyFilter(e){let t=e;return this.pixelFilter&&(t=this._clonePixelData(e),this.pixelFilter(t)),t}async applyRenderer(e,t){let i=e,{renderer:r,symbolizer:s,pixelFilter:n}=this;const{isRawData:a}=e;if(a&&"lerc"!==this.format&&(r??=Z(this.rasterInfo,{bandIds:this.bandIds,variableName:this.rasterFunction?null:this.mosaicRule?.multidimensionalDefinition?.[0].variableName}),s||(this.symbolizer=new se({rendererJSON:r.toJSON(),rasterInfo:this.rasterInfo}),s=this.symbolizer)),(a||!this.isRenderedFormat)&&r&&s&&!n){await this._updateSymbolizer(s,r);const n=this.bandIds?.length?this.bandIds:ee(this.rasterInfo);i=await this._symbolize({pixelData:e,bandIds:n,symbolizer:s},t)}return i}destroy(){this._shutdownJobHandler()}async calculateVolume(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsCalculateVolume)throw new r("imagery-layer:compute-pixel-space-locations","this operation is not supported on the input image service");return e=s(e),this.mosaicRule&&null==e.mosaicRule&&(e.mosaicRule=this.mosaicRule),le(this.url,e,this._getRequestOptions(t))}async computeAngles(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsComputeAngles)throw new r("imagery-layer:compute-angles","this operation is not supported on the input image service");return ue(this.url,e,this._getRequestOptions(t))}async computePixelSpaceLocations(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsComputePixelLocation)throw new r("imagery-layer:compute-pixel-space-locations","this operation is not supported on the input image service");return pe(this.url,e,this._getRequestOptions(t))}async computeHistograms(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsComputeHistograms)throw new r("imagery-layer:compute-histograms","this operation is not supported on the input image service");return e=s(e),this._applyMosaicAndRenderingRules(e),ce(this.url,e,this._getRequestOptions(t))}async computeStatisticsHistograms(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsComputeStatisticsHistograms)throw new r("imagery-layer:compute-statistics-histograms","this operation is not supported on the input image service");return e=s(e),this._applyMosaicAndRenderingRules(e),me(this.url,e,this._getRequestOptions(t))}async measureHeight(e,t){const i=await this._fetchCapabilities(t?.signal);if(!("base-and-top"===e.operationType?i.mensuration.supportsHeightFromBaseAndTop:"base-and-top-shadow"===e.operationType?i.mensuration.supportsHeightFromBaseAndTopShadow:i.mensuration.supportsHeightFromTopAndTopShadow))throw new r("imagery-layer:measure-height","this operation is not supported on the input image service");return e=s(e),this._applyMosaicRule(e),he(this.url,e,this._getRequestOptions(t))}async measureAreaAndPerimeter(e,t){const i=await this._fetchCapabilities(t?.signal);if(!(i.mensuration.supportsAreaAndPerimeter&&(!e.is3D||i.mensuration.supports3D)))throw new r("imagery-layer:measure-area-and-perimeter","this operation is not supported on the input image service");return e=s(e),this._applyMosaicRule(e),de(this.url,e,this._getRequestOptions(t))}async measureDistanceAndAngle(e,t){const i=await this._fetchCapabilities(t?.signal);if(!(i.mensuration.supportsDistanceAndAngle&&(!e.is3D||i.mensuration.supports3D)))throw new r("imagery-layer:measure-distance-and-angle","this operation is not supported on the input image service");return e=s(e),this._applyMosaicRule(e),fe(this.url,e,this._getRequestOptions(t))}async measurePointOrCentroid(e,t){const i=await this._fetchCapabilities(t?.signal);if(!(i.mensuration.supportsPointOrCentroid&&(!e.is3D||i.mensuration.supports3D)))throw new r("imagery-layer:measure-point-or-centroid","this operation is not supported on the input image service");return e=s(e),this._applyMosaicRule(e),ge(this.url,e,this._getRequestOptions(t))}async measureLengthFromImage(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsMeasureFromImage)throw new r("imagery-layer:measure-length-from-image","this operation is not supported on the input image service");if("polyline"!==e.geometry.type)throw new r("imagery-layer:measure-length-from-image","this input geometry must be a polyline");return ye(this.url,e,this._getRequestOptions(t))}async measureAreaFromImage(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsMeasureFromImage)throw new r("imagery-layer:measure-area-from-image","this operation is not supported on the input image service");if("polygon"!==e.geometry.type)throw new r("imagery-layer:measure-area-from-image","this input geometry must be a polygon");return Re(this.url,e,this._getRequestOptions(t))}getField(e){const{fieldsIndex:t}=this;return null!=t?t.get(e):void 0}getFieldDomain(e,t){const i=this.getField(e);return i?i.domain:null}async internalFetchImage(e,t,i,r={}){await this._updateCurrentRasterInfo();const{exportImageServiceParameters:s}=this;let n=!1;if(r.requestRawData&&(await this._initJobHandler(),!s.requestRawData&&"lerc"!==this.format)){n=!0,s.requestRawData=!0;let e=this.bandIds;if(!e?.length){const t=ee(this.rasterInfo),i=Array.from({length:this.rasterInfo.bandCount},(e,t)=>t);i?.join(",")!==t?.join(",")&&(e=t)}s.rawDataRequestBandIds=e}const a=this.getExportImageServiceParameters(e,t,i,r.timeExtent);if(n&&(s.requestRawData=!1,s.rawDataRequestBandIds=null),null==a){if(r.requestAsImageElement&&this._canRequestImageElement(this.format)){const e=document.createElement("canvas");if(e.width=t,e.height=i,r.returnImageBitmap){const{bitmap:t}=await q(e,`${$e(this.parsedUrl)}/exportImage`,r);return{imageBitmap:t}}return{imageOrCanvasElement:e}}const{bandIds:s,rasterInfo:n}=this,a=(s?.length||n.bandCount)??0,o=t*i,l=n.pixelType,u=[];for(let e=0;e<a;e++)u.push(E.createEmptyBand(l,o));return{pixelData:{pixelBlock:new E({width:t,height:i,pixels:u,mask:new Uint8Array(o),pixelType:l}),extent:e}}}const o=!!r.requestAsImageElement&&!this.pixelFilter,l=o&&!!r.returnImageBitmap,u={imageServiceParameters:a,imageProps:{extent:e,width:t,height:i,format:this.format},requestAsImageElement:o,returnImageBitmap:l,signal:r.signal};return this._requestArrayBuffer(u)}async fetchPixels(e,t,i,s={}){await this._initJobHandler(),s.applyRendering&&await this._updateCurrentRasterInfo();const{imageMaxWidth:n,imageMaxHeight:a}=this;if(t<=n&&i<=a)return this._exportTileQueue.push({extent:e,width:t,height:i,options:s},{signal:s.signal});if(t>ze||i>ze||n<Ue||a<Ue)throw new r("imagery-layer:fetch-pixels",`The image service has a maximum export size of ${n}x${a}. The requested size of ${t}x${i} exceeds this limit.`);let{xmin:o,ymax:l,spatialReference:u}=this._projectedFullExtent??this.fullExtent;if(!u?.equals(e.spatialReference)){const{projectLoad:t,projectExecute:i}=await(import("../../geometry/operators/projectOperator.js"));await t();const r=i(this.fullExtent,e.spatialReference);o=r.xmin,l=r.ymax,this._projectedFullExtent=r}const p=e.width/t,c=e.height/i,m=Math.floor((e.xmin-o)/p),h=Math.floor((l-e.ymax)/c),f=m+t,g=h+i,y=Math.floor(m/Ue),R=Math.floor(h/Ue),x=Math.ceil(f/Ue)-1,I=Math.ceil(g/Ue)-1,w=Ue*p,v=Ue*c,b=[];for(let r=R;r<=I;r++){const t=l-r*v,i=t-v;for(let r=y;r<=x;r++){const n=o+r*w,a=new d({xmin:n,ymin:i,xmax:n+w,ymax:t,spatialReference:e.spatialReference});b.push(this._exportTileQueue.push({extent:a,width:Ue,height:Ue,options:s},{signal:s.signal}))}}const _=await Promise.all(b);if(_.some(e=>null==e.pixelBlock))return{extent:e,pixelBlock:null};return{extent:e,pixelBlock:this._rasterJobHandler?await this._rasterJobHandler.mosaicPixelData({pixelBlocks:_,destExtent:e},{signal:s.signal,transferPixelsToWorker:!0}):S(_,e)?.pixelBlock}}async _fetchPixels(e,t,i,r={}){const s=r.applyRendering?void 0:new T({layer:this,requestRawData:!0,interpolation:r.interpolation??"nearest",bandIds:r.bandIds??[]}),n=this.getExportImageServiceParameters(e,t,i,r.timeExtent,s);if(null==n)return{extent:e,pixelBlock:null};delete n.pixelType,r.bandIds||delete n.bandIds,delete n.compressionQuality;const a={imageServiceParameters:n,imageProps:{extent:e,width:t,height:i,format:this.format},requestAsImageElement:!1,returnImageBitmap:!1,signal:r.signal},{pixelData:o}=await this._requestArrayBuffer(a);return o??{extent:e,pixelBlock:null}}fetchKeyProperties(e){return i($e(this.parsedUrl)+"/keyProperties",{query:this._getQueryParams({renderingRule:this.version>=10.3?e?.rasterFunction:null})}).then(e=>e.data)}fetchRasterAttributeTable(e){return this.version<10.1?Promise.reject(new r("#fetchRasterAttributeTable()","Failed to get rasterAttributeTable")):i($e(this.parsedUrl)+"/rasterAttributeTable",{query:this._getQueryParams({renderingRule:this.version>=10.3?e?.rasterFunction:null})}).then(e=>Ae.fromJSON(e.data))}getCatalogItemRasterInfo(e,t){const i={...t,query:this._getQueryParams()};return qe($e(this.parsedUrl),e,i)}async getCatalogItemICSInfo(e,t){const{data:r}=await i($e(this.parsedUrl)+"/"+e+"/info/ics",{query:this._getQueryParams(),...t}),s=r?.ics;if(!s)return;let n=null;try{n=(await i($e(this.parsedUrl)+"/"+e+"/info",{query:this._getQueryParams(),...t})).data.extent}catch{}if(!n?.spatialReference)return{ics:s,icsToPixelTransform:null,icsExtent:null,northDirection:null};const a=this.version>=10.7?i($e(this.parsedUrl)+"/"+e+"/info/icstopixel",{query:this._getQueryParams(),...t}).then(e=>e.data).catch(()=>({})):{},o=n.spatialReference,l={geometries:JSON.stringify({geometryType:"esriGeometryEnvelope",geometries:[n]}),inSR:y(o),outSR:"0:"+e},u=i($e(this.parsedUrl)+"/project",{query:this._getQueryParams(l),...t}).then(e=>e.data).catch(()=>({})),p=5,c=(n.xmin+n.xmax)/2,m=(n.ymax-n.ymin)/(p+1),h=n.ymin+m,f=[];for(let i=0;i<p;i++)f.push({x:c,y:h+m*i});const R={geometries:JSON.stringify({geometryType:"esriGeometryPoint",geometries:f}),inSR:y(o),outSR:"0:"+e},x=i($e(this.parsedUrl)+"/project",{query:this._getQueryParams(R),...t}).then(e=>e.data).catch(()=>({})),I=await Promise.all([a,u,x]);let w=I[0].ipxf;if(null==w){const e=s.geodataXform?.xf_0;"topup"===e?.name?.toLowerCase()&&6===e?.coefficients?.length&&(w={affine:{name:"ics [sensor: Frame] to pixel (column, row) transformation",coefficients:e.coefficients,cellsizeRatio:0,type:"GeometricXform"}})}const v=d.fromJSON(I[1]?.geometries?.[0]);v&&(v.spatialReference=new g({wkid:0,imageCoordinateSystem:s}));const b=I[2].geometries?I[2].geometries.filter(e=>null!=e?.x&&null!=e.y&&"NaN"!==e.x&&"NaN"!==e.y):[],S=b.length;if(S<3)return{ics:s,icsToPixelTransform:w,icsExtent:v,northDirection:null};let _=0,F=0,D=0,O=0;for(let i=0;i<S;i++)_+=b[i].x,F+=b[i].y,D+=b[i].x*b[i].x,O+=b[i].x*b[i].y;const T=(S*O-_*F)/(S*D-_*_);let M=0;const C=b[p-1].x>b[0].x,q=b[p-1].y>b[0].y;return T===1/0?M=q?90:270:0===T?M=C?0:180:T>0?M=C?180*Math.atan(T)/Math.PI:180*Math.atan(T)/Math.PI+180:T<0&&(M=q?180+180*Math.atan(T)/Math.PI:360+180*Math.atan(T)/Math.PI),{ics:s,icsToPixelTransform:w,icsExtent:v,northDirection:M}}async generateRasterInfo(e,t){const i=m(K,e),s={...t,query:this._getQueryParams()};if(!i||"none"===i.functionName?.toLowerCase()||this._isVectorFieldResampleFunction(i))return this.serviceRasterInfo??Te($e(this.parsedUrl),this.sourceJSON,s);const n=He(i);if(!n)throw new r("imagery-layer:generate-raster-info","the rendering rule is not supported");if(this._functionRasterInfos[n])return this._functionRasterInfos[n];const a=Me($e(this.parsedUrl),i,s);this._functionRasterInfos[n]=a;try{const t=await a,{rasterFunction:i}=this;return(i===e||JSON.stringify(i)===JSON.stringify(e))&&JSON.stringify(this.rasterInfo)!==JSON.stringify(t)&&(this.rasterInfo=t),t}catch(o){throw this._functionRasterInfos[n]=null,o}}getExportImageServiceParameters(e,t,i,r,s){e=e.clone().shiftCentralMeridian();const n=xe(e.spatialReference,$e(this.parsedUrl));s??=this.exportImageServiceParameters;const a=s.toJSON(),{bandIds:o,noData:l}=a;let{renderingRule:u}=a;const p=this.rasterFunction?.rasterFunctionDefinition,c=this.renderer?.type,m=!c||"raster-stretch"===c||"raster-colormap"===c||"unique-value"===c||"class-breaks"===c||"raster-shaded-relief"===c;if(o?.length&&this._hasRasterFunction(this.rasterFunction)&&!p&&m){const e={rasterFunction:"ExtractBand",rasterFunctionArguments:{BandIds:o}};if("Stretch"===u.rasterFunction)e.rasterFunctionArguments.Raster=u.rasterFunctionArguments.Raster,u.rasterFunctionArguments.Raster=e;else if("Colormap"===u.rasterFunction){const t=u.rasterFunctionArguments.Raster;"Stretch"===t?.rasterFunction?(e.rasterFunctionArguments.Raster=t.rasterFunctionArguments.Raster,t.rasterFunctionArguments.Raster=e):(e.rasterFunctionArguments.Raster=t,u.rasterFunctionArguments.Raster=e)}else e.rasterFunctionArguments.Raster=u,u=e;a.bandIds=void 0}else a.bandIds=o?.join(",");Array.isArray(l)&&l.length>0&&(a.noData=l.join(","));const h=this._processMultidimensionalIntersection(null,r,s.mosaicRule);if(h.isOutSide)return null;a.mosaicRule=null!=h.mosaicRule?JSON.stringify(h.mosaicRule):null,r=h.timeExtent,a.renderingRule=this._getRenderingRuleString(K.fromJSON(u));const d={};if(null!=r){const{start:e,end:t}=r.toJSON();e&&t&&e===t?d.time=""+e:null==e&&null==t||(d.time=`${e??"null"},${t??"null"}`)}return{bbox:e.xmin+","+e.ymin+","+e.xmax+","+e.ymax,bboxSR:n,imageSR:n,size:t+","+i,...a,...d}}async getSamples(e,t){const i=await this._fetchCapabilities(t?.signal);if(!i?.operations.supportsGetSamples)throw new r("imagery-layer:get-samples","getSamples operation is not supported on the input image service");e=s(e);const{raster:n}=this;return n&&null==e.raster&&(e.raster=n),Ie(this.url,e,this._getRequestOptions(t))}async identify(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsIdentify)throw new r("imagery-layer:identify","identify operation is not supported on the input image service");e=s(e),this.version<10.91&&"extent"===e.geometry?.type&&(e.geometry=f.fromExtent(e.geometry));const i=this._processMultidimensionalIntersection(e.geometry,e.timeExtent,e.mosaicRule||this.mosaicRule);if(i.isOutSide)throw new r("imagery-layer:identify","the request cannot be fulfilled when falling outside of the multidimensional subset");e.timeExtent=i.timeExtent,e.mosaicRule=i.mosaicRule;const{raster:n,rasterFunction:a}=this;return a&&null==e.rasterFunction&&(e.rasterFunction=a),n&&null==e.raster&&(e.raster=n),we(this.url,e,this._getRequestOptions(t))}async imageToMap(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsImageToMap)throw new r("imagery-layer:image-to-map","imageToMap operation is not supported on the input image service");return ve($e(this.parsedUrl),e,this._getRequestOptions(t))}async imageToMapMultiray(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsImageToMapMultiray)throw new r("imagery-layer:image-to-map-multiray","imageToMapMultiray operation is not supported on the input image service");return be($e(this.parsedUrl),e,this._getRequestOptions(t))}async mapToImage(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsMapToImage)throw new r("imagery-layer:map-to-image","mapToImage operation is not supported on the input image service");return Se($e(this.parsedUrl),e,this._getRequestOptions(t))}async findImages(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsFindImages)throw new r("imagery-layer:find-images","findImages operation is not supported on the input image service");return _e($e(this.parsedUrl),e,this._getRequestOptions(t))}async getImageUrl(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsGetImageUrl)throw new r("imagery-layer:get-image-url","getImageUrl operation is not supported on the input image service");return Fe($e(this.parsedUrl),e,this._getRequestOptions(t))}createQuery(){return new Ve({outFields:["*"],returnGeometry:!0,where:this.definitionExpression||"1=1"})}async queryBoundary(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsQueryBoundary)throw new r("imagery-layer:query-boundary","queryBoundary operation is not supported on the input image service");return e=e??{outSpatialReference:this.spatialReference},De($e(this.parsedUrl),e,this._getRequestOptions(t))}async queryExtent(e,t){({query:e,requestOptions:t}=await this._prepareForQuery(e,t));const{where:i,objectIds:r,geometry:s,timeExtent:n,start:a,num:o,pixelSize:l}=e,u=null!=i&&"1=1"!==i,p=null!=r&&r.length>0,c=null!=s&&("extent"!==s.type||!s.equals(this.fullExtent)),m=null!=l,h=null!=a||null!=o,{timeInfo:d}=this,f=null!=n&&null!=d&&!n.equals(d.fullTimeExtent);if(!(u||p||c||m||f||h)){const i=await Ne(this.url,e,t),{outSpatialReference:r}=e;if(!r||r.equals(this.spatialReference))return{count:i,extent:this.fullExtent.clone()};const{projectLoad:s,projectExecute:n}=await(import("../../geometry/operators/projectOperator.js"));await s();return{count:i,extent:n(this.fullExtent,r)}}return je(this.url,e,t)}async queryRasters(e,t){({query:e,requestOptions:t}=await this._prepareForQuery(e,t));const i=await Ee(this.url,e,t),r=this.graphicOrigin;return i.features.forEach(e=>{e.layer=this,e.origin=r}),i}async queryObjectIds(e,t){return({query:e,requestOptions:t}=await this._prepareForQuery(e,t)),Pe(this.url,e,t)}async queryGPSInfo(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsQueryGPSInfo)throw new r("imagery-layer:query-gps-info","queryGPSInfo operation is not supported on the input image service");return e=e??{where:"1=1"},Oe($e(this.parsedUrl),e,this._getRequestOptions(t))}async queryRasterCount(e,t){return({query:e,requestOptions:t}=await this._prepareForQuery(e,t)),Ne(this.url,e,t)}async queryVisibleRasters(e,t){if(!e)throw new r("imagery-layer: query-visible-rasters","missing query parameter");await this.load();const{pixelSize:i,returnDomainValues:s,returnTopmostRaster:n,showNoDataRecords:a}=t||{pixelSize:null,returnDomainValues:!1,returnTopmostRaster:!1,showNoDataRecords:!1};let o=!1,l=null,u=null;const p=$.servicePixelValue.toLowerCase(),c=this._rasterFunctionNamesIndex;if(null!=e.outFields&&(o=e.outFields.some(e=>!e.toLowerCase().startsWith(p)),this.version>=10.4)){const t=e.outFields.filter(e=>e.toLowerCase().startsWith(p)&&e.length>p.length).map(e=>{const t=e.slice(p.length+1);return[this._updateRenderingRulesFunctionName(t,c),t]});l=t.map(e=>new K({functionName:e[0]})),u=t.map(e=>e[1]);const{rasterFunction:i}=this;0===l.length?i?.functionName?(l.push(i),u.push(i.functionName)):l=null:i?.functionName&&!l.some(e=>e.functionName===i.functionName)&&(l.push(i),u.push(i.functionName))}const m=null==e.outSpatialReference||e.outSpatialReference.equals(this.spatialReference),{multidimensionalSubset:h}=this;let d=e.timeExtent||this.timeExtent;if(h){const{isOutside:t,intersection:i}=R(h,{geometry:e.geometry,timeExtent:e.timeExtent,multidimensionalDefinition:this.exportImageServiceParameters.mosaicRule?.multidimensionalDefinition});if(t)throw new r("imagery-layer:query-visible-rasters","the request cannot be fulfilled when falling outside of the multidimensional subset");null!=i?.timeExtent&&(d=i.timeExtent)}const g=this._combineMosaicRuleWithTimeExtent(this.exportImageServiceParameters.mosaicRule,d);let y=e.geometry;this.version<10.91&&"extent"===y?.type&&(y=f.fromExtent(y));const I=this._getQueryParams({geometry:y,timeExtent:d,mosaicRule:g,rasterFunction:this.version<10.4?this.rasterFunction:null,rasterFunctions:l,pixelSize:i,returnCatalogItems:o,returnGeometry:m,raster:this.raster,maxItemCount:n?1:null});delete I.f;const w=new Qe(I);try{await this._generateRasterInfo(this.rasterFunction);const i=await we(this.url,w,{signal:t?.signal,query:{...this.customParameters}}),r=e.outFields,n=null!=i.value&&i.value.toLowerCase().includes("nodata"),l=o&&!m&&i?.catalogItems?.features.length&&(a||!n),p=this.multidimensionalInfo&&"raster-dataset"===this.sourceType?x({rasterInfo:this.rasterInfo,multidimensionalDefinition:g?.multidimensionalDefinition,timeExtent:d,multidimensionalSubset:this.multidimensionalSubset}):null;if(!l)return this._processVisibleRastersResponse(i,{returnDomainValues:s,templateRRFunctionNames:u,showNoDataRecords:a,templateFields:r,effectiveMultidimensionalDefinition:p});const c=this.objectIdField||"ObjectId",h=i.catalogItems?.features??[],f=h.map(e=>e.attributes?.[c]),y=new Ve({objectIds:f,returnGeometry:!0,outSpatialReference:e.outSpatialReference,outFields:[c]}),R=await this.queryRasters(y);return R?.features?.length&&R.features.forEach(t=>{h.forEach(i=>{i.attributes[c]===t.attributes[c]&&t.geometry&&(i.geometry=t.geometry.clone(),null!=e.outSpatialReference&&(i.geometry.spatialReference=e.outSpatialReference))})}),this._processVisibleRastersResponse(i,{returnDomainValues:s,templateRRFunctionNames:u,showNoDataRecords:a,templateFields:r,effectiveMultidimensionalDefinition:p})}catch{throw new r("imagery-layer:query-visible-rasters","encountered error when querying visible rasters")}}async fetchVariableStatisticsHistograms(e,t){const r=i($e(this.parsedUrl)+"/statistics",{query:this._getQueryParams({variable:e}),signal:t}).then(e=>e.data?.statistics),s=i($e(this.parsedUrl)+"/histograms",{query:this._getQueryParams({variable:e}),signal:t}).then(e=>e.data?.histograms),n=await Promise.all([r,s]);return n[0]&&n[0].forEach(e=>{e.avg=e.mean,e.stddev=e.standardDeviation}),{statistics:n[0]||null,histograms:n[1]||null}}getMultidimensionalSubsetVariables(e){const t=e??this.serviceRasterInfo.multidimensionalInfo;return I(this.multidimensionalSubset,t)}async _fetchService(e){await this._fetchServiceInfo(e),this.rasterInfo||(this.rasterInfo=this.serviceRasterInfo);const t=this.sourceJSON,i=null!=this.serviceRasterInfo?Promise.resolve(this.serviceRasterInfo):Te($e(this.parsedUrl),t,{signal:e,query:this._getQueryParams()}).then(e=>(this._set("serviceRasterInfo",e),this._set("multidimensionalInfo",e.multidimensionalInfo),Ce(e,t),e)),r=this._hasRasterFunction(this.rasterFunction)?this._generateRasterInfo(this.rasterFunction,{signal:e}):null,s=this._getRasterFunctionInfos();return Promise.all([i,r,s]).then(e=>{e[1]?this._set("rasterInfo",e[1]):this._set("rasterInfo",e[0]),e[2]&&this._set("rasterFunctionInfos",e[2]),this.internalRenderer&&!this._isSupportedRenderer(this.internalRenderer)&&(this._set("internalRenderer",null),n.getLogger(this).warn("ArcGISImageService","Switching to the default renderer. Renderer applied is not valid for this Imagery Layer")),this._set("internalRenderer",this._configRenderer(this.renderer)),this.addHandles([o(()=>this.rasterFunction,e=>{(this.renderer||this.symbolizer||this.popupEnabled&&this.popupTemplate)&&this._generateRasterInfo(e).then(e=>{e&&(this.rasterInfo=e)})})]);const{serviceRasterInfo:t}=this;null!=t.multidimensionalInfo&&this._updateMultidimensionalDefinition(t)})}_combineMosaicRuleWithTimeExtent(e,t){const i=this.timeInfo,{multidimensionalInfo:r}=this.serviceRasterInfo;if(null==e||null==r||null==t||null==i?.startField)return e;const{startField:s}=i,n=r.variables.some(e=>e.dimensions.some(e=>e.name===s))?s:"StdTime";if(e=e.clone(),"mosaic-dataset"===this.sourceType)return e.multidimensionalDefinition=e.multidimensionalDefinition?.filter(e=>e.dimensionName!==n),this._cleanupMultidimensionalDefinition(e);e.multidimensionalDefinition=e.multidimensionalDefinition||[];const a=e.multidimensionalDefinition.filter(e=>e.dimensionName===n),o=null!=t.start?t.start.getTime():null,l=null!=t.end?t.end.getTime():null,u=null==o||null==l||o===l,p=u?[o||l]:[[o,l]],c=this.version>=10.8;if(a.length)a.forEach(e=>{e.dimensionName===n&&(c?(e.dimensionName=null,e.isSlice=!1,e.values=[]):(e.isSlice=u,e.values=p))});else if(!c){const t=e.multidimensionalDefinition.filter(e=>null!=e.variableName&&null==e.dimensionName);t.length?t.forEach(e=>{e.dimensionName=n,e.isSlice=u,e.values=p}):e.multidimensionalDefinition.push(new O({variableName:"",dimensionName:n,isSlice:u,values:p}))}return this._cleanupMultidimensionalDefinition(e)}_cleanupMultidimensionalDefinition(e){return null==e?null:(e.multidimensionalDefinition&&(e.multidimensionalDefinition=e.multidimensionalDefinition.filter(e=>!(!e.variableName&&!e.dimensionName)),0===e.multidimensionalDefinition.length&&(e.multidimensionalDefinition=null)),"mosaic-dataset"!==this.sourceType&&null==e.multidimensionalDefinition?null:e)}async _prepareForQuery(e,t){if(!(await this._fetchCapabilities(t?.signal)).operations.supportsQuery)throw new r("imagery-layer:query-rasters","query operation is not supported on the input image service");const i=null!=e?m(Ve,e):this.createQuery();return t=this._getRequestOptions(t),this.raster&&(t.query={...t.query,raster:this.raster}),{query:i,requestOptions:t}}_isSupportedRenderer(e){const{rasterInfo:t,rasterFunction:i}=this;return"unique-value"===e.type&&this._hasRasterFunction(i)&&1===t?.bandCount&&["u8","s8"].includes(t.pixelType)||null!=t&&null!=e&&te(t).includes(e.type)}async _fetchCapabilities(e){return this.capabilities||await this._fetchServiceInfo(e),this.capabilities}async _fetchServiceInfo(e){let t=this.sourceJSON;if(!t){const{data:r,ssl:s}=await i($e(this.parsedUrl),{query:this._getQueryParams(),signal:e});t=r,this.sourceJSON=t,s&&(this.url=this.url.replace(/^http:/i,"https:"))}if(t.capabilities?.toLowerCase().split(",").map(e=>e.trim()).indexOf("tilesonly")>-1)throw new r("imagery-layer:fetch-service-info","use ImageryTileLayer to open tiles-only image services");this.read(t,{origin:"service",url:this.parsedUrl})}_isMosaicDataset(e){return e.serviceSourceType?"esriImageServiceSourceTypeMosaicDataset"===e.serviceSourceType:e.fields?.length>0}_isMosaicRuleSupported(e){if(!e)return!1;const t=this._isMosaicDataset(e),i=e.currentVersion>=10.71&&e.hasMultidimensions&&!(e.fields?.length>1);return t||i}_isVectorFieldResampleFunction(e){if(null==e)return!1;const{functionName:t,functionArguments:i}=e,r="resample"===t?.toLowerCase(),s=i?.ResampleType||i?.resampleType;return r&&(7===s||10===s)}_configRenderer(e){const{rasterInfo:t}=this;if(!this.isRenderedFormat&&!this.pixelFilter||this._isVectorDataSet()){const i=this.mosaicRule?.multidimensionalDefinition?.[0].variableName,r=ie({variableName:i,rasterFunctionName:this.rasterFunction?.functionName,presetRenderers:this.presetRenderers});if(!this.bandIds&&t.bandCount>=3){const e=r?.bandIds??ee(t);!e||3===t.bandCount&&0===e[0]&&1===e[1]&&2===e[2]||(this.bandIds=e)}e||(e=r?.renderer??Z(t,{bandIds:this.bandIds,variableName:this.rasterFunction?null:i}));const s=re(e.toJSON());this.symbolizer?(this.symbolizer.rendererJSON=s,this.symbolizer.rasterInfo=t):this.symbolizer=new se({rendererJSON:s,rasterInfo:t}),this.symbolizer.bind().success||(this.symbolizer=null)}return e}_clonePixelData(e){return null==e?e:{extent:e.extent&&e.extent.clone(),pixelBlock:null!=e.pixelBlock?e.pixelBlock.clone():null}}_getQueryParams(e){null!=e?.renderingRule&&"string"!=typeof e.renderingRule&&(e.renderingRule=this._getRenderingRuleString(e.renderingRule));const{raster:t,viewId:i}=this;return{raster:t,viewId:i,f:"json",...e,...this.customParameters}}_getRequestOptions(e){return{...e,query:{...e?.query,...this.customParameters}}}_decodePixelBlock(e,t,i){return this._rasterJobHandler?this._rasterJobHandler.decode({data:e,options:t}):v(e,t,i)}async _getRasterFunctionInfos(e){const t=this.sourceJSON.rasterFunctionInfos;if(this.loaded)return t;if(t&&this.version>=10.3){if(1===t.length&&"none"===t[0].name.toLowerCase())return t;const r=await i($e(this.parsedUrl)+"/rasterFunctionInfos",{query:this._getQueryParams(),signal:e});return r.data?.rasterFunctionInfos}return null}_canRequestImageElement(e){return!this.pixelFilter&&(!e||e.includes("png"))}async _requestArrayBuffer(e){const{imageProps:t,requestAsImageElement:s,returnImageBitmap:n,signal:a}=e;if(s&&this._canRequestImageElement(t.format)){const r=`${$e(this.parsedUrl)}/exportImage`,{data:s}=await i(r,{responseType:n?"blob":"image",query:this._getQueryParams({f:"image",...this.refreshParameters,...e.imageServiceParameters}),signal:a});if(s instanceof Blob){const{bitmap:e}=await q(s,r,{signal:a});return{imageBitmap:e,params:t}}return{imageOrCanvasElement:s,params:t}}const o=this._initJobHandler(),l=i($e(this.parsedUrl)+"/exportImage",{responseType:"array-buffer",query:this._getQueryParams({f:"image",...e.imageServiceParameters}),signal:a}),u=(await Promise.all([l,o]))[0].data,p=t.format||"jpgpng";let c=p;if("bsq"!==c&&"bip"!==c&&(c=b(u)),!c)throw new r("imagery-layer:fetch-image","unsupported format signature "+String.fromCharCode.apply(null,new Uint8Array(u)));const m={signal:a},h=this._decodePixelBlock(u,{width:t.width,height:t.height,format:p,applyJpegMask:!0},m);return{pixelData:{pixelBlock:await h,extent:t.extent},params:t}}_generateRasterInfo(e,t){return this.generateRasterInfo(e,t).catch(()=>null)}_isValidCustomizedMosaicRule(e){return e&&JSON.stringify(e.toJSON())!==JSON.stringify(this.defaultMosaicRule?.toJSON())}_updateMultidimensionalDefinition(e){if(this._isValidCustomizedMosaicRule(this.mosaicRule))return;let t=w(e,{multidimensionalSubset:this.multidimensionalSubset});if(null!=t&&t.length>0){this.mosaicRule=this.mosaicRule||new j;const e=this.mosaicRule.multidimensionalDefinition;!this.sourceJSON.defaultVariableName&&this.rasterFunction&&"none"!==this.rasterFunction.functionName?.toLowerCase()&&t.forEach(e=>e.variableName=""),t=t.filter(({variableName:e,dimensionName:t})=>e&&"*"!==e||t),!e?.length&&t.length&&(this.mosaicRule.multidimensionalDefinition=t)}}_processVisibleRastersResponse(e,i){i=i||{};const r=e.value,{templateRRFunctionNames:s,showNoDataRecords:n,returnDomainValues:a,templateFields:o}=i,l=e.processedValues;let u=e.catalogItems?.features,p=e.properties?.Values?.map(e=>e.replaceAll(/ /gi,", "))||[];const c=this.objectIdField||"ObjectId",m="string"==typeof r&&r.toLowerCase().includes("nodata"),h=[];if(r&&!u&&(!m||n)){const e={};e[c]=0;p=[r],u=[new t({geometry:this.fullExtent,attributes:e})],this.multidimensionalInfo&&"raster-dataset"===this.sourceType&&W(this.rasterFields,e,i.effectiveMultidimensionalDefinition)}if(!u)return[];this._updateResponseFieldNames(u,o),m&&!n&&(u=[]);const{itemPixelValue:d,servicePixelValue:f}=$,g=this.rasterFields.some(e=>e.name===d),y=this.graphicOrigin;for(let t=0;t<u.length;t++){const e=u[t];if(null!=r){const i=p[t],a=this.rasterFunction&&l&&l.length>0&&s&&s.length>0&&s.includes(this.rasterFunction.functionName)?l[s.indexOf(this.rasterFunction.functionName)]:r;if("nodata"===i.toLowerCase()&&!n)continue;g&&(e.attributes[d]=i),e.attributes[f]=a,this._updateFeatureWithMagDirValues(e,i);const o=this.fields&&this.fields.length>0;let u=this.rasterFunction&&null!=this.serviceRasterInfo.attributeTable?o?i:r:a;this.rasterFunction||(u=o?i:r),this._updateFeatureWithRasterAttributeTableValues(e,u)}if(e.sourceLayer=e.layer=this,e.origin=y,a&&this._updateFeatureWithDomainValues(e),s&&l&&s.length===l.length)for(let t=0;t<s.length;t++){const i=`${$.servicePixelValue}.${s[t]}`;e.attributes[i]=l[t]}h.push(u[t])}return h}_processMultidimensionalIntersection(e,t,i){const{multidimensionalSubset:r}=this;if(!r)return{isOutSide:!1,timeExtent:t,mosaicRule:i=this._combineMosaicRuleWithTimeExtent(i,t)};if(r){const{isOutside:i,intersection:s}=R(r,{geometry:e,timeExtent:t});if(i)return{isOutSide:!0,timeExtent:null,mosaicRule:null};null!=s?.timeExtent&&(t=s.timeExtent)}if(i=this._combineMosaicRuleWithTimeExtent(i,t),i?.multidimensionalDefinition){const{isOutside:e}=R(r,{multidimensionalDefinition:i.multidimensionalDefinition});if(e)return{isOutSide:!0,timeExtent:null,mosaicRule:null}}return{isOutSide:!1,timeExtent:t,mosaicRule:i}}_updateFeatureWithRasterAttributeTableValues(e,t){const i=this.rasterInfo.attributeTable||this.serviceRasterInfo.attributeTable;if(null==i)return;const{features:r,fields:s}=i,n=s.map(e=>e.name).find(e=>"value"===e.toLowerCase());if(!n)return;const a=r.filter(e=>e.attributes[n]===(null!=t?parseInt(t,10):null));a&&a[0]&&s.forEach(t=>{const i=X+t.name;e.attributes[i]=a[0].attributes[t.name]})}_updateFeatureWithMagDirValues(e,t){if(!this._isVectorDataSet())return;const i=t.split(/,\s*/).map(e=>parseFloat(e)),r=i.map(e=>[e]),s=i.map(e=>({minValue:e,maxValue:e,noDataValue:null})),n=new E({height:1,width:1,pixelType:"f32",pixels:r,statistics:s});null!=this.pixelFilter&&this.pixelFilter({pixelBlock:n,extent:new d(0,0,0,0,this.spatialReference)});const a="esriImageServiceDataTypeVector-MagDir"===this.serviceDataType?[n.pixels[0][0],n.pixels[1][0]]:_([n.pixels[0][0],n.pixels[1][0]]);e.attributes[$.magnitude]=a[0],e.attributes[$.direction]=a[1]}_updateFeatureWithDomainValues(e){const t=this.fields&&this.fields.filter(e=>"coded-value"===e.domain?.type);null!=t&&t.forEach(t=>{const i=e.attributes[t.name];if(null!=i){const r=t.domain.codedValues.find(e=>e.code===i);r&&(e.attributes[t.name]=r.name)}})}_updateResponseFieldNames(e,t){if(!t||t.length<1)return;const i=this.fieldsIndex;null!=i&&e.forEach(e=>{if(e?.attributes)for(const r of t){const t=i.get(r)?.name;t&&t!==r&&(e.attributes[r]=e.attributes[t],delete e.attributes[t])}})}_getRenderingRuleString(e){if(e){let t=e.toJSON();return t=t.rasterFunctionDefinition??t,(t.thumbnail||t.thumbnailEx)&&(t.thumbnail=t.thumbnailEx=null),JSON.stringify(t)}return null}_hasRasterFunction(e){return null!=e?.functionName&&"none"!==e.functionName.toLowerCase()}_updateRenderingRulesFunctionName(e,t){if(!e||e.length<1)return;if("Raw"===e)return e.replace("Raw","None");const i=e.toLowerCase().replaceAll(/ /gi,"_");return t.has(i)?t.get(i):e}_isRFTJson(e){return e?.name&&e.arguments&&e.function&&e.hasOwnProperty("functionType")}_isVectorDataSet(){return"esriImageServiceDataTypeVector-UV"===this.serviceDataType||"esriImageServiceDataTypeVector-MagDir"===this.serviceDataType}_applyMosaicAndRenderingRules(e){const{raster:t,mosaicRule:i,rasterFunction:r}=this;r&&null==e.rasterFunction&&(e.rasterFunction=r),i&&null==e.mosaicRule&&(e.mosaicRule=i),t&&null==e.raster&&(e.raster=t)}async _updateCurrentRasterInfo(e){if(this.renderer||this.symbolizer){const t=await this._generateRasterInfo(this.rasterFunction,{signal:e});t&&(this.rasterInfo=t)}}_applyMosaicRule(e){const{raster:t,mosaicRule:i}=this;i&&null==e.mosaicRule&&(e.mosaicRule=i),t&&null==e.raster&&(e.raster=t)}_readCapabilities(e){const t=e.capabilities?e.capabilities.toLowerCase().split(",").map(e=>e.trim()):["image","catalog"],{currentVersion:i,maxRecordCount:r}=e,s=t.includes("image"),n="esriImageServiceDataTypeElevation"===e.serviceDataType,a=!(!e.spatialReference&&!e.extent?.spatialReference),o=t.includes("edit"),l=t.includes("mensuration")&&a,u=null==e.mensurationCapabilities?[]:e.mensurationCapabilities.toLowerCase().split(",").map(e=>e.trim()),p=l&&u.includes("basic"),c=this._isMosaicDataset(e)&&t.includes("catalog"),m=t.includes("download"),h=i>=10.7&&n||i>=11.4&&(n||l&&u.includes("3d")),d=c&&e.fields&&e.fields.length>0,f=d&&e.supportsAdvancedQueries?e.advancedQueryCapabilities:void 0;return{data:{supportsAttachment:!1},operations:{supportsComputeHistograms:s,supportsExportImage:s,supportsIdentify:s,supportsImageToMap:i>=11.2&&c,supportsImageToMapMultiray:i>=11.2&&c,supportsMapToImage:i>=11.2&&c,supportsFindImages:i>=11.2&&c,supportsGetImageUrl:i>=11.3&&m,supportsMeasure:l,supportsMeasureFromImage:i>=11.2,supportsDownload:m,supportsQuery:d,supportsGetSamples:i>=10.2&&s,supportsProject:i>=10.3&&s,supportsComputeStatisticsHistograms:i>=10.4&&s,supportsQueryBoundary:i>=10.6&&s,supportsCalculateVolume:h,supportsComputePixelLocation:i>=10.7&&c,supportsComputeAngles:i>=10.91,supportsQueryGPSInfo:i>=11.2&&c,supportsAdd:o,supportsDelete:o,supportsEditing:o,supportsUpdate:o,supportsCalculate:!1,supportsTruncate:!1,supportsValidateSql:!1,supportsChangeTracking:!1,supportsQueryAttachments:!1,supportsResizeAttachments:!1,supportsSync:!1,supportsExceedsLimitStatistics:!1,supportsQueryAnalytics:!1,supportsQueryBins:!1,supportsQueryPivot:!1,supportsQueryTopFeatures:!1,supportsAsyncConvert3D:!1},query:{maxRecordCount:r,maxRecordCountFactor:void 0,maxUniqueIDCount:void 0,relativeTimeBinWindow:void 0,supportsStatisticsAggregatedIds:!!f?.supportsAggregateIds,supportsStatistics:!!f?.supportsStatistics,supportsOrderBy:!!f?.supportsOrderBy,supportsDistinct:!!f?.supportsDistinct,supportsPagination:!!f?.supportsPagination,supportsPaginationOnAggregatedQueries:!!f?.supportsPaginationOnAggregatedQueries,supportsStandardizedQueriesOnly:!!f?.useStandardizedQueries,supportsPercentileStatistics:!!f?.supportsPercentileStatistics,supportsCentroid:!!f?.supportsReturningGeometryCentroid,supportsCentroidOnDegeneratedQuantizedGeometry:!1,supportsCurrentUser:!1,supportsDegeneratedQuantizedGeometry:!1,supportsDistance:!!f?.supportsQueryWithDistance,supportsOutDistance:!!f?.supportsOutDistance,supportsExtent:!!f?.supportsReturningQueryExtent,supportsGeometryProperties:!!f?.supportsReturningGeometryProperties,supportsHavingClause:!!f?.supportsHavingClause,supportsQuantization:!1,supportsQuantizationEditMode:!1,supportsQueryGeometry:!1,supportsResultType:!1,supportsReturnMesh:!1,supportsReturnExceededLimitGeometries:!1,supportsMaxRecordCountFactor:!1,supportsSqlExpression:f?.supportsSqlExpression??!!f,supportsTopFeaturesQuery:!1,supportsQueryByAnonymous:!1,supportsQueryByOthers:!1,supportsHistoricMoment:!1,supportsFormatPBF:!1,supportsFormatPBFWithCurves:!1,supportsDisjointSpatialRelationship:!1,supportsCacheHint:!1,supportsSpatialAggregationStatistics:!1,supportedSpatialAggregationStatistics:{envelope:!1,centroid:!1,convexHull:!1},supportsDefaultSpatialReference:!!f?.supportsDefaultSR,supportsFullTextSearch:!1,supportsCompactGeometry:!1,standardMaxRecordCount:void 0,standardMaxRecordCountNoGeometry:void 0,tileMaxRecordCount:void 0,supportsTrueCurve:!1},mensuration:{supportsDistanceAndAngle:p,supportsAreaAndPerimeter:p,supportsPointOrCentroid:p,supportsHeightFromBaseAndTop:l&&u.includes("base-top height"),supportsHeightFromBaseAndTopShadow:l&&u.includes("base-top shadow height"),supportsHeightFromTopAndTopShadow:l&&u.includes("top-top shadow height"),supports3D:l&&u.includes("3d")}}}};function $e(e){return e?.path??""}return e([u({clonable:!1})],We.prototype,"_functionRasterInfos",void 0),e([u({readOnly:!0})],We.prototype,"_serviceSupportsMosaicRule",void 0),e([Je("_serviceSupportsMosaicRule",["currentVersion","fields"])],We.prototype,"readServiceSupportsMosaicRule",null),e([u({readOnly:!0})],We.prototype,"_rasterFunctionNamesIndex",null),e([u()],We.prototype,"_projectedFullExtent",void 0),e([u({clonable:!1})],We.prototype,"_exportTileQueue",void 0),e([u()],We.prototype,"adjustAspectRatio",void 0),e([u({type:[c],json:{write:!0}})],We.prototype,"bandIds",void 0),e([Je("bandIds")],We.prototype,"readBandIds",null),e([u({readOnly:!0,json:{read:!1}})],We.prototype,"capabilities",void 0),e([Je("service","capabilities",["capabilities","currentVersion","serviceDataType"])],We.prototype,"readCapabilities",null),e([u({type:Number})],We.prototype,"compressionQuality",void 0),e([Be("compressionQuality")],We.prototype,"writeCompressionQuality",null),e([u({type:Number})],We.prototype,"compressionTolerance",void 0),e([Be("compressionTolerance")],We.prototype,"writeCompressionTolerance",null),e([u({json:{read:{source:"copyrightText"}}})],We.prototype,"copyright",void 0),e([u({readOnly:!0})],We.prototype,"defaultMosaicRule",void 0),e([Je("defaultMosaicRule",["defaultMosaicMethod"])],We.prototype,"readDefaultMosaicRule",null),e([u({type:String,json:{name:"layerDefinition.definitionExpression",write:{enabled:!0,allowNull:!0}}})],We.prototype,"definitionExpression",void 0),e([u({readOnly:!0,constructOnly:!0})],We.prototype,"exportImageServiceParameters",void 0),e([u()],We.prototype,"rasterInfo",void 0),e([u({readOnly:!0,type:[M]})],We.prototype,"fields",void 0),e([u({readOnly:!0})],We.prototype,"fieldsIndex",null),e([u({type:["png","png8","png24","png32","jpg","bmp","gif","jpgpng","lerc","tiff","bip","bsq"],json:{write:!0}})],We.prototype,"format",null),e([Je("service","format",["serviceDataType"])],We.prototype,"readFormat",null),e([u({type:d})],We.prototype,"fullExtent",void 0),e([u({readOnly:!0})],We.prototype,"hasMultidimensions",void 0),e([u({json:{read:{source:"maxImageHeight"}}})],We.prototype,"imageMaxHeight",void 0),e([u({json:{read:{source:"maxImageWidth"}}})],We.prototype,"imageMaxWidth",void 0),e([u({type:String,json:{type:A.jsonValues,read:A.read,write:A.write}})],We.prototype,"interpolation",void 0),e([u()],We.prototype,"minScale",void 0),e([Je("service","minScale")],We.prototype,"readMinScale",null),e([u()],We.prototype,"maxScale",void 0),e([Je("service","maxScale")],We.prototype,"readMaxScale",null),e([u({type:j})],We.prototype,"mosaicRule",null),e([Je("mosaicRule",["mosaicRule","defaultMosaicMethod"])],We.prototype,"readMosaicRule",null),e([Be("mosaicRule")],We.prototype,"writeMosaicRule",null),e([u()],We.prototype,"multidimensionalInfo",void 0),e([u({type:P,json:{write:!0}})],We.prototype,"multidimensionalSubset",void 0),e([u({json:{type:[Number,[Number]],write:!0}})],We.prototype,"noData",void 0),e([u({type:String,json:{type:Q.jsonValues,read:Q.read,write:Q.write}})],We.prototype,"noDataInterpretation",void 0),e([u({type:String,readOnly:!0,json:{read:{source:["fields"]}}})],We.prototype,"objectIdField",void 0),e([Je("objectIdField")],We.prototype,"readObjectIdField",null),e([u({readOnly:!0})],We.prototype,"geometryType",void 0),e([u({})],We.prototype,"typeIdField",void 0),e([u({})],We.prototype,"types",void 0),e([u({readOnly:!0})],We.prototype,"parsedUrl",null),e([u({type:Function})],We.prototype,"pixelFilter",void 0),e([u()],We.prototype,"raster",void 0),e([u({readOnly:!0})],We.prototype,"sourceType",void 0),e([Je("sourceType",["serviceSourceType","fields"])],We.prototype,"readSourceType",null),e([u()],We.prototype,"viewId",void 0),e([u({types:ne})],We.prototype,"renderer",null),e([u({types:ne,json:{name:"layerDefinition.drawingInfo.renderer",origins:{"web-scene":{types:ae,name:"layerDefinition.drawingInfo.renderer",write:{overridePolicy:e=>({enabled:e&&"vector-field"!==e.type})}}}}})],We.prototype,"internalRenderer",null),e([Je("internalRenderer")],We.prototype,"readRenderer",null),e([Be("internalRenderer")],We.prototype,"writeRenderer",null),e([u({clonable:!1})],We.prototype,"symbolizer",void 0),e([u(F)],We.prototype,"opacity",void 0),e([u({readOnly:!0})],We.prototype,"rasterFields",null),e([u({constructOnly:!0})],We.prototype,"rasterFunctionInfos",void 0),e([u({type:K,json:{name:"renderingRule"}})],We.prototype,"rasterFunction",null),e([Je("rasterFunction",["renderingRule","rasterFunctionInfos"])],We.prototype,"readRasterFunction",null),e([u({readOnly:!0})],We.prototype,"serviceDataType",void 0),e([u({readOnly:!0,type:g})],We.prototype,"spatialReference",void 0),e([Je("spatialReference",["spatialReference","extent"])],We.prototype,"readSpatialReference",null),e([u({type:V.apiValues,json:{read:V.read,type:V.jsonValues}})],We.prototype,"pixelType",void 0),e([Be("pixelType")],We.prototype,"writePixelType",null),e([u({constructOnly:!0,type:Y})],We.prototype,"serviceRasterInfo",void 0),e([u()],We.prototype,"sourceJSON",void 0),e([u(D)],We.prototype,"url",void 0),e([u({readOnly:!0})],We.prototype,"version",void 0),e([Je("version",["currentVersion","fields","timeInfo"])],We.prototype,"readVersion",null),We=e([p("esri.layers.mixins.ArcGISImageService")],We),We};export{Ge as ArcGISImageService};
@@ -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"../../request.js";import r from"../../core/Error.js";import i from"../../core/Logger.js";import{property as s,subclass as n}from"../../core/accessorSupport/decorators.js";import{Integer as o,ensureClass as a}from"../../core/accessorSupport/ensureType.js";import l from"../../geometry/Point.js";import u from"../../geometry/SpatialReference.js";import{getInfo as m}from"../../geometry/support/spatialReferenceUtils.js";import{isFunctionRaster as c}from"../raster/datasets/datasetUtils.js";import d from"../raster/datasets/FunctionRaster.js";import{getEffectiveMultidimensionalDefinition as p,getDefaultVariableInfo as h,isMultiSliceOrRangeDefinition as f,convertOleDateTimeToEpoch as y,getSubsetVariablesFromMdInfo as g,getDefaultMultidimensionalDefinition as R}from"../raster/datasets/multidimensionalUtils.js";import{snapToRaster as b,clip as I}from"../raster/functions/clipUtils.js";import{create as w}from"../raster/functions/rasterFunctionHelper.js";import{load as x,projectExtent as S,projectPolygon as _}from"../raster/functions/rasterProjectionHelper.js";import{computeStatisticsHistograms as F}from"../raster/functions/stretchUtils.js";import{sanitizeUrl as v}from"../support/arcgisLayerUrl.js";import{url as J}from"../support/commonProperties.js";import j from"../support/DimensionalDefinition.js";import{createTileBitmap as D}from"../support/imageBitmapUtils.js";import N from"../support/MultidimensionalSubset.js";import{interpolationKebab as T}from"../support/rasterEnums.js";import H from"../support/RasterFunction.js";import C from"../support/RasterJobHandler.js";import O from"../support/TileInfo.js";import{getVariableRasterInfo as P,getDefaultInterpolation as z,matchPresetRenderer as E,getDefaultBandCombination as B,getFunctionColorRamp as U,createDefaultRenderer as M,normalizeRendererJSON as A}from"../../renderers/support/rasterRendererHelper.js";import q from"../../renderers/support/RasterSymbolizer.js";import{rasterRendererTypes as k,websceneRasterRendererTypes as L,read as V}from"../../renderers/support/rasterTypeUtils.js";import $ from"../../rest/support/ImageHistogramParameters.js";import G from"../../rest/support/ImageSample.js";import W from"../../rest/support/ImageSampleParameters.js";import K from"../../rest/support/ImageSampleResult.js";import{enumeration as Q}from"../../core/accessorSupport/decorators/enumeration.js";import{reader as X}from"../../core/accessorSupport/decorators/reader.js";const Y=1e3,Z=Z=>{const ee=Z;let te=class extends ee{constructor(...e){super(...e),this._draRasterConfig=null,this._isConstructedFromFunctionRaster=!1,this.bandIds=null,this.copyright=null,this.interpolation=null,this.multidimensionalSubset=null,this.raster=null,this.serviceRasterInfo=null,this.sourceJSON=null,this.spatialReference=null,this.symbolizer=null,this._isConstructedFromFunctionRaster=c(e[0]?.raster)}destroy(){this._draRasterConfig?.rasterJobHandler?.destroy(),this._shutdownJobHandler()}get fullExtent(){return this.serviceRasterInfo?.extent}set multidimensionalDefinition(e){this._set("multidimensionalDefinition",e),this.updateRenderer()}set rasterFunction(e){"none"===e?.functionName?.toLowerCase()&&(e=void 0),this._set("rasterFunction",e),this.updateRasterFunction()}set url(e){this._set("url",v(e,i.getLogger(this)))}get renderer(){if("imagery-tile"!==this.type)return this.internalRenderer;const{activePresetRendererName:e,presetRenderers:t}=this;if(e){const r=t?.find(({name:t})=>t===e);return r?.renderer.clone()}return this.internalRenderer}set renderer(e){"imagery-tile"===this.type&&(this.activePresetRendererName=null),this.internalRenderer=e}set internalRenderer(e){null==e&&null==this.rasterFunction?this._configDefaultRenderer("override"):(this._set("internalRenderer",e),this.updateRenderer())}readRenderer(e,t,r){const i=t?.layerDefinition?.drawingInfo?.renderer;return V(i,r)||void 0}async computeStatisticsHistograms(e,t){await this.load(t),e=a($,e).clone();const{serviceRasterInfo:i}=this;if(null==i)throw new r("imagery-tile-mixin:compute-statistics-histograms","serviceRasterInfo must be specified");const{geometry:s}=e;if(null==s)throw new r("imagery-tile-mixin:compute-statistics-histograms","geometry must be specified");let n=s;const{spatialReference:o}=i;if(!s.spatialReference.equals(o)){await x();const e="extent"===s.type?S(s,o):_(s,o);if(null==e)throw new r("imagery-tile-mixin:compute-statistics-histograms","geometry cannot be projected to the data source");n=e}const u=e.pixelSize??new l({x:i.pixelSize.x,y:i.pixelSize.y,spatialReference:o}),{extent:m,width:c,height:d}=b(i,n,u),p=await this.fetchPixels(m,c,d,{...t,interpolation:"nearest"});if(null==p.pixelBlock)throw new r("imagery-tile-mixin:compute-statistics-histograms","failed to fetch pixels");const h=await I(p.pixelBlock,m,n),f=this._rasterJobHandler;return f?f.computeStatisticsHistograms({pixelBlock:h},t):F(h)}normalizeRasterFetchOptions(e){const{multidimensionalInfo:t}=this.serviceRasterInfo??{};if(null==t)return e;const r=p({rasterInfo:this.raster.rasterInfo,multidimensionalDefinition:e.multidimensionalDefinition||this.multidimensionalDefinition,timeExtent:e.timeExtent??this.timeExtent,multidimensionalSubset:this.multidimensionalSubset});return{...e,multidimensionalDefinition:r,timeExtent:void 0}}async updateRasterFunction(){return this.loaded&&"imagery-tile"===this.type&&(this.rasterFunction||this._cachedRasterFunctionJson)&&JSON.stringify(this.rasterFunction)!==JSON.stringify(this._cachedRasterFunctionJson)?(this._cachedRasterFunctionJson=this.rasterFunction?.toJSON(),this._rasterFunctionUpdatePromise=this._updateRasterFunction(),this._rasterFunctionUpdatePromise):this._rasterFunctionUpdatePromise}async updateRenderer(){const{loaded:e,symbolizer:t,renderer:r}=this;if(!e||!t||!r)return;const{rasterInfo:i}=this.raster,s=h(i,{multidimensionalDefinition:this.multidimensionalDefinition,multidimensionalSubset:this.multidimensionalSubset}),n=s?.name,o=P(i,n);return this._updateSymbolizer(t,r,n,o)}async applyRenderer(e,t,r){const i=e?.pixelBlock;if(!(null!=i&&i.pixels&&i.pixels.length>0))return null;await this.updateRenderer();const s=this.bandIds??[],{pixelBlock:n}=await this._symbolize({pixelData:e,simpleStretchParams:t,bandIds:s,symbolizer:this.symbolizer},r);return n}getRawDisplayBandIds(){let{bandIds:e,raster:t}=this;if(this.rasterFunction&&c(t)){const r=t.rasterFunction.rawInputBandIds;e=e?.length&&r?.length&&1!==t.rasterInfo.bandCount?e.map(e=>r[Math.min(e,r.length-1)]):r}return e&&e.length>3&&e.every((e,t)=>e===t)?null:e}getTileUrl(e,t,r){return"RasterTileServer"===this.raster.datasetFormat?`${this.url}/tile/${e}/${t}/${r}`:""}getCompatibleTileInfo(e,t,r=!1){if(!this.loaded||null==t)return null;if(r&&e.equals(this.spatialReference))return this.tileInfo;const i=m(e);return O.create({size:256,spatialReference:e,origin:i?{x:i.origin[0],y:i.origin[1]}:{x:t.xmin,y:t.ymax}})}getCompatibleFullExtent(e){return this.loaded?(this._compatibleFullExtent?.spatialReference.equals(e)||(this._compatibleFullExtent=this.raster.computeExtent(e)),this._compatibleFullExtent):null}async fetchTile(e,r,i,s={}){if(re(this),s.requestAsImageElement){const n=this.getTileUrl(e,r,i),{data:o}=await t(n,{responseType:"image",query:{...this.refreshParameters,...this.raster.ioConfig.customFetchParameters},signal:s.signal});return o}const{serviceRasterInfo:n}=this;if(null!=n.multidimensionalInfo&&null==(s=this.normalizeRasterFetchOptions(s)).multidimensionalDefinition){const t=s.tileInfo||n.storageInfo.tileInfo,o=this.raster.getTileExtentFromTileInfo(e,r,i,t);if(o)return{extent:o,pixelBlock:null}}return await this._initJobHandler(),await this.updateRasterFunction(),"raster-shaded-relief"===this.renderer?.type&&(s={...s,buffer:{cols:1,rows:1}}),s={...s,refreshParameters:this.refreshParameters},this.raster.fetchTile(e,r,i,s)}async fetchImageBitmapTile(e,r,i,s={}){re(this);const n=this.getTileUrl(e,r,i),{data:o}=await t(n,{responseType:"blob",query:{...this.refreshParameters,...this.raster.ioConfig.customFetchParameters},signal:s?.signal});return D(o,e,r,i,s)}async fetchPixels(e,t,r,i={}){if(null!=this.serviceRasterInfo.multidimensionalInfo&&null==(i=this.normalizeRasterFetchOptions(i)).multidimensionalDefinition)return{extent:e,pixelBlock:null};await this._initJobHandler(),await this.updateRasterFunction(),t=Math.round(t),r=Math.round(r);const s=await this.raster.fetchPixels(e,t,r,i);return i.bandIds?.length&&!this.raster.rasterInfo.storageInfo.isBsqTile&&(s.pixelBlock=s.pixelBlock?.extractBands(i.bandIds)),s}async getSamples(e,t){await this.load();const i=a(W,e).clone();if(i.interpolation&&"nearest"!==i.interpolation)throw new r("imagery-tile-mixin:get-samples","only nearest interpolation is currently supported");const s=i.mosaicRule?.multidimensionalDefinition,n={...t,multidimensionalDefinition:s},o=(await this._getSampleLocations(i)).map(e=>this.identify(e,n).then(t=>(t.location=e,t))),l=(await Promise.all(o)).flatMap((e,t)=>this._convertRasterIdentifyResultToSample(e,t));return new K({samples:l})}async identify(e,t={}){await this.load();const i=a(l,e).clone().normalize(),{raster:s,serviceRasterInfo:n}=this;if(null!=n?.multidimensionalInfo){if(!(n.hasMultidimensionalTranspose&&!(!f(t.multidimensionalDefinition)&&!t.transposedVariableName))&&null==(t=this.normalizeRasterFetchOptions(t)).multidimensionalDefinition)return{location:i,value:null}}const o=this.multidimensionalSubset?.areaOfInterest;if(o&&!o.contains(i))throw new r("imagery-tile-mixin:identify","the request cannot be fulfilled when falling outside of the multidimensional subset");let u;if(this.serviceRasterInfo?.storageInfo.isBsqTile){const e=c(s)?this.getRawDisplayBandIds():this.bandIds;u=e?.length?e:void 0}return s.identify(i,{...t,bandIds:u})}hasStandardTime(){const e=this.serviceRasterInfo?.multidimensionalInfo;if(null==e||"standard-time"!==this.serviceRasterInfo?.dataType)return!1;const t=this.multidimensionalDefinition,r=t?.[0]?.variableName;return e.variables.some(e=>e.name===r&&(!t?.[0].dimensionName||e.dimensions.some(e=>"StdTime"===e.name)))}getStandardTimeValue(e){return new Date(y(e)).toISOString()}getMultidimensionalSubsetVariables(e){const t=e??this.serviceRasterInfo?.multidimensionalInfo;return g(this.multidimensionalSubset,t)}async getDynamicRangeInputRaster(){if(!this.rasterFunction||!c(this.raster)||!this._cachedRasterFunctionJson)return null;const e=JSON.stringify(this._cachedRasterFunctionJson);if(this._draRasterConfig?.functionJson===e)return this._draRasterConfig;const t=this.raster.rasterFunction.queryRasterFunction(e=>"Stretch"===e.functionName&&e.functionArguments.dynamicRangeAdjustment);if(!t)return null;const r=t.toJSON(),i=this.raster.primaryRasters.rasters,s=t.functionArguments.raster,n=r.rasterFunctionArguments;if(!s||"object"!=typeof s||!("functionName"in s))return this._draRasterConfig={functionJson:e,raster:i[0],functionArguments:n,rasterJobHandler:this._draRasterConfig?.rasterJobHandler},this._draRasterConfig;const o={raster:i[0]};i.length>1&&i.forEach(e=>o[e.url]=e);const a=w(s.toJSON(),o),l=new d({rasterFunction:a});await l.open();let u=this._draRasterConfig?.rasterJobHandler;try{u||(u=new C,await u.initialize()),l.rasterJobHandler=u,await l.syncJobHandler()}catch{}return this._draRasterConfig={functionJson:e,raster:l,functionArguments:n,rasterJobHandler:u},this._draRasterConfig}_configDefaultSettings(){this._configDefaultInterpolation(),this.multidimensionalDefinition||(this.multidimensionalDefinition=R(this.raster.rasterInfo,{multidimensionalSubset:this.multidimensionalSubset})),this.rasterFunction&&c(this.raster)&&(this._cachedRasterFunctionJson=this.rasterFunction.toJSON()),this._configDefaultRenderer()}async _initJobHandler(){if(!this._rasterJobHandler)return super._initJobHandler().then(async()=>{if(!this._rasterJobHandler)return;re(this);const{raster:e}=this;e.rasterJobHandler!==this._rasterJobHandler&&(e.rasterJobHandler=this._rasterJobHandler,c(e)&&e.syncJobHandler(),this.rasterFunction&&await this.updateRasterFunction().catch(()=>{}),this.renderer&&this.updateRenderer())}).catch(()=>{})}_shutdownJobHandler(){super._shutdownJobHandler(),this.raster&&(this.raster.rasterJobHandler=null)}async _getSampleLocations(e){const{geometry:t}=e;if("point"===t.type)return[t];const{spatialReference:r,type:i}=t;if("multipoint"===i)return t.points.map(e=>new l({x:e[0],y:e[1],spatialReference:r}));if("polyline"===i){let i=t;if(e.sampleCount||e.sampleDistance){const r=await(import("../../geometry/operators/densifyOperator.js")),s=(await(import("../../geometry/operators/lengthOperator.js"))).execute(t,{unit:"meters"}),n=Math.min(e.sampleCount||100,Y);let o=e.sampleDistance;if(!o){o=s/(n+(2===i.paths[0].length?1:0))}i=r.execute(t,o,{unit:"meters"})}return i.paths.flatMap(e=>e.map(e=>new l({x:e[0],y:e[1],spatialReference:r})))}const s=Math.min(e.sampleCount||100,Y),n="extent"===t.type,o=n?t:t.extent,a=Math.sqrt(o.width*o.height/s),u=o.height/a,m=o.width/a,{xmin:c,ymax:d}=o,p=[];for(let h=0;h<u;h++)for(let e=0;e<m;e++){const i=new l({x:c+(e+.5)*a,y:d-(h+.5)*a,spatialReference:r});(n||t.contains(i))&&p.push(i)}return p}_configDefaultInterpolation(){if(null==this.interpolation){re(this);const{raster:e}=this,t=z(e.rasterInfo,e.tileType,this.sourceJSON?.defaultResamplingMethod);this._set("interpolation",t)}}_configDefaultRenderer(e="no"){re(this);const{rasterInfo:t}=this.raster,r=h(t,{multidimensionalDefinition:this.multidimensionalDefinition,multidimensionalSubset:this.multidimensionalSubset}),s=r?.name,n=E({variableName:s,rasterFunctionName:this.rasterFunction?.functionName,presetRenderers:this.presetRenderers});if(!this.bandIds&&t.bandCount>1&&(this.bandIds=n?.bandIds??B(t)),!this.renderer||"override"===e){const e=U(this.raster),r=n?.renderer??M(t,{bandIds:this.bandIds,variableName:s,rasterFunctionColorRamp:e}),i=t.statistics,o=i&&i.length>0?i[0]:null,a=o?.max??0,l=o?.min??0;"WCSServer"===this.raster.datasetFormat&&"raster-stretch"===r.type&&(a>1e24||l<-1e24)&&(r.dynamicRangeAdjustment=!0,r.customStatistics=null,"none"===r.stretchType&&(r.stretchType="min-max")),this.renderer=r}const o=A({...this.renderer.toJSON(),variableName:s}),a=P(t,s);this.symbolizer?(this.symbolizer.rendererJSON=o,this.symbolizer.rasterInfo=a):this.symbolizer=new q({rendererJSON:o,rasterInfo:a});const l=this.symbolizer.bind();if(l.success){if("auto"===e){const{colormap:e}=this.raster.rasterInfo,t=this.renderer;if(null!=e&&"raster-colormap"===t.type){const e=M(this.raster.rasterInfo);JSON.stringify(e)!==JSON.stringify(t)&&this._configDefaultRenderer("override")}else if("raster-stretch"===t.type){const e=this.bandIds?.length,r=t.customStatistics?.length;!t.dynamicRangeAdjustment&&r&&e&&r!==e&&this._configDefaultRenderer("override")}}}else i.getLogger(this).warn("imagery-tile-mixin",l.error||"The given renderer is not supported by the layer."),"auto"===e&&this._configDefaultRenderer("override")}async _updateRasterFunction(){if(this._isConstructedFromFunctionRaster&&c(this.raster)){const e=this.raster.rasterFunction.toJSON();return void(!this.rasterFunction&&e&&this._set("rasterFunction",H.fromJSON(e)))}let e,t=this.raster,r=!1;c(t)?(e=t.primaryRasters.rasters,t=e[0],r=!0):e=[t];const{rasterFunction:i}=this;if(i){const r={raster:t};e.length>1&&e.forEach(e=>r[e.url]=e);const s=w(i.functionDefinition?.toJSON()??i.toJSON(),r),n=new d({rasterFunction:s});n.rasterJobHandler=this._rasterJobHandler,await n.open(),this.raster=n}else this.raster=t,await t.open();if(this._cachedRendererJson=void 0,!r&&!i)return;const{bandIds:s}=this,{bandCount:n}=this.raster.rasterInfo,o=s?.length?s.some(e=>e>=n):n>=3;s&&(o||this.renderer&&"raster-stretch"!==this.renderer.type)&&this._set("bandIds",null),this._configDefaultRenderer("auto")}_convertRasterIdentifyResultToSample(e,t){const{rasterInfo:r}=this.raster,i=r.storageInfo.pyramidScalingFactor**(e.pyramidLevel??0),s=(r.pixelSize.x+r.pixelSize.y)/2*i;if(!e.dataSeries?.length)return[new G({location:e.location,pixelValue:e.value,locationId:t,resolution:s})];const n=[];return e.dataSeries.forEach(({value:r,multidimensionalDefinition:i},o)=>{const a={Variables:i[0].variableName,Dimensions:i.flatMap(({dimensionName:e})=>e).join(",")};for(const{dimensionName:e,values:t}of i){a[e]=Array.isArray(t[0])?t[0][0]:t[0];const r=t[t.length-1];a[`${e}_Max`]=Array.isArray(r)?r[r.length-1]:r}const l=new G({location:e.location,pixelValue:r,rasterId:o,locationId:t,resolution:s,attributes:a});n.push(l)}),n}};function re(e){if(!e.raster||!e.serviceRasterInfo)throw new r("imagery-tile","no raster")}return e([s({clonable:!1})],te.prototype,"_cachedRasterFunctionJson",void 0),e([s({clonable:!1})],te.prototype,"_compatibleFullExtent",void 0),e([s({clonable:!1})],te.prototype,"_draRasterConfig",void 0),e([s({clonable:!1})],te.prototype,"_isConstructedFromFunctionRaster",void 0),e([s({clonable:!1})],te.prototype,"_rasterFunctionUpdatePromise",void 0),e([s({type:[o],json:{write:{overridePolicy(){return{enabled:!this.loaded||"Raster"===this.raster.tileType||"0,1,2"!==this.bandIds?.join(",")}}}}})],te.prototype,"bandIds",void 0),e([s({json:{origins:{service:{read:{source:"copyrightText"}}}}})],te.prototype,"copyright",void 0),e([s({json:{read:!1}})],te.prototype,"fullExtent",null),e([s({json:{write:{overridePolicy(){return{enabled:!this.loaded||"Raster"===this.raster.tileType||"bilinear"!==this.interpolation}}}}}),Q(T)],te.prototype,"interpolation",void 0),e([s()],te.prototype,"ioConfig",void 0),e([s({type:[j],json:{write:!0}})],te.prototype,"multidimensionalDefinition",null),e([s({type:N,json:{write:!0}})],te.prototype,"multidimensionalSubset",void 0),e([s()],te.prototype,"raster",void 0),e([s({type:H})],te.prototype,"rasterFunction",null),e([s()],te.prototype,"serviceRasterInfo",void 0),e([s()],te.prototype,"sourceJSON",void 0),e([s({readOnly:!0,type:u,json:{read:!1}})],te.prototype,"spatialReference",void 0),e([s({type:O})],te.prototype,"tileInfo",void 0),e([s(J)],te.prototype,"url",null),e([s({types:k})],te.prototype,"renderer",null),e([s({types:k,json:{name:"layerDefinition.drawingInfo.renderer",write:{overridePolicy(){const e="raster-stretch"===this.renderer?.type&&"none"===this.renderer.stretchType&&!this.renderer.useGamma;return{enabled:!this.loaded||"Raster"===this.raster.tileType||!e}}},origins:{"web-scene":{types:L,name:"layerDefinition.drawingInfo.renderer",write:{overridePolicy:e=>({enabled:e&&"vector-field"!==e.type})}}}}})],te.prototype,"internalRenderer",null),e([X("internalRenderer")],te.prototype,"readRenderer",null),e([s({clonable:!1})],te.prototype,"symbolizer",void 0),te=e([n("esri.layers.mixins.TiledImagery")],te),te};export{Z as TiledImagery};
2
+ import{__decorate as e}from"tslib";import t from"../../request.js";import r from"../../core/Error.js";import i from"../../core/Logger.js";import{property as s,subclass as n}from"../../core/accessorSupport/decorators.js";import{Integer as o,ensureClass as a}from"../../core/accessorSupport/ensureType.js";import l from"../../geometry/Point.js";import u from"../../geometry/SpatialReference.js";import{getInfo as m}from"../../geometry/support/spatialReferenceUtils.js";import{isFunctionRaster as c}from"../raster/datasets/datasetUtils.js";import d from"../raster/datasets/FunctionRaster.js";import{getEffectiveMultidimensionalDefinition as p,getDefaultVariableInfo as h,isMultiSliceOrRangeDefinition as f,convertOleDateTimeToEpoch as y,getSubsetVariablesFromMdInfo as g,getDefaultMultidimensionalDefinition as R}from"../raster/datasets/multidimensionalUtils.js";import{snapToRaster as b,clip as I}from"../raster/functions/clipUtils.js";import{create as w}from"../raster/functions/rasterFunctionHelper.js";import{load as x,projectExtent as S,projectPolygon as _}from"../raster/functions/rasterProjectionHelper.js";import{computeStatisticsHistograms as F}from"../raster/functions/stretchUtils.js";import{sanitizeUrl as v}from"../support/arcgisLayerUrl.js";import{url as J}from"../support/commonProperties.js";import j from"../support/DimensionalDefinition.js";import{createTileBitmap as D}from"../support/imageBitmapUtils.js";import N from"../support/MultidimensionalSubset.js";import{interpolationKebab as T}from"../support/rasterEnums.js";import H from"../support/RasterFunction.js";import C from"../support/RasterJobHandler.js";import O from"../support/TileInfo.js";import{getVariableRasterInfo as P,getDefaultInterpolation as z,matchPresetRenderer as E,getDefaultBandCombination as B,getFunctionColorRamp as U,createDefaultRenderer as M,normalizeRendererJSON as A}from"../../renderers/support/rasterRendererHelper.js";import q from"../../renderers/support/RasterSymbolizer.js";import{rasterRendererTypes as k,websceneRasterRendererTypes as L,read as V}from"../../renderers/support/rasterTypeUtils.js";import $ from"../../rest/support/ImageHistogramParameters.js";import G from"../../rest/support/ImageSample.js";import W from"../../rest/support/ImageSampleParameters.js";import K from"../../rest/support/ImageSampleResult.js";import{enumeration as Q}from"../../core/accessorSupport/decorators/enumeration.js";import{reader as X}from"../../core/accessorSupport/decorators/reader.js";const Y=1e3,Z=Z=>{const ee=Z;let te=class extends ee{constructor(...e){super(...e),this._draRasterConfig=null,this._isConstructedFromFunctionRaster=!1,this.bandIds=null,this.copyright=null,this.interpolation=null,this.multidimensionalSubset=null,this.raster=null,this.serviceRasterInfo=null,this.sourceJSON=null,this.spatialReference=null,this.symbolizer=null,this._isConstructedFromFunctionRaster=c(e[0]?.raster)}destroy(){this._draRasterConfig?.rasterJobHandler?.destroy(),this._shutdownJobHandler()}get fullExtent(){return this.serviceRasterInfo?.extent}set multidimensionalDefinition(e){this._set("multidimensionalDefinition",e),this.updateRenderer()}set rasterFunction(e){"none"===e?.functionName?.toLowerCase()&&(e=void 0),this._set("rasterFunction",e),this.updateRasterFunction()}set url(e){this._set("url",v(e,i.getLogger(this)))}get renderer(){if("imagery-tile"!==this.type)return this.internalRenderer;const{activePresetRendererName:e,presetRenderers:t}=this;if(e){const r=t?.find(({name:t})=>t===e);return r?.renderer.clone()}return this.internalRenderer}set renderer(e){"imagery-tile"===this.type&&(this.activePresetRendererName=null),this.internalRenderer=e}set internalRenderer(e){null==e&&null==this.rasterFunction?this._configDefaultRenderer("override"):(this._set("internalRenderer",e),this.updateRenderer())}readRenderer(e,t,r){const i=t?.layerDefinition?.drawingInfo?.renderer;return V(i,r)||void 0}async computeStatisticsHistograms(e,t){await this.load(t),e=a($,e).clone();const{serviceRasterInfo:i}=this;if(null==i)throw new r("imagery-tile-mixin:compute-statistics-histograms","serviceRasterInfo must be specified");const{geometry:s}=e;if(null==s)throw new r("imagery-tile-mixin:compute-statistics-histograms","geometry must be specified");let n=s;const{spatialReference:o}=i;if(!s.spatialReference.equals(o)){await x();const e="extent"===s.type?S(s,o):_(s,o);if(null==e)throw new r("imagery-tile-mixin:compute-statistics-histograms","geometry cannot be projected to the data source");n=e}const u=e.pixelSize??new l({x:i.pixelSize.x,y:i.pixelSize.y,spatialReference:o}),{extent:m,width:c,height:d}=b(i,n,u),p=await this.fetchPixels(m,c,d,{...t,interpolation:"nearest"});if(null==p.pixelBlock)throw new r("imagery-tile-mixin:compute-statistics-histograms","failed to fetch pixels");const h=await I(p.pixelBlock,m,n),f=this._rasterJobHandler;return f?f.computeStatisticsHistograms({pixelBlock:h},t):F(h)}normalizeRasterFetchOptions(e){const{multidimensionalInfo:t}=this.serviceRasterInfo??{};if(null==t)return e;const r=p({rasterInfo:this.raster.rasterInfo,multidimensionalDefinition:e.multidimensionalDefinition||this.multidimensionalDefinition,timeExtent:e.timeExtent??this.timeExtent,multidimensionalSubset:this.multidimensionalSubset});return{...e,multidimensionalDefinition:r,timeExtent:void 0}}async updateRasterFunction(){return this.loaded&&"imagery-tile"===this.type&&(this.rasterFunction||this._cachedRasterFunctionJson)&&JSON.stringify(this.rasterFunction)!==JSON.stringify(this._cachedRasterFunctionJson)?(this._cachedRasterFunctionJson=this.rasterFunction?.toJSON(),this._rasterFunctionUpdatePromise=this._updateRasterFunction(),this._rasterFunctionUpdatePromise):this._rasterFunctionUpdatePromise}async updateRenderer(){const{loaded:e,symbolizer:t,renderer:r}=this;if(!e||!t||!r)return;const{rasterInfo:i}=this.raster,s=h(i,{multidimensionalDefinition:this.multidimensionalDefinition,multidimensionalSubset:this.multidimensionalSubset}),n=s?.name,o=P(i,n);return this._updateSymbolizer(t,r,n,o)}async applyRenderer(e,t,r){const i=e?.pixelBlock;if(!(null!=i&&i.pixels&&i.pixels.length>0))return null;await this.updateRenderer();const s=this.bandIds??[],{pixelBlock:n}=await this._symbolize({pixelData:e,simpleStretchParams:t,bandIds:s,symbolizer:this.symbolizer},r);return n}getRawDisplayBandIds(){let{bandIds:e,raster:t}=this;if(this.rasterFunction&&c(t)){const r=t.rasterFunction.rawInputBandIds;e=e?.length&&r?.length&&1!==t.rasterInfo.bandCount?e.map(e=>r[Math.min(e,r.length-1)]):r}return e&&e.length>3&&e.every((e,t)=>e===t)?null:e}getTileUrl(e,t,r){return"RasterTileServer"===this.raster.datasetFormat?`${this.url}/tile/${e}/${t}/${r}`:""}getCompatibleTileInfo(e,t,r=!1){if(!this.loaded||null==t)return null;if(r&&e.equals(this.spatialReference))return this.tileInfo;const i=m(e);return O.create({size:256,spatialReference:e,origin:i?{x:i.origin[0],y:i.origin[1]}:{x:t.xmin,y:t.ymax}})}getCompatibleFullExtent(e){return this.loaded?(this._compatibleFullExtent?.spatialReference.equals(e)||(this._compatibleFullExtent=this.raster.computeExtent(e)),this._compatibleFullExtent):null}async fetchTile(e,r,i,s={}){if(re(this),s.requestAsImageElement){const n=this.getTileUrl(e,r,i),{data:o}=await t(n,{responseType:"image",query:{...this.refreshParameters,...this.raster.ioConfig.customFetchParameters},signal:s.signal});return o}const{serviceRasterInfo:n}=this;if(null!=n.multidimensionalInfo&&null==(s=this.normalizeRasterFetchOptions(s)).multidimensionalDefinition){const t=s.tileInfo||n.storageInfo.tileInfo,o=this.raster.getTileExtentFromTileInfo(e,r,i,t);if(o)return{extent:o,pixelBlock:null}}return await this._initJobHandler(),await this.updateRasterFunction(),"raster-shaded-relief"===this.renderer?.type&&(s={...s,buffer:{cols:1,rows:1}}),s={...s,refreshParameters:this.refreshParameters},this.raster.fetchTile(e,r,i,s)}async fetchImageBitmapTile(e,r,i,s={}){re(this);const n=this.getTileUrl(e,r,i),{data:o}=await t(n,{responseType:"blob",query:{...this.refreshParameters,...this.raster.ioConfig.customFetchParameters},signal:s?.signal});return D(o,e,r,i,s)}async fetchPixels(e,t,r,i={}){if(null!=this.serviceRasterInfo.multidimensionalInfo&&null==(i=this.normalizeRasterFetchOptions(i)).multidimensionalDefinition)return{extent:e,pixelBlock:null};await this._initJobHandler(),await this.updateRasterFunction(),t=Math.round(t),r=Math.round(r);const s=await this.raster.fetchPixels(e,t,r,i);return i.bandIds?.length&&!this.raster.rasterInfo.storageInfo.isBsqTile&&(s.pixelBlock=s.pixelBlock?.extractBands(i.bandIds)),s}async getSamples(e,t){await this.load();const i=a(W,e).clone();if(i.interpolation&&"nearest"!==i.interpolation)throw new r("imagery-tile-mixin:get-samples","only nearest interpolation is currently supported");const s=i.mosaicRule?.multidimensionalDefinition,n={...t,multidimensionalDefinition:s},o=(await this._getSampleLocations(i)).map(e=>this.identify(e,n).then(t=>(t.location=e,t))),l=(await Promise.all(o)).flatMap((e,t)=>this._convertRasterIdentifyResultToSample(e,t));return new K({samples:l})}async identify(e,t={}){await this.load();const i=a(l,e).clone().normalize(),{raster:s,serviceRasterInfo:n}=this;if(null!=n?.multidimensionalInfo){if(!(n.hasMultidimensionalTranspose&&!(!f(t.multidimensionalDefinition)&&!t.transposedVariableName))&&null==(t=this.normalizeRasterFetchOptions(t)).multidimensionalDefinition)return{location:i,value:null}}const o=this.multidimensionalSubset?.areaOfInterest;if(o&&!o.contains(i))throw new r("imagery-tile-mixin:identify","the request cannot be fulfilled when falling outside of the multidimensional subset");let u;if(this.serviceRasterInfo?.storageInfo.isBsqTile){const e=c(s)?this.getRawDisplayBandIds():this.bandIds;u=e?.length?e:void 0}return s.identify(i,{...t,bandIds:u})}hasStandardTime(){const e=this.serviceRasterInfo?.multidimensionalInfo;if(null==e||"standard-time"!==this.serviceRasterInfo?.dataType)return!1;const t=this.multidimensionalDefinition,r=t?.[0]?.variableName;return e.variables.some(e=>e.name===r&&(!t?.[0].dimensionName||e.dimensions.some(e=>"StdTime"===e.name)))}getStandardTimeValue(e){return new Date(y(e)).toISOString()}getMultidimensionalSubsetVariables(e){const t=e??this.serviceRasterInfo?.multidimensionalInfo;return g(this.multidimensionalSubset,t)}async getDynamicRangeInputRaster(){if(!this.rasterFunction||!c(this.raster)||!this._cachedRasterFunctionJson)return null;const e=JSON.stringify(this._cachedRasterFunctionJson);if(this._draRasterConfig?.functionJson===e)return this._draRasterConfig;const t=this.raster.rasterFunction.queryRasterFunction(e=>"Stretch"===e.functionName&&e.functionArguments.dynamicRangeAdjustment);if(!t)return null;const r=t.toJSON(),i=this.raster.primaryRasters.rasters,s=t.functionArguments.raster,n=r.rasterFunctionArguments;if(!s||"object"!=typeof s||!("functionName"in s))return this._draRasterConfig={functionJson:e,raster:i[0],functionArguments:n,rasterJobHandler:this._draRasterConfig?.rasterJobHandler},this._draRasterConfig;const o={raster:i[0]};i.length>1&&i.forEach(e=>o[e.url]=e);const a=w(s.toJSON(),o),l=new d({rasterFunction:a});await l.open();let u=this._draRasterConfig?.rasterJobHandler;try{u||(u=new C,await u.initialize()),l.rasterJobHandler=u,await l.syncJobHandler()}catch{}return this._draRasterConfig={functionJson:e,raster:l,functionArguments:n,rasterJobHandler:u},this._draRasterConfig}_configDefaultSettings(){this._configDefaultInterpolation(),this.multidimensionalDefinition||(this.multidimensionalDefinition=R(this.raster.rasterInfo,{multidimensionalSubset:this.multidimensionalSubset})),this.rasterFunction&&c(this.raster)&&(this._cachedRasterFunctionJson=this.rasterFunction.toJSON()),this._configDefaultRenderer()}async _initJobHandler(){if(!this._rasterJobHandler)return super._initJobHandler().then(async()=>{if(!this._rasterJobHandler)return;re(this);const{raster:e}=this;e.rasterJobHandler!==this._rasterJobHandler&&(e.rasterJobHandler=this._rasterJobHandler,c(e)&&e.syncJobHandler(),this.rasterFunction&&await this.updateRasterFunction().catch(()=>{}),this.renderer&&this.updateRenderer())}).catch(()=>{})}_shutdownJobHandler(){super._shutdownJobHandler(),this.raster&&(this.raster.rasterJobHandler=null)}async _getSampleLocations(e){const{geometry:t}=e;if("point"===t.type)return[t];const{spatialReference:r,type:i}=t;if("multipoint"===i)return t.points.map(e=>new l({x:e[0],y:e[1],spatialReference:r}));if("polyline"===i){let i=t;if(e.sampleCount||e.sampleDistance){const{densifyExecute:r}=await(import("../../geometry/operators/densifyOperator.js")),{lengthExecute:s}=await(import("../../geometry/operators/lengthOperator.js")),n=s(t,{unit:"meters"}),o=Math.min(e.sampleCount||100,Y);let a=e.sampleDistance;if(!a){a=n/(o+(2===i.paths[0].length?1:0))}i=r(t,a,{unit:"meters"})}return i.paths.flatMap(e=>e.map(e=>new l({x:e[0],y:e[1],spatialReference:r})))}const s=Math.min(e.sampleCount||100,Y),n="extent"===t.type,o=n?t:t.extent,a=Math.sqrt(o.width*o.height/s),u=o.height/a,m=o.width/a,{xmin:c,ymax:d}=o,p=[];for(let h=0;h<u;h++)for(let e=0;e<m;e++){const i=new l({x:c+(e+.5)*a,y:d-(h+.5)*a,spatialReference:r});(n||t.contains(i))&&p.push(i)}return p}_configDefaultInterpolation(){if(null==this.interpolation){re(this);const{raster:e}=this,t=z(e.rasterInfo,e.tileType,this.sourceJSON?.defaultResamplingMethod);this._set("interpolation",t)}}_configDefaultRenderer(e="no"){re(this);const{rasterInfo:t}=this.raster,r=h(t,{multidimensionalDefinition:this.multidimensionalDefinition,multidimensionalSubset:this.multidimensionalSubset}),s=r?.name,n=E({variableName:s,rasterFunctionName:this.rasterFunction?.functionName,presetRenderers:this.presetRenderers});if(!this.bandIds&&t.bandCount>1&&(this.bandIds=n?.bandIds??B(t)),!this.renderer||"override"===e){const e=U(this.raster),r=n?.renderer??M(t,{bandIds:this.bandIds,variableName:s,rasterFunctionColorRamp:e}),i=t.statistics,o=i&&i.length>0?i[0]:null,a=o?.max??0,l=o?.min??0;"WCSServer"===this.raster.datasetFormat&&"raster-stretch"===r.type&&(a>1e24||l<-1e24)&&(r.dynamicRangeAdjustment=!0,r.customStatistics=null,"none"===r.stretchType&&(r.stretchType="min-max")),this.renderer=r}const o=A({...this.renderer.toJSON(),variableName:s}),a=P(t,s);this.symbolizer?(this.symbolizer.rendererJSON=o,this.symbolizer.rasterInfo=a):this.symbolizer=new q({rendererJSON:o,rasterInfo:a});const l=this.symbolizer.bind();if(l.success){if("auto"===e){const{colormap:e}=this.raster.rasterInfo,t=this.renderer;if(null!=e&&"raster-colormap"===t.type){const e=M(this.raster.rasterInfo);JSON.stringify(e)!==JSON.stringify(t)&&this._configDefaultRenderer("override")}else if("raster-stretch"===t.type){const e=this.bandIds?.length,r=t.customStatistics?.length;!t.dynamicRangeAdjustment&&r&&e&&r!==e&&this._configDefaultRenderer("override")}}}else i.getLogger(this).warn("imagery-tile-mixin",l.error||"The given renderer is not supported by the layer."),"auto"===e&&this._configDefaultRenderer("override")}async _updateRasterFunction(){if(this._isConstructedFromFunctionRaster&&c(this.raster)){const e=this.raster.rasterFunction.toJSON();return void(!this.rasterFunction&&e&&this._set("rasterFunction",H.fromJSON(e)))}let e,t=this.raster,r=!1;c(t)?(e=t.primaryRasters.rasters,t=e[0],r=!0):e=[t];const{rasterFunction:i}=this;if(i){const r={raster:t};e.length>1&&e.forEach(e=>r[e.url]=e);const s=w(i.functionDefinition?.toJSON()??i.toJSON(),r),n=new d({rasterFunction:s});n.rasterJobHandler=this._rasterJobHandler,await n.open(),this.raster=n}else this.raster=t,await t.open();if(this._cachedRendererJson=void 0,!r&&!i)return;const{bandIds:s}=this,{bandCount:n}=this.raster.rasterInfo,o=s?.length?s.some(e=>e>=n):n>=3;s&&(o||this.renderer&&"raster-stretch"!==this.renderer.type)&&this._set("bandIds",null),this._configDefaultRenderer("auto")}_convertRasterIdentifyResultToSample(e,t){const{rasterInfo:r}=this.raster,i=r.storageInfo.pyramidScalingFactor**(e.pyramidLevel??0),s=(r.pixelSize.x+r.pixelSize.y)/2*i;if(!e.dataSeries?.length)return[new G({location:e.location,pixelValue:e.value,locationId:t,resolution:s})];const n=[];return e.dataSeries.forEach(({value:r,multidimensionalDefinition:i},o)=>{const a={Variables:i[0].variableName,Dimensions:i.flatMap(({dimensionName:e})=>e).join(",")};for(const{dimensionName:e,values:t}of i){a[e]=Array.isArray(t[0])?t[0][0]:t[0];const r=t[t.length-1];a[`${e}_Max`]=Array.isArray(r)?r[r.length-1]:r}const l=new G({location:e.location,pixelValue:r,rasterId:o,locationId:t,resolution:s,attributes:a});n.push(l)}),n}};function re(e){if(!e.raster||!e.serviceRasterInfo)throw new r("imagery-tile","no raster")}return e([s({clonable:!1})],te.prototype,"_cachedRasterFunctionJson",void 0),e([s({clonable:!1})],te.prototype,"_compatibleFullExtent",void 0),e([s({clonable:!1})],te.prototype,"_draRasterConfig",void 0),e([s({clonable:!1})],te.prototype,"_isConstructedFromFunctionRaster",void 0),e([s({clonable:!1})],te.prototype,"_rasterFunctionUpdatePromise",void 0),e([s({type:[o],json:{write:{overridePolicy(){return{enabled:!this.loaded||"Raster"===this.raster.tileType||"0,1,2"!==this.bandIds?.join(",")}}}}})],te.prototype,"bandIds",void 0),e([s({json:{origins:{service:{read:{source:"copyrightText"}}}}})],te.prototype,"copyright",void 0),e([s({json:{read:!1}})],te.prototype,"fullExtent",null),e([s({json:{write:{overridePolicy(){return{enabled:!this.loaded||"Raster"===this.raster.tileType||"bilinear"!==this.interpolation}}}}}),Q(T)],te.prototype,"interpolation",void 0),e([s()],te.prototype,"ioConfig",void 0),e([s({type:[j],json:{write:!0}})],te.prototype,"multidimensionalDefinition",null),e([s({type:N,json:{write:!0}})],te.prototype,"multidimensionalSubset",void 0),e([s()],te.prototype,"raster",void 0),e([s({type:H})],te.prototype,"rasterFunction",null),e([s()],te.prototype,"serviceRasterInfo",void 0),e([s()],te.prototype,"sourceJSON",void 0),e([s({readOnly:!0,type:u,json:{read:!1}})],te.prototype,"spatialReference",void 0),e([s({type:O})],te.prototype,"tileInfo",void 0),e([s(J)],te.prototype,"url",null),e([s({types:k})],te.prototype,"renderer",null),e([s({types:k,json:{name:"layerDefinition.drawingInfo.renderer",write:{overridePolicy(){const e="raster-stretch"===this.renderer?.type&&"none"===this.renderer.stretchType&&!this.renderer.useGamma;return{enabled:!this.loaded||"Raster"===this.raster.tileType||!e}}},origins:{"web-scene":{types:L,name:"layerDefinition.drawingInfo.renderer",write:{overridePolicy:e=>({enabled:e&&"vector-field"!==e.type})}}}}})],te.prototype,"internalRenderer",null),e([X("internalRenderer")],te.prototype,"readRenderer",null),e([s({clonable:!1})],te.prototype,"symbolizer",void 0),te=e([n("esri.layers.mixins.TiledImagery")],te),te};export{Z as TiledImagery};