@webiny/ai-powerups 6.3.0 → 6.4.0-beta.0

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 (274) hide show
  1. package/AiPowerups.js +8 -9
  2. package/AiPowerups.js.map +1 -1
  3. package/admin/Extension.js +28 -26
  4. package/admin/Extension.js.map +1 -1
  5. package/admin/domain/errors.d.ts +12 -0
  6. package/admin/domain/errors.js +21 -0
  7. package/admin/domain/errors.js.map +1 -0
  8. package/admin/features/feature.js +13 -12
  9. package/admin/features/feature.js.map +1 -1
  10. package/admin/features/generatePageContent/GeneratePageContentGateway.js +35 -16
  11. package/admin/features/generatePageContent/GeneratePageContentGateway.js.map +1 -1
  12. package/admin/features/generatePageContent/GeneratePageContentUseCase.js +13 -10
  13. package/admin/features/generatePageContent/GeneratePageContentUseCase.js.map +1 -1
  14. package/admin/features/generatePageContent/abstractions.d.ts +4 -0
  15. package/admin/features/generatePageContent/abstractions.js +3 -2
  16. package/admin/features/generatePageContent/abstractions.js.map +1 -1
  17. package/admin/features/generatePageContent/feature.js +7 -6
  18. package/admin/features/generatePageContent/feature.js.map +1 -1
  19. package/admin/features/generatePageContent/index.js +1 -3
  20. package/admin/features/listModels/ListModelsGateway.js +17 -14
  21. package/admin/features/listModels/ListModelsGateway.js.map +1 -1
  22. package/admin/features/listModels/ListModelsRepository.js +21 -18
  23. package/admin/features/listModels/ListModelsRepository.js.map +1 -1
  24. package/admin/features/listModels/ListModelsUseCase.js +13 -10
  25. package/admin/features/listModels/ListModelsUseCase.js.map +1 -1
  26. package/admin/features/listModels/abstractions.js +4 -3
  27. package/admin/features/listModels/abstractions.js.map +1 -1
  28. package/admin/features/listModels/feature.js +15 -14
  29. package/admin/features/listModels/feature.js.map +1 -1
  30. package/admin/features/listModels/index.js +1 -3
  31. package/admin/features/settings/getSettings/GetSettingsGateway.js +17 -14
  32. package/admin/features/settings/getSettings/GetSettingsGateway.js.map +1 -1
  33. package/admin/features/settings/getSettings/GetSettingsRepository.js +23 -23
  34. package/admin/features/settings/getSettings/GetSettingsRepository.js.map +1 -1
  35. package/admin/features/settings/getSettings/GetSettingsUseCase.js +13 -10
  36. package/admin/features/settings/getSettings/GetSettingsUseCase.js.map +1 -1
  37. package/admin/features/settings/getSettings/abstractions.js +4 -3
  38. package/admin/features/settings/getSettings/abstractions.js.map +1 -1
  39. package/admin/features/settings/getSettings/feature.js +15 -14
  40. package/admin/features/settings/getSettings/feature.js.map +1 -1
  41. package/admin/features/settings/getSettings/index.js +1 -3
  42. package/admin/features/settings/shared/SettingsCache.js +14 -13
  43. package/admin/features/settings/shared/SettingsCache.js.map +1 -1
  44. package/admin/features/settings/shared/abstractions.d.ts +32 -0
  45. package/admin/features/settings/shared/abstractions.js +2 -18
  46. package/admin/features/settings/shared/abstractions.js.map +1 -1
  47. package/admin/features/settings/shared/feature.js +11 -10
  48. package/admin/features/settings/shared/feature.js.map +1 -1
  49. package/admin/features/settings/shared/index.js +0 -2
  50. package/admin/features/settings/updateSettings/UpdateSettingsGateway.js +34 -18
  51. package/admin/features/settings/updateSettings/UpdateSettingsGateway.js.map +1 -1
  52. package/admin/features/settings/updateSettings/UpdateSettingsRepository.js +17 -13
  53. package/admin/features/settings/updateSettings/UpdateSettingsRepository.js.map +1 -1
  54. package/admin/features/settings/updateSettings/UpdateSettingsUseCase.js +13 -10
  55. package/admin/features/settings/updateSettings/UpdateSettingsUseCase.js.map +1 -1
  56. package/admin/features/settings/updateSettings/abstractions.js +4 -3
  57. package/admin/features/settings/updateSettings/abstractions.js.map +1 -1
  58. package/admin/features/settings/updateSettings/feature.js +15 -14
  59. package/admin/features/settings/updateSettings/feature.js.map +1 -1
  60. package/admin/features/settings/updateSettings/index.js +1 -3
  61. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.d.ts +4 -0
  62. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js +50 -0
  63. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js.map +1 -0
  64. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.d.ts +2 -1
  65. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js +133 -129
  66. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js.map +1 -1
  67. package/admin/presentation/AiPowerUpsSettings/abstractions.d.ts +2 -1
  68. package/admin/presentation/AiPowerUpsSettings/abstractions.js +2 -1
  69. package/admin/presentation/AiPowerUpsSettings/abstractions.js.map +1 -1
  70. package/admin/presentation/AiPowerUpsSettings/feature.js +20 -16
  71. package/admin/presentation/AiPowerUpsSettings/feature.js.map +1 -1
  72. package/admin/presentation/AiPowerUpsSettings/index.d.ts +0 -3
  73. package/admin/presentation/AiPowerUpsSettings/index.js +0 -5
  74. package/admin/presentation/AiPowerUpsSettings/settingsGroup.js +2 -1
  75. package/admin/presentation/AiPowerUpsSettings/settingsGroup.js.map +1 -1
  76. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettings.js +19 -20
  77. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettings.js.map +1 -1
  78. package/admin/presentation/{PersonasSettings.d.ts → ProjectsSettings.d.ts} +2 -2
  79. package/admin/presentation/ProjectsSettings.js +56 -0
  80. package/admin/presentation/ProjectsSettings.js.map +1 -0
  81. package/admin/presentation/ProvidersSettings.js +39 -33
  82. package/admin/presentation/ProvidersSettings.js.map +1 -1
  83. package/admin/presentation/ReaderPersonasSettings.d.ts +11 -0
  84. package/admin/presentation/ReaderPersonasSettings.js +37 -0
  85. package/admin/presentation/ReaderPersonasSettings.js.map +1 -0
  86. package/admin/presentation/WbContentGeneration/Extension.js +15 -16
  87. package/admin/presentation/WbContentGeneration/Extension.js.map +1 -1
  88. package/admin/presentation/WbContentGeneration/GenerateContentButton.js +12 -17
  89. package/admin/presentation/WbContentGeneration/GenerateContentButton.js.map +1 -1
  90. package/admin/presentation/WbContentGeneration/GenerateContentDialog.js +94 -127
  91. package/admin/presentation/WbContentGeneration/GenerateContentDialog.js.map +1 -1
  92. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.d.ts +19 -5
  93. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js +214 -77
  94. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js.map +1 -1
  95. package/admin/presentation/WbContentGeneration/abstractions.d.ts +4 -2
  96. package/admin/presentation/WbContentGeneration/abstractions.js +2 -1
  97. package/admin/presentation/WbContentGeneration/abstractions.js.map +1 -1
  98. package/admin/presentation/WbContentGeneration/decompressGzipBase64.js +10 -11
  99. package/admin/presentation/WbContentGeneration/decompressGzipBase64.js.map +1 -1
  100. package/admin/presentation/WbContentGeneration/feature.js +11 -10
  101. package/admin/presentation/WbContentGeneration/feature.js.map +1 -1
  102. package/admin/presentation/WriterPersonasSettings.d.ts +11 -0
  103. package/admin/presentation/WriterPersonasSettings.js +37 -0
  104. package/admin/presentation/WriterPersonasSettings.js.map +1 -0
  105. package/admin/routes.d.ts +4 -0
  106. package/admin/routes.js +10 -0
  107. package/admin/routes.js.map +1 -0
  108. package/api/Extension.js +28 -11
  109. package/api/Extension.js.map +1 -1
  110. package/api/constants.js +2 -1
  111. package/api/constants.js.map +1 -1
  112. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.d.ts +11 -0
  113. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js +27 -0
  114. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js.map +1 -0
  115. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.d.ts +34 -0
  116. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js +140 -0
  117. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js.map +1 -0
  118. package/api/features/AiImageEnrichment/feature.d.ts +4 -0
  119. package/api/features/AiImageEnrichment/feature.js +13 -0
  120. package/api/features/AiImageEnrichment/feature.js.map +1 -0
  121. package/api/features/AiPromptContext/AiPromptContextBuilder.d.ts +12 -0
  122. package/api/features/AiPromptContext/AiPromptContextBuilder.js +103 -0
  123. package/api/features/AiPromptContext/AiPromptContextBuilder.js.map +1 -0
  124. package/api/features/AiPromptContext/ProjectFileAssembler.d.ts +22 -0
  125. package/api/features/AiPromptContext/ProjectFileAssembler.js +76 -0
  126. package/api/features/AiPromptContext/ProjectFileAssembler.js.map +1 -0
  127. package/api/features/AiPromptContext/ProjectFileCache.d.ts +16 -0
  128. package/api/features/AiPromptContext/ProjectFileCache.js +61 -0
  129. package/api/features/AiPromptContext/ProjectFileCache.js.map +1 -0
  130. package/api/features/AiPromptContext/ProjectSection.d.ts +4 -0
  131. package/api/features/AiPromptContext/ProjectSection.js +35 -0
  132. package/api/features/AiPromptContext/ProjectSection.js.map +1 -0
  133. package/api/features/AiPromptContext/ReadProjectFileTool.d.ts +3 -0
  134. package/api/features/AiPromptContext/ReadProjectFileTool.js +36 -0
  135. package/api/features/AiPromptContext/ReadProjectFileTool.js.map +1 -0
  136. package/api/features/AiPromptContext/ReaderPersonaSection.d.ts +4 -0
  137. package/api/features/AiPromptContext/ReaderPersonaSection.js +10 -0
  138. package/api/features/AiPromptContext/ReaderPersonaSection.js.map +1 -0
  139. package/api/features/AiPromptContext/WriterPersonaSection.d.ts +4 -0
  140. package/api/features/AiPromptContext/WriterPersonaSection.js +10 -0
  141. package/api/features/AiPromptContext/WriterPersonaSection.js.map +1 -0
  142. package/api/features/AiPromptContext/abstractions.d.ts +68 -0
  143. package/api/features/AiPromptContext/abstractions.js +7 -0
  144. package/api/features/AiPromptContext/abstractions.js.map +1 -0
  145. package/api/features/AiPromptContext/feature.d.ts +4 -0
  146. package/api/features/AiPromptContext/feature.js +15 -0
  147. package/api/features/AiPromptContext/feature.js.map +1 -0
  148. package/api/features/AiPromptContext/index.d.ts +1 -0
  149. package/api/features/AiPromptContext/index.js +1 -0
  150. package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.d.ts +11 -0
  151. package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.js +34 -0
  152. package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.js.map +1 -0
  153. package/api/features/ExtractFrontmatter/feature.d.ts +4 -0
  154. package/api/features/ExtractFrontmatter/feature.js +11 -0
  155. package/api/features/ExtractFrontmatter/feature.js.map +1 -0
  156. package/api/features/GetSettings/GetSettingsRepository.d.ts +3 -2
  157. package/api/features/GetSettings/GetSettingsRepository.js +29 -26
  158. package/api/features/GetSettings/GetSettingsRepository.js.map +1 -1
  159. package/api/features/GetSettings/GetSettingsUseCase.js +13 -10
  160. package/api/features/GetSettings/GetSettingsUseCase.js.map +1 -1
  161. package/api/features/GetSettings/abstractions.js +3 -2
  162. package/api/features/GetSettings/abstractions.js.map +1 -1
  163. package/api/features/GetSettings/feature.js +7 -6
  164. package/api/features/GetSettings/feature.js.map +1 -1
  165. package/api/features/GetSettings/index.js +0 -2
  166. package/api/features/Projects/ProjectsHandler.d.ts +31 -0
  167. package/api/features/Projects/ProjectsHandler.js +103 -0
  168. package/api/features/Projects/ProjectsHandler.js.map +1 -0
  169. package/api/features/Projects/feature.d.ts +4 -0
  170. package/api/features/Projects/feature.js +11 -0
  171. package/api/features/Projects/feature.js.map +1 -0
  172. package/api/features/Projects/types.d.ts +50 -0
  173. package/api/features/Projects/types.js +0 -0
  174. package/api/features/Providers/ProvidersGraphQLMapper.js +33 -30
  175. package/api/features/Providers/ProvidersGraphQLMapper.js.map +1 -1
  176. package/api/features/Providers/ProvidersHandler.js +67 -64
  177. package/api/features/Providers/ProvidersHandler.js.map +1 -1
  178. package/api/features/Providers/feature.js +7 -6
  179. package/api/features/Providers/feature.js.map +1 -1
  180. package/api/features/Providers/index.js +0 -3
  181. package/api/features/Providers/types.js +0 -3
  182. package/api/features/ReaderPersonas/ReaderPersonasHandler.d.ts +20 -0
  183. package/api/features/ReaderPersonas/ReaderPersonasHandler.js +43 -0
  184. package/api/features/ReaderPersonas/ReaderPersonasHandler.js.map +1 -0
  185. package/api/features/ReaderPersonas/feature.d.ts +4 -0
  186. package/api/features/ReaderPersonas/feature.js +11 -0
  187. package/api/features/ReaderPersonas/feature.js.map +1 -0
  188. package/api/features/ReaderPersonas/index.d.ts +2 -0
  189. package/api/features/ReaderPersonas/index.js +1 -0
  190. package/api/features/ReaderPersonas/types.d.ts +24 -0
  191. package/api/features/ReaderPersonas/types.js +0 -0
  192. package/api/features/UpdateSettings/UpdateSettingsRepository.d.ts +3 -2
  193. package/api/features/UpdateSettings/UpdateSettingsRepository.js +59 -62
  194. package/api/features/UpdateSettings/UpdateSettingsRepository.js.map +1 -1
  195. package/api/features/UpdateSettings/UpdateSettingsUseCase.js +23 -21
  196. package/api/features/UpdateSettings/UpdateSettingsUseCase.js.map +1 -1
  197. package/api/features/UpdateSettings/abstractions.js +5 -7
  198. package/api/features/UpdateSettings/abstractions.js.map +1 -1
  199. package/api/features/UpdateSettings/errors.d.ts +10 -0
  200. package/api/features/UpdateSettings/errors.js +14 -0
  201. package/api/features/UpdateSettings/errors.js.map +1 -0
  202. package/api/features/UpdateSettings/events.js +16 -11
  203. package/api/features/UpdateSettings/events.js.map +1 -1
  204. package/api/features/UpdateSettings/feature.js +7 -6
  205. package/api/features/UpdateSettings/feature.js.map +1 -1
  206. package/api/features/UpdateSettings/index.js +1 -3
  207. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.d.ts +4 -0
  208. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js +63 -60
  209. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js.map +1 -1
  210. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.d.ts +5 -3
  211. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js +92 -53
  212. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js.map +1 -1
  213. package/api/features/WbGeneratePageContent/abstractions.d.ts +15 -1
  214. package/api/features/WbGeneratePageContent/abstractions.js +2 -1
  215. package/api/features/WbGeneratePageContent/abstractions.js.map +1 -1
  216. package/api/features/WbGeneratePageContent/buildPrompt.d.ts +1 -1
  217. package/api/features/WbGeneratePageContent/buildPrompt.js +11 -10
  218. package/api/features/WbGeneratePageContent/buildPrompt.js.map +1 -1
  219. package/api/features/WbGeneratePageContent/feature.js +7 -6
  220. package/api/features/WbGeneratePageContent/feature.js.map +1 -1
  221. package/api/features/WbGeneratePageContent/index.js +0 -2
  222. package/api/features/WriterPersonas/WriterPersonasHandler.d.ts +20 -0
  223. package/api/features/WriterPersonas/WriterPersonasHandler.js +43 -0
  224. package/api/features/WriterPersonas/WriterPersonasHandler.js.map +1 -0
  225. package/api/features/WriterPersonas/feature.d.ts +4 -0
  226. package/api/features/WriterPersonas/feature.js +11 -0
  227. package/api/features/WriterPersonas/feature.js.map +1 -0
  228. package/api/features/WriterPersonas/index.d.ts +2 -0
  229. package/api/features/WriterPersonas/index.js +1 -0
  230. package/api/features/WriterPersonas/types.d.ts +24 -0
  231. package/api/features/WriterPersonas/types.js +0 -0
  232. package/api/features/shared/SettingsCache.d.ts +12 -0
  233. package/api/features/shared/SettingsCache.js +22 -0
  234. package/api/features/shared/SettingsCache.js.map +1 -0
  235. package/api/features/shared/abstractions.d.ts +13 -0
  236. package/api/features/shared/abstractions.js +4 -2
  237. package/api/features/shared/abstractions.js.map +1 -1
  238. package/api/features/shared/index.d.ts +3 -1
  239. package/api/features/shared/index.js +1 -3
  240. package/api/graphql/AiPowerUpsSettingsGraphQLMapper.js +35 -26
  241. package/api/graphql/AiPowerUpsSettingsGraphQLMapper.js.map +1 -1
  242. package/api/graphql/BaseGraphQLSchema.js +98 -81
  243. package/api/graphql/BaseGraphQLSchema.js.map +1 -1
  244. package/api/graphql/abstractions.js +2 -1
  245. package/api/graphql/abstractions.js.map +1 -1
  246. package/api/types.d.ts +1 -0
  247. package/api/types.js +1 -4
  248. package/index.js +0 -2
  249. package/package.json +26 -24
  250. package/admin/features/generatePageContent/index.js.map +0 -1
  251. package/admin/features/listModels/index.js.map +0 -1
  252. package/admin/features/settings/getSettings/index.js.map +0 -1
  253. package/admin/features/settings/shared/index.js.map +0 -1
  254. package/admin/features/settings/updateSettings/index.js.map +0 -1
  255. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsConfig.d.ts +0 -2
  256. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsConfig.js +0 -11
  257. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsConfig.js.map +0 -1
  258. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsDialog.d.ts +0 -5
  259. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsDialog.js +0 -58
  260. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsDialog.js.map +0 -1
  261. package/admin/presentation/AiPowerUpsSettings/index.js.map +0 -1
  262. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettingsDialog.d.ts +0 -1
  263. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettingsDialog.js +0 -12
  264. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettingsDialog.js.map +0 -1
  265. package/admin/presentation/PersonasSettings.js +0 -29
  266. package/admin/presentation/PersonasSettings.js.map +0 -1
  267. package/api/features/GetSettings/index.js.map +0 -1
  268. package/api/features/Providers/index.js.map +0 -1
  269. package/api/features/Providers/types.js.map +0 -1
  270. package/api/features/UpdateSettings/index.js.map +0 -1
  271. package/api/features/WbGeneratePageContent/index.js.map +0 -1
  272. package/api/features/shared/index.js.map +0 -1
  273. package/api/types.js.map +0 -1
  274. package/index.js.map +0 -1
