@plone/volto 18.0.0-alpha.3 → 18.0.0-alpha.4

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 (324) hide show
  1. package/.eslintrc +3 -3
  2. package/.prettierignore +8 -0
  3. package/.prettierrc +12 -0
  4. package/{packages/registry/.release-it.json → .release-it.json} +11 -6
  5. package/CHANGELOG.md +29 -4
  6. package/package.json +57 -127
  7. package/razzle.config.js +4 -7
  8. package/src/components/manage/Controlpanels/Users/UserGroupMembershipControlPanel.jsx +2 -2
  9. package/src/components/manage/Form/Form.jsx +5 -2
  10. package/src/config/index.js +0 -4
  11. package/src/icons/divide-horizontal.svg +0 -0
  12. package/src/icons/divide-vertical.svg +0 -0
  13. package/src/icons/hero.svg +0 -0
  14. package/src/icons/slider.svg +0 -0
  15. package/src/icons/summary.svg +0 -0
  16. package/src/middleware/api.js +1 -1
  17. package/theme/themes/default/elements/icon.overrides +0 -0
  18. package/theme/themes/default/globals/reset.overrides +0 -0
  19. package/theme/themes/default/globals/site.variables +0 -0
  20. package/theme/themes/default/modules/dropdown.overrides +0 -0
  21. package/theme/themes/default/modules/dropdown.variables +0 -0
  22. package/theme/themes/default/modules/modal.variables +0 -0
  23. package/theme/themes/default/modules/video.overrides +0 -0
  24. package/theme/themes/default/modules/video.variables +0 -0
  25. package/theme/themes/pastanaga/assets/fonts/icons.eot +0 -0
  26. package/theme/themes/pastanaga/assets/fonts/icons.svg +0 -0
  27. package/theme/themes/pastanaga/assets/fonts/icons.ttf +0 -0
  28. package/theme/themes/pastanaga/assets/fonts/icons.woff +0 -0
  29. package/theme/themes/pastanaga/globals/reset.overrides +0 -0
  30. package/theme/themes/pastanaga/globals/site.variables +0 -0
  31. package/theme/themes/pastanaga/modules/dropdown.variables +0 -0
  32. package/theme/themes/pastanaga/modules/modal.variables +0 -0
  33. package/theme/themes/pastanaga/modules/video.overrides +0 -0
  34. package/theme/themes/pastanaga/modules/video.variables +0 -0
  35. package/tsconfig.json +1 -4
  36. package/types/config/RichTextEditor/index.d.ts +5 -8
  37. package/types/helpers/AsyncConnect/index.d.ts +2 -2
  38. package/types/helpers/Url/Url.d.ts +3 -3
  39. package/types/icons/load-icons.d.ts +1 -1
  40. package/webpack-plugins/webpack-less-plugin.js +1 -0
  41. package/CODE_OF_CONDUCT.md +0 -13
  42. package/CONTRIBUTING.md +0 -7
  43. package/README.md +0 -154
  44. package/RELEASING.md +0 -73
  45. package/ROADMAP.md +0 -30
  46. package/SECURITY.md +0 -14
  47. package/apps/plone/node_modules/.bin/acorn +0 -17
  48. package/apps/plone/node_modules/.bin/addon +0 -17
  49. package/apps/plone/node_modules/.bin/autoprefixer +0 -17
  50. package/apps/plone/node_modules/.bin/browserslist +0 -17
  51. package/apps/plone/node_modules/.bin/build-storybook +0 -17
  52. package/apps/plone/node_modules/.bin/changelogupdater +0 -17
  53. package/apps/plone/node_modules/.bin/eslint +0 -17
  54. package/apps/plone/node_modules/.bin/eslint-config-prettier +0 -17
  55. package/apps/plone/node_modules/.bin/i18n +0 -17
  56. package/apps/plone/node_modules/.bin/jest +0 -17
  57. package/apps/plone/node_modules/.bin/lessc +0 -17
  58. package/apps/plone/node_modules/.bin/missdev +0 -17
  59. package/apps/plone/node_modules/.bin/prettier +0 -17
  60. package/apps/plone/node_modules/.bin/razzle +0 -17
  61. package/apps/plone/node_modules/.bin/server-test +0 -17
  62. package/apps/plone/node_modules/.bin/start-server-and-test +0 -17
  63. package/apps/plone/node_modules/.bin/start-storybook +0 -17
  64. package/apps/plone/node_modules/.bin/start-test +0 -17
  65. package/apps/plone/node_modules/.bin/storybook-server +0 -17
  66. package/apps/plone/node_modules/.bin/stylelint +0 -17
  67. package/apps/plone/node_modules/.bin/tlds +0 -17
  68. package/apps/plone/node_modules/.bin/ts-jest +0 -17
  69. package/apps/plone/node_modules/.bin/tsc +0 -17
  70. package/apps/plone/node_modules/.bin/tsserver +0 -17
  71. package/apps/plone/node_modules/.bin/uuid +0 -17
  72. package/apps/plone/node_modules/.bin/webpack +0 -17
  73. package/apps/plone/node_modules/.bin/webpack-dev-server +0 -17
  74. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/acorn +0 -17
  75. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/addon +0 -17
  76. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/browserslist +0 -17
  77. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/changelogupdater +0 -17
  78. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/eslint +0 -17
  79. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/eslint-config-prettier +0 -17
  80. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/i18n +0 -17
  81. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/prettier +0 -17
  82. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/release-it +0 -17
  83. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/stylelint +0 -17
  84. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/tsc +0 -17
  85. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/tsserver +0 -17
  86. package/logos/Logo.png +0 -0
  87. package/logos/VoltoLogoEra2-dark-mode.png +0 -0
  88. package/logos/VoltoLogoEra2.png +0 -0
  89. package/logos/volto-colorful.png +0 -0
  90. package/logos/volto-colorful.svg +0 -35
  91. package/logos/volto-guide.png +0 -0
  92. package/logos/volto-h-transparent.svg +0 -6
  93. package/logos/volto-transparent.png +0 -0
  94. package/logos/volto-transparent.svg +0 -19
  95. package/logos/volto-transparent2.svg +0 -5
  96. package/logos/volto-yellow.svg +0 -29
  97. package/logos/volto.sketch +0 -0
  98. package/packages/README.md +0 -7
  99. package/packages/registry/.towncrier/towncrier_template.jinja +0 -10
  100. package/packages/registry/CHANGELOG.md +0 -16
  101. package/packages/registry/README.md +0 -207
  102. package/packages/registry/addon-registry.js +0 -603
  103. package/packages/registry/create-addons-loader.js +0 -116
  104. package/packages/registry/create-theme-addons-loader.js +0 -78
  105. package/packages/registry/news/.gitkeep +0 -0
  106. package/packages/registry/node_modules/.bin/browserslist +0 -17
  107. package/packages/registry/node_modules/.bin/parcel +0 -17
  108. package/packages/registry/node_modules/.bin/release-it +0 -17
  109. package/packages/registry/node_modules/.bin/tsc +0 -17
  110. package/packages/registry/node_modules/.bin/tsserver +0 -17
  111. package/packages/registry/node_modules/.bin/vitest +0 -17
  112. package/packages/registry/package.json +0 -76
  113. package/packages/registry/src/index.ts +0 -174
  114. package/packages/registry/src/registry.test.js +0 -111
  115. package/packages/registry/tsconfig.json +0 -32
  116. package/packages/scripts/CHANGELOG.md +0 -173
  117. package/packages/scripts/README.md +0 -128
  118. package/packages/scripts/addon/consolidate.js +0 -28
  119. package/packages/scripts/addon/generators.js +0 -213
  120. package/packages/scripts/addon/getAddonInfo.js +0 -65
  121. package/packages/scripts/addon/index.js +0 -88
  122. package/packages/scripts/addon/utils.js +0 -44
  123. package/packages/scripts/backportpr.js +0 -75
  124. package/packages/scripts/changelogupdater.cjs +0 -94
  125. package/packages/scripts/corepackagebump.js +0 -20
  126. package/packages/scripts/i18n.cjs +0 -310
  127. package/packages/scripts/package.json +0 -76
  128. package/packages/scripts/templates/towncrier_template.jinja +0 -10
  129. package/packages/types/Blocks/View.ts +0 -11
  130. package/packages/types/actions.ts +0 -15
  131. package/packages/types/breadcrumbs.ts +0 -10
  132. package/packages/types/config/Blocks.ts +0 -153
  133. package/packages/types/config/Content.ts +0 -62
  134. package/packages/types/config/Settings.ts +0 -86
  135. package/packages/types/config/Views.ts +0 -15
  136. package/packages/types/config/Widgets.ts +0 -7
  137. package/packages/types/config/index.ts +0 -21
  138. package/packages/types/content/common.ts +0 -60
  139. package/packages/types/content/get.ts +0 -66
  140. package/packages/types/index.ts +0 -0
  141. package/packages/types/navigation.ts +0 -12
  142. package/packages/types/node_modules/.bin/browserslist +0 -17
  143. package/packages/types/node_modules/.bin/parcel +0 -17
  144. package/packages/types/node_modules/.bin/release-it +0 -17
  145. package/packages/types/node_modules/.bin/tsc +0 -17
  146. package/packages/types/node_modules/.bin/tsserver +0 -17
  147. package/packages/types/package.json +0 -64
  148. package/packages/types/types.ts +0 -61
  149. package/packages/volto-slate/.i18n.babel.config.js +0 -1
  150. package/packages/volto-slate/README.md +0 -4
  151. package/packages/volto-slate/build/messages/src/blocks/Table/TableBlockEdit.json +0 -90
  152. package/packages/volto-slate/build/messages/src/blocks/Text/DefaultTextBlockEditor.json +0 -6
  153. package/packages/volto-slate/build/messages/src/blocks/Text/DetachedTextBlockEditor.json +0 -6
  154. package/packages/volto-slate/build/messages/src/blocks/Text/SlashMenu.json +0 -6
  155. package/packages/volto-slate/build/messages/src/editor/plugins/AdvancedLink/index.json +0 -10
  156. package/packages/volto-slate/build/messages/src/editor/plugins/Link/index.json +0 -10
  157. package/packages/volto-slate/build/messages/src/editor/plugins/Table/index.json +0 -30
  158. package/packages/volto-slate/build/messages/src/elementEditor/messages.json +0 -10
  159. package/packages/volto-slate/build/messages/src/widgets/HtmlSlateWidget.json +0 -6
  160. package/packages/volto-slate/build/messages/src/widgets/RichTextWidgetView.json +0 -6
  161. package/packages/volto-slate/locales/de/LC_MESSAGES/volto.po +0 -148
  162. package/packages/volto-slate/locales/en/LC_MESSAGES/volto.po +0 -148
  163. package/packages/volto-slate/locales/volto.pot +0 -182
  164. package/packages/volto-slate/package.json +0 -43
  165. package/packages/volto-slate/src/actions/content.js +0 -30
  166. package/packages/volto-slate/src/actions/index.js +0 -3
  167. package/packages/volto-slate/src/actions/plugins.js +0 -9
  168. package/packages/volto-slate/src/actions/selection.js +0 -22
  169. package/packages/volto-slate/src/blocks/Table/Cell.jsx +0 -87
  170. package/packages/volto-slate/src/blocks/Table/Cell.test.js +0 -54
  171. package/packages/volto-slate/src/blocks/Table/TableBlockEdit.jsx +0 -694
  172. package/packages/volto-slate/src/blocks/Table/TableBlockEdit.test.js +0 -40
  173. package/packages/volto-slate/src/blocks/Table/TableBlockView.jsx +0 -150
  174. package/packages/volto-slate/src/blocks/Table/TableBlockView.test.js +0 -49
  175. package/packages/volto-slate/src/blocks/Table/deconstruct.js +0 -113
  176. package/packages/volto-slate/src/blocks/Table/extensions/normalizeTable.js +0 -5
  177. package/packages/volto-slate/src/blocks/Table/index.js +0 -60
  178. package/packages/volto-slate/src/blocks/Table/schema.js +0 -122
  179. package/packages/volto-slate/src/blocks/Text/DefaultTextBlockEditor.jsx +0 -304
  180. package/packages/volto-slate/src/blocks/Text/DetachedTextBlockEditor.jsx +0 -77
  181. package/packages/volto-slate/src/blocks/Text/MarkdownIntroduction.jsx +0 -59
  182. package/packages/volto-slate/src/blocks/Text/PluginSidebar.jsx +0 -18
  183. package/packages/volto-slate/src/blocks/Text/ShortcutListing.jsx +0 -28
  184. package/packages/volto-slate/src/blocks/Text/SlashMenu.jsx +0 -203
  185. package/packages/volto-slate/src/blocks/Text/TextBlockEdit.jsx +0 -38
  186. package/packages/volto-slate/src/blocks/Text/TextBlockEdit.test.js +0 -107
  187. package/packages/volto-slate/src/blocks/Text/TextBlockSchema.js +0 -54
  188. package/packages/volto-slate/src/blocks/Text/TextBlockView.jsx +0 -31
  189. package/packages/volto-slate/src/blocks/Text/css/editor.css +0 -18
  190. package/packages/volto-slate/src/blocks/Text/extensions/Readme.md +0 -49
  191. package/packages/volto-slate/src/blocks/Text/extensions/breakList.js +0 -100
  192. package/packages/volto-slate/src/blocks/Text/extensions/index.js +0 -6
  193. package/packages/volto-slate/src/blocks/Text/extensions/insertBreak.js +0 -57
  194. package/packages/volto-slate/src/blocks/Text/extensions/isSelected.js +0 -7
  195. package/packages/volto-slate/src/blocks/Text/extensions/normalizeExternalData.js +0 -7
  196. package/packages/volto-slate/src/blocks/Text/extensions/withDeserializers.js +0 -87
  197. package/packages/volto-slate/src/blocks/Text/extensions/withLists.js +0 -5
  198. package/packages/volto-slate/src/blocks/Text/index.js +0 -171
  199. package/packages/volto-slate/src/blocks/Text/keyboard/backspaceInList.js +0 -58
  200. package/packages/volto-slate/src/blocks/Text/keyboard/breakBlocks.js +0 -3
  201. package/packages/volto-slate/src/blocks/Text/keyboard/cancelEsc.js +0 -7
  202. package/packages/volto-slate/src/blocks/Text/keyboard/indentListItems.js +0 -240
  203. package/packages/volto-slate/src/blocks/Text/keyboard/index.js +0 -52
  204. package/packages/volto-slate/src/blocks/Text/keyboard/joinBlocks.js +0 -180
  205. package/packages/volto-slate/src/blocks/Text/keyboard/moveListItems.js +0 -124
  206. package/packages/volto-slate/src/blocks/Text/keyboard/slashMenu.js +0 -19
  207. package/packages/volto-slate/src/blocks/Text/keyboard/softBreak.js +0 -7
  208. package/packages/volto-slate/src/blocks/Text/keyboard/traverseBlocks.js +0 -81
  209. package/packages/volto-slate/src/blocks/Text/keyboard/unwrapEmptyString.js +0 -26
  210. package/packages/volto-slate/src/blocks/Text/schema.js +0 -39
  211. package/packages/volto-slate/src/constants.js +0 -123
  212. package/packages/volto-slate/src/editor/EditorContext.jsx +0 -5
  213. package/packages/volto-slate/src/editor/EditorReference.jsx +0 -22
  214. package/packages/volto-slate/src/editor/SlateEditor.jsx +0 -375
  215. package/packages/volto-slate/src/editor/config.jsx +0 -344
  216. package/packages/volto-slate/src/editor/decorate.js +0 -68
  217. package/packages/volto-slate/src/editor/deserialize.js +0 -185
  218. package/packages/volto-slate/src/editor/extensions/index.js +0 -6
  219. package/packages/volto-slate/src/editor/extensions/insertBreak.js +0 -15
  220. package/packages/volto-slate/src/editor/extensions/insertData.js +0 -159
  221. package/packages/volto-slate/src/editor/extensions/isInline.js +0 -14
  222. package/packages/volto-slate/src/editor/extensions/normalizeExternalData.js +0 -8
  223. package/packages/volto-slate/src/editor/extensions/normalizeNode.js +0 -48
  224. package/packages/volto-slate/src/editor/extensions/withDeserializers.js +0 -15
  225. package/packages/volto-slate/src/editor/extensions/withTestingFeatures.jsx +0 -84
  226. package/packages/volto-slate/src/editor/index.js +0 -14
  227. package/packages/volto-slate/src/editor/less/editor.less +0 -173
  228. package/packages/volto-slate/src/editor/less/globals.less +0 -18
  229. package/packages/volto-slate/src/editor/less/slate.less +0 -28
  230. package/packages/volto-slate/src/editor/plugins/AdvancedLink/deserialize.js +0 -90
  231. package/packages/volto-slate/src/editor/plugins/AdvancedLink/extensions.js +0 -32
  232. package/packages/volto-slate/src/editor/plugins/AdvancedLink/index.js +0 -50
  233. package/packages/volto-slate/src/editor/plugins/AdvancedLink/render.jsx +0 -37
  234. package/packages/volto-slate/src/editor/plugins/AdvancedLink/schema.js +0 -114
  235. package/packages/volto-slate/src/editor/plugins/AdvancedLink/styles.less +0 -8
  236. package/packages/volto-slate/src/editor/plugins/Blockquote/index.js +0 -30
  237. package/packages/volto-slate/src/editor/plugins/Callout/index.js +0 -34
  238. package/packages/volto-slate/src/editor/plugins/Image/deconstruct.js +0 -30
  239. package/packages/volto-slate/src/editor/plugins/Image/extensions.js +0 -51
  240. package/packages/volto-slate/src/editor/plugins/Image/index.js +0 -11
  241. package/packages/volto-slate/src/editor/plugins/Image/render.jsx +0 -22
  242. package/packages/volto-slate/src/editor/plugins/Link/extensions.js +0 -58
  243. package/packages/volto-slate/src/editor/plugins/Link/index.js +0 -164
  244. package/packages/volto-slate/src/editor/plugins/Link/render.jsx +0 -54
  245. package/packages/volto-slate/src/editor/plugins/Markdown/constants.js +0 -81
  246. package/packages/volto-slate/src/editor/plugins/Markdown/extensions.js +0 -334
  247. package/packages/volto-slate/src/editor/plugins/Markdown/index.js +0 -28
  248. package/packages/volto-slate/src/editor/plugins/Markdown/utils.js +0 -198
  249. package/packages/volto-slate/src/editor/plugins/StyleMenu/StyleMenu.jsx +0 -153
  250. package/packages/volto-slate/src/editor/plugins/StyleMenu/index.js +0 -19
  251. package/packages/volto-slate/src/editor/plugins/StyleMenu/style.less +0 -29
  252. package/packages/volto-slate/src/editor/plugins/StyleMenu/utils.js +0 -168
  253. package/packages/volto-slate/src/editor/plugins/Table/TableButton.jsx +0 -142
  254. package/packages/volto-slate/src/editor/plugins/Table/TableCell.jsx +0 -44
  255. package/packages/volto-slate/src/editor/plugins/Table/TableContainer.jsx +0 -37
  256. package/packages/volto-slate/src/editor/plugins/Table/TableSizePicker.jsx +0 -83
  257. package/packages/volto-slate/src/editor/plugins/Table/extensions.js +0 -87
  258. package/packages/volto-slate/src/editor/plugins/Table/index.js +0 -390
  259. package/packages/volto-slate/src/editor/plugins/Table/less/public.less +0 -29
  260. package/packages/volto-slate/src/editor/plugins/Table/less/table.less +0 -28
  261. package/packages/volto-slate/src/editor/plugins/Table/render.jsx +0 -30
  262. package/packages/volto-slate/src/editor/plugins/index.js +0 -19
  263. package/packages/volto-slate/src/editor/render.jsx +0 -224
  264. package/packages/volto-slate/src/editor/ui/BasicToolbar.jsx +0 -11
  265. package/packages/volto-slate/src/editor/ui/BlockButton.jsx +0 -31
  266. package/packages/volto-slate/src/editor/ui/ClearFormattingButton.jsx +0 -21
  267. package/packages/volto-slate/src/editor/ui/ExpandedToolbar.jsx +0 -18
  268. package/packages/volto-slate/src/editor/ui/Expando.jsx +0 -5
  269. package/packages/volto-slate/src/editor/ui/InlineToolbar.jsx +0 -73
  270. package/packages/volto-slate/src/editor/ui/MarkButton.jsx +0 -23
  271. package/packages/volto-slate/src/editor/ui/MarkElementButton.jsx +0 -30
  272. package/packages/volto-slate/src/editor/ui/Menu.jsx +0 -13
  273. package/packages/volto-slate/src/editor/ui/PositionedToolbar.jsx +0 -32
  274. package/packages/volto-slate/src/editor/ui/Separator.jsx +0 -7
  275. package/packages/volto-slate/src/editor/ui/SlateContextToolbar.jsx +0 -13
  276. package/packages/volto-slate/src/editor/ui/SlateToolbar.jsx +0 -96
  277. package/packages/volto-slate/src/editor/ui/Toolbar.jsx +0 -103
  278. package/packages/volto-slate/src/editor/ui/ToolbarButton.jsx +0 -33
  279. package/packages/volto-slate/src/editor/ui/ToolbarButton.test.js +0 -25
  280. package/packages/volto-slate/src/editor/ui/index.js +0 -15
  281. package/packages/volto-slate/src/editor/utils.js +0 -248
  282. package/packages/volto-slate/src/elementEditor/ContextButtons.jsx +0 -56
  283. package/packages/volto-slate/src/elementEditor/PluginEditor.jsx +0 -124
  284. package/packages/volto-slate/src/elementEditor/Readme.md +0 -6
  285. package/packages/volto-slate/src/elementEditor/SchemaProvider.jsx +0 -3
  286. package/packages/volto-slate/src/elementEditor/SidebarEditor.jsx +0 -46
  287. package/packages/volto-slate/src/elementEditor/ToolbarButton.jsx +0 -44
  288. package/packages/volto-slate/src/elementEditor/index.js +0 -5
  289. package/packages/volto-slate/src/elementEditor/makeInlineElementPlugin.js +0 -100
  290. package/packages/volto-slate/src/elementEditor/messages.js +0 -14
  291. package/packages/volto-slate/src/elementEditor/utils.js +0 -226
  292. package/packages/volto-slate/src/hooks/index.js +0 -3
  293. package/packages/volto-slate/src/hooks/useEditorContext.js +0 -6
  294. package/packages/volto-slate/src/hooks/useIsomorphicLayoutEffect.js +0 -7
  295. package/packages/volto-slate/src/hooks/useSelectionPosition.js +0 -25
  296. package/packages/volto-slate/src/i18n.js +0 -180
  297. package/packages/volto-slate/src/icons/hashlink.svg +0 -57
  298. package/packages/volto-slate/src/index.js +0 -61
  299. package/packages/volto-slate/src/reducers/content.js +0 -74
  300. package/packages/volto-slate/src/reducers/index.js +0 -3
  301. package/packages/volto-slate/src/reducers/plugins.js +0 -17
  302. package/packages/volto-slate/src/reducers/selection.js +0 -16
  303. package/packages/volto-slate/src/utils/blocks.js +0 -375
  304. package/packages/volto-slate/src/utils/blocks.test.js +0 -138
  305. package/packages/volto-slate/src/utils/editor.js +0 -31
  306. package/packages/volto-slate/src/utils/image.js +0 -25
  307. package/packages/volto-slate/src/utils/index.js +0 -11
  308. package/packages/volto-slate/src/utils/internals.js +0 -46
  309. package/packages/volto-slate/src/utils/lists.js +0 -92
  310. package/packages/volto-slate/src/utils/marks.js +0 -104
  311. package/packages/volto-slate/src/utils/mime-types.js +0 -24
  312. package/packages/volto-slate/src/utils/nodes.js +0 -4
  313. package/packages/volto-slate/src/utils/ops.js +0 -20
  314. package/packages/volto-slate/src/utils/random.js +0 -17
  315. package/packages/volto-slate/src/utils/selection.js +0 -236
  316. package/packages/volto-slate/src/utils/slate-string-utils.js +0 -408
  317. package/packages/volto-slate/src/utils/volto-blocks.js +0 -314
  318. package/packages/volto-slate/src/widgets/ErrorBoundary.jsx +0 -27
  319. package/packages/volto-slate/src/widgets/HtmlSlateWidget.jsx +0 -139
  320. package/packages/volto-slate/src/widgets/ObjectByTypeWidget.jsx +0 -49
  321. package/packages/volto-slate/src/widgets/RichTextWidget.jsx +0 -72
  322. package/packages/volto-slate/src/widgets/RichTextWidgetView.jsx +0 -37
  323. package/packages/volto-slate/src/widgets/style.css +0 -21
  324. package/types/components/manage/Blocks/Video/Body.test.d.ts +0 -1
