@webiny/app-admin 6.6.0-alpha.1 → 6.6.0-alpha.10

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 (718) hide show
  1. package/base/Admin.js +19 -2
  2. package/base/Admin.js.map +1 -1
  3. package/base/Base/DefaultFieldRenderers.js +4 -0
  4. package/base/Base/DefaultFieldRenderers.js.map +1 -1
  5. package/base/Base/FieldRenderers/AutoCompleteRenderer.js +1 -0
  6. package/base/Base/FieldRenderers/AutoCompleteRenderer.js.map +1 -1
  7. package/base/Base/FieldRenderers/BirthdayInputRenderer.d.ts +21 -0
  8. package/base/Base/FieldRenderers/BirthdayInputRenderer.js +39 -0
  9. package/base/Base/FieldRenderers/BirthdayInputRenderer.js.map +1 -0
  10. package/base/Base/FieldRenderers/BirthdayInputRenderer.test.d.ts +1 -0
  11. package/base/Base/FieldRenderers/BirthdayInputRenderer.test.js +123 -0
  12. package/base/Base/FieldRenderers/BirthdayInputRenderer.test.js.map +1 -0
  13. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.js +21 -4
  14. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.js.map +1 -1
  15. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js +11 -2
  16. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js.map +1 -1
  17. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.d.ts +2 -0
  18. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js +14 -5
  19. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js.map +1 -1
  20. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js +16 -25
  21. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js.map +1 -1
  22. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js +18 -3
  23. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js.map +1 -1
  24. package/base/Base/FieldRenderers/ObjectRenderer/{TemplatePicker.d.ts → TemplatePicker/AddTemplateButton.d.ts} +1 -1
  25. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/AddTemplateButton.js +24 -0
  26. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/AddTemplateButton.js.map +1 -0
  27. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.d.ts +13 -0
  28. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.js +21 -0
  29. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.js.map +1 -0
  30. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.d.ts +3 -0
  31. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.js +35 -0
  32. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.js.map +1 -0
  33. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.d.ts +8 -0
  34. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.js +22 -0
  35. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.js.map +1 -0
  36. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.d.ts +10 -0
  37. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.js +52 -0
  38. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.js.map +1 -0
  39. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.d.ts +8 -0
  40. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.js +16 -0
  41. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.js.map +1 -0
  42. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.d.ts +10 -0
  43. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.js +22 -0
  44. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.js.map +1 -0
  45. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.d.ts +3 -0
  46. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.js +35 -0
  47. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.js.map +1 -0
  48. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/index.d.ts +1 -0
  49. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/index.js +1 -0
  50. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/types.d.ts +6 -0
  51. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/types.js +0 -0
  52. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.d.ts +8 -3
  53. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js +25 -17
  54. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js.map +1 -1
  55. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.d.ts +1 -0
  56. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.js +106 -0
  57. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.js.map +1 -0
  58. package/base/Base/FieldRenderers/RadioButtonsRenderer.js +3 -2
  59. package/base/Base/FieldRenderers/RadioButtonsRenderer.js.map +1 -1
  60. package/base/Base/FieldRenderers/SelectRenderer.js +4 -2
  61. package/base/Base/FieldRenderers/SelectRenderer.js.map +1 -1
  62. package/base/Base.js +2 -1
  63. package/base/Base.js.map +1 -1
  64. package/base/createRootContainer.js +4 -0
  65. package/base/createRootContainer.js.map +1 -1
  66. package/base/resolveApiUrl.d.ts +10 -0
  67. package/base/resolveApiUrl.js +11 -3
  68. package/base/resolveApiUrl.js.map +1 -1
  69. package/base/ui/AssumedPermissionsSelector.d.ts +47 -0
  70. package/base/ui/AssumedPermissionsSelector.js +7 -0
  71. package/base/ui/AssumedPermissionsSelector.js.map +1 -0
  72. package/base/ui/DebuggerIndicator.d.ts +23 -0
  73. package/base/ui/DebuggerIndicator.js +5 -0
  74. package/base/ui/DebuggerIndicator.js.map +1 -0
  75. package/base/ui/Layout.d.ts +20 -0
  76. package/base/ui/Layout.js +2 -1
  77. package/base/ui/Layout.js.map +1 -1
  78. package/components/DeveloperMode/DeveloperMode.d.ts +1 -3
  79. package/components/DeveloperMode/DeveloperMode.js.map +1 -1
  80. package/components/Filters/Filters.js +7 -1
  81. package/components/Filters/Filters.js.map +1 -1
  82. package/components/IconPicker/IconPickerComponent.js +1 -1
  83. package/components/IconPicker/IconPickerComponent.js.map +1 -1
  84. package/components/SplitView/SplitView.d.ts +2 -2
  85. package/components/SplitView/SplitView.js +7 -7
  86. package/components/SplitView/SplitView.js.map +1 -1
  87. package/config/AdminConfig/Widget.d.ts +9 -1
  88. package/config/AdminConfig/Widget.js +6 -2
  89. package/config/AdminConfig/Widget.js.map +1 -1
  90. package/domain/Identity.js +1 -1
  91. package/domain/Identity.js.map +1 -1
  92. package/exports/admin/ui.d.ts +4 -0
  93. package/exports/admin/ui.js +4 -1
  94. package/exports/admin.d.ts +4 -0
  95. package/exports/admin.js +2 -0
  96. package/features/{aiChat/AiChatGateway.d.ts → adminAssistant/AdminAssistantGateway.d.ts} +7 -7
  97. package/features/{aiChat/AiChatGateway.js → adminAssistant/AdminAssistantGateway.js} +8 -8
  98. package/features/adminAssistant/AdminAssistantGateway.js.map +1 -0
  99. package/features/adminAssistant/AdminAssistantPresenter.d.ts +60 -0
  100. package/features/adminAssistant/AdminAssistantPresenter.js +377 -0
  101. package/features/adminAssistant/AdminAssistantPresenter.js.map +1 -0
  102. package/features/adminAssistant/abstractions.d.ts +176 -0
  103. package/features/adminAssistant/abstractions.js +6 -0
  104. package/features/adminAssistant/abstractions.js.map +1 -0
  105. package/features/adminAssistant/feature.d.ts +3 -0
  106. package/features/adminAssistant/feature.js +19 -0
  107. package/features/adminAssistant/feature.js.map +1 -0
  108. package/features/adminAssistant/index.d.ts +6 -0
  109. package/features/adminAssistant/index.js +3 -0
  110. package/features/adminAssistant/turnsFromMessages.d.ts +15 -0
  111. package/features/adminAssistant/turnsFromMessages.js +77 -0
  112. package/features/adminAssistant/turnsFromMessages.js.map +1 -0
  113. package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.d.ts +11 -0
  114. package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.js +44 -0
  115. package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.js.map +1 -0
  116. package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.d.ts +10 -0
  117. package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.js +19 -0
  118. package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.js.map +1 -0
  119. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.d.ts +16 -0
  120. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.js +5 -0
  121. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.js.map +1 -0
  122. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.d.ts +10 -0
  123. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.js +5 -0
  124. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.js.map +1 -0
  125. package/features/adminUsers/account/getCurrentUser/abstractions/index.d.ts +6 -0
  126. package/features/adminUsers/account/getCurrentUser/abstractions/index.js +2 -0
  127. package/features/adminUsers/account/getCurrentUser/feature.d.ts +3 -0
  128. package/features/adminUsers/account/getCurrentUser/feature.js +19 -0
  129. package/features/adminUsers/account/getCurrentUser/feature.js.map +1 -0
  130. package/features/adminUsers/account/getCurrentUser/index.d.ts +1 -0
  131. package/features/adminUsers/account/getCurrentUser/index.js +1 -0
  132. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.d.ts +11 -0
  133. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.js +48 -0
  134. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.js.map +1 -0
  135. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.d.ts +10 -0
  136. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.js +19 -0
  137. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.js.map +1 -0
  138. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.d.ts +26 -0
  139. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.js +5 -0
  140. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.js.map +1 -0
  141. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.d.ts +13 -0
  142. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.js +5 -0
  143. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.js.map +1 -0
  144. package/features/adminUsers/account/updateCurrentUser/abstractions/index.d.ts +8 -0
  145. package/features/adminUsers/account/updateCurrentUser/abstractions/index.js +2 -0
  146. package/features/adminUsers/account/updateCurrentUser/feature.d.ts +3 -0
  147. package/features/adminUsers/account/updateCurrentUser/feature.js +19 -0
  148. package/features/adminUsers/account/updateCurrentUser/feature.js.map +1 -0
  149. package/features/adminUsers/account/updateCurrentUser/index.d.ts +1 -0
  150. package/features/adminUsers/account/updateCurrentUser/index.js +1 -0
  151. package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.d.ts +6 -0
  152. package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.js +22 -0
  153. package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.js.map +1 -0
  154. package/features/adminUsers/passwordPolicy/abstractions.d.ts +20 -0
  155. package/features/adminUsers/passwordPolicy/abstractions.js +5 -0
  156. package/features/adminUsers/passwordPolicy/abstractions.js.map +1 -0
  157. package/features/adminUsers/passwordPolicy/feature.d.ts +8 -0
  158. package/features/adminUsers/passwordPolicy/feature.js +18 -0
  159. package/features/adminUsers/passwordPolicy/feature.js.map +1 -0
  160. package/features/adminUsers/passwordPolicy/index.d.ts +3 -0
  161. package/features/adminUsers/passwordPolicy/index.js +3 -0
  162. package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.d.ts +10 -0
  163. package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.js +11 -0
  164. package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.js.map +1 -0
  165. package/features/adminUsers/permissions/abstractions.d.ts +17 -0
  166. package/features/adminUsers/permissions/abstractions.js +6 -0
  167. package/features/adminUsers/permissions/abstractions.js.map +1 -0
  168. package/features/adminUsers/permissions/feature.d.ts +14 -0
  169. package/features/adminUsers/permissions/feature.js +7 -0
  170. package/features/adminUsers/permissions/feature.js.map +1 -0
  171. package/features/adminUsers/permissionsSchema.d.ts +10 -0
  172. package/features/adminUsers/permissionsSchema.js +18 -0
  173. package/features/adminUsers/permissionsSchema.js.map +1 -0
  174. package/features/adminUsers/users/createUser/CreateUserGateway.d.ts +11 -0
  175. package/features/adminUsers/users/createUser/CreateUserGateway.js +49 -0
  176. package/features/adminUsers/users/createUser/CreateUserGateway.js.map +1 -0
  177. package/features/adminUsers/users/createUser/CreateUserUseCase.d.ts +10 -0
  178. package/features/adminUsers/users/createUser/CreateUserUseCase.js +18 -0
  179. package/features/adminUsers/users/createUser/CreateUserUseCase.js.map +1 -0
  180. package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.d.ts +21 -0
  181. package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.js +5 -0
  182. package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.js.map +1 -0
  183. package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.d.ts +14 -0
  184. package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.js +5 -0
  185. package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.js.map +1 -0
  186. package/features/adminUsers/users/createUser/abstractions/index.d.ts +2 -0
  187. package/features/adminUsers/users/createUser/abstractions/index.js +2 -0
  188. package/features/adminUsers/users/createUser/feature.d.ts +3 -0
  189. package/features/adminUsers/users/createUser/feature.js +19 -0
  190. package/features/adminUsers/users/createUser/feature.js.map +1 -0
  191. package/features/adminUsers/users/createUser/index.d.ts +2 -0
  192. package/features/adminUsers/users/createUser/index.js +2 -0
  193. package/features/adminUsers/users/deleteUser/DeleteUserGateway.d.ts +11 -0
  194. package/features/adminUsers/users/deleteUser/DeleteUserGateway.js +40 -0
  195. package/features/adminUsers/users/deleteUser/DeleteUserGateway.js.map +1 -0
  196. package/features/adminUsers/users/deleteUser/DeleteUserUseCase.d.ts +10 -0
  197. package/features/adminUsers/users/deleteUser/DeleteUserUseCase.js +18 -0
  198. package/features/adminUsers/users/deleteUser/DeleteUserUseCase.js.map +1 -0
  199. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.d.ts +11 -0
  200. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.js +5 -0
  201. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.js.map +1 -0
  202. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.d.ts +11 -0
  203. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.js +5 -0
  204. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.js.map +1 -0
  205. package/features/adminUsers/users/deleteUser/abstractions/index.d.ts +2 -0
  206. package/features/adminUsers/users/deleteUser/abstractions/index.js +2 -0
  207. package/features/adminUsers/users/deleteUser/feature.d.ts +3 -0
  208. package/features/adminUsers/users/deleteUser/feature.js +19 -0
  209. package/features/adminUsers/users/deleteUser/feature.js.map +1 -0
  210. package/features/adminUsers/users/deleteUser/index.d.ts +2 -0
  211. package/features/adminUsers/users/deleteUser/index.js +2 -0
  212. package/features/adminUsers/users/getUser/GetUserGateway.d.ts +11 -0
  213. package/features/adminUsers/users/getUser/GetUserGateway.js +57 -0
  214. package/features/adminUsers/users/getUser/GetUserGateway.js.map +1 -0
  215. package/features/adminUsers/users/getUser/GetUserUseCase.d.ts +10 -0
  216. package/features/adminUsers/users/getUser/GetUserUseCase.js +18 -0
  217. package/features/adminUsers/users/getUser/GetUserUseCase.js.map +1 -0
  218. package/features/adminUsers/users/getUser/abstractions/GetUserGateway.d.ts +32 -0
  219. package/features/adminUsers/users/getUser/abstractions/GetUserGateway.js +5 -0
  220. package/features/adminUsers/users/getUser/abstractions/GetUserGateway.js.map +1 -0
  221. package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.d.ts +14 -0
  222. package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.js +5 -0
  223. package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.js.map +1 -0
  224. package/features/adminUsers/users/getUser/abstractions/index.d.ts +2 -0
  225. package/features/adminUsers/users/getUser/abstractions/index.js +2 -0
  226. package/features/adminUsers/users/getUser/feature.d.ts +3 -0
  227. package/features/adminUsers/users/getUser/feature.js +19 -0
  228. package/features/adminUsers/users/getUser/feature.js.map +1 -0
  229. package/features/adminUsers/users/getUser/index.d.ts +2 -0
  230. package/features/adminUsers/users/getUser/index.js +2 -0
  231. package/features/adminUsers/users/listUsers/ListUsersGateway.d.ts +11 -0
  232. package/features/adminUsers/users/listUsers/ListUsersGateway.js +39 -0
  233. package/features/adminUsers/users/listUsers/ListUsersGateway.js.map +1 -0
  234. package/features/adminUsers/users/listUsers/ListUsersUseCase.d.ts +10 -0
  235. package/features/adminUsers/users/listUsers/ListUsersUseCase.js +18 -0
  236. package/features/adminUsers/users/listUsers/ListUsersUseCase.js.map +1 -0
  237. package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.d.ts +17 -0
  238. package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.js +5 -0
  239. package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.js.map +1 -0
  240. package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.d.ts +10 -0
  241. package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.js +5 -0
  242. package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.js.map +1 -0
  243. package/features/adminUsers/users/listUsers/abstractions/index.d.ts +2 -0
  244. package/features/adminUsers/users/listUsers/abstractions/index.js +2 -0
  245. package/features/adminUsers/users/listUsers/feature.d.ts +3 -0
  246. package/features/adminUsers/users/listUsers/feature.js +19 -0
  247. package/features/adminUsers/users/listUsers/feature.js.map +1 -0
  248. package/features/adminUsers/users/listUsers/index.d.ts +2 -0
  249. package/features/adminUsers/users/listUsers/index.js +2 -0
  250. package/features/adminUsers/users/updateUser/UpdateUserGateway.d.ts +11 -0
  251. package/features/adminUsers/users/updateUser/UpdateUserGateway.js +59 -0
  252. package/features/adminUsers/users/updateUser/UpdateUserGateway.js.map +1 -0
  253. package/features/adminUsers/users/updateUser/UpdateUserUseCase.d.ts +10 -0
  254. package/features/adminUsers/users/updateUser/UpdateUserUseCase.js +18 -0
  255. package/features/adminUsers/users/updateUser/UpdateUserUseCase.js.map +1 -0
  256. package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.d.ts +33 -0
  257. package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.js +5 -0
  258. package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.js.map +1 -0
  259. package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.d.ts +15 -0
  260. package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.js +5 -0
  261. package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.js.map +1 -0
  262. package/features/adminUsers/users/updateUser/abstractions/index.d.ts +2 -0
  263. package/features/adminUsers/users/updateUser/abstractions/index.js +2 -0
  264. package/features/adminUsers/users/updateUser/feature.d.ts +3 -0
  265. package/features/adminUsers/users/updateUser/feature.js +19 -0
  266. package/features/adminUsers/users/updateUser/feature.js.map +1 -0
  267. package/features/adminUsers/users/updateUser/index.d.ts +2 -0
  268. package/features/adminUsers/users/updateUser/index.js +2 -0
  269. package/features/aiChats/AiChatSaveError.d.ts +6 -0
  270. package/features/aiChats/AiChatSaveError.js +8 -0
  271. package/features/aiChats/AiChatSaveError.js.map +1 -0
  272. package/features/aiChats/AiChatsGateway.d.ts +18 -0
  273. package/features/aiChats/AiChatsGateway.js +132 -0
  274. package/features/aiChats/AiChatsGateway.js.map +1 -0
  275. package/features/aiChats/AiChatsRepository.d.ts +36 -0
  276. package/features/aiChats/AiChatsRepository.js +110 -0
  277. package/features/aiChats/AiChatsRepository.js.map +1 -0
  278. package/features/aiChats/AiChatsRequestError.d.ts +9 -0
  279. package/features/aiChats/AiChatsRequestError.js +8 -0
  280. package/features/aiChats/AiChatsRequestError.js.map +1 -0
  281. package/features/aiChats/abstractions.d.ts +76 -0
  282. package/features/aiChats/abstractions.js +6 -0
  283. package/features/aiChats/abstractions.js.map +1 -0
  284. package/features/aiChats/feature.d.ts +3 -0
  285. package/features/aiChats/feature.js +19 -0
  286. package/features/aiChats/feature.js.map +1 -0
  287. package/features/aiChats/index.d.ts +9 -0
  288. package/features/aiChats/index.js +3 -0
  289. package/features/aiChats/messageOf.d.ts +2 -0
  290. package/features/aiChats/messageOf.js +7 -0
  291. package/features/aiChats/messageOf.js.map +1 -0
  292. package/features/aiSettings/abstractions.d.ts +16 -0
  293. package/features/aiSettings/abstractions.js +5 -0
  294. package/features/aiSettings/abstractions.js.map +1 -0
  295. package/features/aiSettings/index.d.ts +2 -0
  296. package/features/aiSettings/index.js +1 -0
  297. package/features/assumePermissions/ApiStreamClientDecorator.d.ts +16 -0
  298. package/features/assumePermissions/ApiStreamClientDecorator.js +29 -0
  299. package/features/assumePermissions/ApiStreamClientDecorator.js.map +1 -0
  300. package/features/assumePermissions/AssumePermissionsContext.d.ts +17 -0
  301. package/features/assumePermissions/AssumePermissionsContext.js +32 -0
  302. package/features/assumePermissions/AssumePermissionsContext.js.map +1 -0
  303. package/features/assumePermissions/AssumePermissionsUseCase.d.ts +33 -0
  304. package/features/assumePermissions/AssumePermissionsUseCase.js +48 -0
  305. package/features/assumePermissions/AssumePermissionsUseCase.js.map +1 -0
  306. package/features/assumePermissions/GraphQLClientDecorator.d.ts +16 -0
  307. package/features/assumePermissions/GraphQLClientDecorator.js +29 -0
  308. package/features/assumePermissions/GraphQLClientDecorator.js.map +1 -0
  309. package/features/assumePermissions/ListAssumableTargetsGateway.d.ts +13 -0
  310. package/features/assumePermissions/ListAssumableTargetsGateway.js +74 -0
  311. package/features/assumePermissions/ListAssumableTargetsGateway.js.map +1 -0
  312. package/features/assumePermissions/ListAssumableTargetsUseCase.d.ts +16 -0
  313. package/features/assumePermissions/ListAssumableTargetsUseCase.js +38 -0
  314. package/features/assumePermissions/ListAssumableTargetsUseCase.js.map +1 -0
  315. package/features/assumePermissions/LogInUseCaseDecorator.d.ts +33 -0
  316. package/features/assumePermissions/LogInUseCaseDecorator.js +36 -0
  317. package/features/assumePermissions/LogInUseCaseDecorator.js.map +1 -0
  318. package/features/assumePermissions/LogOutUseCaseDecorator.d.ts +16 -0
  319. package/features/assumePermissions/LogOutUseCaseDecorator.js +21 -0
  320. package/features/assumePermissions/LogOutUseCaseDecorator.js.map +1 -0
  321. package/features/assumePermissions/abstractions.d.ts +78 -0
  322. package/features/assumePermissions/abstractions.js +8 -0
  323. package/features/assumePermissions/abstractions.js.map +1 -0
  324. package/features/assumePermissions/assumePermissionsHeader.d.ts +3 -0
  325. package/features/assumePermissions/assumePermissionsHeader.js +7 -0
  326. package/features/assumePermissions/assumePermissionsHeader.js.map +1 -0
  327. package/features/assumePermissions/feature.d.ts +4 -0
  328. package/features/assumePermissions/feature.js +32 -0
  329. package/features/assumePermissions/feature.js.map +1 -0
  330. package/features/assumePermissions/index.d.ts +4 -0
  331. package/features/assumePermissions/index.js +2 -0
  332. package/features/banners/Banners.d.ts +15 -0
  333. package/features/banners/Banners.js +39 -0
  334. package/features/banners/Banners.js.map +1 -0
  335. package/features/banners/abstractions.d.ts +34 -0
  336. package/features/banners/abstractions.js +5 -0
  337. package/features/banners/abstractions.js.map +1 -0
  338. package/features/banners/feature.d.ts +3 -0
  339. package/features/banners/feature.js +17 -0
  340. package/features/banners/feature.js.map +1 -0
  341. package/features/banners/index.d.ts +2 -0
  342. package/features/banners/index.js +2 -0
  343. package/features/dateFormatter/formatUtcOffset.d.ts +1 -0
  344. package/features/dateFormatter/formatUtcOffset.js +11 -0
  345. package/features/dateFormatter/formatUtcOffset.js.map +1 -0
  346. package/features/debugger/DebugSessionsRepository.d.ts +35 -0
  347. package/features/debugger/DebugSessionsRepository.js +57 -0
  348. package/features/debugger/DebugSessionsRepository.js.map +1 -0
  349. package/features/debugger/GraphQLExtensionsDebugHandler.d.ts +17 -0
  350. package/features/debugger/GraphQLExtensionsDebugHandler.js +21 -0
  351. package/features/debugger/GraphQLExtensionsDebugHandler.js.map +1 -0
  352. package/features/debugger/GraphQLExtensionsDebugHandler.test.d.ts +1 -0
  353. package/features/debugger/GraphQLExtensionsDebugHandler.test.js +112 -0
  354. package/features/debugger/GraphQLExtensionsDebugHandler.test.js.map +1 -0
  355. package/features/debugger/abstractions.d.ts +50 -0
  356. package/features/debugger/abstractions.js +5 -0
  357. package/features/debugger/abstractions.js.map +1 -0
  358. package/features/debugger/constants.d.ts +1 -0
  359. package/features/debugger/constants.js +4 -0
  360. package/features/debugger/constants.js.map +1 -0
  361. package/features/debugger/feature.d.ts +3 -0
  362. package/features/debugger/feature.js +19 -0
  363. package/features/debugger/feature.js.map +1 -0
  364. package/features/debugger/index.d.ts +3 -0
  365. package/features/debugger/index.js +3 -0
  366. package/features/formModel/AccessControlRuleEvaluator.d.ts +12 -0
  367. package/features/formModel/AccessControlRuleEvaluator.js +30 -0
  368. package/features/formModel/AccessControlRuleEvaluator.js.map +1 -0
  369. package/features/formModel/AccessControlRuleEvaluator.test.d.ts +1 -0
  370. package/features/formModel/AccessControlRuleEvaluator.test.js +219 -0
  371. package/features/formModel/AccessControlRuleEvaluator.test.js.map +1 -0
  372. package/features/formModel/ConditionRuleEvaluator.js +34 -4
  373. package/features/formModel/ConditionRuleEvaluator.js.map +1 -1
  374. package/features/formModel/Field.d.ts +14 -1
  375. package/features/formModel/Field.js +41 -5
  376. package/features/formModel/Field.js.map +1 -1
  377. package/features/formModel/FieldBuilder.d.ts +3 -3
  378. package/features/formModel/FieldBuilder.js +2 -1
  379. package/features/formModel/FieldBuilder.js.map +1 -1
  380. package/features/formModel/FieldBuilder.test.js +158 -1
  381. package/features/formModel/FieldBuilder.test.js.map +1 -1
  382. package/features/formModel/FocusManager.js +10 -3
  383. package/features/formModel/FocusManager.js.map +1 -1
  384. package/features/formModel/FormErrors.js +1 -1
  385. package/features/formModel/FormErrors.js.map +1 -1
  386. package/features/formModel/FormModel.d.ts +2 -0
  387. package/features/formModel/FormModel.js +32 -9
  388. package/features/formModel/FormModel.js.map +1 -1
  389. package/features/formModel/FormModel.test.js +835 -4
  390. package/features/formModel/FormModel.test.js.map +1 -1
  391. package/features/formModel/ObjectField.d.ts +12 -1
  392. package/features/formModel/ObjectField.js +70 -20
  393. package/features/formModel/ObjectField.js.map +1 -1
  394. package/features/formModel/Rules.test.js +224 -16
  395. package/features/formModel/Rules.test.js.map +1 -1
  396. package/features/formModel/abstractions.d.ts +56 -4
  397. package/features/formModel/abstractions.js +2 -1
  398. package/features/formModel/abstractions.js.map +1 -1
  399. package/features/formModel/createFieldRenderer.d.ts +42 -0
  400. package/features/formModel/createFieldRenderer.js +33 -10
  401. package/features/formModel/createFieldRenderer.js.map +1 -1
  402. package/features/formModel/feature.js +2 -0
  403. package/features/formModel/feature.js.map +1 -1
  404. package/features/formModel/fieldTypes/DateTimeFieldType.d.ts +67 -4
  405. package/features/formModel/fieldTypes/DateTimeFieldType.js +88 -22
  406. package/features/formModel/fieldTypes/DateTimeFieldType.js.map +1 -1
  407. package/features/formModel/fieldTypes/ObjectFieldType.d.ts +3 -1
  408. package/features/formModel/fieldTypes/ObjectFieldType.js +23 -1
  409. package/features/formModel/fieldTypes/ObjectFieldType.js.map +1 -1
  410. package/features/formModel/fieldTypes/dateLimits.d.ts +37 -0
  411. package/features/formModel/fieldTypes/dateLimits.js +64 -0
  412. package/features/formModel/fieldTypes/dateLimits.js.map +1 -0
  413. package/features/formModel/fieldTypes/dateLimits.test.d.ts +1 -0
  414. package/features/formModel/fieldTypes/dateLimits.test.js +60 -0
  415. package/features/formModel/fieldTypes/dateLimits.test.js.map +1 -0
  416. package/features/formModel/hasSubtreeFocusRequest.d.ts +12 -0
  417. package/features/formModel/hasSubtreeFocusRequest.js +15 -0
  418. package/features/formModel/hasSubtreeFocusRequest.js.map +1 -0
  419. package/features/formModel/index.d.ts +3 -2
  420. package/features/formModel/index.js +2 -1
  421. package/features/formModel/jsonSchema/JsonSchema.d.ts +18 -0
  422. package/features/formModel/jsonSchema/JsonSchema.js +0 -0
  423. package/features/formModel/jsonSchema/JsonSchemaFieldOptions.d.ts +4 -0
  424. package/features/formModel/jsonSchema/JsonSchemaFieldOptions.js +0 -0
  425. package/features/formModel/jsonSchema/JsonSchemaIssue.d.ts +4 -0
  426. package/features/formModel/jsonSchema/JsonSchemaIssue.js +0 -0
  427. package/features/formModel/jsonSchema/JsonSchemaValidationResult.d.ts +5 -0
  428. package/features/formModel/jsonSchema/JsonSchemaValidationResult.js +0 -0
  429. package/features/formModel/jsonSchema/JsonSchemaValidator.d.ts +4 -0
  430. package/features/formModel/jsonSchema/JsonSchemaValidator.js +0 -0
  431. package/features/formModel/jsonSchema/PlainObject.d.ts +1 -0
  432. package/features/formModel/jsonSchema/PlainObject.js +0 -0
  433. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.d.ts +5 -0
  434. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.js +154 -0
  435. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.js.map +1 -0
  436. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.d.ts +1 -0
  437. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.js +643 -0
  438. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.js.map +1 -0
  439. package/features/formModel/jsonSchema/createJsonSchemaValidator.d.ts +3 -0
  440. package/features/formModel/jsonSchema/createJsonSchemaValidator.js +40 -0
  441. package/features/formModel/jsonSchema/createJsonSchemaValidator.js.map +1 -0
  442. package/features/formModel/jsonSchema/createJsonSchemaValidator.test.d.ts +1 -0
  443. package/features/formModel/jsonSchema/createJsonSchemaValidator.test.js +141 -0
  444. package/features/formModel/jsonSchema/createJsonSchemaValidator.test.js.map +1 -0
  445. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.d.ts +3 -0
  446. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.js +52 -0
  447. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.js.map +1 -0
  448. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.d.ts +1 -0
  449. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.js +250 -0
  450. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.js.map +1 -0
  451. package/features/formModel/jsonSchema/getJsonSchemaKind.d.ts +3 -0
  452. package/features/formModel/jsonSchema/getJsonSchemaKind.js +31 -0
  453. package/features/formModel/jsonSchema/getJsonSchemaKind.js.map +1 -0
  454. package/features/formModel/jsonSchema/getJsonSchemaKind.test.d.ts +1 -0
  455. package/features/formModel/jsonSchema/getJsonSchemaKind.test.js +123 -0
  456. package/features/formModel/jsonSchema/getJsonSchemaKind.test.js.map +1 -0
  457. package/features/formModel/jsonSchema/isPlainObject.d.ts +2 -0
  458. package/features/formModel/jsonSchema/isPlainObject.js +4 -0
  459. package/features/formModel/jsonSchema/isPlainObject.js.map +1 -0
  460. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.d.ts +3 -0
  461. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.js +30 -0
  462. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.js.map +1 -0
  463. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.d.ts +1 -0
  464. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.js +207 -0
  465. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.js.map +1 -0
  466. package/features/formModel/jsonSchema/normalizeJsonSchema.d.ts +2 -0
  467. package/features/formModel/jsonSchema/normalizeJsonSchema.js +10 -0
  468. package/features/formModel/jsonSchema/normalizeJsonSchema.js.map +1 -0
  469. package/features/formModel/renderers.d.ts +1 -0
  470. package/features/formModel/renderers.js +1 -0
  471. package/features/notifications/Notifications.d.ts +1 -0
  472. package/features/notifications/Notifications.js +3 -0
  473. package/features/notifications/Notifications.js.map +1 -1
  474. package/features/notifications/Notifications.test.d.ts +1 -0
  475. package/features/notifications/Notifications.test.js +106 -0
  476. package/features/notifications/Notifications.test.js.map +1 -0
  477. package/features/notifications/NotificationsRenderer.d.ts +2 -1
  478. package/features/notifications/NotificationsRenderer.js +23 -4
  479. package/features/notifications/NotificationsRenderer.js.map +1 -1
  480. package/features/notifications/NotificationsRenderer.test.d.ts +1 -0
  481. package/features/notifications/NotificationsRenderer.test.js +261 -0
  482. package/features/notifications/NotificationsRenderer.test.js.map +1 -0
  483. package/features/notifications/abstractions.d.ts +13 -2
  484. package/features/notifications/abstractions.js.map +1 -1
  485. package/features/security/LogIn/LogInUseCase.d.ts +0 -1
  486. package/features/security/LogIn/LogInUseCase.js +2 -5
  487. package/features/security/LogIn/LogInUseCase.js.map +1 -1
  488. package/features/security/LogIn/hasAppPermissions.d.ts +2 -0
  489. package/features/security/LogIn/hasAppPermissions.js +8 -0
  490. package/features/security/LogIn/hasAppPermissions.js.map +1 -0
  491. package/features/wcp/ReactLicense.d.ts +6 -1
  492. package/features/wcp/ReactLicense.js +17 -2
  493. package/features/wcp/ReactLicense.js.map +1 -1
  494. package/features/wcp/WcpGateway.js +4 -0
  495. package/features/wcp/WcpGateway.js.map +1 -1
  496. package/hooks/useHotkeys.js +6 -4
  497. package/hooks/useHotkeys.js.map +1 -1
  498. package/index.d.ts +27 -3
  499. package/index.js +23 -6
  500. package/modules/AccessManagementExtension.js +3 -1
  501. package/modules/AccessManagementExtension.js.map +1 -1
  502. package/modules/DebuggerExtension.d.ts +2 -0
  503. package/modules/DebuggerExtension.js +55 -0
  504. package/modules/DebuggerExtension.js.map +1 -0
  505. package/package.json +41 -41
  506. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js +1 -2
  507. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js.map +1 -1
  508. package/presentation/accessManagement/roles/RolesPresenter.js +1 -2
  509. package/presentation/accessManagement/roles/RolesPresenter.js.map +1 -1
  510. package/presentation/accessManagement/roles/components/RolesDataList.d.ts +10 -0
  511. package/presentation/accessManagement/roles/components/RolesDataList.js +146 -0
  512. package/presentation/accessManagement/roles/components/RolesDataList.js.map +1 -0
  513. package/presentation/accessManagement/roles/components/RolesForm.d.ts +13 -0
  514. package/presentation/accessManagement/roles/components/RolesForm.js +114 -0
  515. package/presentation/accessManagement/roles/components/RolesForm.js.map +1 -0
  516. package/presentation/accessManagement/roles/components/RolesView.js +6 -216
  517. package/presentation/accessManagement/roles/components/RolesView.js.map +1 -1
  518. package/presentation/accessManagement/teams/TeamsPresenter.js +1 -2
  519. package/presentation/accessManagement/teams/TeamsPresenter.js.map +1 -1
  520. package/presentation/accessManagement/teams/components/TeamsDataList.d.ts +10 -0
  521. package/presentation/accessManagement/teams/components/TeamsDataList.js +146 -0
  522. package/presentation/accessManagement/teams/components/TeamsDataList.js.map +1 -0
  523. package/presentation/accessManagement/teams/components/TeamsForm.d.ts +13 -0
  524. package/presentation/accessManagement/teams/components/TeamsForm.js +96 -0
  525. package/presentation/accessManagement/teams/components/TeamsForm.js.map +1 -0
  526. package/presentation/accessManagement/teams/components/TeamsView.js +6 -198
  527. package/presentation/accessManagement/teams/components/TeamsView.js.map +1 -1
  528. package/presentation/adminUsers/AdminUsers.d.ts +10 -0
  529. package/presentation/adminUsers/AdminUsers.js +77 -0
  530. package/presentation/adminUsers/AdminUsers.js.map +1 -0
  531. package/presentation/adminUsers/SecurityPermission.d.ts +2 -0
  532. package/presentation/adminUsers/SecurityPermission.js +15 -0
  533. package/presentation/adminUsers/SecurityPermission.js.map +1 -0
  534. package/presentation/adminUsers/UserItem.d.ts +10 -0
  535. package/presentation/adminUsers/UserItem.js +0 -0
  536. package/presentation/adminUsers/components/AvatarImage/AvatarImage.d.ts +3 -0
  537. package/presentation/adminUsers/components/AvatarImage/AvatarImage.js +31 -0
  538. package/presentation/adminUsers/components/AvatarImage/AvatarImage.js.map +1 -0
  539. package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.d.ts +10 -0
  540. package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.js +53 -0
  541. package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.js.map +1 -0
  542. package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.d.ts +7 -0
  543. package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.js +28 -0
  544. package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.js.map +1 -0
  545. package/presentation/adminUsers/components/AvatarImage/index.d.ts +1 -0
  546. package/presentation/adminUsers/components/AvatarImage/index.js +1 -0
  547. package/presentation/adminUsers/routes.d.ts +10 -0
  548. package/presentation/adminUsers/routes.js +20 -0
  549. package/presentation/adminUsers/routes.js.map +1 -0
  550. package/presentation/adminUsers/userMenu/AccountDetails.d.ts +6 -0
  551. package/presentation/adminUsers/userMenu/AccountDetails.js +20 -0
  552. package/presentation/adminUsers/userMenu/AccountDetails.js.map +1 -0
  553. package/presentation/adminUsers/userMenu/useIsDefaultTenant.d.ts +1 -0
  554. package/presentation/adminUsers/userMenu/useIsDefaultTenant.js +9 -0
  555. package/presentation/adminUsers/userMenu/useIsDefaultTenant.js.map +1 -0
  556. package/presentation/adminUsers/views/Account/Account.d.ts +2 -0
  557. package/presentation/adminUsers/views/Account/Account.js +137 -0
  558. package/presentation/adminUsers/views/Account/Account.js.map +1 -0
  559. package/presentation/adminUsers/views/Account/index.d.ts +1 -0
  560. package/presentation/adminUsers/views/Account/index.js +1 -0
  561. package/presentation/adminUsers/views/Users/UsersDataList.d.ts +3 -0
  562. package/presentation/adminUsers/views/Users/UsersDataList.js +180 -0
  563. package/presentation/adminUsers/views/Users/UsersDataList.js.map +1 -0
  564. package/presentation/adminUsers/views/Users/UsersForm.d.ts +5 -0
  565. package/presentation/adminUsers/views/Users/UsersForm.js +175 -0
  566. package/presentation/adminUsers/views/Users/UsersForm.js.map +1 -0
  567. package/presentation/adminUsers/views/Users/UsersView.d.ts +2 -0
  568. package/presentation/adminUsers/views/Users/UsersView.js +15 -0
  569. package/presentation/adminUsers/views/Users/UsersView.js.map +1 -0
  570. package/presentation/adminUsers/views/Users/components/DeleteAction.d.ts +7 -0
  571. package/presentation/adminUsers/views/Users/components/DeleteAction.js +29 -0
  572. package/presentation/adminUsers/views/Users/components/DeleteAction.js.map +1 -0
  573. package/presentation/adminUsers/views/Users/hooks/useUserForm.d.ts +27 -0
  574. package/presentation/adminUsers/views/Users/hooks/useUserForm.js +101 -0
  575. package/presentation/adminUsers/views/Users/hooks/useUserForm.js.map +1 -0
  576. package/presentation/adminUsers/views/Users/search.js +21 -0
  577. package/presentation/adminUsers/views/Users/search.js.map +1 -0
  578. package/presentation/adminUsers/views/Users/search.svg +20 -0
  579. package/presentation/adminUsers/views/utils.d.ts +3 -0
  580. package/presentation/adminUsers/views/utils.js +12 -0
  581. package/presentation/adminUsers/views/utils.js.map +1 -0
  582. package/presentation/aiChats/AiChatsPanelPresenter.d.ts +28 -0
  583. package/presentation/aiChats/AiChatsPanelPresenter.js +132 -0
  584. package/presentation/aiChats/AiChatsPanelPresenter.js.map +1 -0
  585. package/presentation/aiChats/abstractions.d.ts +69 -0
  586. package/presentation/aiChats/abstractions.js +5 -0
  587. package/presentation/aiChats/abstractions.js.map +1 -0
  588. package/presentation/aiChats/feature.d.ts +3 -0
  589. package/presentation/aiChats/feature.js +17 -0
  590. package/presentation/aiChats/feature.js.map +1 -0
  591. package/presentation/aiChats/index.d.ts +2 -0
  592. package/presentation/aiChats/index.js +2 -0
  593. package/presentation/assumePermissions/AssumePermissionsPresenter.d.ts +36 -0
  594. package/presentation/assumePermissions/AssumePermissionsPresenter.js +153 -0
  595. package/presentation/assumePermissions/AssumePermissionsPresenter.js.map +1 -0
  596. package/presentation/assumePermissions/abstractions.d.ts +30 -0
  597. package/presentation/assumePermissions/abstractions.js +5 -0
  598. package/presentation/assumePermissions/abstractions.js.map +1 -0
  599. package/presentation/assumePermissions/components/AssumePermissionsButton.d.ts +14 -0
  600. package/presentation/assumePermissions/components/AssumePermissionsButton.js +42 -0
  601. package/presentation/assumePermissions/components/AssumePermissionsButton.js.map +1 -0
  602. package/presentation/assumePermissions/components/AssumedPermissionsBanner.d.ts +11 -0
  603. package/presentation/assumePermissions/components/AssumedPermissionsBanner.js +25 -0
  604. package/presentation/assumePermissions/components/AssumedPermissionsBanner.js.map +1 -0
  605. package/presentation/assumePermissions/components/AssumedPermissionsSelector.d.ts +2 -0
  606. package/presentation/assumePermissions/components/AssumedPermissionsSelector.js +68 -0
  607. package/presentation/assumePermissions/components/AssumedPermissionsSelector.js.map +1 -0
  608. package/presentation/assumePermissions/feature.d.ts +3 -0
  609. package/presentation/assumePermissions/feature.js +17 -0
  610. package/presentation/assumePermissions/feature.js.map +1 -0
  611. package/presentation/assumePermissions/index.d.ts +4 -0
  612. package/presentation/assumePermissions/index.js +4 -0
  613. package/presentation/banners/BannersPresenter.d.ts +14 -0
  614. package/presentation/banners/BannersPresenter.js +60 -0
  615. package/presentation/banners/BannersPresenter.js.map +1 -0
  616. package/presentation/banners/abstractions.d.ts +24 -0
  617. package/presentation/banners/abstractions.js +5 -0
  618. package/presentation/banners/abstractions.js.map +1 -0
  619. package/presentation/banners/components/Banner.d.ts +10 -0
  620. package/presentation/banners/components/Banner.js +32 -0
  621. package/presentation/banners/components/Banner.js.map +1 -0
  622. package/presentation/banners/components/BannerBar.d.ts +11 -0
  623. package/presentation/banners/components/BannerBar.js +51 -0
  624. package/presentation/banners/components/BannerBar.js.map +1 -0
  625. package/presentation/banners/feature.d.ts +3 -0
  626. package/presentation/banners/feature.js +17 -0
  627. package/presentation/banners/feature.js.map +1 -0
  628. package/presentation/banners/index.d.ts +6 -0
  629. package/presentation/banners/index.js +4 -0
  630. package/presentation/banners/useBanner.d.ts +10 -0
  631. package/presentation/banners/useBanner.js +15 -0
  632. package/presentation/banners/useBanner.js.map +1 -0
  633. package/presentation/commandPalette/CommandPalettePresenter.js +3 -1
  634. package/presentation/commandPalette/CommandPalettePresenter.js.map +1 -1
  635. package/presentation/commandPalette/abstractions.d.ts +5 -0
  636. package/presentation/commandPalette/abstractions.js.map +1 -1
  637. package/presentation/commandPalette/commands/AiChatsCommand.d.ts +24 -0
  638. package/presentation/commandPalette/commands/AiChatsCommand.js +41 -0
  639. package/presentation/commandPalette/commands/AiChatsCommand.js.map +1 -0
  640. package/presentation/commandPalette/commands/AskAiCommand.d.ts +1 -0
  641. package/presentation/commandPalette/commands/AskAiCommand.js +3 -2
  642. package/presentation/commandPalette/commands/AskAiCommand.js.map +1 -1
  643. package/presentation/commandPalette/commands/feature.js +2 -0
  644. package/presentation/commandPalette/commands/feature.js.map +1 -1
  645. package/presentation/createReactiveComponent.d.ts +1 -0
  646. package/presentation/createReactiveComponent.js +1 -0
  647. package/presentation/debugger/DebuggerPresenter.d.ts +14 -0
  648. package/presentation/debugger/DebuggerPresenter.js +45 -0
  649. package/presentation/debugger/DebuggerPresenter.js.map +1 -0
  650. package/presentation/debugger/abstractions.d.ts +17 -0
  651. package/presentation/debugger/abstractions.js +5 -0
  652. package/presentation/debugger/abstractions.js.map +1 -0
  653. package/presentation/debugger/components/DebuggerIndicator.d.ts +2 -0
  654. package/presentation/debugger/components/DebuggerIndicator.js +45 -0
  655. package/presentation/debugger/components/DebuggerIndicator.js.map +1 -0
  656. package/presentation/debugger/components/DebuggerView.d.ts +4 -0
  657. package/presentation/debugger/components/DebuggerView.js +44 -0
  658. package/presentation/debugger/components/DebuggerView.js.map +1 -0
  659. package/presentation/debugger/downloadJson.d.ts +7 -0
  660. package/presentation/debugger/downloadJson.js +17 -0
  661. package/presentation/debugger/downloadJson.js.map +1 -0
  662. package/presentation/debugger/feature.d.ts +3 -0
  663. package/presentation/debugger/feature.js +17 -0
  664. package/presentation/debugger/feature.js.map +1 -0
  665. package/presentation/debugger/routes.d.ts +4 -0
  666. package/presentation/debugger/routes.js +10 -0
  667. package/presentation/debugger/routes.js.map +1 -0
  668. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js +4 -3
  669. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js.map +1 -1
  670. package/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.js.map +1 -1
  671. package/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js.map +1 -1
  672. package/presentation/listPresenter/FolderAwareDataSource.d.ts +5 -0
  673. package/presentation/listPresenter/FolderAwareDataSource.js +4 -3
  674. package/presentation/listPresenter/FolderAwareDataSource.js.map +1 -1
  675. package/presentation/listPresenter/QueryMatcher.d.ts +28 -5
  676. package/presentation/listPresenter/QueryMatcher.js +72 -2
  677. package/presentation/listPresenter/QueryMatcher.js.map +1 -1
  678. package/presentation/listPresenter/QueryMatcher.test.d.ts +1 -0
  679. package/presentation/listPresenter/QueryMatcher.test.js +345 -0
  680. package/presentation/listPresenter/QueryMatcher.test.js.map +1 -0
  681. package/presentation/trashBin/TrashBinPresenter.js +3 -1
  682. package/presentation/trashBin/TrashBinPresenter.js.map +1 -1
  683. package/presentation/trashBin/TrashBinPresenter.test.d.ts +1 -0
  684. package/presentation/trashBin/TrashBinPresenter.test.js +91 -0
  685. package/presentation/trashBin/TrashBinPresenter.test.js.map +1 -0
  686. package/presentation/trashBin/abstractions.d.ts +1 -1
  687. package/presentation/trashBin/abstractions.js.map +1 -1
  688. package/presentation/trashBin/components/BulkActions/DeleteItems.js +5 -1
  689. package/presentation/trashBin/components/BulkActions/DeleteItems.js.map +1 -1
  690. package/presentation/trashBin/components/BulkActions/DeleteItems.test.d.ts +1 -0
  691. package/presentation/trashBin/components/BulkActions/DeleteItems.test.js +100 -0
  692. package/presentation/trashBin/components/BulkActions/DeleteItems.test.js.map +1 -0
  693. package/presentation/trashBin/hooks/useDeleteTrashBinItem.js +2 -1
  694. package/presentation/trashBin/hooks/useDeleteTrashBinItem.js.map +1 -1
  695. package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.d.ts +1 -0
  696. package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.js +67 -0
  697. package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.js.map +1 -0
  698. package/static/svg/search.43fa797c.svg +20 -0
  699. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js +0 -68
  700. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js.map +0 -1
  701. package/features/aiChat/AiChatGateway.js.map +0 -1
  702. package/features/aiChat/AiChatPresenter.d.ts +0 -32
  703. package/features/aiChat/AiChatPresenter.js +0 -220
  704. package/features/aiChat/AiChatPresenter.js.map +0 -1
  705. package/features/aiChat/abstractions.d.ts +0 -124
  706. package/features/aiChat/abstractions.js +0 -6
  707. package/features/aiChat/abstractions.js.map +0 -1
  708. package/features/aiChat/feature.d.ts +0 -3
  709. package/features/aiChat/feature.js +0 -19
  710. package/features/aiChat/feature.js.map +0 -1
  711. package/features/aiChat/index.d.ts +0 -6
  712. package/features/aiChat/index.js +0 -3
  713. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.d.ts +0 -8
  714. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js +0 -17
  715. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js.map +0 -1
  716. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.d.ts +0 -1
  717. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.js +0 -16
  718. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.js.map +0 -1
