@arcgis/core 5.2.0-next.137 → 5.2.0-next.138

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 (466) hide show
  1. package/analysis/LineOfSightAnalysisObserver.d.ts +12 -0
  2. package/analysis/LineOfSightAnalysisObserver.js +1 -1
  3. package/analysis/LineOfSightAnalysisTarget.d.ts +12 -0
  4. package/analysis/LineOfSightAnalysisTarget.js +1 -1
  5. package/arcade/featureset/sources/FeatureLayerParquet.js +1 -1
  6. package/arcgisGlobal.d.ts +4 -0
  7. package/assets/components/assets/icon/blockHeightMedium16.json +1 -0
  8. package/assets/components/assets/icon/blockHeightMedium24.json +1 -0
  9. package/assets/components/assets/icon/blockHeightMedium32.json +1 -0
  10. package/assets/components/assets/icon/blockHeightShort16.json +1 -0
  11. package/assets/components/assets/icon/blockHeightShort24.json +1 -0
  12. package/assets/components/assets/icon/blockHeightShort32.json +1 -0
  13. package/assets/components/assets/icon/blockHeightTall16.json +1 -0
  14. package/assets/components/assets/icon/blockHeightTall24.json +1 -0
  15. package/assets/components/assets/icon/blockHeightTall32.json +1 -0
  16. package/assets/components/assets/icon/cursorCircle16.json +1 -0
  17. package/assets/components/assets/icon/cursorCircle24.json +1 -0
  18. package/assets/components/assets/icon/cursorCircle32.json +1 -0
  19. package/assets/components/assets/icon/dictionary16.json +1 -0
  20. package/assets/components/assets/icon/dictionary24.json +1 -0
  21. package/assets/components/assets/icon/dictionary32.json +1 -0
  22. package/assets/components/assets/icon/jobDependency16.json +1 -0
  23. package/assets/components/assets/icon/jobDependency24.json +1 -0
  24. package/assets/components/assets/icon/jobDependency32.json +1 -0
  25. package/assets/components/assets/icon/referenceChip16.json +1 -0
  26. package/assets/components/assets/icon/referenceChip24.json +1 -0
  27. package/assets/components/assets/icon/referenceChip32.json +1 -0
  28. package/assets/esri/core/workers/RemoteClient.js +1 -1
  29. package/assets/esri/core/workers/chunks/{4e6f95d8c624d513849a.js → 05963f57cbe5a5249496.js} +1 -1
  30. package/assets/esri/core/workers/chunks/{0b8681ca4a83e97f1f71.js → 067de1910190da228291.js} +1 -1
  31. package/assets/esri/core/workers/chunks/{3c0fd1c6cda44e9f40ab.js → 070684943698fa43c2b4.js} +1 -1
  32. package/assets/esri/core/workers/chunks/{bc1cb4b9a02e6c78deb7.js → 076e8d2e08ff2a013736.js} +1 -1
  33. package/assets/esri/core/workers/chunks/{c10e040368065411506a.js → 10445313d0d57b34511b.js} +1 -1
  34. package/assets/esri/core/workers/chunks/{d537c59b46cdaaf66034.js → 1188d0a136fffc009643.js} +1 -1
  35. package/assets/esri/core/workers/chunks/{20af3f085f60c32c6c53.js → 178083d8ed7707b45ca2.js} +1 -1
  36. package/assets/esri/core/workers/chunks/{f5efe3e800c6e23efcf3.js → 1819c45655c836b9a8d7.js} +1 -1
  37. package/assets/esri/core/workers/chunks/1b946714ca4a1a7359d4.js +2 -0
  38. package/assets/esri/core/workers/chunks/{d8d8b38ac8a91d9e45fc.js → 1cc744ab5eee5ee3bed8.js} +1 -1
  39. package/assets/esri/core/workers/chunks/{05e39b4de7f62c5b22cc.js → 20f75cc777af13fa249b.js} +1 -1
  40. package/assets/esri/core/workers/chunks/2a1ec30f9ad305763f81.js +2 -0
  41. package/assets/esri/core/workers/chunks/34570e6bbf559f18c1a5.js +1 -0
  42. package/assets/esri/core/workers/chunks/{60f6d5da9480dd36e877.js → 3dddae78286d05eb10fc.js} +1 -1
  43. package/assets/esri/core/workers/chunks/{9efd30bbd02ec0d1031b.js → 3ec3589f6e74d7cb87cf.js} +1 -1
  44. package/assets/esri/core/workers/chunks/{0bec054fca104f3bf141.js → 3f776d9fd2ab68b21fca.js} +1 -1
  45. package/assets/esri/core/workers/chunks/402a82c77420254831bc.js +1 -0
  46. package/assets/esri/core/workers/chunks/{e2ebf0ea3af2e6907987.js → 406f24ec13eb30d43405.js} +1 -1
  47. package/assets/esri/core/workers/chunks/43fc42405167a5537039.js +1 -0
  48. package/assets/esri/core/workers/chunks/{ddedc414bb478b376221.js → 46b2d4addfc73f9183a4.js} +1 -1
  49. package/assets/esri/core/workers/chunks/498d6dfd3bb0d3490548.js +1 -0
  50. package/assets/esri/core/workers/chunks/{36ef86701883a20dd6f6.js → 4a640548032355e57acd.js} +1 -1
  51. package/assets/esri/core/workers/chunks/5566f14afb63065e438f.js +1 -0
  52. package/assets/esri/core/workers/chunks/{c3b96d1d43afccd23e45.js → 590e6c70206122e4cc3c.js} +2 -2
  53. package/assets/esri/core/workers/chunks/{54860dd53a46cf4c47f3.js → 59295b99bdff4045a0e7.js} +1 -1
  54. package/assets/esri/core/workers/chunks/5aeb5e18514644fe2cf9.js +1 -0
  55. package/assets/esri/core/workers/chunks/{5da86409d70098fc6a10.js → 5b3cfe95314a75a735c1.js} +1 -1
  56. package/assets/esri/core/workers/chunks/{a54678bfa0f1807b61cd.js → 5c855af73ee3c3e764fb.js} +1 -1
  57. package/assets/esri/core/workers/chunks/{a8b7e6198c2d0c37c9a0.js → 5e90c1b49f2b7e21d05a.js} +4 -4
  58. package/assets/esri/core/workers/chunks/{30f808cac8a34f95ea6e.js → 6079d27f4ab319fb8f0c.js} +1 -1
  59. package/assets/esri/core/workers/chunks/66c2a28a851130b87c04.js +1 -0
  60. package/assets/esri/core/workers/chunks/{dac90b3631f7f7158f68.js → 67f15538c51838201fc7.js} +1 -1
  61. package/assets/esri/core/workers/chunks/{cfaba0470619786e1ef8.js → 68d8ae42ab71d01a70a5.js} +2 -2
  62. package/assets/esri/core/workers/chunks/6aebf7cfd294e88bf926.js +1 -0
  63. package/assets/esri/core/workers/chunks/{864e7030c4ddbfcf0114.js → 6ccf9535013fe672c93b.js} +1 -1
  64. package/assets/esri/core/workers/chunks/{ba7f0cf7e495d3ec2d55.js → 6e62581d933e7298d1f6.js} +1 -1
  65. package/assets/esri/core/workers/chunks/{83b5dd4029e00abd80bf.js → 700b1d5bc67b7e1b3ff3.js} +1 -1
  66. package/assets/esri/core/workers/chunks/{f9fea72cc222a30ef2f9.js → 72399062767abdfb0bee.js} +1 -1
  67. package/assets/esri/core/workers/chunks/{2a7fbfd77002a24bf737.js → 747461bb6a1bc2f0a64d.js} +1 -1
  68. package/assets/esri/core/workers/chunks/{c333f6ed42985bb2b11f.js → 7851aef196eea5d6c94e.js} +1 -1
  69. package/assets/esri/core/workers/chunks/{f0b6bd6fab5320c3082f.js → 7a05b18f655c1167ce0a.js} +1 -1
  70. package/assets/esri/core/workers/chunks/{04296b75d0f81fbd1bb5.js → 864194927d05ebc4cc31.js} +1 -1
  71. package/assets/esri/core/workers/chunks/{3c4a13a9f0b305394a26.js → 876f7633c15f1e31078d.js} +1 -1
  72. package/assets/esri/core/workers/chunks/{62298dba3f6cbdc3f4ae.js → 879b2f0ff1977bca9376.js} +1 -1
  73. package/assets/esri/core/workers/chunks/{b547b3bce729c9dac90d.js → 898359be6996fd9763b8.js} +1 -1
  74. package/assets/esri/core/workers/chunks/8cb716f110d164030309.js +1 -0
  75. package/assets/esri/core/workers/chunks/8dc1c3042267618fd710.js +2 -0
  76. package/assets/esri/core/workers/chunks/{625f02db93d7fbf175ca.js → 9001e9a1e81bce175ddd.js} +1 -1
  77. package/assets/esri/core/workers/chunks/{9ffa6c8d93d3443834c6.js → 912080c90b5cc2e817cf.js} +1 -1
  78. package/assets/esri/core/workers/chunks/96c50a0dda0f1503ef92.js +2 -0
  79. package/assets/esri/core/workers/chunks/{13e4379441499599c3b5.js → 9cbde13e536676767900.js} +1 -1
  80. package/assets/esri/core/workers/chunks/{408db4f32850b77264ae.js → 9cd3fcb5fca6f9dbbcd8.js} +1 -1
  81. package/assets/esri/core/workers/chunks/a054da6cbd8ee4774a57.js +1 -0
  82. package/assets/esri/core/workers/chunks/{468fa166608ffc9108d9.js → a05790444115e4cf1bcc.js} +1 -1
  83. package/assets/esri/core/workers/chunks/{d1f2685782b423ef87a6.js → a556dd4e9e6d35e33a2c.js} +1 -1
  84. package/assets/esri/core/workers/chunks/{00d576d355599c88931e.js → bc38def1983089514e4b.js} +1 -1
  85. package/assets/esri/core/workers/chunks/{0725e515f3004bdd5c56.js → ca2adcbcf44454484fd5.js} +1 -1
  86. package/assets/esri/core/workers/chunks/{f3507b9e831ffd7a6bf8.js → cca8bd07bcd1d267a2e8.js} +1 -1
  87. package/assets/esri/core/workers/chunks/cfae60b9d2f2939e9c16.js +1 -0
  88. package/assets/esri/core/workers/chunks/{1d6b2a64f4e40e5cc13d.js → d201fbf3ceff946d2bd6.js} +1 -1
  89. package/assets/esri/core/workers/chunks/{4439078780d9ba49fd26.js → d51bb11baadc741c46bc.js} +1 -1
  90. package/assets/esri/core/workers/chunks/db1ab9b9c8bf5c7635d3.js +1 -0
  91. package/assets/esri/core/workers/chunks/de02a6a1f4810f99e9bb.js +1 -0
  92. package/assets/esri/core/workers/chunks/e630f3c56c077cb2bd8e.js +1 -0
  93. package/assets/esri/core/workers/chunks/e81173724e8de8c1e65b.js +1 -0
  94. package/assets/esri/core/workers/chunks/{2025288bed125594ceda.js → f6e62d2d279a328cbed7.js} +1 -1
  95. package/assets/esri/core/workers/chunks/{47c19778fcee7154ca38.js → f8bc474434fd365ab174.js} +1 -1
  96. package/assets/esri/core/workers/chunks/{9a20dc26cb9c7b2087cf.js → f95a1f878c9c1146180e.js} +1 -1
  97. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ar.json +1 -1
  98. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.bg.json +1 -1
  99. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.bs.json +1 -1
  100. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ca.json +1 -1
  101. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.cs.json +1 -1
  102. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.da.json +1 -1
  103. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.de.json +1 -1
  104. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.el.json +1 -1
  105. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.en.json +1 -1
  106. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.es.json +1 -1
  107. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.et.json +1 -1
  108. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.fi.json +1 -1
  109. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.fr.json +1 -1
  110. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.he.json +1 -1
  111. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.hr.json +1 -1
  112. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.hu.json +1 -1
  113. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.id.json +1 -1
  114. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.it.json +1 -1
  115. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ja.json +1 -1
  116. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ko.json +1 -1
  117. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.lt.json +1 -1
  118. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.lv.json +1 -1
  119. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.nl.json +1 -1
  120. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.no.json +1 -1
  121. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pl.json +1 -1
  122. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pt-BR.json +1 -1
  123. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pt-PT.json +1 -1
  124. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ro.json +1 -1
  125. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ru.json +1 -1
  126. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sk.json +1 -1
  127. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sl.json +1 -1
  128. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sr.json +1 -1
  129. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sv.json +1 -1
  130. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.th.json +1 -1
  131. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.tr.json +1 -1
  132. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.uk.json +1 -1
  133. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.vi.json +1 -1
  134. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-CN.json +1 -1
  135. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-HK.json +1 -1
  136. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-TW.json +1 -1
  137. package/assets/esri/widgets/FeatureForm/t9n/messages.ar.json +1 -1
  138. package/assets/esri/widgets/FeatureForm/t9n/messages.bg.json +1 -1
  139. package/assets/esri/widgets/FeatureForm/t9n/messages.bs.json +1 -1
  140. package/assets/esri/widgets/FeatureForm/t9n/messages.ca.json +1 -1
  141. package/assets/esri/widgets/FeatureForm/t9n/messages.cs.json +1 -1
  142. package/assets/esri/widgets/FeatureForm/t9n/messages.da.json +1 -1
  143. package/assets/esri/widgets/FeatureForm/t9n/messages.de.json +1 -1
  144. package/assets/esri/widgets/FeatureForm/t9n/messages.el.json +1 -1
  145. package/assets/esri/widgets/FeatureForm/t9n/messages.es.json +1 -1
  146. package/assets/esri/widgets/FeatureForm/t9n/messages.et.json +1 -1
  147. package/assets/esri/widgets/FeatureForm/t9n/messages.fi.json +1 -1
  148. package/assets/esri/widgets/FeatureForm/t9n/messages.fr.json +1 -1
  149. package/assets/esri/widgets/FeatureForm/t9n/messages.he.json +1 -1
  150. package/assets/esri/widgets/FeatureForm/t9n/messages.hr.json +1 -1
  151. package/assets/esri/widgets/FeatureForm/t9n/messages.hu.json +1 -1
  152. package/assets/esri/widgets/FeatureForm/t9n/messages.id.json +1 -1
  153. package/assets/esri/widgets/FeatureForm/t9n/messages.it.json +1 -1
  154. package/assets/esri/widgets/FeatureForm/t9n/messages.ja.json +1 -1
  155. package/assets/esri/widgets/FeatureForm/t9n/messages.ko.json +1 -1
  156. package/assets/esri/widgets/FeatureForm/t9n/messages.lt.json +1 -1
  157. package/assets/esri/widgets/FeatureForm/t9n/messages.lv.json +1 -1
  158. package/assets/esri/widgets/FeatureForm/t9n/messages.nl.json +1 -1
  159. package/assets/esri/widgets/FeatureForm/t9n/messages.no.json +1 -1
  160. package/assets/esri/widgets/FeatureForm/t9n/messages.pl.json +1 -1
  161. package/assets/esri/widgets/FeatureForm/t9n/messages.pt-BR.json +1 -1
  162. package/assets/esri/widgets/FeatureForm/t9n/messages.pt-PT.json +1 -1
  163. package/assets/esri/widgets/FeatureForm/t9n/messages.ro.json +1 -1
  164. package/assets/esri/widgets/FeatureForm/t9n/messages.ru.json +1 -1
  165. package/assets/esri/widgets/FeatureForm/t9n/messages.sk.json +1 -1
  166. package/assets/esri/widgets/FeatureForm/t9n/messages.sl.json +1 -1
  167. package/assets/esri/widgets/FeatureForm/t9n/messages.sr.json +1 -1
  168. package/assets/esri/widgets/FeatureForm/t9n/messages.sv.json +1 -1
  169. package/assets/esri/widgets/FeatureForm/t9n/messages.th.json +1 -1
  170. package/assets/esri/widgets/FeatureForm/t9n/messages.tr.json +1 -1
  171. package/assets/esri/widgets/FeatureForm/t9n/messages.uk.json +1 -1
  172. package/assets/esri/widgets/FeatureForm/t9n/messages.vi.json +1 -1
  173. package/assets/esri/widgets/FeatureForm/t9n/messages.zh-CN.json +1 -1
  174. package/assets/esri/widgets/FeatureForm/t9n/messages.zh-HK.json +1 -1
  175. package/assets/esri/widgets/FeatureForm/t9n/messages.zh-TW.json +1 -1
  176. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.ar.json +1 -1
  177. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.bg.json +1 -1
  178. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.bs.json +1 -1
  179. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.ca.json +1 -1
  180. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.cs.json +1 -1
  181. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.da.json +1 -1
  182. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.de.json +1 -1
  183. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.el.json +1 -1
  184. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.es.json +1 -1
  185. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.et.json +1 -1
  186. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.fi.json +1 -1
  187. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.fr.json +1 -1
  188. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.he.json +1 -1
  189. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.hr.json +1 -1
  190. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.hu.json +1 -1
  191. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.id.json +1 -1
  192. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.it.json +1 -1
  193. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.ja.json +1 -1
  194. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.ko.json +1 -1
  195. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.lt.json +1 -1
  196. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.lv.json +1 -1
  197. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.nl.json +1 -1
  198. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.no.json +1 -1
  199. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.pl.json +1 -1
  200. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.pt-BR.json +1 -1
  201. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.pt-PT.json +1 -1
  202. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.ro.json +1 -1
  203. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.ru.json +1 -1
  204. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.sk.json +1 -1
  205. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.sl.json +1 -1
  206. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.sr.json +1 -1
  207. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.sv.json +1 -1
  208. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.th.json +1 -1
  209. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.tr.json +1 -1
  210. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.uk.json +1 -1
  211. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.vi.json +1 -1
  212. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.zh-CN.json +1 -1
  213. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.zh-HK.json +1 -1
  214. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.zh-TW.json +1 -1
  215. package/chunks/Bufferer-CclWhXVb.js +1 -1
  216. package/chunks/Component.glsl.js +3 -3
  217. package/chunks/DefaultMaterial.glsl.js +2 -2
  218. package/chunks/Distance2DCalculator-DjIp2uQi.js +1 -1
  219. package/chunks/Envelope.js +1 -1
  220. package/chunks/Envelope2D.js +1 -1
  221. package/chunks/FocusArea.glsl.js +8 -10
  222. package/chunks/GaussianSplat.glsl.js +2 -2
  223. package/chunks/GeodeticDistanceCalculator-zRp89-dW.js +1 -1
  224. package/chunks/GeodeticUtils.js +1 -1
  225. package/chunks/Geometry.js +1 -1
  226. package/chunks/GeometryCleaner-CIE8Wfmb.js +1 -1
  227. package/chunks/LineMarker.glsl.js +35 -42
  228. package/chunks/MultiPathImpl.js +1 -1
  229. package/chunks/OperatorAffineTransform.js +1 -1
  230. package/chunks/OperatorClip.js +1 -1
  231. package/chunks/OperatorDensify.js +1 -1
  232. package/chunks/OperatorDistance.js +1 -1
  233. package/chunks/OperatorGeneralize.js +1 -1
  234. package/chunks/OperatorGeodesicBuffer.js +1 -1
  235. package/chunks/OperatorGeodeticArea.js +1 -1
  236. package/chunks/OperatorGeodeticDensifyByLength.js +1 -1
  237. package/chunks/OperatorGeodeticDistance.js +1 -1
  238. package/chunks/OperatorGeodeticLength.js +1 -1
  239. package/chunks/OperatorGraphicBuffer.js +1 -1
  240. package/chunks/OperatorIntegrate.js +1 -1
  241. package/chunks/OperatorMultiPartToSinglePart.js +1 -1
  242. package/chunks/OperatorProximity.js +1 -1
  243. package/chunks/OperatorProximityGeodesic.js +1 -1
  244. package/chunks/OperatorShapePreservingLength.js +1 -1
  245. package/chunks/OperatorShapePreservingProject.js +1 -1
  246. package/chunks/OperatorSimplifyOGC.js +1 -1
  247. package/chunks/Path.glsl.js +2 -2
  248. package/chunks/Point2D.js +1 -1
  249. package/chunks/RealisticTree.glsl.js +2 -2
  250. package/chunks/RibbonLine.glsl.js +50 -56
  251. package/chunks/SideCalculator2D-DX0718xq.js +1 -1
  252. package/chunks/Terrain.glsl.js +2 -2
  253. package/chunks/Transformation2D.js +1 -1
  254. package/chunks/UnitFactory.js +1 -1
  255. package/config.js +1 -1
  256. package/core/workers/RemoteClient.js +1 -1
  257. package/core/workers/workerFactory.js +1 -1
  258. package/editing/fieldUtils.d.ts +12 -0
  259. package/geometry/operators/extendOperator.js +1 -1
  260. package/geometry/operators/gx/operatorAlphaShape.js +1 -1
  261. package/geometry/operators/gx/operatorBoundary.js +1 -1
  262. package/geometry/operators/gx/operatorBuffer.js +1 -1
  263. package/geometry/operators/gx/operatorConvexHull.js +1 -1
  264. package/geometry/operators/gx/operatorLabelPoint.js +1 -1
  265. package/geometry/operators/gx/operatorLinesToPolygons.js +1 -1
  266. package/geometry/operators/gx/operatorLocateBetween.js +1 -1
  267. package/geometry/operators/gx/operatorMinimumBoundingCircle.js +1 -1
  268. package/geometry/operators/gx/operatorOffset.js +1 -1
  269. package/geometry/operators/gx/operatorPolygonOverlay.js +1 -1
  270. package/geometry/operators/gx/operatorPolygonSlicer.js +1 -1
  271. package/geometry/operators/gx/operatorSymmetricDifference.js +1 -1
  272. package/geometry/operators/isNearOperator.js +1 -1
  273. package/geometry/operators/reshapeOperator.js +1 -1
  274. package/geometry/operators/support/jsonConverter.js +1 -1
  275. package/geometry/support/curves/ellipticArc7Utils.js +1 -1
  276. package/interfaces.d.ts +15 -18
  277. package/kernel.js +1 -1
  278. package/layers/LinkChartLayer.js +1 -1
  279. package/layers/ParquetLayer.js +1 -1
  280. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  281. package/layers/list/LayerItemCollection.d.ts +1 -0
  282. package/layers/list/types.d.ts +5 -1
  283. package/layers/support/TimeSeriesCalculation.d.ts +1 -1
  284. package/layers/support/TimeSeriesCalculation.js +1 -1
  285. package/layers/support/dataSeriesUtils.d.ts +10 -0
  286. package/layers/support/timeSeriesUtils.js +17 -6
  287. package/libs/lyr3d/Lyr3DModule.js +1 -1
  288. package/networks/UtilityNetwork.d.ts +15 -0
  289. package/networks/UtilityNetwork.js +1 -1
  290. package/package.json +4 -4
  291. package/popup/FeatureContent.d.ts +14 -1
  292. package/popup/FeatureContent.js +1 -1
  293. package/popup/FeatureContentCollection.d.ts +4 -10
  294. package/popup/FeatureContentCollection.js +1 -1
  295. package/popup/actions.js +1 -1
  296. package/popup/support/featureUtils.js +1 -1
  297. package/renderers/support/RenderingInfo.js +1 -1
  298. package/renderers/support/renderingInfoUtils.js +1 -1
  299. package/renderers/visualVariables/SizeVariable.d.ts +16 -20
  300. package/renderers/visualVariables/support/SizeStop.d.ts +6 -2
  301. package/rest/networks/support/TraceLocation.js +1 -1
  302. package/rest/networks/support/TraceResult.d.ts +7 -0
  303. package/rest/networks/support/TraceResult.js +1 -1
  304. package/smartMapping/renderers/color.js +1 -1
  305. package/smartMapping/renderers/opacity.js +1 -1
  306. package/smartMapping/renderers/size.js +1 -1
  307. package/smartMapping/renderers/support/timeSeriesUtils.js +1 -1
  308. package/smartMapping/statistics/histogramForTimeSeries.d.ts +11 -0
  309. package/smartMapping/statistics/histogramForTimeSeries.js +2 -0
  310. package/smartMapping/statistics/summaryStatisticsForTimeSeries.d.ts +11 -0
  311. package/smartMapping/statistics/summaryStatisticsForTimeSeries.js +2 -0
  312. package/smartMapping/statistics/support/timeSeriesUtils.js +24 -0
  313. package/smartMapping/statistics/types.d.ts +50 -0
  314. package/symbols/cim/CIMPlacements.js +1 -1
  315. package/views/2d/analysis/AreaMeasurement/AreaMeasurementTool.js +1 -1
  316. package/views/2d/analysis/DistanceMeasurement/DistanceMeasurementTool.js +1 -1
  317. package/views/2d/engine/webgl/definitions.js +1 -1
  318. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AAnimatedShader.js +1 -1
  319. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedPolyMeshWriters.js +1 -1
  320. package/views/2d/engine/webgl/shaderGraph/techniques/animated/ComputedAnimatedParams.js +1 -1
  321. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextParams.js +1 -1
  322. package/views/2d/layers/SketchLayerView2D.js +1 -1
  323. package/views/2d/layers/features/layerAdapters/AnnotationLayerAdapter.js +1 -1
  324. package/views/2d/layers/features/layerAdapters/CatalogFootprintLayerAdapter.js +1 -1
  325. package/views/2d/layers/features/layerAdapters/DimensionLayerAdapter.js +1 -1
  326. package/views/2d/layers/features/layerAdapters/FeatureLayerAdapter.js +1 -1
  327. package/views/2d/layers/features/layerAdapters/InMemoryLayerAdapter.js +1 -1
  328. package/views/2d/layers/features/layerAdapters/KnowledgeGraphSublayerAdapter.js +1 -1
  329. package/views/2d/layers/features/layerAdapters/OGCFeatureLayerAdapter.js +1 -1
  330. package/views/2d/layers/features/layerAdapters/OrientedImageryLayerAdapter.js +1 -1
  331. package/views/2d/layers/features/layerAdapters/ParquetLayerAdapter.js +1 -1
  332. package/views/2d/layers/features/layerAdapters/StreamLayerAdapter.js +1 -1
  333. package/views/2d/layers/features/layerAdapters/SubtypeGroupLayerAdapter.js +1 -1
  334. package/views/2d/layers/features/schema/ExceedsLimitCache.js +1 -1
  335. package/views/2d/layers/features/schema/TimeSchema.js +2 -0
  336. package/views/2d/layers/features/sources/FeatureSourceQueryInfo.js +1 -1
  337. package/views/2d/layers/features/sources/strategies/ParquetTileLoadStrategy.js +1 -1
  338. package/views/2d/layers/support/annodime/cimAnnotations.js +1 -1
  339. package/views/2d/types.d.ts +2 -1
  340. package/views/3d/analysis/LineOfSight/LineOfSightEditTool.js +1 -1
  341. package/views/3d/analysis/LineOfSight/LineOfSightItemManipulatedObject3D.js +1 -1
  342. package/views/3d/analysis/LineOfSight/LineOfSightItemTool.js +1 -1
  343. package/views/3d/analysis/LineOfSightAnalysisView3D.d.ts +24 -0
  344. package/views/3d/analysis/Viewshed/ViewshedEditTool.js +1 -1
  345. package/views/3d/analysis/Viewshed/ViewshedSubTool.js +1 -1
  346. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementShiftTool.js +1 -1
  347. package/views/3d/camera/constraintUtils.js +1 -1
  348. package/views/3d/input/handlers/ground/GroundDoubleClickMove.js +1 -1
  349. package/views/3d/interactive/placementTools/GroundNavigationPlacementTool3D.js +1 -1
  350. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  351. package/views/3d/layers/i3s/I3SOverrides.js +1 -1
  352. package/views/3d/layers/support/FastSymbolUpdates.js +1 -1
  353. package/views/3d/state/controllers/GroundNavigationController.js +1 -1
  354. package/views/3d/state/controllers/momentum/GroundNavigationMomentumController.js +1 -1
  355. package/views/3d/state/utils/OffsetCorrectionController.js +1 -1
  356. package/views/3d/state/utils/groundNavigationUtils.js +1 -1
  357. package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
  358. package/views/3d/webgl-engine/collections/Component/Material/ComponentTechniqueConfiguration.js +1 -1
  359. package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +2 -2
  360. package/views/3d/webgl-engine/core/shaderLibrary/shading/evaluateSceneLightingFragment.glsl.js +12 -0
  361. package/views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js +2 -2
  362. package/views/3d/webgl-engine/effects/focusArea/FocusArea.glsl.js +1 -1
  363. package/views/3d/webgl-engine/shaders/LineMarker.glsl.js +1 -1
  364. package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
  365. package/views/SelectionManager.d.ts +3 -3
  366. package/views/draw/support/Reshape.js +1 -1
  367. package/views/interactive/options/bindViewToolOptions.js +1 -1
  368. package/views/interactive/sketch/SketchLabelOptions.d.ts +3 -0
  369. package/views/interactive/sketch/SketchLabelOptions.js +1 -1
  370. package/views/interactive/sketch/SketchTooltipOptions.d.ts +3 -0
  371. package/views/interactive/sketch/SketchTooltipOptions.js +1 -1
  372. package/views/interactive/sketch/SketchValueOptions.d.ts +3 -0
  373. package/views/interactive/sketch/SketchValueOptions.js +1 -1
  374. package/views/interactive/snapping/SnappingOptions.d.ts +3 -0
  375. package/views/interactive/snapping/SnappingOptions.js +1 -1
  376. package/views/interactive/snapping/snappingUtils.js +1 -1
  377. package/views/interactive/tooltip/fields/parsingAndFormattingUtils.js +1 -1
  378. package/views/layers/SketchLayerView.d.ts +34 -0
  379. package/views/layers/SketchLayerView.js +2 -0
  380. package/views/layers/types.d.ts +3 -2
  381. package/views/selection/types.d.ts +15 -4
  382. package/widgets/BasemapGallery/BasemapGalleryViewModel.js +1 -1
  383. package/widgets/BasemapGallery.js +1 -1
  384. package/widgets/Bookmarks/BookmarksViewModel.d.ts +4 -0
  385. package/widgets/Bookmarks/BookmarksVisibleElements.d.ts +5 -1
  386. package/widgets/Bookmarks/types.d.ts +2 -0
  387. package/widgets/Editor/EditorViewModel.d.ts +31 -30
  388. package/widgets/Editor/EditorViewModel.js +1 -1
  389. package/widgets/Editor/components/Settings.js +1 -1
  390. package/widgets/Editor/types.d.ts +44 -0
  391. package/widgets/Editor.d.ts +30 -27
  392. package/widgets/Editor.js +1 -1
  393. package/widgets/FeatureTable/FeatureTableViewModel.d.ts +1 -1
  394. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  395. package/widgets/FeatureTable/support/FeatureStore.d.ts +1 -1
  396. package/widgets/FeatureTable/support/FeatureStore.js +1 -1
  397. package/widgets/FeatureTable.d.ts +6 -0
  398. package/widgets/FeatureTable.js +1 -1
  399. package/widgets/Histogram/types.d.ts +10 -2
  400. package/widgets/HistogramRangeSlider/types.d.ts +4 -1
  401. package/widgets/LayerList/LayerListViewModel.d.ts +2 -1
  402. package/widgets/Legend/LegendViewModel.d.ts +2 -0
  403. package/widgets/Legend/styles/card/CardView.d.ts +2 -0
  404. package/widgets/Legend/styles/classic/ClassicView.d.ts +4 -1
  405. package/widgets/Legend.d.ts +3 -0
  406. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.d.ts +7 -0
  407. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  408. package/widgets/OrientedImageryViewer/types.d.ts +9 -0
  409. package/widgets/OrientedImageryViewer.d.ts +7 -0
  410. package/widgets/OrientedImageryViewer.js +2 -2
  411. package/widgets/PanoramicVideoViewer.js +1 -1
  412. package/widgets/PanoramicViewer/PanoramicVideoViewerViewModel.js +1 -1
  413. package/widgets/ScaleRangeSlider/types.d.ts +9 -2
  414. package/widgets/Sketch/SketchViewModel.d.ts +32 -1
  415. package/widgets/Sketch/SketchViewModel.js +1 -1
  416. package/widgets/Sketch.d.ts +27 -1
  417. package/widgets/Sketch.js +1 -1
  418. package/widgets/Slider/types.d.ts +58 -13
  419. package/widgets/Slider.d.ts +6 -0
  420. package/widgets/smartMapping/BinaryColorSizeSlider/BinaryColorSizeSliderViewModel.d.ts +2 -0
  421. package/widgets/smartMapping/ClassedColorSlider/ClassedColorSliderViewModel.d.ts +2 -0
  422. package/widgets/smartMapping/ClassedSizeSlider/ClassedSizeSliderViewModel.d.ts +2 -0
  423. package/widgets/smartMapping/ColorSizeSlider/ColorSizeSliderViewModel.d.ts +2 -0
  424. package/widgets/smartMapping/ColorSlider/ColorSliderViewModel.d.ts +2 -0
  425. package/widgets/smartMapping/HeatmapSlider/HeatmapSliderViewModel.d.ts +2 -0
  426. package/widgets/smartMapping/OpacitySlider/OpacitySliderViewModel.d.ts +2 -0
  427. package/widgets/smartMapping/SizeSlider/SizeSliderViewModel.d.ts +3 -0
  428. package/widgets/smartMapping/SmartMappingPrimaryHandleSliderViewModel.d.ts +2 -0
  429. package/widgets/smartMapping/SmartMappingSliderViewModel.d.ts +2 -0
  430. package/widgets/smartMapping/types.d.ts +30 -7
  431. package/widgets/support/FilterBuilder/FilterBuilderViewModel.d.ts +21 -11
  432. package/widgets/support/FilterBuilder/FilterBuilderViewModel.js +1 -1
  433. package/widgets/support/FilterBuilder/types.d.ts +28 -0
  434. package/widgets/support/FilterBuilder.js +1 -1
  435. package/widgets/support/FilterCondition/FilterConditionViewModel.d.ts +24 -0
  436. package/widgets/support/FilterCondition/FilterConditionViewModel.js +1 -1
  437. package/widgets/support/FilterCondition/types.d.ts +16 -1
  438. package/widgets/support/FilterCondition.js +1 -1
  439. package/widgets/support/SnappingControls/snappingLayerListUtils.js +1 -1
  440. package/widgets/support/iconUtils.js +1 -1
  441. package/assets/esri/core/workers/chunks/0606ab6fdfc1dfea3856.js +0 -1
  442. package/assets/esri/core/workers/chunks/1289204f8ca96032c17a.js +0 -1
  443. package/assets/esri/core/workers/chunks/12b5a645c0987a0efe54.js +0 -2
  444. package/assets/esri/core/workers/chunks/17b938ba49fb1e7ab8c4.js +0 -1
  445. package/assets/esri/core/workers/chunks/1dbb3e25e005a8220779.js +0 -2
  446. package/assets/esri/core/workers/chunks/3d6fef25af7e1a51e1bd.js +0 -1
  447. package/assets/esri/core/workers/chunks/55ae00f33f5240a73a50.js +0 -1
  448. package/assets/esri/core/workers/chunks/74211d096cc3296e0968.js +0 -1
  449. package/assets/esri/core/workers/chunks/7926faab76a721a2e1c4.js +0 -1
  450. package/assets/esri/core/workers/chunks/96c3900685cfb2a8ca12.js +0 -1
  451. package/assets/esri/core/workers/chunks/ad28486bc6afaa346de5.js +0 -1
  452. package/assets/esri/core/workers/chunks/ad29c729e90b5866713c.js +0 -1
  453. package/assets/esri/core/workers/chunks/b72a2514aa4cc4ae7d1b.js +0 -1
  454. package/assets/esri/core/workers/chunks/be761749f8d77fbd9df5.js +0 -1
  455. package/assets/esri/core/workers/chunks/d4f55e2b1ace7867a3b8.js +0 -1
  456. package/assets/esri/core/workers/chunks/dbfd25aa0d19aed5890c.js +0 -1
  457. package/assets/esri/core/workers/chunks/de28a86775235bd5d3c4.js +0 -2
  458. package/assets/esri/core/workers/chunks/f6cfc901267a229de7a1.js +0 -2
  459. package/assets/esri/core/workers/chunks/fb147097149a89e671ff.js +0 -1
  460. package/support/revision.js +0 -2
  461. /package/assets/esri/core/workers/chunks/{1dbb3e25e005a8220779.js.LICENSE.txt → 1b946714ca4a1a7359d4.js.LICENSE.txt} +0 -0
  462. /package/assets/esri/core/workers/chunks/{f6cfc901267a229de7a1.js.LICENSE.txt → 2a1ec30f9ad305763f81.js.LICENSE.txt} +0 -0
  463. /package/assets/esri/core/workers/chunks/{c3b96d1d43afccd23e45.js.LICENSE.txt → 590e6c70206122e4cc3c.js.LICENSE.txt} +0 -0
  464. /package/assets/esri/core/workers/chunks/{cfaba0470619786e1ef8.js.LICENSE.txt → 68d8ae42ab71d01a70a5.js.LICENSE.txt} +0 -0
  465. /package/assets/esri/core/workers/chunks/{de28a86775235bd5d3c4.js.LICENSE.txt → 8dc1c3042267618fd710.js.LICENSE.txt} +0 -0
  466. /package/assets/esri/core/workers/chunks/{12b5a645c0987a0efe54.js.LICENSE.txt → 96c50a0dda0f1503ef92.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{serializationUtilsModuleWrapper as t}from"../applications/KnowledgeStudio/resourceSerializationUtils.js";import n from"../core/Collection.js";import{deprecated as r}from"../core/deprecate.js";import i from"../core/Error.js";import a from"../core/Logger.js";import{getOrCreateMapValue as o}from"../core/MapUtils.js";import{MultiOriginJSONSupportMixin as s}from"../core/MultiOriginJSONSupport.js";import{throwIfAborted as c,isAbortError as l,createAbortError as u}from"../core/promiseUtils.js";import{watch as d,sync as f}from"../core/reactiveUtils.js";import{property as p,subclass as m}from"../core/accessorSupport/decorators.js";import{idToName as h}from"../core/accessorSupport/PropertyOrigin.js";import g from"../geometry/Extent.js";import _ from"../geometry/Point.js";import v from"../geometry/Polyline.js";import{polygonCentroidPoint as y}from"../geometry/support/centroid.js";import b from"./Layer.js";import{convertFromGeometry as x}from"./graphics/featureConversionUtils.js";import{systemOidFieldName as S,systemOriginIdFieldName as C,systemDestinationIdFieldName as w,systemLayoutGeometryFieldName as T,systemAggregationCountFieldName as E}from"./knowledgeGraph/constants.js";import{IdealEdgeLengthTypeOptions as D}from"./knowledgeGraph/IdealEdgeLengthTypeOptions.js";import{KnowledgeGraphLayerDataManager as O}from"./knowledgeGraph/KnowledgeGraphLayerDataManager.js";import k from"./knowledgeGraph/KnowledgeGraphSublayer.js";import{getTitleFromServerUrl as A,getUserKGSPrivileges as j,createCapabilitiesFromKnowledgeGraph as M,initializeLayersFromClientData as N}from"./knowledgeGraph/layerUtils.js";import P from"./knowledgeGraph/SessionMemoryStorage.js";import{convertLayoutTypeToWebSupportedFormat as F,getRelationshipEndNodeIds as I}from"./knowledgeGraph/supportUtils.js";import{BlendLayer as L}from"./mixins/BlendLayer.js";import{OperationalLayer as R}from"./mixins/OperationalLayer.js";import{ScaleRangeLayer as z}from"./mixins/ScaleRangeLayer.js";import{url as B}from"./support/commonProperties.js";import{LCChronologicalLayout as V,LCSimpleLayout as ee,LCSmartTreeLayout as te,LCRadialTreeLayout as ne,LCHierarchicalLayout as re,LCCommunityLayout as ie,LCForceDirectedLayout as ae,load as oe}from"../libs/linkchartlayout/LinkChartLayout.js";import H from"../linkChart/LayoutSettings.js";import U from"../linkChart/RootedLayoutSettings.js";import{getCreationDatesForResources as W}from"../linkChart/utils.js";import{fetchKnowledgeGraph as G}from"../rest/knowledgeGraphService.js";import{timeZoneProperty as K}from"../time/timeZoneUtils.js";let q=class extends R(L(z(s(b)))){constructor(e){if(super(e),this.url=null,this.dataPreloadedInLocalCache=!1,this.initializationLinkChartConfig=null,this.membershipModified=!0,this._currentLinkChartConfig={layoutMode:`organic-standard`},this._graphTypeLookup=new Map,this.dataManager=null,this.knowledgeGraph=null,this.layers=new(n.ofType(k)),this.entityLinkChartDiagramLookup=new Map,this.relationshipLinkChartDiagramLookup=new Map,this.linkChartExtent=new g({xmin:-1e-7,ymin:-1e-7,xmax:1e-7,ymax:1e-7}),this.memberEntityTypes=null,this.memberRelationshipTypes=null,this.operationalLayerType=`LinkChartLayer`,this.sublayerIdsCache=new Map,this.tables=new(n.ofType(k)),this.type=`link-chart`,this.userHasEditingPrivileges=!0,this.userHasFullEditingPrivileges=!1,this.userHasUpdateItemPrivileges=!1,this.chronologicalAuxiliaryGraphics=null,this._originalInclusionList=e?.initializationInclusionModeDefinition,e?.dataPreloadedInLocalCache&&!e?.initializationInclusionModeDefinition)throw new i(`knowledge-graph:linkchart-layer-constructor`,`If creating a link chart composite layer and configured that data is already loaded in the cache, you must specify an inclusion list so the Composite Layer knows what records belong to it`);this.addHandles(d(()=>this.layers.concat(this.tables),(e,t)=>this._handleSublayersChange(e,t),f))}normalizeCtorArgs(e){if(!e)return{};let{url:t,dataPreloadedInLocalCache:n,initializationLinkChartConfig:r}=e,{title:i}=e;return!i&&e?.url&&(i=A(e.url)),{url:t,title:i,dataPreloadedInLocalCache:n,initializationLinkChartConfig:r}}_initializeLayerProperties(e){let t=new Set,n=[],r=[];if(e.inclusionModeDefinition&&(!e.inclusionModeDefinition.namedTypeDefinitions||e.inclusionModeDefinition.namedTypeDefinitions.size<1))throw new i(`knowledge-graph:composite-layer-constructor`,`If an explicit inclusion definition is defined, at least one namedTypeDefinition must also be defined`);e.inclusionModeDefinition?.generateAllSublayers?(n=e.knowledgeGraph.dataModel.entityTypes??[],r=e.knowledgeGraph.dataModel.relationshipTypes??[]):e.inclusionModeDefinition?.namedTypeDefinitions&&e.inclusionModeDefinition?.namedTypeDefinitions.size>0?e.inclusionModeDefinition?.namedTypeDefinitions.forEach((i,o)=>{let s=this._graphTypeLookup.get(o);if(!s){a.getLogger(this).warn(`A named type, ${o}, was in the inclusion list that wasn't in the data model and will be removed`),e.inclusionModeDefinition?.namedTypeDefinitions.delete(o);return}s.type===`relationship`?t.has(o)||(t.add(o),r.push(s)):s.type===`entity`?t.has(o)||(t.add(o),n.push(s)):(a.getLogger(this).warn(`A named type, ${o}, was in the inclusion list that wasn't properly modeled and will be removed`),e.inclusionModeDefinition?.namedTypeDefinitions.delete(o))}):(n=e.knowledgeGraph.dataModel.entityTypes??[],r=e.knowledgeGraph.dataModel.relationshipTypes??[]);let o=new O({knowledgeGraph:e.knowledgeGraph,inclusionModeDefinition:e.inclusionModeDefinition});this.knowledgeGraph=e.knowledgeGraph,this.memberEntityTypes=n,this.memberRelationshipTypes=r,this.dataManager=o}load(e){let n=async()=>{let e=[],t=[];this.loadLayerAssumingLocalCache(),this._layersLoadedFromAuthoritativeItem()||await N(this),this.dataManager.inclusionModeDefinition&&(this.dataManager.inclusionModeDefinition.generateAllSublayers=!1),this.dataManager.inclusionModeDefinition?.namedTypeDefinitions.forEach(e=>{e.useAllData=!1}),await this._initializeDiagram(),this.layers.forEach(n=>{t.push(n.refreshCachedQueryEngine()),e.push(new Promise(e=>{n.on(`layerview-create`,()=>{e(null)})}))}),this.tables.forEach(e=>{t.push(e.refreshCachedQueryEngine())}),await Promise.all(t)};return this.addResolvingPromise(new Promise(r=>{G(this.url).then(async i=>{i.dataModel.entityTypes?.forEach(e=>{e.name&&this._graphTypeLookup.set(e.name,e)}),i.dataModel.relationshipTypes?.forEach(e=>{e.name&&this._graphTypeLookup.set(e.name,e)});let a=this.linkChart?.linkChartProperties;a?.originIdOf(`entitiesUrl`)===6&&(this.membershipModified=!1,W([a.entitiesUrl??``,a.relationshipsUrl??``],this.linkChart?.portalItem?.itemUrl??``).then(e=>{this.linkChart?.linkChartProperties?.setCreationDatesForResources?.(e)},()=>{}),this._originalInclusionList=await t.fetchAndConvertSerializedLinkChart({entitiesUrl:a?.entitiesUrl,relationshipsUrl:a?.relationshipsUrl},{signal:e?.signal}),this._alignLayersDataModelAndInclusionDefinition(i.dataModel),this.initializationLinkChartConfig={layoutSettings:a?.layoutSettings??void 0,layoutMode:F(a.layoutType)}),this._initializeLayerProperties({knowledgeGraph:i,inclusionModeDefinition:this._originalInclusionList}),this.dataManager.inclusionModeDefinition?.namedTypeDefinitions?.size||(this.dataManager.inclusionModeDefinition={generateAllSublayers:!1,namedTypeDefinitions:new Map},this.dataManager.knowledgeGraph.dataModel.entityTypes?.forEach(e=>{e.name&&this.dataManager.inclusionModeDefinition?.namedTypeDefinitions.set(e.name,{useAllData:!0})}),this.dataManager.knowledgeGraph.dataModel.relationshipTypes?.forEach(e=>{e.name&&this.dataManager.inclusionModeDefinition?.namedTypeDefinitions.set(e.name,{useAllData:!0})}));let{edit:s,fullEdit:l,updateItem:u}=await j(i.serviceDefinition.serviceItemId,this.url,e);if(this._set(`userHasEditingPrivileges`,s),this._set(`userHasFullEditingPrivileges`,l),this._set(`userHasUpdateItemPrivileges`,u),this.read({dateFieldsTimeReference:i.serviceDefinition.dateFieldsTimeReference},{origin:`service`}),this.dataPreloadedInLocalCache){let e=P.getInstance();for(let[t,n]of this.dataManager.inclusionModeDefinition?.namedTypeDefinitions??[])for(let r of n.members?.values()??[]){let n=e.readFromStoreById(`${t}__${r.id}`);n&&o(this.dataManager.sublayerCaches,t,()=>new Map).set(r.id,n)}await n()}else{let t=this.initializationLinkChartConfig?.layoutMode===`geographic-organic-standard`;this.addResolvingPromise(this.dataManager.refreshCacheContent(void 0,!1,t,!0).then(async()=>{c(e),await n()}))}r(null)}).catch(()=>{})})),Promise.resolve(this)}set initializationInclusionModeDefinition(e){if(this.loadStatus===`loaded`||this.loadStatus===`failed`){a.getLogger(this).error(`#initializationInclusionModeDefinition`,`initializationInclusionModeDefinition cannot be changed after the layer is loaded.`);return}this._set(`initializationInclusionModeDefinition`,e)}get linkChart(){return this.parent}get sublayerCapabilities(){return M(this.knowledgeGraph)}async addRecords(e,t){let n=[];t?.cascadeAddRelationshipEndNodes&&this.dataManager.knowledgeGraph.dataModel&&(n=await I(e,this.dataManager.knowledgeGraph));let r=e.concat(n).filter(e=>!this.sublayerIdsCache.get(e.typeName)?.has(e.id));r.length>0&&(this.membershipModified=!0),await this._handleNewRecords(r,t)}async createSublayerForNamedType(e){await this.load();let t=this._graphTypeLookup.get(e);if(!t)throw new i(`knowledge-graph:missing-type`,`The specified type does not exist in the knowledge graph.`);if(this.dataManager.sublayerCaches.has(e))throw new i(`knowledge-graph:duplicate-type`,`The specified type already exists as a sublayer.`);this.dataManager.sublayerCaches.set(e,new Map),o(this.sublayerIdsCache,e,()=>new Set);let n=this._createSublayer(t);return t.type===`entity`?this.dataManager.entityTypeNames.add(e):this.dataManager.relationshipTypeNames.add(e),this.dataManager.inclusionModeDefinition?.namedTypeDefinitions?.set(e,{useAllData:!1,members:new Map}),n.geometryType?this.layers.push(n):this.tables.push(n),await N(this,[e]),this._refreshNamedTypes(),n}async removeRecords(e,{cascadeRemoveRelationships:t=!0,recalculateLayout:n=!1,overrideMembershipCheck:r=!1}={cascadeRemoveRelationships:!0,recalculateLayout:!1,overrideMembershipCheck:!1}){let i=[];for(let t of e)(r||this.dataManager.inclusionModeDefinition?.namedTypeDefinitions?.get(t.typeName)?.useAllData===!1&&this.dataManager.inclusionModeDefinition?.namedTypeDefinitions?.get(t.typeName)?.members?.has(t.id))&&i.push(t);if(t){let e=new Set,t=[];for(let t of i)if(this.dataManager.nodeConnectionsLookup.has(t.id))for(let n of this.dataManager.nodeConnectionsLookup.get(t.id))e.add(n);for(let n of e)if(this.dataManager.memberIdTypeLookup.has(n))for(let e of this.dataManager.memberIdTypeLookup.get(n))this.dataManager.relationshipTypeNames.has(e)&&t.push({id:n,typeName:e});i=i.concat(t)}let a=this._currentLinkChartConfig.layoutSettings?.rootedLayoutSettings?.rootEntities;if(a?.length){let e=new Set(i.map(({id:e})=>e)),t=a.filter(({id:t})=>!e.has(t));if(t.length!==a.length){this._currentLinkChartConfig.layoutSettings.rootedLayoutSettings.rootEntities=t;let e=this.linkChart?.linkChartProperties;e?.layoutSettings?.rootedLayoutSettings&&(e.layoutSettings.rootedLayoutSettings.rootEntities=t)}}this.dataManager.removeFromLayer(i);for(let e of i)this.sublayerIdsCache.get(e.typeName)?.delete(e.id),this.dataManager.relationshipTypeNames.has(e.typeName)?this.relationshipLinkChartDiagramLookup.delete(e.id):this.entityLinkChartDiagramLookup.delete(e.id);let o=n?void 0:this.getCurrentNodeLocations();await this._calculateLayoutWithSublayerTimeInfo(this._currentLinkChartConfig.layoutMode,{layoutSettings:this._currentLinkChartConfig.layoutSettings,lockedEntityLocations:o}),i.length>0&&(this.membershipModified=!0);let s=[];return this.layers.forEach(e=>{s.push(e.refreshCachedQueryEngine())}),await Promise.all(s),this._refreshNamedTypes(),i}async expand(e,t){let n=[];try{let r=await this.dataManager.getConnectedRecordIds(e,t?.relationshipTypeNames,t);n=r.filter(e=>!this.sublayerIdsCache.get(e.typeName)?.has(e.id)),await this._handleNewRecords(n,t),r.length>0&&(this.membershipModified=!0),c(t?.signal)}catch(e){throw l(e)&&n.length>0&&await this.removeRecords(n,{overrideMembershipCheck:!0}),e}return{records:n}}loadLayerAssumingLocalCache(){let e=[...this.memberRelationshipTypes,...this.memberEntityTypes];!this.layers.length&&this.originIdOf(`tables`)!==0?this.layers=new n:this.originIdOf(`layers`)===0?this._createSublayers(e,this.layers,e=>!!e.geometryType):this._updateSublayers(e,this.layers),!this.tables.length&&this.originIdOf(`layers`)!==0?this.tables=new n:this.originIdOf(`tables`)===0?this._createSublayers(e,this.tables,e=>!e.geometryType):this._updateSublayers(e,this.tables),this.dataManager.inclusionModeDefinition?.namedTypeDefinitions?.forEach((e,t)=>{let n=o(this.sublayerIdsCache,t,()=>new Set);e.members?.forEach(({id:e,linkChartLocation:r})=>{if(n.add(e),r){let n=`coords`in r&&`lengths`in r?r:x(r);this.dataManager.relationshipTypeNames.has(t)?this.relationshipLinkChartDiagramLookup.set(e,n):this.entityLinkChartDiagramLookup.set(e,n)}})})}async calculateLinkChartLayout(e=`organic-standard`,t){let n=[],r=[],s=[];this.dataManager.sublayerCaches.forEach((e,t)=>{this.dataManager.entityTypeNames.has(t)?e.forEach(e=>{n.push({typeName:t,feature:e})}):this.dataManager.relationshipTypeNames.has(t)&&e.forEach(e=>{r.push({typeName:t,feature:e})})}),this.entityLinkChartDiagramLookup=new Map,this.relationshipLinkChartDiagramLookup=new Map;let l=new Map,d=new Map,f=new Map,p=new Map,m=new Uint8Array(n.length),h=new Float64Array(n.length),b=new Float64Array(n.length),D=new Float64Array(n.length),O=new Float64Array(n.length),k=new Uint32Array(r.length),A=new Uint32Array(r.length),j=new Float64Array(r.length),M=new Float64Array(r.length),N=[],P=!1,F=new g({xmin:-1e-7,ymin:-1e-7,xmax:1e-7,ymax:1e-7}),I=`organic-standard`,L=0,R=0,z,B=V.apply;switch(I=e===`geographic-organic-standard`?`organic-standard`:e,I){case`organic-standard`:z=ae.apply;break;case`organic-community`:z=ie.apply;break;case`hierarchical-bottom-to-top`:z=re.apply;break;case`radial-root-centric`:z=ne.apply;break;case`tree-left-to-right`:z=te.apply;break;default:z=ee.apply}let H=!1,U=new Set(t?.layoutSettings?.rootedLayoutSettings?.rootEntities?.map(({id:e})=>e));n.forEach(({typeName:n,feature:r})=>{if(e!==`chronological-mono-timeline`&&e!==`chronological-multi-timeline`&&t?.lockedEntityLocations?.has(r.attributes[S])){e===`geographic-organic-standard`&&this.dataManager.geographicLookup.has(n)?m[L]=2:m[L]=0;let i=t.lockedEntityLocations.get(r.attributes[S]);h[L]=i.x,b[L]=i.y}else if(e===`geographic-organic-standard`&&this.dataManager.geographicLookup.has(n)){m[L]=2;let e=null,t=r.attributes[this.dataManager.geographicLookup.get(n).name];switch(this.dataManager.geographicLookup.get(n)?.geometryType){case`esriGeometryPoint`:h[L]=t?.x,b[L]=t?.y;break;case`esriGeometryPolygon`:{let n=t?y(t):null;e=n?_.fromJSON(n):null,e?.x!=null&&e?.y!=null?(h[L]=e.x,b[L]=e.y):m[L]=1;break}case`esriGeometryPolyline`:e=t?.extent?.center,e?.x!=null&&e?.y!=null?(h[L]=e.x,b[L]=e.y):m[L]=1;break;case`esriGeometryMultipoint`:e=t?.extent?.center,e?.x!=null&&e?.y!=null?(h[L]=e.x,b[L]=e.y):m[L]=1;break;default:m[L]=1}(h[L]==null||b[L]==null||Number.isNaN(h[L])||Number.isNaN(b[L]))&&(m[L]=1,h[L]=0,b[L]=0)}else if(e===`chronological-mono-timeline`||e===`chronological-multi-timeline`){!H&&t?.lockedEntityLocations?.has(r.attributes[S])&&(H=!0);let e=t?.timeInfoByTypeName?.get(n),i=e?.startField,a=i&&e?.startField?r.attributes[i]:null;D[L]=a?new Date(a).getTime():NaN;let o=e?.endField,s=o&&e?.endField?r.attributes[o]:null;O[L]=s?new Date(s).getTime():NaN,h[L]=0,b[L]=0,m[L]=1}else m[L]=1,h[L]=0,b[L]=0;U.has(r.attributes[S])&&(m[L]|=4),p.set(r.attributes[S],L),N[L]={feature:r,typeName:n},L++}),H&&a.getLogger(this).warn(`Locked node locations are not supported for chronological layout at this time. Requested node locations were ignored`);let W=!1,G=new Map;r.forEach(n=>{let r=n.feature.attributes[C],i=n.feature.attributes[w],a=p.get(r),o=p.get(i),c=t?.timeInfoByTypeName?.get(n.typeName),l=t?.timeInfoByTypeName?c?.startField:null,u=l?n.feature.attributes[l]:null,d=c?.endField,f=d?n.feature.attributes[d]:null;if(a!==void 0&&o!==void 0){let t=r+`-`+i;(e===`chronological-mono-timeline`||e===`chronological-multi-timeline`)&&(t=t+`-`+u+`-`+f);let c=G.get(t);c?.has(n.typeName)||(k[R]=a,A[R]=o,(e===`chronological-mono-timeline`||e===`chronological-multi-timeline`)&&(j[R]=u?new Date(u).getTime():NaN,M[R]=f?new Date(f).getTime():NaN),c===void 0?G.set(t,new Map([[n.typeName,R]])):c.set(n.typeName,R),R++),s.push(n)}else W=!0,this.relationshipLinkChartDiagramLookup.set(r,null)}),W&&a.getLogger(this).warn(`A relationship is a member of this layer that has either origin or destination entity nodes that are not members. The diagram geometry will be set to null`);let K=this._validateOrganicLayoutSettings(e,t?.layoutSettings?.organicLayoutSettings),q=this._convertValidatedOrganicSettingsToCalculationSettings(K);await oe();let J=1,Y=null;if(e===`chronological-mono-timeline`||e===`chronological-multi-timeline`){let n;({status:J,links:Y,graphics:n}=B(()=>t?.signal?.aborted??!1,m,h,b,D,O,k.subarray(0,R),A.subarray(0,R),j.subarray(0,R),M.subarray(0,R),e===`chronological-multi-timeline`,t?.layoutSettings?.chronologicalLayoutSettings)),J===0&&(this.chronologicalAuxiliaryGraphics=n)}else({status:J,links:Y}=z(()=>t?.signal?.aborted??!1,m,h,b,k.subarray(0,R),A.subarray(0,R),q.computationBudgetTime,q.idealEdgeLengthMultiplier,q.repulsionRadiusMultiplier));if(c(t?.signal),J===1)throw new i(`knowledge-graph:layout-failed`,`Attempting to arrange the records in the specified layout failed`);if(J===2)throw u();for(let e=0;e<N.length;e++){if(b[e]>84.9999?b[e]=84.9999:b[e]<-84.9999&&(b[e]=-84.9999),h[e]>179.9999?h[e]=179.9999:h[e]<-179.9999&&(h[e]=-179.9999),N[e].feature.attributes[T]=new _(h[e],b[e]),l.has(N[e].typeName))l.get(N[e].typeName)?.set(N[e].feature.attributes[S],N[e].feature);else{let t=new Map;t.set(N[e].feature.attributes[S],N[e].feature),l.set(N[e].typeName,t)}f.set(N[e].feature.attributes[S],N[e].feature);let t=x(N[e].feature.attributes[T]);this.entityLinkChartDiagramLookup.set(N[e].feature.attributes[S],N[e].feature.attributes[T]?t:null);let n=o(this.dataManager.inclusionModeDefinition.namedTypeDefinitions,N[e].typeName,()=>({useAllData:!1,members:new Map})),r=o(n.members,N[e].feature.attributes[S],()=>({id:N[e].feature.attributes[S],linkChartLocation:void 0}));r.linkChartLocation=N[e].feature.attributes[T];let{x:i,y:a}=N[e].feature.attributes[T];if(P)F.xmin=Math.min(F.xmin,i),F.xmax=Math.max(F.xmax,i),F.ymin=Math.min(F.ymin,a),F.ymax=Math.max(F.ymax,a);else{let e=1e-7;F.xmin=i-e,F.xmax=i+e,F.ymin=a-e,F.ymax=a+e,P=!0}}if(this.linkChartExtent.xmin=F.xmin,this.linkChartExtent.xmax=F.xmax,this.linkChartExtent.ymin=F.ymin,this.linkChartExtent.ymax=F.ymax,!Y)throw new i(`knowledge-graph:layout-failed`,`Attempting to retrieve link geometry from diagram engine failed`);let X=new Map,Z=new Map,Q=new Map,$=new Set;for(let n=0;n<s.length;n++){let r=[],i=s[n],c=i.feature.attributes[C],l=i.feature.attributes[w],u=c+`-`+l;if(e===`chronological-mono-timeline`||e===`chronological-multi-timeline`){let e=t?.timeInfoByTypeName?.get(i.typeName),n=t?.timeInfoByTypeName?e?.startField:null,r=n?i.feature.attributes[n]:null,a=e?.endField,o=a?i.feature.attributes[a]:null;u+=`-`+r+`-`+o}let m=G.get(u).get(i.typeName),h=m===0?0:Y?.vertexEndIndex[m-1];if(!$.has(m)){if($.add(m),Y.types[m]===2){let e=[Y.vertices[h*2],Y.vertices[h*2+1]],t=[Y.vertices[(h+1)*2],Y.vertices[(h+1)*2+1]],n=[.5*(e[0]+t[0]),.5*(e[1]+t[1])],i=[n[0]-e[0],n[1]-e[1]],a=[n[0]+i[1],n[1]-i[0]],o=[n[0]-i[1],n[1]+i[0]];r.push(e),r.push(a),r.push(t),r.push(o),r.push(e)}else if(Y.types[m]===0)for(let e=h;e<Y.vertexEndIndex[m];e++)r.push([Y.vertices[e*2],Y.vertices[e*2+1]]);else{a.getLogger(this).warn(`A relationship generated an unsupported link geometry type. It will not be rendered`);continue}if(e!==`chronological-mono-timeline`&&e!==`chronological-multi-timeline`){let e=N[p.get(c)]?.feature.attributes[T],t=N[p.get(l)]?.feature.attributes[T];(r[0][0]!==e.x||r[0][1]!==e.y)&&(r[0]=[e.x,e.y]),(r[r.length-1][0]!==t.x||r[r.length-1][1]!==t.y)&&(r[r.length-1]=[t.x,t.y])}for(let e=1;e<r.length-1;e++)r[e][1]>85.5?r[e][1]=85.5:r[e][1]<-85.5&&(r[e][1]=-85.5),r[e][0]>179.9999?r[e][0]=179.9999:r[e][0]<-179.9999&&(r[e][0]=-179.9999);X.has(u)?X.get(u).push(r):X.set(u,[r])}let g=X.get(u);Z.has(u)||(Z.set(u,new Map),Q.set(u,new Map));let _=Z.get(u),y=Q.get(u);_.has(i.typeName)||(_.set(i.typeName,g.shift()),y.set(i.typeName,0));let b=_.get(i.typeName);y.set(i.typeName,y.get(i.typeName)+1);let E=new v({paths:[b]});if(i.feature.attributes[T]=E,d.has(i.typeName))d.get(i.typeName)?.set(i.feature.attributes[S],i.feature);else{let e=new Map;e.set(i.feature.attributes[S],i.feature),d.set(i.typeName,e)}f.set(i.feature.attributes[S],i.feature);let D=x(i.feature.attributes[T]);this.relationshipLinkChartDiagramLookup.set(i.feature.attributes[S],i.feature.attributes[T]?D:null);let O=o(this.dataManager.inclusionModeDefinition.namedTypeDefinitions,i.typeName,()=>({useAllData:!1,members:new Map})),k=o(O.members,i.feature.attributes[S],()=>({id:i.feature.attributes[S],linkChartLocation:void 0}));k.linkChartLocation=D}for(let e of s)e.feature.attributes[E]=Q.get(e.feature.attributes[C]+`-`+e.feature.attributes[w])?.get(e.typeName)??null;return this._currentLinkChartConfig={layoutMode:e,layoutSettings:t?.layoutSettings?.clone()},{nodes:l,links:d,idMap:f}}async applyNewLinkChartLayout(e=`organic-standard`,t){let{lockedNodeLocations:n,lockedEntityLocations:i,rootEntityIds:o,...s}=t??{};!i&&n?(r(a.getLogger(this),`lockedNodeLocations is deprecated in 5.0. Use lockedEntityLocations instead.`,{replacement:`Use lockedEntityLocations instead.`,version:`5.0`}),i=n):i&&n&&r(a.getLogger(this),`Both lockedNodeLocations (deprecated in 5.0) and lockedEntityLocations are defined. Use lockedEntityLocations only instead.`,{replacement:`Use lockedEntityLocations instead.`,version:`5.0`});let c=s.layoutSettings?.rootedLayoutSettings?.rootEntities;if(!c&&o){r(a.getLogger(this),`rootEntityIds is deprecated in 5.1. Use layoutSettings.rootedLayoutSettings.rootEntities instead.`,{replacement:`Use layoutSettings.rootedLayoutSettings.rootEntities instead.`,version:`5.1`});let e=[];for(let t of o){let n=this.dataManager.memberIdTypeLookup.get(t),r=Array.from(n??[]).find(e=>this.dataManager.entityTypeNames.has(e));r&&e.push({id:t,typeName:r})}s.layoutSettings=s.layoutSettings??new H,s.layoutSettings.rootedLayoutSettings=s.layoutSettings.rootedLayoutSettings??new U,s.layoutSettings.rootedLayoutSettings.rootEntities=e}else c&&o&&r(a.getLogger(this),`Both rootEntityIds (deprecated in 5.1) and layoutSettings.rootedLayoutSettings.rootEntities are defined. Use layoutSettings.rootedLayoutSettings.rootEntities only instead.`,{replacement:`Use layoutSettings.rootedLayoutSettings.rootEntities instead.`,version:`5.1`});let l=[];await this._calculateLayoutWithSublayerTimeInfo(e,{...s,lockedEntityLocations:i}),this.layers.forEach(e=>{l.push(e.refreshCachedQueryEngine())}),this.membershipModified=!0,await Promise.all(l),this._refreshNamedTypes()}getCurrentNodeLocations(){let e=new Map;for(let[t,n]of this.dataManager.inclusionModeDefinition?.namedTypeDefinitions.entries()??[])this.dataManager.relationshipTypeNames.has(t)||n?.members?.forEach(t=>{let n=t.linkChartLocation,r,i=t.id;n&&(r=`x`in n?{x:n.x,y:n.y}:{x:n.coords[0],y:n.coords[1]},e.set(i,new _({x:r.x,y:r.y})))});return e}async refreshLinkChartCache(e){await this.dataManager.refreshCacheContent(e);let t=[];this.layers.forEach(e=>{t.push(e.refreshCachedQueryEngine())}),await Promise.all(t),this._refreshNamedTypes()}async connectBetweenEntities(e,t){if(!e.length)return{records:[]};let n=[];try{let r=[];for(let e of this.dataManager.relationshipTypeNames){let t=this.sublayerIdsCache.get(e);t&&(r=r.concat(Array.from(t.keys())))}n=await this.dataManager.getRelationshipsBetweenNodes(e,r,t),await this._handleNewRecords(n,t),c(t)}catch(e){throw l(e)&&this.removeRecords(n),e}return{records:n}}async connectFromEntities(e,t){if(!e.length)return{records:[]};let n=[];try{let r=[];for(let e of this.dataManager.relationshipTypeNames){let t=this.sublayerIdsCache.get(e);t&&(r=r.concat(Array.from(t.keys())))}let i=[];for(let e of this.dataManager.entityTypeNames){let t=this.sublayerIdsCache.get(e);t&&(i=i.concat(Array.from(t)))}n=await this.dataManager.getRelationshipsFromNodes(e,i,r,t),await this._handleNewRecords(n,t),n.length>0&&(this.membershipModified=!0),c(t)}catch(e){throw l(e)&&this.removeRecords(n),e}return{records:n}}getCurrentLayout(){return this._currentLinkChartConfig.layoutMode}async _calculateLayoutWithSublayerTimeInfo(e=`organic-standard`,t){let n=new Map;this.layers.forEach(e=>{n.set(e.objectType.name,e.timeInfo)}),await this.calculateLinkChartLayout(e,{timeInfoByTypeName:n,...t}),this.linkChart?.handleChronologicalOverlay()}async _handleNewRecords(e,t){let n=new Set,r=[],i=this.layers.concat(this.tables);for(let t of e)this._graphTypeLookup.has(t.typeName)&&(i.some(e=>e.objectType.name===t.typeName)===!1&&(this.dataManager.sublayerCaches.set(t.typeName,new Map),n.add(t.typeName)),o(this.sublayerIdsCache,t.typeName,()=>new Set).add(t.id),r.push(t));this.dataManager.addToLayer(r);for(let e of n){let t=this._graphTypeLookup.get(e);if(t){let n=this._createSublayer(t);t.type===`entity`?this.dataManager.entityTypeNames.add(e):this.dataManager.relationshipTypeNames.add(e),n.geometryType?this.layers.push(n):this.tables.push(n)}}await N(this,Array.from(n),t),await this.dataManager.refreshCacheContent(e.map(e=>e.id),void 0,void 0,void 0,t);let a={layoutSettings:this._currentLinkChartConfig.layoutSettings,lockedEntityLocations:new Map};for(let[e,t]of this.entityLinkChartDiagramLookup.entries())t&&a.lockedEntityLocations.set(e,new _(t.coords[0],t.coords[1]));await this.applyNewLinkChartLayout(this._currentLinkChartConfig.layoutMode,a)}_createSublayers(e,t,n){e.forEach(e=>{let r=this._createSublayer(e);n(r)&&t.push(r),this._updateSublayerCaches(e)})}_updateSublayers(e,t){t.forEach(t=>{t.parentCompositeLayer=this;let n=e.find(e=>e.type===t.graphType&&e.name===t.graphTypeName);n&&(t.objectType=n,t.read({title:n.name},{origin:`service`}),this._updateSublayerCaches(n))})}_updateSublayerCaches({name:e}){if(!e)return;let t=this.dataManager.sublayerCaches;t.has(e)||t.set(e,new Map)}_layersLoadedFromAuthoritativeItem(){let e=this.originIdOf(`layers`);return e>=3&&e<7}async _initializeDiagram(){this.initializationLinkChartConfig?this.initializationLinkChartConfig.doNotRecalculateLayout?(this.dataManager.inclusionModeDefinition?.namedTypeDefinitions?.forEach((e,t)=>{e?.members?.forEach(e=>{let n=e.linkChartLocation,r,i=e.id;if(!n)return;r=`x`in n?{x:n.x,y:n.y}:{x:n.coords[0],y:n.coords[1]};let a=x(r);this.dataManager.relationshipTypeNames.has(t)?this.relationshipLinkChartDiagramLookup.set(i,a):this.entityLinkChartDiagramLookup.set(i,a),this.linkChartExtent.xmin>r.x&&(this.linkChartExtent.xmin=r.x),this.linkChartExtent.xmax<r.x&&(this.linkChartExtent.xmax=r.x),this.linkChartExtent.ymin>r.y&&(this.linkChartExtent.ymin=r.y),this.linkChartExtent.ymax<r.y&&(this.linkChartExtent.ymax=r.y)})}),this.memberRelationshipTypes.forEach(e=>{e.name&&this.dataManager.sublayerCaches.get(e.name)?.forEach(e=>{let t=this.relationshipLinkChartDiagramLookup.get(e.attributes[C]),n=this.relationshipLinkChartDiagramLookup.get(e.attributes[w]);if(t&&n){let r=x(new v({paths:[[[t.coords[0],t.coords[1]],[n.coords[0],n.coords[1]]]]}));this.relationshipLinkChartDiagramLookup.set(e.attributes[S],r)}else this.relationshipLinkChartDiagramLookup.set(e.attributes[S],null)})})):await this._calculateLayoutWithSublayerTimeInfo(this.initializationLinkChartConfig.layoutMode,{lockedEntityLocations:this.getCurrentNodeLocations(),...this.initializationLinkChartConfig}):await this._calculateLayoutWithSublayerTimeInfo(`organic-standard`,{lockedEntityLocations:this.getCurrentNodeLocations()})}_refreshNamedTypes(){for(let e of this.layers)e.emit(`refresh`,{dataChanged:!0});for(let e of this.tables)e.emit(`refresh`,{dataChanged:!0})}_validateOrganicLayoutSettings(e,t){let n=e=>typeof e==`number`&&!isNaN(e),r=e=>n(e)&&e>=1,i=e=>n(e)&&e>=1,o=e=>Object.values(D).includes(e),s=e=>n(e)&&e>=0,c=new Set([`organic-standard`,`organic-community`,`geographic-organic-standard`,`chronological-multi-timeline`,`chronological-mono-timeline`]),l={};if(!c.has(e)||!t)return l;let{computationBudgetTime:u,autoRepulsionRadius:d,repulsionRadiusMultiplier:f,absoluteIdealEdgeLength:p,multiplicativeIdealEdgeLength:m,idealEdgeLengthType:h}=t;return i(u)?l.computationBudgetTime=u:u&&a.getLogger(this).warn(`Invalid layout computationBudgetTime setting, will revert to default setting`),l.autoRepulsionRadius=d,!d&&r(f)?l.repulsionRadiusMultiplier=f:d||(l.autoRepulsionRadius=!0,a.getLogger(this).warn(`Invalid layout repulsionRadiusMultiplier setting, will revert to default setting`)),e===`geographic-organic-standard`&&(o(h)?l.idealEdgeLengthType=h:h!==void 0&&a.getLogger(this).warn(`Invalid layout idealEdgeLengthType setting, will revert to "multiplier" setting`),h===`absolute-value`&&s(p)?l.absoluteIdealEdgeLength=p:h===`absolute-value`&&p!==void 0?a.getLogger(this).warn(`Invalid layout idealEdgeLength setting, will revert to default setting`):h===`multiplier`&&s(m)?l.multiplicativeIdealEdgeLength=m:h===`multiplier`&&m!==void 0&&a.getLogger(this).warn(`Invalid layout idealEdgeLength setting, will revert to default setting`)),l}_convertValidatedOrganicSettingsToCalculationSettings(e){let t=e.idealEdgeLengthType===D.ABSOLUTE?e.absoluteIdealEdgeLength:e.multiplicativeIdealEdgeLength;return e.idealEdgeLengthType===D.ABSOLUTE&&(t=t===void 0?-1:-1*t),{computationBudgetTime:e.computationBudgetTime??void 0,repulsionRadiusMultiplier:e.repulsionRadiusMultiplier&&!e.autoRepulsionRadius?e.repulsionRadiusMultiplier:void 0,idealEdgeLengthMultiplier:t}}_createSublayer(e){return new k({objectType:e,parentCompositeLayer:this,graphType:e.type})}_handleSublayersChange(e,t){if(t&&(t.forEach(e=>{e.parent=null}),this.removeHandles(`sublayers-owner`)),e){let t=[];e.forEach(e=>{e.parent=this,t.push(this._createVisibleRefreshHandle(e))}),this.addHandles([...t,e.on(`after-add`,({item:e})=>{e.parent=this,this.addHandles(this._createVisibleRefreshHandle(e),`sublayers-owner`)}),e.on(`after-remove`,({item:e})=>{e.parent=null})],`sublayers-owner`)}}_createVisibleRefreshHandle(e){return d(()=>e.visible,(t,n)=>{t===!0&&n===!1&&e.emit(`refresh`,{dataChanged:!0})})}_alignLayersDataModelAndInclusionDefinition(e){let t=new Set((e.entityTypes??[]).map(e=>e.name).concat((e.relationshipTypes??[]).map(e=>e.name))),r=new Set((e.entityTypes??[]).map(e=>e.name)),i=new Set((e.relationshipTypes??[]).map(e=>e.name));if(this.layers){for(let e of this.layers)!e.graphType&&t.has(e.graphTypeName)&&(e.graphType=r.has(e.graphTypeName)?`entity`:`relationship`);let e=this.layers.filter(e=>t.has(e.graphTypeName)&&(e.graphType===`entity`?r.has(e.graphTypeName):i.has(e.graphTypeName)));this.setAtOrigin(`layers`,e,h(this.originIdOf(`layers`)))}else this.layers=new n;if(this.layers&&this._originalInclusionList){let e=new Set(this._originalInclusionList.namedTypeDefinitions.keys()),t=this.tables?.map(e=>e.graphTypeName)??[],n=this.layers.map(e=>e.graphTypeName).concat(t);for(let t of n)e.has(t)||this._originalInclusionList.namedTypeDefinitions.set(t,{useAllData:!1,members:new Map});let r=[];for(let e of this._originalInclusionList.namedTypeDefinitions.keys())n.includes(e)||(a.getLogger(this).warn(`A named type, ${e}, was in the serialized feature collection but did not have a sublayer config in the item, so will be removed`),r.push(e));for(let e of r)this._originalInclusionList.namedTypeDefinitions.delete(e)}}};e([p(B)],q.prototype,`url`,void 0),e([p()],q.prototype,`dataPreloadedInLocalCache`,void 0),e([p()],q.prototype,`initializationLinkChartConfig`,void 0),e([p()],q.prototype,`membershipModified`,void 0),e([p()],q.prototype,`dataManager`,void 0),e([p()],q.prototype,`initializationInclusionModeDefinition`,null),e([p()],q.prototype,`knowledgeGraph`,void 0),e([p({type:n.ofType(k),json:{write:{ignoreOrigin:!0}}})],q.prototype,`layers`,void 0),e([p({readOnly:!0})],q.prototype,`linkChart`,null),e([p()],q.prototype,`entityLinkChartDiagramLookup`,void 0),e([p()],q.prototype,`relationshipLinkChartDiagramLookup`,void 0),e([p()],q.prototype,`linkChartExtent`,void 0),e([p()],q.prototype,`memberEntityTypes`,void 0),e([p()],q.prototype,`memberRelationshipTypes`,void 0),e([p({type:[`LinkChartLayer`]})],q.prototype,`operationalLayerType`,void 0),e([p()],q.prototype,`sublayerCapabilities`,null),e([p()],q.prototype,`sublayerIdsCache`,void 0),e([p({type:n.ofType(k),json:{write:{ignoreOrigin:!0}}})],q.prototype,`tables`,void 0),e([p({json:{read:!1}})],q.prototype,`type`,void 0),e([p({readOnly:!0})],q.prototype,`userHasEditingPrivileges`,void 0),e([p({readOnly:!0})],q.prototype,`userHasFullEditingPrivileges`,void 0),e([p({readOnly:!0})],q.prototype,`userHasUpdateItemPrivileges`,void 0),e([p({json:{read:!1}})],q.prototype,`chronologicalAuxiliaryGraphics`,void 0),e([p(K(`dateFieldsTimeReference`))],q.prototype,`dateFieldsTimeZone`,void 0),q=e([m(`esri.layers.LinkChartLayer`)],q);const J=q;export{J as default};
2
+ import{__decorate as e}from"tslib";import{serializationUtilsModuleWrapper as t}from"../applications/KnowledgeStudio/resourceSerializationUtils.js";import n from"../core/Collection.js";import{deprecated as r}from"../core/deprecate.js";import i from"../core/Error.js";import a from"../core/Logger.js";import{getOrCreateMapValue as o}from"../core/MapUtils.js";import{MultiOriginJSONSupportMixin as s}from"../core/MultiOriginJSONSupport.js";import{throwIfAborted as c,isAbortError as l,createAbortError as u}from"../core/promiseUtils.js";import{watch as d,sync as f}from"../core/reactiveUtils.js";import{property as p,subclass as m}from"../core/accessorSupport/decorators.js";import{idToName as h}from"../core/accessorSupport/PropertyOrigin.js";import g from"../geometry/Extent.js";import _ from"../geometry/Point.js";import v from"../geometry/Polyline.js";import{polygonCentroidPoint as y}from"../geometry/support/centroid.js";import b from"./Layer.js";import{convertFromGeometry as x}from"./graphics/featureConversionUtils.js";import{systemOidFieldName as S,systemOriginIdFieldName as C,systemDestinationIdFieldName as w,systemLayoutGeometryFieldName as T,systemAggregationCountFieldName as E}from"./knowledgeGraph/constants.js";import{IdealEdgeLengthTypeOptions as D}from"./knowledgeGraph/IdealEdgeLengthTypeOptions.js";import{KnowledgeGraphLayerDataManager as O}from"./knowledgeGraph/KnowledgeGraphLayerDataManager.js";import k from"./knowledgeGraph/KnowledgeGraphSublayer.js";import{getTitleFromServerUrl as A,getUserKGSPrivileges as j,createCapabilitiesFromKnowledgeGraph as M,initializeLayersFromClientData as N}from"./knowledgeGraph/layerUtils.js";import P from"./knowledgeGraph/SessionMemoryStorage.js";import{convertLayoutTypeToWebSupportedFormat as F,getRelationshipEndNodeIds as I}from"./knowledgeGraph/supportUtils.js";import{BlendLayer as L}from"./mixins/BlendLayer.js";import{OperationalLayer as R}from"./mixins/OperationalLayer.js";import{ScaleRangeLayer as z}from"./mixins/ScaleRangeLayer.js";import{url as B}from"./support/commonProperties.js";import{LCChronologicalLayout as V,LCSimpleLayout as ee,LCSmartTreeLayout as te,LCRadialTreeLayout as ne,LCHierarchicalLayout as re,LCCommunityLayout as ie,LCForceDirectedLayout as ae,load as oe}from"../libs/linkchartlayout/LinkChartLayout.js";import H from"../linkChart/LayoutSettings.js";import U from"../linkChart/RootedLayoutSettings.js";import{getCreationDatesForResources as W}from"../linkChart/utils.js";import{fetchKnowledgeGraph as G}from"../rest/knowledgeGraphService.js";import{timeZoneProperty as K}from"../time/timeZoneUtils.js";let q=class extends R(L(z(s(b)))){constructor(e){if(super(e),this.url=null,this.dataPreloadedInLocalCache=!1,this.initializationLinkChartConfig=null,this.membershipModified=!0,this._currentLinkChartConfig={layoutMode:`organic-standard`},this._graphTypeLookup=new Map,this.dataManager=null,this.knowledgeGraph=null,this.layers=new(n.ofType(k)),this.entityLinkChartDiagramLookup=new Map,this.relationshipLinkChartDiagramLookup=new Map,this.linkChartExtent=new g({xmin:-1e-7,ymin:-1e-7,xmax:1e-7,ymax:1e-7}),this.memberEntityTypes=null,this.memberRelationshipTypes=null,this.operationalLayerType=`LinkChartLayer`,this.sublayerIdsCache=new Map,this.tables=new(n.ofType(k)),this.type=`link-chart`,this.userHasEditingPrivileges=!0,this.userHasFullEditingPrivileges=!1,this.userHasUpdateItemPrivileges=!1,this.chronologicalAuxiliaryGraphics=null,this._originalInclusionList=e?.initializationInclusionModeDefinition,e?.dataPreloadedInLocalCache&&!e?.initializationInclusionModeDefinition)throw new i(`knowledge-graph:linkchart-layer-constructor`,`If creating a link chart composite layer and configured that data is already loaded in the cache, you must specify an inclusion list so the Composite Layer knows what records belong to it`);this.addHandles(d(()=>this.layers.concat(this.tables),(e,t)=>this._handleSublayersChange(e,t),f))}normalizeCtorArgs(e){if(!e)return{};let{url:t,dataPreloadedInLocalCache:n,initializationLinkChartConfig:r}=e,{title:i}=e;return!i&&e?.url&&(i=A(e.url)),{url:t,title:i,dataPreloadedInLocalCache:n,initializationLinkChartConfig:r}}_initializeLayerProperties(e){let t=new Set,n=[],r=[];if(e.inclusionModeDefinition&&(!e.inclusionModeDefinition.namedTypeDefinitions||e.inclusionModeDefinition.namedTypeDefinitions.size<1))throw new i(`knowledge-graph:composite-layer-constructor`,`If an explicit inclusion definition is defined, at least one namedTypeDefinition must also be defined`);e.inclusionModeDefinition?.generateAllSublayers?(n=e.knowledgeGraph.dataModel.entityTypes??[],r=e.knowledgeGraph.dataModel.relationshipTypes??[]):e.inclusionModeDefinition?.namedTypeDefinitions&&e.inclusionModeDefinition?.namedTypeDefinitions.size>0?e.inclusionModeDefinition?.namedTypeDefinitions.forEach((i,o)=>{let s=this._graphTypeLookup.get(o);if(!s){a.getLogger(this).warn(`A named type, ${o}, was in the inclusion list that wasn't in the data model and will be removed`),e.inclusionModeDefinition?.namedTypeDefinitions.delete(o);return}s.type===`relationship`?t.has(o)||(t.add(o),r.push(s)):s.type===`entity`?t.has(o)||(t.add(o),n.push(s)):(a.getLogger(this).warn(`A named type, ${o}, was in the inclusion list that wasn't properly modeled and will be removed`),e.inclusionModeDefinition?.namedTypeDefinitions.delete(o))}):(n=e.knowledgeGraph.dataModel.entityTypes??[],r=e.knowledgeGraph.dataModel.relationshipTypes??[]);let o=new O({knowledgeGraph:e.knowledgeGraph,inclusionModeDefinition:e.inclusionModeDefinition});this.knowledgeGraph=e.knowledgeGraph,this.memberEntityTypes=n,this.memberRelationshipTypes=r,this.dataManager=o}load(e){let n=async()=>{let e=[],t=[];this.loadLayerAssumingLocalCache(),this._layersLoadedFromAuthoritativeItem()||await N(this),this.dataManager.inclusionModeDefinition&&(this.dataManager.inclusionModeDefinition.generateAllSublayers=!1),this.dataManager.inclusionModeDefinition?.namedTypeDefinitions.forEach(e=>{e.useAllData=!1}),await this._initializeDiagram(),this.layers.forEach(n=>{t.push(n.refreshCachedQueryEngine()),e.push(new Promise(e=>{n.on(`layerview-create`,()=>{e(null)})}))}),this.tables.forEach(e=>{t.push(e.refreshCachedQueryEngine())}),await Promise.all(t)};return this.addResolvingPromise(new Promise(r=>{G(this.url).then(async i=>{c(e),i.dataModel.entityTypes?.forEach(e=>{e.name&&this._graphTypeLookup.set(e.name,e)}),i.dataModel.relationshipTypes?.forEach(e=>{e.name&&this._graphTypeLookup.set(e.name,e)});let a=this.linkChart?.linkChartProperties;a?.originIdOf(`entitiesUrl`)===6&&(this.membershipModified=!1,W([a.entitiesUrl??``,a.relationshipsUrl??``],this.linkChart?.portalItem?.itemUrl??``).then(e=>{this.linkChart?.linkChartProperties?.setCreationDatesForResources?.(e)},()=>{}),this._originalInclusionList=await t.fetchAndConvertSerializedLinkChart({entitiesUrl:a?.entitiesUrl,relationshipsUrl:a?.relationshipsUrl},{signal:e?.signal}),this._alignLayersDataModelAndInclusionDefinition(i.dataModel),this.initializationLinkChartConfig={layoutSettings:a?.layoutSettings??void 0,layoutMode:F(a.layoutType)}),this._initializeLayerProperties({knowledgeGraph:i,inclusionModeDefinition:this._originalInclusionList}),this.dataManager.inclusionModeDefinition?.namedTypeDefinitions?.size||(this.dataManager.inclusionModeDefinition={generateAllSublayers:!1,namedTypeDefinitions:new Map},this.dataManager.knowledgeGraph.dataModel.entityTypes?.forEach(e=>{e.name&&this.dataManager.inclusionModeDefinition?.namedTypeDefinitions.set(e.name,{useAllData:!0})}),this.dataManager.knowledgeGraph.dataModel.relationshipTypes?.forEach(e=>{e.name&&this.dataManager.inclusionModeDefinition?.namedTypeDefinitions.set(e.name,{useAllData:!0})}));let{edit:s,fullEdit:l,updateItem:u}=await j(i.serviceDefinition.serviceItemId,this.url,e);if(c(e),this._set(`userHasEditingPrivileges`,s),this._set(`userHasFullEditingPrivileges`,l),this._set(`userHasUpdateItemPrivileges`,u),this.read({dateFieldsTimeReference:i.serviceDefinition.dateFieldsTimeReference},{origin:`service`}),this.dataPreloadedInLocalCache){let e=P.getInstance();for(let[t,n]of this.dataManager.inclusionModeDefinition?.namedTypeDefinitions??[])for(let r of n.members?.values()??[]){let n=e.readFromStoreById(`${t}__${r.id}`);n&&o(this.dataManager.sublayerCaches,t,()=>new Map).set(r.id,n)}await n()}else{let t=this.initializationLinkChartConfig?.layoutMode===`geographic-organic-standard`;this.addResolvingPromise(this.dataManager.refreshCacheContent(void 0,!1,t,!0).then(async()=>{c(e),await n()}))}r(null)}).catch(()=>{})})),Promise.resolve(this)}set initializationInclusionModeDefinition(e){if(this.loadStatus===`loaded`||this.loadStatus===`failed`){a.getLogger(this).error(`#initializationInclusionModeDefinition`,`initializationInclusionModeDefinition cannot be changed after the layer is loaded.`);return}this._set(`initializationInclusionModeDefinition`,e)}get linkChart(){return this.parent}get sublayerCapabilities(){return M(this.knowledgeGraph)}async addRecords(e,t){let n=[];t?.cascadeAddRelationshipEndNodes&&this.dataManager.knowledgeGraph.dataModel&&(n=await I(e,this.dataManager.knowledgeGraph));let r=e.concat(n).filter(e=>!this.sublayerIdsCache.get(e.typeName)?.has(e.id));r.length>0&&(this.membershipModified=!0),await this._handleNewRecords(r,t)}async createSublayerForNamedType(e){await this.load();let t=this._graphTypeLookup.get(e);if(!t)throw new i(`knowledge-graph:missing-type`,`The specified type does not exist in the knowledge graph.`);if(this.dataManager.sublayerCaches.has(e))throw new i(`knowledge-graph:duplicate-type`,`The specified type already exists as a sublayer.`);this.dataManager.sublayerCaches.set(e,new Map),o(this.sublayerIdsCache,e,()=>new Set);let n=this._createSublayer(t);return t.type===`entity`?this.dataManager.entityTypeNames.add(e):this.dataManager.relationshipTypeNames.add(e),this.dataManager.inclusionModeDefinition?.namedTypeDefinitions?.set(e,{useAllData:!1,members:new Map}),n.geometryType?this.layers.push(n):this.tables.push(n),await N(this,[e]),this._refreshNamedTypes(),n}async removeRecords(e,{cascadeRemoveRelationships:t=!0,recalculateLayout:n=!1,overrideMembershipCheck:r=!1}={cascadeRemoveRelationships:!0,recalculateLayout:!1,overrideMembershipCheck:!1}){let i=[];for(let t of e)(r||this.dataManager.inclusionModeDefinition?.namedTypeDefinitions?.get(t.typeName)?.useAllData===!1&&this.dataManager.inclusionModeDefinition?.namedTypeDefinitions?.get(t.typeName)?.members?.has(t.id))&&i.push(t);if(t){let e=new Set,t=[];for(let t of i)if(this.dataManager.nodeConnectionsLookup.has(t.id))for(let n of this.dataManager.nodeConnectionsLookup.get(t.id))e.add(n);for(let n of e)if(this.dataManager.memberIdTypeLookup.has(n))for(let e of this.dataManager.memberIdTypeLookup.get(n))this.dataManager.relationshipTypeNames.has(e)&&t.push({id:n,typeName:e});i=i.concat(t)}let a=this._currentLinkChartConfig.layoutSettings?.rootedLayoutSettings?.rootEntities;if(a?.length){let e=new Set(i.map(({id:e})=>e)),t=a.filter(({id:t})=>!e.has(t));if(t.length!==a.length){this._currentLinkChartConfig.layoutSettings.rootedLayoutSettings.rootEntities=t;let e=this.linkChart?.linkChartProperties;e?.layoutSettings?.rootedLayoutSettings&&(e.layoutSettings.rootedLayoutSettings.rootEntities=t)}}this.dataManager.removeFromLayer(i);for(let e of i)this.sublayerIdsCache.get(e.typeName)?.delete(e.id),this.dataManager.relationshipTypeNames.has(e.typeName)?this.relationshipLinkChartDiagramLookup.delete(e.id):this.entityLinkChartDiagramLookup.delete(e.id);let o=n?void 0:this.getCurrentNodeLocations();await this._calculateLayoutWithSublayerTimeInfo(this._currentLinkChartConfig.layoutMode,{layoutSettings:this._currentLinkChartConfig.layoutSettings,lockedEntityLocations:o}),i.length>0&&(this.membershipModified=!0);let s=[];return this.layers.forEach(e=>{s.push(e.refreshCachedQueryEngine())}),await Promise.all(s),this._refreshNamedTypes(),i}async expand(e,t){let n=[];try{let r=await this.dataManager.getConnectedRecordIds(e,t?.relationshipTypeNames,t);n=r.filter(e=>!this.sublayerIdsCache.get(e.typeName)?.has(e.id)),await this._handleNewRecords(n,t),r.length>0&&(this.membershipModified=!0),c(t?.signal)}catch(e){throw l(e)&&n.length>0&&await this.removeRecords(n,{overrideMembershipCheck:!0}),e}return{records:n}}loadLayerAssumingLocalCache(){let e=[...this.memberRelationshipTypes,...this.memberEntityTypes];!this.layers.length&&this.originIdOf(`tables`)!==0?this.layers=new n:this.originIdOf(`layers`)===0?this._createSublayers(e,this.layers,e=>!!e.geometryType):this._updateSublayers(e,this.layers),!this.tables.length&&this.originIdOf(`layers`)!==0?this.tables=new n:this.originIdOf(`tables`)===0?this._createSublayers(e,this.tables,e=>!e.geometryType):this._updateSublayers(e,this.tables),this.dataManager.inclusionModeDefinition?.namedTypeDefinitions?.forEach((e,t)=>{let n=o(this.sublayerIdsCache,t,()=>new Set);e.members?.forEach(({id:e,linkChartLocation:r})=>{if(n.add(e),r){let n=`coords`in r&&`lengths`in r?r:x(r);this.dataManager.relationshipTypeNames.has(t)?this.relationshipLinkChartDiagramLookup.set(e,n):this.entityLinkChartDiagramLookup.set(e,n)}})})}async calculateLinkChartLayout(e=`organic-standard`,t){let n=[],r=[],s=[];this.dataManager.sublayerCaches.forEach((e,t)=>{this.dataManager.entityTypeNames.has(t)?e.forEach(e=>{n.push({typeName:t,feature:e})}):this.dataManager.relationshipTypeNames.has(t)&&e.forEach(e=>{r.push({typeName:t,feature:e})})}),this.entityLinkChartDiagramLookup=new Map,this.relationshipLinkChartDiagramLookup=new Map;let l=new Map,d=new Map,f=new Map,p=new Map,m=new Uint8Array(n.length),h=new Float64Array(n.length),b=new Float64Array(n.length),D=new Float64Array(n.length),O=new Float64Array(n.length),k=new Uint32Array(r.length),A=new Uint32Array(r.length),j=new Float64Array(r.length),M=new Float64Array(r.length),N=[],P=!1,F=new g({xmin:-1e-7,ymin:-1e-7,xmax:1e-7,ymax:1e-7}),I=`organic-standard`,L=0,R=0,z,B=V.apply;switch(I=e===`geographic-organic-standard`?`organic-standard`:e,I){case`organic-standard`:z=ae.apply;break;case`organic-community`:z=ie.apply;break;case`hierarchical-bottom-to-top`:z=re.apply;break;case`radial-root-centric`:z=ne.apply;break;case`tree-left-to-right`:z=te.apply;break;default:z=ee.apply}let H=!1,U=new Set(t?.layoutSettings?.rootedLayoutSettings?.rootEntities?.map(({id:e})=>e));n.forEach(({typeName:n,feature:r})=>{if(e!==`chronological-mono-timeline`&&e!==`chronological-multi-timeline`&&t?.lockedEntityLocations?.has(r.attributes[S])){e===`geographic-organic-standard`&&this.dataManager.geographicLookup.has(n)?m[L]=2:m[L]=0;let i=t.lockedEntityLocations.get(r.attributes[S]);h[L]=i.x,b[L]=i.y}else if(e===`geographic-organic-standard`&&this.dataManager.geographicLookup.has(n)){m[L]=2;let e=null,t=r.attributes[this.dataManager.geographicLookup.get(n).name];switch(this.dataManager.geographicLookup.get(n)?.geometryType){case`esriGeometryPoint`:h[L]=t?.x,b[L]=t?.y;break;case`esriGeometryPolygon`:{let n=t?y(t):null;e=n?_.fromJSON(n):null,e?.x!=null&&e?.y!=null?(h[L]=e.x,b[L]=e.y):m[L]=1;break}case`esriGeometryPolyline`:e=t?.extent?.center,e?.x!=null&&e?.y!=null?(h[L]=e.x,b[L]=e.y):m[L]=1;break;case`esriGeometryMultipoint`:e=t?.extent?.center,e?.x!=null&&e?.y!=null?(h[L]=e.x,b[L]=e.y):m[L]=1;break;default:m[L]=1}(h[L]==null||b[L]==null||Number.isNaN(h[L])||Number.isNaN(b[L]))&&(m[L]=1,h[L]=0,b[L]=0)}else if(e===`chronological-mono-timeline`||e===`chronological-multi-timeline`){!H&&t?.lockedEntityLocations?.has(r.attributes[S])&&(H=!0);let e=t?.timeInfoByTypeName?.get(n),i=e?.startField,a=i&&e?.startField?r.attributes[i]:null;D[L]=a?new Date(a).getTime():NaN;let o=e?.endField,s=o&&e?.endField?r.attributes[o]:null;O[L]=s?new Date(s).getTime():NaN,h[L]=0,b[L]=0,m[L]=1}else m[L]=1,h[L]=0,b[L]=0;U.has(r.attributes[S])&&(m[L]|=4),p.set(r.attributes[S],L),N[L]={feature:r,typeName:n},L++}),H&&a.getLogger(this).warn(`Locked node locations are not supported for chronological layout at this time. Requested node locations were ignored`);let W=!1,G=new Map;r.forEach(n=>{let r=n.feature.attributes[C],i=n.feature.attributes[w],a=p.get(r),o=p.get(i),c=t?.timeInfoByTypeName?.get(n.typeName),l=t?.timeInfoByTypeName?c?.startField:null,u=l?n.feature.attributes[l]:null,d=c?.endField,f=d?n.feature.attributes[d]:null;if(a!==void 0&&o!==void 0){let t=r+`-`+i;(e===`chronological-mono-timeline`||e===`chronological-multi-timeline`)&&(t=t+`-`+u+`-`+f);let c=G.get(t);c?.has(n.typeName)||(k[R]=a,A[R]=o,(e===`chronological-mono-timeline`||e===`chronological-multi-timeline`)&&(j[R]=u?new Date(u).getTime():NaN,M[R]=f?new Date(f).getTime():NaN),c===void 0?G.set(t,new Map([[n.typeName,R]])):c.set(n.typeName,R),R++),s.push(n)}else W=!0,this.relationshipLinkChartDiagramLookup.set(r,null)}),W&&a.getLogger(this).warn(`A relationship is a member of this layer that has either origin or destination entity nodes that are not members. The diagram geometry will be set to null`);let K=this._validateOrganicLayoutSettings(e,t?.layoutSettings?.organicLayoutSettings),q=this._convertValidatedOrganicSettingsToCalculationSettings(K);await oe();let J=1,Y=null;if(e===`chronological-mono-timeline`||e===`chronological-multi-timeline`){let n;({status:J,links:Y,graphics:n}=B(()=>t?.signal?.aborted??!1,m,h,b,D,O,k.subarray(0,R),A.subarray(0,R),j.subarray(0,R),M.subarray(0,R),e===`chronological-multi-timeline`,t?.layoutSettings?.chronologicalLayoutSettings)),J===0&&(this.chronologicalAuxiliaryGraphics=n)}else({status:J,links:Y}=z(()=>t?.signal?.aborted??!1,m,h,b,k.subarray(0,R),A.subarray(0,R),q.computationBudgetTime,q.idealEdgeLengthMultiplier,q.repulsionRadiusMultiplier));if(c(t?.signal),J===1)throw new i(`knowledge-graph:layout-failed`,`Attempting to arrange the records in the specified layout failed`);if(J===2)throw u();for(let e=0;e<N.length;e++){if(b[e]>84.9999?b[e]=84.9999:b[e]<-84.9999&&(b[e]=-84.9999),h[e]>179.9999?h[e]=179.9999:h[e]<-179.9999&&(h[e]=-179.9999),N[e].feature.attributes[T]=new _(h[e],b[e]),l.has(N[e].typeName))l.get(N[e].typeName)?.set(N[e].feature.attributes[S],N[e].feature);else{let t=new Map;t.set(N[e].feature.attributes[S],N[e].feature),l.set(N[e].typeName,t)}f.set(N[e].feature.attributes[S],N[e].feature);let t=x(N[e].feature.attributes[T]);this.entityLinkChartDiagramLookup.set(N[e].feature.attributes[S],N[e].feature.attributes[T]?t:null);let n=o(this.dataManager.inclusionModeDefinition.namedTypeDefinitions,N[e].typeName,()=>({useAllData:!1,members:new Map})),r=o(n.members,N[e].feature.attributes[S],()=>({id:N[e].feature.attributes[S],linkChartLocation:void 0}));r.linkChartLocation=N[e].feature.attributes[T];let{x:i,y:a}=N[e].feature.attributes[T];if(P)F.xmin=Math.min(F.xmin,i),F.xmax=Math.max(F.xmax,i),F.ymin=Math.min(F.ymin,a),F.ymax=Math.max(F.ymax,a);else{let e=1e-7;F.xmin=i-e,F.xmax=i+e,F.ymin=a-e,F.ymax=a+e,P=!0}}if(this.linkChartExtent.xmin=F.xmin,this.linkChartExtent.xmax=F.xmax,this.linkChartExtent.ymin=F.ymin,this.linkChartExtent.ymax=F.ymax,!Y)throw new i(`knowledge-graph:layout-failed`,`Attempting to retrieve link geometry from diagram engine failed`);let X=new Map,Z=new Map,Q=new Map,$=new Set;for(let n=0;n<s.length;n++){let r=[],i=s[n],c=i.feature.attributes[C],l=i.feature.attributes[w],u=c+`-`+l;if(e===`chronological-mono-timeline`||e===`chronological-multi-timeline`){let e=t?.timeInfoByTypeName?.get(i.typeName),n=t?.timeInfoByTypeName?e?.startField:null,r=n?i.feature.attributes[n]:null,a=e?.endField,o=a?i.feature.attributes[a]:null;u+=`-`+r+`-`+o}let m=G.get(u).get(i.typeName),h=m===0?0:Y?.vertexEndIndex[m-1];if(!$.has(m)){if($.add(m),Y.types[m]===2){let e=[Y.vertices[h*2],Y.vertices[h*2+1]],t=[Y.vertices[(h+1)*2],Y.vertices[(h+1)*2+1]],n=[.5*(e[0]+t[0]),.5*(e[1]+t[1])],i=[n[0]-e[0],n[1]-e[1]],a=[n[0]+i[1],n[1]-i[0]],o=[n[0]-i[1],n[1]+i[0]];r.push(e),r.push(a),r.push(t),r.push(o),r.push(e)}else if(Y.types[m]===0)for(let e=h;e<Y.vertexEndIndex[m];e++)r.push([Y.vertices[e*2],Y.vertices[e*2+1]]);else{a.getLogger(this).warn(`A relationship generated an unsupported link geometry type. It will not be rendered`);continue}if(e!==`chronological-mono-timeline`&&e!==`chronological-multi-timeline`){let e=N[p.get(c)]?.feature.attributes[T],t=N[p.get(l)]?.feature.attributes[T];(r[0][0]!==e.x||r[0][1]!==e.y)&&(r[0]=[e.x,e.y]),(r[r.length-1][0]!==t.x||r[r.length-1][1]!==t.y)&&(r[r.length-1]=[t.x,t.y])}for(let e=1;e<r.length-1;e++)r[e][1]>85.5?r[e][1]=85.5:r[e][1]<-85.5&&(r[e][1]=-85.5),r[e][0]>179.9999?r[e][0]=179.9999:r[e][0]<-179.9999&&(r[e][0]=-179.9999);X.has(u)?X.get(u).push(r):X.set(u,[r])}let g=X.get(u);Z.has(u)||(Z.set(u,new Map),Q.set(u,new Map));let _=Z.get(u),y=Q.get(u);_.has(i.typeName)||(_.set(i.typeName,g.shift()),y.set(i.typeName,0));let b=_.get(i.typeName);y.set(i.typeName,y.get(i.typeName)+1);let E=new v({paths:[b]});if(i.feature.attributes[T]=E,d.has(i.typeName))d.get(i.typeName)?.set(i.feature.attributes[S],i.feature);else{let e=new Map;e.set(i.feature.attributes[S],i.feature),d.set(i.typeName,e)}f.set(i.feature.attributes[S],i.feature);let D=x(i.feature.attributes[T]);this.relationshipLinkChartDiagramLookup.set(i.feature.attributes[S],i.feature.attributes[T]?D:null);let O=o(this.dataManager.inclusionModeDefinition.namedTypeDefinitions,i.typeName,()=>({useAllData:!1,members:new Map})),k=o(O.members,i.feature.attributes[S],()=>({id:i.feature.attributes[S],linkChartLocation:void 0}));k.linkChartLocation=D}for(let e of s)e.feature.attributes[E]=Q.get(e.feature.attributes[C]+`-`+e.feature.attributes[w])?.get(e.typeName)??null;return this._currentLinkChartConfig={layoutMode:e,layoutSettings:t?.layoutSettings?.clone()},{nodes:l,links:d,idMap:f}}async applyNewLinkChartLayout(e=`organic-standard`,t){let{lockedNodeLocations:n,lockedEntityLocations:i,rootEntityIds:o,...s}=t??{};!i&&n?(r(a.getLogger(this),`lockedNodeLocations is deprecated in 5.0. Use lockedEntityLocations instead.`,{replacement:`Use lockedEntityLocations instead.`,version:`5.0`}),i=n):i&&n&&r(a.getLogger(this),`Both lockedNodeLocations (deprecated in 5.0) and lockedEntityLocations are defined. Use lockedEntityLocations only instead.`,{replacement:`Use lockedEntityLocations instead.`,version:`5.0`});let c=s.layoutSettings?.rootedLayoutSettings?.rootEntities;if(!c&&o){r(a.getLogger(this),`rootEntityIds is deprecated in 5.1. Use layoutSettings.rootedLayoutSettings.rootEntities instead.`,{replacement:`Use layoutSettings.rootedLayoutSettings.rootEntities instead.`,version:`5.1`});let e=[];for(let t of o){let n=this.dataManager.memberIdTypeLookup.get(t),r=Array.from(n??[]).find(e=>this.dataManager.entityTypeNames.has(e));r&&e.push({id:t,typeName:r})}s.layoutSettings=s.layoutSettings??new H,s.layoutSettings.rootedLayoutSettings=s.layoutSettings.rootedLayoutSettings??new U,s.layoutSettings.rootedLayoutSettings.rootEntities=e}else c&&o&&r(a.getLogger(this),`Both rootEntityIds (deprecated in 5.1) and layoutSettings.rootedLayoutSettings.rootEntities are defined. Use layoutSettings.rootedLayoutSettings.rootEntities only instead.`,{replacement:`Use layoutSettings.rootedLayoutSettings.rootEntities instead.`,version:`5.1`});let l=[];await this._calculateLayoutWithSublayerTimeInfo(e,{...s,lockedEntityLocations:i}),this.layers.forEach(e=>{l.push(e.refreshCachedQueryEngine())}),this.membershipModified=!0,await Promise.all(l),this._refreshNamedTypes()}getCurrentNodeLocations(){let e=new Map;for(let[t,n]of this.dataManager.inclusionModeDefinition?.namedTypeDefinitions.entries()??[])this.dataManager.relationshipTypeNames.has(t)||n?.members?.forEach(t=>{let n=t.linkChartLocation,r,i=t.id;n&&(r=`x`in n?{x:n.x,y:n.y}:{x:n.coords[0],y:n.coords[1]},e.set(i,new _({x:r.x,y:r.y})))});return e}async refreshLinkChartCache(e){await this.dataManager.refreshCacheContent(e);let t=[];this.layers.forEach(e=>{t.push(e.refreshCachedQueryEngine())}),await Promise.all(t),this._refreshNamedTypes()}async connectBetweenEntities(e,t){if(!e.length)return{records:[]};let n=[];try{let r=[];for(let e of this.dataManager.relationshipTypeNames){let t=this.sublayerIdsCache.get(e);t&&(r=r.concat(Array.from(t.keys())))}n=await this.dataManager.getRelationshipsBetweenNodes(e,r,t),await this._handleNewRecords(n,t),c(t)}catch(e){throw l(e)&&this.removeRecords(n),e}return{records:n}}async connectFromEntities(e,t){if(!e.length)return{records:[]};let n=[];try{let r=[];for(let e of this.dataManager.relationshipTypeNames){let t=this.sublayerIdsCache.get(e);t&&(r=r.concat(Array.from(t.keys())))}let i=[];for(let e of this.dataManager.entityTypeNames){let t=this.sublayerIdsCache.get(e);t&&(i=i.concat(Array.from(t)))}n=await this.dataManager.getRelationshipsFromNodes(e,i,r,t),await this._handleNewRecords(n,t),n.length>0&&(this.membershipModified=!0),c(t)}catch(e){throw l(e)&&this.removeRecords(n),e}return{records:n}}getCurrentLayout(){return this._currentLinkChartConfig.layoutMode}async _calculateLayoutWithSublayerTimeInfo(e=`organic-standard`,t){let n=new Map;this.layers.forEach(e=>{n.set(e.objectType.name,e.timeInfo)}),await this.calculateLinkChartLayout(e,{timeInfoByTypeName:n,...t}),this.linkChart?.handleChronologicalOverlay()}async _handleNewRecords(e,t){let n=new Set,r=[],i=this.layers.concat(this.tables);for(let t of e)this._graphTypeLookup.has(t.typeName)&&(i.some(e=>e.objectType.name===t.typeName)===!1&&(this.dataManager.sublayerCaches.set(t.typeName,new Map),n.add(t.typeName)),o(this.sublayerIdsCache,t.typeName,()=>new Set).add(t.id),r.push(t));this.dataManager.addToLayer(r);for(let e of n){let t=this._graphTypeLookup.get(e);if(t){let n=this._createSublayer(t);t.type===`entity`?this.dataManager.entityTypeNames.add(e):this.dataManager.relationshipTypeNames.add(e),n.geometryType?this.layers.push(n):this.tables.push(n)}}await N(this,Array.from(n),t),await this.dataManager.refreshCacheContent(e.map(e=>e.id),void 0,void 0,void 0,t);let a={layoutSettings:this._currentLinkChartConfig.layoutSettings,lockedEntityLocations:new Map};for(let[e,t]of this.entityLinkChartDiagramLookup.entries())t&&a.lockedEntityLocations.set(e,new _(t.coords[0],t.coords[1]));await this.applyNewLinkChartLayout(this._currentLinkChartConfig.layoutMode,a)}_createSublayers(e,t,n){e.forEach(e=>{let r=this._createSublayer(e);n(r)&&t.push(r),this._updateSublayerCaches(e)})}_updateSublayers(e,t){t.forEach(t=>{t.parentCompositeLayer=this;let n=e.find(e=>e.type===t.graphType&&e.name===t.graphTypeName);n&&(t.objectType=n,t.read({title:n.name},{origin:`service`}),this._updateSublayerCaches(n))})}_updateSublayerCaches({name:e}){if(!e)return;let t=this.dataManager.sublayerCaches;t.has(e)||t.set(e,new Map)}_layersLoadedFromAuthoritativeItem(){let e=this.originIdOf(`layers`);return e>=3&&e<7}async _initializeDiagram(){this.initializationLinkChartConfig?this.initializationLinkChartConfig.doNotRecalculateLayout?(this.dataManager.inclusionModeDefinition?.namedTypeDefinitions?.forEach((e,t)=>{e?.members?.forEach(e=>{let n=e.linkChartLocation,r,i=e.id;if(!n)return;r=`x`in n?{x:n.x,y:n.y}:{x:n.coords[0],y:n.coords[1]};let a=x(r);this.dataManager.relationshipTypeNames.has(t)?this.relationshipLinkChartDiagramLookup.set(i,a):this.entityLinkChartDiagramLookup.set(i,a),this.linkChartExtent.xmin>r.x&&(this.linkChartExtent.xmin=r.x),this.linkChartExtent.xmax<r.x&&(this.linkChartExtent.xmax=r.x),this.linkChartExtent.ymin>r.y&&(this.linkChartExtent.ymin=r.y),this.linkChartExtent.ymax<r.y&&(this.linkChartExtent.ymax=r.y)})}),this.memberRelationshipTypes.forEach(e=>{e.name&&this.dataManager.sublayerCaches.get(e.name)?.forEach(e=>{let t=this.relationshipLinkChartDiagramLookup.get(e.attributes[C]),n=this.relationshipLinkChartDiagramLookup.get(e.attributes[w]);if(t&&n){let r=x(new v({paths:[[[t.coords[0],t.coords[1]],[n.coords[0],n.coords[1]]]]}));this.relationshipLinkChartDiagramLookup.set(e.attributes[S],r)}else this.relationshipLinkChartDiagramLookup.set(e.attributes[S],null)})})):await this._calculateLayoutWithSublayerTimeInfo(this.initializationLinkChartConfig.layoutMode,{lockedEntityLocations:this.getCurrentNodeLocations(),...this.initializationLinkChartConfig}):await this._calculateLayoutWithSublayerTimeInfo(`organic-standard`,{lockedEntityLocations:this.getCurrentNodeLocations()})}_refreshNamedTypes(){for(let e of this.layers)e.emit(`refresh`,{dataChanged:!0});for(let e of this.tables)e.emit(`refresh`,{dataChanged:!0})}_validateOrganicLayoutSettings(e,t){let n=e=>typeof e==`number`&&!isNaN(e),r=e=>n(e)&&e>=1,i=e=>n(e)&&e>=1,o=e=>Object.values(D).includes(e),s=e=>n(e)&&e>=0,c=new Set([`organic-standard`,`organic-community`,`geographic-organic-standard`,`chronological-multi-timeline`,`chronological-mono-timeline`]),l={};if(!c.has(e)||!t)return l;let{computationBudgetTime:u,autoRepulsionRadius:d,repulsionRadiusMultiplier:f,absoluteIdealEdgeLength:p,multiplicativeIdealEdgeLength:m,idealEdgeLengthType:h}=t;return i(u)?l.computationBudgetTime=u:u&&a.getLogger(this).warn(`Invalid layout computationBudgetTime setting, will revert to default setting`),l.autoRepulsionRadius=d,!d&&r(f)?l.repulsionRadiusMultiplier=f:d||(l.autoRepulsionRadius=!0,a.getLogger(this).warn(`Invalid layout repulsionRadiusMultiplier setting, will revert to default setting`)),e===`geographic-organic-standard`&&(o(h)?l.idealEdgeLengthType=h:h!==void 0&&a.getLogger(this).warn(`Invalid layout idealEdgeLengthType setting, will revert to "multiplier" setting`),h===`absolute-value`&&s(p)?l.absoluteIdealEdgeLength=p:h===`absolute-value`&&p!==void 0?a.getLogger(this).warn(`Invalid layout idealEdgeLength setting, will revert to default setting`):h===`multiplier`&&s(m)?l.multiplicativeIdealEdgeLength=m:h===`multiplier`&&m!==void 0&&a.getLogger(this).warn(`Invalid layout idealEdgeLength setting, will revert to default setting`)),l}_convertValidatedOrganicSettingsToCalculationSettings(e){let t=e.idealEdgeLengthType===D.ABSOLUTE?e.absoluteIdealEdgeLength:e.multiplicativeIdealEdgeLength;return e.idealEdgeLengthType===D.ABSOLUTE&&(t=t===void 0?-1:-1*t),{computationBudgetTime:e.computationBudgetTime??void 0,repulsionRadiusMultiplier:e.repulsionRadiusMultiplier&&!e.autoRepulsionRadius?e.repulsionRadiusMultiplier:void 0,idealEdgeLengthMultiplier:t}}_createSublayer(e){return new k({objectType:e,parentCompositeLayer:this,graphType:e.type})}_handleSublayersChange(e,t){if(t&&(t.forEach(e=>{e.parent=null}),this.removeHandles(`sublayers-owner`)),e){let t=[];e.forEach(e=>{e.parent=this,t.push(this._createVisibleRefreshHandle(e))}),this.addHandles([...t,e.on(`after-add`,({item:e})=>{e.parent=this,this.addHandles(this._createVisibleRefreshHandle(e),`sublayers-owner`)}),e.on(`after-remove`,({item:e})=>{e.parent=null})],`sublayers-owner`)}}_createVisibleRefreshHandle(e){return d(()=>e.visible,(t,n)=>{t===!0&&n===!1&&e.emit(`refresh`,{dataChanged:!0})})}_alignLayersDataModelAndInclusionDefinition(e){let t=new Set((e.entityTypes??[]).map(e=>e.name).concat((e.relationshipTypes??[]).map(e=>e.name))),r=new Set((e.entityTypes??[]).map(e=>e.name)),i=new Set((e.relationshipTypes??[]).map(e=>e.name));if(this.layers){for(let e of this.layers)!e.graphType&&t.has(e.graphTypeName)&&(e.graphType=r.has(e.graphTypeName)?`entity`:`relationship`);let e=this.layers.filter(e=>t.has(e.graphTypeName)&&(e.graphType===`entity`?r.has(e.graphTypeName):i.has(e.graphTypeName)));this.setAtOrigin(`layers`,e,h(this.originIdOf(`layers`)))}else this.layers=new n;if(this.layers&&this._originalInclusionList){let e=new Set(this._originalInclusionList.namedTypeDefinitions.keys()),t=this.tables?.map(e=>e.graphTypeName)??[],n=this.layers.map(e=>e.graphTypeName).concat(t);for(let t of n)e.has(t)||this._originalInclusionList.namedTypeDefinitions.set(t,{useAllData:!1,members:new Map});let r=[];for(let e of this._originalInclusionList.namedTypeDefinitions.keys())n.includes(e)||(a.getLogger(this).warn(`A named type, ${e}, was in the serialized feature collection but did not have a sublayer config in the item, so will be removed`),r.push(e));for(let e of r)this._originalInclusionList.namedTypeDefinitions.delete(e)}}};e([p(B)],q.prototype,`url`,void 0),e([p()],q.prototype,`dataPreloadedInLocalCache`,void 0),e([p()],q.prototype,`initializationLinkChartConfig`,void 0),e([p()],q.prototype,`membershipModified`,void 0),e([p()],q.prototype,`dataManager`,void 0),e([p()],q.prototype,`initializationInclusionModeDefinition`,null),e([p()],q.prototype,`knowledgeGraph`,void 0),e([p({type:n.ofType(k),json:{write:{ignoreOrigin:!0}}})],q.prototype,`layers`,void 0),e([p({readOnly:!0})],q.prototype,`linkChart`,null),e([p()],q.prototype,`entityLinkChartDiagramLookup`,void 0),e([p()],q.prototype,`relationshipLinkChartDiagramLookup`,void 0),e([p()],q.prototype,`linkChartExtent`,void 0),e([p()],q.prototype,`memberEntityTypes`,void 0),e([p()],q.prototype,`memberRelationshipTypes`,void 0),e([p({type:[`LinkChartLayer`]})],q.prototype,`operationalLayerType`,void 0),e([p()],q.prototype,`sublayerCapabilities`,null),e([p()],q.prototype,`sublayerIdsCache`,void 0),e([p({type:n.ofType(k),json:{write:{ignoreOrigin:!0}}})],q.prototype,`tables`,void 0),e([p({json:{read:!1}})],q.prototype,`type`,void 0),e([p({readOnly:!0})],q.prototype,`userHasEditingPrivileges`,void 0),e([p({readOnly:!0})],q.prototype,`userHasFullEditingPrivileges`,void 0),e([p({readOnly:!0})],q.prototype,`userHasUpdateItemPrivileges`,void 0),e([p({json:{read:!1}})],q.prototype,`chronologicalAuxiliaryGraphics`,void 0),e([p(K(`dateFieldsTimeReference`))],q.prototype,`dateFieldsTimeZone`,void 0),q=e([m(`esri.layers.LinkChartLayer`)],q);const J=q;export{J as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../PopupTemplate.js";import{ClonableMixin as n}from"../core/Clonable.js";import r from"../core/Collection.js";import{deprecatedProperty as i}from"../core/deprecate.js";import a from"../core/Error.js";import has from"../core/has.js";import o from"../core/Logger.js";import{MultiOriginJSONSupportMixin as s}from"../core/MultiOriginJSONSupport.js";import{setDeepValue as c}from"../core/object.js";import{on as l}from"../core/reactiveUtils.js";import{getFilename as u}from"../core/urlUtils.js";import{property as d}from"../core/accessorSupport/decorators/property.js";import{subclass as f}from"../core/accessorSupport/decorators/subclass.js";import{writer as p}from"../core/accessorSupport/decorators/writer.js";import m from"../geometry/Extent.js";import h from"../geometry/SpatialReference.js";import g from"../graphic/ParquetGraphicOrigin.js";import _ from"./Layer.js";import{ParquetSource as v}from"./graphics/sources/ParquetSource.js";import{BlendLayer as y}from"./mixins/BlendLayer.js";import{CustomParametersMixin as b}from"./mixins/CustomParametersMixin.js";import{DataSeriesLayer as x}from"./mixins/DataSeriesLayer.js";import{FeatureEffectLayer as S}from"./mixins/FeatureEffectLayer.js";import{FeatureReductionLayer as C}from"./mixins/FeatureReductionLayer.js";import{OperationalLayer as w}from"./mixins/OperationalLayer.js";import{OrderedLayer as T}from"./mixins/OrderedLayer.js";import{RefreshableLayer as E}from"./mixins/RefreshableLayer.js";import{ScaleRangeLayer as D}from"./mixins/ScaleRangeLayer.js";import{labelsVisible as O,legendEnabled as k,popupEnabled as A}from"./support/commonProperties.js";import j from"./support/FeatureTemplate.js";import M from"./support/Field.js";import{defineFieldProperties as N}from"./support/fieldProperties.js";import{fixRendererFields as P}from"./support/fieldUtils.js";import F from"./support/GeometryEncodingLocation.js";import I from"./support/GeometryEncodingWkb.js";import L from"./support/LabelClass.js";import{reader as R}from"./support/labelingInfo.js";import z from"./support/ParquetFilesData.js";import B from"./support/ParquetPortalItemData.js";import{parquetGeometryTypeKebabDict as V}from"./support/parquetUtils.js";import{rendererTypes as H}from"../renderers/support/typeUtils.js";import U from"../rest/support/Query.js";import{createPopupTemplate as W}from"../support/popupUtils.js";const G=N(),K=`__OBJECTID`,q={types:{key:`type`,base:null,typeMap:{wkb:I,location:F}},json:{name:`layerDefinition.geometryEncoding`,write:{ignoreOrigin:!0,isRequired:!0},origins:{service:{read:{source:`geometryEncoding`}}}}};let J=class extends C(S(y(T(x(D(E(w(s(b(n(_))))))))))){constructor(e){super(e),this._emptyUrls=new r,this.copyright=null,this.definitionExpression=null,this.returnM=void 0,this.returnZ=void 0,this.displayOptimization=null,this.fields=null,this.fieldsIndex=null,this.geometryEncoding=null,this.fullExtent=null,this.geometryType=null,this.graphicOrigin=new g(this),this.labelsVisible=!0,this.labelingInfo=null,this.objectIdField=K,this.operationalLayerType=`ParquetLayer`,this.outFields=null,this.persistenceEnabled=!!has(`parquetlayer-persistence-enabled`),this.popupTemplate=null,this.source=null,this.spatialReference=null,this.templates=null,this.type=`parquet`,this.data=null}initialize(){this.addHandles(l(()=>this.source,`source-changed`,()=>{this.emit(`refresh`,{dataChanged:!0})}))}destroy(){this.source?.destroy()}async load(e){return this.addResolvingPromise(this._load(e)),this}get capabilities(){return this.source?.capabilities}get defaultPopupTemplate(){return this.createPopupTemplate()}writeFields(e,t,n,r){let i=e.filter(e=>e.name!==K||e.type!==`oid`).map(e=>e.toJSON(r));c(n,i,t)}get isTable(){return this.geometryEncoding==null&&this.displayOptimization==null}set renderer(e){P(e,this.fieldsIndex),this._set(`renderer`,e)}get title(){let e=this._get(`title`);if(e&&this.originOf(`title`)!==`defaults`)return e;switch(this.data?.type){case`files`:{let t=this.data.urls?.at(0);e=t?u(t,[`parquet`]):null;break}case`portal-item`:e=this.data.portalItem?.title}return e||`Parquet`}set title(e){this._set(`title`,e)}writeData(e,t,n,r){if(!e)return;if(e.type===`portal-item`&&e.portalItem?.type!==`Parquet Feature Layer`){r.messages?.push(new a(`parquet-layer:unsupported-data`,`Portal item with type '${e.portalItem?.type}' is not supported in web maps`,{layer:this,itemId:e.portalItem?.id}));return}let i=e.write({},r);i&&(t.source=i)}get urls(){return this.data?.type===`files`?this.data.urls:this._emptyUrls}set urls(e){i(o.getLogger(this),`urls`,{replacement:`data`,version:`5.1`,warnOnce:!0}),this.data=new z({urls:this._normalizeUrls(e)})}createPopupTemplate(e){return W(this,e)}createQuery(){let e=new U;return e.returnGeometry=!0,e.outFields=[`*`],e.where=this.definitionExpression||`1=1`,e}async createSource(e){let t=new v({layer:this});return await t.load(e),t}getFieldDomain(e,t){return null}getField(e){return this.fieldsIndex.get(e)}async queryFeatures(e,t){await this.load();let n=await this.source.queryFeatures(this._normalizeQuery(e),t),r=this.graphicOrigin;if(n?.features)for(let e of n.features)e.layer=e.sourceLayer=this,e.origin=r;return n}async queryObjectIds(e,t){return await this.load(),this.source.queryObjectIds(this._normalizeQuery(e),t)}async queryFeatureCount(e,t){return await this.load(),this.source.queryFeatureCount(this._normalizeQuery(e),t)}async queryExtent(e,t){return await this.load(),this.source.queryExtent(this._normalizeQuery(e),t)}async hasDataChanged(){if(this.data?.type===`portal-item`){let e=this.data.portalItem,t=e.modified?.getTime();if(await e.reload(),t===e.modified?.getTime())return!1}return await this.source.reload(null),!0}_normalizeQuery(e){return U.from(e)??this.createQuery()}_normalizeUrls(e){return Array.isArray(e)?new r(e):e??new r}async _load(e){this.data?.type===`portal-item`&&await this.data.portalItem.load();let t=await this.createSource(e);this._set(`source`,t),this.read(t.sourceJSON,{origin:`service`}),[`fields`].forEach(e=>this.revertToOrigin(e,`service`)),P(this.renderer,this.fieldsIndex),this.spatialReference??=h.WGS84}};e([d({readOnly:!0,json:{read:!1,write:!1}})],J.prototype,`capabilities`,null),e([d({type:String})],J.prototype,`copyright`,void 0),e([d({readOnly:!0})],J.prototype,`defaultPopupTemplate`,null),e([d({type:String,json:{name:`layerDefinition.definitionExpression`,write:{enabled:!0,allowNull:!0}}})],J.prototype,`definitionExpression`,void 0),e([d({type:Boolean})],J.prototype,`returnM`,void 0),e([d({type:Boolean})],J.prototype,`returnZ`,void 0),e([d()],J.prototype,`displayOptimization`,void 0),e([d({type:[M],json:{name:`layerDefinition.fields`,write:{ignoreOrigin:!0,isRequired:!0},origins:{service:{name:`fields`}}}})],J.prototype,`fields`,void 0),e([p(`fields`)],J.prototype,`writeFields`,null),e([d(G.fieldsIndex)],J.prototype,`fieldsIndex`,void 0),e([d(q)],J.prototype,`geometryEncoding`,void 0),e([d({type:m,json:{name:`extent`}})],J.prototype,`fullExtent`,void 0),e([d({type:V.apiValues,json:{name:`layerDefinition.geometryType`,read:{reader:V.read},write:{writer:V.write,ignoreOrigin:!0,isRequired:!0},origins:{service:{read:{source:`geometryType`,reader:V.read}}}}})],J.prototype,`geometryType`,void 0),e([d({readOnly:!0,clonable:!1})],J.prototype,`graphicOrigin`,void 0),e([d(O)],J.prototype,`labelsVisible`,void 0),e([d({type:[L],json:{name:`layerDefinition.drawingInfo.labelingInfo`,read:{reader:R},write:!0}})],J.prototype,`labelingInfo`,void 0),e([d(k)],J.prototype,`legendEnabled`,void 0),e([d()],J.prototype,`file`,void 0),e([d({type:String,readOnly:!0})],J.prototype,`objectIdField`,void 0),e([d({type:[`ParquetLayer`]})],J.prototype,`operationalLayerType`,void 0),e([d(G.outFields)],J.prototype,`outFields`,void 0),e([d(A)],J.prototype,`popupEnabled`,void 0),e([d({type:t,json:{name:`popupInfo`,write:!0}})],J.prototype,`popupTemplate`,void 0),e([d({types:H,json:{name:`layerDefinition.drawingInfo.renderer`,write:!0,origins:{service:{read:{source:`drawingInfo.renderer`}}}}})],J.prototype,`renderer`,null),e([d({type:v,readOnly:!0,cast:null,json:{read:!1}})],J.prototype,`source`,void 0),e([d({type:h,json:{name:`layerDefinition.spatialReference`,write:{ignoreOrigin:!0,isRequired:!0},origins:{service:{read:{source:`extent.spatialReference`}}}}})],J.prototype,`spatialReference`,void 0),e([d({type:[j]})],J.prototype,`templates`,void 0),e([d()],J.prototype,`title`,null),e([d({json:{read:!1},readOnly:!0})],J.prototype,`type`,void 0),e([d({types:{key:`type`,base:null,typeMap:{files:z,"portal-item":B}},json:{name:`source`,origins:{"web-map":{write:{target:`source`,ignoreOrigin:!0}}}}})],J.prototype,`data`,void 0),e([p(`web-map`,`data`)],J.prototype,`writeData`,null),e([d({type:r.ofType(String),json:{read:!1,write:!1}})],J.prototype,`urls`,null),J=e([f(`esri.layers.ParquetLayer`)],J);export{J as default};
2
+ import{__decorate as e}from"tslib";import t from"../PopupTemplate.js";import{ClonableMixin as n}from"../core/Clonable.js";import r from"../core/Collection.js";import{deprecatedProperty as i}from"../core/deprecate.js";import a from"../core/Error.js";import has from"../core/has.js";import o from"../core/Logger.js";import{MultiOriginJSONSupportMixin as s}from"../core/MultiOriginJSONSupport.js";import{setDeepValue as c}from"../core/object.js";import{on as l}from"../core/reactiveUtils.js";import{getFilename as u}from"../core/urlUtils.js";import{property as d}from"../core/accessorSupport/decorators/property.js";import{subclass as f}from"../core/accessorSupport/decorators/subclass.js";import{writer as p}from"../core/accessorSupport/decorators/writer.js";import m from"../geometry/Extent.js";import h from"../geometry/SpatialReference.js";import g from"../graphic/ParquetGraphicOrigin.js";import _ from"./Layer.js";import{ParquetSource as v}from"./graphics/sources/ParquetSource.js";import{BlendLayer as y}from"./mixins/BlendLayer.js";import{CustomParametersMixin as b}from"./mixins/CustomParametersMixin.js";import{DataSeriesLayer as x}from"./mixins/DataSeriesLayer.js";import{FeatureEffectLayer as S}from"./mixins/FeatureEffectLayer.js";import{FeatureReductionLayer as C}from"./mixins/FeatureReductionLayer.js";import{OperationalLayer as w}from"./mixins/OperationalLayer.js";import{OrderedLayer as T}from"./mixins/OrderedLayer.js";import{RefreshableLayer as E}from"./mixins/RefreshableLayer.js";import{ScaleRangeLayer as D}from"./mixins/ScaleRangeLayer.js";import{labelsVisible as O,legendEnabled as k,popupEnabled as A}from"./support/commonProperties.js";import j from"./support/FeatureTemplate.js";import M from"./support/Field.js";import{defineFieldProperties as N}from"./support/fieldProperties.js";import{fixRendererFields as P}from"./support/fieldUtils.js";import F from"./support/GeometryEncodingLocation.js";import I from"./support/GeometryEncodingWkb.js";import L from"./support/LabelClass.js";import{reader as R}from"./support/labelingInfo.js";import z from"./support/ParquetFilesData.js";import B from"./support/ParquetPortalItemData.js";import{parquetGeometryTypeKebabDict as V}from"./support/parquetUtils.js";import{rendererTypes as H}from"../renderers/support/typeUtils.js";import U from"../rest/support/Query.js";import{createPopupTemplate as W}from"../support/popupUtils.js";import{utc as G}from"../time/constants.js";const K=N(),q=`__OBJECTID`,J={types:{key:`type`,base:null,typeMap:{wkb:I,location:F}},json:{name:`layerDefinition.geometryEncoding`,write:{ignoreOrigin:!0,isRequired:!0},origins:{service:{read:{source:`geometryEncoding`}}}}};let Y=class extends C(S(y(T(x(D(E(w(s(b(n(_))))))))))){constructor(e){super(e),this._emptyUrls=new r,this.copyright=null,this.definitionExpression=null,this.returnM=void 0,this.returnZ=void 0,this.displayOptimization=null,this.fields=null,this.fieldsIndex=null,this.geometryEncoding=null,this.fullExtent=null,this.geometryType=null,this.graphicOrigin=new g(this),this.labelsVisible=!0,this.labelingInfo=null,this.objectIdField=q,this.operationalLayerType=`ParquetLayer`,this.outFields=null,this.persistenceEnabled=!!has(`parquetlayer-persistence-enabled`),this.popupTemplate=null,this.source=null,this.spatialReference=null,this.templates=null,this.type=`parquet`,this.data=null}initialize(){this.addHandles(l(()=>this.source,`source-changed`,()=>{this.emit(`refresh`,{dataChanged:!0})}))}destroy(){this.source?.destroy()}async load(e){return this.addResolvingPromise(this._load(e)),this}get capabilities(){return this.source?.capabilities}get dateFieldsTimeZone(){return G}get defaultPopupTemplate(){return this.createPopupTemplate()}writeFields(e,t,n,r){let i=e.filter(e=>e.name!==q||e.type!==`oid`).map(e=>e.toJSON(r));c(n,i,t)}get isTable(){return this.geometryEncoding==null&&this.displayOptimization==null}set renderer(e){P(e,this.fieldsIndex),this._set(`renderer`,e)}get title(){let e=this._get(`title`);if(e&&this.originOf(`title`)!==`defaults`)return e;switch(this.data?.type){case`files`:{let t=this.data.urls?.at(0);e=t?u(t,[`parquet`]):null;break}case`portal-item`:e=this.data.portalItem?.title}return e||`Parquet`}set title(e){this._set(`title`,e)}writeData(e,t,n,r){if(!e)return;if(e.type===`portal-item`&&e.portalItem?.type!==`Parquet Feature Layer`){r.messages?.push(new a(`parquet-layer:unsupported-data`,`Portal item with type '${e.portalItem?.type}' is not supported in web maps`,{layer:this,itemId:e.portalItem?.id}));return}let i=e.write({},r);i&&(t.source=i)}get urls(){return this.data?.type===`files`?this.data.urls:this._emptyUrls}set urls(e){i(o.getLogger(this),`urls`,{replacement:`data`,version:`5.1`,warnOnce:!0}),this.data=new z({urls:this._normalizeUrls(e)})}createPopupTemplate(e){return W(this,e)}createQuery(){let e=new U;return e.returnGeometry=!0,e.outFields=[`*`],e.where=this.definitionExpression||`1=1`,e}async createSource(e){let t=new v({layer:this});return await t.load(e),t}getFieldDomain(e,t){return null}getField(e){return this.fieldsIndex.get(e)}async queryFeatures(e,t){await this.load();let n=await this.source.queryFeatures(this._normalizeQuery(e),t),r=this.graphicOrigin;if(n?.features)for(let e of n.features)e.layer=e.sourceLayer=this,e.origin=r;return n}async queryObjectIds(e,t){return await this.load(),this.source.queryObjectIds(this._normalizeQuery(e),t)}async queryFeatureCount(e,t){return await this.load(),this.source.queryFeatureCount(this._normalizeQuery(e),t)}async queryExtent(e,t){return await this.load(),this.source.queryExtent(this._normalizeQuery(e),t)}async hasDataChanged(){if(this.data?.type===`portal-item`){let e=this.data.portalItem,t=e.modified?.getTime();if(await e.reload(),t===e.modified?.getTime())return!1}return await this.source.reload(null),!0}_normalizeQuery(e){return U.from(e)??this.createQuery()}_normalizeUrls(e){return Array.isArray(e)?new r(e):e??new r}async _load(e){this.data?.type===`portal-item`&&await this.data.portalItem.load();let t=await this.createSource(e);this._set(`source`,t),this.read(t.sourceJSON,{origin:`service`}),[`fields`].forEach(e=>this.revertToOrigin(e,`service`)),P(this.renderer,this.fieldsIndex),this.spatialReference??=h.WGS84}};e([d({readOnly:!0,json:{read:!1,write:!1}})],Y.prototype,`capabilities`,null),e([d({type:String})],Y.prototype,`copyright`,void 0),e([d({readOnly:!0})],Y.prototype,`dateFieldsTimeZone`,null),e([d({readOnly:!0})],Y.prototype,`defaultPopupTemplate`,null),e([d({type:String,json:{name:`layerDefinition.definitionExpression`,write:{enabled:!0,allowNull:!0}}})],Y.prototype,`definitionExpression`,void 0),e([d({type:Boolean})],Y.prototype,`returnM`,void 0),e([d({type:Boolean})],Y.prototype,`returnZ`,void 0),e([d()],Y.prototype,`displayOptimization`,void 0),e([d({type:[M],json:{name:`layerDefinition.fields`,write:{ignoreOrigin:!0,isRequired:!0},origins:{service:{name:`fields`}}}})],Y.prototype,`fields`,void 0),e([p(`fields`)],Y.prototype,`writeFields`,null),e([d(K.fieldsIndex)],Y.prototype,`fieldsIndex`,void 0),e([d(J)],Y.prototype,`geometryEncoding`,void 0),e([d({type:m,json:{name:`extent`}})],Y.prototype,`fullExtent`,void 0),e([d({type:V.apiValues,json:{name:`layerDefinition.geometryType`,read:{reader:V.read},write:{writer:V.write,ignoreOrigin:!0,isRequired:!0},origins:{service:{read:{source:`geometryType`,reader:V.read}}}}})],Y.prototype,`geometryType`,void 0),e([d({readOnly:!0,clonable:!1})],Y.prototype,`graphicOrigin`,void 0),e([d(O)],Y.prototype,`labelsVisible`,void 0),e([d({type:[L],json:{name:`layerDefinition.drawingInfo.labelingInfo`,read:{reader:R},write:!0}})],Y.prototype,`labelingInfo`,void 0),e([d(k)],Y.prototype,`legendEnabled`,void 0),e([d()],Y.prototype,`file`,void 0),e([d({type:String,readOnly:!0})],Y.prototype,`objectIdField`,void 0),e([d({type:[`ParquetLayer`]})],Y.prototype,`operationalLayerType`,void 0),e([d(K.outFields)],Y.prototype,`outFields`,void 0),e([d(A)],Y.prototype,`popupEnabled`,void 0),e([d({type:t,json:{name:`popupInfo`,write:!0}})],Y.prototype,`popupTemplate`,void 0),e([d({types:H,json:{name:`layerDefinition.drawingInfo.renderer`,write:!0,origins:{service:{read:{source:`drawingInfo.renderer`}}}}})],Y.prototype,`renderer`,null),e([d({type:v,readOnly:!0,cast:null,json:{read:!1}})],Y.prototype,`source`,void 0),e([d({type:h,json:{name:`layerDefinition.spatialReference`,write:{ignoreOrigin:!0,isRequired:!0},origins:{service:{read:{source:`extent.spatialReference`}}}}})],Y.prototype,`spatialReference`,void 0),e([d({type:[j]})],Y.prototype,`templates`,void 0),e([d()],Y.prototype,`title`,null),e([d({json:{read:!1},readOnly:!0})],Y.prototype,`type`,void 0),e([d({types:{key:`type`,base:null,typeMap:{files:z,"portal-item":B}},json:{name:`source`,origins:{"web-map":{write:{target:`source`,ignoreOrigin:!0}}}}})],Y.prototype,`data`,void 0),e([p(`web-map`,`data`)],Y.prototype,`writeData`,null),e([d({type:r.ofType(String),json:{read:!1,write:!1}})],Y.prototype,`urls`,null),Y=e([f(`esri.layers.ParquetLayer`)],Y);export{Y as default};
@@ -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 n}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 o,throwIfAborted as s}from"../../../../core/promiseUtils.js";import{QueueProcessor as c}from"../../../../core/QueueProcessor.js";import{parseWhereClause as l}from"../../../../core/sql.js";import{getMetersPerUnitForSR as u}from"../../../../core/units.js";import d from"../../../../geometry/SpatialReference.js";import{set as f,create as p,expandWithAABB as m,expandWithRect as ee,negativeInfinity as h}from"../../../../geometry/support/aaBoundingBox.js";import{copy as te,negativeInfinity as g,create as ne,expandWithRect as re}from"../../../../geometry/support/aaBoundingRect.js";import{isWebMercator as _,isWGS84 as v}from"../../../../geometry/support/spatialReferenceUtils.js";import{normalizeColumnPath as y,readParquetFileAttribute as b}from"../../../parquet.js";import{convertToGeometry as x}from"../../featureConversionUtils.js";import{getFieldNamesFromStatistics as S}from"../../data/attributeSupport.js";import{getQueryResultExtent as C,getQueryBoundingRects as w,QueryEngine as T}from"../../data/QueryEngine.js";import{queryCapabilities as E}from"../../data/QueryEngineCapabilities.js";import{QueryEngineResult as D}from"../../data/QueryEngineResult.js";import{normalizeQueryLike as O}from"../../data/queryUtils.js";import{createFileProvider as k}from"../parquet/createFileProvider.js";import{readFieldStatistic as A}from"../parquet/ParquetFileStatistics.js";import{createDrawingInfo as ie}from"./clientSideDefaults.js";import{getParquetFileId as ae,getParquetRowId as oe,getParquetObjectId as se}from"./parquetIdUtils.js";import j from"../../../support/Field.js";import M from"../../../support/FieldsIndex.js";import{isNumericField as N}from"../../../support/fieldUtils.js";import{fromParquetGeometryEncodingJSON as P}from"../../../support/parquetEncodingUtils.js";import{completeParquetLayerInfo as F,fromParquetJSONGeometryType as I,toParquetJSONGeometryType as L}from"../../../support/parquetUtils.js";import{loadParquetModule as R}from"../../../../libs/librust-parquet/loadParquetModule.js";import{FeatureStoreQueryAdapter as z}from"../../../../views/2d/layers/features/FeatureStoreQueryAdapter.js";import{FeatureSnapshotSourceChunk as B}from"../../../../views/2d/layers/features/sources/strategies/chunks/FeatureSnapshotSourceChunk.js";import{FeatureSourceChunkStore as V}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 U}from"../../../../views/2d/layers/features/support/FeatureSetReaderParquet.js";const W=new z,G=`__OBJECTID`,K=8e3;class ce{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;){s(e),await this._fill(e);let t=await le(this._pending);if(this._pending.delete(t.read),this._resolvedCount++,t.chunk!=null)return t.chunk}return null}async _fill(e){for(this._removeDone();this._pending.size<8;){let t=this._getOrCreateNextStream(e);if(t==null)return;this._pending.add(t.read(e))}}_getOrCreateNextStream(e){let t=this._resolvedCount>=8?8:2;if(this._fileIndex<this._files.length&&this._streams.length<t){let t=this._files[this._fileIndex++],n=new ue(t.id,this._createFileStream(t,e));return this._streams.push(n),n}return this._getNextStream()}_getNextStream(){let e=this._streams.length;for(let t=0;t<e;t++){let n=(this._streamIndex+t)%e,r=this._streams[n];if(r.canRead)return this._streamIndex=(n+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 le(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&&this._readCount===0}async read(e){this._readCount++;try{let t=await(await this._stream).next(e);return t==null?(this._reachedEnd=!0,null):{fileId:this._fileId,chunk:t}}finally{this._readCount--}}}class de{constructor(){this._hasZ=!1,this._hasM=!1,this._queue=new c({concurrency:4,process:(e,t)=>this._executeQuery(e,t)}),this._streams=new Map,this._streamIdCounter=0,this._indexMap={},this._handles=new i}async load(e){let t=e.spatialReference?d.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(k(e.provider,null,()=>this._customParameters));let n=await this._provider.getMetadata(),i=await F(n,{fields:e.fields?.map(e=>j.fromJSON(e)),geometryEncoding:e.geometryEncoding?P(e.geometryEncoding):null,geometryType:e.geometryType?I(e.geometryType):null,displayOptimization:e.displayOptimization,spatialReference:t});if(this._hasZ=!!n?.hasZ,this._hasM=!!n?.hasM,!i.fields)throw new r(`parquet:unsupported`,`Fields must be defined`);let o;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=d.WGS84),o={geometry:i.geometryEncoding?{geometryType:L(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(o),this._capabilities=$(await this._getFileStatistics(),this._hasZ,this._hasM);let s=await this._provider.getFiles();if(!s.length)return{layerDefinition:{},capabilities:$(null,this._hasZ,this._hasM)};let c=await s[0].file;i.file=c;let{fields:l}=i;if(l==null)throw new r(`parquet-layer:missing-metadata`,`Unable to create parquet source: cannot infer fields`,l);l.push(new j({name:G,type:`oid`,alias:G}));for(let e of l){let t=c.getColumnId(e.name);t!=null&&(this._indexMap[e.name]=t)}let u=new M(l.map(e=>e.toJSON()));this._fieldsIndex=u;let f=L(i.geometryType??`point`);return this._metadata=H.createFeature({fieldsIndex:u.toJSON(),geometryType:f,hasZ:this._hasZ,hasM:this._hasM,featureIdInfo:{type:`object-id`,fieldName:G},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:f,featureIdInfo:{type:`object-id`,fieldName:G},hasM:this._hasM,hasZ:this._hasZ,spatialReference:i.spatialReference?.toJSON()??{wkid:4326},aggregateAdapter:null,timeInfo:null,definitionExpression:null},this._fullExtent=n?.extent?n.extent:await this._tryDeriveParquetFullExtent(i),{capabilities:this._capabilities,layerDefinition:{fields:i.fields?.map(e=>e.toJSON()),drawingInfo:ie(f),extent:this._fullExtent??void 0,geometryType:f,geometryEncoding:i.geometryEncoding?.toJSON(),displayOptimization:i.displayOptimization}}}destroy(){this._provider.destroy(),this._queue.destroy();for(let{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};let t=k(e,this._provider.getGeometryInfo(),()=>this._customParameters);await this._updateProvider(t)}async getDiagnosticsSnapshot(){let 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){let n=await O(e,null,this._queryEngineParams.spatialReference);return this._validateQuery(n),Ce(n)||(n.resultRecordCount=n.resultRecordCount?Math.min(n.resultRecordCount,K):K,n.resultOffset=n.resultOffset??0),n.outStatistics?this._queryStatistics(n,t):(n.returnDistinctValues&&(n.returnGeometry=void 0),(await this._enqueueQuery(n,t)).createQueryResponse())}async queryFeatureCount(e,t){let n=await O(e,null,this._queryEngineParams.spatialReference);return this._validateQuery(n),!q(n)&&!n.returnDistinctValues&&!n.groupByFieldsForStatistics?.length&&!n.outStatistics?.length?this._getFeatureCount():(n.returnDistinctValues||(n.outFields=void 0),n.returnGeometry=void 0,(await this._enqueueQuery(n,t)).createQueryResponseForCount())}async queryObjectIds(e,t){let n=await O(e,null,this._queryEngineParams.spatialReference);return this._validateQuery(n),q(n)?(n.resultRecordCount=n.resultRecordCount?Math.min(n.resultRecordCount,8e3):8e3,n.resultOffset=n.resultOffset??0,n.returnGeometry=void 0,n.outFields=void 0,(await this._enqueueQuery(n,t)).items.map(e=>e.getObjectId())):Array.from({length:await this._getFeatureCount()},(e,t)=>t)}async queryAttributeBins(e,t={}){throw new r(`parquet:unsupported`,`queryAttributeBins not supported.`)}async queryExtent(e,t){let r=await O(e,null,this._queryEngineParams.spatialReference);if(this._validateQuery(r),this._fullExtent&&!q(r))return{count:await this._getFeatureCount(),extent:this._fullExtent};let i=n(this._metadata.spatialReference);r.returnGeometry=!0,r.outFields=void 0;let a=f(p(),h),o=p(),s=await this._enqueueQuery(r,t),c=0;for(let e of s.items)e.getBounds(o)&&(m(a,o),c+=1);let l=C(a,i,r.outSR?n(r.outSR):i.toJSON(),i,!1);return{count:c,extent:l}}async queryStream(e,t){if(!t.signal)throw Error(`InternalError: AbortSignal must be passed`);let n=await this._getCandidateFiles(e),r=new ce(n,async(t,n)=>{let r=await t.file,i=await this._createParquetDisplayQuery(r,t.id,e);return r.executeQuery(i,K,n)}),i=this._streamIdCounter++,a=o(t.signal,e=>{let t=this._streams.get(i);t!=null&&(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 Error(`InternalError: AbortSignal must be passed`);let n=this._streams.get(e);if(!n)return{result:null};let r=await n.stream.next(t.signal);if(r==null)return n.handle.remove(),this._streams.delete(e),{result:null};let 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){let{result:n}=await this.getStreamNext(e,t);if(n==null)return null;let r=(await R()).ParquetChunk.deserialize(new Uint8Array(n.buffer)),i=new U(this._metadata,this._indexMap,r,n.fileId),a=[];for(;i.next();){let e=x(i.readGeometryWorldSpace(),i.geometryType,i.hasZ,i.hasM),t=i.readAttributes();a.push({attributes:t,geometry:e})}return{features:a}}async createPatch(e,t,n,r,i){if(!i.signal)throw Error(`InternalError: AbortSignal must be passed`);return(await(await(await this._getFileInfoById(e)).file).createChunkPatch(t,n,r,i.signal)).serialize().buffer}async _updateProvider(e){let 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){let t=await this._provider.getFiles(),n=await this._getSpatialFilePruning(e);if(n==null)return t;let r=t.filter(e=>this._mayIncludeFileForSpatialPruning(e,n));return n.type===`xz`?Se(r,n):r}async _queryStatistics(e,t){let n=await O({...e},null,this._queryEngineParams.spatialReference);if(n.returnGeometry=void 0,_e(n,this._fieldsIndex)){let e=await this._getStatisticsFromFiles(n);if(e)return e}return(await this._enqueueQuery(n,t)).createQueryResponse()}async _getStatisticsFromFiles(e){let t=await this._provider.getFiles(),n={},r=[];for(let i of e.outStatistics??[]){let e=ye(i,t);if(!e.available)return null;n[i.outStatisticFieldName]=e.value,r.push(J(i,this._fieldsIndex))}return{fields:r,features:[{attributes:n}]}}async _getSpatialFilePruning(e){if(e.type!==`tile`&&(e.type!==`arcade`||e.extent==null))return null;let t=this._displayOptimization?.index;if(t==null)return null;let n=e.outSpatialReference.wkid;if(t.wkid==null||n==null)return null;let r=t.wkid,i=await R();switch(t.type){case`xz`:return{type:`xz`,fieldName:y(t.code),intersects:(a,o)=>i.queryIntersectsXZStatistics(t.fullExtent,e.extent,n,r,t.maxLevel,a,o)};case`z`:return{type:`xy`,xFieldName:y(t.xColumn),yFieldName:y(t.yColumn),intersects:(t,a,o,s)=>i.queryIntersectsXYStatistics(e.extent,n,r,t,a,o,s)}}}_mayIncludeFileForSpatialPruning(e,t){switch(t.type){case`xz`:{let n=Z(e,t);return n?.type===`null-only`?!1:n?.type!==`bounds`||t.intersects(n.minValue,n.maxValue)}case`xy`:{let n=e.statistics.statistics.get(t.xFieldName),r=e.statistics.statistics.get(t.yFieldName);return n?.type===`null-only`||r?.type===`null-only`?!1:n?.type!==`bounds`||r?.type!==`bounds`||t.intersects(n.minValue,n.maxValue,r.minValue,r.maxValue)}}}async _tryDeriveParquetFullExtent(n){if(!n.spatialReference)return null;if(this._fullExtent==null&&n.geometryEncoding?.type===`location`){let r=await this._provider.getFiles(),{xField:i,yField:a}=n.geometryEncoding,o=f(p(),h),s=!1;for(let n of r){let r=await n.file;for(let n of r.rowGroups()){let r={stack:[],error:void 0,hasError:!1};try{let t=e(r,n.columnDescriptorForAttribute(i),!1),c=e(r,n.columnDescriptorForAttribute(a),!1),l=A(t),u=A(c);if(l?.type===`bounds`&&u?.type===`bounds`){let e=[l.minValue,u.minValue,l.maxValue,u.maxValue];ee(o,e),s=!0}n.free()}catch(e){r.error=e,r.hasError=!0}finally{t(r)}}}return s?{xmin:o[0],ymin:o[1],xmax:o[3],ymax:o[4],spatialReference:n.spatialReference?.toJSON()}:null}return null}async _getFileInfoById(e){let t=await this._provider.getFiles();for(let n of t)if(n.id===e)return n;throw 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,n,r,i){let a=(await R()).Query.new();n!=null&&a.setPreFilterStart(n),r!=null&&a.setPreFilterCount(r),i!=null&&a.setPostFilterCount(i);let o=await this._getRequiredFields(e);a.setOutFields(o),(e.geometry||e.returnGeometry)&&a.setReturnGeometry(!0),a.setReturnZ(!!e.returnZ),a.setReturnM(!!e.returnM);let s=this._tryGetGeneralizedGeometryResolution(e);s!=null&&a.setSourceResolution(s);let c=e.geometry?.spatialReference??this._queryEngineParams.spatialReference,l=c.wkid;if(e.geometry&&(_(c)||v(c))){let t=te(ne(),g);for(let n of w(e.geometry))re(t,n);a.setOutSpatialReference(l),a.setExtent({xmin:t[0],ymin:t[1],xmax:t[2],ymax:t[3]})}if(e.where){let{id:n,file:r}=t;await this._setWhereClause(a,await r,n,e.where)}return a}async _createParquetDisplayQuery(e,t,n){let r=(await R()).Query.new();if(n.type===`tile`){r.setExtent(n.extent),r.setQuantizationTransform(n.transform);let e=this._sourceResolution(n.resolution,n.outSpatialReference);e!=null&&r.setSourceResolution(e)}else n.type===`arcade`&&n.extent!=null&&r.setExtent(n.extent);return r.setOutFields(n.outFields.filter(e=>this._indexMap[e]!=null)),r.setOutSpatialReference(n.outSpatialReference.wkid),r.setReturnGeometry(n.returnGeometry),r.setReturnZ(n.returnZ),r.setReturnM(n.returnM),n.where&&await this._setWhereClause(r,e,t,n.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,n,i){let a=this._indexMap,o=this._fieldsIndex,s={getAttribute(e,r){let i=a[r];if(i==null){if(o.get(r)?.name===`__OBJECTID`){let t=e.row+e.rowGroupStart;return se(n,t)}return null}let s=o.get(r);return b(t,e.rowGroup,e.row,i,s.type)}},c=await l(i,this._fieldsIndex);if(!c.isStandardized)throw new r(`sql-parse-error`,`expression is not standardized`);let u=(e,t,n)=>c.testFeatureCompiled({rowGroup:e,row:t,rowGroupStart:n},s,null),d=c.fieldNames.map(e=>o.get(e)).filter(e=>e&&this._indexMap[e?.name]!=null);e.setWhere(i),e.setWhereEvaluator(u),e.setWhereFields(d.map(e=>e.name))}async*_streamFeatures(e,t,n,r,i){let a=await this._provider.getFiles(),o=0;for(let s of a){let a=o,c=o+s.statistics.rowCount;if(o+=s.statistics.rowCount,t!=null&&t>=c)continue;let l=t==null?null:Math.max(t-a,0),u=n;if(n!=null){let e=t??0,r=e+n;u=Math.max(Math.min(r,c)-Math.max(e,a),0)}if(u===0)continue;let d=await this._createParquetQuery(e,s,l,u,r),f=await(await s.file).executeQuery(d,K),p=async()=>{let e=await f.next(i);if(!e)return null;let t=new U(this._metadata,this._indexMap,e,s.id);return X([new B(t,null,0,!1)],this._queryEngineParams)},m=await p();for(;m!=null;)yield m,m=await p()}}async _queryFeaturesWithQueryEnginePagination(e,t){let n=[],r=this._streamFeatures(e,null,null,null,t),i=await r.next();for(;!i.done;){let a=await i.value.executeQueryForOpaqueFeatures({...e,where:void 0},t);for(let e of a)n.push(e);i=await r.next()}return n}async _queryFeaturesWithUpfrontPagination(e,t){let n=e.resultOffset??0,r=e.resultRecordCount??K,i,a,o;he(e)?ge(e)||(o=n+r):(n&&=(i=n,0),a=e.resultRecordCount);let s=[],c=this._streamFeatures(e,i,a,o,t),l=await c.next();for(;!l.done&&r>0;){let i=await l.value.executeQueryForOpaqueFeatures({...e,where:void 0},t);for(let e of i){if(n>0){n--;continue}if(s.push(e),--r<=0)return s}l=await c.next()}return s}_enqueueQuery(e,t){return this._queue.push(e,t)}async _executeQuery(e,t){if(e.objectIds?.length){let n=new Map;for(let t of e.objectIds){let e=ae(t),r=oe(t),i=n.get(e);i||(i=[],n.set(e,i)),i.push(r)}let r=[];for(let[i,a]of n.entries()){let n=await this._executeFileIdQuery(e,i,a,t);for(let e of n)r.push(e)}return new D(r,e,{fieldsIndex:this._fieldsIndex,geometryType:this._metadata.geometryType,spatialReference:this._queryEngineParams.spatialReference,hasM:this._hasM,hasZ:this._hasZ,featureAdapter:W,featureIdInfo:this._queryEngineParams.featureIdInfo})}if(e.where===`1=1`&&(e.where=null),e.resultOffset??=0,e.resultRecordCount??=await this._getFeatureCount(),e.resultRecordCount>2e7&&!(this._displayOptimization&&e.geometry))throw new r(`parquet:cannot-execute-query`,`Unable to execute query, dataset is too large.`);let n=!!e.orderByFields?.length||!!e.outStatistics?.length||!!e.returnDistinctValues,i=n?await this._queryFeaturesWithQueryEnginePagination(e,t):await this._queryFeaturesWithUpfrontPagination(e,t);return n||(e.resultOffset=0),new D(i,e,{fieldsIndex:this._fieldsIndex,geometryType:this._metadata.geometryType,spatialReference:this._queryEngineParams.spatialReference,hasM:this._hasM,hasZ:this._hasZ,featureAdapter:W,featureIdInfo:this._queryEngineParams.featureIdInfo})}async _executeFileIdQuery(e,t,n,r){let i=await this._getRequiredFields(e),a=(await R()).Query.new();a.setOutFields(i),a.setReturnGeometry(!!e.returnGeometry),a.setReturnZ(!!e.returnZ),a.setReturnM(!!e.returnM),a.setIds(new Uint32Array(n));let o=await(await this._getFile(t)).executeQuery(a,K,r),s=await o.next(r),c=0,l=[];for(;s!=null;){let e=new U(this._metadata,this._indexMap,s,t),n=new B(e,null,c++,!1);l.push(n),s=await o.next(r)}return X(l,this._queryEngineParams).executeQueryForOpaqueFeatures(e,r)}async _getRequiredFields(e){let t=new Set;if(e.outStatistics)for(let n of S(this._fieldsIndex,e.outStatistics,e.groupByFieldsForStatistics))t.add(n);else if(e.outFields)for(let n of e.outFields)t.add(n);return(t.has(`*`)?this._fieldsIndex.fields.map(e=>e.name):Array.from(t)).filter(e=>this._indexMap[e]!=null)}_tryGetGeneralizedGeometryResolution(e){if(!this._displayOptimization)return null;let t=e.outSR??this._queryEngineParams.spatialReference;if(!_(t)&&!v(t))return null;let n=e.quantizationParameters?.tolerance??e.maxAllowableOffset;return n?this._sourceResolution(n,t):null}_sourceResolution(e,t){let n=this._queryEngineParams.spatialReference,r=u(t)/u(n)*e;return!Number.isFinite(r)||r<=0?null:r}}function fe(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 pe(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 me(e){switch(e){case`fullText`:case`having`:case`timeExtent`:return!0;case`historicMoment`:case`aggregateIds`:case`uniqueIds`:case`gdbVersion`:return!1;case`objectIds`:case`where`:case`resultOffset`:case`geometry`:case`resultRecordCount`:return!1}return!1}function q(e){for(let t in e){let n=t;if(fe(n)&&e[n]!==null)return!0}return!1}function he(e){for(let t in e){let n=t;if(pe(n)&&e[n]!==null)return!0}return!1}function ge(e){for(let t in e){let n=t;if(me(n)&&e[n]!==null)return!0}return!1}function _e(e,t){return!!e.outStatistics?.length&&!q(e)&&!e.groupByFieldsForStatistics?.length&&!e.orderByFields?.length&&!e.returnDistinctValues&&!e.returnAggIds&&e.outStatistics.every(e=>ve(e,t))}function ve(e,t){switch(e.statisticType){case`count`:return e.onStatisticField===`1`||t.get(e.onStatisticField)!=null;case`min`:case`max`:{let n=t.get(e.onStatisticField);return n!=null&&N(n)}default:return!1}}function J(e,t){let n=e.statisticType===`exceedslimit`?null:t.get(e.onStatisticField),r=(e.statisticType===`min`||e.statisticType===`max`)&&n?.type===`esriFieldTypeDate`?n.type:`esriFieldTypeDouble`;return{name:e.outStatisticFieldName,alias:e.outStatisticFieldName,type:r}}function ye(e,t){switch(e.statisticType){case`count`:return be(e,t);case`min`:return Y(e,t,Math.min);case`max`:return Y(e,t,Math.max);default:return{available:!1,value:null}}}function be(e,t){if(e.statisticType!==`count`)return{available:!1,value:null};if(e.onStatisticField===`1`)return{available:!0,value:t.reduce((e,t)=>e+t.statistics.rowCount,0)};let n=0;for(let r of t){let t=r.statistics.statistics.get(e.onStatisticField);if(t==null||t.nullCount==null)return{available:!1,value:null};n+=r.statistics.rowCount-t.nullCount}return{available:!0,value:n}}function Y(e,t,n){if(e.statisticType!==`min`&&e.statisticType!==`max`)return{available:!1,value:null};let r=null,i=e.statisticType===`min`?`minValue`:`maxValue`;for(let a of t){let t=a.statistics.statistics.get(e.onStatisticField);if(t==null)return{available:!1,value:null};switch(t.type){case`null-only`:continue;case`unknown`:return{available:!1,value:null};case`bounds`:{let e=xe(t[i]);if(e==null)return{available:!1,value:null};r=r==null?e:n(r,e);break}}}return{available:!0,value:r}}function xe(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function X(e,t){let n=new V;for(let t of e)n.insert(t);return new T({...t,featureStore:n})}function Z(e,t){return e.statistics.statistics.get(t.fieldName)??null}function Se(e,t){return e.slice().sort((e,n)=>{let r=Q(e,t),i=Q(n,t);return r===i?0:r<i?-1:1})}function Q(e,t){let n=Z(e,t);return n?.type===`bounds`?n.maxValue-n.minValue:1/0}function $(e,t,n){let r=e?.featureCount,i=!1;return r!=null&&r<has(`parquetlayer-full-query-feature-count`)&&(i=!0),{analytics:{supportsCacheHint:!1},attachment:null,data:{isVersioned:!1,isBranchVersioned:!1,supportedCurveTypes:[],supportsAttachment:!1,supportsM:n,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:{...E,maxRecordCount:K,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 Ce(e){return!!e.objectIds?.length||!!e.outStatistics||!!e.orderByFields?.length||!!e.returnDistinctValues}export{de as default};
2
+ import{__addDisposableResource as e,__disposeResources as t}from"tslib";import{toConst as n}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 o,throwIfAborted as s}from"../../../../core/promiseUtils.js";import{QueueProcessor as c}from"../../../../core/QueueProcessor.js";import{parseWhereClause as l}from"../../../../core/sql.js";import{getMetersPerUnitForSR as u}from"../../../../core/units.js";import d from"../../../../geometry/SpatialReference.js";import{set as f,create as p,expandWithAABB as m,expandWithRect as ee,negativeInfinity as h}from"../../../../geometry/support/aaBoundingBox.js";import{copy as te,negativeInfinity as g,create as ne,expandWithRect as re}from"../../../../geometry/support/aaBoundingRect.js";import{isWebMercator as _,isWGS84 as v}from"../../../../geometry/support/spatialReferenceUtils.js";import{normalizeColumnPath as y,readParquetFileAttribute as b}from"../../../parquet.js";import{convertToGeometry as x}from"../../featureConversionUtils.js";import{getFieldNamesFromStatistics as S}from"../../data/attributeSupport.js";import{getQueryResultExtent as C,getQueryBoundingRects as w,QueryEngine as T}from"../../data/QueryEngine.js";import{queryCapabilities as ie}from"../../data/QueryEngineCapabilities.js";import{QueryEngineResult as E}from"../../data/QueryEngineResult.js";import{normalizeQueryLike as D}from"../../data/queryUtils.js";import{createFileProvider as O}from"../parquet/createFileProvider.js";import{readFieldStatistic as k}from"../parquet/ParquetFileStatistics.js";import{createDrawingInfo as ae}from"./clientSideDefaults.js";import{getParquetFileId as oe,getParquetRowId as se,getParquetObjectId as ce}from"./parquetIdUtils.js";import A from"../../../support/Field.js";import j from"../../../support/FieldsIndex.js";import{isNumericField as M}from"../../../support/fieldUtils.js";import{fromParquetGeometryEncodingJSON as N}from"../../../support/parquetEncodingUtils.js";import{completeParquetLayerInfo as P,fromParquetJSONGeometryType as F,toParquetJSONGeometryType as I}from"../../../support/parquetUtils.js";import{loadParquetModule as L}from"../../../../libs/librust-parquet/loadParquetModule.js";import{utc as R}from"../../../../time/constants.js";import{FeatureStoreQueryAdapter as z}from"../../../../views/2d/layers/features/FeatureStoreQueryAdapter.js";import{FeatureSnapshotSourceChunk as B}from"../../../../views/2d/layers/features/sources/strategies/chunks/FeatureSnapshotSourceChunk.js";import{FeatureSourceChunkStore as V}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 U}from"../../../../views/2d/layers/features/support/FeatureSetReaderParquet.js";const W=new z,G=`__OBJECTID`,K=8e3;class le{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;){s(e),await this._fill(e);let t=await ue(this._pending);if(this._pending.delete(t.read),this._resolvedCount++,t.chunk!=null)return t.chunk}return null}async _fill(e){for(this._removeDone();this._pending.size<8;){let t=this._getOrCreateNextStream(e);if(t==null)return;this._pending.add(t.read(e))}}_getOrCreateNextStream(e){let t=this._resolvedCount>=8?8:2;if(this._fileIndex<this._files.length&&this._streams.length<t){let t=this._files[this._fileIndex++],n=new de(t.id,this._createFileStream(t,e));return this._streams.push(n),n}return this._getNextStream()}_getNextStream(){let e=this._streams.length;for(let t=0;t<e;t++){let n=(this._streamIndex+t)%e,r=this._streams[n];if(r.canRead)return this._streamIndex=(n+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 ue(e){return Promise.race(Array.from(e,async e=>({read:e,chunk:await e})))}class de{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&&this._readCount===0}async read(e){this._readCount++;try{let t=await(await this._stream).next(e);return t==null?(this._reachedEnd=!0,null):{fileId:this._fileId,chunk:t}}finally{this._readCount--}}}class fe{constructor(){this._hasZ=!1,this._hasM=!1,this._queue=new c({concurrency:4,process:(e,t)=>this._executeQuery(e,t)}),this._streams=new Map,this._streamIdCounter=0,this._indexMap={},this._handles=new i}async load(e){let t=e.spatialReference?d.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));let n=await this._provider.getMetadata(),i=await P(n,{fields:e.fields?.map(e=>A.fromJSON(e)),geometryEncoding:e.geometryEncoding?N(e.geometryEncoding):null,geometryType:e.geometryType?F(e.geometryType):null,displayOptimization:e.displayOptimization,spatialReference:t});if(this._hasZ=!!n?.hasZ,this._hasM=!!n?.hasM,!i.fields)throw new r(`parquet:unsupported`,`Fields must be defined`);let o;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=d.WGS84),o={geometry:i.geometryEncoding?{geometryType:I(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(o),this._capabilities=$(await this._getFileStatistics(),this._hasZ,this._hasM);let s=await this._provider.getFiles();if(!s.length)return{layerDefinition:{},capabilities:$(null,this._hasZ,this._hasM)};let c=await s[0].file;i.file=c;let{fields:l}=i;if(l==null)throw new r(`parquet-layer:missing-metadata`,`Unable to create parquet source: cannot infer fields`,l);l.push(new A({name:G,type:`oid`,alias:G}));for(let e of l){let t=c.getColumnId(e.name);t!=null&&(this._indexMap[e.name]=t)}let u=j.fromLayerJSON({fields:l.map(e=>e.toJSON()),dateFieldsTimeReference:{timeZoneIANA:`UTC`}});this._fieldsIndex=u;let f=I(i.geometryType??`point`);return this._metadata=H.createFeature({fieldsIndex:u.toJSON(),geometryType:f,hasZ:this._hasZ,hasM:this._hasM,featureIdInfo:{type:`object-id`,fieldName:G},subtypes:null,subtypeField:null,types:null,typeIdField:null,globalIdField:null,spatialReference:i.spatialReference,outSpatialReference:null,attributeSpatialReference:null,timeInfo:null,timeReferenceUnknownClient:null,dateFieldsTimeZone:R}),this._queryEngineParams={fieldsIndex:this._metadata.fieldsIndex,geometryType:f,featureIdInfo:{type:`object-id`,fieldName:G},hasM:this._hasM,hasZ:this._hasZ,spatialReference:i.spatialReference?.toJSON()??{wkid:4326},aggregateAdapter:null,timeInfo:null,definitionExpression:null},this._fullExtent=n?.extent?n.extent:await this._tryDeriveParquetFullExtent(i),{capabilities:this._capabilities,layerDefinition:{fields:i.fields?.map(e=>e.toJSON()),drawingInfo:ae(f),extent:this._fullExtent??void 0,geometryType:f,geometryEncoding:i.geometryEncoding?.toJSON(),displayOptimization:i.displayOptimization}}}destroy(){this._provider.destroy(),this._queue.destroy();for(let{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};let t=O(e,this._provider.getGeometryInfo(),()=>this._customParameters);await this._updateProvider(t)}async getDiagnosticsSnapshot(){let 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){let n=await D(e,null,this._queryEngineParams.spatialReference);return this._validateQuery(n),we(n)||(n.resultRecordCount=n.resultRecordCount?Math.min(n.resultRecordCount,K):K,n.resultOffset=n.resultOffset??0),n.outStatistics?this._queryStatistics(n,t):(n.returnDistinctValues&&(n.returnGeometry=void 0),(await this._enqueueQuery(n,t)).createQueryResponse())}async queryFeatureCount(e,t){let n=await D(e,null,this._queryEngineParams.spatialReference);return this._validateQuery(n),!q(n)&&!n.returnDistinctValues&&!n.groupByFieldsForStatistics?.length&&!n.outStatistics?.length?this._getFeatureCount():(n.returnDistinctValues||(n.outFields=void 0),n.returnGeometry=void 0,(await this._enqueueQuery(n,t)).createQueryResponseForCount())}async queryObjectIds(e,t){let n=await D(e,null,this._queryEngineParams.spatialReference);return this._validateQuery(n),q(n)?(n.resultRecordCount=n.resultRecordCount?Math.min(n.resultRecordCount,8e3):8e3,n.resultOffset=n.resultOffset??0,n.returnGeometry=void 0,n.outFields=void 0,n.returnDistinctValues=void 0,(await this._enqueueQuery(n,t)).items.map(e=>e.getObjectId())):Array.from({length:await this._getFeatureCount()},(e,t)=>t)}async queryAttributeBins(e,t={}){throw new r(`parquet:unsupported`,`queryAttributeBins not supported.`)}async queryExtent(e,t){let r=await D(e,null,this._queryEngineParams.spatialReference);if(this._validateQuery(r),this._fullExtent&&!q(r))return{count:await this._getFeatureCount(),extent:this._fullExtent};let i=n(this._metadata.spatialReference);r.returnGeometry=!0,r.outFields=void 0;let a=f(p(),h),o=p(),s=await this._enqueueQuery(r,t),c=0;for(let e of s.items)e.getBounds(o)&&(m(a,o),c+=1);let l=C(a,i,r.outSR?n(r.outSR):i.toJSON(),i,!1);return{count:c,extent:l}}async queryStream(e,t){if(!t.signal)throw Error(`InternalError: AbortSignal must be passed`);let n=await this._getCandidateFiles(e),r=new le(n,async(t,n)=>{let r=await t.file,i=await this._createParquetDisplayQuery(r,t.id,e);return r.executeQuery(i,K,n)}),i=this._streamIdCounter++,a=o(t.signal,e=>{let t=this._streams.get(i);t!=null&&(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 Error(`InternalError: AbortSignal must be passed`);let n=this._streams.get(e);if(!n)return{result:null};let r=await n.stream.next(t.signal);if(r==null)return n.handle.remove(),this._streams.delete(e),{result:null};let 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){let{result:n}=await this.getStreamNext(e,t);if(n==null)return null;let r=(await L()).ParquetChunk.deserialize(new Uint8Array(n.buffer)),i=new U(this._metadata,this._indexMap,r,n.fileId),a=[];for(;i.next();){let e=x(i.readGeometryWorldSpace(),i.geometryType,i.hasZ,i.hasM),t=i.readAttributes();a.push({attributes:t,geometry:e})}return{features:a}}async createPatch(e,t,n,r,i){if(!i.signal)throw Error(`InternalError: AbortSignal must be passed`);return(await(await(await this._getFileInfoById(e)).file).createChunkPatch(t,n,r,i.signal)).serialize().buffer}async _updateProvider(e){let 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){let t=await this._provider.getFiles(),n=await this._getSpatialFilePruning(e);if(n==null)return t;let r=t.filter(e=>this._mayIncludeFileForSpatialPruning(e,n));return n.type===`xz`?Ce(r,n):r}async _queryStatistics(e,t){let n=await D({...e},null,this._queryEngineParams.spatialReference);if(n.returnGeometry=void 0,ve(n,this._fieldsIndex)){let e=await this._getStatisticsFromFiles(n);if(e)return e}return(await this._enqueueQuery(n,t)).createQueryResponse()}async _getStatisticsFromFiles(e){let t=await this._provider.getFiles(),n={},r=[];for(let i of e.outStatistics??[]){let e=xe(i,t);if(!e.available)return null;n[i.outStatisticFieldName]=e.value,r.push(be(i,this._fieldsIndex))}return{fields:r,features:[{attributes:n}]}}async _getSpatialFilePruning(e){if(e.type!==`tile`&&(e.type!==`arcade`||e.extent==null))return null;let t=this._displayOptimization?.index;if(t==null)return null;let n=e.outSpatialReference.wkid;if(t.wkid==null||n==null)return null;let r=t.wkid,i=await L();switch(t.type){case`xz`:return{type:`xz`,fieldName:y(t.code),intersects:(a,o)=>i.queryIntersectsXZStatistics(t.fullExtent,e.extent,n,r,t.maxLevel,a,o)};case`z`:return{type:`xy`,xFieldName:y(t.xColumn),yFieldName:y(t.yColumn),intersects:(t,a,o,s)=>i.queryIntersectsXYStatistics(e.extent,n,r,t,a,o,s)}}}_mayIncludeFileForSpatialPruning(e,t){switch(t.type){case`xz`:{let n=Z(e,t);return n?.type===`null-only`?!1:n?.type!==`bounds`||t.intersects(n.minValue,n.maxValue)}case`xy`:{let n=e.statistics.statistics.get(t.xFieldName),r=e.statistics.statistics.get(t.yFieldName);return n?.type===`null-only`||r?.type===`null-only`?!1:n?.type!==`bounds`||r?.type!==`bounds`||t.intersects(n.minValue,n.maxValue,r.minValue,r.maxValue)}}}async _tryDeriveParquetFullExtent(n){if(!n.spatialReference)return null;if(this._fullExtent==null&&n.geometryEncoding?.type===`location`){let r=await this._provider.getFiles(),{xField:i,yField:a}=n.geometryEncoding,o=f(p(),h),s=!1;for(let n of r){let r=await n.file;for(let n of r.rowGroups()){let r={stack:[],error:void 0,hasError:!1};try{let t=e(r,n.columnDescriptorForAttribute(i),!1),c=e(r,n.columnDescriptorForAttribute(a),!1),l=k(t),u=k(c);if(l?.type===`bounds`&&u?.type===`bounds`){let e=[l.minValue,u.minValue,l.maxValue,u.maxValue];ee(o,e),s=!0}n.free()}catch(e){r.error=e,r.hasError=!0}finally{t(r)}}}return s?{xmin:o[0],ymin:o[1],xmax:o[3],ymax:o[4],spatialReference:n.spatialReference?.toJSON()}:null}return null}async _getFileInfoById(e){let t=await this._provider.getFiles();for(let n of t)if(n.id===e)return n;throw 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,n,r,i){let a=(await L()).Query.new();n!=null&&a.setPreFilterStart(n),r!=null&&a.setPreFilterCount(r),i!=null&&a.setPostFilterCount(i);let o=await this._getRequiredFields(e);a.setOutFields(o),(e.geometry||e.returnGeometry)&&a.setReturnGeometry(!0),a.setReturnZ(!!e.returnZ),a.setReturnM(!!e.returnM);let s=this._tryGetGeneralizedGeometryResolution(e);s!=null&&a.setSourceResolution(s);let c=e.geometry?.spatialReference??this._queryEngineParams.spatialReference,l=c.wkid;if(e.geometry&&(_(c)||v(c))){let t=te(ne(),g);for(let n of w(e.geometry))re(t,n);a.setOutSpatialReference(l),a.setExtent({xmin:t[0],ymin:t[1],xmax:t[2],ymax:t[3]})}if(e.where){let{id:n,file:r}=t;await this._setWhereClause(a,await r,n,e.where)}return a}async _createParquetDisplayQuery(e,t,n){let r=(await L()).Query.new();if(n.type===`tile`){r.setExtent(n.extent),r.setQuantizationTransform(n.transform);let e=this._sourceResolution(n.resolution,n.outSpatialReference);e!=null&&r.setSourceResolution(e)}else n.type===`arcade`&&n.extent!=null&&r.setExtent(n.extent);return r.setOutFields(n.outFields.filter(e=>this._indexMap[e]!=null)),r.setOutSpatialReference(n.outSpatialReference.wkid),r.setReturnGeometry(n.returnGeometry),r.setReturnZ(n.returnZ),r.setReturnM(n.returnM),n.where&&await this._setWhereClause(r,e,t,n.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,n,i){let a=this._indexMap,o=this._fieldsIndex,s={getAttribute(e,r){let i=a[r];if(i==null){if(o.get(r)?.name===`__OBJECTID`){let t=e.row+e.rowGroupStart;return ce(n,t)}return null}let s=o.get(r);return b(t,e.rowGroup,e.row,i,s.type)}},c=await l(i,this._fieldsIndex);if(!c.isStandardized)throw new r(`sql-parse-error`,`expression is not standardized`);let u=(e,t,n)=>c.testFeatureCompiled({rowGroup:e,row:t,rowGroupStart:n},s,null),d=c.fieldNames.map(e=>o.get(e)).filter(e=>e&&this._indexMap[e?.name]!=null);e.setWhere(i),e.setWhereEvaluator(u),e.setWhereFields(d.map(e=>e.name))}async*_streamFeatures(e,t,n,r,i){let a=await this._provider.getFiles(),o=0;for(let s of a){let a=o,c=o+s.statistics.rowCount;if(o+=s.statistics.rowCount,t!=null&&t>=c)continue;let l=t==null?null:Math.max(t-a,0),u=n;if(n!=null){let e=t??0,r=e+n;u=Math.max(Math.min(r,c)-Math.max(e,a),0)}if(u===0)continue;let d=await this._createParquetQuery(e,s,l,u,r),f=await(await s.file).executeQuery(d,K),p=async()=>{let e=await f.next(i);if(!e)return null;let t=new U(this._metadata,this._indexMap,e,s.id);return X([new B(t,null,0,!1)],this._queryEngineParams)},m=await p();for(;m!=null;)yield m,m=await p()}}async _queryFeaturesWithQueryEnginePagination(e,t){let n=[],r=this._streamFeatures(e,null,null,null,t),i=await r.next();for(;!i.done;){let a=await i.value.executeQueryForOpaqueFeatures({...e,where:void 0},t);for(let e of a)n.push(e);i=await r.next()}return n}async _queryFeaturesWithUpfrontPagination(e,t){let n=e.resultOffset??0,r=e.resultRecordCount??K,i,a,o;ge(e)?_e(e)||(o=n+r):(n&&=(i=n,0),a=e.resultRecordCount);let s=[],c=this._streamFeatures(e,i,a,o,t),l=await c.next();for(;!l.done&&r>0;){let i=await l.value.executeQueryForOpaqueFeatures({...e,where:void 0},t);for(let e of i){if(n>0){n--;continue}if(s.push(e),--r<=0)return s}l=await c.next()}return s}_enqueueQuery(e,t){return this._queue.push(e,t)}async _executeQuery(e,t){if(e.objectIds?.length){let n=new Map;for(let t of e.objectIds){let e=oe(t),r=se(t),i=n.get(e);i||(i=[],n.set(e,i)),i.push(r)}let r=[];for(let[i,a]of n.entries()){let n=await this._executeFileIdQuery(e,i,a,t);for(let e of n)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:W,featureIdInfo:this._queryEngineParams.featureIdInfo})}if(e.where===`1=1`&&(e.where=null),e.resultOffset??=0,e.resultRecordCount??=await this._getFeatureCount(),e.resultRecordCount>2e7&&!(this._displayOptimization&&e.geometry))throw new r(`parquet:cannot-execute-query`,`Unable to execute query, dataset is too large.`);let n=!!e.orderByFields?.length||!!e.outStatistics?.length||!!e.returnDistinctValues,i=n?await this._queryFeaturesWithQueryEnginePagination(e,t):await this._queryFeaturesWithUpfrontPagination(e,t);return n||(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:W,featureIdInfo:this._queryEngineParams.featureIdInfo})}async _executeFileIdQuery(e,t,n,r){let i=await this._getRequiredFields(e),a=(await L()).Query.new();a.setOutFields(i),a.setReturnGeometry(!!e.returnGeometry),a.setReturnZ(!!e.returnZ),a.setReturnM(!!e.returnM),a.setIds(new Uint32Array(n));let o=await(await this._getFile(t)).executeQuery(a,K,r),s=await o.next(r),c=0,l=[];for(;s!=null;){let e=new U(this._metadata,this._indexMap,s,t),n=new B(e,null,c++,!1);l.push(n),s=await o.next(r)}return X(l,this._queryEngineParams).executeQueryForOpaqueFeatures(e,r)}async _getRequiredFields(e){let t=new Set;if(e.outStatistics)for(let n of S(this._fieldsIndex,e.outStatistics,e.groupByFieldsForStatistics))t.add(n);else if(e.outFields)for(let n of e.outFields)t.add(n);return(t.has(`*`)?this._fieldsIndex.fields.map(e=>e.name):Array.from(t)).filter(e=>this._indexMap[e]!=null)}_tryGetGeneralizedGeometryResolution(e){if(!this._displayOptimization)return null;let t=e.outSR??this._queryEngineParams.spatialReference;if(!_(t)&&!v(t))return null;let n=e.quantizationParameters?.tolerance??e.maxAllowableOffset;return n?this._sourceResolution(n,t):null}_sourceResolution(e,t){let n=this._queryEngineParams.spatialReference,r=u(t)/u(n)*e;return!Number.isFinite(r)||r<=0?null:r}}function pe(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 me(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 he(e){switch(e){case`fullText`:case`having`:case`timeExtent`:return!0;case`historicMoment`:case`aggregateIds`:case`uniqueIds`:case`gdbVersion`:return!1;case`objectIds`:case`where`:case`resultOffset`:case`geometry`:case`resultRecordCount`:return!1}return!1}function q(e){for(let t in e){let n=t;if(pe(n)&&e[n]!==null)return!0}return!1}function ge(e){for(let t in e){let n=t;if(me(n)&&e[n]!==null)return!0}return!1}function _e(e){for(let t in e){let n=t;if(he(n)&&e[n]!==null)return!0}return!1}function ve(e,t){return!!e.outStatistics?.length&&!q(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 e.onStatisticField===`1`||t.get(e.onStatisticField)!=null;case`min`:case`max`:{let n=t.get(e.onStatisticField);return n!=null&&M(n)}default:return!1}}function be(e,t){let n=e.statisticType===`exceedslimit`?null:t.get(e.onStatisticField),r=(e.statisticType===`min`||e.statisticType===`max`)&&n?.type===`esriFieldTypeDate`?n.type:`esriFieldTypeDouble`;return{name:e.outStatisticFieldName,alias:e.outStatisticFieldName,type:r}}function xe(e,t){switch(e.statisticType){case`count`:return J(e,t);case`min`:return Y(e,t,Math.min);case`max`:return Y(e,t,Math.max);default:return{available:!1,value:null}}}function J(e,t){if(e.statisticType!==`count`)return{available:!1,value:null};if(e.onStatisticField===`1`)return{available:!0,value:t.reduce((e,t)=>e+t.statistics.rowCount,0)};let n=0;for(let r of t){let t=r.statistics.statistics.get(e.onStatisticField);if(t==null||t.nullCount==null)return{available:!1,value:null};n+=r.statistics.rowCount-t.nullCount}return{available:!0,value:n}}function Y(e,t,n){if(e.statisticType!==`min`&&e.statisticType!==`max`)return{available:!1,value:null};let r=null,i=e.statisticType===`min`?`minValue`:`maxValue`;for(let a of t){let t=a.statistics.statistics.get(e.onStatisticField);if(t==null)return{available:!1,value:null};switch(t.type){case`null-only`:continue;case`unknown`:return{available:!1,value:null};case`bounds`:{let e=Se(t[i]);if(e==null)return{available:!1,value:null};r=r==null?e:n(r,e);break}}}return{available:!0,value:r}}function Se(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function X(e,t){let n=new V;for(let t of e)n.insert(t);return new T({...t,featureStore:n})}function Z(e,t){return e.statistics.statistics.get(t.fieldName)??null}function Ce(e,t){return e.slice().sort((e,n)=>{let r=Q(e,t),i=Q(n,t);return r===i?0:r<i?-1:1})}function Q(e,t){let n=Z(e,t);return n?.type===`bounds`?n.maxValue-n.minValue:1/0}function $(e,t,n){let r=e?.featureCount,i=!1;return r!=null&&r<has(`parquetlayer-full-query-feature-count`)&&(i=!0),{analytics:{supportsCacheHint:!1},attachment:null,data:{isVersioned:!1,isBranchVersioned:!1,supportedCurveTypes:[],supportsAttachment:!1,supportsM:n,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:{...ie,maxRecordCount:K,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 we(e){return!!e.objectIds?.length||!!e.outStatistics||!!e.orderByFields?.length||!!e.returnDistinctValues}export{fe as default};
@@ -9,6 +9,7 @@ export interface LayerItemCollectionEvents {
9
9
  * Emitted when the user clicks an [action](https://developers.arcgis.com/javascript/latest/references/core/support/actions/ActionButton/) or
10
10
  * [action toggle](https://developers.arcgis.com/javascript/latest/references/core/support/actions/ActionToggle/) in a layer list.
11
11
  * Use this event to run custom logic when a specific action is triggered.
12
+ * The event object is a [LayerItemCollectionTriggerActionEvent](https://developers.arcgis.com/javascript/latest/references/core/layers/list/types/#LayerItemCollectionTriggerActionEvent).
12
13
  *
13
14
  * @see [@trigger-action](https://developers.arcgis.com/javascript/latest/references/core/layers/list/LayerItemCollection/#event-trigger-action)
14
15
  */
@@ -100,7 +100,11 @@ export type ItemVisibilityMode = "independent" | "inherited" | "exclusive";
100
100
  /** Properties used to construct a [LayerItemCollection](https://developers.arcgis.com/javascript/latest/references/core/layers/list/LayerItemCollection/). */
101
101
  export type LayerItemCollectionProperties = Partial<Pick<LayerItemCollection, "listItemCreatedFunction" | "operationalItems" | "view">>;
102
102
 
103
- /** The event object for the `trigger-action` event in the layer lists. */
103
+ /**
104
+ * The event object for the `trigger-action` event in the layer lists.
105
+ *
106
+ * @see [LayerItemCollection.@trigger-action](https://developers.arcgis.com/javascript/latest/references/core/layers/list/LayerItemCollection/#event-trigger-action)
107
+ */
104
108
  export interface LayerItemCollectionTriggerActionEvent {
105
109
  /** The action that was clicked by the user. */
106
110
  action: Action;
@@ -9,7 +9,7 @@ export interface TimeSeriesCalculationProperties extends Partial<Pick<TimeSeries
9
9
  *
10
10
  * @since 5.2
11
11
  */
12
- export type TimeSeriesCalculationMethod = "change-from-first" | "change-from-previous" | "percent-change-from-first" | "percent-change-from-previous";
12
+ export type TimeSeriesCalculationMethod = "change-from-average" | "change-from-first" | "change-from-previous" | "percent-change-from-average" | "percent-change-from-first" | "percent-change-from-previous";
13
13
 
14
14
  /**
15
15
  * Defines a calculation method that can be used to derive data values for a time series.
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{ClonableMixin as t}from"../../core/Clonable.js";import{JSONSupport as n}from"../../core/JSONSupport.js";import{property as r,subclass as i}from"../../core/accessorSupport/decorators.js";let a=class extends t(n){constructor(e){super(e),this.name=null,this.type=null,this.title=null}};e([r({type:String,json:{write:{isRequired:!0}}})],a.prototype,`name`,void 0),e([r({type:[`change-from-first`,`change-from-previous`,`percent-change-from-first`,`percent-change-from-previous`],json:{write:{isRequired:!0}}})],a.prototype,`type`,void 0),e([r({type:String,json:{write:!0}})],a.prototype,`title`,void 0),a=e([i(`esri.layers.support.TimeSeriesCalculation`)],a);const o=a;export{o as default};
2
+ import{__decorate as e}from"tslib";import{ClonableMixin as t}from"../../core/Clonable.js";import{JSONSupport as n}from"../../core/JSONSupport.js";import{property as r,subclass as i}from"../../core/accessorSupport/decorators.js";let a=class extends t(n){constructor(e){super(e),this.name=null,this.type=null,this.title=null}};e([r({type:String,json:{write:{isRequired:!0}}})],a.prototype,`name`,void 0),e([r({type:[`change-from-average`,`change-from-first`,`change-from-previous`,`percent-change-from-average`,`percent-change-from-first`,`percent-change-from-previous`],json:{write:{isRequired:!0}}})],a.prototype,`type`,void 0),e([r({type:String,json:{write:!0}})],a.prototype,`title`,void 0),a=e([i(`esri.layers.support.TimeSeriesCalculation`)],a);const o=a;export{o as default};
@@ -4,9 +4,19 @@
4
4
  *
5
5
  * @since 5.1
6
6
  */
7
+ import type FeatureLayer from "../FeatureLayer.js";
8
+ import type OrientedImageryLayer from "../OrientedImageryLayer.js";
9
+ import type ParquetLayer from "../ParquetLayer.js";
7
10
  import type DataSeriesInfo from "./TimeSeriesInfo.js";
8
11
  import type { FeatureLikeLayerOrAdapter } from "../../smartMapping/support/adapters/types.js";
9
12
 
13
+ /**
14
+ * A layer that supports data series configurations.
15
+ *
16
+ * @since 5.2
17
+ */
18
+ export type DataSeriesLayer = FeatureLayer | OrientedImageryLayer | ParquetLayer;
19
+
10
20
  /**
11
21
  * Returns the data series definition from a layer based on its name.
12
22
  *
@@ -15,16 +15,27 @@ return Decode(formattedCurrentTime,
15
15
  ${e.join(`
16
16
  `)}
17
17
  null
18
- );`}let o=i.map(({timeValue:e},t)=>` "${e}", ${t},`),s=i.map(({fieldName:e})=>` $feature.${e},`),c=r===`change-from-first`||r===`percent-change-from-first`?`var comparisonValue = fieldValues[0];`:`if (currentIndex == 0) {
18
+ );`}let o=i.map(({timeValue:e},t)=>` "${e}", ${t},`),s=i.map(({fieldName:e})=>` $feature.${e},`),c=[`change-from-average`,`percent-change-from-average`].includes(r),l=[`change-from-first`,`percent-change-from-first`].includes(r),u=c?`var total = 0;
19
+ var valueCount = 0;
20
+ for (var index = 0; index < Count(fieldValues); index++) {
21
+ if (!IsEmpty(fieldValues[index])) {
22
+ total += fieldValues[index];
23
+ valueCount++;
24
+ }
25
+ }
26
+ if (valueCount == 0) {
27
+ return null;
28
+ }
29
+ var comparisonValue = total / valueCount;`:l?`var comparisonValue = fieldValues[0];`:`if (currentIndex == 0) {
19
30
  return null;
20
31
  }
21
- var comparisonValue = fieldValues[currentIndex - 1];`,l=r===`percent-change-from-first`||r===`percent-change-from-previous`,u=`${c}
32
+ var comparisonValue = fieldValues[currentIndex - 1];`,d=[`percent-change-from-average`,`percent-change-from-first`,`percent-change-from-previous`].includes(r),f=`${u}
22
33
 
23
- if (IsEmpty(comparisonValue)${l?` || comparisonValue == 0`:``}) {
34
+ if (IsEmpty(comparisonValue)${d?` || comparisonValue == 0`:``}) {
24
35
  return null;
25
36
  }
26
37
 
27
- return ${l?`Round(((currentValue - comparisonValue) / comparisonValue) * 100, 2)`:`currentValue - comparisonValue`};`;return`var timeFormat = "${a}";
38
+ return ${d?`Round(((currentValue - comparisonValue) / comparisonValue) * 100, 2)`:`currentValue - comparisonValue`};`;return`var timeFormat = "${a}";
28
39
  var fieldValues = [
29
40
  ${s.join(`
30
41
  `)}
@@ -35,7 +46,7 @@ function getCurrentIndex() {
35
46
  var hasCurrentEnd = HasValue($view, ["timeProperties", "currentEnd"]);
36
47
 
37
48
  if (!hasCurrentStart && !hasCurrentEnd) {
38
- return ${i.length>1?1:`null`};
49
+ return ${c?0:i.length>1?1:`null`};
39
50
  }
40
51
 
41
52
  var currentTime = DefaultValue($view.timeProperties.currentEnd, $view.timeProperties.currentStart);
@@ -58,4 +69,4 @@ if (IsEmpty(currentValue)) {
58
69
  return null;
59
70
  }
60
71
 
61
- ${u}`}function t(e){switch(e){case`centuries`:case`decades`:case`years`:return`Y`;case`months`:return`Y-M`;case`weeks`:case`days`:return`Y-M-D`;case`hours`:case`minutes`:return`Y-M-D-H-mm`;case`seconds`:return`Y-M-D-H-mm-ss`;default:return`Y`}}export{e as createTimeSeriesExpression,t as getArcadeTimeFormatString};
72
+ ${f}`}function t(e){switch(e){case`centuries`:case`decades`:case`years`:return`Y`;case`months`:return`Y-M`;case`weeks`:case`days`:return`Y-M-D`;case`hours`:case`minutes`:return`Y-M-D-H-mm`;case`seconds`:return`Y-M-D-H-mm-ss`;default:return`Y`}}export{e as createTimeSeriesExpression,t as getArcadeTimeFormatString};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{getAssetUrl as e}from"../../assets.js";function t(){return new Promise(e=>import(`../../chunks/lyr3DMain.js`).then(({default:t})=>{let n=t({locateFile:r,onRuntimeInitialized:()=>e(n)})})).catch(e=>{throw e})}function n(){return new Promise(e=>import(`../../chunks/lyr3DWorker.js`).then(({default:t})=>{let n=t({locateFile:r,onRuntimeInitialized:()=>e(n)})})).catch(e=>{throw e})}function r(t){return e(`esri/libs/lyr3d/${t}`)}export{t as loadLyr3DMainWASM,n as loadLyr3DWorkerWASM};
2
+ import{getAssetUrl as e}from"../../assets.js";import t from"../../core/Error.js";const n=new Map;async function r(){let{default:e}=await import(`../../chunks/lyr3DMain.js`);return a(`lyr3DMain`,e)}async function i(){let{default:e}=await import(`../../chunks/lyr3DWorker.js`);return a(`lyr3DWorker`,e)}async function a(e,t){if(process.env.NODE_ENV!==`test`)return t({locateFile:s});let r=new URL(s(`${e}.wasm`),globalThis.document?.baseURI??globalThis.location.href).href,i=n.get(e);i?.url!==r&&(i={url:r,promise:o(r)},n.set(e,i));let{promise:a}=i;try{let e=await a;return await t({locateFile:s,instantiateWasm:(t,n)=>{let r=new WebAssembly.Instance(e,t);return n(r,e),r.exports}})}catch(t){throw n.get(e)?.promise===a&&n.delete(e),t}}async function o(e){let n=await fetch(e,{credentials:`same-origin`});if(!n.ok)throw new t(`lyr3d:wasm-load-failed`,`Failed to load WASM (${n.status})`,{url:e});return typeof WebAssembly.compileStreaming==`function`&&n.headers.get(`content-type`)?.split(`;`)[0].trim().toLowerCase()===`application/wasm`?WebAssembly.compileStreaming(n):WebAssembly.compile(await n.arrayBuffer())}function s(t){return e(`esri/libs/lyr3d/${t}`)}export{r as loadLyr3DMainWASM,i as loadLyr3DWorkerWASM};
@@ -12,8 +12,10 @@ import type TerminalConfiguration from "./support/TerminalConfiguration.js";
12
12
  import type TraceJobInfo from "./support/TraceJobInfo.js";
13
13
  import type Association from "../rest/networks/support/Association.js";
14
14
  import type AssociationGeometriesResult from "../rest/networks/support/AssociationGeometriesResult.js";
15
+ import type TraceLocation from "../rest/networks/support/TraceLocation.js";
15
16
  import type TraceResult from "../rest/networks/support/TraceResult.js";
16
17
  import type { AbortOptions } from "../core/promiseUtils.js";
18
+ import type { TraceLocationType } from "./support/typeUtils.js";
17
19
  import type { RequestOptions } from "../request/types.js";
18
20
  import type { ServiceEdits } from "../rest/featureService/types.js";
19
21
  import type { QueryAssociationsParametersProperties } from "../rest/networks/support/QueryAssociationsParameters.js";
@@ -195,6 +197,19 @@ export default class UtilityNetwork extends Network {
195
197
  * const isValidAssociation = await utilityNetwork.canAddAssociation(association);
196
198
  */
197
199
  canAddAssociation(association: Association): Promise<boolean>;
200
+ /**
201
+ * Creates a trace location from a utility network graphic.
202
+ *
203
+ * Point and polygon graphics use the first terminal in their terminal configuration, or terminal `1` when no configuration is available.
204
+ * Polyline graphics use a location halfway along the line (`percentAlong` is `0.5`). The returned location is not a filter barrier.
205
+ *
206
+ * @param graphic - The graphic to convert. Its geometry must be a point, polygon, polyline, or nonspatial (undefined).
207
+ * @param traceLocationType - Whether the location is a starting point, barrier, or stopping point.
208
+ * @returns The trace location created from the graphic.
209
+ * @since 5.2
210
+ * @throws An error if the graphic has no supported geometry type.
211
+ */
212
+ createTraceLocation(graphic: Graphic, traceLocationType: TraceLocationType): TraceLocation;
198
213
  /**
199
214
  * Returns [ServiceEdits](https://developers.arcgis.com/javascript/latest/references/core/rest/featureService/types/#ServiceEdits) which are used to add an [Association](https://developers.arcgis.com/javascript/latest/references/core/rest/networks/support/Association/) via the `applyEdits` method on the [FeatureService](https://developers.arcgis.com/javascript/latest/references/core/rest/featureService/FeatureService/) class.
200
215
  *
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../Graphic.js";import n from"../core/Error.js";import{getOrCreateMapValue as r}from"../core/MapUtils.js";import{watch as i}from"../core/reactiveUtils.js";import{property as a,subclass as o}from"../core/accessorSupport/decorators.js";import{getGraphicLayer as s}from"../graphic/graphicOriginUtils.js";import c from"../layers/FeatureLayer.js";import{queryAllJSON as l}from"../layers/support/featureQueryAll.js";import u from"./Network.js";import d from"./RulesTable.js";import f from"./support/NamedTraceConfiguration.js";import{getAssociationsTableFields as p}from"./support/networkFieldUtils.js";import m from"./support/NetworkSystemLayers.js";import h from"./support/TerminalConfiguration.js";import g from"./support/TraceJobInfo.js";import{AssociationTypeEnum as _,nullGuid as v,associationTypeKebabDict as y}from"./support/typeUtils.js";import{doesRuleAllowAssociation as b}from"./support/utils.js";import x from"../rest/networks/support/TelecomNetworkElement.js";import S from"../rest/support/Query.js";let C=class extends u{constructor(e){super(e),this.sharedNamedTraceConfigurations=[],this.type=`utility`,this._circuitManagerMap=new Map,this._terminalById=new Map,this._unitIdentifierManager=null}initialize(){this.addHandles(i(()=>[this.gdbVersion,this.historicMoment],()=>{this.networkSystemLayers.associationsTable&&(this.networkSystemLayers.associationsTable.gdbVersion!==this.gdbVersion&&(this.networkSystemLayers.associationsTable.gdbVersion=this.gdbVersion),this.networkSystemLayers.associationsTable.historicMoment!==this.historicMoment&&(this.networkSystemLayers.associationsTable.historicMoment=this.historicMoment))}))}get _rulesLayer(){let{gdbVersion:e,historicMoment:t}=this,n=this.networkSystemLayers.rulesTableUrl;return new c({url:n,gdbVersion:e,historicMoment:t})}get _telecomSourceSet(){let e=new Set;return this.dataElement?.domainNetworks.forEach(t=>{t.isTelecomNetwork&&(t.edgeSources?.forEach(t=>e.add(t.sourceId)),t.junctionSources?.forEach(t=>e.add(t.sourceId)))}),e}get _utilityLayerList(){let e=new Set;return this.dataElement?.domainNetworks?.map(t=>{t?.edgeSources?.map(({layerId:t,sourceId:n})=>{this._layerIdBySourceId.set(n,t),this._sourceIdByLayerId.set(t,n),e.add(t)}),t?.junctionSources?.map(({layerId:t,sourceId:n})=>{this._layerIdBySourceId.set(n,t),this._sourceIdByLayerId.set(t,n),e.add(t)})}),e}get serviceTerritoryFeatureLayerId(){return this.dataElement?.serviceTerritoryFeatureLayerId??null}get networkSystemLayers(){return new m({rulesTableId:this.sourceJSON?.systemLayers.rulesTableId,rulesTableUrl:this.sourceJSON?`${this.featureServiceUrl}/${this.sourceJSON?.systemLayers.rulesTableId}`:null,subnetworksTableId:this.sourceJSON?.systemLayers.subnetworksTableId,subnetworksTableUrl:this.sourceJSON?`${this.featureServiceUrl}/${this.sourceJSON?.systemLayers.subnetworksTableId}`:null,dirtyAreasLayerId:this.sourceJSON?.systemLayers.dirtyAreasLayerId,dirtyAreasLayerUrl:this.sourceJSON?`${this.featureServiceUrl}/${this.sourceJSON?.systemLayers.dirtyAreasLayerId}`:null,associationsTableId:this.sourceJSON?.systemLayers.associationsTableId,associationsTableUrl:this.sourceJSON?`${this.featureServiceUrl}/${this.sourceJSON?.systemLayers.associationsTableId}`:null})}get terminalConfigurations(){return this.dataElement?.terminalConfigurations.map(e=>h.fromJSON(e))||[]}get domainNetworkNames(){return this.dataElement?.domainNetworks.map(e=>e.domainNetworkName)||[]}get hasTelecomNetwork(){return this.dataElement?.domainNetworks.some(e=>e.isTelecomNetwork)??!1}get associationsTable(){return this.networkSystemLayers.associationsTable}async load(e){return this.addResolvingPromise(this._load(e)),this}async _load(e){await super._load(e);let{dataElement:t,layerId:r,sourceJSON:i}=this;if(!(t&&`domainNetworks`in t&&Array.isArray(t.domainNetworks)))throw new n(`network:invalid-data-element`,`The data element for layer ${r} does not have the expected properties for a utility network.`);if(!(i&&`type`in i&&typeof i.type==`string`&&i.type===`Utility Network Layer`))throw new n(`network:invalid-layer`,`The metadata for layer ${r} does not have the expected properties for a utility network.`);await Promise.all([this._loadNamedTraceConfigurationsFromNetwork(e),this.networkSystemLayers.loadAssociationsTable(e)])}getTerminalConfiguration(e){let t=null,n=null,r=s(e)??null,i=null;if(r?.type===`feature`){if(i=r.layerId,i===null)return null}else if(r?.type===`subtype-sublayer`){if(i=r?.parent?.layerId??null,i===null)return null}else return null;let a=e.attributes;if(a==null)return null;for(let r of Object.keys(a))r.toUpperCase()===`ASSETGROUP`&&(t=e.getAttribute(r)),r.toUpperCase()===`ASSETTYPE`&&(n=e.getAttribute(r));if(!this.dataElement)return null;let o=null,c=this.dataElement.domainNetworks;for(let e of c){let r=e.junctionSources?.find(e=>e.layerId===i);if(r){let e=r.assetGroups?.find(e=>e.assetGroupCode===t);if(e){let t=e.assetTypes?.find(e=>e.assetTypeCode===n);if(t?.isTerminalConfigurationSupported){o=t.terminalConfigurationId;break}}}}if(o!=null){let e=this.dataElement.terminalConfigurations?.find(e=>e.terminalConfigurationId===o);return e?h.fromJSON(e):null}return null}getTierNames(e){return(this.dataElement?.domainNetworks.find(t=>t.domainNetworkName===e))?.tiers?.map(e=>e.name)||[]}async getRulesTable(){let e=this._rulesLayer;e.loaded||await e.load();let t=this.dataElement?.domainNetworks;if(!t)return null;let n=t.flatMap(e=>[...e.edgeSources||[],...e.junctionSources||[]]),r=(await this._queryRulesTable(e)).map(t=>this._hydrateRuleInfo(e,n,t));return new d({rulesLayer:e,rules:r})}async getCircuitManager(e){if(!this.hasTelecomNetwork)return null;let t=this.dataElement?.domainNetworks.find(t=>t.domainNetworkName===e&&t.isTelecomNetwork);if(!t)return null;let{default:n}=await import(`./CircuitManager.js`);return r(this._circuitManagerMap,e,()=>new n({utilityNetwork:this,telecomDomainNetwork:t}))}async getUnitIdentifierManager(){if(!this.hasTelecomNetwork)return null;if(this._unitIdentifierManager)return this._unitIdentifierManager;let{default:e}=await import(`./UnitIdentifierManager.js`);return this._unitIdentifierManager=new e({utilityNetwork:this}),this._unitIdentifierManager}getTerminalById(e){return!this.dataElement||e==null?null:this._terminalById.get(e)??(this.terminalConfigurations.forEach(e=>{e.terminals.forEach(e=>{this._terminalById.set(e.id,e)})}),this._terminalById.get(e))}isUtilityLayer(e){return`layerId`in e?e.layerId!=null&&this._utilityLayerList.has(e.layerId)&&(e.url?.startsWith(this.featureServiceUrl)??!1):e.type===`subtype-sublayer`&&e.parent?this._utilityLayerList.has(e.parent.layerId)&&(e.parent.url?.startsWith(this.featureServiceUrl)??!1):!1}async queryAssociations(e,t){let[{queryAssociations:n},{default:r}]=await Promise.all([import(`../rest/networks/queryAssociations.js`),import(`../rest/networks/support/QueryAssociationsParameters.js`)]),i=r.from(e);return i.gdbVersion=this.gdbVersion,i.moment=this.historicMoment,(await n(this.networkServiceUrl,i,t)).associations}async synthesizeAssociationGeometries(e){let[{synthesizeAssociationGeometries:t},{default:n}]=await Promise.all([import(`../rest/networks/synthesizeAssociationGeometries.js`),import(`../rest/networks/support/SynthesizeAssociationGeometriesParameters.js`)]),r=n.from(e);return r.gdbVersion=this.gdbVersion,r.moment=this.historicMoment,t(this.networkServiceUrl,r)}async trace(e){let[{trace:t},{default:n}]=await Promise.all([import(`../rest/networks/trace.js`),import(`../rest/networks/support/TraceParameters.js`)]),r=n.from({...e,telecomSourceSet:this._telecomSourceSet});return r.gdbVersion=this.gdbVersion,r.moment=this.historicMoment,t(this.networkServiceUrl,r)}async submitTraceJob(e){let[{submitTraceJob:t},{default:n}]=await Promise.all([import(`../rest/networks/trace.js`),import(`../rest/networks/support/TraceParameters.js`)]),r=n.from(e);r.gdbVersion=this.gdbVersion,r.moment=this.historicMoment;let i=await t(this.networkServiceUrl,r);return new g({statusUrl:i,telecomSourceSet:this._telecomSourceSet})}async canAddAssociation(e){let t=await this.getRulesTable();if(!t)return!1;let{fromNetworkElement:n,toNetworkElement:r}=e;if(!n||!r)return!1;await t.load();let i=null;switch(e.associationType){case`containment`:i=t.rulesCategorized.containment;break;case`attachment`:i=t.rulesCategorized.attachment;break;default:i=t.rulesCategorized.connectivity}return i.some(e=>b(e,n,r))}generateAddAssociations(e){let{associationsTable:n}=this.networkSystemLayers,{fromNetworkSourceId:r,fromGlobalId:i,fromTerminalId:a,fromFirstUnit:o,fromLastUnit:s,toNetworkSourceId:c,toGlobalId:l,toTerminalId:u,toFirstUnit:d,toLastUnit:f,associationType:m,isContentVisible:h,percentAlong:g,globalId:v}=p(n);return{addFeatures:e.map(e=>{let n=new t({attributes:{[r]:e.fromNetworkElement?.networkSourceId,[i]:e.fromNetworkElement?.globalId,[a]:e.fromNetworkElement?.terminalId,[c]:e.toNetworkElement?.networkSourceId,[l]:e.toNetworkElement?.globalId,[u]:e.toNetworkElement?.terminalId,[m]:_[e.associationType],[h]:e.isContentVisible==null?void 0:+!!e.isContentVisible,[g]:e.percentAlong,[v]:e.globalId}}),p=e.associationType.includes(`connectivity`);return e.fromNetworkElement instanceof x&&(n.attributes[o]=e.fromNetworkElement?.firstUnit,n.attributes[s]=e.fromNetworkElement?.lastUnit),e.toNetworkElement instanceof x&&(n.attributes[d]=e.toNetworkElement?.firstUnit,n.attributes[f]=e.toNetworkElement?.lastUnit),p&&(n.attributes[a]=e.fromNetworkElement?.terminalId??1,n.attributes[u]=e.toNetworkElement?.terminalId??1),n}),id:this.networkSystemLayers.associationsTableId,identifierFields:{globalIdField:n?.globalIdField??`globalid`,objectIdField:n?.objectIdField??`objectid`}}}generateDeleteAssociations(e){let{associationsTable:t,associationsTableId:n}=this.networkSystemLayers,r={id:n,identifierFields:{globalIdField:t?.globalIdField??`globalid`,objectIdField:t?.objectIdField??`objectid`}};if(this.dataElement?.schemaGeneration===-8){let t=this._generateDeleteTelecomAssociationPayload(e);return{...r,deleteAssociations:t}}let i=e.map(e=>({globalId:e.globalId}));return{...r,deleteFeatures:i}}async loadAssociationsTable(){return this.networkSystemLayers.loadAssociationsTable()}async loadSubnetworksTable(){return this.networkSystemLayers.loadSubnetworksTable()}async _loadNamedTraceConfigurationsFromNetwork(e){if(this.sharedNamedTraceConfigurations?.length===0)return;let t=this.sharedNamedTraceConfigurations.map(e=>e.globalId),n=await this.queryNamedTraceConfigurations({globalIds:t},e);for(let e of this.sharedNamedTraceConfigurations){let t=n?.find(t=>t.globalId===e.globalId);if(t){let n=t.write({},{origin:`service`});e.read(n,{origin:`service`})}}}_hydrateRuleInfo(e,t,n){let r=e.fieldsIndex,i=r.get(`RULETYPE`),a=r.get(`CREATIONDATE`),o=r.get(`FROMNETWORKSOURCEID`),s=r.get(`FROMASSETGROUP`),c=r.get(`FROMASSETTYPE`),l=r.get(`FROMTERMINALID`),u=r.get(`TONETWORKSOURCEID`),d=r.get(`TOASSETGROUP`),f=r.get(`TOASSETTYPE`),p=r.get(`TOTERMINALID`),m=r.get(`VIANETWORKSOURCEID`),h=r.get(`VIAASSETGROUP`),g=r.get(`VIAASSETTYPE`),_=r.get(`VIATERMINALID`),v=n.attributes[i.name],y=new Date(n.attributes[a.name]),b=n.attributes[o.name],x=n.attributes[s.name],S=n.attributes[c.name],C=n.attributes[l.name],w=n.attributes[u.name],T=n.attributes[d.name],E=n.attributes[f.name],D=n.attributes[p.name],O=n.attributes[m.name],k=n.attributes[h.name],A=n.attributes[g.name],j=n.attributes[_.name],M=[{networkSourceId:b,assetGroupId:x,assetTypeId:S,terminalId:C},{networkSourceId:w,assetGroupId:T,assetTypeId:E,terminalId:D},{networkSourceId:O,assetGroupId:k,assetTypeId:A,terminalId:j}],N={ruleType:v,creationDate:y};for(let e of[0,1,2]){if(v!==5&&e===2)continue;let n=M[e],r=t.find(e=>e.sourceId===n.networkSourceId),i=r?.assetGroups.find(e=>e.assetGroupCode===n.assetGroupId),a=i?.assetTypes.find(e=>e.assetTypeCode===n.assetTypeId),o=this._getTerminal(a,n),s=``;switch(e){case 0:s=`from`;break;case 1:s=`to`;break;case 2:s=`via`}N[`${s}NetworkSource`]=r,N[`${s}AssetGroup`]=i,N[`${s}AssetType`]=a,N[`${s}Terminal`]=o?.toJSON()}return N}_getTerminal(e,t){let n=e?.terminalConfigurationId;return(this.terminalConfigurations?.find(e=>e.id===n))?.terminals?.find(e=>e.id===t.terminalId)??null}async _queryRulesTable(e){let{gdbVersion:t,historicMoment:n}=this,r=new S({where:`1=1`,outFields:[`*`],gdbVersion:t,historicMoment:n});return(await l(e,r)).features}_generateDeleteTelecomAssociationPayload(e){return e.map(e=>({globalId:e.globalId??v,associationType:y.toJSON(e.associationType),fromSourceId:e.fromNetworkElement.networkSourceId,fromGlobalId:e.fromNetworkElement.globalId,fromTerminalId:e.fromNetworkElement.terminalId,toSourceId:e.toNetworkElement.networkSourceId,toGlobalId:e.toNetworkElement.globalId,toTerminalId:e.toNetworkElement.terminalId}))}};e([a({readOnly:!0})],C.prototype,`_rulesLayer`,null),e([a({readOnly:!0})],C.prototype,`_telecomSourceSet`,null),e([a({type:[f],json:{origins:{"web-map":{read:{source:`traceConfigurations`},write:{target:`traceConfigurations`}},service:{read:{source:`traceConfigurations`}}},read:!1}})],C.prototype,`sharedNamedTraceConfigurations`,void 0),e([a({type:[`utility`],readOnly:!0,json:{read:!1,write:!1}})],C.prototype,`type`,void 0),e([a({readOnly:!0})],C.prototype,`serviceTerritoryFeatureLayerId`,null),e([a({readOnly:!0})],C.prototype,`networkSystemLayers`,null),e([a({readOnly:!0})],C.prototype,`terminalConfigurations`,null),e([a({readOnly:!0})],C.prototype,`domainNetworkNames`,null),e([a({readOnly:!0})],C.prototype,`hasTelecomNetwork`,null),e([a({readOnly:!0,json:{read:!1}})],C.prototype,`associationsTable`,null),C=e([o(`esri.networks.UtilityNetwork`)],C);const w=C;export{w as default};
2
+ import{__decorate as e}from"tslib";import t from"../Graphic.js";import n from"../core/Error.js";import{getOrCreateMapValue as r}from"../core/MapUtils.js";import{watch as i}from"../core/reactiveUtils.js";import{property as a,subclass as o}from"../core/accessorSupport/decorators.js";import{getGraphicLayer as s}from"../graphic/graphicOriginUtils.js";import c from"../layers/FeatureLayer.js";import{queryAllJSON as l}from"../layers/support/featureQueryAll.js";import{isSubtypeSublayer as u}from"../layers/support/layerUtils.js";import d from"./Network.js";import f from"./RulesTable.js";import p from"./support/NamedTraceConfiguration.js";import{getAssociationsTableFields as m}from"./support/networkFieldUtils.js";import h from"./support/NetworkSystemLayers.js";import g from"./support/TerminalConfiguration.js";import _ from"./support/TraceJobInfo.js";import{AssociationTypeEnum as v,nullGuid as y,associationTypeKebabDict as b}from"./support/typeUtils.js";import{doesRuleAllowAssociation as x}from"./support/utils.js";import S from"../rest/networks/support/TelecomNetworkElement.js";import C from"../rest/networks/support/TraceLocation.js";import w from"../rest/support/Query.js";let T=class extends d{constructor(e){super(e),this.sharedNamedTraceConfigurations=[],this.type=`utility`,this._circuitManagerMap=new Map,this._terminalById=new Map,this._unitIdentifierManager=null}initialize(){this.addHandles(i(()=>[this.gdbVersion,this.historicMoment],()=>{this.networkSystemLayers.associationsTable&&(this.networkSystemLayers.associationsTable.gdbVersion!==this.gdbVersion&&(this.networkSystemLayers.associationsTable.gdbVersion=this.gdbVersion),this.networkSystemLayers.associationsTable.historicMoment!==this.historicMoment&&(this.networkSystemLayers.associationsTable.historicMoment=this.historicMoment))}))}get _rulesLayer(){let{gdbVersion:e,historicMoment:t}=this,n=this.networkSystemLayers.rulesTableUrl;return new c({url:n,gdbVersion:e,historicMoment:t})}get _telecomSourceSet(){let e=new Set;return this.dataElement?.domainNetworks.forEach(t=>{t.isTelecomNetwork&&(t.edgeSources?.forEach(t=>e.add(t.sourceId)),t.junctionSources?.forEach(t=>e.add(t.sourceId)))}),e}get _utilityLayerList(){let e=new Set;return this.dataElement?.domainNetworks?.map(t=>{t?.edgeSources?.map(({layerId:t,sourceId:n})=>{this._layerIdBySourceId.set(n,t),this._sourceIdByLayerId.set(t,n),e.add(t)}),t?.junctionSources?.map(({layerId:t,sourceId:n})=>{this._layerIdBySourceId.set(n,t),this._sourceIdByLayerId.set(t,n),e.add(t)})}),e}get _edgeSourceLayerIds(){let e=this.dataElement?.domainNetworks;return e?e.flatMap(e=>e.edgeSources).map(e=>e.layerId).filter(Boolean):[]}get serviceTerritoryFeatureLayerId(){return this.dataElement?.serviceTerritoryFeatureLayerId??null}get networkSystemLayers(){return new h({rulesTableId:this.sourceJSON?.systemLayers.rulesTableId,rulesTableUrl:this.sourceJSON?`${this.featureServiceUrl}/${this.sourceJSON?.systemLayers.rulesTableId}`:null,subnetworksTableId:this.sourceJSON?.systemLayers.subnetworksTableId,subnetworksTableUrl:this.sourceJSON?`${this.featureServiceUrl}/${this.sourceJSON?.systemLayers.subnetworksTableId}`:null,dirtyAreasLayerId:this.sourceJSON?.systemLayers.dirtyAreasLayerId,dirtyAreasLayerUrl:this.sourceJSON?`${this.featureServiceUrl}/${this.sourceJSON?.systemLayers.dirtyAreasLayerId}`:null,associationsTableId:this.sourceJSON?.systemLayers.associationsTableId,associationsTableUrl:this.sourceJSON?`${this.featureServiceUrl}/${this.sourceJSON?.systemLayers.associationsTableId}`:null})}get terminalConfigurations(){return this.dataElement?.terminalConfigurations.map(e=>g.fromJSON(e))||[]}get domainNetworkNames(){return this.dataElement?.domainNetworks.map(e=>e.domainNetworkName)||[]}get hasTelecomNetwork(){return this.dataElement?.domainNetworks.some(e=>e.isTelecomNetwork)??!1}get associationsTable(){return this.networkSystemLayers.associationsTable}async load(e){return this.addResolvingPromise(this._load(e)),this}async _load(e){await super._load(e);let{dataElement:t,layerId:r,sourceJSON:i}=this;if(!(t&&`domainNetworks`in t&&Array.isArray(t.domainNetworks)))throw new n(`network:invalid-data-element`,`The data element for layer ${r} does not have the expected properties for a utility network.`);if(!(i&&`type`in i&&typeof i.type==`string`&&i.type===`Utility Network Layer`))throw new n(`network:invalid-layer`,`The metadata for layer ${r} does not have the expected properties for a utility network.`);await Promise.all([this._loadNamedTraceConfigurationsFromNetwork(e),this.networkSystemLayers.loadAssociationsTable(e)])}getTerminalConfiguration(e){let t=null,n=null,r=s(e)??null,i=null;if(r?.type===`feature`){if(i=r.layerId,i===null)return null}else if(r?.type===`subtype-sublayer`){if(i=r?.parent?.layerId??null,i===null)return null}else return null;let a=e.attributes;if(a==null)return null;for(let r of Object.keys(a))r.toUpperCase()===`ASSETGROUP`&&(t=e.getAttribute(r)),r.toUpperCase()===`ASSETTYPE`&&(n=e.getAttribute(r));if(!this.dataElement)return null;let o=null,c=this.dataElement.domainNetworks;for(let e of c){let r=e.junctionSources?.find(e=>e.layerId===i);if(r){let e=r.assetGroups?.find(e=>e.assetGroupCode===t);if(e){let t=e.assetTypes?.find(e=>e.assetTypeCode===n);if(t?.isTerminalConfigurationSupported){o=t.terminalConfigurationId;break}}}}if(o!=null){let e=this.dataElement.terminalConfigurations?.find(e=>e.terminalConfigurationId===o);return e?g.fromJSON(e):null}return null}getTierNames(e){return(this.dataElement?.domainNetworks.find(t=>t.domainNetworkName===e))?.tiers?.map(e=>e.name)||[]}async getRulesTable(){let e=this._rulesLayer;e.loaded||await e.load();let t=this.dataElement?.domainNetworks;if(!t)return null;let n=t.flatMap(e=>[...e.edgeSources||[],...e.junctionSources||[]]),r=(await this._queryRulesTable(e)).map(t=>this._hydrateRuleInfo(e,n,t));return new f({rulesLayer:e,rules:r})}async getCircuitManager(e){if(!this.hasTelecomNetwork)return null;let t=this.dataElement?.domainNetworks.find(t=>t.domainNetworkName===e&&t.isTelecomNetwork);if(!t)return null;let{default:n}=await import(`./CircuitManager.js`);return r(this._circuitManagerMap,e,()=>new n({utilityNetwork:this,telecomDomainNetwork:t}))}async getUnitIdentifierManager(){if(!this.hasTelecomNetwork)return null;if(this._unitIdentifierManager)return this._unitIdentifierManager;let{default:e}=await import(`./UnitIdentifierManager.js`);return this._unitIdentifierManager=new e({utilityNetwork:this}),this._unitIdentifierManager}getTerminalById(e){return!this.dataElement||e==null?null:this._terminalById.get(e)??(this.terminalConfigurations.forEach(e=>{e.terminals.forEach(e=>{this._terminalById.set(e.id,e)})}),this._terminalById.get(e))}isUtilityLayer(e){return`layerId`in e?e.layerId!=null&&this._utilityLayerList.has(e.layerId)&&(e.url?.startsWith(this.featureServiceUrl)??!1):e.type===`subtype-sublayer`&&e.parent?this._utilityLayerList.has(e.parent.layerId)&&(e.parent.url?.startsWith(this.featureServiceUrl)??!1):!1}async queryAssociations(e,t){let[{queryAssociations:n},{default:r}]=await Promise.all([import(`../rest/networks/queryAssociations.js`),import(`../rest/networks/support/QueryAssociationsParameters.js`)]),i=r.from(e);return i.gdbVersion=this.gdbVersion,i.moment=this.historicMoment,(await n(this.networkServiceUrl,i,t)).associations}async synthesizeAssociationGeometries(e){let[{synthesizeAssociationGeometries:t},{default:n}]=await Promise.all([import(`../rest/networks/synthesizeAssociationGeometries.js`),import(`../rest/networks/support/SynthesizeAssociationGeometriesParameters.js`)]),r=n.from(e);return r.gdbVersion=this.gdbVersion,r.moment=this.historicMoment,t(this.networkServiceUrl,r)}async trace(e){let[{trace:t},{default:n}]=await Promise.all([import(`../rest/networks/trace.js`),import(`../rest/networks/support/TraceParameters.js`)]),r=n.from({...e,telecomSourceSet:this._telecomSourceSet});return r.gdbVersion=this.gdbVersion,r.moment=this.historicMoment,t(this.networkServiceUrl,r)}async submitTraceJob(e){let[{submitTraceJob:t},{default:n}]=await Promise.all([import(`../rest/networks/trace.js`),import(`../rest/networks/support/TraceParameters.js`)]),r=n.from(e);r.gdbVersion=this.gdbVersion,r.moment=this.historicMoment;let i=await t(this.networkServiceUrl,r);return new _({statusUrl:i,telecomSourceSet:this._telecomSourceSet})}async canAddAssociation(e){let t=await this.getRulesTable();if(!t)return!1;let{fromNetworkElement:n,toNetworkElement:r}=e;if(!n||!r)return!1;await t.load();let i=null;switch(e.associationType){case`containment`:i=t.rulesCategorized.containment;break;case`attachment`:i=t.rulesCategorized.attachment;break;default:i=t.rulesCategorized.connectivity}return i.some(e=>x(e,n,r))}generateAddAssociations(e){let{associationsTable:n}=this.networkSystemLayers,{fromNetworkSourceId:r,fromGlobalId:i,fromTerminalId:a,fromFirstUnit:o,fromLastUnit:s,toNetworkSourceId:c,toGlobalId:l,toTerminalId:u,toFirstUnit:d,toLastUnit:f,associationType:p,isContentVisible:h,percentAlong:g,globalId:_}=m(n);return{addFeatures:e.map(e=>{let n=new t({attributes:{[r]:e.fromNetworkElement?.networkSourceId,[i]:e.fromNetworkElement?.globalId,[a]:e.fromNetworkElement?.terminalId,[c]:e.toNetworkElement?.networkSourceId,[l]:e.toNetworkElement?.globalId,[u]:e.toNetworkElement?.terminalId,[p]:v[e.associationType],[h]:e.isContentVisible==null?void 0:+!!e.isContentVisible,[g]:e.percentAlong,[_]:e.globalId}}),m=e.associationType.includes(`connectivity`);return e.fromNetworkElement instanceof S&&(n.attributes[o]=e.fromNetworkElement?.firstUnit,n.attributes[s]=e.fromNetworkElement?.lastUnit),e.toNetworkElement instanceof S&&(n.attributes[d]=e.toNetworkElement?.firstUnit,n.attributes[f]=e.toNetworkElement?.lastUnit),m&&(n.attributes[a]=e.fromNetworkElement?.terminalId??1,n.attributes[u]=e.toNetworkElement?.terminalId??1),n}),id:this.networkSystemLayers.associationsTableId,identifierFields:{globalIdField:n?.globalIdField??`globalid`,objectIdField:n?.objectIdField??`objectid`}}}generateDeleteAssociations(e){let{associationsTable:t,associationsTableId:n}=this.networkSystemLayers,r={id:n,identifierFields:{globalIdField:t?.globalIdField??`globalid`,objectIdField:t?.objectIdField??`objectid`}};if(this.dataElement?.schemaGeneration===-8){let t=this._generateDeleteTelecomAssociationPayload(e);return{...r,deleteAssociations:t}}let i=e.map(e=>({globalId:e.globalId}));return{...r,deleteFeatures:i}}async loadAssociationsTable(){return this.networkSystemLayers.loadAssociationsTable()}async loadSubnetworksTable(){return this.networkSystemLayers.loadSubnetworksTable()}createTraceLocation(e,t){let n=e.getGlobalId()??``,r=e.geometry?.type;if(r===`point`||r===`polygon`){let r=this.getTerminalConfiguration(e),i=r?r.terminals[0].id:1;return new C({type:t,isFilterBarrier:!1,globalId:n,terminalId:i})}if(r===`polyline`)return new C({type:t,isFilterBarrier:!1,globalId:n,percentAlong:.5});if(!r){let r=u(e.layer)?e.layer.parent:e.layer,i=r&&this._edgeSourceLayerIds.includes(r.layerId),a=this.getTerminalConfiguration(e),o=a?a.terminals[0].id:i?-1:1;return new C({type:t,isFilterBarrier:!1,globalId:n,terminalId:o,percentAlong:i?.5:-1})}throw Error(`Unsupported geometry type: ${r}`)}async _loadNamedTraceConfigurationsFromNetwork(e){if(this.sharedNamedTraceConfigurations?.length===0)return;let t=this.sharedNamedTraceConfigurations.map(e=>e.globalId),n=await this.queryNamedTraceConfigurations({globalIds:t},e);for(let e of this.sharedNamedTraceConfigurations){let t=n?.find(t=>t.globalId===e.globalId);if(t){let n=t.write({},{origin:`service`});e.read(n,{origin:`service`})}}}_hydrateRuleInfo(e,t,n){let r=e.fieldsIndex,i=r.get(`RULETYPE`),a=r.get(`CREATIONDATE`),o=r.get(`FROMNETWORKSOURCEID`),s=r.get(`FROMASSETGROUP`),c=r.get(`FROMASSETTYPE`),l=r.get(`FROMTERMINALID`),u=r.get(`TONETWORKSOURCEID`),d=r.get(`TOASSETGROUP`),f=r.get(`TOASSETTYPE`),p=r.get(`TOTERMINALID`),m=r.get(`VIANETWORKSOURCEID`),h=r.get(`VIAASSETGROUP`),g=r.get(`VIAASSETTYPE`),_=r.get(`VIATERMINALID`),v=n.attributes[i.name],y=new Date(n.attributes[a.name]),b=n.attributes[o.name],x=n.attributes[s.name],S=n.attributes[c.name],C=n.attributes[l.name],w=n.attributes[u.name],T=n.attributes[d.name],E=n.attributes[f.name],D=n.attributes[p.name],O=n.attributes[m.name],k=n.attributes[h.name],A=n.attributes[g.name],j=n.attributes[_.name],M=[{networkSourceId:b,assetGroupId:x,assetTypeId:S,terminalId:C},{networkSourceId:w,assetGroupId:T,assetTypeId:E,terminalId:D},{networkSourceId:O,assetGroupId:k,assetTypeId:A,terminalId:j}],N={ruleType:v,creationDate:y};for(let e of[0,1,2]){if(v!==5&&e===2)continue;let n=M[e],r=t.find(e=>e.sourceId===n.networkSourceId),i=r?.assetGroups.find(e=>e.assetGroupCode===n.assetGroupId),a=i?.assetTypes.find(e=>e.assetTypeCode===n.assetTypeId),o=this._getTerminal(a,n),s=``;switch(e){case 0:s=`from`;break;case 1:s=`to`;break;case 2:s=`via`}N[`${s}NetworkSource`]=r,N[`${s}AssetGroup`]=i,N[`${s}AssetType`]=a,N[`${s}Terminal`]=o?.toJSON()}return N}_getTerminal(e,t){let n=e?.terminalConfigurationId;return(this.terminalConfigurations?.find(e=>e.id===n))?.terminals?.find(e=>e.id===t.terminalId)??null}async _queryRulesTable(e){let{gdbVersion:t,historicMoment:n}=this,r=new w({where:`1=1`,outFields:[`*`],gdbVersion:t,historicMoment:n});return(await l(e,r)).features}_generateDeleteTelecomAssociationPayload(e){return e.map(e=>({globalId:e.globalId??y,associationType:b.toJSON(e.associationType),fromSourceId:e.fromNetworkElement.networkSourceId,fromGlobalId:e.fromNetworkElement.globalId,fromTerminalId:e.fromNetworkElement.terminalId,toSourceId:e.toNetworkElement.networkSourceId,toGlobalId:e.toNetworkElement.globalId,toTerminalId:e.toNetworkElement.terminalId}))}};e([a({readOnly:!0})],T.prototype,`_rulesLayer`,null),e([a({readOnly:!0})],T.prototype,`_telecomSourceSet`,null),e([a({type:[p],json:{origins:{"web-map":{read:{source:`traceConfigurations`},write:{target:`traceConfigurations`}},service:{read:{source:`traceConfigurations`}}},read:!1}})],T.prototype,`sharedNamedTraceConfigurations`,void 0),e([a({type:[`utility`],readOnly:!0,json:{read:!1,write:!1}})],T.prototype,`type`,void 0),e([a({readOnly:!0})],T.prototype,`serviceTerritoryFeatureLayerId`,null),e([a({readOnly:!0})],T.prototype,`networkSystemLayers`,null),e([a({readOnly:!0})],T.prototype,`terminalConfigurations`,null),e([a({readOnly:!0})],T.prototype,`domainNetworkNames`,null),e([a({readOnly:!0})],T.prototype,`hasTelecomNetwork`,null),e([a({readOnly:!0,json:{read:!1}})],T.prototype,`associationsTable`,null),T=e([o(`esri.networks.UtilityNetwork`)],T);const E=T;export{E as default};