@strapi/admin 4.14.3 → 4.14.5

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 (657) hide show
  1. package/.eslintrc.js +4 -1
  2. package/admin/.eslintrc.js +28 -0
  3. package/admin/custom.d.ts +28 -0
  4. package/admin/src/StrapiApp.js +14 -16
  5. package/admin/src/components/AuthenticatedApp/index.js +7 -11
  6. package/admin/src/components/AuthenticatedApp/utils/api.js +1 -39
  7. package/admin/src/components/AuthenticatedApp/utils/checkLatestStrapiVersion.ts +13 -0
  8. package/admin/src/{hooks/useReleaseNotification/utils/api.js → components/AuthenticatedApp/utils/fetchStrapiLatestRelease.ts} +2 -3
  9. package/admin/src/components/ConfigurationProvider.tsx +67 -0
  10. package/admin/src/components/{DragLayer/DragLayer.js → DragLayer.tsx} +18 -10
  11. package/admin/src/components/LanguageProvider.tsx +129 -0
  12. package/admin/src/components/{LeftMenu/index.js → LeftMenu.tsx} +23 -18
  13. package/admin/src/components/{NpsSurvey/index.js → NpsSurvey.tsx} +68 -21
  14. package/admin/src/components/PluginsInitializer.tsx +124 -0
  15. package/admin/src/components/PrivateRoute.tsx +42 -0
  16. package/admin/src/components/Providers/index.js +8 -8
  17. package/admin/src/components/Theme.tsx +39 -0
  18. package/admin/src/components/ThemeToggleProvider.tsx +50 -0
  19. package/admin/src/components/{UnauthenticatedLogo/index.js → UnauthenticatedLogo.tsx} +3 -5
  20. package/admin/src/components/{LocalesProvider/__mocks__/useLocalesProvider.js → __mocks__/LanguageProvider.js} +1 -1
  21. package/admin/src/content-manager/components/BlocksEditor/BlocksInput/index.js +68 -9
  22. package/admin/src/content-manager/components/BlocksEditor/Toolbar/index.js +374 -167
  23. package/admin/src/content-manager/components/BlocksEditor/hooks/useBlocksStore.js +405 -135
  24. package/admin/src/content-manager/components/BlocksEditor/hooks/useModifiersStore.js +23 -6
  25. package/admin/src/content-manager/components/BlocksEditor/index.js +97 -20
  26. package/admin/src/content-manager/components/BlocksEditor/plugins/index.js +4 -0
  27. package/admin/src/content-manager/components/BlocksEditor/plugins/withLinks.js +61 -0
  28. package/admin/src/content-manager/components/BlocksEditor/plugins/withStrapiSchema.js +33 -0
  29. package/admin/src/content-manager/components/BlocksEditor/utils/links.js +90 -0
  30. package/admin/src/content-manager/components/InputUID/index.js +1 -1
  31. package/admin/src/content-manager/hooks/useAllowedAttributes.js +9 -1
  32. package/admin/src/content-manager/pages/EditSettingsView/index.js +1 -0
  33. package/admin/src/content-manager/pages/EditSettingsView/utils/createPossibleMainFieldsForModelsAndComponents.js +1 -0
  34. package/admin/src/content-manager/pages/ListSettingsView/constants.js +1 -0
  35. package/admin/src/content-manager/pages/ListView/index.js +2 -1
  36. package/admin/src/content-manager/utils/checkIfAttributeIsDisplayable.js +1 -1
  37. package/admin/src/content-manager/utils/schema.js +2 -2
  38. package/admin/src/contexts/admin.ts +18 -0
  39. package/admin/src/contexts/configuration.ts +25 -0
  40. package/admin/src/contexts/themeToggle.ts +16 -0
  41. package/admin/src/hooks/{useConfigurations/__mocks__/index.js → __mocks__/useConfigurations.ts} +4 -2
  42. package/admin/src/hooks/index.js +0 -7
  43. package/admin/src/hooks/{useAdminRoles/index.js → useAdminRoles.ts} +26 -10
  44. package/admin/src/hooks/useAdminUsers.ts +64 -0
  45. package/admin/src/hooks/useConfiguration.ts +5 -0
  46. package/admin/src/hooks/useDebounce.ts +17 -0
  47. package/admin/src/hooks/{useEnterprise/useEnterprise.js → useEnterprise.ts} +15 -5
  48. package/admin/src/hooks/useLicenseLimitNotification.ts +3 -0
  49. package/admin/src/hooks/useMenu.ts +153 -0
  50. package/admin/src/hooks/useThemeToggle.ts +9 -0
  51. package/admin/src/index.js +5 -2
  52. package/admin/src/layouts/UnauthenticatedLayout/LocaleToggle/index.js +2 -2
  53. package/admin/src/pages/Admin/index.js +4 -3
  54. package/admin/src/pages/App/index.js +6 -4
  55. package/admin/src/pages/AuthPage/components/ForgotPassword/index.js +1 -1
  56. package/admin/src/pages/AuthPage/components/ForgotPasswordSuccess/index.js +1 -1
  57. package/admin/src/pages/AuthPage/components/Login/BaseLogin.js +1 -1
  58. package/admin/src/pages/AuthPage/components/Oops/index.js +1 -1
  59. package/admin/src/pages/AuthPage/components/Register/index.js +29 -34
  60. package/admin/src/pages/AuthPage/components/ResetPassword/index.js +1 -1
  61. package/admin/src/pages/AuthPage/index.js +2 -2
  62. package/admin/src/pages/MarketplacePage/components/NpmPackageCard/index.js +0 -2
  63. package/admin/src/pages/MarketplacePage/hooks/__mocks__/useNavigatorOnline.ts +1 -0
  64. package/admin/src/{hooks/useNavigatorOnLine/index.js → pages/MarketplacePage/hooks/useNavigatorOnline.ts} +4 -6
  65. package/admin/src/pages/MarketplacePage/index.js +3 -3
  66. package/admin/src/pages/ProfilePage/index.js +3 -3
  67. package/admin/src/pages/SettingsPage/components/Tokens/Regenerate/index.js +1 -1
  68. package/admin/src/pages/SettingsPage/components/Tokens/Table/index.js +119 -87
  69. package/admin/src/{hooks/useRegenerate/index.js → pages/SettingsPage/hooks/useRegenerate.ts} +13 -7
  70. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/Regenerate/index.js +1 -1
  71. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/CustomizationInfos/index.js +2 -2
  72. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/index.js +2 -2
  73. package/admin/src/pages/SettingsPage/pages/Roles/CreatePage/index.js +1 -1
  74. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsModal/index.js +1 -1
  75. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/Collapse/index.js +1 -1
  76. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/ActionRow/index.js +1 -1
  77. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/SubActionRow/index.js +1 -1
  78. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/GlobalActions/index.js +1 -1
  79. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PermissionsDataManagerProvider/index.js +1 -1
  80. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/SubCategory/index.js +1 -1
  81. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/hooks/usePermissionsDataManager.ts +28 -0
  82. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/index.js +1 -1
  83. package/admin/src/{hooks/useAdminRolePermissions/index.js → pages/SettingsPage/pages/Roles/hooks/useAdminRolePermissions.ts} +13 -6
  84. package/admin/src/pages/SettingsPage/pages/TransferTokens/ListView/index.js +3 -5
  85. package/admin/src/pages/UseCasePage/index.js +1 -1
  86. package/admin/src/shared/hooks/index.js +0 -1
  87. package/admin/src/shared/hooks/useInjectionZone/index.js +2 -2
  88. package/admin/src/translations/en.json +8 -0
  89. package/admin/src/types/adminAPI.ts +29 -0
  90. package/admin/src/utils/createRoute.js +4 -1
  91. package/admin/tsconfig.build.json +4 -0
  92. package/admin/tsconfig.json +11 -0
  93. package/build/1049.9236e785.chunk.js +1 -0
  94. package/build/1222.fe92c653.chunk.js +35 -0
  95. package/build/{1227.969e24e6.chunk.js → 1227.e0f7447b.chunk.js} +1 -1
  96. package/build/135.ad267b59.chunk.js +1 -0
  97. package/build/{1386.db9a2795.chunk.js → 1386.07f2bbb3.chunk.js} +2 -2
  98. package/build/1835.eaa696ba.chunk.js +1 -0
  99. package/build/2225.a2147b8f.chunk.js +79 -0
  100. package/build/2325.d705b39a.chunk.js +1 -0
  101. package/build/{2379.906334f0.chunk.js → 2379.b0bc4013.chunk.js} +1 -1
  102. package/build/{2395.f6ac2863.chunk.js → 2395.d37b1025.chunk.js} +1 -1
  103. package/build/2421.79e5b3d0.chunk.js +1 -0
  104. package/build/267.073a3bcb.chunk.js +1 -0
  105. package/build/2801.12522720.chunk.js +1 -0
  106. package/build/2878.145ebf7c.chunk.js +1 -0
  107. package/build/2953.284a63c0.chunk.js +1 -0
  108. package/build/{9832.65ed5a44.chunk.js → 3019.0d74d080.chunk.js} +4 -4
  109. package/build/{3483.f6b2439f.chunk.js → 3483.8f1b25f8.chunk.js} +1 -1
  110. package/build/{4174.3e13fb26.chunk.js → 4174.2c4f958e.chunk.js} +1 -1
  111. package/build/4429.7f044dc7.chunk.js +1 -0
  112. package/build/4555.c883d697.chunk.js +1 -0
  113. package/build/4663.b906cc10.chunk.js +1 -0
  114. package/build/4916.480053a6.chunk.js +1 -0
  115. package/build/4996.d285c30b.chunk.js +1 -0
  116. package/build/{502.9918bff7.chunk.js → 502.b845473a.chunk.js} +1 -1
  117. package/build/570.2f3b4c56.chunk.js +1 -0
  118. package/build/5858.493b31ec.chunk.js +1 -0
  119. package/build/6345.334e7678.chunk.js +1 -0
  120. package/build/6373.1a21d665.chunk.js +105 -0
  121. package/build/6453.4160b5b7.chunk.js +1 -0
  122. package/build/7448.6fd14dd3.chunk.js +1 -0
  123. package/build/7464.91341b4f.chunk.js +1 -0
  124. package/build/7735.9e7c9fdd.chunk.js +10 -0
  125. package/build/782.7243b183.chunk.js +1 -0
  126. package/build/7849.2a500ed8.chunk.js +1 -0
  127. package/build/{7897.4a39de37.chunk.js → 7897.dffa5ad5.chunk.js} +2 -2
  128. package/build/8162.7d1100a0.chunk.js +1 -0
  129. package/build/{8276.951e198e.chunk.js → 8276.e9698944.chunk.js} +3 -3
  130. package/build/8894.5ca4852a.chunk.js +26 -0
  131. package/build/8980.f0045cc1.chunk.js +1 -0
  132. package/build/9153.42c1428a.chunk.js +1 -0
  133. package/build/9218.306ad178.chunk.js +1 -0
  134. package/build/9285.5f174057.chunk.js +1 -0
  135. package/build/{6266.e8990811.chunk.js → 9302.550cf5b7.chunk.js} +4 -4
  136. package/build/9547.62987774.chunk.js +1 -0
  137. package/build/9754.b4e73779.chunk.js +1 -0
  138. package/build/Admin-authenticatedApp.e897fccb.chunk.js +79 -0
  139. package/build/{Admin_InternalErrorPage.b3163562.chunk.js → Admin_InternalErrorPage.e2431a95.chunk.js} +1 -1
  140. package/build/{Admin_homePage.6cb51f18.chunk.js → Admin_homePage.71ef8d06.chunk.js} +16 -16
  141. package/build/Admin_marketplace.0db78604.chunk.js +44 -0
  142. package/build/{Admin_pluginsPage.b9fa2947.chunk.js → Admin_pluginsPage.1083f7f0.chunk.js} +1 -1
  143. package/build/{Admin_profilePage.a4d41380.chunk.js → Admin_profilePage.61704b7d.chunk.js} +2 -2
  144. package/build/Admin_settingsPage.39cb9fca.chunk.js +111 -0
  145. package/build/{Upload_ConfigureTheView.cc7ca628.chunk.js → Upload_ConfigureTheView.3cfeb108.chunk.js} +1 -1
  146. package/build/admin-app.06f5e70a.chunk.js +69 -0
  147. package/build/admin-edit-roles-page.556fac52.chunk.js +267 -0
  148. package/build/admin-edit-users.64fd1318.chunk.js +10 -0
  149. package/build/admin-roles-list.15918328.chunk.js +22 -0
  150. package/build/admin-users.74fddc87.chunk.js +11 -0
  151. package/build/{api-tokens-create-page.2f25ddf6.chunk.js → api-tokens-create-page.c08ae118.chunk.js} +1 -1
  152. package/build/{api-tokens-edit-page.45faac16.chunk.js → api-tokens-edit-page.ce18efdc.chunk.js} +1 -1
  153. package/build/api-tokens-list-page.783b7569.chunk.js +16 -0
  154. package/build/audit-logs-settings-page.12aeea8c.chunk.js +1 -0
  155. package/build/content-manager.2e3f660b.chunk.js +1220 -0
  156. package/build/{content-type-builder-list-view.aa8a5d1a.chunk.js → content-type-builder-list-view.38ed3935.chunk.js} +7 -7
  157. package/build/{content-type-builder-translation-en-json.b9e5cacd.chunk.js → content-type-builder-translation-en-json.43f9d7bc.chunk.js} +1 -1
  158. package/build/{content-type-builder.885f2cad.chunk.js → content-type-builder.758a9d23.chunk.js} +14 -14
  159. package/build/email-settings-page.e08a587e.chunk.js +11 -0
  160. package/build/{en-json.a3973ff5.chunk.js → en-json.bd611a8e.chunk.js} +1 -1
  161. package/build/{i18n-settings-page.6c0157e7.chunk.js → i18n-settings-page.3186e3e9.chunk.js} +1 -1
  162. package/build/index.html +1 -1
  163. package/build/main.00ea6f5a.js +2665 -0
  164. package/build/{review-workflows-settings-create-view.ae369a88.chunk.js → review-workflows-settings-create-view.5cdc4d64.chunk.js} +1 -1
  165. package/build/{review-workflows-settings-edit-view.9a61c69f.chunk.js → review-workflows-settings-edit-view.53bf7865.chunk.js} +1 -1
  166. package/build/review-workflows-settings-list-view.b4a8aefb.chunk.js +56 -0
  167. package/build/runtime~main.e3bf3980.js +2 -0
  168. package/build/sso-settings-page.6a35d473.chunk.js +1 -0
  169. package/build/{transfer-tokens-create-page.6e1b8cee.chunk.js → transfer-tokens-create-page.2662d519.chunk.js} +1 -1
  170. package/build/{transfer-tokens-edit-page.10bb22e2.chunk.js → transfer-tokens-edit-page.f64d8d8c.chunk.js} +1 -1
  171. package/build/transfer-tokens-list-page.e6fd5f87.chunk.js +16 -0
  172. package/build/upload-settings.450a1de0.chunk.js +14 -0
  173. package/build/{upload.19e14c8e.chunk.js → upload.0d53e7a3.chunk.js} +1 -1
  174. package/build/{users-advanced-settings-page.ed69812f.chunk.js → users-advanced-settings-page.4a1f1f6d.chunk.js} +1 -1
  175. package/build/{users-email-settings-page.131a00fb.chunk.js → users-email-settings-page.ea81fe82.chunk.js} +1 -1
  176. package/build/{users-providers-settings-page.b3dca41d.chunk.js → users-providers-settings-page.10280cdb.chunk.js} +1 -1
  177. package/build/{users-roles-settings-page.afab5a0d.chunk.js → users-roles-settings-page.4a7158be.chunk.js} +4 -4
  178. package/build/{webhook-edit-page.4c037da4.chunk.js → webhook-edit-page.65ac30ee.chunk.js} +3 -3
  179. package/build/{webhook-list-page.56c82f4a.chunk.js → webhook-list-page.f57285ca.chunk.js} +3 -3
  180. package/ee/admin/hooks/{useLicenseLimitNotification.js → useLicenseLimitNotification.ts} +4 -4
  181. package/ee/admin/pages/AuthPage/components/Providers/index.js +1 -1
  182. package/ee/admin/pages/SettingsPage/pages/Users/ListPage/index.js +1 -3
  183. package/jest.config.front.js +4 -0
  184. package/package.json +25 -18
  185. package/scripts/build.js +6 -2
  186. package/server/controllers/admin.js +3 -2
  187. package/shared/entities.ts +33 -0
  188. package/shared/permissions.ts +52 -0
  189. package/webpack.config.js +1 -0
  190. package/admin/src/components/AuthenticatedApp/utils/checkLatestStrapiVersion.js +0 -11
  191. package/admin/src/components/ConfigurationsProvider/index.js +0 -66
  192. package/admin/src/components/ConfigurationsProvider/reducer.js +0 -29
  193. package/admin/src/components/DragLayer/index.js +0 -1
  194. package/admin/src/components/GlobalStyle/index.js +0 -9
  195. package/admin/src/components/LanguageProvider/index.js +0 -54
  196. package/admin/src/components/LanguageProvider/init.js +0 -13
  197. package/admin/src/components/LanguageProvider/reducer.js +0 -30
  198. package/admin/src/components/LanguageProvider/utils/localStorageKey.js +0 -3
  199. package/admin/src/components/LocalesProvider/context.js +0 -5
  200. package/admin/src/components/LocalesProvider/index.js +0 -21
  201. package/admin/src/components/LocalesProvider/useLocalesProvider.js +0 -11
  202. package/admin/src/components/NpsSurvey/hooks/useNpsSurveySettings.js +0 -17
  203. package/admin/src/components/PluginsInitializer/index.js +0 -68
  204. package/admin/src/components/PluginsInitializer/init.js +0 -11
  205. package/admin/src/components/PluginsInitializer/reducer.js +0 -22
  206. package/admin/src/components/PrivateRoute/index.js +0 -46
  207. package/admin/src/components/Theme/index.js +0 -26
  208. package/admin/src/components/ThemeToggleProvider/index.js +0 -79
  209. package/admin/src/contexts/Admin/index.js +0 -5
  210. package/admin/src/contexts/Configurations/index.js +0 -5
  211. package/admin/src/contexts/MarketPlace/index.js +0 -18
  212. package/admin/src/contexts/PermisssionsDataManagerContext/index.js +0 -5
  213. package/admin/src/contexts/ThemeToggle/index.js +0 -5
  214. package/admin/src/contexts/index.js +0 -4
  215. package/admin/src/hooks/useAdminRoles/__mocks__/index.js +0 -5
  216. package/admin/src/hooks/useAdminUsers/index.js +0 -1
  217. package/admin/src/hooks/useAdminUsers/useAdminUsers.js +0 -47
  218. package/admin/src/hooks/useConfigurations/index.js +0 -11
  219. package/admin/src/hooks/useDebounce/index.js +0 -19
  220. package/admin/src/hooks/useEnterprise/index.js +0 -1
  221. package/admin/src/hooks/useLicenseLimitNotification/index.js +0 -5
  222. package/admin/src/hooks/useMenu/index.js +0 -86
  223. package/admin/src/hooks/useMenu/utils/checkPermissions.js +0 -13
  224. package/admin/src/hooks/useMenu/utils/getGeneralLinks.js +0 -31
  225. package/admin/src/hooks/useMenu/utils/getPluginSectionLinks.js +0 -17
  226. package/admin/src/hooks/usePermissionsDataManager/index.js +0 -7
  227. package/admin/src/hooks/useReleaseNotification/index.js +0 -31
  228. package/admin/src/hooks/useReleaseNotification/utils/checkLatestStrapiVersion.js +0 -11
  229. package/admin/src/hooks/useThemeToggle/index.js +0 -11
  230. package/admin/src/shared/hooks/useAdminProvider/index.js +0 -11
  231. package/admin/src/tsconfig.json +0 -10
  232. package/build/1049.acb0e730.chunk.js +0 -1
  233. package/build/2225.78fb9b89.chunk.js +0 -79
  234. package/build/2614.3e088d3e.chunk.js +0 -35
  235. package/build/2659.cb94f1e7.chunk.js +0 -105
  236. package/build/2801.2afb4757.chunk.js +0 -1
  237. package/build/4546.1203ac95.chunk.js +0 -1
  238. package/build/5158.c85f841a.chunk.js +0 -1
  239. package/build/6715.48e37308.chunk.js +0 -1
  240. package/build/6812.00ef5b0d.chunk.js +0 -26
  241. package/build/7464.0280cf59.chunk.js +0 -1
  242. package/build/Admin-authenticatedApp.a16cdc37.chunk.js +0 -112
  243. package/build/Admin_marketplace.3eb5e132.chunk.js +0 -55
  244. package/build/Admin_settingsPage.6dc2af9f.chunk.js +0 -111
  245. package/build/admin-app.98cdf43a.chunk.js +0 -36
  246. package/build/admin-edit-roles-page.418bb1c5.chunk.js +0 -267
  247. package/build/admin-edit-users.9b42cc9e.chunk.js +0 -10
  248. package/build/admin-roles-list.cf964578.chunk.js +0 -22
  249. package/build/admin-users.8385dd73.chunk.js +0 -11
  250. package/build/api-tokens-list-page.5baabf1a.chunk.js +0 -16
  251. package/build/audit-logs-settings-page.91489670.chunk.js +0 -1
  252. package/build/content-manager.e1e49cc9.chunk.js +0 -1199
  253. package/build/email-settings-page.6bd7b280.chunk.js +0 -11
  254. package/build/email-translation-ar-json.88304564.chunk.js +0 -1
  255. package/build/email-translation-cs-json.6eaeec6a.chunk.js +0 -1
  256. package/build/email-translation-de-json.1b334230.chunk.js +0 -1
  257. package/build/email-translation-dk-json.85402492.chunk.js +0 -1
  258. package/build/email-translation-en-json.4211d4d0.chunk.js +0 -1
  259. package/build/email-translation-es-json.0b6b1006.chunk.js +0 -1
  260. package/build/email-translation-fr-json.78be2787.chunk.js +0 -1
  261. package/build/email-translation-id-json.c97239fe.chunk.js +0 -1
  262. package/build/email-translation-it-json.a2ed8c78.chunk.js +0 -1
  263. package/build/email-translation-ja-json.63eebd02.chunk.js +0 -1
  264. package/build/email-translation-ko-json.4de49b23.chunk.js +0 -1
  265. package/build/email-translation-ms-json.7390477e.chunk.js +0 -1
  266. package/build/email-translation-nl-json.377bdd9f.chunk.js +0 -1
  267. package/build/email-translation-pl-json.97d0db97.chunk.js +0 -1
  268. package/build/email-translation-pt-BR-json.81cca553.chunk.js +0 -1
  269. package/build/email-translation-pt-json.2a2a0643.chunk.js +0 -1
  270. package/build/email-translation-ru-json.6bce37dd.chunk.js +0 -1
  271. package/build/email-translation-sk-json.53da2fcd.chunk.js +0 -1
  272. package/build/email-translation-th-json.660fa9a8.chunk.js +0 -1
  273. package/build/email-translation-tr-json.e6c0f8fc.chunk.js +0 -1
  274. package/build/email-translation-uk-json.bd1fb6bf.chunk.js +0 -1
  275. package/build/email-translation-vi-json.9fb7e6d7.chunk.js +0 -1
  276. package/build/email-translation-zh-Hans-json.c6841563.chunk.js +0 -1
  277. package/build/email-translation-zh-json.7a2232ea.chunk.js +0 -1
  278. package/build/main.105dcf23.js +0 -2665
  279. package/build/review-workflows-settings-list-view.067e0c35.chunk.js +0 -56
  280. package/build/runtime~main.377a22d0.js +0 -2
  281. package/build/sso-settings-page.a29e6c38.chunk.js +0 -1
  282. package/build/transfer-tokens-list-page.0306652c.chunk.js +0 -16
  283. package/build/upload-settings.0af6edc5.chunk.js +0 -14
  284. package/dist/server/admin/server/src/bootstrap.d.ts +0 -2
  285. package/dist/server/admin/server/src/controllers/admin.d.ts +0 -42
  286. package/dist/server/admin/server/src/controllers/api-token.d.ts +0 -10
  287. package/dist/server/admin/server/src/controllers/authenticated-user.d.ts +0 -6
  288. package/dist/server/admin/server/src/controllers/authentication.d.ts +0 -12
  289. package/dist/server/admin/server/src/controllers/permission.d.ts +0 -13
  290. package/dist/server/admin/server/src/controllers/role.d.ts +0 -43
  291. package/dist/server/admin/server/src/controllers/transfer/token.d.ts +0 -9
  292. package/dist/server/admin/server/src/controllers/user.d.ts +0 -13
  293. package/dist/server/admin/server/src/destroy.d.ts +0 -2
  294. package/dist/server/admin/server/src/domain/condition/index.d.ts +0 -56
  295. package/dist/server/admin/server/src/domain/condition/index.js +0 -53
  296. package/dist/server/admin/server/src/domain/condition/index.js.map +0 -1
  297. package/dist/server/admin/server/src/domain/condition/provider.d.ts +0 -30
  298. package/dist/server/admin/server/src/domain/condition/provider.js +0 -37
  299. package/dist/server/admin/server/src/domain/condition/provider.js.map +0 -1
  300. package/dist/server/admin/server/src/index.d.ts +0 -10
  301. package/dist/server/admin/server/src/middlewares/data-transfer.d.ts +0 -2
  302. package/dist/server/admin/server/src/services/action.d.ts +0 -9
  303. package/dist/server/admin/server/src/services/auth.d.ts +0 -42
  304. package/dist/server/admin/server/src/services/condition.d.ts +0 -2
  305. package/dist/server/admin/server/src/services/content-type.d.ts +0 -51
  306. package/dist/server/admin/server/src/services/index.d.ts +0 -61
  307. package/dist/server/admin/server/src/services/metrics.d.ts +0 -7
  308. package/dist/server/admin/server/src/services/permission/engine.d.ts +0 -15
  309. package/dist/server/admin/server/src/services/permission/queries.d.ts +0 -44
  310. package/dist/server/admin/server/src/services/permission.d.ts +0 -67
  311. package/dist/server/admin/server/src/services/role.d.ts +0 -116
  312. package/dist/server/admin/server/src/services/transfer/token.d.ts +0 -103
  313. package/dist/server/admin/server/src/services/transfer/utils.d.ts +0 -19
  314. package/dist/server/admin/server/src/services/user.d.ts +0 -96
  315. package/dist/server/admin/server/src/strategies/admin.d.ts +0 -25
  316. package/dist/server/admin/server/src/strategies/api-token.d.ts +0 -60
  317. package/dist/server/admin/server/src/strategies/data-transfer.d.ts +0 -50
  318. package/dist/server/admin/server/src/validation/common-validators.d.ts +0 -59
  319. package/dist/server/admin/server/src/validation/permission.d.ts +0 -9
  320. package/dist/server/bootstrap.d.ts +0 -2
  321. package/dist/server/bootstrap.js +0 -84
  322. package/dist/server/bootstrap.js.map +0 -1
  323. package/dist/server/config/admin-actions.d.ts +0 -33
  324. package/dist/server/config/admin-actions.js +0 -219
  325. package/dist/server/config/admin-actions.js.map +0 -1
  326. package/dist/server/config/admin-conditions.d.ts +0 -46
  327. package/dist/server/config/admin-conditions.js +0 -29
  328. package/dist/server/config/admin-conditions.js.map +0 -1
  329. package/dist/server/config/email-templates/forgot-password.d.ts +0 -6
  330. package/dist/server/config/email-templates/forgot-password.js +0 -19
  331. package/dist/server/config/email-templates/forgot-password.js.map +0 -1
  332. package/dist/server/config/index.d.ts +0 -17
  333. package/dist/server/config/index.js +0 -14
  334. package/dist/server/config/index.js.map +0 -1
  335. package/dist/server/config/settings.d.ts +0 -7
  336. package/dist/server/config/settings.js +0 -11
  337. package/dist/server/config/settings.js.map +0 -1
  338. package/dist/server/content-types/Permission.d.ts +0 -62
  339. package/dist/server/content-types/Permission.js +0 -64
  340. package/dist/server/content-types/Permission.js.map +0 -1
  341. package/dist/server/content-types/Role.d.ts +0 -57
  342. package/dist/server/content-types/Role.js +0 -59
  343. package/dist/server/content-types/Role.js.map +0 -1
  344. package/dist/server/content-types/User.d.ts +0 -106
  345. package/dist/server/content-types/User.js +0 -109
  346. package/dist/server/content-types/User.js.map +0 -1
  347. package/dist/server/content-types/api-token-permission.d.ts +0 -35
  348. package/dist/server/content-types/api-token-permission.js +0 -37
  349. package/dist/server/content-types/api-token-permission.js.map +0 -1
  350. package/dist/server/content-types/api-token.d.ts +0 -73
  351. package/dist/server/content-types/api-token.js +0 -79
  352. package/dist/server/content-types/api-token.js.map +0 -1
  353. package/dist/server/content-types/index.d.ts +0 -437
  354. package/dist/server/content-types/index.js +0 -22
  355. package/dist/server/content-types/index.js.map +0 -1
  356. package/dist/server/content-types/transfer-token-permission.d.ts +0 -35
  357. package/dist/server/content-types/transfer-token-permission.js +0 -37
  358. package/dist/server/content-types/transfer-token-permission.js.map +0 -1
  359. package/dist/server/content-types/transfer-token.d.ts +0 -65
  360. package/dist/server/content-types/transfer-token.js +0 -67
  361. package/dist/server/content-types/transfer-token.js.map +0 -1
  362. package/dist/server/controllers/admin.d.ts +0 -42
  363. package/dist/server/controllers/admin.js +0 -131
  364. package/dist/server/controllers/admin.js.map +0 -1
  365. package/dist/server/controllers/api-token.d.ts +0 -10
  366. package/dist/server/controllers/api-token.js +0 -106
  367. package/dist/server/controllers/api-token.js.map +0 -1
  368. package/dist/server/controllers/authenticated-user.d.ts +0 -6
  369. package/dist/server/controllers/authenticated-user.js +0 -41
  370. package/dist/server/controllers/authenticated-user.js.map +0 -1
  371. package/dist/server/controllers/authentication.d.ts +0 -12
  372. package/dist/server/controllers/authentication.js +0 -130
  373. package/dist/server/controllers/authentication.js.map +0 -1
  374. package/dist/server/controllers/content-api.d.ts +0 -5
  375. package/dist/server/controllers/content-api.js +0 -13
  376. package/dist/server/controllers/content-api.js.map +0 -1
  377. package/dist/server/controllers/formatters/conditions.d.ts +0 -3
  378. package/dist/server/controllers/formatters/conditions.js +0 -9
  379. package/dist/server/controllers/formatters/conditions.js.map +0 -1
  380. package/dist/server/controllers/formatters/format-actions-by-sections.d.ts +0 -7
  381. package/dist/server/controllers/formatters/format-actions-by-sections.js +0 -36
  382. package/dist/server/controllers/formatters/format-actions-by-sections.js.map +0 -1
  383. package/dist/server/controllers/formatters/index.d.ts +0 -2
  384. package/dist/server/controllers/formatters/index.js +0 -11
  385. package/dist/server/controllers/formatters/index.js.map +0 -1
  386. package/dist/server/controllers/index.d.ts +0 -68
  387. package/dist/server/controllers/index.js +0 -51
  388. package/dist/server/controllers/index.js.map +0 -1
  389. package/dist/server/controllers/permission.d.ts +0 -13
  390. package/dist/server/controllers/permission.js +0 -38
  391. package/dist/server/controllers/permission.js.map +0 -1
  392. package/dist/server/controllers/role.d.ts +0 -43
  393. package/dist/server/controllers/role.js +0 -148
  394. package/dist/server/controllers/role.js.map +0 -1
  395. package/dist/server/controllers/transfer/index.d.ts +0 -4
  396. package/dist/server/controllers/transfer/index.js +0 -14
  397. package/dist/server/controllers/transfer/index.js.map +0 -1
  398. package/dist/server/controllers/transfer/runner.d.ts +0 -6
  399. package/dist/server/controllers/transfer/runner.js +0 -25
  400. package/dist/server/controllers/transfer/runner.js.map +0 -1
  401. package/dist/server/controllers/transfer/token.d.ts +0 -9
  402. package/dist/server/controllers/transfer/token.js +0 -100
  403. package/dist/server/controllers/transfer/token.js.map +0 -1
  404. package/dist/server/controllers/user.d.ts +0 -13
  405. package/dist/server/controllers/user.js +0 -105
  406. package/dist/server/controllers/user.js.map +0 -1
  407. package/dist/server/controllers/webhooks.d.ts +0 -10
  408. package/dist/server/controllers/webhooks.js +0 -100
  409. package/dist/server/controllers/webhooks.js.map +0 -1
  410. package/dist/server/destroy.d.ts +0 -2
  411. package/dist/server/destroy.js +0 -9
  412. package/dist/server/destroy.js.map +0 -1
  413. package/dist/server/domain/action/index.d.ts +0 -33
  414. package/dist/server/domain/action/index.js +0 -98
  415. package/dist/server/domain/action/index.js.map +0 -1
  416. package/dist/server/domain/action/provider.d.ts +0 -38
  417. package/dist/server/domain/action/provider.js +0 -66
  418. package/dist/server/domain/action/provider.js.map +0 -1
  419. package/dist/server/domain/condition/index.d.ts +0 -53
  420. package/dist/server/domain/condition/index.js +0 -56
  421. package/dist/server/domain/condition/index.js.map +0 -1
  422. package/dist/server/domain/condition/provider.d.ts +0 -30
  423. package/dist/server/domain/condition/provider.js +0 -37
  424. package/dist/server/domain/condition/provider.js.map +0 -1
  425. package/dist/server/domain/permission/index.d.ts +0 -77
  426. package/dist/server/domain/permission/index.js +0 -119
  427. package/dist/server/domain/permission/index.js.map +0 -1
  428. package/dist/server/domain/user.d.ts +0 -32
  429. package/dist/server/domain/user.js +0 -28
  430. package/dist/server/domain/user.js.map +0 -1
  431. package/dist/server/index.d.ts +0 -10
  432. package/dist/server/index.js +0 -27
  433. package/dist/server/index.js.map +0 -1
  434. package/dist/server/middlewares/data-transfer.d.ts +0 -2
  435. package/dist/server/middlewares/data-transfer.js +0 -21
  436. package/dist/server/middlewares/data-transfer.js.map +0 -1
  437. package/dist/server/middlewares/index.d.ts +0 -9
  438. package/dist/server/middlewares/index.js +0 -17
  439. package/dist/server/middlewares/index.js.map +0 -1
  440. package/dist/server/middlewares/rateLimit.d.ts +0 -5
  441. package/dist/server/middlewares/rateLimit.js +0 -42
  442. package/dist/server/middlewares/rateLimit.js.map +0 -1
  443. package/dist/server/policies/hasPermissions.d.ts +0 -6
  444. package/dist/server/policies/hasPermissions.js +0 -38
  445. package/dist/server/policies/hasPermissions.js.map +0 -1
  446. package/dist/server/policies/index.d.ts +0 -14
  447. package/dist/server/policies/index.js +0 -10
  448. package/dist/server/policies/index.js.map +0 -1
  449. package/dist/server/policies/isAuthenticatedAdmin.d.ts +0 -2
  450. package/dist/server/policies/isAuthenticatedAdmin.js +0 -6
  451. package/dist/server/policies/isAuthenticatedAdmin.js.map +0 -1
  452. package/dist/server/policies/isTelemetryEnabled.d.ts +0 -10
  453. package/dist/server/policies/isTelemetryEnabled.js +0 -18
  454. package/dist/server/policies/isTelemetryEnabled.js.map +0 -1
  455. package/dist/server/register.d.ts +0 -2
  456. package/dist/server/register.js +0 -18
  457. package/dist/server/register.js.map +0 -1
  458. package/dist/server/routes/admin.d.ts +0 -23
  459. package/dist/server/routes/admin.js +0 -72
  460. package/dist/server/routes/admin.js.map +0 -1
  461. package/dist/server/routes/api-tokens.d.ts +0 -14
  462. package/dist/server/routes/api-tokens.js +0 -71
  463. package/dist/server/routes/api-tokens.js.map +0 -1
  464. package/dist/server/routes/authentication.d.ts +0 -29
  465. package/dist/server/routes/authentication.js +0 -58
  466. package/dist/server/routes/authentication.js.map +0 -1
  467. package/dist/server/routes/content-api.d.ts +0 -9
  468. package/dist/server/routes/content-api.js +0 -21
  469. package/dist/server/routes/content-api.js.map +0 -1
  470. package/dist/server/routes/index.d.ts +0 -66
  471. package/dist/server/routes/index.js +0 -32
  472. package/dist/server/routes/index.js.map +0 -1
  473. package/dist/server/routes/permissions.d.ts +0 -9
  474. package/dist/server/routes/permissions.js +0 -21
  475. package/dist/server/routes/permissions.js.map +0 -1
  476. package/dist/server/routes/roles.d.ts +0 -14
  477. package/dist/server/routes/roles.js +0 -108
  478. package/dist/server/routes/roles.js.map +0 -1
  479. package/dist/server/routes/serve-admin-panel.d.ts +0 -5
  480. package/dist/server/routes/serve-admin-panel.js +0 -65
  481. package/dist/server/routes/serve-admin-panel.js.map +0 -1
  482. package/dist/server/routes/transfer.d.ts +0 -55
  483. package/dist/server/routes/transfer.js +0 -105
  484. package/dist/server/routes/transfer.js.map +0 -1
  485. package/dist/server/routes/users.d.ts +0 -14
  486. package/dist/server/routes/users.js +0 -89
  487. package/dist/server/routes/users.js.map +0 -1
  488. package/dist/server/routes/webhooks.d.ts +0 -14
  489. package/dist/server/routes/webhooks.js +0 -82
  490. package/dist/server/routes/webhooks.js.map +0 -1
  491. package/dist/server/services/action.d.ts +0 -9
  492. package/dist/server/services/action.js +0 -29
  493. package/dist/server/services/action.js.map +0 -1
  494. package/dist/server/services/api-token.d.ts +0 -102
  495. package/dist/server/services/api-token.js +0 -378
  496. package/dist/server/services/api-token.js.map +0 -1
  497. package/dist/server/services/auth.d.ts +0 -42
  498. package/dist/server/services/auth.js +0 -98
  499. package/dist/server/services/auth.js.map +0 -1
  500. package/dist/server/services/condition.d.ts +0 -2
  501. package/dist/server/services/condition.js +0 -11
  502. package/dist/server/services/condition.js.map +0 -1
  503. package/dist/server/services/constants.d.ts +0 -33
  504. package/dist/server/services/constants.js +0 -37
  505. package/dist/server/services/constants.js.map +0 -1
  506. package/dist/server/services/content-type.d.ts +0 -51
  507. package/dist/server/services/content-type.js +0 -158
  508. package/dist/server/services/content-type.js.map +0 -1
  509. package/dist/server/services/index.d.ts +0 -61
  510. package/dist/server/services/index.js +0 -57
  511. package/dist/server/services/index.js.map +0 -1
  512. package/dist/server/services/metrics.d.ts +0 -7
  513. package/dist/server/services/metrics.js +0 -37
  514. package/dist/server/services/metrics.js.map +0 -1
  515. package/dist/server/services/passport/local-strategy.d.ts +0 -3
  516. package/dist/server/services/passport/local-strategy.js +0 -28
  517. package/dist/server/services/passport/local-strategy.js.map +0 -1
  518. package/dist/server/services/passport.d.ts +0 -7
  519. package/dist/server/services/passport.js +0 -40
  520. package/dist/server/services/passport.js.map +0 -1
  521. package/dist/server/services/permission/engine.d.ts +0 -15
  522. package/dist/server/services/permission/engine.js +0 -67
  523. package/dist/server/services/permission/engine.js.map +0 -1
  524. package/dist/server/services/permission/permissions-manager/index.d.ts +0 -16
  525. package/dist/server/services/permission/permissions-manager/index.js +0 -48
  526. package/dist/server/services/permission/permissions-manager/index.js.map +0 -1
  527. package/dist/server/services/permission/permissions-manager/query-builders.d.ts +0 -3
  528. package/dist/server/services/permission/permissions-manager/query-builders.js +0 -66
  529. package/dist/server/services/permission/permissions-manager/query-builders.js.map +0 -1
  530. package/dist/server/services/permission/permissions-manager/sanitize.d.ts +0 -6
  531. package/dist/server/services/permission/permissions-manager/sanitize.js +0 -184
  532. package/dist/server/services/permission/permissions-manager/sanitize.js.map +0 -1
  533. package/dist/server/services/permission/permissions-manager/validate.d.ts +0 -5
  534. package/dist/server/services/permission/permissions-manager/validate.js +0 -134
  535. package/dist/server/services/permission/permissions-manager/validate.js.map +0 -1
  536. package/dist/server/services/permission/queries.d.ts +0 -44
  537. package/dist/server/services/permission/queries.js +0 -159
  538. package/dist/server/services/permission/queries.js.map +0 -1
  539. package/dist/server/services/permission/sections-builder/builder.d.ts +0 -39
  540. package/dist/server/services/permission/sections-builder/builder.js +0 -75
  541. package/dist/server/services/permission/sections-builder/builder.js.map +0 -1
  542. package/dist/server/services/permission/sections-builder/handlers.d.ts +0 -44
  543. package/dist/server/services/permission/sections-builder/handlers.js +0 -124
  544. package/dist/server/services/permission/sections-builder/handlers.js.map +0 -1
  545. package/dist/server/services/permission/sections-builder/index.d.ts +0 -8
  546. package/dist/server/services/permission/sections-builder/index.js +0 -39
  547. package/dist/server/services/permission/sections-builder/index.js.map +0 -1
  548. package/dist/server/services/permission/sections-builder/section.d.ts +0 -38
  549. package/dist/server/services/permission/sections-builder/section.js +0 -56
  550. package/dist/server/services/permission/sections-builder/section.js.map +0 -1
  551. package/dist/server/services/permission/sections-builder/utils.d.ts +0 -12
  552. package/dist/server/services/permission/sections-builder/utils.js +0 -23
  553. package/dist/server/services/permission/sections-builder/utils.js.map +0 -1
  554. package/dist/server/services/permission.d.ts +0 -67
  555. package/dist/server/services/permission.js +0 -33
  556. package/dist/server/services/permission.js.map +0 -1
  557. package/dist/server/services/project-settings.d.ts +0 -5
  558. package/dist/server/services/project-settings.js +0 -139
  559. package/dist/server/services/project-settings.js.map +0 -1
  560. package/dist/server/services/role.d.ts +0 -116
  561. package/dist/server/services/role.js +0 -382
  562. package/dist/server/services/role.js.map +0 -1
  563. package/dist/server/services/token.d.ts +0 -35
  564. package/dist/server/services/token.js +0 -58
  565. package/dist/server/services/token.js.map +0 -1
  566. package/dist/server/services/transfer/index.d.ts +0 -4
  567. package/dist/server/services/transfer/index.js +0 -33
  568. package/dist/server/services/transfer/index.js.map +0 -1
  569. package/dist/server/services/transfer/permission.d.ts +0 -6
  570. package/dist/server/services/transfer/permission.js +0 -20
  571. package/dist/server/services/transfer/permission.js.map +0 -1
  572. package/dist/server/services/transfer/token.d.ts +0 -84
  573. package/dist/server/services/transfer/token.js +0 -273
  574. package/dist/server/services/transfer/token.js.map +0 -1
  575. package/dist/server/services/transfer/utils.d.ts +0 -13
  576. package/dist/server/services/transfer/utils.js +0 -29
  577. package/dist/server/services/transfer/utils.js.map +0 -1
  578. package/dist/server/services/user.d.ts +0 -96
  579. package/dist/server/services/user.js +0 -311
  580. package/dist/server/services/user.js.map +0 -1
  581. package/dist/server/strategies/admin.d.ts +0 -25
  582. package/dist/server/strategies/admin.js +0 -44
  583. package/dist/server/strategies/admin.js.map +0 -1
  584. package/dist/server/strategies/api-token.d.ts +0 -60
  585. package/dist/server/strategies/api-token.js +0 -121
  586. package/dist/server/strategies/api-token.js.map +0 -1
  587. package/dist/server/strategies/data-transfer.d.ts +0 -66
  588. package/dist/server/strategies/data-transfer.js +0 -94
  589. package/dist/server/strategies/data-transfer.js.map +0 -1
  590. package/dist/server/strategies/index.d.ts +0 -17
  591. package/dist/server/strategies/index.js +0 -27
  592. package/dist/server/strategies/index.js.map +0 -1
  593. package/dist/server/types/src/types/utils/object.d.ts +0 -58
  594. package/dist/server/types/src/types/utils/object.js +0 -3
  595. package/dist/server/types/src/types/utils/object.js.map +0 -1
  596. package/dist/server/utils/index.d.ts +0 -1
  597. package/dist/server/utils/index.js +0 -9
  598. package/dist/server/utils/index.js.map +0 -1
  599. package/dist/server/utils/types.d.ts +0 -14
  600. package/dist/server/utils/types.js +0 -3
  601. package/dist/server/utils/types.js.map +0 -1
  602. package/dist/server/validation/action-provider.d.ts +0 -5
  603. package/dist/server/validation/action-provider.js +0 -58
  604. package/dist/server/validation/action-provider.js.map +0 -1
  605. package/dist/server/validation/api-tokens.d.ts +0 -7
  606. package/dist/server/validation/api-tokens.js +0 -36
  607. package/dist/server/validation/api-tokens.js.map +0 -1
  608. package/dist/server/validation/authentication/forgot-password.d.ts +0 -2
  609. package/dist/server/validation/authentication/forgot-password.js +0 -16
  610. package/dist/server/validation/authentication/forgot-password.js.map +0 -1
  611. package/dist/server/validation/authentication/index.d.ts +0 -5
  612. package/dist/server/validation/authentication/index.js +0 -17
  613. package/dist/server/validation/authentication/index.js.map +0 -1
  614. package/dist/server/validation/authentication/register.d.ts +0 -9
  615. package/dist/server/validation/authentication/register.js +0 -49
  616. package/dist/server/validation/authentication/register.js.map +0 -1
  617. package/dist/server/validation/authentication/renew-token.d.ts +0 -2
  618. package/dist/server/validation/authentication/renew-token.js +0 -6
  619. package/dist/server/validation/authentication/renew-token.js.map +0 -1
  620. package/dist/server/validation/authentication/reset-password.d.ts +0 -2
  621. package/dist/server/validation/authentication/reset-password.js +0 -17
  622. package/dist/server/validation/authentication/reset-password.js.map +0 -1
  623. package/dist/server/validation/common-functions/check-fields-are-correctly-nested.d.ts +0 -2
  624. package/dist/server/validation/common-functions/check-fields-are-correctly-nested.js +0 -26
  625. package/dist/server/validation/common-functions/check-fields-are-correctly-nested.js.map +0 -1
  626. package/dist/server/validation/common-functions/check-fields-dont-have-duplicates.d.ts +0 -2
  627. package/dist/server/validation/common-functions/check-fields-dont-have-duplicates.js +0 -18
  628. package/dist/server/validation/common-functions/check-fields-dont-have-duplicates.js.map +0 -1
  629. package/dist/server/validation/common-functions/index.d.ts +0 -3
  630. package/dist/server/validation/common-functions/index.js +0 -11
  631. package/dist/server/validation/common-functions/index.js.map +0 -1
  632. package/dist/server/validation/common-validators.d.ts +0 -59
  633. package/dist/server/validation/common-validators.js +0 -162
  634. package/dist/server/validation/common-validators.js.map +0 -1
  635. package/dist/server/validation/permission.d.ts +0 -9
  636. package/dist/server/validation/permission.js +0 -46
  637. package/dist/server/validation/permission.js.map +0 -1
  638. package/dist/server/validation/policies/hasPermissions.d.ts +0 -5
  639. package/dist/server/validation/policies/hasPermissions.js +0 -29
  640. package/dist/server/validation/policies/hasPermissions.js.map +0 -1
  641. package/dist/server/validation/project-settings.d.ts +0 -9
  642. package/dist/server/validation/project-settings.js +0 -44
  643. package/dist/server/validation/project-settings.js.map +0 -1
  644. package/dist/server/validation/role.d.ts +0 -11
  645. package/dist/server/validation/role.js +0 -62
  646. package/dist/server/validation/role.js.map +0 -1
  647. package/dist/server/validation/transfer/index.d.ts +0 -1
  648. package/dist/server/validation/transfer/index.js +0 -9
  649. package/dist/server/validation/transfer/index.js.map +0 -1
  650. package/dist/server/validation/transfer/token.d.ts +0 -7
  651. package/dist/server/validation/transfer/token.js +0 -46
  652. package/dist/server/validation/transfer/token.js.map +0 -1
  653. package/dist/server/validation/user.d.ts +0 -117
  654. package/dist/server/validation/user.js +0 -69
  655. package/dist/server/validation/user.js.map +0 -1
  656. /package/admin/src/hooks/{useAdminUsers/__mocks__/index.js → __mocks__/useAdminUsers.ts} +0 -0
  657. /package/admin/src/{hooks/useAdminRolePermissions/__mocks__/index.js → pages/SettingsPage/pages/Roles/hooks/__mocks__/useAdminRolePermissions.ts} +0 -0
