@webiny/app-admin 6.4.12-beta.5 → 6.5.0-beta.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 (994) hide show
  1. package/base/Admin.js +13 -3
  2. package/base/Admin.js.map +1 -1
  3. package/base/Base/DefaultFieldRenderers.js +41 -2
  4. package/base/Base/DefaultFieldRenderers.js.map +1 -1
  5. package/base/Base/FieldRenderers/ApiKeyTokenRenderer.d.ts +4 -0
  6. package/base/Base/FieldRenderers/ApiKeyTokenRenderer.js +26 -0
  7. package/base/Base/FieldRenderers/ApiKeyTokenRenderer.js.map +1 -0
  8. package/base/Base/FieldRenderers/AutoCompleteRenderer.d.ts +13 -0
  9. package/base/Base/FieldRenderers/AutoCompleteRenderer.js +29 -0
  10. package/base/Base/FieldRenderers/AutoCompleteRenderer.js.map +1 -0
  11. package/base/Base/FieldRenderers/CheckboxesRenderer.js +1 -0
  12. package/base/Base/FieldRenderers/CheckboxesRenderer.js.map +1 -1
  13. package/base/Base/FieldRenderers/DateTimeInputsRenderer.js +5 -1
  14. package/base/Base/FieldRenderers/DateTimeInputsRenderer.js.map +1 -1
  15. package/base/Base/FieldRenderers/FilePickerRenderer.js +2 -0
  16. package/base/Base/FieldRenderers/FilePickerRenderer.js.map +1 -1
  17. package/base/Base/FieldRenderers/FileUrlPickerRenderer.js +1 -0
  18. package/base/Base/FieldRenderers/FileUrlPickerRenderer.js.map +1 -1
  19. package/base/Base/FieldRenderers/HorizontalTabsRenderer.d.ts +2 -2
  20. package/base/Base/FieldRenderers/HorizontalTabsRenderer.js +2 -1
  21. package/base/Base/FieldRenderers/HorizontalTabsRenderer.js.map +1 -1
  22. package/base/Base/FieldRenderers/InputRenderer.js +1 -0
  23. package/base/Base/FieldRenderers/InputRenderer.js.map +1 -1
  24. package/base/Base/FieldRenderers/LexicalEditorsRenderer.d.ts +14 -0
  25. package/base/Base/FieldRenderers/LexicalEditorsRenderer.js +78 -0
  26. package/base/Base/FieldRenderers/LexicalEditorsRenderer.js.map +1 -0
  27. package/base/Base/FieldRenderers/LexicalRenderer.js +10 -6
  28. package/base/Base/FieldRenderers/LexicalRenderer.js.map +1 -1
  29. package/base/Base/FieldRenderers/MultiAutoCompleteRenderer.d.ts +13 -0
  30. package/base/Base/FieldRenderers/MultiAutoCompleteRenderer.js +29 -0
  31. package/base/Base/FieldRenderers/MultiAutoCompleteRenderer.js.map +1 -0
  32. package/base/Base/FieldRenderers/MultiFilePickerRenderer.js +8 -5
  33. package/base/Base/FieldRenderers/MultiFilePickerRenderer.js.map +1 -1
  34. package/base/Base/FieldRenderers/MultiSelectRenderer.d.ts +15 -0
  35. package/base/Base/FieldRenderers/MultiSelectRenderer.js +31 -0
  36. package/base/Base/FieldRenderers/MultiSelectRenderer.js.map +1 -0
  37. package/base/Base/FieldRenderers/NumberInputRenderer.js +1 -0
  38. package/base/Base/FieldRenderers/NumberInputRenderer.js.map +1 -1
  39. package/base/Base/FieldRenderers/NumberInputsRenderer.js +19 -9
  40. package/base/Base/FieldRenderers/NumberInputsRenderer.js.map +1 -1
  41. package/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.d.ts +2 -0
  42. package/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.js +5 -2
  43. package/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.js.map +1 -1
  44. package/base/Base/FieldRenderers/ObjectRenderer/KeyValueTagsRenderer.js +2 -1
  45. package/base/Base/FieldRenderers/ObjectRenderer/KeyValueTagsRenderer.js.map +1 -1
  46. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.d.ts +11 -0
  47. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.js +206 -0
  48. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.js.map +1 -0
  49. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZonePresenter.d.ts +13 -0
  50. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZonePresenter.js +28 -0
  51. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZonePresenter.js.map +1 -0
  52. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/abstractions.d.ts +15 -0
  53. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/abstractions.js +5 -0
  54. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/abstractions.js.map +1 -0
  55. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/feature.d.ts +1 -0
  56. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/feature.js +11 -0
  57. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/feature.js.map +1 -0
  58. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/index.d.ts +2 -0
  59. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/index.js +2 -0
  60. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.d.ts +2 -1
  61. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js +35 -8
  62. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js.map +1 -1
  63. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.d.ts +7 -12
  64. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js +43 -9
  65. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js.map +1 -1
  66. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.d.ts +4 -1
  67. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js +41 -5
  68. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js.map +1 -1
  69. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.d.ts +3 -2
  70. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js +72 -12
  71. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js.map +1 -1
  72. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js +1 -1
  73. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js.map +1 -1
  74. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.d.ts +3 -2
  75. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js +10 -1
  76. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js.map +1 -1
  77. package/base/Base/FieldRenderers/PasswordInputRenderer.d.ts +12 -0
  78. package/base/Base/FieldRenderers/PasswordInputRenderer.js +22 -0
  79. package/base/Base/FieldRenderers/PasswordInputRenderer.js.map +1 -0
  80. package/base/Base/FieldRenderers/PermissionsRenderer.d.ts +14 -0
  81. package/base/Base/FieldRenderers/PermissionsRenderer.js +18 -0
  82. package/base/Base/FieldRenderers/PermissionsRenderer.js.map +1 -0
  83. package/base/Base/FieldRenderers/RadioButtonsRenderer.js +4 -2
  84. package/base/Base/FieldRenderers/RadioButtonsRenderer.js.map +1 -1
  85. package/base/Base/FieldRenderers/RolesMultiSelectRenderer.d.ts +12 -0
  86. package/base/Base/FieldRenderers/RolesMultiSelectRenderer.js +21 -0
  87. package/base/Base/FieldRenderers/RolesMultiSelectRenderer.js.map +1 -0
  88. package/base/Base/FieldRenderers/SelectRenderer.d.ts +6 -0
  89. package/base/Base/FieldRenderers/SelectRenderer.js +4 -2
  90. package/base/Base/FieldRenderers/SelectRenderer.js.map +1 -1
  91. package/base/Base/FieldRenderers/TagsRenderer.js +1 -0
  92. package/base/Base/FieldRenderers/TagsRenderer.js.map +1 -1
  93. package/base/Base/FieldRenderers/TextInputsRenderer.js +19 -9
  94. package/base/Base/FieldRenderers/TextInputsRenderer.js.map +1 -1
  95. package/base/Base/FieldRenderers/TextareaRenderer.js +1 -0
  96. package/base/Base/FieldRenderers/TextareaRenderer.js.map +1 -1
  97. package/base/Base/FieldRenderers/TextareasRenderer.js +5 -1
  98. package/base/Base/FieldRenderers/TextareasRenderer.js.map +1 -1
  99. package/base/Base/FieldRenderers/VerticalTabsRenderer.d.ts +2 -2
  100. package/base/Base.d.ts +3 -1
  101. package/base/Base.js +2 -1
  102. package/base/Base.js.map +1 -1
  103. package/base/createRootContainer.js +6 -0
  104. package/base/createRootContainer.js.map +1 -1
  105. package/base/ui/FileManager.d.ts +2 -1
  106. package/components/BulkActions/BulkActionButton.d.ts +6 -0
  107. package/components/BulkActions/BulkActionButton.js +17 -0
  108. package/components/BulkActions/BulkActionButton.js.map +1 -0
  109. package/components/BulkActions/BulkActionRunner.d.ts +41 -0
  110. package/components/BulkActions/BulkActionRunner.js +32 -0
  111. package/components/BulkActions/BulkActionRunner.js.map +1 -0
  112. package/components/BulkActions/Worker.d.ts +9 -57
  113. package/components/BulkActions/Worker.js +5 -9
  114. package/components/BulkActions/Worker.js.map +1 -1
  115. package/components/BulkActions/index.d.ts +3 -0
  116. package/components/BulkActions/index.js +3 -0
  117. package/components/ConfirmationDialog/ConfirmationDialog.d.ts +11 -0
  118. package/components/ConfirmationDialog/ConfirmationDialog.js +41 -0
  119. package/components/ConfirmationDialog/ConfirmationDialog.js.map +1 -0
  120. package/components/ConfirmationDialog/index.d.ts +1 -0
  121. package/components/ConfirmationDialog/index.js +1 -0
  122. package/components/Dialogs/DialogsContext.js +2 -1
  123. package/components/Dialogs/DialogsContext.js.map +1 -1
  124. package/components/Drawers/DrawerParamsContext.d.ts +6 -0
  125. package/components/Drawers/DrawerParamsContext.js +10 -0
  126. package/components/Drawers/DrawerParamsContext.js.map +1 -0
  127. package/components/Drawers/DrawersContext.d.ts +13 -0
  128. package/components/Drawers/DrawersContext.js +50 -0
  129. package/components/Drawers/DrawersContext.js.map +1 -0
  130. package/components/Drawers/useDrawers.d.ts +2 -0
  131. package/components/Drawers/useDrawers.js +10 -0
  132. package/components/Drawers/useDrawers.js.map +1 -0
  133. package/components/Filters/Filters.js +4 -3
  134. package/components/Filters/Filters.js.map +1 -1
  135. package/components/IconPicker/IconPicker.d.ts +7 -5
  136. package/components/IconPicker/IconPickerComponent.d.ts +2 -2
  137. package/components/IconPicker/IconPickerComponent.js +1 -1
  138. package/components/IconPicker/IconPickerComponent.js.map +1 -1
  139. package/components/IconPicker/components/IconPickerTrigger.d.ts +1 -1
  140. package/components/IconPicker/config/index.d.ts +2 -1
  141. package/components/LexicalEditor/LexicalLinkForm.js +3 -0
  142. package/components/LexicalEditor/LexicalLinkForm.js.map +1 -1
  143. package/components/ListView/ListView.d.ts +17 -0
  144. package/components/ListView/ListView.js +36 -0
  145. package/components/ListView/ListView.js.map +1 -0
  146. package/components/ListView/ListViewBottomBar.d.ts +14 -0
  147. package/components/ListView/ListViewBottomBar.js +45 -0
  148. package/components/ListView/ListViewBottomBar.js.map +1 -0
  149. package/components/ListView/ListViewBulkActions.d.ts +11 -0
  150. package/components/ListView/ListViewBulkActions.js +41 -0
  151. package/components/ListView/ListViewBulkActions.js.map +1 -0
  152. package/components/ListView/ListViewContent.d.ts +12 -0
  153. package/components/ListView/ListViewContent.js +25 -0
  154. package/components/ListView/ListViewContent.js.map +1 -0
  155. package/components/ListView/ListViewFilters.d.ts +15 -0
  156. package/components/ListView/ListViewFilters.js +21 -0
  157. package/components/ListView/ListViewFilters.js.map +1 -0
  158. package/components/ListView/ListViewHeader.d.ts +17 -0
  159. package/components/ListView/ListViewHeader.js +72 -0
  160. package/components/ListView/ListViewHeader.js.map +1 -0
  161. package/components/ListView/ListViewSidebar.d.ts +17 -0
  162. package/components/ListView/ListViewSidebar.js +25 -0
  163. package/components/ListView/ListViewSidebar.js.map +1 -0
  164. package/components/ListView/ListViewTable.d.ts +18 -0
  165. package/components/ListView/ListViewTable.js +33 -0
  166. package/components/ListView/ListViewTable.js.map +1 -0
  167. package/components/ListView/context.d.ts +3 -0
  168. package/components/ListView/context.js +11 -0
  169. package/components/ListView/context.js.map +1 -0
  170. package/components/ListView/index.d.ts +24 -0
  171. package/components/ListView/index.js +22 -0
  172. package/components/ListView/index.js.map +1 -0
  173. package/components/ListView/types.d.ts +7 -0
  174. package/components/ListView/types.js +0 -0
  175. package/components/OptionsMenu/OptionsMenuItem.d.ts +1 -0
  176. package/components/OptionsMenu/OptionsMenuItem.js +1 -0
  177. package/components/OptionsMenu/OptionsMenuItem.js.map +1 -1
  178. package/components/OverlayLayout/components/OverlayHeader.d.ts +1 -1
  179. package/components/RolesMultiAutocomplete/index.d.ts +1 -1
  180. package/components/RolesMultiAutocomplete/index.js +12 -1
  181. package/components/RolesMultiAutocomplete/index.js.map +1 -1
  182. package/components/SimpleForm/SimpleForm.d.ts +1 -1
  183. package/components/SimpleUI/InputField.d.ts +2 -1
  184. package/components/SingleImageUpload.d.ts +1 -2
  185. package/components/SingleImageUpload.js +1 -2
  186. package/components/SingleImageUpload.js.map +1 -1
  187. package/components/Table/cells/CellAuthor.d.ts +2 -0
  188. package/components/Table/cells/CellAuthor.js +10 -0
  189. package/components/Table/cells/CellAuthor.js.map +1 -0
  190. package/components/Table/cells/CellCreated.d.ts +2 -0
  191. package/components/Table/cells/CellCreated.js +13 -0
  192. package/components/Table/cells/CellCreated.js.map +1 -0
  193. package/components/Table/cells/CellModified.d.ts +2 -0
  194. package/components/Table/cells/CellModified.js +13 -0
  195. package/components/Table/cells/CellModified.js.map +1 -0
  196. package/components/Table/cells/index.d.ts +3 -0
  197. package/components/Table/cells/index.js +3 -0
  198. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.d.ts +9 -0
  199. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.js +23 -0
  200. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.js.map +1 -0
  201. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.d.ts +9 -0
  202. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.js +21 -0
  203. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.js.map +1 -0
  204. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.d.ts +1 -0
  205. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.js +128 -0
  206. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.js.map +1 -0
  207. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.d.ts +10 -0
  208. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.js +30 -0
  209. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.js.map +1 -0
  210. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.d.ts +9 -0
  211. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.js +18 -0
  212. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.js.map +1 -0
  213. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.d.ts +8 -0
  214. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.js +16 -0
  215. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.js.map +1 -0
  216. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityRepository.d.ts +5 -0
  217. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityRepository.js +0 -0
  218. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityUpdater.d.ts +4 -0
  219. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityUpdater.js +0 -0
  220. package/components/Table/components/Table/ColumnVisibility/index.d.ts +7 -0
  221. package/components/Table/components/Table/ColumnVisibility/index.js +5 -0
  222. package/components/Table/components/Table/Columns/Column.d.ts +42 -0
  223. package/components/Table/components/Table/Columns/Column.js +21 -0
  224. package/components/Table/components/Table/Columns/Column.js.map +1 -0
  225. package/components/Table/components/Table/Columns/ColumnMapper.d.ts +7 -0
  226. package/components/Table/components/Table/Columns/ColumnMapper.js +34 -0
  227. package/components/Table/components/Table/Columns/ColumnMapper.js.map +1 -0
  228. package/components/Table/components/Table/Columns/ColumnsPresenter.d.ts +9 -0
  229. package/components/Table/components/Table/Columns/ColumnsPresenter.js +18 -0
  230. package/components/Table/components/Table/Columns/ColumnsPresenter.js.map +1 -0
  231. package/components/Table/components/Table/Columns/ColumnsPresenter.test.d.ts +1 -0
  232. package/components/Table/components/Table/Columns/ColumnsPresenter.test.js +73 -0
  233. package/components/Table/components/Table/Columns/ColumnsPresenter.test.js.map +1 -0
  234. package/components/Table/components/Table/Columns/ColumnsRepository.d.ts +9 -0
  235. package/components/Table/components/Table/Columns/ColumnsRepository.js +19 -0
  236. package/components/Table/components/Table/Columns/ColumnsRepository.js.map +1 -0
  237. package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.d.ts +9 -0
  238. package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.js +21 -0
  239. package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.js.map +1 -0
  240. package/components/Table/components/Table/Columns/IColumnsRepository.d.ts +5 -0
  241. package/components/Table/components/Table/Columns/IColumnsRepository.js +0 -0
  242. package/components/Table/components/Table/Columns/index.d.ts +6 -0
  243. package/components/Table/components/Table/Columns/index.js +5 -0
  244. package/components/Table/components/Table/Table.d.ts +17 -0
  245. package/components/Table/components/Table/Table.js +47 -0
  246. package/components/Table/components/Table/Table.js.map +1 -0
  247. package/components/Table/components/Table/TableInner.d.ts +24 -0
  248. package/components/Table/components/Table/TableInner.js +40 -0
  249. package/components/Table/components/Table/TableInner.js.map +1 -0
  250. package/components/Table/components/Table/TablePresenter.d.ts +15 -0
  251. package/components/Table/components/Table/TablePresenter.js +15 -0
  252. package/components/Table/components/Table/TablePresenter.js.map +1 -0
  253. package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.d.ts +9 -0
  254. package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.js +15 -0
  255. package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.js.map +1 -0
  256. package/components/Table/components/Table/gateways/IColumnsVisibilityGateway.d.ts +4 -0
  257. package/components/Table/components/Table/gateways/IColumnsVisibilityGateway.js +0 -0
  258. package/components/Table/components/Table/gateways/index.d.ts +2 -0
  259. package/components/Table/components/Table/gateways/index.js +1 -0
  260. package/components/Table/components/Table/index.d.ts +1 -0
  261. package/components/Table/components/Table/index.js +1 -0
  262. package/components/Table/components/index.d.ts +1 -0
  263. package/components/Table/components/index.js +1 -0
  264. package/components/Table/createTableData.d.ts +5 -0
  265. package/components/Table/createTableData.js +9 -0
  266. package/components/Table/createTableData.js.map +1 -0
  267. package/components/Table/index.d.ts +5 -0
  268. package/components/Table/index.js +5 -0
  269. package/components/Table/table.types.d.ts +9 -0
  270. package/components/Table/table.types.js +0 -0
  271. package/components/Table/useTableRow.d.ts +18 -0
  272. package/components/Table/useTableRow.js +22 -0
  273. package/components/Table/useTableRow.js.map +1 -0
  274. package/components/TeamsMultiAutocomplete/index.d.ts +1 -1
  275. package/components/TeamsMultiAutocomplete/index.js +12 -1
  276. package/components/TeamsMultiAutocomplete/index.js.map +1 -1
  277. package/components/index.d.ts +3 -2
  278. package/components/index.js +3 -2
  279. package/config/AdminConfig/Dashboard.d.ts +2 -1
  280. package/config/AdminConfig/Drawer.d.ts +10 -0
  281. package/config/AdminConfig/Drawer.js +19 -0
  282. package/config/AdminConfig/Drawer.js.map +1 -0
  283. package/config/AdminConfig/Form.d.ts +4 -2
  284. package/config/AdminConfig/LexicalTheme/Typography.d.ts +4 -4
  285. package/config/AdminConfig/LexicalTheme.d.ts +8 -6
  286. package/config/AdminConfig/Logo.d.ts +8 -6
  287. package/config/AdminConfig/Menu/MenuGroup.d.ts +13 -12
  288. package/config/AdminConfig/Menu/MenuItem.d.ts +7 -6
  289. package/config/AdminConfig/Menu/MenuLink.d.ts +7 -6
  290. package/config/AdminConfig/Menu/SupportMenu/SupportMenuItem.d.ts +13 -12
  291. package/config/AdminConfig/Menu/SupportMenu/SupportMenuLink.d.ts +7 -6
  292. package/config/AdminConfig/Menu/SupportMenu.d.ts +8 -6
  293. package/config/AdminConfig/Menu/UserMenu.d.ts +8 -6
  294. package/config/AdminConfig/Menu.d.ts +15 -12
  295. package/config/AdminConfig/Security.d.ts +2 -1
  296. package/config/AdminConfig/Tenant/TenantLogo.d.ts +8 -6
  297. package/config/AdminConfig/Tenant/TenantName.d.ts +8 -6
  298. package/config/AdminConfig/Tenant.d.ts +3 -1
  299. package/config/AdminConfig/Title.d.ts +8 -6
  300. package/config/AdminConfig.d.ts +21 -30
  301. package/config/AdminConfig.js +3 -0
  302. package/config/AdminConfig.js.map +1 -1
  303. package/config/table/Column.d.ts +34 -0
  304. package/config/table/Column.js +69 -0
  305. package/config/table/Column.js.map +1 -0
  306. package/config/table/Sorting.d.ts +11 -0
  307. package/config/table/Sorting.js +28 -0
  308. package/config/table/Sorting.js.map +1 -0
  309. package/config/table/index.d.ts +13 -0
  310. package/config/table/index.js +9 -0
  311. package/config/table/index.js.map +1 -0
  312. package/domain/Identity.js +1 -1
  313. package/domain/Identity.js.map +1 -1
  314. package/domain/securityPermissionsSchema.d.ts +20 -0
  315. package/domain/securityPermissionsSchema.js +34 -0
  316. package/domain/securityPermissionsSchema.js.map +1 -0
  317. package/exports/admin/form.d.ts +2 -0
  318. package/exports/admin/form.js +1 -0
  319. package/exports/admin/ui.d.ts +4 -0
  320. package/exports/admin/ui.js +2 -1
  321. package/exports/admin.d.ts +4 -0
  322. package/exports/admin.js +4 -0
  323. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyGateway.d.ts +12 -0
  324. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyGateway.js +50 -0
  325. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyGateway.js.map +1 -0
  326. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyRepository.d.ts +13 -0
  327. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyRepository.js +25 -0
  328. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyRepository.js.map +1 -0
  329. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyUseCase.d.ts +11 -0
  330. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyUseCase.js +18 -0
  331. package/features/accessManagement/apiKeys/createApiKey/CreateApiKeyUseCase.js.map +1 -0
  332. package/features/accessManagement/apiKeys/createApiKey/abstractions.d.ts +29 -0
  333. package/features/accessManagement/apiKeys/createApiKey/abstractions.js +7 -0
  334. package/features/accessManagement/apiKeys/createApiKey/abstractions.js.map +1 -0
  335. package/features/accessManagement/apiKeys/createApiKey/feature.d.ts +3 -0
  336. package/features/accessManagement/apiKeys/createApiKey/feature.js +21 -0
  337. package/features/accessManagement/apiKeys/createApiKey/feature.js.map +1 -0
  338. package/features/accessManagement/apiKeys/createApiKey/index.d.ts +3 -0
  339. package/features/accessManagement/apiKeys/createApiKey/index.js +2 -0
  340. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyGateway.d.ts +11 -0
  341. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyGateway.js +39 -0
  342. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyGateway.js.map +1 -0
  343. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyRepository.d.ts +12 -0
  344. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyRepository.js +22 -0
  345. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyRepository.js.map +1 -0
  346. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyUseCase.d.ts +10 -0
  347. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyUseCase.js +18 -0
  348. package/features/accessManagement/apiKeys/deleteApiKey/DeleteApiKeyUseCase.js.map +1 -0
  349. package/features/accessManagement/apiKeys/deleteApiKey/abstractions.d.ts +21 -0
  350. package/features/accessManagement/apiKeys/deleteApiKey/abstractions.js +7 -0
  351. package/features/accessManagement/apiKeys/deleteApiKey/abstractions.js.map +1 -0
  352. package/features/accessManagement/apiKeys/deleteApiKey/feature.d.ts +3 -0
  353. package/features/accessManagement/apiKeys/deleteApiKey/feature.js +21 -0
  354. package/features/accessManagement/apiKeys/deleteApiKey/feature.js.map +1 -0
  355. package/features/accessManagement/apiKeys/deleteApiKey/index.d.ts +3 -0
  356. package/features/accessManagement/apiKeys/deleteApiKey/index.js +2 -0
  357. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyGateway.d.ts +12 -0
  358. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyGateway.js +49 -0
  359. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyGateway.js.map +1 -0
  360. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyRepository.d.ts +11 -0
  361. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyRepository.js +18 -0
  362. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyRepository.js.map +1 -0
  363. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyUseCase.d.ts +11 -0
  364. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyUseCase.js +18 -0
  365. package/features/accessManagement/apiKeys/getApiKey/GetApiKeyUseCase.js.map +1 -0
  366. package/features/accessManagement/apiKeys/getApiKey/abstractions.d.ts +22 -0
  367. package/features/accessManagement/apiKeys/getApiKey/abstractions.js +7 -0
  368. package/features/accessManagement/apiKeys/getApiKey/abstractions.js.map +1 -0
  369. package/features/accessManagement/apiKeys/getApiKey/feature.d.ts +3 -0
  370. package/features/accessManagement/apiKeys/getApiKey/feature.js +21 -0
  371. package/features/accessManagement/apiKeys/getApiKey/feature.js.map +1 -0
  372. package/features/accessManagement/apiKeys/getApiKey/index.d.ts +3 -0
  373. package/features/accessManagement/apiKeys/getApiKey/index.js +2 -0
  374. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysGateway.d.ts +11 -0
  375. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysGateway.js +44 -0
  376. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysGateway.js.map +1 -0
  377. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysRepository.d.ts +11 -0
  378. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysRepository.js +22 -0
  379. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysRepository.js.map +1 -0
  380. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysUseCase.d.ts +10 -0
  381. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysUseCase.js +18 -0
  382. package/features/accessManagement/apiKeys/listApiKeys/ListApiKeysUseCase.js.map +1 -0
  383. package/features/accessManagement/apiKeys/listApiKeys/abstractions.d.ts +30 -0
  384. package/features/accessManagement/apiKeys/listApiKeys/abstractions.js +8 -0
  385. package/features/accessManagement/apiKeys/listApiKeys/abstractions.js.map +1 -0
  386. package/features/accessManagement/apiKeys/listApiKeys/feature.d.ts +3 -0
  387. package/features/accessManagement/apiKeys/listApiKeys/feature.js +23 -0
  388. package/features/accessManagement/apiKeys/listApiKeys/feature.js.map +1 -0
  389. package/features/accessManagement/apiKeys/listApiKeys/index.d.ts +3 -0
  390. package/features/accessManagement/apiKeys/listApiKeys/index.js +2 -0
  391. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyGateway.d.ts +12 -0
  392. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyGateway.js +51 -0
  393. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyGateway.js.map +1 -0
  394. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyRepository.d.ts +13 -0
  395. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyRepository.js +23 -0
  396. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyRepository.js.map +1 -0
  397. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyUseCase.d.ts +11 -0
  398. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyUseCase.js +18 -0
  399. package/features/accessManagement/apiKeys/updateApiKey/UpdateApiKeyUseCase.js.map +1 -0
  400. package/features/accessManagement/apiKeys/updateApiKey/abstractions.d.ts +28 -0
  401. package/features/accessManagement/apiKeys/updateApiKey/abstractions.js +7 -0
  402. package/features/accessManagement/apiKeys/updateApiKey/abstractions.js.map +1 -0
  403. package/features/accessManagement/apiKeys/updateApiKey/feature.d.ts +3 -0
  404. package/features/accessManagement/apiKeys/updateApiKey/feature.js +21 -0
  405. package/features/accessManagement/apiKeys/updateApiKey/feature.js.map +1 -0
  406. package/features/accessManagement/apiKeys/updateApiKey/index.d.ts +3 -0
  407. package/features/accessManagement/apiKeys/updateApiKey/index.js +2 -0
  408. package/features/accessManagement/constants.d.ts +5 -0
  409. package/features/accessManagement/constants.js +9 -0
  410. package/features/accessManagement/constants.js.map +1 -0
  411. package/features/accessManagement/permissions/abstractions.d.ts +17 -0
  412. package/features/accessManagement/permissions/abstractions.js +6 -0
  413. package/features/accessManagement/permissions/abstractions.js.map +1 -0
  414. package/features/accessManagement/permissions/feature.d.ts +14 -0
  415. package/features/accessManagement/permissions/feature.js +7 -0
  416. package/features/accessManagement/permissions/feature.js.map +1 -0
  417. package/features/accessManagement/roles/createRole/CreateRoleGateway.d.ts +12 -0
  418. package/features/accessManagement/roles/createRole/CreateRoleGateway.js +51 -0
  419. package/features/accessManagement/roles/createRole/CreateRoleGateway.js.map +1 -0
  420. package/features/accessManagement/roles/createRole/CreateRoleRepository.d.ts +13 -0
  421. package/features/accessManagement/roles/createRole/CreateRoleRepository.js +25 -0
  422. package/features/accessManagement/roles/createRole/CreateRoleRepository.js.map +1 -0
  423. package/features/accessManagement/roles/createRole/CreateRoleUseCase.d.ts +11 -0
  424. package/features/accessManagement/roles/createRole/CreateRoleUseCase.js +18 -0
  425. package/features/accessManagement/roles/createRole/CreateRoleUseCase.js.map +1 -0
  426. package/features/accessManagement/roles/createRole/abstractions.d.ts +29 -0
  427. package/features/accessManagement/roles/createRole/abstractions.js +7 -0
  428. package/features/accessManagement/roles/createRole/abstractions.js.map +1 -0
  429. package/features/accessManagement/roles/createRole/feature.d.ts +3 -0
  430. package/features/accessManagement/roles/createRole/feature.js +21 -0
  431. package/features/accessManagement/roles/createRole/feature.js.map +1 -0
  432. package/features/accessManagement/roles/createRole/index.d.ts +3 -0
  433. package/features/accessManagement/roles/createRole/index.js +2 -0
  434. package/features/accessManagement/roles/deleteRole/DeleteRoleGateway.d.ts +11 -0
  435. package/features/accessManagement/roles/deleteRole/DeleteRoleGateway.js +40 -0
  436. package/features/accessManagement/roles/deleteRole/DeleteRoleGateway.js.map +1 -0
  437. package/features/accessManagement/roles/deleteRole/DeleteRoleRepository.d.ts +12 -0
  438. package/features/accessManagement/roles/deleteRole/DeleteRoleRepository.js +22 -0
  439. package/features/accessManagement/roles/deleteRole/DeleteRoleRepository.js.map +1 -0
  440. package/features/accessManagement/roles/deleteRole/DeleteRoleUseCase.d.ts +10 -0
  441. package/features/accessManagement/roles/deleteRole/DeleteRoleUseCase.js +18 -0
  442. package/features/accessManagement/roles/deleteRole/DeleteRoleUseCase.js.map +1 -0
  443. package/features/accessManagement/roles/deleteRole/abstractions.d.ts +21 -0
  444. package/features/accessManagement/roles/deleteRole/abstractions.js +7 -0
  445. package/features/accessManagement/roles/deleteRole/abstractions.js.map +1 -0
  446. package/features/accessManagement/roles/deleteRole/feature.d.ts +3 -0
  447. package/features/accessManagement/roles/deleteRole/feature.js +21 -0
  448. package/features/accessManagement/roles/deleteRole/feature.js.map +1 -0
  449. package/features/accessManagement/roles/deleteRole/index.d.ts +3 -0
  450. package/features/accessManagement/roles/deleteRole/index.js +2 -0
  451. package/features/accessManagement/roles/getRole/GetRoleGateway.d.ts +12 -0
  452. package/features/accessManagement/roles/getRole/GetRoleGateway.js +50 -0
  453. package/features/accessManagement/roles/getRole/GetRoleGateway.js.map +1 -0
  454. package/features/accessManagement/roles/getRole/GetRoleRepository.d.ts +11 -0
  455. package/features/accessManagement/roles/getRole/GetRoleRepository.js +18 -0
  456. package/features/accessManagement/roles/getRole/GetRoleRepository.js.map +1 -0
  457. package/features/accessManagement/roles/getRole/GetRoleUseCase.d.ts +11 -0
  458. package/features/accessManagement/roles/getRole/GetRoleUseCase.js +18 -0
  459. package/features/accessManagement/roles/getRole/GetRoleUseCase.js.map +1 -0
  460. package/features/accessManagement/roles/getRole/abstractions.d.ts +22 -0
  461. package/features/accessManagement/roles/getRole/abstractions.js +7 -0
  462. package/features/accessManagement/roles/getRole/abstractions.js.map +1 -0
  463. package/features/accessManagement/roles/getRole/feature.d.ts +3 -0
  464. package/features/accessManagement/roles/getRole/feature.js +21 -0
  465. package/features/accessManagement/roles/getRole/feature.js.map +1 -0
  466. package/features/accessManagement/roles/getRole/index.d.ts +3 -0
  467. package/features/accessManagement/roles/getRole/index.js +2 -0
  468. package/features/accessManagement/roles/listRoles/ListRolesGateway.d.ts +11 -0
  469. package/features/accessManagement/roles/listRoles/ListRolesGateway.js +45 -0
  470. package/features/accessManagement/roles/listRoles/ListRolesGateway.js.map +1 -0
  471. package/features/accessManagement/roles/listRoles/ListRolesRepository.d.ts +11 -0
  472. package/features/accessManagement/roles/listRoles/ListRolesRepository.js +22 -0
  473. package/features/accessManagement/roles/listRoles/ListRolesRepository.js.map +1 -0
  474. package/features/accessManagement/roles/listRoles/ListRolesUseCase.d.ts +10 -0
  475. package/features/accessManagement/roles/listRoles/ListRolesUseCase.js +18 -0
  476. package/features/accessManagement/roles/listRoles/ListRolesUseCase.js.map +1 -0
  477. package/features/accessManagement/roles/listRoles/abstractions.d.ts +30 -0
  478. package/features/accessManagement/roles/listRoles/abstractions.js +8 -0
  479. package/features/accessManagement/roles/listRoles/abstractions.js.map +1 -0
  480. package/features/accessManagement/roles/listRoles/feature.d.ts +3 -0
  481. package/features/accessManagement/roles/listRoles/feature.js +23 -0
  482. package/features/accessManagement/roles/listRoles/feature.js.map +1 -0
  483. package/features/accessManagement/roles/listRoles/index.d.ts +3 -0
  484. package/features/accessManagement/roles/listRoles/index.js +2 -0
  485. package/features/accessManagement/roles/updateRole/UpdateRoleGateway.d.ts +12 -0
  486. package/features/accessManagement/roles/updateRole/UpdateRoleGateway.js +52 -0
  487. package/features/accessManagement/roles/updateRole/UpdateRoleGateway.js.map +1 -0
  488. package/features/accessManagement/roles/updateRole/UpdateRoleRepository.d.ts +13 -0
  489. package/features/accessManagement/roles/updateRole/UpdateRoleRepository.js +23 -0
  490. package/features/accessManagement/roles/updateRole/UpdateRoleRepository.js.map +1 -0
  491. package/features/accessManagement/roles/updateRole/UpdateRoleUseCase.d.ts +11 -0
  492. package/features/accessManagement/roles/updateRole/UpdateRoleUseCase.js +18 -0
  493. package/features/accessManagement/roles/updateRole/UpdateRoleUseCase.js.map +1 -0
  494. package/features/accessManagement/roles/updateRole/abstractions.d.ts +28 -0
  495. package/features/accessManagement/roles/updateRole/abstractions.js +7 -0
  496. package/features/accessManagement/roles/updateRole/abstractions.js.map +1 -0
  497. package/features/accessManagement/roles/updateRole/feature.d.ts +3 -0
  498. package/features/accessManagement/roles/updateRole/feature.js +21 -0
  499. package/features/accessManagement/roles/updateRole/feature.js.map +1 -0
  500. package/features/accessManagement/roles/updateRole/index.d.ts +3 -0
  501. package/features/accessManagement/roles/updateRole/index.js +2 -0
  502. package/features/accessManagement/teams/createTeam/CreateTeamGateway.d.ts +12 -0
  503. package/features/accessManagement/teams/createTeam/CreateTeamGateway.js +55 -0
  504. package/features/accessManagement/teams/createTeam/CreateTeamGateway.js.map +1 -0
  505. package/features/accessManagement/teams/createTeam/CreateTeamRepository.d.ts +13 -0
  506. package/features/accessManagement/teams/createTeam/CreateTeamRepository.js +25 -0
  507. package/features/accessManagement/teams/createTeam/CreateTeamRepository.js.map +1 -0
  508. package/features/accessManagement/teams/createTeam/CreateTeamUseCase.d.ts +11 -0
  509. package/features/accessManagement/teams/createTeam/CreateTeamUseCase.js +18 -0
  510. package/features/accessManagement/teams/createTeam/CreateTeamUseCase.js.map +1 -0
  511. package/features/accessManagement/teams/createTeam/abstractions.d.ts +28 -0
  512. package/features/accessManagement/teams/createTeam/abstractions.js +7 -0
  513. package/features/accessManagement/teams/createTeam/abstractions.js.map +1 -0
  514. package/features/accessManagement/teams/createTeam/feature.d.ts +3 -0
  515. package/features/accessManagement/teams/createTeam/feature.js +21 -0
  516. package/features/accessManagement/teams/createTeam/feature.js.map +1 -0
  517. package/features/accessManagement/teams/createTeam/index.d.ts +3 -0
  518. package/features/accessManagement/teams/createTeam/index.js +2 -0
  519. package/features/accessManagement/teams/deleteTeam/DeleteTeamGateway.d.ts +11 -0
  520. package/features/accessManagement/teams/deleteTeam/DeleteTeamGateway.js +40 -0
  521. package/features/accessManagement/teams/deleteTeam/DeleteTeamGateway.js.map +1 -0
  522. package/features/accessManagement/teams/deleteTeam/DeleteTeamRepository.d.ts +12 -0
  523. package/features/accessManagement/teams/deleteTeam/DeleteTeamRepository.js +22 -0
  524. package/features/accessManagement/teams/deleteTeam/DeleteTeamRepository.js.map +1 -0
  525. package/features/accessManagement/teams/deleteTeam/DeleteTeamUseCase.d.ts +10 -0
  526. package/features/accessManagement/teams/deleteTeam/DeleteTeamUseCase.js +18 -0
  527. package/features/accessManagement/teams/deleteTeam/DeleteTeamUseCase.js.map +1 -0
  528. package/features/accessManagement/teams/deleteTeam/abstractions.d.ts +21 -0
  529. package/features/accessManagement/teams/deleteTeam/abstractions.js +7 -0
  530. package/features/accessManagement/teams/deleteTeam/abstractions.js.map +1 -0
  531. package/features/accessManagement/teams/deleteTeam/feature.d.ts +3 -0
  532. package/features/accessManagement/teams/deleteTeam/feature.js +21 -0
  533. package/features/accessManagement/teams/deleteTeam/feature.js.map +1 -0
  534. package/features/accessManagement/teams/deleteTeam/index.d.ts +3 -0
  535. package/features/accessManagement/teams/deleteTeam/index.js +2 -0
  536. package/features/accessManagement/teams/getTeam/GetTeamGateway.d.ts +12 -0
  537. package/features/accessManagement/teams/getTeam/GetTeamGateway.js +54 -0
  538. package/features/accessManagement/teams/getTeam/GetTeamGateway.js.map +1 -0
  539. package/features/accessManagement/teams/getTeam/GetTeamRepository.d.ts +11 -0
  540. package/features/accessManagement/teams/getTeam/GetTeamRepository.js +18 -0
  541. package/features/accessManagement/teams/getTeam/GetTeamRepository.js.map +1 -0
  542. package/features/accessManagement/teams/getTeam/GetTeamUseCase.d.ts +11 -0
  543. package/features/accessManagement/teams/getTeam/GetTeamUseCase.js +18 -0
  544. package/features/accessManagement/teams/getTeam/GetTeamUseCase.js.map +1 -0
  545. package/features/accessManagement/teams/getTeam/abstractions.d.ts +22 -0
  546. package/features/accessManagement/teams/getTeam/abstractions.js +7 -0
  547. package/features/accessManagement/teams/getTeam/abstractions.js.map +1 -0
  548. package/features/accessManagement/teams/getTeam/feature.d.ts +3 -0
  549. package/features/accessManagement/teams/getTeam/feature.js +21 -0
  550. package/features/accessManagement/teams/getTeam/feature.js.map +1 -0
  551. package/features/accessManagement/teams/getTeam/index.d.ts +3 -0
  552. package/features/accessManagement/teams/getTeam/index.js +2 -0
  553. package/features/accessManagement/teams/listTeams/ListTeamsGateway.d.ts +11 -0
  554. package/features/accessManagement/teams/listTeams/ListTeamsGateway.js +49 -0
  555. package/features/accessManagement/teams/listTeams/ListTeamsGateway.js.map +1 -0
  556. package/features/accessManagement/teams/listTeams/ListTeamsRepository.d.ts +11 -0
  557. package/features/accessManagement/teams/listTeams/ListTeamsRepository.js +22 -0
  558. package/features/accessManagement/teams/listTeams/ListTeamsRepository.js.map +1 -0
  559. package/features/accessManagement/teams/listTeams/ListTeamsUseCase.d.ts +10 -0
  560. package/features/accessManagement/teams/listTeams/ListTeamsUseCase.js +18 -0
  561. package/features/accessManagement/teams/listTeams/ListTeamsUseCase.js.map +1 -0
  562. package/features/accessManagement/teams/listTeams/abstractions.d.ts +30 -0
  563. package/features/accessManagement/teams/listTeams/abstractions.js +8 -0
  564. package/features/accessManagement/teams/listTeams/abstractions.js.map +1 -0
  565. package/features/accessManagement/teams/listTeams/feature.d.ts +3 -0
  566. package/features/accessManagement/teams/listTeams/feature.js +23 -0
  567. package/features/accessManagement/teams/listTeams/feature.js.map +1 -0
  568. package/features/accessManagement/teams/listTeams/index.d.ts +3 -0
  569. package/features/accessManagement/teams/listTeams/index.js +2 -0
  570. package/features/accessManagement/teams/updateTeam/UpdateTeamGateway.d.ts +12 -0
  571. package/features/accessManagement/teams/updateTeam/UpdateTeamGateway.js +56 -0
  572. package/features/accessManagement/teams/updateTeam/UpdateTeamGateway.js.map +1 -0
  573. package/features/accessManagement/teams/updateTeam/UpdateTeamRepository.d.ts +13 -0
  574. package/features/accessManagement/teams/updateTeam/UpdateTeamRepository.js +23 -0
  575. package/features/accessManagement/teams/updateTeam/UpdateTeamRepository.js.map +1 -0
  576. package/features/accessManagement/teams/updateTeam/UpdateTeamUseCase.d.ts +11 -0
  577. package/features/accessManagement/teams/updateTeam/UpdateTeamUseCase.js +18 -0
  578. package/features/accessManagement/teams/updateTeam/UpdateTeamUseCase.js.map +1 -0
  579. package/features/accessManagement/teams/updateTeam/abstractions.d.ts +27 -0
  580. package/features/accessManagement/teams/updateTeam/abstractions.js +7 -0
  581. package/features/accessManagement/teams/updateTeam/abstractions.js.map +1 -0
  582. package/features/accessManagement/teams/updateTeam/feature.d.ts +3 -0
  583. package/features/accessManagement/teams/updateTeam/feature.js +21 -0
  584. package/features/accessManagement/teams/updateTeam/feature.js.map +1 -0
  585. package/features/accessManagement/teams/updateTeam/index.d.ts +3 -0
  586. package/features/accessManagement/teams/updateTeam/index.js +2 -0
  587. package/features/accessManagement/types.d.ts +34 -0
  588. package/features/accessManagement/types.js +0 -0
  589. package/features/clipboard/ClipboardService.d.ts +15 -0
  590. package/features/clipboard/ClipboardService.js +51 -0
  591. package/features/clipboard/ClipboardService.js.map +1 -0
  592. package/features/clipboard/abstractions.d.ts +14 -0
  593. package/features/clipboard/abstractions.js +5 -0
  594. package/features/clipboard/abstractions.js.map +1 -0
  595. package/features/clipboard/feature.d.ts +3 -0
  596. package/features/clipboard/feature.js +17 -0
  597. package/features/clipboard/feature.js.map +1 -0
  598. package/features/clipboard/index.d.ts +2 -0
  599. package/features/clipboard/index.js +2 -0
  600. package/features/confirmation/Confirmation.d.ts +11 -0
  601. package/features/confirmation/Confirmation.js +29 -0
  602. package/features/confirmation/Confirmation.js.map +1 -0
  603. package/features/confirmation/ConfirmationBridge.d.ts +1 -0
  604. package/features/confirmation/ConfirmationBridge.js +20 -0
  605. package/features/confirmation/ConfirmationBridge.js.map +1 -0
  606. package/features/confirmation/abstractions.d.ts +15 -0
  607. package/features/confirmation/abstractions.js +6 -0
  608. package/features/confirmation/abstractions.js.map +1 -0
  609. package/features/confirmation/feature.d.ts +1 -0
  610. package/features/confirmation/feature.js +11 -0
  611. package/features/confirmation/feature.js.map +1 -0
  612. package/features/confirmation/index.d.ts +3 -0
  613. package/features/confirmation/index.js +3 -0
  614. package/features/dateFormatter/DefaultDateFormatter.d.ts +8 -0
  615. package/features/dateFormatter/DefaultDateFormatter.js +25 -0
  616. package/features/dateFormatter/DefaultDateFormatter.js.map +1 -0
  617. package/features/dateFormatter/abstractions.d.ts +13 -0
  618. package/features/dateFormatter/abstractions.js +5 -0
  619. package/features/dateFormatter/abstractions.js.map +1 -0
  620. package/features/dateFormatter/feature.d.ts +3 -0
  621. package/features/dateFormatter/feature.js +17 -0
  622. package/features/dateFormatter/feature.js.map +1 -0
  623. package/features/dateFormatter/formatUtcOffset.d.ts +1 -0
  624. package/features/dateFormatter/formatUtcOffset.js +11 -0
  625. package/features/dateFormatter/formatUtcOffset.js.map +1 -0
  626. package/features/dateFormatter/index.d.ts +4 -0
  627. package/features/dateFormatter/index.js +4 -0
  628. package/features/dateFormatter/useDateFormatter.d.ts +5 -0
  629. package/features/dateFormatter/useDateFormatter.js +8 -0
  630. package/features/dateFormatter/useDateFormatter.js.map +1 -0
  631. package/features/formModel/AccessControlRuleEvaluator.d.ts +12 -0
  632. package/features/formModel/AccessControlRuleEvaluator.js +30 -0
  633. package/features/formModel/AccessControlRuleEvaluator.js.map +1 -0
  634. package/features/formModel/AccessControlRuleEvaluator.test.d.ts +1 -0
  635. package/features/formModel/AccessControlRuleEvaluator.test.js +219 -0
  636. package/features/formModel/AccessControlRuleEvaluator.test.js.map +1 -0
  637. package/features/formModel/ConditionRuleEvaluator.js +34 -4
  638. package/features/formModel/ConditionRuleEvaluator.js.map +1 -1
  639. package/features/formModel/Field.d.ts +12 -5
  640. package/features/formModel/Field.js +96 -13
  641. package/features/formModel/Field.js.map +1 -1
  642. package/features/formModel/FieldBuilder.d.ts +7 -3
  643. package/features/formModel/FieldBuilder.js +17 -2
  644. package/features/formModel/FieldBuilder.js.map +1 -1
  645. package/features/formModel/FieldBuilder.test.js +6 -4
  646. package/features/formModel/FieldBuilder.test.js.map +1 -1
  647. package/features/formModel/FocusManager.js +10 -3
  648. package/features/formModel/FocusManager.js.map +1 -1
  649. package/features/formModel/FormErrors.d.ts +3 -2
  650. package/features/formModel/FormErrors.js +4 -3
  651. package/features/formModel/FormErrors.js.map +1 -1
  652. package/features/formModel/FormModel.d.ts +8 -2
  653. package/features/formModel/FormModel.js +40 -19
  654. package/features/formModel/FormModel.js.map +1 -1
  655. package/features/formModel/FormModel.test.js +514 -23
  656. package/features/formModel/FormModel.test.js.map +1 -1
  657. package/features/formModel/FormView.d.ts +4 -8
  658. package/features/formModel/FormView.js +25 -6
  659. package/features/formModel/FormView.js.map +1 -1
  660. package/features/formModel/LayoutBuilderFactory.d.ts +3 -2
  661. package/features/formModel/LayoutBuilderFactory.js +58 -5
  662. package/features/formModel/LayoutBuilderFactory.js.map +1 -1
  663. package/features/formModel/LayoutMutator.js +6 -0
  664. package/features/formModel/LayoutMutator.js.map +1 -1
  665. package/features/formModel/LayoutResolver.d.ts +1 -0
  666. package/features/formModel/LayoutResolver.js +27 -6
  667. package/features/formModel/LayoutResolver.js.map +1 -1
  668. package/features/formModel/ObjectField.d.ts +5 -2
  669. package/features/formModel/ObjectField.js +68 -3
  670. package/features/formModel/ObjectField.js.map +1 -1
  671. package/features/formModel/PresenterErrors.d.ts +2 -2
  672. package/features/formModel/Rules.test.js +224 -16
  673. package/features/formModel/Rules.test.js.map +1 -1
  674. package/features/formModel/abstractions.d.ts +87 -21
  675. package/features/formModel/abstractions.js.map +1 -1
  676. package/features/formModel/createFieldRenderer.d.ts +42 -0
  677. package/features/formModel/createFieldRenderer.js +34 -10
  678. package/features/formModel/createFieldRenderer.js.map +1 -1
  679. package/features/formModel/demo/FormModelDemo.d.ts +2 -2
  680. package/features/formModel/demo/FormModelPhase11Presenter.js +5 -5
  681. package/features/formModel/demo/FormModelPhase11Presenter.js.map +1 -1
  682. package/features/formModel/feature.js +6 -1
  683. package/features/formModel/feature.js.map +1 -1
  684. package/features/formModel/fieldTypes/ObjectFieldType.js +2 -1
  685. package/features/formModel/fieldTypes/ObjectFieldType.js.map +1 -1
  686. package/features/formModel/fieldTypes/PasswordFieldType.d.ts +18 -0
  687. package/features/formModel/fieldTypes/PasswordFieldType.js +23 -0
  688. package/features/formModel/fieldTypes/PasswordFieldType.js.map +1 -0
  689. package/features/formModel/fieldTypes/PermissionsFieldType.d.ts +18 -0
  690. package/features/formModel/fieldTypes/PermissionsFieldType.js +27 -0
  691. package/features/formModel/fieldTypes/PermissionsFieldType.js.map +1 -0
  692. package/features/formModel/fieldTypes/RolesMultiSelectFieldType.d.ts +18 -0
  693. package/features/formModel/fieldTypes/RolesMultiSelectFieldType.js +24 -0
  694. package/features/formModel/fieldTypes/RolesMultiSelectFieldType.js.map +1 -0
  695. package/features/formModel/fieldTypes/index.d.ts +3 -0
  696. package/features/formModel/fieldTypes/index.js +3 -0
  697. package/features/formModel/hasSubtreeFocusRequest.d.ts +12 -0
  698. package/features/formModel/hasSubtreeFocusRequest.js +15 -0
  699. package/features/formModel/hasSubtreeFocusRequest.js.map +1 -0
  700. package/features/formModel/index.d.ts +3 -3
  701. package/features/formModel/index.js +4 -4
  702. package/features/formModel/renderers.d.ts +5 -0
  703. package/features/formModel/renderers.js +5 -0
  704. package/features/listCache/ListCache.d.ts +4 -1
  705. package/features/listCache/ListCache.js +13 -3
  706. package/features/listCache/ListCache.js.map +1 -1
  707. package/features/notifications/Notifications.d.ts +16 -0
  708. package/features/notifications/Notifications.js +39 -0
  709. package/features/notifications/Notifications.js.map +1 -0
  710. package/features/notifications/NotificationsPresenter.d.ts +11 -0
  711. package/features/notifications/NotificationsPresenter.js +27 -0
  712. package/features/notifications/NotificationsPresenter.js.map +1 -0
  713. package/features/notifications/NotificationsRenderer.d.ts +7 -0
  714. package/features/notifications/NotificationsRenderer.js +38 -0
  715. package/features/notifications/NotificationsRenderer.js.map +1 -0
  716. package/features/notifications/abstractions.d.ts +38 -0
  717. package/features/notifications/abstractions.js +6 -0
  718. package/features/notifications/abstractions.js.map +1 -0
  719. package/features/notifications/feature.d.ts +4 -0
  720. package/features/notifications/feature.js +20 -0
  721. package/features/notifications/feature.js.map +1 -0
  722. package/features/notifications/index.d.ts +3 -0
  723. package/features/notifications/index.js +3 -0
  724. package/features/wcp/ReactLicense.d.ts +9 -0
  725. package/features/wcp/ReactLicense.js +27 -0
  726. package/features/wcp/ReactLicense.js.map +1 -1
  727. package/hooks/index.d.ts +4 -0
  728. package/hooks/index.js +4 -0
  729. package/hooks/useDrawer.d.ts +9 -0
  730. package/hooks/useDrawer.js +19 -0
  731. package/hooks/useDrawer.js.map +1 -0
  732. package/hooks/useHotkeys.js +6 -6
  733. package/hooks/useHotkeys.js.map +1 -1
  734. package/hooks/useNamedConfirmationDialog.d.ts +9 -0
  735. package/hooks/useNamedConfirmationDialog.js +20 -0
  736. package/hooks/useNamedConfirmationDialog.js.map +1 -0
  737. package/hooks/useOpenDrawer.d.ts +7 -0
  738. package/hooks/useOpenDrawer.js +18 -0
  739. package/hooks/useOpenDrawer.js.map +1 -0
  740. package/hooks/useSnackbar.js.map +1 -1
  741. package/index.d.ts +42 -1
  742. package/index.js +44 -7
  743. package/modules/AccessManagementExtension.d.ts +2 -0
  744. package/modules/AccessManagementExtension.js +145 -0
  745. package/modules/AccessManagementExtension.js.map +1 -0
  746. package/package.json +36 -34
  747. package/presentation/accessManagement/SecurityPermissions.d.ts +2 -0
  748. package/presentation/accessManagement/SecurityPermissions.js +54 -0
  749. package/presentation/accessManagement/SecurityPermissions.js.map +1 -0
  750. package/presentation/accessManagement/apiKeys/ApiKeysDataSource.d.ts +13 -0
  751. package/presentation/accessManagement/apiKeys/ApiKeysDataSource.js +23 -0
  752. package/presentation/accessManagement/apiKeys/ApiKeysDataSource.js.map +1 -0
  753. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.d.ts +38 -0
  754. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js +193 -0
  755. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js.map +1 -0
  756. package/presentation/accessManagement/apiKeys/abstractions.d.ts +25 -0
  757. package/presentation/accessManagement/apiKeys/abstractions.js +5 -0
  758. package/presentation/accessManagement/apiKeys/abstractions.js.map +1 -0
  759. package/presentation/accessManagement/apiKeys/components/ApiKeysView.d.ts +4 -0
  760. package/presentation/accessManagement/apiKeys/components/ApiKeysView.js +234 -0
  761. package/presentation/accessManagement/apiKeys/components/ApiKeysView.js.map +1 -0
  762. package/presentation/accessManagement/apiKeys/feature.d.ts +3 -0
  763. package/presentation/accessManagement/apiKeys/feature.js +17 -0
  764. package/presentation/accessManagement/apiKeys/feature.js.map +1 -0
  765. package/presentation/accessManagement/roles/RolesDataSource.d.ts +13 -0
  766. package/presentation/accessManagement/roles/RolesDataSource.js +23 -0
  767. package/presentation/accessManagement/roles/RolesDataSource.js.map +1 -0
  768. package/presentation/accessManagement/roles/RolesPresenter.d.ts +38 -0
  769. package/presentation/accessManagement/roles/RolesPresenter.js +201 -0
  770. package/presentation/accessManagement/roles/RolesPresenter.js.map +1 -0
  771. package/presentation/accessManagement/roles/abstractions.d.ts +27 -0
  772. package/presentation/accessManagement/roles/abstractions.js +5 -0
  773. package/presentation/accessManagement/roles/abstractions.js.map +1 -0
  774. package/presentation/accessManagement/roles/components/RolesView.d.ts +4 -0
  775. package/presentation/accessManagement/roles/components/RolesView.js +232 -0
  776. package/presentation/accessManagement/roles/components/RolesView.js.map +1 -0
  777. package/presentation/accessManagement/roles/feature.d.ts +3 -0
  778. package/presentation/accessManagement/roles/feature.js +17 -0
  779. package/presentation/accessManagement/roles/feature.js.map +1 -0
  780. package/presentation/accessManagement/routes.d.ts +21 -0
  781. package/presentation/accessManagement/routes.js +36 -0
  782. package/presentation/accessManagement/routes.js.map +1 -0
  783. package/presentation/accessManagement/teams/TeamsDataSource.d.ts +13 -0
  784. package/presentation/accessManagement/teams/TeamsDataSource.js +23 -0
  785. package/presentation/accessManagement/teams/TeamsDataSource.js.map +1 -0
  786. package/presentation/accessManagement/teams/TeamsPresenter.d.ts +39 -0
  787. package/presentation/accessManagement/teams/TeamsPresenter.js +200 -0
  788. package/presentation/accessManagement/teams/TeamsPresenter.js.map +1 -0
  789. package/presentation/accessManagement/teams/abstractions.d.ts +26 -0
  790. package/presentation/accessManagement/teams/abstractions.js +5 -0
  791. package/presentation/accessManagement/teams/abstractions.js.map +1 -0
  792. package/presentation/accessManagement/teams/components/TeamsView.d.ts +4 -0
  793. package/presentation/accessManagement/teams/components/TeamsView.js +214 -0
  794. package/presentation/accessManagement/teams/components/TeamsView.js.map +1 -0
  795. package/presentation/accessManagement/teams/feature.d.ts +3 -0
  796. package/presentation/accessManagement/teams/feature.js +17 -0
  797. package/presentation/accessManagement/teams/feature.js.map +1 -0
  798. package/presentation/commandPalette/CommandPalettePresenter.d.ts +16 -0
  799. package/presentation/commandPalette/CommandPalettePresenter.js +71 -0
  800. package/presentation/commandPalette/CommandPalettePresenter.js.map +1 -0
  801. package/presentation/commandPalette/abstractions.d.ts +62 -0
  802. package/presentation/commandPalette/abstractions.js +7 -0
  803. package/presentation/commandPalette/abstractions.js.map +1 -0
  804. package/presentation/commandPalette/commands/CopyCurrentUrlCommand.d.ts +15 -0
  805. package/presentation/commandPalette/commands/CopyCurrentUrlCommand.js +33 -0
  806. package/presentation/commandPalette/commands/CopyCurrentUrlCommand.js.map +1 -0
  807. package/presentation/commandPalette/commands/SendMessageCommand.d.ts +23 -0
  808. package/presentation/commandPalette/commands/SendMessageCommand.js +66 -0
  809. package/presentation/commandPalette/commands/SendMessageCommand.js.map +1 -0
  810. package/presentation/commandPalette/commands/SignOutCommand.d.ts +18 -0
  811. package/presentation/commandPalette/commands/SignOutCommand.js +37 -0
  812. package/presentation/commandPalette/commands/SignOutCommand.js.map +1 -0
  813. package/presentation/commandPalette/commands/feature.d.ts +5 -0
  814. package/presentation/commandPalette/commands/feature.js +15 -0
  815. package/presentation/commandPalette/commands/feature.js.map +1 -0
  816. package/presentation/commandPalette/feature.d.ts +3 -0
  817. package/presentation/commandPalette/feature.js +17 -0
  818. package/presentation/commandPalette/feature.js.map +1 -0
  819. package/presentation/commandPalette/index.d.ts +3 -0
  820. package/presentation/commandPalette/index.js +2 -0
  821. package/presentation/installation/components/SystemInstaller/SystemInstaller.d.ts +2 -2
  822. package/presentation/installation/components/SystemInstaller/SystemInstaller.js +3 -1
  823. package/presentation/installation/components/SystemInstaller/SystemInstaller.js.map +1 -1
  824. package/presentation/listPresenter/FolderAwareDataSource.d.ts +55 -0
  825. package/presentation/listPresenter/FolderAwareDataSource.js +136 -0
  826. package/presentation/listPresenter/FolderAwareDataSource.js.map +1 -0
  827. package/presentation/listPresenter/ListPresenter.d.ts +4 -0
  828. package/presentation/listPresenter/ListPresenter.js +30 -4
  829. package/presentation/listPresenter/ListPresenter.js.map +1 -1
  830. package/presentation/listPresenter/QueryMatcher.d.ts +79 -0
  831. package/presentation/listPresenter/QueryMatcher.js +129 -0
  832. package/presentation/listPresenter/QueryMatcher.js.map +1 -0
  833. package/presentation/listPresenter/QueryMatcher.test.d.ts +1 -0
  834. package/presentation/listPresenter/QueryMatcher.test.js +345 -0
  835. package/presentation/listPresenter/QueryMatcher.test.js.map +1 -0
  836. package/presentation/listPresenter/SimpleDataSource.d.ts +15 -0
  837. package/presentation/listPresenter/SimpleDataSource.js +70 -0
  838. package/presentation/listPresenter/SimpleDataSource.js.map +1 -0
  839. package/presentation/listPresenter/abstractions.d.ts +9 -0
  840. package/presentation/listPresenter/abstractions.js.map +1 -1
  841. package/presentation/listPresenter/index.d.ts +5 -0
  842. package/presentation/listPresenter/index.js +3 -0
  843. package/presentation/security/components/HasPermission.d.ts +1 -1
  844. package/presentation/sortable/SortablePresenter.d.ts +23 -0
  845. package/presentation/sortable/SortablePresenter.js +175 -0
  846. package/presentation/sortable/SortablePresenter.js.map +1 -0
  847. package/presentation/sortable/abstractions.d.ts +24 -0
  848. package/presentation/sortable/abstractions.js +5 -0
  849. package/presentation/sortable/abstractions.js.map +1 -0
  850. package/presentation/sortable/feature.d.ts +1 -0
  851. package/presentation/sortable/feature.js +11 -0
  852. package/presentation/sortable/feature.js.map +1 -0
  853. package/presentation/sortable/index.d.ts +2 -0
  854. package/presentation/sortable/index.js +2 -0
  855. package/presentation/trashBin/TrashBinDataSource.d.ts +16 -0
  856. package/presentation/trashBin/TrashBinDataSource.js +82 -0
  857. package/presentation/trashBin/TrashBinDataSource.js.map +1 -0
  858. package/presentation/trashBin/TrashBinPresenter.d.ts +20 -0
  859. package/presentation/trashBin/TrashBinPresenter.js +114 -0
  860. package/presentation/trashBin/TrashBinPresenter.js.map +1 -0
  861. package/presentation/trashBin/abstractions.d.ts +105 -0
  862. package/presentation/trashBin/abstractions.js +9 -0
  863. package/presentation/trashBin/abstractions.js.map +1 -0
  864. package/presentation/trashBin/components/Actions/DeleteItemAction.d.ts +2 -0
  865. package/presentation/trashBin/components/Actions/DeleteItemAction.js +20 -0
  866. package/presentation/trashBin/components/Actions/DeleteItemAction.js.map +1 -0
  867. package/presentation/trashBin/components/Actions/RestoreItemAction.d.ts +2 -0
  868. package/presentation/trashBin/components/Actions/RestoreItemAction.js +19 -0
  869. package/presentation/trashBin/components/Actions/RestoreItemAction.js.map +1 -0
  870. package/presentation/trashBin/components/Actions/index.d.ts +2 -0
  871. package/presentation/trashBin/components/Actions/index.js +2 -0
  872. package/presentation/trashBin/components/BulkActions/DeleteItems.d.ts +4 -0
  873. package/presentation/trashBin/components/BulkActions/DeleteItems.js +72 -0
  874. package/presentation/trashBin/components/BulkActions/DeleteItems.js.map +1 -0
  875. package/presentation/trashBin/components/BulkActions/RestoreItems.d.ts +4 -0
  876. package/presentation/trashBin/components/BulkActions/RestoreItems.js +81 -0
  877. package/presentation/trashBin/components/BulkActions/RestoreItems.js.map +1 -0
  878. package/presentation/trashBin/components/BulkActions/RestoreItemsReportMessage.d.ts +5 -0
  879. package/presentation/trashBin/components/BulkActions/RestoreItemsReportMessage.js +12 -0
  880. package/presentation/trashBin/components/BulkActions/RestoreItemsReportMessage.js.map +1 -0
  881. package/presentation/trashBin/components/BulkActions/index.d.ts +2 -0
  882. package/presentation/trashBin/components/BulkActions/index.js +2 -0
  883. package/presentation/trashBin/components/Cells/CellActions.d.ts +2 -0
  884. package/presentation/trashBin/components/Cells/CellActions.js +18 -0
  885. package/presentation/trashBin/components/Cells/CellActions.js.map +1 -0
  886. package/presentation/trashBin/components/Cells/CellCreatedBy.d.ts +2 -0
  887. package/presentation/trashBin/components/Cells/CellCreatedBy.js +11 -0
  888. package/presentation/trashBin/components/Cells/CellCreatedBy.js.map +1 -0
  889. package/presentation/trashBin/components/Cells/CellDeletedBy.d.ts +2 -0
  890. package/presentation/trashBin/components/Cells/CellDeletedBy.js +11 -0
  891. package/presentation/trashBin/components/Cells/CellDeletedBy.js.map +1 -0
  892. package/presentation/trashBin/components/Cells/CellDeletedOn.d.ts +2 -0
  893. package/presentation/trashBin/components/Cells/CellDeletedOn.js +14 -0
  894. package/presentation/trashBin/components/Cells/CellDeletedOn.js.map +1 -0
  895. package/presentation/trashBin/components/Cells/CellTitle.d.ts +2 -0
  896. package/presentation/trashBin/components/Cells/CellTitle.js +21 -0
  897. package/presentation/trashBin/components/Cells/CellTitle.js.map +1 -0
  898. package/presentation/trashBin/components/Cells/index.d.ts +5 -0
  899. package/presentation/trashBin/components/Cells/index.js +5 -0
  900. package/presentation/trashBin/components/TrashBinConfigs.d.ts +2 -0
  901. package/presentation/trashBin/components/TrashBinConfigs.js +55 -0
  902. package/presentation/trashBin/components/TrashBinConfigs.js.map +1 -0
  903. package/presentation/trashBin/components/TrashBinOverlay.d.ts +12 -0
  904. package/presentation/trashBin/components/TrashBinOverlay.js +139 -0
  905. package/presentation/trashBin/components/TrashBinOverlay.js.map +1 -0
  906. package/presentation/trashBin/components/TrashBinTable.d.ts +2 -0
  907. package/presentation/trashBin/components/TrashBinTable.js +48 -0
  908. package/presentation/trashBin/components/TrashBinTable.js.map +1 -0
  909. package/presentation/trashBin/configs/Browser/BulkAction.d.ts +34 -0
  910. package/presentation/trashBin/configs/Browser/BulkAction.js +59 -0
  911. package/presentation/trashBin/configs/Browser/BulkAction.js.map +1 -0
  912. package/presentation/trashBin/configs/Browser/EntryAction.d.ts +18 -0
  913. package/presentation/trashBin/configs/Browser/EntryAction.js +36 -0
  914. package/presentation/trashBin/configs/Browser/EntryAction.js.map +1 -0
  915. package/presentation/trashBin/configs/Browser/Table/Column.d.ts +16 -0
  916. package/presentation/trashBin/configs/Browser/Table/Column.js +9 -0
  917. package/presentation/trashBin/configs/Browser/Table/Column.js.map +1 -0
  918. package/presentation/trashBin/configs/Browser/Table/Sorting.d.ts +5 -0
  919. package/presentation/trashBin/configs/Browser/Table/Sorting.js +6 -0
  920. package/presentation/trashBin/configs/Browser/Table/Sorting.js.map +1 -0
  921. package/presentation/trashBin/configs/Browser/Table/index.d.ts +18 -0
  922. package/presentation/trashBin/configs/Browser/Table/index.js +9 -0
  923. package/presentation/trashBin/configs/Browser/Table/index.js.map +1 -0
  924. package/presentation/trashBin/configs/Browser/index.d.ts +40 -0
  925. package/presentation/trashBin/configs/Browser/index.js +11 -0
  926. package/presentation/trashBin/configs/Browser/index.js.map +1 -0
  927. package/presentation/trashBin/configs/TrashBinListConfig.d.ts +46 -0
  928. package/presentation/trashBin/configs/TrashBinListConfig.js +43 -0
  929. package/presentation/trashBin/configs/TrashBinListConfig.js.map +1 -0
  930. package/presentation/trashBin/configs/index.d.ts +1 -0
  931. package/presentation/trashBin/configs/index.js +1 -0
  932. package/presentation/trashBin/feature.d.ts +3 -0
  933. package/presentation/trashBin/feature.js +17 -0
  934. package/presentation/trashBin/feature.js.map +1 -0
  935. package/presentation/trashBin/hooks/index.d.ts +4 -0
  936. package/presentation/trashBin/hooks/index.js +4 -0
  937. package/presentation/trashBin/hooks/useDeleteTrashBinItem.d.ts +8 -0
  938. package/presentation/trashBin/hooks/useDeleteTrashBinItem.js +33 -0
  939. package/presentation/trashBin/hooks/useDeleteTrashBinItem.js.map +1 -0
  940. package/presentation/trashBin/hooks/useRestoreTrashBinItem.d.ts +8 -0
  941. package/presentation/trashBin/hooks/useRestoreTrashBinItem.js +35 -0
  942. package/presentation/trashBin/hooks/useRestoreTrashBinItem.js.map +1 -0
  943. package/presentation/trashBin/hooks/useTrashBinItem.d.ts +11 -0
  944. package/presentation/trashBin/hooks/useTrashBinItem.js +7 -0
  945. package/presentation/trashBin/hooks/useTrashBinItem.js.map +1 -0
  946. package/presentation/trashBin/hooks/useTrashBinPresenter.d.ts +13 -0
  947. package/presentation/trashBin/hooks/useTrashBinPresenter.js +7 -0
  948. package/presentation/trashBin/hooks/useTrashBinPresenter.js.map +1 -0
  949. package/presentation/trashBin/index.d.ts +6 -0
  950. package/presentation/trashBin/index.js +6 -0
  951. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone.d.ts +0 -10
  952. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone.js +0 -97
  953. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone.js.map +0 -1
  954. package/components/RoleAutocomplete/graphql.d.ts +0 -1
  955. package/components/RoleAutocomplete/graphql.js +0 -19
  956. package/components/RoleAutocomplete/graphql.js.map +0 -1
  957. package/components/RoleAutocomplete/index.d.ts +0 -7
  958. package/components/RoleAutocomplete/index.js +0 -26
  959. package/components/RoleAutocomplete/index.js.map +0 -1
  960. package/features/debugger/Debugger.d.ts +0 -8
  961. package/features/debugger/Debugger.js +0 -25
  962. package/features/debugger/Debugger.js.map +0 -1
  963. package/features/debugger/DebuggerIndicator.d.ts +0 -16
  964. package/features/debugger/DebuggerIndicator.js +0 -31
  965. package/features/debugger/DebuggerIndicator.js.map +0 -1
  966. package/features/debugger/DebuggerStore.d.ts +0 -55
  967. package/features/debugger/DebuggerStore.js +0 -65
  968. package/features/debugger/DebuggerStore.js.map +0 -1
  969. package/features/debugger/DebuggerView.d.ts +0 -4
  970. package/features/debugger/DebuggerView.js +0 -49
  971. package/features/debugger/DebuggerView.js.map +0 -1
  972. package/features/debugger/GraphQLExtensionsDebugHandler.d.ts +0 -15
  973. package/features/debugger/GraphQLExtensionsDebugHandler.js +0 -15
  974. package/features/debugger/GraphQLExtensionsDebugHandler.js.map +0 -1
  975. package/features/debugger/debuggerLink.d.ts +0 -12
  976. package/features/debugger/debuggerLink.js +0 -10
  977. package/features/debugger/debuggerLink.js.map +0 -1
  978. package/features/debugger/feature.d.ts +0 -1
  979. package/features/debugger/feature.js +0 -18
  980. package/features/debugger/feature.js.map +0 -1
  981. package/features/debugger/index.d.ts +0 -7
  982. package/features/debugger/index.js +0 -7
  983. package/features/debugger/permissions.d.ts +0 -68
  984. package/features/debugger/permissions.js +0 -27
  985. package/features/debugger/permissions.js.map +0 -1
  986. package/features/debugger/report.d.ts +0 -7
  987. package/features/debugger/report.js +0 -22
  988. package/features/debugger/report.js.map +0 -1
  989. package/features/debugger/routes.d.ts +0 -4
  990. package/features/debugger/routes.js +0 -10
  991. package/features/debugger/routes.js.map +0 -1
  992. package/plugins/MenuPlugin.d.ts +0 -37
  993. package/plugins/MenuPlugin.js +0 -20
  994. package/plugins/MenuPlugin.js.map +0 -1
