@strapi/content-manager 5.60.0 → 5.61.0

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 (256) hide show
  1. package/dist/admin/constants/customOrder.js +14 -0
  2. package/dist/admin/constants/customOrder.js.map +1 -0
  3. package/dist/admin/constants/customOrder.mjs +10 -0
  4. package/dist/admin/constants/customOrder.mjs.map +1 -0
  5. package/dist/admin/hooks/useDocument.js +22 -11
  6. package/dist/admin/hooks/useDocument.js.map +1 -1
  7. package/dist/admin/hooks/useDocument.mjs +22 -11
  8. package/dist/admin/hooks/useDocument.mjs.map +1 -1
  9. package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
  10. package/dist/admin/hooks/useDocumentLayout.mjs.map +1 -1
  11. package/dist/admin/hooks/useHasBeenNearViewport.js +70 -0
  12. package/dist/admin/hooks/useHasBeenNearViewport.js.map +1 -0
  13. package/dist/admin/hooks/useHasBeenNearViewport.mjs +46 -0
  14. package/dist/admin/hooks/useHasBeenNearViewport.mjs.map +1 -0
  15. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js +102 -32
  16. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js.map +1 -1
  17. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs +104 -35
  18. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs.map +1 -1
  19. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js +20 -17
  20. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js.map +1 -1
  21. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs +20 -17
  22. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs.map +1 -1
  23. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +15 -1
  24. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  25. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +17 -3
  26. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  27. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.js +21 -0
  28. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.js.map +1 -1
  29. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.mjs +22 -1
  30. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.mjs.map +1 -1
  31. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +4 -7
  32. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  33. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +4 -7
  34. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  35. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +46 -10
  36. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +47 -11
  38. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormLayout.js +201 -51
  40. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormLayout.mjs +202 -53
  42. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  43. package/dist/admin/pages/ListConfiguration/components/Settings.js +31 -2
  44. package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
  45. package/dist/admin/pages/ListConfiguration/components/Settings.mjs +31 -2
  46. package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
  47. package/dist/admin/pages/ListView/ListViewPage.js +196 -132
  48. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  49. package/dist/admin/pages/ListView/ListViewPage.mjs +196 -132
  50. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  51. package/dist/admin/pages/ListView/components/CustomOrder.js +571 -0
  52. package/dist/admin/pages/ListView/components/CustomOrder.js.map +1 -0
  53. package/dist/admin/pages/ListView/components/CustomOrder.mjs +546 -0
  54. package/dist/admin/pages/ListView/components/CustomOrder.mjs.map +1 -0
  55. package/dist/admin/pages/ListView/components/TableActions.js +4 -1
  56. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  57. package/dist/admin/pages/ListView/components/TableActions.mjs +4 -1
  58. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  59. package/dist/admin/services/documents.js +22 -1
  60. package/dist/admin/services/documents.js.map +1 -1
  61. package/dist/admin/services/documents.mjs +21 -2
  62. package/dist/admin/services/documents.mjs.map +1 -1
  63. package/dist/admin/src/constants/customOrder.d.ts +8 -0
  64. package/dist/admin/src/exports.d.ts +1 -1
  65. package/dist/admin/src/hooks/useDocument.d.ts +4 -0
  66. package/dist/admin/src/hooks/useDocumentLayout.d.ts +6 -2
  67. package/dist/admin/src/hooks/useHasBeenNearViewport.d.ts +13 -0
  68. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.d.ts +13 -1
  69. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +11 -1
  70. package/dist/admin/src/pages/ListView/components/CustomOrder.d.ts +72 -0
  71. package/dist/admin/src/services/documents.d.ts +10 -2
  72. package/dist/admin/translations/en.json.js +9 -0
  73. package/dist/admin/translations/en.json.js.map +1 -1
  74. package/dist/admin/translations/en.json.mjs +9 -0
  75. package/dist/admin/translations/en.json.mjs.map +1 -1
  76. package/dist/server/audit-logs.js +36 -0
  77. package/dist/server/audit-logs.js.map +1 -0
  78. package/dist/server/audit-logs.mjs +33 -0
  79. package/dist/server/audit-logs.mjs.map +1 -0
  80. package/dist/server/bootstrap.js +8 -0
  81. package/dist/server/bootstrap.js.map +1 -1
  82. package/dist/server/bootstrap.mjs +8 -0
  83. package/dist/server/bootstrap.mjs.map +1 -1
  84. package/dist/server/controllers/collection-types.js +8 -0
  85. package/dist/server/controllers/collection-types.js.map +1 -1
  86. package/dist/server/controllers/collection-types.mjs +8 -0
  87. package/dist/server/controllers/collection-types.mjs.map +1 -1
  88. package/dist/server/controllers/content-types.js +15 -0
  89. package/dist/server/controllers/content-types.js.map +1 -1
  90. package/dist/server/controllers/content-types.mjs +16 -1
  91. package/dist/server/controllers/content-types.mjs.map +1 -1
  92. package/dist/server/controllers/index.js +3 -1
  93. package/dist/server/controllers/index.js.map +1 -1
  94. package/dist/server/controllers/index.mjs +2 -0
  95. package/dist/server/controllers/index.mjs.map +1 -1
  96. package/dist/server/controllers/relations.js +5 -1
  97. package/dist/server/controllers/relations.js.map +1 -1
  98. package/dist/server/controllers/relations.mjs +5 -1
  99. package/dist/server/controllers/relations.mjs.map +1 -1
  100. package/dist/server/controllers/single-types.js +10 -1
  101. package/dist/server/controllers/single-types.js.map +1 -1
  102. package/dist/server/controllers/single-types.mjs +10 -1
  103. package/dist/server/controllers/single-types.mjs.map +1 -1
  104. package/dist/server/controllers/validation/model-configuration.js +2 -1
  105. package/dist/server/controllers/validation/model-configuration.js.map +1 -1
  106. package/dist/server/controllers/validation/model-configuration.mjs +2 -1
  107. package/dist/server/controllers/validation/model-configuration.mjs.map +1 -1
  108. package/dist/server/custom-order/constants.js +21 -0
  109. package/dist/server/custom-order/constants.js.map +1 -0
  110. package/dist/server/custom-order/constants.mjs +17 -0
  111. package/dist/server/custom-order/constants.mjs.map +1 -0
  112. package/dist/server/custom-order/controllers/custom-order.js +77 -0
  113. package/dist/server/custom-order/controllers/custom-order.js.map +1 -0
  114. package/dist/server/custom-order/controllers/custom-order.mjs +75 -0
  115. package/dist/server/custom-order/controllers/custom-order.mjs.map +1 -0
  116. package/dist/server/custom-order/controllers/index.js +10 -0
  117. package/dist/server/custom-order/controllers/index.js.map +1 -0
  118. package/dist/server/custom-order/controllers/index.mjs +8 -0
  119. package/dist/server/custom-order/controllers/index.mjs.map +1 -0
  120. package/dist/server/custom-order/index.js +71 -0
  121. package/dist/server/custom-order/index.js.map +1 -0
  122. package/dist/server/custom-order/index.mjs +69 -0
  123. package/dist/server/custom-order/index.mjs.map +1 -0
  124. package/dist/server/custom-order/routes/custom-order.js +38 -0
  125. package/dist/server/custom-order/routes/custom-order.js.map +1 -0
  126. package/dist/server/custom-order/routes/custom-order.mjs +36 -0
  127. package/dist/server/custom-order/routes/custom-order.mjs.map +1 -0
  128. package/dist/server/custom-order/routes/index.js +13 -0
  129. package/dist/server/custom-order/routes/index.js.map +1 -0
  130. package/dist/server/custom-order/routes/index.mjs +11 -0
  131. package/dist/server/custom-order/routes/index.mjs.map +1 -0
  132. package/dist/server/custom-order/services/custom-order.js +286 -0
  133. package/dist/server/custom-order/services/custom-order.js.map +1 -0
  134. package/dist/server/custom-order/services/custom-order.mjs +284 -0
  135. package/dist/server/custom-order/services/custom-order.mjs.map +1 -0
  136. package/dist/server/custom-order/services/document-middleware.js +83 -0
  137. package/dist/server/custom-order/services/document-middleware.js.map +1 -0
  138. package/dist/server/custom-order/services/document-middleware.mjs +81 -0
  139. package/dist/server/custom-order/services/document-middleware.mjs.map +1 -0
  140. package/dist/server/custom-order/services/index.js +10 -0
  141. package/dist/server/custom-order/services/index.js.map +1 -0
  142. package/dist/server/custom-order/services/index.mjs +8 -0
  143. package/dist/server/custom-order/services/index.mjs.map +1 -0
  144. package/dist/server/custom-order/services/utils.js +152 -0
  145. package/dist/server/custom-order/services/utils.js.map +1 -0
  146. package/dist/server/custom-order/services/utils.mjs +148 -0
  147. package/dist/server/custom-order/services/utils.mjs.map +1 -0
  148. package/dist/server/custom-order/utils.js +13 -0
  149. package/dist/server/custom-order/utils.js.map +1 -0
  150. package/dist/server/custom-order/utils.mjs +10 -0
  151. package/dist/server/custom-order/utils.mjs.map +1 -0
  152. package/dist/server/history/constants.js +2 -1
  153. package/dist/server/history/constants.js.map +1 -1
  154. package/dist/server/history/constants.mjs +2 -1
  155. package/dist/server/history/constants.mjs.map +1 -1
  156. package/dist/server/history/controllers/history-version.js +6 -2
  157. package/dist/server/history/controllers/history-version.js.map +1 -1
  158. package/dist/server/history/controllers/history-version.mjs +6 -2
  159. package/dist/server/history/controllers/history-version.mjs.map +1 -1
  160. package/dist/server/history/services/history.js +23 -6
  161. package/dist/server/history/services/history.js.map +1 -1
  162. package/dist/server/history/services/history.mjs +24 -7
  163. package/dist/server/history/services/history.mjs.map +1 -1
  164. package/dist/server/history/services/lifecycles.js +2 -16
  165. package/dist/server/history/services/lifecycles.js.map +1 -1
  166. package/dist/server/history/services/lifecycles.mjs +2 -16
  167. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  168. package/dist/server/register.js +4 -0
  169. package/dist/server/register.js.map +1 -1
  170. package/dist/server/register.mjs +4 -0
  171. package/dist/server/register.mjs.map +1 -1
  172. package/dist/server/routes/index.js +3 -1
  173. package/dist/server/routes/index.js.map +1 -1
  174. package/dist/server/routes/index.mjs +2 -0
  175. package/dist/server/routes/index.mjs.map +1 -1
  176. package/dist/server/services/content-types.js +2 -2
  177. package/dist/server/services/content-types.js.map +1 -1
  178. package/dist/server/services/content-types.mjs +2 -2
  179. package/dist/server/services/content-types.mjs.map +1 -1
  180. package/dist/server/services/document-manager.js +13 -0
  181. package/dist/server/services/document-manager.js.map +1 -1
  182. package/dist/server/services/document-manager.mjs +14 -1
  183. package/dist/server/services/document-manager.mjs.map +1 -1
  184. package/dist/server/services/index.js +3 -1
  185. package/dist/server/services/index.js.map +1 -1
  186. package/dist/server/services/index.mjs +2 -0
  187. package/dist/server/services/index.mjs.map +1 -1
  188. package/dist/server/services/utils/configuration/settings.js +2 -1
  189. package/dist/server/services/utils/configuration/settings.js.map +1 -1
  190. package/dist/server/services/utils/configuration/settings.mjs +2 -1
  191. package/dist/server/services/utils/configuration/settings.mjs.map +1 -1
  192. package/dist/server/src/audit-logs.d.ts +40 -0
  193. package/dist/server/src/audit-logs.d.ts.map +1 -0
  194. package/dist/server/src/bootstrap.d.ts.map +1 -1
  195. package/dist/server/src/controllers/collection-types.d.ts +1 -1
  196. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  197. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  198. package/dist/server/src/controllers/index.d.ts +21 -3
  199. package/dist/server/src/controllers/index.d.ts.map +1 -1
  200. package/dist/server/src/controllers/relations.d.ts +19 -1
  201. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  202. package/dist/server/src/controllers/single-types.d.ts +1 -1
  203. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  204. package/dist/server/src/custom-order/constants.d.ts +18 -0
  205. package/dist/server/src/custom-order/constants.d.ts.map +1 -0
  206. package/dist/server/src/custom-order/controllers/custom-order.d.ts +8 -0
  207. package/dist/server/src/custom-order/controllers/custom-order.d.ts.map +1 -0
  208. package/dist/server/src/custom-order/controllers/index.d.ts +3 -0
  209. package/dist/server/src/custom-order/controllers/index.d.ts.map +1 -0
  210. package/dist/server/src/custom-order/index.d.ts +8 -0
  211. package/dist/server/src/custom-order/index.d.ts.map +1 -0
  212. package/dist/server/src/custom-order/routes/custom-order.d.ts +4 -0
  213. package/dist/server/src/custom-order/routes/custom-order.d.ts.map +1 -0
  214. package/dist/server/src/custom-order/routes/index.d.ts +10 -0
  215. package/dist/server/src/custom-order/routes/index.d.ts.map +1 -0
  216. package/dist/server/src/custom-order/services/custom-order.d.ts +43 -0
  217. package/dist/server/src/custom-order/services/custom-order.d.ts.map +1 -0
  218. package/dist/server/src/custom-order/services/document-middleware.d.ts +16 -0
  219. package/dist/server/src/custom-order/services/document-middleware.d.ts.map +1 -0
  220. package/dist/server/src/custom-order/services/index.d.ts +24 -0
  221. package/dist/server/src/custom-order/services/index.d.ts.map +1 -0
  222. package/dist/server/src/custom-order/services/utils.d.ts +34 -0
  223. package/dist/server/src/custom-order/services/utils.d.ts.map +1 -0
  224. package/dist/server/src/custom-order/utils.d.ts +6 -0
  225. package/dist/server/src/custom-order/utils.d.ts.map +1 -0
  226. package/dist/server/src/history/constants.d.ts.map +1 -1
  227. package/dist/server/src/history/controllers/history-version.d.ts.map +1 -1
  228. package/dist/server/src/history/services/history.d.ts.map +1 -1
  229. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  230. package/dist/server/src/index.d.ts +22 -6
  231. package/dist/server/src/index.d.ts.map +1 -1
  232. package/dist/server/src/register.d.ts.map +1 -1
  233. package/dist/server/src/routes/index.d.ts.map +1 -1
  234. package/dist/server/src/services/content-types.d.ts +1 -3
  235. package/dist/server/src/services/content-types.d.ts.map +1 -1
  236. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  237. package/dist/server/src/services/index.d.ts +1 -3
  238. package/dist/server/src/services/index.d.ts.map +1 -1
  239. package/dist/server/src/services/utils/configuration/settings.d.ts.map +1 -1
  240. package/dist/shared/contracts/content-types.d.ts +5 -0
  241. package/dist/shared/contracts/content-types.d.ts.map +1 -1
  242. package/dist/shared/contracts/custom-order.d.ts +33 -0
  243. package/dist/shared/contracts/custom-order.d.ts.map +1 -0
  244. package/dist/shared/contracts/custom-order.js +3 -0
  245. package/dist/shared/contracts/custom-order.js.map +1 -0
  246. package/dist/shared/contracts/custom-order.mjs +2 -0
  247. package/dist/shared/contracts/custom-order.mjs.map +1 -0
  248. package/dist/shared/contracts/history-versions.d.ts +0 -1
  249. package/dist/shared/contracts/history-versions.d.ts.map +1 -1
  250. package/dist/shared/contracts/index.d.ts +1 -0
  251. package/dist/shared/contracts/index.d.ts.map +1 -1
  252. package/dist/shared/contracts/index.js +2 -0
  253. package/dist/shared/contracts/index.js.map +1 -1
  254. package/dist/shared/contracts/index.mjs +2 -0
  255. package/dist/shared/contracts/index.mjs.map +1 -1
  256. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"List.mjs","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Typography } from '@strapi/design-system';\nimport { BulletList, NumberList } from '@strapi/icons';\nimport { Schema } from '@strapi/types';\nimport { type Text, Editor, Node, Transforms, Path, Element } from 'slate';\nimport { type RenderElementProps, ReactEditor } from 'slate-react';\nimport { styled, type CSSProperties, css } from 'styled-components';\n\nimport { type BlocksStore } from '../BlocksEditor';\nimport { baseHandleConvert } from '../utils/conversions';\nimport { type Block } from '../utils/types';\n\nconst listStyle = css`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.spaces[2]};\n margin-inline-start: ${({ theme }) => theme.spaces[0]};\n margin-inline-end: ${({ theme }) => theme.spaces[0]};\n padding-inline-start: ${({ theme }) => theme.spaces[2]};\n\n ol,\n ul {\n margin-block-start: ${({ theme }) => theme.spaces[0]};\n margin-block-end: ${({ theme }) => theme.spaces[0]};\n }\n\n li {\n margin-inline-start: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nconst Orderedlist = styled.ol<{ $listStyleType: CSSProperties['listStyleType'] }>`\n list-style-type: ${(props) => props.$listStyleType};\n ${listStyle}\n`;\n\nconst Unorderedlist = styled.ul<{ $listStyleType: CSSProperties['listStyleType'] }>`\n list-style-type: ${(props) => props.$listStyleType};\n ${listStyle}\n`;\n\nconst orderedStyles = ['decimal', 'lower-alpha', 'upper-roman'];\nconst unorderedStyles = ['disc', 'circle', 'square'];\n\nconst isListNode = (element: Element): element is Schema.Attribute.ListBlockNode => {\n return element.type === 'list';\n};\n\nconst List = ({ attributes, children, element }: RenderElementProps) => {\n if (!isListNode(element)) {\n return null;\n }\n\n // Decide the subsequent style by referencing the given styles according to the format,\n // allowing for infinite nested lists\n const listStyles = element.format === 'ordered' ? orderedStyles : unorderedStyles;\n const nextIndex = (element.indentLevel || 0) % listStyles!.length;\n const listStyleType = listStyles![nextIndex];\n\n if (element.format === 'ordered') {\n return (\n <Orderedlist $listStyleType={listStyleType} {...attributes}>\n {children}\n </Orderedlist>\n );\n }\n\n return (\n <Unorderedlist $listStyleType={listStyleType} {...attributes}>\n {children}\n </Unorderedlist>\n );\n};\n\nconst replaceListWithEmptyBlock = (editor: Editor, currentListPath: Path) => {\n // Delete the empty list\n Transforms.removeNodes(editor, { at: currentListPath });\n\n if (currentListPath[0] === 0) {\n // If the list was the only (or first) block element then insert empty paragraph as editor needs default value\n Transforms.insertNodes(\n editor,\n {\n type: 'paragraph',\n children: [{ type: 'text', text: '' }],\n },\n { at: currentListPath }\n );\n Transforms.select(editor, currentListPath);\n }\n};\n\nconst isText = (node: unknown): node is Text => {\n return Node.isNode(node) && !Editor.isEditor(node) && node.type === 'text';\n};\n\n/**\n * Common handler for the backspace event on ordered and unordered lists\n */\nconst handleBackspaceKeyOnList = (editor: Editor, event: React.KeyboardEvent<HTMLElement>) => {\n if (!editor.selection) return;\n\n const [currentListItem, currentListItemPath] = Editor.parent(editor, editor.selection.anchor);\n const [currentList, currentListPath] = Editor.parent(editor, currentListItemPath);\n const isListEmpty =\n currentList.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isListItemEmpty =\n currentListItem.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isFocusAtTheBeginningOfAChild =\n editor.selection.focus.offset === 0 && editor.selection.focus.path.at(-2) === 0;\n\n if (isListEmpty) {\n const parentListEntry = Editor.above(editor, {\n at: currentListPath,\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n });\n if (!parentListEntry) {\n event.preventDefault();\n replaceListWithEmptyBlock(editor, currentListPath);\n }\n } else if (isFocusAtTheBeginningOfAChild) {\n // If the focus is at the beginning of a child node we need to replace it with a paragraph\n Transforms.liftNodes(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list-item',\n });\n Transforms.setNodes(editor, { type: 'paragraph' });\n } else if (isListItemEmpty) {\n const previousEntry = Editor.previous(editor, {\n at: currentListItemPath,\n });\n const nextEntry = Editor.next(editor, {\n at: currentListItemPath,\n });\n\n if (previousEntry && nextEntry) {\n // If previous and next nodes are lists or list-items, delete empty list item\n event.preventDefault();\n Transforms.removeNodes(editor, {\n at: currentListItemPath,\n });\n\n // If previous and next nodes are lists with same format and indent Levels, then merge the nodes\n const [previousList] = previousEntry;\n const [nextList] = nextEntry;\n if (\n !Editor.isEditor(previousList) &&\n !isText(previousList) &&\n isListNode(previousList) &&\n !Editor.isEditor(nextList) &&\n !isText(nextList) &&\n isListNode(nextList)\n ) {\n if (\n previousList.type === 'list' &&\n nextList.type === 'list' &&\n previousList.format === nextList.format &&\n previousList.indentLevel === nextList.indentLevel\n ) {\n Transforms.mergeNodes(editor, {\n at: currentListItemPath,\n });\n }\n }\n }\n }\n};\n\n/**\n * Common handler for the enter key on ordered and unordered lists\n */\nconst handleEnterKeyOnList = (editor: Editor) => {\n const currentListItemEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list-item',\n });\n\n if (!currentListItemEntry || !editor.selection) {\n return;\n }\n\n const [currentListItem, currentListItemPath] = currentListItemEntry;\n const [currentList, currentListPath] = Editor.parent(editor, currentListItemPath);\n const isListEmpty =\n currentList.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isListItemEmpty =\n currentListItem.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isFocusAtTheBeginningOfAChild =\n editor.selection.focus.offset === 0 && editor.selection.focus.path.at(-1) === 0;\n\n if (isListEmpty) {\n replaceListWithEmptyBlock(editor, currentListPath);\n } else if (isFocusAtTheBeginningOfAChild && !isListItemEmpty) {\n // If the focus is at the beginning of a child node, shift below the list item and create a new list-item\n const currentNode = Editor.above(editor, { at: editor.selection.anchor });\n Transforms.insertNodes(editor, { type: 'list-item', children: [{ type: 'text', text: '' }] });\n if (currentNode) {\n const path = currentNode[1];\n const updatedPath = [...path.slice(0, -1), path[path.length - 1] + 1];\n Transforms.select(editor, {\n anchor: { path: updatedPath.concat(0), offset: 0 },\n focus: { path: updatedPath.concat(0), offset: 0 },\n });\n }\n } else if (isListItemEmpty) {\n // Check if there is a list above the current list and shift list-item under it\n if (\n !Editor.isEditor(currentList) &&\n isListNode(currentList) &&\n currentList?.indentLevel &&\n currentList.indentLevel > 0\n ) {\n const previousIndentLevel = currentList.indentLevel - 1;\n\n const parentListNodeEntry = Editor.above(editor, {\n match: (node) =>\n !Editor.isEditor(node) &&\n node.type === 'list' &&\n (node.indentLevel || 0) === previousIndentLevel,\n });\n\n if (parentListNodeEntry) {\n // Get the parent list path and add 1 to it to exit from the current list\n const modifiedPath = currentListItemPath.slice(0, -1);\n if (modifiedPath.length > 0) {\n modifiedPath[modifiedPath.length - 1] += 1;\n }\n\n // Shift list-item under parent list\n Transforms.moveNodes(editor, {\n at: currentListItemPath,\n to: modifiedPath,\n });\n return;\n }\n }\n\n // Otherwise delete the empty list item and create a new paragraph below the parent list\n Transforms.removeNodes(editor, { at: currentListItemPath });\n\n const createdParagraphPath = Path.next(currentListPath);\n Transforms.insertNodes(\n editor,\n {\n type: 'paragraph',\n children: [{ type: 'text', text: '' }],\n },\n { at: createdParagraphPath }\n );\n\n // Move the selection to the newly created paragraph\n Transforms.select(editor, createdParagraphPath);\n } else {\n // Check if the cursor is at the end of the list item\n const isNodeEnd = Editor.isEnd(editor, editor.selection.anchor, currentListItemPath);\n\n if (isNodeEnd) {\n // If there was nothing after the cursor, create a fresh new list item,\n // in order to avoid carrying over the modifiers from the previous list item\n Transforms.insertNodes(editor, { type: 'list-item', children: [{ type: 'text', text: '' }] });\n } else {\n // If there is something after the cursor, split the current list item,\n // so that we keep the content and the modifiers\n Transforms.splitNodes(editor);\n }\n }\n};\n\n/**\n * Common handler for converting a node to a list\n */\nconst handleConvertToList = (editor: Editor, format: Block<'list'>['format']) => {\n const convertedPath = baseHandleConvert<Block<'list-item'>>(editor, { type: 'list-item' });\n\n if (!convertedPath) return;\n\n Transforms.wrapNodes(editor, { type: 'list', format, children: [] }, { at: convertedPath });\n};\n\n/**\n * Common handler for the tab key on ordered and unordered lists\n */\nconst handleTabOnList = (editor: Editor) => {\n const currentListItemEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list-item',\n });\n\n if (!currentListItemEntry || !editor.selection) {\n return;\n }\n\n const [currentListItem, currentListItemPath] = currentListItemEntry;\n const [currentList] = Editor.parent(editor, currentListItemPath);\n\n // Skip tabbing if list-item is the first item in the list\n if (currentListItem === currentList.children[0]) return;\n\n const currentListItemIndex = currentList.children.findIndex((item) => item === currentListItem);\n const previousNode = currentList.children[currentListItemIndex - 1];\n\n // If previous node is a list block then move the list-item under it\n if (previousNode.type === 'list') {\n const nodePath = ReactEditor.findPath(editor, previousNode);\n const insertAtPath = previousNode.children.length;\n\n Transforms.moveNodes(editor, {\n at: currentListItemPath,\n to: nodePath.concat(insertAtPath),\n });\n return;\n }\n\n if (!Editor.isEditor(currentList) && isListNode(currentList)) {\n // Wrap list-item with list block on tab\n Transforms.wrapNodes(editor, {\n type: 'list',\n format: currentList.format,\n indentLevel: (currentList.indentLevel || 0) + 1,\n children: [],\n });\n }\n};\n\n/**\n * Common handler for the shift+tab key on ordered and unordered lists (un-indentation)\n */\n\nconst hasChildren = (node: unknown): node is { children: unknown[] } => {\n return typeof node === 'object' && node !== null && 'children' in node;\n};\n\nconst isNestedListNode = (node: unknown): node is { type: 'list'; children: unknown[] } => {\n return hasChildren(node) && 'type' in node && node.type === 'list';\n};\n\nconst handleShiftTabOnList = (editor: Editor) => {\n const currentListItemEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && 'type' in node && node.type === 'list-item',\n });\n\n if (!currentListItemEntry || !editor.selection) {\n return;\n }\n\n const [, currentListItemPath] = currentListItemEntry;\n\n const [currentList] = Editor.parent(editor, currentListItemPath);\n\n if (!Editor.isEditor(currentList) && isNestedListNode(currentList)) {\n const parentListPath = Path.parent(currentListItemPath);\n\n const [parentList] = Editor.parent(editor, parentListPath);\n\n // Case 1: The parent of the current list is the editor itself.\n if (Editor.isEditor(parentList)) {\n // Lift the list item to the top level of the editor's children.\n Transforms.liftNodes(editor, {\n at: currentListItemPath,\n match: (node) => !Editor.isEditor(node) && 'type' in node && node.type === 'list-item',\n });\n // Change the type of the newly lifted node from 'list-item' to 'paragraph'.\n Transforms.setNodes(editor, { type: 'paragraph' });\n return;\n }\n\n // Case 2: The parent of the current list is another list.\n if (isNestedListNode(parentList)) {\n Transforms.liftNodes(editor, {\n at: currentListItemPath,\n match: (node) => !Editor.isEditor(node) && 'type' in node && node.type === 'list-item',\n });\n\n try {\n const [remainingList, remainingListPath] = Editor.node(editor, parentListPath);\n\n if (isNestedListNode(remainingList) && remainingList.children.length === 0) {\n Transforms.removeNodes(editor, { at: remainingListPath });\n }\n } catch {\n // The path might no longer exist if the structure changed, which is fine\n }\n }\n }\n};\n\n// All that's in common between ordered and unordered list blocks\nconst baseListBlock = {\n renderElement: (props) => <List {...props} />,\n isInBlocksSelector: true,\n handleEnterKey: handleEnterKeyOnList,\n handleBackspaceKey: handleBackspaceKeyOnList,\n handleTab: handleTabOnList,\n isDraggable: (element) => {\n if (!isListNode(element)) {\n throw Error();\n }\n const indentLevel = element.indentLevel ?? 0;\n return indentLevel === 0;\n },\n} satisfies Partial<BlocksStore['list-ordered' | 'list-unordered']>;\n\nconst listBlocks: Pick<BlocksStore, 'list-ordered' | 'list-unordered' | 'list-item'> = {\n 'list-ordered': {\n ...baseListBlock,\n label: {\n id: 'components.Blocks.blocks.orderedList',\n defaultMessage: 'Numbered list',\n },\n icon: NumberList,\n matchNode: (node) => node.type === 'list' && node.format === 'ordered',\n handleConvert: (editor) => handleConvertToList(editor, 'ordered'),\n handleShiftTab: handleShiftTabOnList,\n snippets: ['1.'],\n },\n 'list-unordered': {\n ...baseListBlock,\n label: {\n id: 'components.Blocks.blocks.unorderedList',\n defaultMessage: 'Bulleted list',\n },\n icon: BulletList,\n matchNode: (node) => node.type === 'list' && node.format === 'unordered',\n handleConvert: (editor) => handleConvertToList(editor, 'unordered'),\n handleShiftTab: handleShiftTabOnList,\n snippets: ['-', '*', '+'],\n },\n 'list-item': {\n renderElement: (props) => (\n <Typography tag=\"li\" {...props.attributes}>\n {props.children}\n </Typography>\n ),\n // No handleConvert, list items are created when converting to the parent list\n matchNode: (node) => node.type === 'list-item',\n isInBlocksSelector: false,\n dragHandleTopMargin: '-2px',\n isDraggable: () => false,\n },\n};\n\nexport { listBlocks };\n"],"names":["listStyle","css","theme","spaces","Orderedlist","styled","ol","props","$listStyleType","Unorderedlist","ul","orderedStyles","unorderedStyles","isListNode","element","type","List","attributes","children","listStyles","format","nextIndex","indentLevel","length","listStyleType","_jsx","replaceListWithEmptyBlock","editor","currentListPath","Transforms","removeNodes","at","insertNodes","text","select","isText","node","Node","isNode","Editor","isEditor","handleBackspaceKeyOnList","event","selection","currentListItem","currentListItemPath","parent","anchor","currentList","isListEmpty","isListItemEmpty","isFocusAtTheBeginningOfAChild","focus","offset","path","parentListEntry","above","match","preventDefault","liftNodes","setNodes","previousEntry","previous","nextEntry","next","previousList","nextList","mergeNodes","handleEnterKeyOnList","currentListItemEntry","currentNode","updatedPath","slice","concat","previousIndentLevel","parentListNodeEntry","modifiedPath","moveNodes","to","createdParagraphPath","Path","isNodeEnd","isEnd","splitNodes","handleConvertToList","convertedPath","baseHandleConvert","wrapNodes","handleTabOnList","currentListItemIndex","findIndex","item","previousNode","nodePath","ReactEditor","findPath","insertAtPath","hasChildren","isNestedListNode","handleShiftTabOnList","parentListPath","parentList","remainingList","remainingListPath","baseListBlock","renderElement","isInBlocksSelector","handleEnterKey","handleBackspaceKey","handleTab","isDraggable","Error","listBlocks","label","id","defaultMessage","icon","NumberList","matchNode","handleConvert","handleShiftTab","snippets","BulletList","Typography","tag","dragHandleTopMargin"],"mappings":"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"}
