@arcgis/core 5.2.0-next.63 → 5.2.0-next.65

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 (447) hide show
  1. package/arcade/Feature.js +1 -1
  2. package/arcade/ImmutableArray.js +1 -1
  3. package/arcade/ImmutablePathArray.js +1 -1
  4. package/arcade/ImmutablePointArray.js +1 -1
  5. package/arcade/Pixel.js +1 -1
  6. package/arcade/Voxel.js +1 -1
  7. package/arcade/arcadeAsyncRuntime.js +1 -1
  8. package/arcade/arcadeCompiler.js +1 -1
  9. package/arcade/arcadeRuntime.js +1 -1
  10. package/arcade/containerUtils.js +1 -1
  11. package/arcade/debug.js +1 -1
  12. package/arcade/deepClone.js +1 -1
  13. package/arcade/functions/convertdirection.js +1 -1
  14. package/arcade/functions/date.js +1 -1
  15. package/arcade/functions/feature.js +1 -1
  16. package/arcade/functions/featuresetbase.js +1 -1
  17. package/arcade/functions/featuresetgeom.js +1 -1
  18. package/arcade/functions/featuresetstats.js +1 -1
  19. package/arcade/functions/featuresetstring.js +1 -1
  20. package/arcade/functions/fieldStats.js +1 -1
  21. package/arcade/functions/geomasync.js +1 -1
  22. package/arcade/functions/geometry.js +1 -1
  23. package/arcade/functions/geomsync.js +1 -1
  24. package/arcade/functions/knowledgegraph.js +1 -1
  25. package/arcade/functions/maths.js +1 -1
  26. package/arcade/functions/stats.js +1 -1
  27. package/arcade/functions/string.js +1 -1
  28. package/arcade/functions/track.js +1 -1
  29. package/arcade/geometry/functions.js +1 -1
  30. package/arcade/languageUtils.js +1 -1
  31. package/arcade.js +1 -1
  32. package/arcgisGlobal.d.ts +9 -0
  33. package/assets/esri/core/workers/RemoteClient.js +1 -1
  34. package/assets/esri/core/workers/chunks/{bb95922cd4631d6f17fb.js → 04ac5ac6f592d8c34bbd.js} +1 -1
  35. package/assets/esri/core/workers/chunks/{44e64186318728d1be51.js → 067b00498ae85f635f60.js} +1 -1
  36. package/assets/esri/core/workers/chunks/{62f3ca0719ac6bc76512.js → 09c43bcb09aad02e83a9.js} +1 -1
  37. package/assets/esri/core/workers/chunks/0b20f92bae2b4c40d299.js +1 -0
  38. package/assets/esri/core/workers/chunks/0c3c311400ee352187ea.js +1 -0
  39. package/assets/esri/core/workers/chunks/0c582abc8d25249eb530.js +1 -0
  40. package/assets/esri/core/workers/chunks/0d6776055e9b34c14151.js +1 -0
  41. package/assets/esri/core/workers/chunks/0d7d54e74b5639a0be6e.js +1 -0
  42. package/assets/esri/core/workers/chunks/0da5b27b070ab780f8b3.js +1 -0
  43. package/assets/esri/core/workers/chunks/0e6b6fcc55cc43ede1fc.js +1 -0
  44. package/assets/esri/core/workers/chunks/{bcb5017500d144b73908.js → 126f1f6b355723db6c4f.js} +1 -1
  45. package/assets/esri/core/workers/chunks/12a64eca4c571926d9d4.js +1 -0
  46. package/assets/esri/core/workers/chunks/{b2c0262c4a76b8a86200.js → 149284464115981694ff.js} +1 -1
  47. package/assets/esri/core/workers/chunks/1642fa1263d8f4a45101.js +1 -0
  48. package/assets/esri/core/workers/chunks/1840d74ebae777a0200b.js +1 -0
  49. package/assets/esri/core/workers/chunks/19bf6826e7d9a4d52035.js +1 -0
  50. package/assets/esri/core/workers/chunks/1bfbdec791e19f5a2534.js +1 -0
  51. package/assets/esri/core/workers/chunks/1d8280f63a6698e74f20.js +1 -0
  52. package/assets/esri/core/workers/chunks/{a12803108c3b12808698.js → 242cad472fbc38b24dbc.js} +2 -2
  53. package/assets/esri/core/workers/chunks/25197ecb324d6f08e03e.js +1 -0
  54. package/assets/esri/core/workers/chunks/253c231b5a52f1d2d3a5.js +1 -0
  55. package/assets/esri/core/workers/chunks/25999b6f96ec305a7679.js +1 -0
  56. package/assets/esri/core/workers/chunks/259bdacfb7b0f866a8d0.js +1 -0
  57. package/assets/esri/core/workers/chunks/28565756f884d0851003.js +1 -0
  58. package/assets/esri/core/workers/chunks/2a5a165848413764381b.js +1 -0
  59. package/assets/esri/core/workers/chunks/2e7a5bb740281ef59199.js +1 -0
  60. package/assets/esri/core/workers/chunks/{285a5bd708f0fe1c620c.js → 2ea3ca68cfa4d34e8f3b.js} +1 -1
  61. package/assets/esri/core/workers/chunks/2f87a49bdd00f899d81d.js +1 -0
  62. package/assets/esri/core/workers/chunks/{37a95f097533bad1b338.js → 302d91b7c480c6c9304b.js} +1 -1
  63. package/assets/esri/core/workers/chunks/{3d6d2b42ba2ad7086d5d.js → 3b493e8043ec1a2a5d96.js} +1 -1
  64. package/assets/esri/core/workers/chunks/3ddd717ea12d9823eee2.js +1 -0
  65. package/assets/esri/core/workers/chunks/40e48b720d89cd067892.js +1 -0
  66. package/assets/esri/core/workers/chunks/{a833fc9250635eb4152f.js → 41f7f3615d3ecb87c59a.js} +1 -1
  67. package/assets/esri/core/workers/chunks/{95b3b8fe45ef4ac6b277.js → 450bc48a7389607bce1e.js} +1 -1
  68. package/assets/esri/core/workers/chunks/465a050fd838ee8eddf3.js +1 -0
  69. package/assets/esri/core/workers/chunks/{0d61c8d348b09179777a.js → 46d8a1d6f7341ad20749.js} +1 -1
  70. package/assets/esri/core/workers/chunks/4710f21b138a2c9a0345.js +1 -0
  71. package/assets/esri/core/workers/chunks/48a0dfaabb9b4bce4191.js +1 -0
  72. package/assets/esri/core/workers/chunks/49a3888bf9e2481642ac.js +1 -0
  73. package/assets/esri/core/workers/chunks/{4ee900e5dbb130fa0c7b.js → 4a40b894ec89b0a4f9bf.js} +1 -1
  74. package/assets/esri/core/workers/chunks/{d847c3cb2043a983145b.js → 4addea2e35b0c845743e.js} +1 -1
  75. package/assets/esri/core/workers/chunks/{e0a4d0288abd334b0673.js → 4ae626868e14bedd7fc5.js} +1 -1
  76. package/assets/esri/core/workers/chunks/529ee4670940720e888b.js +1 -0
  77. package/assets/esri/core/workers/chunks/{a3c882fe7599dc0f4f27.js → 59d1708ae13c6e7e6e55.js} +1 -1
  78. package/assets/esri/core/workers/chunks/59dd83e5aee2908c7eca.js +1 -0
  79. package/assets/esri/core/workers/chunks/{b5c7813495657f844171.js → 5adf16c034a590b5e9f5.js} +1 -1
  80. package/assets/esri/core/workers/chunks/{b8bdacebd4d24ba90f3f.js → 5fde1234c5cccaee6763.js} +1 -1
  81. package/assets/esri/core/workers/chunks/60f9b37dd738d884c48d.js +1 -0
  82. package/assets/esri/core/workers/chunks/62c8413f3bbc1378273d.js +1 -0
  83. package/assets/esri/core/workers/chunks/6501ee40bf25f9f75d02.js +1 -0
  84. package/assets/esri/core/workers/chunks/663cf8bff17c894cd5f8.js +1 -0
  85. package/assets/esri/core/workers/chunks/6d1371b521c7f94fd77e.js +1 -0
  86. package/assets/esri/core/workers/chunks/6d5038d4351fe29e2718.js +1 -0
  87. package/assets/esri/core/workers/chunks/6f102c90908c9900cdaa.js +1 -0
  88. package/assets/esri/core/workers/chunks/6f39545710d1b35d922c.js +1 -0
  89. package/assets/esri/core/workers/chunks/7278fdf6bfcdffa10a7f.js +1 -0
  90. package/assets/esri/core/workers/chunks/72eb0ac55026a4f5d6a7.js +1 -0
  91. package/assets/esri/core/workers/chunks/73cb499d7d68c59ba34e.js +1 -0
  92. package/assets/esri/core/workers/chunks/{b8d788e110c212a879ab.js → 73f228d966b89c73c9e9.js} +1 -1
  93. package/assets/esri/core/workers/chunks/76bccc318d7cc33829a7.js +1 -0
  94. package/assets/esri/core/workers/chunks/777eafdb86b26b35c803.js +1 -0
  95. package/assets/esri/core/workers/chunks/7821aeba3e414b318a75.js +1 -0
  96. package/assets/esri/core/workers/chunks/7b531feba4fd662575f9.js +1 -0
  97. package/assets/esri/core/workers/chunks/7c57354d026e27e056d4.js +1 -0
  98. package/assets/esri/core/workers/chunks/7d163d9d90393e491ee5.js +1 -0
  99. package/assets/esri/core/workers/chunks/7d4c65311064a5c2e0b1.js +1 -0
  100. package/assets/esri/core/workers/chunks/{0474af7687466d8befd2.js → 7e2794705b4e679fcb3f.js} +1 -1
  101. package/assets/esri/core/workers/chunks/7ebbb90d80600d9ba889.js +1 -0
  102. package/assets/esri/core/workers/chunks/7f125963555dc1ce63ad.js +1 -0
  103. package/assets/esri/core/workers/chunks/{763cbb6716e398436a6d.js → 7f6eee102871769fdf8f.js} +1 -1
  104. package/assets/esri/core/workers/chunks/805c97b875d3066fb8df.js +1 -0
  105. package/assets/esri/core/workers/chunks/8566449c39eba55147f5.js +1 -0
  106. package/assets/esri/core/workers/chunks/86ed75b7169b8ee43025.js +1 -0
  107. package/assets/esri/core/workers/chunks/{9482a6d7baa24bbf5693.js → 89132395eca329b9ab92.js} +1 -1
  108. package/assets/esri/core/workers/chunks/{28bc5e8e82f188b30eb9.js → 894343e415639df88243.js} +1 -1
  109. package/assets/esri/core/workers/chunks/8b4759cef5ae5e43253b.js +1 -0
  110. package/assets/esri/core/workers/chunks/8ba4175f5e9a24ffecf7.js +1 -0
  111. package/assets/esri/core/workers/chunks/8be707044d992ef5f1d8.js +1 -0
  112. package/assets/esri/core/workers/chunks/{bd862382f72ebd446b46.js → 8d2cac1952e817daaf1f.js} +1 -1
  113. package/assets/esri/core/workers/chunks/8e38c5e63aae42bdf5a4.js +29 -0
  114. package/assets/esri/core/workers/chunks/{02ab09285a5c4ca98066.js → 8f785b722b1a131bf370.js} +1 -1
  115. package/assets/esri/core/workers/chunks/8f9874f42f21a4cb3acd.js +1 -0
  116. package/assets/esri/core/workers/chunks/{57824ecc10b25e3ad794.js → 903e1cd8b76eff19ebdf.js} +1 -1
  117. package/assets/esri/core/workers/chunks/90f4b81c6034253b70d7.js +1 -0
  118. package/assets/esri/core/workers/chunks/917c11cb40a7742d7f98.js +1 -0
  119. package/assets/esri/core/workers/chunks/93ab247ff34694ac60eb.js +1 -0
  120. package/assets/esri/core/workers/chunks/93c0a620a147cbf4a0ba.js +1 -0
  121. package/assets/esri/core/workers/chunks/{6e45d0db97ffa4509177.js → 94bf7f0da6ad3f7ea277.js} +1 -1
  122. package/assets/esri/core/workers/chunks/9be6827e5756031a56c1.js +1 -0
  123. package/assets/esri/core/workers/chunks/9c57161ad48d8d546dc7.js +1 -0
  124. package/assets/esri/core/workers/chunks/{b2cf1d3f0d48eac23a84.js → 9c5dff4f13102871786e.js} +1 -1
  125. package/assets/esri/core/workers/chunks/9d0bda096cdbd7e22f4b.js +1 -0
  126. package/assets/esri/core/workers/chunks/9dfb7d120195991e9672.js +1 -0
  127. package/assets/esri/core/workers/chunks/9ed5e6b06afea6c85330.js +1 -0
  128. package/assets/esri/core/workers/chunks/{79b857bb301f9c4169d6.js → 9fee8441fbac9f723f77.js} +1 -1
  129. package/assets/esri/core/workers/chunks/a108f276659d5f25352c.js +1 -0
  130. package/assets/esri/core/workers/chunks/{b32ede7805c7c6644e4c.js → a3bf8aa81ee398da5b52.js} +1 -1
  131. package/assets/esri/core/workers/chunks/{5b30231ae0a8f4b8435f.js → a504fa17d83facf1c01f.js} +1 -1
  132. package/assets/esri/core/workers/chunks/a52c88e2d837b525ff6c.js +1 -0
  133. package/assets/esri/core/workers/chunks/{23a3d8f91caf3136b2aa.js → a5fdb02b1714e93fa69e.js} +1 -1
  134. package/assets/esri/core/workers/chunks/{538fe46dfd685a490e23.js → a7f42ada0aa69873a938.js} +1 -1
  135. package/assets/esri/core/workers/chunks/a97e0b9b057664911c14.js +1 -0
  136. package/assets/esri/core/workers/chunks/{cb58aff1ff186fa18345.js → a9f616f22042b0dce8b9.js} +1 -1
  137. package/assets/esri/core/workers/chunks/afd63c18ce4656271c8e.js +1 -0
  138. package/assets/esri/core/workers/chunks/{f04cb48fc73635d0572f.js → b059dabb1c732829487c.js} +1 -1
  139. package/assets/esri/core/workers/chunks/b313464b987db8a3987a.js +1 -0
  140. package/assets/esri/core/workers/chunks/b318823aefcefad6fad5.js +1 -0
  141. package/assets/esri/core/workers/chunks/b378e504a5b1afc8d0ce.js +1 -0
  142. package/assets/esri/core/workers/chunks/{9fb87a7dba62b527c0ba.js → b3a1a93c6dc9247cb048.js} +1 -1
  143. package/assets/esri/core/workers/chunks/b4e5ee81b9eb171499a6.js +1 -0
  144. package/assets/esri/core/workers/chunks/b5397dc03fa0bd654ba6.js +1 -0
  145. package/assets/esri/core/workers/chunks/b5b698008b8f3f4d5d61.js +1 -0
  146. package/assets/esri/core/workers/chunks/b7bcb31737b01d7736d0.js +1 -0
  147. package/assets/esri/core/workers/chunks/b9a1046ca2cd0cca5da5.js +1 -0
  148. package/assets/esri/core/workers/chunks/{cda04571d7623c17ada2.js → b9c7aa04861f545a559c.js} +1 -1
  149. package/assets/esri/core/workers/chunks/{7df795bc4fa1d433463b.js → ba030767cf935f967454.js} +1 -1
  150. package/assets/esri/core/workers/chunks/{53d165b4f30fd64e5d8a.js → bd311c85437743cf7d2f.js} +1 -1
  151. package/assets/esri/core/workers/chunks/bd88228f781a0399d8bd.js +1 -0
  152. package/assets/esri/core/workers/chunks/bece22668622a9a6bfe2.js +1 -0
  153. package/assets/esri/core/workers/chunks/bfb626805405646a0419.js +1 -0
  154. package/assets/esri/core/workers/chunks/c02ae1d40c1fe95ae6c5.js +1 -0
  155. package/assets/esri/core/workers/chunks/c203df41f9d2e4b80889.js +1 -0
  156. package/assets/esri/core/workers/chunks/{278409028bc5af45b507.js → c4c83b5129c279c3615b.js} +1 -1
  157. package/assets/esri/core/workers/chunks/c6ef0636073e28350c91.js +1 -0
  158. package/assets/esri/core/workers/chunks/c7e391df714839484cd1.js +1 -0
  159. package/assets/esri/core/workers/chunks/cded485ad893a7dd2948.js +1 -0
  160. package/assets/esri/core/workers/chunks/{1cf8fb704c48ac3d3b15.js → cf360767310fb45660a8.js} +1 -1
  161. package/assets/esri/core/workers/chunks/{8f2fecd8a0a972d68590.js → cf8ce63711488f2e677c.js} +1 -1
  162. package/assets/esri/core/workers/chunks/d214ac457ac970479536.js +1 -0
  163. package/assets/esri/core/workers/chunks/d4058352db1e8255b52e.js +1 -0
  164. package/assets/esri/core/workers/chunks/d4d385d19e62ef1c286f.js +1 -0
  165. package/assets/esri/core/workers/chunks/d4f005dadba75422b401.js +1 -0
  166. package/assets/esri/core/workers/chunks/d583bcea4d1a21da9147.js +1 -0
  167. package/assets/esri/core/workers/chunks/{52c4b4dabcb0d162be72.js → d5e15021928e95c11463.js} +1 -1
  168. package/assets/esri/core/workers/chunks/{fc639c730115e07a4a1a.js → d6500f6b2ff115d9eb09.js} +1 -1
  169. package/assets/esri/core/workers/chunks/{3f775deea48e268411f1.js → d7267f429a051943187b.js} +1 -1
  170. package/assets/esri/core/workers/chunks/d9c78c2db04a06ee83ed.js +1 -0
  171. package/assets/esri/core/workers/chunks/{e65ee26feca0564aeb9b.js → dc7e4f7879debf557e46.js} +145 -97
  172. package/assets/esri/core/workers/chunks/e1492d2404c3ed82931e.js +1 -0
  173. package/assets/esri/core/workers/chunks/e34ed3b818b2eb4116c5.js +1 -0
  174. package/assets/esri/core/workers/chunks/e7149d23615fee31ab7e.js +1 -0
  175. package/assets/esri/core/workers/chunks/ec774f5d6ea5c29536e5.js +1 -0
  176. package/assets/esri/core/workers/chunks/ed71a4e353715db0a6e9.js +1 -0
  177. package/assets/esri/core/workers/chunks/{1e342d532925569daadb.js → f475672ff4c2ec9367c2.js} +1 -1
  178. package/assets/esri/core/workers/chunks/{cc414fd2e313d89d524d.js → f54eba484f40d5eeb590.js} +1 -1
  179. package/assets/esri/core/workers/chunks/{04ffe788d2efc0a076dd.js → f5c9659fc5d571d501c9.js} +1 -1
  180. package/assets/esri/core/workers/chunks/f622b27ebdf1c918fd6d.js +1 -0
  181. package/assets/esri/core/workers/chunks/{dd95f50dac3f33cdb6d2.js → f6a13f07a5f7b781a9a8.js} +1 -1
  182. package/assets/esri/core/workers/chunks/{d849bdaf5bdfdc37531a.js → f6f7d885b4d6080e3f58.js} +1 -1
  183. package/assets/esri/core/workers/chunks/f8b8d3d2710c83acccf3.js +1 -0
  184. package/assets/esri/core/workers/chunks/f95870bb4d8e4e13e69e.js +1 -0
  185. package/assets/esri/core/workers/chunks/fa59f10ed0f182a2a7f3.js +1 -0
  186. package/assets/esri/core/workers/chunks/faa55265020591fd2224.js +1 -0
  187. package/assets/esri/core/workers/chunks/fc827f58db3194922056.js +1 -0
  188. package/assets/esri/libs/parquet/pkg/bundle_bg.wasm +0 -0
  189. package/chunks/Component.glsl.js +60 -62
  190. package/chunks/DefaultMaterial.glsl.js +27 -28
  191. package/chunks/GaussianSplat.glsl.js +7 -7
  192. package/chunks/GaussianSplatShadow.glsl.js +9 -9
  193. package/chunks/GlobalIllumination.glsl.js +35 -15
  194. package/chunks/Path.glsl.js +7 -6
  195. package/chunks/RealisticTree.glsl.js +22 -24
  196. package/chunks/SSAO.glsl.js +1 -1
  197. package/chunks/Terrain.glsl.js +3 -2
  198. package/chunks/Water.glsl.js +20 -11
  199. package/chunks/aiServices.js +1 -1
  200. package/chunks/array.js +1 -1
  201. package/chunks/bundle2.js +1 -1
  202. package/chunks/languageUtils.js +1 -1
  203. package/config.js +1 -1
  204. package/form/ExpressionInfo.d.ts +1 -1
  205. package/form/ExpressionInfo.js +1 -1
  206. package/form/elements/FieldElement.d.ts +3 -2
  207. package/form/elements/inputs/ComboBoxInput.d.ts +4 -15
  208. package/form/elements/inputs/ComboBoxInput.js +1 -1
  209. package/form/elements/inputs/DynamicChoiceInput.d.ts +31 -0
  210. package/form/elements/inputs/DynamicChoiceInput.js +2 -0
  211. package/form/elements/inputs/Input.d.ts +1 -1
  212. package/form/elements/inputs/RadioButtonsInput.d.ts +4 -15
  213. package/form/elements/inputs/RadioButtonsInput.js +1 -1
  214. package/form/elements/inputs/SingleChoiceInput.d.ts +18 -0
  215. package/form/elements/inputs/SingleChoiceInput.js +2 -0
  216. package/form/elements/inputs.d.ts +11 -2
  217. package/form/elements/inputs.js +1 -1
  218. package/geometry/support/normalizeUtils.d.ts +1 -1
  219. package/kernel.js +1 -1
  220. package/layers/ImageryTileLayer.d.ts +1 -1
  221. package/layers/RouteLayer.d.ts +1 -1
  222. package/layers/graphics/sources/ParquetSource.js +1 -1
  223. package/layers/graphics/sources/parquet/FileProvider.js +1 -1
  224. package/layers/graphics/sources/parquet/ParquetFileInfo.js +1 -1
  225. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  226. package/layers/mixins/ArcGISImageService.d.ts +24 -24
  227. package/layers/mixins/TiledImagery.d.ts +1 -1
  228. package/layers/orientedImagery/transformations/rectifyMapPoint.js +1 -1
  229. package/layers/raster/datasets/EphemeralBlockCache.js +1 -1
  230. package/layers/raster/datasets/RawBlockCache.js +1 -1
  231. package/layers/support/KMLSublayer.js +1 -1
  232. package/libs/parquet/parquet.js +1 -1
  233. package/networks/support/CircuitExportJobInfo.d.ts +1 -1
  234. package/networks/support/CircuitVerifyJobInfo.d.ts +1 -1
  235. package/networks/support/TopologyValidationJobInfo.d.ts +1 -1
  236. package/networks/support/TraceJobInfo.d.ts +1 -1
  237. package/package.json +2 -2
  238. package/portal/jsonTypes.d.ts +1 -1
  239. package/rest/closestFacility.d.ts +1 -1
  240. package/rest/find.d.ts +1 -1
  241. package/rest/geometryService.d.ts +21 -21
  242. package/rest/geoprocessor.d.ts +2 -2
  243. package/rest/identify.d.ts +1 -1
  244. package/rest/imageService.d.ts +19 -19
  245. package/rest/lastMileDelivery.d.ts +8 -8
  246. package/rest/locator.d.ts +4 -4
  247. package/rest/networkService.d.ts +1 -1
  248. package/rest/networks/queryAssociations.d.ts +1 -1
  249. package/rest/networks/synthesizeAssociationGeometries.d.ts +1 -1
  250. package/rest/networks/trace.d.ts +1 -1
  251. package/rest/networks/traverseAssociations.d.ts +1 -1
  252. package/rest/places.d.ts +3 -3
  253. package/rest/print.d.ts +1 -1
  254. package/rest/query.d.ts +11 -11
  255. package/rest/route.d.ts +1 -1
  256. package/rest/serviceArea.d.ts +1 -1
  257. package/rest/support/JobInfo.d.ts +5 -5
  258. package/rest/support/Query.js +1 -1
  259. package/rest/symbolService.d.ts +1 -1
  260. package/support/revision.js +1 -1
  261. package/symbols/LabelSymbol3D.js +1 -1
  262. package/symbols/LineSymbol3D.js +1 -1
  263. package/symbols/MeshSymbol3D.js +1 -1
  264. package/symbols/PointSymbol3D.js +1 -1
  265. package/symbols/PolygonSymbol3D.js +1 -1
  266. package/views/2d/layers/features/sources/strategies/ParquetTileLoadStrategy.js +1 -1
  267. package/views/3d/analysis/LineOfSight/LineOfSightReshapeTool3D.js +1 -1
  268. package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
  269. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementShiftTool.js +1 -1
  270. package/views/3d/interactive/editingTools/transform/TransformTool3D.js +1 -1
  271. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  272. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  273. package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
  274. package/views/3d/layers/graphics/Graphics3DPathSymbolLayerConstants.js +1 -1
  275. package/views/3d/layers/graphics/defaultSymbolComplexity.js +1 -1
  276. package/views/3d/state/controllers/RotateController.js +1 -1
  277. package/views/3d/state/utils/navigationUtils.js +1 -1
  278. package/views/3d/support/gaussianSplatting/GaussianSplatDataStore.js +1 -1
  279. package/views/3d/support/gaussianSplatting/GaussianSplatFadeHelper.js +1 -1
  280. package/views/3d/terrain/OverlayRenderer.js +1 -1
  281. package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathEvaluate.glsl.js +49 -32
  282. package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathVertexInfo.glsl.js +5 -5
  283. package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathVertexPosition.glsl.js +23 -23
  284. package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js +24 -16
  285. package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialExternalColor.glsl.js +25 -0
  286. package/views/3d/webgl-engine/lib/GaussianSplatRenderUtils.js +2 -0
  287. package/views/3d/webgl-engine/lib/GaussianSplatRenderer.js +1 -1
  288. package/views/3d/webgl-engine/lib/GaussianSplatShadows.js +1 -1
  289. package/views/3d/webgl-engine/lib/PathBuilder.js +1 -1
  290. package/views/3d/webgl-engine/lib/PathEvaluator.js +1 -1
  291. package/views/3d/webgl-engine/lib/PathExtruder.js +1 -1
  292. package/views/3d/webgl-engine/materials/PathMaterial.js +1 -1
  293. package/views/3d/webgl-engine/materials/PathTechniqueConfiguration.js +1 -1
  294. package/views/3d/webgl-engine/shaders/DefaultMaterial.glsl.js +1 -1
  295. package/views/3d/webgl-engine/shaders/GaussianSplat.glsl.js +1 -1
  296. package/views/3d/webgl-engine/shaders/GaussianSplatPassParameters.js +2 -0
  297. package/views/3d/webgl-engine/shaders/GaussianSplatShadow.glsl.js +1 -1
  298. package/views/3d/webgl-engine/shaders/GaussianSplatShadowTechnique.js +1 -1
  299. package/views/3d/webgl-engine/shaders/GaussianSplatTechnique.js +1 -1
  300. package/views/3d/webgl-engine/shaders/RealisticTree.glsl.js +1 -1
  301. package/views/draw/support/InteractiveHandle.js +1 -1
  302. package/views/draw/support/managers/SurfaceManager.js +1 -1
  303. package/views/interactive/Tooltip.d.ts +3 -3
  304. package/views/interactive/Tooltip.js +1 -1
  305. package/views/interactive/options/ElevationOptions.d.ts +20 -0
  306. package/views/interactive/options/ElevationOptions.js +2 -0
  307. package/views/interactive/options/LabelOptions.d.ts +74 -0
  308. package/views/interactive/options/LabelOptions.js +2 -0
  309. package/views/interactive/options/SnappingOptions.d.ts +157 -0
  310. package/views/interactive/options/SnappingOptions.js +2 -0
  311. package/views/interactive/options/TooltipOptions.d.ts +152 -0
  312. package/views/interactive/options/TooltipOptions.js +2 -0
  313. package/views/interactive/options/TooltipVisibleElements.d.ts +105 -0
  314. package/views/interactive/options/TooltipVisibleElements.js +2 -0
  315. package/views/interactive/options/ValueOptions.d.ts +63 -0
  316. package/views/interactive/options/ValueOptions.js +2 -0
  317. package/views/interactive/sketch/SketchLabelOptions.d.ts +7 -9
  318. package/views/interactive/sketch/SketchLabelOptions.js +1 -1
  319. package/views/interactive/sketch/SketchTooltipElevationOptions.js +1 -1
  320. package/views/interactive/sketch/SketchTooltipOptions.d.ts +8 -50
  321. package/views/interactive/sketch/SketchTooltipOptions.js +1 -1
  322. package/views/interactive/sketch/SketchTooltipVisibleElements.d.ts +10 -95
  323. package/views/interactive/sketch/SketchTooltipVisibleElements.js +1 -1
  324. package/views/interactive/sketch/SketchValueOptions.d.ts +7 -45
  325. package/views/interactive/sketch/SketchValueOptions.js +1 -1
  326. package/views/interactive/sketch/Units.d.ts +10 -29
  327. package/views/interactive/sketch/Units.js +1 -1
  328. package/views/interactive/snapping/SnappingOptions.d.ts +7 -78
  329. package/views/interactive/snapping/SnappingOptions.js +1 -1
  330. package/views/interactive/support/Units.d.ts +33 -0
  331. package/views/interactive/support/Units.js +2 -0
  332. package/views/interactive/support/types.d.ts +33 -0
  333. package/views/interactive/tooltip/types.d.ts +6 -2
  334. package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js +1 -1
  335. package/widgets/BatchAttributeForm/expressions/ExpressionsManager.js +1 -1
  336. package/widgets/BatchAttributeForm/expressions/ExpressionsModel.js +1 -1
  337. package/widgets/LayerList/ListItem.js +1 -1
  338. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  339. package/widgets/OrientedImageryViewer/services/SuperimposeService.js +1 -1
  340. package/widgets/OrientedImageryViewer/services/TransformationService.js +1 -1
  341. package/widgets/OrientedImageryViewer/support/superimposeUtils.js +1 -1
  342. package/widgets/OrientedImageryViewer.js +1 -1
  343. package/widgets/TableList/ListItem.js +1 -1
  344. package/assets/esri/core/workers/chunks/02dd79beb13eff6be85e.js +0 -1
  345. package/assets/esri/core/workers/chunks/0623acb2bd14a61b65c9.js +0 -29
  346. package/assets/esri/core/workers/chunks/069b6d8bdb34ee88d437.js +0 -1
  347. package/assets/esri/core/workers/chunks/0790bf0eb276cd9166f6.js +0 -1
  348. package/assets/esri/core/workers/chunks/08c2bf9defcece9e049a.js +0 -1
  349. package/assets/esri/core/workers/chunks/0ae0483b72f5e8d00d55.js +0 -1
  350. package/assets/esri/core/workers/chunks/0d1224693a62a26a0e72.js +0 -1
  351. package/assets/esri/core/workers/chunks/10b367563f894ceb9864.js +0 -1
  352. package/assets/esri/core/workers/chunks/11e00ca5ac1b004f4ecc.js +0 -1
  353. package/assets/esri/core/workers/chunks/13033178de9f637a2356.js +0 -1
  354. package/assets/esri/core/workers/chunks/13c893e448bedc5c1cef.js +0 -1
  355. package/assets/esri/core/workers/chunks/14cd8bb1ad4da8d1d2ca.js +0 -1
  356. package/assets/esri/core/workers/chunks/15c2d9bec0455fc363a9.js +0 -1
  357. package/assets/esri/core/workers/chunks/246cd372d4184233f48e.js +0 -1
  358. package/assets/esri/core/workers/chunks/268ab65afc3fce775ad2.js +0 -1
  359. package/assets/esri/core/workers/chunks/279a9a38b04a21cdfd11.js +0 -1
  360. package/assets/esri/core/workers/chunks/2a1c6df073e6ca6a6365.js +0 -1
  361. package/assets/esri/core/workers/chunks/3406a01dad6338e3c548.js +0 -1
  362. package/assets/esri/core/workers/chunks/36781219ca9ba5d7fe52.js +0 -1
  363. package/assets/esri/core/workers/chunks/36999a2e383c8eb3c398.js +0 -1
  364. package/assets/esri/core/workers/chunks/36f8a912842181e1f0aa.js +0 -1
  365. package/assets/esri/core/workers/chunks/3f1a7f8a9ead64bf0b7b.js +0 -1
  366. package/assets/esri/core/workers/chunks/41e821ce229bc56dc1a1.js +0 -1
  367. package/assets/esri/core/workers/chunks/43b39abd49c4a8ce891f.js +0 -1
  368. package/assets/esri/core/workers/chunks/456e616f32e7de696d38.js +0 -1
  369. package/assets/esri/core/workers/chunks/478540265c86436da05e.js +0 -1
  370. package/assets/esri/core/workers/chunks/479f486ec1797629ec70.js +0 -1
  371. package/assets/esri/core/workers/chunks/484b3e2a220c440ccbb4.js +0 -1
  372. package/assets/esri/core/workers/chunks/4a340836ddbc856993f2.js +0 -1
  373. package/assets/esri/core/workers/chunks/54b9667450d066c6f6ce.js +0 -1
  374. package/assets/esri/core/workers/chunks/57b07448da06d0302a46.js +0 -1
  375. package/assets/esri/core/workers/chunks/5a9ff50fdcc99ae28cce.js +0 -1
  376. package/assets/esri/core/workers/chunks/5dbd8ca7e7b8eb9a0bf7.js +0 -1
  377. package/assets/esri/core/workers/chunks/5dc17b76c6ecc24e7b9a.js +0 -1
  378. package/assets/esri/core/workers/chunks/5e3d5347223f0111f40f.js +0 -1
  379. package/assets/esri/core/workers/chunks/5eb6f37c74a217772eca.js +0 -1
  380. package/assets/esri/core/workers/chunks/6210fb6cd31844f23964.js +0 -1
  381. package/assets/esri/core/workers/chunks/638ed1297efdb24f4711.js +0 -1
  382. package/assets/esri/core/workers/chunks/63ede7295938f7010808.js +0 -1
  383. package/assets/esri/core/workers/chunks/661a59133ae34f172174.js +0 -1
  384. package/assets/esri/core/workers/chunks/687cf21e027f49b44d22.js +0 -1
  385. package/assets/esri/core/workers/chunks/6c2b5087a9df65267f4e.js +0 -1
  386. package/assets/esri/core/workers/chunks/6c98a64d92c9bca78203.js +0 -1
  387. package/assets/esri/core/workers/chunks/6d247ff53421d27628ce.js +0 -1
  388. package/assets/esri/core/workers/chunks/700c08dd2e734c15e621.js +0 -1
  389. package/assets/esri/core/workers/chunks/70452f6d63e9be8d03dd.js +0 -1
  390. package/assets/esri/core/workers/chunks/733b2e181683d5fc7c95.js +0 -1
  391. package/assets/esri/core/workers/chunks/7659391f952d134164cf.js +0 -1
  392. package/assets/esri/core/workers/chunks/7889f4a17cf249f2acc5.js +0 -1
  393. package/assets/esri/core/workers/chunks/7a2dcd57849048c6e00d.js +0 -1
  394. package/assets/esri/core/workers/chunks/7a2dfa42610fe8414ed7.js +0 -1
  395. package/assets/esri/core/workers/chunks/7ce52b850dd785bfa33f.js +0 -1
  396. package/assets/esri/core/workers/chunks/7d85048c6cd6ad84faf9.js +0 -1
  397. package/assets/esri/core/workers/chunks/7fdd6a5fa062778be55d.js +0 -1
  398. package/assets/esri/core/workers/chunks/81accb1820e2735fa376.js +0 -1
  399. package/assets/esri/core/workers/chunks/8210fc9e072209e26fa9.js +0 -1
  400. package/assets/esri/core/workers/chunks/8369edafab7bdc59b95a.js +0 -1
  401. package/assets/esri/core/workers/chunks/84fa102a93b2144c28fb.js +0 -1
  402. package/assets/esri/core/workers/chunks/85ce7673d42526a79fd2.js +0 -1
  403. package/assets/esri/core/workers/chunks/8722e2790272e90a1897.js +0 -1
  404. package/assets/esri/core/workers/chunks/8a1970e68bc1e833cb7f.js +0 -1
  405. package/assets/esri/core/workers/chunks/8bb20ef549ec1c86b38e.js +0 -1
  406. package/assets/esri/core/workers/chunks/8c535c6a39d2be2ed655.js +0 -1
  407. package/assets/esri/core/workers/chunks/9008090a5d8431ddfa22.js +0 -1
  408. package/assets/esri/core/workers/chunks/92696cce2b980373f9ad.js +0 -1
  409. package/assets/esri/core/workers/chunks/98b27cf8acbfa4259758.js +0 -1
  410. package/assets/esri/core/workers/chunks/9a6208ab670ad74e6f7d.js +0 -1
  411. package/assets/esri/core/workers/chunks/a09ce34fc7c8abe64ed5.js +0 -1
  412. package/assets/esri/core/workers/chunks/a10f63a08d976be058be.js +0 -1
  413. package/assets/esri/core/workers/chunks/a5f058567419ea70dff6.js +0 -1
  414. package/assets/esri/core/workers/chunks/a965d151515b76dd7566.js +0 -1
  415. package/assets/esri/core/workers/chunks/afeeb11b39e140303b5a.js +0 -1
  416. package/assets/esri/core/workers/chunks/b7170816736769d3b7b0.js +0 -1
  417. package/assets/esri/core/workers/chunks/b8e5d7aefddddbd0a10c.js +0 -1
  418. package/assets/esri/core/workers/chunks/b958f87f23f984131d09.js +0 -1
  419. package/assets/esri/core/workers/chunks/b9f40681af1fa00b5bbe.js +0 -1
  420. package/assets/esri/core/workers/chunks/c4c25db769a78e677e33.js +0 -1
  421. package/assets/esri/core/workers/chunks/c85ba0700eafdc8d6f9e.js +0 -1
  422. package/assets/esri/core/workers/chunks/c97451f75c23be979476.js +0 -1
  423. package/assets/esri/core/workers/chunks/ca118c42c0f609ca7912.js +0 -1
  424. package/assets/esri/core/workers/chunks/cb17cd8aaf77238c0236.js +0 -1
  425. package/assets/esri/core/workers/chunks/d03f427442bb0c287d05.js +0 -1
  426. package/assets/esri/core/workers/chunks/d08d3c6f21e6ba8268ca.js +0 -1
  427. package/assets/esri/core/workers/chunks/d37a72111dffc4c4db70.js +0 -1
  428. package/assets/esri/core/workers/chunks/d41ab2abcfacc87809b5.js +0 -1
  429. package/assets/esri/core/workers/chunks/d4ed094962a41d756c95.js +0 -1
  430. package/assets/esri/core/workers/chunks/d83ea3e4e9ab45334068.js +0 -1
  431. package/assets/esri/core/workers/chunks/d9b83d7dd7d1f7729a91.js +0 -1
  432. package/assets/esri/core/workers/chunks/dbcec48c4ba104a6d0b5.js +0 -1
  433. package/assets/esri/core/workers/chunks/dc24e80d061f7b063608.js +0 -1
  434. package/assets/esri/core/workers/chunks/df30053a10d4930924d5.js +0 -1
  435. package/assets/esri/core/workers/chunks/e5bb7ee670a3ba5ba3fe.js +0 -1
  436. package/assets/esri/core/workers/chunks/e5c75459de85a6dd2f14.js +0 -1
  437. package/assets/esri/core/workers/chunks/e798ca23f02a2dd65bd4.js +0 -1
  438. package/assets/esri/core/workers/chunks/f1299b4fc760ccca1518.js +0 -1
  439. package/assets/esri/core/workers/chunks/f65adaaa33d9f3b131f6.js +0 -1
  440. package/assets/esri/core/workers/chunks/f6715b8765cd36d81ec8.js +0 -1
  441. package/assets/esri/core/workers/chunks/f7fa932ade85cb2847b6.js +0 -1
  442. package/assets/esri/core/workers/chunks/f9a4f4efd63b8189a4eb.js +0 -1
  443. package/assets/esri/core/workers/chunks/f9b654f801cb416e9e17.js +0 -1
  444. package/assets/esri/core/workers/chunks/fa1c58e5b582d61a03ab.js +0 -1
  445. package/assets/esri/core/workers/chunks/fdec3a2e100688c42e41.js +0 -1
  446. package/assets/esri/core/workers/chunks/fefbde2c2e527bb716ee.js +0 -1
  447. /package/assets/esri/core/workers/chunks/{a12803108c3b12808698.js.LICENSE.txt → 242cad472fbc38b24dbc.js.LICENSE.txt} +0 -0
