@plone/volto 18.0.0-alpha.2 → 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 (293) 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 +44 -4
  6. package/locales/ca/LC_MESSAGES/volto.po +1 -0
  7. package/locales/de/LC_MESSAGES/volto.po +1 -0
  8. package/locales/en/LC_MESSAGES/volto.po +1 -0
  9. package/locales/es/LC_MESSAGES/volto.po +1 -0
  10. package/locales/eu/LC_MESSAGES/volto.po +1 -0
  11. package/locales/fi/LC_MESSAGES/volto.po +1 -0
  12. package/locales/fr/LC_MESSAGES/volto.po +1 -0
  13. package/locales/it/LC_MESSAGES/volto.po +1 -0
  14. package/locales/ja/LC_MESSAGES/volto.po +1 -0
  15. package/locales/nl/LC_MESSAGES/volto.po +1 -0
  16. package/locales/pt/LC_MESSAGES/volto.po +1 -0
  17. package/locales/pt_BR/LC_MESSAGES/volto.po +1 -0
  18. package/locales/ro/LC_MESSAGES/volto.po +1 -0
  19. package/locales/volto.pot +2 -1
  20. package/locales/zh_CN/LC_MESSAGES/volto.po +1 -0
  21. package/package.json +57 -127
  22. package/razzle.config.js +4 -7
  23. package/src/components/manage/Blocks/Video/Body.jsx +52 -22
  24. package/src/components/manage/Blocks/Video/Body.test.jsx +167 -0
  25. package/src/components/manage/Controlpanels/Users/UserGroupMembershipControlPanel.jsx +2 -2
  26. package/src/components/manage/Form/Form.jsx +5 -2
  27. package/src/components/theme/Breadcrumbs/Breadcrumbs.jsx +19 -2
  28. package/src/components/theme/ContentMetadataTags/ContentMetadataTags.jsx +46 -39
  29. package/src/config/index.js +0 -4
  30. package/src/icons/divide-horizontal.svg +0 -0
  31. package/src/icons/divide-vertical.svg +0 -0
  32. package/src/icons/hero.svg +0 -0
  33. package/src/icons/slider.svg +0 -0
  34. package/src/icons/summary.svg +0 -0
  35. package/src/middleware/api.js +1 -1
  36. package/theme/themes/default/elements/icon.overrides +0 -0
  37. package/theme/themes/default/globals/reset.overrides +0 -0
  38. package/theme/themes/default/globals/site.variables +0 -0
  39. package/theme/themes/default/modules/dropdown.overrides +0 -0
  40. package/theme/themes/default/modules/dropdown.variables +0 -0
  41. package/theme/themes/default/modules/modal.variables +0 -0
  42. package/theme/themes/default/modules/video.overrides +0 -0
  43. package/theme/themes/default/modules/video.variables +0 -0
  44. package/theme/themes/pastanaga/assets/fonts/icons.eot +0 -0
  45. package/theme/themes/pastanaga/assets/fonts/icons.svg +0 -0
  46. package/theme/themes/pastanaga/assets/fonts/icons.ttf +0 -0
  47. package/theme/themes/pastanaga/assets/fonts/icons.woff +0 -0
  48. package/theme/themes/pastanaga/globals/reset.overrides +0 -0
  49. package/theme/themes/pastanaga/globals/site.variables +0 -0
  50. package/theme/themes/pastanaga/modules/dropdown.variables +0 -0
  51. package/theme/themes/pastanaga/modules/modal.variables +0 -0
  52. package/theme/themes/pastanaga/modules/video.overrides +0 -0
  53. package/theme/themes/pastanaga/modules/video.variables +0 -0
  54. package/tsconfig.json +1 -4
  55. package/types/components/manage/Blocks/Video/Body.d.ts +5 -0
  56. package/types/config/RichTextEditor/index.d.ts +5 -8
  57. package/types/helpers/AsyncConnect/index.d.ts +2 -2
  58. package/types/helpers/Url/Url.d.ts +3 -3
  59. package/types/icons/load-icons.d.ts +1 -1
  60. package/webpack-plugins/webpack-less-plugin.js +1 -0
  61. package/CODE_OF_CONDUCT.md +0 -13
  62. package/CONTRIBUTING.md +0 -7
  63. package/README.md +0 -154
  64. package/RELEASING.md +0 -73
  65. package/ROADMAP.md +0 -30
  66. package/SECURITY.md +0 -14
  67. package/logos/Logo.png +0 -0
  68. package/logos/VoltoLogoEra2-dark-mode.png +0 -0
  69. package/logos/VoltoLogoEra2.png +0 -0
  70. package/logos/volto-colorful.png +0 -0
  71. package/logos/volto-colorful.svg +0 -35
  72. package/logos/volto-guide.png +0 -0
  73. package/logos/volto-h-transparent.svg +0 -6
  74. package/logos/volto-transparent.png +0 -0
  75. package/logos/volto-transparent.svg +0 -19
  76. package/logos/volto-transparent2.svg +0 -5
  77. package/logos/volto-yellow.svg +0 -29
  78. package/logos/volto.sketch +0 -0
  79. package/packages/README.md +0 -7
  80. package/packages/registry/.towncrier/towncrier_template.jinja +0 -10
  81. package/packages/registry/CHANGELOG.md +0 -16
  82. package/packages/registry/README.md +0 -207
  83. package/packages/registry/addon-registry.js +0 -603
  84. package/packages/registry/create-addons-loader.js +0 -116
  85. package/packages/registry/create-theme-addons-loader.js +0 -78
  86. package/packages/registry/news/.gitkeep +0 -0
  87. package/packages/registry/package.json +0 -76
  88. package/packages/registry/src/index.ts +0 -174
  89. package/packages/registry/src/registry.test.js +0 -111
  90. package/packages/registry/tsconfig.json +0 -32
  91. package/packages/scripts/CHANGELOG.md +0 -173
  92. package/packages/scripts/README.md +0 -128
  93. package/packages/scripts/addon/consolidate.js +0 -28
  94. package/packages/scripts/addon/generators.js +0 -213
  95. package/packages/scripts/addon/getAddonInfo.js +0 -65
  96. package/packages/scripts/addon/index.js +0 -88
  97. package/packages/scripts/addon/utils.js +0 -44
  98. package/packages/scripts/backportpr.js +0 -75
  99. package/packages/scripts/changelogupdater.cjs +0 -94
  100. package/packages/scripts/corepackagebump.js +0 -20
  101. package/packages/scripts/i18n.cjs +0 -310
  102. package/packages/scripts/package.json +0 -76
  103. package/packages/scripts/templates/towncrier_template.jinja +0 -10
  104. package/packages/types/Blocks/View.ts +0 -11
  105. package/packages/types/actions.ts +0 -15
  106. package/packages/types/breadcrumbs.ts +0 -10
  107. package/packages/types/config/Blocks.ts +0 -153
  108. package/packages/types/config/Content.ts +0 -62
  109. package/packages/types/config/Settings.ts +0 -86
  110. package/packages/types/config/Views.ts +0 -15
  111. package/packages/types/config/Widgets.ts +0 -7
  112. package/packages/types/config/index.ts +0 -21
  113. package/packages/types/content/common.ts +0 -60
  114. package/packages/types/content/get.ts +0 -66
  115. package/packages/types/index.ts +0 -0
  116. package/packages/types/navigation.ts +0 -12
  117. package/packages/types/package.json +0 -64
  118. package/packages/types/types.ts +0 -61
  119. package/packages/volto-slate/.i18n.babel.config.js +0 -1
  120. package/packages/volto-slate/README.md +0 -4
  121. package/packages/volto-slate/build/messages/src/blocks/Table/TableBlockEdit.json +0 -90
  122. package/packages/volto-slate/build/messages/src/blocks/Text/DefaultTextBlockEditor.json +0 -6
  123. package/packages/volto-slate/build/messages/src/blocks/Text/DetachedTextBlockEditor.json +0 -6
  124. package/packages/volto-slate/build/messages/src/blocks/Text/SlashMenu.json +0 -6
  125. package/packages/volto-slate/build/messages/src/editor/plugins/AdvancedLink/index.json +0 -10
  126. package/packages/volto-slate/build/messages/src/editor/plugins/Link/index.json +0 -10
  127. package/packages/volto-slate/build/messages/src/editor/plugins/Table/index.json +0 -30
  128. package/packages/volto-slate/build/messages/src/elementEditor/messages.json +0 -10
  129. package/packages/volto-slate/build/messages/src/widgets/HtmlSlateWidget.json +0 -6
  130. package/packages/volto-slate/build/messages/src/widgets/RichTextWidgetView.json +0 -6
  131. package/packages/volto-slate/locales/de/LC_MESSAGES/volto.po +0 -148
  132. package/packages/volto-slate/locales/en/LC_MESSAGES/volto.po +0 -148
  133. package/packages/volto-slate/locales/volto.pot +0 -182
  134. package/packages/volto-slate/package.json +0 -43
  135. package/packages/volto-slate/src/actions/content.js +0 -30
  136. package/packages/volto-slate/src/actions/index.js +0 -3
  137. package/packages/volto-slate/src/actions/plugins.js +0 -9
  138. package/packages/volto-slate/src/actions/selection.js +0 -22
  139. package/packages/volto-slate/src/blocks/Table/Cell.jsx +0 -87
  140. package/packages/volto-slate/src/blocks/Table/Cell.test.js +0 -54
  141. package/packages/volto-slate/src/blocks/Table/TableBlockEdit.jsx +0 -694
  142. package/packages/volto-slate/src/blocks/Table/TableBlockEdit.test.js +0 -40
  143. package/packages/volto-slate/src/blocks/Table/TableBlockView.jsx +0 -150
  144. package/packages/volto-slate/src/blocks/Table/TableBlockView.test.js +0 -49
  145. package/packages/volto-slate/src/blocks/Table/deconstruct.js +0 -113
  146. package/packages/volto-slate/src/blocks/Table/extensions/normalizeTable.js +0 -5
  147. package/packages/volto-slate/src/blocks/Table/index.js +0 -60
  148. package/packages/volto-slate/src/blocks/Table/schema.js +0 -122
  149. package/packages/volto-slate/src/blocks/Text/DefaultTextBlockEditor.jsx +0 -304
  150. package/packages/volto-slate/src/blocks/Text/DetachedTextBlockEditor.jsx +0 -77
  151. package/packages/volto-slate/src/blocks/Text/MarkdownIntroduction.jsx +0 -59
  152. package/packages/volto-slate/src/blocks/Text/PluginSidebar.jsx +0 -18
  153. package/packages/volto-slate/src/blocks/Text/ShortcutListing.jsx +0 -28
  154. package/packages/volto-slate/src/blocks/Text/SlashMenu.jsx +0 -203
  155. package/packages/volto-slate/src/blocks/Text/TextBlockEdit.jsx +0 -38
  156. package/packages/volto-slate/src/blocks/Text/TextBlockEdit.test.js +0 -107
  157. package/packages/volto-slate/src/blocks/Text/TextBlockSchema.js +0 -54
  158. package/packages/volto-slate/src/blocks/Text/TextBlockView.jsx +0 -31
  159. package/packages/volto-slate/src/blocks/Text/css/editor.css +0 -18
  160. package/packages/volto-slate/src/blocks/Text/extensions/Readme.md +0 -49
  161. package/packages/volto-slate/src/blocks/Text/extensions/breakList.js +0 -100
  162. package/packages/volto-slate/src/blocks/Text/extensions/index.js +0 -6
  163. package/packages/volto-slate/src/blocks/Text/extensions/insertBreak.js +0 -57
  164. package/packages/volto-slate/src/blocks/Text/extensions/isSelected.js +0 -7
  165. package/packages/volto-slate/src/blocks/Text/extensions/normalizeExternalData.js +0 -7
  166. package/packages/volto-slate/src/blocks/Text/extensions/withDeserializers.js +0 -87
  167. package/packages/volto-slate/src/blocks/Text/extensions/withLists.js +0 -5
  168. package/packages/volto-slate/src/blocks/Text/index.js +0 -171
  169. package/packages/volto-slate/src/blocks/Text/keyboard/backspaceInList.js +0 -58
  170. package/packages/volto-slate/src/blocks/Text/keyboard/breakBlocks.js +0 -3
  171. package/packages/volto-slate/src/blocks/Text/keyboard/cancelEsc.js +0 -7
  172. package/packages/volto-slate/src/blocks/Text/keyboard/indentListItems.js +0 -240
  173. package/packages/volto-slate/src/blocks/Text/keyboard/index.js +0 -52
  174. package/packages/volto-slate/src/blocks/Text/keyboard/joinBlocks.js +0 -180
  175. package/packages/volto-slate/src/blocks/Text/keyboard/moveListItems.js +0 -124
  176. package/packages/volto-slate/src/blocks/Text/keyboard/slashMenu.js +0 -19
  177. package/packages/volto-slate/src/blocks/Text/keyboard/softBreak.js +0 -7
  178. package/packages/volto-slate/src/blocks/Text/keyboard/traverseBlocks.js +0 -81
  179. package/packages/volto-slate/src/blocks/Text/keyboard/unwrapEmptyString.js +0 -26
  180. package/packages/volto-slate/src/blocks/Text/schema.js +0 -39
  181. package/packages/volto-slate/src/constants.js +0 -123
  182. package/packages/volto-slate/src/editor/EditorContext.jsx +0 -5
  183. package/packages/volto-slate/src/editor/EditorReference.jsx +0 -22
  184. package/packages/volto-slate/src/editor/SlateEditor.jsx +0 -375
  185. package/packages/volto-slate/src/editor/config.jsx +0 -344
  186. package/packages/volto-slate/src/editor/decorate.js +0 -68
  187. package/packages/volto-slate/src/editor/deserialize.js +0 -185
  188. package/packages/volto-slate/src/editor/extensions/index.js +0 -6
  189. package/packages/volto-slate/src/editor/extensions/insertBreak.js +0 -15
  190. package/packages/volto-slate/src/editor/extensions/insertData.js +0 -159
  191. package/packages/volto-slate/src/editor/extensions/isInline.js +0 -14
  192. package/packages/volto-slate/src/editor/extensions/normalizeExternalData.js +0 -8
  193. package/packages/volto-slate/src/editor/extensions/normalizeNode.js +0 -48
  194. package/packages/volto-slate/src/editor/extensions/withDeserializers.js +0 -15
  195. package/packages/volto-slate/src/editor/extensions/withTestingFeatures.jsx +0 -84
  196. package/packages/volto-slate/src/editor/index.js +0 -14
  197. package/packages/volto-slate/src/editor/less/editor.less +0 -173
  198. package/packages/volto-slate/src/editor/less/globals.less +0 -18
  199. package/packages/volto-slate/src/editor/less/slate.less +0 -28
  200. package/packages/volto-slate/src/editor/plugins/AdvancedLink/deserialize.js +0 -90
  201. package/packages/volto-slate/src/editor/plugins/AdvancedLink/extensions.js +0 -32
  202. package/packages/volto-slate/src/editor/plugins/AdvancedLink/index.js +0 -50
  203. package/packages/volto-slate/src/editor/plugins/AdvancedLink/render.jsx +0 -37
  204. package/packages/volto-slate/src/editor/plugins/AdvancedLink/schema.js +0 -114
  205. package/packages/volto-slate/src/editor/plugins/AdvancedLink/styles.less +0 -8
  206. package/packages/volto-slate/src/editor/plugins/Blockquote/index.js +0 -30
  207. package/packages/volto-slate/src/editor/plugins/Callout/index.js +0 -34
  208. package/packages/volto-slate/src/editor/plugins/Image/deconstruct.js +0 -30
  209. package/packages/volto-slate/src/editor/plugins/Image/extensions.js +0 -51
  210. package/packages/volto-slate/src/editor/plugins/Image/index.js +0 -11
  211. package/packages/volto-slate/src/editor/plugins/Image/render.jsx +0 -22
  212. package/packages/volto-slate/src/editor/plugins/Link/extensions.js +0 -58
  213. package/packages/volto-slate/src/editor/plugins/Link/index.js +0 -164
  214. package/packages/volto-slate/src/editor/plugins/Link/render.jsx +0 -54
  215. package/packages/volto-slate/src/editor/plugins/Markdown/constants.js +0 -81
  216. package/packages/volto-slate/src/editor/plugins/Markdown/extensions.js +0 -334
  217. package/packages/volto-slate/src/editor/plugins/Markdown/index.js +0 -28
  218. package/packages/volto-slate/src/editor/plugins/Markdown/utils.js +0 -198
  219. package/packages/volto-slate/src/editor/plugins/StyleMenu/StyleMenu.jsx +0 -153
  220. package/packages/volto-slate/src/editor/plugins/StyleMenu/index.js +0 -19
  221. package/packages/volto-slate/src/editor/plugins/StyleMenu/style.less +0 -29
  222. package/packages/volto-slate/src/editor/plugins/StyleMenu/utils.js +0 -168
  223. package/packages/volto-slate/src/editor/plugins/Table/TableButton.jsx +0 -142
  224. package/packages/volto-slate/src/editor/plugins/Table/TableCell.jsx +0 -44
  225. package/packages/volto-slate/src/editor/plugins/Table/TableContainer.jsx +0 -37
  226. package/packages/volto-slate/src/editor/plugins/Table/TableSizePicker.jsx +0 -83
  227. package/packages/volto-slate/src/editor/plugins/Table/extensions.js +0 -87
  228. package/packages/volto-slate/src/editor/plugins/Table/index.js +0 -390
  229. package/packages/volto-slate/src/editor/plugins/Table/less/public.less +0 -29
  230. package/packages/volto-slate/src/editor/plugins/Table/less/table.less +0 -28
  231. package/packages/volto-slate/src/editor/plugins/Table/render.jsx +0 -30
  232. package/packages/volto-slate/src/editor/plugins/index.js +0 -19
  233. package/packages/volto-slate/src/editor/render.jsx +0 -224
  234. package/packages/volto-slate/src/editor/ui/BasicToolbar.jsx +0 -11
  235. package/packages/volto-slate/src/editor/ui/BlockButton.jsx +0 -31
  236. package/packages/volto-slate/src/editor/ui/ClearFormattingButton.jsx +0 -21
  237. package/packages/volto-slate/src/editor/ui/ExpandedToolbar.jsx +0 -18
  238. package/packages/volto-slate/src/editor/ui/Expando.jsx +0 -5
  239. package/packages/volto-slate/src/editor/ui/InlineToolbar.jsx +0 -73
  240. package/packages/volto-slate/src/editor/ui/MarkButton.jsx +0 -23
  241. package/packages/volto-slate/src/editor/ui/MarkElementButton.jsx +0 -30
  242. package/packages/volto-slate/src/editor/ui/Menu.jsx +0 -13
  243. package/packages/volto-slate/src/editor/ui/PositionedToolbar.jsx +0 -32
  244. package/packages/volto-slate/src/editor/ui/Separator.jsx +0 -7
  245. package/packages/volto-slate/src/editor/ui/SlateContextToolbar.jsx +0 -13
  246. package/packages/volto-slate/src/editor/ui/SlateToolbar.jsx +0 -96
  247. package/packages/volto-slate/src/editor/ui/Toolbar.jsx +0 -103
  248. package/packages/volto-slate/src/editor/ui/ToolbarButton.jsx +0 -33
  249. package/packages/volto-slate/src/editor/ui/ToolbarButton.test.js +0 -25
  250. package/packages/volto-slate/src/editor/ui/index.js +0 -15
  251. package/packages/volto-slate/src/editor/utils.js +0 -248
  252. package/packages/volto-slate/src/elementEditor/ContextButtons.jsx +0 -56
  253. package/packages/volto-slate/src/elementEditor/PluginEditor.jsx +0 -124
  254. package/packages/volto-slate/src/elementEditor/Readme.md +0 -6
  255. package/packages/volto-slate/src/elementEditor/SchemaProvider.jsx +0 -3
  256. package/packages/volto-slate/src/elementEditor/SidebarEditor.jsx +0 -46
  257. package/packages/volto-slate/src/elementEditor/ToolbarButton.jsx +0 -44
  258. package/packages/volto-slate/src/elementEditor/index.js +0 -5
  259. package/packages/volto-slate/src/elementEditor/makeInlineElementPlugin.js +0 -100
  260. package/packages/volto-slate/src/elementEditor/messages.js +0 -14
  261. package/packages/volto-slate/src/elementEditor/utils.js +0 -226
  262. package/packages/volto-slate/src/hooks/index.js +0 -3
  263. package/packages/volto-slate/src/hooks/useEditorContext.js +0 -6
  264. package/packages/volto-slate/src/hooks/useIsomorphicLayoutEffect.js +0 -7
  265. package/packages/volto-slate/src/hooks/useSelectionPosition.js +0 -25
  266. package/packages/volto-slate/src/i18n.js +0 -180
  267. package/packages/volto-slate/src/icons/hashlink.svg +0 -57
  268. package/packages/volto-slate/src/index.js +0 -61
  269. package/packages/volto-slate/src/reducers/content.js +0 -74
  270. package/packages/volto-slate/src/reducers/index.js +0 -3
  271. package/packages/volto-slate/src/reducers/plugins.js +0 -17
  272. package/packages/volto-slate/src/reducers/selection.js +0 -16
  273. package/packages/volto-slate/src/utils/blocks.js +0 -375
  274. package/packages/volto-slate/src/utils/blocks.test.js +0 -138
  275. package/packages/volto-slate/src/utils/editor.js +0 -31
  276. package/packages/volto-slate/src/utils/image.js +0 -25
  277. package/packages/volto-slate/src/utils/index.js +0 -11
  278. package/packages/volto-slate/src/utils/internals.js +0 -46
  279. package/packages/volto-slate/src/utils/lists.js +0 -92
  280. package/packages/volto-slate/src/utils/marks.js +0 -104
  281. package/packages/volto-slate/src/utils/mime-types.js +0 -24
  282. package/packages/volto-slate/src/utils/nodes.js +0 -4
  283. package/packages/volto-slate/src/utils/ops.js +0 -20
  284. package/packages/volto-slate/src/utils/random.js +0 -17
  285. package/packages/volto-slate/src/utils/selection.js +0 -236
  286. package/packages/volto-slate/src/utils/slate-string-utils.js +0 -408
  287. package/packages/volto-slate/src/utils/volto-blocks.js +0 -314
  288. package/packages/volto-slate/src/widgets/ErrorBoundary.jsx +0 -27
  289. package/packages/volto-slate/src/widgets/HtmlSlateWidget.jsx +0 -139
  290. package/packages/volto-slate/src/widgets/ObjectByTypeWidget.jsx +0 -49
  291. package/packages/volto-slate/src/widgets/RichTextWidget.jsx +0 -72
  292. package/packages/volto-slate/src/widgets/RichTextWidgetView.jsx +0 -37
  293. package/packages/volto-slate/src/widgets/style.css +0 -21