@@ -1,6 +1,17 @@
1
1
  import * as React from 'react';
2
2
 
3
- import { Box, Typography, BaseLink } from '@strapi/design-system';
3
+ import {
4
+ Box,
5
+ Typography,
6
+ BaseLink,
7
+ Popover,
8
+ IconButton,
9
+ Field,
10
+ FieldLabel,
11
+ FieldInput,
12
+ Flex,
13
+ Button,
14
+ } from '@strapi/design-system';
4
15
  import {
5
16
  Code,
6
17
  Quote,
@@ -12,11 +23,24 @@ import {
12
23
  HeadingFour,
13
24
  HeadingFive,
14
25
  HeadingSix,
26
+ Trash,
27
+ Pencil,
28
+ BulletList,
29
+ NumberList,
15
30
  } from '@strapi/icons';
16
31
  import PropTypes from 'prop-types';
17
- import { Editor, Path, Transforms } from 'slate';
32
+ import { useIntl } from 'react-intl';
33
+ import { Editor, Path, Transforms, Range } from 'slate';
34
+ import { useSlate, ReactEditor } from 'slate-react';
18
35
  import styled, { css } from 'styled-components';
19
36
 
37
+ import { composeRefs } from '../../../utils';
38
+ import { editLink, removeLink } from '../utils/links';
39
+
40
+ const StyledBaseLink = styled(BaseLink)`
41
+ text-decoration: none;
42
+ `;
43
+
20
44
  const H1 = styled(Typography).attrs({ as: 'h1' })`
21
45
  font-size: ${42 / 16}rem;
22
46
  line-height: ${({ theme }) => theme.lineHeights[1]};
@@ -47,53 +71,28 @@ const H6 = styled(Typography).attrs({ as: 'h6' })`
47
71
  line-height: ${({ theme }) => theme.lineHeights[1]};
48
72
  `;
49
73
 
50
- const Heading = ({ attributes, children, element }) => {
51
- switch (element.level) {
52
- case 1:
53
- return <H1 {...attributes}>{children}</H1>;
54
- case 2:
55
- return <H2 {...attributes}>{children}</H2>;
56
- case 3:
57
- return <H3 {...attributes}>{children}</H3>;
58
- case 4:
59
- return <H4 {...attributes}>{children}</H4>;
60
- case 5:
61
- return <H5 {...attributes}>{children}</H5>;
62
- case 6:
63
- return <H6 {...attributes}>{children}</H6>;
64
- default: // do nothing
65
- return null;
66
- }
67
- };
68
-
69
- Heading.propTypes = {
70
- attributes: PropTypes.object.isRequired,
71
- children: PropTypes.node.isRequired,
72
- element: PropTypes.shape({
73
- level: PropTypes.oneOf([1, 2, 3, 4, 5, 6]).isRequired,
74
- }).isRequired,
75
- };
76
-
77
74
  const CodeBlock = styled.pre.attrs({ role: 'code' })`
78
75
  border-radius: ${({ theme }) => theme.borderRadius};
79
- background-color: #32324d; // since the color is same between the themes
76
+ background-color: ${({ theme }) => theme.colors.neutral100};
80
77
  max-width: 100%;
81
78
  overflow: auto;
82
- padding: ${({ theme }) => theme.spaces[2]};
79
+ padding: ${({ theme }) => `${theme.spaces[3]} ${theme.spaces[4]}`};
80
+ flex-shrink: 0;
83
81
  & > code {
84
- color: #839496; // TODO: to confirm with design and get theme color
82
+ font-family: 'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas,
83
+ monospace;
84
+ color: ${({ theme }) => theme.colors.neutral800};
85
85
  overflow: auto;
86
86
  max-width: 100%;
87
- padding: ${({ theme }) => theme.spaces[2]};
88
87
  }
89
88
  `;
90
89
 
91
90
  const Blockquote = styled.blockquote.attrs({ role: 'blockquote' })`
92
- margin: ${({ theme }) => `${theme.spaces[6]} 0`};
91
+ margin: ${({ theme }) => `${theme.spaces[4]} 0`};
93
92
  font-weight: ${({ theme }) => theme.fontWeights.regular};
94
- border-left: ${({ theme }) => `${theme.spaces[1]} solid ${theme.colors.neutral150}`};
95
- font-style: italic;
93
+ border-left: ${({ theme }) => `${theme.spaces[1]} solid ${theme.colors.neutral200}`};
96
94
  padding: ${({ theme }) => theme.spaces[2]} ${({ theme }) => theme.spaces[5]};
95
+ color: ${({ theme }) => theme.colors.neutral600};
97
96
  `;
98
97
 
99
98
  const listStyle = css`
@@ -134,35 +133,42 @@ List.propTypes = {
134
133
  }).isRequired,