@@ -1,15 +1,18 @@
1
- import { UpdateSettingsUseCase as UseCaseAbstraction, UpdateSettingsRepository } from "./abstractions.js";
1
+ import { UpdateSettingsRepository, UpdateSettingsUseCase } from "./abstractions.js";
2
2
  class UpdateSettingsUseCaseImpl {
3
- constructor(repository) {
4
- this.repository = repository;
5
- }
6
- async execute(data) {
7
- return this.repository.execute(data);
8
- }
3
+ constructor(repository){
4
+ this.repository = repository;
5
+ }
6
+ async execute(data) {
7
+ return this.repository.execute(data);
8
+ }
9
9
  }
10
- export const UpdateSettingsUseCase = UseCaseAbstraction.createImplementation({
11
- implementation: UpdateSettingsUseCaseImpl,
12
- dependencies: [UpdateSettingsRepository]
10
+ const UpdateSettingsUseCase_UpdateSettingsUseCase = UpdateSettingsUseCase.createImplementation({
11
+ implementation: UpdateSettingsUseCaseImpl,
12
+ dependencies: [
13
+ UpdateSettingsRepository
14
+ ]
13
15
  });
16
+ export { UpdateSettingsUseCase_UpdateSettingsUseCase as UpdateSettingsUseCase };
14
17
 
15
18
  //# sourceMappingURL=UpdateSettingsUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["UpdateSettingsUseCase","UseCaseAbstraction","UpdateSettingsRepository","UpdateSettingsUseCaseImpl","constructor","repository","execute","data","createImplementation","implementation","dependencies"],"sources":["UpdateSettingsUseCase.ts"],"sourcesContent":["import {\n UpdateSettingsUseCase as UseCaseAbstraction,\n UpdateSettingsRepository\n} from \"./abstractions.js\";\nimport type { IAiPowerUpsSettings } from \"~/admin/features/settings/shared/abstractions.js\";\n\nclass UpdateSettingsUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(private repository: UpdateSettingsRepository.Interface) {}\n\n async execute(data: IAiPowerUpsSettings): Promise<IAiPowerUpsSettings> {\n return this.repository.execute(data);\n }\n}\n\nexport const UpdateSettingsUseCase = UseCaseAbstraction.createImplementation({\n implementation: UpdateSettingsUseCaseImpl,\n dependencies: [UpdateSettingsRepository]\n});\n"],"mappings":"AAAA,SACIA,qBAAqB,IAAIC,kBAAkB,EAC3CC,wBAAwB;AAI5B,MAAMC,yBAAyB,CAAyC;EACpEC,WAAWA,CAASC,UAA8C,EAAE;IAAA,KAAhDA,UAA8C,GAA9CA,UAA8C;EAAG;EAErE,MAAMC,OAAOA,CAACC,IAAyB,EAAgC;IACnE,OAAO,IAAI,CAACF,UAAU,CAACC,OAAO,CAACC,IAAI,CAAC;EACxC;AACJ;AAEA,OAAO,MAAMP,qBAAqB,GAAGC,kBAAkB,CAACO,oBAAoB,CAAC;EACzEC,cAAc,EAAEN,yBAAyB;EACzCO,YAAY,EAAE,CAACR,wBAAwB;AAC3C,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"admin/features/settings/updateSettings/UpdateSettingsUseCase.js","sources":["../../../../../src/admin/features/settings/updateSettings/UpdateSettingsUseCase.ts"],"sourcesContent":["import {\n UpdateSettingsUseCase as UseCaseAbstraction,\n UpdateSettingsRepository\n} from \"./abstractions.js\";\nimport type { IAiPowerUpsSettings } from \"~/admin/features/settings/shared/abstractions.js\";\n\nclass UpdateSettingsUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(private repository: UpdateSettingsRepository.Interface) {}\n\n async execute(data: IAiPowerUpsSettings): Promise<IAiPowerUpsSettings> {\n return this.repository.execute(data);\n }\n}\n\nexport const UpdateSettingsUseCase = UseCaseAbstraction.createImplementation({\n implementation: UpdateSettingsUseCaseImpl,\n dependencies: [UpdateSettingsRepository]\n});\n"],"names":["UpdateSettingsUseCaseImpl","repository","data","UpdateSettingsUseCase","UseCaseAbstraction","UpdateSettingsRepository"],"mappings":";AAMA,MAAMA;IACF,YAAoBC,UAA8C,CAAE;aAAhDA,UAAU,GAAVA;IAAiD;IAErE,MAAM,QAAQC,IAAyB,EAAgC;QACnE,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAACA;IACnC;AACJ;AAEO,MAAMC,8CAAwBC,sBAAAA,oBAAuC,CAAC;IACzE,gBAAgBJ;IAChB,cAAc;QAACK;KAAyB;AAC5C"}
@@ -1,6 +1,7 @@
1
1
  import { createAbstraction } from "@webiny/feature/admin";
2
- export const UpdateSettingsUseCase = createAbstraction("AiPowerUps/UpdateSettingsUseCase");
3
- export const UpdateSettingsRepository = createAbstraction("AiPowerUps/UpdateSettingsRepository");
4
- export const UpdateSettingsGateway = createAbstraction("AiPowerUps/UpdateSettingsGateway");
2
+ const UpdateSettingsUseCase = createAbstraction("AiPowerUps/UpdateSettingsUseCase");
3
+ const UpdateSettingsRepository = createAbstraction("AiPowerUps/UpdateSettingsRepository");
4
+ const UpdateSettingsGateway = createAbstraction("AiPowerUps/UpdateSettingsGateway");
5
+ export { UpdateSettingsGateway, UpdateSettingsRepository, UpdateSettingsUseCase };
5
6
 
6
7
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","UpdateSettingsUseCase","UpdateSettingsRepository","UpdateSettingsGateway"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport type { IAiPowerUpsSettings } from \"~/admin/features/settings/shared/abstractions.js\";\n\nexport interface IUpdateSettingsUseCase {\n execute(data: IAiPowerUpsSettings): Promise<IAiPowerUpsSettings>;\n}\n\nexport const UpdateSettingsUseCase = createAbstraction<IUpdateSettingsUseCase>(\n \"AiPowerUps/UpdateSettingsUseCase\"\n);\nexport namespace UpdateSettingsUseCase {\n export type Interface = IUpdateSettingsUseCase;\n}\n\nexport interface IUpdateSettingsRepository {\n execute(data: IAiPowerUpsSettings): Promise<IAiPowerUpsSettings>;\n}\n\nexport const UpdateSettingsRepository = createAbstraction<IUpdateSettingsRepository>(\n \"AiPowerUps/UpdateSettingsRepository\"\n);\nexport namespace UpdateSettingsRepository {\n export type Interface = IUpdateSettingsRepository;\n}\n\nexport interface IUpdateSettingsGateway {\n execute(data: IAiPowerUpsSettings): Promise<IAiPowerUpsSettings>;\n}\n\nexport const UpdateSettingsGateway = createAbstraction<IUpdateSettingsGateway>(\n \"AiPowerUps/UpdateSettingsGateway\"\n);\nexport namespace UpdateSettingsGateway {\n export type Interface = IUpdateSettingsGateway;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,uBAAuB;AAOzD,OAAO,MAAMC,qBAAqB,GAAGD,iBAAiB,CAClD,kCACJ,CAAC;AASD,OAAO,MAAME,wBAAwB,GAAGF,iBAAiB,CACrD,qCACJ,CAAC;AASD,OAAO,MAAMG,qBAAqB,GAAGH,iBAAiB,CAClD,kCACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"admin/features/settings/updateSettings/abstractions.js","sources":["../../../../../src/admin/features/settings/updateSettings/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport type { IAiPowerUpsSettings } from \"~/admin/features/settings/shared/abstractions.js\";\n\nexport interface IUpdateSettingsUseCase {\n execute(data: IAiPowerUpsSettings): Promise<IAiPowerUpsSettings>;\n}\n\nexport const UpdateSettingsUseCase = createAbstraction<IUpdateSettingsUseCase>(\n \"AiPowerUps/UpdateSettingsUseCase\"\n);\nexport namespace UpdateSettingsUseCase {\n export type Interface = IUpdateSettingsUseCase;\n}\n\nexport interface IUpdateSettingsRepository {\n execute(data: IAiPowerUpsSettings): Promise<IAiPowerUpsSettings>;\n}\n\nexport const UpdateSettingsRepository = createAbstraction<IUpdateSettingsRepository>(\n \"AiPowerUps/UpdateSettingsRepository\"\n);\nexport namespace UpdateSettingsRepository {\n export type Interface = IUpdateSettingsRepository;\n}\n\nexport interface IUpdateSettingsGateway {\n execute(data: IAiPowerUpsSettings): Promise<IAiPowerUpsSettings>;\n}\n\nexport const UpdateSettingsGateway = createAbstraction<IUpdateSettingsGateway>(\n \"AiPowerUps/UpdateSettingsGateway\"\n);\nexport namespace UpdateSettingsGateway {\n export type Interface = IUpdateSettingsGateway;\n}\n"],"names":["UpdateSettingsUseCase","createAbstraction","UpdateSettingsRepository","UpdateSettingsGateway"],"mappings":";AAOO,MAAMA,wBAAwBC,kBACjC;AAUG,MAAMC,2BAA2BD,kBACpC;AAUG,MAAME,wBAAwBF,kBACjC"}
@@ -1,20 +1,21 @@
1
1
  import { createFeature } from "@webiny/feature/admin";