@@ -0,0 +1,100 @@
1
+ import react from "react";
2
+ import { afterEach, describe, expect, it, vi } from "vitest";
3
+ import { cleanup, fireEvent, render, screen, waitFor } from "@testing-library/react";
4
+ import { BulkActionsDeleteItems } from "./DeleteItems.js";
5
+ const mocks = vi.hoisted(()=>({
6
+ deleteItem: vi.fn(),
7
+ refresh: vi.fn(),
8
+ report: {
9
+ success: vi.fn(),
10
+ error: vi.fn()
11
+ }
12
+ }));
13
+ const items = [
14
+ {
15
+ id: "a",
16
+ title: "Item a"
17
+ },
18
+ {
19
+ id: "b",
20
+ title: "Item b"
21
+ }
22
+ ];
23
+ vi.mock("~/index.js", ()=>({
24
+ useSnackbar: ()=>({
25
+ showSnackbar: vi.fn()
26
+ })
27
+ }));
28
+ vi.mock("../../hooks/index.js", ()=>({
29
+ useTrashBinPresenter: ()=>({
30
+ actions: {
31
+ deleteItem: mocks.deleteItem,
32
+ refresh: mocks.refresh
33
+ }
34
+ })
35
+ }));
36
+ vi.mock("../../configs/index.js", ()=>({
37
+ TrashBinListConfig: {
38
+ Browser: {
39
+ BulkAction: {
40
+ useWorker: ()=>({
41
+ items: items,
42
+ isSelectedAll: false,
43
+ resetItems: vi.fn(),
44
+ results: [],
45
+ processInSeries: async (callback)=>{
46
+ for (const item of items)await callback({
47
+ item,
48
+ report: mocks.report
49
+ });
50
+ }
51
+ }),
52
+ useButtons: ()=>({
53
+ ButtonDefault: (props)=>/*#__PURE__*/ react.createElement("button", {
54
+ onClick: props.onAction
55
+ }, props.children)
56
+ }),
57
+ useDialog: ()=>({
58
+ showConfirmationDialog: (params)=>params.execute(),
59
+ showResultsDialog: vi.fn()
60
+ })
61
+ }
62
+ }
63
+ }
64
+ }));
65
+ vi.mock("@webiny/admin-ui", ()=>({
66
+ Tooltip: (props)=>props.trigger
67
+ }));
68
+ vi.mock("@webiny/icons/delete.svg", ()=>({
69
+ ReactComponent: ()=>null
70
+ }));
71
+ describe("BulkActionsDeleteItems", ()=>{
72
+ afterEach(()=>{
73
+ cleanup();
74
+ vi.clearAllMocks();
75
+ });
76
+ it("reports a deleted item as a success", async ()=>{
77
+ mocks.deleteItem.mockResolvedValue(true);
78
+ render(/*#__PURE__*/ react.createElement(BulkActionsDeleteItems, null));
79
+ fireEvent.click(screen.getByRole("button", {
80
+ name: "Delete"
81
+ }));
82
+ await waitFor(()=>expect(mocks.report.success).toHaveBeenCalledTimes(2));
83
+ expect(mocks.report.error).not.toHaveBeenCalled();
84
+ });
85
+ it("reports an item whose delete returned false as a failure, not a success", async ()=>{
86
+ mocks.deleteItem.mockResolvedValueOnce(false).mockResolvedValueOnce(true);
87
+ render(/*#__PURE__*/ react.createElement(BulkActionsDeleteItems, null));
88
+ fireEvent.click(screen.getByRole("button", {
89
+ name: "Delete"
90
+ }));
91
+ await waitFor(()=>expect(mocks.report.error).toHaveBeenCalledTimes(1));
92
+ expect(mocks.report.error).toHaveBeenCalledWith({
93
+ title: "Item a",
94
+ message: "The item was not deleted."
95
+ });
96
+ expect(mocks.report.success).toHaveBeenCalledTimes(1);
97
+ });
98
+ });
99
+
100
+ //# sourceMappingURL=DeleteItems.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/trashBin/components/BulkActions/DeleteItems.test.js","sources":["../../../../../src/presentation/trashBin/components/BulkActions/DeleteItems.test.tsx"],"sourcesContent":["import React from \"react\";\nimport { afterEach } from \"vitest\";\nimport type { Mock } from \"vitest\";\nimport { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { vi } from \"vitest\";\nimport { cleanup } from \"@testing-library/react\";\nimport { fireEvent } from \"@testing-library/react\";\nimport { render } from \"@testing-library/react\";\nimport { screen } from \"@testing-library/react\";\nimport { waitFor } from \"@testing-library/react\";\n\ninterface TestItem {\n id: string;\n title: string;\n}\n\ninterface TestReport {\n success: Mock;\n error: Mock;\n}\n\nconst mocks = vi.hoisted(() => ({\n deleteItem: vi.fn(),\n refresh: vi.fn(),\n report: { success: vi.fn(), error: vi.fn() }\n}));\n\nconst items: TestItem[] = [\n { id: \"a\", title: \"Item a\" },\n { id: \"b\", title: \"Item b\" }\n];\n\nvi.mock(\"~/index.js\", () => ({\n useSnackbar: () => ({ showSnackbar: vi.fn() })\n}));\n\nvi.mock(\"../../hooks/index.js\", () => ({\n useTrashBinPresenter: () => ({\n actions: { deleteItem: mocks.deleteItem, refresh: mocks.refresh }\n })\n}));\n\nvi.mock(\"../../configs/index.js\", () => ({\n TrashBinListConfig: {\n Browser: {\n BulkAction: {\n useWorker: () => ({\n items,\n isSelectedAll: false,\n resetItems: vi.fn(),\n results: [],\n processInSeries: async (\n callback: (params: { item: TestItem; report: TestReport }) => Promise<void>\n ) => {\n for (const item of items) {\n await callback({ item, report: mocks.report });\n }\n }\n }),\n useButtons: () => ({\n ButtonDefault: (props: { onAction: () => void; children: React.ReactNode }) => (\n <button onClick={props.onAction}>{props.children}</button>\n )\n }),\n useDialog: () => ({\n showConfirmationDialog: (params: { execute: () => Promise<void> }) =>\n params.execute(),\n showResultsDialog: vi.fn()\n })\n }\n }\n }\n}));\n\nvi.mock(\"@webiny/admin-ui\", () => ({\n Tooltip: (props: { trigger: React.ReactNode }) => props.trigger\n}));\n\nvi.mock(\"@webiny/icons/delete.svg\", () => ({ ReactComponent: () => null }));\n\nimport { BulkActionsDeleteItems } from \"./DeleteItems.js\";\n\ndescribe(\"BulkActionsDeleteItems\", () => {\n afterEach(() => {\n cleanup();\n vi.clearAllMocks();\n });\n\n it(\"reports a deleted item as a success\", async () => {\n mocks.deleteItem.mockResolvedValue(true);\n render(<BulkActionsDeleteItems />);\n\n fireEvent.click(screen.getByRole(\"button\", { name: \"Delete\" }));\n\n await waitFor(() => expect(mocks.report.success).toHaveBeenCalledTimes(2));\n expect(mocks.report.error).not.toHaveBeenCalled();\n });\n\n it(\"reports an item whose delete returned false as a failure, not a success\", async () => {\n mocks.deleteItem.mockResolvedValueOnce(false).mockResolvedValueOnce(true);\n render(<BulkActionsDeleteItems />);\n\n fireEvent.click(screen.getByRole(\"button\", { name: \"Delete\" }));\n\n await waitFor(() => expect(mocks.report.error).toHaveBeenCalledTimes(1));\n expect(mocks.report.error).toHaveBeenCalledWith({\n title: \"Item a\",\n message: \"The item was not deleted.\"\n });\n expect(mocks.report.success).toHaveBeenCalledTimes(1);\n });\n});\n"],"names":["mocks","vi","items","callback","item","props","params","describe","afterEach","cleanup","it","render","BulkActionsDeleteItems","fireEvent","screen","waitFor","expect"],"mappings":";;;;AAuBA,MAAMA,QAAQC,GAAG,OAAO,CAAC,IAAO;QAC5B,YAAYA,GAAG,EAAE;QACjB,SAASA,GAAG,EAAE;QACd,QAAQ;YAAE,SAASA,GAAG,EAAE;YAAI,OAAOA,GAAG,EAAE;QAAG;IAC/C;AAEA,MAAMC,QAAoB;IACtB;QAAE,IAAI;QAAK,OAAO;IAAS;IAC3B;QAAE,IAAI;QAAK,OAAO;IAAS;CAC9B;AAEDD,GAAG,IAAI,CAAC,cAAc,IAAO;QACzB,aAAa,IAAO;gBAAE,cAAcA,GAAG,EAAE;YAAG;IAChD;AAEAA,GAAG,IAAI,CAAC,wBAAwB,IAAO;QACnC,sBAAsB,IAAO;gBACzB,SAAS;oBAAE,YAAYD,MAAM,UAAU;oBAAE,SAASA,MAAM,OAAO;gBAAC;YACpE;IACJ;AAEAC,GAAG,IAAI,CAAC,0BAA0B,IAAO;QACrC,oBAAoB;YAChB,SAAS;gBACL,YAAY;oBACR,WAAW,IAAO;4BACdC,OAAAA;4BACA,eAAe;4BACf,YAAYD,GAAG,EAAE;4BACjB,SAAS,EAAE;4BACX,iBAAiB,OACbE;gCAEA,KAAK,MAAMC,QAAQF,MACf,MAAMC,SAAS;oCAAEC;oCAAM,QAAQJ,MAAM,MAAM;gCAAC;4BAEpD;wBACJ;oBACA,YAAY,IAAO;4BACf,eAAe,CAACK,QAAAA,WAAAA,GACZ,oBAAC;oCAAO,SAASA,MAAM,QAAQ;mCAAGA,MAAM,QAAQ;wBAExD;oBACA,WAAW,IAAO;4BACd,wBAAwB,CAACC,SACrBA,OAAO,OAAO;4BAClB,mBAAmBL,GAAG,EAAE;wBAC5B;gBACJ;YACJ;QACJ;IACJ;AAEAA,GAAG,IAAI,CAAC,oBAAoB,IAAO;QAC/B,SAAS,CAACI,QAAwCA,MAAM,OAAO;IACnE;AAEAJ,GAAG,IAAI,CAAC,4BAA4B,IAAO;QAAE,gBAAgB,IAAM;IAAK;AAIxEM,SAAS,0BAA0B;IAC/BC,UAAU;QACNC;QACAR,GAAG,aAAa;IACpB;IAEAS,GAAG,uCAAuC;QACtCV,MAAM,UAAU,CAAC,iBAAiB,CAAC;QACnCW,OAAO,WAADA,GAAC,oBAACC,wBAAsBA;QAE9BC,UAAU,KAAK,CAACC,OAAO,SAAS,CAAC,UAAU;YAAE,MAAM;QAAS;QAE5D,MAAMC,QAAQ,IAAMC,OAAOhB,MAAM,MAAM,CAAC,OAAO,EAAE,qBAAqB,CAAC;QACvEgB,OAAOhB,MAAM,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,gBAAgB;IACnD;IAEAU,GAAG,2EAA2E;QAC1EV,MAAM,UAAU,CAAC,qBAAqB,CAAC,OAAO,qBAAqB,CAAC;QACpEW,OAAO,WAADA,GAAC,oBAACC,wBAAsBA;QAE9BC,UAAU,KAAK,CAACC,OAAO,SAAS,CAAC,UAAU;YAAE,MAAM;QAAS;QAE5D,MAAMC,QAAQ,IAAMC,OAAOhB,MAAM,MAAM,CAAC,KAAK,EAAE,qBAAqB,CAAC;QACrEgB,OAAOhB,MAAM,MAAM,CAAC,KAAK,EAAE,oBAAoB,CAAC;YAC5C,OAAO;YACP,SAAS;QACb;QACAgB,OAAOhB,MAAM,MAAM,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACvD;AACJ"}
@@ -11,7 +11,8 @@ const useDeleteTrashBinItem = ({ item })=>{
11
11
  });
