@strapi/content-manager 0.0.0-next.929f36e7cd2888f97e66b5159baa15234a283fca → 0.0.0-next.92e60e369ae0e382a5d486de347f6d286ab22987

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 (540) hide show
  1. package/dist/admin/components/ComponentIcon.js +3 -0
  2. package/dist/admin/components/ComponentIcon.js.map +1 -1
  3. package/dist/admin/components/ComponentIcon.mjs +3 -0
  4. package/dist/admin/components/ComponentIcon.mjs.map +1 -1
  5. package/dist/admin/components/ConfigurationForm/EditFieldForm.js +3 -2
  6. package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
  7. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs +3 -2
  8. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
  9. package/dist/admin/components/ConfigurationForm/Fields.js +304 -205
  10. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  11. package/dist/admin/components/ConfigurationForm/Fields.mjs +309 -211
  12. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  13. package/dist/admin/components/ConfigurationForm/Form.js +1 -1
  14. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  15. package/dist/admin/components/ConfigurationForm/Form.mjs +3 -3
  16. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  17. package/dist/admin/components/DragPreviews/CardDragPreview.js +3 -1
  18. package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
  19. package/dist/admin/components/DragPreviews/CardDragPreview.mjs +3 -1
  20. package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
  21. package/dist/admin/components/DragPreviews/ComponentDragPreview.js +3 -1
  22. package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
  23. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs +3 -1
  24. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
  25. package/dist/admin/components/DragPreviews/RelationDragPreview.js +3 -1
  26. package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
  27. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs +3 -1
  28. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
  29. package/dist/admin/components/LeftMenu.js +94 -50
  30. package/dist/admin/components/LeftMenu.js.map +1 -1
  31. package/dist/admin/components/LeftMenu.mjs +97 -53
  32. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  33. package/dist/admin/components/RelativeTime.js.map +1 -1
  34. package/dist/admin/components/RelativeTime.mjs.map +1 -1
  35. package/dist/admin/components/Widgets.js +437 -0
  36. package/dist/admin/components/Widgets.js.map +1 -0
  37. package/dist/admin/components/Widgets.mjs +414 -0
  38. package/dist/admin/components/Widgets.mjs.map +1 -0
  39. package/dist/admin/content-manager.js.map +1 -1
  40. package/dist/admin/content-manager.mjs.map +1 -1
  41. package/dist/admin/history/components/HistoryAction.js.map +1 -1
  42. package/dist/admin/history/components/HistoryAction.mjs.map +1 -1
  43. package/dist/admin/history/components/VersionContent.js +24 -3
  44. package/dist/admin/history/components/VersionContent.js.map +1 -1
  45. package/dist/admin/history/components/VersionContent.mjs +25 -4
  46. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  47. package/dist/admin/history/components/VersionHeader.js +7 -0
  48. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  49. package/dist/admin/history/components/VersionHeader.mjs +8 -1
  50. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  51. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  52. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  53. package/dist/admin/history/components/VersionsList.js +1 -1
  54. package/dist/admin/history/components/VersionsList.js.map +1 -1
  55. package/dist/admin/history/components/VersionsList.mjs +1 -1
  56. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  57. package/dist/admin/history/pages/History.js +8 -16
  58. package/dist/admin/history/pages/History.js.map +1 -1
  59. package/dist/admin/history/pages/History.mjs +8 -16
  60. package/dist/admin/history/pages/History.mjs.map +1 -1
  61. package/dist/admin/history/services/historyVersion.js.map +1 -1
  62. package/dist/admin/history/services/historyVersion.mjs.map +1 -1
  63. package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
  64. package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
  65. package/dist/admin/hooks/useDocumentActions.js +43 -12
  66. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  67. package/dist/admin/hooks/useDocumentActions.mjs +44 -13
  68. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  69. package/dist/admin/hooks/useDocumentContext.js +57 -0
  70. package/dist/admin/hooks/useDocumentContext.js.map +1 -0
  71. package/dist/admin/hooks/useDocumentContext.mjs +36 -0
  72. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -0
  73. package/dist/admin/index.js +81 -5
  74. package/dist/admin/index.js.map +1 -1
  75. package/dist/admin/index.mjs +80 -3
  76. package/dist/admin/index.mjs.map +1 -1
  77. package/dist/admin/layout.js +28 -33
  78. package/dist/admin/layout.js.map +1 -1
  79. package/dist/admin/layout.mjs +29 -15
  80. package/dist/admin/layout.mjs.map +1 -1
  81. package/dist/admin/pages/EditView/EditViewPage.js +101 -88
  82. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  83. package/dist/admin/pages/EditView/EditViewPage.mjs +103 -90
  84. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  85. package/dist/admin/pages/EditView/components/Blocker.js +18 -0
  86. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -0
  87. package/dist/admin/pages/EditView/components/Blocker.mjs +16 -0
  88. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -0
  89. package/dist/admin/pages/EditView/components/DocumentActions.js +335 -123
  90. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  91. package/dist/admin/pages/EditView/components/DocumentActions.mjs +342 -130
  92. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  93. package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
  94. package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
  96. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +66 -2
  98. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +66 -2
  100. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  101. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.js.map +1 -1
  102. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.mjs.map +1 -1
  103. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  104. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  105. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  106. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  107. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +61 -26
  108. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  109. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +63 -28
  110. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  111. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
  112. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  113. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
  114. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  115. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +46 -95
  116. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  117. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +48 -78
  118. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  119. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
  120. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
  121. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js +7 -3
  122. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js.map +1 -1
  123. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs +7 -3
  124. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs.map +1 -1
  125. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +2 -2
  126. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  127. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs +2 -2
  128. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  129. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +14 -3
  130. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  131. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +15 -4
  132. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  133. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +19 -5
  134. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  135. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +20 -6
  136. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  137. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +1 -2
  138. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  139. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +1 -2
  140. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  141. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +27 -24
  142. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  143. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +29 -26
  144. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  145. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +2 -3
  146. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  147. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +2 -3
  148. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  149. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +508 -345
  150. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  151. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +508 -347
  152. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  153. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +180 -70
  154. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  155. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +184 -74
  156. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  157. package/dist/admin/pages/EditView/components/FormInputs/UID.js +13 -10
  158. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  159. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +13 -10
  160. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  161. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  162. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  163. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  164. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  165. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +50 -97
  166. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  167. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +51 -79
  168. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  169. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
  170. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
  171. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  172. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  173. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  174. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  175. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.js.map +1 -1
  176. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs.map +1 -1
  177. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
  178. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
  179. package/dist/admin/pages/EditView/components/FormLayout.js +59 -34
  180. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  181. package/dist/admin/pages/EditView/components/FormLayout.mjs +60 -34
  182. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  183. package/dist/admin/pages/EditView/components/Header.js +92 -27
  184. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  185. package/dist/admin/pages/EditView/components/Header.mjs +94 -29
  186. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  187. package/dist/admin/pages/EditView/components/InputRenderer.js +42 -34
  188. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  189. package/dist/admin/pages/EditView/components/InputRenderer.mjs +42 -34
  190. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  191. package/dist/admin/pages/EditView/utils/data.js +128 -0
  192. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  193. package/dist/admin/pages/EditView/utils/data.mjs +128 -1
  194. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  195. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +1 -0
  196. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  197. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -0
  198. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  199. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
  200. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
  201. package/dist/admin/pages/ListConfiguration/components/Header.js.map +1 -1
  202. package/dist/admin/pages/ListConfiguration/components/Header.mjs.map +1 -1
  203. package/dist/admin/pages/ListView/ListViewPage.js +225 -132
  204. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  205. package/dist/admin/pages/ListView/ListViewPage.mjs +227 -134
  206. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  207. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
  208. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
  209. package/dist/admin/pages/ListView/components/BulkActions/Actions.js +6 -16
  210. package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
  211. package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs +6 -16
  212. package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs.map +1 -1
  213. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +20 -32
  214. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  215. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +21 -33
  216. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  217. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +13 -3
  218. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  219. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +13 -3
  220. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  221. package/dist/admin/pages/ListView/components/Filters.js +8 -2
  222. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  223. package/dist/admin/pages/ListView/components/Filters.mjs +8 -2
  224. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  225. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  226. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  227. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  228. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  229. package/dist/admin/pages/ListView/components/TableCells/CellContent.js +1 -1
  230. package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
  231. package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs +1 -1
  232. package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
  233. package/dist/admin/pages/ListView/components/TableCells/Media.js +1 -1
  234. package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
  235. package/dist/admin/pages/ListView/components/TableCells/Media.mjs +1 -1
  236. package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
  237. package/dist/admin/pages/ListView/components/TableCells/Relations.js +8 -4
  238. package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
  239. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs +8 -4
  240. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
  241. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +5 -2
  242. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  243. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +5 -2
  244. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  245. package/dist/admin/preview/components/InputPopover.js +189 -0
  246. package/dist/admin/preview/components/InputPopover.js.map +1 -0
  247. package/dist/admin/preview/components/InputPopover.mjs +167 -0
  248. package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
  249. package/dist/admin/preview/components/PreviewHeader.js +2 -6
  250. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  251. package/dist/admin/preview/components/PreviewHeader.mjs +2 -6
  252. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  253. package/dist/admin/preview/components/PreviewSidePanel.js +31 -4
  254. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  255. package/dist/admin/preview/components/PreviewSidePanel.mjs +32 -5
  256. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  257. package/dist/admin/preview/hooks/usePreviewInputManager.js +77 -0
  258. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
  259. package/dist/admin/preview/hooks/usePreviewInputManager.mjs +56 -0
  260. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
  261. package/dist/admin/preview/pages/Preview.js +180 -84
  262. package/dist/admin/preview/pages/Preview.js.map +1 -1
  263. package/dist/admin/preview/pages/Preview.mjs +182 -86
  264. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  265. package/dist/admin/preview/services/preview.js.map +1 -1
  266. package/dist/admin/preview/services/preview.mjs.map +1 -1
  267. package/dist/admin/preview/utils/constants.js +56 -0
  268. package/dist/admin/preview/utils/constants.js.map +1 -0
  269. package/dist/admin/preview/utils/constants.mjs +52 -0
  270. package/dist/admin/preview/utils/constants.mjs.map +1 -0
  271. package/dist/admin/preview/utils/fieldUtils.js +107 -0
  272. package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
  273. package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
  274. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
  275. package/dist/admin/preview/utils/getSendMessage.js +22 -0
  276. package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
  277. package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
  278. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
  279. package/dist/admin/preview/utils/previewScript.js +534 -0
  280. package/dist/admin/preview/utils/previewScript.js.map +1 -0
  281. package/dist/admin/preview/utils/previewScript.mjs +532 -0
  282. package/dist/admin/preview/utils/previewScript.mjs.map +1 -0
  283. package/dist/admin/router.js.map +1 -1
  284. package/dist/admin/router.mjs.map +1 -1
  285. package/dist/admin/services/api.js +5 -1
  286. package/dist/admin/services/api.js.map +1 -1
  287. package/dist/admin/services/api.mjs +5 -1
  288. package/dist/admin/services/api.mjs.map +1 -1
  289. package/dist/admin/services/documents.js +59 -17
  290. package/dist/admin/services/documents.js.map +1 -1
  291. package/dist/admin/services/documents.mjs +59 -17
  292. package/dist/admin/services/documents.mjs.map +1 -1
  293. package/dist/admin/services/homepage.js +30 -0
  294. package/dist/admin/services/homepage.js.map +1 -0
  295. package/dist/admin/services/homepage.mjs +28 -0
  296. package/dist/admin/services/homepage.mjs.map +1 -0
  297. package/dist/admin/services/relations.js.map +1 -1
  298. package/dist/admin/services/relations.mjs.map +1 -1
  299. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  300. package/dist/admin/src/components/LeftMenu.d.ts +3 -1
  301. package/dist/admin/src/components/Widgets.d.ts +8 -0
  302. package/dist/admin/src/content-manager.d.ts +0 -3
  303. package/dist/admin/src/exports.d.ts +1 -0
  304. package/dist/admin/src/features/DocumentRBAC.d.ts +1 -1
  305. package/dist/admin/src/history/pages/History.d.ts +1 -1
  306. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  307. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  308. package/dist/admin/src/hooks/useDocumentContext.d.ts +30 -0
  309. package/dist/admin/src/pages/EditView/components/Blocker.d.ts +5 -0
  310. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -2
  311. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +2 -0
  312. package/dist/admin/src/pages/EditView/components/FormInputs/ComponentContext.d.ts +1 -1
  313. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +1 -1
  314. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +73 -7
  315. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +1 -0
  316. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  317. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -11
  318. package/dist/admin/src/pages/EditView/components/Header.d.ts +15 -0
  319. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +2 -2
  320. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  321. package/dist/admin/src/pages/ListView/components/TableCells/Relations.d.ts +0 -3
  322. package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
  323. package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +5 -0
  324. package/dist/admin/src/preview/pages/Preview.d.ts +14 -1
  325. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  326. package/dist/admin/src/preview/utils/constants.d.ts +55 -0
  327. package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
  328. package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
  329. package/dist/admin/src/preview/utils/previewScript.d.ts +24 -0
  330. package/dist/admin/src/services/api.d.ts +1 -1
  331. package/dist/admin/src/services/components.d.ts +2 -2
  332. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  333. package/dist/admin/src/services/documents.d.ts +23 -17
  334. package/dist/admin/src/services/homepage.d.ts +5 -0
  335. package/dist/admin/src/services/init.d.ts +1 -1
  336. package/dist/admin/src/services/relations.d.ts +2 -2
  337. package/dist/admin/src/services/uid.d.ts +3 -3
  338. package/dist/admin/src/utils/api.d.ts +1 -1
  339. package/dist/admin/src/utils/validation.d.ts +1 -0
  340. package/dist/admin/translations/en.json.js +15 -1
  341. package/dist/admin/translations/en.json.js.map +1 -1
  342. package/dist/admin/translations/en.json.mjs +15 -1
  343. package/dist/admin/translations/en.json.mjs.map +1 -1
  344. package/dist/admin/translations/es.json.js +6 -2
  345. package/dist/admin/translations/es.json.js.map +1 -1
  346. package/dist/admin/translations/es.json.mjs +6 -2
  347. package/dist/admin/translations/es.json.mjs.map +1 -1
  348. package/dist/admin/translations/fr.json.js +12 -3
  349. package/dist/admin/translations/fr.json.js.map +1 -1
  350. package/dist/admin/translations/fr.json.mjs +12 -3
  351. package/dist/admin/translations/fr.json.mjs.map +1 -1
  352. package/dist/admin/translations/ru.json.js +235 -226
  353. package/dist/admin/translations/ru.json.js.map +1 -1
  354. package/dist/admin/translations/ru.json.mjs +230 -226
  355. package/dist/admin/translations/ru.json.mjs.map +1 -1
  356. package/dist/admin/utils/api.js +1 -1
  357. package/dist/admin/utils/api.js.map +1 -1
  358. package/dist/admin/utils/api.mjs +1 -1
  359. package/dist/admin/utils/api.mjs.map +1 -1
  360. package/dist/admin/utils/translations.js.map +1 -1
  361. package/dist/admin/utils/translations.mjs.map +1 -1
  362. package/dist/admin/utils/urls.js.map +1 -1
  363. package/dist/admin/utils/urls.mjs.map +1 -1
  364. package/dist/admin/utils/users.js.map +1 -1
  365. package/dist/admin/utils/users.mjs.map +1 -1
  366. package/dist/admin/utils/validation.js +19 -7
  367. package/dist/admin/utils/validation.js.map +1 -1
  368. package/dist/admin/utils/validation.mjs +19 -7
  369. package/dist/admin/utils/validation.mjs.map +1 -1
  370. package/dist/server/controllers/collection-types.js +2 -1
  371. package/dist/server/controllers/collection-types.js.map +1 -1
  372. package/dist/server/controllers/collection-types.mjs +2 -1
  373. package/dist/server/controllers/collection-types.mjs.map +1 -1
  374. package/dist/server/controllers/content-types.js +11 -1
  375. package/dist/server/controllers/content-types.js.map +1 -1
  376. package/dist/server/controllers/content-types.mjs +11 -1
  377. package/dist/server/controllers/content-types.mjs.map +1 -1
  378. package/dist/server/controllers/index.js +3 -1
  379. package/dist/server/controllers/index.js.map +1 -1
  380. package/dist/server/controllers/index.mjs +3 -1
  381. package/dist/server/controllers/index.mjs.map +1 -1
  382. package/dist/server/controllers/relations.js +8 -6
  383. package/dist/server/controllers/relations.js.map +1 -1
  384. package/dist/server/controllers/relations.mjs +8 -6
  385. package/dist/server/controllers/relations.mjs.map +1 -1
  386. package/dist/server/controllers/single-types.js +3 -1
  387. package/dist/server/controllers/single-types.js.map +1 -1
  388. package/dist/server/controllers/single-types.mjs +3 -1
  389. package/dist/server/controllers/single-types.mjs.map +1 -1
  390. package/dist/server/controllers/validation/dimensions.js.map +1 -1
  391. package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
  392. package/dist/server/controllers/validation/index.js +14 -2
  393. package/dist/server/controllers/validation/index.js.map +1 -1
  394. package/dist/server/controllers/validation/index.mjs +14 -2
  395. package/dist/server/controllers/validation/index.mjs.map +1 -1
  396. package/dist/server/controllers/validation/model-configuration.js +2 -2
  397. package/dist/server/controllers/validation/model-configuration.js.map +1 -1
  398. package/dist/server/controllers/validation/model-configuration.mjs +2 -2
  399. package/dist/server/controllers/validation/model-configuration.mjs.map +1 -1
  400. package/dist/server/history/services/lifecycles.js +23 -19
  401. package/dist/server/history/services/lifecycles.js.map +1 -1
  402. package/dist/server/history/services/lifecycles.mjs +23 -19
  403. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  404. package/dist/server/history/utils.js.map +1 -1
  405. package/dist/server/history/utils.mjs.map +1 -1
  406. package/dist/server/homepage/controllers/homepage.js +62 -0
  407. package/dist/server/homepage/controllers/homepage.js.map +1 -0
  408. package/dist/server/homepage/controllers/homepage.mjs +41 -0
  409. package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
  410. package/dist/server/homepage/controllers/index.js +10 -0
  411. package/dist/server/homepage/controllers/index.js.map +1 -0
  412. package/dist/server/homepage/controllers/index.mjs +8 -0
  413. package/dist/server/homepage/controllers/index.mjs.map +1 -0
  414. package/dist/server/homepage/index.js +14 -0
  415. package/dist/server/homepage/index.js.map +1 -0
  416. package/dist/server/homepage/index.mjs +12 -0
  417. package/dist/server/homepage/index.mjs.map +1 -0
  418. package/dist/server/homepage/routes/homepage.js +36 -0
  419. package/dist/server/homepage/routes/homepage.js.map +1 -0
  420. package/dist/server/homepage/routes/homepage.mjs +34 -0
  421. package/dist/server/homepage/routes/homepage.mjs.map +1 -0
  422. package/dist/server/homepage/routes/index.js +13 -0
  423. package/dist/server/homepage/routes/index.js.map +1 -0
  424. package/dist/server/homepage/routes/index.mjs +11 -0
  425. package/dist/server/homepage/routes/index.mjs.map +1 -0
  426. package/dist/server/homepage/services/homepage.js +198 -0
  427. package/dist/server/homepage/services/homepage.js.map +1 -0
  428. package/dist/server/homepage/services/homepage.mjs +196 -0
  429. package/dist/server/homepage/services/homepage.mjs.map +1 -0
  430. package/dist/server/homepage/services/index.js +10 -0
  431. package/dist/server/homepage/services/index.js.map +1 -0
  432. package/dist/server/homepage/services/index.mjs +8 -0
  433. package/dist/server/homepage/services/index.mjs.map +1 -0
  434. package/dist/server/middlewares/routing.js.map +1 -1
  435. package/dist/server/middlewares/routing.mjs.map +1 -1
  436. package/dist/server/preview/services/preview-config.js +11 -32
  437. package/dist/server/preview/services/preview-config.js.map +1 -1
  438. package/dist/server/preview/services/preview-config.mjs +12 -33
  439. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  440. package/dist/server/preview/services/preview.js +4 -1
  441. package/dist/server/preview/services/preview.js.map +1 -1
  442. package/dist/server/preview/services/preview.mjs +4 -1
  443. package/dist/server/preview/services/preview.mjs.map +1 -1
  444. package/dist/server/preview/utils.js.map +1 -1
  445. package/dist/server/preview/utils.mjs.map +1 -1
  446. package/dist/server/routes/index.js +3 -1
  447. package/dist/server/routes/index.js.map +1 -1
  448. package/dist/server/routes/index.mjs +3 -1
  449. package/dist/server/routes/index.mjs.map +1 -1
  450. package/dist/server/services/configuration.js.map +1 -1
  451. package/dist/server/services/configuration.mjs.map +1 -1
  452. package/dist/server/services/data-mapper.js +4 -1
  453. package/dist/server/services/data-mapper.js.map +1 -1
  454. package/dist/server/services/data-mapper.mjs +4 -1
  455. package/dist/server/services/data-mapper.mjs.map +1 -1
  456. package/dist/server/services/document-manager.js +8 -1
  457. package/dist/server/services/document-manager.js.map +1 -1
  458. package/dist/server/services/document-manager.mjs +8 -1
  459. package/dist/server/services/document-manager.mjs.map +1 -1
  460. package/dist/server/services/document-metadata.js +26 -2
  461. package/dist/server/services/document-metadata.js.map +1 -1
  462. package/dist/server/services/document-metadata.mjs +26 -2
  463. package/dist/server/services/document-metadata.mjs.map +1 -1
  464. package/dist/server/services/field-sizes.js.map +1 -1
  465. package/dist/server/services/field-sizes.mjs.map +1 -1
  466. package/dist/server/services/index.js +3 -1
  467. package/dist/server/services/index.js.map +1 -1
  468. package/dist/server/services/index.mjs +3 -1
  469. package/dist/server/services/index.mjs.map +1 -1
  470. package/dist/server/services/uid.js.map +1 -1
  471. package/dist/server/services/uid.mjs.map +1 -1
  472. package/dist/server/services/utils/configuration/attributes.js +1 -1
  473. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  474. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  475. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  476. package/dist/server/services/utils/configuration/layouts.js +1 -1
  477. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  478. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  479. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  480. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  481. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  482. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  483. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  484. package/dist/server/services/utils/populate.js +11 -0
  485. package/dist/server/services/utils/populate.js.map +1 -1
  486. package/dist/server/services/utils/populate.mjs +11 -0
  487. package/dist/server/services/utils/populate.mjs.map +1 -1
  488. package/dist/server/services/utils/store.js.map +1 -1
  489. package/dist/server/services/utils/store.mjs.map +1 -1
  490. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  491. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  492. package/dist/server/src/controllers/index.d.ts.map +1 -1
  493. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  494. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  495. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  496. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  497. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  498. package/dist/server/src/homepage/controllers/homepage.d.ts +8 -0
  499. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
  500. package/dist/server/src/homepage/controllers/index.d.ts +2 -0
  501. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
  502. package/dist/server/src/homepage/index.d.ts +23 -0
  503. package/dist/server/src/homepage/index.d.ts.map +1 -0
  504. package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
  505. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
  506. package/dist/server/src/homepage/routes/index.d.ts +8 -0
  507. package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
  508. package/dist/server/src/homepage/services/homepage.d.ts +14 -0
  509. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
  510. package/dist/server/src/homepage/services/index.d.ts +16 -0
  511. package/dist/server/src/homepage/services/index.d.ts.map +1 -0
  512. package/dist/server/src/index.d.ts +15 -0
  513. package/dist/server/src/index.d.ts.map +1 -1
  514. package/dist/server/src/preview/services/index.d.ts +1 -0
  515. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  516. package/dist/server/src/preview/services/preview-config.d.ts +1 -0
  517. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  518. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  519. package/dist/server/src/preview/utils.d.ts +1 -0
  520. package/dist/server/src/preview/utils.d.ts.map +1 -1
  521. package/dist/server/src/routes/index.d.ts +1 -0
  522. package/dist/server/src/routes/index.d.ts.map +1 -1
  523. package/dist/server/src/services/data-mapper.d.ts +1 -0
  524. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  525. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  526. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  527. package/dist/server/src/services/index.d.ts +14 -0
  528. package/dist/server/src/services/index.d.ts.map +1 -1
  529. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  530. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  531. package/dist/shared/contracts/collection-types.d.ts +0 -1
  532. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  533. package/dist/shared/contracts/homepage.d.ts +38 -0
  534. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  535. package/package.json +13 -11
  536. package/dist/admin/features/DocumentContext.js +0 -71
  537. package/dist/admin/features/DocumentContext.js.map +0 -1
  538. package/dist/admin/features/DocumentContext.mjs +0 -49
  539. package/dist/admin/features/DocumentContext.mjs.map +0 -1
  540. package/dist/admin/src/features/DocumentContext.d.ts +0 -53
