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

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 (1126) hide show
  1. package/base/Admin.d.ts +2 -4
  2. package/base/Admin.js +25 -13
  3. package/base/Admin.js.map +1 -1
  4. package/base/Base/DefaultFieldRenderers.js +41 -2
  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/AutoCompleteRenderer.d.ts +13 -0
  10. package/base/Base/FieldRenderers/AutoCompleteRenderer.js +29 -0
  11. package/base/Base/FieldRenderers/AutoCompleteRenderer.js.map +1 -0
  12. package/base/Base/FieldRenderers/CheckboxesRenderer.js +1 -0
  13. package/base/Base/FieldRenderers/CheckboxesRenderer.js.map +1 -1
  14. package/base/Base/FieldRenderers/DateTimeInputsRenderer.js +5 -1
  15. package/base/Base/FieldRenderers/DateTimeInputsRenderer.js.map +1 -1
  16. package/base/Base/FieldRenderers/FilePickerRenderer.js +2 -0
  17. package/base/Base/FieldRenderers/FilePickerRenderer.js.map +1 -1
  18. package/base/Base/FieldRenderers/FileUrlPickerRenderer.js +1 -0
  19. package/base/Base/FieldRenderers/FileUrlPickerRenderer.js.map +1 -1
  20. package/base/Base/FieldRenderers/HorizontalTabsRenderer.d.ts +2 -2
  21. package/base/Base/FieldRenderers/HorizontalTabsRenderer.js +2 -1
  22. package/base/Base/FieldRenderers/HorizontalTabsRenderer.js.map +1 -1
  23. package/base/Base/FieldRenderers/InputRenderer.js +2 -0
  24. package/base/Base/FieldRenderers/InputRenderer.js.map +1 -1
  25. package/base/Base/FieldRenderers/LexicalEditorsRenderer.d.ts +14 -0
  26. package/base/Base/FieldRenderers/LexicalEditorsRenderer.js +78 -0
  27. package/base/Base/FieldRenderers/LexicalEditorsRenderer.js.map +1 -0
  28. package/base/Base/FieldRenderers/LexicalRenderer.js +10 -6
  29. package/base/Base/FieldRenderers/LexicalRenderer.js.map +1 -1
  30. package/base/Base/FieldRenderers/MultiAutoCompleteRenderer.d.ts +13 -0
  31. package/base/Base/FieldRenderers/MultiAutoCompleteRenderer.js +29 -0
  32. package/base/Base/FieldRenderers/MultiAutoCompleteRenderer.js.map +1 -0
  33. package/base/Base/FieldRenderers/MultiFilePickerRenderer.js +8 -5
  34. package/base/Base/FieldRenderers/MultiFilePickerRenderer.js.map +1 -1
  35. package/base/Base/FieldRenderers/MultiSelectRenderer.d.ts +15 -0
  36. package/base/Base/FieldRenderers/MultiSelectRenderer.js +31 -0
  37. package/base/Base/FieldRenderers/MultiSelectRenderer.js.map +1 -0
  38. package/base/Base/FieldRenderers/NumberInputRenderer.js +1 -0
  39. package/base/Base/FieldRenderers/NumberInputRenderer.js.map +1 -1
  40. package/base/Base/FieldRenderers/NumberInputsRenderer.js +19 -9
  41. package/base/Base/FieldRenderers/NumberInputsRenderer.js.map +1 -1
  42. package/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.d.ts +2 -0
  43. package/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.js +5 -2
  44. package/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.js.map +1 -1
  45. package/base/Base/FieldRenderers/ObjectRenderer/KeyValueTagsRenderer.js +2 -1
  46. package/base/Base/FieldRenderers/ObjectRenderer/KeyValueTagsRenderer.js.map +1 -1
  47. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.d.ts +11 -0
  48. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.js +189 -0
  49. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.js.map +1 -0
  50. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZonePresenter.d.ts +13 -0
  51. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZonePresenter.js +28 -0
  52. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZonePresenter.js.map +1 -0
  53. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/abstractions.d.ts +15 -0
  54. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/abstractions.js +5 -0
  55. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/abstractions.js.map +1 -0
  56. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/feature.d.ts +1 -0
  57. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/feature.js +11 -0
  58. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/feature.js.map +1 -0
  59. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/index.d.ts +2 -0
  60. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/index.js +2 -0
  61. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.d.ts +2 -1
  62. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js +25 -7
  63. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js.map +1 -1
  64. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.d.ts +11 -8
  65. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js +41 -8
  66. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js.map +1 -1
  67. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.d.ts +4 -1
  68. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js +31 -4
  69. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js.map +1 -1
  70. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.d.ts +3 -2
  71. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js +55 -10
  72. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js.map +1 -1
  73. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js +1 -1
  74. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js.map +1 -1
  75. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.d.ts +3 -2
  76. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js +10 -1
  77. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js.map +1 -1
  78. package/base/Base/FieldRenderers/PasswordInputRenderer.d.ts +12 -0
  79. package/base/Base/FieldRenderers/PasswordInputRenderer.js +22 -0
  80. package/base/Base/FieldRenderers/PasswordInputRenderer.js.map +1 -0
  81. package/base/Base/FieldRenderers/PermissionsRenderer.d.ts +14 -0
  82. package/base/Base/FieldRenderers/PermissionsRenderer.js +18 -0
  83. package/base/Base/FieldRenderers/PermissionsRenderer.js.map +1 -0
  84. package/base/Base/FieldRenderers/RadioButtonsRenderer.js +1 -0
  85. package/base/Base/FieldRenderers/RadioButtonsRenderer.js.map +1 -1
  86. package/base/Base/FieldRenderers/RolesMultiSelectRenderer.d.ts +12 -0
  87. package/base/Base/FieldRenderers/RolesMultiSelectRenderer.js +21 -0
  88. package/base/Base/FieldRenderers/RolesMultiSelectRenderer.js.map +1 -0
  89. package/base/Base/FieldRenderers/SelectRenderer.d.ts +6 -0
  90. package/base/Base/FieldRenderers/SelectRenderer.js +1 -0
  91. package/base/Base/FieldRenderers/SelectRenderer.js.map +1 -1
  92. package/base/Base/FieldRenderers/TagsRenderer.js +1 -0
  93. package/base/Base/FieldRenderers/TagsRenderer.js.map +1 -1
  94. package/base/Base/FieldRenderers/TextInputsRenderer.js +19 -9
  95. package/base/Base/FieldRenderers/TextInputsRenderer.js.map +1 -1
  96. package/base/Base/FieldRenderers/TextareaRenderer.js +1 -0
  97. package/base/Base/FieldRenderers/TextareaRenderer.js.map +1 -1
  98. package/base/Base/FieldRenderers/TextareasRenderer.js +5 -1
  99. package/base/Base/FieldRenderers/TextareasRenderer.js.map +1 -1
  100. package/base/Base/FieldRenderers/VerticalTabsRenderer.d.ts +2 -2
  101. package/base/Base/Menus.js +4 -4
  102. package/base/Base/Menus.js.map +1 -1
  103. package/base/Base.d.ts +3 -1
  104. package/base/Base.js +2 -1
  105. package/base/Base.js.map +1 -1
  106. package/base/createRootContainer.js +14 -5
  107. package/base/createRootContainer.js.map +1 -1
  108. package/base/resolveApiUrl.d.ts +3 -0
  109. package/base/resolveApiUrl.js +18 -0
  110. package/base/resolveApiUrl.js.map +1 -0
  111. package/base/ui/FileManager.d.ts +2 -1
  112. package/components/BulkActions/BulkActionButton.d.ts +6 -0
  113. package/components/BulkActions/BulkActionButton.js +17 -0
  114. package/components/BulkActions/BulkActionButton.js.map +1 -0
  115. package/components/BulkActions/BulkActionRunner.d.ts +41 -0
  116. package/components/BulkActions/BulkActionRunner.js +32 -0
  117. package/components/BulkActions/BulkActionRunner.js.map +1 -0
  118. package/components/BulkActions/Worker.d.ts +9 -57
  119. package/components/BulkActions/Worker.js +5 -9
  120. package/components/BulkActions/Worker.js.map +1 -1
  121. package/components/BulkActions/index.d.ts +3 -0
  122. package/components/BulkActions/index.js +3 -0
  123. package/components/ConfirmationDialog/ConfirmationDialog.d.ts +11 -0
  124. package/components/ConfirmationDialog/ConfirmationDialog.js +41 -0
  125. package/components/ConfirmationDialog/ConfirmationDialog.js.map +1 -0
  126. package/components/ConfirmationDialog/index.d.ts +1 -0
  127. package/components/ConfirmationDialog/index.js +1 -0
  128. package/components/Dialogs/DialogsContext.js +2 -1
  129. package/components/Dialogs/DialogsContext.js.map +1 -1
  130. package/components/Drawers/DrawerParamsContext.d.ts +6 -0
  131. package/components/Drawers/DrawerParamsContext.js +10 -0
  132. package/components/Drawers/DrawerParamsContext.js.map +1 -0
  133. package/components/Drawers/DrawersContext.d.ts +13 -0
  134. package/components/Drawers/DrawersContext.js +50 -0
  135. package/components/Drawers/DrawersContext.js.map +1 -0
  136. package/components/Drawers/useDrawers.d.ts +2 -0
  137. package/components/Drawers/useDrawers.js +10 -0
  138. package/components/Drawers/useDrawers.js.map +1 -0
  139. package/components/Filters/Filters.js +4 -3
  140. package/components/Filters/Filters.js.map +1 -1
  141. package/components/IconPicker/IconPicker.d.ts +7 -5
  142. package/components/IconPicker/IconPickerComponent.d.ts +2 -2
  143. package/components/IconPicker/components/IconPickerTrigger.d.ts +1 -1
  144. package/components/IconPicker/config/index.d.ts +2 -1
  145. package/components/IconPicker/plugins/customPlugin.js +4 -19
  146. package/components/IconPicker/plugins/customPlugin.js.map +1 -1
  147. package/components/LexicalEditor/LexicalLinkForm.js +3 -0
  148. package/components/LexicalEditor/LexicalLinkForm.js.map +1 -1
  149. package/components/ListView/ListView.d.ts +17 -0
  150. package/components/ListView/ListView.js +36 -0
  151. package/components/ListView/ListView.js.map +1 -0
  152. package/components/ListView/ListViewBottomBar.d.ts +14 -0
  153. package/components/ListView/ListViewBottomBar.js +45 -0
  154. package/components/ListView/ListViewBottomBar.js.map +1 -0
  155. package/components/ListView/ListViewBulkActions.d.ts +11 -0
  156. package/components/ListView/ListViewBulkActions.js +41 -0
  157. package/components/ListView/ListViewBulkActions.js.map +1 -0
  158. package/components/ListView/ListViewContent.d.ts +12 -0
  159. package/components/ListView/ListViewContent.js +25 -0
  160. package/components/ListView/ListViewContent.js.map +1 -0
  161. package/components/ListView/ListViewFilters.d.ts +15 -0
  162. package/components/ListView/ListViewFilters.js +21 -0
  163. package/components/ListView/ListViewFilters.js.map +1 -0
  164. package/components/ListView/ListViewHeader.d.ts +17 -0
  165. package/components/ListView/ListViewHeader.js +72 -0
  166. package/components/ListView/ListViewHeader.js.map +1 -0
  167. package/components/ListView/ListViewSidebar.d.ts +17 -0
  168. package/components/ListView/ListViewSidebar.js +25 -0
  169. package/components/ListView/ListViewSidebar.js.map +1 -0
  170. package/components/ListView/ListViewTable.d.ts +18 -0
  171. package/components/ListView/ListViewTable.js +33 -0
  172. package/components/ListView/ListViewTable.js.map +1 -0
  173. package/components/ListView/context.d.ts +3 -0
  174. package/components/ListView/context.js +11 -0
  175. package/components/ListView/context.js.map +1 -0
  176. package/components/ListView/index.d.ts +24 -0
  177. package/components/ListView/index.js +22 -0
  178. package/components/ListView/index.js.map +1 -0
  179. package/components/ListView/types.d.ts +7 -0
  180. package/components/ListView/types.js +0 -0
  181. package/components/OptionsMenu/OptionsMenuItem.d.ts +1 -0
  182. package/components/OptionsMenu/OptionsMenuItem.js +1 -0
  183. package/components/OptionsMenu/OptionsMenuItem.js.map +1 -1
  184. package/components/OverlayLayout/components/OverlayHeader.d.ts +1 -1
  185. package/components/Permissions/Permissions.js +2 -1
  186. package/components/Permissions/Permissions.js.map +1 -1
  187. package/components/Permissions/index.d.ts +1 -0
  188. package/components/Permissions/index.js +1 -0
  189. package/components/Permissions/mergeByName.d.ts +11 -0
  190. package/components/Permissions/mergeByName.js +33 -0
  191. package/components/Permissions/mergeByName.js.map +1 -0
  192. package/components/RolesMultiAutocomplete/index.d.ts +5 -1
  193. package/components/RolesMultiAutocomplete/index.js +24 -14
  194. package/components/RolesMultiAutocomplete/index.js.map +1 -1
  195. package/components/SimpleForm/SimpleForm.d.ts +1 -1
  196. package/components/SimpleUI/InputField.d.ts +2 -1
  197. package/components/SingleImageUpload.d.ts +1 -2
  198. package/components/SingleImageUpload.js +1 -2
  199. package/components/SingleImageUpload.js.map +1 -1
  200. package/components/SplitView/SplitView.js +1 -1
  201. package/components/SplitView/SplitView.js.map +1 -1
  202. package/components/Table/cells/CellAuthor.d.ts +2 -0
  203. package/components/Table/cells/CellAuthor.js +10 -0
  204. package/components/Table/cells/CellAuthor.js.map +1 -0
  205. package/components/Table/cells/CellCreated.d.ts +2 -0
  206. package/components/Table/cells/CellCreated.js +13 -0
  207. package/components/Table/cells/CellCreated.js.map +1 -0
  208. package/components/Table/cells/CellModified.d.ts +2 -0
  209. package/components/Table/cells/CellModified.js +13 -0
  210. package/components/Table/cells/CellModified.js.map +1 -0
  211. package/components/Table/cells/index.d.ts +3 -0
  212. package/components/Table/cells/index.js +3 -0
  213. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.d.ts +9 -0
  214. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.js +23 -0
  215. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.js.map +1 -0
  216. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.d.ts +9 -0
  217. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.js +21 -0
  218. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.js.map +1 -0
  219. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.d.ts +1 -0
  220. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.js +128 -0
  221. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.js.map +1 -0
  222. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.d.ts +10 -0
  223. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.js +30 -0
  224. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.js.map +1 -0
  225. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.d.ts +9 -0
  226. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.js +18 -0
  227. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.js.map +1 -0
  228. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.d.ts +8 -0
  229. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.js +16 -0
  230. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.js.map +1 -0
  231. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityRepository.d.ts +5 -0
  232. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityRepository.js +0 -0
  233. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityUpdater.d.ts +4 -0
  234. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityUpdater.js +0 -0
  235. package/components/Table/components/Table/ColumnVisibility/index.d.ts +7 -0
  236. package/components/Table/components/Table/ColumnVisibility/index.js +5 -0
  237. package/components/Table/components/Table/Columns/Column.d.ts +42 -0
  238. package/components/Table/components/Table/Columns/Column.js +21 -0
  239. package/components/Table/components/Table/Columns/Column.js.map +1 -0
  240. package/components/Table/components/Table/Columns/ColumnMapper.d.ts +7 -0
  241. package/components/Table/components/Table/Columns/ColumnMapper.js +34 -0
  242. package/components/Table/components/Table/Columns/ColumnMapper.js.map +1 -0
  243. package/components/Table/components/Table/Columns/ColumnsPresenter.d.ts +9 -0
  244. package/components/Table/components/Table/Columns/ColumnsPresenter.js +18 -0
  245. package/components/Table/components/Table/Columns/ColumnsPresenter.js.map +1 -0
  246. package/components/Table/components/Table/Columns/ColumnsPresenter.test.d.ts +1 -0
  247. package/components/Table/components/Table/Columns/ColumnsPresenter.test.js +73 -0
  248. package/components/Table/components/Table/Columns/ColumnsPresenter.test.js.map +1 -0
  249. package/components/Table/components/Table/Columns/ColumnsRepository.d.ts +9 -0
  250. package/components/Table/components/Table/Columns/ColumnsRepository.js +19 -0
  251. package/components/Table/components/Table/Columns/ColumnsRepository.js.map +1 -0
  252. package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.d.ts +9 -0
  253. package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.js +21 -0
  254. package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.js.map +1 -0
  255. package/components/Table/components/Table/Columns/IColumnsRepository.d.ts +5 -0
  256. package/components/Table/components/Table/Columns/IColumnsRepository.js +0 -0
  257. package/components/Table/components/Table/Columns/index.d.ts +6 -0
  258. package/components/Table/components/Table/Columns/index.js +5 -0
  259. package/components/Table/components/Table/Table.d.ts +17 -0
  260. package/components/Table/components/Table/Table.js +47 -0
  261. package/components/Table/components/Table/Table.js.map +1 -0
  262. package/components/Table/components/Table/TableInner.d.ts +24 -0
  263. package/components/Table/components/Table/TableInner.js +40 -0
  264. package/components/Table/components/Table/TableInner.js.map +1 -0
  265. package/components/Table/components/Table/TablePresenter.d.ts +15 -0
  266. package/components/Table/components/Table/TablePresenter.js +15 -0
  267. package/components/Table/components/Table/TablePresenter.js.map +1 -0
  268. package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.d.ts +9 -0
  269. package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.js +15 -0
  270. package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.js.map +1 -0
  271. package/components/Table/components/Table/gateways/IColumnsVisibilityGateway.d.ts +4 -0
  272. package/components/Table/components/Table/gateways/IColumnsVisibilityGateway.js +0 -0
  273. package/components/Table/components/Table/gateways/index.d.ts +2 -0
  274. package/components/Table/components/Table/gateways/index.js +1 -0
  275. package/components/Table/components/Table/index.d.ts +1 -0
  276. package/components/Table/components/Table/index.js +1 -0
  277. package/components/Table/components/index.d.ts +1 -0
  278. package/components/Table/components/index.js +1 -0
  279. package/components/Table/createTableData.d.ts +5 -0
  280. package/components/Table/createTableData.js +9 -0
  281. package/components/Table/createTableData.js.map +1 -0
  282. package/components/Table/index.d.ts +5 -0
  283. package/components/Table/index.js +5 -0
  284. package/components/Table/table.types.d.ts +9 -0
  285. package/components/Table/table.types.js +0 -0
  286. package/components/Table/useTableRow.d.ts +18 -0
  287. package/components/Table/useTableRow.js +22 -0
  288. package/components/Table/useTableRow.js.map +1 -0
  289. package/components/TeamAutocomplete/index.d.ts +5 -1
  290. package/components/TeamAutocomplete/index.js +13 -14
  291. package/components/TeamAutocomplete/index.js.map +1 -1
  292. package/components/TeamsMultiAutocomplete/index.d.ts +5 -1
  293. package/components/TeamsMultiAutocomplete/index.js +24 -14
  294. package/components/TeamsMultiAutocomplete/index.js.map +1 -1
  295. package/components/index.d.ts +3 -3
  296. package/components/index.js +3 -3
  297. package/config/AdminConfig/Breadcrumbs.d.ts +42 -0
  298. package/config/AdminConfig/Breadcrumbs.js +24 -0
  299. package/config/AdminConfig/Breadcrumbs.js.map +1 -0
  300. package/config/AdminConfig/Dashboard.d.ts +2 -1
  301. package/config/AdminConfig/Drawer.d.ts +10 -0
  302. package/config/AdminConfig/Drawer.js +19 -0
  303. package/config/AdminConfig/Drawer.js.map +1 -0
  304. package/config/AdminConfig/Form.d.ts +4 -2
  305. package/config/AdminConfig/LexicalTheme/Typography.d.ts +4 -4
  306. package/config/AdminConfig/LexicalTheme.d.ts +8 -6
  307. package/config/AdminConfig/Logo.d.ts +8 -6
  308. package/config/AdminConfig/Menu/MenuGroup.d.ts +13 -12
  309. package/config/AdminConfig/Menu/MenuItem.d.ts +7 -6
  310. package/config/AdminConfig/Menu/MenuLink.d.ts +7 -6
  311. package/config/AdminConfig/Menu/SupportMenu/SupportMenuItem.d.ts +13 -12
  312. package/config/AdminConfig/Menu/SupportMenu/SupportMenuLink.d.ts +7 -6
  313. package/config/AdminConfig/Menu/SupportMenu.d.ts +8 -6
  314. package/config/AdminConfig/Menu/UserMenu.d.ts +8 -6
  315. package/config/AdminConfig/Menu.d.ts +15 -12
  316. package/config/AdminConfig/Security.d.ts +2 -1
  317. package/config/AdminConfig/SecurityPermissions.js +2 -1
  318. package/config/AdminConfig/SecurityPermissions.js.map +1 -1
  319. package/config/AdminConfig/Tenant/TenantLogo.d.ts +8 -6
  320. package/config/AdminConfig/Tenant/TenantName.d.ts +8 -6
  321. package/config/AdminConfig/Tenant.d.ts +3 -1
  322. package/config/AdminConfig/Title.d.ts +8 -6
  323. package/config/AdminConfig.d.ts +24 -30
  324. package/config/AdminConfig.js +6 -0
  325. package/config/AdminConfig.js.map +1 -1
  326. package/config/table/Column.d.ts +34 -0
  327. package/config/table/Column.js +69 -0
  328. package/config/table/Column.js.map +1 -0
  329. package/config/table/Sorting.d.ts +11 -0
  330. package/config/table/Sorting.js +28 -0
  331. package/config/table/Sorting.js.map +1 -0
  332. package/config/table/index.d.ts +13 -0
  333. package/config/table/index.js +9 -0
  334. package/config/table/index.js.map +1 -0
  335. package/domain/securityPermissionsSchema.d.ts +20 -0
  336. package/domain/securityPermissionsSchema.js +34 -0
  337. package/domain/securityPermissionsSchema.js.map +1 -0
  338. package/errors/ErrorOverlayNetworkErrorHandler.js +4 -4
  339. package/errors/ErrorOverlayNetworkErrorHandler.js.map +1 -1
  340. package/exports/admin/form.d.ts +2 -0
  341. package/exports/admin/form.js +1 -0
  342. package/exports/admin/ui.d.ts +4 -0
  343. package/exports/admin/ui.js +2 -1
  344. package/exports/admin.d.ts +4 -0
  345. package/exports/admin.js +4 -0
  346. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyGateway.d.ts +12 -0
  347. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyGateway.js +50 -0
  348. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyGateway.js.map +1 -0
  349. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyRepository.d.ts +13 -0
  350. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyRepository.js +25 -0
  351. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyRepository.js.map +1 -0
  352. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyUseCase.d.ts +11 -0
  353. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyUseCase.js +18 -0
  354. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyUseCase.js.map +1 -0
  355. package/features/accessManagement/apiKeys/createApiKey/abstractions.d.ts +29 -0
  356. package/features/accessManagement/apiKeys/createApiKey/abstractions.js +7 -0
  357. package/features/accessManagement/apiKeys/createApiKey/abstractions.js.map +1 -0
  358. package/features/accessManagement/apiKeys/createApiKey/feature.d.ts +3 -0
  359. package/features/accessManagement/apiKeys/createApiKey/feature.js +21 -0
  360. package/features/accessManagement/apiKeys/createApiKey/feature.js.map +1 -0
  361. package/features/accessManagement/apiKeys/createApiKey/index.d.ts +3 -0
  362. package/features/accessManagement/apiKeys/createApiKey/index.js +2 -0
  363. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyGateway.d.ts +11 -0
  364. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyGateway.js +39 -0
  365. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyGateway.js.map +1 -0
  366. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyRepository.d.ts +12 -0
  367. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyRepository.js +22 -0
  368. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyRepository.js.map +1 -0
  369. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyUseCase.d.ts +10 -0
  370. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyUseCase.js +18 -0
  371. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyUseCase.js.map +1 -0
  372. package/features/accessManagement/apiKeys/deleteApiKey/abstractions.d.ts +21 -0
  373. package/features/accessManagement/apiKeys/deleteApiKey/abstractions.js +7 -0
  374. package/features/accessManagement/apiKeys/deleteApiKey/abstractions.js.map +1 -0
  375. package/features/accessManagement/apiKeys/deleteApiKey/feature.d.ts +3 -0
  376. package/features/accessManagement/apiKeys/deleteApiKey/feature.js +21 -0
  377. package/features/accessManagement/apiKeys/deleteApiKey/feature.js.map +1 -0
  378. package/features/accessManagement/apiKeys/deleteApiKey/index.d.ts +3 -0
  379. package/features/accessManagement/apiKeys/deleteApiKey/index.js +2 -0
  380. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyGateway.d.ts +12 -0
  381. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyGateway.js +49 -0
  382. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyGateway.js.map +1 -0
  383. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyRepository.d.ts +11 -0
  384. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyRepository.js +18 -0
  385. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyRepository.js.map +1 -0
  386. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyUseCase.d.ts +11 -0
  387. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyUseCase.js +18 -0
  388. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyUseCase.js.map +1 -0
  389. package/features/accessManagement/apiKeys/getApiKey/abstractions.d.ts +22 -0
  390. package/features/accessManagement/apiKeys/getApiKey/abstractions.js +7 -0
  391. package/features/accessManagement/apiKeys/getApiKey/abstractions.js.map +1 -0
  392. package/features/accessManagement/apiKeys/getApiKey/feature.d.ts +3 -0
  393. package/features/accessManagement/apiKeys/getApiKey/feature.js +21 -0
  394. package/features/accessManagement/apiKeys/getApiKey/feature.js.map +1 -0
  395. package/features/accessManagement/apiKeys/getApiKey/index.d.ts +3 -0
  396. package/features/accessManagement/apiKeys/getApiKey/index.js +2 -0
  397. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysGateway.d.ts +11 -0
  398. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysGateway.js +44 -0
  399. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysGateway.js.map +1 -0
  400. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysRepository.d.ts +11 -0
  401. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysRepository.js +22 -0
  402. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysRepository.js.map +1 -0
  403. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysUseCase.d.ts +10 -0
  404. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysUseCase.js +18 -0
  405. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysUseCase.js.map +1 -0
  406. package/features/accessManagement/apiKeys/listApiKeys/abstractions.d.ts +30 -0
  407. package/features/accessManagement/apiKeys/listApiKeys/abstractions.js +8 -0
  408. package/features/accessManagement/apiKeys/listApiKeys/abstractions.js.map +1 -0
  409. package/features/accessManagement/apiKeys/listApiKeys/feature.d.ts +3 -0
  410. package/features/accessManagement/apiKeys/listApiKeys/feature.js +23 -0
  411. package/features/accessManagement/apiKeys/listApiKeys/feature.js.map +1 -0
  412. package/features/accessManagement/apiKeys/listApiKeys/index.d.ts +3 -0
  413. package/features/accessManagement/apiKeys/listApiKeys/index.js +2 -0
  414. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyGateway.d.ts +12 -0
  415. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyGateway.js +51 -0
  416. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyGateway.js.map +1 -0
  417. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyRepository.d.ts +13 -0
  418. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyRepository.js +23 -0
  419. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyRepository.js.map +1 -0
  420. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyUseCase.d.ts +11 -0
  421. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyUseCase.js +18 -0
  422. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyUseCase.js.map +1 -0
  423. package/features/accessManagement/apiKeys/updateApiKey/abstractions.d.ts +28 -0
  424. package/features/accessManagement/apiKeys/updateApiKey/abstractions.js +7 -0
  425. package/features/accessManagement/apiKeys/updateApiKey/abstractions.js.map +1 -0
  426. package/features/accessManagement/apiKeys/updateApiKey/feature.d.ts +3 -0
  427. package/features/accessManagement/apiKeys/updateApiKey/feature.js +21 -0
  428. package/features/accessManagement/apiKeys/updateApiKey/feature.js.map +1 -0
  429. package/features/accessManagement/apiKeys/updateApiKey/index.d.ts +3 -0
  430. package/features/accessManagement/apiKeys/updateApiKey/index.js +2 -0
  431. package/features/accessManagement/constants.d.ts +5 -0
  432. package/features/accessManagement/constants.js +9 -0
  433. package/features/accessManagement/constants.js.map +1 -0
  434. package/features/accessManagement/permissions/abstractions.d.ts +17 -0
  435. package/features/accessManagement/permissions/abstractions.js +6 -0
  436. package/features/accessManagement/permissions/abstractions.js.map +1 -0
  437. package/features/accessManagement/permissions/feature.d.ts +14 -0
  438. package/features/accessManagement/permissions/feature.js +7 -0
  439. package/features/accessManagement/permissions/feature.js.map +1 -0
  440. package/features/accessManagement/roles/createRole/CreateRoleGateway.d.ts +12 -0
  441. package/features/accessManagement/roles/createRole/CreateRoleGateway.js +51 -0
  442. package/features/accessManagement/roles/createRole/CreateRoleGateway.js.map +1 -0
  443. package/features/accessManagement/roles/createRole/CreateRoleRepository.d.ts +13 -0
  444. package/features/accessManagement/roles/createRole/CreateRoleRepository.js +25 -0
  445. package/features/accessManagement/roles/createRole/CreateRoleRepository.js.map +1 -0
  446. package/features/accessManagement/roles/createRole/CreateRoleUseCase.d.ts +11 -0
  447. package/features/accessManagement/roles/createRole/CreateRoleUseCase.js +18 -0
  448. package/features/accessManagement/roles/createRole/CreateRoleUseCase.js.map +1 -0
  449. package/features/accessManagement/roles/createRole/abstractions.d.ts +29 -0
  450. package/features/accessManagement/roles/createRole/abstractions.js +7 -0
  451. package/features/accessManagement/roles/createRole/abstractions.js.map +1 -0
  452. package/features/accessManagement/roles/createRole/feature.d.ts +3 -0
  453. package/features/accessManagement/roles/createRole/feature.js +21 -0
  454. package/features/accessManagement/roles/createRole/feature.js.map +1 -0
  455. package/features/accessManagement/roles/createRole/index.d.ts +3 -0
  456. package/features/accessManagement/roles/createRole/index.js +2 -0
  457. package/features/accessManagement/roles/deleteRole/DeleteRoleGateway.d.ts +11 -0
  458. package/features/accessManagement/roles/deleteRole/DeleteRoleGateway.js +40 -0
  459. package/features/accessManagement/roles/deleteRole/DeleteRoleGateway.js.map +1 -0
  460. package/features/accessManagement/roles/deleteRole/DeleteRoleRepository.d.ts +12 -0
  461. package/features/accessManagement/roles/deleteRole/DeleteRoleRepository.js +22 -0
  462. package/features/accessManagement/roles/deleteRole/DeleteRoleRepository.js.map +1 -0
  463. package/features/accessManagement/roles/deleteRole/DeleteRoleUseCase.d.ts +10 -0
  464. package/features/accessManagement/roles/deleteRole/DeleteRoleUseCase.js +18 -0
  465. package/features/accessManagement/roles/deleteRole/DeleteRoleUseCase.js.map +1 -0
  466. package/features/accessManagement/roles/deleteRole/abstractions.d.ts +21 -0
  467. package/features/accessManagement/roles/deleteRole/abstractions.js +7 -0
  468. package/features/accessManagement/roles/deleteRole/abstractions.js.map +1 -0
  469. package/features/accessManagement/roles/deleteRole/feature.d.ts +3 -0
  470. package/features/accessManagement/roles/deleteRole/feature.js +21 -0
  471. package/features/accessManagement/roles/deleteRole/feature.js.map +1 -0
  472. package/features/accessManagement/roles/deleteRole/index.d.ts +3 -0
  473. package/features/accessManagement/roles/deleteRole/index.js +2 -0
  474. package/features/accessManagement/roles/getRole/GetRoleGateway.d.ts +12 -0
  475. package/features/accessManagement/roles/getRole/GetRoleGateway.js +50 -0
  476. package/features/accessManagement/roles/getRole/GetRoleGateway.js.map +1 -0
  477. package/features/accessManagement/roles/getRole/GetRoleRepository.d.ts +11 -0
  478. package/features/accessManagement/roles/getRole/GetRoleRepository.js +18 -0
  479. package/features/accessManagement/roles/getRole/GetRoleRepository.js.map +1 -0
  480. package/features/accessManagement/roles/getRole/GetRoleUseCase.d.ts +11 -0
  481. package/features/accessManagement/roles/getRole/GetRoleUseCase.js +18 -0
  482. package/features/accessManagement/roles/getRole/GetRoleUseCase.js.map +1 -0
  483. package/features/accessManagement/roles/getRole/abstractions.d.ts +22 -0
  484. package/features/accessManagement/roles/getRole/abstractions.js +7 -0
  485. package/features/accessManagement/roles/getRole/abstractions.js.map +1 -0
  486. package/features/accessManagement/roles/getRole/feature.d.ts +3 -0
  487. package/features/accessManagement/roles/getRole/feature.js +21 -0
  488. package/features/accessManagement/roles/getRole/feature.js.map +1 -0
  489. package/features/accessManagement/roles/getRole/index.d.ts +3 -0
  490. package/features/accessManagement/roles/getRole/index.js +2 -0
  491. package/features/accessManagement/roles/listRoles/ListRolesGateway.d.ts +11 -0
  492. package/features/accessManagement/roles/listRoles/ListRolesGateway.js +45 -0
  493. package/features/accessManagement/roles/listRoles/ListRolesGateway.js.map +1 -0
  494. package/features/accessManagement/roles/listRoles/ListRolesRepository.d.ts +11 -0
  495. package/features/accessManagement/roles/listRoles/ListRolesRepository.js +22 -0
  496. package/features/accessManagement/roles/listRoles/ListRolesRepository.js.map +1 -0
  497. package/features/accessManagement/roles/listRoles/ListRolesUseCase.d.ts +10 -0
  498. package/features/accessManagement/roles/listRoles/ListRolesUseCase.js +18 -0
  499. package/features/accessManagement/roles/listRoles/ListRolesUseCase.js.map +1 -0
  500. package/features/accessManagement/roles/listRoles/abstractions.d.ts +30 -0
  501. package/features/accessManagement/roles/listRoles/abstractions.js +8 -0
  502. package/features/accessManagement/roles/listRoles/abstractions.js.map +1 -0
  503. package/features/accessManagement/roles/listRoles/feature.d.ts +3 -0
  504. package/features/accessManagement/roles/listRoles/feature.js +23 -0
  505. package/features/accessManagement/roles/listRoles/feature.js.map +1 -0
  506. package/features/accessManagement/roles/listRoles/index.d.ts +3 -0
  507. package/features/accessManagement/roles/listRoles/index.js +2 -0
  508. package/features/accessManagement/roles/updateRole/UpdateRoleGateway.d.ts +12 -0
  509. package/features/accessManagement/roles/updateRole/UpdateRoleGateway.js +52 -0
  510. package/features/accessManagement/roles/updateRole/UpdateRoleGateway.js.map +1 -0
  511. package/features/accessManagement/roles/updateRole/UpdateRoleRepository.d.ts +13 -0
  512. package/features/accessManagement/roles/updateRole/UpdateRoleRepository.js +23 -0
  513. package/features/accessManagement/roles/updateRole/UpdateRoleRepository.js.map +1 -0
  514. package/features/accessManagement/roles/updateRole/UpdateRoleUseCase.d.ts +11 -0
  515. package/features/accessManagement/roles/updateRole/UpdateRoleUseCase.js +18 -0
  516. package/features/accessManagement/roles/updateRole/UpdateRoleUseCase.js.map +1 -0
  517. package/features/accessManagement/roles/updateRole/abstractions.d.ts +28 -0
  518. package/features/accessManagement/roles/updateRole/abstractions.js +7 -0
  519. package/features/accessManagement/roles/updateRole/abstractions.js.map +1 -0
  520. package/features/accessManagement/roles/updateRole/feature.d.ts +3 -0
  521. package/features/accessManagement/roles/updateRole/feature.js +21 -0
  522. package/features/accessManagement/roles/updateRole/feature.js.map +1 -0
  523. package/features/accessManagement/roles/updateRole/index.d.ts +3 -0
  524. package/features/accessManagement/roles/updateRole/index.js +2 -0
  525. package/features/accessManagement/teams/createTeam/CreateTeamGateway.d.ts +12 -0
  526. package/features/accessManagement/teams/createTeam/CreateTeamGateway.js +55 -0
  527. package/features/accessManagement/teams/createTeam/CreateTeamGateway.js.map +1 -0
  528. package/features/accessManagement/teams/createTeam/CreateTeamRepository.d.ts +13 -0
  529. package/features/accessManagement/teams/createTeam/CreateTeamRepository.js +25 -0
  530. package/features/accessManagement/teams/createTeam/CreateTeamRepository.js.map +1 -0
  531. package/features/accessManagement/teams/createTeam/CreateTeamUseCase.d.ts +11 -0
  532. package/features/accessManagement/teams/createTeam/CreateTeamUseCase.js +18 -0
  533. package/features/accessManagement/teams/createTeam/CreateTeamUseCase.js.map +1 -0
  534. package/features/accessManagement/teams/createTeam/abstractions.d.ts +28 -0
  535. package/features/accessManagement/teams/createTeam/abstractions.js +7 -0
  536. package/features/accessManagement/teams/createTeam/abstractions.js.map +1 -0
  537. package/features/accessManagement/teams/createTeam/feature.d.ts +3 -0
  538. package/features/accessManagement/teams/createTeam/feature.js +21 -0
  539. package/features/accessManagement/teams/createTeam/feature.js.map +1 -0
  540. package/features/accessManagement/teams/createTeam/index.d.ts +3 -0
  541. package/features/accessManagement/teams/createTeam/index.js +2 -0
  542. package/features/accessManagement/teams/deleteTeam/DeleteTeamGateway.d.ts +11 -0
  543. package/features/accessManagement/teams/deleteTeam/DeleteTeamGateway.js +40 -0
  544. package/features/accessManagement/teams/deleteTeam/DeleteTeamGateway.js.map +1 -0
  545. package/features/accessManagement/teams/deleteTeam/DeleteTeamRepository.d.ts +12 -0
  546. package/features/accessManagement/teams/deleteTeam/DeleteTeamRepository.js +22 -0
  547. package/features/accessManagement/teams/deleteTeam/DeleteTeamRepository.js.map +1 -0
  548. package/features/accessManagement/teams/deleteTeam/DeleteTeamUseCase.d.ts +10 -0
  549. package/features/accessManagement/teams/deleteTeam/DeleteTeamUseCase.js +18 -0
  550. package/features/accessManagement/teams/deleteTeam/DeleteTeamUseCase.js.map +1 -0
  551. package/features/accessManagement/teams/deleteTeam/abstractions.d.ts +21 -0
  552. package/features/accessManagement/teams/deleteTeam/abstractions.js +7 -0
  553. package/features/accessManagement/teams/deleteTeam/abstractions.js.map +1 -0
  554. package/features/accessManagement/teams/deleteTeam/feature.d.ts +3 -0
  555. package/features/accessManagement/teams/deleteTeam/feature.js +21 -0
  556. package/features/accessManagement/teams/deleteTeam/feature.js.map +1 -0
  557. package/features/accessManagement/teams/deleteTeam/index.d.ts +3 -0
  558. package/features/accessManagement/teams/deleteTeam/index.js +2 -0
  559. package/features/accessManagement/teams/getTeam/GetTeamGateway.d.ts +12 -0
  560. package/features/accessManagement/teams/getTeam/GetTeamGateway.js +54 -0
  561. package/features/accessManagement/teams/getTeam/GetTeamGateway.js.map +1 -0
  562. package/features/accessManagement/teams/getTeam/GetTeamRepository.d.ts +11 -0
  563. package/features/accessManagement/teams/getTeam/GetTeamRepository.js +18 -0
  564. package/features/accessManagement/teams/getTeam/GetTeamRepository.js.map +1 -0
  565. package/features/accessManagement/teams/getTeam/GetTeamUseCase.d.ts +11 -0
  566. package/features/accessManagement/teams/getTeam/GetTeamUseCase.js +18 -0
  567. package/features/accessManagement/teams/getTeam/GetTeamUseCase.js.map +1 -0
  568. package/features/accessManagement/teams/getTeam/abstractions.d.ts +22 -0
  569. package/features/accessManagement/teams/getTeam/abstractions.js +7 -0
  570. package/features/accessManagement/teams/getTeam/abstractions.js.map +1 -0
  571. package/features/accessManagement/teams/getTeam/feature.d.ts +3 -0
  572. package/features/accessManagement/teams/getTeam/feature.js +21 -0
  573. package/features/accessManagement/teams/getTeam/feature.js.map +1 -0
  574. package/features/accessManagement/teams/getTeam/index.d.ts +3 -0
  575. package/features/accessManagement/teams/getTeam/index.js +2 -0
  576. package/features/accessManagement/teams/listTeams/ListTeamsGateway.d.ts +11 -0
  577. package/features/accessManagement/teams/listTeams/ListTeamsGateway.js +49 -0
  578. package/features/accessManagement/teams/listTeams/ListTeamsGateway.js.map +1 -0
  579. package/features/accessManagement/teams/listTeams/ListTeamsRepository.d.ts +11 -0
  580. package/features/accessManagement/teams/listTeams/ListTeamsRepository.js +22 -0
  581. package/features/accessManagement/teams/listTeams/ListTeamsRepository.js.map +1 -0
  582. package/features/accessManagement/teams/listTeams/ListTeamsUseCase.d.ts +10 -0
  583. package/features/accessManagement/teams/listTeams/ListTeamsUseCase.js +18 -0
  584. package/features/accessManagement/teams/listTeams/ListTeamsUseCase.js.map +1 -0
  585. package/features/accessManagement/teams/listTeams/abstractions.d.ts +30 -0
  586. package/features/accessManagement/teams/listTeams/abstractions.js +8 -0
  587. package/features/accessManagement/teams/listTeams/abstractions.js.map +1 -0
  588. package/features/accessManagement/teams/listTeams/feature.d.ts +3 -0
  589. package/features/accessManagement/teams/listTeams/feature.js +23 -0
  590. package/features/accessManagement/teams/listTeams/feature.js.map +1 -0
  591. package/features/accessManagement/teams/listTeams/index.d.ts +3 -0
  592. package/features/accessManagement/teams/listTeams/index.js +2 -0
  593. package/features/accessManagement/teams/updateTeam/UpdateTeamGateway.d.ts +12 -0
  594. package/features/accessManagement/teams/updateTeam/UpdateTeamGateway.js +56 -0
  595. package/features/accessManagement/teams/updateTeam/UpdateTeamGateway.js.map +1 -0
  596. package/features/accessManagement/teams/updateTeam/UpdateTeamRepository.d.ts +13 -0
  597. package/features/accessManagement/teams/updateTeam/UpdateTeamRepository.js +23 -0
  598. package/features/accessManagement/teams/updateTeam/UpdateTeamRepository.js.map +1 -0
  599. package/features/accessManagement/teams/updateTeam/UpdateTeamUseCase.d.ts +11 -0
  600. package/features/accessManagement/teams/updateTeam/UpdateTeamUseCase.js +18 -0
  601. package/features/accessManagement/teams/updateTeam/UpdateTeamUseCase.js.map +1 -0
  602. package/features/accessManagement/teams/updateTeam/abstractions.d.ts +27 -0
  603. package/features/accessManagement/teams/updateTeam/abstractions.js +7 -0
  604. package/features/accessManagement/teams/updateTeam/abstractions.js.map +1 -0
  605. package/features/accessManagement/teams/updateTeam/feature.d.ts +3 -0
  606. package/features/accessManagement/teams/updateTeam/feature.js +21 -0
  607. package/features/accessManagement/teams/updateTeam/feature.js.map +1 -0
  608. package/features/accessManagement/teams/updateTeam/index.d.ts +3 -0
  609. package/features/accessManagement/teams/updateTeam/index.js +2 -0
  610. package/features/accessManagement/types.d.ts +34 -0
  611. package/features/accessManagement/types.js +0 -0
  612. package/features/aiChat/AiChatGateway.d.ts +30 -0
  613. package/features/aiChat/AiChatGateway.js +41 -0
  614. package/features/aiChat/AiChatGateway.js.map +1 -0
  615. package/features/aiChat/AiChatPresenter.d.ts +32 -0
  616. package/features/aiChat/AiChatPresenter.js +220 -0
  617. package/features/aiChat/AiChatPresenter.js.map +1 -0
  618. package/features/aiChat/abstractions.d.ts +124 -0
  619. package/features/aiChat/abstractions.js +6 -0
  620. package/features/aiChat/abstractions.js.map +1 -0
  621. package/features/aiChat/feature.d.ts +3 -0
  622. package/features/aiChat/feature.js +19 -0
  623. package/features/aiChat/feature.js.map +1 -0
  624. package/features/aiChat/index.d.ts +6 -0
  625. package/features/aiChat/index.js +3 -0
  626. package/features/clipboard/ClipboardService.d.ts +15 -0
  627. package/features/clipboard/ClipboardService.js +51 -0
  628. package/features/clipboard/ClipboardService.js.map +1 -0
  629. package/features/clipboard/abstractions.d.ts +14 -0
  630. package/features/clipboard/abstractions.js +5 -0
  631. package/features/clipboard/abstractions.js.map +1 -0
  632. package/features/clipboard/feature.d.ts +3 -0
  633. package/features/clipboard/feature.js +17 -0
  634. package/features/clipboard/feature.js.map +1 -0
  635. package/features/clipboard/index.d.ts +2 -0
  636. package/features/clipboard/index.js +2 -0
  637. package/features/confirmation/Confirmation.d.ts +11 -0
  638. package/features/confirmation/Confirmation.js +29 -0
  639. package/features/confirmation/Confirmation.js.map +1 -0
  640. package/features/confirmation/ConfirmationBridge.d.ts +1 -0
  641. package/features/confirmation/ConfirmationBridge.js +20 -0
  642. package/features/confirmation/ConfirmationBridge.js.map +1 -0
  643. package/features/confirmation/abstractions.d.ts +15 -0
  644. package/features/confirmation/abstractions.js +6 -0
  645. package/features/confirmation/abstractions.js.map +1 -0
  646. package/features/confirmation/feature.d.ts +1 -0
  647. package/features/confirmation/feature.js +11 -0
  648. package/features/confirmation/feature.js.map +1 -0
  649. package/features/confirmation/index.d.ts +3 -0
  650. package/features/confirmation/index.js +3 -0
  651. package/features/dateFormatter/DefaultDateFormatter.d.ts +8 -0
  652. package/features/dateFormatter/DefaultDateFormatter.js +25 -0
  653. package/features/dateFormatter/DefaultDateFormatter.js.map +1 -0
  654. package/features/dateFormatter/abstractions.d.ts +13 -0
  655. package/features/dateFormatter/abstractions.js +5 -0
  656. package/features/dateFormatter/abstractions.js.map +1 -0
  657. package/features/dateFormatter/feature.d.ts +3 -0
  658. package/features/dateFormatter/feature.js +17 -0
  659. package/features/dateFormatter/feature.js.map +1 -0
  660. package/features/dateFormatter/index.d.ts +4 -0
  661. package/features/dateFormatter/index.js +4 -0
  662. package/features/dateFormatter/useDateFormatter.d.ts +5 -0
  663. package/features/dateFormatter/useDateFormatter.js +8 -0
  664. package/features/dateFormatter/useDateFormatter.js.map +1 -0
  665. package/features/featureFlags/FeatureFlagsGateway.d.ts +10 -0
  666. package/features/featureFlags/FeatureFlagsGateway.js +40 -0
  667. package/features/featureFlags/FeatureFlagsGateway.js.map +1 -0
  668. package/features/featureFlags/FeatureFlagsService.d.ts +16 -0
  669. package/features/featureFlags/FeatureFlagsService.js +64 -0
  670. package/features/featureFlags/FeatureFlagsService.js.map +1 -0
  671. package/features/featureFlags/abstractions.d.ts +19 -0
  672. package/features/featureFlags/abstractions.js +6 -0
  673. package/features/featureFlags/abstractions.js.map +1 -0
  674. package/features/featureFlags/feature.d.ts +3 -0
  675. package/features/featureFlags/feature.js +19 -0
  676. package/features/featureFlags/feature.js.map +1 -0
  677. package/features/formModel/Field.d.ts +5 -5
  678. package/features/formModel/Field.js +69 -13
  679. package/features/formModel/Field.js.map +1 -1
  680. package/features/formModel/FieldBuilder.d.ts +8 -3
  681. package/features/formModel/FieldBuilder.js +21 -2
  682. package/features/formModel/FieldBuilder.js.map +1 -1
  683. package/features/formModel/FieldBuilder.test.js +4 -4
  684. package/features/formModel/FieldBuilder.test.js.map +1 -1
  685. package/features/formModel/FormErrors.d.ts +3 -2
  686. package/features/formModel/FormErrors.js +4 -3
  687. package/features/formModel/FormErrors.js.map +1 -1
  688. package/features/formModel/FormModel.d.ts +8 -2
  689. package/features/formModel/FormModel.js +33 -10
  690. package/features/formModel/FormModel.js.map +1 -1
  691. package/features/formModel/FormModel.test.js +266 -21
  692. package/features/formModel/FormModel.test.js.map +1 -1
  693. package/features/formModel/FormView.d.ts +8 -4
  694. package/features/formModel/FormView.js +25 -6
  695. package/features/formModel/FormView.js.map +1 -1
  696. package/features/formModel/LayoutBuilderFactory.d.ts +3 -2
  697. package/features/formModel/LayoutBuilderFactory.js +58 -5
  698. package/features/formModel/LayoutBuilderFactory.js.map +1 -1
  699. package/features/formModel/LayoutMutator.js +6 -0
  700. package/features/formModel/LayoutMutator.js.map +1 -1
  701. package/features/formModel/LayoutResolver.d.ts +1 -0
  702. package/features/formModel/LayoutResolver.js +27 -6
  703. package/features/formModel/LayoutResolver.js.map +1 -1
  704. package/features/formModel/ObjectField.d.ts +4 -2
  705. package/features/formModel/ObjectField.js +43 -3
  706. package/features/formModel/ObjectField.js.map +1 -1
  707. package/features/formModel/PresenterErrors.d.ts +2 -2
  708. package/features/formModel/abstractions.d.ts +86 -19
  709. package/features/formModel/abstractions.js.map +1 -1
  710. package/features/formModel/demo/FormModelDemo.d.ts +2 -2
  711. package/features/formModel/demo/FormModelPhase11Presenter.js +5 -5
  712. package/features/formModel/demo/FormModelPhase11Presenter.js.map +1 -1
  713. package/features/formModel/feature.js +4 -1
  714. package/features/formModel/feature.js.map +1 -1
  715. package/features/formModel/fieldTypes/ObjectFieldType.js +2 -1
  716. package/features/formModel/fieldTypes/ObjectFieldType.js.map +1 -1
  717. package/features/formModel/fieldTypes/PasswordFieldType.d.ts +18 -0
  718. package/features/formModel/fieldTypes/PasswordFieldType.js +23 -0
  719. package/features/formModel/fieldTypes/PasswordFieldType.js.map +1 -0
  720. package/features/formModel/fieldTypes/PermissionsFieldType.d.ts +18 -0
  721. package/features/formModel/fieldTypes/PermissionsFieldType.js +27 -0
  722. package/features/formModel/fieldTypes/PermissionsFieldType.js.map +1 -0
  723. package/features/formModel/fieldTypes/RolesMultiSelectFieldType.d.ts +18 -0
  724. package/features/formModel/fieldTypes/RolesMultiSelectFieldType.js +24 -0
  725. package/features/formModel/fieldTypes/RolesMultiSelectFieldType.js.map +1 -0
  726. package/features/formModel/fieldTypes/index.d.ts +3 -0
  727. package/features/formModel/fieldTypes/index.js +3 -0
  728. package/features/formModel/index.d.ts +2 -3
  729. package/features/formModel/index.js +3 -4
  730. package/features/formModel/renderers.d.ts +5 -0
  731. package/features/formModel/renderers.js +5 -0
  732. package/features/iconPicker/listCustomIcons/ListCustomIconsGateway.d.ts +11 -0
  733. package/features/iconPicker/listCustomIcons/ListCustomIconsGateway.js +49 -0
  734. package/features/iconPicker/listCustomIcons/ListCustomIconsGateway.js.map +1 -0
  735. package/features/iconPicker/listCustomIcons/abstractions.d.ts +12 -0
  736. package/features/iconPicker/listCustomIcons/abstractions.js +5 -0
  737. package/features/iconPicker/listCustomIcons/abstractions.js.map +1 -0
  738. package/features/iconPicker/listCustomIcons/feature.d.ts +1 -0
  739. package/features/iconPicker/listCustomIcons/feature.js +11 -0
  740. package/features/iconPicker/listCustomIcons/feature.js.map +1 -0
  741. package/features/iconPicker/listCustomIcons/index.d.ts +3 -0
  742. package/features/iconPicker/listCustomIcons/index.js +2 -0
  743. package/features/listCache/ListCache.d.ts +4 -1
  744. package/features/listCache/ListCache.js +13 -3
  745. package/features/listCache/ListCache.js.map +1 -1
  746. package/features/notifications/Notifications.d.ts +16 -0
  747. package/features/notifications/Notifications.js +39 -0
  748. package/features/notifications/Notifications.js.map +1 -0
  749. package/features/notifications/NotificationsPresenter.d.ts +11 -0
  750. package/features/notifications/NotificationsPresenter.js +27 -0
  751. package/features/notifications/NotificationsPresenter.js.map +1 -0
  752. package/features/notifications/NotificationsRenderer.d.ts +7 -0
  753. package/features/notifications/NotificationsRenderer.js +38 -0
  754. package/features/notifications/NotificationsRenderer.js.map +1 -0
  755. package/features/notifications/abstractions.d.ts +38 -0
  756. package/features/notifications/abstractions.js +6 -0
  757. package/features/notifications/abstractions.js.map +1 -0
  758. package/features/notifications/feature.d.ts +4 -0
  759. package/features/notifications/feature.js +20 -0
  760. package/features/notifications/feature.js.map +1 -0
  761. package/features/notifications/index.d.ts +3 -0
  762. package/features/notifications/index.js +3 -0
  763. package/features/security/AuthenticationContext/ApiStreamClientDecorator.d.ts +22 -0
  764. package/features/security/AuthenticationContext/ApiStreamClientDecorator.js +32 -0
  765. package/features/security/AuthenticationContext/ApiStreamClientDecorator.js.map +1 -0
  766. package/features/security/AuthenticationContext/feature.js +2 -0
  767. package/features/security/AuthenticationContext/feature.js.map +1 -1
  768. package/features/slugify/DefaultSlugify.d.ts +8 -0
  769. package/features/slugify/DefaultSlugify.js +20 -0
  770. package/features/slugify/DefaultSlugify.js.map +1 -0
  771. package/features/slugify/abstractions.d.ts +12 -0
  772. package/features/slugify/abstractions.js +5 -0
  773. package/features/slugify/abstractions.js.map +1 -0
  774. package/features/slugify/feature.d.ts +1 -0
  775. package/features/slugify/feature.js +11 -0
  776. package/features/slugify/feature.js.map +1 -0
  777. package/features/slugify/index.d.ts +3 -0
  778. package/features/slugify/index.js +3 -0
  779. package/features/stringFormatter/DefaultStringFormatter.d.ts +17 -0
  780. package/features/stringFormatter/DefaultStringFormatter.js +19 -0
  781. package/features/stringFormatter/DefaultStringFormatter.js.map +1 -0
  782. package/features/stringFormatter/abstractions.d.ts +11 -0
  783. package/features/stringFormatter/abstractions.js +5 -0
  784. package/features/stringFormatter/abstractions.js.map +1 -0
  785. package/features/stringFormatter/feature.d.ts +3 -0
  786. package/features/stringFormatter/feature.js +19 -0
  787. package/features/stringFormatter/feature.js.map +1 -0
  788. package/features/stringFormatter/index.d.ts +4 -0
  789. package/features/stringFormatter/index.js +4 -0
  790. package/features/stringFormatter/useStringFormatter.d.ts +5 -0
  791. package/features/stringFormatter/useStringFormatter.js +8 -0
  792. package/features/stringFormatter/useStringFormatter.js.map +1 -0
  793. package/features/tenancy/ApiStreamClientDecorator.d.ts +16 -0
  794. package/features/tenancy/ApiStreamClientDecorator.js +30 -0
  795. package/features/tenancy/ApiStreamClientDecorator.js.map +1 -0
  796. package/features/tenancy/feature.js +2 -0
  797. package/features/tenancy/feature.js.map +1 -1
  798. package/features/wcp/ReactLicense.d.ts +6 -0
  799. package/features/wcp/ReactLicense.js +18 -0
  800. package/features/wcp/ReactLicense.js.map +1 -1
  801. package/features/wcp/WcpGateway.js +3 -0
  802. package/features/wcp/WcpGateway.js.map +1 -1
  803. package/features/webinySdk/WebinySdk.d.ts +2 -1
  804. package/features/webinySdk/WebinySdk.js.map +1 -1
  805. package/hooks/index.d.ts +4 -0
  806. package/hooks/index.js +4 -0
  807. package/hooks/useDrawer.d.ts +9 -0
  808. package/hooks/useDrawer.js +19 -0
  809. package/hooks/useDrawer.js.map +1 -0
  810. package/hooks/useHotkeys.js +5 -3
  811. package/hooks/useHotkeys.js.map +1 -1
  812. package/hooks/useNamedConfirmationDialog.d.ts +9 -0
  813. package/hooks/useNamedConfirmationDialog.js +20 -0
  814. package/hooks/useNamedConfirmationDialog.js.map +1 -0
  815. package/hooks/useOpenDrawer.d.ts +7 -0
  816. package/hooks/useOpenDrawer.js +18 -0
  817. package/hooks/useOpenDrawer.js.map +1 -0
  818. package/hooks/useSnackbar.js.map +1 -1
  819. package/index.d.ts +52 -2
  820. package/index.js +51 -9
  821. package/modules/AccessManagementExtension.d.ts +2 -0
  822. package/modules/AccessManagementExtension.js +175 -0
  823. package/modules/AccessManagementExtension.js.map +1 -0
  824. package/package.json +36 -41
  825. package/permissions/createPermissions.js.map +1 -1
  826. package/presentation/accessManagement/SecurityPermissions.d.ts +2 -0
  827. package/presentation/accessManagement/SecurityPermissions.js +54 -0
  828. package/presentation/accessManagement/SecurityPermissions.js.map +1 -0
  829. package/presentation/accessManagement/apiKeys/ApiKeysDataSource.d.ts +13 -0
  830. package/presentation/accessManagement/apiKeys/ApiKeysDataSource.js +23 -0
  831. package/presentation/accessManagement/apiKeys/ApiKeysDataSource.js.map +1 -0
  832. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.d.ts +40 -0
  833. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js +190 -0
  834. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js.map +1 -0
  835. package/presentation/accessManagement/apiKeys/abstractions.d.ts +25 -0
  836. package/presentation/accessManagement/apiKeys/abstractions.js +5 -0
  837. package/presentation/accessManagement/apiKeys/abstractions.js.map +1 -0
  838. package/presentation/accessManagement/apiKeys/components/ApiKeysView.d.ts +4 -0
  839. package/presentation/accessManagement/apiKeys/components/ApiKeysView.js +240 -0
  840. package/presentation/accessManagement/apiKeys/components/ApiKeysView.js.map +1 -0
  841. package/presentation/accessManagement/apiKeys/feature.d.ts +3 -0
  842. package/presentation/accessManagement/apiKeys/feature.js +17 -0
  843. package/presentation/accessManagement/apiKeys/feature.js.map +1 -0
  844. package/presentation/accessManagement/roles/RolesDataSource.d.ts +13 -0
  845. package/presentation/accessManagement/roles/RolesDataSource.js +23 -0
  846. package/presentation/accessManagement/roles/RolesDataSource.js.map +1 -0
  847. package/presentation/accessManagement/roles/RolesPresenter.d.ts +40 -0
  848. package/presentation/accessManagement/roles/RolesPresenter.js +198 -0
  849. package/presentation/accessManagement/roles/RolesPresenter.js.map +1 -0
  850. package/presentation/accessManagement/roles/abstractions.d.ts +27 -0
  851. package/presentation/accessManagement/roles/abstractions.js +5 -0
  852. package/presentation/accessManagement/roles/abstractions.js.map +1 -0
  853. package/presentation/accessManagement/roles/components/RolesView.d.ts +4 -0
  854. package/presentation/accessManagement/roles/components/RolesView.js +236 -0
  855. package/presentation/accessManagement/roles/components/RolesView.js.map +1 -0
  856. package/presentation/accessManagement/roles/feature.d.ts +3 -0
  857. package/presentation/accessManagement/roles/feature.js +17 -0
  858. package/presentation/accessManagement/roles/feature.js.map +1 -0
  859. package/presentation/accessManagement/roles/rolesAutocomplete/RolesAutocompletePresenter.d.ts +15 -0
  860. package/presentation/accessManagement/roles/rolesAutocomplete/RolesAutocompletePresenter.js +42 -0
  861. package/presentation/accessManagement/roles/rolesAutocomplete/RolesAutocompletePresenter.js.map +1 -0
  862. package/presentation/accessManagement/roles/rolesAutocomplete/abstractions.d.ts +18 -0
  863. package/presentation/accessManagement/roles/rolesAutocomplete/abstractions.js +5 -0
  864. package/presentation/accessManagement/roles/rolesAutocomplete/abstractions.js.map +1 -0
  865. package/presentation/accessManagement/roles/rolesAutocomplete/feature.d.ts +3 -0
  866. package/presentation/accessManagement/roles/rolesAutocomplete/feature.js +17 -0
  867. package/presentation/accessManagement/roles/rolesAutocomplete/feature.js.map +1 -0
  868. package/presentation/accessManagement/roles/rolesAutocomplete/index.d.ts +3 -0
  869. package/presentation/accessManagement/roles/rolesAutocomplete/index.js +2 -0
  870. package/presentation/accessManagement/routes.d.ts +21 -0
  871. package/presentation/accessManagement/routes.js +36 -0
  872. package/presentation/accessManagement/routes.js.map +1 -0
  873. package/presentation/accessManagement/teams/TeamsDataSource.d.ts +13 -0
  874. package/presentation/accessManagement/teams/TeamsDataSource.js +23 -0
  875. package/presentation/accessManagement/teams/TeamsDataSource.js.map +1 -0
  876. package/presentation/accessManagement/teams/TeamsPresenter.d.ts +41 -0
  877. package/presentation/accessManagement/teams/TeamsPresenter.js +197 -0
  878. package/presentation/accessManagement/teams/TeamsPresenter.js.map +1 -0
  879. package/presentation/accessManagement/teams/abstractions.d.ts +26 -0
  880. package/presentation/accessManagement/teams/abstractions.js +5 -0
  881. package/presentation/accessManagement/teams/abstractions.js.map +1 -0
  882. package/presentation/accessManagement/teams/components/TeamsView.d.ts +4 -0
  883. package/presentation/accessManagement/teams/components/TeamsView.js +218 -0
  884. package/presentation/accessManagement/teams/components/TeamsView.js.map +1 -0
  885. package/presentation/accessManagement/teams/feature.d.ts +3 -0
  886. package/presentation/accessManagement/teams/feature.js +17 -0
  887. package/presentation/accessManagement/teams/feature.js.map +1 -0
  888. package/presentation/accessManagement/teams/teamsAutocomplete/TeamsAutocompletePresenter.d.ts +15 -0
  889. package/presentation/accessManagement/teams/teamsAutocomplete/TeamsAutocompletePresenter.js +42 -0
  890. package/presentation/accessManagement/teams/teamsAutocomplete/TeamsAutocompletePresenter.js.map +1 -0
  891. package/presentation/accessManagement/teams/teamsAutocomplete/abstractions.d.ts +18 -0
  892. package/presentation/accessManagement/teams/teamsAutocomplete/abstractions.js +5 -0
  893. package/presentation/accessManagement/teams/teamsAutocomplete/abstractions.js.map +1 -0
  894. package/presentation/accessManagement/teams/teamsAutocomplete/feature.d.ts +3 -0
  895. package/presentation/accessManagement/teams/teamsAutocomplete/feature.js +17 -0
  896. package/presentation/accessManagement/teams/teamsAutocomplete/feature.js.map +1 -0
  897. package/presentation/accessManagement/teams/teamsAutocomplete/index.d.ts +3 -0
  898. package/presentation/accessManagement/teams/teamsAutocomplete/index.js +2 -0
  899. package/presentation/commandPalette/CommandPalettePresenter.d.ts +21 -0
  900. package/presentation/commandPalette/CommandPalettePresenter.js +91 -0
  901. package/presentation/commandPalette/CommandPalettePresenter.js.map +1 -0
  902. package/presentation/commandPalette/abstractions.d.ts +76 -0
  903. package/presentation/commandPalette/abstractions.js +7 -0
  904. package/presentation/commandPalette/abstractions.js.map +1 -0
  905. package/presentation/commandPalette/commands/AskAiCommand.d.ts +25 -0
  906. package/presentation/commandPalette/commands/AskAiCommand.js +33 -0
  907. package/presentation/commandPalette/commands/AskAiCommand.js.map +1 -0
  908. package/presentation/commandPalette/commands/CopyCurrentUrlCommand.d.ts +15 -0
  909. package/presentation/commandPalette/commands/CopyCurrentUrlCommand.js +33 -0
  910. package/presentation/commandPalette/commands/CopyCurrentUrlCommand.js.map +1 -0
  911. package/presentation/commandPalette/commands/SendMessageCommand.d.ts +23 -0
  912. package/presentation/commandPalette/commands/SendMessageCommand.js +66 -0
  913. package/presentation/commandPalette/commands/SendMessageCommand.js.map +1 -0
  914. package/presentation/commandPalette/commands/SignOutCommand.d.ts +18 -0
  915. package/presentation/commandPalette/commands/SignOutCommand.js +37 -0
  916. package/presentation/commandPalette/commands/SignOutCommand.js.map +1 -0
  917. package/presentation/commandPalette/commands/feature.d.ts +5 -0
  918. package/presentation/commandPalette/commands/feature.js +17 -0
  919. package/presentation/commandPalette/commands/feature.js.map +1 -0
  920. package/presentation/commandPalette/feature.d.ts +3 -0
  921. package/presentation/commandPalette/feature.js +17 -0
  922. package/presentation/commandPalette/feature.js.map +1 -0
  923. package/presentation/commandPalette/index.d.ts +3 -0
  924. package/presentation/commandPalette/index.js +2 -0
  925. package/presentation/featureFlags/FeatureFlagsProvider.d.ts +7 -0
  926. package/presentation/featureFlags/FeatureFlagsProvider.js +22 -0
  927. package/presentation/featureFlags/FeatureFlagsProvider.js.map +1 -0
  928. package/presentation/featureFlags/useFeatureFlags.d.ts +2 -0
  929. package/presentation/featureFlags/useFeatureFlags.js +17 -0
  930. package/presentation/featureFlags/useFeatureFlags.js.map +1 -0
  931. package/presentation/iconPicker/customIcons/CustomIconsPresenter.d.ts +16 -0
  932. package/presentation/iconPicker/customIcons/CustomIconsPresenter.js +40 -0
  933. package/presentation/iconPicker/customIcons/CustomIconsPresenter.js.map +1 -0
  934. package/presentation/iconPicker/customIcons/abstractions.d.ts +14 -0
  935. package/presentation/iconPicker/customIcons/abstractions.js +5 -0
  936. package/presentation/iconPicker/customIcons/abstractions.js.map +1 -0
  937. package/presentation/iconPicker/customIcons/feature.d.ts +3 -0
  938. package/presentation/iconPicker/customIcons/feature.js +17 -0
  939. package/presentation/iconPicker/customIcons/feature.js.map +1 -0
  940. package/presentation/iconPicker/customIcons/index.d.ts +3 -0
  941. package/presentation/iconPicker/customIcons/index.js +2 -0
  942. package/presentation/installation/components/SystemInstaller/SystemInstaller.d.ts +2 -2
  943. package/presentation/installation/components/SystemInstaller/SystemInstaller.js +3 -1
  944. package/presentation/installation/components/SystemInstaller/SystemInstaller.js.map +1 -1
  945. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.d.ts +1 -1
  946. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js +1 -1
  947. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js.map +1 -1
  948. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js +5 -4
  949. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js.map +1 -1
  950. package/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.js +0 -3
  951. package/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.js.map +1 -1
  952. package/presentation/installation/components/SystemInstaller/steps/FinishSetup.js +1 -1
  953. package/presentation/installation/components/SystemInstaller/steps/FinishSetup.js.map +1 -1
  954. package/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js +7 -5
  955. package/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js.map +1 -1
  956. package/presentation/listPresenter/FolderAwareDataSource.d.ts +50 -0
  957. package/presentation/listPresenter/FolderAwareDataSource.js +135 -0
  958. package/presentation/listPresenter/FolderAwareDataSource.js.map +1 -0
  959. package/presentation/listPresenter/ListPresenter.d.ts +4 -0
  960. package/presentation/listPresenter/ListPresenter.js +30 -4
  961. package/presentation/listPresenter/ListPresenter.js.map +1 -1
  962. package/presentation/listPresenter/QueryMatcher.d.ts +56 -0
  963. package/presentation/listPresenter/QueryMatcher.js +59 -0
  964. package/presentation/listPresenter/QueryMatcher.js.map +1 -0
  965. package/presentation/listPresenter/SimpleDataSource.d.ts +15 -0
  966. package/presentation/listPresenter/SimpleDataSource.js +70 -0
  967. package/presentation/listPresenter/SimpleDataSource.js.map +1 -0
  968. package/presentation/listPresenter/abstractions.d.ts +9 -0
  969. package/presentation/listPresenter/abstractions.js.map +1 -1
  970. package/presentation/listPresenter/index.d.ts +5 -0
  971. package/presentation/listPresenter/index.js +3 -0
  972. package/presentation/security/components/HasPermission.d.ts +1 -1
  973. package/presentation/sortable/SortablePresenter.d.ts +23 -0
  974. package/presentation/sortable/SortablePresenter.js +175 -0
  975. package/presentation/sortable/SortablePresenter.js.map +1 -0
  976. package/presentation/sortable/abstractions.d.ts +24 -0
  977. package/presentation/sortable/abstractions.js +5 -0
  978. package/presentation/sortable/abstractions.js.map +1 -0
  979. package/presentation/sortable/feature.d.ts +1 -0
  980. package/presentation/sortable/feature.js +11 -0
  981. package/presentation/sortable/feature.js.map +1 -0
  982. package/presentation/sortable/index.d.ts +2 -0
  983. package/presentation/sortable/index.js +2 -0
  984. package/presentation/tenancy/TenancyProvider.js +0 -4
  985. package/presentation/tenancy/TenancyProvider.js.map +1 -1
  986. package/presentation/trashBin/TrashBinDataSource.d.ts +16 -0
  987. package/presentation/trashBin/TrashBinDataSource.js +82 -0
  988. package/presentation/trashBin/TrashBinDataSource.js.map +1 -0
  989. package/presentation/trashBin/TrashBinPresenter.d.ts +20 -0
  990. package/presentation/trashBin/TrashBinPresenter.js +114 -0
  991. package/presentation/trashBin/TrashBinPresenter.js.map +1 -0
  992. package/presentation/trashBin/abstractions.d.ts +105 -0
  993. package/presentation/trashBin/abstractions.js +9 -0
  994. package/presentation/trashBin/abstractions.js.map +1 -0
  995. package/presentation/trashBin/components/Actions/DeleteItemAction.d.ts +2 -0
  996. package/presentation/trashBin/components/Actions/DeleteItemAction.js +20 -0
  997. package/presentation/trashBin/components/Actions/DeleteItemAction.js.map +1 -0
  998. package/presentation/trashBin/components/Actions/RestoreItemAction.d.ts +2 -0
  999. package/presentation/trashBin/components/Actions/RestoreItemAction.js +19 -0
  1000. package/presentation/trashBin/components/Actions/RestoreItemAction.js.map +1 -0
  1001. package/presentation/trashBin/components/Actions/index.d.ts +2 -0
  1002. package/presentation/trashBin/components/Actions/index.js +2 -0
  1003. package/presentation/trashBin/components/BulkActions/DeleteItems.d.ts +4 -0
  1004. package/presentation/trashBin/components/BulkActions/DeleteItems.js +72 -0
  1005. package/presentation/trashBin/components/BulkActions/DeleteItems.js.map +1 -0
  1006. package/presentation/trashBin/components/BulkActions/RestoreItems.d.ts +4 -0
  1007. package/presentation/trashBin/components/BulkActions/RestoreItems.js +81 -0
  1008. package/presentation/trashBin/components/BulkActions/RestoreItems.js.map +1 -0
  1009. package/presentation/trashBin/components/BulkActions/RestoreItemsReportMessage.d.ts +5 -0
  1010. package/presentation/trashBin/components/BulkActions/RestoreItemsReportMessage.js +12 -0
  1011. package/presentation/trashBin/components/BulkActions/RestoreItemsReportMessage.js.map +1 -0
  1012. package/presentation/trashBin/components/BulkActions/index.d.ts +2 -0
  1013. package/presentation/trashBin/components/BulkActions/index.js +2 -0
  1014. package/presentation/trashBin/components/Cells/CellActions.d.ts +2 -0
  1015. package/presentation/trashBin/components/Cells/CellActions.js +18 -0
  1016. package/presentation/trashBin/components/Cells/CellActions.js.map +1 -0
  1017. package/presentation/trashBin/components/Cells/CellCreatedBy.d.ts +2 -0
  1018. package/presentation/trashBin/components/Cells/CellCreatedBy.js +11 -0
  1019. package/presentation/trashBin/components/Cells/CellCreatedBy.js.map +1 -0
  1020. package/presentation/trashBin/components/Cells/CellDeletedBy.d.ts +2 -0
  1021. package/presentation/trashBin/components/Cells/CellDeletedBy.js +11 -0
  1022. package/presentation/trashBin/components/Cells/CellDeletedBy.js.map +1 -0
  1023. package/presentation/trashBin/components/Cells/CellDeletedOn.d.ts +2 -0
  1024. package/presentation/trashBin/components/Cells/CellDeletedOn.js +14 -0
  1025. package/presentation/trashBin/components/Cells/CellDeletedOn.js.map +1 -0
  1026. package/presentation/trashBin/components/Cells/CellTitle.d.ts +2 -0
  1027. package/presentation/trashBin/components/Cells/CellTitle.js +21 -0
  1028. package/presentation/trashBin/components/Cells/CellTitle.js.map +1 -0
  1029. package/presentation/trashBin/components/Cells/index.d.ts +5 -0
  1030. package/presentation/trashBin/components/Cells/index.js +5 -0
  1031. package/presentation/trashBin/components/TrashBinConfigs.d.ts +2 -0
  1032. package/presentation/trashBin/components/TrashBinConfigs.js +55 -0
  1033. package/presentation/trashBin/components/TrashBinConfigs.js.map +1 -0
  1034. package/presentation/trashBin/components/TrashBinOverlay.d.ts +12 -0
  1035. package/presentation/trashBin/components/TrashBinOverlay.js +139 -0
  1036. package/presentation/trashBin/components/TrashBinOverlay.js.map +1 -0
  1037. package/presentation/trashBin/components/TrashBinTable.d.ts +2 -0
  1038. package/presentation/trashBin/components/TrashBinTable.js +48 -0
  1039. package/presentation/trashBin/components/TrashBinTable.js.map +1 -0
  1040. package/presentation/trashBin/configs/Browser/BulkAction.d.ts +34 -0
  1041. package/presentation/trashBin/configs/Browser/BulkAction.js +59 -0
  1042. package/presentation/trashBin/configs/Browser/BulkAction.js.map +1 -0
  1043. package/presentation/trashBin/configs/Browser/EntryAction.d.ts +18 -0
  1044. package/presentation/trashBin/configs/Browser/EntryAction.js +36 -0
  1045. package/presentation/trashBin/configs/Browser/EntryAction.js.map +1 -0
  1046. package/presentation/trashBin/configs/Browser/Table/Column.d.ts +16 -0
  1047. package/presentation/trashBin/configs/Browser/Table/Column.js +9 -0
  1048. package/presentation/trashBin/configs/Browser/Table/Column.js.map +1 -0
  1049. package/presentation/trashBin/configs/Browser/Table/Sorting.d.ts +5 -0
  1050. package/presentation/trashBin/configs/Browser/Table/Sorting.js +6 -0
  1051. package/presentation/trashBin/configs/Browser/Table/Sorting.js.map +1 -0
  1052. package/presentation/trashBin/configs/Browser/Table/index.d.ts +18 -0
  1053. package/presentation/trashBin/configs/Browser/Table/index.js +9 -0
  1054. package/presentation/trashBin/configs/Browser/Table/index.js.map +1 -0
  1055. package/presentation/trashBin/configs/Browser/index.d.ts +40 -0
  1056. package/presentation/trashBin/configs/Browser/index.js +11 -0
  1057. package/presentation/trashBin/configs/Browser/index.js.map +1 -0
  1058. package/presentation/trashBin/configs/TrashBinListConfig.d.ts +46 -0
  1059. package/presentation/trashBin/configs/TrashBinListConfig.js +43 -0
  1060. package/presentation/trashBin/configs/TrashBinListConfig.js.map +1 -0
  1061. package/presentation/trashBin/configs/index.d.ts +1 -0
  1062. package/presentation/trashBin/configs/index.js +1 -0
  1063. package/presentation/trashBin/feature.d.ts +3 -0
  1064. package/presentation/trashBin/feature.js +17 -0
  1065. package/presentation/trashBin/feature.js.map +1 -0
  1066. package/presentation/trashBin/hooks/index.d.ts +4 -0
  1067. package/presentation/trashBin/hooks/index.js +4 -0
  1068. package/presentation/trashBin/hooks/useDeleteTrashBinItem.d.ts +8 -0
  1069. package/presentation/trashBin/hooks/useDeleteTrashBinItem.js +33 -0
  1070. package/presentation/trashBin/hooks/useDeleteTrashBinItem.js.map +1 -0
  1071. package/presentation/trashBin/hooks/useRestoreTrashBinItem.d.ts +8 -0
  1072. package/presentation/trashBin/hooks/useRestoreTrashBinItem.js +35 -0
  1073. package/presentation/trashBin/hooks/useRestoreTrashBinItem.js.map +1 -0
  1074. package/presentation/trashBin/hooks/useTrashBinItem.d.ts +11 -0
  1075. package/presentation/trashBin/hooks/useTrashBinItem.js +7 -0
  1076. package/presentation/trashBin/hooks/useTrashBinItem.js.map +1 -0
  1077. package/presentation/trashBin/hooks/useTrashBinPresenter.d.ts +13 -0
  1078. package/presentation/trashBin/hooks/useTrashBinPresenter.js +7 -0
  1079. package/presentation/trashBin/hooks/useTrashBinPresenter.js.map +1 -0
  1080. package/presentation/trashBin/index.d.ts +6 -0
  1081. package/presentation/trashBin/index.js +6 -0
  1082. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone.d.ts +0 -10
  1083. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone.js +0 -97
  1084. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone.js.map +0 -1
  1085. package/base/Base/Menus/WebinyVersion.d.ts +0 -2
  1086. package/base/Base/Menus/WebinyVersion.js +0 -23
  1087. package/base/Base/Menus/WebinyVersion.js.map +0 -1
  1088. package/base/WebinyVersion.d.ts +0 -2
  1089. package/base/WebinyVersion.js +0 -23
  1090. package/base/WebinyVersion.js.map +0 -1
  1091. package/base/plugins/AddGraphQLQuerySelection.d.ts +0 -8
  1092. package/base/plugins/AddGraphQLQuerySelection.js +0 -19
  1093. package/base/plugins/AddGraphQLQuerySelection.js.map +0 -1
  1094. package/base/providers/ApolloProvider.d.ts +0 -13
  1095. package/base/providers/ApolloProvider.js +0 -10
  1096. package/base/providers/ApolloProvider.js.map +0 -1
  1097. package/components/IconPicker/plugins/graphql.d.ts +0 -20
  1098. package/components/IconPicker/plugins/graphql.js +0 -22
  1099. package/components/IconPicker/plugins/graphql.js.map +0 -1
  1100. package/components/RoleAutocomplete/graphql.d.ts +0 -1
  1101. package/components/RoleAutocomplete/graphql.js +0 -19
  1102. package/components/RoleAutocomplete/graphql.js.map +0 -1
  1103. package/components/RoleAutocomplete/index.d.ts +0 -7
  1104. package/components/RoleAutocomplete/index.js +0 -26
  1105. package/components/RoleAutocomplete/index.js.map +0 -1
  1106. package/components/RolesMultiAutocomplete/graphql.d.ts +0 -1
  1107. package/components/RolesMultiAutocomplete/graphql.js +0 -24
  1108. package/components/RolesMultiAutocomplete/graphql.js.map +0 -1
  1109. package/components/TeamAutocomplete/graphql.d.ts +0 -1
  1110. package/components/TeamAutocomplete/graphql.js +0 -19
  1111. package/components/TeamAutocomplete/graphql.js.map +0 -1
  1112. package/components/TeamsMultiAutocomplete/graphql.d.ts +0 -1
  1113. package/components/TeamsMultiAutocomplete/graphql.js +0 -24
  1114. package/components/TeamsMultiAutocomplete/graphql.js.map +0 -1
  1115. package/components/Wcp.d.ts +0 -19
  1116. package/components/Wcp.js +0 -37
  1117. package/components/Wcp.js.map +0 -1
  1118. package/features/apolloClient/abstraction.d.ts +0 -5
  1119. package/features/apolloClient/abstraction.js +0 -5
  1120. package/features/apolloClient/abstraction.js.map +0 -1
  1121. package/features/apolloClient/feature.d.ts +0 -2
  1122. package/features/apolloClient/feature.js +0 -31
  1123. package/features/apolloClient/feature.js.map +0 -1
  1124. package/plugins/MenuPlugin.d.ts +0 -37
  1125. package/plugins/MenuPlugin.js +0 -20
  1126. package/plugins/MenuPlugin.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"features/formModel/FormModel.js","sources":["../../../src/features/formModel/FormModel.ts"],"sourcesContent":["import { makeAutoObservable, computed, toJS, runInAction, observable } from \"mobx\";\nimport { Field } from \"./Field.js\";\nimport { ObjectField, isObjectField } from \"./ObjectField.js\";\nimport { LayoutBuilderFactory } from \"./LayoutBuilderFactory.js\";\nimport { LayoutMutator } from \"./LayoutMutator.js\";\nimport { LayoutResolver } from \"./LayoutResolver.js\";\nimport { FocusManager } from \"./FocusManager.js\";\nimport type {\n IFormModel,\n IField,\n IFieldBuilder,\n IFieldBuilderRegistry,\n IObjectFieldConfig,\n IFormVM,\n IFormError,\n IFormModelConfig,\n ILayoutBuilder,\n ILayoutNodeBuilder,\n ILayoutModifier,\n IPositionedLayoutNode,\n ILayoutNodeAccessHandle,\n IRule,\n IRuleEvaluator,\n LayoutNode,\n LayoutNodeVM,\n FormRule,\n FormRuleFn\n} from \"./abstractions.js\";\n\nexport class FormModel implements IFormModel {\n private _fields = new Map<string, IField>();\n private _builders = new Map<string, IFieldBuilder>();\n private _layout: LayoutNode[] = [];\n private _baseline = new Map<string, unknown>();\n private _submitted = false;\n private _submitCount = 0;\n private _validateOnChange = false;\n private _isValid: boolean | null = null;\n private _formRuleErrors: IFormError[] = [];\n private _activeTabs = observable.map<string, string>();\n private _ruleEvaluators: IRuleEvaluator[] = [];\n private _warnedRuleTypes = new Set<string>();\n private _formRules: FormRule[] = [];\n private _lastFocusedField: IField | null = null;\n private _registry: IFieldBuilderRegistry;\n\n private _layoutMutator = new LayoutMutator();\n private _layoutResolver: LayoutResolver = null!;\n private _focusManager: FocusManager = null!;\n\n constructor(config: IFormModelConfig, registry: IFieldBuilderRegistry) {\n this._registry = registry;\n this._ruleEvaluators = config.ruleEvaluators ?? [];\n\n const builders = config.fields(registry);\n\n for (const [name, builder] of Object.entries(builders)) {\n this._builders.set(name, builder);\n const fieldConfig = builder.build(name);\n const field = this._createField(fieldConfig);\n field.setForm(this);\n this._fields.set(name, field);\n }\n\n if (config.layout) {\n this._layout = LayoutBuilderFactory.buildNodes(\n config.layout(LayoutBuilderFactory.create())\n );\n this._warnOrphanFields();\n } else {\n this._layout = this._generateDefaultLayout();\n }\n\n this._registerObjectNodeLayouts(this._layout);\n this._propagateAncestorRules();\n\n this._validateOnChange = config.validateOnSubmit === false;\n this._snapshotBaseline();\n\n makeAutoObservable(\n this,\n {\n vm: computed,\n _layoutMutator: false,\n _layoutResolver: false,\n _focusManager: false\n } as any,\n { autoBind: true }\n );\n\n this._layoutResolver = new LayoutResolver(\n this._fields,\n this._activeTabs,\n this.evaluateRules.bind(this)\n );\n this._focusManager = new FocusManager(this._fields);\n }\n\n evaluateRules(rules: IRule[] | undefined): { visible: boolean; disabled: boolean } {\n let visible = true;\n let disabled = false;\n if (!rules || rules.length === 0) {\n return { visible, disabled };\n }\n\n for (const rule of rules) {\n const evaluator = this._ruleEvaluators.find(e => e.canEvaluate(rule));\n if (!evaluator) {\n if (\n process.env.NODE_ENV === \"development\" &&\n !this._warnedRuleTypes.has(rule.type)\n ) {\n this._warnedRuleTypes.add(rule.type);\n console.warn(\n `[FormModel] No evaluator registered for rule type \"${rule.type}\". Rule is ignored.`\n );\n }\n continue;\n }\n const matched = evaluator.evaluate(rule, this);\n if (!matched) {\n continue;\n }\n if (rule.action === \"hide\") {\n visible = false;\n } else if (rule.action === \"disable\") {\n disabled = true;\n }\n }\n\n return { visible, disabled };\n }\n\n field(name: string): IField {\n const field = this._fields.get(name);\n if (field) {\n return field;\n }\n\n const parts = name.split(\".\");\n if (parts.length > 1) {\n let current: IField | undefined = this._fields.get(parts[0]);\n for (let i = 1; i < parts.length && current; i++) {\n if (isObjectField(current)) {\n if (current.isList) {\n const index = parseInt(parts[i], 10);\n if (!isNaN(index)) {\n const item = current.items[index];\n if (item && i + 1 < parts.length) {\n current = item.children.get(parts[i + 1]);\n i++;\n } else {\n current = undefined;\n }\n continue;\n }\n }\n current = current.getChild(parts[i]);\n } else {\n current = undefined;\n }\n }\n if (current) {\n return current;\n }\n }\n\n throw new Error(`Field \"${name}\" not found.`);\n }\n\n focusField(name: string): void {\n if (this._lastFocusedField) {\n this._lastFocusedField.clearFocusRequest();\n this._lastFocusedField = null;\n }\n\n const activations = this._focusManager.buildFocusPath(name, this._layout);\n let field: IField | undefined;\n try {\n field = this.field(name);\n } catch {\n // Field not found — no-op.\n }\n\n runInAction(() => {\n if (activations) {\n for (const act of activations) {\n this._activeTabs.set(act.tabKey, act.tabId);\n }\n }\n if (field) {\n field.requestFocus();\n this._lastFocusedField = field;\n }\n });\n }\n\n fields(\n factory: (registry: IFieldBuilderRegistry) => Record<string, IFieldBuilder | undefined>\n ): void {\n const builders = factory(this._registry);\n\n for (const [name, builder] of Object.entries(builders)) {\n if (builder === undefined) {\n this._builders.delete(name);\n this.removeField(name);\n continue;\n }\n\n this._builders.set(name, builder);\n const fieldConfig = builder.build(name);\n const field = this._createField(fieldConfig);\n field.setForm(this);\n\n this._fields.set(name, field);\n }\n\n this._snapshotBaseline();\n this._propagateAncestorRules();\n }\n\n layout(factory: (layout: ILayoutModifier) => (LayoutNode | IPositionedLayoutNode)[]): void;\n layout(nodeId: string): ILayoutNodeAccessHandle;\n layout(\n factoryOrNodeId:\n | ((layout: ILayoutModifier) => (LayoutNode | IPositionedLayoutNode)[])\n | string\n ): void | ILayoutNodeAccessHandle {\n if (typeof factoryOrNodeId === \"string\") {\n return this._layoutMutator.accessNode(this._layout, factoryOrNodeId);\n }\n\n this._layout = this._layoutMutator.applyModifications(this._layout, factoryOrNodeId);\n this._registerObjectNodeLayouts(this._layout);\n this._propagateAncestorRules();\n }\n\n removeField(name: string): void {\n this._fields.delete(name);\n this._baseline.delete(name);\n this._layout = this._layoutMutator.removeFromLayout(this._layout, name);\n }\n\n getData(): Record<string, unknown> {\n const data: Record<string, unknown> = {};\n for (const [name, field] of this._fields) {\n if (isObjectField(field)) {\n data[name] = toJS(field.getData());\n } else {\n data[name] = toJS(field.getValue());\n }\n }\n return data;\n }\n\n setData(data: Record<string, unknown>): void {\n for (const [name, value] of Object.entries(data)) {\n const field = this._fields.get(name);\n if (field) {\n field.setValueSilent(value);\n }\n }\n this._snapshotBaseline();\n this._resetAllValidation();\n this._submitted = false;\n this._submitCount = 0;\n this._isValid = null;\n this._formRuleErrors = [];\n }\n\n reset(): void {\n for (const [name, field] of this._fields) {\n const baselineValue = this._baseline.get(name);\n field.setValueSilent(baselineValue ?? field.config.defaultValue ?? null);\n }\n this._resetAllValidation();\n this._submitted = false;\n this._submitCount = 0;\n this._isValid = null;\n this._formRuleErrors = [];\n }\n\n get isDirty(): boolean {\n for (const [name, field] of this._fields) {\n const baseline = this._baseline.get(name);\n const current = isObjectField(field) ? field.getData() : field.getValue();\n if (JSON.stringify(toJS(current)) !== JSON.stringify(toJS(baseline))) {\n return true;\n }\n }\n return false;\n }\n\n get isValid(): boolean | null {\n return this._isValid;\n }\n\n get submitted(): boolean {\n return this._submitted;\n }\n\n get submitCount(): number {\n return this._submitCount;\n }\n\n get errors(): IFormError[] {\n if (!this._submitted) {\n return [];\n }\n const ruleErrorPaths = new Set(this._formRuleErrors.filter(e => e.path).map(e => e.path));\n const errors: IFormError[] = [];\n\n const collectErrors = (\n fields: Map<string, IField>,\n pathPrefix: string,\n trail: string[]\n ) => {\n for (const [, field] of fields) {\n const path = pathPrefix ? `${pathPrefix}.${field.name}` : field.name;\n const segment = field.config.label || field.name;\n if (isObjectField(field)) {\n if (\n field.vm.validation.isValid === false &&\n field.vm.validation.message &&\n !ruleErrorPaths.has(path)\n ) {\n errors.push({\n path,\n label: field.config.label,\n breadcrumb: [...trail, segment],\n message: field.vm.validation.message\n });\n }\n if (field.config.isList) {\n for (const [index, item] of field.items.entries()) {\n collectErrors(item.children, `${path}.${index}`, [\n ...trail,\n `${segment} [${index + 1}]`\n ]);\n }\n } else {\n collectErrors(field.children, path, [...trail, segment]);\n }\n } else if (field.vm.validation.isValid === false && !ruleErrorPaths.has(path)) {\n errors.push({\n path,\n label: field.config.label,\n breadcrumb: [...trail, segment],\n message: field.vm.validation.message || \"Invalid value.\"\n });\n }\n }\n };\n\n collectErrors(this._fields, \"\", []);\n return [...errors, ...this._formRuleErrors];\n }\n\n addRule(rule: FormRule): void {\n this._formRules.push(rule);\n }\n\n setLayout(factory: (layout: ILayoutBuilder) => ILayoutNodeBuilder[]): void {\n this._layout = LayoutBuilderFactory.buildNodes(factory(LayoutBuilderFactory.create()));\n this._warnOrphanFields();\n this._registerObjectNodeLayouts(this._layout);\n this._propagateAncestorRules();\n }\n\n async validate(): Promise<boolean> {\n let allFieldsValid = true;\n\n for (const [, field] of this._fields) {\n const valid = await field.validate({ force: true });\n if (!valid) {\n allFieldsValid = false;\n }\n }\n\n const ruleErrors: IFormError[] = [];\n for (const rule of this._formRules) {\n const errors = await this._runFormRule(rule);\n for (const err of errors) {\n ruleErrors.push(err);\n if (err.path) {\n const target = this._tryGetField(err.path);\n if (target) {\n target.setValidation({ isValid: false, message: err.message });\n }\n }\n }\n }\n\n const isValid = allFieldsValid && ruleErrors.length === 0;\n runInAction(() => {\n this._formRuleErrors = ruleErrors;\n this._isValid = isValid;\n this._submitted = true;\n this._submitCount++;\n });\n return isValid;\n }\n\n async submit<T = Record<string, unknown>>(): Promise<T | false> {\n const valid = await this.validate();\n if (!valid) {\n return false;\n }\n return this.getData() as T;\n }\n\n get vm(): IFormVM {\n return {\n layout: this._layoutResolver.resolve(this._layout),\n errors: this.errors,\n isDirty: this.isDirty,\n isValid: this._isValid,\n submitCount: this._submitCount,\n focusField: (path: string) => this.focusField(path),\n getData: () => this.getData() as Record<string, unknown>,\n setData: (data: Record<string, unknown>) => this.setData(data)\n };\n }\n\n get registry(): IFieldBuilderRegistry {\n return this._registry;\n }\n\n public resolveChildLayout(layout: LayoutNode[], children: Map<string, IField>): LayoutNodeVM[] {\n return this._layoutResolver.resolveChildLayout(layout, children);\n }\n\n getField(name: string): IField | undefined {\n return this._fields.get(name);\n }\n\n getFields(): Map<string, IField> {\n return this._fields;\n }\n\n getFieldBuilders(predicate?: (builder: IFieldBuilder) => boolean): IFieldBuilder[] {\n const pred = predicate ?? (() => true);\n const result: IFieldBuilder[] = [];\n LayoutBuilderFactory.collectBuilders(this._fields, this._builders, pred, result);\n return result;\n }\n\n private async _runFormRule(rule: FormRule): Promise<IFormError[]> {\n if (typeof rule === \"function\") {\n const fn = rule as FormRuleFn;\n const result = await fn(this);\n return Array.isArray(result) ? result : [];\n }\n const data = this.getData();\n const result = await rule.safeParseAsync(data);\n if (result.success) {\n return [];\n }\n return result.error.issues.map(issue => {\n const path = issue.path.map(String).join(\".\");\n const field = path ? this._tryGetField(path) : undefined;\n return {\n path,\n label: field?.config.label,\n message: issue.message || \"Invalid value.\"\n };\n });\n }\n\n private _tryGetField(path: string): IField | undefined {\n try {\n return this.field(path);\n } catch {\n return undefined;\n }\n }\n\n private _registerObjectNodeLayouts(layout: LayoutNode[]): void {\n for (const node of layout) {\n if (node.type === \"object\") {\n const field = this._fields.get(node.fieldName);\n if (field && isObjectField(field)) {\n field.setInnerLayout(node.inner);\n }\n } else if (node.type === \"tabs\") {\n for (const tab of node.tabs) {\n this._registerObjectNodeLayouts(tab.layout);\n }\n }\n }\n }\n\n private _propagateAncestorRules(): void {\n const ancestry = new Map<string, IRule[]>();\n const walk = (nodes: LayoutNode[], rules: IRule[]) => {\n for (const node of nodes) {\n if (node.type === \"row\") {\n for (const id of node.fieldIds) {\n const existing = ancestry.get(id) ?? [];\n ancestry.set(id, [...existing, ...rules]);\n }\n } else if (node.type === \"tabs\") {\n const containerRules = [...rules, ...(node.rules ?? [])];\n for (const tab of node.tabs) {\n const tabRules = [...containerRules, ...(tab.rules ?? [])];\n walk(tab.layout, tabRules);\n }\n } else if (node.type === \"object\") {\n const existing = ancestry.get(node.fieldName) ?? [];\n ancestry.set(node.fieldName, [...existing, ...rules]);\n }\n }\n };\n\n walk(this._layout, []);\n\n for (const [, field] of this._fields) {\n field.setAncestorRules(ancestry.get(field.name) ?? []);\n }\n }\n\n private _generateDefaultLayout(): LayoutNode[] {\n const layout: LayoutNode[] = [];\n for (const [name, field] of this._fields) {\n if (field.visible) {\n layout.push({ type: \"row\", fieldIds: [name] });\n }\n }\n return layout;\n }\n\n private _warnOrphanFields(): void {\n const layoutFieldIds = new Set(LayoutBuilderFactory.collectFieldIds(this._layout));\n\n for (const [name, field] of this._fields) {\n if (field.visible && !layoutFieldIds.has(name)) {\n console.warn(\n `[FormModel] Field \"${name}\" is not in the layout and not marked as .hidden(). ` +\n `Add it to the layout or mark it as .hidden() to suppress this warning.`\n );\n }\n }\n }\n\n private _snapshotBaseline(): void {\n this._baseline.clear();\n for (const [name, field] of this._fields) {\n this._baseline.set(name, toJS(field.getValue()));\n }\n }\n\n private _resetAllValidation(): void {\n for (const [, field] of this._fields) {\n field.resetValidation();\n }\n }\n\n private _createField(config: any): IField {\n if (config.childBuilders) {\n return new ObjectField(config as IObjectFieldConfig);\n }\n return new Field(config);\n }\n}\n"],"names":["FormModel","config","registry","Map","observable","Set","LayoutMutator","builders","name","builder","Object","fieldConfig","field","LayoutBuilderFactory","makeAutoObservable","computed","LayoutResolver","FocusManager","rules","visible","disabled","rule","evaluator","e","process","console","matched","parts","current","i","isObjectField","index","parseInt","isNaN","item","undefined","Error","activations","runInAction","act","factory","factoryOrNodeId","data","toJS","value","baselineValue","baseline","JSON","ruleErrorPaths","errors","collectErrors","fields","pathPrefix","trail","path","segment","allFieldsValid","valid","ruleErrors","err","target","isValid","layout","children","predicate","pred","result","fn","Array","issue","String","node","tab","ancestry","walk","nodes","id","existing","containerRules","tabRules","layoutFieldIds","ObjectField","Field"],"mappings":"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"}