@@ -0,0 +1,55 @@
1
+ import type { IDataSource, IDataSourceQuery, IDataSourceMeta } from "./abstractions.js";
2
+ import { QueryMatcher } from "./QueryMatcher.js";
3
+ export interface FolderAwareDataSourceConfig<TRow> {
4
+ locationField?: string;
5
+ registeredFilterNames?: string[];
6
+ getDescendantFolders?: {
7
+ execute(folderId: string): {
8
+ id: string;
9
+ }[];
10
+ };
11
+ keyField: keyof TRow & string;
12
+ localFilters?: Record<string, (item: TRow, value: unknown) => boolean>;
13
+ /**
14
+ * Reads the value of a sort field from an item, for ordering rows locally.
15
+ * See `QueryMatcherConfig.getSortValue`.
16
+ */
17
+ getSortValue?: (item: TRow, field: string) => unknown;
18
+ }
19
+ export interface FetchParams {
20
+ where?: Record<string, unknown>;
21
+ sort?: string[];
22
+ search?: string;
23
+ limit?: number;
24
+ after?: string;
25
+ }
26
+ export interface FetchResult<TRow> {
27
+ data: TRow[];
28
+ meta: {
29
+ cursor: string | null;
30
+ hasMoreItems: boolean;
31
+ totalCount: number;
32
+ };
33
+ }
34
+ export declare abstract class FolderAwareDataSource<TRow> implements IDataSource<TRow> {
35
+ private _meta;
36
+ private _loading;
37
+ private _locationField;
38
+ private _registeredFilterNames;
39
+ private _getDescendantFolders;
40
+ private _keyField;
41
+ protected queryMatcher: QueryMatcher<TRow>;
42
+ constructor(config: FolderAwareDataSourceConfig<TRow>);
43
+ abstract get rows(): TRow[];
44
+ abstract fetch(params: FetchParams): Promise<FetchResult<TRow>>;
45
+ protected onQueryResult(_data: TRow[]): void;
46
+ protected onLoadMoreResult(_data: TRow[]): void;
47
+ get meta(): IDataSourceMeta;
48
+ get loading(): boolean;
49
+ query(params: IDataSourceQuery): Promise<void>;
50
+ loadMore(params: IDataSourceQuery): Promise<void>;
51
+ protected customizeWhere(_where: Record<string, unknown>, _filters: Record<string, unknown>): void;
52
+ protected shouldExpandFolders(_filters: Record<string, unknown>): boolean;
53
+ private buildWhere;
54
+ private buildSort;
55
+ }
@@ -0,0 +1,136 @@
1
+ import { action, computed, makeObservable, observable, runInAction } from "mobx";
2
+ import { QueryMatcher } from "./QueryMatcher.js";
3
+ class FolderAwareDataSource {
4
+ constructor(config){
5
+ this._meta = {
6
+ cursor: null,
7
+ hasMoreItems: false,
8
+ totalCount: 0
9
+ };
10
+ this._loading = false;
11
+ this._locationField = config.locationField ?? "location";
12
+ this._registeredFilterNames = new Set([
13
+ ...config.registeredFilterNames ?? [],
14
+ ...Object.keys(config.localFilters ?? {})
15
+ ]);
16
+ this._getDescendantFolders = config.getDescendantFolders;
17
+ this._keyField = config.keyField;
18
+ const locationField = this._locationField;
19
+ const localFilters = {
20
+ folderId: (item, value)=>{
21
+ const folderId = value;
22
+ const location = item[locationField];
23
+ const itemFolderId = location?.folderId;
24
+ if (folderId && "root" !== folderId) return itemFolderId === folderId;
25
+ return !itemFolderId || "root" === itemFolderId;
26
+ },
27
+ ...config.localFilters
28
+ };
29
+ this.queryMatcher = new QueryMatcher({
30
+ keyField: config.keyField,
31
+ localFilters,
32
+ getSortValue: config.getSortValue
33
+ });
34
+ makeObservable(this, {
35
+ _meta: observable,
36
+ _loading: observable,
37
+ meta: computed,
38
+ loading: computed,
39
+ query: action,
40
+ loadMore: action
41
+ });
42
+ }
43
+ onQueryResult(_data) {}
44
+ onLoadMoreResult(_data) {}
45
+ get meta() {
46
+ return this._meta;
47
+ }
48
+ get loading() {
49
+ return this._loading;
50
+ }
51
+ async query(params) {
52
+ this._loading = true;
53
+ try {
54
+ const result = await this.fetch({
55
+ where: this.buildWhere(params),
56
+ sort: this.buildSort(params),
57
+ search: params.search,
58
+ limit: params.limit,
59
+ after: params.cursor
60
+ });
61
+ runInAction(()=>{
62
+ this.onQueryResult(result.data);
63
+ this.queryMatcher.updateFromQuery(params, result.data.map((item)=>String(item[this._keyField])), result.meta.hasMoreItems);
64
+ this._meta = {
65
+ cursor: result.meta.cursor,
66
+ hasMoreItems: result.meta.hasMoreItems,
67
+ totalCount: result.meta.totalCount
68
+ };
69
+ });
70
+ } finally{
71
+ runInAction(()=>{
72
+ this._loading = false;
73
+ });
74
+ }
75
+ }
76
+ async loadMore(params) {
77
+ if (!this._meta.hasMoreItems || this._loading) return;
78
+ this._loading = true;
79
+ try {
80
+ const result = await this.fetch({
81
+ where: this.buildWhere(params),
82
+ sort: this.buildSort(params),
83
+ search: params.search,
84
+ limit: params.limit,
85
+ after: this._meta.cursor ?? void 0
86
+ });
87
+ runInAction(()=>{
88
+ this.onLoadMoreResult(result.data);
89
+ this.queryMatcher.appendResultKeys(result.data.map((item)=>String(item[this._keyField])), result.meta.hasMoreItems);
90
+ this._meta = {
91
+ cursor: result.meta.cursor,
92
+ hasMoreItems: result.meta.hasMoreItems,
93
+ totalCount: result.meta.totalCount
94
+ };
95
+ });
96
+ } finally{
97
+ runInAction(()=>{
98
+ this._loading = false;
99
+ });
100
+ }
101
+ }
102
+ customizeWhere(_where, _filters) {}
103
+ shouldExpandFolders(_filters) {
104
+ return false;
105
+ }
106
+ buildWhere(params) {
107
+ const where = {};
108
+ const filters = params.filters ?? {};
109
+ const folderId = filters.folderId || "root";
110
+ const isRoot = "root" === folderId;
111
+ const hasAdvancedFilters = Object.keys(filters).some((k)=>"folderId" !== k && !this._registeredFilterNames.has(k));
112
+ const isSearching = !!params.search || hasAdvancedFilters || this.shouldExpandFolders(filters);
113
+ if (isSearching && isRoot) ;
114
+ else if (isSearching && this._getDescendantFolders) {
115
+ const descendants = this._getDescendantFolders.execute(folderId);
116
+ const folderIds = descendants.map((f)=>f.id);
117
+ where[this._locationField] = {
118
+ folderId_in: folderIds
119
+ };
120
+ } else where[this._locationField] = {
121
+ folderId
122
+ };
123
+ for (const [key, value] of Object.entries(filters))if ("folderId" !== key) where[key] = value;
124
+ this.customizeWhere(where, filters);
125
+ return Object.keys(where).length > 0 ? where : void 0;
126
+ }
127
+ buildSort(params) {
128
+ if (!params.sort) return;
129
+ return [
130
+ `${params.sort.field}_${params.sort.direction}`
131
+ ];
132
+ }
133
+ }
134
+ export { FolderAwareDataSource };
135
+
136
+ //# sourceMappingURL=FolderAwareDataSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/listPresenter/FolderAwareDataSource.js","sources":["../../../src/presentation/listPresenter/FolderAwareDataSource.ts"],"sourcesContent":["import { makeObservable, observable, computed, runInAction, action } from \"mobx\";\nimport type { IDataSource, IDataSourceQuery, IDataSourceMeta } from \"./abstractions.js\";\nimport { QueryMatcher } from \"./QueryMatcher.js\";\n\nexport interface FolderAwareDataSourceConfig<TRow> {\n locationField?: string;\n registeredFilterNames?: string[];\n getDescendantFolders?: { execute(folderId: string): { id: string }[] };\n keyField: keyof TRow & string;\n localFilters?: Record<string, (item: TRow, value: unknown) => boolean>;\n /**\n * Reads the value of a sort field from an item, for ordering rows locally.\n * See `QueryMatcherConfig.getSortValue`.\n */\n getSortValue?: (item: TRow, field: string) => unknown;\n}\n\nexport interface FetchParams {\n where?: Record<string, unknown>;\n sort?: string[];\n search?: string;\n limit?: number;\n after?: string;\n}\n\nexport interface FetchResult<TRow> {\n data: TRow[];\n meta: { cursor: string | null; hasMoreItems: boolean; totalCount: number };\n}\n\nexport abstract class FolderAwareDataSource<TRow> implements IDataSource<TRow> {\n private _meta: IDataSourceMeta = { cursor: null, hasMoreItems: false, totalCount: 0 };\n private _loading = false;\n private _locationField: string;\n private _registeredFilterNames: Set<string>;\n private _getDescendantFolders: FolderAwareDataSourceConfig<TRow>[\"getDescendantFolders\"];\n private _keyField: keyof TRow & string;\n protected queryMatcher: QueryMatcher<TRow>;\n\n constructor(config: FolderAwareDataSourceConfig<TRow>) {\n this._locationField = config.locationField ?? \"location\";\n this._registeredFilterNames = new Set([\n ...(config.registeredFilterNames ?? []),\n ...Object.keys(config.localFilters ?? {})\n ]);\n this._getDescendantFolders = config.getDescendantFolders;\n this._keyField = config.keyField;\n\n const locationField = this._locationField;\n const localFilters: Record<string, (item: TRow, value: unknown) => boolean> = {\n folderId: (item, value) => {\n const folderId = value as string;\n const location = (item as Record<string, any>)[locationField];\n const itemFolderId = location?.folderId as string | undefined;\n if (folderId && folderId !== \"root\") {\n return itemFolderId === folderId;\n }\n return !itemFolderId || itemFolderId === \"root\";\n },\n ...config.localFilters\n };\n\n this.queryMatcher = new QueryMatcher<TRow>({\n keyField: config.keyField,\n localFilters,\n getSortValue: config.getSortValue\n });\n\n makeObservable<FolderAwareDataSource<TRow>, \"_meta\" | \"_loading\">(this, {\n _meta: observable,\n _loading: observable,\n meta: computed,\n loading: computed,\n query: action,\n loadMore: action\n });\n }\n\n abstract get rows(): TRow[];\n\n abstract fetch(params: FetchParams): Promise<FetchResult<TRow>>;\n\n protected onQueryResult(_data: TRow[]): void {}\n\n protected onLoadMoreResult(_data: TRow[]): void {}\n\n get meta(): IDataSourceMeta {\n return this._meta;\n }\n\n get loading(): boolean {\n return this._loading;\n }\n\n async query(params: IDataSourceQuery): Promise<void> {\n this._loading = true;\n\n try {\n const result = await this.fetch({\n where: this.buildWhere(params),\n sort: this.buildSort(params),\n search: params.search,\n limit: params.limit,\n after: params.cursor\n });\n\n runInAction(() => {\n this.onQueryResult(result.data);\n this.queryMatcher.updateFromQuery(\n params,\n result.data.map(item => String(item[this._keyField])),\n result.meta.hasMoreItems\n );\n this._meta = {\n cursor: result.meta.cursor,\n hasMoreItems: result.meta.hasMoreItems,\n totalCount: result.meta.totalCount\n };\n });\n } finally {\n runInAction(() => {\n this._loading = false;\n });\n }\n }\n\n async loadMore(params: IDataSourceQuery): Promise<void> {\n if (!this._meta.hasMoreItems || this._loading) {\n return;\n }\n\n this._loading = true;\n\n try {\n const result = await this.fetch({\n where: this.buildWhere(params),\n sort: this.buildSort(params),\n search: params.search,\n limit: params.limit,\n after: this._meta.cursor ?? undefined\n });\n\n runInAction(() => {\n this.onLoadMoreResult(result.data);\n this.queryMatcher.appendResultKeys(\n result.data.map(item => String(item[this._keyField])),\n result.meta.hasMoreItems\n );\n this._meta = {\n cursor: result.meta.cursor,\n hasMoreItems: result.meta.hasMoreItems,\n totalCount: result.meta.totalCount\n };\n });\n } finally {\n runInAction(() => {\n this._loading = false;\n });\n }\n }\n\n protected customizeWhere(\n _where: Record<string, unknown>,\n _filters: Record<string, unknown>\n ): void {}\n\n protected shouldExpandFolders(_filters: Record<string, unknown>): boolean {\n return false;\n }\n\n private buildWhere(params: IDataSourceQuery): Record<string, unknown> | undefined {\n const where: Record<string, unknown> = {};\n const filters = params.filters ?? {};\n const folderId = (filters.folderId as string | undefined) || \"root\";\n const isRoot = folderId === \"root\";\n const hasAdvancedFilters = Object.keys(filters).some(\n k => k !== \"folderId\" && !this._registeredFilterNames.has(k)\n );\n const isSearching =\n !!params.search || hasAdvancedFilters || this.shouldExpandFolders(filters);\n\n if (isSearching && isRoot) {\n // Search/filter from root: no folder filter — search all folders.\n } else if (isSearching && this._getDescendantFolders) {\n const descendants = this._getDescendantFolders.execute(folderId);\n const folderIds = descendants.map(f => f.id);\n where[this._locationField] = { folderId_in: folderIds };\n } else {\n where[this._locationField] = { folderId };\n }\n\n for (const [key, value] of Object.entries(filters)) {\n if (key === \"folderId\") {\n continue;\n }\n where[key] = value;\n }\n\n this.customizeWhere(where, filters);\n\n return Object.keys(where).length > 0 ? where : undefined;\n }\n\n private buildSort(params: IDataSourceQuery): string[] | undefined {\n if (!params.sort) {\n return undefined;\n }\n return [`${params.sort.field}_${params.sort.direction}`];\n }\n}\n"],"names":["FolderAwareDataSource","config","Set","Object","locationField","localFilters","item","value","folderId","location","itemFolderId","QueryMatcher","makeObservable","observable","computed","action","_data","params","result","runInAction","String","undefined","_where","_filters","where","filters","isRoot","hasAdvancedFilters","k","isSearching","descendants","folderIds","f","key"],"mappings":"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"}
@@ -2,6 +2,7 @@ import { type IListPresenter, type IListPresenterConfig, type IListViewModel, ty
2
2
  declare class ListPresenterImpl<TRow> implements IListPresenter<TRow> {
3
3
  private _sort;
4
4
  private _filters;
5
+ private _initialFilterKeys;
5
6
  private _search;
6
7
  private _selection;
7
8
  private _error;
@@ -13,6 +14,8 @@ declare class ListPresenterImpl<TRow> implements IListPresenter<TRow> {
13
14
  private _limit;
14
15
  private _initialized;
15
16
  private _loadingMore;
17
+ private _showingFilters;
18
+ private _itemLabel;
16
19
  constructor();
17
20
  get vm(): IListViewModel<TRow>;
18
21
  actions: IListActions;
@@ -23,6 +26,7 @@ declare class ListPresenterImpl<TRow> implements IListPresenter<TRow> {
23
26
  private debouncedRequery;
24
27
  private clearDebounce;
25
28
  private getRowId;
29
+ private buildSelectionLabel;
26
30
  private toListError;
27
31
  }
28
32
  export declare const ListPresenter: typeof ListPresenterImpl & {
@@ -5,6 +5,7 @@ class ListPresenterImpl {
5
5
  constructor(){
6
6
  this._sort = null;
7
7
  this._filters = {};
8
+ this._initialFilterKeys = new Set();
8
9
  this._search = "";
9
10
  this._error = null;
10
11
  this._appliedQuery = null;
@@ -15,6 +16,11 @@ class ListPresenterImpl {
15
16
  this._limit = void 0;
16
17
  this._initialized = false;
17
18
  this._loadingMore = false;
19
+ this._showingFilters = false;
20
+ this._itemLabel = {
21
+ singular: "item",
22
+ plural: "items"
23
+ };
18
24
  this.actions = {
19
25
  search: {
20
26
  set: (query)=>{
@@ -64,6 +70,12 @@ class ListPresenterImpl {
64
70
  clearAll: ()=>{
65
71
  this._filters = {};
66
72
  this.requery();
73
+ },
74
+ show: ()=>{
75
+ this._showingFilters = true;
76
+ },
77
+ hide: ()=>{
78
+ this._showingFilters = false;
67
79
  }
68
80
  },
69
81
  selection: {
@@ -113,7 +125,7 @@ class ListPresenterImpl {
113
125
  totalCount: 0
114
126
  };
115
127
  const loading = ds ? ds.loading : false;
116
- const hasFilters = Object.keys(this._filters).length > 0 || this._search.length > 0;
128
+ const hasUserFilters = Object.keys(this._filters).some((k)=>!this._initialFilterKeys.has(k)) || this._search.length > 0;
117
129
  return {
118
130
  rows,
119
131
  sort: this._sort,
@@ -130,10 +142,12 @@ class ListPresenterImpl {
130
142
  selection: {
131
143
  selectedIds: this._selection.selectedIds,
132
144
  selectedCount: this._selection.selectedCount,
133
- allSelected: this._selection.allSelected
145
+ allSelected: this._selection.allSelected,
146
+ label: this.buildSelectionLabel()
134
147
  },
148
+ showingFilters: this._showingFilters,
135
149
  empty: 0 === rows.length && !loading,
136
- emptyWithFilters: 0 === rows.length && !loading && hasFilters,
150
+ emptyWithFilters: 0 === rows.length && !loading && hasUserFilters,
137
151
  error: this._error
138
152
  };
139
153
  }
@@ -141,9 +155,14 @@ class ListPresenterImpl {
141
155
  this._dataSource = config.dataSource;
142
156
  this._sort = config.initialSort ?? null;
143
157
  this._filters = config.initialFilters ?? {};
158
+ this._initialFilterKeys = new Set(Object.keys(this._filters));
144
159
  this._debounceMs = config.debounceMs ?? 300;
145
160
  this._limit = config.limit;
146
- this._search = "";
161
+ this._itemLabel = config.itemLabel ?? {
162
+ singular: "item",
163
+ plural: "items"
164
+ };
165
+ this._search = config.initialSearch ?? "";
147
166
  this._appliedQuery = null;
148
167
  this._selection.reset();
149
168
  this._initialized = true;
@@ -200,6 +219,13 @@ class ListPresenterImpl {
200
219
  getRowId(row) {
201
220
  return row.id;
202
221
  }
222
+ buildSelectionLabel() {
223
+ const { selectedCount, allSelected } = this._selection;
224
+ if (allSelected) return `all ${this._itemLabel.plural}`;
225
+ if (0 === selectedCount) return "";
226
+ const noun = 1 === selectedCount ? this._itemLabel.singular : this._itemLabel.plural;
227
+ return `${selectedCount} ${noun}`;
228
+ }
203
229
  toListError(err) {
204
230
  if (err instanceof Error) return {
205
231
  code: "UNKNOWN",
@@ -1 +1 @@
1
- {"version":3,"file":"presentation/listPresenter/ListPresenter.js","sources":["../../../src/presentation/listPresenter/ListPresenter.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, computed } from \"mobx\";\nimport {\n ListPresenter as Abstraction,\n type IListPresenter,\n type IListPresenterConfig,\n type IListViewModel,\n type IListActions,\n type IListError,\n type IDataSource,\n type IDataSourceQuery\n} from \"./abstractions.js\";\nimport { SelectionController } from \"./SelectionController.js\";\n\nclass ListPresenterImpl<TRow> implements IListPresenter<TRow> {\n private _sort: { field: string; direction: \"ASC\" | \"DESC\" } | null = null;\n private _filters: Record<string, unknown> = {};\n private _search = \"\";\n private _selection: SelectionController<TRow>;\n private _error: IListError | null = null;\n private _appliedQuery: IDataSourceQuery | null = null;\n private _dataSource: IDataSource<TRow> | null = null;\n private _debounceMs = 300;\n private _debounceTimer: ReturnType<typeof setTimeout> | null = null;\n private _requeryScheduled = false;\n private _limit: number | undefined = undefined;\n private _initialized = false;\n private _loadingMore = false;\n\n constructor() {\n this._selection = new SelectionController<TRow>(\n () => this._dataSource?.rows ?? [],\n row => this.getRowId(row)\n );\n\n makeAutoObservable<ListPresenterImpl<TRow>, \"_debounceTimer\">(this, {\n _debounceTimer: false,\n vm: computed\n });\n }\n\n get vm(): IListViewModel<TRow> {\n const ds = this._dataSource;\n const rows = ds ? ds.rows : [];\n const meta = ds ? ds.meta : { cursor: null, hasMoreItems: false, totalCount: 0 };\n const loading = ds ? ds.loading : false;\n const hasFilters = Object.keys(this._filters).length > 0 || this._search.length > 0;\n\n return {\n rows,\n sort: this._sort,\n filters: this._filters,\n search: this._search,\n appliedQuery: this._appliedQuery,\n pagination: {\n hasMore: meta.hasMoreItems,\n loading: loading && !this._loadingMore,\n loadingMore: this._loadingMore,\n totalCount: meta.totalCount,\n currentCount: rows.length\n },\n selection: {\n selectedIds: this._selection.selectedIds,\n selectedCount: this._selection.selectedCount,\n allSelected: this._selection.allSelected\n },\n empty: rows.length === 0 && !loading,\n emptyWithFilters: rows.length === 0 && !loading && hasFilters,\n error: this._error\n };\n }\n\n actions: IListActions = {\n search: {\n set: (query: string) => {\n if (this._search === query) {\n return;\n }\n this._search = query;\n this.debouncedRequery();\n },\n clear: () => {\n if (this._search === \"\") {\n return;\n }\n this._search = \"\";\n this.requery();\n }\n },\n sort: {\n set: (field: string, direction: \"ASC\" | \"DESC\") => {\n this._sort = { field, direction };\n this.requery();\n },\n toggle: (field: string) => {\n if (this._sort && this._sort.field === field) {\n this._sort = {\n field,\n direction: this._sort.direction === \"ASC\" ? \"DESC\" : \"ASC\"\n };\n } else {\n this._sort = { field, direction: \"ASC\" };\n }\n this.requery();\n }\n },\n filter: {\n set: (key: string, value: unknown) => {\n this._filters = { ...this._filters, [key]: value };\n this.requery();\n },\n clear: (key: string) => {\n const { [key]: _, ...rest } = this._filters;\n this._filters = rest;\n this.requery();\n },\n clearAll: () => {\n this._filters = {};\n this.requery();\n }\n },\n selection: {\n toggle: (id: string) => this._selection.toggle(id),\n selectRangeTo: (id: string) => this._selection.selectRangeTo(id),\n selectAll: () => this._selection.selectAll(),\n deselectAll: () => this._selection.deselectAll(),\n selectRows: (ids: string[]) => this._selection.selectRows(ids),\n isSelected: (id: string) => this._selection.isSelected(id)\n },\n loadMore: async () => {\n if (!this._dataSource) {\n return;\n }\n const meta = this._dataSource.meta;\n if (!meta.hasMoreItems || this._dataSource.loading) {\n return;\n }\n this._loadingMore = true;\n try {\n await this._dataSource.loadMore(this.buildQuery(meta.cursor));\n runInAction(() => {\n this._error = null;\n });\n } catch (err) {\n runInAction(() => {\n this._error = this.toListError(err);\n });\n } finally {\n runInAction(() => {\n this._loadingMore = false;\n });\n }\n },\n refresh: async () => {\n await this.executeQuery();\n }\n };\n\n init(config: IListPresenterConfig<TRow>): void {\n this._dataSource = config.dataSource;\n this._sort = config.initialSort ?? null;\n this._filters = config.initialFilters ?? {};\n this._debounceMs = config.debounceMs ?? 300;\n this._limit = config.limit;\n this._search = \"\";\n this._appliedQuery = null;\n this._selection.reset();\n this._initialized = true;\n this.executeQuery();\n }\n\n private buildQuery(cursor?: string | null): IDataSourceQuery {\n return {\n search: this._search || undefined,\n filters: Object.keys(this._filters).length > 0 ? this._filters : undefined,\n sort: this._sort ?? undefined,\n cursor: cursor ?? undefined,\n limit: this._limit\n };\n }\n\n private async executeQuery(): Promise<void> {\n if (!this._dataSource) {\n return;\n }\n this._error = null;\n const query = this.buildQuery();\n try {\n await this._dataSource.query(query);\n runInAction(() => {\n this._appliedQuery = query;\n });\n } catch (err) {\n runInAction(() => {\n this._error = this.toListError(err);\n });\n }\n }\n\n private requery(): void {\n this.clearDebounce();\n this._selection.reset();\n\n if (!this._requeryScheduled) {\n this._requeryScheduled = true;\n queueMicrotask(() => {\n this._requeryScheduled = false;\n this.executeQuery();\n });\n }\n }\n\n private debouncedRequery(): void {\n this.clearDebounce();\n this._debounceTimer = setTimeout(() => {\n this._selection.reset();\n this.executeQuery();\n }, this._debounceMs);\n }\n\n private clearDebounce(): void {\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n this._debounceTimer = null;\n }\n }\n\n private getRowId(row: TRow): string {\n return (row as any).id;\n }\n\n private toListError(err: unknown): IListError {\n if (err instanceof Error) {\n return { code: \"UNKNOWN\", message: err.message, retryable: true };\n }\n return { code: \"UNKNOWN\", message: String(err), retryable: true };\n }\n}\n\nexport const ListPresenter = Abstraction.createImplementation({\n implementation: ListPresenterImpl,\n dependencies: []\n});\n"],"names":["ListPresenterImpl","undefined","query","field","direction","key","value","_","rest","id","ids","meta","runInAction","err","SelectionController","row","makeAutoObservable","computed","ds","rows","loading","hasFilters","Object","config","cursor","queueMicrotask","setTimeout","clearTimeout","Error","String","ListPresenter","Abstraction"],"mappings":"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"}
1
+ {"version":3,"file":"presentation/listPresenter/ListPresenter.js","sources":["../../../src/presentation/listPresenter/ListPresenter.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, computed } from \"mobx\";\nimport {\n ListPresenter as Abstraction,\n type IListPresenter,\n type IListPresenterConfig,\n type IListViewModel,\n type IListActions,\n type IListError,\n type IDataSource,\n type IDataSourceQuery\n} from \"./abstractions.js\";\nimport { SelectionController } from \"./SelectionController.js\";\n\nclass ListPresenterImpl<TRow> implements IListPresenter<TRow> {\n private _sort: { field: string; direction: \"ASC\" | \"DESC\" } | null = null;\n private _filters: Record<string, unknown> = {};\n private _initialFilterKeys: Set<string> = new Set();\n private _search = \"\";\n private _selection: SelectionController<TRow>;\n private _error: IListError | null = null;\n private _appliedQuery: IDataSourceQuery | null = null;\n private _dataSource: IDataSource<TRow> | null = null;\n private _debounceMs = 300;\n private _debounceTimer: ReturnType<typeof setTimeout> | null = null;\n private _requeryScheduled = false;\n private _limit: number | undefined = undefined;\n private _initialized = false;\n private _loadingMore = false;\n private _showingFilters = false;\n private _itemLabel: { singular: string; plural: string } = {\n singular: \"item\",\n plural: \"items\"\n };\n\n constructor() {\n this._selection = new SelectionController<TRow>(\n () => this._dataSource?.rows ?? [],\n row => this.getRowId(row)\n );\n\n makeAutoObservable<ListPresenterImpl<TRow>, \"_debounceTimer\">(this, {\n _debounceTimer: false,\n vm: computed\n });\n }\n\n get vm(): IListViewModel<TRow> {\n const ds = this._dataSource;\n const rows = ds ? ds.rows : [];\n const meta = ds ? ds.meta : { cursor: null, hasMoreItems: false, totalCount: 0 };\n const loading = ds ? ds.loading : false;\n const hasUserFilters =\n Object.keys(this._filters).some(k => !this._initialFilterKeys.has(k)) ||\n this._search.length > 0;\n\n return {\n rows,\n sort: this._sort,\n filters: this._filters,\n search: this._search,\n appliedQuery: this._appliedQuery,\n pagination: {\n hasMore: meta.hasMoreItems,\n loading: loading && !this._loadingMore,\n loadingMore: this._loadingMore,\n totalCount: meta.totalCount,\n currentCount: rows.length\n },\n selection: {\n selectedIds: this._selection.selectedIds,\n selectedCount: this._selection.selectedCount,\n allSelected: this._selection.allSelected,\n label: this.buildSelectionLabel()\n },\n showingFilters: this._showingFilters,\n empty: rows.length === 0 && !loading,\n emptyWithFilters: rows.length === 0 && !loading && hasUserFilters,\n error: this._error\n };\n }\n\n actions: IListActions = {\n search: {\n set: (query: string) => {\n if (this._search === query) {\n return;\n }\n this._search = query;\n this.debouncedRequery();\n },\n clear: () => {\n if (this._search === \"\") {\n return;\n }\n this._search = \"\";\n this.requery();\n }\n },\n sort: {\n set: (field: string, direction: \"ASC\" | \"DESC\") => {\n this._sort = { field, direction };\n this.requery();\n },\n toggle: (field: string) => {\n if (this._sort && this._sort.field === field) {\n this._sort = {\n field,\n direction: this._sort.direction === \"ASC\" ? \"DESC\" : \"ASC\"\n };\n } else {\n this._sort = { field, direction: \"ASC\" };\n }\n this.requery();\n }\n },\n filter: {\n set: (key: string, value: unknown) => {\n this._filters = { ...this._filters, [key]: value };\n this.requery();\n },\n clear: (key: string) => {\n const { [key]: _, ...rest } = this._filters;\n this._filters = rest;\n this.requery();\n },\n clearAll: () => {\n this._filters = {};\n this.requery();\n },\n show: () => {\n this._showingFilters = true;\n },\n hide: () => {\n this._showingFilters = false;\n }\n },\n selection: {\n toggle: (id: string) => this._selection.toggle(id),\n selectRangeTo: (id: string) => this._selection.selectRangeTo(id),\n selectAll: () => this._selection.selectAll(),\n deselectAll: () => this._selection.deselectAll(),\n selectRows: (ids: string[]) => this._selection.selectRows(ids),\n isSelected: (id: string) => this._selection.isSelected(id)\n },\n loadMore: async () => {\n if (!this._dataSource) {\n return;\n }\n const meta = this._dataSource.meta;\n if (!meta.hasMoreItems || this._dataSource.loading) {\n return;\n }\n this._loadingMore = true;\n try {\n await this._dataSource.loadMore(this.buildQuery(meta.cursor));\n runInAction(() => {\n this._error = null;\n });\n } catch (err) {\n runInAction(() => {\n this._error = this.toListError(err);\n });\n } finally {\n runInAction(() => {\n this._loadingMore = false;\n });\n }\n },\n refresh: async () => {\n await this.executeQuery();\n }\n };\n\n init(config: IListPresenterConfig<TRow>): void {\n this._dataSource = config.dataSource;\n this._sort = config.initialSort ?? null;\n this._filters = config.initialFilters ?? {};\n this._initialFilterKeys = new Set(Object.keys(this._filters));\n this._debounceMs = config.debounceMs ?? 300;\n this._limit = config.limit;\n this._itemLabel = config.itemLabel ?? { singular: \"item\", plural: \"items\" };\n this._search = config.initialSearch ?? \"\";\n this._appliedQuery = null;\n this._selection.reset();\n this._initialized = true;\n this.executeQuery();\n }\n\n private buildQuery(cursor?: string | null): IDataSourceQuery {\n return {\n search: this._search || undefined,\n filters: Object.keys(this._filters).length > 0 ? this._filters : undefined,\n sort: this._sort ?? undefined,\n cursor: cursor ?? undefined,\n limit: this._limit\n };\n }\n\n private async executeQuery(): Promise<void> {\n if (!this._dataSource) {\n return;\n }\n this._error = null;\n const query = this.buildQuery();\n try {\n await this._dataSource.query(query);\n runInAction(() => {\n this._appliedQuery = query;\n });\n } catch (err) {\n runInAction(() => {\n this._error = this.toListError(err);\n });\n }\n }\n\n private requery(): void {\n this.clearDebounce();\n this._selection.reset();\n\n if (!this._requeryScheduled) {\n this._requeryScheduled = true;\n queueMicrotask(() => {\n this._requeryScheduled = false;\n this.executeQuery();\n });\n }\n }\n\n private debouncedRequery(): void {\n this.clearDebounce();\n this._debounceTimer = setTimeout(() => {\n this._selection.reset();\n this.executeQuery();\n }, this._debounceMs);\n }\n\n private clearDebounce(): void {\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n this._debounceTimer = null;\n }\n }\n\n private getRowId(row: TRow): string {\n return (row as any).id;\n }\n\n private buildSelectionLabel(): string {\n const { selectedCount, allSelected } = this._selection;\n if (allSelected) {\n return `all ${this._itemLabel.plural}`;\n }\n if (selectedCount === 0) {\n return \"\";\n }\n const noun = selectedCount === 1 ? this._itemLabel.singular : this._itemLabel.plural;\n return `${selectedCount} ${noun}`;\n }\n\n private toListError(err: unknown): IListError {\n if (err instanceof Error) {\n return { code: \"UNKNOWN\", message: err.message, retryable: true };\n }\n return { code: \"UNKNOWN\", message: String(err), retryable: true };\n }\n}\n\nexport const ListPresenter = Abstraction.createImplementation({\n implementation: ListPresenterImpl,\n dependencies: []\n});\n"],"names":["ListPresenterImpl","Set","undefined","query","field","direction","key","value","_","rest","id","ids","meta","runInAction","err","SelectionController","row","makeAutoObservable","computed","ds","rows","loading","hasUserFilters","Object","k","config","cursor","queueMicrotask","setTimeout","clearTimeout","selectedCount","allSelected","noun","Error","String","ListPresenter","Abstraction"],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import type { IDataSourceQuery } from "./abstractions.js";
2
+ type ItemPredicate<TRow> = (item: TRow, value: unknown) => boolean;
3
+ type SortValueGetter<TRow> = (item: TRow, field: string) => unknown;
4
+ export interface QueryMatcherConfig<TRow> {
5
+ keyField: keyof TRow & string;
6
+ localFilters: Record<string, ItemPredicate<TRow>>;
7
+ /**
8
+ * Reads the value of a sort field from an item. Defaults to a dot-path lookup
9
+ * (e.g. `savedOn`, `values.title`). Override when the query's sort field name
10
+ * does not match the item's shape.
11
+ */
12
+ getSortValue?: SortValueGetter<TRow>;
13
+ }
14
+ /**
15
+ * Decides which cached items belong in the current view.
16
+ *
17
+ * A DataSource backed by a shared cache (e.g., per-model entry cache) needs to
18
+ * filter cached items to only those matching the active query. QueryMatcher does
19
+ * this by splitting filters into two categories:
20
+ *
21
+ * - **Local filters** (e.g., folderId, status) — evaluated client-side against
22
+ * each item using predicates provided via `localFilters` config. Used when
23
+ * browsing without search or server-side filters.
24
+ *
25
+ * - **Server-side filters** (search, advanced search, any filter key not in
26
+ * `localFilters`) — cannot be evaluated locally. Instead, QueryMatcher tracks
27
+ * the set of item keys returned by the last server query (`_queryResultKeys`)
28
+ * and restricts the view to those items.
29
+ *
30
+ * The `matcher` getter is MobX-computed, so any DataSource `rows` getter that
31
+ * reads it will recompute when the matcher changes after a query.
32
+ *
33
+ * Usage:
34
+ * ```ts
35
+ * const matcher = new QueryMatcher<MyItem>({
36
+ * keyField: "id",
37
+ * localFilters: {
38
+ * folderId: (item, value) => item.folderId === value,
39
+ * status: (item, value) => item.status === value,
40
+ * }
41
+ * });
42
+ *
43
+ * // In DataSource.query(), after fetching:
44
+ * matcher.updateFromQuery(params, result.data.map(item => item.id), result.meta.hasMoreItems);
45
+ *
46
+ * // In DataSource.rows getter (filters, sorts by the applied sort, and cuts off at the
47
+ * // last loaded item):
48
+ * return matcher.select(cache.getItems());
49
+ * ```
50
+ */
51
+ export declare class QueryMatcher<TRow> {
52
+ private config;
53
+ private _queryResultKeys;
54
+ private _matcher;
55
+ private localFilterKeys;
56
+ private getSortValue;
57
+ private _view;
58
+ constructor(config: QueryMatcherConfig<TRow>);
59
+ get matcher(): (item: TRow) => boolean;
60
+ filter(items: TRow[]): TRow[];
61
+ /**
62
+ * Returns the items that belong in the current view, in the view's order.
63
+ *
64
+ * The cache is shared by views with different sorts, so its order means nothing to
65
+ * this view. Instead, matching items are sorted by the applied sort (ties keep the
66
+ * server order), and the result is cut off after the last item the server returned
67
+ * for this view. That keeps locally created or updated items in their sort position,
68
+ * and hides cached items that sort past the loaded pages until pagination reaches them.
69
+ *
70
+ * While searching, the server's (relevance) order is kept as is.
71
+ */
72
+ select(items: TRow[]): TRow[];
73
+ private getKey;
74
+ hasServerSideFilters(params: IDataSourceQuery): boolean;
75
+ updateFromQuery(params: IDataSourceQuery, resultKeys: string[], hasMore?: boolean): void;
76
+ appendResultKeys(keys: string[], hasMore?: boolean): void;
77
+ private buildMatcher;
78
+ }
79
+ export {};
@@ -0,0 +1,129 @@
1
+ import { action, computed, makeObservable, observable } from "mobx";
2
+ class QueryMatcher {
3
+ constructor(config){
4
+ this.config = config;
5
+ this._queryResultKeys = null;
6
+ this._matcher = ()=>true;
7
+ this._view = null;
8
+ this.localFilterKeys = new Set(Object.keys(config.localFilters));
9
+ this.getSortValue = config.getSortValue ?? getValueByPath;
10
+ makeObservable(this, {
11
+ _matcher: observable.ref,
12
+ _view: observable.ref,
13
+ matcher: computed,
14
+ updateFromQuery: action,
15
+ appendResultKeys: action
16
+ });
17
+ }
18
+ get matcher() {
19
+ return this._matcher;
20
+ }
21
+ filter(items) {
22
+ return items.filter(this._matcher);
23
+ }
24
+ select(items) {
25
+ const matched = this.filter(items);
26
+ const view = this._view;
27
+ if (!view) return matched;
28
+ const serverIndex = new Map(view.resultKeys.map((key, index)=>[
29
+ key,
30
+ index
31
+ ]));
32
+ const indexOf = (item)=>serverIndex.get(this.getKey(item)) ?? 1 / 0;
33
+ const sort = view.searching ? void 0 : view.sort;
34
+ const sorted = [
35
+ ...matched
36
+ ].sort((a, b)=>{
37
+ if (sort) {
38
+ const result = compareValues(this.getSortValue(a, sort.field), this.getSortValue(b, sort.field));
39
+ if (0 !== result) return "ASC" === sort.direction ? result : -result;
40
+ }
41
+ const left = indexOf(a);
42
+ const right = indexOf(b);
43
+ return left === right ? 0 : left < right ? -1 : 1;
44
+ });
45
+ if (!view.hasMore) return sorted;
46
+ let lastLoaded = -1;
47
+ sorted.forEach((item, index)=>{
48
+ if (serverIndex.has(this.getKey(item))) lastLoaded = index;
49
+ });
50
+ return lastLoaded < 0 ? sorted : sorted.slice(0, lastLoaded + 1);
51
+ }
52
+ getKey(item) {
53
+ return String(item[this.config.keyField]);
54
+ }
55
+ hasServerSideFilters(params) {
56
+ if (params.search) return true;
57
+ const filters = params.filters ?? {};
58
+ return Object.keys(filters).some((key)=>!this.localFilterKeys.has(key));
59
+ }
60
+ updateFromQuery(params, resultKeys, hasMore = false) {
61
+ if (this.hasServerSideFilters(params)) this._queryResultKeys = new Set(resultKeys);
62
+ else this._queryResultKeys = null;
63
+ this._matcher = this.buildMatcher(params);
64
+ this._view = {
65
+ resultKeys: [
66
+ ...resultKeys
67
+ ],
68
+ sort: params.sort,
69
+ searching: !!params.search,
70
+ hasMore
71
+ };
72
+ }
73
+ appendResultKeys(keys, hasMore = false) {
74
+ if (this._queryResultKeys) for (const key of keys)this._queryResultKeys.add(key);
75
+ if (this._view) this._view = {
76
+ ...this._view,
77
+ resultKeys: [
78
+ ...this._view.resultKeys,
79
+ ...keys
80
+ ],
81
+ hasMore
82
+ };
83
+ }
84
+ buildMatcher(params) {
85
+ const filters = params.filters ?? {};
86
+ const queryResultKeys = this._queryResultKeys;
87
+ const isSearching = !!params.search;
88
+ const { keyField, localFilters } = this.config;
89
+ const activeLocalFilters = [];
90
+ for (const [key, predicate] of Object.entries(localFilters)){
91
+ const value = filters[key];
92
+ if (null != value) activeLocalFilters.push({
93
+ predicate,
94
+ value
95
+ });
96
+ }
97
+ return (item)=>{
98
+ if (queryResultKeys) {
99
+ if (!queryResultKeys.has(String(item[keyField]))) return false;
100
+ } else if (!isSearching) {
101
+ for (const { predicate, value } of activeLocalFilters)if (!predicate(item, value)) return false;
102
+ }
103
+ return true;
104
+ };
105
+ }
106
+ }
107
+ function getValueByPath(item, path) {
108
+ let current = item;
109
+ for (const part of path.split(".")){
110
+ if (null == current || "object" != typeof current) return;
111
+ current = current[part];
112
+ }
113
+ return current;
114
+ }
115
+ function compareValues(a, b) {
116
+ const aEmpty = null == a;
117
+ const bEmpty = null == b;
118
+ if (aEmpty || bEmpty) return aEmpty === bEmpty ? 0 : aEmpty ? 1 : -1;
119
+ const left = a instanceof Date ? a.getTime() : a;
120
+ const right = b instanceof Date ? b.getTime() : b;
121
+ if ("number" == typeof left && "number" == typeof right) return left - right;
122
+ if ("boolean" == typeof left && "boolean" == typeof right) return Number(left) - Number(right);
123
+ const leftString = String(left);
124
+ const rightString = String(right);
125
+ return leftString < rightString ? -1 : leftString > rightString ? 1 : 0;
126
+ }
127
+ export { QueryMatcher };
128
+
129
+ //# sourceMappingURL=QueryMatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/listPresenter/QueryMatcher.js","sources":["../../../src/presentation/listPresenter/QueryMatcher.ts"],"sourcesContent":["import { makeObservable, observable, computed, action } from \"mobx\";\nimport type { IDataSourceQuery } from \"./abstractions.js\";\n\ntype ItemPredicate<TRow> = (item: TRow, value: unknown) => boolean;\n\ntype SortValueGetter<TRow> = (item: TRow, field: string) => unknown;\n\nexport interface QueryMatcherConfig<TRow> {\n keyField: keyof TRow & string;\n localFilters: Record<string, ItemPredicate<TRow>>;\n /**\n * Reads the value of a sort field from an item. Defaults to a dot-path lookup\n * (e.g. `savedOn`, `values.title`). Override when the query's sort field name\n * does not match the item's shape.\n */\n getSortValue?: SortValueGetter<TRow>;\n}\n\n/**\n * Decides which cached items belong in the current view.\n *\n * A DataSource backed by a shared cache (e.g., per-model entry cache) needs to\n * filter cached items to only those matching the active query. QueryMatcher does\n * this by splitting filters into two categories:\n *\n * - **Local filters** (e.g., folderId, status) — evaluated client-side against\n * each item using predicates provided via `localFilters` config. Used when\n * browsing without search or server-side filters.\n *\n * - **Server-side filters** (search, advanced search, any filter key not in\n * `localFilters`) — cannot be evaluated locally. Instead, QueryMatcher tracks\n * the set of item keys returned by the last server query (`_queryResultKeys`)\n * and restricts the view to those items.\n *\n * The `matcher` getter is MobX-computed, so any DataSource `rows` getter that\n * reads it will recompute when the matcher changes after a query.\n *\n * Usage:\n * ```ts\n * const matcher = new QueryMatcher<MyItem>({\n * keyField: \"id\",\n * localFilters: {\n * folderId: (item, value) => item.folderId === value,\n * status: (item, value) => item.status === value,\n * }\n * });\n *\n * // In DataSource.query(), after fetching:\n * matcher.updateFromQuery(params, result.data.map(item => item.id), result.meta.hasMoreItems);\n *\n * // In DataSource.rows getter (filters, sorts by the applied sort, and cuts off at the\n * // last loaded item):\n * return matcher.select(cache.getItems());\n * ```\n */\nexport class QueryMatcher<TRow> {\n private _queryResultKeys: Set<string> | null = null;\n private _matcher: (item: TRow) => boolean = () => true;\n private localFilterKeys: Set<string>;\n private getSortValue: SortValueGetter<TRow>;\n\n // Ordering state of the current view: the keys the server returned for the active\n // query (in server order, extended by `appendResultKeys`), the applied sort, and\n // whether the server has more items beyond the loaded ones.\n private _view: {\n resultKeys: string[];\n sort: IDataSourceQuery[\"sort\"];\n searching: boolean;\n hasMore: boolean;\n } | null = null;\n\n constructor(private config: QueryMatcherConfig<TRow>) {\n this.localFilterKeys = new Set(Object.keys(config.localFilters));\n this.getSortValue = config.getSortValue ?? getValueByPath;\n\n makeObservable<QueryMatcher<TRow>, \"_matcher\" | \"_view\">(this, {\n _matcher: observable.ref,\n _view: observable.ref,\n matcher: computed,\n updateFromQuery: action,\n appendResultKeys: action\n });\n }\n\n get matcher(): (item: TRow) => boolean {\n return this._matcher;\n }\n\n filter(items: TRow[]): TRow[] {\n return items.filter(this._matcher);\n }\n\n /**\n * Returns the items that belong in the current view, in the view's order.\n *\n * The cache is shared by views with different sorts, so its order means nothing to\n * this view. Instead, matching items are sorted by the applied sort (ties keep the\n * server order), and the result is cut off after the last item the server returned\n * for this view. That keeps locally created or updated items in their sort position,\n * and hides cached items that sort past the loaded pages until pagination reaches them.\n *\n * While searching, the server's (relevance) order is kept as is.\n */\n select(items: TRow[]): TRow[] {\n const matched = this.filter(items);\n const view = this._view;\n if (!view) {\n return matched;\n }\n\n const serverIndex = new Map(view.resultKeys.map((key, index) => [key, index]));\n // Items the server did not return for this view (cached by other views, or created\n // locally) sort after the server's items among equal sort values.\n const indexOf = (item: TRow) =>\n serverIndex.get(this.getKey(item)) ?? Number.POSITIVE_INFINITY;\n\n const sort = view.searching ? undefined : view.sort;\n const sorted = [...matched].sort((a, b) => {\n if (sort) {\n const result = compareValues(\n this.getSortValue(a, sort.field),\n this.getSortValue(b, sort.field)\n );\n if (result !== 0) {\n return sort.direction === \"ASC\" ? result : -result;\n }\n }\n const left = indexOf(a);\n const right = indexOf(b);\n return left === right ? 0 : left < right ? -1 : 1;\n });\n\n if (!view.hasMore) {\n return sorted;\n }\n\n let lastLoaded = -1;\n sorted.forEach((item, index) => {\n if (serverIndex.has(this.getKey(item))) {\n lastLoaded = index;\n }\n });\n\n return lastLoaded < 0 ? sorted : sorted.slice(0, lastLoaded + 1);\n }\n\n private getKey(item: TRow): string {\n return String(item[this.config.keyField]);\n }\n\n hasServerSideFilters(params: IDataSourceQuery): boolean {\n if (params.search) {\n return true;\n }\n const filters = params.filters ?? {};\n return Object.keys(filters).some(key => !this.localFilterKeys.has(key));\n }\n\n updateFromQuery(params: IDataSourceQuery, resultKeys: string[], hasMore = false): void {\n if (this.hasServerSideFilters(params)) {\n this._queryResultKeys = new Set(resultKeys);\n } else {\n this._queryResultKeys = null;\n }\n this._matcher = this.buildMatcher(params);\n this._view = {\n resultKeys: [...resultKeys],\n sort: params.sort,\n searching: !!params.search,\n hasMore\n };\n }\n\n appendResultKeys(keys: string[], hasMore = false): void {\n if (this._queryResultKeys) {\n for (const key of keys) {\n this._queryResultKeys.add(key);\n }\n }\n if (this._view) {\n this._view = {\n ...this._view,\n resultKeys: [...this._view.resultKeys, ...keys],\n hasMore\n };\n }\n }\n\n private buildMatcher(params: IDataSourceQuery): (item: TRow) => boolean {\n const filters = params.filters ?? {};\n const queryResultKeys = this._queryResultKeys;\n const isSearching = !!params.search;\n const { keyField, localFilters } = this.config;\n\n const activeLocalFilters: Array<{ predicate: ItemPredicate<TRow>; value: unknown }> = [];\n for (const [key, predicate] of Object.entries(localFilters)) {\n const value = filters[key];\n if (value !== undefined && value !== null) {\n activeLocalFilters.push({ predicate, value });\n }\n }\n\n return (item: TRow) => {\n if (queryResultKeys) {\n if (!queryResultKeys.has(String(item[keyField]))) {\n return false;\n }\n } else if (!isSearching) {\n for (const { predicate, value } of activeLocalFilters) {\n if (!predicate(item, value)) {\n return false;\n }\n }\n }\n\n return true;\n };\n }\n}\n\nfunction getValueByPath(item: unknown, path: string): unknown {\n let current: unknown = item;\n for (const part of path.split(\".\")) {\n if (current === null || current === undefined || typeof current !== \"object\") {\n return undefined;\n }\n current = (current as Record<string, unknown>)[part];\n }\n return current;\n}\n\n/**\n * Compares two sort values in ascending order, the same way the DDB and SQL storage sort\n * entries: `null` and `undefined` sort last (so first in descending order), and an empty\n * string is a regular string. Strings are compared by code point, which keeps ISO dates in\n * chronological order.\n */\nfunction compareValues(a: unknown, b: unknown): number {\n const aEmpty = a === null || a === undefined;\n const bEmpty = b === null || b === undefined;\n if (aEmpty || bEmpty) {\n return aEmpty === bEmpty ? 0 : aEmpty ? 1 : -1;\n }\n\n const left = a instanceof Date ? a.getTime() : a;\n const right = b instanceof Date ? b.getTime() : b;\n\n if (typeof left === \"number\" && typeof right === \"number\") {\n return left - right;\n }\n if (typeof left === \"boolean\" && typeof right === \"boolean\") {\n return Number(left) - Number(right);\n }\n\n const leftString = String(left);\n const rightString = String(right);\n return leftString < rightString ? -1 : leftString > rightString ? 1 : 0;\n}\n"],"names":["QueryMatcher","config","Set","Object","getValueByPath","makeObservable","observable","computed","action","items","matched","view","serverIndex","Map","key","index","indexOf","item","Number","sort","undefined","sorted","a","b","result","compareValues","left","right","lastLoaded","String","params","filters","resultKeys","hasMore","keys","queryResultKeys","isSearching","keyField","localFilters","activeLocalFilters","predicate","value","path","current","part","aEmpty","bEmpty","Date","leftString","rightString"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};