@webiny/app-admin 6.4.5 → 6.6.0-alpha.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 (928) hide show
  1. package/base/Admin.d.ts +2 -4
  2. package/base/Admin.js +9 -12
  3. package/base/Admin.js.map +1 -1
  4. package/base/Base/DefaultFieldRenderers.js +24 -0
  5. package/base/Base/DefaultFieldRenderers.js.map +1 -1
  6. package/base/Base/FieldRenderers/ApiKeyTokenRenderer.d.ts +4 -0
  7. package/base/Base/FieldRenderers/ApiKeyTokenRenderer.js +26 -0
  8. package/base/Base/FieldRenderers/ApiKeyTokenRenderer.js.map +1 -0
  9. package/base/Base/FieldRenderers/CheckboxesRenderer.js +1 -0
  10. package/base/Base/FieldRenderers/CheckboxesRenderer.js.map +1 -1
  11. package/base/Base/FieldRenderers/DateTimeInputsRenderer.js +5 -1
  12. package/base/Base/FieldRenderers/DateTimeInputsRenderer.js.map +1 -1
  13. package/base/Base/FieldRenderers/FilePickerRenderer.js +2 -0
  14. package/base/Base/FieldRenderers/FilePickerRenderer.js.map +1 -1
  15. package/base/Base/FieldRenderers/FileUrlPickerRenderer.js +1 -0
  16. package/base/Base/FieldRenderers/FileUrlPickerRenderer.js.map +1 -1
  17. package/base/Base/FieldRenderers/HorizontalTabsRenderer.js +2 -1
  18. package/base/Base/FieldRenderers/HorizontalTabsRenderer.js.map +1 -1
  19. package/base/Base/FieldRenderers/InputRenderer.js +2 -0
  20. package/base/Base/FieldRenderers/InputRenderer.js.map +1 -1
  21. package/base/Base/FieldRenderers/LexicalEditorsRenderer.d.ts +14 -0
  22. package/base/Base/FieldRenderers/LexicalEditorsRenderer.js +78 -0
  23. package/base/Base/FieldRenderers/LexicalEditorsRenderer.js.map +1 -0
  24. package/base/Base/FieldRenderers/MultiAutoCompleteRenderer.d.ts +13 -0
  25. package/base/Base/FieldRenderers/MultiAutoCompleteRenderer.js +29 -0
  26. package/base/Base/FieldRenderers/MultiAutoCompleteRenderer.js.map +1 -0
  27. package/base/Base/FieldRenderers/NumberInputRenderer.js +1 -0
  28. package/base/Base/FieldRenderers/NumberInputRenderer.js.map +1 -1
  29. package/base/Base/FieldRenderers/NumberInputsRenderer.js +19 -9
  30. package/base/Base/FieldRenderers/NumberInputsRenderer.js.map +1 -1
  31. package/base/Base/FieldRenderers/ObjectRenderer/KeyValueTagsRenderer.js +2 -1
  32. package/base/Base/FieldRenderers/ObjectRenderer/KeyValueTagsRenderer.js.map +1 -1
  33. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone.js +46 -5
  34. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone.js.map +1 -1
  35. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.d.ts +1 -0
  36. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js +6 -4
  37. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js.map +1 -1
  38. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.d.ts +2 -1
  39. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js +8 -6
  40. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js.map +1 -1
  41. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.d.ts +4 -1
  42. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js +31 -4
  43. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js.map +1 -1
  44. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js +45 -6
  45. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js.map +1 -1
  46. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.d.ts +3 -2
  47. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js +10 -1
  48. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js.map +1 -1
  49. package/base/Base/FieldRenderers/PasswordInputRenderer.d.ts +12 -0
  50. package/base/Base/FieldRenderers/PasswordInputRenderer.js +22 -0
  51. package/base/Base/FieldRenderers/PasswordInputRenderer.js.map +1 -0
  52. package/base/Base/FieldRenderers/PermissionsRenderer.d.ts +14 -0
  53. package/base/Base/FieldRenderers/PermissionsRenderer.js +18 -0
  54. package/base/Base/FieldRenderers/PermissionsRenderer.js.map +1 -0
  55. package/base/Base/FieldRenderers/RadioButtonsRenderer.js +1 -0
  56. package/base/Base/FieldRenderers/RadioButtonsRenderer.js.map +1 -1
  57. package/base/Base/FieldRenderers/RolesMultiSelectRenderer.d.ts +12 -0
  58. package/base/Base/FieldRenderers/RolesMultiSelectRenderer.js +21 -0
  59. package/base/Base/FieldRenderers/RolesMultiSelectRenderer.js.map +1 -0
  60. package/base/Base/FieldRenderers/SelectRenderer.js +1 -0
  61. package/base/Base/FieldRenderers/SelectRenderer.js.map +1 -1
  62. package/base/Base/FieldRenderers/TagsRenderer.js +1 -0
  63. package/base/Base/FieldRenderers/TagsRenderer.js.map +1 -1
  64. package/base/Base/FieldRenderers/TextInputsRenderer.js +19 -9
  65. package/base/Base/FieldRenderers/TextInputsRenderer.js.map +1 -1
  66. package/base/Base/FieldRenderers/TextareaRenderer.js +1 -0
  67. package/base/Base/FieldRenderers/TextareaRenderer.js.map +1 -1
  68. package/base/Base/FieldRenderers/TextareasRenderer.js +5 -1
  69. package/base/Base/FieldRenderers/TextareasRenderer.js.map +1 -1
  70. package/base/Base.d.ts +3 -1
  71. package/base/Base.js +2 -1
  72. package/base/Base.js.map +1 -1
  73. package/base/createRootContainer.js +10 -3
  74. package/base/createRootContainer.js.map +1 -1
  75. package/base/resolveApiUrl.d.ts +3 -0
  76. package/base/resolveApiUrl.js +18 -0
  77. package/base/resolveApiUrl.js.map +1 -0
  78. package/base/ui/FileManager.d.ts +2 -1
  79. package/components/BulkActions/BulkActionButton.d.ts +6 -0
  80. package/components/BulkActions/BulkActionButton.js +17 -0
  81. package/components/BulkActions/BulkActionButton.js.map +1 -0
  82. package/components/BulkActions/BulkActionRunner.d.ts +41 -0
  83. package/components/BulkActions/BulkActionRunner.js +32 -0
  84. package/components/BulkActions/BulkActionRunner.js.map +1 -0
  85. package/components/BulkActions/Worker.d.ts +9 -57
  86. package/components/BulkActions/Worker.js +5 -9
  87. package/components/BulkActions/Worker.js.map +1 -1
  88. package/components/BulkActions/index.d.ts +3 -0
  89. package/components/BulkActions/index.js +3 -0
  90. package/components/ConfirmationDialog/ConfirmationDialog.d.ts +11 -0
  91. package/components/ConfirmationDialog/ConfirmationDialog.js +41 -0
  92. package/components/ConfirmationDialog/ConfirmationDialog.js.map +1 -0
  93. package/components/ConfirmationDialog/index.d.ts +1 -0
  94. package/components/ConfirmationDialog/index.js +1 -0
  95. package/components/Dialogs/DialogsContext.js +2 -1
  96. package/components/Dialogs/DialogsContext.js.map +1 -1
  97. package/components/IconPicker/IconPicker.d.ts +7 -5
  98. package/components/IconPicker/components/IconPickerTrigger.d.ts +1 -1
  99. package/components/IconPicker/config/index.d.ts +2 -1
  100. package/components/IconPicker/plugins/customPlugin.js +4 -19
  101. package/components/IconPicker/plugins/customPlugin.js.map +1 -1
  102. package/components/ListView/ListView.d.ts +17 -0
  103. package/components/ListView/ListView.js +36 -0
  104. package/components/ListView/ListView.js.map +1 -0
  105. package/components/ListView/ListViewBottomBar.d.ts +14 -0
  106. package/components/ListView/ListViewBottomBar.js +45 -0
  107. package/components/ListView/ListViewBottomBar.js.map +1 -0
  108. package/components/ListView/ListViewBulkActions.d.ts +11 -0
  109. package/components/ListView/ListViewBulkActions.js +41 -0
  110. package/components/ListView/ListViewBulkActions.js.map +1 -0
  111. package/components/ListView/ListViewContent.d.ts +12 -0
  112. package/components/ListView/ListViewContent.js +25 -0
  113. package/components/ListView/ListViewContent.js.map +1 -0
  114. package/components/ListView/ListViewFilters.d.ts +15 -0
  115. package/components/ListView/ListViewFilters.js +21 -0
  116. package/components/ListView/ListViewFilters.js.map +1 -0
  117. package/components/ListView/ListViewHeader.d.ts +17 -0
  118. package/components/ListView/ListViewHeader.js +72 -0
  119. package/components/ListView/ListViewHeader.js.map +1 -0
  120. package/components/ListView/ListViewSidebar.d.ts +17 -0
  121. package/components/ListView/ListViewSidebar.js +25 -0
  122. package/components/ListView/ListViewSidebar.js.map +1 -0
  123. package/components/ListView/ListViewTable.d.ts +18 -0
  124. package/components/ListView/ListViewTable.js +33 -0
  125. package/components/ListView/ListViewTable.js.map +1 -0
  126. package/components/ListView/context.d.ts +3 -0
  127. package/components/ListView/context.js +11 -0
  128. package/components/ListView/context.js.map +1 -0
  129. package/components/ListView/index.d.ts +24 -0
  130. package/components/ListView/index.js +22 -0
  131. package/components/ListView/index.js.map +1 -0
  132. package/components/ListView/types.d.ts +7 -0
  133. package/components/ListView/types.js +0 -0
  134. package/components/OptionsMenu/OptionsMenuItem.d.ts +1 -0
  135. package/components/OptionsMenu/OptionsMenuItem.js +1 -0
  136. package/components/OptionsMenu/OptionsMenuItem.js.map +1 -1
  137. package/components/OverlayLayout/OverlayLayout.js +2 -4
  138. package/components/OverlayLayout/OverlayLayout.js.map +1 -1
  139. package/components/OverlayLayout/components/OverlayContent.js +0 -1
  140. package/components/OverlayLayout/components/OverlayContent.js.map +1 -1
  141. package/components/OverlayLayout/components/OverlayHeader.d.ts +1 -1
  142. package/components/Permissions/Permissions.js +2 -1
  143. package/components/Permissions/Permissions.js.map +1 -1
  144. package/components/Permissions/index.d.ts +1 -0
  145. package/components/Permissions/index.js +1 -0
  146. package/components/Permissions/mergeByName.d.ts +11 -0
  147. package/components/Permissions/mergeByName.js +33 -0
  148. package/components/Permissions/mergeByName.js.map +1 -0
  149. package/components/RolesMultiAutocomplete/index.d.ts +3 -1
  150. package/components/RolesMultiAutocomplete/index.js +24 -14
  151. package/components/RolesMultiAutocomplete/index.js.map +1 -1
  152. package/components/SimpleForm/SimpleForm.d.ts +1 -1
  153. package/components/SimpleUI/InputField.d.ts +2 -1
  154. package/components/SingleImageUpload.d.ts +1 -2
  155. package/components/SingleImageUpload.js +1 -2
  156. package/components/SingleImageUpload.js.map +1 -1
  157. package/components/Table/cells/CellAuthor.d.ts +2 -0
  158. package/components/Table/cells/CellAuthor.js +10 -0
  159. package/components/Table/cells/CellAuthor.js.map +1 -0
  160. package/components/Table/cells/CellCreated.d.ts +2 -0
  161. package/components/Table/cells/CellCreated.js +13 -0
  162. package/components/Table/cells/CellCreated.js.map +1 -0
  163. package/components/Table/cells/CellModified.d.ts +2 -0
  164. package/components/Table/cells/CellModified.js +13 -0
  165. package/components/Table/cells/CellModified.js.map +1 -0
  166. package/components/Table/cells/index.d.ts +3 -0
  167. package/components/Table/cells/index.js +3 -0
  168. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.d.ts +9 -0
  169. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.js +23 -0
  170. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.js.map +1 -0
  171. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.d.ts +9 -0
  172. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.js +21 -0
  173. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.js.map +1 -0
  174. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.d.ts +1 -0
  175. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.js +128 -0
  176. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.js.map +1 -0
  177. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.d.ts +10 -0
  178. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.js +30 -0
  179. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.js.map +1 -0
  180. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.d.ts +9 -0
  181. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.js +18 -0
  182. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.js.map +1 -0
  183. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.d.ts +8 -0
  184. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.js +16 -0
  185. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.js.map +1 -0
  186. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityRepository.d.ts +5 -0
  187. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityRepository.js +0 -0
  188. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityUpdater.d.ts +4 -0
  189. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityUpdater.js +0 -0
  190. package/components/Table/components/Table/ColumnVisibility/index.d.ts +7 -0
  191. package/components/Table/components/Table/ColumnVisibility/index.js +5 -0
  192. package/components/Table/components/Table/Columns/Column.d.ts +42 -0
  193. package/components/Table/components/Table/Columns/Column.js +21 -0
  194. package/components/Table/components/Table/Columns/Column.js.map +1 -0
  195. package/components/Table/components/Table/Columns/ColumnMapper.d.ts +7 -0
  196. package/components/Table/components/Table/Columns/ColumnMapper.js +34 -0
  197. package/components/Table/components/Table/Columns/ColumnMapper.js.map +1 -0
  198. package/components/Table/components/Table/Columns/ColumnsPresenter.d.ts +9 -0
  199. package/components/Table/components/Table/Columns/ColumnsPresenter.js +18 -0
  200. package/components/Table/components/Table/Columns/ColumnsPresenter.js.map +1 -0
  201. package/components/Table/components/Table/Columns/ColumnsPresenter.test.d.ts +1 -0
  202. package/components/Table/components/Table/Columns/ColumnsPresenter.test.js +73 -0
  203. package/components/Table/components/Table/Columns/ColumnsPresenter.test.js.map +1 -0
  204. package/components/Table/components/Table/Columns/ColumnsRepository.d.ts +9 -0
  205. package/components/Table/components/Table/Columns/ColumnsRepository.js +19 -0
  206. package/components/Table/components/Table/Columns/ColumnsRepository.js.map +1 -0
  207. package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.d.ts +9 -0
  208. package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.js +21 -0
  209. package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.js.map +1 -0
  210. package/components/Table/components/Table/Columns/IColumnsRepository.d.ts +5 -0
  211. package/components/Table/components/Table/Columns/IColumnsRepository.js +0 -0
  212. package/components/Table/components/Table/Columns/index.d.ts +6 -0
  213. package/components/Table/components/Table/Columns/index.js +5 -0
  214. package/components/Table/components/Table/Table.d.ts +17 -0
  215. package/components/Table/components/Table/Table.js +47 -0
  216. package/components/Table/components/Table/Table.js.map +1 -0
  217. package/components/Table/components/Table/TableInner.d.ts +24 -0
  218. package/components/Table/components/Table/TableInner.js +40 -0
  219. package/components/Table/components/Table/TableInner.js.map +1 -0
  220. package/components/Table/components/Table/TablePresenter.d.ts +15 -0
  221. package/components/Table/components/Table/TablePresenter.js +15 -0
  222. package/components/Table/components/Table/TablePresenter.js.map +1 -0
  223. package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.d.ts +9 -0
  224. package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.js +15 -0
  225. package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.js.map +1 -0
  226. package/components/Table/components/Table/gateways/IColumnsVisibilityGateway.d.ts +4 -0
  227. package/components/Table/components/Table/gateways/IColumnsVisibilityGateway.js +0 -0
  228. package/components/Table/components/Table/gateways/index.d.ts +2 -0
  229. package/components/Table/components/Table/gateways/index.js +1 -0
  230. package/components/Table/components/Table/index.d.ts +1 -0
  231. package/components/Table/components/Table/index.js +1 -0
  232. package/components/Table/components/index.d.ts +1 -0
  233. package/components/Table/components/index.js +1 -0
  234. package/components/Table/createTableData.d.ts +5 -0
  235. package/components/Table/createTableData.js +9 -0
  236. package/components/Table/createTableData.js.map +1 -0
  237. package/components/Table/index.d.ts +5 -0
  238. package/components/Table/index.js +5 -0
  239. package/components/Table/table.types.d.ts +9 -0
  240. package/components/Table/table.types.js +0 -0
  241. package/components/Table/useTableRow.d.ts +18 -0
  242. package/components/Table/useTableRow.js +22 -0
  243. package/components/Table/useTableRow.js.map +1 -0
  244. package/components/TeamAutocomplete/index.d.ts +3 -1
  245. package/components/TeamAutocomplete/index.js +13 -14
  246. package/components/TeamAutocomplete/index.js.map +1 -1
  247. package/components/TeamsMultiAutocomplete/index.d.ts +3 -1
  248. package/components/TeamsMultiAutocomplete/index.js +24 -14
  249. package/components/TeamsMultiAutocomplete/index.js.map +1 -1
  250. package/components/index.d.ts +3 -2
  251. package/components/index.js +3 -2
  252. package/config/AdminConfig/Dashboard.d.ts +2 -1
  253. package/config/AdminConfig/Form.d.ts +4 -2
  254. package/config/AdminConfig/LexicalTheme/Typography.d.ts +4 -4
  255. package/config/AdminConfig/LexicalTheme.d.ts +6 -6
  256. package/config/AdminConfig/LexicalTheme.js +0 -2
  257. package/config/AdminConfig/LexicalTheme.js.map +1 -1
  258. package/config/AdminConfig/Logo.d.ts +8 -6
  259. package/config/AdminConfig/Menu/MenuGroup.d.ts +13 -12
  260. package/config/AdminConfig/Menu/MenuItem.d.ts +7 -6
  261. package/config/AdminConfig/Menu/MenuLink.d.ts +7 -6
  262. package/config/AdminConfig/Menu/SupportMenu/SupportMenuItem.d.ts +13 -12
  263. package/config/AdminConfig/Menu/SupportMenu/SupportMenuLink.d.ts +7 -6
  264. package/config/AdminConfig/Menu/SupportMenu.d.ts +8 -6
  265. package/config/AdminConfig/Menu/UserMenu.d.ts +8 -6
  266. package/config/AdminConfig/Menu.d.ts +15 -12
  267. package/config/AdminConfig/Security.d.ts +2 -1
  268. package/config/AdminConfig/SecurityPermissions.js +2 -1
  269. package/config/AdminConfig/SecurityPermissions.js.map +1 -1
  270. package/config/AdminConfig/Tenant/TenantLogo.d.ts +8 -6
  271. package/config/AdminConfig/Tenant/TenantName.d.ts +8 -6
  272. package/config/AdminConfig/Tenant.d.ts +3 -1
  273. package/config/AdminConfig/Title.d.ts +8 -6
  274. package/config/AdminConfig.d.ts +16 -30
  275. package/config/AdminConfig.js +1 -2
  276. package/config/AdminConfig.js.map +1 -1
  277. package/config/table/Column.d.ts +34 -0
  278. package/config/table/Column.js +69 -0
  279. package/config/table/Column.js.map +1 -0
  280. package/config/table/Sorting.d.ts +11 -0
  281. package/config/table/Sorting.js +28 -0
  282. package/config/table/Sorting.js.map +1 -0
  283. package/config/table/index.d.ts +13 -0
  284. package/config/table/index.js +9 -0
  285. package/config/table/index.js.map +1 -0
  286. package/domain/securityPermissionsSchema.d.ts +20 -0
  287. package/domain/securityPermissionsSchema.js +34 -0
  288. package/domain/securityPermissionsSchema.js.map +1 -0
  289. package/errors/ErrorOverlayNetworkErrorHandler.js +4 -4
  290. package/errors/ErrorOverlayNetworkErrorHandler.js.map +1 -1
  291. package/exports/admin/form.d.ts +2 -0
  292. package/exports/admin/form.js +1 -0
  293. package/exports/admin/ui.d.ts +4 -0
  294. package/exports/admin/ui.js +2 -1
  295. package/exports/admin.d.ts +1 -0
  296. package/exports/admin.js +1 -0
  297. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyGateway.d.ts +12 -0
  298. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyGateway.js +50 -0
  299. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyGateway.js.map +1 -0
  300. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyRepository.d.ts +13 -0
  301. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyRepository.js +25 -0
  302. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyRepository.js.map +1 -0
  303. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyUseCase.d.ts +11 -0
  304. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyUseCase.js +18 -0
  305. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyUseCase.js.map +1 -0
  306. package/features/accessManagement/apiKeys/createApiKey/abstractions.d.ts +29 -0
  307. package/features/accessManagement/apiKeys/createApiKey/abstractions.js +7 -0
  308. package/features/accessManagement/apiKeys/createApiKey/abstractions.js.map +1 -0
  309. package/features/accessManagement/apiKeys/createApiKey/feature.d.ts +3 -0
  310. package/features/accessManagement/apiKeys/createApiKey/feature.js +21 -0
  311. package/features/accessManagement/apiKeys/createApiKey/feature.js.map +1 -0
  312. package/features/accessManagement/apiKeys/createApiKey/index.d.ts +3 -0
  313. package/features/accessManagement/apiKeys/createApiKey/index.js +2 -0
  314. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyGateway.d.ts +11 -0
  315. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyGateway.js +39 -0
  316. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyGateway.js.map +1 -0
  317. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyRepository.d.ts +12 -0
  318. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyRepository.js +22 -0
  319. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyRepository.js.map +1 -0
  320. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyUseCase.d.ts +10 -0
  321. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyUseCase.js +18 -0
  322. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyUseCase.js.map +1 -0
  323. package/features/accessManagement/apiKeys/deleteApiKey/abstractions.d.ts +21 -0
  324. package/features/accessManagement/apiKeys/deleteApiKey/abstractions.js +7 -0
  325. package/features/accessManagement/apiKeys/deleteApiKey/abstractions.js.map +1 -0
  326. package/features/accessManagement/apiKeys/deleteApiKey/feature.d.ts +3 -0
  327. package/features/accessManagement/apiKeys/deleteApiKey/feature.js +21 -0
  328. package/features/accessManagement/apiKeys/deleteApiKey/feature.js.map +1 -0
  329. package/features/accessManagement/apiKeys/deleteApiKey/index.d.ts +3 -0
  330. package/features/accessManagement/apiKeys/deleteApiKey/index.js +2 -0
  331. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyGateway.d.ts +12 -0
  332. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyGateway.js +49 -0
  333. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyGateway.js.map +1 -0
  334. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyRepository.d.ts +11 -0
  335. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyRepository.js +18 -0
  336. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyRepository.js.map +1 -0
  337. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyUseCase.d.ts +11 -0
  338. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyUseCase.js +18 -0
  339. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyUseCase.js.map +1 -0
  340. package/features/accessManagement/apiKeys/getApiKey/abstractions.d.ts +22 -0
  341. package/features/accessManagement/apiKeys/getApiKey/abstractions.js +7 -0
  342. package/features/accessManagement/apiKeys/getApiKey/abstractions.js.map +1 -0
  343. package/features/accessManagement/apiKeys/getApiKey/feature.d.ts +3 -0
  344. package/features/accessManagement/apiKeys/getApiKey/feature.js +21 -0
  345. package/features/accessManagement/apiKeys/getApiKey/feature.js.map +1 -0
  346. package/features/accessManagement/apiKeys/getApiKey/index.d.ts +3 -0
  347. package/features/accessManagement/apiKeys/getApiKey/index.js +2 -0
  348. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysGateway.d.ts +11 -0
  349. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysGateway.js +44 -0
  350. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysGateway.js.map +1 -0
  351. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysRepository.d.ts +11 -0
  352. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysRepository.js +22 -0
  353. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysRepository.js.map +1 -0
  354. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysUseCase.d.ts +10 -0
  355. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysUseCase.js +18 -0
  356. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysUseCase.js.map +1 -0
  357. package/features/accessManagement/apiKeys/listApiKeys/abstractions.d.ts +30 -0
  358. package/features/accessManagement/apiKeys/listApiKeys/abstractions.js +8 -0
  359. package/features/accessManagement/apiKeys/listApiKeys/abstractions.js.map +1 -0
  360. package/features/accessManagement/apiKeys/listApiKeys/feature.d.ts +3 -0
  361. package/features/accessManagement/apiKeys/listApiKeys/feature.js +23 -0
  362. package/features/accessManagement/apiKeys/listApiKeys/feature.js.map +1 -0
  363. package/features/accessManagement/apiKeys/listApiKeys/index.d.ts +3 -0
  364. package/features/accessManagement/apiKeys/listApiKeys/index.js +2 -0
  365. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyGateway.d.ts +12 -0
  366. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyGateway.js +51 -0
  367. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyGateway.js.map +1 -0
  368. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyRepository.d.ts +13 -0
  369. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyRepository.js +23 -0
  370. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyRepository.js.map +1 -0
  371. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyUseCase.d.ts +11 -0
  372. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyUseCase.js +18 -0
  373. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyUseCase.js.map +1 -0
  374. package/features/accessManagement/apiKeys/updateApiKey/abstractions.d.ts +28 -0
  375. package/features/accessManagement/apiKeys/updateApiKey/abstractions.js +7 -0
  376. package/features/accessManagement/apiKeys/updateApiKey/abstractions.js.map +1 -0
  377. package/features/accessManagement/apiKeys/updateApiKey/feature.d.ts +3 -0
  378. package/features/accessManagement/apiKeys/updateApiKey/feature.js +21 -0
  379. package/features/accessManagement/apiKeys/updateApiKey/feature.js.map +1 -0
  380. package/features/accessManagement/apiKeys/updateApiKey/index.d.ts +3 -0
  381. package/features/accessManagement/apiKeys/updateApiKey/index.js +2 -0
  382. package/features/accessManagement/constants.d.ts +5 -0
  383. package/features/accessManagement/constants.js +9 -0
  384. package/features/accessManagement/constants.js.map +1 -0
  385. package/features/accessManagement/permissions/abstractions.d.ts +17 -0
  386. package/features/accessManagement/permissions/abstractions.js +6 -0
  387. package/features/accessManagement/permissions/abstractions.js.map +1 -0
  388. package/features/accessManagement/permissions/feature.d.ts +14 -0
  389. package/features/accessManagement/permissions/feature.js +7 -0
  390. package/features/accessManagement/permissions/feature.js.map +1 -0
  391. package/features/accessManagement/roles/createRole/CreateRoleGateway.d.ts +12 -0
  392. package/features/accessManagement/roles/createRole/CreateRoleGateway.js +51 -0
  393. package/features/accessManagement/roles/createRole/CreateRoleGateway.js.map +1 -0
  394. package/features/accessManagement/roles/createRole/CreateRoleRepository.d.ts +13 -0
  395. package/features/accessManagement/roles/createRole/CreateRoleRepository.js +25 -0
  396. package/features/accessManagement/roles/createRole/CreateRoleRepository.js.map +1 -0
  397. package/features/accessManagement/roles/createRole/CreateRoleUseCase.d.ts +11 -0
  398. package/features/accessManagement/roles/createRole/CreateRoleUseCase.js +18 -0
  399. package/features/accessManagement/roles/createRole/CreateRoleUseCase.js.map +1 -0
  400. package/features/accessManagement/roles/createRole/abstractions.d.ts +29 -0
  401. package/features/accessManagement/roles/createRole/abstractions.js +7 -0
  402. package/features/accessManagement/roles/createRole/abstractions.js.map +1 -0
  403. package/features/accessManagement/roles/createRole/feature.d.ts +3 -0
  404. package/features/accessManagement/roles/createRole/feature.js +21 -0
  405. package/features/accessManagement/roles/createRole/feature.js.map +1 -0
  406. package/features/accessManagement/roles/createRole/index.d.ts +3 -0
  407. package/features/accessManagement/roles/createRole/index.js +2 -0
  408. package/features/accessManagement/roles/deleteRole/DeleteRoleGateway.d.ts +11 -0
  409. package/features/accessManagement/roles/deleteRole/DeleteRoleGateway.js +40 -0
  410. package/features/accessManagement/roles/deleteRole/DeleteRoleGateway.js.map +1 -0
  411. package/features/accessManagement/roles/deleteRole/DeleteRoleRepository.d.ts +12 -0
  412. package/features/accessManagement/roles/deleteRole/DeleteRoleRepository.js +22 -0
  413. package/features/accessManagement/roles/deleteRole/DeleteRoleRepository.js.map +1 -0
  414. package/features/accessManagement/roles/deleteRole/DeleteRoleUseCase.d.ts +10 -0
  415. package/features/accessManagement/roles/deleteRole/DeleteRoleUseCase.js +18 -0
  416. package/features/accessManagement/roles/deleteRole/DeleteRoleUseCase.js.map +1 -0
  417. package/features/accessManagement/roles/deleteRole/abstractions.d.ts +21 -0
  418. package/features/accessManagement/roles/deleteRole/abstractions.js +7 -0
  419. package/features/accessManagement/roles/deleteRole/abstractions.js.map +1 -0
  420. package/features/accessManagement/roles/deleteRole/feature.d.ts +3 -0
  421. package/features/accessManagement/roles/deleteRole/feature.js +21 -0
  422. package/features/accessManagement/roles/deleteRole/feature.js.map +1 -0
  423. package/features/accessManagement/roles/deleteRole/index.d.ts +3 -0
  424. package/features/accessManagement/roles/deleteRole/index.js +2 -0
  425. package/features/accessManagement/roles/getRole/GetRoleGateway.d.ts +12 -0
  426. package/features/accessManagement/roles/getRole/GetRoleGateway.js +50 -0
  427. package/features/accessManagement/roles/getRole/GetRoleGateway.js.map +1 -0
  428. package/features/accessManagement/roles/getRole/GetRoleRepository.d.ts +11 -0
  429. package/features/accessManagement/roles/getRole/GetRoleRepository.js +18 -0
  430. package/features/accessManagement/roles/getRole/GetRoleRepository.js.map +1 -0
  431. package/features/accessManagement/roles/getRole/GetRoleUseCase.d.ts +11 -0
  432. package/features/accessManagement/roles/getRole/GetRoleUseCase.js +18 -0
  433. package/features/accessManagement/roles/getRole/GetRoleUseCase.js.map +1 -0
  434. package/features/accessManagement/roles/getRole/abstractions.d.ts +22 -0
  435. package/features/accessManagement/roles/getRole/abstractions.js +7 -0
  436. package/features/accessManagement/roles/getRole/abstractions.js.map +1 -0
  437. package/features/accessManagement/roles/getRole/feature.d.ts +3 -0
  438. package/features/accessManagement/roles/getRole/feature.js +21 -0
  439. package/features/accessManagement/roles/getRole/feature.js.map +1 -0
  440. package/features/accessManagement/roles/getRole/index.d.ts +3 -0
  441. package/features/accessManagement/roles/getRole/index.js +2 -0
  442. package/features/accessManagement/roles/listRoles/ListRolesGateway.d.ts +11 -0
  443. package/features/accessManagement/roles/listRoles/ListRolesGateway.js +45 -0
  444. package/features/accessManagement/roles/listRoles/ListRolesGateway.js.map +1 -0
  445. package/features/accessManagement/roles/listRoles/ListRolesRepository.d.ts +11 -0
  446. package/features/accessManagement/roles/listRoles/ListRolesRepository.js +22 -0
  447. package/features/accessManagement/roles/listRoles/ListRolesRepository.js.map +1 -0
  448. package/features/accessManagement/roles/listRoles/ListRolesUseCase.d.ts +10 -0
  449. package/features/accessManagement/roles/listRoles/ListRolesUseCase.js +18 -0
  450. package/features/accessManagement/roles/listRoles/ListRolesUseCase.js.map +1 -0
  451. package/features/accessManagement/roles/listRoles/abstractions.d.ts +30 -0
  452. package/features/accessManagement/roles/listRoles/abstractions.js +8 -0
  453. package/features/accessManagement/roles/listRoles/abstractions.js.map +1 -0
  454. package/features/accessManagement/roles/listRoles/feature.d.ts +3 -0
  455. package/features/accessManagement/roles/listRoles/feature.js +23 -0
  456. package/features/accessManagement/roles/listRoles/feature.js.map +1 -0
  457. package/features/accessManagement/roles/listRoles/index.d.ts +3 -0
  458. package/features/accessManagement/roles/listRoles/index.js +2 -0
  459. package/features/accessManagement/roles/updateRole/UpdateRoleGateway.d.ts +12 -0
  460. package/features/accessManagement/roles/updateRole/UpdateRoleGateway.js +52 -0
  461. package/features/accessManagement/roles/updateRole/UpdateRoleGateway.js.map +1 -0
  462. package/features/accessManagement/roles/updateRole/UpdateRoleRepository.d.ts +13 -0
  463. package/features/accessManagement/roles/updateRole/UpdateRoleRepository.js +23 -0
  464. package/features/accessManagement/roles/updateRole/UpdateRoleRepository.js.map +1 -0
  465. package/features/accessManagement/roles/updateRole/UpdateRoleUseCase.d.ts +11 -0
  466. package/features/accessManagement/roles/updateRole/UpdateRoleUseCase.js +18 -0
  467. package/features/accessManagement/roles/updateRole/UpdateRoleUseCase.js.map +1 -0
  468. package/features/accessManagement/roles/updateRole/abstractions.d.ts +28 -0
  469. package/features/accessManagement/roles/updateRole/abstractions.js +7 -0
  470. package/features/accessManagement/roles/updateRole/abstractions.js.map +1 -0
  471. package/features/accessManagement/roles/updateRole/feature.d.ts +3 -0
  472. package/features/accessManagement/roles/updateRole/feature.js +21 -0
  473. package/features/accessManagement/roles/updateRole/feature.js.map +1 -0
  474. package/features/accessManagement/roles/updateRole/index.d.ts +3 -0
  475. package/features/accessManagement/roles/updateRole/index.js +2 -0
  476. package/features/accessManagement/teams/createTeam/CreateTeamGateway.d.ts +12 -0
  477. package/features/accessManagement/teams/createTeam/CreateTeamGateway.js +55 -0
  478. package/features/accessManagement/teams/createTeam/CreateTeamGateway.js.map +1 -0
  479. package/features/accessManagement/teams/createTeam/CreateTeamRepository.d.ts +13 -0
  480. package/features/accessManagement/teams/createTeam/CreateTeamRepository.js +25 -0
  481. package/features/accessManagement/teams/createTeam/CreateTeamRepository.js.map +1 -0
  482. package/features/accessManagement/teams/createTeam/CreateTeamUseCase.d.ts +11 -0
  483. package/features/accessManagement/teams/createTeam/CreateTeamUseCase.js +18 -0
  484. package/features/accessManagement/teams/createTeam/CreateTeamUseCase.js.map +1 -0
  485. package/features/accessManagement/teams/createTeam/abstractions.d.ts +28 -0
  486. package/features/accessManagement/teams/createTeam/abstractions.js +7 -0
  487. package/features/accessManagement/teams/createTeam/abstractions.js.map +1 -0
  488. package/features/accessManagement/teams/createTeam/feature.d.ts +3 -0
  489. package/features/accessManagement/teams/createTeam/feature.js +21 -0
  490. package/features/accessManagement/teams/createTeam/feature.js.map +1 -0
  491. package/features/accessManagement/teams/createTeam/index.d.ts +3 -0
  492. package/features/accessManagement/teams/createTeam/index.js +2 -0
  493. package/features/accessManagement/teams/deleteTeam/DeleteTeamGateway.d.ts +11 -0
  494. package/features/accessManagement/teams/deleteTeam/DeleteTeamGateway.js +40 -0
  495. package/features/accessManagement/teams/deleteTeam/DeleteTeamGateway.js.map +1 -0
  496. package/features/accessManagement/teams/deleteTeam/DeleteTeamRepository.d.ts +12 -0
  497. package/features/accessManagement/teams/deleteTeam/DeleteTeamRepository.js +22 -0
  498. package/features/accessManagement/teams/deleteTeam/DeleteTeamRepository.js.map +1 -0
  499. package/features/accessManagement/teams/deleteTeam/DeleteTeamUseCase.d.ts +10 -0
  500. package/features/accessManagement/teams/deleteTeam/DeleteTeamUseCase.js +18 -0
  501. package/features/accessManagement/teams/deleteTeam/DeleteTeamUseCase.js.map +1 -0
  502. package/features/accessManagement/teams/deleteTeam/abstractions.d.ts +21 -0
  503. package/features/accessManagement/teams/deleteTeam/abstractions.js +7 -0
  504. package/features/accessManagement/teams/deleteTeam/abstractions.js.map +1 -0
  505. package/features/accessManagement/teams/deleteTeam/feature.d.ts +3 -0
  506. package/features/accessManagement/teams/deleteTeam/feature.js +21 -0
  507. package/features/accessManagement/teams/deleteTeam/feature.js.map +1 -0
  508. package/features/accessManagement/teams/deleteTeam/index.d.ts +3 -0
  509. package/features/accessManagement/teams/deleteTeam/index.js +2 -0
  510. package/features/accessManagement/teams/getTeam/GetTeamGateway.d.ts +12 -0
  511. package/features/accessManagement/teams/getTeam/GetTeamGateway.js +54 -0
  512. package/features/accessManagement/teams/getTeam/GetTeamGateway.js.map +1 -0
  513. package/features/accessManagement/teams/getTeam/GetTeamRepository.d.ts +11 -0
  514. package/features/accessManagement/teams/getTeam/GetTeamRepository.js +18 -0
  515. package/features/accessManagement/teams/getTeam/GetTeamRepository.js.map +1 -0
  516. package/features/accessManagement/teams/getTeam/GetTeamUseCase.d.ts +11 -0
  517. package/features/accessManagement/teams/getTeam/GetTeamUseCase.js +18 -0
  518. package/features/accessManagement/teams/getTeam/GetTeamUseCase.js.map +1 -0
  519. package/features/accessManagement/teams/getTeam/abstractions.d.ts +22 -0
  520. package/features/accessManagement/teams/getTeam/abstractions.js +7 -0
  521. package/features/accessManagement/teams/getTeam/abstractions.js.map +1 -0
  522. package/features/accessManagement/teams/getTeam/feature.d.ts +3 -0
  523. package/features/accessManagement/teams/getTeam/feature.js +21 -0
  524. package/features/accessManagement/teams/getTeam/feature.js.map +1 -0
  525. package/features/accessManagement/teams/getTeam/index.d.ts +3 -0
  526. package/features/accessManagement/teams/getTeam/index.js +2 -0
  527. package/features/accessManagement/teams/listTeams/ListTeamsGateway.d.ts +11 -0
  528. package/features/accessManagement/teams/listTeams/ListTeamsGateway.js +49 -0
  529. package/features/accessManagement/teams/listTeams/ListTeamsGateway.js.map +1 -0
  530. package/features/accessManagement/teams/listTeams/ListTeamsRepository.d.ts +11 -0
  531. package/features/accessManagement/teams/listTeams/ListTeamsRepository.js +22 -0
  532. package/features/accessManagement/teams/listTeams/ListTeamsRepository.js.map +1 -0
  533. package/features/accessManagement/teams/listTeams/ListTeamsUseCase.d.ts +10 -0
  534. package/features/accessManagement/teams/listTeams/ListTeamsUseCase.js +18 -0
  535. package/features/accessManagement/teams/listTeams/ListTeamsUseCase.js.map +1 -0
  536. package/features/accessManagement/teams/listTeams/abstractions.d.ts +30 -0
  537. package/features/accessManagement/teams/listTeams/abstractions.js +8 -0
  538. package/features/accessManagement/teams/listTeams/abstractions.js.map +1 -0
  539. package/features/accessManagement/teams/listTeams/feature.d.ts +3 -0
  540. package/features/accessManagement/teams/listTeams/feature.js +23 -0
  541. package/features/accessManagement/teams/listTeams/feature.js.map +1 -0
  542. package/features/accessManagement/teams/listTeams/index.d.ts +3 -0
  543. package/features/accessManagement/teams/listTeams/index.js +2 -0
  544. package/features/accessManagement/teams/updateTeam/UpdateTeamGateway.d.ts +12 -0
  545. package/features/accessManagement/teams/updateTeam/UpdateTeamGateway.js +56 -0
  546. package/features/accessManagement/teams/updateTeam/UpdateTeamGateway.js.map +1 -0
  547. package/features/accessManagement/teams/updateTeam/UpdateTeamRepository.d.ts +13 -0
  548. package/features/accessManagement/teams/updateTeam/UpdateTeamRepository.js +23 -0
  549. package/features/accessManagement/teams/updateTeam/UpdateTeamRepository.js.map +1 -0
  550. package/features/accessManagement/teams/updateTeam/UpdateTeamUseCase.d.ts +11 -0
  551. package/features/accessManagement/teams/updateTeam/UpdateTeamUseCase.js +18 -0
  552. package/features/accessManagement/teams/updateTeam/UpdateTeamUseCase.js.map +1 -0
  553. package/features/accessManagement/teams/updateTeam/abstractions.d.ts +27 -0
  554. package/features/accessManagement/teams/updateTeam/abstractions.js +7 -0
  555. package/features/accessManagement/teams/updateTeam/abstractions.js.map +1 -0
  556. package/features/accessManagement/teams/updateTeam/feature.d.ts +3 -0
  557. package/features/accessManagement/teams/updateTeam/feature.js +21 -0
  558. package/features/accessManagement/teams/updateTeam/feature.js.map +1 -0
  559. package/features/accessManagement/teams/updateTeam/index.d.ts +3 -0
  560. package/features/accessManagement/teams/updateTeam/index.js +2 -0
  561. package/features/accessManagement/types.d.ts +34 -0
  562. package/features/accessManagement/types.js +0 -0
  563. package/features/clipboard/ClipboardService.d.ts +15 -0
  564. package/features/clipboard/ClipboardService.js +51 -0
  565. package/features/clipboard/ClipboardService.js.map +1 -0
  566. package/features/clipboard/abstractions.d.ts +14 -0
  567. package/features/clipboard/abstractions.js +5 -0
  568. package/features/clipboard/abstractions.js.map +1 -0
  569. package/features/clipboard/feature.d.ts +3 -0
  570. package/features/clipboard/feature.js +17 -0
  571. package/features/clipboard/feature.js.map +1 -0
  572. package/features/clipboard/index.d.ts +2 -0
  573. package/features/clipboard/index.js +2 -0
  574. package/features/confirmation/Confirmation.d.ts +11 -0
  575. package/features/confirmation/Confirmation.js +29 -0
  576. package/features/confirmation/Confirmation.js.map +1 -0
  577. package/features/confirmation/ConfirmationBridge.d.ts +1 -0
  578. package/features/confirmation/ConfirmationBridge.js +20 -0
  579. package/features/confirmation/ConfirmationBridge.js.map +1 -0
  580. package/features/confirmation/abstractions.d.ts +15 -0
  581. package/features/confirmation/abstractions.js +6 -0
  582. package/features/confirmation/abstractions.js.map +1 -0
  583. package/features/confirmation/feature.d.ts +1 -0
  584. package/features/confirmation/feature.js +11 -0
  585. package/features/confirmation/feature.js.map +1 -0
  586. package/features/confirmation/index.d.ts +3 -0
  587. package/features/confirmation/index.js +3 -0
  588. package/features/formModel/Field.d.ts +5 -5
  589. package/features/formModel/Field.js +69 -23
  590. package/features/formModel/Field.js.map +1 -1
  591. package/features/formModel/FieldBuilder.d.ts +8 -3
  592. package/features/formModel/FieldBuilder.js +20 -1
  593. package/features/formModel/FieldBuilder.js.map +1 -1
  594. package/features/formModel/FormErrors.d.ts +2 -1
  595. package/features/formModel/FormErrors.js +4 -3
  596. package/features/formModel/FormErrors.js.map +1 -1
  597. package/features/formModel/FormModel.d.ts +8 -2
  598. package/features/formModel/FormModel.js +33 -10
  599. package/features/formModel/FormModel.js.map +1 -1
  600. package/features/formModel/FormModel.test.js +248 -53
  601. package/features/formModel/FormModel.test.js.map +1 -1
  602. package/features/formModel/FormView.js +25 -6
  603. package/features/formModel/FormView.js.map +1 -1
  604. package/features/formModel/LayoutBuilderFactory.d.ts +3 -2
  605. package/features/formModel/LayoutBuilderFactory.js +58 -5
  606. package/features/formModel/LayoutBuilderFactory.js.map +1 -1
  607. package/features/formModel/LayoutMutator.js +6 -0
  608. package/features/formModel/LayoutMutator.js.map +1 -1
  609. package/features/formModel/LayoutResolver.d.ts +1 -0
  610. package/features/formModel/LayoutResolver.js +27 -6
  611. package/features/formModel/LayoutResolver.js.map +1 -1
  612. package/features/formModel/ObjectField.d.ts +4 -2
  613. package/features/formModel/ObjectField.js +43 -3
  614. package/features/formModel/ObjectField.js.map +1 -1
  615. package/features/formModel/abstractions.d.ts +86 -19
  616. package/features/formModel/abstractions.js.map +1 -1
  617. package/features/formModel/demo/FormModelPhase11Presenter.js +5 -5
  618. package/features/formModel/demo/FormModelPhase11Presenter.js.map +1 -1
  619. package/features/formModel/feature.js +4 -1
  620. package/features/formModel/feature.js.map +1 -1
  621. package/features/formModel/fieldTypes/ObjectFieldType.js +2 -1
  622. package/features/formModel/fieldTypes/ObjectFieldType.js.map +1 -1
  623. package/features/formModel/fieldTypes/PasswordFieldType.d.ts +18 -0
  624. package/features/formModel/fieldTypes/PasswordFieldType.js +23 -0
  625. package/features/formModel/fieldTypes/PasswordFieldType.js.map +1 -0
  626. package/features/formModel/fieldTypes/PermissionsFieldType.d.ts +18 -0
  627. package/features/formModel/fieldTypes/PermissionsFieldType.js +27 -0
  628. package/features/formModel/fieldTypes/PermissionsFieldType.js.map +1 -0
  629. package/features/formModel/fieldTypes/RolesMultiSelectFieldType.d.ts +18 -0
  630. package/features/formModel/fieldTypes/RolesMultiSelectFieldType.js +24 -0
  631. package/features/formModel/fieldTypes/RolesMultiSelectFieldType.js.map +1 -0
  632. package/features/formModel/fieldTypes/index.d.ts +3 -0
  633. package/features/formModel/fieldTypes/index.js +3 -0
  634. package/features/formModel/index.d.ts +2 -3
  635. package/features/formModel/index.js +3 -4
  636. package/features/formModel/renderers.d.ts +4 -0
  637. package/features/formModel/renderers.js +4 -0
  638. package/features/iconPicker/listCustomIcons/ListCustomIconsGateway.d.ts +11 -0
  639. package/features/iconPicker/listCustomIcons/ListCustomIconsGateway.js +49 -0
  640. package/features/iconPicker/listCustomIcons/ListCustomIconsGateway.js.map +1 -0
  641. package/features/iconPicker/listCustomIcons/abstractions.d.ts +12 -0
  642. package/features/iconPicker/listCustomIcons/abstractions.js +5 -0
  643. package/features/iconPicker/listCustomIcons/abstractions.js.map +1 -0
  644. package/features/iconPicker/listCustomIcons/feature.d.ts +1 -0
  645. package/features/iconPicker/listCustomIcons/feature.js +11 -0
  646. package/features/iconPicker/listCustomIcons/feature.js.map +1 -0
  647. package/features/iconPicker/listCustomIcons/index.d.ts +3 -0
  648. package/features/iconPicker/listCustomIcons/index.js +2 -0
  649. package/features/listCache/ListCache.d.ts +4 -1
  650. package/features/listCache/ListCache.js +13 -3
  651. package/features/listCache/ListCache.js.map +1 -1
  652. package/features/notifications/Notifications.d.ts +16 -0
  653. package/features/notifications/Notifications.js +39 -0
  654. package/features/notifications/Notifications.js.map +1 -0
  655. package/features/notifications/NotificationsPresenter.d.ts +11 -0
  656. package/features/notifications/NotificationsPresenter.js +27 -0
  657. package/features/notifications/NotificationsPresenter.js.map +1 -0
  658. package/features/notifications/NotificationsRenderer.d.ts +7 -0
  659. package/features/notifications/NotificationsRenderer.js +38 -0
  660. package/features/notifications/NotificationsRenderer.js.map +1 -0
  661. package/features/notifications/abstractions.d.ts +38 -0
  662. package/features/notifications/abstractions.js +6 -0
  663. package/features/notifications/abstractions.js.map +1 -0
  664. package/features/notifications/feature.d.ts +4 -0
  665. package/features/notifications/feature.js +20 -0
  666. package/features/notifications/feature.js.map +1 -0
  667. package/features/notifications/index.d.ts +3 -0
  668. package/features/notifications/index.js +3 -0
  669. package/features/webinySdk/WebinySdk.d.ts +2 -1
  670. package/features/webinySdk/WebinySdk.js.map +1 -1
  671. package/hooks/index.d.ts +1 -0
  672. package/hooks/index.js +1 -0
  673. package/hooks/useNamedConfirmationDialog.d.ts +9 -0
  674. package/hooks/useNamedConfirmationDialog.js +20 -0
  675. package/hooks/useNamedConfirmationDialog.js.map +1 -0
  676. package/index.d.ts +34 -1
  677. package/index.js +39 -8
  678. package/modules/AccessManagementExtension.d.ts +2 -0
  679. package/modules/AccessManagementExtension.js +151 -0
  680. package/modules/AccessManagementExtension.js.map +1 -0
  681. package/package.json +29 -37
  682. package/permissions/createPermissions.js.map +1 -1
  683. package/presentation/accessManagement/SecurityPermissions.d.ts +2 -0
  684. package/presentation/accessManagement/SecurityPermissions.js +54 -0
  685. package/presentation/accessManagement/SecurityPermissions.js.map +1 -0
  686. package/presentation/accessManagement/apiKeys/ApiKeysDataSource.d.ts +13 -0
  687. package/presentation/accessManagement/apiKeys/ApiKeysDataSource.js +23 -0
  688. package/presentation/accessManagement/apiKeys/ApiKeysDataSource.js.map +1 -0
  689. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.d.ts +38 -0
  690. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js +193 -0
  691. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js.map +1 -0
  692. package/presentation/accessManagement/apiKeys/abstractions.d.ts +25 -0
  693. package/presentation/accessManagement/apiKeys/abstractions.js +5 -0
  694. package/presentation/accessManagement/apiKeys/abstractions.js.map +1 -0
  695. package/presentation/accessManagement/apiKeys/components/ApiKeysView.d.ts +4 -0
  696. package/presentation/accessManagement/apiKeys/components/ApiKeysView.js +234 -0
  697. package/presentation/accessManagement/apiKeys/components/ApiKeysView.js.map +1 -0
  698. package/presentation/accessManagement/apiKeys/feature.d.ts +3 -0
  699. package/presentation/accessManagement/apiKeys/feature.js +17 -0
  700. package/presentation/accessManagement/apiKeys/feature.js.map +1 -0
  701. package/presentation/accessManagement/roles/RolesDataSource.d.ts +13 -0
  702. package/presentation/accessManagement/roles/RolesDataSource.js +23 -0
  703. package/presentation/accessManagement/roles/RolesDataSource.js.map +1 -0
  704. package/presentation/accessManagement/roles/RolesPresenter.d.ts +38 -0
  705. package/presentation/accessManagement/roles/RolesPresenter.js +201 -0
  706. package/presentation/accessManagement/roles/RolesPresenter.js.map +1 -0
  707. package/presentation/accessManagement/roles/abstractions.d.ts +27 -0
  708. package/presentation/accessManagement/roles/abstractions.js +5 -0
  709. package/presentation/accessManagement/roles/abstractions.js.map +1 -0
  710. package/presentation/accessManagement/roles/components/RolesView.d.ts +4 -0
  711. package/presentation/accessManagement/roles/components/RolesView.js +232 -0
  712. package/presentation/accessManagement/roles/components/RolesView.js.map +1 -0
  713. package/presentation/accessManagement/roles/feature.d.ts +3 -0
  714. package/presentation/accessManagement/roles/feature.js +17 -0
  715. package/presentation/accessManagement/roles/feature.js.map +1 -0
  716. package/presentation/accessManagement/roles/rolesAutocomplete/RolesAutocompletePresenter.d.ts +15 -0
  717. package/presentation/accessManagement/roles/rolesAutocomplete/RolesAutocompletePresenter.js +42 -0
  718. package/presentation/accessManagement/roles/rolesAutocomplete/RolesAutocompletePresenter.js.map +1 -0
  719. package/presentation/accessManagement/roles/rolesAutocomplete/abstractions.d.ts +18 -0
  720. package/presentation/accessManagement/roles/rolesAutocomplete/abstractions.js +5 -0
  721. package/presentation/accessManagement/roles/rolesAutocomplete/abstractions.js.map +1 -0
  722. package/presentation/accessManagement/roles/rolesAutocomplete/feature.d.ts +3 -0
  723. package/presentation/accessManagement/roles/rolesAutocomplete/feature.js +17 -0
  724. package/presentation/accessManagement/roles/rolesAutocomplete/feature.js.map +1 -0
  725. package/presentation/accessManagement/roles/rolesAutocomplete/index.d.ts +3 -0
  726. package/presentation/accessManagement/roles/rolesAutocomplete/index.js +2 -0
  727. package/presentation/accessManagement/routes.d.ts +21 -0
  728. package/presentation/accessManagement/routes.js +36 -0
  729. package/presentation/accessManagement/routes.js.map +1 -0
  730. package/presentation/accessManagement/teams/TeamsDataSource.d.ts +13 -0
  731. package/presentation/accessManagement/teams/TeamsDataSource.js +23 -0
  732. package/presentation/accessManagement/teams/TeamsDataSource.js.map +1 -0
  733. package/presentation/accessManagement/teams/TeamsPresenter.d.ts +39 -0
  734. package/presentation/accessManagement/teams/TeamsPresenter.js +200 -0
  735. package/presentation/accessManagement/teams/TeamsPresenter.js.map +1 -0
  736. package/presentation/accessManagement/teams/abstractions.d.ts +26 -0
  737. package/presentation/accessManagement/teams/abstractions.js +5 -0
  738. package/presentation/accessManagement/teams/abstractions.js.map +1 -0
  739. package/presentation/accessManagement/teams/components/TeamsView.d.ts +4 -0
  740. package/presentation/accessManagement/teams/components/TeamsView.js +214 -0
  741. package/presentation/accessManagement/teams/components/TeamsView.js.map +1 -0
  742. package/presentation/accessManagement/teams/feature.d.ts +3 -0
  743. package/presentation/accessManagement/teams/feature.js +17 -0
  744. package/presentation/accessManagement/teams/feature.js.map +1 -0
  745. package/presentation/accessManagement/teams/teamsAutocomplete/TeamsAutocompletePresenter.d.ts +15 -0
  746. package/presentation/accessManagement/teams/teamsAutocomplete/TeamsAutocompletePresenter.js +42 -0
  747. package/presentation/accessManagement/teams/teamsAutocomplete/TeamsAutocompletePresenter.js.map +1 -0
  748. package/presentation/accessManagement/teams/teamsAutocomplete/abstractions.d.ts +18 -0
  749. package/presentation/accessManagement/teams/teamsAutocomplete/abstractions.js +5 -0
  750. package/presentation/accessManagement/teams/teamsAutocomplete/abstractions.js.map +1 -0
  751. package/presentation/accessManagement/teams/teamsAutocomplete/feature.d.ts +3 -0
  752. package/presentation/accessManagement/teams/teamsAutocomplete/feature.js +17 -0
  753. package/presentation/accessManagement/teams/teamsAutocomplete/feature.js.map +1 -0
  754. package/presentation/accessManagement/teams/teamsAutocomplete/index.d.ts +3 -0
  755. package/presentation/accessManagement/teams/teamsAutocomplete/index.js +2 -0
  756. package/presentation/iconPicker/customIcons/CustomIconsPresenter.d.ts +16 -0
  757. package/presentation/iconPicker/customIcons/CustomIconsPresenter.js +40 -0
  758. package/presentation/iconPicker/customIcons/CustomIconsPresenter.js.map +1 -0
  759. package/presentation/iconPicker/customIcons/abstractions.d.ts +14 -0
  760. package/presentation/iconPicker/customIcons/abstractions.js +5 -0
  761. package/presentation/iconPicker/customIcons/abstractions.js.map +1 -0
  762. package/presentation/iconPicker/customIcons/feature.d.ts +3 -0
  763. package/presentation/iconPicker/customIcons/feature.js +17 -0
  764. package/presentation/iconPicker/customIcons/feature.js.map +1 -0
  765. package/presentation/iconPicker/customIcons/index.d.ts +3 -0
  766. package/presentation/iconPicker/customIcons/index.js +2 -0
  767. package/presentation/installation/components/SystemInstaller/SystemInstaller.js +3 -1
  768. package/presentation/installation/components/SystemInstaller/SystemInstaller.js.map +1 -1
  769. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.d.ts +1 -1
  770. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js +1 -1
  771. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js.map +1 -1
  772. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js +5 -4
  773. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js.map +1 -1
  774. package/presentation/installation/components/SystemInstaller/steps/FinishSetup.js +1 -1
  775. package/presentation/installation/components/SystemInstaller/steps/FinishSetup.js.map +1 -1
  776. package/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js +7 -5
  777. package/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js.map +1 -1
  778. package/presentation/listPresenter/FolderAwareDataSource.d.ts +50 -0
  779. package/presentation/listPresenter/FolderAwareDataSource.js +132 -0
  780. package/presentation/listPresenter/FolderAwareDataSource.js.map +1 -0
  781. package/presentation/listPresenter/ListPresenter.d.ts +4 -0
  782. package/presentation/listPresenter/ListPresenter.js +30 -4
  783. package/presentation/listPresenter/ListPresenter.js.map +1 -1
  784. package/presentation/listPresenter/QueryMatcher.d.ts +56 -0
  785. package/presentation/listPresenter/QueryMatcher.js +59 -0
  786. package/presentation/listPresenter/QueryMatcher.js.map +1 -0
  787. package/presentation/listPresenter/SimpleDataSource.d.ts +15 -0
  788. package/presentation/listPresenter/SimpleDataSource.js +70 -0
  789. package/presentation/listPresenter/SimpleDataSource.js.map +1 -0
  790. package/presentation/listPresenter/abstractions.d.ts +9 -0
  791. package/presentation/listPresenter/abstractions.js.map +1 -1
  792. package/presentation/listPresenter/index.d.ts +5 -0
  793. package/presentation/listPresenter/index.js +3 -0
  794. package/presentation/security/components/HasPermission.d.ts +1 -1
  795. package/presentation/tenancy/TenancyProvider.js +0 -4
  796. package/presentation/tenancy/TenancyProvider.js.map +1 -1
  797. package/presentation/trashBin/TrashBinDataSource.d.ts +16 -0
  798. package/presentation/trashBin/TrashBinDataSource.js +82 -0
  799. package/presentation/trashBin/TrashBinDataSource.js.map +1 -0
  800. package/presentation/trashBin/TrashBinPresenter.d.ts +20 -0
  801. package/presentation/trashBin/TrashBinPresenter.js +114 -0
  802. package/presentation/trashBin/TrashBinPresenter.js.map +1 -0
  803. package/presentation/trashBin/abstractions.d.ts +105 -0
  804. package/presentation/trashBin/abstractions.js +9 -0
  805. package/presentation/trashBin/abstractions.js.map +1 -0
  806. package/presentation/trashBin/components/Actions/DeleteItemAction.d.ts +2 -0
  807. package/presentation/trashBin/components/Actions/DeleteItemAction.js +20 -0
  808. package/presentation/trashBin/components/Actions/DeleteItemAction.js.map +1 -0
  809. package/presentation/trashBin/components/Actions/RestoreItemAction.d.ts +2 -0
  810. package/presentation/trashBin/components/Actions/RestoreItemAction.js +19 -0
  811. package/presentation/trashBin/components/Actions/RestoreItemAction.js.map +1 -0
  812. package/presentation/trashBin/components/Actions/index.d.ts +2 -0
  813. package/presentation/trashBin/components/Actions/index.js +2 -0
  814. package/presentation/trashBin/components/BulkActions/DeleteItems.d.ts +4 -0
  815. package/presentation/trashBin/components/BulkActions/DeleteItems.js +72 -0
  816. package/presentation/trashBin/components/BulkActions/DeleteItems.js.map +1 -0
  817. package/presentation/trashBin/components/BulkActions/RestoreItems.d.ts +4 -0
  818. package/presentation/trashBin/components/BulkActions/RestoreItems.js +81 -0
  819. package/presentation/trashBin/components/BulkActions/RestoreItems.js.map +1 -0
  820. package/presentation/trashBin/components/BulkActions/RestoreItemsReportMessage.d.ts +5 -0
  821. package/presentation/trashBin/components/BulkActions/RestoreItemsReportMessage.js +12 -0
  822. package/presentation/trashBin/components/BulkActions/RestoreItemsReportMessage.js.map +1 -0
  823. package/presentation/trashBin/components/BulkActions/index.d.ts +2 -0
  824. package/presentation/trashBin/components/BulkActions/index.js +2 -0
  825. package/presentation/trashBin/components/Cells/CellActions.d.ts +2 -0
  826. package/presentation/trashBin/components/Cells/CellActions.js +18 -0
  827. package/presentation/trashBin/components/Cells/CellActions.js.map +1 -0
  828. package/presentation/trashBin/components/Cells/CellCreatedBy.d.ts +2 -0
  829. package/presentation/trashBin/components/Cells/CellCreatedBy.js +11 -0
  830. package/presentation/trashBin/components/Cells/CellCreatedBy.js.map +1 -0
  831. package/presentation/trashBin/components/Cells/CellDeletedBy.d.ts +2 -0
  832. package/presentation/trashBin/components/Cells/CellDeletedBy.js +11 -0
  833. package/presentation/trashBin/components/Cells/CellDeletedBy.js.map +1 -0
  834. package/presentation/trashBin/components/Cells/CellDeletedOn.d.ts +2 -0
  835. package/presentation/trashBin/components/Cells/CellDeletedOn.js +14 -0
  836. package/presentation/trashBin/components/Cells/CellDeletedOn.js.map +1 -0
  837. package/presentation/trashBin/components/Cells/CellTitle.d.ts +2 -0
  838. package/presentation/trashBin/components/Cells/CellTitle.js +21 -0
  839. package/presentation/trashBin/components/Cells/CellTitle.js.map +1 -0
  840. package/presentation/trashBin/components/Cells/index.d.ts +5 -0
  841. package/presentation/trashBin/components/Cells/index.js +5 -0
  842. package/presentation/trashBin/components/TrashBinConfigs.d.ts +2 -0
  843. package/presentation/trashBin/components/TrashBinConfigs.js +55 -0
  844. package/presentation/trashBin/components/TrashBinConfigs.js.map +1 -0
  845. package/presentation/trashBin/components/TrashBinOverlay.d.ts +12 -0
  846. package/presentation/trashBin/components/TrashBinOverlay.js +139 -0
  847. package/presentation/trashBin/components/TrashBinOverlay.js.map +1 -0
  848. package/presentation/trashBin/components/TrashBinTable.d.ts +2 -0
  849. package/presentation/trashBin/components/TrashBinTable.js +48 -0
  850. package/presentation/trashBin/components/TrashBinTable.js.map +1 -0
  851. package/presentation/trashBin/configs/Browser/BulkAction.d.ts +34 -0
  852. package/presentation/trashBin/configs/Browser/BulkAction.js +59 -0
  853. package/presentation/trashBin/configs/Browser/BulkAction.js.map +1 -0
  854. package/presentation/trashBin/configs/Browser/EntryAction.d.ts +18 -0
  855. package/presentation/trashBin/configs/Browser/EntryAction.js +36 -0
  856. package/presentation/trashBin/configs/Browser/EntryAction.js.map +1 -0
  857. package/presentation/trashBin/configs/Browser/Table/Column.d.ts +16 -0
  858. package/presentation/trashBin/configs/Browser/Table/Column.js +9 -0
  859. package/presentation/trashBin/configs/Browser/Table/Column.js.map +1 -0
  860. package/presentation/trashBin/configs/Browser/Table/Sorting.d.ts +5 -0
  861. package/presentation/trashBin/configs/Browser/Table/Sorting.js +6 -0
  862. package/presentation/trashBin/configs/Browser/Table/Sorting.js.map +1 -0
  863. package/presentation/trashBin/configs/Browser/Table/index.d.ts +18 -0
  864. package/presentation/trashBin/configs/Browser/Table/index.js +9 -0
  865. package/presentation/trashBin/configs/Browser/Table/index.js.map +1 -0
  866. package/presentation/trashBin/configs/Browser/index.d.ts +40 -0
  867. package/presentation/trashBin/configs/Browser/index.js +11 -0
  868. package/presentation/trashBin/configs/Browser/index.js.map +1 -0
  869. package/presentation/trashBin/configs/TrashBinListConfig.d.ts +46 -0
  870. package/presentation/trashBin/configs/TrashBinListConfig.js +43 -0
  871. package/presentation/trashBin/configs/TrashBinListConfig.js.map +1 -0
  872. package/presentation/trashBin/configs/index.d.ts +1 -0
  873. package/presentation/trashBin/configs/index.js +1 -0
  874. package/presentation/trashBin/feature.d.ts +3 -0
  875. package/presentation/trashBin/feature.js +17 -0
  876. package/presentation/trashBin/feature.js.map +1 -0
  877. package/presentation/trashBin/hooks/index.d.ts +4 -0
  878. package/presentation/trashBin/hooks/index.js +4 -0
  879. package/presentation/trashBin/hooks/useDeleteTrashBinItem.d.ts +8 -0
  880. package/presentation/trashBin/hooks/useDeleteTrashBinItem.js +33 -0
  881. package/presentation/trashBin/hooks/useDeleteTrashBinItem.js.map +1 -0
  882. package/presentation/trashBin/hooks/useRestoreTrashBinItem.d.ts +8 -0
  883. package/presentation/trashBin/hooks/useRestoreTrashBinItem.js +35 -0
  884. package/presentation/trashBin/hooks/useRestoreTrashBinItem.js.map +1 -0
  885. package/presentation/trashBin/hooks/useTrashBinItem.d.ts +11 -0
  886. package/presentation/trashBin/hooks/useTrashBinItem.js +7 -0
  887. package/presentation/trashBin/hooks/useTrashBinItem.js.map +1 -0
  888. package/presentation/trashBin/hooks/useTrashBinPresenter.d.ts +13 -0
  889. package/presentation/trashBin/hooks/useTrashBinPresenter.js +7 -0
  890. package/presentation/trashBin/hooks/useTrashBinPresenter.js.map +1 -0
  891. package/presentation/trashBin/index.d.ts +6 -0
  892. package/presentation/trashBin/index.js +6 -0
  893. package/base/plugins/AddGraphQLQuerySelection.d.ts +0 -8
  894. package/base/plugins/AddGraphQLQuerySelection.js +0 -19
  895. package/base/plugins/AddGraphQLQuerySelection.js.map +0 -1
  896. package/base/providers/ApolloProvider.d.ts +0 -13
  897. package/base/providers/ApolloProvider.js +0 -10
  898. package/base/providers/ApolloProvider.js.map +0 -1
  899. package/components/IconPicker/plugins/graphql.d.ts +0 -20
  900. package/components/IconPicker/plugins/graphql.js +0 -22
  901. package/components/IconPicker/plugins/graphql.js.map +0 -1
  902. package/components/RoleAutocomplete/graphql.d.ts +0 -1
  903. package/components/RoleAutocomplete/graphql.js +0 -19
  904. package/components/RoleAutocomplete/graphql.js.map +0 -1
  905. package/components/RoleAutocomplete/index.d.ts +0 -7
  906. package/components/RoleAutocomplete/index.js +0 -26
  907. package/components/RoleAutocomplete/index.js.map +0 -1
  908. package/components/RolesMultiAutocomplete/graphql.d.ts +0 -1
  909. package/components/RolesMultiAutocomplete/graphql.js +0 -24
  910. package/components/RolesMultiAutocomplete/graphql.js.map +0 -1
  911. package/components/TeamAutocomplete/graphql.d.ts +0 -1
  912. package/components/TeamAutocomplete/graphql.js +0 -19
  913. package/components/TeamAutocomplete/graphql.js.map +0 -1
  914. package/components/TeamsMultiAutocomplete/graphql.d.ts +0 -1
  915. package/components/TeamsMultiAutocomplete/graphql.js +0 -24
  916. package/components/TeamsMultiAutocomplete/graphql.js.map +0 -1
  917. package/config/AdminConfig/LexicalTheme/AllowCustomColors.d.ts +0 -5
  918. package/config/AdminConfig/LexicalTheme/AllowCustomColors.js +0 -18
  919. package/config/AdminConfig/LexicalTheme/AllowCustomColors.js.map +0 -1
  920. package/features/apolloClient/abstraction.d.ts +0 -5
  921. package/features/apolloClient/abstraction.js +0 -5
  922. package/features/apolloClient/abstraction.js.map +0 -1
  923. package/features/apolloClient/feature.d.ts +0 -2
  924. package/features/apolloClient/feature.js +0 -31
  925. package/features/apolloClient/feature.js.map +0 -1
  926. package/plugins/MenuPlugin.d.ts +0 -37
  927. package/plugins/MenuPlugin.js +0 -20
  928. package/plugins/MenuPlugin.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import react, { createContext, useContext, useMemo } from "react";