2
- import { UpdateSettingsUseCase as UseCaseAbstraction } from "./abstractions.js";
3
- import { UpdateSettingsUseCase } from "./UpdateSettingsUseCase.js";
2
+ import { UpdateSettingsUseCase } from "./abstractions.js";
3
+ import { UpdateSettingsUseCase as external_UpdateSettingsUseCase_js_UpdateSettingsUseCase } from "./UpdateSettingsUseCase.js";
4
4
  import { UpdateSettingsRepository } from "./UpdateSettingsRepository.js";
5
5
  import { UpdateSettingsGateway } from "./UpdateSettingsGateway.js";
6
- export const UpdateSettingsFeature = createFeature({
7
- name: "AiPowerUps/UpdateSettings",
8
- register(container) {
9
- container.register(UpdateSettingsUseCase);
10
- container.register(UpdateSettingsRepository).inSingletonScope();
11
- container.register(UpdateSettingsGateway).inSingletonScope();
12
- },
13
- resolve(container) {
14
- return {
15
- useCase: container.resolve(UseCaseAbstraction)
16
- };
17
- }
6
+ const UpdateSettingsFeature = createFeature({
7
+ name: "AiPowerUps/UpdateSettings",
8
+ register (container) {
9
+ container.register(external_UpdateSettingsUseCase_js_UpdateSettingsUseCase);
10
+ container.register(UpdateSettingsRepository).inSingletonScope();
11
+ container.register(UpdateSettingsGateway).inSingletonScope();
12
+ },
13
+ resolve (container) {
14
+ return {
15
+ useCase: container.resolve(UpdateSettingsUseCase)
16
+ };
17
+ }
18
18
  });
19
+ export { UpdateSettingsFeature };
19
20
 
20
21
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","UpdateSettingsUseCase","UseCaseAbstraction","UpdateSettingsRepository","UpdateSettingsGateway","UpdateSettingsFeature","name","register","container","inSingletonScope","resolve","useCase"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { UpdateSettingsUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { UpdateSettingsUseCase } from \"./UpdateSettingsUseCase.js\";\nimport { UpdateSettingsRepository } from \"./UpdateSettingsRepository.js\";\nimport { UpdateSettingsGateway } from \"./UpdateSettingsGateway.js\";\n\nexport const UpdateSettingsFeature = createFeature({\n name: \"AiPowerUps/UpdateSettings\",\n register(container) {\n container.register(UpdateSettingsUseCase);\n container.register(UpdateSettingsRepository).inSingletonScope();\n container.register(UpdateSettingsGateway).inSingletonScope();\n },\n resolve(container) {\n return {\n useCase: container.resolve(UseCaseAbstraction)\n };\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,uBAAuB;AACrD,SAASC,qBAAqB,IAAIC,kBAAkB;AACpD,SAASD,qBAAqB;AAC9B,SAASE,wBAAwB;AACjC,SAASC,qBAAqB;AAE9B,OAAO,MAAMC,qBAAqB,GAAGL,aAAa,CAAC;EAC/CM,IAAI,EAAE,2BAA2B;EACjCC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACN,qBAAqB,CAAC;IACzCO,SAAS,CAACD,QAAQ,CAACJ,wBAAwB,CAAC,CAACM,gBAAgB,CAAC,CAAC;IAC/DD,SAAS,CAACD,QAAQ,CAACH,qBAAqB,CAAC,CAACK,gBAAgB,CAAC,CAAC;EAChE,CAAC;EACDC,OAAOA,CAACF,SAAS,EAAE;IACf,OAAO;MACHG,OAAO,EAAEH,SAAS,CAACE,OAAO,CAACR,kBAAkB;IACjD,CAAC;EACL;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"admin/features/settings/updateSettings/feature.js","sources":["../../../../../src/admin/features/settings/updateSettings/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { UpdateSettingsUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { UpdateSettingsUseCase } from \"./UpdateSettingsUseCase.js\";\nimport { UpdateSettingsRepository } from \"./UpdateSettingsRepository.js\";\nimport { UpdateSettingsGateway } from \"./UpdateSettingsGateway.js\";\n\nexport const UpdateSettingsFeature = createFeature({\n name: \"AiPowerUps/UpdateSettings\",\n register(container) {\n container.register(UpdateSettingsUseCase);\n container.register(UpdateSettingsRepository).inSingletonScope();\n container.register(UpdateSettingsGateway).inSingletonScope();\n },\n resolve(container) {\n return {\n useCase: container.resolve(UseCaseAbstraction)\n };\n }\n});\n"],"names":["UpdateSettingsFeature","createFeature","container","UpdateSettingsUseCase","UpdateSettingsRepository","UpdateSettingsGateway","UseCaseAbstraction"],"mappings":";;;;;AAMO,MAAMA,wBAAwBC,cAAc;IAC/C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE,0BAA0B,gBAAgB;QAC7DF,UAAU,QAAQ,CAACG,uBAAuB,gBAAgB;IAC9D;IACA,SAAQH,SAAS;QACb,OAAO;YACH,SAASA,UAAU,OAAO,CAACI;QAC/B;IACJ;AACJ"}
@@ -1,4 +1,2 @@
1
- export { UpdateSettingsUseCase, UpdateSettingsRepository, UpdateSettingsGateway } from "./abstractions.js";
1
+ export { UpdateSettingsGateway, UpdateSettingsRepository, UpdateSettingsUseCase } from "./abstractions.js";
2
2
  export { UpdateSettingsFeature } from "./feature.js";
3
-
4
- //# sourceMappingURL=index.js.map
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ export declare const AiPowerUpsSettingsPage: (() => React.JSX.Element) & {
3
+ displayName: string;
4
+ };
@@ -0,0 +1,50 @@
1
+ import react, { useEffect } from "react";
2
+ import { observer } from "mobx-react-lite";
3
+ import { FormErrors, FormView, PresenterErrors, SimpleForm, SimpleFormContent, SimpleFormFooter, SimpleFormHeader } from "@webiny/app-admin";
4
+ import { Button, OverlayLoader, useToast } from "@webiny/admin-ui";
5
+ import { useFeature } from "@webiny/app";
6
+ import { AiPowerUpsSettingsFeature } from "./feature.js";
7
+ const AiPowerUpsSettingsPage = observer(()=>{
8
+ const toast = useToast();
9
+ const { presenter } = useFeature(AiPowerUpsSettingsFeature);
10
+ const vm = presenter.vm;
11
+ useEffect(()=>{
12
+ presenter.init();
13
+ }, []);
14
+ const handleSave = async ()=>{
15
+ const success = await presenter.save();
16
+ if (success) toast.showSuccessToast({
17
+ title: "AI power-ups settings saved successfully!"
18
+ });
19
+ };
20
+ return /*#__PURE__*/ react.createElement("div", null, /*#__PURE__*/ react.createElement(SimpleForm, {
21
+ size: "xl"
22
+ }, vm.errors.length > 0 ? /*#__PURE__*/ react.createElement("div", {
23
+ className: "mb-lg"
24
+ }, /*#__PURE__*/ react.createElement(PresenterErrors, {
25
+ errors: vm.errors
26
+ })) : null, vm.form && vm.form.errors.length > 0 ? /*#__PURE__*/ react.createElement("div", {
27
+ className: "mb-lg"
28
+ }, /*#__PURE__*/ react.createElement(FormErrors, {
29
+ form: vm.form
30
+ })) : null, vm.loading || vm.saving ? /*#__PURE__*/ react.createElement(OverlayLoader, {
31
+ text: vm.saving ? "Saving..." : "Loading..."
32
+ }) : null, /*#__PURE__*/ react.createElement(SimpleFormHeader, {
33
+ title: "AI Power-Ups"
34
+ }), /*#__PURE__*/ react.createElement(SimpleFormContent, {
35
+ className: "p-0"
36
+ }, /*#__PURE__*/ react.createElement("div", {
37
+ className: "flex flex-col gap-4"
38
+ }, vm.form ? /*#__PURE__*/ react.createElement(FormView, {
39
+ name: "AI Power-Ups",
40
+ form: vm.form
41
+ }) : null)), /*#__PURE__*/ react.createElement(SimpleFormFooter, {
42
+ className: "border-t-sm border-t-neutral-dimmed pt-lg"
43
+ }, /*#__PURE__*/ react.createElement(Button, {
44
+ text: "Save Settings",
45
+ onClick: handleSave
46
+ }))));
47
+ });
48
+ export { AiPowerUpsSettingsPage };
49
+
50
+ //# sourceMappingURL=AiPowerUpsSettingsPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js","sources":["../../../../src/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport {\n FormView,\n FormErrors,\n PresenterErrors,\n SimpleForm,\n SimpleFormContent,\n SimpleFormFooter,\n SimpleFormHeader\n} from \"@webiny/app-admin\";\nimport { Button, OverlayLoader, useToast } from \"@webiny/admin-ui\";\nimport { useFeature } from \"@webiny/app\";\nimport { AiPowerUpsSettingsFeature } from \"./feature.js\";\n\nexport const AiPowerUpsSettingsPage = observer(() => {\n const toast = useToast();\n const { presenter } = useFeature(AiPowerUpsSettingsFeature);\n const vm = presenter.vm;\n\n useEffect(() => {\n presenter.init();\n }, []);\n\n const handleSave = async () => {\n const success = await presenter.save();\n if (success) {\n toast.showSuccessToast({\n title: \"AI power-ups settings saved successfully!\"\n });\n }\n };\n\n return (\n <div>\n <SimpleForm size={\"xl\"}>\n {vm.errors.length > 0 ? (\n <div className={\"mb-lg\"}>\n <PresenterErrors errors={vm.errors} />\n </div>\n ) : null}\n {vm.form && vm.form.errors.length > 0 ? (\n <div className={\"mb-lg\"}>\n <FormErrors form={vm.form} />\n </div>\n ) : null}\n {vm.loading || vm.saving ? (\n <OverlayLoader text={vm.saving ? \"Saving...\" : \"Loading...\"} />\n ) : null}\n <SimpleFormHeader title=\"AI Power-Ups\" />\n <SimpleFormContent className={\"p-0\"}>\n <div className=\"flex flex-col gap-4\">\n {vm.form ? <FormView name=\"AI Power-Ups\" form={vm.form} /> : null}\n </div>\n </SimpleFormContent>\n <SimpleFormFooter className={\"border-t-sm border-t-neutral-dimmed pt-lg\"}>\n <Button text=\"Save Settings\" onClick={handleSave} />\n </SimpleFormFooter>\n </SimpleForm>\n </div>\n );\n});\n"],"names":["AiPowerUpsSettingsPage","observer","toast","useToast","presenter","useFeature","AiPowerUpsSettingsFeature","vm","useEffect","handleSave","success","SimpleForm","PresenterErrors","FormErrors","OverlayLoader","SimpleFormHeader","SimpleFormContent","FormView","SimpleFormFooter","Button"],"mappings":";;;;;;AAeO,MAAMA,yBAAyBC,SAAS;IAC3C,MAAMC,QAAQC;IACd,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAWC;IACjC,MAAMC,KAAKH,UAAU,EAAE;IAEvBI,UAAU;QACNJ,UAAU,IAAI;IAClB,GAAG,EAAE;IAEL,MAAMK,aAAa;QACf,MAAMC,UAAU,MAAMN,UAAU,IAAI;QACpC,IAAIM,SACAR,MAAM,gBAAgB,CAAC;YACnB,OAAO;QACX;IAER;IAEA,OAAO,WAAP,GACI,oBAAC,2BACG,oBAACS,YAAUA;QAAC,MAAM;OACbJ,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,WAAJ,GAChB,oBAAC;QAAI,WAAW;qBACZ,oBAACK,iBAAeA;QAAC,QAAQL,GAAG,MAAM;UAEtC,MACHA,GAAG,IAAI,IAAIA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,WAAJ,GAChC,oBAAC;QAAI,WAAW;qBACZ,oBAACM,YAAUA;QAAC,MAAMN,GAAG,IAAI;UAE7B,MACHA,GAAG,OAAO,IAAIA,GAAG,MAAM,GAAG,WAAH,GACpB,oBAACO,eAAaA;QAAC,MAAMP,GAAG,MAAM,GAAG,cAAc;SAC/C,oBACJ,oBAACQ,kBAAgBA;QAAC,OAAM;sBACxB,oBAACC,mBAAiBA;QAAC,WAAW;qBAC1B,oBAAC;QAAI,WAAU;OACVT,GAAG,IAAI,GAAG,WAAH,GAAG,oBAACU,UAAQA;QAAC,MAAK;QAAe,MAAMV,GAAG,IAAI;SAAO,sBAGrE,oBAACW,kBAAgBA;QAAC,WAAW;qBACzB,oBAACC,QAAMA;QAAC,MAAK;QAAgB,SAASV;;AAK1D"}
@@ -11,11 +11,12 @@ declare class AiPowerUpsSettingsPresenterImpl implements PresenterAbstraction.In
11
11
  private loading;
12
12
  private saving;
13
13
  private form;
14
- private error;
14
+ private errors;
15
15
  constructor(factory: FormModelFactory.Interface, groups: AiPowerUpsSettingsGroup.Interface[], getSettings: GetSettingsUseCase.Interface, updateSettings: UpdateSettingsUseCase.Interface);
16
16
  get vm(): PresenterAbstraction.ViewModel;
17
17
  init(): Promise<void>;
18
18
  save(): Promise<boolean>;
19
+ importData(data: Record<string, unknown>): void;
19
20
  private collectGroups;
20
21
  private buildForm;
21
22
  }
