@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,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
- }