@@ -1,44 +0,0 @@
1
- /**
2
- * This is the main toolbar button.
3
- */
4
- import React from 'react';
5
- import { useSlate } from 'slate-react';
6
- import { useDispatch } from 'react-redux';
7
- import { omit } from 'lodash';
8
-
9
- import { ToolbarButton } from '@plone/volto-slate/editor/ui';
10
- import { hasRangeSelection } from '@plone/volto-slate/utils';
11
- import { setPluginOptions } from '@plone/volto-slate/actions';
12
-
13
- const ElementToolbarButton = (props) => {
14
- const { isActiveElement, insertElement, pluginId, toolbarButtonIcon } = props;
15
- const editor = useSlate();
16
- const isElement = isActiveElement(editor);
17
- const dispatch = useDispatch();
18
- const pid = `${editor.uid}-${pluginId}`;
19
-
20
- const omittedProps = [
21
- 'insertElement',
22
- 'pluginId',
23
- 'toolbarButtonIcon',
24
- 'isActiveElement',
25
- ];
26
-
27
- return (
28
- <>
29
- {hasRangeSelection(editor) && (
30
- <ToolbarButton
31
- {...omit(props, ...omittedProps)}
32
- active={isElement}
33
- onMouseDown={() => {
34
- if (!isElement) insertElement(editor, {});
35
- dispatch(setPluginOptions(pid, { show_sidebar_editor: true }));
36
- }}
37
- icon={toolbarButtonIcon}
38
- />
39
- )}
40
- </>
41
- );
42
- };
43
-
44
- export default ElementToolbarButton;
@@ -1,5 +0,0 @@
1
- export { makeInlineElementPlugin } from './makeInlineElementPlugin';
2
-
3
- export const makeBlockElementPlugin = (options) => {
4
- return [(config) => config];
5
- };
@@ -1,100 +0,0 @@
1
- import React from 'react';
2
- import SidebarEditor from './SidebarEditor';
3
- import makeContextButtons from './ContextButtons';
4
- import PluginEditor from './PluginEditor';
5
- import {
6
- _insertElement,
7
- _unwrapElement,
8
- _isActiveElement,
9
- _getActiveElement,
10
- } from './utils';
11
- import messages from './messages';
12
- import ToolbarButton from './ToolbarButton';
13
- import SchemaProvider from './SchemaProvider';
14
- import { omit } from 'lodash';
15
-
16
- import tagSVG from '@plone/volto/icons/tag.svg';
17
-
18
- export const makeInlineElementPlugin = (options) => {
19
- const { elementType, isInlineElement, pluginId, title = 'Element' } = options;
20
- const omittedProps = [
21
- 'pluginEditor',
22
- 'getActiveElement',
23
- 'unwrapElement',
24
- 'schemaProvider',
25
- 'hasValue',
26
- 'elementType',
27
- 'isInlineElement',
28
- 'editSchema',
29
- 'element',
30
- 'persistentHelper',
31
- ];
32
-
33
- const pluginOptions = {
34
- pluginEditor: PluginEditor,
35
- insertElement: _insertElement(elementType),
36
- getActiveElement: _getActiveElement(elementType),
37
- isActiveElement: _isActiveElement(elementType),
38
- unwrapElement: _unwrapElement(elementType),
39
- messages,
40
- toolbarButtonIcon: tagSVG,
41
- title,
42
- extensions: [],
43
-
44
- // a component that should provide a schema as a render prop
45
- schemaProvider: SchemaProvider,
46
- // schema that can be used to create the edit form for this component
47
- // editSchema,
48
-
49
- // A generic "validation" method, just finds that a "positive" value
50
- // exists. Plugin authors should overwrite it in options
51
- // If it returns true, the value is saved in the editor, othwerwise the
52
- // element type is removed from the editor
53
- hasValue: (data) => Object.values(data).findIndex((v) => !!v) > -1,
54
-
55
- ...options,
56
- };
57
-
58
- const PersistentHelper = (props) => (
59
- <SidebarEditor {...props} {...pluginOptions} />
60
- );
61
- PersistentHelper.id = pluginId;
62
-
63
- const ElementContextButtons = makeContextButtons(pluginOptions);
64
- ElementContextButtons.id = pluginId;
65
-
66
- const install = (config) => {
67
- const { slate } = config.settings;
68
- if (isInlineElement) {
69
- slate.inlineElements[elementType] = true;
70
- }
71
-
72
- slate.buttons[pluginId] = (props) => (
73
- <ToolbarButton
74
- {...props}
75
- title={title}
76
- {...omit(pluginOptions, omittedProps)}
77
- />
78
- );
79
- slate.contextToolbarButtons.push(ElementContextButtons);
80
- slate.persistentHelpers.push(
81
- options.persistentHelper
82
- ? options.persistentHelper(pluginOptions)
83
- : PersistentHelper,
84
- );
85
- slate.extensions = [
86
- ...(slate.extensions || []),
87
- ...pluginOptions.extensions,
88
- ];
89
- slate.elements[elementType] = options.element;
90
- slate.nodeTypesToHighlight.push(elementType);
91
-
92
- // The plugin authors should manually add the button to the relevant toolbars
93
- // slate.toolbarButtons = [...(slate.toolbarButtons || []), pluginId];
94
- // slate.expandedToolbarButtons = [...(slate.expandedToolbarButtons || []), pluginId];
95
-
96
- return config;
97
- };
98
-
99
- return [install, ElementContextButtons, PersistentHelper, pluginOptions];
100
- };
@@ -1,14 +0,0 @@
1
- import { defineMessages } from 'react-intl'; // , defineMessages
2
-
3
- const messages = defineMessages({
4
- edit: {
5
- id: 'Edit element',
6
- defaultMessage: 'Edit element',
7
- },
8
- delete: {
9
- id: 'Remove element',
10
- defaultMessage: 'Remove element',
11
- },
12
- });
13
-
14
- export default messages;
@@ -1,226 +0,0 @@
1
- import { Editor, Transforms, Node } from 'slate';
2
-
3
- /**
4
- * @description Creates or updates an existing $elementType. It also takes care
5
- * of the saved selection and uses PathRef.
6
- *
7
- * @param {Editor} editor The Slate editor for the context
8
- * @param {object} data Relevant data for this element
9
- *
10
- * @returns {boolean} true if an element was possibly inserted, false otherwise
11
- * (currently we do not check here if the element was already applied to the
12
- * editor)
13
- */
14
- export const _insertElement = (elementType) => (editor, data) => {
15
- if (editor.getSavedSelection()) {
16
- const selection = editor.selection || editor.getSavedSelection();
17
-
18
- const rangeRef = Editor.rangeRef(editor, selection);
19
-
20
- const res = Array.from(
21
- Editor.nodes(editor, {
22
- match: (n) => n.type === elementType,
23
- mode: 'highest',
24
- at: selection,
25
- }),
26
- );
27
-
28
- if (res.length) {
29
- const [, path] = res[0];
30
- Transforms.setNodes(
31
- editor,
32
- { data },
33
- {
34
- at: path ? path : null,
35
- match: path ? (n) => n.type === elementType : null,
36
- },
37
- );
38
- } else {
39
- Transforms.wrapNodes(
40
- editor,
41
- { type: elementType, data },
42
- {
43
- split: true,
44
- at: selection,
45
- match: (node) => {
46
- return Node.string(node).length !== 0;
47
- },
48
- }, //,
49
- );
50
- }
51
-
52
- const sel = JSON.parse(JSON.stringify(rangeRef.current));
53
- Transforms.select(editor, sel);
54
- editor.setSavedSelection(sel);
55
-
56
- return true;
57
- }
58
-
59
- return false;
60
- };
61
-
62
- /**
63
- * Will unwrap a node that has as type the one received or one from an array.
64
- * It identifies the current target element and expands the selection to it, in
65
- * case the selection was just partial. This allows a "clear and reassign"
66
- * operation, for example for the Link plugin.
67
- *
68
- * @param {string|Object[]} elementType - this can be a string or an array of strings
69
- * @returns {Object|null} - current node
70
- */
71
- export const _unwrapElement = (elementType) => (editor) => {
72
- const [link] = Editor.nodes(editor, {
73
- at: editor.selection,
74
- match: (node) => node?.type === elementType,
75
- });
76
- const [, path] = link;
77
- const [start, end] = Editor.edges(editor, path);
78
- const range = { anchor: start, focus: end };
79
-
80
- const ref = Editor.rangeRef(editor, range);
81
-
82
- Transforms.select(editor, range);
83
- Transforms.unwrapNodes(editor, {
84
- match: (n) =>
85
- Array.isArray(elementType)
86
- ? elementType.includes(n.type)
87
- : n.type === elementType,
88
- at: range,
89
- });
90
-
91
- const current = ref.current;
92
- ref.unref();
93
-
94
- return current;
95
- };
96
-
97
- export const _isActiveElement = (elementType) => (editor) => {
98
- const selection = editor.selection || editor.getSavedSelection();
99
- let found;
100
- try {
101
- found = Array.from(
102
- Editor.nodes(editor, {
103
- match: (n) => n.type === elementType,
104
- at: selection,
105
- }) || [],
106
- );
107
- } catch (e) {
108
- // eslint-disable-next-line
109
- // console.warn('Error in finding active element', e);
110
- return false;
111
- }
112
- if (found.length) return true;
113
-
114
- if (selection) {
115
- const { path } = selection.anchor;
116
- const isAtStart =
117
- selection.anchor.offset === 0 && selection.focus.offset === 0;
118
-
119
- if (isAtStart) {
120
- try {
121
- found = Editor.previous(editor, {
122
- at: path,
123
- // match: (n) => n.type === MENTION,
124
- });
125
- } catch (ex) {
126
- found = [];
127
- }
128
- if (found && found[0] && found[0].type === elementType) {
129
- return true;
130
- }
131
- }
132
- }
133
-
134
- return false;
135
- };
136
-
137
- /**
138
- * Will look for a node that has as type the one received or one from an array
139
- * @param {string|Object[]} elementType - this can be a string or an array of strings
140
- * @returns {Object|null} - found node
141
- */
142
- export const _getActiveElement = (elementType) => (
143
- editor,
144
- direction = 'any',
145
- ) => {
146
- const selection = editor.selection || editor.getSavedSelection();
147
- let found = [];
148
-
149
- try {
150
- found = Array.from(
151
- Editor.nodes(editor, {
152
- match: (n) =>
153
- Array.isArray(elementType)
154
- ? elementType.includes(n.type)
155
- : n.type === elementType,
156
- at: selection,
157
- }),
158
- );
159
- } catch (e) {
160
- return null;
161
- }
162
-
163
- if (found.length) return found[0];
164
-
165
- if (!selection) return null;
166
-
167
- if (direction === 'any' || direction === 'backward') {
168
- const { path } = selection.anchor;
169
- const isAtStart =
170
- selection.anchor.offset === 0 && selection.focus.offset === 0;
171
-
172
- if (isAtStart) {
173
- let found;
174
- try {
175
- found = Editor.previous(editor, {
176
- at: path,
177
- });
178
- } catch (ex) {
179
- // eslint-disable-next-line no-console
180
- console.warn('Unable to find previous node', editor, path);
181
- return;
182
- }
183
- if (found && found[0] && found[0].type === elementType) {
184
- if (
185
- (Array.isArray(elementType) && elementType.includes(found[0].type)) ||
186
- found[0].type === elementType
187
- ) {
188
- return found;
189
- }
190
- } else {
191
- return null;
192
- }
193
- }
194
- }
195
-
196
- if (direction === 'any' || direction === 'forward') {
197
- const { path } = selection.anchor;
198
- const isAtStart =
199
- selection.anchor.offset === 0 && selection.focus.offset === 0;
200
-
201
- if (isAtStart) {
202
- let found;
203
- try {
204
- found = Editor.next(editor, {
205
- at: path,
206
- });
207
- } catch (e) {
208
- // eslint-disable-next-line
209
- console.warn('Unable to find next node', editor, path);
210
- return;
211
- }
212
- if (found && found[0] && found[0].type === elementType) {
213
- if (
214
- (Array.isArray(elementType) && elementType.includes(found[0].type)) ||
215
- found[0].type === elementType
216
- ) {
217
- return found;
218
- }
219
- } else {
220
- return null;
221
- }
222
- }
223
- }
224
-
225
- return null;
226
- };
@@ -1,3 +0,0 @@
1
- export { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';
2
- export { useEditorContext } from './useEditorContext';
3
- export { useSelectionPosition } from './useSelectionPosition';
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- import EditorContext from '@plone/volto-slate/editor/EditorContext';
3
-
4
- export const useEditorContext = () => {
5
- return React.useContext(EditorContext);
6
- };
@@ -1,7 +0,0 @@
1
- import { useLayoutEffect, useEffect } from 'react';
2
-
3
- /**
4
- * Prevent warning on SSR by falling back to useEffect when window is not defined
5
- */
6
- export const useIsomorphicLayoutEffect =
7
- typeof window !== 'undefined' ? useLayoutEffect : useEffect;
@@ -1,25 +0,0 @@
1
- import { useSlate, ReactEditor, useSlateSelection } from 'slate-react';
2
-
3
- /**
4
- * Translates the slate selection (text) to window/screen coordinates
5
- *
6
- * TODO: we use the anchor as the base for the position. This could be improved
7
- */
8
- export const useSelectionPosition = () => {
9
- let rect = {};
10
-
11
- const editor = useSlate();
12
-
13
- const selection = useSlateSelection();
14
- if (selection && ReactEditor.isFocused(editor)) {
15
- try {
16
- const [textNode] = ReactEditor.toDOMPoint(editor, selection.anchor);
17
- const parentNode = textNode.parentNode;
18
- rect = parentNode.getBoundingClientRect();
19
- } catch {
20
- // This happens when the selection is outdated because the nodes have
21
- // been modified? Seems like a bug in slate, then.
22
- }
23
- }
24
- return rect;
25
- };
@@ -1,180 +0,0 @@
1
- /* eslint no-console: 0 */
2
- /**
3
- * i18n script.
4
- * @module scripts/i18n
5
- */
6
-
7
- const { find, keys, map, concat, reduce } = require('lodash');
8
- const glob = require('glob').sync;
9
- const fs = require('fs');
10
- const Pofile = require('pofile');
11
- const babel = require('@babel/core');
12
-
13
- /**
14
- * Extract messages into separate JSON files
15
- * @function extractMessages
16
- * @return {undefined}
17
- */
18
- function extractMessages() {
19
- map(glob('src/**/*.js?(x)'), (filename) => {
20
- babel.transformFileSync(filename, {}, (err) => {
21
- if (err) {
22
- console.log(err);
23
- }
24
- });
25
- });
26
- }
27
-
28
- /**
29
- * Get messages from separate JSON files
30
- * @function getMessages
31
- * @return {Object} Object with messages
32
- */
33
- function getMessages() {
34
- return reduce(
35
- concat(
36
- {},
37
- ...map(
38
- // We ignore the existing customized shadowed components ones, since most
39
- // probably we won't be overriding them
40
- // If so, we should do it in the config object or somewhere else
41
- glob('build/messages/src/**/*.json', {
42
- ignore: 'build/messages/src/customizations/**',
43
- }),
44
- (filename) =>
45
- map(JSON.parse(fs.readFileSync(filename, 'utf8')), (message) => ({
46
- ...message,
47
- filename: filename.match(/build\/messages\/src\/(.*).json$/)[1],
48
- })),
49
- ),
50
- ),
51
- (current, value) => {
52
- let result = current;
53
- if (current.id) {
54
- result = {
55
- [current.id]: {
56
- defaultMessage: current.defaultMessage,
57
- filenames: [current.filename],
58
- },
59
- };
60
- }
61
-
62
- if (result[value.id]) {
63
- result[value.id].filenames.push(value.filename);
64
- } else {
65
- result[value.id] = {
66
- defaultMessage: value.defaultMessage,
67
- filenames: [value.filename],
68
- };
69
- }
70
- return result;
71
- },
72
- );
73
- }
74
-
75
- /**
76
- * Convert messages to pot format
77
- * @function messagesToPot
78
- * @param {Object} messages Messages
79
- * @return {string} Formatted pot string
80
- */
81
- function messagesToPot(messages) {
82
- return map(keys(messages).sort(), (key) =>
83
- [
84
- ...map(messages[key].filenames, (filename) => `#: ${filename}`),
85
- `# defaultMessage: ${messages[key].defaultMessage}`,
86
- `msgid "${key}"`,
87
- 'msgstr ""',
88
- ].join('\n'),
89
- ).join('\n\n');
90
- }
91
-
92
- /**
93
- * Pot header
94
- * @function potHeader
95
- * @return {string} Formatted pot header
96
- */
97
- function potHeader() {
98
- return `msgid ""
99
- msgstr ""
100
- "Project-Id-Version: Plone\\n"
101
- "POT-Creation-Date: ${new Date().toISOString()}\\n"
102
- "Last-Translator: Plone i18n <plone-i18n@lists.sourceforge.net>\\n"
103
- "Language-Team: Plone i18n <plone-i18n@lists.sourceforge.net>\\n"
104
- "MIME-Version: 1.0\\n"
105
- "Content-Type: text/plain; charset=utf-8\\n"
106
- "Content-Transfer-Encoding: 8bit\\n"
107
- "Plural-Forms: nplurals=1; plural=0;\\n"
108
- "Language-Code: en\\n"
109
- "Language-Name: English\\n"
110
- "Preferred-Encodings: utf-8\\n"
111
- "Domain: volto\\n"
112
-
113
- `;
114
- }
115
-
116
- /**
117
- * Format header
118
- * @function formatHeader
119
- * @param {Array} comments Array of comments
120
- * @param {Object} headers Object of header items
121
- * @return {string} Formatted header
122
- */
123
- function formatHeader(comments, headers) {
124
- return [
125
- ...map(comments, (comment) => `# ${comment}`),
126
- 'msgid ""',
127
- 'msgstr ""',
128
- ...map(keys(headers), (key) => `"${key}: ${headers[key]}\\n"`),
129
- '',
130
- ].join('\n');
131
- }
132
-
133
- /**
134
- * Sync po by the pot file
135
- * @function syncPoByPot
136
- * @return {undefined}
137
- */
138
- function syncPoByPot() {
139
- const pot = Pofile.parse(fs.readFileSync('locales/volto.pot', 'utf8'));
140
-
141
- map(glob('locales/**/*.po'), (filename) => {
142
- const po = Pofile.parse(fs.readFileSync(filename, 'utf8'));
143
-
144
- fs.writeFileSync(
145
- filename,
146
- `${formatHeader(po.comments, po.headers)}
147
- ${map(pot.items, (item) => {
148
- const poItem = find(po.items, { msgid: item.msgid });
149
- return [
150
- `${map(item.references, (ref) => `#: ${ref}`).join('\n')}`,
151
- `msgid "${item.msgid}"`,
152
- `msgstr "${poItem ? poItem.msgstr : ''}"`,
153
- ].join('\n');
154
- }).join('\n\n')}\n`,
155
- );
156
- });
157
- }
158
-
159
- // Main tasks
160
- console.log('Extracting messages from source files...');
161
- extractMessages();
162
- console.log('Synchronizing messages to pot file...');
163
- // We only write the pot file if it's really different
164
- const newPot = `${potHeader()}${messagesToPot(getMessages())}\n`.replace(
165
- /"POT-Creation-Date:(.*)\\n"/,
166
- '',
167
- );
168
- const oldPot = fs
169
- .readFileSync('locales/volto.pot', 'utf8')
170
- .replace(/"POT-Creation-Date:(.*)\\n"/, '');
171
-
172
- if (newPot !== oldPot) {
173
- fs.writeFileSync(
174
- 'locales/volto.pot',
175
- `${potHeader()}${messagesToPot(getMessages())}\n`,
176
- );
177
- }
178
- console.log('Synchronizing messages to po files...');
179
- syncPoByPot();
180
- console.log('done!');
@@ -1,57 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
- <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
- viewBox="0 0 490.667 490.667" style="enable-background:new 0 0 490.667 490.667;" xml:space="preserve">
5
- <g>
6
- <path style="fill:#455A64;" d="M480,181.44H53.333c-5.891,0-10.667-4.776-10.667-10.667c0-5.891,4.776-10.667,10.667-10.667H480
7
- c5.891,0,10.667,4.776,10.667,10.667C490.667,176.664,485.891,181.44,480,181.44z"/>
8
- <path style="fill:#455A64;" d="M437.333,330.773H10.667C4.776,330.773,0,325.998,0,320.106c0-5.891,4.776-10.667,10.667-10.667
9
- h426.667c5.891,0,10.667,4.776,10.667,10.667C448,325.998,443.224,330.773,437.333,330.773z"/>
10
- <path style="fill:#455A64;" d="M245.333,458.773c-5.891-0.001-10.666-4.778-10.664-10.669c0-1.259,0.223-2.507,0.659-3.688
11
- L384.661,39.082c1.922-5.569,7.995-8.524,13.563-6.602c5.569,1.922,8.524,7.995,6.602,13.563c-0.049,0.141-0.1,0.281-0.155,0.42
12
- L255.339,451.797C253.793,455.988,249.8,458.772,245.333,458.773z"/>
13
- <path style="fill:#455A64;" d="M96,458.773c-5.891-0.001-10.666-4.778-10.664-10.669c0-1.259,0.223-2.507,0.659-3.688
14
- L235.328,39.082c1.922-5.569,7.995-8.524,13.563-6.602c5.569,1.922,8.524,7.995,6.602,13.563c-0.049,0.141-0.1,0.281-0.155,0.42
15
- L106.005,451.797C104.46,455.988,100.467,458.772,96,458.773z"/>
16
- </g>
17
- <path d="M480,181.44H53.333c-5.891,0-10.667-4.776-10.667-10.667c0-5.891,4.776-10.667,10.667-10.667H480
18
- c5.891,0,10.667,4.776,10.667,10.667C490.667,176.664,485.891,181.44,480,181.44z"/>
19
- <path d="M437.333,330.773H10.667C4.776,330.773,0,325.998,0,320.106c0-5.891,4.776-10.667,10.667-10.667h426.667
20
- c5.891,0,10.667,4.776,10.667,10.667C448,325.998,443.224,330.773,437.333,330.773z"/>
21
- <path d="M245.333,458.773c-5.891-0.001-10.666-4.778-10.664-10.669c0-1.259,0.223-2.507,0.659-3.688L384.661,39.082
22
- c1.922-5.569,7.995-8.524,13.563-6.602c5.569,1.922,8.524,7.995,6.602,13.563c-0.049,0.141-0.1,0.281-0.155,0.42L255.339,451.797
23
- C253.793,455.988,249.8,458.772,245.333,458.773z"/>
24
- <path d="M96,458.773c-5.891-0.001-10.666-4.778-10.664-10.669c0-1.259,0.223-2.507,0.659-3.688L235.328,39.082
25
- c1.922-5.569,7.995-8.524,13.563-6.602c5.569,1.922,8.524,7.995,6.602,13.563c-0.049,0.141-0.1,0.281-0.155,0.42L106.005,451.797
26
- C104.46,455.988,100.467,458.772,96,458.773z"/>
27
- <g>
28
- </g>
29
- <g>
30
- </g>
31
- <g>
32
- </g>
33
- <g>
34
- </g>
35
- <g>
36
- </g>
37
- <g>
38
- </g>
39
- <g>
40
- </g>
41
- <g>
42
- </g>
43
- <g>
44
- </g>
45
- <g>
46
- </g>
47
- <g>
48
- </g>
49
- <g>
50
- </g>
51
- <g>
52
- </g>
53
- <g>
54
- </g>
55
- <g>
56
- </g>
57
- </svg>