package/config.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import"./core/has.js";import{deepMerge as e}from"./core/object.js";const s={apiKey:void 0,apiKeys:{scopes:[]},applicationName:"",applicationUrl:globalThis.location?.href,assetsPath:"",fontsUrl:"https://static.arcgis.com/fonts",geometryServiceUrl:"https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer",geoRSSServiceUrl:"https://utility.arcgis.com/sharing/rss",kmlServiceUrl:"https://utility.arcgis.com/sharing/kml",userPrivilegesApplied:!0,portalUrl:"https://www.arcgis.com",respectPrefersReducedMotion:!0,routeServiceUrl:"https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World",workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{crossOriginNoCorsDomains:null,httpsDomains:["arcgis.com","arcgisonline.com","esrikr.com","premiumservices.blackbridge.com","esripremium.accuweather.com","gbm.digitalglobe.com","firstlook.digitalglobe.com","msi.digitalglobe.com"],interceptors:[],internalInterceptors:[],maxUrlLength:2e3,priority:"high",proxyRules:[],proxyUrl:null,timeout:62e3,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};if(globalThis.esriConfig&&(e(s,globalThis.esriConfig,!0),delete s.has),!s.assetsPath){{const e="5.2.0-next.63";s.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@${e}/assets`}s.defaultAssetsPath=s.assetsPath}export{s as default};
2
+ import"./core/has.js";import{deepMerge as e}from"./core/object.js";const s={apiKey:void 0,apiKeys:{scopes:[]},applicationName:"",applicationUrl:globalThis.location?.href,assetsPath:"",fontsUrl:"https://static.arcgis.com/fonts",geometryServiceUrl:"https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer",geoRSSServiceUrl:"https://utility.arcgis.com/sharing/rss",kmlServiceUrl:"https://utility.arcgis.com/sharing/kml",userPrivilegesApplied:!0,portalUrl:"https://www.arcgis.com",respectPrefersReducedMotion:!0,routeServiceUrl:"https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World",workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{crossOriginNoCorsDomains:null,httpsDomains:["arcgis.com","arcgisonline.com","esrikr.com","premiumservices.blackbridge.com","esripremium.accuweather.com","gbm.digitalglobe.com","firstlook.digitalglobe.com","msi.digitalglobe.com"],interceptors:[],internalInterceptors:[],maxUrlLength:2e3,priority:"high",proxyRules:[],proxyUrl:null,timeout:62e3,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};if(globalThis.esriConfig&&(e(s,globalThis.esriConfig,!0),delete s.has),!s.assetsPath){{const e="5.2.0-next.65";s.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@${e}/assets`}s.defaultAssetsPath=s.assetsPath}export{s as default};
@@ -52,7 +52,7 @@ export default class ExpressionInfo extends JSONSupport {
52
52
  accessor name: string;
53
53
  /**
54
54
  * Indicates the return type of the Arcade expression. In FeatureForm
55
- * expressions, the returnType can be `boolean`, `date`, `number` or `string`. This is dependant upon the type of expression used. For example, [visibility expressions](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/#visibilityExpression), [required expressions](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/#requiredExpression), and [editable expressions](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/#editableExpression) only return a boolean, whereas [value expressions](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/#valueExpression) return either `date`, `number`, or `string`.
55
+ * expressions, the returnType can be `boolean`, `date`, `dictionary`, `number` or `string`. This is dependent upon the type of expression used. For example, [visibility expressions](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/#visibilityExpression), [required expressions](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/#requiredExpression), and [editable expressions](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/#editableExpression) only return a boolean, whereas [value expressions](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/#valueExpression) return either `date`, `number`, or `string`.
56
56
  *
57
57
  * @default "boolean"
58
58
  * @see [Form Constraint Arcade Profile](https://developers.arcgis.com/javascript/latest/arcade/#forms)
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{JSONSupport as e}from"../core/JSONSupport.js";import{property as r,subclass as o}from"../core/accessorSupport/decorators.js";var s;let i=s=class extends e{constructor(t){super(t),this.expression=null,this.name=null,this.returnType="boolean",this.title=null}clone(){return new s({name:this.name,title:this.title,expression:this.expression,returnType:this.returnType})}};t([r({type:String,json:{write:!0}})],i.prototype,"expression",void 0),t([r({type:String,json:{write:!0}})],i.prototype,"name",void 0),t([r({type:["boolean","date","number","string"],json:{write:!0}})],i.prototype,"returnType",void 0),t([r({type:String,json:{write:!0}})],i.prototype,"title",void 0),i=s=t([o("esri.form.ExpressionInfo")],i);const n=i;export{n as default};
2
+ import{__decorate as t}from"tslib";import{JSONSupport as e}from"../core/JSONSupport.js";import{property as r,subclass as o}from"../core/accessorSupport/decorators.js";var s;let i=s=class extends e{constructor(t){super(t),this.expression=null,this.name=null,this.returnType="boolean",this.title=null}clone(){return new s({name:this.name,title:this.title,expression:this.expression,returnType:this.returnType})}};t([r({type:String,json:{write:!0}})],i.prototype,"expression",void 0),t([r({type:String,json:{write:!0}})],i.prototype,"name",void 0),t([r({type:["boolean","date","dictionary","number","string"],json:{write:!0}})],i.prototype,"returnType",void 0),t([r({type:String,json:{write:!0}})],i.prototype,"title",void 0),i=s=t([o("esri.form.ExpressionInfo")],i);const n=i;export{n as default};
@@ -11,6 +11,7 @@ import type { TextAreaInputProperties } from "./inputs/TextAreaInput.js";
11
11
  import type { SwitchInputProperties } from "./inputs/SwitchInput.js";
12
12
  import type { RadioButtonsInputProperties } from "./inputs/RadioButtonsInput.js";
13
13
  import type { MultipleChoiceInputProperties } from "./inputs/MultipleChoiceInput.js";
14
+ import type { DynamicChoiceInputProperties } from "./inputs/DynamicChoiceInput.js";
14
15
  import type { DateTimePickerInputProperties } from "./inputs/DateTimePickerInput.js";
15
16
  import type { DateTimeOffsetPickerInputProperties } from "./inputs/DateTimeOffsetPickerInput.js";
16
17
  import type { DatePickerInputProperties } from "./inputs/DatePickerInput.js";
@@ -24,7 +25,7 @@ export interface FieldElementProperties extends ElementProperties, Partial<Pick<
24
25
  */
25
26
  domain?: (CodedValueDomainProperties & { type: "coded-value" }) | (RangeDomainProperties & { type: "range" }) | null;
26
27
  /** The input to use for the element. The client application is responsible for defining the default user interface. */
27
- input?: ((BarcodeScannerInputProperties & { type: "barcode-scanner" }) | (ComboBoxInputProperties & { type: "combo-box" }) | (DatePickerInputProperties & { type: "date-picker" }) | (DateTimeOffsetPickerInputProperties & { type: "timestampoffset-picker" }) | (DateTimePickerInputProperties & { type: "datetime-picker" }) | (MultipleChoiceInputProperties & { type: "multiple-choice" }) | (RadioButtonsInputProperties & { type: "radio-buttons" }) | (SwitchInputProperties & { type: "switch" }) | (TextAreaInputProperties & { type: "text-area" }) | (TextBoxInputProperties & { type: "text-box" }) | (TimePickerInputProperties & { type: "time-picker" })) | null;
28
+ input?: ((BarcodeScannerInputProperties & { type: "barcode-scanner" }) | (ComboBoxInputProperties & { type: "combo-box" }) | (DatePickerInputProperties & { type: "date-picker" }) | (DateTimeOffsetPickerInputProperties & { type: "timestampoffset-picker" }) | (DateTimePickerInputProperties & { type: "datetime-picker" }) | (DynamicChoiceInputProperties & { type: "dynamic-choice" }) | (MultipleChoiceInputProperties & { type: "multiple-choice" }) | (RadioButtonsInputProperties & { type: "radio-buttons" }) | (SwitchInputProperties & { type: "switch" }) | (TextAreaInputProperties & { type: "text-area" }) | (TextBoxInputProperties & { type: "text-box" }) | (TimePickerInputProperties & { type: "time-picker" })) | null;
28
29
  }
29
30
 
30
31
  /**
@@ -130,7 +131,7 @@ export default class FieldElement extends Element {
130
131
  accessor hint: string | null | undefined;
131
132
  /** The input to use for the element. The client application is responsible for defining the default user interface. */
132
133
  get input(): Input | null | undefined;
133
- set input(value: ((BarcodeScannerInputProperties & { type: "barcode-scanner" }) | (ComboBoxInputProperties & { type: "combo-box" }) | (DatePickerInputProperties & { type: "date-picker" }) | (DateTimeOffsetPickerInputProperties & { type: "timestampoffset-picker" }) | (DateTimePickerInputProperties & { type: "datetime-picker" }) | (MultipleChoiceInputProperties & { type: "multiple-choice" }) | (RadioButtonsInputProperties & { type: "radio-buttons" }) | (SwitchInputProperties & { type: "switch" }) | (TextAreaInputProperties & { type: "text-area" }) | (TextBoxInputProperties & { type: "text-box" }) | (TimePickerInputProperties & { type: "time-picker" })) | null | undefined);
134
+ set input(value: ((BarcodeScannerInputProperties & { type: "barcode-scanner" }) | (ComboBoxInputProperties & { type: "combo-box" }) | (DatePickerInputProperties & { type: "date-picker" }) | (DateTimeOffsetPickerInputProperties & { type: "timestampoffset-picker" }) | (DateTimePickerInputProperties & { type: "datetime-picker" }) | (DynamicChoiceInputProperties & { type: "dynamic-choice" }) | (MultipleChoiceInputProperties & { type: "multiple-choice" }) | (RadioButtonsInputProperties & { type: "radio-buttons" }) | (SwitchInputProperties & { type: "switch" }) | (TextAreaInputProperties & { type: "text-area" }) | (TextBoxInputProperties & { type: "text-box" }) | (TimePickerInputProperties & { type: "time-picker" })) | null | undefined);
134
135
  /**
135
136
  * A reference to the [ExpressionInfo.name](https://developers.arcgis.com/javascript/latest/references/core/form/ExpressionInfo/#name) of an
136
137
  * [Arcade](https://developers.arcgis.com/javascript/latest/arcade/) expression defined in the
@@ -1,6 +1,7 @@
1
- import type Input from "./Input.js";
1
+ import type SingleChoiceInput from "./SingleChoiceInput.js";
2
+ import type { SingleChoiceInputProperties } from "./SingleChoiceInput.js";
2
3
 
3
- export interface ComboBoxInputProperties extends Partial<Pick<ComboBoxInput, "noValueOptionLabel" | "showNoValueOption">> {}
4
+ export interface ComboBoxInputProperties extends SingleChoiceInputProperties {}
4
5
 
5
6
  /**
6
7
  * The `ComboBoxInput` class defines the desired user interface for a combo box group input. This [FieldElement.input](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/#input) is used in [field elements](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/) that are set within a [feature layer's](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#formTemplate) or [FeatureForm's](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureForm/#formTemplate) `formTemplate`. This is displayed within the [Editor](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/) widget.
@@ -20,20 +21,8 @@ export interface ComboBoxInputProperties extends Partial<Pick<ComboBoxInput, "no
20
21
  * showNoValueOption: false
21
22
  * });
22
23
  */
23
- export default class ComboBoxInput extends Input {
24
+ export default class ComboBoxInput extends SingleChoiceInput {
24
25
  constructor(properties?: ComboBoxInputProperties);
25
- /** The text used to represent a null value. */
26
- accessor noValueOptionLabel: string | null | undefined;
27
- /**
28
- * Determines whether a null value option is displayed.
29
- *
30
- * > [!WARNING]
31
- * >
32
- * > This only applies to fields that support null values.
33
- *
34
- * @default true
35
- */
36
- accessor showNoValueOption: boolean;
37
26
  /** The type of form element input. */
38
27
  get type(): "combo-box";
39
28
  }
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as o}from"tslib";import{property as t,subclass as e}from"../../../core/accessorSupport/decorators.js";import p from"./Input.js";var n;let r=n=class extends p{constructor(o){super(o),this.noValueOptionLabel=null,this.showNoValueOption=!0,this.type="combo-box"}clone(){return new n({showNoValueOption:this.showNoValueOption,noValueOptionLabel:this.noValueOptionLabel})}};o([t({type:String,json:{write:!0}})],r.prototype,"noValueOptionLabel",void 0),o([t({type:Boolean,json:{write:!0}})],r.prototype,"showNoValueOption",void 0),o([t({type:["combo-box"],json:{read:!1,write:!0}})],r.prototype,"type",void 0),r=n=o([e("esri.form.elements.inputs.ComboBoxInput")],r);const s=r;export{s as default};
2
+ import{__decorate as o}from"tslib";import{property as t,subclass as e}from"../../../core/accessorSupport/decorators.js";import r from"./SingleChoiceInput.js";var s;let p=s=class extends r{constructor(o){super(o),this.type="combo-box"}clone(){return new s({showNoValueOption:this.showNoValueOption,noValueOptionLabel:this.noValueOptionLabel})}};o([t({type:["combo-box"],json:{read:!1,write:!0}})],p.prototype,"type",void 0),p=s=o([e("esri.form.elements.inputs.ComboBoxInput")],p);const n=p;export{n as default};
@@ -0,0 +1,31 @@
1
+ import type SingleChoiceInput from "./SingleChoiceInput.js";
2
+ import type { SingleChoiceInputProperties } from "./SingleChoiceInput.js";
3
+
4
+ export interface DynamicChoiceInputProperties extends SingleChoiceInputProperties, Partial<Pick<DynamicChoiceInput, "choiceExpression">> {}
5
+
6
+ /**
7
+ * The `DynamicChoiceInput` class defines the desired user interface for a dynamic choice group input. This [FieldElement.input](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/#input) is used in [field elements](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/) that are set within a [feature layer's](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#formTemplate) or [FeatureForm's](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureForm/#formTemplate) `formTemplate`. This is displayed within the [Editor](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/) widget.
8
+ *
9
+ * @since 5.2
10
+ * @see [FieldElement](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/)
11
+ * @example
12
+ * // Creates a new dynamic choice input for a field element within a form
13
+ * const dynamicChoiceInput = new DynamicChoiceInput({
14
+ * choiceExpression: "expr/dynamicChoiceExpression",
15
+ * noValueOptionLabel: "No Value",
16
+ * showNoValueOption: true,
17
+ * });
18
+ */
19
+ export default class DynamicChoiceInput extends SingleChoiceInput {
20
+ constructor(properties?: DynamicChoiceInputProperties);
21
+ /** A reference to an [Arcade](https://developers.arcgis.com/javascript/latest/arcade/) expression that returns a dictionary. The dictionary should have a `choices` array of objects, with each object in the array having a `name` property that is the text displayed to the user, and a `code` property that is the value assigned to the field when that choice is selected. */
22
+ accessor choiceExpression: string | null | undefined;
23
+ /** The type of form element input. */
24
+ get type(): "dynamic-choice";
25
+ /**
26
+ * Creates a deep clone of the `DynamicChoiceInput` class.
27
+ *
28
+ * @returns A deep clone of the `DynamicChoiceInput` instance.
29
+ */
30
+ clone(): DynamicChoiceInput;
31
+ }
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import{__decorate as o}from"tslib";import{property as e,subclass as i}from"../../../core/accessorSupport/decorators.js";import t from"./SingleChoiceInput.js";var s;let r=s=class extends t{constructor(o){super(o),this.choiceExpression=null,this.type="dynamic-choice"}clone(){return new s({choiceExpression:this.choiceExpression,showNoValueOption:this.showNoValueOption,noValueOptionLabel:this.noValueOptionLabel})}};o([e({type:String,json:{write:{isRequired:!0}}})],r.prototype,"choiceExpression",void 0),o([e({type:["dynamic-choice"],json:{read:!1,write:!0}})],r.prototype,"type",void 0),r=s=o([i("esri.form.elements.inputs.DynamicChoiceInput")],r);const n=r;export{n as default};
@@ -2,4 +2,4 @@ import type { JSONSupport } from "../../../core/JSONSupport.js";
2
2
 
3
3
  export default abstract class Input extends JSONSupport {}
4
4
 
5
- export type InputType = "barcode-scanner" | "combo-box" | "date-picker" | "datetime-picker" | "multiple-choice" | "timestampoffset-picker" | "radio-buttons" | "switch" | "text-area" | "text-box" | "time-picker";
5
+ export type InputType = "barcode-scanner" | "combo-box" | "date-picker" | "datetime-picker" | "dynamic-choice" | "multiple-choice" | "timestampoffset-picker" | "radio-buttons" | "switch" | "text-area" | "text-box" | "time-picker";
@@ -1,6 +1,7 @@
1
- import type Input from "./Input.js";
1
+ import type SingleChoiceInput from "./SingleChoiceInput.js";
2
+ import type { SingleChoiceInputProperties } from "./SingleChoiceInput.js";
2
3
 
3
- export interface RadioButtonsInputProperties extends Partial<Pick<RadioButtonsInput, "noValueOptionLabel" | "showNoValueOption">> {}
4
+ export interface RadioButtonsInputProperties extends SingleChoiceInputProperties {}
4
5
 
5
6
  /**
6
7
  * The `RadioButtonsInput` class defines the desired user interface for a radio button group input. This [FieldElement.input](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/#input) is used in [field elements](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/) that are set within a [feature layer's](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#formTemplate) or [FeatureForm's](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureForm/#formTemplate) `formTemplate`. This is displayed within the [Editor](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/) widget.
@@ -21,20 +22,8 @@ export interface RadioButtonsInputProperties extends Partial<Pick<RadioButtonsIn
21
22
  * showNoValueOption: true
22
23
  * });
23
24
  */
24
- export default class RadioButtonsInput extends Input {
25
+ export default class RadioButtonsInput extends SingleChoiceInput {
25
26
  constructor(properties?: RadioButtonsInputProperties);
26
- /** The text used to represent a null value. */
27
- accessor noValueOptionLabel: string | null | undefined;
28
- /**
29
- * Determines whether a null value option is displayed.
30
- *
31
- * > [!WARNING]
32
- * >
33
- * > This only applies to fields that support null values.
34
- *
35
- * @default true
36
- */
37
- accessor showNoValueOption: boolean;
38
27
  /** The type of form element input. */
39
28
  get type(): "radio-buttons";
40
29
  }
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as o}from"tslib";import{property as t,subclass as e}from"../../../core/accessorSupport/decorators.js";import n from"./Input.js";var s;let r=s=class extends n{constructor(o){super(o),this.noValueOptionLabel=null,this.showNoValueOption=!0,this.type="radio-buttons"}clone(){return new s({noValueOptionLabel:this.noValueOptionLabel,showNoValueOption:this.showNoValueOption})}};o([t({type:String,json:{write:!0}})],r.prototype,"noValueOptionLabel",void 0),o([t({type:Boolean,json:{write:!0}})],r.prototype,"showNoValueOption",void 0),o([t({type:["radio-buttons"],json:{read:!1,write:!0}})],r.prototype,"type",void 0),r=s=o([e("esri.form.elements.inputs.RadioButtonsInput")],r);const i=r;export{i as default};
2
+ import{__decorate as o}from"tslib";import{property as t,subclass as e}from"../../../core/accessorSupport/decorators.js";import r from"./SingleChoiceInput.js";var s;let n=s=class extends r{constructor(o){super(o),this.type="radio-buttons"}clone(){return new s({noValueOptionLabel:this.noValueOptionLabel,showNoValueOption:this.showNoValueOption})}};o([t({type:["radio-buttons"],json:{read:!1,write:!0}})],n.prototype,"type",void 0),n=s=o([e("esri.form.elements.inputs.RadioButtonsInput")],n);const i=n;export{i as default};
@@ -0,0 +1,18 @@
1
+ import type Input from "./Input.js";
2
+
3
+ export interface SingleChoiceInputProperties extends Partial<Pick<SingleChoiceInput, "noValueOptionLabel" | "showNoValueOption">> {}
4
+
5
+ export default abstract class SingleChoiceInput extends Input {
6
+ /** The text used to represent a null value. */
7
+ accessor noValueOptionLabel: string | null | undefined;
8
+ /**
9
+ * Determines whether a null value option is displayed.
10
+ *
11
+ * > [!WARNING]
12
+ * >
13
+ * > This only applies to fields that support null values.
14
+ *
15
+ * @default true
16
+ */
17
+ accessor showNoValueOption: boolean;
18
+ }
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import{__decorate as o}from"tslib";import{property as t,subclass as e}from"../../../core/accessorSupport/decorators.js";import r from"./Input.js";let s=class extends r{constructor(){super(...arguments),this.noValueOptionLabel=null,this.showNoValueOption=!0}};o([t({type:String,json:{write:!0}})],s.prototype,"noValueOptionLabel",void 0),o([t({type:Boolean,json:{write:!0}})],s.prototype,"showNoValueOption",void 0),s=o([e("esri.form.elements.inputs.SingleChoiceInput")],s);const p=s;export{p as default};
@@ -9,6 +9,7 @@
9
9
  * import DatePickerInput from "@arcgis/core/form/elements/inputs/DatePickerInput.js";
10
10
  * import DateTimeOffsetPickerInput from "@arcgis/core/form/elements/inputs/DateTimeOffsetPickerInput.js";
11
11
  * import DateTimePickerInput from "@arcgis/core/form/elements/inputs/DateTimePickerInput.js";
12
+ * import DynamicChoiceInput from "@arcgis/core/form/elements/inputs/DynamicChoiceInput.js";
12
13
  * import MultipleChoiceInput from "@arcgis/core/form/elements/inputs/MultipleChoiceInput.js";
13
14
  * import RadioButtonsInput from "@arcgis/core/form/elements/inputs/RadioButtonsInput.js";
14
15
  * import SwitchInput from "@arcgis/core/form/elements/inputs/SwitchInput.js";
@@ -20,7 +21,7 @@
20
21
  * You can use this module to import them on a single line:
21
22
  *
22
23
  * ```js
23
- * import { BarcodeScannerInput, ComboBoxInput, DatePickerInput, DateTimeOffsetPickerInput, DateTimePickerInput, MultipleChoiceInput, RadioButtonsInput, SwitchInput, TextAreaInput, TextBoxInput, TimePickerInput } from "@arcgis/core/form/elements/inputs.js";
24
+ * import { BarcodeScannerInput, ComboBoxInput, DatePickerInput, DateTimeOffsetPickerInput, DateTimePickerInput, DynamicChoiceInput, MultipleChoiceInput, RadioButtonsInput, SwitchInput, TextAreaInput, TextBoxInput, TimePickerInput } from "@arcgis/core/form/elements/inputs.js";
24
25
  * ```
25
26
  *
26
27
  * This module also allows you to implement [type guards](https://basarat.gitbook.io/typescript/type-system/typeguard)
@@ -48,6 +49,7 @@
48
49
  * @see [DatePickerInput](https://developers.arcgis.com/javascript/latest/references/core/form/elements/inputs/DatePickerInput/)
49
50
  * @see [DateTimeOffsetPickerInput](https://developers.arcgis.com/javascript/latest/references/core/form/elements/inputs/DateTimeOffsetPickerInput/)
50
51
  * @see [DateTimePickerInput](https://developers.arcgis.com/javascript/latest/references/core/form/elements/inputs/DateTimePickerInput/)
52
+ * @see [DynamicChoiceInput](https://developers.arcgis.com/javascript/latest/references/core/form/elements/inputs/DynamicChoiceInput/)
51
53
  * @see [MultipleChoiceInput](https://developers.arcgis.com/javascript/latest/references/core/form/elements/inputs/MultipleChoiceInput/)
52
54
  * @see [RadioButtonsInput](https://developers.arcgis.com/javascript/latest/references/core/form/elements/inputs/RadioButtonsInput/)
53
55
  * @see [SwitchInput](https://developers.arcgis.com/javascript/latest/references/core/form/elements/inputs/SwitchInput/)
@@ -60,6 +62,7 @@ import type ComboBoxInputClass from "./inputs/ComboBoxInput.js";
60
62
  import type DatePickerInputClass from "./inputs/DatePickerInput.js";
61
63
  import type DateTimeOffsetPickerInputClass from "./inputs/DateTimeOffsetPickerInput.js";
62
64
  import type DateTimePickerInputClass from "./inputs/DateTimePickerInput.js";
65
+ import type DynamicChoiceInputClass from "./inputs/DynamicChoiceInput.js";
63
66
  import type MultipleChoiceInputClass from "./inputs/MultipleChoiceInput.js";
64
67
  import type RadioButtonsInputClass from "./inputs/RadioButtonsInput.js";
65
68
  import type SwitchInputClass from "./inputs/SwitchInput.js";
@@ -68,7 +71,7 @@ import type TextBoxInputClass from "./inputs/TextBoxInput.js";
68
71
  import type TimePickerInputClass from "./inputs/TimePickerInput.js";
69
72
 
70
73
  /** Form element input types. */
71
- export type Input = BarcodeScannerInputClass | ComboBoxInputClass | DatePickerInputClass | DateTimeOffsetPickerInputClass | DateTimePickerInputClass | MultipleChoiceInputClass | RadioButtonsInputClass | SwitchInputClass | TextAreaInputClass | TextBoxInputClass | TimePickerInputClass;
74
+ export type Input = BarcodeScannerInputClass | ComboBoxInputClass | DatePickerInputClass | DateTimeOffsetPickerInputClass | DateTimePickerInputClass | DynamicChoiceInputClass | MultipleChoiceInputClass | RadioButtonsInputClass | SwitchInputClass | TextAreaInputClass | TextBoxInputClass | TimePickerInputClass;
72
75
 
73
76
  /** The `BarcodeScannerInput` class defines the desired user interface is a barcode or QR code scanner. If this type is used in an ArcGIS Maps SDK for JavaScript web application, it will default to the [TextBoxInput](https://developers.arcgis.com/javascript/latest/references/core/form/elements/inputs/TextBoxInput/) type as the API does not support bar code scanning as an input type. */
74
77
  export const BarcodeScannerInput: typeof BarcodeScannerInputClass;
@@ -100,6 +103,12 @@ export const DateTimePickerInput: typeof DateTimePickerInputClass;
100
103
  /** The `DateTimePickerInput` class defines the desired user interface for editing date (including time) fields in a form. */
101
104
  export type DateTimePickerInput = DateTimePickerInputClass;
102
105
 
106
+ /** The `DynamicChoiceInput` class defines the desired user interface for a dynamically generated choice group. */
107
+ export const DynamicChoiceInput: typeof DynamicChoiceInputClass;
108
+
109
+ /** The `DynamicChoiceInput` class defines the desired user interface for a dynamically generated choice group. */
110
+ export type DynamicChoiceInput = DynamicChoiceInputClass;
111
+
103
112
  /** The `MultipleChoiceInput` class defines the desired user interface for a multiple choice group. */
104
113
  export const MultipleChoiceInput: typeof MultipleChoiceInputClass;
105
114
 
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import t from"./inputs/BarcodeScannerInput.js";import i from"./inputs/ComboBoxInput.js";import p from"./inputs/DatePickerInput.js";import e from"./inputs/DateTimeOffsetPickerInput.js";import o from"./inputs/DateTimePickerInput.js";import r from"./inputs/Input.js";import m from"./inputs/MultipleChoiceInput.js";import s from"./inputs/RadioButtonsInput.js";import n from"./inputs/SwitchInput.js";import u from"./inputs/TextAreaInput.js";import c from"./inputs/TextBoxInput.js";import a from"./inputs/TimePickerInput.js";const f=t,j=i,I=p,k=e,x=o,b=m,d=s,T=n,h=u,l=c,B=a,P={base:r,key:"type",typeMap:{"barcode-scanner":f,"combo-box":j,"date-picker":I,"datetime-picker":x,"multiple-choice":b,"timestampoffset-picker":k,"datetimeoffset-picker":k,"radio-buttons":d,switch:T,"text-area":h,"text-box":l,"time-picker":B}};export{f as BarcodeScannerInput,j as ComboBoxInput,I as DatePickerInput,k as DateTimeOffsetPickerInput,x as DateTimePickerInput,b as MultipleChoiceInput,d as RadioButtonsInput,T as SwitchInput,h as TextAreaInput,l as TextBoxInput,B as TimePickerInput,P as types};
2
+ import t from"./inputs/BarcodeScannerInput.js";import i from"./inputs/ComboBoxInput.js";import p from"./inputs/DatePickerInput.js";import o from"./inputs/DateTimeOffsetPickerInput.js";import e from"./inputs/DateTimePickerInput.js";import r from"./inputs/DynamicChoiceInput.js";import m from"./inputs/Input.js";import s from"./inputs/MultipleChoiceInput.js";import n from"./inputs/RadioButtonsInput.js";import u from"./inputs/SwitchInput.js";import c from"./inputs/TextAreaInput.js";import a from"./inputs/TextBoxInput.js";import f from"./inputs/TimePickerInput.js";const j=t,I=i,k=p,x=o,d=e,b=r,h=s,y=n,T=u,l=c,B=a,D=f,P={base:m,key:"type",typeMap:{"barcode-scanner":j,"combo-box":I,"date-picker":k,"datetime-picker":d,"dynamic-choice":b,"multiple-choice":h,"timestampoffset-picker":x,"datetimeoffset-picker":x,"radio-buttons":y,switch:T,"text-area":l,"text-box":B,"time-picker":D}};export{j as BarcodeScannerInput,I as ComboBoxInput,k as DatePickerInput,x as DateTimeOffsetPickerInput,d as DateTimePickerInput,b as DynamicChoiceInput,h as MultipleChoiceInput,y as RadioButtonsInput,T as SwitchInput,l as TextAreaInput,B as TextBoxInput,D as TimePickerInput,P as types};
@@ -24,7 +24,7 @@ export type Geometry = Extent | Multipoint | Point | Polygon | Polyline | Mesh;
24
24
  * @param url - A geometry service URL used to
25
25
  * perform the normalization. If this value is `null` then the default geometry service URL in
26
26
  * [esriConfig.geometryServiceUrl](https://developers.arcgis.com/javascript/latest/references/core/config/#Config-geometryServiceUrl) is used.
27
- * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request.
27
+ * @param requestOptions - Additional options to be used for the data request.
28
28
  * @returns Resolves to an array of the normalized geometries.
29
29
  * @example
30
30
  * // create a non-normalized line that crosses the dateline
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,commitHash as revision}from"./support/revision.js";Symbol.dispose??=Symbol("Symbol.dispose"),Symbol.asyncDispose??=Symbol("Symbol.asyncDispose");const e="5.2";let s,r=e;function i(o){s=o}function t(e){const r=s?.findCredential(e);return r?.token?o(e,"token",r.token):e}r="5.2.0-next.63",has("host-webworker")||globalThis.$arcgis||Object.defineProperty(globalThis,"$arcgis",{configurable:!1,enumerable:!0,writable:!1,value:{}}),has("host-webworker");export{t as addTokenParameter,r as fullVersion,s 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,commitHash as revision}from"./support/revision.js";Symbol.dispose??=Symbol("Symbol.dispose"),Symbol.asyncDispose??=Symbol("Symbol.asyncDispose");const e="5.2";let s,r=e;function i(o){s=o}function t(e){const r=s?.findCredential(e);return r?.token?o(e,"token",r.token):e}r="5.2.0-next.65",has("host-webworker")||globalThis.$arcgis||Object.defineProperty(globalThis,"$arcgis",{configurable:!1,enumerable:!0,writable:!1,value:{}}),has("host-webworker");export{t as addTokenParameter,r as fullVersion,s as id,i as setId,e as version};
@@ -717,7 +717,7 @@ export default class ImageryTileLayer extends ImageryTileLayerSuperclass {
717
717
  * resolution for the projected geometry's extent. The statistics and histogram are then computed based on the source pixel's values.
718
718
  *
719
719
  * @param parameters - Specifies parameters for computing statistics and histograms.
720
- * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request
720
+ * @param requestOptions - Additional options to be used for the data request
721
721
  * (will override requestOptions defined during construction).
722
722
  * @returns Resolves to an object containing histogram and statistics results.
723
723
  * See the object specification table below for details.
@@ -387,7 +387,7 @@ export default class RouteLayer extends RouteLayerSuperclass {
387
387
  * | polylineBarriers | Same as [polylineBarriers](https://developers.arcgis.com/javascript/latest/references/core/layers/RouteLayer/#polylineBarriers) |
388
388
  * | polygonBarriers | Same as [polygonBarriers](https://developers.arcgis.com/javascript/latest/references/core/layers/RouteLayer/#polygonBarriers) |
389
389
  * | stops | Same as [stops](https://developers.arcgis.com/javascript/latest/references/core/layers/RouteLayer/#stops) |
390
- * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request
390
+ * @param requestOptions - Additional options to be used for the data request
391
391
  * (will override requestOptions defined during construction).
392
392
  * @returns When resolved, returns a [RouteLayerSolveResult](https://developers.arcgis.com/javascript/latest/references/core/layers/types/#RouteLayerSolveResult).
393
393
  * @see [update()](https://developers.arcgis.com/javascript/latest/references/core/layers/RouteLayer/#update)
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import e from"../../../core/Error.js";import{EventedMixin as r}from"../../../core/Evented.js";import{Loadable as s}from"../../../core/Loadable.js";import o from"../../../core/Logger.js";import{throwIfAborted as a}from"../../../core/promiseUtils.js";import{watch as i}from"../../../core/reactiveUtils.js";import{open as n}from"../../../core/workers.js";import{property as c}from"../../../core/accessorSupport/decorators/property.js";import{subclass as u}from"../../../core/accessorSupport/decorators/subclass.js";import y from"../../../geometry/Extent.js";import{createFileProviderSchema as l,toParquetJSONGeometryType as p}from"../../support/parquetUtils.js";import m from"../../../rest/support/FeatureSet.js";let h=class extends(r(s)){constructor(t){super(t),this.type="parquet"}load(t){const e=null!=t?t.signal:null;return this.addResolvingPromise(this._initialize(e)),this.addHandles([i(()=>this.layer.data,async t=>{if(t)try{await this._proxy.updateFileProvider(await l(t))}catch{}}),i(()=>this.layer.customParameters,t=>this._setCustomParameters(t))]),Promise.resolve(this)}async reload(t){const e=await this._createLoadParameters(t);return this._proxy.reload(e)}destroy(){this._connection?.destroy()}async openPorts(){return await this.load(),this._connection.openPorts()}async queryFeaturesJSON(t,e={}){return await this.load(e),this._proxy.queryFeatures(t.toJSON(),{signal:e?.signal})}async queryFeatures(t,e={}){const r=await this.queryFeaturesJSON(t,{signal:e?.signal});return m.fromJSON(r)}async queryObjectIds(t,e){return await this._proxy.queryObjectIds(t.toJSON(),{signal:e?.signal})}async queryFeatureCount(t,e){return this._proxy.queryFeatureCount(t.toJSON(),{signal:e?.signal})}async queryExtent(t,e){if(null==this.layer.geometryEncoding)return o.getLogger(this).warn("Tried to queryExtent, but source does not have a geometry. Returning null extent."),{count:0,extent:null};const r=await this._proxy.queryExtent(t.toJSON(),{signal:e?.signal});return{count:r.count,extent:y.fromJSON(r.extent)}}async _initialize(t){const e={onSourceChange:()=>this.emit("source-changed")};this._connection=await n("ParquetSourceWorker",{strategy:"dedicated",signal:t,registryTarget:this,client:e}),a(t),this._proxy=this._connection.createInvokeProxy();const r=await this._createLoadParameters(t),{layerDefinition:s,capabilities:o}=await this._proxy.load(r);a(t),this.sourceJSON=s,this.capabilities=o}async _createLoadParameters(t){if(!this.layer.data)throw new e("parquet:missing-data","A data source must be specified",this.layer);const r=await l(this.layer.data,{signal:t});return a(t),{provider:r,fields:this.layer.fields?.map(t=>t.toJSON()),geometryType:this.layer.geometryType?p(this.layer.geometryType):null,spatialReference:this.layer.spatialReference?.toJSON(),geometryEncoding:this.layer.geometryEncoding?.toJSON(),displayOptimization:this.layer.displayOptimization,customParameters:this.layer.customParameters}}_setCustomParameters(t){this._proxy.setCustomParameters(t).catch(()=>{o.getLogger(this).warn("Failed to update customParameters")})}_queryStream(t,e){return this._proxy.queryStream(t,e)}_getStreamNextFeatures(t,e){return this._proxy.getStreamNextFeatures(t,e)}};t([c()],h.prototype,"type",void 0),t([c({constructOnly:!0})],h.prototype,"layer",void 0),t([c()],h.prototype,"sourceJSON",void 0),t([c()],h.prototype,"capabilities",void 0),h=t([u("esri.layers.graphics.sources.ParquetSource")],h);export{h as ParquetSource};
2
+ import{__decorate as t}from"tslib";import e from"../../../core/Error.js";import{EventedMixin as r}from"../../../core/Evented.js";import{Loadable as s}from"../../../core/Loadable.js";import a from"../../../core/Logger.js";import{throwIfAborted as o}from"../../../core/promiseUtils.js";import{watch as i}from"../../../core/reactiveUtils.js";import{open as n}from"../../../core/workers.js";import{property as c}from"../../../core/accessorSupport/decorators/property.js";import{subclass as u}from"../../../core/accessorSupport/decorators/subclass.js";import y from"../../../geometry/Extent.js";import{createFileProviderSchema as l,toParquetJSONGeometryType as p}from"../../support/parquetUtils.js";import m from"../../../rest/support/FeatureSet.js";let h=class extends(r(s)){constructor(t){super(t),this.type="parquet"}load(t){const e=null!=t?t.signal:null;return this.addResolvingPromise(this._initialize(e)),this.addHandles([i(()=>this.layer.data,async t=>{if(t)try{await this._proxy.updateFileProvider(await l(t))}catch{}}),i(()=>this.layer.customParameters,t=>this._setCustomParameters(t))]),Promise.resolve(this)}async reload(t){const e=await this._createLoadParameters(t);return this._proxy.reload(e)}destroy(){this._connection?.destroy()}async openPorts(){return await this.load(),this._connection.openPorts()}async getDiagnosticsSnapshot(){return await this.load(),this._proxy.getDiagnosticsSnapshot()}async getColumnIndex(t){return await this.load(),this._proxy.getColumnIndex(t)}async getOffsetIndex(t){return await this.load(),this._proxy.getOffsetIndex(t)}async queryFeaturesJSON(t,e={}){return await this.load(e),this._proxy.queryFeatures(t.toJSON(),{signal:e?.signal})}async queryFeatures(t,e={}){const r=await this.queryFeaturesJSON(t,{signal:e?.signal});return m.fromJSON(r)}async queryObjectIds(t,e){return await this._proxy.queryObjectIds(t.toJSON(),{signal:e?.signal})}async queryFeatureCount(t,e){return this._proxy.queryFeatureCount(t.toJSON(),{signal:e?.signal})}async queryExtent(t,e){if(null==this.layer.geometryEncoding)return a.getLogger(this).warn("Tried to queryExtent, but source does not have a geometry. Returning null extent."),{count:0,extent:null};const r=await this._proxy.queryExtent(t.toJSON(),{signal:e?.signal});return{count:r.count,extent:y.fromJSON(r.extent)}}async _initialize(t){const e={onSourceChange:()=>this.emit("source-changed"),onRangeRead:t=>this.emit("range-read",t)};this._connection=await n("ParquetSourceWorker",{strategy:"dedicated",signal:t,registryTarget:this,client:e}),o(t),this._proxy=this._connection.createInvokeProxy();const r=await this._createLoadParameters(t),{layerDefinition:s,capabilities:a}=await this._proxy.load(r);o(t),this.sourceJSON=s,this.capabilities=a}async _createLoadParameters(t){if(!this.layer.data)throw new e("parquet:missing-data","A data source must be specified",this.layer);const r=await l(this.layer.data,{signal:t});return o(t),{provider:r,fields:this.layer.fields?.map(t=>t.toJSON()),geometryType:this.layer.geometryType?p(this.layer.geometryType):null,spatialReference:this.layer.spatialReference?.toJSON(),geometryEncoding:this.layer.geometryEncoding?.toJSON(),displayOptimization:this.layer.displayOptimization,customParameters:this.layer.customParameters}}_setCustomParameters(t){this._proxy.setCustomParameters(t).catch(()=>{a.getLogger(this).warn("Failed to update customParameters")})}_queryStream(t,e){return this._proxy.queryStream(t,e)}_getStreamNextFeatures(t,e){return this._proxy.getStreamNextFeatures(t,e)}};t([c()],h.prototype,"type",void 0),t([c({constructOnly:!0})],h.prototype,"layer",void 0),t([c()],h.prototype,"sourceJSON",void 0),t([c()],h.prototype,"capabilities",void 0),h=t([u("esri.layers.graphics.sources.ParquetSource")],h);export{h as ParquetSource};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__addDisposableResource as t,__disposeResources as e}from"tslib";import a from"../../../../request.js";import s from"../../../../core/Error.js";import{EventEmitter as r}from"../../../../core/Evented.js";import has from"../../../../core/has.js";import{QueueProcessor as n}from"../../../../core/QueueProcessor.js";import{isBlobProtocol as i}from"../../../../core/urlUtils.js";import{ParquetFileInfo as o}from"./ParquetFileInfo.js";import{parseFileStatisticsMap as c}from"./ParquetFileStatistics.js";import{createParquetFile as h,readMetadata as u}from"../../../../libs/parquet/parquet.js";const f="parquet.v1",l="_spatial.json",g=new n({concurrency:12,process:async t=>{const{data:e}=await a(t.url,t.options);return e}});class p{constructor(t,e=()=>{}){this._geometryInfo=t,this._getCustomParameters=e,this.events=new r}async destroy(){await this.clear()}async clear(){if(this._infos){const t=await this._infos;for(const e of t.values())e.destroy();t.clear(),this._infos=null}}async getMetadata(){const a={stack:[],error:void 0,hasError:!1};try{const e=(await this._getParquetFileNames()).at(0);if(!e)return null;const s=t(a,await h(e,{provider:this}),!1);return u(s)}catch(s){a.error=s,a.hasError=!0}finally{e(a)}}getGeometryInfo(){return this._geometryInfo}async getFiles(){const t=await this._getInfoMap();return Array.from(t.values())}async updateGeometryInfo(t){if(this._geometryInfo)throw new Error("GeometryInfo already set");await this.clear(),this._geometryInfo=t}async fetchLength(t){const{byteLength:e,cacheTag:a}=await this._fetchLengthAndTag(t);if(!has("parquetlayer-cache-enabled"))return e;try{await this._createOrResetCache(t,a)}catch(s){}return e}async fetchRange(t,e,a,s){if(!has("parquetlayer-cache-enabled"))return this._fetchRange(t,e,a,s);const r=new URL(this._getCacheFileName(t));r.searchParams.append("range",`${e}-${a}`);try{const n=await this._openCache(t),i=await n.match(r);if(i)return await i.arrayBuffer();const o=await this._fetchRange(t,e,a,s);return await n.put(r,new Response(o,{headers:{"Content-Type":"application/octet-stream","Content-Length":o.byteLength.toString()}})),o}catch(n){return this._fetchRange(t,e,a,s)}}_getCacheFileName(t){return t}async _requestStatistics(t){const{data:e}=await a(t,{responseType:"json",query:this._getCustomParameters()});return e}async _fetchRange(t,e,a,r){const n={url:t,options:{responseType:"array-buffer",query:this._getCustomParameters()??{},cacheMode:"no-store",useQueue:!0,headers:{range:`bytes=${e}-${a}`}}},i=await g.push(n),o=a-e+1;if(i.byteLength!==o)throw new s("InvalidRangeRequest",`request returned ${i.byteLength} bytes for range ${e}-${a}, expected ${o}.`);return i}async _fetchLengthAndTag(t){if(i(t)){const{data:e}=await a(t,{responseType:"blob"});return{byteLength:e.size,cacheTag:null}}const e=await this._requestHead(t),s=e.headers.get("Content-Length");if(null==s)throw new Error("Unable to parse content length");const r=e.headers.get("etag")??e.headers.get("Last-Modified");return{byteLength:parseInt(s,10),cacheTag:r}}async _getInfoMap(){return this._infos||(this._infos=this._fetchParquetFiles()),this._infos}async _updateParquetFileInfos(t){const e=await this._getInfoMap(),a=new Set(t);for(const s of a)if(!e.get(s)){const t=e.size,a=await o.create(this.getGeometryInfo(),this,s,t,null);e.set(s,a)}for(const s of e.keys())if(!a.has(s))throw new Error("Deletion not supported")}async _getFileStatistics(t){this._statistics||(this._statistics=this._fetchStatistics());const e=await this._statistics,a=m(t);return e.get(a)}async _fetchParquetFiles(){const t=(await this._getParquetFileNames()).map(async(t,e)=>{const a=e,s=await this._getFileStatistics(t);return o.create(this.getGeometryInfo(),this,t,a,s)}),e=await Promise.all(t),a=new Map;for(const s of e)a.set(s.url,s);return a}async _fetchStatistics(){const t=await this._getStatisticsFileName();if(null==t)return new Map;const e=await this._resolveFileUrl(t),a=await this._requestStatistics(e);return c(a)}async _requestHead(t){const{data:e}=await a(t,{responseType:"native",method:"head",query:this._getCustomParameters()});return e}async _openCache(t){return caches.open(this._getCacheName(t))}_getCacheName(t){return`${f}:${this._getCacheFileName(t)}`}async _createOrResetCache(t,e){const a=this._getCacheName(t),s=new URL(this._getCacheFileName(t));if(s.searchParams.append("metadata","true"),null==e)return void await caches.delete(a);let r=await caches.open(a);const n=await r.match(s),i=await(n?.json());i?.tag!==e&&(await caches.delete(a),r=await caches.open(a));const o=JSON.stringify({tag:e});await r.put(s,new Response(o,{headers:{"Content-Type":"application/json","Content-Length":o.length.toString()}}))}}function y(t){const e=t.split(/[?#]/)[0];return e===l||e.endsWith(l)}function m(t){return t.split(/[?#]/)[0].split("/").at(-1)??t}export{p as FileProvider,y as isStatisticsFileName,l as spatialFileName};
2
+ import{__addDisposableResource as t,__disposeResources as e}from"tslib";import a from"../../../../request.js";import s from"../../../../core/Error.js";import{EventEmitter as r}from"../../../../core/Evented.js";import has from"../../../../core/has.js";import{QueueProcessor as n}from"../../../../core/QueueProcessor.js";import{isBlobProtocol as i}from"../../../../core/urlUtils.js";import{ParquetFileInfo as o}from"./ParquetFileInfo.js";import{parseFileStatisticsMap as c}from"./ParquetFileStatistics.js";import{createParquetFile as h,readMetadata as u}from"../../../../libs/parquet/parquet.js";const f="parquet.v1",g="_spatial.json",l=new n({concurrency:12,process:async t=>{const{data:e}=await a(t.url,t.options);return e}});let p=1;class y{constructor(t,e=()=>{}){this._geometryInfo=t,this._getCustomParameters=e,this.events=new r}async destroy(){await this.clear()}async clear(){if(this._infos){const t=await this._infos;for(const e of t.values())e.destroy();t.clear(),this._infos=null}}async getMetadata(){const a={stack:[],error:void 0,hasError:!1};try{const e=(await this._getParquetFileNames()).at(0);if(!e)return null;const s=t(a,await h(e,{provider:this}),!1);return u(s)}catch(s){a.error=s,a.hasError=!0}finally{e(a)}}getGeometryInfo(){return this._geometryInfo}async getFiles(){const t=await this._getInfoMap();return Array.from(t.values())}async updateGeometryInfo(t){if(this._geometryInfo)throw new Error("GeometryInfo already set");await this.clear(),this._geometryInfo=t}async fetchLength(t){const{byteLength:e,cacheTag:a}=await this._fetchLengthAndTag(t);if(!has("parquetlayer-cache-enabled"))return e;try{await this._createOrResetCache(t,a)}catch(s){}return e}async fetchRange(t,e,a,s){const r={fileId:t,requestId:p++,range:{start:e,end:a+1}};this.events.emit("rangeRead",{...r,phase:"start"});try{const n=await this._fetchRangeWithCache(t,e,a,s);return this.events.emit("rangeRead",{...r,phase:"complete"}),n}catch(n){throw this.events.emit("rangeRead",{...r,phase:"error"}),n}}_getCacheFileName(t){return t}async _requestStatistics(t){const{data:e}=await a(t,{responseType:"json",query:this._getCustomParameters()});return e}async _fetchRange(t,e,a,r){const n={url:t,options:{responseType:"array-buffer",query:this._getCustomParameters()??{},cacheMode:"no-store",useQueue:!0,headers:{range:`bytes=${e}-${a}`}}},i=await l.push(n),o=a-e+1;if(i.byteLength!==o)throw new s("InvalidRangeRequest",`request returned ${i.byteLength} bytes for range ${e}-${a}, expected ${o}.`);return i}async _fetchLengthAndTag(t){if(i(t)){const{data:e}=await a(t,{responseType:"blob"});return{byteLength:e.size,cacheTag:null}}const e=await this._requestHead(t),s=e.headers.get("Content-Length");if(null==s)throw new Error("Unable to parse content length");const r=e.headers.get("etag")??e.headers.get("Last-Modified");return{byteLength:parseInt(s,10),cacheTag:r}}async _getInfoMap(){return this._infos||(this._infos=this._fetchParquetFiles()),this._infos}async _updateParquetFileInfos(t){const e=await this._getInfoMap(),a=new Set(t);for(const s of a)if(!e.get(s)){const t=e.size,a=await o.create(this.getGeometryInfo(),this,s,t,null);e.set(s,a)}for(const s of e.keys())if(!a.has(s))throw new Error("Deletion not supported")}async _getFileStatistics(t){this._statistics||(this._statistics=this._fetchStatistics());const e=await this._statistics,a=_(t);return e.get(a)}async _fetchParquetFiles(){const t=(await this._getParquetFileNames()).map(async(t,e)=>{const a=e,s=await this._getFileStatistics(t);return o.create(this.getGeometryInfo(),this,t,a,s)}),e=await Promise.all(t),a=new Map;for(const s of e)a.set(s.url,s);return a}async _fetchStatistics(){const t=await this._getStatisticsFileName();if(null==t)return new Map;const e=await this._resolveFileUrl(t),a=await this._requestStatistics(e);return c(a)}async _requestHead(t){const{data:e}=await a(t,{responseType:"native",method:"head",query:this._getCustomParameters()});return e}async _openCache(t){return caches.open(this._getCacheName(t))}async _fetchRangeWithCache(t,e,a,s){if(!has("parquetlayer-cache-enabled"))return this._fetchRange(t,e,a,s);const r=new URL(this._getCacheFileName(t));r.searchParams.append("range",`${e}-${a}`);try{const n=await this._openCache(t),i=await n.match(r);if(i)return await i.arrayBuffer();const o=await this._fetchRange(t,e,a,s);return await n.put(r,new Response(o,{headers:{"Content-Type":"application/octet-stream","Content-Length":o.byteLength.toString()}})),o}catch(n){return this._fetchRange(t,e,a,s)}}_getCacheName(t){return`${f}:${this._getCacheFileName(t)}`}async _createOrResetCache(t,e){const a=this._getCacheName(t),s=new URL(this._getCacheFileName(t));if(s.searchParams.append("metadata","true"),null==e)return void await caches.delete(a);let r=await caches.open(a);const n=await r.match(s),i=await(n?.json());i?.tag!==e&&(await caches.delete(a),r=await caches.open(a));const o=JSON.stringify({tag:e});await r.put(s,new Response(o,{headers:{"Content-Type":"application/json","Content-Length":o.length.toString()}}))}}function m(t){const e=t.split(/[?#]/)[0];return e===g||e.endsWith(g)}function _(t){return t.split(/[?#]/)[0].split("/").at(-1)??t}export{y as FileProvider,m as isStatisticsFileName,g as spatialFileName};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{FileStatistics as t}from"./ParquetFileStatistics.js";import{createParquetFile as e}from"../../../../libs/parquet/parquet.js";class i{static async create(r,s,o,l,f){if(!f){const f=await e(o,{geometryInfo:r,provider:s}),n=t.fromFile(f);return new i(r,s,o,l,n,Promise.resolve(f))}return new i(r,s,o,l,f,null)}constructor(t,e,i,r,s,o){this._geometryInfo=t,this._provider=e,this.url=i,this.id=r,this.statistics=s,this._file=o}destroy(){null!=this._file&&this._file.then(t=>t.free())}get file(){return null==this._file&&(this._file=e(this.url,{geometryInfo:this._geometryInfo,provider:this._provider})),this._file}}export{i as ParquetFileInfo};
2
+ import{FileStatistics as t}from"./ParquetFileStatistics.js";import{createParquetFile as e}from"../../../../libs/parquet/parquet.js";class i{static async create(s,r,n,o,l){if(!l){const l=await e(n,{geometryInfo:s,provider:r}),a=t.fromFile(l);return new i(s,r,n,o,a,Promise.resolve(l))}return new i(s,r,n,o,l,null)}constructor(t,e,i,s,r,n){this._geometryInfo=t,this._provider=e,this.url=i,this.id=s,this.statistics=r,this._file=n}destroy(){null!=this._file&&this._file.then(t=>t.free())}get file(){return null==this._file&&(this._file=e(this.url,{geometryInfo:this._geometryInfo,provider:this._provider})),this._file}async getDiagnosticsSnapshot(){return{...(await this.file).diagnosticsSnapshot(),fileId:this.id,fileName:this.url}}async getColumnIndex(t,e){return(await this.file).columnIndex(t,e)}async getOffsetIndex(t,e){return(await this.file).offsetIndex(t,e)}}export{i as ParquetFileInfo};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__addDisposableResource as e,__disposeResources as t}from"tslib";import{toConst as s}from"../../../../core/compilerUtils.js";import r from"../../../../core/Error.js";import i from"../../../../core/Handles.js";import has from"../../../../core/has.js";import a from"../../../../core/Logger.js";import{onAbortOrThrow as n,throwIfAborted as u}from"../../../../core/promiseUtils.js";import{QueueProcessor as o}from"../../../../core/QueueProcessor.js";import{parseWhereClause as l}from"../../../../core/sql.js";import c from"../../../../geometry/SpatialReference.js";import{set as p,create as d,expandWithAABB as f,expandWithRect as h,negativeInfinity as m}from"../../../../geometry/support/aaBoundingBox.js";import{copy as y,negativeInfinity as g,create as _,expandWithRect as w}from"../../../../geometry/support/aaBoundingRect.js";import{getScaleForResolution as x}from"../../../../geometry/support/scaleUtils.js";import{isWebMercator as F,isWGS84 as S}from"../../../../geometry/support/spatialReferenceUtils.js";import{convertToGeometry as I}from"../../featureConversionUtils.js";import{getFieldNamesFromStatistics as v}from"../../data/attributeSupport.js";import{getQueryResultExtent as q,getQueryBoundingRects as R,QueryEngine as b}from"../../data/QueryEngine.js";import{queryCapabilities as C}from"../../data/QueryEngineCapabilities.js";import{QueryEngineResult as E}from"../../data/QueryEngineResult.js";import{normalizeQueryLike as O}from"../../data/queryUtils.js";import{createFileProvider as P}from"../parquet/createFileProvider.js";import{readFieldStatistic as M}from"../parquet/ParquetFileStatistics.js";import{createDrawingInfo as T}from"./clientSideDefaults.js";import{getParquetFileId as j,getParquetRowId as Q,getParquetObjectId as A}from"./parquetIdUtils.js";import B from"../../../support/Field.js";import G from"../../../support/FieldsIndex.js";import{isNumericField as N}from"../../../support/fieldUtils.js";import{fromParquetGeometryEncodingJSON as D}from"../../../support/parquetEncodingUtils.js";import{completeParquetLayerInfo as z,fromParquetJSONGeometryType as V,toParquetJSONGeometryType as k}from"../../../support/parquetUtils.js";import{loadParquetModule as W}from"../../../../libs/parquet/loadParquetModule.js";import{FeatureStoreQueryAdapter as U}from"../../../../views/2d/layers/features/FeatureStoreQueryAdapter.js";import{FeatureSnapshotSourceChunk as Z}from"../../../../views/2d/layers/features/sources/strategies/chunks/FeatureSnapshotSourceChunk.js";import{FeatureSourceChunkStore as J}from"../../../../views/2d/layers/features/sources/strategies/chunks/SourceChunkStore.js";import{FeatureMetadata as L}from"../../../../views/2d/layers/features/support/FeatureMetadata.js";import{FeatureSetReaderParquet as H}from"../../../../views/2d/layers/features/support/FeatureSetReaderParquet.js";const X=new U,Y=4,$="__OBJECTID",K=new TextDecoder,ee=8e3,te=2e7,se=8,re=2,ie=20;class ae{constructor(e,t){this._files=e,this._createFileStream=t,this._fileIndex=0,this._streamIndex=0,this._streams=[],this._pending=new Set,this._resolvedCount=0}async next(e){for(await this._fill(e);this._pending.size>0;){u(e),await this._fill(e);const t=await ne(this._pending);if(this._pending.delete(t.read),this._resolvedCount++,null!=t.chunk)return t.chunk}return null}async _fill(e){for(this._removeDone();this._pending.size<se;){const t=this._getOrCreateNextStream(e);if(null==t)return;this._pending.add(t.read(e))}}_getOrCreateNextStream(e){const t=this._resolvedCount>=se?se:re;if(this._fileIndex<this._files.length&&this._streams.length<t){const t=this._files[this._fileIndex++],s=new ue(t.id,this._createFileStream(t,e));return this._streams.push(s),s}return this._getNextStream()}_getNextStream(){const e=this._streams.length;for(let t=0;t<e;t++){const s=(this._streamIndex+t)%e,r=this._streams[s];if(r.canRead)return this._streamIndex=(s+1)%e,r}return null}_removeDone(){let e=this._streamIndex;for(let t=this._streams.length-1;t>=0;t--)this._streams[t].done&&(this._streams.splice(t,1),t<e&&e--);this._streamIndex=this._streams.length>0?e%this._streams.length:0}}function ne(e){return Promise.race(Array.from(e,async e=>({read:e,chunk:await e})))}class ue{constructor(e,t){this._fileId=e,this._stream=t,this._readCount=0,this._reachedEnd=!1}get canRead(){return!this._reachedEnd}get done(){return this._reachedEnd&&0===this._readCount}async read(e){this._readCount++;try{const t=await this._stream,s=await t.next(e);return null==s?(this._reachedEnd=!0,null):{fileId:this._fileId,chunk:s}}finally{this._readCount--}}}class oe{constructor(){this._hasZ=!1,this._hasM=!1,this._queue=new o({concurrency:Y,process:(e,t)=>this._executeQuery(e,t)}),this._streams=new Map,this._streamIdCounter=0,this._indexMap={},this._handles=new i}async load(e){const t=e.spatialReference?c.fromJSON(e.spatialReference):void 0;if(t&&!t.isWGS84&&!t.isWebMercator)throw new r("parquet:unsupported-projection","Only WGS84 and Web Mercator are supported");this._customParameters=e.customParameters,this._provider=P(e.provider,null,()=>this._customParameters),this._handles.add(this._provider.events.on("sourceChanged",async()=>{await this.reload(e),await this._source.onSourceChange()}));const s=await this._provider.getMetadata(),i=await z(s,{fields:e.fields?.map(e=>B.fromJSON(e)),geometryEncoding:e.geometryEncoding?D(e.geometryEncoding):null,geometryType:e.geometryType?V(e.geometryType):null,displayOptimization:e.displayOptimization,spatialReference:t});if(this._hasZ=!!s?.hasZ,this._hasM=!!s?.hasM,!i.fields)throw new r("parquet:unsupported","Fields must be defined");let n;if(i.spatialReference&&i.geometryType){if(!i.spatialReference)throw new r("parquet:unsupported","SpatialReference must be defined");if(!i.spatialReference.isGeographic&&!i.spatialReference.isWebMercator)throw new r("parquet:unsupported-projection","Only WGS84 and Web Mercator are supported");i.spatialReference.isGeographic&&!i.spatialReference.isWGS84&&(a.getLogger("parquet:unsupported-projection").warn("Found a geographic projection that is not WGS84. Handling as WGS84.",{spatialReference:i.spatialReference}),i.spatialReference=c.WGS84),n={geometry:i.geometryEncoding?{geometryType:k(i.geometryType),spatialReference:i.spatialReference.toJSON(),encoding:i.geometryEncoding.toJSON()}:null,displayOptimization:i.displayOptimization}}this.setCustomParameters(e.customParameters),this._displayOptimization=i.displayOptimization,await this._provider.updateGeometryInfo(n),this._capabilities=Re(await this._getFileStatistics(),this._hasZ,this._hasM);const u=await this._provider.getFiles();if(!u.length)return{layerDefinition:{},capabilities:Re(null,this._hasZ,this._hasM)};const o=await u[0].file;i.file=o;const{fields:l}=i;if(null==l)throw new r("parquet-layer:missing-metadata","Unable to create parquet source: cannot infer fields",l);l.push(new B({name:$,type:"oid",alias:$}));for(const r of l){const e=o.getColumnId(r.name);null!=e&&(this._indexMap[r.name]=e)}const p=new G(l.map(e=>e.toJSON()));this._fieldsIndex=p;const d=k(i.geometryType??"point");return this._metadata=L.createFeature({fieldsIndex:p.toJSON(),geometryType:d,hasZ:this._hasZ,hasM:this._hasM,featureIdInfo:{type:"object-id",fieldName:$},subtypes:null,subtypeField:null,types:null,typeIdField:null,globalIdField:null,spatialReference:i.spatialReference,outSpatialReference:null,attributeSpatialReference:null,timeInfo:null,timeReferenceUnknownClient:null,dateFieldsTimeZone:null}),this._queryEngineParams={fieldsIndex:this._metadata.fieldsIndex,geometryType:d,featureIdInfo:{type:"object-id",fieldName:$},hasM:this._hasM,hasZ:this._hasZ,spatialReference:i.spatialReference?.toJSON()??{wkid:4326},aggregateAdapter:null,timeInfo:null,definitionExpression:null},this._fullExtent=s?.extent?s.extent:await this._tryDeriveParquetFullExtent(i),{capabilities:this._capabilities,layerDefinition:{fields:i.fields?.map(e=>e.toJSON()),drawingInfo:T(d),extent:this._fullExtent??void 0,geometryType:d,geometryEncoding:i.geometryEncoding?.toJSON(),displayOptimization:i.displayOptimization}}}destroy(){this._provider.destroy(),this._queue.destroy();for(const{handle:e}of this._streams.values())e.remove();this._streams.clear(),this._indexMap={},this._handles.removeAll()}async reload(e){this.destroy(),await this.load(e)}set remoteClient(e){this._source=e.createInvokeProxy("")}setCustomParameters(e){this._customParameters=e}getIndexMap(){return this._indexMap}async updateFileProvider(e){this._provider=P(e,this._provider.getGeometryInfo(),()=>this._customParameters)}async queryFeatures(e,t){const s=await O(e,null,this._queryEngineParams.spatialReference);if(this._validateQuery(s),be(s)||(s.resultRecordCount=s.resultRecordCount?Math.min(s.resultRecordCount,ee):ee,s.resultOffset=s.resultOffset??0),s.outStatistics)return this._queryStatistics(s,t);s.returnDistinctValues&&(s.returnGeometry=void 0);return(await this._enqueueQuery(s,t)).createQueryResponse()}async queryFeatureCount(e,t){const s=await O(e,null,this._queryEngineParams.spatialReference);if(this._validateQuery(s),!de(s))return this._getFeatureCount();s.outFields=void 0,s.returnGeometry=void 0;return(await this._enqueueQuery(s,t)).createQueryResponseForCount()}async queryObjectIds(e,t){const s=await O(e,null,this._queryEngineParams.spatialReference);if(this._validateQuery(s),!de(s))return Array.from({length:await this._getFeatureCount()},(e,t)=>t);s.resultRecordCount=s.resultRecordCount?Math.min(s.resultRecordCount,8e3):8e3,s.resultOffset=s.resultOffset??0,s.returnGeometry=void 0,s.outFields=void 0;return(await this._enqueueQuery(s,t)).items.map(e=>e.getObjectId())}async queryAttributeBins(e,t={}){throw new r("parquet:unsupported","queryAttributeBins not supported.")}async queryExtent(e,t){const r=await O(e,null,this._queryEngineParams.spatialReference);if(this._validateQuery(r),this._fullExtent&&!de(r))return{count:await this._getFeatureCount(),extent:this._fullExtent};const i=s(this._metadata.spatialReference);r.returnGeometry=!0,r.outFields=void 0;const a=p(d(),m),n=d(),u=await this._enqueueQuery(r,t);let o=0;for(const s of u.items)s.getBounds(n)&&(f(a,n),o+=1);return{count:o,extent:q(a,i,r.outSR?s(r.outSR):i.toJSON(),i,!1)}}async queryStream(e,t){if(!t.signal)throw new Error("InternalError: AbortSignal must be passed");const s=await this._getCandidateFiles(e),r=new ae(s,async(t,s)=>{const r=await t.file,i=await this._createParquetDisplayQuery(r,t.id,e);return r.executeQuery(i,ee,s)}),i=this._streamIdCounter++,a=n(t.signal,e=>{const t=this._streams.get(i);null!=t&&(t.handle.remove(),this._streams.delete(i))});return this._streams.set(i,{stream:r,handle:a}),i}async getStreamNext(e,t){if(!t.signal)throw new Error("InternalError: AbortSignal must be passed");const s=this._streams.get(e);if(!s)return{result:null};const r=await s.stream.next(t.signal);if(null==r)return s.handle.remove(),this._streams.delete(e),{result:null};const i=r.chunk.serialize().buffer,a={fileId:r.fileId,buffer:i};return i instanceof ArrayBuffer?{result:a,transferList:[i]}:{result:a}}async getStreamNextFeatures(e,t){const{result:s}=await this.getStreamNext(e,t);if(null==s)return null;const r=(await W()).ParquetChunk.deserialize(new Uint8Array(s.buffer)),i=new H(this._metadata,this._indexMap,r,s.fileId),a=[];for(;i.next();){const e=I(i.readGeometryWorldSpace(),i.geometryType,i.hasZ,i.hasM),t=i.readAttributes();a.push({attributes:t,geometry:e})}return{features:a}}async createPatch(e,t,s,r,i){if(!i.signal)throw new Error("InternalError: AbortSignal must be passed");const a=await this._getFileInfoById(e),n=await a.file;return(await n.createChunkPatch(t,s,r,i.signal)).serialize().buffer}async _getCandidateFiles(e){const t=await this._provider.getFiles(),s=await this._getSpatialFilePruning(e);if(null==s)return t;const r=t.filter(e=>this._mayIncludeFileForSpatialPruning(e,s));return"xz"===s.type?ve(r,s):r}async _queryStatistics(e,t){const s=await O({...e},null,this._queryEngineParams.spatialReference);if(s.returnGeometry=void 0,me(s,this._fieldsIndex)){const e=await this._getStatisticsFromFiles(s);if(e)return e}return(await this._enqueueQuery(s,t)).createQueryResponse()}async _getStatisticsFromFiles(e){const t=await this._provider.getFiles(),s={},r=[];for(const i of e.outStatistics??[]){const e=_e(i,t);if(!e.available)return null;s[i.outStatisticFieldName]=e.value,r.push(ge(i,this._fieldsIndex))}return{fields:r,features:[{attributes:s}]}}async _getSpatialFilePruning(e){if("tile"!==e.type&&("arcade"!==e.type||null==e.extent))return null;const t=this._displayOptimization,s=t?.index;if(null==s)return null;const r=e.outSpatialReference.wkid;if(null==s.wkid||null==r)return null;const i=s.wkid,a=await W();switch(s.type){case"xz":return{type:"xz",fieldName:s.code,intersects:(t,n)=>a.queryIntersectsXZStatistics(s.fullExtent,e.extent,r,i,ie,t,n)};case"z":return{type:"xy",xFieldName:s.xColumn,yFieldName:s.yColumn,intersects:(t,s,n,u)=>a.queryIntersectsXYStatistics(e.extent,r,i,t,s,n,u)}}}_mayIncludeFileForSpatialPruning(e,t){switch(t.type){case"xz":{const s=Ie(e,t);return"null-only"!==s?.type&&("bounds"!==s?.type||t.intersects(s.minValue,s.maxValue))}case"xy":{const s=e.statistics.statistics.get(t.xFieldName),r=e.statistics.statistics.get(t.yFieldName);return"null-only"!==s?.type&&"null-only"!==r?.type&&("bounds"!==s?.type||"bounds"!==r?.type||t.intersects(s.minValue,s.maxValue,r.minValue,r.maxValue))}}}async _tryDeriveParquetFullExtent(s){if(!s.spatialReference)return null;if(null==this._fullExtent&&"location"===s.geometryEncoding?.type){const i=await this._provider.getFiles(),{xField:a,yField:n}=s.geometryEncoding,u=p(d(),m);let o=!1;for(const s of i){const i=await s.file;for(const s of i.rowGroups()){const i={stack:[],error:void 0,hasError:!1};try{const t=e(i,s.columnDescriptorForAttribute(a),!1),r=e(i,s.columnDescriptorForAttribute(n),!1),l=M(t),c=M(r);if("bounds"===l?.type&&"bounds"===c?.type){const e=[l.minValue,c.minValue,l.maxValue,c.maxValue];h(u,e),o=!0}s.free()}catch(r){i.error=r,i.hasError=!0}finally{t(i)}}}return o?{xmin:u[0],ymin:u[1],xmax:u[3],ymax:u[4],spatialReference:s.spatialReference?.toJSON()}:null}return null}async _getFileInfoById(e){const t=await this._provider.getFiles();for(const s of t)if(s.id===e)return s;throw new Error(`InternalError: File ${e} does not exist`)}async _getFileStatistics(){return{featureCount:await this._getFeatureCount(),byteLength:await this._getByteLength()}}async _getFile(e){return(await this._getFileInfoById(e)).file}async _createParquetQuery(e,t,s,r,i){const a=(await W()).Query.new();null!=s&&a.setPreFilterStart(s),null!=r&&a.setPreFilterCount(r),null!=i&&a.setPostFilterCount(i);const n=await this._getRequiredFields(e);a.setOutFields(n),(e.geometry||e.returnGeometry)&&a.setReturnGeometry(!0),a.setReturnZ(!!e.returnZ),a.setReturnM(!!e.returnM);const u=this._tryGetGeneralizedGeometryScale(e);null!=u&&a.setScale(u);const o=e.geometry?.spatialReference??this._queryEngineParams.spatialReference,l=o.wkid;if(e.geometry&&(F(o)||S(o))){const t=y(_(),g);for(const s of R(e.geometry))w(t,s);a.setOutSpatialReference(l),a.setExtent({xmin:t[0],ymin:t[1],xmax:t[2],ymax:t[3]})}if(e.where){const{id:s,file:r}=t;await this._setWhereClause(a,await r,s,e.where)}return a}async _createParquetDisplayQuery(e,t,s){const r=(await W()).Query.new();return"tile"===s.type?(r.setExtent(s.extent),r.setQuantizationTransform(s.transform),r.setScale(s.scale)):"arcade"===s.type&&null!=s.extent&&r.setExtent(s.extent),r.setOutFields(s.outFields.filter(e=>null!=this._indexMap[e])),r.setOutSpatialReference(s.outSpatialReference.wkid),r.setReturnGeometry(s.returnGeometry),r.setReturnZ(s.returnZ),r.setReturnM(s.returnM),s.where&&await this._setWhereClause(r,e,t,s.where),r}async _getFeatureCount(){return(await this._provider.getFiles()).map(e=>e.statistics.rowCount).reduce((e,t)=>e+t,0)}async _getByteLength(){return(await this._provider.getFiles()).map(e=>e.statistics.byteSize).reduce((e,t)=>e+t,0)}_validateQuery(e){if(!this._capabilities.query.supportsStatistics&&e.outStatistics)throw new r("parquet:unsupported","Statistics queries are not supported",{query:e});if(!this._capabilities.query.supportsOrderBy&&e.orderByFields?.length)throw new r("parquet:unsupported","Queries using orderBy are not supported",{query:e});if(!this._capabilities.query.supportsDistinct&&e.returnDistinctValues)throw new r("parquet:unsupported","Queries using returnDistinctValues are not supported",{query:e})}async _setWhereClause(e,t,s,i){const a=this._indexMap,n=this._fieldsIndex,u={getAttribute(e,r){const i=a[r];if(null==i){const t=n.get(r);if("__OBJECTID"===t?.name){const t=e.row+e.rowGroupStart;return A(s,t)}return null}const u=t.readAttribute(e.rowGroup,e.row,i);if(null==u)return null;const o=n.get(r);return"esriFieldTypeString"===o.type||"esriFieldTypeDateOnly"===o.type||"esriFieldTypeTimeOnly"===o.type||"esriFieldTypeTimestampOffset"===o.type?K.decode(u):u}},o=await l(i,this._fieldsIndex);if(!o.isStandardized)throw new r("sql-parse-error","expression is not standardized");const c=(e,t,s)=>o.testFeatureCompiled({rowGroup:e,row:t,rowGroupStart:s},u,null),p=o.fieldNames.map(e=>n.get(e)).filter(e=>e&&null!=this._indexMap[e?.name]);e.setWhere(i),e.setWhereEvaluator(c),e.setWhereFields(p.map(e=>e.name))}async*_streamFeatures(e,t,s,r,i){const a=await this._provider.getFiles();let n=0;for(const u of a){const a=n,o=n+u.statistics.rowCount;if(n+=u.statistics.rowCount,null!=t&&t>=o)continue;const l=null!=t?Math.max(t-a,0):null;let c=s;if(null!=s){const e=t??0,r=e+s,i=Math.max(e,a),n=Math.min(r,o);c=Math.max(n-i,0)}if(0===c)continue;const p=await this._createParquetQuery(e,u,l,c,r),d=await u.file,f=await d.executeQuery(p,ee),h=async()=>{const e=await f.next(i);if(!e)return null;const t=new H(this._metadata,this._indexMap,e,u.id);return Se([new Z(t,null,0,!1)],this._queryEngineParams)};let m=await h();for(;null!=m;)yield m,m=await h()}}async _queryFeaturesWithQueryEnginePagination(e,t){const s=[],r=this._streamFeatures(e,null,null,null,t);let i=await r.next();for(;!i.done;){const a=await i.value.executeQueryForOpaqueFeatures({...e,where:void 0},t);for(const e of a)s.push(e);i=await r.next()}return s}async _queryFeaturesWithUpfrontPagination(e,t){let s,r,i,a=e.resultOffset??0,n=e.resultRecordCount??ee;fe(e)?he(e)||(i=a+n):(a&&(s=a,a=0),r=e.resultRecordCount);const u=[],o=this._streamFeatures(e,s,r,i,t);let l=await o.next();for(;!l.done&&n>0;){const s=await l.value.executeQueryForOpaqueFeatures({...e,where:void 0},t);for(const e of s)if(a>0)a--;else if(u.push(e),--n<=0)return u;l=await o.next()}return u}_enqueueQuery(e,t){return this._queue.push(e,t)}async _executeQuery(e,t){if(e.objectIds?.length){const s=new Map;for(const t of e.objectIds){const e=j(t),r=Q(t);let i=s.get(e);i||(i=[],s.set(e,i)),i.push(r)}const r=[];for(const[i,a]of s.entries()){const s=await this._executeFileIdQuery(e,i,a,t);for(const e of s)r.push(e)}return new E(r,e,{fieldsIndex:this._fieldsIndex,geometryType:this._metadata.geometryType,spatialReference:this._queryEngineParams.spatialReference,hasM:this._hasM,hasZ:this._hasZ,featureAdapter:X,featureIdInfo:this._queryEngineParams.featureIdInfo})}if("1=1"===e.where&&(e.where=null),e.resultOffset??=0,e.resultRecordCount??=await this._getFeatureCount(),e.resultRecordCount>te){if(!(this._displayOptimization&&e.geometry))throw new r("parquet:cannot-execute-query","Unable to execute query, dataset is too large.")}const s=!!e.orderByFields?.length||!!e.outStatistics?.length||!!e.returnDistinctValues,i=s?await this._queryFeaturesWithQueryEnginePagination(e,t):await this._queryFeaturesWithUpfrontPagination(e,t);return s||(e.resultOffset=0),new E(i,e,{fieldsIndex:this._fieldsIndex,geometryType:this._metadata.geometryType,spatialReference:this._queryEngineParams.spatialReference,hasM:this._hasM,hasZ:this._hasZ,featureAdapter:X,featureIdInfo:this._queryEngineParams.featureIdInfo})}async _executeFileIdQuery(e,t,s,r){const i=await this._getRequiredFields(e),a=(await W()).Query.new();a.setOutFields(i),a.setReturnGeometry(!!e.returnGeometry),a.setReturnZ(!!e.returnZ),a.setReturnM(!!e.returnM),a.setIds(new Uint32Array(s));const n=await this._getFile(t),u=await n.executeQuery(a,ee,r);let o=await u.next(r),l=0;const c=[];for(;null!=o;){const e=new H(this._metadata,this._indexMap,o,t),s=new Z(e,null,l++,!1);c.push(s),o=await u.next(r)}return Se(c,this._queryEngineParams).executeQueryForOpaqueFeatures(e,r)}async _getRequiredFields(e){const t=new Set;if(e.outStatistics)for(const s of v(this._fieldsIndex,e.outStatistics,e.groupByFieldsForStatistics))t.add(s);else if(e.outFields)for(const s of e.outFields)t.add(s);return(t.has("*")?this._fieldsIndex.fields.map(e=>e.name):Array.from(t)).filter(e=>null!=this._indexMap[e])}_tryGetGeneralizedGeometryScale(e){if(!this._displayOptimization)return null;const t=e.outSR??this._queryEngineParams.spatialReference;if(!F(t)&&!S(t))return null;const s=e.quantizationParameters?.tolerance??e.maxAllowableOffset;return s?x(s,t):null}}function le(e){switch(e){case"fullText":case"having":case"timeExtent":case"historicMoment":case"aggregateIds":case"uniqueIds":case"gdbVersion":case"objectIds":case"where":case"geometry":case"resultOffset":case"resultRecordCount":return!0;default:return!1}}function ce(e){switch(e){case"fullText":case"having":case"timeExtent":case"historicMoment":case"aggregateIds":case"uniqueIds":case"gdbVersion":case"objectIds":case"where":case"geometry":return!0;default:return!1}}function pe(e){switch(e){case"fullText":case"having":case"timeExtent":return!0;case"historicMoment":case"aggregateIds":case"uniqueIds":case"gdbVersion":case"objectIds":case"where":case"resultOffset":case"geometry":case"resultRecordCount":return!1}return!1}function de(e){for(const t in e){const s=t;if(le(s)&&null!==e[s])return!0}return!1}function fe(e){for(const t in e){const s=t;if(ce(s)&&null!==e[s])return!0}return!1}function he(e){for(const t in e){const s=t;if(pe(s)&&null!==e[s])return!0}return!1}function me(e,t){return!!e.outStatistics?.length&&!de(e)&&!e.groupByFieldsForStatistics?.length&&!e.orderByFields?.length&&!e.returnDistinctValues&&!e.returnAggIds&&e.outStatistics.every(e=>ye(e,t))}function ye(e,t){switch(e.statisticType){case"count":return"1"===e.onStatisticField||null!=t.get(e.onStatisticField);case"min":case"max":{const s=t.get(e.onStatisticField);return null!=s&&N(s)}default:return!1}}function ge(e,t){const s="exceedslimit"!==e.statisticType?t.get(e.onStatisticField):null,r="min"!==e.statisticType&&"max"!==e.statisticType||"esriFieldTypeDate"!==s?.type?"esriFieldTypeDouble":s.type;return{name:e.outStatisticFieldName,alias:e.outStatisticFieldName,type:r}}function _e(e,t){switch(e.statisticType){case"count":return we(e,t);case"min":return xe(e,t,Math.min);case"max":return xe(e,t,Math.max);default:return{available:!1,value:null}}}function we(e,t){if("count"!==e.statisticType)return{available:!1,value:null};if("1"===e.onStatisticField)return{available:!0,value:t.reduce((e,t)=>e+t.statistics.rowCount,0)};let s=0;for(const r of t){const t=r.statistics.statistics.get(e.onStatisticField);if(null==t||null==t.nullCount)return{available:!1,value:null};s+=r.statistics.rowCount-t.nullCount}return{available:!0,value:s}}function xe(e,t,s){if("min"!==e.statisticType&&"max"!==e.statisticType)return{available:!1,value:null};let r=null;const i="min"===e.statisticType?"minValue":"maxValue";for(const a of t){const t=a.statistics.statistics.get(e.onStatisticField);if(null==t)return{available:!1,value:null};switch(t.type){case"null-only":continue;case"unknown":return{available:!1,value:null};case"bounds":{const e=Fe(t[i]);if(null==e)return{available:!1,value:null};r=null==r?e:s(r,e);break}}}return{available:!0,value:r}}function Fe(e){return"number"==typeof e&&Number.isFinite(e)?e:null}function Se(e,t){const s=new J;for(const r of e)s.insert(r);return new b({...t,featureStore:s})}function Ie(e,t){return e.statistics.statistics.get(t.fieldName)??null}function ve(e,t){return e.slice().sort((e,s)=>{const r=qe(e,t),i=qe(s,t);return r===i?0:r<i?-1:1})}function qe(e,t){const s=Ie(e,t);return"bounds"!==s?.type?Number.POSITIVE_INFINITY:s.maxValue-s.minValue}function Re(e,t,s){const r=e?.featureCount;let i=!1;return null!=r&&r<has("parquetlayer-full-query-feature-count")&&(i=!0),{analytics:{supportsCacheHint:!1},attachment:null,data:{isVersioned:!1,isBranchVersioned:!1,supportedCurveTypes:[],supportsAttachment:!1,supportsM:s,supportsTrueCurve:!1,supportsZ:t},metadata:{supportsAdvancedFieldProperties:!1},operations:{supportsCalculate:!1,supportsTruncate:!1,supportsValidateSql:!1,supportsAdd:!1,supportsDelete:!1,supportsEditing:!1,supportsChangeTracking:!1,supportsQuery:!0,supportsQueryBins:!1,supportsQueryPivot:!1,supportsQueryAnalytics:!1,supportsQueryAttachments:!1,supportsQueryTopFeatures:!1,supportsResizeAttachments:!1,supportsSync:!1,supportsUpdate:!1,supportsExceedsLimitStatistics:!1,supportsAsyncConvert3D:!1},query:{...C,maxRecordCount:ee,supportsOrderBy:i,supportsDistinct:!0,supportsStatistics:!0,supportsSpatialAggregationStatistics:!1,supportedSpatialAggregationStatistics:{envelope:!1,centroid:!1,convexHull:!1}},queryAttributeBins:{supportsDate:!1,supportsFixedInterval:!1,supportsAutoInterval:!1,supportsFixedBoundaries:!1,supportsStackBy:!1,supportsSplitBy:!1,supportsSnapToData:!1,supportsReturnFullIntervalBin:!1,supportsFirstDayOfWeek:!1,supportsNormalization:!1},queryRelated:{supportsCount:!1,supportsOrderBy:!1,supportsPagination:!1,supportsCacheHint:!1},queryTopFeatures:{supportsCacheHint:!1},editing:{supportsDeleteByAnonymous:!1,supportsDeleteByOthers:!1,supportsGeometryUpdate:!1,supportsGlobalId:!1,supportsTrueCurveUpdate:!1,supportsTrueCurveUpdateByTrueCurveClientsOnly:!0,supportsReturnServiceEditsInSourceSpatialReference:!1,supportsRollbackOnFailure:!1,supportsUpdateByAnonymous:!1,supportsUpdateByOthers:!1,supportsUploadWithItemId:!1,supportsUpdateWithoutM:!1,supportsAsyncApplyEdits:!1,zDefault:void 0}}}function be(e){return!!(e.objectIds?.length||e.outStatistics||e.orderByFields?.length||e.returnDistinctValues)}export{oe as default};
2
+ import{__addDisposableResource as e,__disposeResources as t}from"tslib";import{toConst as s}from"../../../../core/compilerUtils.js";import r from"../../../../core/Error.js";import i from"../../../../core/Handles.js";import has from"../../../../core/has.js";import a from"../../../../core/Logger.js";import{onAbortOrThrow as n,throwIfAborted as o}from"../../../../core/promiseUtils.js";import{QueueProcessor as u}from"../../../../core/QueueProcessor.js";import{parseWhereClause as l}from"../../../../core/sql.js";import{getMetersPerUnitForSR as c}from"../../../../core/units.js";import p from"../../../../geometry/SpatialReference.js";import{set as d,create as f,expandWithAABB as h,expandWithRect as m,negativeInfinity as y}from"../../../../geometry/support/aaBoundingBox.js";import{copy as g,negativeInfinity as _,create as w,expandWithRect as x}from"../../../../geometry/support/aaBoundingRect.js";import{isWebMercator as F,isWGS84 as S}from"../../../../geometry/support/spatialReferenceUtils.js";import{convertToGeometry as I}from"../../featureConversionUtils.js";import{getFieldNamesFromStatistics as v}from"../../data/attributeSupport.js";import{getQueryResultExtent as R,getQueryBoundingRects as q,QueryEngine as b}from"../../data/QueryEngine.js";import{queryCapabilities as C}from"../../data/QueryEngineCapabilities.js";import{QueryEngineResult as E}from"../../data/QueryEngineResult.js";import{normalizeQueryLike as P}from"../../data/queryUtils.js";import{createFileProvider as O}from"../parquet/createFileProvider.js";import{readFieldStatistic as M}from"../parquet/ParquetFileStatistics.js";import{createDrawingInfo as T}from"./clientSideDefaults.js";import{getParquetFileId as j,getParquetRowId as Q,getParquetObjectId as A}from"./parquetIdUtils.js";import B from"../../../support/Field.js";import G from"../../../support/FieldsIndex.js";import{isNumericField as N}from"../../../support/fieldUtils.js";import{fromParquetGeometryEncodingJSON as D}from"../../../support/parquetEncodingUtils.js";import{completeParquetLayerInfo as z,fromParquetJSONGeometryType as V,toParquetJSONGeometryType as k}from"../../../support/parquetUtils.js";import{loadParquetModule as W}from"../../../../libs/parquet/loadParquetModule.js";import{normalizeColumnPath as U}from"../../../../libs/parquet/parquet.js";import{FeatureStoreQueryAdapter as Z}from"../../../../views/2d/layers/features/FeatureStoreQueryAdapter.js";import{FeatureSnapshotSourceChunk as J}from"../../../../views/2d/layers/features/sources/strategies/chunks/FeatureSnapshotSourceChunk.js";import{FeatureSourceChunkStore as L}from"../../../../views/2d/layers/features/sources/strategies/chunks/SourceChunkStore.js";import{FeatureMetadata as H}from"../../../../views/2d/layers/features/support/FeatureMetadata.js";import{FeatureSetReaderParquet as X}from"../../../../views/2d/layers/features/support/FeatureSetReaderParquet.js";const Y=new Z,$=4,K="__OBJECTID",ee=new TextDecoder,te=8e3,se=2e7,re=8,ie=2;class ae{constructor(e,t){this._files=e,this._createFileStream=t,this._fileIndex=0,this._streamIndex=0,this._streams=[],this._pending=new Set,this._resolvedCount=0}async next(e){for(await this._fill(e);this._pending.size>0;){o(e),await this._fill(e);const t=await ne(this._pending);if(this._pending.delete(t.read),this._resolvedCount++,null!=t.chunk)return t.chunk}return null}async _fill(e){for(this._removeDone();this._pending.size<re;){const t=this._getOrCreateNextStream(e);if(null==t)return;this._pending.add(t.read(e))}}_getOrCreateNextStream(e){const t=this._resolvedCount>=re?re:ie;if(this._fileIndex<this._files.length&&this._streams.length<t){const t=this._files[this._fileIndex++],s=new oe(t.id,this._createFileStream(t,e));return this._streams.push(s),s}return this._getNextStream()}_getNextStream(){const e=this._streams.length;for(let t=0;t<e;t++){const s=(this._streamIndex+t)%e,r=this._streams[s];if(r.canRead)return this._streamIndex=(s+1)%e,r}return null}_removeDone(){let e=this._streamIndex;for(let t=this._streams.length-1;t>=0;t--)this._streams[t].done&&(this._streams.splice(t,1),t<e&&e--);this._streamIndex=this._streams.length>0?e%this._streams.length:0}}function ne(e){return Promise.race(Array.from(e,async e=>({read:e,chunk:await e})))}class oe{constructor(e,t){this._fileId=e,this._stream=t,this._readCount=0,this._reachedEnd=!1}get canRead(){return!this._reachedEnd}get done(){return this._reachedEnd&&0===this._readCount}async read(e){this._readCount++;try{const t=await this._stream,s=await t.next(e);return null==s?(this._reachedEnd=!0,null):{fileId:this._fileId,chunk:s}}finally{this._readCount--}}}class ue{constructor(){this._hasZ=!1,this._hasM=!1,this._queue=new u({concurrency:$,process:(e,t)=>this._executeQuery(e,t)}),this._streams=new Map,this._streamIdCounter=0,this._indexMap={},this._handles=new i}async load(e){const t=e.spatialReference?p.fromJSON(e.spatialReference):void 0;if(t&&!t.isWGS84&&!t.isWebMercator)throw new r("parquet:unsupported-projection","Only WGS84 and Web Mercator are supported");this._customParameters=e.customParameters,this._loadParameters=e,await this._updateProvider(O(e.provider,null,()=>this._customParameters));const s=await this._provider.getMetadata(),i=await z(s,{fields:e.fields?.map(e=>B.fromJSON(e)),geometryEncoding:e.geometryEncoding?D(e.geometryEncoding):null,geometryType:e.geometryType?V(e.geometryType):null,displayOptimization:e.displayOptimization,spatialReference:t});if(this._hasZ=!!s?.hasZ,this._hasM=!!s?.hasM,!i.fields)throw new r("parquet:unsupported","Fields must be defined");let n;if(i.spatialReference&&i.geometryType){if(!i.spatialReference)throw new r("parquet:unsupported","SpatialReference must be defined");if(!i.spatialReference.isGeographic&&!i.spatialReference.isWebMercator)throw new r("parquet:unsupported-projection","Only WGS84 and Web Mercator are supported");i.spatialReference.isGeographic&&!i.spatialReference.isWGS84&&(a.getLogger("parquet:unsupported-projection").warn("Found a geographic projection that is not WGS84. Handling as WGS84.",{spatialReference:i.spatialReference}),i.spatialReference=p.WGS84),n={geometry:i.geometryEncoding?{geometryType:k(i.geometryType),spatialReference:i.spatialReference.toJSON(),encoding:i.geometryEncoding.toJSON()}:null,displayOptimization:i.displayOptimization}}this.setCustomParameters(e.customParameters),this._displayOptimization=i.displayOptimization,await this._provider.updateGeometryInfo(n),this._capabilities=qe(await this._getFileStatistics(),this._hasZ,this._hasM);const o=await this._provider.getFiles();if(!o.length)return{layerDefinition:{},capabilities:qe(null,this._hasZ,this._hasM)};const u=await o[0].file;i.file=u;const{fields:l}=i;if(null==l)throw new r("parquet-layer:missing-metadata","Unable to create parquet source: cannot infer fields",l);l.push(new B({name:K,type:"oid",alias:K}));for(const r of l){const e=u.getColumnId(r.name);null!=e&&(this._indexMap[r.name]=e)}const c=new G(l.map(e=>e.toJSON()));this._fieldsIndex=c;const d=k(i.geometryType??"point");return this._metadata=H.createFeature({fieldsIndex:c.toJSON(),geometryType:d,hasZ:this._hasZ,hasM:this._hasM,featureIdInfo:{type:"object-id",fieldName:K},subtypes:null,subtypeField:null,types:null,typeIdField:null,globalIdField:null,spatialReference:i.spatialReference,outSpatialReference:null,attributeSpatialReference:null,timeInfo:null,timeReferenceUnknownClient:null,dateFieldsTimeZone:null}),this._queryEngineParams={fieldsIndex:this._metadata.fieldsIndex,geometryType:d,featureIdInfo:{type:"object-id",fieldName:K},hasM:this._hasM,hasZ:this._hasZ,spatialReference:i.spatialReference?.toJSON()??{wkid:4326},aggregateAdapter:null,timeInfo:null,definitionExpression:null},this._fullExtent=s?.extent?s.extent:await this._tryDeriveParquetFullExtent(i),{capabilities:this._capabilities,layerDefinition:{fields:i.fields?.map(e=>e.toJSON()),drawingInfo:T(d),extent:this._fullExtent??void 0,geometryType:d,geometryEncoding:i.geometryEncoding?.toJSON(),displayOptimization:i.displayOptimization}}}destroy(){this._provider.destroy(),this._queue.destroy();for(const{handle:e}of this._streams.values())e.remove();this._streams.clear(),this._indexMap={},this._handles.removeAll()}async reload(e){this.destroy(),await this.load(e)}set remoteClient(e){this._source=e.createInvokeProxy("")}setCustomParameters(e){this._customParameters=e}getIndexMap(){return this._indexMap}async updateFileProvider(e){this._loadParameters={...this._loadParameters,provider:e};const t=O(e,this._provider.getGeometryInfo(),()=>this._customParameters);await this._updateProvider(t)}async getDiagnosticsSnapshot(){const e=await this._provider.getFiles();return{files:await Promise.all(e.map(e=>e.getDiagnosticsSnapshot()))}}async getColumnIndex(e){return(await this._getFileInfoById(e.fileId)).getColumnIndex(e.rowGroupIndex,e.columnIndex)}async getOffsetIndex(e){return(await this._getFileInfoById(e.fileId)).getOffsetIndex(e.rowGroupIndex,e.columnIndex)}async queryFeatures(e,t){const s=await P(e,null,this._queryEngineParams.spatialReference);if(this._validateQuery(s),be(s)||(s.resultRecordCount=s.resultRecordCount?Math.min(s.resultRecordCount,te):te,s.resultOffset=s.resultOffset??0),s.outStatistics)return this._queryStatistics(s,t);s.returnDistinctValues&&(s.returnGeometry=void 0);return(await this._enqueueQuery(s,t)).createQueryResponse()}async queryFeatureCount(e,t){const s=await P(e,null,this._queryEngineParams.spatialReference);if(this._validateQuery(s),!de(s))return this._getFeatureCount();s.outFields=void 0,s.returnGeometry=void 0;return(await this._enqueueQuery(s,t)).createQueryResponseForCount()}async queryObjectIds(e,t){const s=await P(e,null,this._queryEngineParams.spatialReference);if(this._validateQuery(s),!de(s))return Array.from({length:await this._getFeatureCount()},(e,t)=>t);s.resultRecordCount=s.resultRecordCount?Math.min(s.resultRecordCount,8e3):8e3,s.resultOffset=s.resultOffset??0,s.returnGeometry=void 0,s.outFields=void 0;return(await this._enqueueQuery(s,t)).items.map(e=>e.getObjectId())}async queryAttributeBins(e,t={}){throw new r("parquet:unsupported","queryAttributeBins not supported.")}async queryExtent(e,t){const r=await P(e,null,this._queryEngineParams.spatialReference);if(this._validateQuery(r),this._fullExtent&&!de(r))return{count:await this._getFeatureCount(),extent:this._fullExtent};const i=s(this._metadata.spatialReference);r.returnGeometry=!0,r.outFields=void 0;const a=d(f(),y),n=f(),o=await this._enqueueQuery(r,t);let u=0;for(const s of o.items)s.getBounds(n)&&(h(a,n),u+=1);return{count:u,extent:R(a,i,r.outSR?s(r.outSR):i.toJSON(),i,!1)}}async queryStream(e,t){if(!t.signal)throw new Error("InternalError: AbortSignal must be passed");const s=await this._getCandidateFiles(e),r=new ae(s,async(t,s)=>{const r=await t.file,i=await this._createParquetDisplayQuery(r,t.id,e);return r.executeQuery(i,te,s)}),i=this._streamIdCounter++,a=n(t.signal,e=>{const t=this._streams.get(i);null!=t&&(t.handle.remove(),this._streams.delete(i))});return this._streams.set(i,{stream:r,handle:a}),i}async getStreamNext(e,t){if(!t.signal)throw new Error("InternalError: AbortSignal must be passed");const s=this._streams.get(e);if(!s)return{result:null};const r=await s.stream.next(t.signal);if(null==r)return s.handle.remove(),this._streams.delete(e),{result:null};const i=r.chunk.serialize().buffer,a={fileId:r.fileId,buffer:i};return i instanceof ArrayBuffer?{result:a,transferList:[i]}:{result:a}}async getStreamNextFeatures(e,t){const{result:s}=await this.getStreamNext(e,t);if(null==s)return null;const r=(await W()).ParquetChunk.deserialize(new Uint8Array(s.buffer)),i=new X(this._metadata,this._indexMap,r,s.fileId),a=[];for(;i.next();){const e=I(i.readGeometryWorldSpace(),i.geometryType,i.hasZ,i.hasM),t=i.readAttributes();a.push({attributes:t,geometry:e})}return{features:a}}async createPatch(e,t,s,r,i){if(!i.signal)throw new Error("InternalError: AbortSignal must be passed");const a=await this._getFileInfoById(e),n=await a.file;return(await n.createChunkPatch(t,s,r,i.signal)).serialize().buffer}async _updateProvider(e){const t=this._provider;this._handles.removeAll(),this._provider=e,this._handles.add([e.events.on("rangeRead",e=>{this._source.onRangeRead(e)}),e.events.on("sourceChanged",async()=>{await this.reload(this._loadParameters),await this._source.onSourceChange()})]),await(t?.destroy())}async _getCandidateFiles(e){const t=await this._provider.getFiles(),s=await this._getSpatialFilePruning(e);if(null==s)return t;const r=t.filter(e=>this._mayIncludeFileForSpatialPruning(e,s));return"xz"===s.type?ve(r,s):r}async _queryStatistics(e,t){const s=await P({...e},null,this._queryEngineParams.spatialReference);if(s.returnGeometry=void 0,me(s,this._fieldsIndex)){const e=await this._getStatisticsFromFiles(s);if(e)return e}return(await this._enqueueQuery(s,t)).createQueryResponse()}async _getStatisticsFromFiles(e){const t=await this._provider.getFiles(),s={},r=[];for(const i of e.outStatistics??[]){const e=_e(i,t);if(!e.available)return null;s[i.outStatisticFieldName]=e.value,r.push(ge(i,this._fieldsIndex))}return{fields:r,features:[{attributes:s}]}}async _getSpatialFilePruning(e){if("tile"!==e.type&&("arcade"!==e.type||null==e.extent))return null;const t=this._displayOptimization,s=t?.index;if(null==s)return null;const r=e.outSpatialReference.wkid;if(null==s.wkid||null==r)return null;const i=s.wkid,a=await W();switch(s.type){case"xz":return{type:"xz",fieldName:U(s.code),intersects:(t,n)=>a.queryIntersectsXZStatistics(s.fullExtent,e.extent,r,i,s.maxLevel,t,n)};case"z":return{type:"xy",xFieldName:U(s.xColumn),yFieldName:U(s.yColumn),intersects:(t,s,n,o)=>a.queryIntersectsXYStatistics(e.extent,r,i,t,s,n,o)}}}_mayIncludeFileForSpatialPruning(e,t){switch(t.type){case"xz":{const s=Ie(e,t);return"null-only"!==s?.type&&("bounds"!==s?.type||t.intersects(s.minValue,s.maxValue))}case"xy":{const s=e.statistics.statistics.get(t.xFieldName),r=e.statistics.statistics.get(t.yFieldName);return"null-only"!==s?.type&&"null-only"!==r?.type&&("bounds"!==s?.type||"bounds"!==r?.type||t.intersects(s.minValue,s.maxValue,r.minValue,r.maxValue))}}}async _tryDeriveParquetFullExtent(s){if(!s.spatialReference)return null;if(null==this._fullExtent&&"location"===s.geometryEncoding?.type){const i=await this._provider.getFiles(),{xField:a,yField:n}=s.geometryEncoding,o=d(f(),y);let u=!1;for(const s of i){const i=await s.file;for(const s of i.rowGroups()){const i={stack:[],error:void 0,hasError:!1};try{const t=e(i,s.columnDescriptorForAttribute(a),!1),r=e(i,s.columnDescriptorForAttribute(n),!1),l=M(t),c=M(r);if("bounds"===l?.type&&"bounds"===c?.type){const e=[l.minValue,c.minValue,l.maxValue,c.maxValue];m(o,e),u=!0}s.free()}catch(r){i.error=r,i.hasError=!0}finally{t(i)}}}return u?{xmin:o[0],ymin:o[1],xmax:o[3],ymax:o[4],spatialReference:s.spatialReference?.toJSON()}:null}return null}async _getFileInfoById(e){const t=await this._provider.getFiles();for(const s of t)if(s.id===e)return s;throw new Error(`InternalError: File ${e} does not exist`)}async _getFileStatistics(){return{featureCount:await this._getFeatureCount(),byteLength:await this._getByteLength()}}async _getFile(e){return(await this._getFileInfoById(e)).file}async _createParquetQuery(e,t,s,r,i){const a=(await W()).Query.new();null!=s&&a.setPreFilterStart(s),null!=r&&a.setPreFilterCount(r),null!=i&&a.setPostFilterCount(i);const n=await this._getRequiredFields(e);a.setOutFields(n),(e.geometry||e.returnGeometry)&&a.setReturnGeometry(!0),a.setReturnZ(!!e.returnZ),a.setReturnM(!!e.returnM);const o=this._tryGetGeneralizedGeometryResolution(e);null!=o&&a.setSourceResolution(o);const u=e.geometry?.spatialReference??this._queryEngineParams.spatialReference,l=u.wkid;if(e.geometry&&(F(u)||S(u))){const t=g(w(),_);for(const s of q(e.geometry))x(t,s);a.setOutSpatialReference(l),a.setExtent({xmin:t[0],ymin:t[1],xmax:t[2],ymax:t[3]})}if(e.where){const{id:s,file:r}=t;await this._setWhereClause(a,await r,s,e.where)}return a}async _createParquetDisplayQuery(e,t,s){const r=(await W()).Query.new();if("tile"===s.type){r.setExtent(s.extent),r.setQuantizationTransform(s.transform);const e=this._sourceResolution(s.resolution,s.outSpatialReference);null!=e&&r.setSourceResolution(e)}else"arcade"===s.type&&null!=s.extent&&r.setExtent(s.extent);return r.setOutFields(s.outFields.filter(e=>null!=this._indexMap[e])),r.setOutSpatialReference(s.outSpatialReference.wkid),r.setReturnGeometry(s.returnGeometry),r.setReturnZ(s.returnZ),r.setReturnM(s.returnM),s.where&&await this._setWhereClause(r,e,t,s.where),r}async _getFeatureCount(){return(await this._provider.getFiles()).map(e=>e.statistics.rowCount).reduce((e,t)=>e+t,0)}async _getByteLength(){return(await this._provider.getFiles()).map(e=>e.statistics.byteSize).reduce((e,t)=>e+t,0)}_validateQuery(e){if(!this._capabilities.query.supportsStatistics&&e.outStatistics)throw new r("parquet:unsupported","Statistics queries are not supported",{query:e});if(!this._capabilities.query.supportsOrderBy&&e.orderByFields?.length)throw new r("parquet:unsupported","Queries using orderBy are not supported",{query:e});if(!this._capabilities.query.supportsDistinct&&e.returnDistinctValues)throw new r("parquet:unsupported","Queries using returnDistinctValues are not supported",{query:e})}async _setWhereClause(e,t,s,i){const a=this._indexMap,n=this._fieldsIndex,o={getAttribute(e,r){const i=a[r];if(null==i){const t=n.get(r);if("__OBJECTID"===t?.name){const t=e.row+e.rowGroupStart;return A(s,t)}return null}const o=t.readAttribute(e.rowGroup,e.row,i);if(null==o)return null;const u=n.get(r);return"esriFieldTypeString"===u.type||"esriFieldTypeDateOnly"===u.type||"esriFieldTypeTimeOnly"===u.type||"esriFieldTypeTimestampOffset"===u.type?ee.decode(o):o}},u=await l(i,this._fieldsIndex);if(!u.isStandardized)throw new r("sql-parse-error","expression is not standardized");const c=(e,t,s)=>u.testFeatureCompiled({rowGroup:e,row:t,rowGroupStart:s},o,null),p=u.fieldNames.map(e=>n.get(e)).filter(e=>e&&null!=this._indexMap[e?.name]);e.setWhere(i),e.setWhereEvaluator(c),e.setWhereFields(p.map(e=>e.name))}async*_streamFeatures(e,t,s,r,i){const a=await this._provider.getFiles();let n=0;for(const o of a){const a=n,u=n+o.statistics.rowCount;if(n+=o.statistics.rowCount,null!=t&&t>=u)continue;const l=null!=t?Math.max(t-a,0):null;let c=s;if(null!=s){const e=t??0,r=e+s,i=Math.max(e,a),n=Math.min(r,u);c=Math.max(n-i,0)}if(0===c)continue;const p=await this._createParquetQuery(e,o,l,c,r),d=await o.file,f=await d.executeQuery(p,te),h=async()=>{const e=await f.next(i);if(!e)return null;const t=new X(this._metadata,this._indexMap,e,o.id);return Se([new J(t,null,0,!1)],this._queryEngineParams)};let m=await h();for(;null!=m;)yield m,m=await h()}}async _queryFeaturesWithQueryEnginePagination(e,t){const s=[],r=this._streamFeatures(e,null,null,null,t);let i=await r.next();for(;!i.done;){const a=await i.value.executeQueryForOpaqueFeatures({...e,where:void 0},t);for(const e of a)s.push(e);i=await r.next()}return s}async _queryFeaturesWithUpfrontPagination(e,t){let s,r,i,a=e.resultOffset??0,n=e.resultRecordCount??te;fe(e)?he(e)||(i=a+n):(a&&(s=a,a=0),r=e.resultRecordCount);const o=[],u=this._streamFeatures(e,s,r,i,t);let l=await u.next();for(;!l.done&&n>0;){const s=await l.value.executeQueryForOpaqueFeatures({...e,where:void 0},t);for(const e of s)if(a>0)a--;else if(o.push(e),--n<=0)return o;l=await u.next()}return o}_enqueueQuery(e,t){return this._queue.push(e,t)}async _executeQuery(e,t){if(e.objectIds?.length){const s=new Map;for(const t of e.objectIds){const e=j(t),r=Q(t);let i=s.get(e);i||(i=[],s.set(e,i)),i.push(r)}const r=[];for(const[i,a]of s.entries()){const s=await this._executeFileIdQuery(e,i,a,t);for(const e of s)r.push(e)}return new E(r,e,{fieldsIndex:this._fieldsIndex,geometryType:this._metadata.geometryType,spatialReference:this._queryEngineParams.spatialReference,hasM:this._hasM,hasZ:this._hasZ,featureAdapter:Y,featureIdInfo:this._queryEngineParams.featureIdInfo})}if("1=1"===e.where&&(e.where=null),e.resultOffset??=0,e.resultRecordCount??=await this._getFeatureCount(),e.resultRecordCount>se){if(!(this._displayOptimization&&e.geometry))throw new r("parquet:cannot-execute-query","Unable to execute query, dataset is too large.")}const s=!!e.orderByFields?.length||!!e.outStatistics?.length||!!e.returnDistinctValues,i=s?await this._queryFeaturesWithQueryEnginePagination(e,t):await this._queryFeaturesWithUpfrontPagination(e,t);return s||(e.resultOffset=0),new E(i,e,{fieldsIndex:this._fieldsIndex,geometryType:this._metadata.geometryType,spatialReference:this._queryEngineParams.spatialReference,hasM:this._hasM,hasZ:this._hasZ,featureAdapter:Y,featureIdInfo:this._queryEngineParams.featureIdInfo})}async _executeFileIdQuery(e,t,s,r){const i=await this._getRequiredFields(e),a=(await W()).Query.new();a.setOutFields(i),a.setReturnGeometry(!!e.returnGeometry),a.setReturnZ(!!e.returnZ),a.setReturnM(!!e.returnM),a.setIds(new Uint32Array(s));const n=await this._getFile(t),o=await n.executeQuery(a,te,r);let u=await o.next(r),l=0;const c=[];for(;null!=u;){const e=new X(this._metadata,this._indexMap,u,t),s=new J(e,null,l++,!1);c.push(s),u=await o.next(r)}return Se(c,this._queryEngineParams).executeQueryForOpaqueFeatures(e,r)}async _getRequiredFields(e){const t=new Set;if(e.outStatistics)for(const s of v(this._fieldsIndex,e.outStatistics,e.groupByFieldsForStatistics))t.add(s);else if(e.outFields)for(const s of e.outFields)t.add(s);return(t.has("*")?this._fieldsIndex.fields.map(e=>e.name):Array.from(t)).filter(e=>null!=this._indexMap[e])}_tryGetGeneralizedGeometryResolution(e){if(!this._displayOptimization)return null;const t=e.outSR??this._queryEngineParams.spatialReference;if(!F(t)&&!S(t))return null;const s=e.quantizationParameters?.tolerance??e.maxAllowableOffset;return s?this._sourceResolution(s,t):null}_sourceResolution(e,t){const s=this._queryEngineParams.spatialReference,r=e*(c(t)/c(s));return!Number.isFinite(r)||r<=0?null:r}}function le(e){switch(e){case"fullText":case"having":case"timeExtent":case"historicMoment":case"aggregateIds":case"uniqueIds":case"gdbVersion":case"objectIds":case"where":case"geometry":case"resultOffset":case"resultRecordCount":return!0;default:return!1}}function ce(e){switch(e){case"fullText":case"having":case"timeExtent":case"historicMoment":case"aggregateIds":case"uniqueIds":case"gdbVersion":case"objectIds":case"where":case"geometry":return!0;default:return!1}}function pe(e){switch(e){case"fullText":case"having":case"timeExtent":return!0;case"historicMoment":case"aggregateIds":case"uniqueIds":case"gdbVersion":case"objectIds":case"where":case"resultOffset":case"geometry":case"resultRecordCount":return!1}return!1}function de(e){for(const t in e){const s=t;if(le(s)&&null!==e[s])return!0}return!1}function fe(e){for(const t in e){const s=t;if(ce(s)&&null!==e[s])return!0}return!1}function he(e){for(const t in e){const s=t;if(pe(s)&&null!==e[s])return!0}return!1}function me(e,t){return!!e.outStatistics?.length&&!de(e)&&!e.groupByFieldsForStatistics?.length&&!e.orderByFields?.length&&!e.returnDistinctValues&&!e.returnAggIds&&e.outStatistics.every(e=>ye(e,t))}function ye(e,t){switch(e.statisticType){case"count":return"1"===e.onStatisticField||null!=t.get(e.onStatisticField);case"min":case"max":{const s=t.get(e.onStatisticField);return null!=s&&N(s)}default:return!1}}function ge(e,t){const s="exceedslimit"!==e.statisticType?t.get(e.onStatisticField):null,r="min"!==e.statisticType&&"max"!==e.statisticType||"esriFieldTypeDate"!==s?.type?"esriFieldTypeDouble":s.type;return{name:e.outStatisticFieldName,alias:e.outStatisticFieldName,type:r}}function _e(e,t){switch(e.statisticType){case"count":return we(e,t);case"min":return xe(e,t,Math.min);case"max":return xe(e,t,Math.max);default:return{available:!1,value:null}}}function we(e,t){if("count"!==e.statisticType)return{available:!1,value:null};if("1"===e.onStatisticField)return{available:!0,value:t.reduce((e,t)=>e+t.statistics.rowCount,0)};let s=0;for(const r of t){const t=r.statistics.statistics.get(e.onStatisticField);if(null==t||null==t.nullCount)return{available:!1,value:null};s+=r.statistics.rowCount-t.nullCount}return{available:!0,value:s}}function xe(e,t,s){if("min"!==e.statisticType&&"max"!==e.statisticType)return{available:!1,value:null};let r=null;const i="min"===e.statisticType?"minValue":"maxValue";for(const a of t){const t=a.statistics.statistics.get(e.onStatisticField);if(null==t)return{available:!1,value:null};switch(t.type){case"null-only":continue;case"unknown":return{available:!1,value:null};case"bounds":{const e=Fe(t[i]);if(null==e)return{available:!1,value:null};r=null==r?e:s(r,e);break}}}return{available:!0,value:r}}function Fe(e){return"number"==typeof e&&Number.isFinite(e)?e:null}function Se(e,t){const s=new L;for(const r of e)s.insert(r);return new b({...t,featureStore:s})}function Ie(e,t){return e.statistics.statistics.get(t.fieldName)??null}function ve(e,t){return e.slice().sort((e,s)=>{const r=Re(e,t),i=Re(s,t);return r===i?0:r<i?-1:1})}function Re(e,t){const s=Ie(e,t);return"bounds"!==s?.type?Number.POSITIVE_INFINITY:s.maxValue-s.minValue}function qe(e,t,s){const r=e?.featureCount;let i=!1;return null!=r&&r<has("parquetlayer-full-query-feature-count")&&(i=!0),{analytics:{supportsCacheHint:!1},attachment:null,data:{isVersioned:!1,isBranchVersioned:!1,supportedCurveTypes:[],supportsAttachment:!1,supportsM:s,supportsTrueCurve:!1,supportsZ:t},metadata:{supportsAdvancedFieldProperties:!1},operations:{supportsCalculate:!1,supportsTruncate:!1,supportsValidateSql:!1,supportsAdd:!1,supportsDelete:!1,supportsEditing:!1,supportsChangeTracking:!1,supportsQuery:!0,supportsQueryBins:!1,supportsQueryPivot:!1,supportsQueryAnalytics:!1,supportsQueryAttachments:!1,supportsQueryTopFeatures:!1,supportsResizeAttachments:!1,supportsSync:!1,supportsUpdate:!1,supportsExceedsLimitStatistics:!1,supportsAsyncConvert3D:!1},query:{...C,maxRecordCount:te,supportsOrderBy:i,supportsDistinct:!0,supportsStatistics:!0,supportsSpatialAggregationStatistics:!1,supportedSpatialAggregationStatistics:{envelope:!1,centroid:!1,convexHull:!1}},queryAttributeBins:{supportsDate:!1,supportsFixedInterval:!1,supportsAutoInterval:!1,supportsFixedBoundaries:!1,supportsStackBy:!1,supportsSplitBy:!1,supportsSnapToData:!1,supportsReturnFullIntervalBin:!1,supportsFirstDayOfWeek:!1,supportsNormalization:!1},queryRelated:{supportsCount:!1,supportsOrderBy:!1,supportsPagination:!1,supportsCacheHint:!1},queryTopFeatures:{supportsCacheHint:!1},editing:{supportsDeleteByAnonymous:!1,supportsDeleteByOthers:!1,supportsGeometryUpdate:!1,supportsGlobalId:!1,supportsTrueCurveUpdate:!1,supportsTrueCurveUpdateByTrueCurveClientsOnly:!0,supportsReturnServiceEditsInSourceSpatialReference:!1,supportsRollbackOnFailure:!1,supportsUpdateByAnonymous:!1,supportsUpdateByOthers:!1,supportsUploadWithItemId:!1,supportsUpdateWithoutM:!1,supportsAsyncApplyEdits:!1,zDefault:void 0}}}function be(e){return!!(e.objectIds?.length||e.outStatistics||e.orderByFields?.length||e.returnDistinctValues)}export{ue as default};