@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,103 +0,0 @@
1
- import cx from 'classnames';
2
- import React, { useRef, useEffect } from 'react';
3
- import { Portal } from 'react-portal';
4
- import { useSlate } from 'slate-react';
5
- import Separator from './Separator';
6
- import BasicToolbar from './BasicToolbar';
7
- import { Editor, Node } from 'slate';
8
- import { ReactEditor } from 'slate-react';
9
-
10
- const Toolbar = ({
11
- elementType,
12
- enableExpando = false,
13
- toggleButton,
14
- className,
15
- children,
16
- show = true,
17
- }) => {
18
- const ref = useRef();
19
- const editor = useSlate();
20
-
21
- useEffect(() => {
22
- const domNode = ref.current;
23
- let rect = { width: 1, top: 0, left: 0 };
24
-
25
- if ((children || []).length === 0) {
26
- domNode.removeAttribute('style');
27
- return;
28
- }
29
-
30
- if (!show) {
31
- domNode.removeAttribute('style');
32
- return;
33
- }
34
-
35
- const { selection } = editor;
36
- // const savedSelection = editor.getSavedSelection();
37
- if (!selection) {
38
- domNode.removeAttribute('style');
39
- return;
40
- }
41
-
42
- if (editor.isSidebarOpen) {
43
- domNode.removeAttribute('style');
44
- return;
45
- }
46
-
47
- if (elementType) {
48
- const [element] = Editor.nodes(editor, {
49
- at: editor.selection || editor.getSavedSelection(),
50
- match: (n) => n.type === elementType,
51
- });
52
-
53
- if (!element) {
54
- domNode.removeAttribute('style');
55
- return;
56
- }
57
-
58
- const [node] = element;
59
- const domEl = ReactEditor.toDOMNode(editor, node);
60
-
61
- rect = domEl.getBoundingClientRect();
62
- } else {
63
- // TODO: should we fallback to editor.getSelection()?
64
- // TODO: test with third party plugins
65
- const slateNode = Node.get(editor, selection.anchor.path);
66
- try {
67
- const domEl = ReactEditor.toDOMNode(editor, slateNode);
68
- rect = domEl.getBoundingClientRect();
69
- } catch {
70
- // ignoring error here is safe, editor is out of sync and the selection
71
- // is actually none, so no toolbar should be shown
72
- }
73
- }
74
-
75
- domNode.style.opacity = 1;
76
- domNode.style.top = `${
77
- rect.top + window.pageYOffset - domNode.offsetHeight - 6
78
- }px`;
79
- domNode.style.left = `${Math.max(
80
- rect.left + window.pageXOffset - domNode.offsetWidth / 2 + rect.width / 2,
81
- 0, // if the left edge of the toolbar should be otherwise offscreen
82
- )}px`;
83
- });
84
-
85
- return (
86
- <Portal>
87
- <BasicToolbar
88
- className={cx('slate-inline-toolbar', { [className]: className })}
89
- ref={ref}
90
- >
91
- {children}
92
- {enableExpando && toggleButton && (
93
- <>
94
- <Separator />
95
- {toggleButton}
96
- </>
97
- )}
98
- </BasicToolbar>
99
- </Portal>
100
- );
101
- };
102
-
103
- export default Toolbar;
@@ -1,33 +0,0 @@
1
- import cx from 'classnames';
2
- import React from 'react';
3
- import { Icon } from '@plone/volto/components';
4
- import { Button } from 'semantic-ui-react';
5
- import { useIntl } from 'react-intl';
6
-
7
- const ToolbarButton = React.forwardRef(
8
- ({ className, active, reversed, icon, style, title = '', ...props }, ref) => {
9
- const intl = useIntl();
10
- const i18ntitle =
11
- typeof title !== 'string' ? intl.formatMessage(title) : title;
12
- return (
13
- <div className="button-wrapper">
14
- <Button
15
- as="a"
16
- {...props}
17
- title={i18ntitle}
18
- ref={ref}
19
- style={style}
20
- className={cx(className)}
21
- active={active}
22
- inverted={reversed}
23
- compact
24
- toggle
25
- size="tiny"
26
- icon={icon && <Icon name={icon} size="24px" />}
27
- ></Button>
28
- </div>
29
- );
30
- },
31
- );
32
-
33
- export default ToolbarButton;
@@ -1,25 +0,0 @@
1
- import React from 'react';
2
- import configureStore from 'redux-mock-store';
3
- import { Provider } from 'react-intl-redux';
4
- import { waitFor, render } from '@testing-library/react';
5
-
6
- import ToolbarButton from './ToolbarButton';
7
-
8
- const mockStore = configureStore();
9
-
10
- describe('ToolbarButton', () => {
11
- it('renders a toolbar button', async () => {
12
- const store = mockStore({
13
- intl: {
14
- locale: 'en',
15
- messages: {},
16
- },
17
- });
18
- const { asFragment } = render(
19
- <Provider store={store}>
20
- <ToolbarButton />
21
- </Provider>,
22
- );
23
- await waitFor(() => expect(asFragment()).toMatchSnapshot());
24
- });
25
- });
@@ -1,15 +0,0 @@
1
- export { default as BasicToolbar } from './BasicToolbar';
2
- export { default as BlockButton } from './BlockButton';
3
- export { default as ClearFormattingButton } from './ClearFormattingButton';
4
- export { default as ExpandedToolbar } from './ExpandedToolbar';
5
- export { default as Expando } from './Expando';
6
- export { default as MarkButton } from './MarkButton';
7
- export { default as Menu } from './Menu';
8
- export { default as Separator } from './Separator';
9
- export { default as SlateContextToolbar } from './SlateContextToolbar';
10
- export { default as SlateToolbar } from './SlateToolbar';
11
- export { default as Toolbar } from './Toolbar';
12
- export { default as ToolbarButton } from './ToolbarButton';
13
- export { default as MarkElementButton } from './MarkElementButton';
14
- export { default as PositionedToolbar } from './PositionedToolbar';
15
- export { default as InlineToolbar } from './InlineToolbar';
@@ -1,248 +0,0 @@
1
- import { INLINE_ELEMENTS, TEXT_NODE } from '../constants';
2
-
3
- // Original at https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Whitespace
4
- /**
5
- * Throughout, whitespace is defined as one of the characters
6
- * "\t" TAB \u0009
7
- * "\n" LF \u000A
8
- * "\r" CR \u000D
9
- * " " SPC \u0020
10
- *
11
- * This does not use JavaScript's "\s" because that includes non-breaking
12
- * spaces (and also some other characters).
13
- */
14
-
15
- /**
16
- * Determine whether a node's text content is entirely whitespace.
17
- *
18
- * @param nod A node implementing the |CharacterData| interface (i.e.,
19
- * a |Text|, |Comment|, or |CDATASection| node
20
- * @return True if all of the text content of |nod| is whitespace,
21
- * otherwise false.
22
- */
23
- export function is_all_ws(text) {
24
- return !/[^\t\n\r ]/.test(text);
25
- }
26
-
27
- /**
28
- * Version of |data| that doesn't include whitespace at the beginning
29
- * and end and normalizes all whitespace to a single space. (Normally
30
- * |data| is a property of text nodes that gives the text of the node.)
31
- *
32
- * @param txt The text node whose data should be returned
33
- * @return A string giving the contents of the text node with
34
- * whitespace collapsed.
35
- */
36
- export function data_of(txt) {
37
- let data = txt.textContent;
38
- data = data.replace(/[\t\n\r ]+/g, ' ');
39
- if (data[0] === ' ') {
40
- data = data.substring(1, data.length);
41
- }
42
- if (data[data.length - 1] === ' ') {
43
- data = data.substring(0, data.length - 1);
44
- }
45
- return data;
46
- }
47
-
48
- /**
49
- * Determine if a node should be ignored by the iterator functions.
50
- *
51
- * @param nod An object implementing the DOM1 |Node| interface.
52
- * @return true if the node is:
53
- * 1) A |Text| node that is all whitespace
54
- * 2) A |Comment| node
55
- * and otherwise false.
56
- */
57
-
58
- export function is_ignorable(nod) {
59
- return (
60
- nod.nodeType === 8 || // A comment node
61
- (nod.nodeType === 3 && is_all_ws(nod.textContent))
62
- ); // a text node, all ws
63
- }
64
-
65
- /**
66
- * Version of |previousSibling| that skips nodes that are entirely
67
- * whitespace or comments. (Normally |previousSibling| is a property
68
- * of all DOM nodes that gives the sibling node, the node that is
69
- * a child of the same parent, that occurs immediately before the
70
- * reference node.)
71
- *
72
- * @param sib The reference node.
73
- * @return Either:
74
- * 1) The closest previous sibling to |sib| that is not
75
- * ignorable according to |is_ignorable|, or
76
- * 2) null if no such node exists.
77
- */
78
- export function node_before(sib) {
79
- while ((sib = sib.previousSibling)) {
80
- if (!is_ignorable(sib)) {
81
- return sib;
82
- }
83
- }
84
- return null;
85
- }
86
-
87
- /**
88
- * Version of |nextSibling| that skips nodes that are entirely
89
- * whitespace or comments.
90
- *
91
- * @param sib The reference node.
92
- * @return Either:
93
- * 1) The closest next sibling to |sib| that is not
94
- * ignorable according to |is_ignorable|, or
95
- * 2) null if no such node exists.
96
- */
97
- export function node_after(sib) {
98
- while ((sib = sib.nextSibling)) {
99
- if (!is_ignorable(sib)) {
100
- return sib;
101
- }
102
- }
103
- return null;
104
- }
105
-
106
- /**
107
- * Version of |lastChild| that skips nodes that are entirely
108
- * whitespace or comments. (Normally |lastChild| is a property
109
- * of all DOM nodes that gives the last of the nodes contained
110
- * directly in the reference node.)
111
- *
112
- * @param sib The reference node.
113
- * @return Either:
114
- * 1) The last child of |sib| that is not
115
- * ignorable according to |is_ignorable|, or
116
- * 2) null if no such node exists.
117
- */
118
- export function last_child(par) {
119
- let res = par.lastChild;
120
- while (res) {
121
- if (!is_ignorable(res)) {
122
- return res;
123
- }
124
- res = res.previousSibling;
125
- }
126
- return null;
127
- }
128
-
129
- /**
130
- * Version of |firstChild| that skips nodes that are entirely
131
- * whitespace and comments.
132
- *
133
- * @param sib The reference node.
134
- * @return Either:
135
- * 1) The first child of |sib| that is not
136
- * ignorable according to |is_ignorable|, or
137
- * 2) null if no such node exists.
138
- */
139
- export function first_child(par) {
140
- let res = par.firstChild;
141
- while (res) {
142
- if (!is_ignorable(res)) {
143
- return res;
144
- }
145
- res = res.nextSibling;
146
- }
147
- return null;
148
- }
149
-
150
- export const removeSpaceBeforeAfterEndLine = (text) => {
151
- text = text.replace(/\s+\n/gm, '\n'); // space before endline
152
- text = text.replace(/\n\s+/gm, '\n'); // space after endline
153
- return text;
154
- };
155
-
156
- export const convertTabsToSpaces = (text) => text.replace(/\t/gm, ' ');
157
- export const convertLineBreaksToSpaces = (text) => text.replace(/\n/gm, ' ');
158
-
159
- export const isInline = (node) =>
160
- node &&
161
- (node.nodeType === TEXT_NODE || INLINE_ELEMENTS.includes(node.nodeName));
162
-
163
- export const removeSpaceFollowSpace = (text, node) => {
164
- // Any space immediately following another space (even across two separate
165
- // inline elements) is ignored (rule 4)
166
- text = text.replace(/ ( +)/gm, ' ');
167
- if (!text.startsWith(' ')) return text;
168
-
169
- if (node.previousSibling) {
170
- if (node.previousSibling.nodeType === TEXT_NODE) {
171
- if (node.previousSibling.textContent.endsWith(' ')) {
172
- return text.replace(/^ /, '');
173
- }
174
- } else if (isInline(node.previousSibling)) {
175
- const prevText = collapseInlineSpace(node.previousSibling);
176
- if (prevText.endsWith(' ')) {
177
- return text.replace(/^ /, '');
178
- }
179
- }
180
- } else {
181
- const parent = node.parentNode;
182
- if (parent.previousSibling) {
183
- // && isInline(parent.previousSibling)
184
- const prevText = collapseInlineSpace(parent.previousSibling);
185
- if (prevText && prevText.endsWith(' ')) {
186
- return text.replace(/^ /, '');
187
- }
188
- }
189
- }
190
-
191
- return text;
192
- };
193
-
194
- export const removeElementEdges = (text, node) => {
195
- if (
196
- !isInline(node.parentNode) &&
197
- !node.previousSibling &&
198
- text.match(/^\s/)
199
- ) {
200
- text = text.replace(/^\s+/, '');
201
- }
202
-
203
- if (text.match(/\s$/) && !node.nextSibling && !isInline(node.parentNode)) {
204
- text = text.replace(/\s$/, '');
205
- }
206
-
207
- return text;
208
- };
209
-
210
- export const collapseInlineSpace = (node) => {
211
- let text = node.textContent;
212
-
213
- // See https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Whitespace
214
-
215
- // 1. all spaces and tabs immediately before and after a line break are ignored
216
-
217
- text = removeSpaceBeforeAfterEndLine(text);
218
-
219
- // 2. Next, all tab characters are handled as space characters
220
- text = convertTabsToSpaces(text);
221
-
222
- // 3. Convert all line breaks to spaces
223
- text = convertLineBreaksToSpaces(text);
224
-
225
- // 4. Any space immediately following another space
226
- // (even across two separate inline elements) is ignored
227
- text = removeSpaceFollowSpace(text, node);
228
-
229
- // 5. Sequences of spaces at the beginning and end of an element are removed
230
- text = removeElementEdges(text, node);
231
-
232
- // (volto) Return null if the element is not adjacent to an inline node
233
- // This will cause the element to be ignored in the deserialization
234
- // TODO: use the node traverse functions defined here
235
- if (
236
- is_all_ws(text) &&
237
- !(
238
- isInline(node.previousSibling) ||
239
- isInline(node.nextSibling) ||
240
- isInline(node.parentNode.nextSibling) ||
241
- isInline(node.parentNode.previousSibling)
242
- )
243
- ) {
244
- return null;
245
- }
246
-
247
- return text;
248
- };
@@ -1,56 +0,0 @@
1
- import React from 'react';
2
- import { useDispatch, useSelector } from 'react-redux';
3
- import { useIntl } from 'react-intl'; // , defineMessages
4
-
5
- import clearSVG from '@plone/volto/icons/delete.svg';
6
-
7
- import { ToolbarButton } from '@plone/volto-slate/editor/ui';
8
- import { setPluginOptions } from '@plone/volto-slate/actions';
9
-
10
- /*
11
- * Note: this is a weirder component, it should be called as a native function
12
- */
13
- export default (options) => (editor) => {
14
- const {
15
- isActiveElement,
16
- unwrapElement,
17
- pluginId,
18
- messages,
19
- toolbarButtonIcon,
20
- } = options;
21
- const intl = useIntl();
22
- const dispatch = useDispatch();
23
- const pid = `${editor.uid}-${pluginId}`;
24
- const showEditor = useSelector(
25
- (state) => state['slate_plugins']?.[pid]?.show_sidebar_editor,
26
- );
27
-
28
- return isActiveElement(editor) ? (
29
- <React.Fragment key={pluginId}>
30
- <ToolbarButton
31
- title={intl.formatMessage(messages.edit)}
32
- icon={toolbarButtonIcon}
33
- active={showEditor}
34
- aria-label={intl.formatMessage(messages.edit)}
35
- onMouseDown={() => {
36
- dispatch(
37
- setPluginOptions(pid, {
38
- show_sidebar_editor: true,
39
- }),
40
- );
41
- }}
42
- />
43
- <ToolbarButton
44
- title={intl.formatMessage(messages.delete)}
45
- icon={clearSVG}
46
- aria-label={intl.formatMessage(messages.delete)}
47
- alt={intl.formatMessage(messages.delete)}
48
- onMouseDown={() => {
49
- unwrapElement(editor);
50
- }}
51
- />
52
- </React.Fragment>
53
- ) : (
54
- ''
55
- );
56
- };
@@ -1,124 +0,0 @@
1
- /* eslint no-console: ["error", { allow: ["error"] }] */
2
- import { isEqual } from 'lodash';
3
- import React from 'react';
4
- import { useDispatch } from 'react-redux';
5
- import { ReactEditor } from 'slate-react';
6
- import { Icon as VoltoIcon, BlockDataForm } from '@plone/volto/components';
7
- import { setPluginOptions } from '@plone/volto-slate/actions';
8
- import BaseSchemaProvider from './SchemaProvider';
9
-
10
- import briefcaseSVG from '@plone/volto/icons/briefcase.svg';
11
- import checkSVG from '@plone/volto/icons/check.svg';
12
- import clearSVG from '@plone/volto/icons/clear.svg';
13
-
14
- const PluginEditor = (props) => {
15
- const {
16
- editor,
17
- schemaProvider,
18
- pluginId,
19
- getActiveElement,
20
- isActiveElement,
21
- insertElement,
22
- unwrapElement,
23
- hasValue,
24
- onChangeValues,
25
- } = props;
26
-
27
- const dispatch = useDispatch();
28
- const [formData, setFormData] = React.useState({});
29
-
30
- const active = getActiveElement(editor);
31
-
32
- if (!active) {
33
- console.error('Active element not found, this will crash');
34
- }
35
- const [elementNode] = active;
36
- const isElement = isActiveElement(editor);
37
-
38
- // Update the form data based on the current element
39
- const elRef = React.useRef(null);
40
-
41
- if (isElement && !isEqual(elementNode, elRef.current)) {
42
- elRef.current = elementNode;
43
- setFormData(elementNode.data || {});
44
- } else if (!isElement) {
45
- elRef.current = null;
46
- }
47
-
48
- const saveDataToEditor = React.useCallback(
49
- (formData) => {
50
- if (hasValue(formData)) {
51
- // hasValue(formData) = !!formData.footnote
52
- insertElement(editor, formData);
53
- } else {
54
- unwrapElement(editor);
55
- }
56
- },
57
- [editor, insertElement, unwrapElement, hasValue],
58
- );
59
-
60
- const checkForCancel = () => {
61
- if (!hasValue(elementNode.data)) {
62
- unwrapElement(editor);
63
- }
64
- };
65
-
66
- const SchemaProvider = schemaProvider ? schemaProvider : BaseSchemaProvider;
67
-
68
- const pid = `${editor.uid}-${pluginId}`;
69
- return (
70
- <SchemaProvider {...props} data={formData}>
71
- {(schema) => (
72
- <BlockDataForm
73
- schema={schema}
74
- title={schema.title}
75
- icon={<VoltoIcon size="24px" name={briefcaseSVG} />}
76
- onChangeField={(id, value) => {
77
- if (!onChangeValues) {
78
- return setFormData({
79
- ...formData,
80
- [id]: value,
81
- });
82
- }
83
- return onChangeValues(id, value, formData, setFormData);
84
- }}
85
- onChangeFormData={setFormData}
86
- formData={formData}
87
- headerActions={
88
- <>
89
- <button
90
- onClick={() => {
91
- saveDataToEditor(formData);
92
- dispatch(
93
- setPluginOptions(pid, {
94
- show_sidebar_editor: false,
95
- }),
96
- );
97
- ReactEditor.focus(editor);
98
- }}
99
- >
100
- <VoltoIcon size="24px" name={checkSVG} />
101
- </button>
102
- <button
103
- onClick={() => {
104
- checkForCancel();
105
- dispatch(
106
- setPluginOptions(pid, {
107
- show_sidebar_editor: false,
108
- }),
109
- );
110
- setFormData({});
111
- ReactEditor.focus(editor);
112
- }}
113
- >
114
- <VoltoIcon size="24px" name={clearSVG} />
115
- </button>
116
- </>
117
- }
118
- />
119
- )}
120
- </SchemaProvider>
121
- );
122
- };
123
-
124
- export default PluginEditor;
@@ -1,6 +0,0 @@
1
- A generic plugin that can be used to create other editor interactions that
2
- follow the following pattern:
3
-
4
- - the plugin needs a button that toggles a format (an inline element)
5
- - the plugin needs a separate edit form for advanced customization of the data
6
- attached to the element
@@ -1,3 +0,0 @@
1
- export default ({ editSchema, children }) => {
2
- return children(editSchema);
3
- };
@@ -1,46 +0,0 @@
1
- /**
2
- * A small wrapper around PluginEditor. Its purpose it to allow for clearer
3
- * code, otherwise it would mix too many hooks and it's not possible to render
4
- * a variable number of hooks in a component
5
- */
6
- import React from 'react';
7
- import { useSelector, useDispatch } from 'react-redux';
8
- import { SidebarPopup } from '@plone/volto/components';
9
- import { setPluginOptions } from '@plone/volto-slate/actions';
10
-
11
- const SidebarEditor = (props) => {
12
- const { editor, pluginId, getActiveElement, pluginEditor } = props;
13
- const pid = `${editor.uid}-${pluginId}`;
14
- const PluginEditor = pluginEditor;
15
- const showEditor = useSelector((state) => {
16
- return state['slate_plugins']?.[pid]?.show_sidebar_editor;
17
- });
18
-
19
- const dispatch = useDispatch();
20
-
21
- let active;
22
- try {
23
- active = getActiveElement(editor);
24
- } catch (error) {
25
- // eslint-disable-next-line
26
- console.warn('Error in getting active element', error);
27
- }
28
-
29
- // Hide the editor when switching to another text element
30
- React.useEffect(() => {
31
- if (!active)
32
- dispatch(setPluginOptions(pid, { show_sidebar_editor: false }));
33
- }, [active, dispatch, pluginId, pid]);
34
-
35
- editor.isSidebarOpen = showEditor && active;
36
-
37
- return editor.isSidebarOpen ? (
38
- <SidebarPopup open={true}>
39
- <PluginEditor {...props} />
40
- </SidebarPopup>
41
- ) : (
42
- ''
43
- );
44
- };
45
-
46
- export default SidebarEditor;