1
+ {"version":3,"file":"features/formModel/FormModel.js","sources":["../../../src/features/formModel/FormModel.ts"],"sourcesContent":["import { makeAutoObservable, computed, toJS, runInAction, observable } from \"mobx\";\nimport { Field } from \"./Field.js\";\nimport { ObjectField, isObjectField } from \"./ObjectField.js\";\nimport { LayoutBuilderFactory } from \"./LayoutBuilderFactory.js\";\nimport { LayoutMutator } from \"./LayoutMutator.js\";\nimport { LayoutResolver } from \"./LayoutResolver.js\";\nimport { FocusManager } from \"./FocusManager.js\";\nimport type {\n IFormModel,\n IField,\n IFieldBuilder,\n IFieldBuilderRegistry,\n IObjectFieldConfig,\n IFormVM,\n IFormError,\n IFormModelConfig,\n ILayoutBuilder,\n ILayoutNodeBuilder,\n ILayoutModifier,\n IPositionedLayoutNode,\n ILayoutNodeAccessHandle,\n IRule,\n IRuleEvaluator,\n LayoutNode,\n LayoutNodeVM,\n FormRule,\n FormRuleFn\n} from \"./abstractions.js\";\n\nexport class FormModel implements IFormModel {\n private _fields = new Map<string, IField>();\n private _builders = new Map<string, IFieldBuilder>();\n private _layout: LayoutNode[] = [];\n private _baseline = new Map<string, unknown>();\n private _submitted = false;\n private _submitCount = 0;\n private _validateOnChange = false;\n private _isValid: boolean | null = null;\n private _formRuleErrors: IFormError[] = [];\n private _activeTabs = observable.map<string, string>();\n private _ruleEvaluators: IRuleEvaluator[] = [];\n private _warnedRuleTypes = new Set<string>();\n private _formRules: FormRule[] = [];\n private _lastFocusedField: IField | null = null;\n private _registry: IFieldBuilderRegistry;\n\n private _layoutMutator = new LayoutMutator();\n private _layoutResolver: LayoutResolver = null!;\n private _focusManager: FocusManager = null!;\n\n constructor(config: IFormModelConfig, registry: IFieldBuilderRegistry) {\n this._registry = registry;\n this._ruleEvaluators = config.ruleEvaluators ?? [];\n\n const builders = config.fields(registry);\n\n for (const [name, builder] of Object.entries(builders)) {\n this._builders.set(name, builder);\n const fieldConfig = builder.build(name);\n const field = this._createField(fieldConfig);\n field.setForm(this);\n this._fields.set(name, field);\n }\n\n if (config.layout) {\n this._layout = LayoutBuilderFactory.buildNodes(\n config.layout(LayoutBuilderFactory.create())\n );\n this._warnOrphanFields();\n } else {\n this._layout = this._generateDefaultLayout();\n }\n\n this._registerObjectNodeLayouts(this._layout);\n this._propagateAncestorRules();\n\n this._validateOnChange = config.validateOnSubmit === false;\n this._snapshotBaseline();\n\n makeAutoObservable(\n this,\n {\n vm: computed,\n _builders: false,\n _layoutMutator: false,\n _layoutResolver: false,\n _focusManager: false\n } as any,\n { autoBind: true }\n );\n\n this._layoutResolver = new LayoutResolver(\n this._fields,\n this._activeTabs,\n this.evaluateRules.bind(this)\n );\n this._focusManager = new FocusManager(this._fields);\n }\n\n evaluateRules(rules: IRule[] | undefined): { visible: boolean; disabled: boolean } {\n let visible = true;\n let disabled = false;\n if (!rules || rules.length === 0) {\n return { visible, disabled };\n }\n\n for (const rule of rules) {\n const evaluator = this._ruleEvaluators.find(e => e.canEvaluate(rule));\n if (!evaluator) {\n if (\n process.env.NODE_ENV === \"development\" &&\n !this._warnedRuleTypes.has(rule.type)\n ) {\n this._warnedRuleTypes.add(rule.type);\n console.warn(\n `[FormModel] No evaluator registered for rule type \"${rule.type}\". Rule is ignored.`\n );\n }\n continue;\n }\n const matched = evaluator.evaluate(rule, this);\n if (!matched) {\n continue;\n }\n if (rule.action === \"hide\") {\n visible = false;\n } else if (rule.action === \"disable\") {\n disabled = true;\n }\n }\n\n return { visible, disabled };\n }\n\n field(name: string): IField {\n const field = this._fields.get(name);\n if (field) {\n return field;\n }\n\n const parts = name.split(\".\");\n if (parts.length > 1) {\n let current: IField | undefined = this._fields.get(parts[0]);\n for (let i = 1; i < parts.length && current; i++) {\n if (isObjectField(current)) {\n if (current.isList) {\n const index = parseInt(parts[i], 10);\n if (!isNaN(index)) {\n const item = current.items[index];\n if (item && i + 1 < parts.length) {\n current = item.children.get(parts[i + 1]);\n i++;\n } else {\n current = undefined;\n }\n continue;\n }\n }\n current = current.getChild(parts[i]);\n } else {\n current = undefined;\n }\n }\n if (current) {\n return current;\n }\n }\n\n throw new Error(`Field \"${name}\" not found.`);\n }\n\n focusField(name: string): void {\n if (this._lastFocusedField) {\n this._lastFocusedField.clearFocusRequest();\n this._lastFocusedField = null;\n }\n\n const activations = this._focusManager.buildFocusPath(name, this._layout);\n let field: IField | undefined;\n try {\n field = this.field(name);\n } catch {\n // Field not found — no-op.\n }\n\n runInAction(() => {\n if (activations) {\n for (const act of activations) {\n this._activeTabs.set(act.tabKey, act.tabId);\n }\n }\n if (field) {\n field.requestFocus();\n this._lastFocusedField = field;\n }\n });\n }\n\n fields(\n factory: (registry: IFieldBuilderRegistry) => Record<string, IFieldBuilder | undefined>\n ): void {\n const builders = factory(this._registry);\n\n for (const [name, builder] of Object.entries(builders)) {\n if (builder === undefined) {\n this._builders.delete(name);\n this.removeField(name);\n continue;\n }\n\n this._builders.set(name, builder);\n const fieldConfig = builder.build(name);\n const field = this._createField(fieldConfig);\n field.setForm(this);\n\n this._fields.set(name, field);\n }\n\n this._snapshotBaseline();\n this._propagateAncestorRules();\n }\n\n layout(factory: (layout: ILayoutModifier) => (LayoutNode | IPositionedLayoutNode)[]): void;\n layout(nodeId: string): ILayoutNodeAccessHandle;\n layout(\n factoryOrNodeId:\n | ((layout: ILayoutModifier) => (LayoutNode | IPositionedLayoutNode)[])\n | string\n ): void | ILayoutNodeAccessHandle {\n if (typeof factoryOrNodeId === \"string\") {\n return this._layoutMutator.accessNode(this._layout, factoryOrNodeId);\n }\n\n this._layout = this._layoutMutator.applyModifications(this._layout, factoryOrNodeId);\n this._registerObjectNodeLayouts(this._layout);\n this._propagateAncestorRules();\n }\n\n removeField(name: string): void {\n this._fields.delete(name);\n this._baseline.delete(name);\n this._layout = this._layoutMutator.removeFromLayout(this._layout, name);\n }\n\n getData(): Record<string, unknown> {\n const data: Record<string, unknown> = {};\n for (const [name, field] of this._fields) {\n if (isObjectField(field)) {\n data[name] = toJS(field.getData());\n } else {\n data[name] = toJS(field.getValue());\n }\n }\n return data;\n }\n\n setData(data: Record<string, unknown>, options?: { dirty?: boolean }): void {\n for (const [name, value] of Object.entries(data)) {\n const field = this._fields.get(name);\n if (field) {\n field.setValueSilent(value);\n }\n }\n if (!options?.dirty) {\n this._snapshotBaseline();\n }\n this._resetAllValidation();\n this._submitted = false;\n this._submitCount = 0;\n this._isValid = null;\n this._formRuleErrors = [];\n }\n\n reset(): void {\n for (const [name, field] of this._fields) {\n const baselineValue = this._baseline.get(name);\n field.setValueSilent(baselineValue ?? field.config.defaultValue ?? null);\n }\n this._resetAllValidation();\n this._submitted = false;\n this._submitCount = 0;\n this._isValid = null;\n this._formRuleErrors = [];\n }\n\n get isDirty(): boolean {\n for (const [name, field] of this._fields) {\n const baseline = this._baseline.get(name);\n const current = isObjectField(field) ? field.getData() : field.getValue();\n if (JSON.stringify(toJS(current)) !== JSON.stringify(toJS(baseline))) {\n return true;\n }\n }\n return false;\n }\n\n get isValid(): boolean | null {\n return this._isValid;\n }\n\n get submitted(): boolean {\n return this._submitted;\n }\n\n get submitCount(): number {\n return this._submitCount;\n }\n\n get errors(): IFormError[] {\n if (!this._submitted) {\n return [];\n }\n const ruleErrorPaths = new Set(this._formRuleErrors.filter(e => e.path).map(e => e.path));\n const errors: IFormError[] = [];\n\n const collectErrors = (\n fields: Map<string, IField>,\n pathPrefix: string,\n trail: string[]\n ) => {\n for (const [, field] of fields) {\n const path = pathPrefix ? `${pathPrefix}.${field.name}` : field.name;\n const segment = field.config.label || field.name;\n if (isObjectField(field)) {\n if (!field.visible) {\n continue;\n }\n if (\n field.vm.validation.isValid === false &&\n field.vm.validation.message &&\n !ruleErrorPaths.has(path)\n ) {\n errors.push({\n path,\n label: field.config.label,\n breadcrumb: [...trail, segment],\n message: field.vm.validation.message\n });\n }\n const skipBreadcrumb =\n field.config.renderer === \"passthrough\" && !field.config.label;\n const childTrail = skipBreadcrumb ? trail : [...trail, segment];\n\n if (field.config.isList) {\n for (const [index, item] of field.items.entries()) {\n collectErrors(item.children, `${path}.${index}`, [...childTrail]);\n }\n } else {\n collectErrors(field.children, path, childTrail);\n }\n } else if (\n field.visible &&\n field.vm.validation.isValid === false &&\n !ruleErrorPaths.has(path)\n ) {\n errors.push({\n path,\n label: field.config.label,\n breadcrumb: [...trail, segment],\n message: field.vm.validation.message || \"Invalid value.\"\n });\n }\n }\n };\n\n collectErrors(this._fields, \"\", []);\n return [...errors, ...this._formRuleErrors];\n }\n\n addRule(rule: FormRule): void {\n this._formRules.push(rule);\n }\n\n setLayout(factory: (layout: ILayoutBuilder) => ILayoutNodeBuilder[]): void {\n this._layout = LayoutBuilderFactory.buildNodes(factory(LayoutBuilderFactory.create()));\n this._warnOrphanFields();\n this._registerObjectNodeLayouts(this._layout);\n this._propagateAncestorRules();\n }\n\n async validate(): Promise<boolean> {\n let allFieldsValid = true;\n\n for (const [, field] of this._fields) {\n const valid = await field.validate({ force: true });\n if (!valid) {\n allFieldsValid = false;\n }\n }\n\n const ruleErrors: IFormError[] = [];\n for (const rule of this._formRules) {\n const errors = await this._runFormRule(rule);\n for (const err of errors) {\n ruleErrors.push(err);\n if (err.path) {\n const target = this._tryGetField(err.path);\n if (target) {\n target.setValidation({ isValid: false, message: err.message });\n }\n }\n }\n }\n\n const isValid = allFieldsValid && ruleErrors.length === 0;\n runInAction(() => {\n this._formRuleErrors = ruleErrors;\n this._isValid = isValid;\n this._submitted = true;\n this._submitCount++;\n });\n return isValid;\n }\n\n async submit<T = Record<string, unknown>>(options?: {\n skipValidation?: boolean;\n }): Promise<T | false> {\n if (options?.skipValidation) {\n return this.getData() as T;\n }\n\n const valid = await this.validate();\n if (!valid) {\n return false;\n }\n return this.getData() as T;\n }\n\n get vm(): IFormVM {\n return {\n layout: this._layoutResolver.resolve(this._layout),\n errors: this.errors,\n hasErrors: this.errors.length > 0,\n isDirty: this.isDirty,\n isValid: this._isValid,\n submitCount: this._submitCount,\n focusField: (path: string) => this.focusField(path),\n getData: () => this.getData() as Record<string, unknown>,\n setData: (data: Record<string, unknown>, options?: { dirty?: boolean }) =>\n this.setData(data, options)\n };\n }\n\n get registry(): IFieldBuilderRegistry {\n return this._registry;\n }\n\n public resolveChildLayout(layout: LayoutNode[], children: Map<string, IField>): LayoutNodeVM[] {\n return this._layoutResolver.resolveChildLayout(layout, children);\n }\n\n getField(name: string): IField | undefined {\n return this._fields.get(name);\n }\n\n getFields(): Map<string, IField> {\n return this._fields;\n }\n\n getFieldBuilders(predicate?: (builder: IFieldBuilder) => boolean): IFieldBuilder[] {\n const pred = predicate ?? (() => true);\n const result: IFieldBuilder[] = [];\n LayoutBuilderFactory.collectBuilders(this._fields, this._builders, pred, result);\n return result;\n }\n\n traverse(callback: (builder: IFieldBuilder) => void): void {\n this._traverseBuilders(this._fields, this._builders, callback);\n }\n\n private _traverseBuilders(\n fields: { get(name: string): IField | undefined },\n builders: Map<string, IFieldBuilder> | Record<string, IFieldBuilder>,\n callback: (builder: IFieldBuilder) => void\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 callback(builder);\n const field = fields.get(name);\n if (field && isObjectField(field)) {\n this._traverseBuilders(field.children, field.config.childBuilders, callback);\n const templates = (field.config as IObjectFieldConfig).templates;\n if (templates) {\n for (const tpl of templates) {\n for (const tplBuilder of Object.values(tpl.childBuilders)) {\n if (!tplBuilder || typeof tplBuilder !== \"object\") {\n continue;\n }\n callback(tplBuilder);\n }\n }\n }\n }\n }\n }\n\n private async _runFormRule(rule: FormRule): Promise<IFormError[]> {\n if (typeof rule === \"function\") {\n const fn = rule as FormRuleFn;\n const result = await fn(this);\n return Array.isArray(result) ? result : [];\n }\n const data = this.getData();\n const result = await rule.safeParseAsync(data);\n if (result.success) {\n return [];\n }\n return result.error.issues.map(issue => {\n const path = issue.path.map(String).join(\".\");\n const field = path ? this._tryGetField(path) : undefined;\n return {\n path,\n label: field?.config.label,\n message: issue.message || \"Invalid value.\"\n };\n });\n }\n\n private _tryGetField(path: string): IField | undefined {\n try {\n return this.field(path);\n } catch {\n return undefined;\n }\n }\n\n private _registerObjectNodeLayouts(layout: LayoutNode[]): void {\n for (const node of layout) {\n if (node.type === \"object\") {\n const field = this._fields.get(node.fieldName);\n if (field && isObjectField(field)) {\n field.setInnerLayout(node.inner);\n }\n } else if (node.type === \"tabs\") {\n for (const tab of node.tabs) {\n this._registerObjectNodeLayouts(tab.layout);\n }\n }\n }\n }\n\n private _propagateAncestorRules(): void {\n const ancestry = new Map<string, IRule[]>();\n const walk = (nodes: LayoutNode[], rules: IRule[]) => {\n for (const node of nodes) {\n if (node.type === \"row\") {\n for (const id of node.fieldIds) {\n const existing = ancestry.get(id) ?? [];\n ancestry.set(id, [...existing, ...rules]);\n }\n } else if (node.type === \"tabs\") {\n const containerRules = [...rules, ...(node.rules ?? [])];\n for (const tab of node.tabs) {\n const tabRules = [...containerRules, ...(tab.rules ?? [])];\n walk(tab.layout, tabRules);\n }\n } else if (node.type === \"object\") {\n const existing = ancestry.get(node.fieldName) ?? [];\n ancestry.set(node.fieldName, [...existing, ...rules]);\n }\n }\n };\n\n walk(this._layout, []);\n\n for (const [, field] of this._fields) {\n field.setAncestorRules(ancestry.get(field.name) ?? []);\n }\n }\n\n private _generateDefaultLayout(): LayoutNode[] {\n const layout: LayoutNode[] = [];\n for (const [name, field] of this._fields) {\n if (field.visible) {\n layout.push({ type: \"row\", fieldIds: [name] });\n }\n }\n return layout;\n }\n\n private _warnOrphanFields(): void {\n const layoutFieldIds = new Set(LayoutBuilderFactory.collectFieldIds(this._layout));\n\n for (const [name, field] of this._fields) {\n if (field.visible && !layoutFieldIds.has(name)) {\n console.warn(\n `[FormModel] Field \"${name}\" is not in the layout and not marked as .hidden(). ` +\n `Add it to the layout or mark it as .hidden() to suppress this warning.`\n );\n }\n }\n }\n\n private _snapshotBaseline(): void {\n this._baseline.clear();\n for (const [name, field] of this._fields) {\n this._baseline.set(name, toJS(field.getValue()));\n }\n }\n\n private _resetAllValidation(): void {\n for (const [, field] of this._fields) {\n field.resetValidation();\n }\n }\n\n private _createField(config: any): IField {\n if (config.childBuilders) {\n return new ObjectField(config as IObjectFieldConfig);\n }\n return new Field(config);\n }\n}\n"],"names":["FormModel","config","registry","Map","observable","Set","LayoutMutator","builders","name","builder","Object","fieldConfig","field","LayoutBuilderFactory","makeAutoObservable","computed","LayoutResolver","FocusManager","rules","visible","disabled","rule","evaluator","e","process","console","matched","parts","current","i","isObjectField","index","parseInt","isNaN","item","undefined","Error","activations","runInAction","act","factory","factoryOrNodeId","data","toJS","options","value","baselineValue","baseline","JSON","ruleErrorPaths","errors","collectErrors","fields","pathPrefix","trail","path","segment","skipBreadcrumb","childTrail","allFieldsValid","valid","ruleErrors","err","target","isValid","layout","children","predicate","pred","result","callback","entries","templates","tpl","tplBuilder","fn","Array","issue","String","node","tab","ancestry","walk","nodes","id","existing","containerRules","tabRules","layoutFieldIds","ObjectField","Field"],"mappings":"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"}
@@ -364,9 +364,9 @@ describe("FormModel", ()=>{
364
364
  it("should support cross-field afterChange triggering target field pipeline", ()=>{
365
365
  const form = createForm({
366
366
  fields: (fields)=>({
367
- title: fields.text().label("Title").afterChange((value, f)=>{
367
+ title: fields.text().label("Title").afterChange((value, { form })=>{
368
368
  const path = "/" + String(value).toLowerCase().replace(/\s+/g, "-");
369
- f.field("path").setValue(path);
369
+ form.field("path").setValue(path);
370
370
  }),
371
371
  path: fields.text().label("Path").beforeChange((value)=>{
372
372
  const str = String(value);
@@ -401,10 +401,10 @@ describe("FormModel", ()=>{
401
401
  it("should demonstrate title→path with path-dirty tracking", ()=>{
402
402
  const form = createForm({
403
403
  fields: (fields)=>({
404
- title: fields.text().label("Title").required("Title is required").afterChange((value, f)=>{
405
- if (f.field("path").getValue()) return;
404
+ title: fields.text().label("Title").required("Title is required").afterChange((value, { form })=>{
405
+ if (form.field("path").getValue()) return;
406
406
  const slug = String(value).toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
407
- f.field("path").setValue("/" + slug);
407
+ form.field("path").setValue("/" + slug);
408
408
  }),
409
409
  path: fields.text().label("Path").required("Path is required").beforeChange((value)=>{
410
410
  const str = String(value);
@@ -606,9 +606,9 @@ describe("FormModel", ()=>{
606
606
  path: fields.text().label("Path")
607
607
  })
608
608
  });
609
- form.field("title").addAfterChange((value, f)=>{
609
+ form.field("title").addAfterChange((value, { form })=>{
610
610
  received.push(value);
611
- f.field("path").setValue("/" + String(value).toLowerCase());
611
+ form.field("path").setValue("/" + String(value).toLowerCase());
612
612
  });
613
613
  form.field("title").setValue("Hello");
614
614
  expect(received).toEqual([
@@ -751,11 +751,11 @@ describe("FormModel", ()=>{
751
751
  label: "German",
752
752
  value: "de"
753
753
  }
754
- ]).afterChange((value, f)=>{
755
- const current = String(f.field("path").getValue() || "");
754
+ ]).afterChange((value, { form })=>{
755
+ const current = String(form.field("path").getValue() || "");
756
756
  const stripped = current.replace(/^\/[a-z]{2}\//, "/");
757
- if (value && "en" !== value) f.field("path").setValue("/" + value + stripped);
758
- else f.field("path").setValue(stripped);
757
+ if (value && "en" !== value) form.field("path").setValue("/" + value + stripped);
758
+ else form.field("path").setValue(stripped);
759
759
  })
760
760
  }));
761
761
  form.layout((layout)=>[
@@ -2957,7 +2957,7 @@ describe("FormModel", ()=>{
2957
2957
  const form = createForm({
2958
2958
  fields: (fields)=>({
2959
2959
  plan: fields.text().defaultValue("free"),
2960
- seats: fields.text().requiredWhen((f)=>"pro" === f.field("plan").getValue(), "Seats required")
2960
+ seats: fields.text().requiredWhen(({ form })=>"pro" === form.field("plan").getValue(), "Seats required")
2961
2961
  })
2962
2962
  });
2963
2963
  expect(form.field("seats").vm.required).toBe(false);
@@ -2972,7 +2972,7 @@ describe("FormModel", ()=>{
2972
2972
  fields: (fields)=>({
2973
2973
  plan: fields.text().defaultValue("free"),
2974
2974
  flag: fields.text().defaultValue("off"),
2975
- seats: fields.text().requiredWhen((f)=>"pro" === f.field("plan").getValue(), "Pro requires it").requiredWhen((f)=>"on" === f.field("flag").getValue(), "Flag requires it")
2975
+ seats: fields.text().requiredWhen(({ form })=>"pro" === form.field("plan").getValue(), "Pro requires it").requiredWhen(({ form })=>"on" === form.field("flag").getValue(), "Flag requires it")
2976
2976
  })
2977
2977
  });
2978
2978
  form.field("flag").setValue("on");
@@ -2997,10 +2997,10 @@ describe("FormModel", ()=>{
2997
2997
  fields: (fields)=>({
2998
2998
  plan: fields.text().defaultValue("free"),
2999
2999
  other: fields.text().defaultValue("off"),
3000
- seats: fields.text().requiredWhen((f)=>"pro" === f.field("plan").getValue(), "Pro required")
3000
+ seats: fields.text().requiredWhen(({ form })=>"pro" === form.field("plan").getValue(), "Pro required")
3001
3001
  })
3002
3002
  });
3003
- form.field("seats").addRequiredWhen((f)=>"on" === f.field("other").getValue(), "Other required");
3003
+ form.field("seats").addRequiredWhen(({ form })=>"on" === form.field("other").getValue(), "Other required");
3004
3004
  expect(form.field("seats").vm.required).toBe(false);
3005
3005
  form.field("other").setValue("on");
3006
3006
  await form.validate();
@@ -3013,7 +3013,7 @@ describe("FormModel", ()=>{
3013
3013
  fields: (fields)=>({
3014
3014
  first: fields.text().defaultValue("Ada"),
3015
3015
  last: fields.text().defaultValue("Lovelace"),
3016
- full: fields.text().computed((f)=>`${f.field("first").getValue()} ${f.field("last").getValue()}`)
3016
+ full: fields.text().computed(({ form })=>`${form.field("first").getValue()} ${form.field("last").getValue()}`)
3017
3017
  })
3018
3018
  });
3019
3019
  expect(form.field("full").getValue()).toBe("Ada Lovelace");
@@ -3024,7 +3024,7 @@ describe("FormModel", ()=>{
3024
3024
  const form = createForm({
3025
3025
  fields: (fields)=>({
3026
3026
  src: fields.text().defaultValue("A"),
3027
- derived: fields.text().computed((f)=>f.field("src").getValue())
3027
+ derived: fields.text().computed(({ form })=>form.field("src").getValue())
3028
3028
  })
3029
3029
  });
3030
3030
  expect(form.field("derived").vm.disabled).toBe(false);
@@ -3035,7 +3035,7 @@ describe("FormModel", ()=>{
3035
3035
  const form = createForm({
3036
3036
  fields: (fields)=>({
3037
3037
  src: fields.text().defaultValue("A"),
3038
- derived: fields.text().computedUntilDirty((f)=>`derived-${f.field("src").getValue()}`)
3038
+ derived: fields.text().computedUntilDirty(({ form })=>`derived-${form.field("src").getValue()}`)
3039
3039
  })
3040
3040
  });
3041
3041
  expect(form.field("derived").getValue()).toBe("derived-A");
@@ -3048,7 +3048,7 @@ describe("FormModel", ()=>{
3048
3048
  const form = createForm({
3049
3049
  fields: (fields)=>({
3050
3050
  src: fields.text().defaultValue(""),
3051
- derived: fields.text().required("Derived must not be empty").computed((f)=>f.field("src").getValue())
3051
+ derived: fields.text().required("Derived must not be empty").computed(({ form })=>form.field("src").getValue())
3052
3052
  })
3053
3053
  });
3054
3054
  const valid = await form.validate();
@@ -3057,6 +3057,77 @@ describe("FormModel", ()=>{
3057
3057
  form.field("src").setValue("hello");
3058
3058
  expect(await form.validate()).toBe(true);
3059
3059
  });
3060
+ it("computedUntilDirty can access nested fields inside object via dot notation", ()=>{
3061
+ const form = createForm({
3062
+ fields: (fields)=>({
3063
+ group: fields.object().renderer("passthrough").fields((f)=>({
3064
+ label: f.text().defaultValue("Hello World"),
3065
+ fieldId: f.text().computedUntilDirty(({ form })=>String(form.field("group.label").getValue() || "").toLowerCase().replace(/\s+/g, "-"))
3066
+ }))
3067
+ })
3068
+ });
3069
+ expect(form.field("group.fieldId").getValue()).toBe("hello-world");
3070
+ form.field("group.label").setValue("New Title");
3071
+ expect(form.field("group.fieldId").getValue()).toBe("new-title");
3072
+ form.field("group.fieldId").vm.onChange("custom-id");
3073
+ expect(form.field("group.fieldId").getValue()).toBe("custom-id");
3074
+ form.field("group.label").setValue("Another");
3075
+ expect(form.field("group.fieldId").getValue()).toBe("custom-id");
3076
+ });
3077
+ it("computedUntilDirty works after setData for nested object fields", ()=>{
3078
+ const form = createForm({
3079
+ fields: (fields)=>({
3080
+ general: fields.object().renderer("passthrough").fields((f)=>({
3081
+ label: f.text(),
3082
+ fieldId: f.text().computedUntilDirty(({ form })=>String(form.field("general.label").getValue() || "").toLowerCase().replace(/\s+/g, "-"))
3083
+ }))
3084
+ })
3085
+ });
3086
+ expect(form.field("general.fieldId").getValue()).toBe("");
3087
+ form.setData({
3088
+ general: {
3089
+ label: "My Field"
3090
+ }
3091
+ });
3092
+ expect(form.field("general.fieldId").getValue()).toBe("my-field");
3093
+ form.field("general.label").setValue("Updated Label");
3094
+ expect(form.field("general.fieldId").getValue()).toBe("updated-label");
3095
+ form.field("general.fieldId").vm.onChange("custom");
3096
+ expect(form.field("general.fieldId").getValue()).toBe("custom");
3097
+ form.field("general.label").setValue("Ignored");
3098
+ expect(form.field("general.fieldId").getValue()).toBe("custom");
3099
+ });
3100
+ it("field.parent().field() resolves sibling fields relative to the parent object", ()=>{
3101
+ const form = createForm({
3102
+ fields: (fields)=>({
3103
+ group: fields.object().renderer("passthrough").fields((f)=>({
3104
+ label: f.text().defaultValue("Hello"),
3105
+ slug: f.text().computedUntilDirty(({ field })=>String(field.parent().field("label").getValue() || "").toLowerCase().replace(/\s+/g, "-"))
3106
+ }))
3107
+ })
3108
+ });
3109
+ expect(form.field("group.slug").getValue()).toBe("hello");
3110
+ form.field("group.label").setValue("New Title");
3111
+ expect(form.field("group.slug").getValue()).toBe("new-title");
3112
+ });
3113
+ it("field.parent().field() can traverse into sibling objects", ()=>{
3114
+ const form = createForm({
3115
+ fields: (fields)=>({
3116
+ wrapper: fields.object().renderer("passthrough").fields((f)=>({
3117
+ message: f.text().defaultValue("default").computedUntilDirty(({ field })=>{
3118
+ const preset = field.parent().field("settings.preset").getValue();
3119
+ return "custom" === preset ? "Custom message" : `Preset: ${preset}`;
3120
+ }),
3121
+ settings: f.object().renderer("passthrough").fields((inner)=>({
3122
+ preset: inner.text().defaultValue("custom")
3123
+ }))
3124
+ }))
3125
+ })
3126
+ });
3127
+ expect(form.field("wrapper.message").getValue()).toBe("Custom message");
3128
+ form.field("wrapper.settings.preset").setValue("email");
3129
+ expect(form.field("wrapper.message").getValue()).toBe("Preset: email");
3130
+ });
3060
3131
  it("modifier setComputed converts a regular field into a computed one", ()=>{
3061
3132
  const form = createForm({
3062
3133
  fields: (fields)=>({
@@ -3064,7 +3135,7 @@ describe("FormModel", ()=>{
3064
3135
  derived: fields.text().defaultValue("initial")
3065
3136
  })
3066
3137
  });
3067
- form.field("derived").setComputed((f)=>`from-${f.field("src").getValue()}`);
3138
+ form.field("derived").setComputed(({ form })=>`from-${form.field("src").getValue()}`);
3068
3139
  expect(form.field("derived").getValue()).toBe("from-X");
3069
3140
  form.field("src").setValue("Y");
3070
3141
  expect(form.field("derived").getValue()).toBe("from-Y");
@@ -3786,7 +3857,7 @@ describe("FormModel", ()=>{
3786
3857
  fields: (f)=>({
3787
3858
  tags: f.text().list().defaultValue([
3788
3859
  "a"
3789
- ]).beforeChange((value, _form)=>{
3860
+ ]).beforeChange((value, _params)=>{
3790
3861
  log.push(value);
3791
3862
  return value;
3792
3863
  })
@@ -3808,6 +3879,180 @@ describe("FormModel", ()=>{
3808
3879
  ]);
3809
3880
  });
3810
3881
  });
3882
+ describe("field context", ()=>{
3883
+ it("should expose context derived from sibling fields via form param", ()=>{
3884
+ const form = createForm({
3885
+ fields: (fields)=>({
3886
+ title: fields.text().defaultValue("My Article"),
3887
+ description: fields.text().defaultValue("A great article"),
3888
+ media: fields.file().context(({ form })=>({
3889
+ title: form.field("title").getValue(),
3890
+ description: form.field("description").getValue()
3891
+ }))
3892
+ })
3893
+ });
3894
+ expect(form.field("media").vm.context).toEqual({
3895
+ title: "My Article",
3896
+ description: "A great article"
3897
+ });
3898
+ });
3899
+ it("should access root-level siblings via field.parent().field()", ()=>{
3900
+ const form = createForm({
3901
+ fields: (fields)=>({
3902
+ title: fields.text().defaultValue("Root Sibling"),
3903
+ media: fields.file().context(({ field })=>({
3904
+ title: field.parent().field("title").getValue()
3905
+ }))
3906
+ })
3907
+ });
3908
+ expect(form.field("media").vm.context).toEqual({
3909
+ title: "Root Sibling"
3910
+ });
3911
+ });
3912
+ it("should reactively update context when source fields change", ()=>{
3913
+ const form = createForm({
3914
+ fields: (fields)=>({
3915
+ title: fields.text().defaultValue("Original"),
3916
+ media: fields.file().context(({ form })=>({
3917
+ title: form.field("title").getValue()
3918
+ }))
3919
+ })
3920
+ });
3921
+ expect(form.field("media").vm.context).toEqual({
3922
+ title: "Original"
3923
+ });
3924
+ form.field("title").setValue("Updated");
3925
+ expect(form.field("media").vm.context).toEqual({
3926
+ title: "Updated"
3927
+ });
3928
+ });
3929
+ it("should default to empty object when no context callback is set", ()=>{
3930
+ const form = createForm({
3931
+ fields: (fields)=>({
3932
+ title: fields.text()
3933
+ })
3934
+ });
3935
+ expect(form.field("title").vm.context).toEqual({});
3936
+ });
3937
+ it("should access root fields via form param from nested object", ()=>{
3938
+ const form = createForm({
3939
+ fields: (fields)=>({
3940
+ title: fields.text().defaultValue("Page Title"),
3941
+ settings: fields.object().fields((f)=>({
3942
+ media: f.file().context(({ form })=>({
3943
+ title: form.field("title").getValue()
3944
+ }))
3945
+ }))
3946
+ }),
3947
+ layout: (l)=>[
3948
+ l.row("title"),
3949
+ l.row("settings")
3950
+ ]
3951
+ });
3952
+ expect(form.field("settings.media").vm.context).toEqual({
3953
+ title: "Page Title"
3954
+ });
3955
+ form.field("title").setValue("New Title");
3956
+ expect(form.field("settings.media").vm.context).toEqual({
3957
+ title: "New Title"
3958
+ });
3959
+ });
3960
+ it("should navigate to siblings via field.parent().field()", ()=>{
3961
+ const form = createForm({
3962
+ fields: (fields)=>({
3963
+ wrapper: fields.object().fields((f)=>({
3964
+ title: f.text().defaultValue("Nested Title"),
3965
+ media: f.file().context(({ field })=>({
3966
+ title: field.parent().field("title").getValue()
3967
+ }))
3968
+ }))
3969
+ }),
3970
+ layout: (l)=>[
3971
+ l.row("wrapper")
3972
+ ]
3973
+ });
3974
+ expect(form.field("wrapper.media").vm.context).toEqual({
3975
+ title: "Nested Title"
3976
+ });
3977
+ });
3978
+ it("should navigate multiple levels up via chained parent()", ()=>{
3979
+ const form = createForm({
3980
+ fields: (fields)=>({
3981
+ title: fields.text().defaultValue("Root Title"),
3982
+ settings: fields.object().fields((f)=>({
3983
+ nested: f.object().fields((inner)=>({
3984
+ media: inner.file().context(({ field })=>({
3985
+ title: field.parent().parent().parent().field("title").getValue()
3986
+ }))
3987
+ }))
3988
+ }))
3989
+ }),
3990
+ layout: (l)=>[
3991
+ l.row("title"),
3992
+ l.row("settings")
3993
+ ]
3994
+ });
3995
+ expect(form.field("settings.nested.media").vm.context).toEqual({
3996
+ title: "Root Title"
3997
+ });
3998
+ form.field("title").setValue("Updated Root");
3999
+ expect(form.field("settings.nested.media").vm.context).toEqual({
4000
+ title: "Updated Root"
4001
+ });
4002
+ });
4003
+ it("should navigate past parent to grandparent scope", ()=>{
4004
+ const form = createForm({
4005
+ fields: (fields)=>({
4006
+ settings: fields.object().fields((f)=>({
4007
+ label: f.text().defaultValue("Settings Label"),
4008
+ nested: f.object().fields((inner)=>({
4009
+ media: inner.file().context(({ field })=>({
4010
+ label: field.parent().parent().field("label").getValue()
4011
+ }))
4012
+ }))
4013
+ }))
4014
+ }),
4015
+ layout: (l)=>[
4016
+ l.row("settings")
4017
+ ]
4018
+ });
4019
+ expect(form.field("settings.nested.media").vm.context).toEqual({
4020
+ label: "Settings Label"
4021
+ });
4022
+ });
4023
+ it("should throw when navigating above root level", ()=>{
4024
+ const form = createForm({
4025
+ fields: (fields)=>({
4026
+ media: fields.file().context(({ field })=>({
4027
+ bad: field.parent().parent().field("x").getValue()
4028
+ }))
4029
+ })
4030
+ });
4031
+ expect(()=>form.field("media").vm.context).toThrow("Cannot navigate above root level.");
4032
+ });
4033
+ it("should use both field navigator and form in the same callback", ()=>{
4034
+ const form = createForm({
4035
+ fields: (fields)=>({
4036
+ slug: fields.text().defaultValue("my-slug"),
4037
+ settings: fields.object().fields((f)=>({
4038
+ label: f.text().defaultValue("Settings Label"),
4039
+ media: f.file().context(({ field, form })=>({
4040
+ label: field.parent().field("label").getValue(),
4041
+ slug: form.field("slug").getValue()
4042
+ }))
4043
+ }))
4044
+ }),
4045
+ layout: (l)=>[
4046
+ l.row("slug"),
4047
+ l.row("settings")
4048
+ ]
4049
+ });
4050
+ expect(form.field("settings.media").vm.context).toEqual({
4051
+ label: "Settings Label",
4052
+ slug: "my-slug"
4053
+ });
4054
+ });
4055
+ });
3811
4056
  describe("$. static references in rules", ()=>{
3812
4057
  it("$. resolves rule targets relative to the parent object", ()=>{
3813
4058
  const form = createForm({