135
134
  };
136
135
 
137
- const Img = styled.img`
138
- max-width: 100%;
139
- `;
140
-
141
- const Image = ({ attributes, children, element }) => {
142
- if (!element.image) return null;
143
- const { url, alternativeText, width, height } = element.image;
136
+ /**
137
+ * @param {import('slate').Editor} editor
138
+ * @param {Path} currentListPath
139
+ */
140
+ const replaceListWithEmptyBlock = (editor, currentListPath) => {
141
+ // Delete the empty list
142
+ Transforms.removeNodes(editor, { at: currentListPath });
144
143
 
145
- return (
146
- <Box {...attributes}>
147
- {children}
148
- <Box contentEditable={false}>
149
- <Img src={url} alt={alternativeText} width={width} height={height} />
150
- </Box>
151
- </Box>
152
- );
144
+ if (currentListPath[0] === 0) {
145
+ // If the list was the only (or first) block element then insert empty paragraph as editor needs default value
146
+ Transforms.insertNodes(
147
+ editor,
148
+ {
149
+ type: 'paragraph',
150
+ children: [{ type: 'text', text: '' }],
151
+ },
152
+ { at: currentListPath }
153
+ );
154
+ Transforms.select(editor, currentListPath);
155
+ }
153
156
  };
154
157
 
155
- Image.propTypes = {
156
- attributes: PropTypes.object.isRequired,
157
- children: PropTypes.node.isRequired,
158
- element: PropTypes.shape({
159
- image: PropTypes.shape({
160
- url: PropTypes.string.isRequired,
161
- alternativeText: PropTypes.string,
162
- width: PropTypes.number,
163
- height: PropTypes.number,
164
- }),
165
- }).isRequired,
158
+ /**
159
+ * Common handler for the backspace event on ordered and unordered lists
160
+ * @param {import('slate').Editor} editor
161
+ * @param {Event} event
162
+ */
163
+ const handleBackspaceKeyOnList = (editor, event) => {
164
+ const [currentListItem, currentListItemPath] = Editor.parent(editor, editor.selection.anchor);
165
+ const [currentList, currentListPath] = Editor.parent(editor, currentListItemPath);
166
+ const isListEmpty = currentList.children.length === 1 && currentListItem.children[0].text === '';
167
+
168
+ if (isListEmpty) {
169
+ event.preventDefault();
170
+ replaceListWithEmptyBlock(editor, currentListPath);
171
+ }
166
172
  };
167
173
 
168
174
  /**
@@ -170,18 +176,21 @@ Image.propTypes = {
170
176
  * @param {import('slate').Editor} editor
171
177
  */
172
178
  const handleEnterKeyOnList = (editor) => {
173
- // Check if the selected list item is empty
174
179
  const [currentListItem, currentListItemPath] = Editor.above(editor, {
175
180
  matchNode: (node) => node.type === 'list-item',
176
181
  });
177
- const isEmptyListItem =
182
+ const [currentList, currentListPath] = Editor.parent(editor, currentListItemPath);
183
+ const isListEmpty = currentList.children.length === 1 && currentListItem.children[0].text === '';
184
+ const isListItemEmpty =
178
185
  currentListItem.children.length === 1 && currentListItem.children[0].text === '';
179
186
 
180
- if (isEmptyListItem) {
187
+ if (isListEmpty) {
188
+ replaceListWithEmptyBlock(editor, currentListPath);
189
+ } else if (isListItemEmpty) {
181
190
  // Delete the empty list item
182
191
  Transforms.removeNodes(editor, { at: currentListItemPath });
183
192
 
184
- // And create a new paragraph below the parent list
193
+ // Create a new paragraph below the parent list
185
194
  const listNodeEntry = Editor.above(editor, { match: (n) => n.type === 'list' });
186
195
  const createdParagraphPath = Path.next(listNodeEntry[1]);
187
196
  Transforms.insertNodes(
@@ -193,14 +202,213 @@ const handleEnterKeyOnList = (editor) => {
193
202
  { at: createdParagraphPath }
194
203
  );
195
204
 
196
- // Move selection to the newly created paragraph
205
+ // Move the selection to the newly created paragraph
197
206
  Transforms.select(editor, createdParagraphPath);
198
207
  } else {
199
- // Otherwise just create a new list item by splitting the current one
200
- Transforms.splitNodes(editor, { always: true });
208
+ // Check if the cursor is at the end of the list item
209
+ const isNodeEnd = Editor.isEnd(editor, editor.selection.anchor, currentListItemPath);
210
+
211
+ if (isNodeEnd) {
212
+ // If there was nothing after the cursor, create a fresh new list item,
213
+ // in order to avoid carrying over the modifiers from the previous list item
214
+ Transforms.insertNodes(editor, { type: 'list-item', children: [{ type: 'text', text: '' }] });
215
+ } else {
216
+ // If there is something after the cursor, split the current list item,
217
+ // so that we keep the content and the modifiers
218
+ Transforms.splitNodes(editor);
219
+ }
201
220
  }
202
221
  };
203
222
 
223
+ // The max-height is decided with the design team, the 56px is the height of the toolbar
224
+ const Img = styled.img`
225
+ max-height: calc(512px - 56px);
226
+ max-width: 100%;
227
+ object-fit: contain;
228
+ `;
229
+
230
+ // Added a background color to the image wrapper to make it easier to recognize the image block
231
+ const Image = ({ attributes, children, element }) => {
232
+ if (!element.image) return null;
233
+ const { url, alternativeText, width, height } = element.image;
234
+
235
+ return (
236
+ <Box {...attributes}>
237
+ {children}
238
+ <Flex background="neutral100" contentEditable={false} justifyContent="center">
239
+ <Img src={url} alt={alternativeText} width={width} height={height} />
240
+ </Flex>
241
+ </Box>
242
+ );
243
+ };
244
+
245
+ Image.propTypes = {
246
+ attributes: PropTypes.object.isRequired,
247
+ children: PropTypes.node.isRequired,
248
+ element: PropTypes.shape({
249
+ image: PropTypes.shape({
250
+ url: PropTypes.string.isRequired,
251
+ alternativeText: PropTypes.string,
252
+ width: PropTypes.number,
253
+ height: PropTypes.number,
254
+ }),
255
+ }).isRequired,
256
+ };
257
+
258
+ const Link = React.forwardRef(({ element, children, ...attributes }, forwardedRef) => {
259
+ const { formatMessage } = useIntl();
260
+ const editor = useSlate();
261
+ const path = ReactEditor.findPath(editor, element);
262
+ const [popoverOpen, setPopoverOpen] = React.useState(
263
+ editor.lastInsertedLinkPath ? Path.equals(path, editor.lastInsertedLinkPath) : false
264
+ );
265
+ const [isEditing, setIsEditing] = React.useState(element.url === '');
266
+ const linkRef = React.useRef(null);
267
+ const elementText = element.children.map((child) => child.text).join('');
268
+ const [linkText, setLinkText] = React.useState(elementText);
269
+ const [linkUrl, setLinkUrl] = React.useState(element.url);
270
+
271
+ const handleOpenEditPopover = (e) => {
272
+ e.preventDefault();
273
+ setPopoverOpen(true);
274
+ };
275
+
276
+ const handleSave = (e) => {
277
+ e.stopPropagation();
278
+
279
+ // If the selection is collapsed, we select the parent node because we want all the link to be replaced
280
+ if (Range.isCollapsed(editor.selection)) {
281
+ const [, parentPath] = Editor.parent(editor, editor.selection.focus?.path);
282
+ Transforms.select(editor, parentPath);
283
+ }
284
+
285
+ editLink(editor, { url: linkUrl, text: linkText });
286
+ setIsEditing(false);
287
+ };
288
+
289
+ const handleCancel = () => {
290
+ setIsEditing(false);
291
+
292
+ if (element.url === '') {
293
+ removeLink(editor);
294
+ }
295
+ };
296
+
297
+ const handleDismiss = () => {
298
+ setPopoverOpen(false);
299
+
300
+ if (element.url === '') {
301
+ removeLink(editor);
302
+ }
303
+
304
+ ReactEditor.focus(editor);
305
+ };
306
+
307
+ const composedRefs = composeRefs(linkRef, forwardedRef);
308
+
309
+ return (
310
+ <>
311
+ <StyledBaseLink
312
+ {...attributes}
313
+ ref={composedRefs}
314
+ href={element.url}
315
+ onClick={handleOpenEditPopover}
316
+ color="primary600"
317
+ >
318
+ {children}
319
+ </StyledBaseLink>
320
+ {popoverOpen && (
321
+ <Popover source={linkRef} onDismiss={handleDismiss} padding={4} contentEditable={false}>
322
+ {isEditing ? (
323
+ <Flex as="form" onSubmit={handleSave} direction="column" gap={4}>
324
+ <Field width="300px">
325
+ <FieldLabel>
326
+ {formatMessage({
327
+ id: 'components.Blocks.popover.text',
328
+ defaultMessage: 'Text',
329
+ })}
330
+ </FieldLabel>
331
+ <FieldInput
332
+ name="text"
333
+ placeholder={formatMessage({
334
+ id: 'components.Blocks.popover.text.placeholder',
335
+ defaultMessage: 'Enter link text',
336
+ })}
337
+ value={linkText}
338
+ onChange={(e) => setLinkText(e.target.value)}
339
+ />
340
+ </Field>
341
+ <Field width="300px">
342
+ <FieldLabel>
343
+ {formatMessage({
344
+ id: 'components.Blocks.popover.link',
345
+ defaultMessage: 'Link',
346
+ })}
347
+ </FieldLabel>
348
+ <FieldInput
349
+ name="url"
350
+ placeholder="https://strapi.io"
351
+ value={linkUrl}
352
+ onChange={(e) => setLinkUrl(e.target.value)}
353
+ />
354
+ </Field>
355
+ <Flex justifyContent="end" width="100%" gap={2}>
356
+ <Button variant="tertiary" onClick={handleCancel}>
357
+ {formatMessage({
358
+ id: 'components.Blocks.popover.cancel',
359
+ defaultMessage: 'Cancel',
360
+ })}
361
+ </Button>
362
+ <Button type="submit" disabled={!linkText || !linkUrl}>
363
+ {formatMessage({
364
+ id: 'components.Blocks.popover.save',
365
+ defaultMessage: 'Save',
366
+ })}
367
+ </Button>
368
+ </Flex>
369
+ </Flex>
370
+ ) : (
371
+ <Flex direction="column" gap={4} alignItems="start" width="400px">
372
+ <Typography>{elementText}</Typography>
373
+ <Typography>
374
+ <StyledBaseLink href={element.url} target="_blank" color="primary600">
375
+ {element.url}
376
+ </StyledBaseLink>
377
+ </Typography>
378
+ <Flex justifyContent="end" width="100%" gap={2}>
379
+ <IconButton
380
+ icon={<Trash />}
381
+ size="L"
382
+ variant="danger"
383
+ onClick={() => removeLink(editor)}
384
+ label={formatMessage({
385
+ id: 'components.Blocks.popover.delete',
386
+ defaultMessage: 'Delete',
387
+ })}
388
+ />
389
+ <IconButton
390
+ icon={<Pencil />}
391
+ size="L"
392
+ onClick={() => setIsEditing(true)}
393
+ label={formatMessage({
394
+ id: 'components.Blocks.popover.edit',
395
+ defaultMessage: 'Edit',
396
+ })}
397
+ />
398
+ </Flex>
399
+ </Flex>
400
+ )}
401
+ </Popover>
402
+ )}
403
+ </>
404
+ );
405
+ });
406
+
407
+ Link.propTypes = {
408
+ element: PropTypes.object.isRequired,
409
+ children: PropTypes.node.isRequired,
410
+ };
411
+
204
412
  /**
205
413
  * Manages a store of all the available blocks.
206
414
  *
@@ -213,6 +421,7 @@ const handleEnterKeyOnList = (editor) => {
213
421
  * matchNode: (node: Object) => boolean,
214
422
  * isInBlocksSelector: true,
215
423
  * handleEnterKey: (editor: import('slate').Editor) => void,
424
+ * handleBackspaceKey?:(editor: import('slate').Editor, event: Event) => void,
216
425
  * }
217
426
  * }} an object containing rendering functions and metadata for different blocks, indexed by name.
218
427
  */
@@ -235,18 +444,25 @@ export function useBlocksStore() {
235
444
  matchNode: (node) => node.type === 'paragraph',
236
445
  isInBlocksSelector: true,
237
446
  handleEnterKey(editor) {
447
+ // We need to keep track of the initial position of the cursor
448
+ const anchorPathInitialPosition = editor.selection.anchor.path;
238
449
  /**
239
450
  * Split the nodes where the cursor is. This will create a new paragraph with the content
240
451
  * after the cursor, while retaining all the children, modifiers etc.
241
452
  */
242
453
  Transforms.splitNodes(editor, {
243
- /**
244
- * Makes sure we always create a new node,
245
- * even if there's nothing to the right of the cursor in the node.
246
- */
454
+ // Makes sure we always create a new node,
455
+ // even if there's nothing to the right of the cursor in the node.
247
456
  always: true,
248
457
  });
249
458
 
459
+ // Check if the created node is empty (if there was no text after the cursor in the node)
460
+ // This lets us know if we need to carry over the modifiers from the previous node
461
+ const [, parentBlockPath] = Editor.above(editor, {
462
+ match: (n) => n.type !== 'text',
463
+ });
464
+ const isNodeEnd = Editor.isEnd(editor, editor.selection.anchor, parentBlockPath);
465
+
250
466
  /**
251
467
  * Delete and recreate the node that was created at the right of the cursor.
252
468
  * This is to avoid node pollution
@@ -254,12 +470,25 @@ export function useBlocksStore() {
254
470
  * Select the parent of the selection because we want the full block, not the leaf.
255
471
  * And copy its children to make sure we keep the modifiers.
256
472
  */
257
- const [createdNode] = Editor.parent(editor, editor.selection.anchor.path);
473
+ const [fragmentedNode] = Editor.parent(editor, editor.selection.anchor.path);
258
474
  Transforms.removeNodes(editor, editor.selection);
259
- Transforms.insertNodes(editor, {
260
- type: 'paragraph',
261
- children: createdNode.children,
262
- });
475
+
476
+ // Check if after the current position there is another node
477
+ const hasNextNode = editor.children.length - anchorPathInitialPosition[0] > 1;
478
+
479
+ // Insert the new node at the right position.
480
+ // The next line after the editor selection if present or otherwise at the end of the editor.
481
+ Transforms.insertNodes(
482
+ editor,
483
+ {
484
+ type: 'paragraph',
485
+ // Don't carry over the modifiers from the previous node if there was no text after the cursor
486
+ children: isNodeEnd ? [{ type: 'text', text: '' }] : fragmentedNode.children,
487
+ },
488
+ {
489
+ at: hasNextNode ? [anchorPathInitialPosition[0] + 1] : [editor.children.length],
490
+ }
491
+ );
263
492
 
264
493
  /**
265
494
  * The new selection will by default be at the end of the created node.
@@ -267,11 +496,11 @@ export function useBlocksStore() {
267
496
  * Use slice(0, -1) to go 1 level higher in the tree,
268
497
  * so we go to the start of the node and not the start of the leaf.
269
498
  */
270
- Transforms.select(editor, editor.start(editor.selection.anchor.path.slice(0, -1)));
499
+ Transforms.select(editor, editor.start([anchorPathInitialPosition[0] + 1]));
271
500
  },
272
501
  },
273
502
  'heading-one': {
274
- renderElement: (props) => <Heading {...props} />,
503
+ renderElement: (props) => <H1 {...props.attributes}>{props.children}</H1>,
275
504
  icon: HeadingOne,
276
505
  label: {
277
506
  id: 'components.Blocks.blocks.heading1',
@@ -285,7 +514,7 @@ export function useBlocksStore() {
285
514
  isInBlocksSelector: true,
286
515
  },
287
516
  'heading-two': {
288
- renderElement: (props) => <Heading {...props} />,
517
+ renderElement: (props) => <H2 {...props.attributes}>{props.children}</H2>,
289
518
  icon: HeadingTwo,
290
519
  label: {
291
520
  id: 'components.Blocks.blocks.heading2',
@@ -299,7 +528,7 @@ export function useBlocksStore() {
299
528
  isInBlocksSelector: true,
300
529
  },
301
530
  'heading-three': {
302
- renderElement: (props) => <Heading {...props} />,
531
+ renderElement: (props) => <H3 {...props.attributes}>{props.children}</H3>,
303
532
  icon: HeadingThree,
304
533
  label: {
305
534
  id: 'components.Blocks.blocks.heading3',
@@ -313,7 +542,7 @@ export function useBlocksStore() {
313
542
  isInBlocksSelector: true,
314
543
  },
315
544
  'heading-four': {
316
- renderElement: (props) => <Heading {...props} />,
545
+ renderElement: (props) => <H4 {...props.attributes}>{props.children}</H4>,
317
546
  icon: HeadingFour,
318
547
  label: {
319
548
  id: 'components.Blocks.blocks.heading4',
@@ -327,7 +556,7 @@ export function useBlocksStore() {
327
556
  isInBlocksSelector: true,
328
557
  },
329
558
  'heading-five': {
330
- renderElement: (props) => <Heading {...props} />,
559
+ renderElement: (props) => <H5 {...props.attributes}>{props.children}</H5>,
331
560
  icon: HeadingFive,
332
561
  label: {
333
562
  id: 'components.Blocks.blocks.heading5',
@@ -341,7 +570,7 @@ export function useBlocksStore() {
341
570
  isInBlocksSelector: true,
342
571
  },
343
572
  'heading-six': {
344
- renderElement: (props) => <Heading {...props} />,
573
+ renderElement: (props) => <H6 {...props.attributes}>{props.children}</H6>,
345
574
  icon: HeadingSix,
346
575
  label: {
347
576
  id: 'components.Blocks.blocks.heading6',
@@ -354,73 +583,37 @@ export function useBlocksStore() {
354
583
  matchNode: (node) => node.type === 'heading' && node.level === 6,
355
584
  isInBlocksSelector: true,
356
585
  },
357
- link: {
358
- renderElement: (props) => (
359
- <BaseLink href={props.element.url} {...props.attributes}>
360
- {props.children}
361
- </BaseLink>
362
- ),
363
- value: {
364
- type: 'link',
365
- },
366
- matchNode: (node) => node.type === 'link',
367
- isInBlocksSelector: false,
368
- },
369
- code: {
370
- renderElement: (props) => (
371
- <CodeBlock {...props.attributes}>
372
- <code>{props.children}</code>
373
- </CodeBlock>
374
- ),
375
- icon: Code,
376
- label: {
377
- id: 'components.Blocks.blocks.code',
378
- defaultMessage: 'Code',
379
- },
380
- value: {
381
- type: 'code',
382
- },
383
- matchNode: (node) => node.type === 'code',
384
- isInBlocksSelector: true,
385
- handleEnterKey(editor) {
386
- // Insert a new line within the block
387
- Transforms.insertText(editor, '\n');
388
- },
389
- },
390
- quote: {
391
- renderElement: (props) => <Blockquote {...props.attributes}>{props.children}</Blockquote>,
392
- icon: Quote,
393
- label: {
394
- id: 'components.Blocks.blocks.quote',
395
- defaultMessage: 'Quote',
396
- },
397
- value: {
398
- type: 'quote',
399
- },
400
- matchNode: (node) => node.type === 'quote',
401
- isInBlocksSelector: true,
402
- },
403
586
  'list-ordered': {
404
587
  renderElement: (props) => <List {...props} />,
588
+ label: {
589
+ id: 'components.Blocks.blocks.orderedList',
590
+ defaultMessage: 'Numbered list',
591
+ },
405
592
  value: {
406
593
  type: 'list',
407
594
  format: 'ordered',
408
595
  },
596
+ icon: NumberList,
409
597
  matchNode: (node) => node.type === 'list' && node.format === 'ordered',
410
- // TODO add icon and label and set isInBlocksEditor to true
411
- isInBlocksSelector: false,
598
+ isInBlocksSelector: true,
412
599
  handleEnterKey: handleEnterKeyOnList,
600
+ handleBackspaceKey: handleBackspaceKeyOnList,
413
601
  },
414
602
  'list-unordered': {
415
603
  renderElement: (props) => <List {...props} />,
604
+ label: {
605
+ id: 'components.Blocks.blocks.unorderedList',
606
+ defaultMessage: 'Bulleted list',
607
+ },
416
608
  value: {
417
609
  type: 'list',
418
610
  format: 'unordered',
419
611
  },
612
+ icon: BulletList,
420
613
  matchNode: (node) => node.type === 'list' && node.format === 'unordered',
421
- // TODO add icon and label and set isInBlocksEditor to true
422
- isInBlocksSelector: false,
614
+ isInBlocksSelector: true,
423
615
  handleEnterKey: handleEnterKeyOnList,
616
+ handleBackspaceKey: handleBackspaceKeyOnList,
424
617
  },
425
618
  'list-item': {
426
619
  renderElement: (props) => (
@@ -434,6 +627,18 @@ export function useBlocksStore() {
434
627
  matchNode: (node) => node.type === 'list-item',
435
628
  isInBlocksSelector: false,
436
629
  },
630
+ link: {
631
+ renderElement: (props) => (
632
+ <Link element={props.element} {...props.attributes}>
633
+ {props.children}
634
+ </Link>
635
+ ),
636
+ value: {
637
+ type: 'link',
638
+ },
639
+ matchNode: (node) => node.type === 'link',
640
+ isInBlocksSelector: false,
641
+ },
437
642
  image: {
438
643
  renderElement: (props) => <Image {...props} />,
439
644
  icon: Picture,
@@ -447,5 +652,70 @@ export function useBlocksStore() {
447
652
  matchNode: (node) => node.type === 'image',
448
653
  isInBlocksSelector: true,
449
654
  },
655
+ quote: {
656
+ renderElement: (props) => <Blockquote {...props.attributes}>{props.children}</Blockquote>,
657
+ icon: Quote,
658
+ label: {
659
+ id: 'components.Blocks.blocks.quote',
660
+ defaultMessage: 'Quote',
661
+ },
662
+ value: {
663
+ type: 'quote',
664
+ },
665
+ matchNode: (node) => node.type === 'quote',
666
+ isInBlocksSelector: true,
667
+ handleEnterKey(editor) {
668
+ /**
669
+ * To determine if we should break out of the quote node, check 2 things:
670
+ * 1. If the cursor is at the end of the quote node
671
+ * 2. If the last line of the quote node is empty
672
+ */
673
+ const [quoteNode, quoteNodePath] = Editor.above(editor, {
674
+ match: (n) => n.type === 'quote',
675
+ });
676
+ const isNodeEnd = Editor.isEnd(editor, editor.selection.anchor, quoteNodePath);
677
+ const isEmptyLine = quoteNode.children.at(-1).text.endsWith('\n');
678
+
679
+ if (isNodeEnd && isEmptyLine) {
680
+ // Remove the last line break
681
+ Transforms.delete(editor, { distance: 1, unit: 'character', reverse: true });
682
+ // Break out of the quote node new paragraph
683
+ Transforms.insertNodes(editor, {
684
+ type: 'paragraph',
685
+ children: [{ type: 'text', text: '' }],
686
+ });
687
+ } else {
688
+ // Otherwise insert a new line within the quote node
689
+ Transforms.insertText(editor, '\n');
690
+
691
+ // If there's nothing after the cursor, disable modifiers
692
+ if (isNodeEnd) {
693
+ Editor.removeMark(editor, 'bold');
694
+ Editor.removeMark(editor, 'italic');
695
+ }
696
+ }
697
+ },
698
+ },
699
+ code: {
700
+ renderElement: (props) => (
701
+ <CodeBlock {...props.attributes}>
702
+ <code>{props.children}</code>
703
+ </CodeBlock>
704
+ ),
705
+ icon: Code,
706
+ label: {
707
+ id: 'components.Blocks.blocks.code',
708
+ defaultMessage: 'Code',
709
+ },
710
+ value: {
711
+ type: 'code',
712
+ },
713
+ matchNode: (node) => node.type === 'code',
714
+ isInBlocksSelector: true,
715
+ handleEnterKey(editor) {
716
+ // Insert a new line within the block
717
+ Transforms.insertText(editor, '\n');
718
+ },
719
+ },
450
720
  };
451
721
  }