@strapi/content-manager 5.49.0 → 5.50.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 (381) hide show
  1. package/dist/admin/components/ComponentIcon.js.map +1 -1
  2. package/dist/admin/components/ComponentIcon.mjs.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  4. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  5. package/dist/admin/components/DragLayer.js.map +1 -1
  6. package/dist/admin/components/DragLayer.mjs.map +1 -1
  7. package/dist/admin/components/LeftMenu.js +66 -67
  8. package/dist/admin/components/LeftMenu.js.map +1 -1
  9. package/dist/admin/components/LeftMenu.mjs +68 -69
  10. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  11. package/dist/admin/history/components/VersionInputRenderer.js +3 -3
  12. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  13. package/dist/admin/history/components/VersionInputRenderer.mjs +3 -3
  14. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  15. package/dist/admin/history/routes.js.map +1 -1
  16. package/dist/admin/history/routes.mjs.map +1 -1
  17. package/dist/admin/hooks/useDocumentActions.js +15 -8
  18. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  19. package/dist/admin/hooks/useDocumentActions.mjs +15 -8
  20. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  21. package/dist/admin/hooks/useDocumentContext.js.map +1 -1
  22. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -1
  23. package/dist/admin/index.js.map +1 -1
  24. package/dist/admin/index.mjs.map +1 -1
  25. package/dist/admin/layout.js +21 -7
  26. package/dist/admin/layout.js.map +1 -1
  27. package/dist/admin/layout.mjs +23 -9
  28. package/dist/admin/layout.mjs.map +1 -1
  29. package/dist/admin/pages/ComponentConfigurationPage.js.map +1 -1
  30. package/dist/admin/pages/ComponentConfigurationPage.mjs.map +1 -1
  31. package/dist/admin/pages/EditView/components/DocumentActions.js +168 -78
  32. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  33. package/dist/admin/pages/EditView/components/DocumentActions.mjs +168 -79
  34. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  35. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js +6 -3
  36. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs +6 -3
  38. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js +1 -1
  40. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.mjs +1 -1
  42. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.mjs.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  44. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.js.map +1 -1
  46. package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.mjs.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +1 -1
  48. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs +1 -1
  50. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +2 -1
  52. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +2 -1
  54. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +6 -1
  56. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +2 -1
  58. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +6 -2
  60. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +3 -2
  62. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +6 -1
  64. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +6 -1
  66. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +8 -5
  68. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +8 -5
  70. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/UID.js +5 -4
  72. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +5 -4
  74. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  76. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js +2 -2
  78. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.mjs +2 -2
  80. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.mjs.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
  82. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
  83. package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
  84. package/dist/admin/pages/EditView/components/Panels.mjs.map +1 -1
  85. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  86. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  87. package/dist/admin/pages/EditView/utils/draftRelationCounts.js +117 -0
  88. package/dist/admin/pages/EditView/utils/draftRelationCounts.js.map +1 -0
  89. package/dist/admin/pages/EditView/utils/draftRelationCounts.mjs +109 -0
  90. package/dist/admin/pages/EditView/utils/draftRelationCounts.mjs.map +1 -0
  91. package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
  92. package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
  93. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js.map +1 -1
  94. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs.map +1 -1
  95. package/dist/admin/pages/ListView/ListViewPage.js +71 -11
  96. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  97. package/dist/admin/pages/ListView/ListViewPage.mjs +73 -13
  98. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  99. package/dist/admin/pages/ListView/components/BulkActions/Actions.js +2 -1
  100. package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
  101. package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs +2 -1
  102. package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs.map +1 -1
  103. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +1 -1
  104. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  105. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +1 -1
  106. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  107. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  108. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  109. package/dist/admin/pages/ListView/components/Filters.js +5 -3
  110. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  111. package/dist/admin/pages/ListView/components/Filters.mjs +5 -3
  112. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  113. package/dist/admin/pages/ListView/components/TableActions.js +37 -0
  114. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  115. package/dist/admin/pages/ListView/components/TableActions.mjs +39 -2
  116. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  117. package/dist/admin/pages/ListView/components/TableCells/CellContent.js +28 -3
  118. package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
  119. package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs +28 -4
  120. package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
  121. package/dist/admin/pages/ListView/components/TableCells/CellValue.js +8 -7
  122. package/dist/admin/pages/ListView/components/TableCells/CellValue.js.map +1 -1
  123. package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs +8 -7
  124. package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs.map +1 -1
  125. package/dist/admin/pages/ListView/components/TableCells/Components.js.map +1 -1
  126. package/dist/admin/pages/ListView/components/TableCells/Components.mjs.map +1 -1
  127. package/dist/admin/pages/ListView/components/TableCells/Relations.js +1 -1
  128. package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
  129. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs +1 -1
  130. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
  131. package/dist/admin/preview/pages/Preview.js +40 -11
  132. package/dist/admin/preview/pages/Preview.js.map +1 -1
  133. package/dist/admin/preview/pages/Preview.mjs +41 -12
  134. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  135. package/dist/admin/preview/routes.js.map +1 -1
  136. package/dist/admin/preview/routes.mjs.map +1 -1
  137. package/dist/admin/preview/utils/constants.js +9 -15
  138. package/dist/admin/preview/utils/constants.js.map +1 -1
  139. package/dist/admin/preview/utils/constants.mjs +10 -15
  140. package/dist/admin/preview/utils/constants.mjs.map +1 -1
  141. package/dist/admin/preview/utils/fieldUtils.js.map +1 -1
  142. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -1
  143. package/dist/admin/router.js.map +1 -1
  144. package/dist/admin/router.mjs.map +1 -1
  145. package/dist/admin/services/documents.js.map +1 -1
  146. package/dist/admin/services/documents.mjs.map +1 -1
  147. package/dist/admin/src/components/ComponentIcon.d.ts +4 -3
  148. package/dist/admin/src/components/DragLayer.d.ts +1 -1
  149. package/dist/admin/src/components/InjectionZone.d.ts +1 -2
  150. package/dist/admin/src/content-manager.d.ts +15 -15
  151. package/dist/admin/src/history/routes.d.ts +2 -2
  152. package/dist/admin/src/history/services/historyVersion.d.ts +3 -3
  153. package/dist/admin/src/hooks/useContentTypeSchema.d.ts +1 -1
  154. package/dist/admin/src/hooks/useDocument.d.ts +8 -9
  155. package/dist/admin/src/hooks/useDocumentActions.d.ts +17 -16
  156. package/dist/admin/src/hooks/useDocumentContext.d.ts +1 -1
  157. package/dist/admin/src/hooks/useDocumentLayout.d.ts +3 -3
  158. package/dist/admin/src/hooks/useDragAndDrop.d.ts +4 -4
  159. package/dist/admin/src/hooks/useKeyboardDragAndDrop.d.ts +1 -1
  160. package/dist/admin/src/hooks/usePersistentQueryParams.d.ts +0 -1
  161. package/dist/admin/src/index.d.ts +1 -1
  162. package/dist/admin/src/modules/app.d.ts +5 -5
  163. package/dist/admin/src/pages/EditView/EditViewPage.d.ts +1 -1
  164. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +12 -1
  165. package/dist/admin/src/pages/EditView/components/EditorToolbarObserver.d.ts +1 -1
  166. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.d.ts +1 -1
  167. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.d.ts +2 -2
  168. package/dist/admin/src/pages/EditView/components/FormInputs/ComponentContext.d.ts +1 -2
  169. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +4 -4
  170. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -1
  171. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/Editor.d.ts +1 -1
  172. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.d.ts +2 -2
  173. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +19 -20
  174. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.d.ts +7 -1
  175. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +12 -12
  176. package/dist/admin/src/pages/EditView/utils/draftRelationCounts.d.ts +26 -0
  177. package/dist/admin/src/pages/ListView/components/BulkActions/PublishAction.d.ts +1 -1
  178. package/dist/admin/src/pages/ListView/components/Filters.d.ts +1 -1
  179. package/dist/admin/src/pages/ListView/components/TableCells/CellContent.d.ts +11 -2
  180. package/dist/admin/src/pages/ListView/components/TableCells/CellValue.d.ts +1 -1
  181. package/dist/admin/src/pages/formatComponentConfigurationEditLayout.d.ts +1 -1
  182. package/dist/admin/src/preview/routes.d.ts +2 -2
  183. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  184. package/dist/admin/src/preview/utils/constants.d.ts +1 -7
  185. package/dist/admin/src/preview/utils/getSendMessage.d.ts +0 -1
  186. package/dist/admin/src/router.d.ts +2 -2
  187. package/dist/admin/src/services/api.d.ts +1 -1
  188. package/dist/admin/src/services/components.d.ts +2 -2
  189. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  190. package/dist/admin/src/services/documents.d.ts +49 -89
  191. package/dist/admin/src/services/homepage.d.ts +1 -1
  192. package/dist/admin/src/services/init.d.ts +1 -1
  193. package/dist/admin/src/services/relations.d.ts +8 -22
  194. package/dist/admin/src/services/uid.d.ts +8 -8
  195. package/dist/admin/src/utils/api.d.ts +2 -2
  196. package/dist/admin/src/utils/conditionalFields.d.ts +1 -0
  197. package/dist/admin/src/utils/layouts/normalizeContentManagerLayout.d.ts +4 -4
  198. package/dist/admin/src/utils/objects.d.ts +7 -4
  199. package/dist/admin/src/utils/users.d.ts +1 -1
  200. package/dist/admin/src/utils/validation.d.ts +2 -1
  201. package/dist/admin/translations/en.json.js +6 -2
  202. package/dist/admin/translations/en.json.js.map +1 -1
  203. package/dist/admin/translations/en.json.mjs +6 -2
  204. package/dist/admin/translations/en.json.mjs.map +1 -1
  205. package/dist/admin/translations/ja.json.js +262 -87
  206. package/dist/admin/translations/ja.json.js.map +1 -1
  207. package/dist/admin/translations/ja.json.mjs +262 -87
  208. package/dist/admin/translations/ja.json.mjs.map +1 -1
  209. package/dist/admin/utils/api.js +6 -1
  210. package/dist/admin/utils/api.js.map +1 -1
  211. package/dist/admin/utils/api.mjs +6 -1
  212. package/dist/admin/utils/api.mjs.map +1 -1
  213. package/dist/admin/utils/conditionalFields.js.map +1 -1
  214. package/dist/admin/utils/conditionalFields.mjs.map +1 -1
  215. package/dist/admin/utils/objects.js +43 -13
  216. package/dist/admin/utils/objects.js.map +1 -1
  217. package/dist/admin/utils/objects.mjs +43 -13
  218. package/dist/admin/utils/objects.mjs.map +1 -1
  219. package/dist/admin/utils/validation.js.map +1 -1
  220. package/dist/admin/utils/validation.mjs.map +1 -1
  221. package/dist/server/controllers/collection-types.js +6 -3
  222. package/dist/server/controllers/collection-types.js.map +1 -1
  223. package/dist/server/controllers/collection-types.mjs +6 -3
  224. package/dist/server/controllers/collection-types.mjs.map +1 -1
  225. package/dist/server/controllers/relations.js +5 -4
  226. package/dist/server/controllers/relations.js.map +1 -1
  227. package/dist/server/controllers/relations.mjs +5 -4
  228. package/dist/server/controllers/relations.mjs.map +1 -1
  229. package/dist/server/controllers/single-types.js +2 -2
  230. package/dist/server/controllers/single-types.js.map +1 -1
  231. package/dist/server/controllers/single-types.mjs +2 -2
  232. package/dist/server/controllers/single-types.mjs.map +1 -1
  233. package/dist/server/controllers/validation/model-configuration.js +3 -1
  234. package/dist/server/controllers/validation/model-configuration.js.map +1 -1
  235. package/dist/server/controllers/validation/model-configuration.mjs +3 -1
  236. package/dist/server/controllers/validation/model-configuration.mjs.map +1 -1
  237. package/dist/server/homepage/services/homepage.js +27 -7
  238. package/dist/server/homepage/services/homepage.js.map +1 -1
  239. package/dist/server/homepage/services/homepage.mjs +27 -7
  240. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  241. package/dist/server/preview/controllers/preview.js +9 -0
  242. package/dist/server/preview/controllers/preview.js.map +1 -1
  243. package/dist/server/preview/controllers/preview.mjs +9 -0
  244. package/dist/server/preview/controllers/preview.mjs.map +1 -1
  245. package/dist/server/preview/controllers/previewScript.js +1450 -0
  246. package/dist/server/preview/routes/preview.js +11 -0
  247. package/dist/server/preview/routes/preview.js.map +1 -1
  248. package/dist/server/preview/routes/preview.mjs +11 -0
  249. package/dist/server/preview/routes/preview.mjs.map +1 -1
  250. package/dist/server/services/document-manager.js +13 -19
  251. package/dist/server/services/document-manager.js.map +1 -1
  252. package/dist/server/services/document-manager.mjs +13 -19
  253. package/dist/server/services/document-manager.mjs.map +1 -1
  254. package/dist/server/services/permission.js +4 -3
  255. package/dist/server/services/permission.js.map +1 -1
  256. package/dist/server/services/permission.mjs +4 -3
  257. package/dist/server/services/permission.mjs.map +1 -1
  258. package/dist/server/services/utils/draft-relations.js +9 -0
  259. package/dist/server/services/utils/draft-relations.js.map +1 -0
  260. package/dist/server/services/utils/draft-relations.mjs +7 -0
  261. package/dist/server/services/utils/draft-relations.mjs.map +1 -0
  262. package/dist/server/services/utils/draft.js +118 -25
  263. package/dist/server/services/utils/draft.js.map +1 -1
  264. package/dist/server/services/utils/draft.mjs +118 -25
  265. package/dist/server/services/utils/draft.mjs.map +1 -1
  266. package/dist/server/services/utils/populate.js +15 -1
  267. package/dist/server/services/utils/populate.js.map +1 -1
  268. package/dist/server/services/utils/populate.mjs +15 -1
  269. package/dist/server/services/utils/populate.mjs.map +1 -1
  270. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  271. package/dist/server/src/controllers/index.d.ts +1 -1
  272. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  273. package/dist/server/src/controllers/utils/clone.d.ts.map +1 -1
  274. package/dist/server/src/controllers/utils/document-status.d.ts +1 -1
  275. package/dist/server/src/controllers/utils/document-status.d.ts.map +1 -1
  276. package/dist/server/src/controllers/utils/metadata.d.ts +5 -5
  277. package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
  278. package/dist/server/src/controllers/validation/dimensions.d.ts.map +1 -1
  279. package/dist/server/src/controllers/validation/index.d.ts +3 -3
  280. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  281. package/dist/server/src/controllers/validation/model-configuration.d.ts.map +1 -1
  282. package/dist/server/src/controllers/validation/relations.d.ts +2 -2
  283. package/dist/server/src/history/controllers/history-version.d.ts +1 -7
  284. package/dist/server/src/history/controllers/history-version.d.ts.map +1 -1
  285. package/dist/server/src/history/controllers/index.d.ts +2 -1
  286. package/dist/server/src/history/controllers/index.d.ts.map +1 -1
  287. package/dist/server/src/history/controllers/validation/history-version.d.ts +1 -1
  288. package/dist/server/src/history/services/history.d.ts +0 -2
  289. package/dist/server/src/history/services/history.d.ts.map +1 -1
  290. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  291. package/dist/server/src/history/services/utils.d.ts +3 -3
  292. package/dist/server/src/history/services/utils.d.ts.map +1 -1
  293. package/dist/server/src/history/utils.d.ts +1 -18
  294. package/dist/server/src/history/utils.d.ts.map +1 -1
  295. package/dist/server/src/homepage/controllers/homepage.d.ts +0 -1
  296. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -1
  297. package/dist/server/src/homepage/controllers/index.d.ts +2 -1
  298. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -1
  299. package/dist/server/src/homepage/index.d.ts +4 -8
  300. package/dist/server/src/homepage/index.d.ts.map +1 -1
  301. package/dist/server/src/homepage/services/homepage-query-utils.d.ts.map +1 -1
  302. package/dist/server/src/homepage/services/homepage.d.ts +3 -4
  303. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  304. package/dist/server/src/homepage/services/index.d.ts +4 -8
  305. package/dist/server/src/homepage/services/index.d.ts.map +1 -1
  306. package/dist/server/src/index.d.ts +79 -85
  307. package/dist/server/src/index.d.ts.map +1 -1
  308. package/dist/server/src/mcp/derive-content-type-mcp-tools.d.ts.map +1 -1
  309. package/dist/server/src/mcp/handlers/collection-handlers.d.ts.map +1 -1
  310. package/dist/server/src/mcp/handlers/single-type-handlers.d.ts.map +1 -1
  311. package/dist/server/src/mcp/permissions.d.ts +1 -1
  312. package/dist/server/src/mcp/permissions.d.ts.map +1 -1
  313. package/dist/server/src/mcp/register-content-manager-mcp-tools.d.ts.map +1 -1
  314. package/dist/server/src/mcp/sanitizers/shape-relations.d.ts.map +1 -1
  315. package/dist/server/src/mcp/schemas/blocks-schema.d.ts.map +1 -1
  316. package/dist/server/src/mcp/schemas/data-schema.d.ts.map +1 -1
  317. package/dist/server/src/mcp/schemas/filters-schema.d.ts.map +1 -1
  318. package/dist/server/src/mcp/schemas/output-schemas.d.ts.map +1 -1
  319. package/dist/server/src/mcp/schemas/sort-schema.d.ts.map +1 -1
  320. package/dist/server/src/mcp/utils.d.ts.map +1 -1
  321. package/dist/server/src/middlewares/routing.d.ts.map +1 -1
  322. package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
  323. package/dist/server/src/policies/index.d.ts.map +1 -1
  324. package/dist/server/src/preview/controllers/index.d.ts +2 -1
  325. package/dist/server/src/preview/controllers/index.d.ts.map +1 -1
  326. package/dist/server/src/preview/controllers/preview.d.ts +5 -0
  327. package/dist/server/src/preview/controllers/preview.d.ts.map +1 -1
  328. package/dist/server/src/preview/controllers/validation/preview.d.ts +1 -2
  329. package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -1
  330. package/dist/server/src/preview/routes/preview.d.ts.map +1 -1
  331. package/dist/server/src/preview/services/index.d.ts +1 -1
  332. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  333. package/dist/server/src/preview/services/preview-config.d.ts +1 -1
  334. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  335. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  336. package/dist/server/src/preview/utils.d.ts +1 -16
  337. package/dist/server/src/preview/utils.d.ts.map +1 -1
  338. package/dist/server/src/services/components.d.ts +2 -2
  339. package/dist/server/src/services/components.d.ts.map +1 -1
  340. package/dist/server/src/services/configuration.d.ts.map +1 -1
  341. package/dist/server/src/services/content-types.d.ts.map +1 -1
  342. package/dist/server/src/services/data-mapper.d.ts +5 -5
  343. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  344. package/dist/server/src/services/document-manager.d.ts +14 -14
  345. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  346. package/dist/server/src/services/document-metadata.d.ts +6 -6
  347. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  348. package/dist/server/src/services/field-sizes.d.ts +2 -2
  349. package/dist/server/src/services/field-sizes.d.ts.map +1 -1
  350. package/dist/server/src/services/index.d.ts +78 -84
  351. package/dist/server/src/services/index.d.ts.map +1 -1
  352. package/dist/server/src/services/metrics.d.ts.map +1 -1
  353. package/dist/server/src/services/permission-checker.d.ts +12 -31
  354. package/dist/server/src/services/permission-checker.d.ts.map +1 -1
  355. package/dist/server/src/services/permission.d.ts.map +1 -1
  356. package/dist/server/src/services/populate-builder.d.ts +4 -4
  357. package/dist/server/src/services/populate-builder.d.ts.map +1 -1
  358. package/dist/server/src/services/uid.d.ts.map +1 -1
  359. package/dist/server/src/services/utils/configuration/attributes.d.ts.map +1 -1
  360. package/dist/server/src/services/utils/configuration/settings.d.ts.map +1 -1
  361. package/dist/server/src/services/utils/count.d.ts.map +1 -1
  362. package/dist/server/src/services/utils/draft-relations.d.ts +19 -0
  363. package/dist/server/src/services/utils/draft-relations.d.ts.map +1 -0
  364. package/dist/server/src/services/utils/draft.d.ts +8 -7
  365. package/dist/server/src/services/utils/draft.d.ts.map +1 -1
  366. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  367. package/dist/server/src/services/utils/store.d.ts.map +1 -1
  368. package/dist/server/src/utils/index.d.ts.map +1 -1
  369. package/dist/server/src/validation/policies/hasPermissions.d.ts +1 -1
  370. package/dist/server/src/validation/zod.d.ts +1 -1
  371. package/dist/server/src/validation/zod.d.ts.map +1 -1
  372. package/dist/shared/contracts/collection-types.d.ts +4 -1
  373. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  374. package/dist/shared/contracts/single-types.d.ts +4 -1
  375. package/dist/shared/contracts/single-types.d.ts.map +1 -1
  376. package/package.json +9 -9
  377. package/dist/admin/preview/utils/previewScript.js +0 -1068
  378. package/dist/admin/preview/utils/previewScript.js.map +0 -1
  379. package/dist/admin/preview/utils/previewScript.mjs +0 -1066
  380. package/dist/admin/preview/utils/previewScript.mjs.map +0 -1
  381. package/dist/admin/src/preview/utils/previewScript.d.ts +0 -32