@@ -1,694 +0,0 @@
1
- /**
2
- * Slate Table block editor.
3
- * @module volto-slate/blocks/Table/Edit
4
- */
5
-
6
- import React, { Component } from 'react';
7
- import PropTypes from 'prop-types';
8
- import { map, remove } from 'lodash';
9
- import { Button, Table } from 'semantic-ui-react';
10
- import cx from 'classnames';
11
- import { defineMessages, injectIntl } from 'react-intl';
12
-
13
- import Cell from './Cell';
14
- import { BlockDataForm, Icon, SidebarPortal } from '@plone/volto/components';
15
- import TableSchema from './schema';
16
-
17
- import rowBeforeSVG from '@plone/volto/icons/row-before.svg';
18
- import rowAfterSVG from '@plone/volto/icons/row-after.svg';
19
- import colBeforeSVG from '@plone/volto/icons/column-before.svg';
20
- import colAfterSVG from '@plone/volto/icons/column-after.svg';
21
- import rowDeleteSVG from '@plone/volto/icons/row-delete.svg';
22
- import colDeleteSVG from '@plone/volto/icons/column-delete.svg';
23
-
24
- /**
25
- * Returns a random string of 32 digits.
26
- */
27
- const getId = () => Math.floor(Math.random() * Math.pow(2, 24)).toString(32);
28
-
29
- /**
30
- * @returns {object} An empty Slate paragraph (a simple Slate block node with
31
- * type set to "p" and a `Text` child with an empty string).
32
- */
33
- function getEmptyParagraph() {
34
- return [{ type: 'p', children: [{ text: '' }] }];
35
- }
36
-
37
- /**
38
- * @param {string} type The type of the newly created cell: either 'header' or
39
- * 'data', by default it is 'data'.
40
- * @returns {object} A new cell object containing three properties: `key`,
41
- * `type` and `value`.
42
- */
43
- const emptyCell = (type = 'data') => ({
44
- key: getId(),
45
- type: type,
46
- value: getEmptyParagraph(),
47
- });
48
-
49
- /**
50
- * @param {Array[object]} cells Array of placeholders, each of them will be
51
- * replaced in the newly created row with an empty cell. (Practically, just the
52
- * length of the array matters.)
53
- * @returns {object} A new row object containing the keys `key` and `cells`.
54
- */
55
- const emptyRow = (cells) => ({
56
- key: getId(),
57
- cells: map(cells, () => emptyCell()),
58
- });
59
-
60
- /**
61
- * The initial value for the displayed table's data. The IDs of the rows and
62
- * cells are computed here only once, so each new table has the same IDs
63
- * initially, but this does not have bad consequences since the key has
64
- * relevance only in the context in which it is used.
65
- */
66
- const initialTable = {
67
- hideHeaders: false,
68
- fixed: true,
69
- compact: false,
70
- basic: false,
71
- celled: true,
72
- inverted: false,
73
- striped: false,
74
- rows: [
75
- {
76
- key: getId(),
77
- cells: [
78
- {
79
- key: getId(),
80
- type: 'header',
81
- value: getEmptyParagraph(),
82
- },
83
- {
84
- key: getId(),
85
- type: 'header',
86
- value: getEmptyParagraph(),
87
- },
88
- ],
89
- },
90
- {
91
- key: getId(),
92
- cells: [
93
- {
94
- key: getId(),
95
- type: 'data',
96
- value: getEmptyParagraph(),
97
- },
98
- {
99
- key: getId(),
100
- type: 'data',
101
- value: getEmptyParagraph(),
102
- },
103
- ],
104
- },
105
- ],
106
- };
107
-
108
- const messages = defineMessages({
109
- insertRowBefore: {
110
- id: 'Insert row before',
111
- defaultMessage: 'Insert row before',
112
- },
113
- insertRowAfter: {
114
- id: 'Insert row after',
115
- defaultMessage: 'Insert row after',
116
- },
117
- deleteRow: {
118
- id: 'Delete row',
119
- defaultMessage: 'Delete row',
120
- },
121
- insertColBefore: {
122
- id: 'Insert col before',
123
- defaultMessage: 'Insert col before',
124
- },
125
- insertColAfter: {
126
- id: 'Insert col after',
127
- defaultMessage: 'Insert col after',
128
- },
129
- deleteCol: {
130
- id: 'Delete col',
131
- defaultMessage: 'Delete col',
132
- },
133
- left: {
134
- id: 'Left',
135
- defaultMessage: 'Left',
136
- },
137
- center: {
138
- id: 'Center',
139
- defaultMessage: 'Center',
140
- },
141
- right: {
142
- id: 'Right',
143
- defaultMessage: 'Right',
144
- },
145
- bottom: {
146
- id: 'Bottom',
147
- defaultMessage: 'Bottom',
148
- },
149
- middle: {
150
- id: 'Middle',
151
- defaultMessage: 'Middle',
152
- },
153
- top: {
154
- id: 'Top',
155
- defaultMessage: 'Top',
156
- },
157
- });
158
-
159
- /**
160
- * Edit component for the Slate Table block type in Volto.
161
- * @class Edit
162
- * @extends Component
163
- */
164
- class Edit extends Component {
165
- /**
166
- * Property types.
167
- * @property {Object} propTypes Property types.
168
- * @static
169
- */
170
- static propTypes = {
171
- data: PropTypes.objectOf(PropTypes.any).isRequired,
172
- detached: PropTypes.bool,
173
- index: PropTypes.number.isRequired,
174
- selected: PropTypes.bool.isRequired,
175
- block: PropTypes.string.isRequired,
176
- onAddBlock: PropTypes.func.isRequired,
177
- onChangeBlock: PropTypes.func.isRequired,
178
- onDeleteBlock: PropTypes.func.isRequired,
179
- onInsertBlock: PropTypes.func.isRequired,
180
- onMutateBlock: PropTypes.func.isRequired,
181
- onFocusPreviousBlock: PropTypes.func.isRequired,
182
- onFocusNextBlock: PropTypes.func.isRequired,
183
- onSelectBlock: PropTypes.func.isRequired,
184
- };
185
-
186
- /**
187
- * Default properties
188
- * @property {Object} defaultProps Default properties.
189
- * @static
190
- */
191
- static defaultProps = {
192
- detached: false,
193
- };
194
-
195
- /**
196
- * Constructor
197
- * @method constructor
198
- * @param {Object} props Component properties
199
- * @constructs WysiwygEditor
200
- */
201
- constructor(props) {
202
- super(props);
203
- this.state = {
204
- headers: [],
205
- rows: {},
206
- selected: {
207
- row: 0,
208
- cell: 0,
209
- },
210
- isClient: false,
211
- };
212
- this.onChange = this.onChange.bind(this);
213
- this.onSelectCell = this.onSelectCell.bind(this);
214
- this.onInsertRowBefore = this.onInsertRowBefore.bind(this);
215
- this.onInsertRowAfter = this.onInsertRowAfter.bind(this);
216
- this.onInsertColBefore = this.onInsertColBefore.bind(this);
217
- this.onInsertColAfter = this.onInsertColAfter.bind(this);
218
- this.onDeleteRow = this.onDeleteRow.bind(this);
219
- this.onDeleteCol = this.onDeleteCol.bind(this);
220
- this.onChangeCell = this.onChangeCell.bind(this);
221
- this.toggleCellType = this.toggleCellType.bind(this);
222
- }
223
-
224
- /**
225
- * Component did mount lifecycle method
226
- * @method componentDidMount
227
- * @returns {undefined}
228
- */
229
- componentDidMount() {
230
- if (!this.props.data.table) {
231
- this.props.onChangeBlock(this.props.block, {
232
- ...this.props.data,
233
- table: initialTable,
234
- });
235
- }
236
- this.setState({ isClient: true });
237
- }
238
-
239
- /**
240
- * Component will receive props lifecycle method
241
- * @method componentWillReceiveProps
242
- * @param {Object} nextProps Next properties
243
- * @returns {undefined}
244
- */
245
- UNSAFE_componentWillReceiveProps(nextProps) {
246
- if (!nextProps.data.table) {
247
- this.props.onChangeBlock(nextProps.block, {
248
- ...nextProps.data,
249
- table: initialTable,
250
- });
251
- }
252
- }
253
-
254
- /**
255
- * On change
256
- * @method onChange
257
- * @param {string} id Id of modified property.
258
- * @param {any} value New value of modified property.
259
- * @returns {undefined}
260
- */
261
- onChange(id, value) {
262
- const table = this.props.data.table;
263
- this.props.onChangeBlock(this.props.block, {
264
- ...this.props.data,
265
- table: {
266
- ...table,
267
- [id]: value,
268
- },
269
- });
270
- }
271
-
272
- /**
273
- * Select cell handler
274
- * @method onSelectCell
275
- * @param {Number} row Row index.
276
- * @param {Number} cell Cell index.
277
- * @returns {undefined}
278
- */
279
- onSelectCell(row, cell) {
280
- this.setState({ selected: { row, cell } });
281
- }
282
-
283
- /**
284
- * Change cell handler
285
- * @param {Number} row Row index.
286
- * @param {Number} cell Cell index.
287
- * @param {Array} slateValue Value of the `SlateEditor` in the cell.
288
- * @returns {undefined}
289
- */
290
- onChangeCell(row, cell, slateValue) {
291
- const table = JSON.parse(JSON.stringify(this.props.data.table));
292
- table.rows[row].cells[cell] = {
293
- ...table.rows[row].cells[cell],
294
- value: JSON.parse(JSON.stringify(slateValue)),
295
- };
296
- this.props.onChangeBlock(this.props.block, {
297
- ...this.props.data,
298
- table,
299
- });
300
- }
301
-
302
- /**
303
- * Toggle cell type (from header to data or reverse)
304
- * @method toggleCellType
305
- * @returns {undefined}
306
- */
307
- toggleCellType() {
308
- const table = { ...this.props.data.table };
309
- let type =
310
- table.rows[this.state.selected.row].cells[this.state.selected.cell].type;
311
- table.rows[this.state.selected.row].cells[this.state.selected.cell].type =
312
- type === 'header' ? 'data' : 'header';
313
- this.props.onChangeBlock(this.props.block, {
314
- ...this.props.data,
315
- table,
316
- });
317
- }
318
-
319
- /**
320
- * Insert row before handler. Keeps the selected cell as selected after the
321
- * operation is done.
322
- * @returns {undefined}
323
- */
324
- onInsertRowBefore() {
325
- const table = this.props.data.table;
326
- this.props.onChangeBlock(this.props.block, {
327
- ...this.props.data,
328
- table: {
329
- ...table,
330
- rows: [
331
- ...table.rows.slice(0, this.state.selected.row),
332
- emptyRow(table.rows[0].cells),
333
- ...table.rows.slice(this.state.selected.row),
334
- ],
335
- },
336
- });
337
- this.setState({
338
- selected: {
339
- row: this.state.selected.row + 1,
340
- cell: this.state.selected.cell,
341
- },
342
- });
343
- }
344
-
345
- /**
346
- * Insert row after handler
347
- * @returns {undefined}
348
- */
349
- onInsertRowAfter() {
350
- const table = this.props.data.table;
351
- this.props.onChangeBlock(this.props.block, {
352
- ...this.props.data,
353
- table: {
354
- ...table,
355
- rows: [
356
- ...table.rows.slice(0, this.state.selected.row + 1),
357
- emptyRow(table.rows[0].cells),
358
- ...table.rows.slice(this.state.selected.row + 1),
359
- ],
360
- },
361
- });
362
- }
363
-
364
- /**
365
- * Insert column before handler. Keeps the selected cell as selected after the
366
- * operation is done.
367
- * @returns {undefined}
368
- */
369
- onInsertColBefore() {
370
- const table = this.props.data.table;
371
- this.props.onChangeBlock(this.props.block, {
372
- ...this.props.data,
373
- table: {
374
- ...table,
375
- rows: map(table.rows, (row, index) => ({
376
- ...row,
377
- cells: [
378
- ...row.cells.slice(0, this.state.selected.cell),
379
- emptyCell(table.rows[index].cells[this.state.selected.cell].type),
380
- ...row.cells.slice(this.state.selected.cell),
381
- ],
382
- })),
383
- },
384
- });
385
- this.setState({
386
- selected: {
387
- row: this.state.selected.row,
388
- cell: this.state.selected.cell + 1,
389
- },
390
- });
391
- }
392
-
393
- /**
394
- * Insert column after handler
395
- * @returns {undefined}
396
- */
397
- onInsertColAfter() {
398
- const table = this.props.data.table;
399
- this.props.onChangeBlock(this.props.block, {
400
- ...this.props.data,
401
- table: {
402
- ...table,
403
- rows: map(table.rows, (row, index) => ({
404
- ...row,
405
- cells: [
406
- ...row.cells.slice(0, this.state.selected.cell + 1),
407
- emptyCell(table.rows[index].cells[this.state.selected.cell].type),
408
- ...row.cells.slice(this.state.selected.cell + 1),
409
- ],
410
- })),
411
- },
412
- });
413
- }
414
-
415
- /**
416
- * Delete column handler. Changes the selected cell if the last table column
417
- * is selected.
418
- * @returns {undefined}
419
- */
420
- onDeleteCol() {
421
- const table = this.props.data.table;
422
-
423
- if (this.state.selected.cell === table.rows[0].cells.length - 1) {
424
- this.setState({
425
- selected: {
426
- row: this.state.selected.row,
427
- cell: this.state.selected.cell - 1,
428
- },
429
- });
430
- }
431
-
432
- this.props.onChangeBlock(this.props.block, {
433
- ...this.props.data,
434
- table: {
435
- ...table,
436
- rows: map(table.rows, (row) => ({
437
- ...row,
438
- cells: remove(
439
- row.cells,
440
- (cell, index) => index !== this.state.selected.cell,
441
- ),
442
- })),
443
- },
444
- });
445
- }
446
-
447
- /**
448
- * Delete row handler. Changes the selected cell if the last table row is
449
- * selected.
450
- * @method onDeleteRow
451
- * @returns {undefined}
452
- */
453
- onDeleteRow() {
454
- const table = this.props.data.table;
455
-
456
- if (this.state.selected.row === table.rows.length - 1) {
457
- this.setState({
458
- selected: {
459
- row: this.state.selected.row - 1,
460
- cell: this.state.selected.cell,
461
- },
462
- });
463
- }
464
-
465
- this.props.onChangeBlock(this.props.block, {
466
- ...this.props.data,
467
- table: {
468
- ...table,
469
- rows: remove(
470
- table.rows,
471
- (row, index) => index !== this.state.selected.row,
472
- ),
473
- },
474
- });
475
- }
476
-
477
- componentDidUpdate(prevProps) {
478
- if (prevProps.selected && !this.props.selected) {
479
- this.setState({ selected: null });
480
- }
481
- }
482
-
483
- /**
484
- * Render method.
485
- * @method render
486
- * @returns {string} Markup for the component.
487
- */
488
- render() {
489
- const headers = this.props.data.table?.rows?.[0]?.cells || [];
490
- const rows =
491
- this.props.data.table?.rows?.filter((_, index) => index > 0) || [];
492
- const schema = TableSchema(this.props);
493
-
494
- return (
495
- // TODO: use slate-table instead of table, but first copy the CSS styles
496
- // to the new name
497
- <div className={cx('block table', { selected: this.props.selected })}>
498
- {this.props.selected && (
499
- <div className="toolbar">
500
- <Button.Group>
501
- <Button
502
- icon
503
- basic
504
- onClick={this.onInsertRowBefore}
505
- title={this.props.intl.formatMessage(messages.insertRowBefore)}
506
- aria-label={this.props.intl.formatMessage(
507
- messages.insertRowBefore,
508
- )}
509
- >
510
- <Icon name={rowBeforeSVG} size="24px" />
511
- </Button>
512
- </Button.Group>
513
- <Button.Group>
514
- <Button
515
- icon
516
- basic
517
- onClick={this.onInsertRowAfter}
518
- title={this.props.intl.formatMessage(messages.insertRowAfter)}
519
- aria-label={this.props.intl.formatMessage(
520
- messages.insertRowAfter,
521
- )}
522
- >
523
- <Icon name={rowAfterSVG} size="24px" />
524
- </Button>
525
- </Button.Group>
526
- <Button.Group>
527
- <Button
528
- icon
529
- basic
530
- onClick={this.onDeleteRow}
531
- disabled={
532
- this.props.data.table &&
533
- this.props.data.table.rows.length === 1
534
- }
535
- title={this.props.intl.formatMessage(messages.deleteRow)}
536
- aria-label={this.props.intl.formatMessage(messages.deleteRow)}
537
- >
538
- <Icon name={rowDeleteSVG} size="24px" />
539
- </Button>
540
- </Button.Group>
541
- <Button.Group>
542
- <Button
543
- icon
544
- basic
545
- onClick={this.onInsertColBefore}
546
- title={this.props.intl.formatMessage(messages.insertColBefore)}
547
- aria-label={this.props.intl.formatMessage(
548
- messages.insertColBefore,
549
- )}
550
- >
551
- <Icon name={colBeforeSVG} size="24px" />
552
- </Button>
553
- </Button.Group>
554
- <Button.Group>
555
- <Button
556
- icon
557
- basic
558
- onClick={this.onInsertColAfter}
559
- title={this.props.intl.formatMessage(messages.insertColAfter)}
560
- aria-label={this.props.intl.formatMessage(
561
- messages.insertColAfter,
562
- )}
563
- >
564
- <Icon name={colAfterSVG} size="24px" />
565
- </Button>
566
- </Button.Group>
567
- <Button.Group>
568
- <Button
569
- icon
570
- basic
571
- onClick={this.onDeleteCol}
572
- disabled={
573
- this.props.data.table &&
574
- this.props.data.table.rows[0].cells.length === 1
575
- }
576
- title={this.props.intl.formatMessage(messages.deleteCol)}
577
- aria-label={this.props.intl.formatMessage(messages.deleteCol)}
578
- >
579
- <Icon name={colDeleteSVG} size="24px" />
580
- </Button>
581
- </Button.Group>
582
- </div>
583
- )}
584
- {this.props.data.table && (
585
- <Table
586
- fixed={this.props.data.table.fixed}
587
- compact={this.props.data.table.compact}
588
- basic={this.props.data.table.basic ? 'very' : false}
589
- celled={this.props.data.table.celled}
590
- inverted={this.props.data.table.inverted}
591
- striped={this.props.data.table.striped}
592
- className="slate-table-block"
593
- >
594
- {!this.props.data.table.hideHeaders ? (
595
- <Table.Header>
596
- <Table.Row textAlign="left">
597
- {headers.map((cell, cellIndex) => (
598
- <Table.HeaderCell
599
- key={cell.key}
600
- textAlign="left"
601
- verticalAlign="middle"
602
- >
603
- <Cell
604
- value={cell.value}
605
- row={0}
606
- cell={cellIndex}
607
- onSelectCell={this.onSelectCell}
608
- selected={
609
- this.props.selected &&
610
- this.state.selected &&
611
- 0 === this.state.selected.row &&
612
- cellIndex === this.state.selected.cell
613
- }
614
- selectedCell={this.state.selected}
615
- isTableBlockSelected={this.props.selected}
616
- onAddBlock={this.props.onAddBlock}
617
- onSelectBlock={this.props.onSelectBlock}
618
- onChange={this.onChangeCell}
619
- index={this.props.index}
620
- />
621
- </Table.HeaderCell>
622
- ))}
623
- </Table.Row>
624
- </Table.Header>
625
- ) : (
626
- ''
627
- )}
628
- <Table.Body>
629
- {map(rows, (row, rowIndex) => (
630
- <Table.Row key={row.key}>
631
- {map(row.cells, (cell, cellIndex) => (
632
- <Table.Cell
633
- key={cell.key}
634
- textAlign="left"
635
- verticalAlign="middle"
636
- className={
637
- this.props.selected &&
638
- this.state.selected &&
639
- rowIndex + 1 === this.state.selected.row &&
640
- cellIndex === this.state.selected.cell &&
641
- this.props.selected
642
- ? 'selected'
643
- : ''
644
- }
645
- >
646
- <Cell
647
- value={cell.value}
648
- row={rowIndex + 1}
649
- cell={cellIndex}
650
- onSelectCell={this.onSelectCell}
651
- selected={
652
- this.props.selected &&
653
- this.state.selected &&
654
- rowIndex + 1 === this.state.selected.row &&
655
- cellIndex === this.state.selected.cell
656
- }
657
- selectedCell={this.state.selected}
658
- isTableBlockSelected={this.props.selected}
659
- onAddBlock={this.props.onAddBlock}
660
- onSelectBlock={this.props.onSelectBlock}
661
- onChange={this.onChangeCell}
662
- index={this.props.index}
663
- />
664
- </Table.Cell>
665
- ))}
666
- </Table.Row>
667
- ))}
668
- </Table.Body>
669
- </Table>
670
- )}
671
- {this.props.selected && this.state.selected && this.state.isClient && (
672
- <SidebarPortal selected={this.props.selected}>
673
- <BlockDataForm
674
- schema={schema}
675
- title={schema.title}
676
- onChangeField={(id, value) => {
677
- this.props.onChangeBlock(this.props.block, {
678
- ...this.props.data,
679
- [id]: value,
680
- });
681
- }}
682
- onChangeBlock={this.props.onChangeBlock}
683
- formData={this.props.data}
684
- block={this.props.block}
685
- blocksConfig={this.props.blocksConfig}
686
- />
687
- </SidebarPortal>
688
- )}
689
- </div>
690
- );
691
- }
692
- }
693
-
694
- export default injectIntl(Edit);