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