@@ -1 +1 @@
1
- {"version":3,"file":"BlocksToolbar.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport * as Toolbar from '@radix-ui/react-toolbar';\nimport { useIsMobile } from '@strapi/admin/strapi-admin';\nimport {\n Flex,\n Tooltip,\n SingleSelect,\n SingleSelectOption,\n Box,\n FlexComponent,\n BoxComponent,\n Menu,\n} from '@strapi/design-system';\nimport { Link, ArrowUp, ArrowDown } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { Editor, Transforms, Element as SlateElement, Node, type Ancestor } from 'slate';\nimport { ReactEditor } from 'slate-react';\nimport { css, styled } from 'styled-components';\n\nimport { getTranslation } from '../../../../../utils/translations';\nimport { EditorToolbarObserver, type ObservedComponent } from '../../EditorToolbarObserver';\n\nimport { insertLink } from './Blocks/Link';\nimport {\n type BlocksStore,\n type SelectorBlock,\n type SelectorBlockKey,\n isSelectorBlockKey,\n useBlocksEditorContext,\n} from './BlocksEditor';\nimport { type Block, getEntries, getKeys } from './utils/types';\n\nconst ToolbarWrapper = styled<FlexComponent>(Flex)`\n &[aria-disabled='true'] {\n cursor: not-allowed;\n background: ${({ theme }) => theme.colors.neutral150};\n }\n`;\n\nconst ToolbarSeparator = styled(Toolbar.Separator)`\n background: ${({ theme }) => theme.colors.neutral150};\n width: 1px;\n height: 2.4rem;\n margin-left: ${({ theme }) => theme.spaces[1]};\n margin-right: ${({ theme }) => theme.spaces[1]};\n\n ${({ theme }) => theme.breakpoints.medium} {\n margin-left: ${({ theme }) => theme.spaces[2]};\n margin-right: ${({ theme }) => theme.spaces[2]};\n }\n`;\n\nconst FlexButton = styled<FlexComponent<'button'>>(Flex)`\n // Inherit the not-allowed cursor from ToolbarWrapper when disabled\n &[aria-disabled] {\n cursor: not-allowed;\n }\n\n &[aria-disabled='false'] {\n cursor: pointer;\n\n // Only apply hover styles if the button is enabled on desktop\n ${({ theme }) => theme.breakpoints.medium} {\n &:hover {\n background: ${({ theme }) => theme.colors.primary100};\n }\n }\n }\n`;\n\nconst SelectWrapper = styled<BoxComponent>(Box)`\n // Styling changes to SingleSelect component don't work, so adding wrapper to target SingleSelect\n div[role='combobox'] {\n border: none;\n cursor: pointer;\n min-height: unset;\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n padding-left: ${({ theme }) => theme.spaces[4]};\n padding-right: ${({ theme }) => theme.spaces[4]};\n gap: ${({ theme }) => theme.spaces[2]};\n \n ${({ theme }) => theme.breakpoints.medium} {\n padding-top: ${({ theme }) => theme.spaces[1]};\n padding-bottom: ${({ theme }) => theme.spaces[1]};\n gap: ${({ theme }) => theme.spaces[4]};\n }\n\n &[aria-disabled='false']:hover {\n cursor: pointer;\n background: ${({ theme }) => theme.colors.primary100};\n }\n\n &[aria-disabled] {\n background: transparent;\n cursor: inherit;\n\n // Select text and icons should also have disabled color\n span {\n color: ${({ theme }) => theme.colors.neutral600};\n }\n }\n\n & > span:first-child {\n gap: ${({ theme }) => theme.spaces[0]};\n\n ${({ theme }) => theme.breakpoints.medium} {\n gap: ${({ theme }) => theme.spaces[3]};\n }\n }\n`;\n\n/**\n * Handles the modal component that may be returned by a block when converting it\n */\nfunction useConversionModal() {\n const [modalElement, setModalComponent] = React.useState<React.JSX.Element | null>(null);\n\n const handleConversionResult = (renderModal: void | (() => React.JSX.Element) | undefined) => {\n // Not all blocks return a modal\n if (renderModal) {\n // Use cloneElement to apply a key because to create a new instance of the component\n // Without the new key, the state is kept from previous times that option was picked\n setModalComponent(React.cloneElement(renderModal(), { key: Date.now() }));\n }\n };\n\n return { modalElement, handleConversionResult };\n}\n\ninterface ToolbarButtonProps {\n icon?: React.ComponentType<React.SVGProps<SVGSVGElement>>;\n name: string;\n label: MessageDescriptor;\n isActive: boolean;\n disabled: boolean;\n handleClick: () => void;\n}\n\nconst ToolbarButton = ({\n icon: Icon,\n name,\n label,\n isActive,\n disabled,\n handleClick,\n}: ToolbarButtonProps) => {\n const { editor } = useBlocksEditorContext('ToolbarButton');\n const { formatMessage } = useIntl();\n const labelMessage = formatMessage(label);\n\n const enabledColor = isActive ? 'primary600' : 'neutral600';\n\n return (\n <Tooltip label={labelMessage}>\n <Toolbar.ToggleItem\n value={name}\n data-state={isActive ? 'on' : 'off'}\n onPointerDown={(e) => {\n e.preventDefault();\n handleClick();\n ReactEditor.focus(editor);\n }}\n aria-disabled={disabled}\n disabled={disabled}\n aria-label={labelMessage}\n asChild\n >\n <FlexButton\n tag=\"button\"\n background={isActive ? 'primary100' : ''}\n alignItems=\"center\"\n justifyContent=\"center\"\n width={7}\n height={7}\n hasRadius\n type=\"button\"\n >\n {Icon && <Icon fill={disabled ? 'neutral300' : enabledColor} />}\n </FlexButton>\n </Toolbar.ToggleItem>\n </Tooltip>\n );\n};\n\nconst BlocksDropdown = () => {\n const { editor, blocks, disabled } = useBlocksEditorContext('BlocksDropdown');\n const { formatMessage } = useIntl();\n const { modalElement, handleConversionResult } = useConversionModal();\n const isMobile = useIsMobile();\n\n const blockKeysToInclude: string[] = getEntries(blocks).reduce<string[]>(\n (currentKeys, [key, block]) => {\n return block?.isInBlocksSelector ? [...currentKeys, key] : currentKeys;\n },\n []\n );\n\n const [blockSelected, setBlockSelected] = React.useState<string>('paragraph');\n\n const handleSelect = (optionKey: unknown) => {\n if (typeof optionKey !== 'string' || !blocks[optionKey]) {\n return;\n }\n\n const editorIsEmpty =\n editor.children.length === 1 && Editor.isEmpty(editor, editor.children[0]);\n\n if (!editor.selection && !editorIsEmpty) {\n // When there is no selection, create an empty block at the end of the editor\n // so that it can be converted to the selected block\n Transforms.insertNodes(\n editor,\n {\n type: 'quote',\n children: [{ type: 'text', text: '' }],\n },\n {\n select: true,\n // Since there's no selection, Slate will automatically insert the node at the end\n }\n );\n } else if (!editor.selection && editorIsEmpty) {\n // When there is no selection and the editor is empty,\n // select the empty paragraph from Slate's initialValue so it gets converted\n Transforms.select(editor, Editor.start(editor, [0, 0]));\n }\n\n // If selection is already a list block, toggle its format\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n });\n\n if (currentListEntry && ['list-ordered', 'list-unordered'].includes(optionKey)) {\n const [currentList, currentListPath] = currentListEntry;\n const format = optionKey === 'list-ordered' ? 'ordered' : 'unordered';\n\n if (!Editor.isEditor(currentList) && isListNode(currentList)) {\n // Format is different, toggle list format\n if (currentList.format !== format) {\n Transforms.setNodes(editor, { format }, { at: currentListPath });\n }\n }\n return;\n }\n\n // Let the block handle the Slate conversion logic\n const maybeRenderModal = blocks[optionKey]?.handleConvert?.(editor);\n handleConversionResult(maybeRenderModal);\n\n setBlockSelected(optionKey);\n\n ReactEditor.focus(editor);\n };\n\n /**\n * Prevent the select from focusing itself so ReactEditor.focus(editor) can focus the editor instead.\n *\n * The editor first loses focus to a blur event when clicking the select button. However,\n * refocusing the editor is not enough since the select's default behavior is to refocus itself\n * after an option is selected.\n *\n */\n const preventSelectFocus = (e: Event) => e.preventDefault();\n\n // Listen to the selection change and update the selected block in the dropdown\n React.useEffect(() => {\n if (editor.selection) {\n let selectedNode: Ancestor;\n\n // If selection anchor is a list-item, get its parent\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: editor.selection.anchor,\n });\n\n if (currentListEntry) {\n const [currentList] = currentListEntry;\n selectedNode = currentList;\n } else {\n // Get the parent node of the anchor other than list-item\n const [anchorNode] = Editor.parent(editor, editor.selection.anchor, {\n edge: 'start',\n depth: 2,\n });\n\n // @ts-expect-error slate's delete behaviour creates an exceptional type\n if (anchorNode.type === 'list-item') {\n // When the last node in the selection is a list item,\n // slate's default delete operation leaves an empty list-item instead of converting it into a paragraph.\n // Issue: https://github.com/ianstormtaylor/slate/issues/2500\n\n Transforms.setNodes(editor, { type: 'paragraph' });\n // @ts-expect-error convert explicitly type to paragraph\n selectedNode = { ...anchorNode, type: 'paragraph' };\n } else {\n selectedNode = anchorNode;\n }\n }\n\n // Find the block key that matches the anchor node\n const anchorBlockKey = getKeys(blocks).find(\n (blockKey) => !Editor.isEditor(selectedNode) && blocks[blockKey]?.matchNode(selectedNode)\n );\n\n // Change the value selected in the dropdown if it doesn't match the anchor block key\n if (anchorBlockKey && anchorBlockKey !== blockSelected) {\n setBlockSelected(anchorBlockKey);\n }\n }\n }, [editor.selection, editor, blocks, blockSelected]);\n\n React.useEffect(() => {\n // If the selected block is not in the list of blocks to include, change the selected block to the first one\n if (blockKeysToInclude.length > 0 && !blockKeysToInclude.includes(blockSelected)) {\n setBlockSelected(blockKeysToInclude[0]);\n }\n }, [blockKeysToInclude, blockSelected]);\n\n if (!blocks[blockSelected]) {\n return null;\n }\n\n const selectedBlock = blocks[blockSelected] as SelectorBlock;\n const Icon = selectedBlock.icon;\n\n return (\n <>\n <SelectWrapper>\n <SingleSelect\n startIcon={Icon && <Icon />}\n onChange={handleSelect}\n customizeContent={() => (isMobile ? '' : formatMessage(selectedBlock.label))}\n value={blockSelected}\n onCloseAutoFocus={preventSelectFocus}\n aria-label={formatMessage({\n id: 'components.Blocks.blocks.selectBlock',\n defaultMessage: 'Select a block',\n })}\n disabled={disabled}\n >\n {blockKeysToInclude.map((key) => {\n const selectorBlock = blocks[key] as SelectorBlock;\n return (\n <BlockOption\n key={key}\n value={key}\n label={selectorBlock.label}\n icon={selectorBlock.icon}\n blockSelected={blockSelected}\n />\n );\n })}\n </SingleSelect>\n </SelectWrapper>\n {modalElement}\n </>\n );\n};\n\ninterface BlockOptionProps {\n value: string;\n icon?: React.ComponentType<React.SVGProps<SVGElement>>;\n label: MessageDescriptor;\n blockSelected: string;\n}\n\nconst BlockOption = ({ value, icon: Icon, label, blockSelected }: BlockOptionProps) => {\n const { formatMessage } = useIntl();\n\n const isSelected = value === blockSelected;\n\n return (\n <SingleSelectOption\n startIcon={Icon && <Icon fill={isSelected ? 'primary600' : 'neutral500'} />}\n value={value}\n >\n {formatMessage(label)}\n </SingleSelectOption>\n );\n};\n\nconst isListNode = (node: unknown): node is Block<'list'> => {\n return Node.isNode(node) && !Editor.isEditor(node) && node.type === 'list';\n};\n\ninterface ListButtonProps {\n block: BlocksStore['list-ordered'] | BlocksStore['list-unordered'];\n format: Block<'list'>['format'];\n location?: 'toolbar' | 'menu';\n}\n\nconst ListButton = ({ block, format, location = 'toolbar' }: ListButtonProps) => {\n const { formatMessage } = useIntl();\n const { editor, disabled, blocks } = useBlocksEditorContext('ListButton');\n\n const isListActive = () => {\n if (!editor.selection) return false;\n\n // Get the parent list at selection anchor node\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: editor.selection.anchor,\n });\n\n if (currentListEntry) {\n const [currentList] = currentListEntry;\n if (!Editor.isEditor(currentList) && isListNode(currentList) && currentList.format === format)\n return true;\n }\n\n return false;\n };\n\n /**\n * @TODO: Currently, applying list while multiple blocks are selected is not supported.\n * We should implement this feature in the future.\n */\n const isListDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n // Always enabled when there's no selection\n if (!editor.selection) {\n return false;\n }\n\n // Get the block node closest to the anchor and focus\n const anchorNodeEntry = Editor.above(editor, {\n at: editor.selection.anchor,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n const focusNodeEntry = Editor.above(editor, {\n at: editor.selection.focus,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n\n if (!anchorNodeEntry || !focusNodeEntry) {\n return false;\n }\n\n // Disabled if the anchor and focus are not in the same block\n return anchorNodeEntry[0] !== focusNodeEntry[0];\n };\n\n const toggleList = (format: Block<'list'>['format']) => {\n let currentListEntry;\n if (editor.selection) {\n currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n });\n } else {\n // If no selection, toggle last inserted node\n const [_, lastNodePath] = Editor.last(editor, []);\n currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: lastNodePath,\n });\n }\n\n if (!currentListEntry) {\n // If selection is not a list then convert it to list\n blocks[`list-${format}`]?.handleConvert!(editor);\n return;\n }\n\n // If selection is already a list then toggle format\n const [currentList, currentListPath] = currentListEntry;\n\n if (!Editor.isEditor(currentList) && isListNode(currentList)) {\n if (currentList.format !== format) {\n // Format is different, toggle list format\n Transforms.setNodes(editor, { format }, { at: currentListPath });\n } else {\n // Format is same, convert selected list-item to paragraph\n blocks['paragraph']?.handleConvert!(editor);\n }\n }\n };\n\n if (location === 'menu') {\n const Icon = block.icon;\n\n return (\n <StyledMenuItem\n startIcon={Icon && <Icon />}\n onSelect={() => toggleList(format)}\n isActive={isListActive()}\n disabled={isListDisabled()}\n >\n {formatMessage(block.label)}\n </StyledMenuItem>\n );\n }\n\n return (\n <ToolbarButton\n icon={block.icon}\n name={format}\n label={block.label}\n isActive={isListActive()}\n disabled={isListDisabled()}\n handleClick={() => toggleList(format)}\n />\n );\n};\n\nconst LinkButton = ({\n disabled,\n location = 'toolbar',\n}: {\n disabled: boolean;\n location?: 'toolbar' | 'menu';\n}) => {\n const { editor } = useBlocksEditorContext('LinkButton');\n const { formatMessage } = useIntl();\n\n const isLinkActive = () => {\n const { selection } = editor;\n\n if (!selection) return false;\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, selection),\n match: (node) => SlateElement.isElement(node) && node.type === 'link',\n })\n );\n\n return Boolean(match);\n };\n\n const isLinkDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n // Always enabled when there's no selection\n if (!editor.selection) {\n return false;\n }\n\n // Get the block node closest to the anchor and focus\n const anchorNodeEntry = Editor.above(editor, {\n at: editor.selection.anchor,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n const focusNodeEntry = Editor.above(editor, {\n at: editor.selection.focus,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n\n if (!anchorNodeEntry || !focusNodeEntry) {\n return false;\n }\n\n // Disabled if the anchor and focus are not in the same block\n return anchorNodeEntry[0] !== focusNodeEntry[0];\n };\n\n const addLink = () => {\n editor.shouldSaveLinkPath = true;\n // We insert an empty anchor, so we split the DOM to have a element we can use as reference for the popover\n insertLink(editor, { url: '' });\n };\n\n const label = {\n id: 'components.Blocks.link',\n defaultMessage: 'Link',\n } as MessageDescriptor;\n\n if (location === 'menu') {\n return (\n <StyledMenuItem\n startIcon={<Link />}\n onSelect={addLink}\n isActive={isLinkActive()}\n disabled={isLinkDisabled()}\n >\n {formatMessage(label)}\n </StyledMenuItem>\n );\n }\n\n return (\n <ToolbarButton\n icon={Link}\n name=\"link\"\n label={label}\n isActive={isLinkActive()}\n handleClick={addLink}\n disabled={isLinkDisabled()}\n />\n );\n};\n\nconst StyledMenuItem = styled(Menu.Item)<{ isActive: boolean }>`\n ${(props) =>\n props.isActive &&\n css`\n color: ${({ theme }) => theme.colors.primary600};\n font-weight: 600;\n `}\n\n svg {\n fill: ${({ theme, isActive }) =>\n isActive ? theme.colors.primary600 : theme.colors.neutral500};\n }\n`;\n\nconst ReorderToolbarButtons = () => {\n const { editor, disabled, blocks, name, setLiveText } =\n useBlocksEditorContext('ReorderToolbarButtons');\n const { formatMessage } = useIntl();\n\n const selection = editor.selection;\n const totalBlocks = editor.children.length;\n\n const anchorIndex = selection ? selection.anchor.path[0] : null;\n const focusIndex = selection ? selection.focus.path[0] : null;\n const isSingleBlockSelection =\n anchorIndex !== null && focusIndex !== null && anchorIndex === focusIndex;\n\n const selectedTopLevelNode =\n isSingleBlockSelection && anchorIndex !== null ? editor.children[anchorIndex] : null;\n const selectedBlock =\n selectedTopLevelNode &&\n Object.values(blocks).find((block) => block.matchNode(selectedTopLevelNode));\n\n const isSelectedBlockDraggable =\n selectedTopLevelNode && selectedBlock\n ? (selectedBlock.isDraggable?.(selectedTopLevelNode) ?? true)\n : false;\n\n const canMoveUp =\n !disabled &&\n isSingleBlockSelection &&\n isSelectedBlockDraggable &&\n anchorIndex !== null &&\n anchorIndex > 0;\n const canMoveDown =\n !disabled &&\n isSingleBlockSelection &&\n isSelectedBlockDraggable &&\n anchorIndex !== null &&\n anchorIndex < totalBlocks - 1;\n\n const moveBlock = (direction: 'up' | 'down') => {\n if (!selection || anchorIndex === null) return;\n\n const currentIndex = [anchorIndex];\n const newIndex = [direction === 'up' ? anchorIndex - 1 : anchorIndex + 1];\n\n Transforms.moveNodes(editor, {\n at: currentIndex,\n to: newIndex,\n });\n\n // Keep the moved block focused so disabled states update immediately.\n Transforms.select(editor, Editor.start(editor, newIndex));\n ReactEditor.focus(editor);\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('components.Blocks.dnd.reorder'),\n defaultMessage: '{item}, moved. New position in the editor: {position}.',\n },\n {\n item: `${name}.${currentIndex[0] + 1}`,\n position: `${newIndex[0] + 1} of ${editor.children.length}`,\n }\n )\n );\n };\n\n return (\n <Flex direction=\"row\" gap={1}>\n <Tooltip\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-up'),\n defaultMessage: 'Move up',\n })}\n >\n <Toolbar.Button\n onPointerDown={(e) => {\n e.preventDefault();\n if (canMoveUp) moveBlock('up');\n }}\n aria-disabled={!canMoveUp}\n disabled={!canMoveUp}\n aria-label={formatMessage({\n id: getTranslation('components.DynamicZone.move-up'),\n defaultMessage: 'Move up',\n })}\n asChild\n >\n <FlexButton\n tag=\"button\"\n alignItems=\"center\"\n justifyContent=\"center\"\n width={7}\n height={7}\n hasRadius\n type=\"button\"\n >\n <ArrowUp fill={!canMoveUp ? 'neutral300' : 'neutral600'} />\n </FlexButton>\n </Toolbar.Button>\n </Tooltip>\n\n <Tooltip\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-down'),\n defaultMessage: 'Move down',\n })}\n >\n <Toolbar.Button\n onPointerDown={(e) => {\n e.preventDefault();\n if (canMoveDown) moveBlock('down');\n }}\n aria-disabled={!canMoveDown}\n disabled={!canMoveDown}\n aria-label={formatMessage({\n id: getTranslation('components.DynamicZone.move-down'),\n defaultMessage: 'Move down',\n })}\n asChild\n >\n <FlexButton\n tag=\"button\"\n alignItems=\"center\"\n justifyContent=\"center\"\n width={7}\n height={7}\n hasRadius\n type=\"button\"\n >\n <ArrowDown fill={!canMoveDown ? 'neutral300' : 'neutral600'} />\n </FlexButton>\n </Toolbar.Button>\n </Tooltip>\n </Flex>\n );\n};\n\nconst BlocksToolbar = () => {\n const { editor, blocks, modifiers, disabled } = useBlocksEditorContext('BlocksToolbar');\n const { formatMessage } = useIntl();\n const isMobile = useIsMobile();\n\n /**\n * The modifier buttons are disabled when an image is selected.\n */\n const checkButtonDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n if (!editor.selection) {\n return false;\n }\n\n const selectedNode = editor.children[editor.selection.anchor.path[0]];\n if (!selectedNode) return true;\n\n if (['image', 'code'].includes(selectedNode.type)) {\n return true;\n }\n\n return false;\n };\n\n const isButtonDisabled = checkButtonDisabled();\n\n /**\n * Observed components are ones that may or may not be visible in the toolbar, depending on the\n * available space. They provide two render props:\n * - renderInToolbar: for when we try to render the component in the toolbar (may be hidden)\n * - renderInMenu: for when the component didn't fit in the toolbar and is relegated\n * to the \"more\" menu\n */\n const observedComponents: ObservedComponent[] = [\n ...Object.entries(modifiers).map(([name, modifier]) => {\n const Icon = modifier.icon;\n const isActive = modifier.checkIsActive(editor);\n const handleSelect = () => modifier.handleToggle(editor);\n\n return {\n toolbar: (\n <ToolbarButton\n key={name}\n name={name}\n icon={modifier.icon}\n label={modifier.label}\n isActive={modifier.checkIsActive(editor)}\n handleClick={handleSelect}\n disabled={isButtonDisabled}\n />\n ),\n menu: (\n <StyledMenuItem startIcon={<Icon />} onSelect={handleSelect} isActive={isActive}>\n {formatMessage(modifier.label)}\n </StyledMenuItem>\n ),\n key: `modifier.${name}`,\n };\n }),\n {\n toolbar: <LinkButton disabled={isButtonDisabled} location=\"toolbar\" />,\n menu: <LinkButton disabled={isButtonDisabled} location=\"menu\" />,\n key: 'block.link',\n },\n {\n // List buttons can only be rendered together when in the toolbar\n toolbar: (\n <Flex direction=\"row\">\n <ToolbarSeparator style={{ marginLeft: '0.4rem' }} />\n <Toolbar.ToggleGroup type=\"single\" asChild>\n <Flex gap={1}>\n <ListButton block={blocks['list-unordered']!} format=\"unordered\" location=\"toolbar\" />\n <ListButton block={blocks['list-ordered']!} format=\"ordered\" location=\"toolbar\" />\n </Flex>\n </Toolbar.ToggleGroup>\n </Flex>\n ),\n menu: (\n <>\n <Menu.Separator />\n <ListButton block={blocks['list-unordered']!} format=\"unordered\" location=\"menu\" />\n <ListButton block={blocks['list-ordered']!} format=\"ordered\" location=\"menu\" />\n </>\n ),\n key: 'block.list',\n },\n ];\n\n return (\n <Toolbar.Root aria-disabled={disabled} asChild>\n <ToolbarWrapper padding={{ initial: 1, medium: 2 }} width=\"100%\">\n <BlocksDropdown />\n {isMobile && (\n <>\n <ToolbarSeparator />\n <ReorderToolbarButtons />\n </>\n )}\n <ToolbarSeparator />\n <Toolbar.ToggleGroup type=\"multiple\" asChild>\n <Flex direction=\"row\" gap={1} grow={1} overflow=\"hidden\">\n <EditorToolbarObserver observedComponents={observedComponents} />\n </Flex>\n </Toolbar.ToggleGroup>\n </ToolbarWrapper>\n </Toolbar.Root>\n );\n};\n\nexport { BlocksToolbar, useConversionModal };\n"],"names":["ToolbarWrapper","styled","Flex","theme","colors","neutral150","ToolbarSeparator","Toolbar","Separator","spaces","breakpoints","medium","FlexButton","primary100","SelectWrapper","Box","neutral600","useConversionModal","modalElement","setModalComponent","React","useState","handleConversionResult","renderModal","cloneElement","key","Date","now","ToolbarButton","icon","Icon","name","label","isActive","disabled","handleClick","editor","useBlocksEditorContext","formatMessage","useIntl","labelMessage","enabledColor","_jsx","Tooltip","ToggleItem","value","data-state","onPointerDown","e","preventDefault","ReactEditor","focus","aria-disabled","aria-label","asChild","tag","background","alignItems","justifyContent","width","height","hasRadius","type","fill","BlocksDropdown","blocks","isMobile","useIsMobile","blockKeysToInclude","getEntries","reduce","currentKeys","block","isInBlocksSelector","blockSelected","setBlockSelected","handleSelect","optionKey","editorIsEmpty","children","length","Editor","isEmpty","selection","Transforms","insertNodes","text","select","start","currentListEntry","above","match","node","isEditor","includes","currentList","currentListPath","format","isListNode","setNodes","at","maybeRenderModal","handleConvert","preventSelectFocus","useEffect","selectedNode","anchor","anchorNode","parent","edge","depth","anchorBlockKey","getKeys","find","blockKey","matchNode","selectedBlock","_jsxs","_Fragment","SingleSelect","startIcon","onChange","customizeContent","onCloseAutoFocus","id","defaultMessage","map","selectorBlock","BlockOption","isSelected","SingleSelectOption","Node","isNode","ListButton","location","isListActive","isListDisabled","anchorNodeEntry","focusNodeEntry","toggleList","_","lastNodePath","last","StyledMenuItem","onSelect","LinkButton","isLinkActive","Array","from","nodes","unhangRange","SlateElement","isElement","Boolean","isLinkDisabled","addLink","shouldSaveLinkPath","insertLink","url","Link","Menu","Item","props","css","primary600","neutral500","ReorderToolbarButtons","setLiveText","totalBlocks","anchorIndex","path","focusIndex","isSingleBlockSelection","selectedTopLevelNode","Object","values","isSelectedBlockDraggable","isDraggable","canMoveUp","canMoveDown","moveBlock","direction","currentIndex","newIndex","moveNodes","to","getTranslation","item","position","gap","Button","ArrowUp","ArrowDown","BlocksToolbar","modifiers","checkButtonDisabled","isButtonDisabled","observedComponents","entries","modifier","checkIsActive","handleToggle","toolbar","menu","style","marginLeft","ToggleGroup","Root","padding","initial","grow","overflow","EditorToolbarObserver"],"mappings":"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"}
1
+ {"version":3,"file":"BlocksToolbar.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport * as Toolbar from '@radix-ui/react-toolbar';\nimport { useIsMobile } from '@strapi/admin/strapi-admin';\nimport {\n Flex,\n Tooltip,\n SingleSelect,\n SingleSelectOption,\n Box,\n FlexComponent,\n BoxComponent,\n Menu,\n} from '@strapi/design-system';\nimport { Link, ArrowUp, ArrowDown } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { Editor, Transforms, Element as SlateElement, Node, type Ancestor } from 'slate';\nimport { ReactEditor } from 'slate-react';\nimport { css, styled } from 'styled-components';\n\nimport { getTranslation } from '../../../../../utils/translations';\nimport { EditorToolbarObserver, type ObservedComponent } from '../../EditorToolbarObserver';\n\nimport { insertLink } from './Blocks/Link';\nimport { type BlocksStore, type SelectorBlock, useBlocksEditorContext } from './BlocksEditor';\nimport { type Block, getEntries, getKeys } from './utils/types';\n\nconst ToolbarWrapper = styled<FlexComponent>(Flex)`\n &[aria-disabled='true'] {\n cursor: not-allowed;\n background: ${({ theme }) => theme.colors.neutral150};\n }\n`;\n\nconst ToolbarSeparator = styled(Toolbar.Separator)`\n background: ${({ theme }) => theme.colors.neutral150};\n width: 1px;\n height: 2.4rem;\n margin-left: ${({ theme }) => theme.spaces[1]};\n margin-right: ${({ theme }) => theme.spaces[1]};\n\n ${({ theme }) => theme.breakpoints.medium} {\n margin-left: ${({ theme }) => theme.spaces[2]};\n margin-right: ${({ theme }) => theme.spaces[2]};\n }\n`;\n\nconst FlexButton = styled<FlexComponent<'button'>>(Flex)`\n // Inherit the not-allowed cursor from ToolbarWrapper when disabled\n &[aria-disabled] {\n cursor: not-allowed;\n }\n\n &[aria-disabled='false'] {\n cursor: pointer;\n\n // Only apply hover styles if the button is enabled on desktop\n ${({ theme }) => theme.breakpoints.medium} {\n &:hover {\n background: ${({ theme }) => theme.colors.primary100};\n }\n }\n }\n`;\n\nconst SelectWrapper = styled<BoxComponent>(Box)`\n // Styling changes to SingleSelect component don't work, so adding wrapper to target SingleSelect\n div[role='combobox'] {\n border: none;\n cursor: pointer;\n min-height: unset;\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n padding-left: ${({ theme }) => theme.spaces[4]};\n padding-right: ${({ theme }) => theme.spaces[4]};\n gap: ${({ theme }) => theme.spaces[2]};\n \n ${({ theme }) => theme.breakpoints.medium} {\n padding-top: ${({ theme }) => theme.spaces[1]};\n padding-bottom: ${({ theme }) => theme.spaces[1]};\n gap: ${({ theme }) => theme.spaces[4]};\n }\n\n &[aria-disabled='false']:hover {\n cursor: pointer;\n background: ${({ theme }) => theme.colors.primary100};\n }\n\n &[aria-disabled] {\n background: transparent;\n cursor: inherit;\n\n // Select text and icons should also have disabled color\n span {\n color: ${({ theme }) => theme.colors.neutral600};\n }\n }\n\n & > span:first-child {\n gap: ${({ theme }) => theme.spaces[0]};\n\n ${({ theme }) => theme.breakpoints.medium} {\n gap: ${({ theme }) => theme.spaces[3]};\n }\n }\n`;\n\n/**\n * Handles the modal component that may be returned by a block when converting it\n */\nfunction useConversionModal() {\n const [modalElement, setModalComponent] = React.useState<React.JSX.Element | null>(null);\n\n const handleConversionResult = (renderModal: void | (() => React.JSX.Element) | undefined) => {\n // Not all blocks return a modal\n if (renderModal) {\n // Use cloneElement to apply a key because to create a new instance of the component\n // Without the new key, the state is kept from previous times that option was picked\n setModalComponent(React.cloneElement(renderModal(), { key: Date.now() }));\n }\n };\n\n return { modalElement, handleConversionResult };\n}\n\ninterface ToolbarButtonProps {\n icon?: React.ComponentType<React.SVGProps<SVGSVGElement>>;\n name: string;\n label: MessageDescriptor;\n isActive: boolean;\n disabled: boolean;\n handleClick: () => void;\n}\n\nconst ToolbarButton = ({\n icon: Icon,\n name,\n label,\n isActive,\n disabled,\n handleClick,\n}: ToolbarButtonProps) => {\n const { editor } = useBlocksEditorContext('ToolbarButton');\n const { formatMessage } = useIntl();\n const labelMessage = formatMessage(label);\n\n const enabledColor = isActive ? 'primary600' : 'neutral600';\n\n return (\n <Tooltip label={labelMessage}>\n <Toolbar.ToggleItem\n value={name}\n data-state={isActive ? 'on' : 'off'}\n onPointerDown={(e) => {\n e.preventDefault();\n handleClick();\n ReactEditor.focus(editor);\n }}\n aria-disabled={disabled}\n disabled={disabled}\n aria-label={labelMessage}\n asChild\n >\n <FlexButton\n tag=\"button\"\n background={isActive ? 'primary100' : ''}\n alignItems=\"center\"\n justifyContent=\"center\"\n width={7}\n height={7}\n hasRadius\n type=\"button\"\n >\n {Icon && <Icon fill={disabled ? 'neutral300' : enabledColor} />}\n </FlexButton>\n </Toolbar.ToggleItem>\n </Tooltip>\n );\n};\n\nconst BlocksDropdown = () => {\n const { editor, blocks, disabled } = useBlocksEditorContext('BlocksDropdown');\n const { formatMessage } = useIntl();\n const { modalElement, handleConversionResult } = useConversionModal();\n const isMobile = useIsMobile();\n\n const blockKeysToInclude: string[] = getEntries(blocks).reduce<string[]>(\n (currentKeys, [key, block]) => {\n return block?.isInBlocksSelector ? [...currentKeys, key] : currentKeys;\n },\n []\n );\n\n const [blockSelected, setBlockSelected] = React.useState<string>('paragraph');\n\n const handleSelect = (optionKey: unknown) => {\n if (typeof optionKey !== 'string' || !blocks[optionKey]) {\n return;\n }\n\n const editorIsEmpty =\n editor.children.length === 1 && Editor.isEmpty(editor, editor.children[0]);\n\n if (!editor.selection && !editorIsEmpty) {\n // When there is no selection, create an empty block at the end of the editor\n // so that it can be converted to the selected block\n Transforms.insertNodes(\n editor,\n {\n type: 'quote',\n children: [{ type: 'text', text: '' }],\n },\n {\n select: true,\n // Since there's no selection, Slate will automatically insert the node at the end\n }\n );\n } else if (!editor.selection && editorIsEmpty) {\n // When there is no selection and the editor is empty,\n // select the empty paragraph from Slate's initialValue so it gets converted\n Transforms.select(editor, Editor.start(editor, [0, 0]));\n }\n\n // If selection is already a list block, toggle its format\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n });\n\n if (currentListEntry && ['list-ordered', 'list-unordered'].includes(optionKey)) {\n const [currentList, currentListPath] = currentListEntry;\n const format = optionKey === 'list-ordered' ? 'ordered' : 'unordered';\n\n if (!Editor.isEditor(currentList) && isListNode(currentList)) {\n // Format is different, toggle list format\n if (currentList.format !== format) {\n Transforms.setNodes(editor, { format }, { at: currentListPath });\n }\n }\n return;\n }\n\n // Let the block handle the Slate conversion logic\n const maybeRenderModal = blocks[optionKey]?.handleConvert?.(editor);\n handleConversionResult(maybeRenderModal);\n\n setBlockSelected(optionKey);\n\n ReactEditor.focus(editor);\n };\n\n /**\n * Prevent the select from focusing itself so ReactEditor.focus(editor) can focus the editor instead.\n *\n * The editor first loses focus to a blur event when clicking the select button. However,\n * refocusing the editor is not enough since the select's default behavior is to refocus itself\n * after an option is selected.\n *\n */\n const preventSelectFocus = (e: Event) => e.preventDefault();\n\n // Listen to the selection change and update the selected block in the dropdown\n React.useEffect(() => {\n if (editor.selection) {\n let selectedNode: Ancestor;\n\n // If selection anchor is a list-item, get its parent\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: editor.selection.anchor,\n });\n\n if (currentListEntry) {\n const [currentList] = currentListEntry;\n selectedNode = currentList;\n } else {\n // Get the parent node of the anchor other than list-item\n const [anchorNode] = Editor.parent(editor, editor.selection.anchor, {\n edge: 'start',\n depth: 2,\n });\n\n // @ts-expect-error slate's delete behaviour creates an exceptional type\n if (anchorNode.type === 'list-item') {\n // When the last node in the selection is a list item,\n // slate's default delete operation leaves an empty list-item instead of converting it into a paragraph.\n // Issue: https://github.com/ianstormtaylor/slate/issues/2500\n\n Transforms.setNodes(editor, { type: 'paragraph' });\n // @ts-expect-error convert explicitly type to paragraph\n selectedNode = { ...anchorNode, type: 'paragraph' };\n } else {\n selectedNode = anchorNode;\n }\n }\n\n // Find the block key that matches the anchor node\n const anchorBlockKey = getKeys(blocks).find(\n (blockKey) => !Editor.isEditor(selectedNode) && blocks[blockKey]?.matchNode(selectedNode)\n );\n\n // Change the value selected in the dropdown if it doesn't match the anchor block key\n if (anchorBlockKey && anchorBlockKey !== blockSelected) {\n setBlockSelected(anchorBlockKey);\n }\n }\n }, [editor.selection, editor, blocks, blockSelected]);\n\n React.useEffect(() => {\n // If the selected block is not in the list of blocks to include, change the selected block to the first one\n if (blockKeysToInclude.length > 0 && !blockKeysToInclude.includes(blockSelected)) {\n setBlockSelected(blockKeysToInclude[0]);\n }\n }, [blockKeysToInclude, blockSelected]);\n\n if (!blocks[blockSelected]) {\n return null;\n }\n\n const selectedBlock = blocks[blockSelected] as SelectorBlock;\n const Icon = selectedBlock.icon;\n\n return (\n <>\n <SelectWrapper>\n <SingleSelect\n startIcon={Icon && <Icon />}\n onChange={handleSelect}\n customizeContent={() => (isMobile ? '' : formatMessage(selectedBlock.label))}\n value={blockSelected}\n onCloseAutoFocus={preventSelectFocus}\n aria-label={formatMessage({\n id: 'components.Blocks.blocks.selectBlock',\n defaultMessage: 'Select a block',\n })}\n disabled={disabled}\n >\n {blockKeysToInclude.map((key) => {\n const selectorBlock = blocks[key] as SelectorBlock;\n return (\n <BlockOption\n key={key}\n value={key}\n label={selectorBlock.label}\n icon={selectorBlock.icon}\n blockSelected={blockSelected}\n />\n );\n })}\n </SingleSelect>\n </SelectWrapper>\n {modalElement}\n </>\n );\n};\n\ninterface BlockOptionProps {\n value: string;\n icon?: React.ComponentType<React.SVGProps<SVGElement>>;\n label: MessageDescriptor;\n blockSelected: string;\n}\n\nconst BlockOption = ({ value, icon: Icon, label, blockSelected }: BlockOptionProps) => {\n const { formatMessage } = useIntl();\n\n const isSelected = value === blockSelected;\n\n return (\n <SingleSelectOption\n startIcon={Icon && <Icon fill={isSelected ? 'primary600' : 'neutral500'} />}\n value={value}\n >\n {formatMessage(label)}\n </SingleSelectOption>\n );\n};\n\nconst isListNode = (node: unknown): node is Block<'list'> => {\n return Node.isNode(node) && !Editor.isEditor(node) && node.type === 'list';\n};\n\ninterface ListButtonProps {\n block: BlocksStore['list-ordered'] | BlocksStore['list-unordered'];\n format: Block<'list'>['format'];\n location?: 'toolbar' | 'menu';\n}\n\nconst ListButton = ({ block, format, location = 'toolbar' }: ListButtonProps) => {\n const { formatMessage } = useIntl();\n const { editor, disabled, blocks } = useBlocksEditorContext('ListButton');\n\n const isListActive = () => {\n if (!editor.selection) return false;\n\n // Get the parent list at selection anchor node\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: editor.selection.anchor,\n });\n\n if (currentListEntry) {\n const [currentList] = currentListEntry;\n if (!Editor.isEditor(currentList) && isListNode(currentList) && currentList.format === format)\n return true;\n }\n\n return false;\n };\n\n /**\n * @TODO: Currently, applying list while multiple blocks are selected is not supported.\n * We should implement this feature in the future.\n */\n const isListDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n // Always enabled when there's no selection\n if (!editor.selection) {\n return false;\n }\n\n // Get the block node closest to the anchor and focus\n const anchorNodeEntry = Editor.above(editor, {\n at: editor.selection.anchor,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n const focusNodeEntry = Editor.above(editor, {\n at: editor.selection.focus,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n\n if (!anchorNodeEntry || !focusNodeEntry) {\n return false;\n }\n\n // Disabled if the anchor and focus are not in the same block\n return anchorNodeEntry[0] !== focusNodeEntry[0];\n };\n\n const toggleList = (format: Block<'list'>['format']) => {\n let currentListEntry;\n if (editor.selection) {\n currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n });\n } else {\n // If no selection, toggle last inserted node\n const [_, lastNodePath] = Editor.last(editor, []);\n currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: lastNodePath,\n });\n }\n\n if (!currentListEntry) {\n // If selection is not a list then convert it to list\n blocks[`list-${format}`]?.handleConvert!(editor);\n return;\n }\n\n // If selection is already a list then toggle format\n const [currentList, currentListPath] = currentListEntry;\n\n if (!Editor.isEditor(currentList) && isListNode(currentList)) {\n if (currentList.format !== format) {\n // Format is different, toggle list format\n Transforms.setNodes(editor, { format }, { at: currentListPath });\n } else {\n // Format is same, convert selected list-item to paragraph\n blocks['paragraph']?.handleConvert!(editor);\n }\n }\n };\n\n if (location === 'menu') {\n const Icon = block.icon;\n\n return (\n <StyledMenuItem\n startIcon={Icon && <Icon />}\n onSelect={() => toggleList(format)}\n isActive={isListActive()}\n disabled={isListDisabled()}\n >\n {formatMessage(block.label)}\n </StyledMenuItem>\n );\n }\n\n return (\n <ToolbarButton\n icon={block.icon}\n name={format}\n label={block.label}\n isActive={isListActive()}\n disabled={isListDisabled()}\n handleClick={() => toggleList(format)}\n />\n );\n};\n\nconst LinkButton = ({\n disabled,\n location = 'toolbar',\n}: {\n disabled: boolean;\n location?: 'toolbar' | 'menu';\n}) => {\n const { editor } = useBlocksEditorContext('LinkButton');\n const { formatMessage } = useIntl();\n\n const isLinkActive = () => {\n const { selection } = editor;\n\n if (!selection) return false;\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, selection),\n match: (node) => SlateElement.isElement(node) && node.type === 'link',\n })\n );\n\n return Boolean(match);\n };\n\n const isLinkDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n // Always enabled when there's no selection\n if (!editor.selection) {\n return false;\n }\n\n // Get the block node closest to the anchor and focus\n const anchorNodeEntry = Editor.above(editor, {\n at: editor.selection.anchor,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n const focusNodeEntry = Editor.above(editor, {\n at: editor.selection.focus,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n\n if (!anchorNodeEntry || !focusNodeEntry) {\n return false;\n }\n\n // Disabled if the anchor and focus are not in the same block\n return anchorNodeEntry[0] !== focusNodeEntry[0];\n };\n\n const addLink = () => {\n editor.shouldSaveLinkPath = true;\n // We insert an empty anchor, so we split the DOM to have a element we can use as reference for the popover\n insertLink(editor, { url: '' });\n };\n\n const label = {\n id: 'components.Blocks.link',\n defaultMessage: 'Link',\n } as MessageDescriptor;\n\n if (location === 'menu') {\n return (\n <StyledMenuItem\n startIcon={<Link />}\n onSelect={addLink}\n isActive={isLinkActive()}\n disabled={isLinkDisabled()}\n >\n {formatMessage(label)}\n </StyledMenuItem>\n );\n }\n\n return (\n <ToolbarButton\n icon={Link}\n name=\"link\"\n label={label}\n isActive={isLinkActive()}\n handleClick={addLink}\n disabled={isLinkDisabled()}\n />\n );\n};\n\nconst StyledMenuItem = styled(Menu.Item)<{ isActive: boolean }>`\n ${(props) =>\n props.isActive &&\n css`\n color: ${({ theme }) => theme.colors.primary600};\n font-weight: 600;\n `}\n\n svg {\n fill: ${({ theme, isActive }) =>\n isActive ? theme.colors.primary600 : theme.colors.neutral500};\n }\n`;\n\nconst ReorderToolbarButtons = () => {\n const { editor, disabled, blocks, name, setLiveText } =\n useBlocksEditorContext('ReorderToolbarButtons');\n const { formatMessage } = useIntl();\n\n const selection = editor.selection;\n const totalBlocks = editor.children.length;\n\n const anchorIndex = selection ? selection.anchor.path[0] : null;\n const focusIndex = selection ? selection.focus.path[0] : null;\n const isSingleBlockSelection =\n anchorIndex !== null && focusIndex !== null && anchorIndex === focusIndex;\n\n const selectedTopLevelNode =\n isSingleBlockSelection && anchorIndex !== null ? editor.children[anchorIndex] : null;\n const selectedBlock =\n selectedTopLevelNode &&\n Object.values(blocks).find((block) => block.matchNode(selectedTopLevelNode));\n\n const isSelectedBlockDraggable =\n selectedTopLevelNode && selectedBlock\n ? (selectedBlock.isDraggable?.(selectedTopLevelNode) ?? true)\n : false;\n\n const canMoveUp =\n !disabled &&\n isSingleBlockSelection &&\n isSelectedBlockDraggable &&\n anchorIndex !== null &&\n anchorIndex > 0;\n const canMoveDown =\n !disabled &&\n isSingleBlockSelection &&\n isSelectedBlockDraggable &&\n anchorIndex !== null &&\n anchorIndex < totalBlocks - 1;\n\n const moveBlock = (direction: 'up' | 'down') => {\n if (!selection || anchorIndex === null) return;\n\n const currentIndex = [anchorIndex];\n const newIndex = [direction === 'up' ? anchorIndex - 1 : anchorIndex + 1];\n\n Transforms.moveNodes(editor, {\n at: currentIndex,\n to: newIndex,\n });\n\n // Keep the moved block focused so disabled states update immediately.\n Transforms.select(editor, Editor.start(editor, newIndex));\n ReactEditor.focus(editor);\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('components.Blocks.dnd.reorder'),\n defaultMessage: '{item}, moved. New position in the editor: {position}.',\n },\n {\n item: `${name}.${currentIndex[0] + 1}`,\n position: `${newIndex[0] + 1} of ${editor.children.length}`,\n }\n )\n );\n };\n\n return (\n <Flex direction=\"row\" gap={1}>\n <Tooltip\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-up'),\n defaultMessage: 'Move up',\n })}\n >\n <Toolbar.Button\n onPointerDown={(e) => {\n e.preventDefault();\n if (canMoveUp) moveBlock('up');\n }}\n aria-disabled={!canMoveUp}\n disabled={!canMoveUp}\n aria-label={formatMessage({\n id: getTranslation('components.DynamicZone.move-up'),\n defaultMessage: 'Move up',\n })}\n asChild\n >\n <FlexButton\n tag=\"button\"\n alignItems=\"center\"\n justifyContent=\"center\"\n width={7}\n height={7}\n hasRadius\n type=\"button\"\n >\n <ArrowUp fill={!canMoveUp ? 'neutral300' : 'neutral600'} />\n </FlexButton>\n </Toolbar.Button>\n </Tooltip>\n\n <Tooltip\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-down'),\n defaultMessage: 'Move down',\n })}\n >\n <Toolbar.Button\n onPointerDown={(e) => {\n e.preventDefault();\n if (canMoveDown) moveBlock('down');\n }}\n aria-disabled={!canMoveDown}\n disabled={!canMoveDown}\n aria-label={formatMessage({\n id: getTranslation('components.DynamicZone.move-down'),\n defaultMessage: 'Move down',\n })}\n asChild\n >\n <FlexButton\n tag=\"button\"\n alignItems=\"center\"\n justifyContent=\"center\"\n width={7}\n height={7}\n hasRadius\n type=\"button\"\n >\n <ArrowDown fill={!canMoveDown ? 'neutral300' : 'neutral600'} />\n </FlexButton>\n </Toolbar.Button>\n </Tooltip>\n </Flex>\n );\n};\n\nconst BlocksToolbar = () => {\n const { editor, blocks, modifiers, disabled } = useBlocksEditorContext('BlocksToolbar');\n const { formatMessage } = useIntl();\n const isMobile = useIsMobile();\n\n /**\n * The modifier buttons are disabled when an image is selected.\n */\n const checkButtonDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n if (!editor.selection) {\n return false;\n }\n\n const selectedNode = editor.children[editor.selection.anchor.path[0]];\n if (!selectedNode) return true;\n\n if (['image', 'code'].includes(selectedNode.type)) {\n return true;\n }\n\n return false;\n };\n\n const isButtonDisabled = checkButtonDisabled();\n\n /**\n * Observed components are ones that may or may not be visible in the toolbar, depending on the\n * available space. They provide two render props:\n * - renderInToolbar: for when we try to render the component in the toolbar (may be hidden)\n * - renderInMenu: for when the component didn't fit in the toolbar and is relegated\n * to the \"more\" menu\n */\n const observedComponents: ObservedComponent[] = [\n ...Object.entries(modifiers).map(([name, modifier]) => {\n const Icon = modifier.icon;\n const isActive = modifier.checkIsActive(editor);\n const handleSelect = () => modifier.handleToggle(editor);\n\n return {\n toolbar: (\n <ToolbarButton\n key={name}\n name={name}\n icon={modifier.icon}\n label={modifier.label}\n isActive={modifier.checkIsActive(editor)}\n handleClick={handleSelect}\n disabled={isButtonDisabled}\n />\n ),\n menu: (\n <StyledMenuItem startIcon={<Icon />} onSelect={handleSelect} isActive={isActive}>\n {formatMessage(modifier.label)}\n </StyledMenuItem>\n ),\n key: `modifier.${name}`,\n };\n }),\n {\n toolbar: <LinkButton disabled={isButtonDisabled} location=\"toolbar\" />,\n menu: <LinkButton disabled={isButtonDisabled} location=\"menu\" />,\n key: 'block.link',\n },\n {\n // List buttons can only be rendered together when in the toolbar\n toolbar: (\n <Flex direction=\"row\">\n <ToolbarSeparator style={{ marginLeft: '0.4rem' }} />\n <Toolbar.ToggleGroup type=\"single\" asChild>\n <Flex gap={1}>\n <ListButton block={blocks['list-unordered']!} format=\"unordered\" location=\"toolbar\" />\n <ListButton block={blocks['list-ordered']!} format=\"ordered\" location=\"toolbar\" />\n </Flex>\n </Toolbar.ToggleGroup>\n </Flex>\n ),\n menu: (\n <>\n <Menu.Separator />\n <ListButton block={blocks['list-unordered']!} format=\"unordered\" location=\"menu\" />\n <ListButton block={blocks['list-ordered']!} format=\"ordered\" location=\"menu\" />\n </>\n ),\n key: 'block.list',\n },\n ];\n\n return (\n <Toolbar.Root aria-disabled={disabled} asChild>\n <ToolbarWrapper padding={{ initial: 1, medium: 2 }} width=\"100%\">\n <BlocksDropdown />\n {isMobile && (\n <>\n <ToolbarSeparator />\n <ReorderToolbarButtons />\n </>\n )}\n <ToolbarSeparator />\n <Toolbar.ToggleGroup type=\"multiple\" asChild>\n <Flex direction=\"row\" gap={1} grow={1} overflow=\"hidden\">\n <EditorToolbarObserver observedComponents={observedComponents} />\n </Flex>\n </Toolbar.ToggleGroup>\n </ToolbarWrapper>\n </Toolbar.Root>\n );\n};\n\nexport { BlocksToolbar, useConversionModal };\n"],"names":["ToolbarWrapper","styled","Flex","theme","colors","neutral150","ToolbarSeparator","Toolbar","Separator","spaces","breakpoints","medium","FlexButton","primary100","SelectWrapper","Box","neutral600","useConversionModal","modalElement","setModalComponent","React","useState","handleConversionResult","renderModal","cloneElement","key","Date","now","ToolbarButton","icon","Icon","name","label","isActive","disabled","handleClick","editor","useBlocksEditorContext","formatMessage","useIntl","labelMessage","enabledColor","_jsx","Tooltip","ToggleItem","value","data-state","onPointerDown","e","preventDefault","ReactEditor","focus","aria-disabled","aria-label","asChild","tag","background","alignItems","justifyContent","width","height","hasRadius","type","fill","BlocksDropdown","blocks","isMobile","useIsMobile","blockKeysToInclude","getEntries","reduce","currentKeys","block","isInBlocksSelector","blockSelected","setBlockSelected","handleSelect","optionKey","editorIsEmpty","children","length","Editor","isEmpty","selection","Transforms","insertNodes","text","select","start","currentListEntry","above","match","node","isEditor","includes","currentList","currentListPath","format","isListNode","setNodes","at","maybeRenderModal","handleConvert","preventSelectFocus","useEffect","selectedNode","anchor","anchorNode","parent","edge","depth","anchorBlockKey","getKeys","find","blockKey","matchNode","selectedBlock","_jsxs","_Fragment","SingleSelect","startIcon","onChange","customizeContent","onCloseAutoFocus","id","defaultMessage","map","selectorBlock","BlockOption","isSelected","SingleSelectOption","Node","isNode","ListButton","location","isListActive","isListDisabled","anchorNodeEntry","focusNodeEntry","toggleList","_","lastNodePath","last","StyledMenuItem","onSelect","LinkButton","isLinkActive","Array","from","nodes","unhangRange","SlateElement","isElement","Boolean","isLinkDisabled","addLink","shouldSaveLinkPath","insertLink","url","Link","Menu","Item","props","css","primary600","neutral500","ReorderToolbarButtons","setLiveText","totalBlocks","anchorIndex","path","focusIndex","isSingleBlockSelection","selectedTopLevelNode","Object","values","isSelectedBlockDraggable","isDraggable","canMoveUp","canMoveDown","moveBlock","direction","currentIndex","newIndex","moveNodes","to","getTranslation","item","position","gap","Button","ArrowUp","ArrowDown","BlocksToolbar","modifiers","checkButtonDisabled","isButtonDisabled","observedComponents","entries","modifier","checkIsActive","handleToggle","toolbar","menu","style","marginLeft","ToggleGroup","Root","padding","initial","grow","overflow","EditorToolbarObserver"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BlocksToolbar.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport * as Toolbar from '@radix-ui/react-toolbar';\nimport { useIsMobile } from '@strapi/admin/strapi-admin';\nimport {\n Flex,\n Tooltip,\n SingleSelect,\n SingleSelectOption,\n Box,\n FlexComponent,\n BoxComponent,\n Menu,\n} from '@strapi/design-system';\nimport { Link, ArrowUp, ArrowDown } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { Editor, Transforms, Element as SlateElement, Node, type Ancestor } from 'slate';\nimport { ReactEditor } from 'slate-react';\nimport { css, styled } from 'styled-components';\n\nimport { getTranslation } from '../../../../../utils/translations';\nimport { EditorToolbarObserver, type ObservedComponent } from '../../EditorToolbarObserver';\n\nimport { insertLink } from './Blocks/Link';\nimport {\n type BlocksStore,\n type SelectorBlock,\n type SelectorBlockKey,\n isSelectorBlockKey,\n useBlocksEditorContext,\n} from './BlocksEditor';\nimport { type Block, getEntries, getKeys } from './utils/types';\n\nconst ToolbarWrapper = styled<FlexComponent>(Flex)`\n &[aria-disabled='true'] {\n cursor: not-allowed;\n background: ${({ theme }) => theme.colors.neutral150};\n }\n`;\n\nconst ToolbarSeparator = styled(Toolbar.Separator)`\n background: ${({ theme }) => theme.colors.neutral150};\n width: 1px;\n height: 2.4rem;\n margin-left: ${({ theme }) => theme.spaces[1]};\n margin-right: ${({ theme }) => theme.spaces[1]};\n\n ${({ theme }) => theme.breakpoints.medium} {\n margin-left: ${({ theme }) => theme.spaces[2]};\n margin-right: ${({ theme }) => theme.spaces[2]};\n }\n`;\n\nconst FlexButton = styled<FlexComponent<'button'>>(Flex)`\n // Inherit the not-allowed cursor from ToolbarWrapper when disabled\n &[aria-disabled] {\n cursor: not-allowed;\n }\n\n &[aria-disabled='false'] {\n cursor: pointer;\n\n // Only apply hover styles if the button is enabled on desktop\n ${({ theme }) => theme.breakpoints.medium} {\n &:hover {\n background: ${({ theme }) => theme.colors.primary100};\n }\n }\n }\n`;\n\nconst SelectWrapper = styled<BoxComponent>(Box)`\n // Styling changes to SingleSelect component don't work, so adding wrapper to target SingleSelect\n div[role='combobox'] {\n border: none;\n cursor: pointer;\n min-height: unset;\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n padding-left: ${({ theme }) => theme.spaces[4]};\n padding-right: ${({ theme }) => theme.spaces[4]};\n gap: ${({ theme }) => theme.spaces[2]};\n \n ${({ theme }) => theme.breakpoints.medium} {\n padding-top: ${({ theme }) => theme.spaces[1]};\n padding-bottom: ${({ theme }) => theme.spaces[1]};\n gap: ${({ theme }) => theme.spaces[4]};\n }\n\n &[aria-disabled='false']:hover {\n cursor: pointer;\n background: ${({ theme }) => theme.colors.primary100};\n }\n\n &[aria-disabled] {\n background: transparent;\n cursor: inherit;\n\n // Select text and icons should also have disabled color\n span {\n color: ${({ theme }) => theme.colors.neutral600};\n }\n }\n\n & > span:first-child {\n gap: ${({ theme }) => theme.spaces[0]};\n\n ${({ theme }) => theme.breakpoints.medium} {\n gap: ${({ theme }) => theme.spaces[3]};\n }\n }\n`;\n\n/**\n * Handles the modal component that may be returned by a block when converting it\n */\nfunction useConversionModal() {\n const [modalElement, setModalComponent] = React.useState<React.JSX.Element | null>(null);\n\n const handleConversionResult = (renderModal: void | (() => React.JSX.Element) | undefined) => {\n // Not all blocks return a modal\n if (renderModal) {\n // Use cloneElement to apply a key because to create a new instance of the component\n // Without the new key, the state is kept from previous times that option was picked\n setModalComponent(React.cloneElement(renderModal(), { key: Date.now() }));\n }\n };\n\n return { modalElement, handleConversionResult };\n}\n\ninterface ToolbarButtonProps {\n icon?: React.ComponentType<React.SVGProps<SVGSVGElement>>;\n name: string;\n label: MessageDescriptor;\n isActive: boolean;\n disabled: boolean;\n handleClick: () => void;\n}\n\nconst ToolbarButton = ({\n icon: Icon,\n name,\n label,\n isActive,\n disabled,\n handleClick,\n}: ToolbarButtonProps) => {\n const { editor } = useBlocksEditorContext('ToolbarButton');\n const { formatMessage } = useIntl();\n const labelMessage = formatMessage(label);\n\n const enabledColor = isActive ? 'primary600' : 'neutral600';\n\n return (\n <Tooltip label={labelMessage}>\n <Toolbar.ToggleItem\n value={name}\n data-state={isActive ? 'on' : 'off'}\n onPointerDown={(e) => {\n e.preventDefault();\n handleClick();\n ReactEditor.focus(editor);\n }}\n aria-disabled={disabled}\n disabled={disabled}\n aria-label={labelMessage}\n asChild\n >\n <FlexButton\n tag=\"button\"\n background={isActive ? 'primary100' : ''}\n alignItems=\"center\"\n justifyContent=\"center\"\n width={7}\n height={7}\n hasRadius\n type=\"button\"\n >\n {Icon && <Icon fill={disabled ? 'neutral300' : enabledColor} />}\n </FlexButton>\n </Toolbar.ToggleItem>\n </Tooltip>\n );\n};\n\nconst BlocksDropdown = () => {\n const { editor, blocks, disabled } = useBlocksEditorContext('BlocksDropdown');\n const { formatMessage } = useIntl();\n const { modalElement, handleConversionResult } = useConversionModal();\n const isMobile = useIsMobile();\n\n const blockKeysToInclude: string[] = getEntries(blocks).reduce<string[]>(\n (currentKeys, [key, block]) => {\n return block?.isInBlocksSelector ? [...currentKeys, key] : currentKeys;\n },\n []\n );\n\n const [blockSelected, setBlockSelected] = React.useState<string>('paragraph');\n\n const handleSelect = (optionKey: unknown) => {\n if (typeof optionKey !== 'string' || !blocks[optionKey]) {\n return;\n }\n\n const editorIsEmpty =\n editor.children.length === 1 && Editor.isEmpty(editor, editor.children[0]);\n\n if (!editor.selection && !editorIsEmpty) {\n // When there is no selection, create an empty block at the end of the editor\n // so that it can be converted to the selected block\n Transforms.insertNodes(\n editor,\n {\n type: 'quote',\n children: [{ type: 'text', text: '' }],\n },\n {\n select: true,\n // Since there's no selection, Slate will automatically insert the node at the end\n }\n );\n } else if (!editor.selection && editorIsEmpty) {\n // When there is no selection and the editor is empty,\n // select the empty paragraph from Slate's initialValue so it gets converted\n Transforms.select(editor, Editor.start(editor, [0, 0]));\n }\n\n // If selection is already a list block, toggle its format\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n });\n\n if (currentListEntry && ['list-ordered', 'list-unordered'].includes(optionKey)) {\n const [currentList, currentListPath] = currentListEntry;\n const format = optionKey === 'list-ordered' ? 'ordered' : 'unordered';\n\n if (!Editor.isEditor(currentList) && isListNode(currentList)) {\n // Format is different, toggle list format\n if (currentList.format !== format) {\n Transforms.setNodes(editor, { format }, { at: currentListPath });\n }\n }\n return;\n }\n\n // Let the block handle the Slate conversion logic\n const maybeRenderModal = blocks[optionKey]?.handleConvert?.(editor);\n handleConversionResult(maybeRenderModal);\n\n setBlockSelected(optionKey);\n\n ReactEditor.focus(editor);\n };\n\n /**\n * Prevent the select from focusing itself so ReactEditor.focus(editor) can focus the editor instead.\n *\n * The editor first loses focus to a blur event when clicking the select button. However,\n * refocusing the editor is not enough since the select's default behavior is to refocus itself\n * after an option is selected.\n *\n */\n const preventSelectFocus = (e: Event) => e.preventDefault();\n\n // Listen to the selection change and update the selected block in the dropdown\n React.useEffect(() => {\n if (editor.selection) {\n let selectedNode: Ancestor;\n\n // If selection anchor is a list-item, get its parent\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: editor.selection.anchor,\n });\n\n if (currentListEntry) {\n const [currentList] = currentListEntry;\n selectedNode = currentList;\n } else {\n // Get the parent node of the anchor other than list-item\n const [anchorNode] = Editor.parent(editor, editor.selection.anchor, {\n edge: 'start',\n depth: 2,\n });\n\n // @ts-expect-error slate's delete behaviour creates an exceptional type\n if (anchorNode.type === 'list-item') {\n // When the last node in the selection is a list item,\n // slate's default delete operation leaves an empty list-item instead of converting it into a paragraph.\n // Issue: https://github.com/ianstormtaylor/slate/issues/2500\n\n Transforms.setNodes(editor, { type: 'paragraph' });\n // @ts-expect-error convert explicitly type to paragraph\n selectedNode = { ...anchorNode, type: 'paragraph' };\n } else {\n selectedNode = anchorNode;\n }\n }\n\n // Find the block key that matches the anchor node\n const anchorBlockKey = getKeys(blocks).find(\n (blockKey) => !Editor.isEditor(selectedNode) && blocks[blockKey]?.matchNode(selectedNode)\n );\n\n // Change the value selected in the dropdown if it doesn't match the anchor block key\n if (anchorBlockKey && anchorBlockKey !== blockSelected) {\n setBlockSelected(anchorBlockKey);\n }\n }\n }, [editor.selection, editor, blocks, blockSelected]);\n\n React.useEffect(() => {\n // If the selected block is not in the list of blocks to include, change the selected block to the first one\n if (blockKeysToInclude.length > 0 && !blockKeysToInclude.includes(blockSelected)) {\n setBlockSelected(blockKeysToInclude[0]);\n }\n }, [blockKeysToInclude, blockSelected]);\n\n if (!blocks[blockSelected]) {\n return null;\n }\n\n const selectedBlock = blocks[blockSelected] as SelectorBlock;\n const Icon = selectedBlock.icon;\n\n return (\n <>\n <SelectWrapper>\n <SingleSelect\n startIcon={Icon && <Icon />}\n onChange={handleSelect}\n customizeContent={() => (isMobile ? '' : formatMessage(selectedBlock.label))}\n value={blockSelected}\n onCloseAutoFocus={preventSelectFocus}\n aria-label={formatMessage({\n id: 'components.Blocks.blocks.selectBlock',\n defaultMessage: 'Select a block',\n })}\n disabled={disabled}\n >\n {blockKeysToInclude.map((key) => {\n const selectorBlock = blocks[key] as SelectorBlock;\n return (\n <BlockOption\n key={key}\n value={key}\n label={selectorBlock.label}\n icon={selectorBlock.icon}\n blockSelected={blockSelected}\n />\n );\n })}\n </SingleSelect>\n </SelectWrapper>\n {modalElement}\n </>\n );\n};\n\ninterface BlockOptionProps {\n value: string;\n icon?: React.ComponentType<React.SVGProps<SVGElement>>;\n label: MessageDescriptor;\n blockSelected: string;\n}\n\nconst BlockOption = ({ value, icon: Icon, label, blockSelected }: BlockOptionProps) => {\n const { formatMessage } = useIntl();\n\n const isSelected = value === blockSelected;\n\n return (\n <SingleSelectOption\n startIcon={Icon && <Icon fill={isSelected ? 'primary600' : 'neutral500'} />}\n value={value}\n >\n {formatMessage(label)}\n </SingleSelectOption>\n );\n};\n\nconst isListNode = (node: unknown): node is Block<'list'> => {\n return Node.isNode(node) && !Editor.isEditor(node) && node.type === 'list';\n};\n\ninterface ListButtonProps {\n block: BlocksStore['list-ordered'] | BlocksStore['list-unordered'];\n format: Block<'list'>['format'];\n location?: 'toolbar' | 'menu';\n}\n\nconst ListButton = ({ block, format, location = 'toolbar' }: ListButtonProps) => {\n const { formatMessage } = useIntl();\n const { editor, disabled, blocks } = useBlocksEditorContext('ListButton');\n\n const isListActive = () => {\n if (!editor.selection) return false;\n\n // Get the parent list at selection anchor node\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: editor.selection.anchor,\n });\n\n if (currentListEntry) {\n const [currentList] = currentListEntry;\n if (!Editor.isEditor(currentList) && isListNode(currentList) && currentList.format === format)\n return true;\n }\n\n return false;\n };\n\n /**\n * @TODO: Currently, applying list while multiple blocks are selected is not supported.\n * We should implement this feature in the future.\n */\n const isListDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n // Always enabled when there's no selection\n if (!editor.selection) {\n return false;\n }\n\n // Get the block node closest to the anchor and focus\n const anchorNodeEntry = Editor.above(editor, {\n at: editor.selection.anchor,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n const focusNodeEntry = Editor.above(editor, {\n at: editor.selection.focus,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n\n if (!anchorNodeEntry || !focusNodeEntry) {\n return false;\n }\n\n // Disabled if the anchor and focus are not in the same block\n return anchorNodeEntry[0] !== focusNodeEntry[0];\n };\n\n const toggleList = (format: Block<'list'>['format']) => {\n let currentListEntry;\n if (editor.selection) {\n currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n });\n } else {\n // If no selection, toggle last inserted node\n const [_, lastNodePath] = Editor.last(editor, []);\n currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: lastNodePath,\n });\n }\n\n if (!currentListEntry) {\n // If selection is not a list then convert it to list\n blocks[`list-${format}`]?.handleConvert!(editor);\n return;\n }\n\n // If selection is already a list then toggle format\n const [currentList, currentListPath] = currentListEntry;\n\n if (!Editor.isEditor(currentList) && isListNode(currentList)) {\n if (currentList.format !== format) {\n // Format is different, toggle list format\n Transforms.setNodes(editor, { format }, { at: currentListPath });\n } else {\n // Format is same, convert selected list-item to paragraph\n blocks['paragraph']?.handleConvert!(editor);\n }\n }\n };\n\n if (location === 'menu') {\n const Icon = block.icon;\n\n return (\n <StyledMenuItem\n startIcon={Icon && <Icon />}\n onSelect={() => toggleList(format)}\n isActive={isListActive()}\n disabled={isListDisabled()}\n >\n {formatMessage(block.label)}\n </StyledMenuItem>\n );\n }\n\n return (\n <ToolbarButton\n icon={block.icon}\n name={format}\n label={block.label}\n isActive={isListActive()}\n disabled={isListDisabled()}\n handleClick={() => toggleList(format)}\n />\n );\n};\n\nconst LinkButton = ({\n disabled,\n location = 'toolbar',\n}: {\n disabled: boolean;\n location?: 'toolbar' | 'menu';\n}) => {\n const { editor } = useBlocksEditorContext('LinkButton');\n const { formatMessage } = useIntl();\n\n const isLinkActive = () => {\n const { selection } = editor;\n\n if (!selection) return false;\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, selection),\n match: (node) => SlateElement.isElement(node) && node.type === 'link',\n })\n );\n\n return Boolean(match);\n };\n\n const isLinkDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n // Always enabled when there's no selection\n if (!editor.selection) {\n return false;\n }\n\n // Get the block node closest to the anchor and focus\n const anchorNodeEntry = Editor.above(editor, {\n at: editor.selection.anchor,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n const focusNodeEntry = Editor.above(editor, {\n at: editor.selection.focus,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n\n if (!anchorNodeEntry || !focusNodeEntry) {\n return false;\n }\n\n // Disabled if the anchor and focus are not in the same block\n return anchorNodeEntry[0] !== focusNodeEntry[0];\n };\n\n const addLink = () => {\n editor.shouldSaveLinkPath = true;\n // We insert an empty anchor, so we split the DOM to have a element we can use as reference for the popover\n insertLink(editor, { url: '' });\n };\n\n const label = {\n id: 'components.Blocks.link',\n defaultMessage: 'Link',\n } as MessageDescriptor;\n\n if (location === 'menu') {\n return (\n <StyledMenuItem\n startIcon={<Link />}\n onSelect={addLink}\n isActive={isLinkActive()}\n disabled={isLinkDisabled()}\n >\n {formatMessage(label)}\n </StyledMenuItem>\n );\n }\n\n return (\n <ToolbarButton\n icon={Link}\n name=\"link\"\n label={label}\n isActive={isLinkActive()}\n handleClick={addLink}\n disabled={isLinkDisabled()}\n />\n );\n};\n\nconst StyledMenuItem = styled(Menu.Item)<{ isActive: boolean }>`\n ${(props) =>\n props.isActive &&\n css`\n color: ${({ theme }) => theme.colors.primary600};\n font-weight: 600;\n `}\n\n svg {\n fill: ${({ theme, isActive }) =>\n isActive ? theme.colors.primary600 : theme.colors.neutral500};\n }\n`;\n\nconst ReorderToolbarButtons = () => {\n const { editor, disabled, blocks, name, setLiveText } =\n useBlocksEditorContext('ReorderToolbarButtons');\n const { formatMessage } = useIntl();\n\n const selection = editor.selection;\n const totalBlocks = editor.children.length;\n\n const anchorIndex = selection ? selection.anchor.path[0] : null;\n const focusIndex = selection ? selection.focus.path[0] : null;\n const isSingleBlockSelection =\n anchorIndex !== null && focusIndex !== null && anchorIndex === focusIndex;\n\n const selectedTopLevelNode =\n isSingleBlockSelection && anchorIndex !== null ? editor.children[anchorIndex] : null;\n const selectedBlock =\n selectedTopLevelNode &&\n Object.values(blocks).find((block) => block.matchNode(selectedTopLevelNode));\n\n const isSelectedBlockDraggable =\n selectedTopLevelNode && selectedBlock\n ? (selectedBlock.isDraggable?.(selectedTopLevelNode) ?? true)\n : false;\n\n const canMoveUp =\n !disabled &&\n isSingleBlockSelection &&\n isSelectedBlockDraggable &&\n anchorIndex !== null &&\n anchorIndex > 0;\n const canMoveDown =\n !disabled &&\n isSingleBlockSelection &&\n isSelectedBlockDraggable &&\n anchorIndex !== null &&\n anchorIndex < totalBlocks - 1;\n\n const moveBlock = (direction: 'up' | 'down') => {\n if (!selection || anchorIndex === null) return;\n\n const currentIndex = [anchorIndex];\n const newIndex = [direction === 'up' ? anchorIndex - 1 : anchorIndex + 1];\n\n Transforms.moveNodes(editor, {\n at: currentIndex,\n to: newIndex,\n });\n\n // Keep the moved block focused so disabled states update immediately.\n Transforms.select(editor, Editor.start(editor, newIndex));\n ReactEditor.focus(editor);\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('components.Blocks.dnd.reorder'),\n defaultMessage: '{item}, moved. New position in the editor: {position}.',\n },\n {\n item: `${name}.${currentIndex[0] + 1}`,\n position: `${newIndex[0] + 1} of ${editor.children.length}`,\n }\n )\n );\n };\n\n return (\n <Flex direction=\"row\" gap={1}>\n <Tooltip\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-up'),\n defaultMessage: 'Move up',\n })}\n >\n <Toolbar.Button\n onPointerDown={(e) => {\n e.preventDefault();\n if (canMoveUp) moveBlock('up');\n }}\n aria-disabled={!canMoveUp}\n disabled={!canMoveUp}\n aria-label={formatMessage({\n id: getTranslation('components.DynamicZone.move-up'),\n defaultMessage: 'Move up',\n })}\n asChild\n >\n <FlexButton\n tag=\"button\"\n alignItems=\"center\"\n justifyContent=\"center\"\n width={7}\n height={7}\n hasRadius\n type=\"button\"\n >\n <ArrowUp fill={!canMoveUp ? 'neutral300' : 'neutral600'} />\n </FlexButton>\n </Toolbar.Button>\n </Tooltip>\n\n <Tooltip\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-down'),\n defaultMessage: 'Move down',\n })}\n >\n <Toolbar.Button\n onPointerDown={(e) => {\n e.preventDefault();\n if (canMoveDown) moveBlock('down');\n }}\n aria-disabled={!canMoveDown}\n disabled={!canMoveDown}\n aria-label={formatMessage({\n id: getTranslation('components.DynamicZone.move-down'),\n defaultMessage: 'Move down',\n })}\n asChild\n >\n <FlexButton\n tag=\"button\"\n alignItems=\"center\"\n justifyContent=\"center\"\n width={7}\n height={7}\n hasRadius\n type=\"button\"\n >\n <ArrowDown fill={!canMoveDown ? 'neutral300' : 'neutral600'} />\n </FlexButton>\n </Toolbar.Button>\n </Tooltip>\n </Flex>\n );\n};\n\nconst BlocksToolbar = () => {\n const { editor, blocks, modifiers, disabled } = useBlocksEditorContext('BlocksToolbar');\n const { formatMessage } = useIntl();\n const isMobile = useIsMobile();\n\n /**\n * The modifier buttons are disabled when an image is selected.\n */\n const checkButtonDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n if (!editor.selection) {\n return false;\n }\n\n const selectedNode = editor.children[editor.selection.anchor.path[0]];\n if (!selectedNode) return true;\n\n if (['image', 'code'].includes(selectedNode.type)) {\n return true;\n }\n\n return false;\n };\n\n const isButtonDisabled = checkButtonDisabled();\n\n /**\n * Observed components are ones that may or may not be visible in the toolbar, depending on the\n * available space. They provide two render props:\n * - renderInToolbar: for when we try to render the component in the toolbar (may be hidden)\n * - renderInMenu: for when the component didn't fit in the toolbar and is relegated\n * to the \"more\" menu\n */\n const observedComponents: ObservedComponent[] = [\n ...Object.entries(modifiers).map(([name, modifier]) => {\n const Icon = modifier.icon;\n const isActive = modifier.checkIsActive(editor);\n const handleSelect = () => modifier.handleToggle(editor);\n\n return {\n toolbar: (\n <ToolbarButton\n key={name}\n name={name}\n icon={modifier.icon}\n label={modifier.label}\n isActive={modifier.checkIsActive(editor)}\n handleClick={handleSelect}\n disabled={isButtonDisabled}\n />\n ),\n menu: (\n <StyledMenuItem startIcon={<Icon />} onSelect={handleSelect} isActive={isActive}>\n {formatMessage(modifier.label)}\n </StyledMenuItem>\n ),\n key: `modifier.${name}`,\n };\n }),\n {\n toolbar: <LinkButton disabled={isButtonDisabled} location=\"toolbar\" />,\n menu: <LinkButton disabled={isButtonDisabled} location=\"menu\" />,\n key: 'block.link',\n },\n {\n // List buttons can only be rendered together when in the toolbar\n toolbar: (\n <Flex direction=\"row\">\n <ToolbarSeparator style={{ marginLeft: '0.4rem' }} />\n <Toolbar.ToggleGroup type=\"single\" asChild>\n <Flex gap={1}>\n <ListButton block={blocks['list-unordered']!} format=\"unordered\" location=\"toolbar\" />\n <ListButton block={blocks['list-ordered']!} format=\"ordered\" location=\"toolbar\" />\n </Flex>\n </Toolbar.ToggleGroup>\n </Flex>\n ),\n menu: (\n <>\n <Menu.Separator />\n <ListButton block={blocks['list-unordered']!} format=\"unordered\" location=\"menu\" />\n <ListButton block={blocks['list-ordered']!} format=\"ordered\" location=\"menu\" />\n </>\n ),\n key: 'block.list',\n },\n ];\n\n return (\n <Toolbar.Root aria-disabled={disabled} asChild>\n <ToolbarWrapper padding={{ initial: 1, medium: 2 }} width=\"100%\">\n <BlocksDropdown />\n {isMobile && (\n <>\n <ToolbarSeparator />\n <ReorderToolbarButtons />\n </>\n )}\n <ToolbarSeparator />\n <Toolbar.ToggleGroup type=\"multiple\" asChild>\n <Flex direction=\"row\" gap={1} grow={1} overflow=\"hidden\">\n <EditorToolbarObserver observedComponents={observedComponents} />\n </Flex>\n </Toolbar.ToggleGroup>\n </ToolbarWrapper>\n </Toolbar.Root>\n );\n};\n\nexport { BlocksToolbar, useConversionModal };\n"],"names":["ToolbarWrapper","styled","Flex","theme","colors","neutral150","ToolbarSeparator","Toolbar","Separator","spaces","breakpoints","medium","FlexButton","primary100","SelectWrapper","Box","neutral600","useConversionModal","modalElement","setModalComponent","React","useState","handleConversionResult","renderModal","cloneElement","key","Date","now","ToolbarButton","icon","Icon","name","label","isActive","disabled","handleClick","editor","useBlocksEditorContext","formatMessage","useIntl","labelMessage","enabledColor","_jsx","Tooltip","ToggleItem","value","data-state","onPointerDown","e","preventDefault","ReactEditor","focus","aria-disabled","aria-label","asChild","tag","background","alignItems","justifyContent","width","height","hasRadius","type","fill","BlocksDropdown","blocks","isMobile","useIsMobile","blockKeysToInclude","getEntries","reduce","currentKeys","block","isInBlocksSelector","blockSelected","setBlockSelected","handleSelect","optionKey","editorIsEmpty","children","length","Editor","isEmpty","selection","Transforms","insertNodes","text","select","start","currentListEntry","above","match","node","isEditor","includes","currentList","currentListPath","format","isListNode","setNodes","at","maybeRenderModal","handleConvert","preventSelectFocus","useEffect","selectedNode","anchor","anchorNode","parent","edge","depth","anchorBlockKey","getKeys","find","blockKey","matchNode","selectedBlock","_jsxs","_Fragment","SingleSelect","startIcon","onChange","customizeContent","onCloseAutoFocus","id","defaultMessage","map","selectorBlock","BlockOption","isSelected","SingleSelectOption","Node","isNode","ListButton","location","isListActive","isListDisabled","anchorNodeEntry","focusNodeEntry","toggleList","_","lastNodePath","last","StyledMenuItem","onSelect","LinkButton","isLinkActive","Array","from","nodes","unhangRange","SlateElement","isElement","Boolean","isLinkDisabled","addLink","shouldSaveLinkPath","insertLink","url","Link","Menu","Item","props","css","primary600","neutral500","ReorderToolbarButtons","setLiveText","totalBlocks","anchorIndex","path","focusIndex","isSingleBlockSelection","selectedTopLevelNode","Object","values","isSelectedBlockDraggable","isDraggable","canMoveUp","canMoveDown","moveBlock","direction","currentIndex","newIndex","moveNodes","to","getTranslation","item","position","gap","Button","ArrowUp","ArrowDown","BlocksToolbar","modifiers","checkButtonDisabled","isButtonDisabled","observedComponents","entries","modifier","checkIsActive","handleToggle","toolbar","menu","style","marginLeft","ToggleGroup","Root","padding","initial","grow","overflow","EditorToolbarObserver"],"mappings":"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"}
1
+ {"version":3,"file":"BlocksToolbar.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport * as Toolbar from '@radix-ui/react-toolbar';\nimport { useIsMobile } from '@strapi/admin/strapi-admin';\nimport {\n Flex,\n Tooltip,\n SingleSelect,\n SingleSelectOption,\n Box,\n FlexComponent,\n BoxComponent,\n Menu,\n} from '@strapi/design-system';\nimport { Link, ArrowUp, ArrowDown } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { Editor, Transforms, Element as SlateElement, Node, type Ancestor } from 'slate';\nimport { ReactEditor } from 'slate-react';\nimport { css, styled } from 'styled-components';\n\nimport { getTranslation } from '../../../../../utils/translations';\nimport { EditorToolbarObserver, type ObservedComponent } from '../../EditorToolbarObserver';\n\nimport { insertLink } from './Blocks/Link';\nimport { type BlocksStore, type SelectorBlock, useBlocksEditorContext } from './BlocksEditor';\nimport { type Block, getEntries, getKeys } from './utils/types';\n\nconst ToolbarWrapper = styled<FlexComponent>(Flex)`\n &[aria-disabled='true'] {\n cursor: not-allowed;\n background: ${({ theme }) => theme.colors.neutral150};\n }\n`;\n\nconst ToolbarSeparator = styled(Toolbar.Separator)`\n background: ${({ theme }) => theme.colors.neutral150};\n width: 1px;\n height: 2.4rem;\n margin-left: ${({ theme }) => theme.spaces[1]};\n margin-right: ${({ theme }) => theme.spaces[1]};\n\n ${({ theme }) => theme.breakpoints.medium} {\n margin-left: ${({ theme }) => theme.spaces[2]};\n margin-right: ${({ theme }) => theme.spaces[2]};\n }\n`;\n\nconst FlexButton = styled<FlexComponent<'button'>>(Flex)`\n // Inherit the not-allowed cursor from ToolbarWrapper when disabled\n &[aria-disabled] {\n cursor: not-allowed;\n }\n\n &[aria-disabled='false'] {\n cursor: pointer;\n\n // Only apply hover styles if the button is enabled on desktop\n ${({ theme }) => theme.breakpoints.medium} {\n &:hover {\n background: ${({ theme }) => theme.colors.primary100};\n }\n }\n }\n`;\n\nconst SelectWrapper = styled<BoxComponent>(Box)`\n // Styling changes to SingleSelect component don't work, so adding wrapper to target SingleSelect\n div[role='combobox'] {\n border: none;\n cursor: pointer;\n min-height: unset;\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n padding-left: ${({ theme }) => theme.spaces[4]};\n padding-right: ${({ theme }) => theme.spaces[4]};\n gap: ${({ theme }) => theme.spaces[2]};\n \n ${({ theme }) => theme.breakpoints.medium} {\n padding-top: ${({ theme }) => theme.spaces[1]};\n padding-bottom: ${({ theme }) => theme.spaces[1]};\n gap: ${({ theme }) => theme.spaces[4]};\n }\n\n &[aria-disabled='false']:hover {\n cursor: pointer;\n background: ${({ theme }) => theme.colors.primary100};\n }\n\n &[aria-disabled] {\n background: transparent;\n cursor: inherit;\n\n // Select text and icons should also have disabled color\n span {\n color: ${({ theme }) => theme.colors.neutral600};\n }\n }\n\n & > span:first-child {\n gap: ${({ theme }) => theme.spaces[0]};\n\n ${({ theme }) => theme.breakpoints.medium} {\n gap: ${({ theme }) => theme.spaces[3]};\n }\n }\n`;\n\n/**\n * Handles the modal component that may be returned by a block when converting it\n */\nfunction useConversionModal() {\n const [modalElement, setModalComponent] = React.useState<React.JSX.Element | null>(null);\n\n const handleConversionResult = (renderModal: void | (() => React.JSX.Element) | undefined) => {\n // Not all blocks return a modal\n if (renderModal) {\n // Use cloneElement to apply a key because to create a new instance of the component\n // Without the new key, the state is kept from previous times that option was picked\n setModalComponent(React.cloneElement(renderModal(), { key: Date.now() }));\n }\n };\n\n return { modalElement, handleConversionResult };\n}\n\ninterface ToolbarButtonProps {\n icon?: React.ComponentType<React.SVGProps<SVGSVGElement>>;\n name: string;\n label: MessageDescriptor;\n isActive: boolean;\n disabled: boolean;\n handleClick: () => void;\n}\n\nconst ToolbarButton = ({\n icon: Icon,\n name,\n label,\n isActive,\n disabled,\n handleClick,\n}: ToolbarButtonProps) => {\n const { editor } = useBlocksEditorContext('ToolbarButton');\n const { formatMessage } = useIntl();\n const labelMessage = formatMessage(label);\n\n const enabledColor = isActive ? 'primary600' : 'neutral600';\n\n return (\n <Tooltip label={labelMessage}>\n <Toolbar.ToggleItem\n value={name}\n data-state={isActive ? 'on' : 'off'}\n onPointerDown={(e) => {\n e.preventDefault();\n handleClick();\n ReactEditor.focus(editor);\n }}\n aria-disabled={disabled}\n disabled={disabled}\n aria-label={labelMessage}\n asChild\n >\n <FlexButton\n tag=\"button\"\n background={isActive ? 'primary100' : ''}\n alignItems=\"center\"\n justifyContent=\"center\"\n width={7}\n height={7}\n hasRadius\n type=\"button\"\n >\n {Icon && <Icon fill={disabled ? 'neutral300' : enabledColor} />}\n </FlexButton>\n </Toolbar.ToggleItem>\n </Tooltip>\n );\n};\n\nconst BlocksDropdown = () => {\n const { editor, blocks, disabled } = useBlocksEditorContext('BlocksDropdown');\n const { formatMessage } = useIntl();\n const { modalElement, handleConversionResult } = useConversionModal();\n const isMobile = useIsMobile();\n\n const blockKeysToInclude: string[] = getEntries(blocks).reduce<string[]>(\n (currentKeys, [key, block]) => {\n return block?.isInBlocksSelector ? [...currentKeys, key] : currentKeys;\n },\n []\n );\n\n const [blockSelected, setBlockSelected] = React.useState<string>('paragraph');\n\n const handleSelect = (optionKey: unknown) => {\n if (typeof optionKey !== 'string' || !blocks[optionKey]) {\n return;\n }\n\n const editorIsEmpty =\n editor.children.length === 1 && Editor.isEmpty(editor, editor.children[0]);\n\n if (!editor.selection && !editorIsEmpty) {\n // When there is no selection, create an empty block at the end of the editor\n // so that it can be converted to the selected block\n Transforms.insertNodes(\n editor,\n {\n type: 'quote',\n children: [{ type: 'text', text: '' }],\n },\n {\n select: true,\n // Since there's no selection, Slate will automatically insert the node at the end\n }\n );\n } else if (!editor.selection && editorIsEmpty) {\n // When there is no selection and the editor is empty,\n // select the empty paragraph from Slate's initialValue so it gets converted\n Transforms.select(editor, Editor.start(editor, [0, 0]));\n }\n\n // If selection is already a list block, toggle its format\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n });\n\n if (currentListEntry && ['list-ordered', 'list-unordered'].includes(optionKey)) {\n const [currentList, currentListPath] = currentListEntry;\n const format = optionKey === 'list-ordered' ? 'ordered' : 'unordered';\n\n if (!Editor.isEditor(currentList) && isListNode(currentList)) {\n // Format is different, toggle list format\n if (currentList.format !== format) {\n Transforms.setNodes(editor, { format }, { at: currentListPath });\n }\n }\n return;\n }\n\n // Let the block handle the Slate conversion logic\n const maybeRenderModal = blocks[optionKey]?.handleConvert?.(editor);\n handleConversionResult(maybeRenderModal);\n\n setBlockSelected(optionKey);\n\n ReactEditor.focus(editor);\n };\n\n /**\n * Prevent the select from focusing itself so ReactEditor.focus(editor) can focus the editor instead.\n *\n * The editor first loses focus to a blur event when clicking the select button. However,\n * refocusing the editor is not enough since the select's default behavior is to refocus itself\n * after an option is selected.\n *\n */\n const preventSelectFocus = (e: Event) => e.preventDefault();\n\n // Listen to the selection change and update the selected block in the dropdown\n React.useEffect(() => {\n if (editor.selection) {\n let selectedNode: Ancestor;\n\n // If selection anchor is a list-item, get its parent\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: editor.selection.anchor,\n });\n\n if (currentListEntry) {\n const [currentList] = currentListEntry;\n selectedNode = currentList;\n } else {\n // Get the parent node of the anchor other than list-item\n const [anchorNode] = Editor.parent(editor, editor.selection.anchor, {\n edge: 'start',\n depth: 2,\n });\n\n // @ts-expect-error slate's delete behaviour creates an exceptional type\n if (anchorNode.type === 'list-item') {\n // When the last node in the selection is a list item,\n // slate's default delete operation leaves an empty list-item instead of converting it into a paragraph.\n // Issue: https://github.com/ianstormtaylor/slate/issues/2500\n\n Transforms.setNodes(editor, { type: 'paragraph' });\n // @ts-expect-error convert explicitly type to paragraph\n selectedNode = { ...anchorNode, type: 'paragraph' };\n } else {\n selectedNode = anchorNode;\n }\n }\n\n // Find the block key that matches the anchor node\n const anchorBlockKey = getKeys(blocks).find(\n (blockKey) => !Editor.isEditor(selectedNode) && blocks[blockKey]?.matchNode(selectedNode)\n );\n\n // Change the value selected in the dropdown if it doesn't match the anchor block key\n if (anchorBlockKey && anchorBlockKey !== blockSelected) {\n setBlockSelected(anchorBlockKey);\n }\n }\n }, [editor.selection, editor, blocks, blockSelected]);\n\n React.useEffect(() => {\n // If the selected block is not in the list of blocks to include, change the selected block to the first one\n if (blockKeysToInclude.length > 0 && !blockKeysToInclude.includes(blockSelected)) {\n setBlockSelected(blockKeysToInclude[0]);\n }\n }, [blockKeysToInclude, blockSelected]);\n\n if (!blocks[blockSelected]) {\n return null;\n }\n\n const selectedBlock = blocks[blockSelected] as SelectorBlock;\n const Icon = selectedBlock.icon;\n\n return (\n <>\n <SelectWrapper>\n <SingleSelect\n startIcon={Icon && <Icon />}\n onChange={handleSelect}\n customizeContent={() => (isMobile ? '' : formatMessage(selectedBlock.label))}\n value={blockSelected}\n onCloseAutoFocus={preventSelectFocus}\n aria-label={formatMessage({\n id: 'components.Blocks.blocks.selectBlock',\n defaultMessage: 'Select a block',\n })}\n disabled={disabled}\n >\n {blockKeysToInclude.map((key) => {\n const selectorBlock = blocks[key] as SelectorBlock;\n return (\n <BlockOption\n key={key}\n value={key}\n label={selectorBlock.label}\n icon={selectorBlock.icon}\n blockSelected={blockSelected}\n />\n );\n })}\n </SingleSelect>\n </SelectWrapper>\n {modalElement}\n </>\n );\n};\n\ninterface BlockOptionProps {\n value: string;\n icon?: React.ComponentType<React.SVGProps<SVGElement>>;\n label: MessageDescriptor;\n blockSelected: string;\n}\n\nconst BlockOption = ({ value, icon: Icon, label, blockSelected }: BlockOptionProps) => {\n const { formatMessage } = useIntl();\n\n const isSelected = value === blockSelected;\n\n return (\n <SingleSelectOption\n startIcon={Icon && <Icon fill={isSelected ? 'primary600' : 'neutral500'} />}\n value={value}\n >\n {formatMessage(label)}\n </SingleSelectOption>\n );\n};\n\nconst isListNode = (node: unknown): node is Block<'list'> => {\n return Node.isNode(node) && !Editor.isEditor(node) && node.type === 'list';\n};\n\ninterface ListButtonProps {\n block: BlocksStore['list-ordered'] | BlocksStore['list-unordered'];\n format: Block<'list'>['format'];\n location?: 'toolbar' | 'menu';\n}\n\nconst ListButton = ({ block, format, location = 'toolbar' }: ListButtonProps) => {\n const { formatMessage } = useIntl();\n const { editor, disabled, blocks } = useBlocksEditorContext('ListButton');\n\n const isListActive = () => {\n if (!editor.selection) return false;\n\n // Get the parent list at selection anchor node\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: editor.selection.anchor,\n });\n\n if (currentListEntry) {\n const [currentList] = currentListEntry;\n if (!Editor.isEditor(currentList) && isListNode(currentList) && currentList.format === format)\n return true;\n }\n\n return false;\n };\n\n /**\n * @TODO: Currently, applying list while multiple blocks are selected is not supported.\n * We should implement this feature in the future.\n */\n const isListDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n // Always enabled when there's no selection\n if (!editor.selection) {\n return false;\n }\n\n // Get the block node closest to the anchor and focus\n const anchorNodeEntry = Editor.above(editor, {\n at: editor.selection.anchor,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n const focusNodeEntry = Editor.above(editor, {\n at: editor.selection.focus,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n\n if (!anchorNodeEntry || !focusNodeEntry) {\n return false;\n }\n\n // Disabled if the anchor and focus are not in the same block\n return anchorNodeEntry[0] !== focusNodeEntry[0];\n };\n\n const toggleList = (format: Block<'list'>['format']) => {\n let currentListEntry;\n if (editor.selection) {\n currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n });\n } else {\n // If no selection, toggle last inserted node\n const [_, lastNodePath] = Editor.last(editor, []);\n currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: lastNodePath,\n });\n }\n\n if (!currentListEntry) {\n // If selection is not a list then convert it to list\n blocks[`list-${format}`]?.handleConvert!(editor);\n return;\n }\n\n // If selection is already a list then toggle format\n const [currentList, currentListPath] = currentListEntry;\n\n if (!Editor.isEditor(currentList) && isListNode(currentList)) {\n if (currentList.format !== format) {\n // Format is different, toggle list format\n Transforms.setNodes(editor, { format }, { at: currentListPath });\n } else {\n // Format is same, convert selected list-item to paragraph\n blocks['paragraph']?.handleConvert!(editor);\n }\n }\n };\n\n if (location === 'menu') {\n const Icon = block.icon;\n\n return (\n <StyledMenuItem\n startIcon={Icon && <Icon />}\n onSelect={() => toggleList(format)}\n isActive={isListActive()}\n disabled={isListDisabled()}\n >\n {formatMessage(block.label)}\n </StyledMenuItem>\n );\n }\n\n return (\n <ToolbarButton\n icon={block.icon}\n name={format}\n label={block.label}\n isActive={isListActive()}\n disabled={isListDisabled()}\n handleClick={() => toggleList(format)}\n />\n );\n};\n\nconst LinkButton = ({\n disabled,\n location = 'toolbar',\n}: {\n disabled: boolean;\n location?: 'toolbar' | 'menu';\n}) => {\n const { editor } = useBlocksEditorContext('LinkButton');\n const { formatMessage } = useIntl();\n\n const isLinkActive = () => {\n const { selection } = editor;\n\n if (!selection) return false;\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, selection),\n match: (node) => SlateElement.isElement(node) && node.type === 'link',\n })\n );\n\n return Boolean(match);\n };\n\n const isLinkDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n // Always enabled when there's no selection\n if (!editor.selection) {\n return false;\n }\n\n // Get the block node closest to the anchor and focus\n const anchorNodeEntry = Editor.above(editor, {\n at: editor.selection.anchor,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n const focusNodeEntry = Editor.above(editor, {\n at: editor.selection.focus,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n\n if (!anchorNodeEntry || !focusNodeEntry) {\n return false;\n }\n\n // Disabled if the anchor and focus are not in the same block\n return anchorNodeEntry[0] !== focusNodeEntry[0];\n };\n\n const addLink = () => {\n editor.shouldSaveLinkPath = true;\n // We insert an empty anchor, so we split the DOM to have a element we can use as reference for the popover\n insertLink(editor, { url: '' });\n };\n\n const label = {\n id: 'components.Blocks.link',\n defaultMessage: 'Link',\n } as MessageDescriptor;\n\n if (location === 'menu') {\n return (\n <StyledMenuItem\n startIcon={<Link />}\n onSelect={addLink}\n isActive={isLinkActive()}\n disabled={isLinkDisabled()}\n >\n {formatMessage(label)}\n </StyledMenuItem>\n );\n }\n\n return (\n <ToolbarButton\n icon={Link}\n name=\"link\"\n label={label}\n isActive={isLinkActive()}\n handleClick={addLink}\n disabled={isLinkDisabled()}\n />\n );\n};\n\nconst StyledMenuItem = styled(Menu.Item)<{ isActive: boolean }>`\n ${(props) =>\n props.isActive &&\n css`\n color: ${({ theme }) => theme.colors.primary600};\n font-weight: 600;\n `}\n\n svg {\n fill: ${({ theme, isActive }) =>\n isActive ? theme.colors.primary600 : theme.colors.neutral500};\n }\n`;\n\nconst ReorderToolbarButtons = () => {\n const { editor, disabled, blocks, name, setLiveText } =\n useBlocksEditorContext('ReorderToolbarButtons');\n const { formatMessage } = useIntl();\n\n const selection = editor.selection;\n const totalBlocks = editor.children.length;\n\n const anchorIndex = selection ? selection.anchor.path[0] : null;\n const focusIndex = selection ? selection.focus.path[0] : null;\n const isSingleBlockSelection =\n anchorIndex !== null && focusIndex !== null && anchorIndex === focusIndex;\n\n const selectedTopLevelNode =\n isSingleBlockSelection && anchorIndex !== null ? editor.children[anchorIndex] : null;\n const selectedBlock =\n selectedTopLevelNode &&\n Object.values(blocks).find((block) => block.matchNode(selectedTopLevelNode));\n\n const isSelectedBlockDraggable =\n selectedTopLevelNode && selectedBlock\n ? (selectedBlock.isDraggable?.(selectedTopLevelNode) ?? true)\n : false;\n\n const canMoveUp =\n !disabled &&\n isSingleBlockSelection &&\n isSelectedBlockDraggable &&\n anchorIndex !== null &&\n anchorIndex > 0;\n const canMoveDown =\n !disabled &&\n isSingleBlockSelection &&\n isSelectedBlockDraggable &&\n anchorIndex !== null &&\n anchorIndex < totalBlocks - 1;\n\n const moveBlock = (direction: 'up' | 'down') => {\n if (!selection || anchorIndex === null) return;\n\n const currentIndex = [anchorIndex];\n const newIndex = [direction === 'up' ? anchorIndex - 1 : anchorIndex + 1];\n\n Transforms.moveNodes(editor, {\n at: currentIndex,\n to: newIndex,\n });\n\n // Keep the moved block focused so disabled states update immediately.\n Transforms.select(editor, Editor.start(editor, newIndex));\n ReactEditor.focus(editor);\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('components.Blocks.dnd.reorder'),\n defaultMessage: '{item}, moved. New position in the editor: {position}.',\n },\n {\n item: `${name}.${currentIndex[0] + 1}`,\n position: `${newIndex[0] + 1} of ${editor.children.length}`,\n }\n )\n );\n };\n\n return (\n <Flex direction=\"row\" gap={1}>\n <Tooltip\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-up'),\n defaultMessage: 'Move up',\n })}\n >\n <Toolbar.Button\n onPointerDown={(e) => {\n e.preventDefault();\n if (canMoveUp) moveBlock('up');\n }}\n aria-disabled={!canMoveUp}\n disabled={!canMoveUp}\n aria-label={formatMessage({\n id: getTranslation('components.DynamicZone.move-up'),\n defaultMessage: 'Move up',\n })}\n asChild\n >\n <FlexButton\n tag=\"button\"\n alignItems=\"center\"\n justifyContent=\"center\"\n width={7}\n height={7}\n hasRadius\n type=\"button\"\n >\n <ArrowUp fill={!canMoveUp ? 'neutral300' : 'neutral600'} />\n </FlexButton>\n </Toolbar.Button>\n </Tooltip>\n\n <Tooltip\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-down'),\n defaultMessage: 'Move down',\n })}\n >\n <Toolbar.Button\n onPointerDown={(e) => {\n e.preventDefault();\n if (canMoveDown) moveBlock('down');\n }}\n aria-disabled={!canMoveDown}\n disabled={!canMoveDown}\n aria-label={formatMessage({\n id: getTranslation('components.DynamicZone.move-down'),\n defaultMessage: 'Move down',\n })}\n asChild\n >\n <FlexButton\n tag=\"button\"\n alignItems=\"center\"\n justifyContent=\"center\"\n width={7}\n height={7}\n hasRadius\n type=\"button\"\n >\n <ArrowDown fill={!canMoveDown ? 'neutral300' : 'neutral600'} />\n </FlexButton>\n </Toolbar.Button>\n </Tooltip>\n </Flex>\n );\n};\n\nconst BlocksToolbar = () => {\n const { editor, blocks, modifiers, disabled } = useBlocksEditorContext('BlocksToolbar');\n const { formatMessage } = useIntl();\n const isMobile = useIsMobile();\n\n /**\n * The modifier buttons are disabled when an image is selected.\n */\n const checkButtonDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n if (!editor.selection) {\n return false;\n }\n\n const selectedNode = editor.children[editor.selection.anchor.path[0]];\n if (!selectedNode) return true;\n\n if (['image', 'code'].includes(selectedNode.type)) {\n return true;\n }\n\n return false;\n };\n\n const isButtonDisabled = checkButtonDisabled();\n\n /**\n * Observed components are ones that may or may not be visible in the toolbar, depending on the\n * available space. They provide two render props:\n * - renderInToolbar: for when we try to render the component in the toolbar (may be hidden)\n * - renderInMenu: for when the component didn't fit in the toolbar and is relegated\n * to the \"more\" menu\n */\n const observedComponents: ObservedComponent[] = [\n ...Object.entries(modifiers).map(([name, modifier]) => {\n const Icon = modifier.icon;\n const isActive = modifier.checkIsActive(editor);\n const handleSelect = () => modifier.handleToggle(editor);\n\n return {\n toolbar: (\n <ToolbarButton\n key={name}\n name={name}\n icon={modifier.icon}\n label={modifier.label}\n isActive={modifier.checkIsActive(editor)}\n handleClick={handleSelect}\n disabled={isButtonDisabled}\n />\n ),\n menu: (\n <StyledMenuItem startIcon={<Icon />} onSelect={handleSelect} isActive={isActive}>\n {formatMessage(modifier.label)}\n </StyledMenuItem>\n ),\n key: `modifier.${name}`,\n };\n }),\n {\n toolbar: <LinkButton disabled={isButtonDisabled} location=\"toolbar\" />,\n menu: <LinkButton disabled={isButtonDisabled} location=\"menu\" />,\n key: 'block.link',\n },\n {\n // List buttons can only be rendered together when in the toolbar\n toolbar: (\n <Flex direction=\"row\">\n <ToolbarSeparator style={{ marginLeft: '0.4rem' }} />\n <Toolbar.ToggleGroup type=\"single\" asChild>\n <Flex gap={1}>\n <ListButton block={blocks['list-unordered']!} format=\"unordered\" location=\"toolbar\" />\n <ListButton block={blocks['list-ordered']!} format=\"ordered\" location=\"toolbar\" />\n </Flex>\n </Toolbar.ToggleGroup>\n </Flex>\n ),\n menu: (\n <>\n <Menu.Separator />\n <ListButton block={blocks['list-unordered']!} format=\"unordered\" location=\"menu\" />\n <ListButton block={blocks['list-ordered']!} format=\"ordered\" location=\"menu\" />\n </>\n ),\n key: 'block.list',\n },\n ];\n\n return (\n <Toolbar.Root aria-disabled={disabled} asChild>\n <ToolbarWrapper padding={{ initial: 1, medium: 2 }} width=\"100%\">\n <BlocksDropdown />\n {isMobile && (\n <>\n <ToolbarSeparator />\n <ReorderToolbarButtons />\n </>\n )}\n <ToolbarSeparator />\n <Toolbar.ToggleGroup type=\"multiple\" asChild>\n <Flex direction=\"row\" gap={1} grow={1} overflow=\"hidden\">\n <EditorToolbarObserver observedComponents={observedComponents} />\n </Flex>\n </Toolbar.ToggleGroup>\n </ToolbarWrapper>\n </Toolbar.Root>\n );\n};\n\nexport { BlocksToolbar, useConversionModal };\n"],"names":["ToolbarWrapper","styled","Flex","theme","colors","neutral150","ToolbarSeparator","Toolbar","Separator","spaces","breakpoints","medium","FlexButton","primary100","SelectWrapper","Box","neutral600","useConversionModal","modalElement","setModalComponent","React","useState","handleConversionResult","renderModal","cloneElement","key","Date","now","ToolbarButton","icon","Icon","name","label","isActive","disabled","handleClick","editor","useBlocksEditorContext","formatMessage","useIntl","labelMessage","enabledColor","_jsx","Tooltip","ToggleItem","value","data-state","onPointerDown","e","preventDefault","ReactEditor","focus","aria-disabled","aria-label","asChild","tag","background","alignItems","justifyContent","width","height","hasRadius","type","fill","BlocksDropdown","blocks","isMobile","useIsMobile","blockKeysToInclude","getEntries","reduce","currentKeys","block","isInBlocksSelector","blockSelected","setBlockSelected","handleSelect","optionKey","editorIsEmpty","children","length","Editor","isEmpty","selection","Transforms","insertNodes","text","select","start","currentListEntry","above","match","node","isEditor","includes","currentList","currentListPath","format","isListNode","setNodes","at","maybeRenderModal","handleConvert","preventSelectFocus","useEffect","selectedNode","anchor","anchorNode","parent","edge","depth","anchorBlockKey","getKeys","find","blockKey","matchNode","selectedBlock","_jsxs","_Fragment","SingleSelect","startIcon","onChange","customizeContent","onCloseAutoFocus","id","defaultMessage","map","selectorBlock","BlockOption","isSelected","SingleSelectOption","Node","isNode","ListButton","location","isListActive","isListDisabled","anchorNodeEntry","focusNodeEntry","toggleList","_","lastNodePath","last","StyledMenuItem","onSelect","LinkButton","isLinkActive","Array","from","nodes","unhangRange","SlateElement","isElement","Boolean","isLinkDisabled","addLink","shouldSaveLinkPath","insertLink","url","Link","Menu","Item","props","css","primary600","neutral500","ReorderToolbarButtons","setLiveText","totalBlocks","anchorIndex","path","focusIndex","isSingleBlockSelection","selectedTopLevelNode","Object","values","isSelectedBlockDraggable","isDraggable","canMoveUp","canMoveDown","moveBlock","direction","currentIndex","newIndex","moveNodes","to","getTranslation","item","position","gap","Button","ArrowUp","ArrowDown","BlocksToolbar","modifiers","checkButtonDisabled","isButtonDisabled","observedComponents","entries","modifier","checkIsActive","handleToggle","toolbar","menu","style","marginLeft","ToggleGroup","Root","padding","initial","grow","overflow","EditorToolbarObserver"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Initializer.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/Initializer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useField } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { PlusCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTranslation } from '../../../../../utils/translations';\n\ninterface InitializerProps {\n disabled?: boolean;\n name: string;\n onClick?: React.MouseEventHandler<HTMLButtonElement> & React.MouseEventHandler<HTMLDivElement>;\n}\n\nconst Initializer = ({ disabled, name, onClick }: InitializerProps) => {\n const { formatMessage } = useIntl();\n\n const field = useField(name);\n\n return (\n <>\n <Box\n tag=\"button\"\n background={disabled ? 'neutral150' : 'neutral100'}\n borderColor={field.error ? 'danger600' : 'neutral200'}\n hasRadius\n disabled={disabled}\n onClick={onClick}\n paddingTop={9}\n paddingBottom={9}\n type=\"button\"\n style={{ cursor: disabled ? 'not-allowed' : 'pointer' }}\n >\n <Flex direction=\"column\" gap={2}>\n <Flex justifyContent=\"center\" color={disabled ? 'neutral500' : 'primary600'}>\n <PlusCircle width=\"3.2rem\" height=\"3.2rem\" />\n </Flex>\n <Flex justifyContent=\"center\">\n <Typography\n textColor={disabled ? 'neutral600' : 'primary600'}\n variant=\"pi\"\n fontWeight=\"bold\"\n >\n {formatMessage({\n id: getTranslation('components.empty-repeatable'),\n defaultMessage: 'No entry yet. Click to add one.',\n })}\n </Typography>\n </Flex>\n </Flex>\n </Box>\n </>\n );\n};\n\nexport { Initializer };\nexport type { InitializerProps };\n"],"names":["Initializer","disabled","name","onClick","formatMessage","useIntl","field","useField","_jsx","_Fragment","Box","tag","background","borderColor","error","hasRadius","paddingTop","paddingBottom","type","style","cursor","_jsxs","Flex","direction","gap","justifyContent","color","PlusCircle","width","height","Typography","textColor","variant","fontWeight","id","getTranslation","defaultMessage"],"mappings":";;;;;;;;;;AAgBA,MAAMA,WAAAA,GAAc,CAAC,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,OAAO,EAAoB,GAAA;IAChE,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAMC,QAAQC,oBAAAA,CAASL,IAAAA,CAAAA;IAEvB,qBACEM,cAAA,CAAAC,mBAAA,EAAA;AACE,QAAA,QAAA,gBAAAD,cAAA,CAACE,gBAAAA,EAAAA;YACCC,GAAAA,EAAI,QAAA;AACJC,YAAAA,UAAAA,EAAYX,WAAW,YAAA,GAAe,YAAA;YACtCY,WAAAA,EAAaP,KAAAA,CAAMQ,KAAK,GAAG,WAAA,GAAc,YAAA;YACzCC,SAAS,EAAA,IAAA;YACTd,QAAAA,EAAUA,QAAAA;YACVE,OAAAA,EAASA,OAAAA;YACTa,UAAAA,EAAY,CAAA;YACZC,aAAAA,EAAe,CAAA;YACfC,IAAAA,EAAK,QAAA;YACLC,KAAAA,EAAO;AAAEC,gBAAAA,MAAAA,EAAQnB,WAAW,aAAA,GAAgB;AAAU,aAAA;AAEtD,YAAA,QAAA,gBAAAoB,eAAA,CAACC,iBAAAA,EAAAA;gBAAKC,SAAAA,EAAU,QAAA;gBAASC,GAAAA,EAAK,CAAA;;kCAC5BhB,cAAA,CAACc,iBAAAA,EAAAA;wBAAKG,cAAAA,EAAe,QAAA;AAASC,wBAAAA,KAAAA,EAAOzB,WAAW,YAAA,GAAe,YAAA;AAC7D,wBAAA,QAAA,gBAAAO,cAAA,CAACmB,gBAAAA,EAAAA;4BAAWC,KAAAA,EAAM,QAAA;4BAASC,MAAAA,EAAO;;;kCAEpCrB,cAAA,CAACc,iBAAAA,EAAAA;wBAAKG,cAAAA,EAAe,QAAA;AACnB,wBAAA,QAAA,gBAAAjB,cAAA,CAACsB,uBAAAA,EAAAA;AACCC,4BAAAA,SAAAA,EAAW9B,WAAW,YAAA,GAAe,YAAA;4BACrC+B,OAAAA,EAAQ,IAAA;4BACRC,UAAAA,EAAW,MAAA;sCAEV7B,aAAAA,CAAc;AACb8B,gCAAAA,EAAAA,EAAIC,2BAAAA,CAAe,6BAAA,CAAA;gCACnBC,cAAAA,EAAgB;AAClB,6BAAA;;;;;;;AAOd;;;;"}
1
+ {"version":3,"file":"Initializer.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/Initializer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useField } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { PlusCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { getTranslation } from '../../../../../utils/translations';\n\ninterface InitializerProps {\n disabled?: boolean;\n name: string;\n onClick?: React.MouseEventHandler<HTMLButtonElement> & React.MouseEventHandler<HTMLDivElement>;\n}\n\nconst Initializer = ({ disabled, name, onClick }: InitializerProps) => {\n const { formatMessage } = useIntl();\n\n const field = useField(name);\n\n return (\n <>\n <Box\n tag=\"button\"\n background={disabled ? 'neutral150' : 'neutral100'}\n borderColor={field.error ? 'danger600' : 'neutral200'}\n hasRadius\n disabled={disabled}\n onClick={onClick}\n paddingTop={9}\n paddingBottom={9}\n type=\"button\"\n style={{ cursor: disabled ? 'not-allowed' : 'pointer' }}\n >\n <Flex direction=\"column\" gap={2}>\n <Flex justifyContent=\"center\" color={disabled ? 'neutral500' : 'primary600'}>\n <PlusCircle width=\"3.2rem\" height=\"3.2rem\" />\n </Flex>\n <Flex justifyContent=\"center\">\n <Typography\n textColor={disabled ? 'neutral600' : 'primary600'}\n variant=\"pi\"\n fontWeight=\"bold\"\n >\n {formatMessage({\n id: getTranslation('components.empty-repeatable'),\n defaultMessage: 'No entry yet. Click to add one.',\n })}\n </Typography>\n </Flex>\n </Flex>\n </Box>\n </>\n );\n};\n\nexport { Initializer };\nexport type { InitializerProps };\n"],"names":["Initializer","disabled","name","onClick","formatMessage","useIntl","field","useField","_jsx","_Fragment","Box","tag","background","borderColor","error","hasRadius","paddingTop","paddingBottom","type","style","cursor","_jsxs","Flex","direction","gap","justifyContent","color","PlusCircle","width","height","Typography","textColor","variant","fontWeight","id","getTranslation","defaultMessage"],"mappings":";;;;;;;;;;AAeA,MAAMA,WAAAA,GAAc,CAAC,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,OAAO,EAAoB,GAAA;IAChE,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAMC,QAAQC,oBAAAA,CAASL,IAAAA,CAAAA;IAEvB,qBACEM,cAAA,CAAAC,mBAAA,EAAA;AACE,QAAA,QAAA,gBAAAD,cAAA,CAACE,gBAAAA,EAAAA;YACCC,GAAAA,EAAI,QAAA;AACJC,YAAAA,UAAAA,EAAYX,WAAW,YAAA,GAAe,YAAA;YACtCY,WAAAA,EAAaP,KAAAA,CAAMQ,KAAK,GAAG,WAAA,GAAc,YAAA;YACzCC,SAAS,EAAA,IAAA;YACTd,QAAAA,EAAUA,QAAAA;YACVE,OAAAA,EAASA,OAAAA;YACTa,UAAAA,EAAY,CAAA;YACZC,aAAAA,EAAe,CAAA;YACfC,IAAAA,EAAK,QAAA;YACLC,KAAAA,EAAO;AAAEC,gBAAAA,MAAAA,EAAQnB,WAAW,aAAA,GAAgB;AAAU,aAAA;AAEtD,YAAA,QAAA,gBAAAoB,eAAA,CAACC,iBAAAA,EAAAA;gBAAKC,SAAAA,EAAU,QAAA;gBAASC,GAAAA,EAAK,CAAA;;kCAC5BhB,cAAA,CAACc,iBAAAA,EAAAA;wBAAKG,cAAAA,EAAe,QAAA;AAASC,wBAAAA,KAAAA,EAAOzB,WAAW,YAAA,GAAe,YAAA;AAC7D,wBAAA,QAAA,gBAAAO,cAAA,CAACmB,gBAAAA,EAAAA;4BAAWC,KAAAA,EAAM,QAAA;4BAASC,MAAAA,EAAO;;;kCAEpCrB,cAAA,CAACc,iBAAAA,EAAAA;wBAAKG,cAAAA,EAAe,QAAA;AACnB,wBAAA,QAAA,gBAAAjB,cAAA,CAACsB,uBAAAA,EAAAA;AACCC,4BAAAA,SAAAA,EAAW9B,WAAW,YAAA,GAAe,YAAA;4BACrC+B,OAAAA,EAAQ,IAAA;4BACRC,UAAAA,EAAW,MAAA;sCAEV7B,aAAAA,CAAc;AACb8B,gCAAAA,EAAAA,EAAIC,2BAAAA,CAAe,6BAAA,CAAA;gCACnBC,cAAAA,EAAgB;AAClB,6BAAA;;;;;;;AAOd;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Initializer.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/Initializer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useField } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { PlusCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTranslation } from '../../../../../utils/translations';\n\ninterface InitializerProps {\n disabled?: boolean;\n name: string;\n onClick?: React.MouseEventHandler<HTMLButtonElement> & React.MouseEventHandler<HTMLDivElement>;\n}\n\nconst Initializer = ({ disabled, name, onClick }: InitializerProps) => {\n const { formatMessage } = useIntl();\n\n const field = useField(name);\n\n return (\n <>\n <Box\n tag=\"button\"\n background={disabled ? 'neutral150' : 'neutral100'}\n borderColor={field.error ? 'danger600' : 'neutral200'}\n hasRadius\n disabled={disabled}\n onClick={onClick}\n paddingTop={9}\n paddingBottom={9}\n type=\"button\"\n style={{ cursor: disabled ? 'not-allowed' : 'pointer' }}\n >\n <Flex direction=\"column\" gap={2}>\n <Flex justifyContent=\"center\" color={disabled ? 'neutral500' : 'primary600'}>\n <PlusCircle width=\"3.2rem\" height=\"3.2rem\" />\n </Flex>\n <Flex justifyContent=\"center\">\n <Typography\n textColor={disabled ? 'neutral600' : 'primary600'}\n variant=\"pi\"\n fontWeight=\"bold\"\n >\n {formatMessage({\n id: getTranslation('components.empty-repeatable'),\n defaultMessage: 'No entry yet. Click to add one.',\n })}\n </Typography>\n </Flex>\n </Flex>\n </Box>\n </>\n );\n};\n\nexport { Initializer };\nexport type { InitializerProps };\n"],"names":["Initializer","disabled","name","onClick","formatMessage","useIntl","field","useField","_jsx","_Fragment","Box","tag","background","borderColor","error","hasRadius","paddingTop","paddingBottom","type","style","cursor","_jsxs","Flex","direction","gap","justifyContent","color","PlusCircle","width","height","Typography","textColor","variant","fontWeight","id","getTranslation","defaultMessage"],"mappings":";;;;;;;;AAgBA,MAAMA,WAAAA,GAAc,CAAC,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,OAAO,EAAoB,GAAA;IAChE,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,MAAMC,QAAQC,QAAAA,CAASL,IAAAA,CAAAA;IAEvB,qBACEM,GAAA,CAAAC,QAAA,EAAA;AACE,QAAA,QAAA,gBAAAD,GAAA,CAACE,GAAAA,EAAAA;YACCC,GAAAA,EAAI,QAAA;AACJC,YAAAA,UAAAA,EAAYX,WAAW,YAAA,GAAe,YAAA;YACtCY,WAAAA,EAAaP,KAAAA,CAAMQ,KAAK,GAAG,WAAA,GAAc,YAAA;YACzCC,SAAS,EAAA,IAAA;YACTd,QAAAA,EAAUA,QAAAA;YACVE,OAAAA,EAASA,OAAAA;YACTa,UAAAA,EAAY,CAAA;YACZC,aAAAA,EAAe,CAAA;YACfC,IAAAA,EAAK,QAAA;YACLC,KAAAA,EAAO;AAAEC,gBAAAA,MAAAA,EAAQnB,WAAW,aAAA,GAAgB;AAAU,aAAA;AAEtD,YAAA,QAAA,gBAAAoB,IAAA,CAACC,IAAAA,EAAAA;gBAAKC,SAAAA,EAAU,QAAA;gBAASC,GAAAA,EAAK,CAAA;;kCAC5BhB,GAAA,CAACc,IAAAA,EAAAA;wBAAKG,cAAAA,EAAe,QAAA;AAASC,wBAAAA,KAAAA,EAAOzB,WAAW,YAAA,GAAe,YAAA;AAC7D,wBAAA,QAAA,gBAAAO,GAAA,CAACmB,UAAAA,EAAAA;4BAAWC,KAAAA,EAAM,QAAA;4BAASC,MAAAA,EAAO;;;kCAEpCrB,GAAA,CAACc,IAAAA,EAAAA;wBAAKG,cAAAA,EAAe,QAAA;AACnB,wBAAA,QAAA,gBAAAjB,GAAA,CAACsB,UAAAA,EAAAA;AACCC,4BAAAA,SAAAA,EAAW9B,WAAW,YAAA,GAAe,YAAA;4BACrC+B,OAAAA,EAAQ,IAAA;4BACRC,UAAAA,EAAW,MAAA;sCAEV7B,aAAAA,CAAc;AACb8B,gCAAAA,EAAAA,EAAIC,cAAAA,CAAe,6BAAA,CAAA;gCACnBC,cAAAA,EAAgB;AAClB,6BAAA;;;;;;;AAOd;;;;"}
1
+ {"version":3,"file":"Initializer.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/Initializer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useField } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { PlusCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { getTranslation } from '../../../../../utils/translations';\n\ninterface InitializerProps {\n disabled?: boolean;\n name: string;\n onClick?: React.MouseEventHandler<HTMLButtonElement> & React.MouseEventHandler<HTMLDivElement>;\n}\n\nconst Initializer = ({ disabled, name, onClick }: InitializerProps) => {\n const { formatMessage } = useIntl();\n\n const field = useField(name);\n\n return (\n <>\n <Box\n tag=\"button\"\n background={disabled ? 'neutral150' : 'neutral100'}\n borderColor={field.error ? 'danger600' : 'neutral200'}\n hasRadius\n disabled={disabled}\n onClick={onClick}\n paddingTop={9}\n paddingBottom={9}\n type=\"button\"\n style={{ cursor: disabled ? 'not-allowed' : 'pointer' }}\n >\n <Flex direction=\"column\" gap={2}>\n <Flex justifyContent=\"center\" color={disabled ? 'neutral500' : 'primary600'}>\n <PlusCircle width=\"3.2rem\" height=\"3.2rem\" />\n </Flex>\n <Flex justifyContent=\"center\">\n <Typography\n textColor={disabled ? 'neutral600' : 'primary600'}\n variant=\"pi\"\n fontWeight=\"bold\"\n >\n {formatMessage({\n id: getTranslation('components.empty-repeatable'),\n defaultMessage: 'No entry yet. Click to add one.',\n })}\n </Typography>\n </Flex>\n </Flex>\n </Box>\n </>\n );\n};\n\nexport { Initializer };\nexport type { InitializerProps };\n"],"names":["Initializer","disabled","name","onClick","formatMessage","useIntl","field","useField","_jsx","_Fragment","Box","tag","background","borderColor","error","hasRadius","paddingTop","paddingBottom","type","style","cursor","_jsxs","Flex","direction","gap","justifyContent","color","PlusCircle","width","height","Typography","textColor","variant","fontWeight","id","getTranslation","defaultMessage"],"mappings":";;;;;;;;AAeA,MAAMA,WAAAA,GAAc,CAAC,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,OAAO,EAAoB,GAAA;IAChE,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,MAAMC,QAAQC,QAAAA,CAASL,IAAAA,CAAAA;IAEvB,qBACEM,GAAA,CAAAC,QAAA,EAAA;AACE,QAAA,QAAA,gBAAAD,GAAA,CAACE,GAAAA,EAAAA;YACCC,GAAAA,EAAI,QAAA;AACJC,YAAAA,UAAAA,EAAYX,WAAW,YAAA,GAAe,YAAA;YACtCY,WAAAA,EAAaP,KAAAA,CAAMQ,KAAK,GAAG,WAAA,GAAc,YAAA;YACzCC,SAAS,EAAA,IAAA;YACTd,QAAAA,EAAUA,QAAAA;YACVE,OAAAA,EAASA,OAAAA;YACTa,UAAAA,EAAY,CAAA;YACZC,aAAAA,EAAe,CAAA;YACfC,IAAAA,EAAK,QAAA;YACLC,KAAAA,EAAO;AAAEC,gBAAAA,MAAAA,EAAQnB,WAAW,aAAA,GAAgB;AAAU,aAAA;AAEtD,YAAA,QAAA,gBAAAoB,IAAA,CAACC,IAAAA,EAAAA;gBAAKC,SAAAA,EAAU,QAAA;gBAASC,GAAAA,EAAK,CAAA;;kCAC5BhB,GAAA,CAACc,IAAAA,EAAAA;wBAAKG,cAAAA,EAAe,QAAA;AAASC,wBAAAA,KAAAA,EAAOzB,WAAW,YAAA,GAAe,YAAA;AAC7D,wBAAA,QAAA,gBAAAO,GAAA,CAACmB,UAAAA,EAAAA;4BAAWC,KAAAA,EAAM,QAAA;4BAASC,MAAAA,EAAO;;;kCAEpCrB,GAAA,CAACc,IAAAA,EAAAA;wBAAKG,cAAAA,EAAe,QAAA;AACnB,wBAAA,QAAA,gBAAAjB,GAAA,CAACsB,UAAAA,EAAAA;AACCC,4BAAAA,SAAAA,EAAW9B,WAAW,YAAA,GAAe,YAAA;4BACrC+B,OAAAA,EAAQ,IAAA;4BACRC,UAAAA,EAAW,MAAA;sCAEV7B,aAAAA,CAAc;AACb8B,gCAAAA,EAAAA,EAAIC,cAAAA,CAAe,6BAAA,CAAA;gCACnBC,cAAAA,EAAgB;AAClB,6BAAA;;;;;;;AAOd;;;;"}
@@ -37,7 +37,7 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
37
37
  const ComponentInput = ({ label, required, name, attribute, disabled, labelAction, ...props })=>{
38
38
  const { formatMessage } = reactIntl.useIntl();
39
39
  const field = strapiAdmin.useField(name);
40
- const showResetComponent = !attribute.repeatable && field.value && !disabled;
40
+ const showResetComponent = !attribute.repeatable && field.value !== undefined && field.value !== null && !disabled;
41
41
  const { currentDocument: { components } } = useDocumentContext.useDocumentContext('ComponentInput');
42
42
  const handleInitialisationClick = ()=>{
43
43
  const schema = components[attribute.component];