1
+ {"version":3,"file":"List.mjs","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Typography } from '@strapi/design-system';\nimport { BulletList, NumberList } from '@strapi/icons';\nimport { Schema } from '@strapi/types';\nimport { type Text, Editor, Node, Transforms, Path, Element } from 'slate';\nimport { type RenderElementProps, ReactEditor } from 'slate-react';\nimport { styled, type CSSProperties, css } from 'styled-components';\n\nimport { type BlocksStore } from '../BlocksEditor';\nimport { baseHandleConvert } from '../utils/conversions';\nimport { type Block } from '../utils/types';\n\nconst listStyle = css`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.spaces[2]};\n margin-inline-start: ${({ theme }) => theme.spaces[0]};\n margin-inline-end: ${({ theme }) => theme.spaces[0]};\n padding-inline-start: ${({ theme }) => theme.spaces[2]};\n\n ol,\n ul {\n margin-block-start: ${({ theme }) => theme.spaces[0]};\n margin-block-end: ${({ theme }) => theme.spaces[0]};\n }\n\n li {\n margin-inline-start: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nconst Orderedlist = styled.ol<{ $listStyleType: CSSProperties['listStyleType'] }>`\n list-style-type: ${(props) => props.$listStyleType};\n ${listStyle}\n`;\n\nconst Unorderedlist = styled.ul<{ $listStyleType: CSSProperties['listStyleType'] }>`\n list-style-type: ${(props) => props.$listStyleType};\n ${listStyle}\n`;\n\nconst orderedStyles = ['decimal', 'lower-alpha', 'upper-roman'];\nconst unorderedStyles = ['disc', 'circle', 'square'];\n\nconst isListNode = (element: Element): element is Schema.Attribute.ListBlockNode => {\n return element.type === 'list';\n};\n\nconst List = ({ attributes, children, element }: RenderElementProps) => {\n if (!isListNode(element)) {\n return null;\n }\n\n // Decide the subsequent style by referencing the given styles according to the format,\n // allowing for infinite nested lists\n const listStyles = element.format === 'ordered' ? orderedStyles : unorderedStyles;\n const nextIndex = (element.indentLevel || 0) % listStyles!.length;\n const listStyleType = listStyles![nextIndex];\n\n if (element.format === 'ordered') {\n return (\n <Orderedlist $listStyleType={listStyleType} {...attributes}>\n {children}\n </Orderedlist>\n );\n }\n\n return (\n <Unorderedlist $listStyleType={listStyleType} {...attributes}>\n {children}\n </Unorderedlist>\n );\n};\n\nconst replaceListWithEmptyBlock = (editor: Editor, currentListPath: Path) => {\n // Normalize once the paragraph is in, or removing the only block adds a second paragraph\n Editor.withoutNormalizing(editor, () => {\n // Delete the empty list\n Transforms.removeNodes(editor, { at: currentListPath });\n\n if (currentListPath[0] === 0) {\n // If the list was the only (or first) block element then insert empty paragraph as editor needs default value\n Transforms.insertNodes(\n editor,\n {\n type: 'paragraph',\n children: [{ type: 'text', text: '' }],\n },\n { at: currentListPath }\n );\n Transforms.select(editor, currentListPath);\n }\n });\n};\n\nconst isText = (node: unknown): node is Text => {\n return Node.isNode(node) && !Editor.isEditor(node) && node.type === 'text';\n};\n\n/**\n * Common handler for the backspace event on ordered and unordered lists\n */\nconst handleBackspaceKeyOnList = (editor: Editor, event: React.KeyboardEvent<HTMLElement>) => {\n if (!editor.selection) return;\n\n const [currentListItem, currentListItemPath] = Editor.parent(editor, editor.selection.anchor);\n const [currentList, currentListPath] = Editor.parent(editor, currentListItemPath);\n const isListEmpty =\n currentList.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isListItemEmpty =\n currentListItem.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isFocusAtTheBeginningOfAChild =\n editor.selection.focus.offset === 0 && editor.selection.focus.path.at(-2) === 0;\n\n if (isListEmpty) {\n const parentListEntry = Editor.above(editor, {\n at: currentListPath,\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n });\n if (!parentListEntry) {\n event.preventDefault();\n replaceListWithEmptyBlock(editor, currentListPath);\n }\n } else if (isFocusAtTheBeginningOfAChild) {\n // If the focus is at the beginning of a child node we need to replace it with a paragraph\n Transforms.liftNodes(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list-item',\n });\n Transforms.setNodes(editor, { type: 'paragraph' });\n } else if (isListItemEmpty) {\n const previousEntry = Editor.previous(editor, {\n at: currentListItemPath,\n });\n const nextEntry = Editor.next(editor, {\n at: currentListItemPath,\n });\n\n if (previousEntry && nextEntry) {\n // If previous and next nodes are lists or list-items, delete empty list item\n event.preventDefault();\n Transforms.removeNodes(editor, {\n at: currentListItemPath,\n });\n\n // If previous and next nodes are lists with same format and indent Levels, then merge the nodes\n const [previousList] = previousEntry;\n const [nextList] = nextEntry;\n if (\n !Editor.isEditor(previousList) &&\n !isText(previousList) &&\n isListNode(previousList) &&\n !Editor.isEditor(nextList) &&\n !isText(nextList) &&\n isListNode(nextList)\n ) {\n if (\n previousList.type === 'list' &&\n nextList.type === 'list' &&\n previousList.format === nextList.format &&\n previousList.indentLevel === nextList.indentLevel\n ) {\n Transforms.mergeNodes(editor, {\n at: currentListItemPath,\n });\n }\n }\n }\n }\n};\n\n/**\n * Common handler for the enter key on ordered and unordered lists\n */\nconst handleEnterKeyOnList = (editor: Editor) => {\n const currentListItemEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list-item',\n });\n\n if (!currentListItemEntry || !editor.selection) {\n return;\n }\n\n const [currentListItem, currentListItemPath] = currentListItemEntry;\n const [currentList, currentListPath] = Editor.parent(editor, currentListItemPath);\n const isListEmpty =\n currentList.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isListItemEmpty =\n currentListItem.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isFocusAtTheBeginningOfAChild =\n editor.selection.focus.offset === 0 && editor.selection.focus.path.at(-1) === 0;\n\n if (isListEmpty) {\n replaceListWithEmptyBlock(editor, currentListPath);\n } else if (isFocusAtTheBeginningOfAChild && !isListItemEmpty) {\n // If the focus is at the beginning of a child node, shift below the list item and create a new list-item\n const currentNode = Editor.above(editor, { at: editor.selection.anchor });\n Transforms.insertNodes(editor, { type: 'list-item', children: [{ type: 'text', text: '' }] });\n if (currentNode) {\n const path = currentNode[1];\n const updatedPath = [...path.slice(0, -1), path[path.length - 1] + 1];\n Transforms.select(editor, {\n anchor: { path: updatedPath.concat(0), offset: 0 },\n focus: { path: updatedPath.concat(0), offset: 0 },\n });\n }\n } else if (isListItemEmpty) {\n // Check if there is a list above the current list and shift list-item under it\n if (\n !Editor.isEditor(currentList) &&\n isListNode(currentList) &&\n currentList?.indentLevel &&\n currentList.indentLevel > 0\n ) {\n const previousIndentLevel = currentList.indentLevel - 1;\n\n const parentListNodeEntry = Editor.above(editor, {\n match: (node) =>\n !Editor.isEditor(node) &&\n node.type === 'list' &&\n (node.indentLevel || 0) === previousIndentLevel,\n });\n\n if (parentListNodeEntry) {\n // Get the parent list path and add 1 to it to exit from the current list\n const modifiedPath = currentListItemPath.slice(0, -1);\n if (modifiedPath.length > 0) {\n modifiedPath[modifiedPath.length - 1] += 1;\n }\n\n // Shift list-item under parent list\n Transforms.moveNodes(editor, {\n at: currentListItemPath,\n to: modifiedPath,\n });\n return;\n }\n }\n\n // Otherwise delete the empty list item and create a new paragraph below the parent list\n Transforms.removeNodes(editor, { at: currentListItemPath });\n\n const createdParagraphPath = Path.next(currentListPath);\n Transforms.insertNodes(\n editor,\n {\n type: 'paragraph',\n children: [{ type: 'text', text: '' }],\n },\n { at: createdParagraphPath }\n );\n\n // Move the selection to the newly created paragraph\n Transforms.select(editor, createdParagraphPath);\n } else {\n // Check if the cursor is at the end of the list item\n const isNodeEnd = Editor.isEnd(editor, editor.selection.anchor, currentListItemPath);\n\n if (isNodeEnd) {\n // If there was nothing after the cursor, create a fresh new list item,\n // in order to avoid carrying over the modifiers from the previous list item\n Transforms.insertNodes(editor, { type: 'list-item', children: [{ type: 'text', text: '' }] });\n } else {\n // If there is something after the cursor, split the current list item,\n // so that we keep the content and the modifiers\n Transforms.splitNodes(editor);\n }\n }\n};\n\n/**\n * Common handler for converting a node to a list\n */\nconst handleConvertToList = (editor: Editor, format: Block<'list'>['format']) => {\n const convertedPath = baseHandleConvert<Block<'list-item'>>(editor, { type: 'list-item' });\n\n if (!convertedPath) return;\n\n Transforms.wrapNodes(editor, { type: 'list', format, children: [] }, { at: convertedPath });\n};\n\n/**\n * Common handler for the tab key on ordered and unordered lists\n */\nconst handleTabOnList = (editor: Editor) => {\n const currentListItemEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list-item',\n });\n\n if (!currentListItemEntry || !editor.selection) {\n return;\n }\n\n const [currentListItem, currentListItemPath] = currentListItemEntry;\n const [currentList] = Editor.parent(editor, currentListItemPath);\n\n // Skip tabbing if list-item is the first item in the list\n if (currentListItem === currentList.children[0]) return;\n\n const currentListItemIndex = currentList.children.findIndex((item) => item === currentListItem);\n const previousNode = currentList.children[currentListItemIndex - 1];\n\n // If previous node is a list block then move the list-item under it\n if (previousNode.type === 'list') {\n const nodePath = ReactEditor.findPath(editor, previousNode);\n const insertAtPath = previousNode.children.length;\n\n Transforms.moveNodes(editor, {\n at: currentListItemPath,\n to: nodePath.concat(insertAtPath),\n });\n return;\n }\n\n if (!Editor.isEditor(currentList) && isListNode(currentList)) {\n // Wrap list-item with list block on tab\n Transforms.wrapNodes(editor, {\n type: 'list',\n format: currentList.format,\n indentLevel: (currentList.indentLevel || 0) + 1,\n children: [],\n });\n }\n};\n\n/**\n * Common handler for the shift+tab key on ordered and unordered lists (un-indentation)\n */\n\nconst hasChildren = (node: unknown): node is { children: unknown[] } => {\n return typeof node === 'object' && node !== null && 'children' in node;\n};\n\nconst isNestedListNode = (node: unknown): node is { type: 'list'; children: unknown[] } => {\n return hasChildren(node) && 'type' in node && node.type === 'list';\n};\n\nconst handleShiftTabOnList = (editor: Editor) => {\n const currentListItemEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && 'type' in node && node.type === 'list-item',\n });\n\n if (!currentListItemEntry || !editor.selection) {\n return;\n }\n\n const [, currentListItemPath] = currentListItemEntry;\n\n const [currentList] = Editor.parent(editor, currentListItemPath);\n\n if (!Editor.isEditor(currentList) && isNestedListNode(currentList)) {\n const parentListPath = Path.parent(currentListItemPath);\n\n const [parentList] = Editor.parent(editor, parentListPath);\n\n // Case 1: The parent of the current list is the editor itself.\n if (Editor.isEditor(parentList)) {\n // Lift the list item to the top level of the editor's children.\n Transforms.liftNodes(editor, {\n at: currentListItemPath,\n match: (node) => !Editor.isEditor(node) && 'type' in node && node.type === 'list-item',\n });\n // Change the type of the newly lifted node from 'list-item' to 'paragraph'.\n Transforms.setNodes(editor, { type: 'paragraph' });\n return;\n }\n\n // Case 2: The parent of the current list is another list.\n if (isNestedListNode(parentList)) {\n Transforms.liftNodes(editor, {\n at: currentListItemPath,\n match: (node) => !Editor.isEditor(node) && 'type' in node && node.type === 'list-item',\n });\n\n try {\n const [remainingList, remainingListPath] = Editor.node(editor, parentListPath);\n\n if (isNestedListNode(remainingList) && remainingList.children.length === 0) {\n Transforms.removeNodes(editor, { at: remainingListPath });\n }\n } catch {\n // The path might no longer exist if the structure changed, which is fine\n }\n }\n }\n};\n\n// All that's in common between ordered and unordered list blocks\nconst baseListBlock = {\n renderElement: (props) => <List {...props} />,\n isInBlocksSelector: true,\n handleEnterKey: handleEnterKeyOnList,\n handleBackspaceKey: handleBackspaceKeyOnList,\n handleTab: handleTabOnList,\n isDraggable: (element) => {\n if (!isListNode(element)) {\n throw Error();\n }\n const indentLevel = element.indentLevel ?? 0;\n return indentLevel === 0;\n },\n} satisfies Partial<BlocksStore['list-ordered' | 'list-unordered']>;\n\nconst listBlocks: Pick<BlocksStore, 'list-ordered' | 'list-unordered' | 'list-item'> = {\n 'list-ordered': {\n ...baseListBlock,\n label: {\n id: 'components.Blocks.blocks.orderedList',\n defaultMessage: 'Numbered list',\n },\n icon: NumberList,\n matchNode: (node) => node.type === 'list' && node.format === 'ordered',\n handleConvert: (editor) => handleConvertToList(editor, 'ordered'),\n handleShiftTab: handleShiftTabOnList,\n snippets: ['1.'],\n },\n 'list-unordered': {\n ...baseListBlock,\n label: {\n id: 'components.Blocks.blocks.unorderedList',\n defaultMessage: 'Bulleted list',\n },\n icon: BulletList,\n matchNode: (node) => node.type === 'list' && node.format === 'unordered',\n handleConvert: (editor) => handleConvertToList(editor, 'unordered'),\n handleShiftTab: handleShiftTabOnList,\n snippets: ['-', '*', '+'],\n },\n 'list-item': {\n renderElement: (props) => (\n <Typography tag=\"li\" {...props.attributes}>\n {props.children}\n </Typography>\n ),\n // No handleConvert, list items are created when converting to the parent list\n matchNode: (node) => node.type === 'list-item',\n isInBlocksSelector: false,\n dragHandleTopMargin: '-2px',\n isDraggable: () => false,\n },\n};\n\nexport { listBlocks };\n"],"names":["listStyle","css","theme","spaces","Orderedlist","styled","ol","props","$listStyleType","Unorderedlist","ul","orderedStyles","unorderedStyles","isListNode","element","type","List","attributes","children","listStyles","format","nextIndex","indentLevel","length","listStyleType","_jsx","replaceListWithEmptyBlock","editor","currentListPath","Editor","withoutNormalizing","Transforms","removeNodes","at","insertNodes","text","select","isText","node","Node","isNode","isEditor","handleBackspaceKeyOnList","event","selection","currentListItem","currentListItemPath","parent","anchor","currentList","isListEmpty","isListItemEmpty","isFocusAtTheBeginningOfAChild","focus","offset","path","parentListEntry","above","match","preventDefault","liftNodes","setNodes","previousEntry","previous","nextEntry","next","previousList","nextList","mergeNodes","handleEnterKeyOnList","currentListItemEntry","currentNode","updatedPath","slice","concat","previousIndentLevel","parentListNodeEntry","modifiedPath","moveNodes","to","createdParagraphPath","Path","isNodeEnd","isEnd","splitNodes","handleConvertToList","convertedPath","baseHandleConvert","wrapNodes","handleTabOnList","currentListItemIndex","findIndex","item","previousNode","nodePath","ReactEditor","findPath","insertAtPath","hasChildren","isNestedListNode","handleShiftTabOnList","parentListPath","parentList","remainingList","remainingListPath","baseListBlock","renderElement","isInBlocksSelector","handleEnterKey","handleBackspaceKey","handleTab","isDraggable","Error","listBlocks","label","id","defaultMessage","icon","NumberList","matchNode","handleConvert","handleShiftTab","snippets","BulletList","Typography","tag","dragHandleTopMargin"],"mappings":"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"}
@@ -13,6 +13,7 @@ var dragAndDrop = require('../../../../../constants/dragAndDrop.js');
13
13
  var useDragAndDrop = require('../../../../../hooks/useDragAndDrop.js');