12
12
  const openDialogDeleteItem = useCallback(()=>showConfirmation(async ()=>{
13
13
  try {
14
- await actions.deleteItem(item.id);
14
+ const deleted = await actions.deleteItem(item.id);
15
+ if (false === deleted) return;
15
16
  toast.showSuccessToast({
16
17
  title: `${item.title} was deleted successfully!`
17
18
  });
@@ -1 +1 @@
1
- {"version":3,"file":"presentation/trashBin/hooks/useDeleteTrashBinItem.js","sources":["../../../../src/presentation/trashBin/hooks/useDeleteTrashBinItem.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { useConfirmationDialog } from \"~/index.js\";\nimport type { TrashBinItem } from \"../abstractions.js\";\nimport { useTrashBinPresenter } from \"./useTrashBinPresenter.js\";\nimport { useToast } from \"@webiny/admin-ui\";\n\ninterface UseDeleteItemParams {\n item: TrashBinItem;\n}\n\nexport const useDeleteTrashBinItem = ({ item }: UseDeleteItemParams) => {\n const { actions } = useTrashBinPresenter();\n const toast = useToast();\n\n const { showConfirmation } = useConfirmationDialog({\n title: \"Delete item\",\n message: (\n <p>\n You are about to delete this item and all of its revisions!\n <br />\n Are you sure you want to permanently delete <strong>{item.title}</strong>?\n </p>\n )\n });\n\n const openDialogDeleteItem = useCallback(\n () =>\n showConfirmation(async () => {\n try {\n await actions.deleteItem(item.id);\n toast.showSuccessToast({ title: `${item.title} was deleted successfully!` });\n } catch (ex: any) {\n toast.showWarningToast({\n title: ex.message || `Error while deleting ${item.title}`\n });\n }\n }),\n [item, actions]\n );\n\n return { openDialogDeleteItem };\n};\n"],"names":["useDeleteTrashBinItem","item","actions","useTrashBinPresenter","toast","useToast","showConfirmation","useConfirmationDialog","openDialogDeleteItem","useCallback","ex"],"mappings":";;;;AAUO,MAAMA,wBAAwB,CAAC,EAAEC,IAAI,EAAuB;IAC/D,MAAM,EAAEC,OAAO,EAAE,GAAGC;IACpB,MAAMC,QAAQC;IAEd,MAAM,EAAEC,gBAAgB,EAAE,GAAGC,sBAAsB;QAC/C,OAAO;QACP,SAAS,WAAT,GACI,oBAAC,WAAE,6EAEC,oBAAC,aAAK,8DACsC,oBAAC,gBAAQN,KAAK,KAAK,GAAU;IAGrF;IAEA,MAAMO,uBAAuBC,YACzB,IACIH,iBAAiB;YACb,IAAI;gBACA,MAAMJ,QAAQ,UAAU,CAACD,KAAK,EAAE;gBAChCG,MAAM,gBAAgB,CAAC;oBAAE,OAAO,GAAGH,KAAK,KAAK,CAAC,0BAA0B,CAAC;gBAAC;YAC9E,EAAE,OAAOS,IAAS;gBACdN,MAAM,gBAAgB,CAAC;oBACnB,OAAOM,GAAG,OAAO,IAAI,CAAC,qBAAqB,EAAET,KAAK,KAAK,EAAE;gBAC7D;YACJ;QACJ,IACJ;QAACA;QAAMC;KAAQ;IAGnB,OAAO;QAAEM;IAAqB;AAClC"}
1
+ {"version":3,"file":"presentation/trashBin/hooks/useDeleteTrashBinItem.js","sources":["../../../../src/presentation/trashBin/hooks/useDeleteTrashBinItem.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { useConfirmationDialog } from \"~/index.js\";\nimport type { TrashBinItem } from \"../abstractions.js\";\nimport { useTrashBinPresenter } from \"./useTrashBinPresenter.js\";\nimport { useToast } from \"@webiny/admin-ui\";\n\ninterface UseDeleteItemParams {\n item: TrashBinItem;\n}\n\nexport const useDeleteTrashBinItem = ({ item }: UseDeleteItemParams) => {\n const { actions } = useTrashBinPresenter();\n const toast = useToast();\n\n const { showConfirmation } = useConfirmationDialog({\n title: \"Delete item\",\n message: (\n <p>\n You are about to delete this item and all of its revisions!\n <br />\n Are you sure you want to permanently delete <strong>{item.title}</strong>?\n </p>\n )\n });\n\n const openDialogDeleteItem = useCallback(\n () =>\n showConfirmation(async () => {\n try {\n const deleted = await actions.deleteItem(item.id);\n if (deleted === false) {\n return;\n }\n\n toast.showSuccessToast({ title: `${item.title} was deleted successfully!` });\n } catch (ex: any) {\n toast.showWarningToast({\n title: ex.message || `Error while deleting ${item.title}`\n });\n }\n }),\n [item, actions]\n );\n\n return { openDialogDeleteItem };\n};\n"],"names":["useDeleteTrashBinItem","item","actions","useTrashBinPresenter","toast","useToast","showConfirmation","useConfirmationDialog","openDialogDeleteItem","useCallback","deleted","ex"],"mappings":";;;;AAUO,MAAMA,wBAAwB,CAAC,EAAEC,IAAI,EAAuB;IAC/D,MAAM,EAAEC,OAAO,EAAE,GAAGC;IACpB,MAAMC,QAAQC;IAEd,MAAM,EAAEC,gBAAgB,EAAE,GAAGC,sBAAsB;QAC/C,OAAO;QACP,SAAS,WAAT,GACI,oBAAC,WAAE,6EAEC,oBAAC,aAAK,8DACsC,oBAAC,gBAAQN,KAAK,KAAK,GAAU;IAGrF;IAEA,MAAMO,uBAAuBC,YACzB,IACIH,iBAAiB;YACb,IAAI;gBACA,MAAMI,UAAU,MAAMR,QAAQ,UAAU,CAACD,KAAK,EAAE;gBAChD,IAAIS,AAAY,UAAZA,SACA;gBAGJN,MAAM,gBAAgB,CAAC;oBAAE,OAAO,GAAGH,KAAK,KAAK,CAAC,0BAA0B,CAAC;gBAAC;YAC9E,EAAE,OAAOU,IAAS;gBACdP,MAAM,gBAAgB,CAAC;oBACnB,OAAOO,GAAG,OAAO,IAAI,CAAC,qBAAqB,EAAEV,KAAK,KAAK,EAAE;gBAC7D;YACJ;QACJ,IACJ;QAACA;QAAMC;KAAQ;IAGnB,OAAO;QAAEM;IAAqB;AAClC"}
@@ -0,0 +1,67 @@
1
+ import { afterEach, describe, expect, it, vi } from "vitest";
2
+ import { cleanup, renderHook } from "@testing-library/react";
3
+ import { useDeleteTrashBinItem } from "./useDeleteTrashBinItem.js";
4
+ const mocks = vi.hoisted(()=>({
5
+ deleteItem: vi.fn(),
6
+ showSuccessToast: vi.fn(),
7
+ showWarningToast: vi.fn()
8
+ }));
9
+ vi.mock("~/index.js", ()=>({
10
+ useConfirmationDialog: ()=>({
11
+ showConfirmation: (callback)=>callback()
12
+ })
13
+ }));
14
+ vi.mock("./useTrashBinPresenter.js", ()=>({
15
+ useTrashBinPresenter: ()=>({
16
+ actions: {
17
+ deleteItem: mocks.deleteItem
18
+ }
19
+ })
20
+ }));
21
+ vi.mock("@webiny/admin-ui", ()=>({
22
+ useToast: ()=>({
23
+ showSuccessToast: mocks.showSuccessToast,
24
+ showWarningToast: mocks.showWarningToast
25
+ })
26
+ }));
27
+ const ITEM = {
28
+ id: "a",
29
+ title: "Item a"
30
+ };
31
+ describe("useDeleteTrashBinItem", ()=>{
32
+ afterEach(()=>{
33
+ cleanup();
34
+ vi.clearAllMocks();
35
+ });
36
+ it("shows the success toast when the item was deleted", async ()=>{
37
+ mocks.deleteItem.mockResolvedValue(true);
38
+ const { result } = renderHook(()=>useDeleteTrashBinItem({
39
+ item: ITEM
40
+ }));
41
+ await result.current.openDialogDeleteItem();
42
+ expect(mocks.showSuccessToast).toHaveBeenCalledWith({
43
+ title: "Item a was deleted successfully!"
44
+ });
45
+ });
46
+ it("shows no toast when the delete was not carried out (warning dismissed)", async ()=>{
47
+ mocks.deleteItem.mockResolvedValue(false);
48
+ const { result } = renderHook(()=>useDeleteTrashBinItem({
49
+ item: ITEM
50
+ }));
51
+ await result.current.openDialogDeleteItem();
52
+ expect(mocks.showSuccessToast).not.toHaveBeenCalled();
53
+ expect(mocks.showWarningToast).not.toHaveBeenCalled();
54
+ });
55
+ it("shows the warning toast when the delete throws", async ()=>{
56
+ mocks.deleteItem.mockRejectedValue(new Error("Network down"));
57
+ const { result } = renderHook(()=>useDeleteTrashBinItem({
58
+ item: ITEM
59
+ }));
60
+ await result.current.openDialogDeleteItem();
61
+ expect(mocks.showWarningToast).toHaveBeenCalledWith({
62
+ title: "Network down"
63
+ });
64
+ });
65
+ });
66
+
67
+ //# sourceMappingURL=useDeleteTrashBinItem.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/trashBin/hooks/useDeleteTrashBinItem.test.js","sources":["../../../../src/presentation/trashBin/hooks/useDeleteTrashBinItem.test.tsx"],"sourcesContent":["import { afterEach } from \"vitest\";\nimport { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { vi } from \"vitest\";\nimport { cleanup } from \"@testing-library/react\";\nimport { renderHook } from \"@testing-library/react\";\nimport type { TrashBinItem } from \"../abstractions.js\";\n\nconst mocks = vi.hoisted(() => ({\n deleteItem: vi.fn(),\n showSuccessToast: vi.fn(),\n showWarningToast: vi.fn()\n}));\n\nvi.mock(\"~/index.js\", () => ({\n useConfirmationDialog: () => ({\n showConfirmation: (callback: () => Promise<void>) => callback()\n })\n}));\n\nvi.mock(\"./useTrashBinPresenter.js\", () => ({\n useTrashBinPresenter: () => ({ actions: { deleteItem: mocks.deleteItem } })\n}));\n\nvi.mock(\"@webiny/admin-ui\", () => ({\n useToast: () => ({\n showSuccessToast: mocks.showSuccessToast,\n showWarningToast: mocks.showWarningToast\n })\n}));\n\nimport { useDeleteTrashBinItem } from \"./useDeleteTrashBinItem.js\";\n\nconst ITEM = { id: \"a\", title: \"Item a\" } as TrashBinItem;\n\ndescribe(\"useDeleteTrashBinItem\", () => {\n afterEach(() => {\n cleanup();\n vi.clearAllMocks();\n });\n\n it(\"shows the success toast when the item was deleted\", async () => {\n mocks.deleteItem.mockResolvedValue(true);\n const { result } = renderHook(() => useDeleteTrashBinItem({ item: ITEM }));\n\n await result.current.openDialogDeleteItem();\n\n expect(mocks.showSuccessToast).toHaveBeenCalledWith({\n title: \"Item a was deleted successfully!\"\n });\n });\n\n it(\"shows no toast when the delete was not carried out (warning dismissed)\", async () => {\n mocks.deleteItem.mockResolvedValue(false);\n const { result } = renderHook(() => useDeleteTrashBinItem({ item: ITEM }));\n\n await result.current.openDialogDeleteItem();\n\n expect(mocks.showSuccessToast).not.toHaveBeenCalled();\n expect(mocks.showWarningToast).not.toHaveBeenCalled();\n });\n\n it(\"shows the warning toast when the delete throws\", async () => {\n mocks.deleteItem.mockRejectedValue(new Error(\"Network down\"));\n const { result } = renderHook(() => useDeleteTrashBinItem({ item: ITEM }));\n\n await result.current.openDialogDeleteItem();\n\n expect(mocks.showWarningToast).toHaveBeenCalledWith({ title: \"Network down\" });\n });\n});\n"],"names":["mocks","vi","callback","ITEM","describe","afterEach","cleanup","it","result","renderHook","useDeleteTrashBinItem","expect","Error"],"mappings":";;;AASA,MAAMA,QAAQC,GAAG,OAAO,CAAC,IAAO;QAC5B,YAAYA,GAAG,EAAE;QACjB,kBAAkBA,GAAG,EAAE;QACvB,kBAAkBA,GAAG,EAAE;IAC3B;AAEAA,GAAG,IAAI,CAAC,cAAc,IAAO;QACzB,uBAAuB,IAAO;gBAC1B,kBAAkB,CAACC,WAAkCA;YACzD;IACJ;AAEAD,GAAG,IAAI,CAAC,6BAA6B,IAAO;QACxC,sBAAsB,IAAO;gBAAE,SAAS;oBAAE,YAAYD,MAAM,UAAU;gBAAC;YAAE;IAC7E;AAEAC,GAAG,IAAI,CAAC,oBAAoB,IAAO;QAC/B,UAAU,IAAO;gBACb,kBAAkBD,MAAM,gBAAgB;gBACxC,kBAAkBA,MAAM,gBAAgB;YAC5C;IACJ;AAIA,MAAMG,OAAO;IAAE,IAAI;IAAK,OAAO;AAAS;AAExCC,SAAS,yBAAyB;IAC9BC,UAAU;QACNC;QACAL,GAAG,aAAa;IACpB;IAEAM,GAAG,qDAAqD;QACpDP,MAAM,UAAU,CAAC,iBAAiB,CAAC;QACnC,MAAM,EAAEQ,MAAM,EAAE,GAAGC,WAAW,IAAMC,sBAAsB;gBAAE,MAAMP;YAAK;QAEvE,MAAMK,OAAO,OAAO,CAAC,oBAAoB;QAEzCG,OAAOX,MAAM,gBAAgB,EAAE,oBAAoB,CAAC;YAChD,OAAO;QACX;IACJ;IAEAO,GAAG,0EAA0E;QACzEP,MAAM,UAAU,CAAC,iBAAiB,CAAC;QACnC,MAAM,EAAEQ,MAAM,EAAE,GAAGC,WAAW,IAAMC,sBAAsB;gBAAE,MAAMP;YAAK;QAEvE,MAAMK,OAAO,OAAO,CAAC,oBAAoB;QAEzCG,OAAOX,MAAM,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;QACnDW,OAAOX,MAAM,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;IACvD;IAEAO,GAAG,kDAAkD;QACjDP,MAAM,UAAU,CAAC,iBAAiB,CAAC,IAAIY,MAAM;QAC7C,MAAM,EAAEJ,MAAM,EAAE,GAAGC,WAAW,IAAMC,sBAAsB;gBAAE,MAAMP;YAAK;QAEvE,MAAMK,OAAO,OAAO,CAAC,oBAAoB;QAEzCG,OAAOX,MAAM,gBAAgB,EAAE,oBAAoB,CAAC;YAAE,OAAO;QAAe;IAChF;AACJ"}
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
4
+ height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
5
+ <g id="Header_x2F_BG" display="none">
6
+ <rect x="-358" y="-314" display="inline" fill="#F1F1F2" width="520" height="520"/>
7
+ </g>
8
+ <g id="Bounding_Boxes">
9
+ <g id="ui_x5F_spec_x5F_header_copy_3" display="none">
10
+ </g>
11
+ <path fill="none" d="M0,0h24v24H0V0z"/>
12
+ </g>
13
+ <g id="Rounded">
14
+ <g id="ui_x5F_spec_x5F_header_copy_5" display="none">
15
+ </g>
16
+ <path fill="currentColor" d="M15.5,14h-0.79l-0.28-0.27c1.2-1.4,1.82-3.31,1.48-5.34c-0.47-2.78-2.79-5-5.59-5.34c-4.23-0.52-7.79,3.04-7.27,7.27
17
+ c0.34,2.8,2.56,5.12,5.34,5.59c2.03,0.34,3.94-0.28,5.34-1.48L14,14.71v0.79l4.25,4.25c0.41,0.41,1.08,0.41,1.49,0l0,0
18
+ c0.41-0.41,0.41-1.08,0-1.49L15.5,14z M9.5,14C7.01,14,5,11.99,5,9.5S7.01,5,9.5,5S14,7.01,14,9.5S11.99,14,9.5,14z"/>
19
+ </g>
20
+ </svg>
@@ -1,68 +0,0 @@
1
- import react, { useState } from "react";
2
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
3
- import { Button, Dialog, Text } from "@webiny/admin-ui";
4
- import { ReactComponent } from "@webiny/icons/add.svg";
5
- import { ReactComponent as add_circle_outline_svg_ReactComponent } from "@webiny/icons/add_circle_outline.svg";
6
- const normalizeIcon = (icon)=>{
7
- if (!icon) return;
8
- return icon.name.split("/");
9
- };
10
- const AddTemplateButton = ({ templates, onSelect, label, size = "sm", variant = "tertiary" })=>/*#__PURE__*/ react.createElement("div", {
11
- className: "flex justify-between items-center"
12
- }, /*#__PURE__*/ react.createElement(Dialog, {
13
- size: "lg",
14
- className: "w-[800px]",
15
- trigger: /*#__PURE__*/ react.createElement(Button, {
16
- size: size,
17
- variant: variant,
18
- text: label,
19
- icon: /*#__PURE__*/ react.createElement(ReactComponent, null)
20
- }),
21
- title: "Insert a template",
22
- info: /*#__PURE__*/ react.createElement(react.Fragment, null)
23
- }, /*#__PURE__*/ react.createElement(TemplateGallery, {
24
- templates: templates,
25
- onSelect: onSelect
26
- })));
27
- const TemplateGallery = ({ templates, onSelect })=>/*#__PURE__*/ react.createElement("div", {
28
- className: "gap-md flex flex-wrap p-xs"
29
- }, templates.map((template)=>/*#__PURE__*/ react.createElement(TemplateCard, {
30
- key: template.id,
31
- template: template,
32
- onSelect: onSelect
33
- })));
34
- const TemplateCard = ({ template, onSelect })=>{
35
- const [isHovered, setIsHovered] = useState(false);
36
- const icon = normalizeIcon(template.icon);
37
- return /*#__PURE__*/ react.createElement("div", {
38
- onMouseEnter: ()=>setIsHovered(true),
39
- onMouseLeave: ()=>setIsHovered(false),
40
- className: "flex flex-col justify-between bg-neutral-base overflow-hidden rounded-lg w-[173px] relative shadow-sm"
41
- }, /*#__PURE__*/ react.createElement("div", null, /*#__PURE__*/ react.createElement("div", {
42
- className: "flex items-center justify-center py-xxl w-full bg-neutral-dimmed"
43
- }, icon ? /*#__PURE__*/ react.createElement(FontAwesomeIcon, {
44
- className: "text-neutral-xstrong",
45
- icon: icon,
46
- style: {
47
- width: 40,
48
- height: 40
49
- }
50
- }) : null), /*#__PURE__*/ react.createElement("div", {
51
- className: "py-sm-extra px-md"
52
- }, /*#__PURE__*/ react.createElement(Text, {
53
- size: "md",
54
- className: "mb-xs text-neutral-primary font-semibold"
55
- }, template.label))), isHovered && /*#__PURE__*/ react.createElement(Dialog.Close, {
56
- asChild: true
57
- }, /*#__PURE__*/ react.createElement("div", {
58
- className: "absolute inset-0 flex items-center justify-center bg-white/80 cursor-pointer",
59
- onClick: ()=>onSelect(template)
60
- }, /*#__PURE__*/ react.createElement(Button, {
61
- size: "lg",
62
- variant: "primary",
63
- icon: /*#__PURE__*/ react.createElement(add_circle_outline_svg_ReactComponent, null)
64
- }, "Insert"))));
65
- };
66
- export { AddTemplateButton };
67
-
68
- //# sourceMappingURL=TemplatePicker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js","sources":["../../../../../src/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport type { IconProp } from \"@fortawesome/fontawesome-svg-core\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { Button, Dialog, Text } from \"@webiny/admin-ui\";\nimport { ReactComponent as AddIcon } from \"@webiny/icons/add.svg\";\nimport { ReactComponent as PlusIcon } from \"@webiny/icons/add_circle_outline.svg\";\nimport type { ITemplateIcon, ITemplateVM } from \"~/features/formModel/index.js\";\n\nconst normalizeIcon = (icon: ITemplateIcon | undefined): IconProp | undefined => {\n if (!icon) {\n return undefined;\n }\n return icon.name.split(\"/\") as IconProp;\n};\n\nexport interface AddTemplateButtonProps {\n templates: ITemplateVM[];\n onSelect: (template: ITemplateVM) => void;\n label?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"primary\" | \"secondary\" | \"tertiary\";\n}\n\nexport const AddTemplateButton = ({\n templates,\n onSelect,\n label,\n size = \"sm\",\n variant = \"tertiary\"\n}: AddTemplateButtonProps) => {\n return (\n <div className={\"flex justify-between items-center\"}>\n <Dialog\n size={\"lg\"}\n className={\"w-[800px]\"}\n trigger={<Button size={size} variant={variant} text={label} icon={<AddIcon />} />}\n title={\"Insert a template\"}\n info={<></>}\n >\n <TemplateGallery templates={templates} onSelect={onSelect} />\n </Dialog>\n </div>\n );\n};\n\ninterface TemplateGalleryProps {\n templates: ITemplateVM[];\n onSelect: (template: ITemplateVM) => void;\n}\n\nconst TemplateGallery = ({ templates, onSelect }: TemplateGalleryProps) => {\n return (\n <div className={\"gap-md flex flex-wrap p-xs\"}>\n {templates.map(template => (\n <TemplateCard key={template.id} template={template} onSelect={onSelect} />\n ))}\n </div>\n );\n};\n\ninterface TemplateCardProps {\n template: ITemplateVM;\n onSelect: (template: ITemplateVM) => void;\n}\n\nconst TemplateCard = ({ template, onSelect }: TemplateCardProps) => {\n const [isHovered, setIsHovered] = useState(false);\n const icon = normalizeIcon(template.icon);\n\n return (\n <div\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className={\n \"flex flex-col justify-between bg-neutral-base overflow-hidden rounded-lg w-[173px] relative shadow-sm\"\n }\n >\n <div>\n <div className={\"flex items-center justify-center py-xxl w-full bg-neutral-dimmed\"}>\n {icon ? (\n <FontAwesomeIcon\n className={\"text-neutral-xstrong\"}\n icon={icon}\n style={{ width: 40, height: 40 }}\n />\n ) : null}\n </div>\n <div className={\"py-sm-extra px-md\"}>\n <Text size={\"md\"} className={\"mb-xs text-neutral-primary font-semibold\"}>\n {template.label}\n </Text>\n </div>\n </div>\n\n {isHovered && (\n <Dialog.Close asChild>\n <div\n className={\n \"absolute inset-0 flex items-center justify-center bg-white/80 cursor-pointer\"\n }\n onClick={() => onSelect(template)}\n >\n <Button size={\"lg\"} variant={\"primary\"} icon={<PlusIcon />}>\n Insert\n </Button>\n </div>\n </Dialog.Close>\n )}\n </div>\n );\n};\n"],"names":["normalizeIcon","icon","AddTemplateButton","templates","onSelect","label","size","variant","Dialog","Button","AddIcon","TemplateGallery","template","TemplateCard","isHovered","setIsHovered","useState","FontAwesomeIcon","Text","PlusIcon"],"mappings":";;;;;AAQA,MAAMA,gBAAgB,CAACC;IACnB,IAAI,CAACA,MACD;IAEJ,OAAOA,KAAK,IAAI,CAAC,KAAK,CAAC;AAC3B;AAUO,MAAMC,oBAAoB,CAAC,EAC9BC,SAAS,EACTC,QAAQ,EACRC,KAAK,EACLC,OAAO,IAAI,EACXC,UAAU,UAAU,EACC,GACd,WAAP,GACI,oBAAC;QAAI,WAAW;qBACZ,oBAACC,QAAMA;QACH,MAAM;QACN,WAAW;QACX,uBAAS,oBAACC,QAAMA;YAAC,MAAMH;YAAM,SAASC;YAAS,MAAMF;YAAO,oBAAM,oBAACK,gBAAOA;;QAC1E,OAAO;QACP,oBAAM;qBAEN,oBAACC,iBAAeA;QAAC,WAAWR;QAAW,UAAUC;;AAWjE,MAAMO,kBAAkB,CAAC,EAAER,SAAS,EAAEC,QAAQ,EAAwB,GAC3D,WAAP,GACI,oBAAC;QAAI,WAAW;OACXD,UAAU,GAAG,CAACS,CAAAA,WAAAA,WAAAA,GACX,oBAACC,cAAYA;YAAC,KAAKD,SAAS,EAAE;YAAE,UAAUA;YAAU,UAAUR;;AAW9E,MAAMS,eAAe,CAAC,EAAED,QAAQ,EAAER,QAAQ,EAAqB;IAC3D,MAAM,CAACU,WAAWC,aAAa,GAAGC,SAAS;IAC3C,MAAMf,OAAOD,cAAcY,SAAS,IAAI;IAExC,OAAO,WAAP,GACI,oBAAC;QACG,cAAc,IAAMG,aAAa;QACjC,cAAc,IAAMA,aAAa;QACjC,WACI;qBAGJ,oBAAC,2BACG,oBAAC;QAAI,WAAW;OACXd,OAAO,WAAPA,GACG,oBAACgB,iBAAeA;QACZ,WAAW;QACX,MAAMhB;QACN,OAAO;YAAE,OAAO;YAAI,QAAQ;QAAG;SAEnC,qBAER,oBAAC;QAAI,WAAW;qBACZ,oBAACiB,MAAIA;QAAC,MAAM;QAAM,WAAW;OACxBN,SAAS,KAAK,KAK1BE,aAAa,WAAbA,GACG,oBAACN,OAAO,KAAK;QAAC;qBACV,oBAAC;QACG,WACI;QAEJ,SAAS,IAAMJ,SAASQ;qBAExB,oBAACH,QAAMA;QAAC,MAAM;QAAM,SAAS;QAAW,oBAAM,oBAACU,uCAAQA;OAAK;AAQpF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"features/aiChat/AiChatGateway.js","sources":["../../../src/features/aiChat/AiChatGateway.ts"],"sourcesContent":["import { ApiStreamClient } from \"@webiny/app/features/apiStreamClient\";\nimport { readServerSentEvents } from \"@webiny/app/features/apiStreamClient\";\nimport { EnvConfig } from \"@webiny/app/features/envConfig\";\nimport { AiChatGateway as Abstraction } from \"./abstractions.js\";\nimport type { AiChatRequest } from \"./abstractions.js\";\nimport type { AiChatStreamEvent } from \"./abstractions.js\";\nimport { AuthenticationContext } from \"~/features/security/AuthenticationContext/index.js\";\nimport { TenantContext } from \"~/features/tenancy/abstractions.js\";\n\n/*\n * The `/stream/` prefix is required, not cosmetic: it is the CloudFront behavior that targets the\n * Lambda Function URL. Any other path lands on API Gateway and gets buffered.\n */\nconst CHAT_STREAM_PATH = \"/stream/ai/chat\";\n\nconst toBody = (request: AiChatRequest): Record<string, unknown> => {\n const body: Record<string, unknown> = { messages: request.messages };\n\n if (request.approvals?.length) {\n body[\"approvals\"] = request.approvals;\n }\n\n return body;\n};\n\n/**\n * Talks to the API app's chat routes.\n *\n * Streaming goes through `ApiStreamClient`, so auth and tenant headers come from the platform's own\n * decorators — including `x-webiny-authorization`, which the streaming path needs because on AWS\n * SigV4 occupies `Authorization`. Getting that wrong would silently make every streamed request\n * anonymous.\n *\n * The buffered call still uses `fetch`: `ApiStreamClient` hands back an unread `Response` for a caller\n * that owns a read loop, which is the wrong shape for a single JSON answer.\n */\nclass AiChatGatewayImpl implements Abstraction.Interface {\n constructor(\n private authContext: AuthenticationContext.Interface,\n private envConfig: EnvConfig.Interface,\n private tenantContext: TenantContext.Interface,\n private streamClient: ApiStreamClient.Interface\n ) {}\n\n async *stream(request: AiChatRequest, signal?: AbortSignal): AsyncIterable<AiChatStreamEvent> {\n const response = await this.streamClient.execute({\n path: CHAT_STREAM_PATH,\n body: toBody(request),\n signal\n });\n\n yield* readServerSentEvents<AiChatStreamEvent>(response);\n }\n}\n\nexport const AiChatGateway = Abstraction.createImplementation({\n implementation: AiChatGatewayImpl,\n dependencies: [AuthenticationContext, EnvConfig, TenantContext, ApiStreamClient]\n});\n"],"names":["CHAT_STREAM_PATH","toBody","request","body","AiChatGatewayImpl","authContext","envConfig","tenantContext","streamClient","signal","response","readServerSentEvents","AiChatGateway","Abstraction","AuthenticationContext","EnvConfig","TenantContext","ApiStreamClient"],"mappings":";;;;;AAaA,MAAMA,mBAAmB;AAEzB,MAAMC,SAAS,CAACC;IACZ,MAAMC,OAAgC;QAAE,UAAUD,QAAQ,QAAQ;IAAC;IAEnE,IAAIA,QAAQ,SAAS,EAAE,QACnBC,IAAI,CAAC,YAAY,GAAGD,QAAQ,SAAS;IAGzC,OAAOC;AACX;AAaA,MAAMC;IACF,YACYC,WAA4C,EAC5CC,SAA8B,EAC9BC,aAAsC,EACtCC,YAAuC,CACjD;aAJUH,WAAW,GAAXA;aACAC,SAAS,GAATA;aACAC,aAAa,GAAbA;aACAC,YAAY,GAAZA;IACT;IAEH,OAAO,OAAON,OAAsB,EAAEO,MAAoB,EAAoC;QAC1F,MAAMC,WAAW,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;YAC7C,MAAMV;YACN,MAAMC,OAAOC;YACbO;QACJ;QAEA,OAAOE,qBAAwCD;IACnD;AACJ;AAEO,MAAME,8BAAgBC,cAAAA,oBAAgC,CAAC;IAC1D,gBAAgBT;IAChB,cAAc;QAACU;QAAuBC;QAAWC;QAAeC;KAAgB;AACpF"}
@@ -1,32 +0,0 @@
1
- import { AiChatGateway } from "./abstractions.js";
2
- import { AiChatPresenter as Abstraction, type IAiChatViewModel } from "./abstractions.js";
3
- /**
4
- * Owns the palette's AI conversation.
5
- *
6
- * A presenter rather than component state: several pieces change together, a network stream drives
7
- * them, and an abort has to outlive any one render.
8
- *
9
- * Registered as a singleton, so `reset` genuinely clears rather than relying on unmount.
10
- */
11
- declare class AiChatPresenterImpl implements Abstraction.Interface {
12
- private gateway;
13
- private turns;
14
- private busy;
15
- private controller;
16
- constructor(gateway: AiChatGateway.Interface);
17
- get vm(): IAiChatViewModel;
18
- ask(question: string): void;
19
- decide(turnIndex: number, approved: boolean): void;
20
- reset(): void;
21
- /** Replays settled turns so a follow-up ("and which of those is cheapest?") has context. */
22
- private historyBefore;
23
- private run;
24
- private addTurn;
25
- private patch;
26
- private setBusy;
27
- private clear;
28
- }
29
- export declare const AiChatPresenter: typeof AiChatPresenterImpl & {
30
- __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IAiChatPresenter>;
31
- };
32
- export {};
@@ -1,220 +0,0 @@
1
- import { makeAutoObservable } from "mobx";
2
- import { AiChatGateway, AiChatPresenter } from "./abstractions.js";
3
- const emptyTurn = (question)=>({
4
- question,
5
- text: "",
6
- tools: [],
7
- completed: [],
8
- failed: [],
9
- running: false,
10
- pendingApprovals: [],
11
- messages: [],
12
- settled: false
13
- });
14
- class AiChatPresenterImpl {
15
- constructor(gateway){
16
- this.gateway = gateway;
17
- this.turns = [];
18
- this.busy = false;
19
- this.controller = null;
20
- makeAutoObservable(this, {
21
- controller: false
22
- });
23
- }
24
- get vm() {
25
- return {
26
- busy: this.busy,
27
- turns: this.turns.map((turn)=>({
28
- question: turn.question,
29
- text: turn.text,
30
- tools: turn.tools,
31
- completed: turn.completed,
32
- failed: turn.failed,
33
- running: turn.running,
34
- pendingApprovals: turn.pendingApprovals,
35
- settled: turn.settled,
36
- ...void 0 === turn.error ? {} : {
37
- error: turn.error
38
- }
39
- }))
40
- };
41
- }
42
- ask(question) {
43
- const trimmed = question.trim();
44
- if (!trimmed || this.busy) return;
45
- const index = this.turns.length;
46
- this.addTurn(trimmed);
47
- this.run(index, {
48
- messages: [
49
- ...this.historyBefore(index),
50
- {
51
- role: "user",
52
- content: trimmed
53
- }
54
- ]
55
- });
56
- }
57
- decide(turnIndex, approved) {
58
- const turn = this.turns[turnIndex];
59
- if (!turn?.pendingApprovals.length || this.busy) return;
60
- const approvals = turn.pendingApprovals.map((approval)=>({
61
- approvalId: approval.approvalId,
62
- approved
63
- }));
64
- const messages = [
65
- ...this.historyBefore(turnIndex),
66
- {
67
- role: "user",
68
- content: turn.question
69
- },
70
- ...turn.messages
71
- ];
72
- this.patch(turnIndex, {
73
- pendingApprovals: [],
74
- settled: false,
75
- running: true
76
- });
77
- this.run(turnIndex, {
78
- messages,
79
- approvals
80
- }, true);
81
- }
82
- reset() {
83
- this.controller?.abort();
84
- this.controller = null;
85
- this.clear();
86
- }
87
- historyBefore(upTo) {
88
- const history = [];
89
- for (const turn of this.turns.slice(0, upTo))if (turn.settled && !turn.error) {
90
- history.push({
91
- role: "user",
92
- content: turn.question
93
- });
94
- history.push(...turn.messages);
95
- }
96
- return history;
97
- }
98
- async run(index, request, resuming = false) {
99
- this.controller?.abort();
100
- const controller = new AbortController();
101
- this.controller = controller;
102
- this.setBusy(true);
103
- try {
104
- const existing = resuming ? this.turns[index] : void 0;
105
- let text = existing?.text ?? "";
106
- const tools = existing ? [
107
- ...existing.tools
108
- ] : [];
109
- const completed = existing ? [
110
- ...existing.completed
111
- ] : [];
112
- const failed = existing ? [
113
- ...existing.failed
114
- ] : [];
115
- const priorMessages = existing ? [
116
- ...existing.messages
117
- ] : [];
118
- for await (const event of this.gateway.stream(request, controller.signal)){
119
- if ("text" === event.type) {
120
- text += event.text;
121
- this.patch(index, {
122
- text,
123
- running: false
124
- });
125
- continue;
126
- }
127
- if ("tool-call" === event.type) {
128
- tools.push(event.name);
129
- this.patch(index, {
130
- tools: [
131
- ...tools
132
- ],
133
- running: true
134
- });
135
- continue;
136
- }
137
- if ("tool-result" === event.type) {
138
- completed.push(event.name);
139
- this.patch(index, {
140
- completed: [
141
- ...completed
142
- ]
143
- });
144
- continue;
145
- }
146
- if ("tool-error" === event.type) {
147
- failed.push(event.name);
148
- this.patch(index, {
149
- failed: [
150
- ...failed
151
- ]
152
- });
153
- continue;
154
- }
155
- if ("approval" === event.type) {
156
- this.patch(index, {
157
- pendingApprovals: event.approvals,
158
- running: false
159
- });
160
- continue;
161
- }
162
- if ("done" === event.type) {
163
- this.patch(index, {
164
- messages: [
165
- ...priorMessages,
166
- ...event.messages
167
- ],
168
- settled: true,
169
- running: false
170
- });
171
- continue;
172
- }
173
- if ("error" === event.type) return void this.patch(index, {
174
- error: event.message,
175
- settled: true,
176
- running: false
177
- });
178
- }
179
- } catch (error) {
180
- if (!controller.signal.aborted) this.patch(index, {
181
- error: error instanceof Error ? error.message : String(error),
182
- settled: true,
183
- running: false
184
- });
185
- } finally{
186
- this.setBusy(false);
187
- }
188
- }
189
- addTurn(question) {
190
- this.turns = [
191
- ...this.turns,
192
- {
193
- ...emptyTurn(question),
194
- running: true
195
- }
196
- ];
197
- }
198
- patch(index, change) {
199
- this.turns = this.turns.map((turn, i)=>i === index ? {
200
- ...turn,
201
- ...change
202
- } : turn);
203
- }
204
- setBusy(busy) {
205
- this.busy = busy;
206
- }
207
- clear() {
208
- this.turns = [];
209
- this.busy = false;
210
- }
211
- }
212
- const AiChatPresenter_AiChatPresenter = AiChatPresenter.createImplementation({
213
- implementation: AiChatPresenterImpl,
214
- dependencies: [
215
- AiChatGateway
216
- ]
217
- });
218
- export { AiChatPresenter_AiChatPresenter as AiChatPresenter };
219
-
220
- //# sourceMappingURL=AiChatPresenter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"features/aiChat/AiChatPresenter.js","sources":["../../../src/features/aiChat/AiChatPresenter.ts"],"sourcesContent":["import { makeAutoObservable } from \"mobx\";\nimport { AiChatGateway } from \"./abstractions.js\";\nimport type { AiChatMessage, AiChatRequest } from \"./abstractions.js\";\nimport {\n AiChatPresenter as Abstraction,\n type AiTurnViewModel,\n type IAiChatViewModel\n} from \"./abstractions.js\";\n\n/** A turn plus the conversation state the view never sees. */\ninterface Turn extends AiTurnViewModel {\n /** Server messages replayed to continue this conversation or resume its approval. */\n messages: AiChatMessage[];\n}\n\nconst emptyTurn = (question: string): Turn => ({\n question,\n text: \"\",\n tools: [],\n completed: [],\n failed: [],\n running: false,\n pendingApprovals: [],\n messages: [],\n settled: false\n});\n\n/**\n * Owns the palette's AI conversation.\n *\n * A presenter rather than component state: several pieces change together, a network stream drives\n * them, and an abort has to outlive any one render.\n *\n * Registered as a singleton, so `reset` genuinely clears rather than relying on unmount.\n */\nclass AiChatPresenterImpl implements Abstraction.Interface {\n private turns: Turn[] = [];\n private busy = false;\n private controller: AbortController | null = null;\n\n constructor(private gateway: AiChatGateway.Interface) {\n // The controller is machinery, not state anything renders, so keep it out of the map.\n makeAutoObservable<AiChatPresenterImpl, \"controller\">(this, { controller: false });\n }\n\n get vm(): IAiChatViewModel {\n return {\n busy: this.busy,\n turns: this.turns.map(turn => ({\n question: turn.question,\n text: turn.text,\n tools: turn.tools,\n completed: turn.completed,\n failed: turn.failed,\n running: turn.running,\n pendingApprovals: turn.pendingApprovals,\n settled: turn.settled,\n ...(turn.error === undefined ? {} : { error: turn.error })\n }))\n };\n }\n\n ask(question: string): void {\n const trimmed = question.trim();\n\n if (!trimmed || this.busy) {\n return;\n }\n\n const index = this.turns.length;\n this.addTurn(trimmed);\n\n void this.run(index, {\n messages: [...this.historyBefore(index), { role: \"user\", content: trimmed }]\n });\n }\n\n decide(turnIndex: number, approved: boolean): void {\n const turn = this.turns[turnIndex];\n\n if (!turn?.pendingApprovals.length || this.busy) {\n return;\n }\n\n const approvals = turn.pendingApprovals.map(approval => ({\n approvalId: approval.approvalId,\n approved\n }));\n\n /*\n * The paused assistant message must be replayed unchanged: the approval request lives only in\n * the server's messages, so resuming means sending the same history back plus the decision.\n */\n const messages: AiChatMessage[] = [\n ...this.historyBefore(turnIndex),\n { role: \"user\", content: turn.question },\n ...turn.messages\n ];\n\n // Clear the block immediately so the plan cannot be submitted twice.\n this.patch(turnIndex, { pendingApprovals: [], settled: false, running: true });\n\n void this.run(turnIndex, { messages, approvals }, true);\n }\n\n reset(): void {\n this.controller?.abort();\n this.controller = null;\n this.clear();\n }\n\n /** Replays settled turns so a follow-up (\"and which of those is cheapest?\") has context. */\n private historyBefore(upTo: number): AiChatMessage[] {\n const history: AiChatMessage[] = [];\n\n for (const turn of this.turns.slice(0, upTo)) {\n if (!turn.settled || turn.error) {\n continue;\n }\n history.push({ role: \"user\", content: turn.question });\n history.push(...turn.messages);\n }\n\n return history;\n }\n\n private async run(index: number, request: AiChatRequest, resuming = false): Promise<void> {\n this.controller?.abort();\n const controller = new AbortController();\n this.controller = controller;\n\n this.setBusy(true);\n\n try {\n /*\n * Resuming continues the same turn: the tools already called, the text already shown and\n * the messages already collected all still belong to it. Starting from empty would strand\n * earlier chips as running and, worse, drop the assistant message carrying the `tool_use`\n * that the replayed `tool_result` refers to.\n */\n const existing = resuming ? this.turns[index] : undefined;\n let text = existing?.text ?? \"\";\n const tools: string[] = existing ? [...existing.tools] : [];\n const completed: string[] = existing ? [...existing.completed] : [];\n const failed: string[] = existing ? [...existing.failed] : [];\n const priorMessages: AiChatMessage[] = existing ? [...existing.messages] : [];\n\n for await (const event of this.gateway.stream(request, controller.signal)) {\n if (event.type === \"text\") {\n text += event.text;\n this.patch(index, { text, running: false });\n continue;\n }\n\n if (event.type === \"tool-call\") {\n tools.push(event.name);\n this.patch(index, { tools: [...tools], running: true });\n continue;\n }\n\n if (event.type === \"tool-result\") {\n completed.push(event.name);\n this.patch(index, { completed: [...completed] });\n continue;\n }\n\n if (event.type === \"tool-error\") {\n failed.push(event.name);\n this.patch(index, { failed: [...failed] });\n continue;\n }\n\n if (event.type === \"approval\") {\n this.patch(index, { pendingApprovals: event.approvals, running: false });\n continue;\n }\n\n if (event.type === \"done\") {\n this.patch(index, {\n messages: [...priorMessages, ...event.messages],\n settled: true,\n running: false\n });\n continue;\n }\n\n if (event.type === \"error\") {\n this.patch(index, { error: event.message, settled: true, running: false });\n return;\n }\n }\n } catch (error) {\n // An abort is the palette closing, not a failure worth showing.\n if (!controller.signal.aborted) {\n this.patch(index, {\n error: error instanceof Error ? error.message : String(error),\n settled: true,\n running: false\n });\n }\n } finally {\n this.setBusy(false);\n }\n }\n\n /*\n * Every mutation below is its own method on purpose. `run` awaits, and a mutation after an await\n * has escaped the action it started in; `makeAutoObservable` makes these methods actions, so\n * calling them from there is correct.\n */\n private addTurn(question: string): void {\n this.turns = [...this.turns, { ...emptyTurn(question), running: true }];\n }\n\n private patch(index: number, change: Partial<Turn>): void {\n this.turns = this.turns.map((turn, i) => (i === index ? { ...turn, ...change } : turn));\n }\n\n private setBusy(busy: boolean): void {\n this.busy = busy;\n }\n\n private clear(): void {\n this.turns = [];\n this.busy = false;\n }\n}\n\nexport const AiChatPresenter = Abstraction.createImplementation({\n implementation: AiChatPresenterImpl,\n dependencies: [AiChatGateway]\n});\n"],"names":["emptyTurn","question","AiChatPresenterImpl","gateway","makeAutoObservable","turn","undefined","trimmed","index","turnIndex","approved","approvals","approval","messages","upTo","history","request","resuming","controller","AbortController","existing","text","tools","completed","failed","priorMessages","event","error","Error","String","change","i","busy","AiChatPresenter","Abstraction","AiChatGateway"],"mappings":";;AAeA,MAAMA,YAAY,CAACC,WAA4B;QAC3CA;QACA,MAAM;QACN,OAAO,EAAE;QACT,WAAW,EAAE;QACb,QAAQ,EAAE;QACV,SAAS;QACT,kBAAkB,EAAE;QACpB,UAAU,EAAE;QACZ,SAAS;IACb;AAUA,MAAMC;IAKF,YAAoBC,OAAgC,CAAE;aAAlCA,OAAO,GAAPA;aAJZ,KAAK,GAAW,EAAE;aAClB,IAAI,GAAG;aACP,UAAU,GAA2B;QAIzCC,mBAAsD,IAAI,EAAE;YAAE,YAAY;QAAM;IACpF;IAEA,IAAI,KAAuB;QACvB,OAAO;YACH,MAAM,IAAI,CAAC,IAAI;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAACC,CAAAA,OAAS;oBAC3B,UAAUA,KAAK,QAAQ;oBACvB,MAAMA,KAAK,IAAI;oBACf,OAAOA,KAAK,KAAK;oBACjB,WAAWA,KAAK,SAAS;oBACzB,QAAQA,KAAK,MAAM;oBACnB,SAASA,KAAK,OAAO;oBACrB,kBAAkBA,KAAK,gBAAgB;oBACvC,SAASA,KAAK,OAAO;oBACrB,GAAIA,AAAeC,WAAfD,KAAK,KAAK,GAAiB,CAAC,IAAI;wBAAE,OAAOA,KAAK,KAAK;oBAAC,CAAC;gBAC7D;QACJ;IACJ;IAEA,IAAIJ,QAAgB,EAAQ;QACxB,MAAMM,UAAUN,SAAS,IAAI;QAE7B,IAAI,CAACM,WAAW,IAAI,CAAC,IAAI,EACrB;QAGJ,MAAMC,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM;QAC/B,IAAI,CAAC,OAAO,CAACD;QAER,IAAI,CAAC,GAAG,CAACC,OAAO;YACjB,UAAU;mBAAI,IAAI,CAAC,aAAa,CAACA;gBAAQ;oBAAE,MAAM;oBAAQ,SAASD;gBAAQ;aAAE;QAChF;IACJ;IAEA,OAAOE,SAAiB,EAAEC,QAAiB,EAAQ;QAC/C,MAAML,OAAO,IAAI,CAAC,KAAK,CAACI,UAAU;QAElC,IAAI,CAACJ,MAAM,iBAAiB,UAAU,IAAI,CAAC,IAAI,EAC3C;QAGJ,MAAMM,YAAYN,KAAK,gBAAgB,CAAC,GAAG,CAACO,CAAAA,WAAa;gBACrD,YAAYA,SAAS,UAAU;gBAC/BF;YACJ;QAMA,MAAMG,WAA4B;eAC3B,IAAI,CAAC,aAAa,CAACJ;YACtB;gBAAE,MAAM;gBAAQ,SAASJ,KAAK,QAAQ;YAAC;eACpCA,KAAK,QAAQ;SACnB;QAGD,IAAI,CAAC,KAAK,CAACI,WAAW;YAAE,kBAAkB,EAAE;YAAE,SAAS;YAAO,SAAS;QAAK;QAEvE,IAAI,CAAC,GAAG,CAACA,WAAW;YAAEI;YAAUF;QAAU,GAAG;IACtD;IAEA,QAAc;QACV,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,KAAK;IACd;IAGQ,cAAcG,IAAY,EAAmB;QACjD,MAAMC,UAA2B,EAAE;QAEnC,KAAK,MAAMV,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAGS,MACnC,IAAI,AAACT,KAAK,OAAO,KAAIA,KAAK,KAAK;YAG/BU,QAAQ,IAAI,CAAC;gBAAE,MAAM;gBAAQ,SAASV,KAAK,QAAQ;YAAC;YACpDU,QAAQ,IAAI,IAAIV,KAAK,QAAQ;;QAGjC,OAAOU;IACX;IAEA,MAAc,IAAIP,KAAa,EAAEQ,OAAsB,EAAEC,WAAW,KAAK,EAAiB;QACtF,IAAI,CAAC,UAAU,EAAE;QACjB,MAAMC,aAAa,IAAIC;QACvB,IAAI,CAAC,UAAU,GAAGD;QAElB,IAAI,CAAC,OAAO,CAAC;QAEb,IAAI;YAOA,MAAME,WAAWH,WAAW,IAAI,CAAC,KAAK,CAACT,MAAM,GAAGF;YAChD,IAAIe,OAAOD,UAAU,QAAQ;YAC7B,MAAME,QAAkBF,WAAW;mBAAIA,SAAS,KAAK;aAAC,GAAG,EAAE;YAC3D,MAAMG,YAAsBH,WAAW;mBAAIA,SAAS,SAAS;aAAC,GAAG,EAAE;YACnE,MAAMI,SAAmBJ,WAAW;mBAAIA,SAAS,MAAM;aAAC,GAAG,EAAE;YAC7D,MAAMK,gBAAiCL,WAAW;mBAAIA,SAAS,QAAQ;aAAC,GAAG,EAAE;YAE7E,WAAW,MAAMM,SAAS,IAAI,CAAC,OAAO,CAAC,MAAM,CAACV,SAASE,WAAW,MAAM,EAAG;gBACvE,IAAIQ,AAAe,WAAfA,MAAM,IAAI,EAAa;oBACvBL,QAAQK,MAAM,IAAI;oBAClB,IAAI,CAAC,KAAK,CAAClB,OAAO;wBAAEa;wBAAM,SAAS;oBAAM;oBACzC;gBACJ;gBAEA,IAAIK,AAAe,gBAAfA,MAAM,IAAI,EAAkB;oBAC5BJ,MAAM,IAAI,CAACI,MAAM,IAAI;oBACrB,IAAI,CAAC,KAAK,CAAClB,OAAO;wBAAE,OAAO;+BAAIc;yBAAM;wBAAE,SAAS;oBAAK;oBACrD;gBACJ;gBAEA,IAAII,AAAe,kBAAfA,MAAM,IAAI,EAAoB;oBAC9BH,UAAU,IAAI,CAACG,MAAM,IAAI;oBACzB,IAAI,CAAC,KAAK,CAAClB,OAAO;wBAAE,WAAW;+BAAIe;yBAAU;oBAAC;oBAC9C;gBACJ;gBAEA,IAAIG,AAAe,iBAAfA,MAAM,IAAI,EAAmB;oBAC7BF,OAAO,IAAI,CAACE,MAAM,IAAI;oBACtB,IAAI,CAAC,KAAK,CAAClB,OAAO;wBAAE,QAAQ;+BAAIgB;yBAAO;oBAAC;oBACxC;gBACJ;gBAEA,IAAIE,AAAe,eAAfA,MAAM,IAAI,EAAiB;oBAC3B,IAAI,CAAC,KAAK,CAAClB,OAAO;wBAAE,kBAAkBkB,MAAM,SAAS;wBAAE,SAAS;oBAAM;oBACtE;gBACJ;gBAEA,IAAIA,AAAe,WAAfA,MAAM,IAAI,EAAa;oBACvB,IAAI,CAAC,KAAK,CAAClB,OAAO;wBACd,UAAU;+BAAIiB;+BAAkBC,MAAM,QAAQ;yBAAC;wBAC/C,SAAS;wBACT,SAAS;oBACb;oBACA;gBACJ;gBAEA,IAAIA,AAAe,YAAfA,MAAM,IAAI,EAAc,YACxB,IAAI,CAAC,KAAK,CAAClB,OAAO;oBAAE,OAAOkB,MAAM,OAAO;oBAAE,SAAS;oBAAM,SAAS;gBAAM;YAGhF;QACJ,EAAE,OAAOC,OAAO;YAEZ,IAAI,CAACT,WAAW,MAAM,CAAC,OAAO,EAC1B,IAAI,CAAC,KAAK,CAACV,OAAO;gBACd,OAAOmB,iBAAiBC,QAAQD,MAAM,OAAO,GAAGE,OAAOF;gBACvD,SAAS;gBACT,SAAS;YACb;QAER,SAAU;YACN,IAAI,CAAC,OAAO,CAAC;QACjB;IACJ;IAOQ,QAAQ1B,QAAgB,EAAQ;QACpC,IAAI,CAAC,KAAK,GAAG;eAAI,IAAI,CAAC,KAAK;YAAE;gBAAE,GAAGD,UAAUC,SAAS;gBAAE,SAAS;YAAK;SAAE;IAC3E;IAEQ,MAAMO,KAAa,EAAEsB,MAAqB,EAAQ;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAACzB,MAAM0B,IAAOA,MAAMvB,QAAQ;gBAAE,GAAGH,IAAI;gBAAE,GAAGyB,MAAM;YAAC,IAAIzB;IACrF;IAEQ,QAAQ2B,IAAa,EAAQ;QACjC,IAAI,CAAC,IAAI,GAAGA;IAChB;IAEQ,QAAc;QAClB,IAAI,CAAC,KAAK,GAAG,EAAE;QACf,IAAI,CAAC,IAAI,GAAG;IAChB;AACJ;AAEO,MAAMC,kCAAkBC,gBAAAA,oBAAgC,CAAC;IAC5D,gBAAgBhC;IAChB,cAAc;QAACiC;KAAc;AACjC"}