@strapi/content-manager 5.37.1 → 5.38.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 (582) hide show
  1. package/dist/admin/components/ActionsDrawer.js.map +1 -1
  2. package/dist/admin/components/ActionsDrawer.mjs.map +1 -1
  3. package/dist/admin/components/ComponentIcon.js.map +1 -1
  4. package/dist/admin/components/ComponentIcon.mjs.map +1 -1
  5. package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
  6. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
  7. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  8. package/dist/admin/components/ConfigurationForm/Fields.mjs +2 -2
  9. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  10. package/dist/admin/components/ConfigurationForm/Form.js +62 -30
  11. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  12. package/dist/admin/components/ConfigurationForm/Form.mjs +62 -30
  13. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  14. package/dist/admin/components/DragLayer.js.map +1 -1
  15. package/dist/admin/components/DragLayer.mjs.map +1 -1
  16. package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
  17. package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
  18. package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
  19. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
  20. package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
  21. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
  22. package/dist/admin/components/FieldTypeIcon.js.map +1 -1
  23. package/dist/admin/components/FieldTypeIcon.mjs +1 -1
  24. package/dist/admin/components/FieldTypeIcon.mjs.map +1 -1
  25. package/dist/admin/components/InjectionZone.js.map +1 -1
  26. package/dist/admin/components/InjectionZone.mjs.map +1 -1
  27. package/dist/admin/components/LeftMenu.js.map +1 -1
  28. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  29. package/dist/admin/components/RelativeTime.js.map +1 -1
  30. package/dist/admin/components/RelativeTime.mjs.map +1 -1
  31. package/dist/admin/components/Widgets.js.map +1 -1
  32. package/dist/admin/components/Widgets.mjs +1 -1
  33. package/dist/admin/components/Widgets.mjs.map +1 -1
  34. package/dist/admin/constants/attributes.js.map +1 -1
  35. package/dist/admin/constants/attributes.mjs.map +1 -1
  36. package/dist/admin/constants/collections.js.map +1 -1
  37. package/dist/admin/constants/collections.mjs.map +1 -1
  38. package/dist/admin/constants/dragAndDrop.js.map +1 -1
  39. package/dist/admin/constants/dragAndDrop.mjs.map +1 -1
  40. package/dist/admin/constants/hooks.js.map +1 -1
  41. package/dist/admin/constants/hooks.mjs.map +1 -1
  42. package/dist/admin/constants/plugin.js.map +1 -1
  43. package/dist/admin/constants/plugin.mjs.map +1 -1
  44. package/dist/admin/content-manager.js.map +1 -1
  45. package/dist/admin/content-manager.mjs.map +1 -1
  46. package/dist/admin/features/DocumentRBAC.js.map +1 -1
  47. package/dist/admin/features/DocumentRBAC.mjs.map +1 -1
  48. package/dist/admin/history/components/HistoryAction.js.map +1 -1
  49. package/dist/admin/history/components/HistoryAction.mjs.map +1 -1
  50. package/dist/admin/history/components/VersionContent.js +48 -16
  51. package/dist/admin/history/components/VersionContent.js.map +1 -1
  52. package/dist/admin/history/components/VersionContent.mjs +48 -16
  53. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  54. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  55. package/dist/admin/history/components/VersionHeader.mjs +1 -1
  56. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  57. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  58. package/dist/admin/history/components/VersionInputRenderer.mjs +1 -1
  59. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  60. package/dist/admin/history/components/VersionsList.js.map +1 -1
  61. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  62. package/dist/admin/history/index.js.map +1 -1
  63. package/dist/admin/history/index.mjs.map +1 -1
  64. package/dist/admin/history/pages/History.js.map +1 -1
  65. package/dist/admin/history/pages/History.mjs +1 -1
  66. package/dist/admin/history/pages/History.mjs.map +1 -1
  67. package/dist/admin/history/routes.js.map +1 -1
  68. package/dist/admin/history/routes.mjs.map +1 -1
  69. package/dist/admin/history/services/historyVersion.js.map +1 -1
  70. package/dist/admin/history/services/historyVersion.mjs.map +1 -1
  71. package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
  72. package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
  73. package/dist/admin/hooks/useContentTypeSchema.js.map +1 -1
  74. package/dist/admin/hooks/useContentTypeSchema.mjs.map +1 -1
  75. package/dist/admin/hooks/useDebounce.js.map +1 -1
  76. package/dist/admin/hooks/useDebounce.mjs.map +1 -1
  77. package/dist/admin/hooks/useDocument.js.map +1 -1
  78. package/dist/admin/hooks/useDocument.mjs +1 -1
  79. package/dist/admin/hooks/useDocument.mjs.map +1 -1
  80. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  81. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  82. package/dist/admin/hooks/useDocumentContext.js.map +1 -1
  83. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -1
  84. package/dist/admin/hooks/useDocumentLayout.js +2 -1
  85. package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
  86. package/dist/admin/hooks/useDocumentLayout.mjs +2 -1
  87. package/dist/admin/hooks/useDocumentLayout.mjs.map +1 -1
  88. package/dist/admin/hooks/useDragAndDrop.js +1 -3
  89. package/dist/admin/hooks/useDragAndDrop.js.map +1 -1
  90. package/dist/admin/hooks/useDragAndDrop.mjs +1 -3
  91. package/dist/admin/hooks/useDragAndDrop.mjs.map +1 -1
  92. package/dist/admin/hooks/useKeyboardDragAndDrop.js.map +1 -1
  93. package/dist/admin/hooks/useKeyboardDragAndDrop.mjs.map +1 -1
  94. package/dist/admin/hooks/useLazyComponents.js.map +1 -1
  95. package/dist/admin/hooks/useLazyComponents.mjs.map +1 -1
  96. package/dist/admin/hooks/useOnce.js.map +1 -1
  97. package/dist/admin/hooks/useOnce.mjs.map +1 -1
  98. package/dist/admin/hooks/usePersistentQueryParams.js.map +1 -1
  99. package/dist/admin/hooks/usePersistentQueryParams.mjs.map +1 -1
  100. package/dist/admin/hooks/usePrev.js.map +1 -1
  101. package/dist/admin/hooks/usePrev.mjs.map +1 -1
  102. package/dist/admin/index.js.map +1 -1
  103. package/dist/admin/index.mjs.map +1 -1
  104. package/dist/admin/layout.js.map +1 -1
  105. package/dist/admin/layout.mjs.map +1 -1
  106. package/dist/admin/modules/app.js.map +1 -1
  107. package/dist/admin/modules/app.mjs.map +1 -1
  108. package/dist/admin/modules/hooks.js.map +1 -1
  109. package/dist/admin/modules/hooks.mjs +1 -1
  110. package/dist/admin/modules/hooks.mjs.map +1 -1
  111. package/dist/admin/modules/reducers.js.map +1 -1
  112. package/dist/admin/modules/reducers.mjs.map +1 -1
  113. package/dist/admin/pages/ComponentConfigurationPage.js.map +1 -1
  114. package/dist/admin/pages/ComponentConfigurationPage.mjs +1 -1
  115. package/dist/admin/pages/ComponentConfigurationPage.mjs.map +1 -1
  116. package/dist/admin/pages/EditConfigurationPage.js.map +1 -1
  117. package/dist/admin/pages/EditConfigurationPage.mjs +1 -1
  118. package/dist/admin/pages/EditConfigurationPage.mjs.map +1 -1
  119. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  120. package/dist/admin/pages/EditView/EditViewPage.mjs +4 -4
  121. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  122. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -1
  123. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -1
  124. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  125. package/dist/admin/pages/EditView/components/DocumentActions.mjs +4 -4
  126. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  127. package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
  128. package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
  129. package/dist/admin/pages/EditView/components/EditorToolbarObserver.js.map +1 -1
  130. package/dist/admin/pages/EditView/components/EditorToolbarObserver.mjs.map +1 -1
  131. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
  132. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs +1 -1
  133. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
  134. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.js.map +1 -1
  135. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.mjs +1 -1
  136. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.mjs.map +1 -1
  137. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js.map +1 -1
  138. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs +1 -1
  139. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs.map +1 -1
  140. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  141. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  142. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js +51 -0
  143. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js.map +1 -1
  144. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs +53 -2
  145. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs.map +1 -1
  146. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Paragraph.js.map +1 -1
  147. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Paragraph.mjs.map +1 -1
  148. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.js.map +1 -1
  149. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.mjs.map +1 -1
  150. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +6 -2
  151. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  152. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +6 -2
  153. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  154. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  155. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  156. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js.map +1 -1
  157. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.mjs.map +1 -1
  158. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  159. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +1 -1
  160. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  161. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  162. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +1 -1
  163. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  164. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
  165. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs +2 -2
  166. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
  167. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.js.map +1 -1
  168. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.mjs.map +1 -1
  169. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/constants.js.map +1 -1
  170. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/constants.mjs.map +1 -1
  171. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.js.map +1 -1
  172. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.mjs.map +1 -1
  173. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/enterKey.js.map +1 -1
  174. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/enterKey.mjs.map +1 -1
  175. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.js.map +1 -1
  176. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.mjs.map +1 -1
  177. package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.js.map +1 -1
  178. package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.mjs.map +1 -1
  179. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  180. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  181. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  182. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  183. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  184. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  185. package/dist/admin/pages/EditView/components/FormInputs/ComponentContext.js.map +1 -1
  186. package/dist/admin/pages/EditView/components/FormInputs/ComponentContext.mjs.map +1 -1
  187. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.js.map +1 -1
  188. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.mjs.map +1 -1
  189. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  190. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  191. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js.map +1 -1
  192. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs.map +1 -1
  193. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +1 -1
  194. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  195. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +1 -1
  196. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  197. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicZoneLabel.js.map +1 -1
  198. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicZoneLabel.mjs.map +1 -1
  199. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  200. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  201. package/dist/admin/pages/EditView/components/FormInputs/NotAllowed.js.map +1 -1
  202. package/dist/admin/pages/EditView/components/FormInputs/NotAllowed.mjs.map +1 -1
  203. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +45 -6
  204. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  205. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +45 -8
  206. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  207. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +148 -111
  208. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  209. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +152 -115
  210. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  211. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  212. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  213. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  214. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  215. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  216. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  217. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js.map +1 -1
  218. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.mjs.map +1 -1
  219. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
  220. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
  221. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.js.map +1 -1
  222. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.mjs.map +1 -1
  223. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  224. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +2 -2
  225. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  226. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.js.map +1 -1
  227. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs.map +1 -1
  228. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.js.map +1 -1
  229. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.mjs.map +1 -1
  230. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.js.map +1 -1
  231. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.mjs.map +1 -1
  232. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js +8 -6
  233. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
  234. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs +8 -6
  235. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
  236. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  237. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  238. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  239. package/dist/admin/pages/EditView/components/Header.mjs +2 -2
  240. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  241. package/dist/admin/pages/EditView/components/InputRenderer.js +15 -5
  242. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  243. package/dist/admin/pages/EditView/components/InputRenderer.mjs +15 -5
  244. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  245. package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
  246. package/dist/admin/pages/EditView/components/Panels.mjs.map +1 -1
  247. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  248. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  249. package/dist/admin/pages/EditView/utils/forms.js.map +1 -1
  250. package/dist/admin/pages/EditView/utils/forms.mjs.map +1 -1
  251. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  252. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -1
  253. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  254. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
  255. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs +1 -1
  256. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
  257. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js.map +1 -1
  258. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs +1 -1
  259. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs.map +1 -1
  260. package/dist/admin/pages/ListConfiguration/components/Header.js.map +1 -1
  261. package/dist/admin/pages/ListConfiguration/components/Header.mjs.map +1 -1
  262. package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
  263. package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
  264. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js.map +1 -1
  265. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs.map +1 -1
  266. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  267. package/dist/admin/pages/ListView/ListViewPage.mjs +3 -3
  268. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  269. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
  270. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
  271. package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
  272. package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs.map +1 -1
  273. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +1 -4
  274. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  275. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -5
  276. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  277. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +4 -4
  278. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  279. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +2 -2
  280. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  281. package/dist/admin/pages/ListView/components/Filters.js +54 -1
  282. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  283. package/dist/admin/pages/ListView/components/Filters.mjs +54 -1
  284. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  285. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  286. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  287. package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
  288. package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
  289. package/dist/admin/pages/ListView/components/TableCells/CellValue.js +7 -1
  290. package/dist/admin/pages/ListView/components/TableCells/CellValue.js.map +1 -1
  291. package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs +7 -1
  292. package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs.map +1 -1
  293. package/dist/admin/pages/ListView/components/TableCells/Components.js.map +1 -1
  294. package/dist/admin/pages/ListView/components/TableCells/Components.mjs +2 -2
  295. package/dist/admin/pages/ListView/components/TableCells/Components.mjs.map +1 -1
  296. package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
  297. package/dist/admin/pages/ListView/components/TableCells/Media.mjs +1 -1
  298. package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
  299. package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
  300. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
  301. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  302. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  303. package/dist/admin/pages/NoContentTypePage.js.map +1 -1
  304. package/dist/admin/pages/NoContentTypePage.mjs.map +1 -1
  305. package/dist/admin/pages/NoPermissionsPage.js.map +1 -1
  306. package/dist/admin/pages/NoPermissionsPage.mjs.map +1 -1
  307. package/dist/admin/preview/components/InputPopover.js.map +1 -1
  308. package/dist/admin/preview/components/InputPopover.mjs.map +1 -1
  309. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  310. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  311. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  312. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  313. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -1
  314. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -1
  315. package/dist/admin/preview/index.js.map +1 -1
  316. package/dist/admin/preview/index.mjs.map +1 -1
  317. package/dist/admin/preview/pages/Preview.js.map +1 -1
  318. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  319. package/dist/admin/preview/routes.js.map +1 -1
  320. package/dist/admin/preview/routes.mjs.map +1 -1
  321. package/dist/admin/preview/services/preview.js.map +1 -1
  322. package/dist/admin/preview/services/preview.mjs.map +1 -1
  323. package/dist/admin/preview/utils/constants.js +0 -1
  324. package/dist/admin/preview/utils/constants.js.map +1 -1
  325. package/dist/admin/preview/utils/constants.mjs +0 -1
  326. package/dist/admin/preview/utils/constants.mjs.map +1 -1
  327. package/dist/admin/preview/utils/fieldUtils.js.map +1 -1
  328. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -1
  329. package/dist/admin/preview/utils/getSendMessage.js.map +1 -1
  330. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -1
  331. package/dist/admin/preview/utils/previewScript.js.map +1 -1
  332. package/dist/admin/preview/utils/previewScript.mjs.map +1 -1
  333. package/dist/admin/router.js.map +1 -1
  334. package/dist/admin/router.mjs.map +1 -1
  335. package/dist/admin/services/api.js.map +1 -1
  336. package/dist/admin/services/api.mjs.map +1 -1
  337. package/dist/admin/services/components.js.map +1 -1
  338. package/dist/admin/services/components.mjs.map +1 -1
  339. package/dist/admin/services/contentTypes.js.map +1 -1
  340. package/dist/admin/services/contentTypes.mjs.map +1 -1
  341. package/dist/admin/services/documents.js.map +1 -1
  342. package/dist/admin/services/documents.mjs.map +1 -1
  343. package/dist/admin/services/homepage.js.map +1 -1
  344. package/dist/admin/services/homepage.mjs.map +1 -1
  345. package/dist/admin/services/init.js.map +1 -1
  346. package/dist/admin/services/init.mjs.map +1 -1
  347. package/dist/admin/services/relations.js.map +1 -1
  348. package/dist/admin/services/relations.mjs.map +1 -1
  349. package/dist/admin/services/uid.js.map +1 -1
  350. package/dist/admin/services/uid.mjs.map +1 -1
  351. package/dist/admin/src/exports.d.ts +1 -1
  352. package/dist/admin/src/hooks/useDocumentLayout.d.ts +1 -0
  353. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.d.ts +1 -0
  354. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +7 -2
  355. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +1 -1
  356. package/dist/admin/src/utils/conditionalFields.d.ts +12 -0
  357. package/dist/admin/translations/en.json.js +10 -0
  358. package/dist/admin/translations/en.json.js.map +1 -1
  359. package/dist/admin/translations/en.json.mjs +10 -0
  360. package/dist/admin/translations/en.json.mjs.map +1 -1
  361. package/dist/admin/translations/es.json.js +136 -2
  362. package/dist/admin/translations/es.json.js.map +1 -1
  363. package/dist/admin/translations/es.json.mjs +136 -2
  364. package/dist/admin/translations/es.json.mjs.map +1 -1
  365. package/dist/admin/translations/fr.json.js +72 -1
  366. package/dist/admin/translations/fr.json.js.map +1 -1
  367. package/dist/admin/translations/fr.json.mjs +72 -1
  368. package/dist/admin/translations/fr.json.mjs.map +1 -1
  369. package/dist/admin/utils/api.js.map +1 -1
  370. package/dist/admin/utils/api.mjs.map +1 -1
  371. package/dist/admin/utils/attributes.js.map +1 -1
  372. package/dist/admin/utils/attributes.mjs.map +1 -1
  373. package/dist/admin/utils/conditionalFields.js +76 -0
  374. package/dist/admin/utils/conditionalFields.js.map +1 -0
  375. package/dist/admin/utils/conditionalFields.mjs +69 -0
  376. package/dist/admin/utils/conditionalFields.mjs.map +1 -0
  377. package/dist/admin/utils/objects.js.map +1 -1
  378. package/dist/admin/utils/objects.mjs.map +1 -1
  379. package/dist/admin/utils/relations.js.map +1 -1
  380. package/dist/admin/utils/relations.mjs.map +1 -1
  381. package/dist/admin/utils/strings.js.map +1 -1
  382. package/dist/admin/utils/strings.mjs.map +1 -1
  383. package/dist/admin/utils/translations.js.map +1 -1
  384. package/dist/admin/utils/translations.mjs.map +1 -1
  385. package/dist/admin/utils/urls.js.map +1 -1
  386. package/dist/admin/utils/urls.mjs.map +1 -1
  387. package/dist/admin/utils/users.js.map +1 -1
  388. package/dist/admin/utils/users.mjs.map +1 -1
  389. package/dist/admin/utils/validation.js.map +1 -1
  390. package/dist/admin/utils/validation.mjs.map +1 -1
  391. package/dist/server/bootstrap.js.map +1 -1
  392. package/dist/server/bootstrap.mjs.map +1 -1
  393. package/dist/server/constants/index.js.map +1 -1
  394. package/dist/server/constants/index.mjs.map +1 -1
  395. package/dist/server/controllers/collection-types.js +157 -4
  396. package/dist/server/controllers/collection-types.js.map +1 -1
  397. package/dist/server/controllers/collection-types.mjs +159 -6
  398. package/dist/server/controllers/collection-types.mjs.map +1 -1
  399. package/dist/server/controllers/components.js.map +1 -1
  400. package/dist/server/controllers/components.mjs.map +1 -1
  401. package/dist/server/controllers/content-types.js +10 -10
  402. package/dist/server/controllers/content-types.js.map +1 -1
  403. package/dist/server/controllers/content-types.mjs.map +1 -1
  404. package/dist/server/controllers/index.js +4 -4
  405. package/dist/server/controllers/index.js.map +1 -1
  406. package/dist/server/controllers/index.mjs.map +1 -1
  407. package/dist/server/controllers/init.js.map +1 -1
  408. package/dist/server/controllers/init.mjs.map +1 -1
  409. package/dist/server/controllers/relations.js.map +1 -1
  410. package/dist/server/controllers/relations.mjs +3 -3
  411. package/dist/server/controllers/relations.mjs.map +1 -1
  412. package/dist/server/controllers/single-types.js +19 -4
  413. package/dist/server/controllers/single-types.js.map +1 -1
  414. package/dist/server/controllers/single-types.mjs +20 -5
  415. package/dist/server/controllers/single-types.mjs.map +1 -1
  416. package/dist/server/controllers/uid.js.map +1 -1
  417. package/dist/server/controllers/uid.mjs +1 -1
  418. package/dist/server/controllers/uid.mjs.map +1 -1
  419. package/dist/server/controllers/utils/clone.js.map +1 -1
  420. package/dist/server/controllers/utils/clone.mjs.map +1 -1
  421. package/dist/server/controllers/utils/document-status.js.map +1 -1
  422. package/dist/server/controllers/utils/document-status.mjs.map +1 -1
  423. package/dist/server/controllers/utils/metadata.js.map +1 -1
  424. package/dist/server/controllers/utils/metadata.mjs.map +1 -1
  425. package/dist/server/controllers/validation/dimensions.js.map +1 -1
  426. package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
  427. package/dist/server/controllers/validation/index.js.map +1 -1
  428. package/dist/server/controllers/validation/index.mjs +1 -1
  429. package/dist/server/controllers/validation/index.mjs.map +1 -1
  430. package/dist/server/controllers/validation/model-configuration.js +6 -1
  431. package/dist/server/controllers/validation/model-configuration.js.map +1 -1
  432. package/dist/server/controllers/validation/model-configuration.mjs +6 -1
  433. package/dist/server/controllers/validation/model-configuration.mjs.map +1 -1
  434. package/dist/server/controllers/validation/relations.js.map +1 -1
  435. package/dist/server/controllers/validation/relations.mjs.map +1 -1
  436. package/dist/server/destroy.js.map +1 -1
  437. package/dist/server/destroy.mjs.map +1 -1
  438. package/dist/server/history/constants.js.map +1 -1
  439. package/dist/server/history/constants.mjs.map +1 -1
  440. package/dist/server/history/controllers/history-version.js.map +1 -1
  441. package/dist/server/history/controllers/history-version.mjs.map +1 -1
  442. package/dist/server/history/controllers/index.js.map +1 -1
  443. package/dist/server/history/controllers/index.mjs.map +1 -1
  444. package/dist/server/history/controllers/validation/history-version.js.map +1 -1
  445. package/dist/server/history/controllers/validation/history-version.mjs.map +1 -1
  446. package/dist/server/history/index.js +4 -4
  447. package/dist/server/history/index.js.map +1 -1
  448. package/dist/server/history/index.mjs.map +1 -1
  449. package/dist/server/history/models/history-version.js.map +1 -1
  450. package/dist/server/history/models/history-version.mjs.map +1 -1
  451. package/dist/server/history/routes/history-version.js.map +1 -1
  452. package/dist/server/history/routes/history-version.mjs.map +1 -1
  453. package/dist/server/history/routes/index.js.map +1 -1
  454. package/dist/server/history/routes/index.mjs.map +1 -1
  455. package/dist/server/history/services/history.js.map +1 -1
  456. package/dist/server/history/services/history.mjs.map +1 -1
  457. package/dist/server/history/services/index.js.map +1 -1
  458. package/dist/server/history/services/index.mjs.map +1 -1
  459. package/dist/server/history/services/lifecycles.js.map +1 -1
  460. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  461. package/dist/server/history/services/utils.js.map +1 -1
  462. package/dist/server/history/services/utils.mjs.map +1 -1
  463. package/dist/server/history/utils.js.map +1 -1
  464. package/dist/server/history/utils.mjs.map +1 -1
  465. package/dist/server/homepage/controllers/homepage.js.map +1 -1
  466. package/dist/server/homepage/controllers/homepage.mjs.map +1 -1
  467. package/dist/server/homepage/controllers/index.js.map +1 -1
  468. package/dist/server/homepage/controllers/index.mjs.map +1 -1
  469. package/dist/server/homepage/index.js +6 -6
  470. package/dist/server/homepage/index.js.map +1 -1
  471. package/dist/server/homepage/index.mjs.map +1 -1
  472. package/dist/server/homepage/routes/homepage.js.map +1 -1
  473. package/dist/server/homepage/routes/homepage.mjs.map +1 -1
  474. package/dist/server/homepage/routes/index.js.map +1 -1
  475. package/dist/server/homepage/routes/index.mjs.map +1 -1
  476. package/dist/server/homepage/services/homepage.js.map +1 -1
  477. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  478. package/dist/server/homepage/services/index.js.map +1 -1
  479. package/dist/server/homepage/services/index.mjs.map +1 -1
  480. package/dist/server/index.js +8 -8
  481. package/dist/server/middlewares/routing.js.map +1 -1
  482. package/dist/server/middlewares/routing.mjs.map +1 -1
  483. package/dist/server/policies/hasPermissions.js.map +1 -1
  484. package/dist/server/policies/hasPermissions.mjs.map +1 -1
  485. package/dist/server/policies/index.js.map +1 -1
  486. package/dist/server/policies/index.mjs.map +1 -1
  487. package/dist/server/preview/controllers/index.js.map +1 -1
  488. package/dist/server/preview/controllers/index.mjs.map +1 -1
  489. package/dist/server/preview/controllers/preview.js.map +1 -1
  490. package/dist/server/preview/controllers/preview.mjs.map +1 -1
  491. package/dist/server/preview/controllers/validation/preview.js.map +1 -1
  492. package/dist/server/preview/controllers/validation/preview.mjs.map +1 -1
  493. package/dist/server/preview/index.js +4 -4
  494. package/dist/server/preview/index.js.map +1 -1
  495. package/dist/server/preview/index.mjs.map +1 -1
  496. package/dist/server/preview/routes/index.js.map +1 -1
  497. package/dist/server/preview/routes/index.mjs.map +1 -1
  498. package/dist/server/preview/routes/preview.js.map +1 -1
  499. package/dist/server/preview/routes/preview.mjs.map +1 -1
  500. package/dist/server/preview/services/index.js.map +1 -1
  501. package/dist/server/preview/services/index.mjs.map +1 -1
  502. package/dist/server/preview/services/preview-config.js.map +1 -1
  503. package/dist/server/preview/services/preview-config.mjs +1 -1
  504. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  505. package/dist/server/preview/services/preview.js +2 -1
  506. package/dist/server/preview/services/preview.js.map +1 -1
  507. package/dist/server/preview/services/preview.mjs +2 -1
  508. package/dist/server/preview/services/preview.mjs.map +1 -1
  509. package/dist/server/preview/utils.js.map +1 -1
  510. package/dist/server/preview/utils.mjs.map +1 -1
  511. package/dist/server/register.js.map +1 -1
  512. package/dist/server/register.mjs.map +1 -1
  513. package/dist/server/routes/admin.js.map +1 -1
  514. package/dist/server/routes/admin.mjs.map +1 -1
  515. package/dist/server/routes/index.js +4 -4
  516. package/dist/server/routes/index.js.map +1 -1
  517. package/dist/server/routes/index.mjs.map +1 -1
  518. package/dist/server/services/components.js.map +1 -1
  519. package/dist/server/services/components.mjs.map +1 -1
  520. package/dist/server/services/configuration.js.map +1 -1
  521. package/dist/server/services/configuration.mjs.map +1 -1
  522. package/dist/server/services/content-types.js.map +1 -1
  523. package/dist/server/services/content-types.mjs.map +1 -1
  524. package/dist/server/services/data-mapper.js.map +1 -1
  525. package/dist/server/services/data-mapper.mjs.map +1 -1
  526. package/dist/server/services/document-manager.js.map +1 -1
  527. package/dist/server/services/document-manager.mjs +2 -2
  528. package/dist/server/services/document-manager.mjs.map +1 -1
  529. package/dist/server/services/document-metadata.js.map +1 -1
  530. package/dist/server/services/document-metadata.mjs +2 -2
  531. package/dist/server/services/document-metadata.mjs.map +1 -1
  532. package/dist/server/services/field-sizes.js.map +1 -1
  533. package/dist/server/services/field-sizes.mjs.map +1 -1
  534. package/dist/server/services/index.js +4 -4
  535. package/dist/server/services/index.js.map +1 -1
  536. package/dist/server/services/index.mjs.map +1 -1
  537. package/dist/server/services/metrics.js.map +1 -1
  538. package/dist/server/services/metrics.mjs.map +1 -1
  539. package/dist/server/services/permission-checker.js.map +1 -1
  540. package/dist/server/services/permission-checker.mjs.map +1 -1
  541. package/dist/server/services/permission.js.map +1 -1
  542. package/dist/server/services/permission.mjs.map +1 -1
  543. package/dist/server/services/populate-builder.js.map +1 -1
  544. package/dist/server/services/populate-builder.mjs +4 -4
  545. package/dist/server/services/populate-builder.mjs.map +1 -1
  546. package/dist/server/services/uid.js.map +1 -1
  547. package/dist/server/services/uid.mjs.map +1 -1
  548. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  549. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  550. package/dist/server/services/utils/configuration/index.js.map +1 -1
  551. package/dist/server/services/utils/configuration/index.mjs +3 -3
  552. package/dist/server/services/utils/configuration/index.mjs.map +1 -1
  553. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  554. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  555. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  556. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  557. package/dist/server/services/utils/configuration/metadatas.mjs +1 -1
  558. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  559. package/dist/server/services/utils/configuration/settings.js +4 -2
  560. package/dist/server/services/utils/configuration/settings.js.map +1 -1
  561. package/dist/server/services/utils/configuration/settings.mjs +5 -3
  562. package/dist/server/services/utils/configuration/settings.mjs.map +1 -1
  563. package/dist/server/services/utils/draft.js.map +1 -1
  564. package/dist/server/services/utils/draft.mjs.map +1 -1
  565. package/dist/server/services/utils/populate.js.map +1 -1
  566. package/dist/server/services/utils/populate.mjs +1 -1
  567. package/dist/server/services/utils/populate.mjs.map +1 -1
  568. package/dist/server/services/utils/store.js.map +1 -1
  569. package/dist/server/services/utils/store.mjs.map +1 -1
  570. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  571. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  572. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  573. package/dist/server/src/services/utils/configuration/settings.d.ts.map +1 -1
  574. package/dist/server/utils/index.js.map +1 -1
  575. package/dist/server/utils/index.mjs.map +1 -1
  576. package/dist/server/validation/policies/hasPermissions.js.map +1 -1
  577. package/dist/server/validation/policies/hasPermissions.mjs.map +1 -1
  578. package/dist/shared/contracts/content-types.d.ts +2 -0
  579. package/dist/shared/contracts/content-types.d.ts.map +1 -1
  580. package/dist/shared/contracts/relations.d.ts +1 -1
  581. package/dist/shared/contracts/relations.d.ts.map +1 -1
  582. package/package.json +15 -10
