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

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 (349) hide show
  1. package/.eslintignore +1 -0
  2. package/.eslintrc +3 -3
  3. package/.prettierignore +8 -0
  4. package/.prettierrc +12 -0
  5. package/{packages/registry/.release-it.json → .release-it.json} +12 -6
  6. package/CHANGELOG.md +50 -4
  7. package/package.json +60 -127
  8. package/razzle.config.js +4 -7
  9. package/src/components/manage/Add/Add.jsx +6 -0
  10. package/src/components/manage/BlockChooser/BlockChooser.jsx +3 -1
  11. package/src/components/manage/BlockChooser/BlockChooserButton.jsx +5 -0
  12. package/src/components/manage/Blocks/Block/BlocksForm.jsx +4 -0
  13. package/src/components/manage/Blocks/Block/DefaultEdit.jsx +3 -1
  14. package/src/components/manage/Blocks/Block/EditBlockWrapper.jsx +5 -0
  15. package/src/components/manage/Blocks/Block/Settings.jsx +10 -1
  16. package/src/components/manage/Blocks/Container/Data.jsx +4 -1
  17. package/src/components/manage/Blocks/HeroImageLeft/Data.jsx +3 -1
  18. package/src/components/manage/Blocks/Image/ImageSidebar.jsx +4 -1
  19. package/src/components/manage/Blocks/Listing/ListingData.jsx +4 -1
  20. package/src/components/manage/Blocks/Maps/MapsSidebar.jsx +3 -1
  21. package/src/components/manage/Blocks/Search/SearchBlockEdit.jsx +4 -0
  22. package/src/components/manage/Blocks/Teaser/Data.jsx +4 -1
  23. package/src/components/manage/Blocks/ToC/Edit.jsx +2 -0
  24. package/src/components/manage/Blocks/Video/VideoSidebar.jsx +3 -1
  25. package/src/components/manage/Controlpanels/Users/UserGroupMembershipControlPanel.jsx +2 -2
  26. package/src/components/manage/Edit/Edit.jsx +1 -0
  27. package/src/components/manage/Form/Form.jsx +14 -3
  28. package/src/components/theme/Image/Image.jsx +4 -2
  29. package/src/components/theme/Image/Image.test.jsx +32 -0
  30. package/src/config/index.js +0 -4
  31. package/src/helpers/Blocks/Blocks.js +11 -2
  32. package/src/helpers/Extensions/withBlockSchemaEnhancer.js +20 -9
  33. package/src/helpers/Url/Url.js +5 -4
  34. package/src/helpers/Url/Url.test.js +52 -0
  35. package/src/icons/divide-horizontal.svg +0 -0
  36. package/src/icons/divide-vertical.svg +0 -0
  37. package/src/icons/hero.svg +0 -0
  38. package/src/icons/slider.svg +0 -0
  39. package/src/icons/summary.svg +0 -0
  40. package/src/middleware/api.js +1 -1
  41. package/theme/themes/default/elements/icon.overrides +0 -0
  42. package/theme/themes/default/globals/reset.overrides +0 -0
  43. package/theme/themes/default/globals/site.variables +0 -0
  44. package/theme/themes/default/modules/dropdown.overrides +0 -0
  45. package/theme/themes/default/modules/dropdown.variables +0 -0
  46. package/theme/themes/default/modules/modal.variables +0 -0
  47. package/theme/themes/default/modules/video.overrides +0 -0
  48. package/theme/themes/default/modules/video.variables +0 -0
  49. package/theme/themes/pastanaga/assets/fonts/icons.eot +0 -0
  50. package/theme/themes/pastanaga/assets/fonts/icons.svg +0 -0
  51. package/theme/themes/pastanaga/assets/fonts/icons.ttf +0 -0
  52. package/theme/themes/pastanaga/assets/fonts/icons.woff +0 -0
  53. package/theme/themes/pastanaga/globals/reset.overrides +0 -0
  54. package/theme/themes/pastanaga/globals/site.variables +0 -0
  55. package/theme/themes/pastanaga/modules/dropdown.variables +0 -0
  56. package/theme/themes/pastanaga/modules/modal.variables +0 -0
  57. package/theme/themes/pastanaga/modules/video.overrides +0 -0
  58. package/theme/themes/pastanaga/modules/video.variables +0 -0
  59. package/tsconfig.json +1 -4
  60. package/types/config/RichTextEditor/index.d.ts +5 -8
  61. package/types/helpers/AsyncConnect/index.d.ts +2 -2
  62. package/types/helpers/Extensions/withBlockSchemaEnhancer.d.ts +3 -1
  63. package/types/helpers/Url/Url.d.ts +3 -3
  64. package/types/icons/load-icons.d.ts +1 -1
  65. package/webpack-plugins/webpack-less-plugin.js +1 -0
  66. package/CODE_OF_CONDUCT.md +0 -13
  67. package/CONTRIBUTING.md +0 -7
  68. package/README.md +0 -154
  69. package/RELEASING.md +0 -73
  70. package/ROADMAP.md +0 -30
  71. package/SECURITY.md +0 -14
  72. package/apps/plone/node_modules/.bin/acorn +0 -17
  73. package/apps/plone/node_modules/.bin/addon +0 -17
  74. package/apps/plone/node_modules/.bin/autoprefixer +0 -17
  75. package/apps/plone/node_modules/.bin/browserslist +0 -17
  76. package/apps/plone/node_modules/.bin/build-storybook +0 -17
  77. package/apps/plone/node_modules/.bin/changelogupdater +0 -17
  78. package/apps/plone/node_modules/.bin/eslint +0 -17
  79. package/apps/plone/node_modules/.bin/eslint-config-prettier +0 -17
  80. package/apps/plone/node_modules/.bin/i18n +0 -17
  81. package/apps/plone/node_modules/.bin/jest +0 -17
  82. package/apps/plone/node_modules/.bin/lessc +0 -17
  83. package/apps/plone/node_modules/.bin/missdev +0 -17
  84. package/apps/plone/node_modules/.bin/prettier +0 -17
  85. package/apps/plone/node_modules/.bin/razzle +0 -17
  86. package/apps/plone/node_modules/.bin/server-test +0 -17
  87. package/apps/plone/node_modules/.bin/start-server-and-test +0 -17
  88. package/apps/plone/node_modules/.bin/start-storybook +0 -17
  89. package/apps/plone/node_modules/.bin/start-test +0 -17
  90. package/apps/plone/node_modules/.bin/storybook-server +0 -17
  91. package/apps/plone/node_modules/.bin/stylelint +0 -17
  92. package/apps/plone/node_modules/.bin/tlds +0 -17
  93. package/apps/plone/node_modules/.bin/ts-jest +0 -17
  94. package/apps/plone/node_modules/.bin/tsc +0 -17
  95. package/apps/plone/node_modules/.bin/tsserver +0 -17
  96. package/apps/plone/node_modules/.bin/uuid +0 -17
  97. package/apps/plone/node_modules/.bin/webpack +0 -17
  98. package/apps/plone/node_modules/.bin/webpack-dev-server +0 -17
  99. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/acorn +0 -17
  100. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/addon +0 -17
  101. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/browserslist +0 -17
  102. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/changelogupdater +0 -17
  103. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/eslint +0 -17
  104. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/eslint-config-prettier +0 -17
  105. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/i18n +0 -17
  106. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/prettier +0 -17
  107. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/release-it +0 -17
  108. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/stylelint +0 -17
  109. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/tsc +0 -17
  110. package/apps/plone/src/addons/volto-volto-project/node_modules/.bin/tsserver +0 -17
  111. package/logos/Logo.png +0 -0
  112. package/logos/VoltoLogoEra2-dark-mode.png +0 -0
  113. package/logos/VoltoLogoEra2.png +0 -0
  114. package/logos/volto-colorful.png +0 -0
  115. package/logos/volto-colorful.svg +0 -35
  116. package/logos/volto-guide.png +0 -0
  117. package/logos/volto-h-transparent.svg +0 -6
  118. package/logos/volto-transparent.png +0 -0
  119. package/logos/volto-transparent.svg +0 -19
  120. package/logos/volto-transparent2.svg +0 -5
  121. package/logos/volto-yellow.svg +0 -29
  122. package/logos/volto.sketch +0 -0
  123. package/packages/README.md +0 -7
  124. package/packages/registry/.towncrier/towncrier_template.jinja +0 -10
  125. package/packages/registry/CHANGELOG.md +0 -16
  126. package/packages/registry/README.md +0 -207
  127. package/packages/registry/addon-registry.js +0 -603
  128. package/packages/registry/create-addons-loader.js +0 -116
  129. package/packages/registry/create-theme-addons-loader.js +0 -78
  130. package/packages/registry/news/.gitkeep +0 -0
  131. package/packages/registry/node_modules/.bin/browserslist +0 -17
  132. package/packages/registry/node_modules/.bin/parcel +0 -17
  133. package/packages/registry/node_modules/.bin/release-it +0 -17
  134. package/packages/registry/node_modules/.bin/tsc +0 -17
  135. package/packages/registry/node_modules/.bin/tsserver +0 -17
  136. package/packages/registry/node_modules/.bin/vitest +0 -17
  137. package/packages/registry/package.json +0 -76
  138. package/packages/registry/src/index.ts +0 -174
  139. package/packages/registry/src/registry.test.js +0 -111
  140. package/packages/registry/tsconfig.json +0 -32
  141. package/packages/scripts/CHANGELOG.md +0 -173
  142. package/packages/scripts/README.md +0 -128
  143. package/packages/scripts/addon/consolidate.js +0 -28
  144. package/packages/scripts/addon/generators.js +0 -213
  145. package/packages/scripts/addon/getAddonInfo.js +0 -65
  146. package/packages/scripts/addon/index.js +0 -88
  147. package/packages/scripts/addon/utils.js +0 -44
  148. package/packages/scripts/backportpr.js +0 -75
  149. package/packages/scripts/changelogupdater.cjs +0 -94
  150. package/packages/scripts/corepackagebump.js +0 -20
  151. package/packages/scripts/i18n.cjs +0 -310
  152. package/packages/scripts/package.json +0 -76
  153. package/packages/scripts/templates/towncrier_template.jinja +0 -10
  154. package/packages/types/Blocks/View.ts +0 -11
  155. package/packages/types/actions.ts +0 -15
  156. package/packages/types/breadcrumbs.ts +0 -10
  157. package/packages/types/config/Blocks.ts +0 -153
  158. package/packages/types/config/Content.ts +0 -62
  159. package/packages/types/config/Settings.ts +0 -86
  160. package/packages/types/config/Views.ts +0 -15
  161. package/packages/types/config/Widgets.ts +0 -7
  162. package/packages/types/config/index.ts +0 -21
  163. package/packages/types/content/common.ts +0 -60
  164. package/packages/types/content/get.ts +0 -66
  165. package/packages/types/index.ts +0 -0
  166. package/packages/types/navigation.ts +0 -12
  167. package/packages/types/node_modules/.bin/browserslist +0 -17
  168. package/packages/types/node_modules/.bin/parcel +0 -17
  169. package/packages/types/node_modules/.bin/release-it +0 -17
  170. package/packages/types/node_modules/.bin/tsc +0 -17
  171. package/packages/types/node_modules/.bin/tsserver +0 -17
  172. package/packages/types/package.json +0 -64
  173. package/packages/types/types.ts +0 -61
  174. package/packages/volto-slate/.i18n.babel.config.js +0 -1
  175. package/packages/volto-slate/README.md +0 -4
  176. package/packages/volto-slate/build/messages/src/blocks/Table/TableBlockEdit.json +0 -90
  177. package/packages/volto-slate/build/messages/src/blocks/Text/DefaultTextBlockEditor.json +0 -6
  178. package/packages/volto-slate/build/messages/src/blocks/Text/DetachedTextBlockEditor.json +0 -6
  179. package/packages/volto-slate/build/messages/src/blocks/Text/SlashMenu.json +0 -6
  180. package/packages/volto-slate/build/messages/src/editor/plugins/AdvancedLink/index.json +0 -10
  181. package/packages/volto-slate/build/messages/src/editor/plugins/Link/index.json +0 -10
  182. package/packages/volto-slate/build/messages/src/editor/plugins/Table/index.json +0 -30
  183. package/packages/volto-slate/build/messages/src/elementEditor/messages.json +0 -10
  184. package/packages/volto-slate/build/messages/src/widgets/HtmlSlateWidget.json +0 -6
  185. package/packages/volto-slate/build/messages/src/widgets/RichTextWidgetView.json +0 -6
  186. package/packages/volto-slate/locales/de/LC_MESSAGES/volto.po +0 -148
  187. package/packages/volto-slate/locales/en/LC_MESSAGES/volto.po +0 -148
  188. package/packages/volto-slate/locales/volto.pot +0 -182
  189. package/packages/volto-slate/package.json +0 -43
  190. package/packages/volto-slate/src/actions/content.js +0 -30
  191. package/packages/volto-slate/src/actions/index.js +0 -3
  192. package/packages/volto-slate/src/actions/plugins.js +0 -9
  193. package/packages/volto-slate/src/actions/selection.js +0 -22
  194. package/packages/volto-slate/src/blocks/Table/Cell.jsx +0 -87
  195. package/packages/volto-slate/src/blocks/Table/Cell.test.js +0 -54
  196. package/packages/volto-slate/src/blocks/Table/TableBlockEdit.jsx +0 -694
  197. package/packages/volto-slate/src/blocks/Table/TableBlockEdit.test.js +0 -40
  198. package/packages/volto-slate/src/blocks/Table/TableBlockView.jsx +0 -150
  199. package/packages/volto-slate/src/blocks/Table/TableBlockView.test.js +0 -49
  200. package/packages/volto-slate/src/blocks/Table/deconstruct.js +0 -113
  201. package/packages/volto-slate/src/blocks/Table/extensions/normalizeTable.js +0 -5
  202. package/packages/volto-slate/src/blocks/Table/index.js +0 -60
  203. package/packages/volto-slate/src/blocks/Table/schema.js +0 -122
  204. package/packages/volto-slate/src/blocks/Text/DefaultTextBlockEditor.jsx +0 -304
  205. package/packages/volto-slate/src/blocks/Text/DetachedTextBlockEditor.jsx +0 -77
  206. package/packages/volto-slate/src/blocks/Text/MarkdownIntroduction.jsx +0 -59
  207. package/packages/volto-slate/src/blocks/Text/PluginSidebar.jsx +0 -18
  208. package/packages/volto-slate/src/blocks/Text/ShortcutListing.jsx +0 -28
  209. package/packages/volto-slate/src/blocks/Text/SlashMenu.jsx +0 -203
  210. package/packages/volto-slate/src/blocks/Text/TextBlockEdit.jsx +0 -38
  211. package/packages/volto-slate/src/blocks/Text/TextBlockEdit.test.js +0 -107
  212. package/packages/volto-slate/src/blocks/Text/TextBlockSchema.js +0 -54
  213. package/packages/volto-slate/src/blocks/Text/TextBlockView.jsx +0 -31
  214. package/packages/volto-slate/src/blocks/Text/css/editor.css +0 -18
  215. package/packages/volto-slate/src/blocks/Text/extensions/Readme.md +0 -49
  216. package/packages/volto-slate/src/blocks/Text/extensions/breakList.js +0 -100
  217. package/packages/volto-slate/src/blocks/Text/extensions/index.js +0 -6
  218. package/packages/volto-slate/src/blocks/Text/extensions/insertBreak.js +0 -57
  219. package/packages/volto-slate/src/blocks/Text/extensions/isSelected.js +0 -7
  220. package/packages/volto-slate/src/blocks/Text/extensions/normalizeExternalData.js +0 -7
  221. package/packages/volto-slate/src/blocks/Text/extensions/withDeserializers.js +0 -87
  222. package/packages/volto-slate/src/blocks/Text/extensions/withLists.js +0 -5
  223. package/packages/volto-slate/src/blocks/Text/index.js +0 -171
  224. package/packages/volto-slate/src/blocks/Text/keyboard/backspaceInList.js +0 -58
  225. package/packages/volto-slate/src/blocks/Text/keyboard/breakBlocks.js +0 -3
  226. package/packages/volto-slate/src/blocks/Text/keyboard/cancelEsc.js +0 -7
  227. package/packages/volto-slate/src/blocks/Text/keyboard/indentListItems.js +0 -240
  228. package/packages/volto-slate/src/blocks/Text/keyboard/index.js +0 -52
  229. package/packages/volto-slate/src/blocks/Text/keyboard/joinBlocks.js +0 -180
  230. package/packages/volto-slate/src/blocks/Text/keyboard/moveListItems.js +0 -124
  231. package/packages/volto-slate/src/blocks/Text/keyboard/slashMenu.js +0 -19
  232. package/packages/volto-slate/src/blocks/Text/keyboard/softBreak.js +0 -7
  233. package/packages/volto-slate/src/blocks/Text/keyboard/traverseBlocks.js +0 -81
  234. package/packages/volto-slate/src/blocks/Text/keyboard/unwrapEmptyString.js +0 -26
  235. package/packages/volto-slate/src/blocks/Text/schema.js +0 -39
  236. package/packages/volto-slate/src/constants.js +0 -123
  237. package/packages/volto-slate/src/editor/EditorContext.jsx +0 -5
  238. package/packages/volto-slate/src/editor/EditorReference.jsx +0 -22
  239. package/packages/volto-slate/src/editor/SlateEditor.jsx +0 -375
  240. package/packages/volto-slate/src/editor/config.jsx +0 -344
  241. package/packages/volto-slate/src/editor/decorate.js +0 -68
  242. package/packages/volto-slate/src/editor/deserialize.js +0 -185
  243. package/packages/volto-slate/src/editor/extensions/index.js +0 -6
  244. package/packages/volto-slate/src/editor/extensions/insertBreak.js +0 -15
  245. package/packages/volto-slate/src/editor/extensions/insertData.js +0 -159
  246. package/packages/volto-slate/src/editor/extensions/isInline.js +0 -14
  247. package/packages/volto-slate/src/editor/extensions/normalizeExternalData.js +0 -8
  248. package/packages/volto-slate/src/editor/extensions/normalizeNode.js +0 -48
  249. package/packages/volto-slate/src/editor/extensions/withDeserializers.js +0 -15
  250. package/packages/volto-slate/src/editor/extensions/withTestingFeatures.jsx +0 -84
  251. package/packages/volto-slate/src/editor/index.js +0 -14
  252. package/packages/volto-slate/src/editor/less/editor.less +0 -173
  253. package/packages/volto-slate/src/editor/less/globals.less +0 -18
  254. package/packages/volto-slate/src/editor/less/slate.less +0 -28
  255. package/packages/volto-slate/src/editor/plugins/AdvancedLink/deserialize.js +0 -90
  256. package/packages/volto-slate/src/editor/plugins/AdvancedLink/extensions.js +0 -32
  257. package/packages/volto-slate/src/editor/plugins/AdvancedLink/index.js +0 -50
  258. package/packages/volto-slate/src/editor/plugins/AdvancedLink/render.jsx +0 -37
  259. package/packages/volto-slate/src/editor/plugins/AdvancedLink/schema.js +0 -114
  260. package/packages/volto-slate/src/editor/plugins/AdvancedLink/styles.less +0 -8
  261. package/packages/volto-slate/src/editor/plugins/Blockquote/index.js +0 -30
  262. package/packages/volto-slate/src/editor/plugins/Callout/index.js +0 -34
  263. package/packages/volto-slate/src/editor/plugins/Image/deconstruct.js +0 -30
  264. package/packages/volto-slate/src/editor/plugins/Image/extensions.js +0 -51
  265. package/packages/volto-slate/src/editor/plugins/Image/index.js +0 -11
  266. package/packages/volto-slate/src/editor/plugins/Image/render.jsx +0 -22
  267. package/packages/volto-slate/src/editor/plugins/Link/extensions.js +0 -58
  268. package/packages/volto-slate/src/editor/plugins/Link/index.js +0 -164
  269. package/packages/volto-slate/src/editor/plugins/Link/render.jsx +0 -54
  270. package/packages/volto-slate/src/editor/plugins/Markdown/constants.js +0 -81
  271. package/packages/volto-slate/src/editor/plugins/Markdown/extensions.js +0 -334
  272. package/packages/volto-slate/src/editor/plugins/Markdown/index.js +0 -28
  273. package/packages/volto-slate/src/editor/plugins/Markdown/utils.js +0 -198
  274. package/packages/volto-slate/src/editor/plugins/StyleMenu/StyleMenu.jsx +0 -153
  275. package/packages/volto-slate/src/editor/plugins/StyleMenu/index.js +0 -19
  276. package/packages/volto-slate/src/editor/plugins/StyleMenu/style.less +0 -29
  277. package/packages/volto-slate/src/editor/plugins/StyleMenu/utils.js +0 -168
  278. package/packages/volto-slate/src/editor/plugins/Table/TableButton.jsx +0 -142
  279. package/packages/volto-slate/src/editor/plugins/Table/TableCell.jsx +0 -44
  280. package/packages/volto-slate/src/editor/plugins/Table/TableContainer.jsx +0 -37
  281. package/packages/volto-slate/src/editor/plugins/Table/TableSizePicker.jsx +0 -83
  282. package/packages/volto-slate/src/editor/plugins/Table/extensions.js +0 -87
  283. package/packages/volto-slate/src/editor/plugins/Table/index.js +0 -390
  284. package/packages/volto-slate/src/editor/plugins/Table/less/public.less +0 -29
  285. package/packages/volto-slate/src/editor/plugins/Table/less/table.less +0 -28
  286. package/packages/volto-slate/src/editor/plugins/Table/render.jsx +0 -30
  287. package/packages/volto-slate/src/editor/plugins/index.js +0 -19
  288. package/packages/volto-slate/src/editor/render.jsx +0 -224
  289. package/packages/volto-slate/src/editor/ui/BasicToolbar.jsx +0 -11
  290. package/packages/volto-slate/src/editor/ui/BlockButton.jsx +0 -31
  291. package/packages/volto-slate/src/editor/ui/ClearFormattingButton.jsx +0 -21
  292. package/packages/volto-slate/src/editor/ui/ExpandedToolbar.jsx +0 -18
  293. package/packages/volto-slate/src/editor/ui/Expando.jsx +0 -5
  294. package/packages/volto-slate/src/editor/ui/InlineToolbar.jsx +0 -73
  295. package/packages/volto-slate/src/editor/ui/MarkButton.jsx +0 -23
  296. package/packages/volto-slate/src/editor/ui/MarkElementButton.jsx +0 -30
  297. package/packages/volto-slate/src/editor/ui/Menu.jsx +0 -13
  298. package/packages/volto-slate/src/editor/ui/PositionedToolbar.jsx +0 -32
  299. package/packages/volto-slate/src/editor/ui/Separator.jsx +0 -7
  300. package/packages/volto-slate/src/editor/ui/SlateContextToolbar.jsx +0 -13
  301. package/packages/volto-slate/src/editor/ui/SlateToolbar.jsx +0 -96
  302. package/packages/volto-slate/src/editor/ui/Toolbar.jsx +0 -103
  303. package/packages/volto-slate/src/editor/ui/ToolbarButton.jsx +0 -33
  304. package/packages/volto-slate/src/editor/ui/ToolbarButton.test.js +0 -25
  305. package/packages/volto-slate/src/editor/ui/index.js +0 -15
  306. package/packages/volto-slate/src/editor/utils.js +0 -248
  307. package/packages/volto-slate/src/elementEditor/ContextButtons.jsx +0 -56
  308. package/packages/volto-slate/src/elementEditor/PluginEditor.jsx +0 -124
  309. package/packages/volto-slate/src/elementEditor/Readme.md +0 -6
  310. package/packages/volto-slate/src/elementEditor/SchemaProvider.jsx +0 -3
  311. package/packages/volto-slate/src/elementEditor/SidebarEditor.jsx +0 -46
  312. package/packages/volto-slate/src/elementEditor/ToolbarButton.jsx +0 -44
  313. package/packages/volto-slate/src/elementEditor/index.js +0 -5
  314. package/packages/volto-slate/src/elementEditor/makeInlineElementPlugin.js +0 -100
  315. package/packages/volto-slate/src/elementEditor/messages.js +0 -14
  316. package/packages/volto-slate/src/elementEditor/utils.js +0 -226
  317. package/packages/volto-slate/src/hooks/index.js +0 -3
  318. package/packages/volto-slate/src/hooks/useEditorContext.js +0 -6
  319. package/packages/volto-slate/src/hooks/useIsomorphicLayoutEffect.js +0 -7
  320. package/packages/volto-slate/src/hooks/useSelectionPosition.js +0 -25
  321. package/packages/volto-slate/src/i18n.js +0 -180
  322. package/packages/volto-slate/src/icons/hashlink.svg +0 -57
  323. package/packages/volto-slate/src/index.js +0 -61
  324. package/packages/volto-slate/src/reducers/content.js +0 -74
  325. package/packages/volto-slate/src/reducers/index.js +0 -3
  326. package/packages/volto-slate/src/reducers/plugins.js +0 -17
  327. package/packages/volto-slate/src/reducers/selection.js +0 -16
  328. package/packages/volto-slate/src/utils/blocks.js +0 -375
  329. package/packages/volto-slate/src/utils/blocks.test.js +0 -138
  330. package/packages/volto-slate/src/utils/editor.js +0 -31
  331. package/packages/volto-slate/src/utils/image.js +0 -25
  332. package/packages/volto-slate/src/utils/index.js +0 -11
  333. package/packages/volto-slate/src/utils/internals.js +0 -46
  334. package/packages/volto-slate/src/utils/lists.js +0 -92
  335. package/packages/volto-slate/src/utils/marks.js +0 -104
  336. package/packages/volto-slate/src/utils/mime-types.js +0 -24
  337. package/packages/volto-slate/src/utils/nodes.js +0 -4
  338. package/packages/volto-slate/src/utils/ops.js +0 -20
  339. package/packages/volto-slate/src/utils/random.js +0 -17
  340. package/packages/volto-slate/src/utils/selection.js +0 -236
  341. package/packages/volto-slate/src/utils/slate-string-utils.js +0 -408
  342. package/packages/volto-slate/src/utils/volto-blocks.js +0 -314
  343. package/packages/volto-slate/src/widgets/ErrorBoundary.jsx +0 -27
  344. package/packages/volto-slate/src/widgets/HtmlSlateWidget.jsx +0 -139
  345. package/packages/volto-slate/src/widgets/ObjectByTypeWidget.jsx +0 -49
  346. package/packages/volto-slate/src/widgets/RichTextWidget.jsx +0 -72
  347. package/packages/volto-slate/src/widgets/RichTextWidgetView.jsx +0 -37
  348. package/packages/volto-slate/src/widgets/style.css +0 -21
  349. 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);