2
2
  import { observer } from "mobx-react-lite";
3
- import { Grid, IconButton, Tabs, Tooltip, useToast } from "@webiny/admin-ui";
3
+ import { Alert, Grid, IconButton, Separator, Tabs, Text, Tooltip, useToast } from "@webiny/admin-ui";
4
4
  import { ReactComponent } from "@webiny/icons/content_copy.svg";
5
5
  import { ReactComponent as content_paste_svg_ReactComponent } from "@webiny/icons/content_paste.svg";
6
6
  import { DevToolsSection } from "@webiny/react-properties";
@@ -9,7 +9,7 @@ import { DeveloperMode } from "../../components/DeveloperMode/DeveloperMode.js";
9
9
  import { useFieldRenderers } from "./useFieldRenderers.js";
10
10
  import { useLayoutRenderers } from "./useLayoutRenderers.js";
11
11
  function renderTabIcon(icon) {
12
- if (!icon) return;
12
+ if (!icon || "string" != typeof icon.name) return;
13
13
  return /*#__PURE__*/ react.createElement(FontAwesomeIcon, {
14
14
  icon: icon.name.split("/")
15
15
  });
@@ -55,7 +55,13 @@ const LayoutNodeRenderer = observer(({ node })=>{
55
55
  node: node
56
56
  });
57
57
  case "separator":
58
- return /*#__PURE__*/ react.createElement(FormView_SeparatorNodeRenderer, null);
58
+ return /*#__PURE__*/ react.createElement(FormView_SeparatorNodeRenderer, {
59
+ node: node
60
+ });
61
+ case "alert":
62
+ return /*#__PURE__*/ react.createElement(FormView_AlertNodeRenderer, {
63
+ node: node
64
+ });
59
65
  case "tabs":
60
66
  return /*#__PURE__*/ react.createElement(TabsNodeRenderer, {
61
67
  node: node
@@ -91,11 +97,24 @@ const FieldRenderer = observer(({ field, renderers })=>{
91
97
  field: field
92
98
  });
93
99
  });
94
- const FormView_SeparatorNodeRenderer = observer(function() {
95
- return /*#__PURE__*/ react.createElement("hr", {
96
- className: "border-neutral-dimmed my-2"
100
+ const FormView_SeparatorNodeRenderer = observer(function({ node }) {
101
+ if (node.title) return /*#__PURE__*/ react.createElement("div", null, /*#__PURE__*/ react.createElement(Separator, {
102
+ variant: "accent",
103
+ labelPosition: "start"
104
+ }, node.title), node.description ? /*#__PURE__*/ react.createElement(Text, {
105
+ size: "sm",
106
+ className: "mt-xs"
107
+ }, node.description) : null);
108
+ return /*#__PURE__*/ react.createElement(Separator, {
109
+ variant: "dimmed"
97
110
  });
98
111
  });
112
+ const FormView_AlertNodeRenderer = observer(function({ node }) {
113
+ if (!node.message) return null;
114
+ return /*#__PURE__*/ react.createElement(Alert, {
115
+ type: node.alertType
116
+ }, node.message);
117
+ });
99
118
  const TabsNodeRenderer = observer(({ node })=>{
100
119
  const { layoutRenderers } = useFormViewRenderers();
101
120
  if (node.renderer) {
@@ -1 +1 @@
1
- {"version":3,"file":"features/formModel/FormView.js","sources":["../../../src/features/formModel/FormView.tsx"],"sourcesContent":["import React, { createContext, useContext, useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { Grid, IconButton, Tabs, Tooltip, useToast } from \"@webiny/admin-ui\";\nimport { ReactComponent as CopyIcon } from \"@webiny/icons/content_copy.svg\";\nimport { ReactComponent as PasteIcon } from \"@webiny/icons/content_paste.svg\";\nimport { DevToolsSection } from \"@webiny/react-properties\";\nimport type {\n IFormVM,\n LayoutNodeVM,\n IRowNodeVM,\n IFieldVM,\n ITabsNodeVM,\n IElementNodeVM\n} from \"./abstractions.js\";\nimport type { Icon } from \"~/components/IconPicker/types.js\";\nimport type { IconProp } from \"@fortawesome/fontawesome-svg-core\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { DeveloperMode } from \"~/components/DeveloperMode/DeveloperMode.js\";\nimport { useFieldRenderers } from \"~/features/formModel/useFieldRenderers.js\";\nimport { useLayoutRenderers } from \"~/features/formModel/useLayoutRenderers.js\";\n\nexport function renderTabIcon(icon: Icon | undefined): React.ReactElement | undefined {\n if (!icon) {\n return undefined;\n }\n return <FontAwesomeIcon icon={icon.name.split(\"/\") as IconProp} />;\n}\n\n/**\n * A field renderer component receives a FieldVM and renders the appropriate UI.\n */\nexport type FieldRendererComponent = React.ComponentType<{ field: IFieldVM }>;\n\n/**\n * Map of renderer keys to React components for fields.\n * Lookup order: `{type}:{renderer}` → `{type}`.\n */\nexport type FieldRenderers = Record<string, FieldRendererComponent>;\n\n/**\n * Map of renderer keys to React components for layout nodes.\n */\nexport type LayoutRenderers = Record<string, React.ComponentType<any>>;\n\ninterface FormViewRenderers {\n fieldRenderers: FieldRenderers;\n layoutRenderers: LayoutRenderers;\n}\n\nconst FormViewRenderersContext = createContext<FormViewRenderers | null>(null);\n\nconst useFormViewRenderers = (): FormViewRenderers => {\n const ctx = useContext(FormViewRenderersContext);\n if (!ctx) {\n throw new Error(\"useFormViewRenderers must be used within a FormView.\");\n }\n return ctx;\n};\n\nexport { useFormViewRenderers };\n\ninterface FormViewProps {\n name: string;\n form: IFormVM;\n renderers?: FieldRenderers;\n layoutRenderers?: LayoutRenderers;\n}\n\n/**\n * Generic form view that walks layout nodes and renders fields.\n * This component is stateless — it reads from the FormVM and delegates to renderers.\n */\nexport const FormView = observer(({ name, form, renderers, layoutRenderers }: FormViewProps) => {\n const defaultFieldRenderers = useFieldRenderers();\n const defaultLayoutRenderers = useLayoutRenderers();\n\n const value = useMemo(\n () => ({\n fieldRenderers: renderers ?? defaultFieldRenderers,\n layoutRenderers: layoutRenderers ?? defaultLayoutRenderers\n }),\n [renderers, defaultFieldRenderers, layoutRenderers, defaultLayoutRenderers]\n );\n\n return (\n <FormViewRenderersContext.Provider value={value}>\n <DevToolsSection name={name} group=\"Forms\" data={form.getData()} views={\"raw\"} />\n <div className=\"w-full relative flex flex-col gap-4\">\n <DevModeTools form={form} />\n {form.layout.map((node, index) => (\n <LayoutNodeRenderer key={index} node={node} />\n ))}\n </div>\n </FormViewRenderersContext.Provider>\n );\n});\n\nexport const LayoutNodeRenderer = observer(({ node }: { node: LayoutNodeVM }) => {\n switch (node.type) {\n case \"row\":\n return <RowNodeRenderer node={node} />;\n case \"separator\":\n return <SeparatorNodeRenderer />;\n case \"tabs\":\n return <TabsNodeRenderer node={node} />;\n case \"element\":\n return <ElementNodeRenderer node={node} />;\n default:\n return null;\n }\n});\n\nconst RowNodeRenderer = observer(({ node }: { node: IRowNodeVM }) => {\n const { fieldRenderers } = useFormViewRenderers();\n\n return (\n <Grid>\n {node.fields.map(field => {\n const span = Math.floor(12 / node.fields.length) as React.ComponentProps<\n typeof Grid.Column\n >[\"span\"];\n\n return (\n <Grid.Column key={field.name} span={span}>\n <FieldRenderer field={field} renderers={fieldRenderers} />\n </Grid.Column>\n );\n })}\n </Grid>\n );\n});\n\ninterface FieldRendererProps {\n field: IFieldVM;\n renderers: FieldRenderers;\n}\n\nconst FieldRenderer = observer(({ field, renderers }: FieldRendererProps) => {\n const Renderer = field.renderer ? renderers[field.renderer] : undefined;\n\n if (!Renderer) {\n if (process.env.NODE_ENV === \"development\") {\n console.warn(\n `[FormView] No renderer found for field \"${field.name}\" (renderer: \"${field.renderer || \"none\"}\").`\n );\n }\n return null;\n }\n\n return <Renderer field={field} />;\n});\n\nconst SeparatorNodeRenderer = observer(function SeparatorNodeRenderer() {\n return <hr className=\"border-neutral-dimmed my-2\" />;\n});\n\nexport interface TabsNodeRendererProps {\n node: ITabsNodeVM;\n}\n\nconst TabsNodeRenderer = observer(({ node }: TabsNodeRendererProps) => {\n const { layoutRenderers } = useFormViewRenderers();\n\n if (node.renderer) {\n const CustomRenderer = layoutRenderers[node.renderer];\n if (CustomRenderer) {\n return <CustomRenderer node={node} />;\n }\n }\n\n return (\n <Tabs\n value={node.activeTabId}\n onValueChange={id => node.setActiveTab(id)}\n tabs={node.tabs.map(tab => (\n <Tabs.Tab\n key={tab.id}\n value={tab.id}\n icon={renderTabIcon(tab.icon)}\n trigger={\n <>\n {tab.label}\n {tab.hasErrors && (\n <span className=\"ml-1 text-destructive-default text-xs\">*</span>\n )}\n </>\n }\n disabled={tab.disabled}\n content={\n <div className={\"flex flex-col gap-4 mt-md\"}>\n {tab.layout.map((childNode, index) => (\n <LayoutNodeRenderer key={index} node={childNode} />\n ))}\n </div>\n }\n />\n ))}\n />\n );\n});\n\nconst ElementNodeRenderer = observer(({ node }: { node: IElementNodeVM }) => {\n const { fieldRenderers } = useFormViewRenderers();\n const Renderer = fieldRenderers[`element:${node.renderer}`];\n\n if (!Renderer) {\n if (process.env.NODE_ENV === \"development\") {\n console.warn(`[FormView] No renderer found for element \"${node.renderer}\".`);\n }\n return null;\n }\n\n return <Renderer field={{ ...node.props } as any} />;\n});\n\ninterface DevModelToolsProps {\n form: IFormVM;\n}\n\nconst DevModeTools = ({ form }: DevModelToolsProps) => {\n const toast = useToast();\n\n const handleCopy = () => {\n const data = form.getData();\n navigator.clipboard.writeText(JSON.stringify(data, null, 2));\n toast.showSuccessToast({ title: \"Form data copied to clipboard.\" });\n };\n\n const handlePaste = async () => {\n try {\n const text = await navigator.clipboard.readText();\n const data = JSON.parse(text);\n form.setData(data);\n toast.showSuccessToast({ title: \"Form data imported from clipboard.\" });\n } catch {\n toast.showWarningToast({\n title: \"Failed to import. Make sure clipboard contains valid JSON.\"\n });\n }\n };\n return (\n <DeveloperMode>\n <div className=\"absolute top-0 right-0 w-[200px] h-[80px] z-10 group/devtools\">\n <div className=\"absolute top-0 right-0 flex gap-xs opacity-0 group-hover/devtools:opacity-100 transition-opacity\">\n <Tooltip\n content=\"Copy form data to clipboard\"\n trigger={\n <IconButton\n variant={\"secondary\"}\n icon={<CopyIcon />}\n onClick={handleCopy}\n size=\"sm\"\n />\n }\n />\n <Tooltip\n content=\"Paste form data from clipboard\"\n trigger={\n <IconButton\n variant={\"secondary\"}\n icon={<PasteIcon />}\n onClick={handlePaste}\n size=\"sm\"\n />\n }\n />\n </div>\n </div>\n </DeveloperMode>\n );\n};\n"],"names":["renderTabIcon","icon","FontAwesomeIcon","FormViewRenderersContext","createContext","useFormViewRenderers","ctx","useContext","Error","FormView","observer","name","form","renderers","layoutRenderers","defaultFieldRenderers","useFieldRenderers","defaultLayoutRenderers","useLayoutRenderers","value","useMemo","DevToolsSection","DevModeTools","node","index","LayoutNodeRenderer","RowNodeRenderer","SeparatorNodeRenderer","TabsNodeRenderer","ElementNodeRenderer","fieldRenderers","Grid","field","span","Math","FieldRenderer","Renderer","undefined","process","console","CustomRenderer","Tabs","id","tab","childNode","toast","useToast","handleCopy","data","navigator","JSON","handlePaste","text","DeveloperMode","Tooltip","IconButton","CopyIcon","PasteIcon"],"mappings":";;;;;;;;;;AAqBO,SAASA,cAAcC,IAAsB;IAChD,IAAI,CAACA,MACD;IAEJ,OAAO,WAAP,GAAO,oBAACC,iBAAeA;QAAC,MAAMD,KAAK,IAAI,CAAC,KAAK,CAAC;;AAClD;AAuBA,MAAME,2BAA2B,WAAHA,GAAGC,cAAwC;AAEzE,MAAMC,uBAAuB;IACzB,MAAMC,MAAMC,WAAWJ;IACvB,IAAI,CAACG,KACD,MAAM,IAAIE,MAAM;IAEpB,OAAOF;AACX;AAeO,MAAMG,WAAWC,SAAS,CAAC,EAAEC,IAAI,EAAEC,IAAI,EAAEC,SAAS,EAAEC,eAAe,EAAiB;IACvF,MAAMC,wBAAwBC;IAC9B,MAAMC,yBAAyBC;IAE/B,MAAMC,QAAQC,QACV,IAAO;YACH,gBAAgBP,aAAaE;YAC7B,iBAAiBD,mBAAmBG;QACxC,IACA;QAACJ;QAAWE;QAAuBD;QAAiBG;KAAuB;IAG/E,OAAO,WAAP,GACI,oBAACd,yBAAyB,QAAQ;QAAC,OAAOgB;qBACtC,oBAACE,iBAAeA;QAAC,MAAMV;QAAM,OAAM;QAAQ,MAAMC,KAAK,OAAO;QAAI,OAAO;sBACxE,oBAAC;QAAI,WAAU;qBACX,oBAACU,cAAYA;QAAC,MAAMV;QACnBA,KAAK,MAAM,CAAC,GAAG,CAAC,CAACW,MAAMC,QAAAA,WAAAA,GACpB,oBAACC,oBAAkBA;YAAC,KAAKD;YAAO,MAAMD;;AAK1D;AAEO,MAAME,qBAAqBf,SAAS,CAAC,EAAEa,IAAI,EAA0B;IACxE,OAAQA,KAAK,IAAI;QACb,KAAK;YACD,OAAO,WAAP,GAAO,oBAACG,iBAAeA;gBAAC,MAAMH;;QAClC,KAAK;YACD,OAAO,WAAP,GAAO,oBAACI,gCAAqBA;QACjC,KAAK;YACD,OAAO,WAAP,GAAO,oBAACC,kBAAgBA;gBAAC,MAAML;;QACnC,KAAK;YACD,OAAO,WAAP,GAAO,oBAACM,qBAAmBA;gBAAC,MAAMN;;QACtC;YACI,OAAO;IACf;AACJ;AAEA,MAAMG,kBAAkBhB,SAAS,CAAC,EAAEa,IAAI,EAAwB;IAC5D,MAAM,EAAEO,cAAc,EAAE,GAAGzB;IAE3B,OAAO,WAAP,GACI,oBAAC0B,MAAIA,MACAR,KAAK,MAAM,CAAC,GAAG,CAACS,CAAAA;QACb,MAAMC,OAAOC,KAAK,KAAK,CAAC,KAAKX,KAAK,MAAM,CAAC,MAAM;QAI/C,OAAO,WAAP,GACI,oBAACQ,KAAK,MAAM;YAAC,KAAKC,MAAM,IAAI;YAAE,MAAMC;yBAChC,oBAACE,eAAaA;YAAC,OAAOH;YAAO,WAAWF;;IAGpD;AAGZ;AAOA,MAAMK,gBAAgBzB,SAAS,CAAC,EAAEsB,KAAK,EAAEnB,SAAS,EAAsB;IACpE,MAAMuB,WAAWJ,MAAM,QAAQ,GAAGnB,SAAS,CAACmB,MAAM,QAAQ,CAAC,GAAGK;IAE9D,IAAI,CAACD,UAAU;QACX,IAAIE,AAAyB,kBAAzBA,QAAQ,GAAG,CAAC,QAAQ,EACpBC,QAAQ,IAAI,CACR,CAAC,wCAAwC,EAAEP,MAAM,IAAI,CAAC,cAAc,EAAEA,MAAM,QAAQ,IAAI,OAAO,GAAG,CAAC;QAG3G,OAAO;IACX;IAEA,OAAO,WAAP,GAAO,oBAACI,UAAAA;QAAS,OAAOJ;;AAC5B;AAEA,MAAML,iCAAwBjB,SAAS;IACnC,OAAO,WAAP,GAAO,oBAAC;QAAG,WAAU;;AACzB;AAMA,MAAMkB,mBAAmBlB,SAAS,CAAC,EAAEa,IAAI,EAAyB;IAC9D,MAAM,EAAET,eAAe,EAAE,GAAGT;IAE5B,IAAIkB,KAAK,QAAQ,EAAE;QACf,MAAMiB,iBAAiB1B,eAAe,CAACS,KAAK,QAAQ,CAAC;QACrD,IAAIiB,gBACA,OAAO,WAAP,GAAO,oBAACA,gBAAAA;YAAe,MAAMjB;;IAErC;IAEA,OAAO,WAAP,GACI,oBAACkB,MAAIA;QACD,OAAOlB,KAAK,WAAW;QACvB,eAAemB,CAAAA,KAAMnB,KAAK,YAAY,CAACmB;QACvC,MAAMnB,KAAK,IAAI,CAAC,GAAG,CAACoB,CAAAA,MAAAA,WAAAA,GAChB,oBAACF,KAAK,GAAG;gBACL,KAAKE,IAAI,EAAE;gBACX,OAAOA,IAAI,EAAE;gBACb,MAAM3C,cAAc2C,IAAI,IAAI;gBAC5B,uBACI,0CACKA,IAAI,KAAK,EACTA,IAAI,SAAS,IAAI,WAAJ,GACV,oBAAC;oBAAK,WAAU;mBAAwC;gBAIpE,UAAUA,IAAI,QAAQ;gBACtB,uBACI,oBAAC;oBAAI,WAAW;mBACXA,IAAI,MAAM,CAAC,GAAG,CAAC,CAACC,WAAWpB,QAAAA,WAAAA,GACxB,oBAACC,oBAAkBA;wBAAC,KAAKD;wBAAO,MAAMoB;;;;AAQtE;AAEA,MAAMf,sBAAsBnB,SAAS,CAAC,EAAEa,IAAI,EAA4B;IACpE,MAAM,EAAEO,cAAc,EAAE,GAAGzB;IAC3B,MAAM+B,WAAWN,cAAc,CAAC,CAAC,QAAQ,EAAEP,KAAK,QAAQ,EAAE,CAAC;IAE3D,IAAI,CAACa,UAAU;QACX,IAAIE,AAAyB,kBAAzBA,QAAQ,GAAG,CAAC,QAAQ,EACpBC,QAAQ,IAAI,CAAC,CAAC,0CAA0C,EAAEhB,KAAK,QAAQ,CAAC,EAAE,CAAC;QAE/E,OAAO;IACX;IAEA,OAAO,WAAP,GAAO,oBAACa,UAAAA;QAAS,OAAO;YAAE,GAAGb,KAAK,KAAK;QAAC;;AAC5C;AAMA,MAAMD,eAAe,CAAC,EAAEV,IAAI,EAAsB;IAC9C,MAAMiC,QAAQC;IAEd,MAAMC,aAAa;QACf,MAAMC,OAAOpC,KAAK,OAAO;QACzBqC,UAAU,SAAS,CAAC,SAAS,CAACC,KAAK,SAAS,CAACF,MAAM,MAAM;QACzDH,MAAM,gBAAgB,CAAC;YAAE,OAAO;QAAiC;IACrE;IAEA,MAAMM,cAAc;QAChB,IAAI;YACA,MAAMC,OAAO,MAAMH,UAAU,SAAS,CAAC,QAAQ;YAC/C,MAAMD,OAAOE,KAAK,KAAK,CAACE;YACxBxC,KAAK,OAAO,CAACoC;YACbH,MAAM,gBAAgB,CAAC;gBAAE,OAAO;YAAqC;QACzE,EAAE,OAAM;YACJA,MAAM,gBAAgB,CAAC;gBACnB,OAAO;YACX;QACJ;IACJ;IACA,OAAO,WAAP,GACI,oBAACQ,eAAaA,MAAAA,WAAAA,GACV,oBAAC;QAAI,WAAU;qBACX,oBAAC;QAAI,WAAU;qBACX,oBAACC,SAAOA;QACJ,SAAQ;QACR,uBACI,oBAACC,YAAUA;YACP,SAAS;YACT,oBAAM,oBAACC,gBAAQA;YACf,SAAST;YACT,MAAK;;sBAIjB,oBAACO,SAAOA;QACJ,SAAQ;QACR,uBACI,oBAACC,YAAUA;YACP,SAAS;YACT,oBAAM,oBAACE,kCAASA;YAChB,SAASN;YACT,MAAK;;;AAQrC"}
1
+ {"version":3,"file":"features/formModel/FormView.js","sources":["../../../src/features/formModel/FormView.tsx"],"sourcesContent":["import React, { createContext, useContext, useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport {\n Alert,\n Grid,\n IconButton,\n Separator,\n Tabs,\n Text,\n Tooltip,\n useToast\n} from \"@webiny/admin-ui\";\nimport { ReactComponent as CopyIcon } from \"@webiny/icons/content_copy.svg\";\nimport { ReactComponent as PasteIcon } from \"@webiny/icons/content_paste.svg\";\nimport { DevToolsSection } from \"@webiny/react-properties\";\nimport type {\n IFormVM,\n LayoutNodeVM,\n IRowNodeVM,\n IFieldVM,\n ITabsNodeVM,\n ISeparatorNodeVM,\n IAlertNodeVM,\n IElementNodeVM\n} from \"./abstractions.js\";\nimport type { Icon } from \"~/components/IconPicker/types.js\";\nimport type { IconProp } from \"@fortawesome/fontawesome-svg-core\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { DeveloperMode } from \"~/components/DeveloperMode/DeveloperMode.js\";\nimport { useFieldRenderers } from \"~/features/formModel/useFieldRenderers.js\";\nimport { useLayoutRenderers } from \"~/features/formModel/useLayoutRenderers.js\";\n\nexport function renderTabIcon(icon: Icon | undefined): React.ReactElement | undefined {\n if (!icon || typeof icon.name !== \"string\") {\n return undefined;\n }\n return <FontAwesomeIcon icon={icon.name.split(\"/\") as IconProp} />;\n}\n\n/**\n * A field renderer component receives a FieldVM and renders the appropriate UI.\n */\nexport type FieldRendererComponent = React.ComponentType<{ field: IFieldVM }>;\n\n/**\n * Map of renderer keys to React components for fields.\n * Lookup order: `{type}:{renderer}` → `{type}`.\n */\nexport type FieldRenderers = Record<string, FieldRendererComponent>;\n\n/**\n * Map of renderer keys to React components for layout nodes.\n */\nexport type LayoutRenderers = Record<string, React.ComponentType<any>>;\n\ninterface FormViewRenderers {\n fieldRenderers: FieldRenderers;\n layoutRenderers: LayoutRenderers;\n}\n\nconst FormViewRenderersContext = createContext<FormViewRenderers | null>(null);\n\nconst useFormViewRenderers = (): FormViewRenderers => {\n const ctx = useContext(FormViewRenderersContext);\n if (!ctx) {\n throw new Error(\"useFormViewRenderers must be used within a FormView.\");\n }\n return ctx;\n};\n\nexport { useFormViewRenderers };\n\ninterface FormViewProps {\n name: string;\n form: IFormVM;\n renderers?: FieldRenderers;\n layoutRenderers?: LayoutRenderers;\n}\n\n/**\n * Generic form view that walks layout nodes and renders fields.\n * This component is stateless — it reads from the FormVM and delegates to renderers.\n */\nexport const FormView = observer(({ name, form, renderers, layoutRenderers }: FormViewProps) => {\n const defaultFieldRenderers = useFieldRenderers();\n const defaultLayoutRenderers = useLayoutRenderers();\n\n const value = useMemo(\n () => ({\n fieldRenderers: renderers ?? defaultFieldRenderers,\n layoutRenderers: layoutRenderers ?? defaultLayoutRenderers\n }),\n [renderers, defaultFieldRenderers, layoutRenderers, defaultLayoutRenderers]\n );\n\n return (\n <FormViewRenderersContext.Provider value={value}>\n <DevToolsSection name={name} group=\"Forms\" data={form.getData()} views={\"raw\"} />\n <div className=\"w-full relative flex flex-col gap-4\">\n <DevModeTools form={form} />\n {form.layout.map((node, index) => (\n <LayoutNodeRenderer key={index} node={node} />\n ))}\n </div>\n </FormViewRenderersContext.Provider>\n );\n});\n\nexport const LayoutNodeRenderer = observer(({ node }: { node: LayoutNodeVM }) => {\n switch (node.type) {\n case \"row\":\n return <RowNodeRenderer node={node} />;\n case \"separator\":\n return <SeparatorNodeRenderer node={node} />;\n case \"alert\":\n return <AlertNodeRenderer node={node} />;\n case \"tabs\":\n return <TabsNodeRenderer node={node} />;\n case \"element\":\n return <ElementNodeRenderer node={node} />;\n default:\n return null;\n }\n});\n\nconst RowNodeRenderer = observer(({ node }: { node: IRowNodeVM }) => {\n const { fieldRenderers } = useFormViewRenderers();\n\n return (\n <Grid>\n {node.fields.map(field => {\n const span = Math.floor(12 / node.fields.length) as React.ComponentProps<\n typeof Grid.Column\n >[\"span\"];\n\n return (\n <Grid.Column key={field.name} span={span}>\n <FieldRenderer field={field} renderers={fieldRenderers} />\n </Grid.Column>\n );\n })}\n </Grid>\n );\n});\n\ninterface FieldRendererProps {\n field: IFieldVM;\n renderers: FieldRenderers;\n}\n\nconst FieldRenderer = observer(({ field, renderers }: FieldRendererProps) => {\n const Renderer = field.renderer ? renderers[field.renderer] : undefined;\n\n if (!Renderer) {\n if (process.env.NODE_ENV === \"development\") {\n console.warn(\n `[FormView] No renderer found for field \"${field.name}\" (renderer: \"${field.renderer || \"none\"}\").`\n );\n }\n return null;\n }\n\n return <Renderer field={field} />;\n});\n\nconst SeparatorNodeRenderer = observer(function SeparatorNodeRenderer({\n node\n}: {\n node: ISeparatorNodeVM;\n}) {\n if (node.title) {\n return (\n <div>\n <Separator variant={\"accent\"} labelPosition={\"start\"}>\n {node.title}\n </Separator>\n {node.description ? (\n <Text size={\"sm\"} className={\"mt-xs\"}>\n {node.description}\n </Text>\n ) : null}\n </div>\n );\n }\n return <Separator variant={\"dimmed\"} />;\n});\n\nconst AlertNodeRenderer = observer(function AlertNodeRenderer({ node }: { node: IAlertNodeVM }) {\n if (!node.message) {\n return null;\n }\n return <Alert type={node.alertType}>{node.message}</Alert>;\n});\n\nexport interface TabsNodeRendererProps {\n node: ITabsNodeVM;\n}\n\nconst TabsNodeRenderer = observer(({ node }: TabsNodeRendererProps) => {\n const { layoutRenderers } = useFormViewRenderers();\n\n if (node.renderer) {\n const CustomRenderer = layoutRenderers[node.renderer];\n if (CustomRenderer) {\n return <CustomRenderer node={node} />;\n }\n }\n\n return (\n <Tabs\n value={node.activeTabId}\n onValueChange={id => node.setActiveTab(id)}\n tabs={node.tabs.map(tab => (\n <Tabs.Tab\n key={tab.id}\n value={tab.id}\n icon={renderTabIcon(tab.icon)}\n trigger={\n <>\n {tab.label}\n {tab.hasErrors && (\n <span className=\"ml-1 text-destructive-default text-xs\">*</span>\n )}\n </>\n }\n disabled={tab.disabled}\n content={\n <div className={\"flex flex-col gap-4 mt-md\"}>\n {tab.layout.map((childNode, index) => (\n <LayoutNodeRenderer key={index} node={childNode} />\n ))}\n </div>\n }\n />\n ))}\n />\n );\n});\n\nconst ElementNodeRenderer = observer(({ node }: { node: IElementNodeVM }) => {\n const { fieldRenderers } = useFormViewRenderers();\n const Renderer = fieldRenderers[`element:${node.renderer}`];\n\n if (!Renderer) {\n if (process.env.NODE_ENV === \"development\") {\n console.warn(`[FormView] No renderer found for element \"${node.renderer}\".`);\n }\n return null;\n }\n\n return <Renderer field={{ ...node.props } as any} />;\n});\n\ninterface DevModelToolsProps {\n form: IFormVM;\n}\n\nconst DevModeTools = ({ form }: DevModelToolsProps) => {\n const toast = useToast();\n\n const handleCopy = () => {\n const data = form.getData();\n navigator.clipboard.writeText(JSON.stringify(data, null, 2));\n toast.showSuccessToast({ title: \"Form data copied to clipboard.\" });\n };\n\n const handlePaste = async () => {\n try {\n const text = await navigator.clipboard.readText();\n const data = JSON.parse(text);\n form.setData(data);\n toast.showSuccessToast({ title: \"Form data imported from clipboard.\" });\n } catch {\n toast.showWarningToast({\n title: \"Failed to import. Make sure clipboard contains valid JSON.\"\n });\n }\n };\n return (\n <DeveloperMode>\n <div className=\"absolute top-0 right-0 w-[200px] h-[80px] z-10 group/devtools\">\n <div className=\"absolute top-0 right-0 flex gap-xs opacity-0 group-hover/devtools:opacity-100 transition-opacity\">\n <Tooltip\n content=\"Copy form data to clipboard\"\n trigger={\n <IconButton\n variant={\"secondary\"}\n icon={<CopyIcon />}\n onClick={handleCopy}\n size=\"sm\"\n />\n }\n />\n <Tooltip\n content=\"Paste form data from clipboard\"\n trigger={\n <IconButton\n variant={\"secondary\"}\n icon={<PasteIcon />}\n onClick={handlePaste}\n size=\"sm\"\n />\n }\n />\n </div>\n </div>\n </DeveloperMode>\n );\n};\n"],"names":["renderTabIcon","icon","FontAwesomeIcon","FormViewRenderersContext","createContext","useFormViewRenderers","ctx","useContext","Error","FormView","observer","name","form","renderers","layoutRenderers","defaultFieldRenderers","useFieldRenderers","defaultLayoutRenderers","useLayoutRenderers","value","useMemo","DevToolsSection","DevModeTools","node","index","LayoutNodeRenderer","RowNodeRenderer","SeparatorNodeRenderer","AlertNodeRenderer","TabsNodeRenderer","ElementNodeRenderer","fieldRenderers","Grid","field","span","Math","FieldRenderer","Renderer","undefined","process","console","Separator","Text","Alert","CustomRenderer","Tabs","id","tab","childNode","toast","useToast","handleCopy","data","navigator","JSON","handlePaste","text","DeveloperMode","Tooltip","IconButton","CopyIcon","PasteIcon"],"mappings":"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"}
@@ -21,11 +21,12 @@ export declare class TabBuilder implements TabBuilderInternal {
21
21
  export declare class TabsBuilder implements ITabsBuilder {
22
22
  private _id;
23
23
  private _renderer;
24
+ private _rendererSettings;
24
25
  private _rules;
25
26
  private _pendingTabs;
26
27
  private _lastAddedIdx;
27
28
  constructor(id?: string);
28
- renderer(name: string): this;
29
+ renderer(name: string, settings?: Record<string, unknown>): this;
29
30
  tab(tabId: string, configure: (tab: ITabBuilder) => void): this;
30
31
  before(_target: string): this;
31
32
  after(_target: string): this;
@@ -36,7 +37,7 @@ export declare class TabsAccessBuilder implements ITabsBuilder {
36
37
  private _node;
37
38
  private _lastAddedIdx;
38
39
  constructor(_node: ITabsNode);
39
- renderer(name: string): this;
40
+ renderer(name: string, settings?: Record<string, unknown>): this;
40
41
  tab(tabId: string, configure: (tab: ITabBuilder) => void): this;
41
42
  before(target: string): this;
42
43
  after(target: string): this;
@@ -47,8 +47,9 @@ class TabsBuilder {
47
47
  this._lastAddedIdx = -1;
48
48
  this._id = id;
49
49
  }
50
- renderer(name) {
50
+ renderer(name, settings) {
51
51
  this._renderer = name;
52
+ this._rendererSettings = settings;
52
53
  return this;
53
54
  }
54
55
  tab(tabId, configure) {
@@ -76,6 +77,7 @@ class TabsBuilder {
76
77
  type: "tabs",
77
78
  id: this._id,
78
79
  renderer: this._renderer,
80
+ rendererSettings: this._rendererSettings,
79
81
  tabs: this._pendingTabs.map((p)=>p.tabBuilder._build(p.tabId)),
80
82
  rules: this._rules
81
83
  };
@@ -86,8 +88,9 @@ class TabsAccessBuilder {
86
88
  this._node = _node;
87
89
  this._lastAddedIdx = -1;
88
90
  }
89
- renderer(name) {
91
+ renderer(name, settings) {
90
92
  this._node.renderer = name;
93
+ this._node.rendererSettings = settings;
91
94
  return this;
92
95
  }
93
96
  tab(tabId, configure) {
@@ -158,13 +161,60 @@ class LayoutBuilderFactory {
158
161
  return builder;
159
162
  },
160
163
  separator () {
161
- return {
164
+ let _title;
165
+ let _description;
166
+ let _rules;
167
+ const builder = {
168
+ title (text) {
169
+ _title = text;
170
+ return builder;
171
+ },
172
+ description (text) {
173
+ _description = text;
174
+ return builder;
175
+ },
176
+ rules (r) {
177
+ _rules = r;
178
+ return builder;
179
+ },
162
180
  build () {
163
181
  return {
164
- type: "separator"
182
+ type: "separator",
183
+ title: _title,
184
+ description: _description,
185
+ rules: _rules
165
186
  };
166
187
  }
167
188
  };
189
+ return builder;
190
+ },
191
+ alert () {
192
+ let _message;
193
+ let _alertType = "info";
194
+ let _rules;
195
+ const builder = {
196
+ message (text) {
197
+ _message = text;
198
+ return builder;
199
+ },
200
+ alertType (type) {
201
+ _alertType = type;
202
+ return builder;
203
+ },
204
+ rules (r) {
205
+ _rules = r;
206
+ return builder;
207
+ },
208
+ build () {
209
+ return {
210
+ type: "alert",
211
+ message: _message,
212
+ alertType: _alertType,
213
+ rules: _rules
214
+ };
215
+ }
216
+ };
217
+ return builder;
168
218
  },
169
219
  tabs (id) {
170
220
  return new TabsBuilder(id);
@@ -291,6 +341,7 @@ class LayoutBuilderFactory {
291
341
  static collectBuilders(fields, builders, predicate, result) {
292
342
  const entries = builders instanceof Map ? builders.entries() : Object.entries(builders);
293
343
  for (const [name, builder] of entries){
344
+ if (!builder || "object" != typeof builder) continue;
294
345
  if (predicate(builder)) result.push(builder);
295
346
  const field = fields instanceof Map ? fields.get(name) : void 0;
296
347
  if (field && isObjectField(field)) {
@@ -308,7 +359,9 @@ class LayoutBuilderFactory {
308
359
  return ids;
309
360
  }
310
361
  static collectBuildersFlat(builders, predicate, result) {
311
- for (const builder of Object.values(builders))if (predicate(builder)) result.push(builder);
362
+ for (const builder of Object.values(builders))if (builder && "object" == typeof builder) {
363
+ if (predicate(builder)) result.push(builder);
364
+ }
312
365
  }
313
366
  }
314
367
  export { LayoutBuilderFactory, TabBuilder, TabsAccessBuilder, TabsBuilder };
@@ -1 +1 @@
1
- {"version":3,"file":"features/formModel/LayoutBuilderFactory.js","sources":["../../../src/features/formModel/LayoutBuilderFactory.ts"],"sourcesContent":["import type { Icon } from \"~/components/IconPicker/types.js\";\nimport type {\n IField,\n IFieldBuilder,\n ILayoutBuilder,\n ILayoutNodeBuilder,\n ILayoutNodeHandle,\n IPositionedLayoutNode,\n IRule,\n ITabBuilder,\n ITabDefinition,\n ITabDefinitionInput,\n ITabsBuilder,\n ITabsNode,\n IRowBuilder,\n ISeparatorBuilder,\n IElementBuilder,\n IObjectBuilder,\n IRowNode,\n ISeparatorNode,\n IElementNode,\n IObjectNode,\n LayoutNode,\n LayoutPosition,\n LayoutNodeHandleMap,\n ILayoutNodeAccessHandle\n} from \"./abstractions.js\";\nimport { isObjectField } from \"./ObjectField.js\";\nimport type { IObjectFieldConfig } from \"./abstractions.js\";\n\ninterface TabBuilderInternal extends ITabBuilder {\n _build(id: string): ITabDefinition;\n}\n\nexport class TabBuilder implements TabBuilderInternal {\n private _existing: ITabDefinition | undefined;\n private _label = \"\";\n private _description: string | undefined;\n private _icon: ITabDefinition[\"icon\"];\n private _layoutFactory: ((l: ILayoutBuilder) => ILayoutNodeBuilder[]) | undefined;\n private _rules: IRule[] | undefined;\n\n constructor(existing?: ITabDefinition) {\n this._existing = existing;\n }\n\n label(text: string): this {\n if (this._existing) {\n this._existing.label = text;\n } else {\n this._label = text;\n }\n return this;\n }\n\n description(text: string): this {\n if (this._existing) {\n this._existing.description = text;\n } else {\n this._description = text;\n }\n return this;\n }\n\n icon(icon: Icon): this {\n if (this._existing) {\n this._existing.icon = icon;\n } else {\n this._icon = icon;\n }\n return this;\n }\n\n layout(factory: (l: ILayoutBuilder) => ILayoutNodeBuilder[]): this {\n if (this._existing) {\n this._existing.layout.push(\n ...LayoutBuilderFactory.buildNodes(factory(LayoutBuilderFactory.create()))\n );\n } else {\n this._layoutFactory = factory;\n }\n return this;\n }\n\n rules(r: IRule[]): this {\n if (this._existing) {\n this._existing.rules = r;\n } else {\n this._rules = r;\n }\n return this;\n }\n\n _build(id: string): ITabDefinition {\n if (this._existing) {\n return this._existing;\n }\n return {\n id,\n label: this._label,\n description: this._description,\n icon: this._icon,\n layout: this._layoutFactory\n ? LayoutBuilderFactory.buildNodes(\n this._layoutFactory(LayoutBuilderFactory.create())\n )\n : [],\n rules: this._rules\n };\n }\n}\n\nexport class TabsBuilder implements ITabsBuilder {\n private _id: string | undefined;\n private _renderer: string | undefined;\n private _rules: IRule[] | undefined;\n private _pendingTabs: { tabId: string; tabBuilder: TabBuilderInternal }[] = [];\n private _lastAddedIdx = -1;\n\n constructor(id?: string) {\n this._id = id;\n }\n\n renderer(name: string): this {\n this._renderer = name;\n return this;\n }\n\n tab(tabId: string, configure: (tab: ITabBuilder) => void): this {\n const tb = new TabBuilder();\n configure(tb);\n this._pendingTabs.push({ tabId, tabBuilder: tb });\n this._lastAddedIdx = this._pendingTabs.length - 1;\n return this;\n }\n\n before(_target: string): this {\n return this;\n }\n\n after(_target: string): this {\n return this;\n }\n\n rules(r: IRule[]): this {\n this._rules = r;\n return this;\n }\n\n build(): ITabsNode {\n return {\n type: \"tabs\",\n id: this._id,\n renderer: this._renderer,\n tabs: this._pendingTabs.map(p => p.tabBuilder._build(p.tabId)),\n rules: this._rules\n };\n }\n}\n\nexport class TabsAccessBuilder implements ITabsBuilder {\n private _lastAddedIdx = -1;\n\n constructor(private _node: ITabsNode) {}\n\n renderer(name: string): this {\n this._node.renderer = name;\n return this;\n }\n\n tab(tabId: string, configure: (tab: ITabBuilder) => void): this {\n const existing = this._node.tabs.find(t => t.id === tabId);\n if (existing) {\n configure(new TabBuilder(existing));\n } else {\n const tb = new TabBuilder();\n configure(tb);\n this._node.tabs.push(tb._build(tabId));\n this._lastAddedIdx = this._node.tabs.length - 1;\n }\n return this;\n }\n\n before(target: string): this {\n if (this._lastAddedIdx >= 0) {\n const tab = this._node.tabs.splice(this._lastAddedIdx, 1)[0];\n const targetIdx = this._node.tabs.findIndex(t => t.id === target);\n if (targetIdx !== -1) {\n this._node.tabs.splice(targetIdx, 0, tab);\n } else {\n this._node.tabs.push(tab);\n }\n }\n return this;\n }\n\n after(target: string): this {\n if (this._lastAddedIdx >= 0) {\n const tab = this._node.tabs.splice(this._lastAddedIdx, 1)[0];\n const targetIdx = this._node.tabs.findIndex(t => t.id === target);\n if (targetIdx !== -1) {\n this._node.tabs.splice(targetIdx + 1, 0, tab);\n } else {\n this._node.tabs.push(tab);\n }\n }\n return this;\n }\n\n rules(r: IRule[]): this {\n this._node.rules = r;\n return this;\n }\n\n build(): ITabsNode {\n return this._node;\n }\n}\n\nexport class LayoutBuilderFactory {\n static create(): ILayoutBuilder {\n return {\n row(...fieldIds: string[]): IRowBuilder {\n let position: LayoutPosition | undefined;\n const builder: IRowBuilder = {\n before(target: string) {\n position = { type: \"before\", target };\n return builder;\n },\n after(target: string) {\n position = { type: \"after\", target };\n return builder;\n },\n build(): IRowNode {\n return { type: \"row\", fieldIds, position };\n }\n };\n return builder;\n },\n separator(): ISeparatorBuilder {\n return {\n build(): ISeparatorNode {\n return { type: \"separator\" };\n }\n };\n },\n tabs(id?: string): ITabsBuilder {\n return new TabsBuilder(id);\n },\n element(renderer: string, props?: Record<string, unknown>): IElementBuilder {\n return {\n build(): IElementNode {\n return { type: \"element\", renderer, props };\n }\n };\n },\n object(\n fieldName: string,\n inner:\n | ((layout: ILayoutBuilder) => ILayoutNodeBuilder[])\n | Record<string, (layout: ILayoutBuilder) => ILayoutNodeBuilder[]>\n ): IObjectBuilder {\n return {\n build(): IObjectNode {\n return {\n type: \"object\",\n fieldName,\n inner: LayoutBuilderFactory.resolveObjectInner(inner)\n };\n }\n };\n }\n };\n }\n\n static buildNodes(builders: ILayoutNodeBuilder[]): LayoutNode[] {\n return builders.map(b => b.build());\n }\n\n static resolvePositionedRows(nodes: LayoutNode[]): LayoutNode[] {\n const result: LayoutNode[] = [];\n const deferred: { node: LayoutNode; position: LayoutPosition }[] = [];\n\n for (const node of nodes) {\n if (node.type === \"row\" && node.position) {\n deferred.push({ node, position: node.position });\n } else {\n result.push(node);\n }\n }\n\n for (const { node, position } of deferred) {\n const targetIndex = result.findIndex(\n n => n.type === \"row\" && (n as IRowNode).fieldIds.includes(position.target)\n );\n if (targetIndex === -1) {\n result.push(node);\n continue;\n }\n const insertAt = position.type === \"after\" ? targetIndex + 1 : targetIndex;\n result.splice(insertAt, 0, node);\n }\n\n return result;\n }\n\n static resolveObjectInner(\n inner:\n | ((layout: ILayoutBuilder) => ILayoutNodeBuilder[])\n | Record<string, (layout: ILayoutBuilder) => ILayoutNodeBuilder[]>\n ): LayoutNode[] | Record<string, LayoutNode[]> {\n const api = LayoutBuilderFactory.create();\n if (typeof inner === \"function\") {\n return LayoutBuilderFactory.resolvePositionedRows(\n LayoutBuilderFactory.buildNodes(inner(api))\n );\n }\n const resolved: Record<string, LayoutNode[]> = {};\n for (const [tplId, factory] of Object.entries(inner)) {\n resolved[tplId] = LayoutBuilderFactory.resolvePositionedRows(\n LayoutBuilderFactory.buildNodes(factory(api))\n );\n }\n return resolved;\n }\n\n static createNodeHandle(node: LayoutNode): ILayoutNodeHandle {\n const handle: ILayoutNodeHandle = {\n node,\n before(target: string): IPositionedLayoutNode {\n handle.position = { type: \"before\", target };\n return handle;\n },\n after(target: string): IPositionedLayoutNode {\n handle.position = { type: \"after\", target };\n return handle;\n },\n replace(target: string): IPositionedLayoutNode {\n handle.position = { type: \"replace\", target };\n return handle;\n }\n };\n return handle;\n }\n\n static matchesNodeId(node: LayoutNode, nodeId: string): boolean {\n if (\"id\" in node && node.id === nodeId) {\n return true;\n }\n if (node.type === \"object\" && node.fieldName === nodeId) {\n return true;\n }\n return false;\n }\n\n static findNodeById(layout: LayoutNode[], nodeId: string): LayoutNode | undefined {\n for (const node of layout) {\n if (LayoutBuilderFactory.matchesNodeId(node, nodeId)) {\n return node;\n }\n if (node.type === \"tabs\") {\n for (const tab of node.tabs) {\n const found = LayoutBuilderFactory.findNodeById(tab.layout, nodeId);\n if (found) {\n return found;\n }\n }\n }\n }\n return undefined;\n }\n\n static resolveTabDefinition(input: ITabDefinitionInput): ITabDefinition {\n const api = LayoutBuilderFactory.create();\n return {\n id: input.id,\n label: input.label,\n description: input.description,\n icon: input.icon,\n rules: input.rules,\n layout: LayoutBuilderFactory.buildNodes(input.layout(api))\n };\n }\n\n static tabsNodeKey(node: ITabsNode): string {\n return `__tabs_${node.tabs.map(t => t.id).join(\"_\")}`;\n }\n\n static accessNode(layout: LayoutNode[], nodeId: string): ILayoutNodeAccessHandle {\n return {\n as: <T extends keyof LayoutNodeHandleMap>(type: T): LayoutNodeHandleMap[T] => {\n const node = LayoutBuilderFactory.findNodeById(layout, nodeId);\n if (!node) {\n throw new Error(`Layout node \"${nodeId}\" not found.`);\n }\n if (node.type !== type) {\n throw new Error(\n `Layout node \"${nodeId}\" is type \"${node.type}\", not \"${type}\".`\n );\n }\n\n if (type === \"tabs\") {\n return new TabsAccessBuilder(\n node as ITabsNode\n ) as unknown as LayoutNodeHandleMap[T];\n }\n\n return node as unknown as LayoutNodeHandleMap[T];\n }\n };\n }\n\n static collectBuilders(\n fields: Map<string, IField>,\n builders: Map<string, IFieldBuilder> | Record<string, IFieldBuilder>,\n predicate: (builder: IFieldBuilder) => boolean,\n result: IFieldBuilder[]\n ): void {\n const entries = builders instanceof Map ? builders.entries() : Object.entries(builders);\n for (const [name, builder] of entries) {\n if (predicate(builder)) {\n result.push(builder);\n }\n const field = fields instanceof Map ? fields.get(name) : undefined;\n if (field && isObjectField(field)) {\n LayoutBuilderFactory.collectBuilders(\n field.children,\n field.config.childBuilders,\n predicate,\n result\n );\n const templates = (field.config as IObjectFieldConfig).templates;\n if (templates) {\n for (const tpl of templates) {\n LayoutBuilderFactory.collectBuildersFlat(\n tpl.childBuilders,\n predicate,\n result\n );\n }\n }\n }\n }\n }\n\n static collectFieldIds(layout: LayoutNode[]): string[] {\n const ids: string[] = [];\n for (const node of layout) {\n if (node.type === \"row\") {\n ids.push(...node.fieldIds);\n } else if (node.type === \"tabs\") {\n for (const tab of node.tabs) {\n ids.push(...LayoutBuilderFactory.collectFieldIds(tab.layout));\n }\n } else if (node.type === \"object\") {\n ids.push(node.fieldName);\n }\n }\n return ids;\n }\n\n static collectBuildersFlat(\n builders: Record<string, IFieldBuilder>,\n predicate: (builder: IFieldBuilder) => boolean,\n result: IFieldBuilder[]\n ): void {\n for (const builder of Object.values(builders)) {\n if (predicate(builder)) {\n result.push(builder);\n }\n }\n }\n}\n"],"names":["TabBuilder","existing","text","icon","factory","LayoutBuilderFactory","r","id","TabsBuilder","name","tabId","configure","tb","_target","p","TabsAccessBuilder","_node","t","target","tab","targetIdx","fieldIds","position","builder","renderer","props","fieldName","inner","builders","b","nodes","result","deferred","node","targetIndex","n","insertAt","api","resolved","tplId","Object","handle","nodeId","layout","found","input","type","Error","fields","predicate","entries","Map","field","undefined","isObjectField","templates","tpl","ids"],"mappings":"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"}
1
+ {"version":3,"file":"features/formModel/LayoutBuilderFactory.js","sources":["../../../src/features/formModel/LayoutBuilderFactory.ts"],"sourcesContent":["import type { Icon } from \"~/components/IconPicker/types.js\";\nimport type {\n IField,\n IFieldBuilder,\n ILayoutBuilder,\n ILayoutNodeBuilder,\n ILayoutNodeHandle,\n IPositionedLayoutNode,\n IRule,\n ITabBuilder,\n ITabDefinition,\n ITabDefinitionInput,\n ITabsBuilder,\n ITabsNode,\n IRowBuilder,\n ISeparatorBuilder,\n IAlertBuilder,\n IElementBuilder,\n IObjectBuilder,\n IRowNode,\n ISeparatorNode,\n IAlertNode,\n IElementNode,\n IObjectNode,\n LayoutNode,\n LayoutPosition,\n LayoutNodeHandleMap,\n ILayoutNodeAccessHandle\n} from \"./abstractions.js\";\nimport { isObjectField } from \"./ObjectField.js\";\nimport type { IObjectFieldConfig } from \"./abstractions.js\";\n\ninterface TabBuilderInternal extends ITabBuilder {\n _build(id: string): ITabDefinition;\n}\n\nexport class TabBuilder implements TabBuilderInternal {\n private _existing: ITabDefinition | undefined;\n private _label = \"\";\n private _description: string | undefined;\n private _icon: ITabDefinition[\"icon\"];\n private _layoutFactory: ((l: ILayoutBuilder) => ILayoutNodeBuilder[]) | undefined;\n private _rules: IRule[] | undefined;\n\n constructor(existing?: ITabDefinition) {\n this._existing = existing;\n }\n\n label(text: string): this {\n if (this._existing) {\n this._existing.label = text;\n } else {\n this._label = text;\n }\n return this;\n }\n\n description(text: string): this {\n if (this._existing) {\n this._existing.description = text;\n } else {\n this._description = text;\n }\n return this;\n }\n\n icon(icon: Icon): this {\n if (this._existing) {\n this._existing.icon = icon;\n } else {\n this._icon = icon;\n }\n return this;\n }\n\n layout(factory: (l: ILayoutBuilder) => ILayoutNodeBuilder[]): this {\n if (this._existing) {\n this._existing.layout.push(\n ...LayoutBuilderFactory.buildNodes(factory(LayoutBuilderFactory.create()))\n );\n } else {\n this._layoutFactory = factory;\n }\n return this;\n }\n\n rules(r: IRule[]): this {\n if (this._existing) {\n this._existing.rules = r;\n } else {\n this._rules = r;\n }\n return this;\n }\n\n _build(id: string): ITabDefinition {\n if (this._existing) {\n return this._existing;\n }\n return {\n id,\n label: this._label,\n description: this._description,\n icon: this._icon,\n layout: this._layoutFactory\n ? LayoutBuilderFactory.buildNodes(\n this._layoutFactory(LayoutBuilderFactory.create())\n )\n : [],\n rules: this._rules\n };\n }\n}\n\nexport class TabsBuilder implements ITabsBuilder {\n private _id: string | undefined;\n private _renderer: string | undefined;\n private _rendererSettings: Record<string, unknown> | undefined;\n private _rules: IRule[] | undefined;\n private _pendingTabs: { tabId: string; tabBuilder: TabBuilderInternal }[] = [];\n private _lastAddedIdx = -1;\n\n constructor(id?: string) {\n this._id = id;\n }\n\n renderer(name: string, settings?: Record<string, unknown>): this {\n this._renderer = name;\n this._rendererSettings = settings;\n return this;\n }\n\n tab(tabId: string, configure: (tab: ITabBuilder) => void): this {\n const tb = new TabBuilder();\n configure(tb);\n this._pendingTabs.push({ tabId, tabBuilder: tb });\n this._lastAddedIdx = this._pendingTabs.length - 1;\n return this;\n }\n\n before(_target: string): this {\n return this;\n }\n\n after(_target: string): this {\n return this;\n }\n\n rules(r: IRule[]): this {\n this._rules = r;\n return this;\n }\n\n build(): ITabsNode {\n return {\n type: \"tabs\",\n id: this._id,\n renderer: this._renderer,\n rendererSettings: this._rendererSettings,\n tabs: this._pendingTabs.map(p => p.tabBuilder._build(p.tabId)),\n rules: this._rules\n };\n }\n}\n\nexport class TabsAccessBuilder implements ITabsBuilder {\n private _lastAddedIdx = -1;\n\n constructor(private _node: ITabsNode) {}\n\n renderer(name: string, settings?: Record<string, unknown>): this {\n this._node.renderer = name;\n this._node.rendererSettings = settings;\n return this;\n }\n\n tab(tabId: string, configure: (tab: ITabBuilder) => void): this {\n const existing = this._node.tabs.find(t => t.id === tabId);\n if (existing) {\n configure(new TabBuilder(existing));\n } else {\n const tb = new TabBuilder();\n configure(tb);\n this._node.tabs.push(tb._build(tabId));\n this._lastAddedIdx = this._node.tabs.length - 1;\n }\n return this;\n }\n\n before(target: string): this {\n if (this._lastAddedIdx >= 0) {\n const tab = this._node.tabs.splice(this._lastAddedIdx, 1)[0];\n const targetIdx = this._node.tabs.findIndex(t => t.id === target);\n if (targetIdx !== -1) {\n this._node.tabs.splice(targetIdx, 0, tab);\n } else {\n this._node.tabs.push(tab);\n }\n }\n return this;\n }\n\n after(target: string): this {\n if (this._lastAddedIdx >= 0) {\n const tab = this._node.tabs.splice(this._lastAddedIdx, 1)[0];\n const targetIdx = this._node.tabs.findIndex(t => t.id === target);\n if (targetIdx !== -1) {\n this._node.tabs.splice(targetIdx + 1, 0, tab);\n } else {\n this._node.tabs.push(tab);\n }\n }\n return this;\n }\n\n rules(r: IRule[]): this {\n this._node.rules = r;\n return this;\n }\n\n build(): ITabsNode {\n return this._node;\n }\n}\n\nexport class LayoutBuilderFactory {\n static create(): ILayoutBuilder {\n return {\n row(...fieldIds: string[]): IRowBuilder {\n let position: LayoutPosition | undefined;\n const builder: IRowBuilder = {\n before(target: string) {\n position = { type: \"before\", target };\n return builder;\n },\n after(target: string) {\n position = { type: \"after\", target };\n return builder;\n },\n build(): IRowNode {\n return { type: \"row\", fieldIds, position };\n }\n };\n return builder;\n },\n separator(): ISeparatorBuilder {\n let _title: string | undefined;\n let _description: string | undefined;\n let _rules: IRule[] | undefined;\n const builder: ISeparatorBuilder = {\n title(text: string) {\n _title = text;\n return builder;\n },\n description(text: string) {\n _description = text;\n return builder;\n },\n rules(r: IRule[]) {\n _rules = r;\n return builder;\n },\n build(): ISeparatorNode {\n return {\n type: \"separator\",\n title: _title,\n description: _description,\n rules: _rules\n };\n }\n };\n return builder;\n },\n alert(): IAlertBuilder {\n let _message: string | undefined;\n let _alertType: \"info\" | \"success\" | \"warning\" | \"danger\" = \"info\";\n let _rules: IRule[] | undefined;\n const builder: IAlertBuilder = {\n message(text: string) {\n _message = text;\n return builder;\n },\n alertType(type: \"info\" | \"success\" | \"warning\" | \"danger\") {\n _alertType = type;\n return builder;\n },\n rules(r: IRule[]) {\n _rules = r;\n return builder;\n },\n build(): IAlertNode {\n return {\n type: \"alert\",\n message: _message,\n alertType: _alertType,\n rules: _rules\n };\n }\n };\n return builder;\n },\n tabs(id?: string): ITabsBuilder {\n return new TabsBuilder(id);\n },\n element(renderer: string, props?: Record<string, unknown>): IElementBuilder {\n return {\n build(): IElementNode {\n return { type: \"element\", renderer, props };\n }\n };\n },\n object(\n fieldName: string,\n inner:\n | ((layout: ILayoutBuilder) => ILayoutNodeBuilder[])\n | Record<string, (layout: ILayoutBuilder) => ILayoutNodeBuilder[]>\n ): IObjectBuilder {\n return {\n build(): IObjectNode {\n return {\n type: \"object\",\n fieldName,\n inner: LayoutBuilderFactory.resolveObjectInner(inner)\n };\n }\n };\n }\n };\n }\n\n static buildNodes(builders: ILayoutNodeBuilder[]): LayoutNode[] {\n return builders.map(b => b.build());\n }\n\n static resolvePositionedRows(nodes: LayoutNode[]): LayoutNode[] {\n const result: LayoutNode[] = [];\n const deferred: { node: LayoutNode; position: LayoutPosition }[] = [];\n\n for (const node of nodes) {\n if (node.type === \"row\" && node.position) {\n deferred.push({ node, position: node.position });\n } else {\n result.push(node);\n }\n }\n\n for (const { node, position } of deferred) {\n const targetIndex = result.findIndex(\n n => n.type === \"row\" && (n as IRowNode).fieldIds.includes(position.target)\n );\n if (targetIndex === -1) {\n result.push(node);\n continue;\n }\n const insertAt = position.type === \"after\" ? targetIndex + 1 : targetIndex;\n result.splice(insertAt, 0, node);\n }\n\n return result;\n }\n\n static resolveObjectInner(\n inner:\n | ((layout: ILayoutBuilder) => ILayoutNodeBuilder[])\n | Record<string, (layout: ILayoutBuilder) => ILayoutNodeBuilder[]>\n ): LayoutNode[] | Record<string, LayoutNode[]> {\n const api = LayoutBuilderFactory.create();\n if (typeof inner === \"function\") {\n return LayoutBuilderFactory.resolvePositionedRows(\n LayoutBuilderFactory.buildNodes(inner(api))\n );\n }\n const resolved: Record<string, LayoutNode[]> = {};\n for (const [tplId, factory] of Object.entries(inner)) {\n resolved[tplId] = LayoutBuilderFactory.resolvePositionedRows(\n LayoutBuilderFactory.buildNodes(factory(api))\n );\n }\n return resolved;\n }\n\n static createNodeHandle(node: LayoutNode): ILayoutNodeHandle {\n const handle: ILayoutNodeHandle = {\n node,\n before(target: string): IPositionedLayoutNode {\n handle.position = { type: \"before\", target };\n return handle;\n },\n after(target: string): IPositionedLayoutNode {\n handle.position = { type: \"after\", target };\n return handle;\n },\n replace(target: string): IPositionedLayoutNode {\n handle.position = { type: \"replace\", target };\n return handle;\n }\n };\n return handle;\n }\n\n static matchesNodeId(node: LayoutNode, nodeId: string): boolean {\n if (\"id\" in node && node.id === nodeId) {\n return true;\n }\n if (node.type === \"object\" && node.fieldName === nodeId) {\n return true;\n }\n return false;\n }\n\n static findNodeById(layout: LayoutNode[], nodeId: string): LayoutNode | undefined {\n for (const node of layout) {\n if (LayoutBuilderFactory.matchesNodeId(node, nodeId)) {\n return node;\n }\n if (node.type === \"tabs\") {\n for (const tab of node.tabs) {\n const found = LayoutBuilderFactory.findNodeById(tab.layout, nodeId);\n if (found) {\n return found;\n }\n }\n }\n }\n return undefined;\n }\n\n static resolveTabDefinition(input: ITabDefinitionInput): ITabDefinition {\n const api = LayoutBuilderFactory.create();\n return {\n id: input.id,\n label: input.label,\n description: input.description,\n icon: input.icon,\n rules: input.rules,\n layout: LayoutBuilderFactory.buildNodes(input.layout(api))\n };\n }\n\n static tabsNodeKey(node: ITabsNode): string {\n return `__tabs_${node.tabs.map(t => t.id).join(\"_\")}`;\n }\n\n static accessNode(layout: LayoutNode[], nodeId: string): ILayoutNodeAccessHandle {\n return {\n as: <T extends keyof LayoutNodeHandleMap>(type: T): LayoutNodeHandleMap[T] => {\n const node = LayoutBuilderFactory.findNodeById(layout, nodeId);\n if (!node) {\n throw new Error(`Layout node \"${nodeId}\" not found.`);\n }\n if (node.type !== type) {\n throw new Error(\n `Layout node \"${nodeId}\" is type \"${node.type}\", not \"${type}\".`\n );\n }\n\n if (type === \"tabs\") {\n return new TabsAccessBuilder(\n node as ITabsNode\n ) as unknown as LayoutNodeHandleMap[T];\n }\n\n return node as unknown as LayoutNodeHandleMap[T];\n }\n };\n }\n\n static collectBuilders(\n fields: Map<string, IField>,\n builders: Map<string, IFieldBuilder> | Record<string, IFieldBuilder>,\n predicate: (builder: IFieldBuilder) => boolean,\n result: IFieldBuilder[]\n ): void {\n const entries = builders instanceof Map ? builders.entries() : Object.entries(builders);\n for (const [name, builder] of entries) {\n if (!builder || typeof builder !== \"object\") {\n continue;\n }\n if (predicate(builder)) {\n result.push(builder);\n }\n const field = fields instanceof Map ? fields.get(name) : undefined;\n if (field && isObjectField(field)) {\n LayoutBuilderFactory.collectBuilders(\n field.children,\n field.config.childBuilders,\n predicate,\n result\n );\n const templates = (field.config as IObjectFieldConfig).templates;\n if (templates) {\n for (const tpl of templates) {\n LayoutBuilderFactory.collectBuildersFlat(\n tpl.childBuilders,\n predicate,\n result\n );\n }\n }\n }\n }\n }\n\n static collectFieldIds(layout: LayoutNode[]): string[] {\n const ids: string[] = [];\n for (const node of layout) {\n if (node.type === \"row\") {\n ids.push(...node.fieldIds);\n } else if (node.type === \"tabs\") {\n for (const tab of node.tabs) {\n ids.push(...LayoutBuilderFactory.collectFieldIds(tab.layout));\n }\n } else if (node.type === \"object\") {\n ids.push(node.fieldName);\n }\n }\n return ids;\n }\n\n static collectBuildersFlat(\n builders: Record<string, IFieldBuilder>,\n predicate: (builder: IFieldBuilder) => boolean,\n result: IFieldBuilder[]\n ): void {\n for (const builder of Object.values(builders)) {\n if (!builder || typeof builder !== \"object\") {\n continue;\n }\n if (predicate(builder)) {\n result.push(builder);\n }\n }\n }\n}\n"],"names":["TabBuilder","existing","text","icon","factory","LayoutBuilderFactory","r","id","TabsBuilder","name","settings","tabId","configure","tb","_target","p","TabsAccessBuilder","_node","t","target","tab","targetIdx","fieldIds","position","builder","_title","_description","_rules","_message","_alertType","type","renderer","props","fieldName","inner","builders","b","nodes","result","deferred","node","targetIndex","n","insertAt","api","resolved","tplId","Object","handle","nodeId","layout","found","input","Error","fields","predicate","entries","Map","field","undefined","isObjectField","templates","tpl","ids"],"mappings":";AAoCO,MAAMA;IAQT,YAAYC,QAAyB,CAAE;aAN/B,MAAM,GAAG;QAOb,IAAI,CAAC,SAAS,GAAGA;IACrB;IAEA,MAAMC,IAAY,EAAQ;QACtB,IAAI,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,CAAC,KAAK,GAAGA;aAEvB,IAAI,CAAC,MAAM,GAAGA;QAElB,OAAO,IAAI;IACf;IAEA,YAAYA,IAAY,EAAQ;QAC5B,IAAI,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,CAAC,WAAW,GAAGA;aAE7B,IAAI,CAAC,YAAY,GAAGA;QAExB,OAAO,IAAI;IACf;IAEA,KAAKC,IAAU,EAAQ;QACnB,IAAI,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,CAAC,IAAI,GAAGA;aAEtB,IAAI,CAAC,KAAK,GAAGA;QAEjB,OAAO,IAAI;IACf;IAEA,OAAOC,OAAoD,EAAQ;QAC/D,IAAI,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IACnBC,qBAAqB,UAAU,CAACD,QAAQC,qBAAqB,MAAM;aAG1E,IAAI,CAAC,cAAc,GAAGD;QAE1B,OAAO,IAAI;IACf;IAEA,MAAME,CAAU,EAAQ;QACpB,IAAI,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,CAAC,KAAK,GAAGA;aAEvB,IAAI,CAAC,MAAM,GAAGA;QAElB,OAAO,IAAI;IACf;IAEA,OAAOC,EAAU,EAAkB;QAC/B,IAAI,IAAI,CAAC,SAAS,EACd,OAAO,IAAI,CAAC,SAAS;QAEzB,OAAO;YACHA;YACA,OAAO,IAAI,CAAC,MAAM;YAClB,aAAa,IAAI,CAAC,YAAY;YAC9B,MAAM,IAAI,CAAC,KAAK;YAChB,QAAQ,IAAI,CAAC,cAAc,GACrBF,qBAAqB,UAAU,CAC3B,IAAI,CAAC,cAAc,CAACA,qBAAqB,MAAM,OAEnD,EAAE;YACR,OAAO,IAAI,CAAC,MAAM;QACtB;IACJ;AACJ;AAEO,MAAMG;IAQT,YAAYD,EAAW,CAAE;aAHjB,YAAY,GAAwD,EAAE;aACtE,aAAa,GAAG;QAGpB,IAAI,CAAC,GAAG,GAAGA;IACf;IAEA,SAASE,IAAY,EAAEC,QAAkC,EAAQ;QAC7D,IAAI,CAAC,SAAS,GAAGD;QACjB,IAAI,CAAC,iBAAiB,GAAGC;QACzB,OAAO,IAAI;IACf;IAEA,IAAIC,KAAa,EAAEC,SAAqC,EAAQ;QAC5D,MAAMC,KAAK,IAAIb;QACfY,UAAUC;QACV,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YAAEF;YAAO,YAAYE;QAAG;QAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG;QAChD,OAAO,IAAI;IACf;IAEA,OAAOC,OAAe,EAAQ;QAC1B,OAAO,IAAI;IACf;IAEA,MAAMA,OAAe,EAAQ;QACzB,OAAO,IAAI;IACf;IAEA,MAAMR,CAAU,EAAQ;QACpB,IAAI,CAAC,MAAM,GAAGA;QACd,OAAO,IAAI;IACf;IAEA,QAAmB;QACf,OAAO;YACH,MAAM;YACN,IAAI,IAAI,CAAC,GAAG;YACZ,UAAU,IAAI,CAAC,SAAS;YACxB,kBAAkB,IAAI,CAAC,iBAAiB;YACxC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAACS,CAAAA,IAAKA,EAAE,UAAU,CAAC,MAAM,CAACA,EAAE,KAAK;YAC5D,OAAO,IAAI,CAAC,MAAM;QACtB;IACJ;AACJ;AAEO,MAAMC;IAGT,YAAoBC,KAAgB,CAAE;aAAlBA,KAAK,GAALA;aAFZ,aAAa,GAAG;IAEe;IAEvC,SAASR,IAAY,EAAEC,QAAkC,EAAQ;QAC7D,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAGD;QACtB,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAGC;QAC9B,OAAO,IAAI;IACf;IAEA,IAAIC,KAAa,EAAEC,SAAqC,EAAQ;QAC5D,MAAMX,WAAW,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAACiB,CAAAA,IAAKA,EAAE,EAAE,KAAKP;QACpD,IAAIV,UACAW,UAAU,IAAIZ,WAAWC;aACtB;YACH,MAAMY,KAAK,IAAIb;YACfY,UAAUC;YACV,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAACA,GAAG,MAAM,CAACF;YAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG;QAClD;QACA,OAAO,IAAI;IACf;IAEA,OAAOQ,MAAc,EAAQ;QACzB,IAAI,IAAI,CAAC,aAAa,IAAI,GAAG;YACzB,MAAMC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE;YAC5D,MAAMC,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAACH,CAAAA,IAAKA,EAAE,EAAE,KAAKC;YAC1D,IAAIE,AAAc,OAAdA,WACA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAACA,WAAW,GAAGD;iBAErC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAACA;QAE7B;QACA,OAAO,IAAI;IACf;IAEA,MAAMD,MAAc,EAAQ;QACxB,IAAI,IAAI,CAAC,aAAa,IAAI,GAAG;YACzB,MAAMC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE;YAC5D,MAAMC,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAACH,CAAAA,IAAKA,EAAE,EAAE,KAAKC;YAC1D,IAAIE,AAAc,OAAdA,WACA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAACA,YAAY,GAAG,GAAGD;iBAEzC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAACA;QAE7B;QACA,OAAO,IAAI;IACf;IAEA,MAAMd,CAAU,EAAQ;QACpB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAGA;QACnB,OAAO,IAAI;IACf;IAEA,QAAmB;QACf,OAAO,IAAI,CAAC,KAAK;IACrB;AACJ;AAEO,MAAMD;IACT,OAAO,SAAyB;QAC5B,OAAO;YACH,KAAI,GAAGiB,QAAkB;gBACrB,IAAIC;gBACJ,MAAMC,UAAuB;oBACzB,QAAOL,MAAc;wBACjBI,WAAW;4BAAE,MAAM;4BAAUJ;wBAAO;wBACpC,OAAOK;oBACX;oBACA,OAAML,MAAc;wBAChBI,WAAW;4BAAE,MAAM;4BAASJ;wBAAO;wBACnC,OAAOK;oBACX;oBACA;wBACI,OAAO;4BAAE,MAAM;4BAAOF;4BAAUC;wBAAS;oBAC7C;gBACJ;gBACA,OAAOC;YACX;YACA;gBACI,IAAIC;gBACJ,IAAIC;gBACJ,IAAIC;gBACJ,MAAMH,UAA6B;oBAC/B,OAAMtB,IAAY;wBACduB,SAASvB;wBACT,OAAOsB;oBACX;oBACA,aAAYtB,IAAY;wBACpBwB,eAAexB;wBACf,OAAOsB;oBACX;oBACA,OAAMlB,CAAU;wBACZqB,SAASrB;wBACT,OAAOkB;oBACX;oBACA;wBACI,OAAO;4BACH,MAAM;4BACN,OAAOC;4BACP,aAAaC;4BACb,OAAOC;wBACX;oBACJ;gBACJ;gBACA,OAAOH;YACX;YACA;gBACI,IAAII;gBACJ,IAAIC,aAAwD;gBAC5D,IAAIF;gBACJ,MAAMH,UAAyB;oBAC3B,SAAQtB,IAAY;wBAChB0B,WAAW1B;wBACX,OAAOsB;oBACX;oBACA,WAAUM,IAA+C;wBACrDD,aAAaC;wBACb,OAAON;oBACX;oBACA,OAAMlB,CAAU;wBACZqB,SAASrB;wBACT,OAAOkB;oBACX;oBACA;wBACI,OAAO;4BACH,MAAM;4BACN,SAASI;4BACT,WAAWC;4BACX,OAAOF;wBACX;oBACJ;gBACJ;gBACA,OAAOH;YACX;YACA,MAAKjB,EAAW;gBACZ,OAAO,IAAIC,YAAYD;YAC3B;YACA,SAAQwB,QAAgB,EAAEC,KAA+B;gBACrD,OAAO;oBACH;wBACI,OAAO;4BAAE,MAAM;4BAAWD;4BAAUC;wBAAM;oBAC9C;gBACJ;YACJ;YACA,QACIC,SAAiB,EACjBC,KAEsE;gBAEtE,OAAO;oBACH;wBACI,OAAO;4BACH,MAAM;4BACND;4BACA,OAAO5B,qBAAqB,kBAAkB,CAAC6B;wBACnD;oBACJ;gBACJ;YACJ;QACJ;IACJ;IAEA,OAAO,WAAWC,QAA8B,EAAgB;QAC5D,OAAOA,SAAS,GAAG,CAACC,CAAAA,IAAKA,EAAE,KAAK;IACpC;IAEA,OAAO,sBAAsBC,KAAmB,EAAgB;QAC5D,MAAMC,SAAuB,EAAE;QAC/B,MAAMC,WAA6D,EAAE;QAErE,KAAK,MAAMC,QAAQH,MACf,IAAIG,AAAc,UAAdA,KAAK,IAAI,IAAcA,KAAK,QAAQ,EACpCD,SAAS,IAAI,CAAC;YAAEC;YAAM,UAAUA,KAAK,QAAQ;QAAC;aAE9CF,OAAO,IAAI,CAACE;QAIpB,KAAK,MAAM,EAAEA,IAAI,EAAEjB,QAAQ,EAAE,IAAIgB,SAAU;YACvC,MAAME,cAAcH,OAAO,SAAS,CAChCI,CAAAA,IAAKA,AAAW,UAAXA,EAAE,IAAI,IAAeA,EAAe,QAAQ,CAAC,QAAQ,CAACnB,SAAS,MAAM;YAE9E,IAAIkB,AAAgB,OAAhBA,aAAoB;gBACpBH,OAAO,IAAI,CAACE;gBACZ;YACJ;YACA,MAAMG,WAAWpB,AAAkB,YAAlBA,SAAS,IAAI,GAAekB,cAAc,IAAIA;YAC/DH,OAAO,MAAM,CAACK,UAAU,GAAGH;QAC/B;QAEA,OAAOF;IACX;IAEA,OAAO,mBACHJ,KAEsE,EAC3B;QAC3C,MAAMU,MAAMvC,qBAAqB,MAAM;QACvC,IAAI,AAAiB,cAAjB,OAAO6B,OACP,OAAO7B,qBAAqB,qBAAqB,CAC7CA,qBAAqB,UAAU,CAAC6B,MAAMU;QAG9C,MAAMC,WAAyC,CAAC;QAChD,KAAK,MAAM,CAACC,OAAO1C,QAAQ,IAAI2C,OAAO,OAAO,CAACb,OAC1CW,QAAQ,CAACC,MAAM,GAAGzC,qBAAqB,qBAAqB,CACxDA,qBAAqB,UAAU,CAACD,QAAQwC;QAGhD,OAAOC;IACX;IAEA,OAAO,iBAAiBL,IAAgB,EAAqB;QACzD,MAAMQ,SAA4B;YAC9BR;YACA,QAAOrB,MAAc;gBACjB6B,OAAO,QAAQ,GAAG;oBAAE,MAAM;oBAAU7B;gBAAO;gBAC3C,OAAO6B;YACX;YACA,OAAM7B,MAAc;gBAChB6B,OAAO,QAAQ,GAAG;oBAAE,MAAM;oBAAS7B;gBAAO;gBAC1C,OAAO6B;YACX;YACA,SAAQ7B,MAAc;gBAClB6B,OAAO,QAAQ,GAAG;oBAAE,MAAM;oBAAW7B;gBAAO;gBAC5C,OAAO6B;YACX;QACJ;QACA,OAAOA;IACX;IAEA,OAAO,cAAcR,IAAgB,EAAES,MAAc,EAAW;QAC5D,IAAI,QAAQT,QAAQA,KAAK,EAAE,KAAKS,QAC5B,OAAO;QAEX,IAAIT,AAAc,aAAdA,KAAK,IAAI,IAAiBA,KAAK,SAAS,KAAKS,QAC7C,OAAO;QAEX,OAAO;IACX;IAEA,OAAO,aAAaC,MAAoB,EAAED,MAAc,EAA0B;QAC9E,KAAK,MAAMT,QAAQU,OAAQ;YACvB,IAAI7C,qBAAqB,aAAa,CAACmC,MAAMS,SACzC,OAAOT;YAEX,IAAIA,AAAc,WAAdA,KAAK,IAAI,EACT,KAAK,MAAMpB,OAAOoB,KAAK,IAAI,CAAE;gBACzB,MAAMW,QAAQ9C,qBAAqB,YAAY,CAACe,IAAI,MAAM,EAAE6B;gBAC5D,IAAIE,OACA,OAAOA;YAEf;QAER;IAEJ;IAEA,OAAO,qBAAqBC,KAA0B,EAAkB;QACpE,MAAMR,MAAMvC,qBAAqB,MAAM;QACvC,OAAO;YACH,IAAI+C,MAAM,EAAE;YACZ,OAAOA,MAAM,KAAK;YAClB,aAAaA,MAAM,WAAW;YAC9B,MAAMA,MAAM,IAAI;YAChB,OAAOA,MAAM,KAAK;YAClB,QAAQ/C,qBAAqB,UAAU,CAAC+C,MAAM,MAAM,CAACR;QACzD;IACJ;IAEA,OAAO,YAAYJ,IAAe,EAAU;QACxC,OAAO,CAAC,OAAO,EAAEA,KAAK,IAAI,CAAC,GAAG,CAACtB,CAAAA,IAAKA,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM;IACzD;IAEA,OAAO,WAAWgC,MAAoB,EAAED,MAAc,EAA2B;QAC7E,OAAO;YACH,IAAI,CAAsCnB;gBACtC,MAAMU,OAAOnC,qBAAqB,YAAY,CAAC6C,QAAQD;gBACvD,IAAI,CAACT,MACD,MAAM,IAAIa,MAAM,CAAC,aAAa,EAAEJ,OAAO,YAAY,CAAC;gBAExD,IAAIT,KAAK,IAAI,KAAKV,MACd,MAAM,IAAIuB,MACN,CAAC,aAAa,EAAEJ,OAAO,WAAW,EAAET,KAAK,IAAI,CAAC,QAAQ,EAAEV,KAAK,EAAE,CAAC;gBAIxE,IAAIA,AAAS,WAATA,MACA,OAAO,IAAId,kBACPwB;gBAIR,OAAOA;YACX;QACJ;IACJ;IAEA,OAAO,gBACHc,MAA2B,EAC3BnB,QAAoE,EACpEoB,SAA8C,EAC9CjB,MAAuB,EACnB;QACJ,MAAMkB,UAAUrB,oBAAoBsB,MAAMtB,SAAS,OAAO,KAAKY,OAAO,OAAO,CAACZ;QAC9E,KAAK,MAAM,CAAC1B,MAAMe,QAAQ,IAAIgC,QAAS;YACnC,IAAI,CAAChC,WAAW,AAAmB,YAAnB,OAAOA,SACnB;YAEJ,IAAI+B,UAAU/B,UACVc,OAAO,IAAI,CAACd;YAEhB,MAAMkC,QAAQJ,kBAAkBG,MAAMH,OAAO,GAAG,CAAC7C,QAAQkD;YACzD,IAAID,SAASE,cAAcF,QAAQ;gBAC/BrD,qBAAqB,eAAe,CAChCqD,MAAM,QAAQ,EACdA,MAAM,MAAM,CAAC,aAAa,EAC1BH,WACAjB;gBAEJ,MAAMuB,YAAaH,MAAM,MAAM,CAAwB,SAAS;gBAChE,IAAIG,WACA,KAAK,MAAMC,OAAOD,UACdxD,qBAAqB,mBAAmB,CACpCyD,IAAI,aAAa,EACjBP,WACAjB;YAIhB;QACJ;IACJ;IAEA,OAAO,gBAAgBY,MAAoB,EAAY;QACnD,MAAMa,MAAgB,EAAE;QACxB,KAAK,MAAMvB,QAAQU,OACf,IAAIV,AAAc,UAAdA,KAAK,IAAI,EACTuB,IAAI,IAAI,IAAIvB,KAAK,QAAQ;aACtB,IAAIA,AAAc,WAAdA,KAAK,IAAI,EAChB,KAAK,MAAMpB,OAAOoB,KAAK,IAAI,CACvBuB,IAAI,IAAI,IAAI1D,qBAAqB,eAAe,CAACe,IAAI,MAAM;aAE5D,IAAIoB,AAAc,aAAdA,KAAK,IAAI,EAChBuB,IAAI,IAAI,CAACvB,KAAK,SAAS;QAG/B,OAAOuB;IACX;IAEA,OAAO,oBACH5B,QAAuC,EACvCoB,SAA8C,EAC9CjB,MAAuB,EACnB;QACJ,KAAK,MAAMd,WAAWuB,OAAO,MAAM,CAACZ,UAChC,IAAI,AAACX,WAAW,AAAmB,YAAnB,OAAOA,SAGvB;YAAA,IAAI+B,UAAU/B,UACVc,OAAO,IAAI,CAACd;QAChB;IAER;AACJ"}
@@ -15,6 +15,12 @@ class LayoutMutator {
15
15
  };
16
16
  return LayoutBuilderFactory.createNodeHandle(node);
17
17
  },
18
+ alert () {
19
+ const node = {
20
+ type: "alert"
21
+ };
22
+ return LayoutBuilderFactory.createNodeHandle(node);
23
+ },
18
24
  tabs (config) {
19
25
  const node = {
20
26
  type: "tabs",
@@ -1 +1 @@
1
- {"version":3,"file":"features/formModel/LayoutMutator.js","sources":["../../../src/features/formModel/LayoutMutator.ts"],"sourcesContent":["import { LayoutBuilderFactory } from \"./LayoutBuilderFactory.js\";\nimport type {\n ILayoutModifier,\n ILayoutNodeHandle,\n IPositionedLayoutNode,\n ILayoutNodeAccessHandle,\n ITabDefinitionInput,\n IRule,\n LayoutNode,\n LayoutPosition,\n IRowNode,\n ISeparatorNode,\n ITabsNode,\n IElementNode,\n IObjectNode,\n ILayoutBuilder,\n ILayoutNodeBuilder\n} from \"./abstractions.js\";\n\nexport class LayoutMutator {\n createModifierAPI(removals: string[]): ILayoutModifier {\n return {\n row(...fieldIds: string[]): ILayoutNodeHandle {\n const node: IRowNode = { type: \"row\", fieldIds };\n return LayoutBuilderFactory.createNodeHandle(node);\n },\n separator(): ILayoutNodeHandle {\n const node: ISeparatorNode = { type: \"separator\" };\n return LayoutBuilderFactory.createNodeHandle(node);\n },\n tabs(config: {\n id?: string;\n renderer?: string;\n tabs: ITabDefinitionInput[];\n rules?: IRule[];\n }): ILayoutNodeHandle {\n const node: ITabsNode = {\n type: \"tabs\",\n id: config.id,\n renderer: config.renderer,\n tabs: config.tabs.map(LayoutBuilderFactory.resolveTabDefinition),\n rules: config.rules\n };\n return LayoutBuilderFactory.createNodeHandle(node);\n },\n element(renderer: string, props?: Record<string, unknown>): ILayoutNodeHandle {\n const node: IElementNode = { type: \"element\", renderer, props };\n return LayoutBuilderFactory.createNodeHandle(node);\n },\n object(\n fieldName: string,\n inner:\n | ((layout: ILayoutBuilder) => ILayoutNodeBuilder[])\n | Record<string, (layout: ILayoutBuilder) => ILayoutNodeBuilder[]>\n ): ILayoutNodeHandle {\n const node: IObjectNode = {\n type: \"object\",\n fieldName,\n inner: LayoutBuilderFactory.resolveObjectInner(inner)\n };\n return LayoutBuilderFactory.createNodeHandle(node);\n },\n remove(target: string): void {\n removals.push(target);\n }\n };\n }\n\n applyModifications(\n layout: LayoutNode[],\n factory: (modifier: ILayoutModifier) => (LayoutNode | IPositionedLayoutNode)[]\n ): LayoutNode[] {\n const removals: string[] = [];\n const modifierAPI = this.createModifierAPI(removals);\n const entries = factory(modifierAPI);\n\n let result = layout;\n\n for (const target of removals) {\n result = this.removeFromLayout(result, target);\n }\n\n for (const entry of entries) {\n if (this.isPositionedNode(entry)) {\n const { node, position } = entry;\n if (position) {\n result = this.insertIntoLayout(result, node, position);\n } else {\n result = [...result, node];\n }\n } else {\n result = [...result, entry];\n }\n }\n\n return result;\n }\n\n accessNode(layout: LayoutNode[], nodeId: string): ILayoutNodeAccessHandle {\n return LayoutBuilderFactory.accessNode(layout, nodeId);\n }\n\n removeFromLayout(layout: LayoutNode[], target: string): LayoutNode[] {\n return layout\n .map(node => {\n if (node.type === \"row\") {\n const filtered = node.fieldIds.filter(id => id !== target);\n if (filtered.length === 0) {\n return null;\n }\n return { ...node, fieldIds: filtered };\n }\n if (\n (node.type === \"tabs\" && node.id === target) ||\n (node.type === \"element\" && (node.id === target || node.renderer === target)) ||\n (node.type === \"object\" && node.fieldName === target)\n ) {\n return null;\n }\n return node;\n })\n .filter(Boolean) as LayoutNode[];\n }\n\n insertIntoLayout(\n layout: LayoutNode[],\n node: LayoutNode,\n position: LayoutPosition\n ): LayoutNode[] {\n const targetIndex = this.findIndex(layout, position.target);\n\n if (targetIndex === -1) {\n return [...layout, node];\n }\n\n const result = [...layout];\n\n switch (position.type) {\n case \"before\":\n result.splice(targetIndex, 0, node);\n break;\n case \"after\":\n result.splice(targetIndex + 1, 0, node);\n break;\n case \"replace\":\n result.splice(targetIndex, 1, node);\n break;\n }\n\n return result;\n }\n\n isPositionedNode(entry: LayoutNode | IPositionedLayoutNode): entry is IPositionedLayoutNode {\n return \"node\" in entry;\n }\n\n private findIndex(layout: LayoutNode[], target: string): number {\n return layout.findIndex(node => this.nodeMatchesTarget(node, target));\n }\n\n private nodeMatchesTarget(node: LayoutNode, target: string): boolean {\n switch (node.type) {\n case \"row\":\n return node.fieldIds.includes(target);\n case \"tabs\":\n return node.id === target;\n case \"element\":\n return node.id === target || node.renderer === target;\n case \"object\":\n return node.fieldName === target;\n default:\n return false;\n }\n }\n}\n"],"names":["LayoutMutator","removals","fieldIds","node","LayoutBuilderFactory","config","renderer","props","fieldName","inner","target","layout","factory","modifierAPI","entries","result","entry","position","nodeId","filtered","id","Boolean","targetIndex"],"mappings":"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"}
1
+ {"version":3,"file":"features/formModel/LayoutMutator.js","sources":["../../../src/features/formModel/LayoutMutator.ts"],"sourcesContent":["import { LayoutBuilderFactory } from \"./LayoutBuilderFactory.js\";\nimport type {\n ILayoutModifier,\n ILayoutNodeHandle,\n IPositionedLayoutNode,\n ILayoutNodeAccessHandle,\n ITabDefinitionInput,\n IRule,\n LayoutNode,\n LayoutPosition,\n IRowNode,\n ISeparatorNode,\n IAlertNode,\n ITabsNode,\n IElementNode,\n IObjectNode,\n ILayoutBuilder,\n ILayoutNodeBuilder\n} from \"./abstractions.js\";\n\nexport class LayoutMutator {\n createModifierAPI(removals: string[]): ILayoutModifier {\n return {\n row(...fieldIds: string[]): ILayoutNodeHandle {\n const node: IRowNode = { type: \"row\", fieldIds };\n return LayoutBuilderFactory.createNodeHandle(node);\n },\n separator(): ILayoutNodeHandle {\n const node: ISeparatorNode = { type: \"separator\" };\n return LayoutBuilderFactory.createNodeHandle(node);\n },\n alert(): ILayoutNodeHandle {\n const node: IAlertNode = { type: \"alert\" };\n return LayoutBuilderFactory.createNodeHandle(node);\n },\n tabs(config: {\n id?: string;\n renderer?: string;\n tabs: ITabDefinitionInput[];\n rules?: IRule[];\n }): ILayoutNodeHandle {\n const node: ITabsNode = {\n type: \"tabs\",\n id: config.id,\n renderer: config.renderer,\n tabs: config.tabs.map(LayoutBuilderFactory.resolveTabDefinition),\n rules: config.rules\n };\n return LayoutBuilderFactory.createNodeHandle(node);\n },\n element(renderer: string, props?: Record<string, unknown>): ILayoutNodeHandle {\n const node: IElementNode = { type: \"element\", renderer, props };\n return LayoutBuilderFactory.createNodeHandle(node);\n },\n object(\n fieldName: string,\n inner:\n | ((layout: ILayoutBuilder) => ILayoutNodeBuilder[])\n | Record<string, (layout: ILayoutBuilder) => ILayoutNodeBuilder[]>\n ): ILayoutNodeHandle {\n const node: IObjectNode = {\n type: \"object\",\n fieldName,\n inner: LayoutBuilderFactory.resolveObjectInner(inner)\n };\n return LayoutBuilderFactory.createNodeHandle(node);\n },\n remove(target: string): void {\n removals.push(target);\n }\n };\n }\n\n applyModifications(\n layout: LayoutNode[],\n factory: (modifier: ILayoutModifier) => (LayoutNode | IPositionedLayoutNode)[]\n ): LayoutNode[] {\n const removals: string[] = [];\n const modifierAPI = this.createModifierAPI(removals);\n const entries = factory(modifierAPI);\n\n let result = layout;\n\n for (const target of removals) {\n result = this.removeFromLayout(result, target);\n }\n\n for (const entry of entries) {\n if (this.isPositionedNode(entry)) {\n const { node, position } = entry;\n if (position) {\n result = this.insertIntoLayout(result, node, position);\n } else {\n result = [...result, node];\n }\n } else {\n result = [...result, entry];\n }\n }\n\n return result;\n }\n\n accessNode(layout: LayoutNode[], nodeId: string): ILayoutNodeAccessHandle {\n return LayoutBuilderFactory.accessNode(layout, nodeId);\n }\n\n removeFromLayout(layout: LayoutNode[], target: string): LayoutNode[] {\n return layout\n .map(node => {\n if (node.type === \"row\") {\n const filtered = node.fieldIds.filter(id => id !== target);\n if (filtered.length === 0) {\n return null;\n }\n return { ...node, fieldIds: filtered };\n }\n if (\n (node.type === \"tabs\" && node.id === target) ||\n (node.type === \"element\" && (node.id === target || node.renderer === target)) ||\n (node.type === \"object\" && node.fieldName === target)\n ) {\n return null;\n }\n return node;\n })\n .filter(Boolean) as LayoutNode[];\n }\n\n insertIntoLayout(\n layout: LayoutNode[],\n node: LayoutNode,\n position: LayoutPosition\n ): LayoutNode[] {\n const targetIndex = this.findIndex(layout, position.target);\n\n if (targetIndex === -1) {\n return [...layout, node];\n }\n\n const result = [...layout];\n\n switch (position.type) {\n case \"before\":\n result.splice(targetIndex, 0, node);\n break;\n case \"after\":\n result.splice(targetIndex + 1, 0, node);\n break;\n case \"replace\":\n result.splice(targetIndex, 1, node);\n break;\n }\n\n return result;\n }\n\n isPositionedNode(entry: LayoutNode | IPositionedLayoutNode): entry is IPositionedLayoutNode {\n return \"node\" in entry;\n }\n\n private findIndex(layout: LayoutNode[], target: string): number {\n return layout.findIndex(node => this.nodeMatchesTarget(node, target));\n }\n\n private nodeMatchesTarget(node: LayoutNode, target: string): boolean {\n switch (node.type) {\n case \"row\":\n return node.fieldIds.includes(target);\n case \"tabs\":\n return node.id === target;\n case \"element\":\n return node.id === target || node.renderer === target;\n case \"object\":\n return node.fieldName === target;\n default:\n return false;\n }\n }\n}\n"],"names":["LayoutMutator","removals","fieldIds","node","LayoutBuilderFactory","config","renderer","props","fieldName","inner","target","layout","factory","modifierAPI","entries","result","entry","position","nodeId","filtered","id","Boolean","targetIndex"],"mappings":"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"}
@@ -15,6 +15,7 @@ export declare class LayoutResolver {
15
15
  private resolveNode;
16
16
  private resolveRowNode;
17
17
  private resolveSeparatorNode;
18
+ private resolveAlertNode;
18
19
  private resolveTabsNode;
19
20
  private resolveElementNode;
20
21
  private resolveObjectNode;
@@ -21,7 +21,9 @@ class LayoutResolver {
21
21
  case "row":
22
22
  return this.resolveRowNode(node);
23
23
  case "separator":
24
- return this.resolveSeparatorNode();
24
+ return this.resolveSeparatorNode(node);
25
+ case "alert":
26
+ return this.resolveAlertNode(node);
25
27
  case "tabs":
26
28
  return this.resolveTabsNode(node);
27
29
  case "element":
@@ -40,9 +42,26 @@ class LayoutResolver {
40
42
  fields
41
43
  };
42
44
  }
43
- resolveSeparatorNode() {
45
+ resolveSeparatorNode(node) {
46
+ if (node.rules) {
47
+ const state = this._evaluateRules(node.rules);
48
+ if (!state.visible) return null;
49
+ }
50
+ return {
51
+ type: "separator",
52
+ title: node.title,
53
+ description: node.description
54
+ };
55
+ }
56
+ resolveAlertNode(node) {
57
+ if (node.rules) {
58
+ const state = this._evaluateRules(node.rules);
59
+ if (!state.visible) return null;
60
+ }
44
61
  return {
45
- type: "separator"
62
+ type: "alert",
63
+ message: node.message,
64
+ alertType: node.alertType ?? "info"
46
65
  };
47
66
  }
48
67
  resolveTabsNode(node) {
@@ -70,6 +89,7 @@ class LayoutResolver {
70
89
  type: "tabs",
71
90
  id: node.id,
72
91
  renderer: node.renderer,
92
+ rendererSettings: node.rendererSettings,
73
93
  tabs,
74
94
  disabled: containerState.disabled,
75
95
  activeTabId: validActive,
@@ -109,9 +129,9 @@ class LayoutResolver {
109
129
  };
110
130
  }
111
131
  case "separator":
112
- return {
113
- type: "separator"
114
- };
132
+ return this.resolveSeparatorNode(node);
133
+ case "alert":
134
+ return this.resolveAlertNode(node);
115
135
  case "element":
116
136
  return this.resolveElementNode(node);
117
137
  case "object":
@@ -156,6 +176,7 @@ class LayoutResolver {
156
176
  type: "tabs",
157
177
  id: node.id,
158
178
  renderer: node.renderer,
179
+ rendererSettings: node.rendererSettings,
159
180
  tabs,
160
181
  disabled: containerState.disabled,
161
182
  activeTabId: validActive,
@@ -1 +1 @@
1
- {"version":3,"file":"features/formModel/LayoutResolver.js","sources":["../../../src/features/formModel/LayoutResolver.ts"],"sourcesContent":["import { runInAction } from \"mobx\";\nimport type { ObservableMap } from \"mobx\";\nimport { isObjectField } from \"./ObjectField.js\";\nimport { LayoutBuilderFactory } from \"./LayoutBuilderFactory.js\";\nimport type {\n IField,\n IRule,\n LayoutNode,\n LayoutNodeVM,\n IRowNode,\n IRowNodeVM,\n ISeparatorNodeVM,\n ITabsNode,\n ITabsNodeVM,\n ITabDefinitionVM,\n IElementNode,\n IElementNodeVM,\n IObjectNode\n} from \"./abstractions.js\";\n\ntype RuleEvaluatorFn = (rules: IRule[] | undefined) => { visible: boolean; disabled: boolean };\n\nexport class LayoutResolver {\n constructor(\n private _fields: Map<string, IField>,\n private _activeTabs: ObservableMap<string, string>,\n private _evaluateRules: RuleEvaluatorFn\n ) {}\n\n resolve(layout: LayoutNode[]): LayoutNodeVM[] {\n return layout.map(node => this.resolveNode(node)).filter(Boolean) as LayoutNodeVM[];\n }\n\n resolveChildLayout(layout: LayoutNode[], children: Map<string, IField>): LayoutNodeVM[] {\n return layout\n .map(node => this.resolveChildNode(node, children))\n .filter(Boolean) as LayoutNodeVM[];\n }\n\n collectFieldIds(layout: LayoutNode[]): string[] {\n return LayoutBuilderFactory.collectFieldIds(layout);\n }\n\n private resolveNode(node: LayoutNode): LayoutNodeVM | null {\n switch (node.type) {\n case \"row\":\n return this.resolveRowNode(node);\n case \"separator\":\n return this.resolveSeparatorNode();\n case \"tabs\":\n return this.resolveTabsNode(node);\n case \"element\":\n return this.resolveElementNode(node);\n case \"object\":\n return this.resolveObjectNode(node);\n default:\n return null;\n }\n }\n\n private resolveRowNode(node: IRowNode): IRowNodeVM | null {\n const fields = node.fieldIds\n .map(id => this._fields.get(id))\n .filter((f): f is IField => f !== undefined && f.visible)\n .map(f => f.vm);\n\n if (fields.length === 0) {\n return null;\n }\n\n return { type: \"row\", fields };\n }\n\n private resolveSeparatorNode(): ISeparatorNodeVM {\n return { type: \"separator\" };\n }\n\n private resolveTabsNode(node: ITabsNode): ITabsNodeVM | null {\n if (node.tabs.length === 0) {\n return null;\n }\n\n const containerState = this._evaluateRules(node.rules);\n if (!containerState.visible) {\n return null;\n }\n\n const tabKey = node.id || LayoutBuilderFactory.tabsNodeKey(node);\n\n const tabs: ITabDefinitionVM[] = [];\n for (const tab of node.tabs) {\n const tabState = this._evaluateRules(tab.rules);\n if (!tabState.visible) {\n continue;\n }\n tabs.push({\n id: tab.id,\n label: tab.label,\n description: tab.description,\n icon: tab.icon,\n hasErrors: this.tabHasErrors(tab.layout),\n disabled: containerState.disabled || tabState.disabled,\n layout: tab.layout\n .map(child => this.resolveNode(child))\n .filter(Boolean) as LayoutNodeVM[]\n });\n }\n\n if (tabs.length === 0) {\n return null;\n }\n\n const storedActive = this._activeTabs.get(tabKey);\n const validActive = tabs.find(t => t.id === storedActive) ? storedActive! : tabs[0].id;\n\n return {\n type: \"tabs\",\n id: node.id,\n renderer: node.renderer,\n tabs,\n disabled: containerState.disabled,\n activeTabId: validActive,\n setActiveTab: (id: string) => {\n runInAction(() => {\n this._activeTabs.set(tabKey, id);\n });\n }\n };\n }\n\n private resolveElementNode(node: IElementNode): IElementNodeVM {\n return {\n type: \"element\",\n renderer: node.renderer,\n props: node.props\n };\n }\n\n private resolveObjectNode(node: IObjectNode): IRowNodeVM | null {\n const field = this._fields.get(node.fieldName);\n if (!field || !field.visible) {\n return null;\n }\n return { type: \"row\", fields: [field.vm] };\n }\n\n private resolveChildNode(node: LayoutNode, children: Map<string, IField>): LayoutNodeVM | null {\n switch (node.type) {\n case \"row\": {\n const fields = node.fieldIds\n .map(id => children.get(id))\n .filter((f): f is IField => f !== undefined && f.visible)\n .map(f => f.vm);\n if (fields.length === 0) {\n return null;\n }\n return { type: \"row\", fields };\n }\n case \"separator\":\n return { type: \"separator\" };\n case \"element\":\n return this.resolveElementNode(node);\n case \"object\": {\n const field = children.get(node.fieldName);\n if (!field || !field.visible) {\n return null;\n }\n return { type: \"row\", fields: [field.vm] };\n }\n case \"tabs\":\n return this.resolveChildTabsNode(node, children);\n default:\n return null;\n }\n }\n\n private resolveChildTabsNode(\n node: ITabsNode,\n children: Map<string, IField>\n ): ITabsNodeVM | null {\n if (node.tabs.length === 0) {\n return null;\n }\n const containerState = this._evaluateRules(node.rules);\n if (!containerState.visible) {\n return null;\n }\n const tabKey = node.id || LayoutBuilderFactory.tabsNodeKey(node);\n const tabs: ITabDefinitionVM[] = [];\n for (const tab of node.tabs) {\n const tabState = this._evaluateRules(tab.rules);\n if (!tabState.visible) {\n continue;\n }\n tabs.push({\n id: tab.id,\n label: tab.label,\n description: tab.description,\n icon: tab.icon,\n hasErrors: this.childTabHasErrors(tab.layout, children),\n disabled: containerState.disabled || tabState.disabled,\n layout: tab.layout\n .map(child => this.resolveChildNode(child, children))\n .filter(Boolean) as LayoutNodeVM[]\n });\n }\n if (tabs.length === 0) {\n return null;\n }\n const storedActive = this._activeTabs.get(tabKey);\n const validActive = tabs.find(t => t.id === storedActive) ? storedActive! : tabs[0].id;\n return {\n type: \"tabs\",\n id: node.id,\n renderer: node.renderer,\n tabs,\n disabled: containerState.disabled,\n activeTabId: validActive,\n setActiveTab: (id: string) => {\n runInAction(() => {\n this._activeTabs.set(tabKey, id);\n });\n }\n };\n }\n\n private tabHasErrors(layout: LayoutNode[]): boolean {\n const fieldIds = this.collectFieldIds(layout);\n for (const id of fieldIds) {\n const field = this._fields.get(id);\n if (!field) {\n continue;\n }\n if (field.vm.validation.isValid === false) {\n return true;\n }\n if (isObjectField(field) && field.hasErrors) {\n return true;\n }\n }\n return false;\n }\n\n private childTabHasErrors(layout: LayoutNode[], children: Map<string, IField>): boolean {\n for (const node of layout) {\n if (node.type === \"row\") {\n for (const id of node.fieldIds) {\n const field = children.get(id);\n if (!field) {\n continue;\n }\n if (field.vm.validation.isValid === false) {\n return true;\n }\n if (isObjectField(field) && field.hasErrors) {\n return true;\n }\n }\n } else if (node.type === \"object\") {\n const field = children.get(node.fieldName);\n if (field && isObjectField(field) && field.hasErrors) {\n return true;\n }\n } else if (node.type === \"tabs\") {\n for (const tab of node.tabs) {\n if (this.childTabHasErrors(tab.layout, children)) {\n return true;\n }\n }\n }\n }\n return false;\n }\n}\n"],"names":["LayoutResolver","_fields","_activeTabs","_evaluateRules","layout","node","Boolean","children","LayoutBuilderFactory","fields","id","f","undefined","containerState","tabKey","tabs","tab","tabState","child","storedActive","validActive","t","runInAction","field","fieldIds","isObjectField"],"mappings":"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"}
1
+ {"version":3,"file":"features/formModel/LayoutResolver.js","sources":["../../../src/features/formModel/LayoutResolver.ts"],"sourcesContent":["import { runInAction } from \"mobx\";\nimport type { ObservableMap } from \"mobx\";\nimport { isObjectField } from \"./ObjectField.js\";\nimport { LayoutBuilderFactory } from \"./LayoutBuilderFactory.js\";\nimport type {\n IField,\n IRule,\n LayoutNode,\n LayoutNodeVM,\n IRowNode,\n IRowNodeVM,\n ISeparatorNode,\n ISeparatorNodeVM,\n IAlertNode,\n IAlertNodeVM,\n ITabsNode,\n ITabsNodeVM,\n ITabDefinitionVM,\n IElementNode,\n IElementNodeVM,\n IObjectNode\n} from \"./abstractions.js\";\n\ntype RuleEvaluatorFn = (rules: IRule[] | undefined) => { visible: boolean; disabled: boolean };\n\nexport class LayoutResolver {\n constructor(\n private _fields: Map<string, IField>,\n private _activeTabs: ObservableMap<string, string>,\n private _evaluateRules: RuleEvaluatorFn\n ) {}\n\n resolve(layout: LayoutNode[]): LayoutNodeVM[] {\n return layout.map(node => this.resolveNode(node)).filter(Boolean) as LayoutNodeVM[];\n }\n\n resolveChildLayout(layout: LayoutNode[], children: Map<string, IField>): LayoutNodeVM[] {\n return layout\n .map(node => this.resolveChildNode(node, children))\n .filter(Boolean) as LayoutNodeVM[];\n }\n\n collectFieldIds(layout: LayoutNode[]): string[] {\n return LayoutBuilderFactory.collectFieldIds(layout);\n }\n\n private resolveNode(node: LayoutNode): LayoutNodeVM | null {\n switch (node.type) {\n case \"row\":\n return this.resolveRowNode(node);\n case \"separator\":\n return this.resolveSeparatorNode(node);\n case \"alert\":\n return this.resolveAlertNode(node);\n case \"tabs\":\n return this.resolveTabsNode(node);\n case \"element\":\n return this.resolveElementNode(node);\n case \"object\":\n return this.resolveObjectNode(node);\n default:\n return null;\n }\n }\n\n private resolveRowNode(node: IRowNode): IRowNodeVM | null {\n const fields = node.fieldIds\n .map(id => this._fields.get(id))\n .filter((f): f is IField => f !== undefined && f.visible)\n .map(f => f.vm);\n\n if (fields.length === 0) {\n return null;\n }\n\n return { type: \"row\", fields };\n }\n\n private resolveSeparatorNode(node: ISeparatorNode): ISeparatorNodeVM | null {\n if (node.rules) {\n const state = this._evaluateRules(node.rules);\n if (!state.visible) {\n return null;\n }\n }\n return { type: \"separator\", title: node.title, description: node.description };\n }\n\n private resolveAlertNode(node: IAlertNode): IAlertNodeVM | null {\n if (node.rules) {\n const state = this._evaluateRules(node.rules);\n if (!state.visible) {\n return null;\n }\n }\n return { type: \"alert\", message: node.message, alertType: node.alertType ?? \"info\" };\n }\n\n private resolveTabsNode(node: ITabsNode): ITabsNodeVM | null {\n if (node.tabs.length === 0) {\n return null;\n }\n\n const containerState = this._evaluateRules(node.rules);\n if (!containerState.visible) {\n return null;\n }\n\n const tabKey = node.id || LayoutBuilderFactory.tabsNodeKey(node);\n\n const tabs: ITabDefinitionVM[] = [];\n for (const tab of node.tabs) {\n const tabState = this._evaluateRules(tab.rules);\n if (!tabState.visible) {\n continue;\n }\n tabs.push({\n id: tab.id,\n label: tab.label,\n description: tab.description,\n icon: tab.icon,\n hasErrors: this.tabHasErrors(tab.layout),\n disabled: containerState.disabled || tabState.disabled,\n layout: tab.layout\n .map(child => this.resolveNode(child))\n .filter(Boolean) as LayoutNodeVM[]\n });\n }\n\n if (tabs.length === 0) {\n return null;\n }\n\n const storedActive = this._activeTabs.get(tabKey);\n const validActive = tabs.find(t => t.id === storedActive) ? storedActive! : tabs[0].id;\n\n return {\n type: \"tabs\",\n id: node.id,\n renderer: node.renderer,\n rendererSettings: node.rendererSettings,\n tabs,\n disabled: containerState.disabled,\n activeTabId: validActive,\n setActiveTab: (id: string) => {\n runInAction(() => {\n this._activeTabs.set(tabKey, id);\n });\n }\n };\n }\n\n private resolveElementNode(node: IElementNode): IElementNodeVM {\n return {\n type: \"element\",\n renderer: node.renderer,\n props: node.props\n };\n }\n\n private resolveObjectNode(node: IObjectNode): IRowNodeVM | null {\n const field = this._fields.get(node.fieldName);\n if (!field || !field.visible) {\n return null;\n }\n return { type: \"row\", fields: [field.vm] };\n }\n\n private resolveChildNode(node: LayoutNode, children: Map<string, IField>): LayoutNodeVM | null {\n switch (node.type) {\n case \"row\": {\n const fields = node.fieldIds\n .map(id => children.get(id))\n .filter((f): f is IField => f !== undefined && f.visible)\n .map(f => f.vm);\n if (fields.length === 0) {\n return null;\n }\n return { type: \"row\", fields };\n }\n case \"separator\":\n return this.resolveSeparatorNode(node);\n case \"alert\":\n return this.resolveAlertNode(node);\n case \"element\":\n return this.resolveElementNode(node);\n case \"object\": {\n const field = children.get(node.fieldName);\n if (!field || !field.visible) {\n return null;\n }\n return { type: \"row\", fields: [field.vm] };\n }\n case \"tabs\":\n return this.resolveChildTabsNode(node, children);\n default:\n return null;\n }\n }\n\n private resolveChildTabsNode(\n node: ITabsNode,\n children: Map<string, IField>\n ): ITabsNodeVM | null {\n if (node.tabs.length === 0) {\n return null;\n }\n const containerState = this._evaluateRules(node.rules);\n if (!containerState.visible) {\n return null;\n }\n const tabKey = node.id || LayoutBuilderFactory.tabsNodeKey(node);\n const tabs: ITabDefinitionVM[] = [];\n for (const tab of node.tabs) {\n const tabState = this._evaluateRules(tab.rules);\n if (!tabState.visible) {\n continue;\n }\n tabs.push({\n id: tab.id,\n label: tab.label,\n description: tab.description,\n icon: tab.icon,\n hasErrors: this.childTabHasErrors(tab.layout, children),\n disabled: containerState.disabled || tabState.disabled,\n layout: tab.layout\n .map(child => this.resolveChildNode(child, children))\n .filter(Boolean) as LayoutNodeVM[]\n });\n }\n if (tabs.length === 0) {\n return null;\n }\n const storedActive = this._activeTabs.get(tabKey);\n const validActive = tabs.find(t => t.id === storedActive) ? storedActive! : tabs[0].id;\n return {\n type: \"tabs\",\n id: node.id,\n renderer: node.renderer,\n rendererSettings: node.rendererSettings,\n tabs,\n disabled: containerState.disabled,\n activeTabId: validActive,\n setActiveTab: (id: string) => {\n runInAction(() => {\n this._activeTabs.set(tabKey, id);\n });\n }\n };\n }\n\n private tabHasErrors(layout: LayoutNode[]): boolean {\n const fieldIds = this.collectFieldIds(layout);\n for (const id of fieldIds) {\n const field = this._fields.get(id);\n if (!field) {\n continue;\n }\n if (field.vm.validation.isValid === false) {\n return true;\n }\n if (isObjectField(field) && field.hasErrors) {\n return true;\n }\n }\n return false;\n }\n\n private childTabHasErrors(layout: LayoutNode[], children: Map<string, IField>): boolean {\n for (const node of layout) {\n if (node.type === \"row\") {\n for (const id of node.fieldIds) {\n const field = children.get(id);\n if (!field) {\n continue;\n }\n if (field.vm.validation.isValid === false) {\n return true;\n }\n if (isObjectField(field) && field.hasErrors) {\n return true;\n }\n }\n } else if (node.type === \"object\") {\n const field = children.get(node.fieldName);\n if (field && isObjectField(field) && field.hasErrors) {\n return true;\n }\n } else if (node.type === \"tabs\") {\n for (const tab of node.tabs) {\n if (this.childTabHasErrors(tab.layout, children)) {\n return true;\n }\n }\n }\n }\n return false;\n }\n}\n"],"names":["LayoutResolver","_fields","_activeTabs","_evaluateRules","layout","node","Boolean","children","LayoutBuilderFactory","fields","id","f","undefined","state","containerState","tabKey","tabs","tab","tabState","child","storedActive","validActive","t","runInAction","field","fieldIds","isObjectField"],"mappings":"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"}