@@ -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 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 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: SelectorBlockKey[] = getEntries(blocks).reduce<\n ReturnType<typeof getEntries>\n >((currentKeys, entry) => {\n const [key, block] = entry;\n\n return block.isInBlocksSelector ? [...currentKeys, key] : currentKeys;\n }, []);\n\n const [blockSelected, setBlockSelected] = React.useState<SelectorBlockKey>('paragraph');\n\n const handleSelect = (optionKey: unknown) => {\n if (!isSelectorBlockKey(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 as SelectorBlockKey);\n }\n }\n }, [editor.selection, editor, blocks, blockSelected]);\n\n const Icon = blocks[blockSelected].icon;\n\n return (\n <>\n <SelectWrapper>\n <SingleSelect\n startIcon={<Icon />}\n onChange={handleSelect}\n customizeContent={() => (isMobile ? '' : formatMessage(blocks[blockSelected].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 <BlockOption\n key={key}\n value={key}\n label={blocks[key].label}\n icon={blocks[key].icon}\n blockSelected={blockSelected}\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 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 />}\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","entry","block","isInBlocksSelector","blockSelected","setBlockSelected","handleSelect","optionKey","isSelectorBlockKey","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","_jsxs","_Fragment","SingleSelect","startIcon","onChange","customizeContent","onCloseAutoFocus","id","defaultMessage","map","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","selectedBlock","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 {\n type BlocksStore,\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 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: SelectorBlockKey[] = getEntries(blocks).reduce<\n ReturnType<typeof getEntries>\n >((currentKeys, entry) => {\n const [key, block] = entry;\n\n return block.isInBlocksSelector ? [...currentKeys, key] : currentKeys;\n }, []);\n\n const [blockSelected, setBlockSelected] = React.useState<SelectorBlockKey>('paragraph');\n\n const handleSelect = (optionKey: unknown) => {\n if (!isSelectorBlockKey(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 as SelectorBlockKey);\n }\n }\n }, [editor.selection, editor, blocks, blockSelected]);\n\n const Icon = blocks[blockSelected].icon;\n\n return (\n <>\n <SelectWrapper>\n <SingleSelect\n startIcon={<Icon />}\n onChange={handleSelect}\n customizeContent={() => (isMobile ? '' : formatMessage(blocks[blockSelected].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 <BlockOption\n key={key}\n value={key}\n label={blocks[key].label}\n icon={blocks[key].icon}\n blockSelected={blockSelected}\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 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 />}\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","entry","block","isInBlocksSelector","blockSelected","setBlockSelected","handleSelect","optionKey","isSelectorBlockKey","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","_jsxs","_Fragment","SingleSelect","startIcon","onChange","customizeContent","onCloseAutoFocus","id","defaultMessage","map","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","selectedBlock","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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"}
@@ -5,7 +5,7 @@ import { useIsMobile } from '@strapi/admin/strapi-admin';
5
5
  import { Flex, Box, Menu, Tooltip, SingleSelect, SingleSelectOption } from '@strapi/design-system';
6
6
  import { Link, ArrowUp, ArrowDown } from '@strapi/icons';
7
7
  import { useIntl } from 'react-intl';
8
- import { Editor, Transforms, Node, Element } from 'slate';
8
+ import { Editor, Transforms, Element, Node } from 'slate';
9
9
  import { ReactEditor } from 'slate-react';
10
10
  import { styled, css } from 'styled-components';
11
11
  import { getTranslation } from '../../../../../utils/translations.mjs';
@@ -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 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 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: SelectorBlockKey[] = getEntries(blocks).reduce<\n ReturnType<typeof getEntries>\n >((currentKeys, entry) => {\n const [key, block] = entry;\n\n return block.isInBlocksSelector ? [...currentKeys, key] : currentKeys;\n }, []);\n\n const [blockSelected, setBlockSelected] = React.useState<SelectorBlockKey>('paragraph');\n\n const handleSelect = (optionKey: unknown) => {\n if (!isSelectorBlockKey(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 as SelectorBlockKey);\n }\n }\n }, [editor.selection, editor, blocks, blockSelected]);\n\n const Icon = blocks[blockSelected].icon;\n\n return (\n <>\n <SelectWrapper>\n <SingleSelect\n startIcon={<Icon />}\n onChange={handleSelect}\n customizeContent={() => (isMobile ? '' : formatMessage(blocks[blockSelected].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 <BlockOption\n key={key}\n value={key}\n label={blocks[key].label}\n icon={blocks[key].icon}\n blockSelected={blockSelected}\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 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 />}\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","entry","block","isInBlocksSelector","blockSelected","setBlockSelected","handleSelect","optionKey","isSelectorBlockKey","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","_jsxs","_Fragment","SingleSelect","startIcon","onChange","customizeContent","onCloseAutoFocus","id","defaultMessage","map","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","selectedBlock","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 {\n type BlocksStore,\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 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: SelectorBlockKey[] = getEntries(blocks).reduce<\n ReturnType<typeof getEntries>\n >((currentKeys, entry) => {\n const [key, block] = entry;\n\n return block.isInBlocksSelector ? [...currentKeys, key] : currentKeys;\n }, []);\n\n const [blockSelected, setBlockSelected] = React.useState<SelectorBlockKey>('paragraph');\n\n const handleSelect = (optionKey: unknown) => {\n if (!isSelectorBlockKey(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 as SelectorBlockKey);\n }\n }\n }, [editor.selection, editor, blocks, blockSelected]);\n\n const Icon = blocks[blockSelected].icon;\n\n return (\n <>\n <SelectWrapper>\n <SingleSelect\n startIcon={<Icon />}\n onChange={handleSelect}\n customizeContent={() => (isMobile ? '' : formatMessage(blocks[blockSelected].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 <BlockOption\n key={key}\n value={key}\n label={blocks[key].label}\n icon={blocks[key].icon}\n blockSelected={blockSelected}\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 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 />}\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","entry","block","isInBlocksSelector","blockSelected","setBlockSelected","handleSelect","optionKey","isSelectorBlockKey","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","_jsxs","_Fragment","SingleSelect","startIcon","onChange","customizeContent","onCloseAutoFocus","id","defaultMessage","map","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","selectedBlock","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":"EditorLayout.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, IconButton, FlexComponent, Modal } from '@strapi/design-system';\nimport { Collapse } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { css, styled } from 'styled-components';\n\nimport { getTranslation } from '../../../../../utils/translations';\n\nimport { useBlocksEditorContext } from './BlocksEditor';\n\ninterface EditorLayoutProps {\n children: React.ReactNode;\n error?: string;\n onToggleExpand: () => void;\n disabled: boolean;\n ariaDescriptionId: string;\n}\n\nconst EditorLayout = ({\n children,\n error,\n disabled,\n onToggleExpand,\n ariaDescriptionId,\n}: EditorLayoutProps) => {\n const { formatMessage } = useIntl();\n const { isExpandedMode } = useBlocksEditorContext('editorLayout');\n\n return (\n <>\n {isExpandedMode && (\n <Modal.Root open={isExpandedMode} onOpenChange={onToggleExpand}>\n <Modal.Content style={{ maxWidth: 'unset', width: 'unset' }}>\n <Flex height=\"90dvh\" width=\"90dvw\" alignItems=\"flex-start\" direction=\"column\">\n {children}\n <IconButton\n position=\"absolute\"\n bottom=\"1.2rem\"\n right=\"1.2rem\"\n shadow=\"filterShadow\"\n label={formatMessage({\n id: getTranslation('components.Blocks.collapse'),\n defaultMessage: 'Collapse',\n })}\n onClick={onToggleExpand}\n >\n <Collapse />\n </IconButton>\n </Flex>\n </Modal.Content>\n </Modal.Root>\n )}\n <InputWrapper\n direction=\"column\"\n alignItems=\"flex-start\"\n height=\"512px\"\n $disabled={disabled}\n $hasError={Boolean(error)}\n style={{ overflow: 'hidden' }}\n aria-describedby={ariaDescriptionId}\n position=\"relative\"\n >\n {!isExpandedMode && children}\n </InputWrapper>\n </>\n );\n};\n\nconst InputWrapper = styled<FlexComponent>(Flex)<{ $disabled?: boolean; $hasError?: boolean }>`\n border: 1px solid\n ${({ theme, $hasError }) => ($hasError ? theme.colors.danger600 : theme.colors.neutral200)};\n border-radius: ${({ theme }) => theme.borderRadius};\n background: ${({ theme }) => theme.colors.neutral0};\n\n ${({ theme, $hasError = false }) => css`\n outline: none;\n box-shadow: 0;\n transition-property: border-color, box-shadow, fill;\n transition-duration: 0.2s;\n\n &:focus-within {\n border: 1px solid ${$hasError ? theme.colors.danger600 : theme.colors.primary600};\n box-shadow: ${$hasError ? theme.colors.danger600 : theme.colors.primary600} 0px 0px 0px 2px;\n }\n `}\n\n ${({ theme, $disabled }) =>\n $disabled\n ? css`\n color: ${theme.colors.neutral600};\n background: ${theme.colors.neutral150};\n `\n : undefined}\n`;\n\nexport { EditorLayout };\n"],"names":["EditorLayout","children","error","disabled","onToggleExpand","ariaDescriptionId","formatMessage","useIntl","isExpandedMode","useBlocksEditorContext","_jsxs","_Fragment","_jsx","Modal","Root","open","onOpenChange","Content","style","maxWidth","width","Flex","height","alignItems","direction","IconButton","position","bottom","right","shadow","label","id","getTranslation","defaultMessage","onClick","Collapse","InputWrapper","$disabled","$hasError","Boolean","overflow","aria-describedby","styled","theme","colors","danger600","neutral200","borderRadius","neutral0","css","primary600","neutral600","neutral150","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"EditorLayout.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, IconButton, FlexComponent, Modal } from '@strapi/design-system';\nimport { Collapse } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { css, styled } from 'styled-components';\n\nimport { getTranslation } from '../../../../../utils/translations';\n\nimport { useBlocksEditorContext } from './BlocksEditor';\n\ninterface EditorLayoutProps {\n children: React.ReactNode;\n error?: string;\n onToggleExpand: () => void;\n disabled: boolean;\n ariaDescriptionId: string;\n}\n\nconst EditorLayout = ({\n children,\n error,\n disabled,\n onToggleExpand,\n ariaDescriptionId,\n}: EditorLayoutProps) => {\n const { formatMessage } = useIntl();\n const { isExpandedMode } = useBlocksEditorContext('editorLayout');\n\n return (\n <>\n {isExpandedMode && (\n <Modal.Root open={isExpandedMode} onOpenChange={onToggleExpand}>\n <Modal.Content style={{ maxWidth: 'unset', width: 'unset' }}>\n <Flex height=\"90dvh\" width=\"90dvw\" alignItems=\"flex-start\" direction=\"column\">\n {children}\n <IconButton\n position=\"absolute\"\n bottom=\"1.2rem\"\n right=\"1.2rem\"\n shadow=\"filterShadow\"\n label={formatMessage({\n id: getTranslation('components.Blocks.collapse'),\n defaultMessage: 'Collapse',\n })}\n onClick={onToggleExpand}\n >\n <Collapse />\n </IconButton>\n </Flex>\n </Modal.Content>\n </Modal.Root>\n )}\n <InputWrapper\n direction=\"column\"\n alignItems=\"flex-start\"\n height=\"512px\"\n $disabled={disabled}\n $hasError={Boolean(error)}\n style={{ overflow: 'hidden' }}\n aria-describedby={ariaDescriptionId}\n position=\"relative\"\n >\n {!isExpandedMode && children}\n </InputWrapper>\n </>\n );\n};\n\nconst InputWrapper = styled<FlexComponent>(Flex)<{ $disabled?: boolean; $hasError?: boolean }>`\n border: 1px solid\n ${({ theme, $hasError }) => ($hasError ? theme.colors.danger600 : theme.colors.neutral200)};\n border-radius: ${({ theme }) => theme.borderRadius};\n background: ${({ theme }) => theme.colors.neutral0};\n\n ${({ theme, $hasError = false }) => css`\n outline: none;\n box-shadow: 0;\n transition-property: border-color, box-shadow, fill;\n transition-duration: 0.2s;\n\n &:focus-within {\n border: 1px solid ${$hasError ? theme.colors.danger600 : theme.colors.primary600};\n box-shadow: ${$hasError ? theme.colors.danger600 : theme.colors.primary600} 0px 0px 0px 2px;\n }\n `}\n\n ${({ theme, $disabled }) =>\n $disabled\n ? css`\n color: ${theme.colors.neutral600};\n background: ${theme.colors.neutral150};\n `\n : undefined}\n`;\n\nexport { EditorLayout };\n"],"names":["EditorLayout","children","error","disabled","onToggleExpand","ariaDescriptionId","formatMessage","useIntl","isExpandedMode","useBlocksEditorContext","_jsxs","_Fragment","_jsx","Modal","Root","open","onOpenChange","Content","style","maxWidth","width","Flex","height","alignItems","direction","IconButton","position","bottom","right","shadow","label","id","getTranslation","defaultMessage","onClick","Collapse","InputWrapper","$disabled","$hasError","Boolean","overflow","aria-describedby","styled","theme","colors","danger600","neutral200","borderRadius","neutral0","css","primary600","neutral600","neutral150","undefined"],"mappings":"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"}
@@ -3,7 +3,7 @@ import 'react';
3
3
  import { Flex, Modal, IconButton } from '@strapi/design-system';
4
4
  import { Collapse } from '@strapi/icons';
5
5
  import { useIntl } from 'react-intl';
6
- import { styled, css } from 'styled-components';
6
+ import { css, styled } from 'styled-components';
7
7
  import { getTranslation } from '../../../../../utils/translations.mjs';
8
8
  import { useBlocksEditorContext } from './BlocksEditor.mjs';
9
9