14
14
  var translations = require('../../../../../utils/translations.js');
15
15
  var Code = require('./Blocks/Code.js');
16
+ var Image = require('./Blocks/Image.js');
16
17
  var BlocksEditor = require('./BlocksEditor.js');
17
18
  var BlocksToolbar = require('./BlocksToolbar.js');
18
19
  var types = require('./utils/types.js');
@@ -318,6 +319,9 @@ const BlocksContent = ({ placeholder, ariaLabelId, autoFocus, onFocus, onBlur })
318
319
  const { formatMessage } = reactIntl.useIntl();
319
320
  const [dragDirection, setDragDirection] = React__namespace.useState(null);
320
321
  const { modalElement, handleConversionResult } = BlocksToolbar.useConversionModal();
322
+ // Registered by the Media Library: uploads files dropped onto the content
323
+ // and hands them back to be inserted as image blocks.
324
+ const FileDropZone = strapiAdmin.useStrapiApp('BlocksContent', (state)=>state.components?.['media-library-file-drop-zone']);
321
325
  // Create renderLeaf function based on the modifiers store
322
326
  const renderLeaf = React__namespace.useCallback((props)=>baseRenderLeaf(props, modifiers), [
323
327
  modifiers
@@ -514,7 +518,7 @@ const BlocksContent = ({ placeholder, ariaLabelId, autoFocus, onFocus, onBlur })
514
518
  }, [
515
519
  editor
516
520
  ]);