@@ -44,6 +44,8 @@ const LinkContent = /*#__PURE__*/ React__namespace.forwardRef(({ link, children,
44
44
  const elementText = link.children.map((child)=>child.text).join('');
45
45
  const [linkText, setLinkText] = React__namespace.useState(elementText);
46
46
  const [linkUrl, setLinkUrl] = React__namespace.useState(link.url);
47
+ const [linkRel, setLinRel] = React__namespace.useState(link.rel);
48
+ const [linkTarget, setLinkTarget] = React__namespace.useState(link.target);
47
49
  const linkInputRef = React__namespace.useRef(null);
48
50
  const isLastInsertedLink = editor.lastInsertedLinkPath ? !slate.Path.equals(path, editor.lastInsertedLinkPath) : true;
49
51
  const [isSaveDisabled, setIsSaveDisabled] = React__namespace.useState(false);
@@ -57,6 +59,14 @@ const LinkContent = /*#__PURE__*/ React__namespace.forwardRef(({ link, children,
57
59
  setIsSaveDisabled(true);
58
60
  }
59
61
  };
62
+ const onLinkRelChange = (e)=>{
63
+ setIsSaveDisabled(false);
64
+ setLinRel(e.target.value);
65
+ };
66
+ const onLinkTargetChange = (e)=>{
67
+ setIsSaveDisabled(false);
68
+ setLinkTarget(e.target.value);
69
+ };
60
70
  const handleSave = (e)=>{
61
71
  e.stopPropagation();
62
72
  // If the selection is collapsed, we select the parent node because we want all the link to be replaced)
@@ -66,7 +76,9 @@ const LinkContent = /*#__PURE__*/ React__namespace.forwardRef(({ link, children,
66
76
  }
67
77
  links.editLink(editor, {
68
78
  url: linkUrl,
69
- text: linkText
79
+ text: linkText,
80
+ rel: linkRel,
81
+ target: linkTarget
70
82
  });
71
83
  setPopoverOpen(false);
72
84
  editor.lastInsertedLinkPath = null;
@@ -85,7 +97,7 @@ const LinkContent = /*#__PURE__*/ React__namespace.forwardRef(({ link, children,
85
97
  }, [
86
98
  popoverOpen
87
99
  ]);
88
- const inputNotDirty = !linkText || !linkUrl || link.url && link.url === linkUrl && elementText && elementText === linkText;
100
+ const inputNotDirty = !linkText || !linkUrl || link.url && link.url === linkUrl && elementText && elementText === linkText && link.rel === linkRel && link.target === linkTarget;
89
101
  return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Popover.Root, {
90
102
  open: popoverOpen,
91
103
  children: [
@@ -95,6 +107,8 @@ const LinkContent = /*#__PURE__*/ React__namespace.forwardRef(({ link, children,
95
107
  ref: forwardedRef,
96
108
  tag: "a",
97
109
  href: link.url,
110
+ rel: link.rel,
111
+ target: link.target,
98
112
  onClick: ()=>setPopoverOpen(true),
99
113
  color: "primary600",
100
114
  children: children
@@ -160,6 +174,56 @@ const LinkContent = /*#__PURE__*/ React__namespace.forwardRef(({ link, children,
160
174
  ]
161
175
  })
162
176
  }),
177
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Root, {
178
+ width: "368px",
179
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
180
+ direction: "column",
181
+ gap: 1,
182
+ alignItems: "stretch",
183
+ children: [
184
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Label, {
185
+ children: formatMessage({
186
+ id: 'components.Blocks.popover.link.rel',
187
+ defaultMessage: 'Rel (optional)'
188
+ })
189
+ }),
190
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Input, {
191
+ name: "rel",
192
+ placeholder: formatMessage({
193
+ id: 'components.Blocks.popover.link.rel.placeholder',
194
+ defaultMessage: 'noopener, nofollow, noreferrer'
195
+ }),
196
+ value: linkRel,
197
+ onChange: onLinkRelChange
198
+ })
199
+ ]
200
+ })
201
+ }),
202
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Root, {
203
+ width: "368px",
204
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
205
+ direction: "column",
206
+ gap: 1,
207
+ alignItems: "stretch",
208
+ children: [
209
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Label, {
210
+ children: formatMessage({
211
+ id: 'components.Blocks.popover.link.target',
212
+ defaultMessage: 'Target (optional)'
213
+ })
214
+ }),
215
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Input, {
216
+ name: "target",
217
+ placeholder: formatMessage({
218
+ id: 'components.Blocks.popover.link.target.placeholder',
219
+ defaultMessage: '_blank, _self, _parent, _top'
220
+ }),
221
+ value: linkTarget,
222
+ onChange: onLinkTargetChange
223
+ })
224
+ ]
225
+ })
226
+ }),
163
227
  /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
164
228
  justifyContent: "space-between",
165
229
  width: "100%",
@@ -1 +1 @@
1
- {"version":3,"file":"Link.js","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Field, Flex, Popover, useComposedRefs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { Editor, Path, Range, Transforms } from 'slate';\nimport { type RenderElementProps, ReactEditor } from 'slate-react';\nimport { styled } from 'styled-components';\n\nimport { type BlocksStore, useBlocksEditorContext } from '../BlocksEditor';\nimport { editLink, removeLink } from '../utils/links';\nimport { isLinkNode, type Block } from '../utils/types';\n\nconst StyledLink = styled(Box)`\n text-decoration: none;\n`;\n\nconst RemoveButton = styled(Button)<{ $visible: boolean }>`\n visibility: ${(props) => (props.$visible ? 'visible' : 'hidden')};\n`;\n\ninterface LinkContentProps extends RenderElementProps {\n link: Block<'link'>;\n}\n\nconst LinkContent = React.forwardRef<HTMLAnchorElement, LinkContentProps>(\n ({ link, children, attributes }, forwardedRef) => {\n const { formatMessage } = useIntl();\n const { editor } = useBlocksEditorContext('Link');\n const path = ReactEditor.findPath(editor, link);\n const [popoverOpen, setPopoverOpen] = React.useState(\n editor.lastInsertedLinkPath ? Path.equals(path, editor.lastInsertedLinkPath) : false\n );\n const elementText = link.children.map((child) => child.text).join('');\n const [linkText, setLinkText] = React.useState(elementText);\n const [linkUrl, setLinkUrl] = React.useState(link.url);\n const linkInputRef = React.useRef<HTMLInputElement>(null);\n const isLastInsertedLink = editor.lastInsertedLinkPath\n ? !Path.equals(path, editor.lastInsertedLinkPath)\n : true;\n const [isSaveDisabled, setIsSaveDisabled] = React.useState(false);\n\n const onLinkChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinkUrl(e.target.value);\n\n try {\n // eslint-disable-next-line no-new\n new URL(\n e.target.value?.startsWith('/') ? `https://strapi.io${e.target.value}` : e.target.value\n );\n } catch (error) {\n setIsSaveDisabled(true);\n }\n };\n\n const handleSave: React.FormEventHandler = (e) => {\n e.stopPropagation();\n\n // If the selection is collapsed, we select the parent node because we want all the link to be replaced)\n if (editor.selection && Range.isCollapsed(editor.selection)) {\n const [, parentPath] = Editor.parent(editor, editor.selection.focus?.path);\n Transforms.select(editor, parentPath);\n }\n\n editLink(editor, { url: linkUrl, text: linkText });\n setPopoverOpen(false);\n editor.lastInsertedLinkPath = null;\n ReactEditor.focus(editor);\n };\n\n const handleClose = () => {\n if (link.url === '') {\n removeLink(editor);\n }\n\n setPopoverOpen(false);\n ReactEditor.focus(editor);\n };\n\n React.useEffect(() => {\n // Focus on the link input element when the popover opens\n if (popoverOpen) linkInputRef.current?.focus();\n }, [popoverOpen]);\n\n const inputNotDirty =\n !linkText ||\n !linkUrl ||\n (link.url && link.url === linkUrl && elementText && elementText === linkText);\n\n return (\n <Popover.Root open={popoverOpen}>\n <Popover.Trigger>\n <StyledLink\n {...attributes}\n ref={forwardedRef}\n tag=\"a\"\n href={link.url}\n onClick={() => setPopoverOpen(true)}\n color=\"primary600\"\n >\n {children}\n </StyledLink>\n </Popover.Trigger>\n <Popover.Content onPointerDownOutside={handleClose}>\n <Flex padding={4} direction=\"column\" gap={4}>\n <Field.Root width=\"368px\">\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.text',\n defaultMessage: 'Text',\n })}\n </Field.Label>\n <Field.Input\n name=\"text\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.text.placeholder',\n defaultMessage: 'Enter link text',\n })}\n value={linkText}\n onChange={(e) => {\n setLinkText(e.target.value);\n }}\n />\n </Flex>\n </Field.Root>\n <Field.Root width=\"368px\">\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n </Field.Label>\n <Field.Input\n ref={linkInputRef}\n name=\"url\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.placeholder',\n defaultMessage: 'Paste link',\n })}\n value={linkUrl}\n onChange={onLinkChange}\n />\n </Flex>\n </Field.Root>\n <Flex justifyContent=\"space-between\" width=\"100%\">\n <RemoveButton\n variant=\"danger-light\"\n onClick={() => removeLink(editor)}\n $visible={isLastInsertedLink}\n >\n {formatMessage({\n id: 'components.Blocks.popover.remove',\n defaultMessage: 'Remove',\n })}\n </RemoveButton>\n <Flex gap={2}>\n <Button variant=\"tertiary\" onClick={handleClose}>\n {formatMessage({\n id: 'global.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <Button disabled={Boolean(inputNotDirty) || isSaveDisabled} onClick={handleSave}>\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Popover.Content>\n </Popover.Root>\n );\n }\n);\n\nconst Link = React.forwardRef<HTMLAnchorElement, RenderElementProps>((props, forwardedRef) => {\n if (!isLinkNode(props.element)) {\n return null;\n }\n\n // LinkContent uses React hooks that rely on props.element being a link. If the type guard above\n // doesn't pass, those hooks would be called conditionnally, which is not allowed.\n // Hence the need for a separate component.\n return <LinkContent {...props} link={props.element} ref={forwardedRef} />;\n});\n\nconst linkBlocks: Pick<BlocksStore, 'link'> = {\n link: {\n renderElement: (props) => (\n <Link element={props.element} attributes={props.attributes}>\n {props.children}\n </Link>\n ),\n // No handleConvert here, links are created via the link button in the toolbar\n matchNode: (node) => node.type === 'link',\n isInBlocksSelector: false,\n },\n};\n\nexport { linkBlocks };\n"],"names":["StyledLink","styled","Box","RemoveButton","Button","props","$visible","LinkContent","React","forwardRef","link","children","attributes","forwardedRef","formatMessage","useIntl","editor","useBlocksEditorContext","path","ReactEditor","findPath","popoverOpen","setPopoverOpen","useState","lastInsertedLinkPath","Path","equals","elementText","map","child","text","join","linkText","setLinkText","linkUrl","setLinkUrl","url","linkInputRef","useRef","isLastInsertedLink","isSaveDisabled","setIsSaveDisabled","onLinkChange","e","target","value","URL","startsWith","error","handleSave","stopPropagation","selection","Range","isCollapsed","parentPath","Editor","parent","focus","Transforms","select","editLink","handleClose","removeLink","useEffect","current","inputNotDirty","_jsxs","Popover","Root","open","_jsx","Trigger","ref","tag","href","onClick","color","Content","onPointerDownOutside","Flex","padding","direction","gap","Field","width","alignItems","Label","id","defaultMessage","Input","name","placeholder","onChange","justifyContent","variant","disabled","Boolean","Link","isLinkNode","element","linkBlocks","renderElement","matchNode","node","type","isInBlocksSelector"],"mappings":"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"}
1
+ {"version":3,"file":"Link.js","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Field, Flex, Popover, useComposedRefs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { Editor, Path, Range, Transforms } from 'slate';\nimport { type RenderElementProps, ReactEditor } from 'slate-react';\nimport { styled } from 'styled-components';\n\nimport { type BlocksStore, useBlocksEditorContext } from '../BlocksEditor';\nimport { editLink, removeLink } from '../utils/links';\nimport { isLinkNode, type Block } from '../utils/types';\n\nconst StyledLink = styled(Box)`\n text-decoration: none;\n`;\n\nconst RemoveButton = styled(Button)<{ $visible: boolean }>`\n visibility: ${(props) => (props.$visible ? 'visible' : 'hidden')};\n`;\n\ninterface LinkContentProps extends RenderElementProps {\n link: Block<'link'>;\n}\n\nconst LinkContent = React.forwardRef<HTMLAnchorElement, LinkContentProps>(\n ({ link, children, attributes }, forwardedRef) => {\n const { formatMessage } = useIntl();\n const { editor } = useBlocksEditorContext('Link');\n const path = ReactEditor.findPath(editor, link);\n const [popoverOpen, setPopoverOpen] = React.useState(\n editor.lastInsertedLinkPath ? Path.equals(path, editor.lastInsertedLinkPath) : false\n );\n const elementText = link.children.map((child) => child.text).join('');\n const [linkText, setLinkText] = React.useState(elementText);\n const [linkUrl, setLinkUrl] = React.useState(link.url);\n const [linkRel, setLinRel] = React.useState(link.rel);\n const [linkTarget, setLinkTarget] = React.useState(link.target);\n const linkInputRef = React.useRef<HTMLInputElement>(null);\n const isLastInsertedLink = editor.lastInsertedLinkPath\n ? !Path.equals(path, editor.lastInsertedLinkPath)\n : true;\n const [isSaveDisabled, setIsSaveDisabled] = React.useState(false);\n\n const onLinkChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinkUrl(e.target.value);\n\n try {\n // eslint-disable-next-line no-new\n new URL(\n e.target.value?.startsWith('/') ? `https://strapi.io${e.target.value}` : e.target.value\n );\n } catch (error) {\n setIsSaveDisabled(true);\n }\n };\n\n const onLinkRelChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinRel(e.target.value);\n };\n\n const onLinkTargetChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinkTarget(e.target.value);\n };\n\n const handleSave: React.FormEventHandler = (e) => {\n e.stopPropagation();\n\n // If the selection is collapsed, we select the parent node because we want all the link to be replaced)\n if (editor.selection && Range.isCollapsed(editor.selection)) {\n const [, parentPath] = Editor.parent(editor, editor.selection.focus?.path);\n Transforms.select(editor, parentPath);\n }\n\n editLink(editor, { url: linkUrl, text: linkText, rel: linkRel, target: linkTarget });\n setPopoverOpen(false);\n editor.lastInsertedLinkPath = null;\n ReactEditor.focus(editor);\n };\n\n const handleClose = () => {\n if (link.url === '') {\n removeLink(editor);\n }\n\n setPopoverOpen(false);\n ReactEditor.focus(editor);\n };\n\n React.useEffect(() => {\n // Focus on the link input element when the popover opens\n if (popoverOpen) linkInputRef.current?.focus();\n }, [popoverOpen]);\n\n const inputNotDirty =\n !linkText ||\n !linkUrl ||\n (link.url &&\n link.url === linkUrl &&\n elementText &&\n elementText === linkText &&\n link.rel === linkRel &&\n link.target === linkTarget);\n\n return (\n <Popover.Root open={popoverOpen}>\n <Popover.Trigger>\n <StyledLink\n {...attributes}\n ref={forwardedRef}\n tag=\"a\"\n href={link.url}\n rel={link.rel}\n target={link.target}\n onClick={() => setPopoverOpen(true)}\n color=\"primary600\"\n >\n {children}\n </StyledLink>\n </Popover.Trigger>\n <Popover.Content onPointerDownOutside={handleClose}>\n <Flex padding={4} direction=\"column\" gap={4}>\n <Field.Root width=\"368px\">\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.text',\n defaultMessage: 'Text',\n })}\n </Field.Label>\n <Field.Input\n name=\"text\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.text.placeholder',\n defaultMessage: 'Enter link text',\n })}\n value={linkText}\n onChange={(e) => {\n setLinkText(e.target.value);\n }}\n />\n </Flex>\n </Field.Root>\n <Field.Root width=\"368px\">\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n </Field.Label>\n <Field.Input\n ref={linkInputRef}\n name=\"url\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.placeholder',\n defaultMessage: 'Paste link',\n })}\n value={linkUrl}\n onChange={onLinkChange}\n />\n </Flex>\n </Field.Root>\n <Field.Root width=\"368px\">\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link.rel',\n defaultMessage: 'Rel (optional)',\n })}\n </Field.Label>\n <Field.Input\n name=\"rel\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.rel.placeholder',\n defaultMessage: 'noopener, nofollow, noreferrer',\n })}\n value={linkRel}\n onChange={onLinkRelChange}\n />\n </Flex>\n </Field.Root>\n <Field.Root width=\"368px\">\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link.target',\n defaultMessage: 'Target (optional)',\n })}\n </Field.Label>\n <Field.Input\n name=\"target\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.target.placeholder',\n defaultMessage: '_blank, _self, _parent, _top',\n })}\n value={linkTarget}\n onChange={onLinkTargetChange}\n />\n </Flex>\n </Field.Root>\n <Flex justifyContent=\"space-between\" width=\"100%\">\n <RemoveButton\n variant=\"danger-light\"\n onClick={() => removeLink(editor)}\n $visible={isLastInsertedLink}\n >\n {formatMessage({\n id: 'components.Blocks.popover.remove',\n defaultMessage: 'Remove',\n })}\n </RemoveButton>\n <Flex gap={2}>\n <Button variant=\"tertiary\" onClick={handleClose}>\n {formatMessage({\n id: 'global.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <Button disabled={Boolean(inputNotDirty) || isSaveDisabled} onClick={handleSave}>\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Popover.Content>\n </Popover.Root>\n );\n }\n);\n\nconst Link = React.forwardRef<HTMLAnchorElement, RenderElementProps>((props, forwardedRef) => {\n if (!isLinkNode(props.element)) {\n return null;\n }\n\n // LinkContent uses React hooks that rely on props.element being a link. If the type guard above\n // doesn't pass, those hooks would be called conditionnally, which is not allowed.\n // Hence the need for a separate component.\n return <LinkContent {...props} link={props.element} ref={forwardedRef} />;\n});\n\nconst linkBlocks: Pick<BlocksStore, 'link'> = {\n link: {\n renderElement: (props) => (\n <Link element={props.element} attributes={props.attributes}>\n {props.children}\n </Link>\n ),\n // No handleConvert here, links are created via the link button in the toolbar\n matchNode: (node) => node.type === 'link',\n isInBlocksSelector: false,\n },\n};\n\nexport { linkBlocks };\n"],"names":["StyledLink","styled","Box","RemoveButton","Button","props","$visible","LinkContent","React","forwardRef","link","children","attributes","forwardedRef","formatMessage","useIntl","editor","useBlocksEditorContext","path","ReactEditor","findPath","popoverOpen","setPopoverOpen","useState","lastInsertedLinkPath","Path","equals","elementText","map","child","text","join","linkText","setLinkText","linkUrl","setLinkUrl","url","linkRel","setLinRel","rel","linkTarget","setLinkTarget","target","linkInputRef","useRef","isLastInsertedLink","isSaveDisabled","setIsSaveDisabled","onLinkChange","e","value","URL","startsWith","error","onLinkRelChange","onLinkTargetChange","handleSave","stopPropagation","selection","Range","isCollapsed","parentPath","Editor","parent","focus","Transforms","select","editLink","handleClose","removeLink","useEffect","current","inputNotDirty","_jsxs","Popover","Root","open","_jsx","Trigger","ref","tag","href","onClick","color","Content","onPointerDownOutside","Flex","padding","direction","gap","Field","width","alignItems","Label","id","defaultMessage","Input","name","placeholder","onChange","justifyContent","variant","disabled","Boolean","Link","isLinkNode","element","linkBlocks","renderElement","matchNode","node","type","isInBlocksSelector"],"mappings":"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"}
@@ -23,6 +23,8 @@ const LinkContent = /*#__PURE__*/ React.forwardRef(({ link, children, attributes
23
23
  const elementText = link.children.map((child)=>child.text).join('');
24
24
  const [linkText, setLinkText] = React.useState(elementText);
25
25
  const [linkUrl, setLinkUrl] = React.useState(link.url);
26
+ const [linkRel, setLinRel] = React.useState(link.rel);
27
+ const [linkTarget, setLinkTarget] = React.useState(link.target);
26
28
  const linkInputRef = React.useRef(null);
27
29
  const isLastInsertedLink = editor.lastInsertedLinkPath ? !Path.equals(path, editor.lastInsertedLinkPath) : true;
28
30
  const [isSaveDisabled, setIsSaveDisabled] = React.useState(false);
@@ -36,6 +38,14 @@ const LinkContent = /*#__PURE__*/ React.forwardRef(({ link, children, attributes
36
38
  setIsSaveDisabled(true);
37
39
  }
38
40
  };
41
+ const onLinkRelChange = (e)=>{
42
+ setIsSaveDisabled(false);
43
+ setLinRel(e.target.value);
44
+ };
45
+ const onLinkTargetChange = (e)=>{
46
+ setIsSaveDisabled(false);
47
+ setLinkTarget(e.target.value);
48
+ };
39
49
  const handleSave = (e)=>{
40
50
  e.stopPropagation();
41
51
  // If the selection is collapsed, we select the parent node because we want all the link to be replaced)
@@ -45,7 +55,9 @@ const LinkContent = /*#__PURE__*/ React.forwardRef(({ link, children, attributes
45
55
  }
46
56
  editLink(editor, {
47
57
  url: linkUrl,
48
- text: linkText
58
+ text: linkText,
59
+ rel: linkRel,
60
+ target: linkTarget
49
61
  });
50
62
  setPopoverOpen(false);
51
63
  editor.lastInsertedLinkPath = null;
@@ -64,7 +76,7 @@ const LinkContent = /*#__PURE__*/ React.forwardRef(({ link, children, attributes
64
76
  }, [
65
77
  popoverOpen
66
78
  ]);
67
- const inputNotDirty = !linkText || !linkUrl || link.url && link.url === linkUrl && elementText && elementText === linkText;
79
+ const inputNotDirty = !linkText || !linkUrl || link.url && link.url === linkUrl && elementText && elementText === linkText && link.rel === linkRel && link.target === linkTarget;
68
80
  return /*#__PURE__*/ jsxs(Popover.Root, {
69
81
  open: popoverOpen,
70
82
  children: [
@@ -74,6 +86,8 @@ const LinkContent = /*#__PURE__*/ React.forwardRef(({ link, children, attributes
74
86
  ref: forwardedRef,
75
87
  tag: "a",
76
88
  href: link.url,
89
+ rel: link.rel,
90
+ target: link.target,
77
91
  onClick: ()=>setPopoverOpen(true),
78
92
  color: "primary600",
79
93
  children: children
@@ -139,6 +153,56 @@ const LinkContent = /*#__PURE__*/ React.forwardRef(({ link, children, attributes
139
153
  ]
140
154
  })
141
155
  }),
156
+ /*#__PURE__*/ jsx(Field.Root, {
157
+ width: "368px",
158
+ children: /*#__PURE__*/ jsxs(Flex, {
159
+ direction: "column",
160
+ gap: 1,
161
+ alignItems: "stretch",
162
+ children: [
163
+ /*#__PURE__*/ jsx(Field.Label, {
164
+ children: formatMessage({
165
+ id: 'components.Blocks.popover.link.rel',
166
+ defaultMessage: 'Rel (optional)'
167
+ })
168
+ }),
169
+ /*#__PURE__*/ jsx(Field.Input, {
170
+ name: "rel",
171
+ placeholder: formatMessage({
172
+ id: 'components.Blocks.popover.link.rel.placeholder',
173
+ defaultMessage: 'noopener, nofollow, noreferrer'
174
+ }),
175
+ value: linkRel,
176
+ onChange: onLinkRelChange
177
+ })
178
+ ]
179
+ })
180
+ }),
181
+ /*#__PURE__*/ jsx(Field.Root, {
182
+ width: "368px",
183
+ children: /*#__PURE__*/ jsxs(Flex, {
184
+ direction: "column",
185
+ gap: 1,
186
+ alignItems: "stretch",
187
+ children: [
188
+ /*#__PURE__*/ jsx(Field.Label, {
189
+ children: formatMessage({
190
+ id: 'components.Blocks.popover.link.target',
191
+ defaultMessage: 'Target (optional)'
192
+ })
193
+ }),
194
+ /*#__PURE__*/ jsx(Field.Input, {
195
+ name: "target",
196
+ placeholder: formatMessage({
197
+ id: 'components.Blocks.popover.link.target.placeholder',
198
+ defaultMessage: '_blank, _self, _parent, _top'
199
+ }),
200
+ value: linkTarget,
201
+ onChange: onLinkTargetChange
202
+ })
203
+ ]
204
+ })
205
+ }),
142
206
  /*#__PURE__*/ jsxs(Flex, {
143
207
  justifyContent: "space-between",
144
208
  width: "100%",
@@ -1 +1 @@
1
- {"version":3,"file":"Link.mjs","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Field, Flex, Popover, useComposedRefs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { Editor, Path, Range, Transforms } from 'slate';\nimport { type RenderElementProps, ReactEditor } from 'slate-react';\nimport { styled } from 'styled-components';\n\nimport { type BlocksStore, useBlocksEditorContext } from '../BlocksEditor';\nimport { editLink, removeLink } from '../utils/links';\nimport { isLinkNode, type Block } from '../utils/types';\n\nconst StyledLink = styled(Box)`\n text-decoration: none;\n`;\n\nconst RemoveButton = styled(Button)<{ $visible: boolean }>`\n visibility: ${(props) => (props.$visible ? 'visible' : 'hidden')};\n`;\n\ninterface LinkContentProps extends RenderElementProps {\n link: Block<'link'>;\n}\n\nconst LinkContent = React.forwardRef<HTMLAnchorElement, LinkContentProps>(\n ({ link, children, attributes }, forwardedRef) => {\n const { formatMessage } = useIntl();\n const { editor } = useBlocksEditorContext('Link');\n const path = ReactEditor.findPath(editor, link);\n const [popoverOpen, setPopoverOpen] = React.useState(\n editor.lastInsertedLinkPath ? Path.equals(path, editor.lastInsertedLinkPath) : false\n );\n const elementText = link.children.map((child) => child.text).join('');\n const [linkText, setLinkText] = React.useState(elementText);\n const [linkUrl, setLinkUrl] = React.useState(link.url);\n const linkInputRef = React.useRef<HTMLInputElement>(null);\n const isLastInsertedLink = editor.lastInsertedLinkPath\n ? !Path.equals(path, editor.lastInsertedLinkPath)\n : true;\n const [isSaveDisabled, setIsSaveDisabled] = React.useState(false);\n\n const onLinkChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinkUrl(e.target.value);\n\n try {\n // eslint-disable-next-line no-new\n new URL(\n e.target.value?.startsWith('/') ? `https://strapi.io${e.target.value}` : e.target.value\n );\n } catch (error) {\n setIsSaveDisabled(true);\n }\n };\n\n const handleSave: React.FormEventHandler = (e) => {\n e.stopPropagation();\n\n // If the selection is collapsed, we select the parent node because we want all the link to be replaced)\n if (editor.selection && Range.isCollapsed(editor.selection)) {\n const [, parentPath] = Editor.parent(editor, editor.selection.focus?.path);\n Transforms.select(editor, parentPath);\n }\n\n editLink(editor, { url: linkUrl, text: linkText });\n setPopoverOpen(false);\n editor.lastInsertedLinkPath = null;\n ReactEditor.focus(editor);\n };\n\n const handleClose = () => {\n if (link.url === '') {\n removeLink(editor);\n }\n\n setPopoverOpen(false);\n ReactEditor.focus(editor);\n };\n\n React.useEffect(() => {\n // Focus on the link input element when the popover opens\n if (popoverOpen) linkInputRef.current?.focus();\n }, [popoverOpen]);\n\n const inputNotDirty =\n !linkText ||\n !linkUrl ||\n (link.url && link.url === linkUrl && elementText && elementText === linkText);\n\n return (\n <Popover.Root open={popoverOpen}>\n <Popover.Trigger>\n <StyledLink\n {...attributes}\n ref={forwardedRef}\n tag=\"a\"\n href={link.url}\n onClick={() => setPopoverOpen(true)}\n color=\"primary600\"\n >\n {children}\n </StyledLink>\n </Popover.Trigger>\n <Popover.Content onPointerDownOutside={handleClose}>\n <Flex padding={4} direction=\"column\" gap={4}>\n <Field.Root width=\"368px\">\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.text',\n defaultMessage: 'Text',\n })}\n </Field.Label>\n <Field.Input\n name=\"text\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.text.placeholder',\n defaultMessage: 'Enter link text',\n })}\n value={linkText}\n onChange={(e) => {\n setLinkText(e.target.value);\n }}\n />\n </Flex>\n </Field.Root>\n <Field.Root width=\"368px\">\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n </Field.Label>\n <Field.Input\n ref={linkInputRef}\n name=\"url\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.placeholder',\n defaultMessage: 'Paste link',\n })}\n value={linkUrl}\n onChange={onLinkChange}\n />\n </Flex>\n </Field.Root>\n <Flex justifyContent=\"space-between\" width=\"100%\">\n <RemoveButton\n variant=\"danger-light\"\n onClick={() => removeLink(editor)}\n $visible={isLastInsertedLink}\n >\n {formatMessage({\n id: 'components.Blocks.popover.remove',\n defaultMessage: 'Remove',\n })}\n </RemoveButton>\n <Flex gap={2}>\n <Button variant=\"tertiary\" onClick={handleClose}>\n {formatMessage({\n id: 'global.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <Button disabled={Boolean(inputNotDirty) || isSaveDisabled} onClick={handleSave}>\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Popover.Content>\n </Popover.Root>\n );\n }\n);\n\nconst Link = React.forwardRef<HTMLAnchorElement, RenderElementProps>((props, forwardedRef) => {\n if (!isLinkNode(props.element)) {\n return null;\n }\n\n // LinkContent uses React hooks that rely on props.element being a link. If the type guard above\n // doesn't pass, those hooks would be called conditionnally, which is not allowed.\n // Hence the need for a separate component.\n return <LinkContent {...props} link={props.element} ref={forwardedRef} />;\n});\n\nconst linkBlocks: Pick<BlocksStore, 'link'> = {\n link: {\n renderElement: (props) => (\n <Link element={props.element} attributes={props.attributes}>\n {props.children}\n </Link>\n ),\n // No handleConvert here, links are created via the link button in the toolbar\n matchNode: (node) => node.type === 'link',\n isInBlocksSelector: false,\n },\n};\n\nexport { linkBlocks };\n"],"names":["StyledLink","styled","Box","RemoveButton","Button","props","$visible","LinkContent","React","forwardRef","link","children","attributes","forwardedRef","formatMessage","useIntl","editor","useBlocksEditorContext","path","ReactEditor","findPath","popoverOpen","setPopoverOpen","useState","lastInsertedLinkPath","Path","equals","elementText","map","child","text","join","linkText","setLinkText","linkUrl","setLinkUrl","url","linkInputRef","useRef","isLastInsertedLink","isSaveDisabled","setIsSaveDisabled","onLinkChange","e","target","value","URL","startsWith","error","handleSave","stopPropagation","selection","Range","isCollapsed","parentPath","Editor","parent","focus","Transforms","select","editLink","handleClose","removeLink","useEffect","current","inputNotDirty","_jsxs","Popover","Root","open","_jsx","Trigger","ref","tag","href","onClick","color","Content","onPointerDownOutside","Flex","padding","direction","gap","Field","width","alignItems","Label","id","defaultMessage","Input","name","placeholder","onChange","justifyContent","variant","disabled","Boolean","Link","isLinkNode","element","linkBlocks","renderElement","matchNode","node","type","isInBlocksSelector"],"mappings":"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"}
1
+ {"version":3,"file":"Link.mjs","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Field, Flex, Popover, useComposedRefs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { Editor, Path, Range, Transforms } from 'slate';\nimport { type RenderElementProps, ReactEditor } from 'slate-react';\nimport { styled } from 'styled-components';\n\nimport { type BlocksStore, useBlocksEditorContext } from '../BlocksEditor';\nimport { editLink, removeLink } from '../utils/links';\nimport { isLinkNode, type Block } from '../utils/types';\n\nconst StyledLink = styled(Box)`\n text-decoration: none;\n`;\n\nconst RemoveButton = styled(Button)<{ $visible: boolean }>`\n visibility: ${(props) => (props.$visible ? 'visible' : 'hidden')};\n`;\n\ninterface LinkContentProps extends RenderElementProps {\n link: Block<'link'>;\n}\n\nconst LinkContent = React.forwardRef<HTMLAnchorElement, LinkContentProps>(\n ({ link, children, attributes }, forwardedRef) => {\n const { formatMessage } = useIntl();\n const { editor } = useBlocksEditorContext('Link');\n const path = ReactEditor.findPath(editor, link);\n const [popoverOpen, setPopoverOpen] = React.useState(\n editor.lastInsertedLinkPath ? Path.equals(path, editor.lastInsertedLinkPath) : false\n );\n const elementText = link.children.map((child) => child.text).join('');\n const [linkText, setLinkText] = React.useState(elementText);\n const [linkUrl, setLinkUrl] = React.useState(link.url);\n const [linkRel, setLinRel] = React.useState(link.rel);\n const [linkTarget, setLinkTarget] = React.useState(link.target);\n const linkInputRef = React.useRef<HTMLInputElement>(null);\n const isLastInsertedLink = editor.lastInsertedLinkPath\n ? !Path.equals(path, editor.lastInsertedLinkPath)\n : true;\n const [isSaveDisabled, setIsSaveDisabled] = React.useState(false);\n\n const onLinkChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinkUrl(e.target.value);\n\n try {\n // eslint-disable-next-line no-new\n new URL(\n e.target.value?.startsWith('/') ? `https://strapi.io${e.target.value}` : e.target.value\n );\n } catch (error) {\n setIsSaveDisabled(true);\n }\n };\n\n const onLinkRelChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinRel(e.target.value);\n };\n\n const onLinkTargetChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinkTarget(e.target.value);\n };\n\n const handleSave: React.FormEventHandler = (e) => {\n e.stopPropagation();\n\n // If the selection is collapsed, we select the parent node because we want all the link to be replaced)\n if (editor.selection && Range.isCollapsed(editor.selection)) {\n const [, parentPath] = Editor.parent(editor, editor.selection.focus?.path);\n Transforms.select(editor, parentPath);\n }\n\n editLink(editor, { url: linkUrl, text: linkText, rel: linkRel, target: linkTarget });\n setPopoverOpen(false);\n editor.lastInsertedLinkPath = null;\n ReactEditor.focus(editor);\n };\n\n const handleClose = () => {\n if (link.url === '') {\n removeLink(editor);\n }\n\n setPopoverOpen(false);\n ReactEditor.focus(editor);\n };\n\n React.useEffect(() => {\n // Focus on the link input element when the popover opens\n if (popoverOpen) linkInputRef.current?.focus();\n }, [popoverOpen]);\n\n const inputNotDirty =\n !linkText ||\n !linkUrl ||\n (link.url &&\n link.url === linkUrl &&\n elementText &&\n elementText === linkText &&\n link.rel === linkRel &&\n link.target === linkTarget);\n\n return (\n <Popover.Root open={popoverOpen}>\n <Popover.Trigger>\n <StyledLink\n {...attributes}\n ref={forwardedRef}\n tag=\"a\"\n href={link.url}\n rel={link.rel}\n target={link.target}\n onClick={() => setPopoverOpen(true)}\n color=\"primary600\"\n >\n {children}\n </StyledLink>\n </Popover.Trigger>\n <Popover.Content onPointerDownOutside={handleClose}>\n <Flex padding={4} direction=\"column\" gap={4}>\n <Field.Root width=\"368px\">\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.text',\n defaultMessage: 'Text',\n })}\n </Field.Label>\n <Field.Input\n name=\"text\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.text.placeholder',\n defaultMessage: 'Enter link text',\n })}\n value={linkText}\n onChange={(e) => {\n setLinkText(e.target.value);\n }}\n />\n </Flex>\n </Field.Root>\n <Field.Root width=\"368px\">\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n </Field.Label>\n <Field.Input\n ref={linkInputRef}\n name=\"url\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.placeholder',\n defaultMessage: 'Paste link',\n })}\n value={linkUrl}\n onChange={onLinkChange}\n />\n </Flex>\n </Field.Root>\n <Field.Root width=\"368px\">\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link.rel',\n defaultMessage: 'Rel (optional)',\n })}\n </Field.Label>\n <Field.Input\n name=\"rel\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.rel.placeholder',\n defaultMessage: 'noopener, nofollow, noreferrer',\n })}\n value={linkRel}\n onChange={onLinkRelChange}\n />\n </Flex>\n </Field.Root>\n <Field.Root width=\"368px\">\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link.target',\n defaultMessage: 'Target (optional)',\n })}\n </Field.Label>\n <Field.Input\n name=\"target\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.target.placeholder',\n defaultMessage: '_blank, _self, _parent, _top',\n })}\n value={linkTarget}\n onChange={onLinkTargetChange}\n />\n </Flex>\n </Field.Root>\n <Flex justifyContent=\"space-between\" width=\"100%\">\n <RemoveButton\n variant=\"danger-light\"\n onClick={() => removeLink(editor)}\n $visible={isLastInsertedLink}\n >\n {formatMessage({\n id: 'components.Blocks.popover.remove',\n defaultMessage: 'Remove',\n })}\n </RemoveButton>\n <Flex gap={2}>\n <Button variant=\"tertiary\" onClick={handleClose}>\n {formatMessage({\n id: 'global.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <Button disabled={Boolean(inputNotDirty) || isSaveDisabled} onClick={handleSave}>\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Popover.Content>\n </Popover.Root>\n );\n }\n);\n\nconst Link = React.forwardRef<HTMLAnchorElement, RenderElementProps>((props, forwardedRef) => {\n if (!isLinkNode(props.element)) {\n return null;\n }\n\n // LinkContent uses React hooks that rely on props.element being a link. If the type guard above\n // doesn't pass, those hooks would be called conditionnally, which is not allowed.\n // Hence the need for a separate component.\n return <LinkContent {...props} link={props.element} ref={forwardedRef} />;\n});\n\nconst linkBlocks: Pick<BlocksStore, 'link'> = {\n link: {\n renderElement: (props) => (\n <Link element={props.element} attributes={props.attributes}>\n {props.children}\n </Link>\n ),\n // No handleConvert here, links are created via the link button in the toolbar\n matchNode: (node) => node.type === 'link',\n isInBlocksSelector: false,\n },\n};\n\nexport { linkBlocks };\n"],"names":["StyledLink","styled","Box","RemoveButton","Button","props","$visible","LinkContent","React","forwardRef","link","children","attributes","forwardedRef","formatMessage","useIntl","editor","useBlocksEditorContext","path","ReactEditor","findPath","popoverOpen","setPopoverOpen","useState","lastInsertedLinkPath","Path","equals","elementText","map","child","text","join","linkText","setLinkText","linkUrl","setLinkUrl","url","linkRel","setLinRel","rel","linkTarget","setLinkTarget","target","linkInputRef","useRef","isLastInsertedLink","isSaveDisabled","setIsSaveDisabled","onLinkChange","e","value","URL","startsWith","error","onLinkRelChange","onLinkTargetChange","handleSave","stopPropagation","selection","Range","isCollapsed","parentPath","Editor","parent","focus","Transforms","select","editLink","handleClose","removeLink","useEffect","current","inputNotDirty","_jsxs","Popover","Root","open","_jsx","Trigger","ref","tag","href","onClick","color","Content","onPointerDownOutside","Flex","padding","direction","gap","Field","width","alignItems","Label","id","defaultMessage","Input","name","placeholder","onChange","justifyContent","variant","disabled","Boolean","Link","isLinkNode","element","linkBlocks","renderElement","matchNode","node","type","isInBlocksSelector"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Quote.js","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.tsx"],"sourcesContent":["import { Quotes } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { type BlocksStore } from '../BlocksEditor';\nimport { baseHandleConvert } from '../utils/conversions';\nimport { pressEnterTwiceToExit } from '../utils/enterKey';\nimport { type Block } from '../utils/types';\n\nconst Blockquote = styled.blockquote.attrs({ role: 'blockquote' })`\n font-weight: ${({ theme }) => theme.fontWeights.regular};\n border-left: ${({ theme }) => `${theme.spaces[1]} solid ${theme.colors.neutral200}`};\n padding: ${({ theme }) => theme.spaces[2]} ${({ theme }) => theme.spaces[4]};\n color: ${({ theme }) => theme.colors.neutral600};\n`;\n\nconst quoteBlocks: Pick<BlocksStore, 'quote'> = {\n quote: {\n renderElement: (props) => (\n // The div is needed to make sure the padding bottom from BlocksContent is applied properly\n // when the quote is the last block in the editor\n <div>\n <Blockquote {...props.attributes}>{props.children}</Blockquote>\n </div>\n ),\n icon: Quotes,\n label: {\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n },\n matchNode: (node) => node.type === 'quote',\n isInBlocksSelector: true,\n handleConvert(editor) {\n baseHandleConvert<Block<'quote'>>(editor, { type: 'quote' });\n },\n handleEnterKey(editor) {\n pressEnterTwiceToExit(editor);\n },\n snippets: ['>'],\n },\n};\n\nexport { quoteBlocks };\n"],"names":["Blockquote","styled","blockquote","attrs","role","theme","fontWeights","regular","spaces","colors","neutral200","neutral600","quoteBlocks","quote","renderElement","props","_jsx","div","attributes","children","icon","Quotes","label","id","defaultMessage","matchNode","node","type","isInBlocksSelector","handleConvert","editor","baseHandleConvert","handleEnterKey","pressEnterTwiceToExit","snippets"],"mappings":";;;;;;;;AAQA,MAAMA,UAAaC,GAAAA,uBAAAA,CAAOC,UAAU,CAACC,KAAK,CAAC;IAAEC,IAAM,EAAA;AAAa,CAAA,CAAE;eACnD,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,WAAW,CAACC,OAAO,CAAC;eAC3C,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAK,CAAC,EAAEA,MAAMG,MAAM,CAAC,EAAE,CAAC,OAAO,EAAEH,KAAMI,CAAAA,MAAM,CAACC,UAAU,CAAC,CAAC,CAAC;WAC3E,EAAE,CAAC,EAAEL,KAAK,EAAE,GAAKA,KAAMG,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAC,CAAC,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAMG,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;SACrE,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAACE,UAAU,CAAC;AAClD,CAAC;AAED,MAAMC,WAA0C,GAAA;IAC9CC,KAAO,EAAA;QACLC,aAAe,EAAA,CAACC;;0BAGdC,cAACC,CAAAA,KAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAD,cAAChB,CAAAA,UAAAA,EAAAA;AAAY,oBAAA,GAAGe,MAAMG,UAAU;AAAGH,oBAAAA,QAAAA,EAAAA,KAAAA,CAAMI;;;QAG7CC,IAAMC,EAAAA,YAAAA;QACNC,KAAO,EAAA;YACLC,EAAI,EAAA,gCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;AACAC,QAAAA,SAAAA,EAAW,CAACC,IAAAA,GAASA,IAAKC,CAAAA,IAAI,KAAK,OAAA;QACnCC,kBAAoB,EAAA,IAAA;AACpBC,QAAAA,aAAAA,CAAAA,CAAcC,MAAM,EAAA;AAClBC,YAAAA,6BAAAA,CAAkCD,MAAQ,EAAA;gBAAEH,IAAM,EAAA;AAAQ,aAAA,CAAA;AAC5D,SAAA;AACAK,QAAAA,cAAAA,CAAAA,CAAeF,MAAM,EAAA;YACnBG,8BAAsBH,CAAAA,MAAAA,CAAAA;AACxB,SAAA;QACAI,QAAU,EAAA;AAAC,YAAA;AAAI;AACjB;AACF;;;;"}
1
+ {"version":3,"file":"Quote.js","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.tsx"],"sourcesContent":["import { Quotes } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { type BlocksStore } from '../BlocksEditor';\nimport { baseHandleConvert } from '../utils/conversions';\nimport { pressEnterTwiceToExit } from '../utils/enterKey';\nimport { type Block } from '../utils/types';\n\nconst Blockquote = styled.blockquote.attrs({ role: 'blockquote' })`\n font-weight: ${({ theme }) => theme.fontWeights.regular};\n border-left: ${({ theme }) => `${theme.spaces[1]} solid ${theme.colors.neutral200}`};\n padding: ${({ theme }) => theme.spaces[2]} ${({ theme }) => theme.spaces[4]};\n color: ${({ theme }) => theme.colors.neutral600};\n`;\n\nconst quoteBlocks: Pick<BlocksStore, 'quote'> = {\n quote: {\n renderElement: (props) => (\n // The div is needed to make sure the padding bottom from BlocksContent is applied properly\n // when the quote is the last block in the editor\n <div>\n <Blockquote {...props.attributes}>{props.children}</Blockquote>\n </div>\n ),\n icon: Quotes,\n label: {\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n },\n matchNode: (node) => node.type === 'quote',\n isInBlocksSelector: true,\n handleConvert(editor) {\n baseHandleConvert<Block<'quote'>>(editor, { type: 'quote' });\n },\n handleEnterKey(editor) {\n pressEnterTwiceToExit(editor);\n },\n snippets: ['>'],\n },\n};\n\nexport { quoteBlocks };\n"],"names":["Blockquote","styled","blockquote","attrs","role","theme","fontWeights","regular","spaces","colors","neutral200","neutral600","quoteBlocks","quote","renderElement","props","_jsx","div","attributes","children","icon","Quotes","label","id","defaultMessage","matchNode","node","type","isInBlocksSelector","handleConvert","editor","baseHandleConvert","handleEnterKey","pressEnterTwiceToExit","snippets"],"mappings":";;;;;;;;AAQA,MAAMA,UAAaC,GAAAA,uBAAAA,CAAOC,UAAU,CAACC,KAAK,CAAC;IAAEC,IAAM,EAAA;AAAa,CAAA,CAAE;eACnD,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,WAAW,CAACC,OAAO,CAAC;AAC3C,eAAA,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAK,CAAA,EAAGA,MAAMG,MAAM,CAAC,CAAE,CAAA,CAAC,OAAO,EAAEH,KAAAA,CAAMI,MAAM,CAACC,UAAU,EAAE,CAAC;WAC3E,EAAE,CAAC,EAAEL,KAAK,EAAE,GAAKA,KAAMG,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAC,CAAC,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAMG,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;SACrE,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAACE,UAAU,CAAC;AAClD,CAAC;AAED,MAAMC,WAA0C,GAAA;IAC9CC,KAAO,EAAA;QACLC,aAAe,EAAA,CAACC;;0BAGdC,cAACC,CAAAA,KAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAD,cAAChB,CAAAA,UAAAA,EAAAA;AAAY,oBAAA,GAAGe,MAAMG,UAAU;AAAGH,oBAAAA,QAAAA,EAAAA,KAAAA,CAAMI;;;QAG7CC,IAAMC,EAAAA,YAAAA;QACNC,KAAO,EAAA;YACLC,EAAI,EAAA,gCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;AACAC,QAAAA,SAAAA,EAAW,CAACC,IAAAA,GAASA,IAAKC,CAAAA,IAAI,KAAK,OAAA;QACnCC,kBAAoB,EAAA,IAAA;AACpBC,QAAAA,aAAAA,CAAAA,CAAcC,MAAM,EAAA;AAClBC,YAAAA,6BAAAA,CAAkCD,MAAQ,EAAA;gBAAEH,IAAM,EAAA;AAAQ,aAAA,CAAA;AAC5D,SAAA;AACAK,QAAAA,cAAAA,CAAAA,CAAeF,MAAM,EAAA;YACnBG,8BAAsBH,CAAAA,MAAAA,CAAAA;AACxB,SAAA;QACAI,QAAU,EAAA;AAAC,YAAA;AAAI;AACjB;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Quote.mjs","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.tsx"],"sourcesContent":["import { Quotes } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { type BlocksStore } from '../BlocksEditor';\nimport { baseHandleConvert } from '../utils/conversions';\nimport { pressEnterTwiceToExit } from '../utils/enterKey';\nimport { type Block } from '../utils/types';\n\nconst Blockquote = styled.blockquote.attrs({ role: 'blockquote' })`\n font-weight: ${({ theme }) => theme.fontWeights.regular};\n border-left: ${({ theme }) => `${theme.spaces[1]} solid ${theme.colors.neutral200}`};\n padding: ${({ theme }) => theme.spaces[2]} ${({ theme }) => theme.spaces[4]};\n color: ${({ theme }) => theme.colors.neutral600};\n`;\n\nconst quoteBlocks: Pick<BlocksStore, 'quote'> = {\n quote: {\n renderElement: (props) => (\n // The div is needed to make sure the padding bottom from BlocksContent is applied properly\n // when the quote is the last block in the editor\n <div>\n <Blockquote {...props.attributes}>{props.children}</Blockquote>\n </div>\n ),\n icon: Quotes,\n label: {\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n },\n matchNode: (node) => node.type === 'quote',\n isInBlocksSelector: true,\n handleConvert(editor) {\n baseHandleConvert<Block<'quote'>>(editor, { type: 'quote' });\n },\n handleEnterKey(editor) {\n pressEnterTwiceToExit(editor);\n },\n snippets: ['>'],\n },\n};\n\nexport { quoteBlocks };\n"],"names":["Blockquote","styled","blockquote","attrs","role","theme","fontWeights","regular","spaces","colors","neutral200","neutral600","quoteBlocks","quote","renderElement","props","_jsx","div","attributes","children","icon","Quotes","label","id","defaultMessage","matchNode","node","type","isInBlocksSelector","handleConvert","editor","baseHandleConvert","handleEnterKey","pressEnterTwiceToExit","snippets"],"mappings":";;;;;;AAQA,MAAMA,UAAaC,GAAAA,MAAAA,CAAOC,UAAU,CAACC,KAAK,CAAC;IAAEC,IAAM,EAAA;AAAa,CAAA,CAAE;eACnD,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,WAAW,CAACC,OAAO,CAAC;eAC3C,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAK,CAAC,EAAEA,MAAMG,MAAM,CAAC,EAAE,CAAC,OAAO,EAAEH,KAAMI,CAAAA,MAAM,CAACC,UAAU,CAAC,CAAC,CAAC;WAC3E,EAAE,CAAC,EAAEL,KAAK,EAAE,GAAKA,KAAMG,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAC,CAAC,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAMG,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;SACrE,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAACE,UAAU,CAAC;AAClD,CAAC;AAED,MAAMC,WAA0C,GAAA;IAC9CC,KAAO,EAAA;QACLC,aAAe,EAAA,CAACC;;0BAGdC,GAACC,CAAAA,KAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAD,GAAChB,CAAAA,UAAAA,EAAAA;AAAY,oBAAA,GAAGe,MAAMG,UAAU;AAAGH,oBAAAA,QAAAA,EAAAA,KAAAA,CAAMI;;;QAG7CC,IAAMC,EAAAA,MAAAA;QACNC,KAAO,EAAA;YACLC,EAAI,EAAA,gCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;AACAC,QAAAA,SAAAA,EAAW,CAACC,IAAAA,GAASA,IAAKC,CAAAA,IAAI,KAAK,OAAA;QACnCC,kBAAoB,EAAA,IAAA;AACpBC,QAAAA,aAAAA,CAAAA,CAAcC,MAAM,EAAA;AAClBC,YAAAA,iBAAAA,CAAkCD,MAAQ,EAAA;gBAAEH,IAAM,EAAA;AAAQ,aAAA,CAAA;AAC5D,SAAA;AACAK,QAAAA,cAAAA,CAAAA,CAAeF,MAAM,EAAA;YACnBG,qBAAsBH,CAAAA,MAAAA,CAAAA;AACxB,SAAA;QACAI,QAAU,EAAA;AAAC,YAAA;AAAI;AACjB;AACF;;;;"}
1
+ {"version":3,"file":"Quote.mjs","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.tsx"],"sourcesContent":["import { Quotes } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { type BlocksStore } from '../BlocksEditor';\nimport { baseHandleConvert } from '../utils/conversions';\nimport { pressEnterTwiceToExit } from '../utils/enterKey';\nimport { type Block } from '../utils/types';\n\nconst Blockquote = styled.blockquote.attrs({ role: 'blockquote' })`\n font-weight: ${({ theme }) => theme.fontWeights.regular};\n border-left: ${({ theme }) => `${theme.spaces[1]} solid ${theme.colors.neutral200}`};\n padding: ${({ theme }) => theme.spaces[2]} ${({ theme }) => theme.spaces[4]};\n color: ${({ theme }) => theme.colors.neutral600};\n`;\n\nconst quoteBlocks: Pick<BlocksStore, 'quote'> = {\n quote: {\n renderElement: (props) => (\n // The div is needed to make sure the padding bottom from BlocksContent is applied properly\n // when the quote is the last block in the editor\n <div>\n <Blockquote {...props.attributes}>{props.children}</Blockquote>\n </div>\n ),\n icon: Quotes,\n label: {\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n },\n matchNode: (node) => node.type === 'quote',\n isInBlocksSelector: true,\n handleConvert(editor) {\n baseHandleConvert<Block<'quote'>>(editor, { type: 'quote' });\n },\n handleEnterKey(editor) {\n pressEnterTwiceToExit(editor);\n },\n snippets: ['>'],\n },\n};\n\nexport { quoteBlocks };\n"],"names":["Blockquote","styled","blockquote","attrs","role","theme","fontWeights","regular","spaces","colors","neutral200","neutral600","quoteBlocks","quote","renderElement","props","_jsx","div","attributes","children","icon","Quotes","label","id","defaultMessage","matchNode","node","type","isInBlocksSelector","handleConvert","editor","baseHandleConvert","handleEnterKey","pressEnterTwiceToExit","snippets"],"mappings":";;;;;;AAQA,MAAMA,UAAaC,GAAAA,MAAAA,CAAOC,UAAU,CAACC,KAAK,CAAC;IAAEC,IAAM,EAAA;AAAa,CAAA,CAAE;eACnD,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,WAAW,CAACC,OAAO,CAAC;AAC3C,eAAA,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAK,CAAA,EAAGA,MAAMG,MAAM,CAAC,CAAE,CAAA,CAAC,OAAO,EAAEH,KAAAA,CAAMI,MAAM,CAACC,UAAU,EAAE,CAAC;WAC3E,EAAE,CAAC,EAAEL,KAAK,EAAE,GAAKA,KAAMG,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAC,CAAC,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAMG,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;SACrE,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAACE,UAAU,CAAC;AAClD,CAAC;AAED,MAAMC,WAA0C,GAAA;IAC9CC,KAAO,EAAA;QACLC,aAAe,EAAA,CAACC;;0BAGdC,GAACC,CAAAA,KAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAD,GAAChB,CAAAA,UAAAA,EAAAA;AAAY,oBAAA,GAAGe,MAAMG,UAAU;AAAGH,oBAAAA,QAAAA,EAAAA,KAAAA,CAAMI;;;QAG7CC,IAAMC,EAAAA,MAAAA;QACNC,KAAO,EAAA;YACLC,EAAI,EAAA,gCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;AACAC,QAAAA,SAAAA,EAAW,CAACC,IAAAA,GAASA,IAAKC,CAAAA,IAAI,KAAK,OAAA;QACnCC,kBAAoB,EAAA,IAAA;AACpBC,QAAAA,aAAAA,CAAAA,CAAcC,MAAM,EAAA;AAClBC,YAAAA,iBAAAA,CAAkCD,MAAQ,EAAA;gBAAEH,IAAM,EAAA;AAAQ,aAAA,CAAA;AAC5D,SAAA;AACAK,QAAAA,cAAAA,CAAAA,CAAeF,MAAM,EAAA;YACnBG,qBAAsBH,CAAAA,MAAAA,CAAAA;AACxB,SAAA;QACAI,QAAU,EAAA;AAAC,YAAA;AAAI;AACjB;AACF;;;;"}
@@ -300,6 +300,7 @@ const baseRenderElement = ({ props, blocks, editor, setDragDirection, dragDirect
300
300
  children: block.renderElement(props)
301
301
  });
302
302
  };
303
+ const dragNoop = ()=>true;
303
304
  const BlocksContent = ({ placeholder, ariaLabelId })=>{
304
305
  const { editor, disabled, blocks, modifiers, setLiveText, isExpandedMode } = BlocksEditor.useBlocksEditorContext('BlocksContent');
305
306
  const blocksRef = React__namespace.useRef(null);
@@ -474,24 +475,24 @@ const BlocksContent = ({ placeholder, ariaLabelId })=>{
474
475
  * thats shifting layout for us when there is a overflowY:scroll on the viewport.
475
476
  * We are overriding it to check if the selection is not fully within the visible area of the editor,
476
477
  * we use scrollBy one line to the bottom
477
- */ const handleScrollSelectionIntoView = ()=>{
478
- if (!editor.selection) return;
479
- const domRange = slateReact.ReactEditor.toDOMRange(editor, editor.selection);
480
- const domRect = domRange.getBoundingClientRect();
481
- const blocksInput = blocksRef.current;
482
- if (!blocksInput) {
478
+ */ const handleScrollSelectionIntoView = React__namespace.useCallback(()=>{
479
+ if (!editor.selection || !blocksRef.current) {
483
480
  return;
484
481
  }
485
- const editorRect = blocksInput.getBoundingClientRect();
482
+ const domRange = slateReact.ReactEditor.toDOMRange(editor, editor.selection);
483
+ const domRect = domRange.getBoundingClientRect();
484
+ const editorRect = blocksRef.current.getBoundingClientRect();
486
485
  // Check if the selection is not fully within the visible area of the editor
487
486
  if (domRect.top < editorRect.top || domRect.bottom > editorRect.bottom) {
488
487
  // Scroll by one line to the bottom
489
- blocksInput.scrollBy({
488
+ blocksRef.current.scrollBy({
490
489
  top: 28,
491
490
  behavior: 'smooth'
492
491
  });
493
492
  }
494
- };
493
+ }, [
494
+ editor
495
+ ]);
495
496
  return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
496
497
  ref: blocksRef,
497
498
  grow: 1,
@@ -516,12 +517,8 @@ const BlocksContent = ({ placeholder, ariaLabelId })=>{
516
517
  onKeyDown: handleKeyDown,
517
518
  scrollSelectionIntoView: handleScrollSelectionIntoView,
518
519
  // As we have our own handler to drag and drop the elements returing true will skip slate's own event handler
519
- onDrop: ()=>{
520
- return true;
521
- },
522
- onDragStart: ()=>{
523
- return true;
524
- }
520
+ onDrop: dragNoop,
521
+ onDragStart: dragNoop
525
522
  }),
526
523
  modalElement
527
524
  ]