@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,31 +0,0 @@
1
- import { Transforms, createEditor } from 'slate'; // , Transforms
2
- import { withReact, ReactEditor } from 'slate-react';
3
-
4
- import config from '@plone/volto/registry';
5
-
6
- export function setEditorContent(editor, block) {
7
- Transforms.removeNodes(editor, { at: [0] }); // TODO: at: [] needs rethinking
8
- Transforms.insertNodes(editor, block);
9
- }
10
-
11
- export function makeEditor(options = {}) {
12
- const { extensions = [] } = options;
13
- const { slate } = config.settings;
14
- const defaultExtensions = slate.extensions;
15
-
16
- const editor = withReact(createEditor());
17
-
18
- // TODO: also look for MIME Types in the files case
19
- editor.dataTransferFormatsOrder = [
20
- 'application/x-slate-fragment',
21
- 'text/html',
22
- 'files',
23
- 'text/plain',
24
- ];
25
- editor.dataTransferHandlers = {};
26
-
27
- const plugins = [...defaultExtensions, ...extensions];
28
- editor.isSelected = () => ReactEditor.isFocused(editor);
29
-
30
- return plugins.reduce((acc, extender) => extender(acc), editor);
31
- }
@@ -1,25 +0,0 @@
1
- export function srcToDataUri(url, callback) {
2
- // Based on https://github.com/ianstormtaylor/slate-plugins
3
- const canvas = window.document.createElement('canvas');
4
- const img = window.document.createElement('img');
5
-
6
- if (!canvas.getContext) {
7
- return setTimeout(callback, 0, new Error('Canvas is not supported.'));
8
- }
9
-
10
- img.onload = () => {
11
- const ctx = canvas.getContext('2d');
12
- canvas.width = img.width;
13
- canvas.height = img.height;
14
- ctx.drawImage(img, 0, 0);
15
- const dataUri = canvas.toDataURL('image/png');
16
- callback(null, dataUri);
17
- };
18
-
19
- img.ononerror = () => {
20
- callback(new Error('Failed to load image.'));
21
- };
22
-
23
- img.setAttribute('crossOrigin', 'anonymous');
24
- img.src = url;
25
- }
@@ -1,11 +0,0 @@
1
- export * from './blocks';
2
- export * from './editor';
3
- export * from './internals';
4
- export * from './lists';
5
- export * from './marks';
6
- export * from './nodes';
7
- export * from './ops';
8
- export * from './random';
9
- export * from './selection';
10
- export * from './volto-blocks';
11
- export * from './mime-types';
@@ -1,46 +0,0 @@
1
- import { Editor } from 'slate';
2
-
3
- /**
4
- * @param {Point} point The point to verify.
5
- * @returns {boolean} Whether it refers to a (leaf) Text node in the closest-to-root level it can be.
6
- */
7
- export const isPointAtRoot = (point) => point.path.length === 2;
8
-
9
- /**
10
- * @summary Returns true if the specified range has any of its edges at the
11
- * closest-to-root level a Point can be (a Point can only reffer to Text
12
- * nodes).
13
- * @description It does not assure the caller about whether the contents of the
14
- * range are at block level, but it does assure that one of the edges of the
15
- * given range is at closest-to-root level it can be. A range can cover inner
16
- * node children though. If through "inner node child" we also understand the
17
- * closest-to-root level Leaf nodes can be (taking into account this: Editor
18
- * - level 0, blocks - level 1, blocks and leaves - level 2, it is level 2)
19
- * then the cursor specified by the given range can include inner node
20
- * childs and the return value can be true at the same time. Practically the
21
- * cursor is always at block level since nothing exists outside blocks in
22
- * Slate and is always in Text nodes since a Point can only reffer to an
23
- * offset in a Text node.
24
- * @param {Range} range Must be a valid `Range`, not `null` or `undefined`.
25
- * @returns {boolean}
26
- */
27
- export const isRangeAtRoot = (range) => {
28
- return isPointAtRoot(range.anchor) || isPointAtRoot(range.focus);
29
- };
30
-
31
- /**
32
- * The block in a valid Slate document according to our schema can be here
33
- * either a Slate block that touches the root or a Slate inline (the other
34
- * possibility, a leaf Text node is excluded because we are taking the
35
- * parent of the selection).
36
- *
37
- * @param {Editor} editor
38
- * @param {Range} range
39
- *
40
- * @returns {boolean} true if the range (usually the selection) can be split
41
- * into two editors (usually Volto Slate Text blocks)
42
- */
43
- export const rangeIsInSplittableNode = (editor, range) => {
44
- const [block] = Editor.parent(editor, range);
45
- return range && (isRangeAtRoot(range) || editor.isInline(block));
46
- };
@@ -1,92 +0,0 @@
1
- import { Editor, Range, Transforms, Path } from 'slate';
2
- import config from '@plone/volto/registry';
3
-
4
- export function isCursorInList(editor) {
5
- const { slate } = config.settings;
6
-
7
- const result = Editor.above(editor, {
8
- match: (n) => n.type === slate.listItemType,
9
- });
10
-
11
- if (!result) {
12
- return false;
13
- }
14
-
15
- const [listItemWithSelection] = result;
16
-
17
- // whether the selection is inside a list item
18
- const listItemCase =
19
- Range.isCollapsed(editor.selection) && listItemWithSelection;
20
-
21
- return listItemCase;
22
- }
23
-
24
- export function isCursorAtListBlockStart(editor) {
25
- if (editor.selection && Range.isCollapsed(editor.selection)) {
26
- const { anchor } = editor.selection;
27
- return anchor.offset > 0
28
- ? false
29
- : anchor.path.length === 3 &&
30
- anchor.path.reduce((acc, x) => acc + x, 0) === 0;
31
- }
32
- }
33
-
34
- const getPreviousSiblingPath = function (path) {
35
- // Doesn't raise an error if no previous sibling exists
36
- const last = path[path.length - 1];
37
-
38
- if (last <= 0) {
39
- return null;
40
- }
41
-
42
- return path.slice(0, -1).concat(last - 1);
43
- };
44
-
45
- export function mergeWithPreviousList(editor, listPath) {
46
- const { slate } = config.settings;
47
- const prevSiblingPath = getPreviousSiblingPath(listPath);
48
- const [currentList] = Editor.node(editor, listPath);
49
- if (prevSiblingPath) {
50
- const [prevSibling] = Editor.node(editor, prevSiblingPath);
51
-
52
- if (slate.listTypes.includes(prevSibling.type)) {
53
- Transforms.mergeNodes(editor, {
54
- // match: (node) => slate.listTypes.includes(node.type),
55
- match: (node) => node === prevSibling || node === currentList,
56
- mode: 'highest',
57
- at: listPath,
58
- });
59
- }
60
- }
61
- }
62
-
63
- export function mergeWithNextList(editor, listPath) {
64
- const { slate } = config.settings;
65
- const [currentList] = Editor.node(editor, listPath);
66
- const [parent] = Editor.parent(editor, listPath);
67
-
68
- if (parent.children.length - 1 > listPath[listPath.length - 1]) {
69
- const nextSiblingPath = Path.next(listPath);
70
- const [nextSibling] = Editor.node(editor, nextSiblingPath);
71
-
72
- if (slate.listTypes.includes(nextSibling.type)) {
73
- Transforms.mergeNodes(editor, {
74
- match: (node) => {
75
- return node === currentList || node === nextSibling;
76
- },
77
- at: nextSiblingPath,
78
- mode: 'highest',
79
- });
80
- }
81
- }
82
- }
83
-
84
- export function getCurrentListItem(editor) {
85
- const { slate } = config.settings;
86
- const [match] = Editor.nodes(editor, {
87
- at: editor.selection.anchor.path,
88
- match: (n) => n.type === slate.listItemType,
89
- mode: 'lowest',
90
- });
91
- return match || []; // empty entry if nothing is found
92
- }
@@ -1,104 +0,0 @@
1
- import React from 'react';
2
- import { Editor, Transforms, Range, Text } from 'slate';
3
-
4
- export function isMarkActive(editor, format) {
5
- // TODO: this implementation is not ok. LibreOffice Writer only shows
6
- // mark button as active if the mark is applied to the entire selected range
7
- // Here, it seems, the mark doesn't need to cover the entire selection,
8
- // which is wrong
9
- let marks;
10
- try {
11
- marks = Editor.marks(editor);
12
- } catch (ex) {
13
- // bug in Slate, recently appears only in Cypress context, more exactly when I press Enter inside a numbered list first item to produce a split (resulting two list items) (not sure if manually inside the Cypress browser but automatically it surely appears)
14
- // if (
15
- // ex.message ===
16
- // 'Cannot get the leaf node at path [0,0] because it refers to a non-leaf node: [object Object]' // also with [0,1]
17
- // ) {
18
- marks = null;
19
- // } else {
20
- // throw ex;
21
- // }
22
- }
23
- return marks ? marks[format] === true : false;
24
- }
25
-
26
- function addMark(editor, key, value) {
27
- const { selection } = editor;
28
-
29
- if (selection) {
30
- if (Range.isExpanded(selection)) {
31
- Transforms.setNodes(
32
- editor,
33
- { [key]: value },
34
- {
35
- match: (node) => {
36
- // console.log('node', node);
37
- return Text.isText(node) || editor.isVoid(node);
38
- },
39
- split: true,
40
- },
41
- );
42
- } else {
43
- const marks = {
44
- ...(Editor.marks(editor) || {}),
45
- [key]: value,
46
- };
47
-
48
- editor.marks = marks;
49
- editor.onChange();
50
- }
51
- }
52
- }
53
-
54
- export function toggleMark(editor, format) {
55
- const isActive = isMarkActive(editor, format);
56
-
57
- if (isActive) {
58
- Editor.removeMark(editor, format);
59
- } else {
60
- // don't apply marks inside inlines (such as footnote) because
61
- // that splits the footnote into multiple footnotes
62
- addMark(editor, format, true);
63
- // if (isSelectionInline(editor)) {
64
- // addMark(editor, format, true);
65
- // }
66
- }
67
- }
68
-
69
- /*
70
- * Replaces inline text elements with a wrapper result:
71
- *
72
- * Leaves are wrapped and non-leaves are cloned. Empty leaves are removed.
73
- */
74
- export function wrapInlineMarkupText(children, wrapper) {
75
- if (typeof children === 'string') {
76
- return children ? wrapper(children) : null;
77
- }
78
-
79
- // TODO: find the deepest child that needs to be replaced.
80
- // TODO: note: this might trigger warnings about keys
81
- if (Array.isArray(children)) {
82
- return children
83
- .map((child) => {
84
- if (typeof child === 'string' && child.length >= 1) {
85
- return wrapper(children);
86
- }
87
- if (typeof child === 'string' && child.length === 0) {
88
- return null;
89
- }
90
- return React.cloneElement(
91
- child,
92
- child.props,
93
- wrapInlineMarkupText(child.props.children, wrapper),
94
- );
95
- })
96
- .filter((child) => !!child);
97
- }
98
-
99
- return React.cloneElement(
100
- children,
101
- children.props,
102
- wrapInlineMarkupText(children.props.children, wrapper),
103
- );
104
- }
@@ -1,24 +0,0 @@
1
- export class MIMETypeName {
2
- constructor(name) {
3
- if (name.includes('/')) {
4
- this.name = name;
5
- this.firstName = name.split('/')[0];
6
- this.secondName = name.split('/')[1];
7
- } else {
8
- this.firstName = name;
9
- this.secondName = null;
10
- }
11
- }
12
-
13
- /**
14
- * @param {MIMETypeName} mt
15
- */
16
- matches(mt) {
17
- return (
18
- this.firstName === mt.firstName &&
19
- (this.secondName && mt.secondName
20
- ? this.secondName === mt.secondName
21
- : true)
22
- );
23
- }
24
- }
@@ -1,4 +0,0 @@
1
- /**
2
- * Is it the first child of the parent
3
- */
4
- export const isFirstChild = (path) => path[path.length - 1] === 0;
@@ -1,20 +0,0 @@
1
- import {
2
- getFragmentFromBeginningOfEditorToStartOfSelection,
3
- getFragmentFromStartOfSelectionToEndOfEditor,
4
- } from './selection';
5
-
6
- /*
7
- * Gets two fragments: left, right: before selection, after selection
8
- */
9
- export function splitEditorInTwoFragments(editor, initialSelection) {
10
- initialSelection = initialSelection || editor.selection;
11
- let left = getFragmentFromBeginningOfEditorToStartOfSelection(
12
- editor,
13
- initialSelection,
14
- );
15
- let right = getFragmentFromStartOfSelectionToEndOfEditor(
16
- editor,
17
- initialSelection,
18
- );
19
- return [left, right];
20
- }
@@ -1,17 +0,0 @@
1
- // Based on https://github.com/ai/nanoid/blob/master/non-secure/index.js
2
-
3
- // This alphabet uses `A-Za-z0-9_-` symbols. The genetic algorithm helped
4
- // optimize the gzip compression for this alphabet.
5
- const urlAlphabet =
6
- 'ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW';
7
-
8
- export const nanoid = (size = 21) => {
9
- let id = '';
10
- // A compact alternative for `for (var i = 0; i < step; i++)`.
11
- let i = size;
12
- while (i--) {
13
- // `| 0` is more compact and faster than `Math.floor()`.
14
- id += urlAlphabet[(Math.random() * 64) | 0];
15
- }
16
- return id;
17
- };
@@ -1,236 +0,0 @@
1
- import { castArray, cloneDeep } from 'lodash';
2
- import { Editor, Transforms, Range, Node } from 'slate';
3
- import { ReactEditor } from 'slate-react';
4
- import { isCursorInList, makeEditor } from '@plone/volto-slate/utils';
5
- import { LI } from '@plone/volto-slate/constants';
6
- import config from '@plone/volto/registry';
7
-
8
- /**
9
- * Get the nodes with a type included in `types` in the selection (from root to leaf).
10
- *
11
- * @param {} editor
12
- * @param {} types
13
- * @param {} options
14
- */
15
- export function getSelectionNodesByType(editor, types, options = {}) {
16
- types = castArray(types);
17
-
18
- return Editor.nodes(editor, {
19
- match: (n) => {
20
- return types.includes(n.type);
21
- },
22
- ...options,
23
- });
24
- }
25
-
26
- /**
27
- * Is there a node with a type included in `types` in the selection (from root to leaf).
28
- */
29
- export function isNodeInSelection(editor, types, options = {}) {
30
- const [match] = getSelectionNodesByType(editor, types, options);
31
- return !!match;
32
- }
33
-
34
- /**
35
- * getSelectionNodesArrayByType.
36
- *
37
- * @param {} editor
38
- * @param {} types
39
- * @param {} options
40
- */
41
- export function getSelectionNodesArrayByType(editor, types, options = {}) {
42
- return Array.from(getSelectionNodesByType(editor, types, options));
43
- }
44
-
45
- /**
46
- * getMaxRange.
47
- *
48
- * @param {} editor
49
- *
50
- * TODO: is [0] ok as a path?
51
- */
52
- export function getMaxRange(editor) {
53
- const maxRange = {
54
- anchor: Editor.start(editor, [0]),
55
- focus: Editor.end(editor, [0]),
56
- };
57
- return maxRange;
58
- }
59
-
60
- /**
61
- * selectAll.
62
- *
63
- * @param {} editor
64
- */
65
- export function selectAll(editor) {
66
- Transforms.select(editor, getMaxRange(editor));
67
- }
68
-
69
- // In the isCursorAtBlockStart/End functions maybe use a part of these pieces of code:
70
- // Range.isCollapsed(editor.selection) &&
71
- // Point.equals(editor.selection.anchor, Editor.start(editor, []))
72
-
73
- /**
74
- * isCursorAtBlockStart.
75
- *
76
- * @param {} editor
77
- */
78
- export function isCursorAtBlockStart(editor) {
79
- // It does not work properly with lists
80
-
81
- if (editor.selection && Range.isCollapsed(editor.selection)) {
82
- const { anchor } = editor.selection;
83
- return anchor.offset > 0
84
- ? false
85
- : anchor.path.reduce((acc, x) => acc + x, 0) === 0;
86
- // anchor.path.length === 2 &&
87
- }
88
- return false;
89
- }
90
-
91
- /**
92
- * isCursorAtBlockEnd.
93
- *
94
- * @param {} editor
95
- */
96
- export function isCursorAtBlockEnd(editor) {
97
- // fixSelection(editor);
98
-
99
- // if the selection is collapsed
100
- if (editor.selection && Range.isCollapsed(editor.selection)) {
101
- const anchor = editor.selection?.anchor || {};
102
-
103
- // the last block node in the editor
104
- const [node] = Node.last(editor, []);
105
-
106
- if (
107
- // if the node with the selection is the last block node
108
- Node.get(editor, anchor.path) === node &&
109
- // if the collapsed selection is at the end of the last block node
110
- anchor.offset === node.text.length
111
- ) {
112
- return true;
113
- }
114
- }
115
- return false;
116
- }
117
-
118
- const defaultListItemValue = () => {
119
- const { slate } = config.settings;
120
- const dv = slate.defaultValue();
121
- dv[0].type = LI;
122
- return dv;
123
- };
124
-
125
- /**
126
- * getFragmentFromStartOfSelectionToEndOfEditor.
127
- *
128
- * @param {} editor
129
- */
130
- export function getFragmentFromStartOfSelectionToEndOfEditor(
131
- editor,
132
- initialSelection,
133
- ) {
134
- if (typeof initialSelection === 'undefined') {
135
- initialSelection = editor.selection;
136
- }
137
-
138
- const { slate } = config.settings;
139
- const range = Editor.range(
140
- editor,
141
- Range.isBackward(initialSelection)
142
- ? initialSelection.focus
143
- : initialSelection.anchor,
144
- Editor.end(editor, []),
145
- );
146
-
147
- // this is the case when the fragment is empty, and we must return
148
- // empty fragment but without formatting
149
- if (Range.isCollapsed(range)) {
150
- if (isCursorInList(editor)) {
151
- return defaultListItemValue();
152
- } else {
153
- return slate.defaultValue();
154
- }
155
- }
156
-
157
- // immer doesn't like editor.savedSelection
158
- const newEditor = makeEditor();
159
- newEditor.children = cloneDeep(editor.children);
160
- return Editor.fragment(newEditor, range);
161
- }
162
-
163
- /**
164
- * getFragmentFromBeginningOfEditorToStartOfSelection.
165
- *
166
- * @param {} editor
167
- */
168
- export function getFragmentFromBeginningOfEditorToStartOfSelection(
169
- editor,
170
- initialSelection,
171
- ) {
172
- if (typeof initialSelection === 'undefined') {
173
- initialSelection = editor.selection;
174
- }
175
-
176
- // immer doesn't like editor.savedSelection
177
- // TODO: there's a bug here related to splitting lists
178
- const newEditor = makeEditor();
179
- newEditor.children = cloneDeep(editor.children);
180
-
181
- return Editor.fragment(
182
- newEditor,
183
- Editor.range(
184
- newEditor,
185
- [],
186
- Range.isBackward(initialSelection)
187
- ? initialSelection.focus
188
- : initialSelection.anchor,
189
- ),
190
- );
191
- }
192
-
193
- /**
194
- * @returns {boolean} true if editor contains a range selection (active
195
- * selection or at least a saved selection)
196
- * @param {Editor} editor
197
- */
198
- export function hasRangeSelection(editor, useSavedSelection = true) {
199
- const { selection } = editor;
200
- const savedSelection = editor.getSavedSelection();
201
-
202
- const range = ReactEditor.isFocused(editor)
203
- ? selection || (useSavedSelection ? savedSelection : null)
204
- : savedSelection;
205
-
206
- if (!range) {
207
- // console.log('no range', editor);
208
- return;
209
- }
210
-
211
- const res = Range.isExpanded(range);
212
- // console.log('call hasRange', res);
213
- return res;
214
- }
215
-
216
- export function parseDefaultSelection(editor, defaultSelection) {
217
- if (defaultSelection) {
218
- if (defaultSelection === 'start') {
219
- const [, path] = Node.first(editor, []);
220
- const newSel = {
221
- anchor: { path, offset: 0 },
222
- focus: { path, offset: 0 },
223
- };
224
- return newSel;
225
- }
226
- if (defaultSelection === 'end') {
227
- const [leaf, path] = Node.last(editor, []);
228
- const newSel = {
229
- anchor: { path, offset: (leaf.text || '').length },
230
- focus: { path, offset: (leaf.text || '').length },
231
- };
232
- return newSel;
233
- }
234
- return defaultSelection;
235
- }
236
- }