@@ -1,144 +1,148 @@
1
- import { makeAutoObservable, computed, runInAction } from "mobx";
1
+ import { computed, makeAutoObservable, runInAction } from "mobx";
2
2
  import { FormModelFactory } from "@webiny/app-admin";
3
3
  import { GetSettingsUseCase } from "../../features/settings/getSettings/abstractions.js";
4
4
  import { UpdateSettingsUseCase } from "../../features/settings/updateSettings/abstractions.js";
5
- import { AiPowerUpsSettingsPresenter as PresenterAbstraction } from "./abstractions.js";
5
+ import { AiPowerUpsSettingsPresenter } from "./abstractions.js";
6
6
  import { AiPowerUpsSettingsGroup } from "./settingsGroup.js";
7
+ import { SettingsValidationError } from "../../domain/errors.js";
7
8
  class AiPowerUpsSettingsPresenterImpl {
8
- loading = false;
9
- saving = false;
10
- form = null;
11
- error = null;
12
- constructor(factory, groups, getSettings, updateSettings) {
13
- this.factory = factory;
14
- this.groups = groups;
15
- this.getSettings = getSettings;
16
- this.updateSettings = updateSettings;
17
- makeAutoObservable(this, {
18
- vm: computed
19
- }, {
20
- autoBind: true
21
- });
22
- }
23
- get vm() {
24
- return {
25
- loading: this.loading,
26
- saving: this.saving,
27
- form: this.form ? this.form.vm : null,
28
- error: this.error
29
- };
30
- }
31
- async init() {
32
- this.loading = true;
33
- this.error = null;
34
- try {
35
- const data = await this.getSettings.execute();
36
- runInAction(() => {
37
- this.form = this.buildForm();
38
- this.form.setData(data);
39
- });
40
- } catch (err) {
41
- runInAction(() => {
42
- this.error = err instanceof Error ? err.message : "Failed to load settings.";
43
- });
44
- } finally {
45
- runInAction(() => {
9
+ constructor(factory, groups, getSettings, updateSettings){
10
+ this.factory = factory;
11
+ this.groups = groups;
12
+ this.getSettings = getSettings;
13
+ this.updateSettings = updateSettings;
46
14
  this.loading = false;
47
- });
48
- }
49
- }
50
- async save() {
51
- if (!this.form) {
52
- return false;
53
- }
54
- const data = await this.form.submit();
55
- if (!data) {
56
- return false;
57
- }
58
- console.log("form data", data);
59
- runInAction(() => {
60
- this.saving = true;
61
- this.error = null;
62
- });
63
- try {
64
- await this.updateSettings.execute(data);
65
- return true;
66
- } catch (err) {
67
- console.log(err);
68
- runInAction(() => {
69
- this.error = err instanceof Error ? err.message : "Failed to save settings.";
70
- });
71
- return false;
72
- } finally {
73
- runInAction(() => {
74
15
  this.saving = false;
75
- });
16
+ this.form = null;
17
+ this.errors = [];
18
+ makeAutoObservable(this, {
19
+ vm: computed
20
+ }, {
21
+ autoBind: true
22
+ });
76
23
  }
77
- }
78
- collectGroups() {
79
- return this.groups.map(group => {
80
- const collected = {
81
- group,
82
- fieldsFn: null,
83
- layoutFn: null
84
- };
85
- const builder = {
86
- fields(fn) {
87
- collected.fieldsFn = fn;
88
- },
89
- layout(fn) {
90
- collected.layoutFn = fn;
91
- }
92
- };
93
- group.buildForm(builder);
94
- return collected;
95
- });
96
- }
97
- buildForm() {
98
- const collected = this.collectGroups();
99
- return this.factory.create({
100
- fields: fields => {
101
- const result = {};
102
- for (const {
103
- group,
104
- fieldsFn
105
- } of collected) {
106
- if (!fieldsFn) {
107
- continue;
108
- }
109
- result[group.name] = fields.object().label(group.label).renderer("passthrough").fields(fieldsFn);
24
+ get vm() {
25
+ return {
26
+ loading: this.loading,
27
+ saving: this.saving,
28
+ form: this.form ? this.form.vm : null,
29
+ errors: this.errors
30
+ };
31
+ }
32
+ async init() {
33
+ this.loading = true;
34
+ this.errors = [];
35
+ try {
36
+ const data = await this.getSettings.execute();
37
+ runInAction(()=>{
38
+ this.form = this.buildForm();
39
+ this.form.setData(data);
40
+ });
41
+ } catch (err) {
42
+ runInAction(()=>{
43
+ this.errors = [
44
+ err instanceof Error ? err.message : "Failed to load settings."
45
+ ];
46
+ });
47
+ } finally{
48
+ runInAction(()=>{
49
+ this.loading = false;
50
+ });
110
51
  }
111
- return result;
112
- },
113
- layout: layout => {
114
- if (collected.length === 0) {
115
- return [];
52
+ }
53
+ async save() {
54
+ if (!this.form) return false;
55
+ const data = await this.form.submit();
56
+ if (!data) return false;
57
+ runInAction(()=>{
58
+ this.saving = true;
59
+ this.errors = [];
60
+ });
61
+ try {
62
+ await this.updateSettings.execute(data);
63
+ return true;
64
+ } catch (err) {
65
+ runInAction(()=>{
66
+ if (err instanceof SettingsValidationError) this.errors = Object.values(err.data.invalidFields).map((e)=>e.message);
67
+ else this.errors = [
68
+ err instanceof Error ? err.message : "Failed to save settings."
69
+ ];
70
+ });
71
+ return false;
72
+ } finally{
73
+ runInAction(()=>{
74
+ this.saving = false;
75
+ });
116
76
  }
117
- const tabsBuilder = layout.tabs("settings-tabs").renderer("tabsVertical");
118
- for (const {
119
- group
120
- } of collected) {
121
- tabsBuilder.tab(group.name, tab => {
122
- tab.label(group.label);
123
- if (group.description) {
124
- tab.description(group.description);
125
- }
126
- if (group.icon) {
127
- tab.icon(group.icon);
77
+ }
78
+ importData(data) {
79
+ if (!this.form) return;
80
+ const current = this.form.getData();
81
+ this.form.setData({
82
+ ...current,
83
+ ...data
84
+ });
85
+ }
86
+ collectGroups() {
87
+ return this.groups.map((group)=>{
88
+ const collected = {
89
+ group,
90
+ fieldsFn: null,
91
+ layoutFn: null
92
+ };
93
+ const builder = {
94
+ fields (fn) {
95
+ collected.fieldsFn = fn;
96
+ },
97
+ layout (fn) {
98
+ collected.layoutFn = fn;
99
+ }
100
+ };
101
+ group.buildForm(builder);
102
+ return collected;
103
+ });
104
+ }
105
+ buildForm() {
106
+ const collected = this.collectGroups();
107
+ const form = this.factory.create({
108
+ fields: (fields)=>{
109
+ const result = {};
110
+ for (const { group, fieldsFn } of collected)if (fieldsFn) result[group.name] = fields.object().label(group.label).renderer("passthrough").fields(fieldsFn);
111
+ return result;
112
+ },
113
+ layout: (layout)=>{
114
+ if (0 === collected.length) return [];
115
+ const tabsBuilder = layout.tabs("settings-tabs").renderer("tabsVertical");
116
+ for (const { group } of collected)tabsBuilder.tab(group.name, (tab)=>{
117
+ tab.label(group.label);
118
+ if (group.description) tab.description(group.description);
119
+ if (group.icon) tab.icon(group.icon);
120
+ tab.layout((l)=>[
121
+ l.row(group.name)
122
+ ]);
123
+ });
124
+ return [
125
+ tabsBuilder
126
+ ];
128
127
  }
129
- tab.layout(l => [l.row(group.name)]);
130
- });
131
- }
132
- return [tabsBuilder];
133
- }
134
- });
135
- }
128
+ });
129
+ return form;
130
+ }
136
131
  }
137
- export const AiPowerUpsSettingsPresenter = PresenterAbstraction.createImplementation({
138
- implementation: AiPowerUpsSettingsPresenterImpl,
139
- dependencies: [FormModelFactory, [AiPowerUpsSettingsGroup, {
140
- multiple: true
141
- }], GetSettingsUseCase, UpdateSettingsUseCase]
132
+ const AiPowerUpsSettingsPresenter_AiPowerUpsSettingsPresenter = AiPowerUpsSettingsPresenter.createImplementation({
133
+ implementation: AiPowerUpsSettingsPresenterImpl,
134
+ dependencies: [
135
+ FormModelFactory,
136
+ [
137
+ AiPowerUpsSettingsGroup,
138
+ {
139
+ multiple: true
140
+ }
141
+ ],
142
+ GetSettingsUseCase,
143
+ UpdateSettingsUseCase
144
+ ]
142
145
  });
146
+ export { AiPowerUpsSettingsPresenter_AiPowerUpsSettingsPresenter as AiPowerUpsSettingsPresenter };
143
147
 
144
148
  //# sourceMappingURL=AiPowerUpsSettingsPresenter.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["makeAutoObservable","computed","runInAction","FormModelFactory","GetSettingsUseCase","UpdateSettingsUseCase","AiPowerUpsSettingsPresenter","PresenterAbstraction","AiPowerUpsSettingsGroup","AiPowerUpsSettingsPresenterImpl","loading","saving","form","error","constructor","factory","groups","getSettings","updateSettings","vm","autoBind","init","data","execute","buildForm","setData","err","Error","message","save","submit","console","log","collectGroups","map","group","collected","fieldsFn","layoutFn","builder","fields","fn","layout","create","result","name","object","label","renderer","length","tabsBuilder","tabs","tab","description","icon","l","row","createImplementation","implementation","dependencies","multiple"],"sources":["AiPowerUpsSettingsPresenter.ts"],"sourcesContent":["import { makeAutoObservable, computed, runInAction } from \"mobx\";\nimport { FormModelFactory, FormModel } from \"@webiny/app-admin\";\nimport type { ILayoutNodeBuilder } from \"@webiny/app-admin/features/formModel/abstractions.js\";\nimport { GetSettingsUseCase } from \"../../features/settings/getSettings/abstractions.js\";\nimport { UpdateSettingsUseCase } from \"../../features/settings/updateSettings/abstractions.js\";\nimport { AiPowerUpsSettingsPresenter as PresenterAbstraction } from \"./abstractions.js\";\nimport { AiPowerUpsSettingsGroup } from \"./settingsGroup.js\";\nimport type { IAiPowerUpsSettings } from \"~/admin/features/settings/shared/abstractions.js\";\n\ntype FieldsFactory = (\n fields: FormModelFactory.FieldBuilderRegistry\n) => Record<string, FormModelFactory.FieldBuilder>;\n\ntype LayoutFactory = (layout: FormModelFactory.LayoutBuilder) => ILayoutNodeBuilder[];\n\ninterface CollectedGroup {\n group: AiPowerUpsSettingsGroup.Interface;\n fieldsFn: FieldsFactory | null;\n layoutFn: LayoutFactory | null;\n}\n\nclass AiPowerUpsSettingsPresenterImpl implements PresenterAbstraction.Interface {\n private loading = false;\n private saving = false;\n private form: FormModel.Interface<IAiPowerUpsSettings> | null = null;\n private error: string | null = null;\n\n constructor(\n private factory: FormModelFactory.Interface,\n private groups: AiPowerUpsSettingsGroup.Interface[],\n private getSettings: GetSettingsUseCase.Interface,\n private updateSettings: UpdateSettingsUseCase.Interface\n ) {\n makeAutoObservable(this, { vm: computed }, { autoBind: true });\n }\n\n get vm(): PresenterAbstraction.ViewModel {\n return {\n loading: this.loading,\n saving: this.saving,\n form: this.form ? this.form.vm : null,\n error: this.error\n };\n }\n\n async init(): Promise<void> {\n this.loading = true;\n this.error = null;\n\n try {\n const data = await this.getSettings.execute();\n runInAction(() => {\n this.form = this.buildForm();\n this.form.setData(data);\n });\n } catch (err) {\n runInAction(() => {\n this.error = err instanceof Error ? err.message : \"Failed to load settings.\";\n });\n } finally {\n runInAction(() => {\n this.loading = false;\n });\n }\n }\n\n async save(): Promise<boolean> {\n if (!this.form) {\n return false;\n }\n\n const data = await this.form.submit<IAiPowerUpsSettings>();\n if (!data) {\n return false;\n }\n\n console.log(\"form data\", data);\n\n runInAction(() => {\n this.saving = true;\n this.error = null;\n });\n\n try {\n await this.updateSettings.execute(data);\n return true;\n } catch (err) {\n console.log(err);\n runInAction(() => {\n this.error = err instanceof Error ? err.message : \"Failed to save settings.\";\n });\n return false;\n } finally {\n runInAction(() => {\n this.saving = false;\n });\n }\n }\n\n private collectGroups(): CollectedGroup[] {\n return this.groups.map(group => {\n const collected: CollectedGroup = {\n group,\n fieldsFn: null,\n layoutFn: null\n };\n\n const builder: AiPowerUpsSettingsGroup.FormBuilder = {\n fields(fn: FieldsFactory) {\n collected.fieldsFn = fn;\n },\n layout(fn: LayoutFactory) {\n collected.layoutFn = fn;\n }\n };\n\n group.buildForm(builder);\n\n return collected;\n });\n }\n\n private buildForm() {\n const collected = this.collectGroups();\n\n return this.factory.create<IAiPowerUpsSettings>({\n fields: fields => {\n const result: Record<string, FormModelFactory.FieldBuilder> = {};\n for (const { group, fieldsFn } of collected) {\n if (!fieldsFn) {\n continue;\n }\n result[group.name] = fields\n .object()\n .label(group.label)\n .renderer(\"passthrough\")\n .fields(fieldsFn);\n }\n return result;\n },\n layout: layout => {\n if (collected.length === 0) {\n return [];\n }\n\n const tabsBuilder = layout.tabs(\"settings-tabs\").renderer(\"tabsVertical\");\n\n for (const { group } of collected) {\n tabsBuilder.tab(group.name, tab => {\n tab.label(group.label);\n if (group.description) {\n tab.description(group.description);\n }\n if (group.icon) {\n tab.icon(group.icon);\n }\n tab.layout(l => [l.row(group.name)]);\n });\n }\n\n return [tabsBuilder];\n }\n });\n }\n}\n\nexport const AiPowerUpsSettingsPresenter = PresenterAbstraction.createImplementation({\n implementation: AiPowerUpsSettingsPresenterImpl,\n dependencies: [\n FormModelFactory,\n [AiPowerUpsSettingsGroup, { multiple: true }],\n GetSettingsUseCase,\n UpdateSettingsUseCase\n ]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js","sources":["../../../../src/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.ts"],"sourcesContent":["import { makeAutoObservable, computed, runInAction } from \"mobx\";\nimport { FormModelFactory, FormModel } from \"@webiny/app-admin\";\nimport type { ILayoutNodeBuilder } from \"@webiny/app-admin/features/formModel/abstractions.js\";\nimport { GetSettingsUseCase } from \"../../features/settings/getSettings/abstractions.js\";\nimport { UpdateSettingsUseCase } from \"../../features/settings/updateSettings/abstractions.js\";\nimport { AiPowerUpsSettingsPresenter as PresenterAbstraction } from \"./abstractions.js\";\nimport { AiPowerUpsSettingsGroup } from \"./settingsGroup.js\";\nimport { SettingsValidationError } from \"~/admin/domain/errors.js\";\nimport type { IAiPowerUpsSettings } from \"~/admin/features/settings/shared/abstractions.js\";\n\ntype FieldsFactory = (\n fields: FormModelFactory.FieldBuilderRegistry\n) => Record<string, FormModelFactory.FieldBuilder>;\n\ntype LayoutFactory = (layout: FormModelFactory.LayoutBuilder) => ILayoutNodeBuilder[];\n\ninterface CollectedGroup {\n group: AiPowerUpsSettingsGroup.Interface;\n fieldsFn: FieldsFactory | null;\n layoutFn: LayoutFactory | null;\n}\n\nclass AiPowerUpsSettingsPresenterImpl implements PresenterAbstraction.Interface {\n private loading = false;\n private saving = false;\n private form: FormModel.Interface<IAiPowerUpsSettings> | null = null;\n private errors: string[] = [];\n\n constructor(\n private factory: FormModelFactory.Interface,\n private groups: AiPowerUpsSettingsGroup.Interface[],\n private getSettings: GetSettingsUseCase.Interface,\n private updateSettings: UpdateSettingsUseCase.Interface\n ) {\n makeAutoObservable(this, { vm: computed }, { autoBind: true });\n }\n\n get vm(): PresenterAbstraction.ViewModel {\n return {\n loading: this.loading,\n saving: this.saving,\n form: this.form ? this.form.vm : null,\n errors: this.errors\n };\n }\n\n async init(): Promise<void> {\n this.loading = true;\n this.errors = [];\n\n try {\n const data = await this.getSettings.execute();\n runInAction(() => {\n this.form = this.buildForm();\n this.form.setData(data);\n });\n } catch (err) {\n runInAction(() => {\n this.errors = [err instanceof Error ? err.message : \"Failed to load settings.\"];\n });\n } finally {\n runInAction(() => {\n this.loading = false;\n });\n }\n }\n\n async save(): Promise<boolean> {\n if (!this.form) {\n return false;\n }\n\n const data = await this.form.submit<IAiPowerUpsSettings>();\n if (!data) {\n return false;\n }\n\n runInAction(() => {\n this.saving = true;\n this.errors = [];\n });\n\n try {\n await this.updateSettings.execute(data);\n return true;\n } catch (err) {\n runInAction(() => {\n if (err instanceof SettingsValidationError) {\n this.errors = Object.values(err.data.invalidFields).map(e => e.message);\n } else {\n this.errors = [err instanceof Error ? err.message : \"Failed to save settings.\"];\n }\n });\n return false;\n } finally {\n runInAction(() => {\n this.saving = false;\n });\n }\n }\n\n importData(data: Record<string, unknown>): void {\n if (!this.form) {\n return;\n }\n const current = this.form.getData();\n this.form.setData({ ...current, ...data } as IAiPowerUpsSettings);\n }\n\n private collectGroups(): CollectedGroup[] {\n return this.groups.map(group => {\n const collected: CollectedGroup = {\n group,\n fieldsFn: null,\n layoutFn: null\n };\n\n const builder: AiPowerUpsSettingsGroup.FormBuilder = {\n fields(fn: FieldsFactory) {\n collected.fieldsFn = fn;\n },\n layout(fn: LayoutFactory) {\n collected.layoutFn = fn;\n }\n };\n\n group.buildForm(builder);\n\n return collected;\n });\n }\n\n private buildForm() {\n const collected = this.collectGroups();\n\n const form = this.factory.create<IAiPowerUpsSettings>({\n fields: fields => {\n const result: Record<string, FormModelFactory.FieldBuilder> = {};\n for (const { group, fieldsFn } of collected) {\n if (!fieldsFn) {\n continue;\n }\n result[group.name] = fields\n .object()\n .label(group.label)\n .renderer(\"passthrough\")\n .fields(fieldsFn);\n }\n return result;\n },\n layout: layout => {\n if (collected.length === 0) {\n return [];\n }\n\n const tabsBuilder = layout.tabs(\"settings-tabs\").renderer(\"tabsVertical\");\n\n for (const { group } of collected) {\n tabsBuilder.tab(group.name, tab => {\n tab.label(group.label);\n if (group.description) {\n tab.description(group.description);\n }\n if (group.icon) {\n tab.icon(group.icon);\n }\n tab.layout(l => [l.row(group.name)]);\n });\n }\n\n return [tabsBuilder];\n }\n });\n\n return form;\n }\n}\n\nexport const AiPowerUpsSettingsPresenter = PresenterAbstraction.createImplementation({\n implementation: AiPowerUpsSettingsPresenterImpl,\n dependencies: [\n FormModelFactory,\n [AiPowerUpsSettingsGroup, { multiple: true }],\n GetSettingsUseCase,\n UpdateSettingsUseCase\n ]\n});\n"],"names":["AiPowerUpsSettingsPresenterImpl","factory","groups","getSettings","updateSettings","makeAutoObservable","computed","data","runInAction","err","Error","SettingsValidationError","Object","e","current","group","collected","builder","fn","form","fields","result","fieldsFn","layout","tabsBuilder","tab","l","AiPowerUpsSettingsPresenter","PresenterAbstraction","FormModelFactory","AiPowerUpsSettingsGroup","GetSettingsUseCase","UpdateSettingsUseCase"],"mappings":"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"}
@@ -3,12 +3,13 @@ export interface IAiPowerUpsSettingsVm {
3
3
  loading: boolean;
4
4
  saving: boolean;
5
5
  form: FormModel.FormVM | null;
6
- error: string | null;
6
+ errors: string[];
7
7
  }
8
8
  export interface IAiPowerUpsSettingsPresenter {
9
9
  readonly vm: IAiPowerUpsSettingsVm;
10
10
  init(): Promise<void>;
11
11
  save(): Promise<boolean>;
12
+ importData(data: Record<string, unknown>): void;
12
13
  }
13
14
  export declare const AiPowerUpsSettingsPresenter: import("@webiny/di").Abstraction<IAiPowerUpsSettingsPresenter>;
14
15
  export declare namespace AiPowerUpsSettingsPresenter {
@@ -1,4 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/admin";
2
- export const AiPowerUpsSettingsPresenter = createAbstraction("AiPowerUps/SettingsPresenter");
2
+ const AiPowerUpsSettingsPresenter = createAbstraction("AiPowerUps/SettingsPresenter");
3
+ export { AiPowerUpsSettingsPresenter };
3
4
 
4
5
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","AiPowerUpsSettingsPresenter"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport { FormModel } from \"@webiny/app-admin\";\n\nexport interface IAiPowerUpsSettingsVm {\n loading: boolean;\n saving: boolean;\n form: FormModel.FormVM | null;\n error: string | null;\n}\n\nexport interface IAiPowerUpsSettingsPresenter {\n readonly vm: IAiPowerUpsSettingsVm;\n init(): Promise<void>;\n save(): Promise<boolean>;\n}\n\nexport const AiPowerUpsSettingsPresenter = createAbstraction<IAiPowerUpsSettingsPresenter>(\n \"AiPowerUps/SettingsPresenter\"\n);\n\nexport namespace AiPowerUpsSettingsPresenter {\n export type Interface = IAiPowerUpsSettingsPresenter;\n export type ViewModel = IAiPowerUpsSettingsVm;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,uBAAuB;AAgBzD,OAAO,MAAMC,2BAA2B,GAAGD,iBAAiB,CACxD,8BACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"admin/presentation/AiPowerUpsSettings/abstractions.js","sources":["../../../../src/admin/presentation/AiPowerUpsSettings/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport { FormModel } from \"@webiny/app-admin\";\n\nexport interface IAiPowerUpsSettingsVm {\n loading: boolean;\n saving: boolean;\n form: FormModel.FormVM | null;\n errors: string[];\n}\n\nexport interface IAiPowerUpsSettingsPresenter {\n readonly vm: IAiPowerUpsSettingsVm;\n init(): Promise<void>;\n save(): Promise<boolean>;\n importData(data: Record<string, unknown>): void;\n}\n\nexport const AiPowerUpsSettingsPresenter = createAbstraction<IAiPowerUpsSettingsPresenter>(\n \"AiPowerUps/SettingsPresenter\"\n);\n\nexport namespace AiPowerUpsSettingsPresenter {\n export type Interface = IAiPowerUpsSettingsPresenter;\n export type ViewModel = IAiPowerUpsSettingsVm;\n}\n"],"names":["AiPowerUpsSettingsPresenter","createAbstraction"],"mappings":";AAiBO,MAAMA,8BAA8BC,kBACvC"}
@@ -1,21 +1,25 @@
1
1
  import { createFeature } from "@webiny/feature/admin";
2
- import { AiPowerUpsSettingsPresenter as PresenterAbstraction } from "./abstractions.js";
3
- import { AiPowerUpsSettingsPresenter } from "./AiPowerUpsSettingsPresenter.js";
2
+ import { AiPowerUpsSettingsPresenter } from "./abstractions.js";
3
+ import { AiPowerUpsSettingsPresenter as external_AiPowerUpsSettingsPresenter_js_AiPowerUpsSettingsPresenter } from "./AiPowerUpsSettingsPresenter.js";
4
4
  import { ProviderSettings } from "../ProvidersSettings.js";
5
- // import { PersonasSettings } from "../PersonasSettings.js";
6
-
7
- export const AiPowerUpsSettingsFeature = createFeature({
8
- name: "AiPowerUps/Settings/Presenter",
9
- register(container) {
10
- container.register(ProviderSettings);
11
- // container.register(PersonasSettings);
12
- container.register(AiPowerUpsSettingsPresenter);
13
- },
14
- resolve(container) {
15
- return {
16
- presenter: container.resolve(PresenterAbstraction)
17
- };
18
- }
5
+ import { ReaderPersonasSettings } from "../ReaderPersonasSettings.js";
6
+ import { WriterPersonasSettings } from "../WriterPersonasSettings.js";
7
+ import { ProjectsSettings } from "../ProjectsSettings.js";
8
+ const AiPowerUpsSettingsFeature = createFeature({
9
+ name: "AiPowerUps/Settings/Presenter",
10
+ register (container) {
11
+ container.register(ProviderSettings);
12
+ container.register(ReaderPersonasSettings);
13
+ container.register(WriterPersonasSettings);
14
+ container.register(ProjectsSettings);
15
+ container.register(external_AiPowerUpsSettingsPresenter_js_AiPowerUpsSettingsPresenter);
16
+ },
17
+ resolve (container) {
18
+ return {
19
+ presenter: container.resolve(AiPowerUpsSettingsPresenter)
20
+ };
21
+ }
19
22
  });
23
+ export { AiPowerUpsSettingsFeature };
20
24
 
21
25
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","AiPowerUpsSettingsPresenter","PresenterAbstraction","ProviderSettings","AiPowerUpsSettingsFeature","name","register","container","resolve","presenter"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { AiPowerUpsSettingsPresenter as PresenterAbstraction } from \"./abstractions.js\";\nimport { AiPowerUpsSettingsPresenter } from \"./AiPowerUpsSettingsPresenter.js\";\nimport { ProviderSettings } from \"../ProvidersSettings.js\";\n// import { PersonasSettings } from \"../PersonasSettings.js\";\n\nexport const AiPowerUpsSettingsFeature = createFeature({\n name: \"AiPowerUps/Settings/Presenter\",\n register(container) {\n container.register(ProviderSettings);\n // container.register(PersonasSettings);\n container.register(AiPowerUpsSettingsPresenter);\n },\n resolve(container) {\n return {\n presenter: container.resolve(PresenterAbstraction)\n };\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,uBAAuB;AACrD,SAASC,2BAA2B,IAAIC,oBAAoB;AAC5D,SAASD,2BAA2B;AACpC,SAASE,gBAAgB;AACzB;;AAEA,OAAO,MAAMC,yBAAyB,GAAGJ,aAAa,CAAC;EACnDK,IAAI,EAAE,+BAA+B;EACrCC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,gBAAgB,CAAC;IACpC;IACAI,SAAS,CAACD,QAAQ,CAACL,2BAA2B,CAAC;EACnD,CAAC;EACDO,OAAOA,CAACD,SAAS,EAAE;IACf,OAAO;MACHE,SAAS,EAAEF,SAAS,CAACC,OAAO,CAACN,oBAAoB;IACrD,CAAC;EACL;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"admin/presentation/AiPowerUpsSettings/feature.js","sources":["../../../../src/admin/presentation/AiPowerUpsSettings/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { AiPowerUpsSettingsPresenter as PresenterAbstraction } from \"./abstractions.js\";\nimport { AiPowerUpsSettingsPresenter } from \"./AiPowerUpsSettingsPresenter.js\";\nimport { ProviderSettings } from \"../ProvidersSettings.js\";\nimport { ReaderPersonasSettings } from \"../ReaderPersonasSettings.js\";\nimport { WriterPersonasSettings } from \"../WriterPersonasSettings.js\";\nimport { ProjectsSettings } from \"../ProjectsSettings.js\";\n\nexport const AiPowerUpsSettingsFeature = createFeature({\n name: \"AiPowerUps/Settings/Presenter\",\n register(container) {\n container.register(ProviderSettings);\n container.register(ReaderPersonasSettings);\n container.register(WriterPersonasSettings);\n container.register(ProjectsSettings);\n container.register(AiPowerUpsSettingsPresenter);\n },\n resolve(container) {\n return {\n presenter: container.resolve(PresenterAbstraction)\n };\n }\n});\n"],"names":["AiPowerUpsSettingsFeature","createFeature","container","ProviderSettings","ReaderPersonasSettings","WriterPersonasSettings","ProjectsSettings","AiPowerUpsSettingsPresenter","PresenterAbstraction"],"mappings":";;;;;;;AAQO,MAAMA,4BAA4BC,cAAc;IACnD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE;QACnBF,UAAU,QAAQ,CAACG;QACnBH,UAAU,QAAQ,CAACI;QACnBJ,UAAU,QAAQ,CAACK;IACvB;IACA,SAAQL,SAAS;QACb,OAAO;YACH,WAAWA,UAAU,OAAO,CAACM;QACjC;IACJ;AACJ"}