517
- return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
521
+ const content = /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
518
522
  ref: blocksRef,
519
523
  grow: 1,
520
524
  width: "100%",
@@ -554,6 +558,16 @@ const BlocksContent = ({ placeholder, ariaLabelId, autoFocus, onFocus, onBlur })
554
558
  modalElement
555
559
  ]
556
560
  });
561
+ if (!FileDropZone || disabled) {
562
+ return content;
563
+ }
564
+ return /*#__PURE__*/ jsxRuntime.jsx(FileDropZone, {
565
+ allowedTypes: [
566
+ 'images'
567
+ ],
568
+ onDropFiles: (event)=>Image.createDroppedImagesInserter(editor, event),
569
+ children: content
570
+ });
557
571
  };
558
572
 
559
573
  exports.BlocksContent = BlocksContent;
@@ -1 +1 @@
1
- {"version":3,"file":"BlocksContent.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useIsMobile } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n IconButton,\n IconButtonComponent,\n useComposedRefs,\n} from '@strapi/design-system';\nimport { Drag } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Editor, Range, Transforms } from 'slate';\nimport { ReactEditor, type RenderElementProps, type RenderLeafProps, Editable } from 'slate-react';\nimport { styled, CSSProperties, css } from 'styled-components';\n\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDragAndDrop, DIRECTIONS } from '../../../../../hooks/useDragAndDrop';\nimport { getTranslation } from '../../../../../utils/translations';\n\nimport { decorateCode } from './Blocks/Code';\nimport { type BlocksStore, useBlocksEditorContext } from './BlocksEditor';\nimport { useConversionModal } from './BlocksToolbar';\nimport { type ModifiersStore } from './Modifiers';\nimport { getEntries } from './utils/types';\n\nconst StyledEditable = styled(Editable)<{ $isExpandedMode: boolean }>`\n // The outline style is set on the wrapper with :focus-within\n outline: none;\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.spaces[3]};\n height: 100%;\n // For fullscreen align input in the center with fixed width\n width: ${(props) => (props.$isExpandedMode ? '512px' : '100%')};\n margin: auto;\n font-size: 1.6rem;\n\n ${({ theme }) => theme.breakpoints.medium} {\n font-size: 1.4rem;\n }\n > *:last-child {\n padding-bottom: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nconst Wrapper = styled<BoxComponent>(Box)<{ $isOverDropTarget: boolean }>`\n position: ${({ $isOverDropTarget }) => $isOverDropTarget && 'relative'};\n`;\n\ntype DragDirection = (typeof DIRECTIONS)[keyof typeof DIRECTIONS];\n\nconst DropPlaceholder = styled<BoxComponent>(Box)<{\n dragDirection: DragDirection | null;\n placeholderMargin: 1 | 2;\n}>`\n position: absolute;\n right: 0;\n\n // Show drop placeholder 8px above or below the drop target\n ${({ dragDirection, theme, placeholderMargin }) => css`\n top: ${dragDirection === DIRECTIONS.UPWARD && `-${theme.spaces[placeholderMargin]}`};\n bottom: ${dragDirection === DIRECTIONS.DOWNWARD && `-${theme.spaces[placeholderMargin]}`};\n `}\n`;\n\nconst DragItem = styled<FlexComponent>(Flex)<{ $dragVisibility: CSSProperties['visibility'] }>`\n // Style each block rendered using renderElement()\n & > [data-slate-node='element'] {\n width: 100%;\n opacity: inherit;\n }\n\n // Set the visibility of drag button\n [role='button'] {\n visibility: ${(props) => props.$dragVisibility};\n opacity: inherit;\n }\n &[aria-disabled='true'] {\n user-drag: none;\n }\n`;\n\nconst DragIconButton = styled<IconButtonComponent<'div'>>(IconButton)<{\n $dragHandleTopMargin?: CSSProperties['marginTop'];\n}>`\n user-select: none;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n border-radius: ${({ theme }) => theme.borderRadius};\n padding-left: ${({ theme }) => theme.spaces[0]};\n padding-right: ${({ theme }) => theme.spaces[0]};\n padding-top: ${({ theme }) => theme.spaces[1]};\n padding-bottom: ${({ theme }) => theme.spaces[1]};\n visibility: hidden;\n cursor: grab;\n opacity: inherit;\n margin-top: ${(props) => props.$dragHandleTopMargin ?? 0};\n\n &:hover {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n &:active {\n cursor: grabbing;\n background: ${({ theme }) => theme.colors.neutral150};\n }\n &[aria-disabled='true'] {\n visibility: hidden;\n }\n svg {\n min-width: ${({ theme }) => theme.spaces[3]};\n\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n`;\n\ntype Direction = {\n setDragDirection: (direction: DragDirection) => void;\n dragDirection: DragDirection | null;\n};\n\ntype DragAndDropElementProps = Direction & {\n children: RenderElementProps['children'];\n index: Array<number>;\n dragHandleTopMargin?: CSSProperties['marginTop'];\n};\n\nconst DragAndDropElement = ({\n children,\n index,\n setDragDirection,\n dragDirection,\n dragHandleTopMargin,\n}: DragAndDropElementProps) => {\n const { editor, disabled, name, setLiveText } = useBlocksEditorContext('DragAndDropElement');\n const { formatMessage } = useIntl();\n const [dragVisibility, setDragVisibility] = React.useState<CSSProperties['visibility']>('hidden');\n const isDragAndDropEnabled = !disabled;\n\n const handleMoveBlock = React.useCallback(\n (newIndex: Array<number>, currentIndex: Array<number>) => {\n Transforms.moveNodes(editor, {\n at: currentIndex,\n to: newIndex,\n });\n\n // Add 1 to the index for the live text message\n const currentIndexPosition = [currentIndex[0] + 1, ...currentIndex.slice(1)];\n const newIndexPosition = [newIndex[0] + 1, ...newIndex.slice(1)];\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('components.Blocks.dnd.reorder'),\n defaultMessage: '{item}, moved. New position in the editor: {position}.',\n },\n {\n item: `${name}.${currentIndexPosition.join(',')}`,\n position: `${newIndexPosition.join(',')} of ${editor.children.length}`,\n }\n )\n );\n },\n [editor, formatMessage, name, setLiveText]\n );\n\n const [{ handlerId, isDragging, isOverDropTarget, direction }, blockRef, dropRef, dragRef] =\n useDragAndDrop(isDragAndDropEnabled, {\n type: `${ItemTypes.BLOCKS}_${name}`,\n index,\n item: {\n index,\n displayedValue: children,\n },\n onDropItem(currentIndex, newIndex) {\n if (newIndex) handleMoveBlock(newIndex, currentIndex);\n },\n });\n\n const composedBoxRefs = useComposedRefs(blockRef, dropRef);\n\n // Set Drag direction before loosing state while dragging\n React.useEffect(() => {\n if (direction) {\n setDragDirection(direction);\n }\n }, [direction, setDragDirection]);\n\n // On selection change hide drag handle\n React.useEffect(() => {\n setDragVisibility('hidden');\n }, [editor.selection]);\n\n return (\n <Wrapper ref={composedBoxRefs} $isOverDropTarget={isOverDropTarget}>\n {isOverDropTarget && (\n <DropPlaceholder\n borderStyle=\"solid\"\n borderColor=\"secondary200\"\n borderWidth=\"2px\"\n width=\"calc(100% - 24px)\"\n marginLeft=\"auto\"\n dragDirection={dragDirection}\n // For list items placeholder reduce the margin around\n placeholderMargin={children.props.as && children.props.as === 'li' ? 1 : 2}\n />\n )}\n {isDragging ? (\n <CloneDragItem dragHandleTopMargin={dragHandleTopMargin}>{children}</CloneDragItem>\n ) : (\n <DragItem\n ref={dragRef}\n data-handler-id={handlerId}\n gap={2}\n paddingLeft={2}\n alignItems=\"start\"\n onDragStart={\n isDragAndDropEnabled\n ? (event) => {\n const target = event.target as HTMLElement;\n const currentTarget = event.currentTarget as HTMLElement;\n\n // Dragging action should only trigger drag event when button is dragged, however update styles on the whole dragItem.\n if (target.getAttribute('role') !== 'button') {\n event.preventDefault();\n } else {\n // Setting styles using dragging state is not working, so set it on current target element as nodes get dragged\n currentTarget.style.opacity = '0.5';\n }\n }\n : undefined\n }\n onDragEnd={\n isDragAndDropEnabled\n ? (event) => {\n const currentTarget = event.currentTarget as HTMLElement;\n currentTarget.style.opacity = '1';\n }\n : undefined\n }\n onMouseEnter={() => setDragVisibility('visible')}\n onFocusCapture={() => setDragVisibility('visible')}\n onBlurCapture={() => setDragVisibility('hidden')}\n onMouseLeave={() => setDragVisibility('hidden')}\n aria-disabled={disabled}\n $dragVisibility={dragVisibility}\n >\n <DragIconButton\n tag=\"div\"\n contentEditable={false}\n role=\"button\"\n tabIndex={0}\n withTooltip={false}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onClick={(e: React.MouseEvent) => e.stopPropagation()}\n aria-disabled={disabled}\n disabled={disabled}\n draggable={isDragAndDropEnabled}\n // For some blocks top margin added to drag handle to align at the text level\n $dragHandleTopMargin={dragHandleTopMargin}\n >\n <Drag color=\"primary500\" />\n </DragIconButton>\n {children}\n </DragItem>\n )}\n </Wrapper>\n );\n};\n\ninterface CloneDragItemProps {\n children: RenderElementProps['children'];\n dragHandleTopMargin?: CSSProperties['marginTop'];\n}\n\n// To prevent applying opacity to the original item being dragged, display a cloned element without opacity.\nconst CloneDragItem = ({ children, dragHandleTopMargin }: CloneDragItemProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <DragItem gap={2} paddingLeft={2} alignItems=\"start\" $dragVisibility=\"visible\">\n <DragIconButton\n tag=\"div\"\n role=\"button\"\n withTooltip={false}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n $dragHandleTopMargin={dragHandleTopMargin}\n >\n <Drag color=\"neutral600\" />\n </DragIconButton>\n {children}\n </DragItem>\n );\n};\n\ninterface ExtendedRenderLeafProps extends RenderLeafProps {\n leaf: RenderLeafProps['leaf'] & { className?: string };\n}\n\nconst baseRenderLeaf = (props: ExtendedRenderLeafProps, modifiers: ModifiersStore) => {\n // Recursively wrap the children for each active modifier\n const wrappedChildren = getEntries(modifiers).reduce((currentChildren, modifierEntry) => {\n const [name, modifier] = modifierEntry;\n\n if (props.leaf[name]) {\n return modifier.renderLeaf(currentChildren);\n }\n\n return currentChildren;\n }, props.children);\n\n return (\n <span {...props.attributes} className={props.leaf.className}>\n {wrappedChildren}\n </span>\n );\n};\n\ntype BaseRenderElementProps = Direction & {\n props: RenderElementProps['children'];\n blocks: Partial<BlocksStore>;\n editor: Editor;\n isMobile: boolean;\n};\n\nconst baseRenderElement = ({\n props,\n blocks,\n editor,\n dragDirection,\n setDragDirection,\n isMobile,\n}: BaseRenderElementProps) => {\n const { element } = props;\n\n const blockMatch = Object.values(blocks).find((block) => block?.matchNode(element));\n const block = blockMatch || blocks.paragraph;\n\n if (!block) {\n return <></>;\n }\n\n const nodePath = ReactEditor.findPath(editor, element);\n\n const isDraggable = block.isDraggable?.(element) ?? true;\n\n if (!isDraggable || isMobile) {\n return block.renderElement(props);\n }\n\n return (\n <DragAndDropElement\n index={nodePath}\n setDragDirection={setDragDirection}\n dragDirection={dragDirection}\n dragHandleTopMargin={block.dragHandleTopMargin}\n >\n {block.renderElement(props)}\n </DragAndDropElement>\n );\n};\n\nconst dragNoop = () => true;\n\ninterface BlocksContentProps {\n placeholder?: string;\n ariaLabelId: string;\n autoFocus?: boolean;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n}\n\nconst BlocksContent = ({\n placeholder,\n ariaLabelId,\n autoFocus,\n onFocus,\n onBlur,\n}: BlocksContentProps) => {\n const { editor, disabled, blocks, modifiers, setLiveText, isExpandedMode, flushPendingFormSync } =\n useBlocksEditorContext('BlocksContent');\n const isMobile = useIsMobile();\n const blocksRef = React.useRef<HTMLDivElement>(null);\n const { formatMessage } = useIntl();\n const [dragDirection, setDragDirection] = React.useState<DragDirection | null>(null);\n const { modalElement, handleConversionResult } = useConversionModal();\n\n // Create renderLeaf function based on the modifiers store\n const renderLeaf = React.useCallback(\n (props: ExtendedRenderLeafProps) => baseRenderLeaf(props, modifiers),\n [modifiers]\n );\n\n const handleMoveBlocks = (editor: Editor, event: React.KeyboardEvent<HTMLElement>) => {\n if (!editor.selection) return;\n\n const start = Range.start(editor.selection);\n const currentIndex = [start.path[0]];\n let newIndexPosition = 0;\n\n if (event.key === 'ArrowUp') {\n newIndexPosition = currentIndex[0] > 0 ? currentIndex[0] - 1 : currentIndex[0];\n } else {\n newIndexPosition =\n currentIndex[0] < editor.children.length - 1 ? currentIndex[0] + 1 : currentIndex[0];\n }\n\n const newIndex = [newIndexPosition];\n\n if (newIndexPosition !== currentIndex[0]) {\n Transforms.moveNodes(editor, {\n at: currentIndex,\n to: newIndex,\n });\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('components.Blocks.dnd.reorder'),\n defaultMessage: '{item}, moved. New position in the editor: {position}.',\n },\n {\n item: `${name}.${currentIndex[0] + 1}`,\n position: `${newIndex[0] + 1} of ${editor.children.length}`,\n }\n )\n );\n\n event.preventDefault();\n }\n };\n\n // Create renderElement function base on the blocks store\n const renderElement = React.useCallback(\n (props: RenderElementProps) =>\n baseRenderElement({ props, blocks, editor, dragDirection, setDragDirection, isMobile }),\n [blocks, editor, dragDirection, isMobile, setDragDirection]\n );\n\n const checkSnippet = (event: React.KeyboardEvent<HTMLElement>) => {\n // Get current text block\n if (!editor.selection) {\n return;\n }\n\n const [textNode, textNodePath] = Editor.node(editor, editor.selection.anchor.path);\n\n // Narrow the type to a text node\n if (Editor.isEditor(textNode) || textNode.type !== 'text') {\n return;\n }\n\n // Don't check for snippets if we're not at the start of a block\n if (textNodePath.at(-1) !== 0) {\n return;\n }\n\n // Check if the text node starts with a known snippet\n const blockMatchingSnippet = Object.values(blocks).find((block) => {\n return block?.snippets?.includes(textNode.text);\n });\n\n if (blockMatchingSnippet?.handleConvert) {\n // Prevent the space from being created and delete the snippet\n event.preventDefault();\n Transforms.delete(editor, {\n distance: textNode.text.length,\n unit: 'character',\n reverse: true,\n });\n\n // Convert the selected block\n const maybeRenderModal = blockMatchingSnippet.handleConvert(editor);\n handleConversionResult(maybeRenderModal);\n }\n };\n\n const handleEnter = (event: React.KeyboardEvent<HTMLElement>) => {\n if (!editor.selection) {\n return;\n }\n\n const selectedNode = editor.children[editor.selection.anchor.path[0]];\n const selectedBlock = Object.values(blocks).find((block) => block?.matchNode(selectedNode));\n if (!selectedBlock) {\n return;\n }\n\n // Allow forced line breaks when shift is pressed\n if (event.shiftKey && selectedNode.type !== 'image') {\n Transforms.insertText(editor, '\\n');\n return;\n }\n\n // Check if there's an enter handler for the selected block\n if (selectedBlock.handleEnterKey) {\n selectedBlock.handleEnterKey(editor);\n } else {\n blocks.paragraph?.handleEnterKey!(editor);\n }\n };\n\n const handleBackspaceEvent = (event: React.KeyboardEvent<HTMLElement>) => {\n if (!editor.selection) {\n return;\n }\n\n const selectedNode = editor.children[editor.selection.anchor.path[0]];\n const selectedBlock = Object.values(blocks).find((block) => block?.matchNode(selectedNode));\n\n if (!selectedBlock) {\n return;\n }\n\n if (selectedBlock.handleBackspaceKey) {\n selectedBlock.handleBackspaceKey(editor, event);\n }\n };\n\n const handleTab = (event: React.KeyboardEvent<HTMLElement>) => {\n if (!editor.selection) {\n return;\n }\n\n const selectedNode = editor.children[editor.selection.anchor.path[0]];\n const selectedBlock = Object.values(blocks).find((block) => block?.matchNode(selectedNode));\n if (!selectedBlock) {\n return;\n }\n\n event.preventDefault();\n\n if (event.shiftKey && selectedBlock.handleShiftTab) {\n // Handle Shift+Tab (unindent)\n selectedBlock.handleShiftTab(editor);\n } else if (!event.shiftKey && selectedBlock.handleTab) {\n // Handle Tab (indent)\n selectedBlock.handleTab(editor);\n }\n };\n\n const handleKeyboardShortcuts = (event: React.KeyboardEvent<HTMLElement>) => {\n const isCtrlOrCmd = event.metaKey || event.ctrlKey;\n\n if (isCtrlOrCmd) {\n // Check if there's a modifier to toggle\n Object.values(modifiers).forEach((value) => {\n if (value.isValidEventKey(event)) {\n event.preventDefault();\n value.handleToggle(editor);\n return;\n }\n });\n if (event.shiftKey && ['ArrowUp', 'ArrowDown'].includes(event.key)) {\n handleMoveBlocks(editor, event);\n }\n }\n };\n\n const handleKeyDown: React.KeyboardEventHandler<HTMLElement> = (event) => {\n // Find the right block-specific handlers for enter and backspace key presses\n switch (event.key) {\n case 'Enter':\n if (!event.nativeEvent.isComposing) {\n event.preventDefault();\n return handleEnter(event);\n }\n break;\n case 'Backspace':\n return handleBackspaceEvent(event);\n case 'Tab':\n return handleTab(event);\n case 'Escape':\n return ReactEditor.blur(editor);\n }\n handleKeyboardShortcuts(event);\n // Check if a snippet was triggered\n if (event.key === ' ') {\n checkSnippet(event);\n }\n };\n\n /**\n * scrollSelectionIntoView : Slate's default method to scroll a DOM selection into the view,\n * thats shifting layout for us when there is a overflowY:scroll on the viewport.\n * We are overriding it to check if the selection is not fully within the visible area of the editor,\n * we use scrollBy one line to the bottom\n */\n\n const handleScrollSelectionIntoView = React.useCallback(() => {\n if (!editor.selection || !blocksRef.current) {\n return;\n }\n\n const domRange = ReactEditor.toDOMRange(editor, editor.selection);\n const domRect = domRange.getBoundingClientRect();\n\n const editorRect = blocksRef.current.getBoundingClientRect();\n\n // Check if the selection is not fully within the visible area of the editor\n if (domRect.top < editorRect.top || domRect.bottom > editorRect.bottom) {\n // Scroll by one line to the bottom\n blocksRef.current.scrollBy({\n top: 28, // 20px is the line-height + 8px line gap\n behavior: 'smooth',\n });\n }\n }, [editor]);\n\n return (\n <Box\n ref={blocksRef}\n grow={1}\n width=\"100%\"\n overflow=\"auto\"\n fontSize={2}\n background=\"neutral0\"\n color=\"neutral800\"\n lineHeight={6}\n paddingLeft={{ initial: 4, medium: 0 }}\n paddingRight={7}\n paddingTop={6}\n paddingBottom={3}\n >\n <StyledEditable\n aria-labelledby={ariaLabelId}\n readOnly={disabled}\n placeholder={placeholder}\n $isExpandedMode={isExpandedMode}\n decorate={decorateCode}\n renderElement={renderElement}\n renderLeaf={renderLeaf}\n onKeyDown={handleKeyDown}\n scrollSelectionIntoView={handleScrollSelectionIntoView}\n autoFocus={autoFocus}\n onFocus={onFocus}\n onBlur={(event) => {\n flushPendingFormSync();\n onBlur?.(event);\n }}\n // As we have our own handler to drag and drop the elements returing true will skip slate's own event handler\n onDrop={dragNoop}\n onDragStart={dragNoop}\n />\n {modalElement}\n </Box>\n );\n};\n\nexport { BlocksContent, BlocksContentProps };\n"],"names":["StyledEditable","styled","Editable","theme","spaces","props","$isExpandedMode","breakpoints","medium","Wrapper","Box","$isOverDropTarget","DropPlaceholder","dragDirection","placeholderMargin","css","DIRECTIONS","UPWARD","DOWNWARD","DragItem","Flex","$dragVisibility","DragIconButton","IconButton","borderRadius","$dragHandleTopMargin","colors","neutral100","neutral150","neutral500","DragAndDropElement","children","index","setDragDirection","dragHandleTopMargin","editor","disabled","name","setLiveText","useBlocksEditorContext","formatMessage","useIntl","dragVisibility","setDragVisibility","React","useState","isDragAndDropEnabled","handleMoveBlock","useCallback","newIndex","currentIndex","Transforms","moveNodes","at","to","currentIndexPosition","slice","newIndexPosition","id","getTranslation","defaultMessage","item","join","position","length","handlerId","isDragging","isOverDropTarget","direction","blockRef","dropRef","dragRef","useDragAndDrop","type","ItemTypes","BLOCKS","displayedValue","onDropItem","composedBoxRefs","useComposedRefs","useEffect","selection","_jsxs","ref","_jsx","borderStyle","borderColor","borderWidth","width","marginLeft","as","CloneDragItem","data-handler-id","gap","paddingLeft","alignItems","onDragStart","event","target","currentTarget","getAttribute","preventDefault","style","opacity","undefined","onDragEnd","onMouseEnter","onFocusCapture","onBlurCapture","onMouseLeave","aria-disabled","tag","contentEditable","role","tabIndex","withTooltip","label","onClick","e","stopPropagation","draggable","Drag","color","baseRenderLeaf","modifiers","wrappedChildren","getEntries","reduce","currentChildren","modifierEntry","modifier","leaf","renderLeaf","span","attributes","className","baseRenderElement","blocks","isMobile","element","blockMatch","Object","values","find","block","matchNode","paragraph","_Fragment","nodePath","ReactEditor","findPath","isDraggable","renderElement","dragNoop","BlocksContent","placeholder","ariaLabelId","autoFocus","onFocus","onBlur","isExpandedMode","flushPendingFormSync","useIsMobile","blocksRef","useRef","modalElement","handleConversionResult","useConversionModal","handleMoveBlocks","start","Range","path","key","checkSnippet","textNode","textNodePath","Editor","node","anchor","isEditor","blockMatchingSnippet","snippets","includes","text","handleConvert","delete","distance","unit","reverse","maybeRenderModal","handleEnter","selectedNode","selectedBlock","shiftKey","insertText","handleEnterKey","handleBackspaceEvent","handleBackspaceKey","handleTab","handleShiftTab","handleKeyboardShortcuts","isCtrlOrCmd","metaKey","ctrlKey","forEach","value","isValidEventKey","handleToggle","handleKeyDown","nativeEvent","isComposing","blur","handleScrollSelectionIntoView","current","domRange","toDOMRange","domRect","getBoundingClientRect","editorRect","top","bottom","scrollBy","behavior","grow","overflow","fontSize","background","lineHeight","initial","paddingRight","paddingTop","paddingBottom","aria-labelledby","readOnly","decorate","decorateCode","onKeyDown","scrollSelectionIntoView","onDrop"],"mappings":"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"}
1
+ {"version":3,"file":"BlocksContent.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useIsMobile, useStrapiApp } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n IconButton,\n IconButtonComponent,\n useComposedRefs,\n} from '@strapi/design-system';\nimport { Drag } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Editor, Range, Transforms } from 'slate';\nimport { ReactEditor, type RenderElementProps, type RenderLeafProps, Editable } from 'slate-react';\nimport { styled, CSSProperties, css } from 'styled-components';\n\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDragAndDrop, DIRECTIONS } from '../../../../../hooks/useDragAndDrop';\nimport { getTranslation } from '../../../../../utils/translations';\n\nimport { decorateCode } from './Blocks/Code';\nimport { createDroppedImagesInserter } from './Blocks/Image';\nimport { type BlocksStore, useBlocksEditorContext } from './BlocksEditor';\nimport { useConversionModal } from './BlocksToolbar';\nimport { type ModifiersStore } from './Modifiers';\nimport { getEntries } from './utils/types';\n\nimport type { Schema } from '@strapi/types';\n\nconst StyledEditable = styled(Editable)<{ $isExpandedMode: boolean }>`\n // The outline style is set on the wrapper with :focus-within\n outline: none;\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.spaces[3]};\n height: 100%;\n // For fullscreen align input in the center with fixed width\n width: ${(props) => (props.$isExpandedMode ? '512px' : '100%')};\n margin: auto;\n font-size: 1.6rem;\n\n ${({ theme }) => theme.breakpoints.medium} {\n font-size: 1.4rem;\n }\n > *:last-child {\n padding-bottom: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nconst Wrapper = styled<BoxComponent>(Box)<{ $isOverDropTarget: boolean }>`\n position: ${({ $isOverDropTarget }) => $isOverDropTarget && 'relative'};\n`;\n\ntype DragDirection = (typeof DIRECTIONS)[keyof typeof DIRECTIONS];\n\nconst DropPlaceholder = styled<BoxComponent>(Box)<{\n dragDirection: DragDirection | null;\n placeholderMargin: 1 | 2;\n}>`\n position: absolute;\n right: 0;\n\n // Show drop placeholder 8px above or below the drop target\n ${({ dragDirection, theme, placeholderMargin }) => css`\n top: ${dragDirection === DIRECTIONS.UPWARD && `-${theme.spaces[placeholderMargin]}`};\n bottom: ${dragDirection === DIRECTIONS.DOWNWARD && `-${theme.spaces[placeholderMargin]}`};\n `}\n`;\n\nconst DragItem = styled<FlexComponent>(Flex)<{ $dragVisibility: CSSProperties['visibility'] }>`\n // Style each block rendered using renderElement()\n & > [data-slate-node='element'] {\n width: 100%;\n opacity: inherit;\n }\n\n // Set the visibility of drag button\n [role='button'] {\n visibility: ${(props) => props.$dragVisibility};\n opacity: inherit;\n }\n &[aria-disabled='true'] {\n user-drag: none;\n }\n`;\n\nconst DragIconButton = styled<IconButtonComponent<'div'>>(IconButton)<{\n $dragHandleTopMargin?: CSSProperties['marginTop'];\n}>`\n user-select: none;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n border-radius: ${({ theme }) => theme.borderRadius};\n padding-left: ${({ theme }) => theme.spaces[0]};\n padding-right: ${({ theme }) => theme.spaces[0]};\n padding-top: ${({ theme }) => theme.spaces[1]};\n padding-bottom: ${({ theme }) => theme.spaces[1]};\n visibility: hidden;\n cursor: grab;\n opacity: inherit;\n margin-top: ${(props) => props.$dragHandleTopMargin ?? 0};\n\n &:hover {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n &:active {\n cursor: grabbing;\n background: ${({ theme }) => theme.colors.neutral150};\n }\n &[aria-disabled='true'] {\n visibility: hidden;\n }\n svg {\n min-width: ${({ theme }) => theme.spaces[3]};\n\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n`;\n\ntype Direction = {\n setDragDirection: (direction: DragDirection) => void;\n dragDirection: DragDirection | null;\n};\n\ntype DragAndDropElementProps = Direction & {\n children: RenderElementProps['children'];\n index: Array<number>;\n dragHandleTopMargin?: CSSProperties['marginTop'];\n};\n\nconst DragAndDropElement = ({\n children,\n index,\n setDragDirection,\n dragDirection,\n dragHandleTopMargin,\n}: DragAndDropElementProps) => {\n const { editor, disabled, name, setLiveText } = useBlocksEditorContext('DragAndDropElement');\n const { formatMessage } = useIntl();\n const [dragVisibility, setDragVisibility] = React.useState<CSSProperties['visibility']>('hidden');\n const isDragAndDropEnabled = !disabled;\n\n const handleMoveBlock = React.useCallback(\n (newIndex: Array<number>, currentIndex: Array<number>) => {\n Transforms.moveNodes(editor, {\n at: currentIndex,\n to: newIndex,\n });\n\n // Add 1 to the index for the live text message\n const currentIndexPosition = [currentIndex[0] + 1, ...currentIndex.slice(1)];\n const newIndexPosition = [newIndex[0] + 1, ...newIndex.slice(1)];\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('components.Blocks.dnd.reorder'),\n defaultMessage: '{item}, moved. New position in the editor: {position}.',\n },\n {\n item: `${name}.${currentIndexPosition.join(',')}`,\n position: `${newIndexPosition.join(',')} of ${editor.children.length}`,\n }\n )\n );\n },\n [editor, formatMessage, name, setLiveText]\n );\n\n const [{ handlerId, isDragging, isOverDropTarget, direction }, blockRef, dropRef, dragRef] =\n useDragAndDrop(isDragAndDropEnabled, {\n type: `${ItemTypes.BLOCKS}_${name}`,\n index,\n item: {\n index,\n displayedValue: children,\n },\n onDropItem(currentIndex, newIndex) {\n if (newIndex) handleMoveBlock(newIndex, currentIndex);\n },\n });\n\n const composedBoxRefs = useComposedRefs(blockRef, dropRef);\n\n // Set Drag direction before loosing state while dragging\n React.useEffect(() => {\n if (direction) {\n setDragDirection(direction);\n }\n }, [direction, setDragDirection]);\n\n // On selection change hide drag handle\n React.useEffect(() => {\n setDragVisibility('hidden');\n }, [editor.selection]);\n\n return (\n <Wrapper ref={composedBoxRefs} $isOverDropTarget={isOverDropTarget}>\n {isOverDropTarget && (\n <DropPlaceholder\n borderStyle=\"solid\"\n borderColor=\"secondary200\"\n borderWidth=\"2px\"\n width=\"calc(100% - 24px)\"\n marginLeft=\"auto\"\n dragDirection={dragDirection}\n // For list items placeholder reduce the margin around\n placeholderMargin={children.props.as && children.props.as === 'li' ? 1 : 2}\n />\n )}\n {isDragging ? (\n <CloneDragItem dragHandleTopMargin={dragHandleTopMargin}>{children}</CloneDragItem>\n ) : (\n <DragItem\n ref={dragRef}\n data-handler-id={handlerId}\n gap={2}\n paddingLeft={2}\n alignItems=\"start\"\n onDragStart={\n isDragAndDropEnabled\n ? (event) => {\n const target = event.target as HTMLElement;\n const currentTarget = event.currentTarget as HTMLElement;\n\n // Dragging action should only trigger drag event when button is dragged, however update styles on the whole dragItem.\n if (target.getAttribute('role') !== 'button') {\n event.preventDefault();\n } else {\n // Setting styles using dragging state is not working, so set it on current target element as nodes get dragged\n currentTarget.style.opacity = '0.5';\n }\n }\n : undefined\n }\n onDragEnd={\n isDragAndDropEnabled\n ? (event) => {\n const currentTarget = event.currentTarget as HTMLElement;\n currentTarget.style.opacity = '1';\n }\n : undefined\n }\n onMouseEnter={() => setDragVisibility('visible')}\n onFocusCapture={() => setDragVisibility('visible')}\n onBlurCapture={() => setDragVisibility('hidden')}\n onMouseLeave={() => setDragVisibility('hidden')}\n aria-disabled={disabled}\n $dragVisibility={dragVisibility}\n >\n <DragIconButton\n tag=\"div\"\n contentEditable={false}\n role=\"button\"\n tabIndex={0}\n withTooltip={false}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onClick={(e: React.MouseEvent) => e.stopPropagation()}\n aria-disabled={disabled}\n disabled={disabled}\n draggable={isDragAndDropEnabled}\n // For some blocks top margin added to drag handle to align at the text level\n $dragHandleTopMargin={dragHandleTopMargin}\n >\n <Drag color=\"primary500\" />\n </DragIconButton>\n {children}\n </DragItem>\n )}\n </Wrapper>\n );\n};\n\ninterface CloneDragItemProps {\n children: RenderElementProps['children'];\n dragHandleTopMargin?: CSSProperties['marginTop'];\n}\n\n// To prevent applying opacity to the original item being dragged, display a cloned element without opacity.\nconst CloneDragItem = ({ children, dragHandleTopMargin }: CloneDragItemProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <DragItem gap={2} paddingLeft={2} alignItems=\"start\" $dragVisibility=\"visible\">\n <DragIconButton\n tag=\"div\"\n role=\"button\"\n withTooltip={false}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n $dragHandleTopMargin={dragHandleTopMargin}\n >\n <Drag color=\"neutral600\" />\n </DragIconButton>\n {children}\n </DragItem>\n );\n};\n\ninterface ExtendedRenderLeafProps extends RenderLeafProps {\n leaf: RenderLeafProps['leaf'] & { className?: string };\n}\n\nconst baseRenderLeaf = (props: ExtendedRenderLeafProps, modifiers: ModifiersStore) => {\n // Recursively wrap the children for each active modifier\n const wrappedChildren = getEntries(modifiers).reduce((currentChildren, modifierEntry) => {\n const [name, modifier] = modifierEntry;\n\n if (props.leaf[name]) {\n return modifier.renderLeaf(currentChildren);\n }\n\n return currentChildren;\n }, props.children);\n\n return (\n <span {...props.attributes} className={props.leaf.className}>\n {wrappedChildren}\n </span>\n );\n};\n\ntype BaseRenderElementProps = Direction & {\n props: RenderElementProps['children'];\n blocks: Partial<BlocksStore>;\n editor: Editor;\n isMobile: boolean;\n};\n\nconst baseRenderElement = ({\n props,\n blocks,\n editor,\n dragDirection,\n setDragDirection,\n isMobile,\n}: BaseRenderElementProps) => {\n const { element } = props;\n\n const blockMatch = Object.values(blocks).find((block) => block?.matchNode(element));\n const block = blockMatch || blocks.paragraph;\n\n if (!block) {\n return <></>;\n }\n\n const nodePath = ReactEditor.findPath(editor, element);\n\n const isDraggable = block.isDraggable?.(element) ?? true;\n\n if (!isDraggable || isMobile) {\n return block.renderElement(props);\n }\n\n return (\n <DragAndDropElement\n index={nodePath}\n setDragDirection={setDragDirection}\n dragDirection={dragDirection}\n dragHandleTopMargin={block.dragHandleTopMargin}\n >\n {block.renderElement(props)}\n </DragAndDropElement>\n );\n};\n\nconst dragNoop = () => true;\n\ninterface FileDropZoneProps {\n children: React.ReactNode;\n allowedTypes: Schema.Attribute.MediaKind[];\n onDropFiles: (\n event: React.DragEvent<HTMLElement>\n ) => (asset: Schema.Attribute.MediaValue<true>[number]) => void;\n}\n\ninterface BlocksContentProps {\n placeholder?: string;\n ariaLabelId: string;\n autoFocus?: boolean;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n}\n\nconst BlocksContent = ({\n placeholder,\n ariaLabelId,\n autoFocus,\n onFocus,\n onBlur,\n}: BlocksContentProps) => {\n const { editor, disabled, blocks, modifiers, setLiveText, isExpandedMode, flushPendingFormSync } =\n useBlocksEditorContext('BlocksContent');\n const isMobile = useIsMobile();\n const blocksRef = React.useRef<HTMLDivElement>(null);\n const { formatMessage } = useIntl();\n const [dragDirection, setDragDirection] = React.useState<DragDirection | null>(null);\n const { modalElement, handleConversionResult } = useConversionModal();\n // Registered by the Media Library: uploads files dropped onto the content\n // and hands them back to be inserted as image blocks.\n const FileDropZone = useStrapiApp(\n 'BlocksContent',\n (state) => state.components?.['media-library-file-drop-zone']\n ) as React.ComponentType<FileDropZoneProps> | undefined;\n\n // Create renderLeaf function based on the modifiers store\n const renderLeaf = React.useCallback(\n (props: ExtendedRenderLeafProps) => baseRenderLeaf(props, modifiers),\n [modifiers]\n );\n\n const handleMoveBlocks = (editor: Editor, event: React.KeyboardEvent<HTMLElement>) => {\n if (!editor.selection) return;\n\n const start = Range.start(editor.selection);\n const currentIndex = [start.path[0]];\n let newIndexPosition = 0;\n\n if (event.key === 'ArrowUp') {\n newIndexPosition = currentIndex[0] > 0 ? currentIndex[0] - 1 : currentIndex[0];\n } else {\n newIndexPosition =\n currentIndex[0] < editor.children.length - 1 ? currentIndex[0] + 1 : currentIndex[0];\n }\n\n const newIndex = [newIndexPosition];\n\n if (newIndexPosition !== currentIndex[0]) {\n Transforms.moveNodes(editor, {\n at: currentIndex,\n to: newIndex,\n });\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('components.Blocks.dnd.reorder'),\n defaultMessage: '{item}, moved. New position in the editor: {position}.',\n },\n {\n item: `${name}.${currentIndex[0] + 1}`,\n position: `${newIndex[0] + 1} of ${editor.children.length}`,\n }\n )\n );\n\n event.preventDefault();\n }\n };\n\n // Create renderElement function base on the blocks store\n const renderElement = React.useCallback(\n (props: RenderElementProps) =>\n baseRenderElement({ props, blocks, editor, dragDirection, setDragDirection, isMobile }),\n [blocks, editor, dragDirection, isMobile, setDragDirection]\n );\n\n const checkSnippet = (event: React.KeyboardEvent<HTMLElement>) => {\n // Get current text block\n if (!editor.selection) {\n return;\n }\n\n const [textNode, textNodePath] = Editor.node(editor, editor.selection.anchor.path);\n\n // Narrow the type to a text node\n if (Editor.isEditor(textNode) || textNode.type !== 'text') {\n return;\n }\n\n // Don't check for snippets if we're not at the start of a block\n if (textNodePath.at(-1) !== 0) {\n return;\n }\n\n // Check if the text node starts with a known snippet\n const blockMatchingSnippet = Object.values(blocks).find((block) => {\n return block?.snippets?.includes(textNode.text);\n });\n\n if (blockMatchingSnippet?.handleConvert) {\n // Prevent the space from being created and delete the snippet\n event.preventDefault();\n Transforms.delete(editor, {\n distance: textNode.text.length,\n unit: 'character',\n reverse: true,\n });\n\n // Convert the selected block\n const maybeRenderModal = blockMatchingSnippet.handleConvert(editor);\n handleConversionResult(maybeRenderModal);\n }\n };\n\n const handleEnter = (event: React.KeyboardEvent<HTMLElement>) => {\n if (!editor.selection) {\n return;\n }\n\n const selectedNode = editor.children[editor.selection.anchor.path[0]];\n const selectedBlock = Object.values(blocks).find((block) => block?.matchNode(selectedNode));\n if (!selectedBlock) {\n return;\n }\n\n // Allow forced line breaks when shift is pressed\n if (event.shiftKey && selectedNode.type !== 'image') {\n Transforms.insertText(editor, '\\n');\n return;\n }\n\n // Check if there's an enter handler for the selected block\n if (selectedBlock.handleEnterKey) {\n selectedBlock.handleEnterKey(editor);\n } else {\n blocks.paragraph?.handleEnterKey!(editor);\n }\n };\n\n const handleBackspaceEvent = (event: React.KeyboardEvent<HTMLElement>) => {\n if (!editor.selection) {\n return;\n }\n\n const selectedNode = editor.children[editor.selection.anchor.path[0]];\n const selectedBlock = Object.values(blocks).find((block) => block?.matchNode(selectedNode));\n\n if (!selectedBlock) {\n return;\n }\n\n if (selectedBlock.handleBackspaceKey) {\n selectedBlock.handleBackspaceKey(editor, event);\n }\n };\n\n const handleTab = (event: React.KeyboardEvent<HTMLElement>) => {\n if (!editor.selection) {\n return;\n }\n\n const selectedNode = editor.children[editor.selection.anchor.path[0]];\n const selectedBlock = Object.values(blocks).find((block) => block?.matchNode(selectedNode));\n if (!selectedBlock) {\n return;\n }\n\n event.preventDefault();\n\n if (event.shiftKey && selectedBlock.handleShiftTab) {\n // Handle Shift+Tab (unindent)\n selectedBlock.handleShiftTab(editor);\n } else if (!event.shiftKey && selectedBlock.handleTab) {\n // Handle Tab (indent)\n selectedBlock.handleTab(editor);\n }\n };\n\n const handleKeyboardShortcuts = (event: React.KeyboardEvent<HTMLElement>) => {\n const isCtrlOrCmd = event.metaKey || event.ctrlKey;\n\n if (isCtrlOrCmd) {\n // Check if there's a modifier to toggle\n Object.values(modifiers).forEach((value) => {\n if (value.isValidEventKey(event)) {\n event.preventDefault();\n value.handleToggle(editor);\n return;\n }\n });\n if (event.shiftKey && ['ArrowUp', 'ArrowDown'].includes(event.key)) {\n handleMoveBlocks(editor, event);\n }\n }\n };\n\n const handleKeyDown: React.KeyboardEventHandler<HTMLElement> = (event) => {\n // Find the right block-specific handlers for enter and backspace key presses\n switch (event.key) {\n case 'Enter':\n if (!event.nativeEvent.isComposing) {\n event.preventDefault();\n return handleEnter(event);\n }\n break;\n case 'Backspace':\n return handleBackspaceEvent(event);\n case 'Tab':\n return handleTab(event);\n case 'Escape':\n return ReactEditor.blur(editor);\n }\n handleKeyboardShortcuts(event);\n // Check if a snippet was triggered\n if (event.key === ' ') {\n checkSnippet(event);\n }\n };\n\n /**\n * scrollSelectionIntoView : Slate's default method to scroll a DOM selection into the view,\n * thats shifting layout for us when there is a overflowY:scroll on the viewport.\n * We are overriding it to check if the selection is not fully within the visible area of the editor,\n * we use scrollBy one line to the bottom\n */\n\n const handleScrollSelectionIntoView = React.useCallback(() => {\n if (!editor.selection || !blocksRef.current) {\n return;\n }\n\n const domRange = ReactEditor.toDOMRange(editor, editor.selection);\n const domRect = domRange.getBoundingClientRect();\n\n const editorRect = blocksRef.current.getBoundingClientRect();\n\n // Check if the selection is not fully within the visible area of the editor\n if (domRect.top < editorRect.top || domRect.bottom > editorRect.bottom) {\n // Scroll by one line to the bottom\n blocksRef.current.scrollBy({\n top: 28, // 20px is the line-height + 8px line gap\n behavior: 'smooth',\n });\n }\n }, [editor]);\n\n const content = (\n <Box\n ref={blocksRef}\n grow={1}\n width=\"100%\"\n overflow=\"auto\"\n fontSize={2}\n background=\"neutral0\"\n color=\"neutral800\"\n lineHeight={6}\n paddingLeft={{ initial: 4, medium: 0 }}\n paddingRight={7}\n paddingTop={6}\n paddingBottom={3}\n >\n <StyledEditable\n aria-labelledby={ariaLabelId}\n readOnly={disabled}\n placeholder={placeholder}\n $isExpandedMode={isExpandedMode}\n decorate={decorateCode}\n renderElement={renderElement}\n renderLeaf={renderLeaf}\n onKeyDown={handleKeyDown}\n scrollSelectionIntoView={handleScrollSelectionIntoView}\n autoFocus={autoFocus}\n onFocus={onFocus}\n onBlur={(event) => {\n flushPendingFormSync();\n onBlur?.(event);\n }}\n // As we have our own handler to drag and drop the elements returing true will skip slate's own event handler\n onDrop={dragNoop}\n onDragStart={dragNoop}\n />\n {modalElement}\n </Box>\n );\n\n if (!FileDropZone || disabled) {\n return content;\n }\n\n return (\n <FileDropZone\n allowedTypes={['images']}\n onDropFiles={(event) => createDroppedImagesInserter(editor, event)}\n >\n {content}\n </FileDropZone>\n );\n};\n\nexport { BlocksContent, BlocksContentProps };\n"],"names":["StyledEditable","styled","Editable","theme","spaces","props","$isExpandedMode","breakpoints","medium","Wrapper","Box","$isOverDropTarget","DropPlaceholder","dragDirection","placeholderMargin","css","DIRECTIONS","UPWARD","DOWNWARD","DragItem","Flex","$dragVisibility","DragIconButton","IconButton","borderRadius","$dragHandleTopMargin","colors","neutral100","neutral150","neutral500","DragAndDropElement","children","index","setDragDirection","dragHandleTopMargin","editor","disabled","name","setLiveText","useBlocksEditorContext","formatMessage","useIntl","dragVisibility","setDragVisibility","React","useState","isDragAndDropEnabled","handleMoveBlock","useCallback","newIndex","currentIndex","Transforms","moveNodes","at","to","currentIndexPosition","slice","newIndexPosition","id","getTranslation","defaultMessage","item","join","position","length","handlerId","isDragging","isOverDropTarget","direction","blockRef","dropRef","dragRef","useDragAndDrop","type","ItemTypes","BLOCKS","displayedValue","onDropItem","composedBoxRefs","useComposedRefs","useEffect","selection","_jsxs","ref","_jsx","borderStyle","borderColor","borderWidth","width","marginLeft","as","CloneDragItem","data-handler-id","gap","paddingLeft","alignItems","onDragStart","event","target","currentTarget","getAttribute","preventDefault","style","opacity","undefined","onDragEnd","onMouseEnter","onFocusCapture","onBlurCapture","onMouseLeave","aria-disabled","tag","contentEditable","role","tabIndex","withTooltip","label","onClick","e","stopPropagation","draggable","Drag","color","baseRenderLeaf","modifiers","wrappedChildren","getEntries","reduce","currentChildren","modifierEntry","modifier","leaf","renderLeaf","span","attributes","className","baseRenderElement","blocks","isMobile","element","blockMatch","Object","values","find","block","matchNode","paragraph","_Fragment","nodePath","ReactEditor","findPath","isDraggable","renderElement","dragNoop","BlocksContent","placeholder","ariaLabelId","autoFocus","onFocus","onBlur","isExpandedMode","flushPendingFormSync","useIsMobile","blocksRef","useRef","modalElement","handleConversionResult","useConversionModal","FileDropZone","useStrapiApp","state","components","handleMoveBlocks","start","Range","path","key","checkSnippet","textNode","textNodePath","Editor","node","anchor","isEditor","blockMatchingSnippet","snippets","includes","text","handleConvert","delete","distance","unit","reverse","maybeRenderModal","handleEnter","selectedNode","selectedBlock","shiftKey","insertText","handleEnterKey","handleBackspaceEvent","handleBackspaceKey","handleTab","handleShiftTab","handleKeyboardShortcuts","isCtrlOrCmd","metaKey","ctrlKey","forEach","value","isValidEventKey","handleToggle","handleKeyDown","nativeEvent","isComposing","blur","handleScrollSelectionIntoView","current","domRange","toDOMRange","domRect","getBoundingClientRect","editorRect","top","bottom","scrollBy","behavior","content","grow","overflow","fontSize","background","lineHeight","initial","paddingRight","paddingTop","paddingBottom","aria-labelledby","readOnly","decorate","decorateCode","onKeyDown","scrollSelectionIntoView","onDrop","allowedTypes","onDropFiles","createDroppedImagesInserter"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
1
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { useIsMobile } from '@strapi/admin/strapi-admin';
3
+ import { useIsMobile, useStrapiApp } from '@strapi/admin/strapi-admin';
4
4
  import { Box, Flex, IconButton, useComposedRefs } from '@strapi/design-system';
5
5
  import { Drag } from '@strapi/icons';
6
6
  import { useIntl } from 'react-intl';
@@ -11,6 +11,7 @@ import { ItemTypes } from '../../../../../constants/dragAndDrop.mjs';
11
11
  import { DIRECTIONS, useDragAndDrop } from '../../../../../hooks/useDragAndDrop.mjs';
12
12
  import { getTranslation } from '../../../../../utils/translations.mjs';
13
13
  import { decorateCode } from './Blocks/Code.mjs';
14
+ import { createDroppedImagesInserter } from './Blocks/Image.mjs';
14
15
  import { useBlocksEditorContext } from './BlocksEditor.mjs';
15
16
  import { useConversionModal } from './BlocksToolbar.mjs';
16
17
  import { getEntries } from './utils/types.mjs';
@@ -296,6 +297,9 @@ const BlocksContent = ({ placeholder, ariaLabelId, autoFocus, onFocus, onBlur })
296
297
  const { formatMessage } = useIntl();
297
298
  const [dragDirection, setDragDirection] = React.useState(null);
298
299
  const { modalElement, handleConversionResult } = useConversionModal();
300
+ // Registered by the Media Library: uploads files dropped onto the content
301
+ // and hands them back to be inserted as image blocks.
302
+ const FileDropZone = useStrapiApp('BlocksContent', (state)=>state.components?.['media-library-file-drop-zone']);
299
303
  // Create renderLeaf function based on the modifiers store
300
304
  const renderLeaf = React.useCallback((props)=>baseRenderLeaf(props, modifiers), [
301
305
  modifiers
@@ -492,7 +496,7 @@ const BlocksContent = ({ placeholder, ariaLabelId, autoFocus, onFocus, onBlur })
492
496
  }, [
493
497
  editor
494
498
  ]);
495
- return /*#__PURE__*/ jsxs(Box, {
499
+ const content = /*#__PURE__*/ jsxs(Box, {
496
500
  ref: blocksRef,
497
501
  grow: 1,
498
502
  width: "100%",
@@ -532,6 +536,16 @@ const BlocksContent = ({ placeholder, ariaLabelId, autoFocus, onFocus, onBlur })
532
536
  modalElement
533
537
  ]
534
538
  });
539
+ if (!FileDropZone || disabled) {
540
+ return content;
541
+ }
542
+ return /*#__PURE__*/ jsx(FileDropZone, {
543
+ allowedTypes: [
544
+ 'images'
545
+ ],
546
+ onDropFiles: (event)=>createDroppedImagesInserter(editor, event),
547
+ children: content
548
+ });
535
549
  };
536
550
 
537
551
  export { BlocksContent };