@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.
- package/.eslintrc +3 -3
- package/.prettierignore +8 -0
- package/.prettierrc +12 -0
- package/{packages/registry/.release-it.json → .release-it.json} +11 -6
- package/CHANGELOG.md +44 -4
- package/locales/ca/LC_MESSAGES/volto.po +1 -0
- package/locales/de/LC_MESSAGES/volto.po +1 -0
- package/locales/en/LC_MESSAGES/volto.po +1 -0
- package/locales/es/LC_MESSAGES/volto.po +1 -0
- package/locales/eu/LC_MESSAGES/volto.po +1 -0
- package/locales/fi/LC_MESSAGES/volto.po +1 -0
- package/locales/fr/LC_MESSAGES/volto.po +1 -0
- package/locales/it/LC_MESSAGES/volto.po +1 -0
- package/locales/ja/LC_MESSAGES/volto.po +1 -0
- package/locales/nl/LC_MESSAGES/volto.po +1 -0
- package/locales/pt/LC_MESSAGES/volto.po +1 -0
- package/locales/pt_BR/LC_MESSAGES/volto.po +1 -0
- package/locales/ro/LC_MESSAGES/volto.po +1 -0
- package/locales/volto.pot +2 -1
- package/locales/zh_CN/LC_MESSAGES/volto.po +1 -0
- package/package.json +57 -127
- package/razzle.config.js +4 -7
- package/src/components/manage/Blocks/Video/Body.jsx +52 -22
- package/src/components/manage/Blocks/Video/Body.test.jsx +167 -0
- package/src/components/manage/Controlpanels/Users/UserGroupMembershipControlPanel.jsx +2 -2
- package/src/components/manage/Form/Form.jsx +5 -2
- package/src/components/theme/Breadcrumbs/Breadcrumbs.jsx +19 -2
- package/src/components/theme/ContentMetadataTags/ContentMetadataTags.jsx +46 -39
- package/src/config/index.js +0 -4
- package/src/icons/divide-horizontal.svg +0 -0
- package/src/icons/divide-vertical.svg +0 -0
- package/src/icons/hero.svg +0 -0
- package/src/icons/slider.svg +0 -0
- package/src/icons/summary.svg +0 -0
- package/src/middleware/api.js +1 -1
- package/theme/themes/default/elements/icon.overrides +0 -0
- package/theme/themes/default/globals/reset.overrides +0 -0
- package/theme/themes/default/globals/site.variables +0 -0
- package/theme/themes/default/modules/dropdown.overrides +0 -0
- package/theme/themes/default/modules/dropdown.variables +0 -0
- package/theme/themes/default/modules/modal.variables +0 -0
- package/theme/themes/default/modules/video.overrides +0 -0
- package/theme/themes/default/modules/video.variables +0 -0
- package/theme/themes/pastanaga/assets/fonts/icons.eot +0 -0
- package/theme/themes/pastanaga/assets/fonts/icons.svg +0 -0
- package/theme/themes/pastanaga/assets/fonts/icons.ttf +0 -0
- package/theme/themes/pastanaga/assets/fonts/icons.woff +0 -0
- package/theme/themes/pastanaga/globals/reset.overrides +0 -0
- package/theme/themes/pastanaga/globals/site.variables +0 -0
- package/theme/themes/pastanaga/modules/dropdown.variables +0 -0
- package/theme/themes/pastanaga/modules/modal.variables +0 -0
- package/theme/themes/pastanaga/modules/video.overrides +0 -0
- package/theme/themes/pastanaga/modules/video.variables +0 -0
- package/tsconfig.json +1 -4
- package/types/components/manage/Blocks/Video/Body.d.ts +5 -0
- package/types/config/RichTextEditor/index.d.ts +5 -8
- package/types/helpers/AsyncConnect/index.d.ts +2 -2
- package/types/helpers/Url/Url.d.ts +3 -3
- package/types/icons/load-icons.d.ts +1 -1
- package/webpack-plugins/webpack-less-plugin.js +1 -0
- package/CODE_OF_CONDUCT.md +0 -13
- package/CONTRIBUTING.md +0 -7
- package/README.md +0 -154
- package/RELEASING.md +0 -73
- package/ROADMAP.md +0 -30
- package/SECURITY.md +0 -14
- package/logos/Logo.png +0 -0
- package/logos/VoltoLogoEra2-dark-mode.png +0 -0
- package/logos/VoltoLogoEra2.png +0 -0
- package/logos/volto-colorful.png +0 -0
- package/logos/volto-colorful.svg +0 -35
- package/logos/volto-guide.png +0 -0
- package/logos/volto-h-transparent.svg +0 -6
- package/logos/volto-transparent.png +0 -0
- package/logos/volto-transparent.svg +0 -19
- package/logos/volto-transparent2.svg +0 -5
- package/logos/volto-yellow.svg +0 -29
- package/logos/volto.sketch +0 -0
- package/packages/README.md +0 -7
- package/packages/registry/.towncrier/towncrier_template.jinja +0 -10
- package/packages/registry/CHANGELOG.md +0 -16
- package/packages/registry/README.md +0 -207
- package/packages/registry/addon-registry.js +0 -603
- package/packages/registry/create-addons-loader.js +0 -116
- package/packages/registry/create-theme-addons-loader.js +0 -78
- package/packages/registry/news/.gitkeep +0 -0
- package/packages/registry/package.json +0 -76
- package/packages/registry/src/index.ts +0 -174
- package/packages/registry/src/registry.test.js +0 -111
- package/packages/registry/tsconfig.json +0 -32
- package/packages/scripts/CHANGELOG.md +0 -173
- package/packages/scripts/README.md +0 -128
- package/packages/scripts/addon/consolidate.js +0 -28
- package/packages/scripts/addon/generators.js +0 -213
- package/packages/scripts/addon/getAddonInfo.js +0 -65
- package/packages/scripts/addon/index.js +0 -88
- package/packages/scripts/addon/utils.js +0 -44
- package/packages/scripts/backportpr.js +0 -75
- package/packages/scripts/changelogupdater.cjs +0 -94
- package/packages/scripts/corepackagebump.js +0 -20
- package/packages/scripts/i18n.cjs +0 -310
- package/packages/scripts/package.json +0 -76
- package/packages/scripts/templates/towncrier_template.jinja +0 -10
- package/packages/types/Blocks/View.ts +0 -11
- package/packages/types/actions.ts +0 -15
- package/packages/types/breadcrumbs.ts +0 -10
- package/packages/types/config/Blocks.ts +0 -153
- package/packages/types/config/Content.ts +0 -62
- package/packages/types/config/Settings.ts +0 -86
- package/packages/types/config/Views.ts +0 -15
- package/packages/types/config/Widgets.ts +0 -7
- package/packages/types/config/index.ts +0 -21
- package/packages/types/content/common.ts +0 -60
- package/packages/types/content/get.ts +0 -66
- package/packages/types/index.ts +0 -0
- package/packages/types/navigation.ts +0 -12
- package/packages/types/package.json +0 -64
- package/packages/types/types.ts +0 -61
- package/packages/volto-slate/.i18n.babel.config.js +0 -1
- package/packages/volto-slate/README.md +0 -4
- package/packages/volto-slate/build/messages/src/blocks/Table/TableBlockEdit.json +0 -90
- package/packages/volto-slate/build/messages/src/blocks/Text/DefaultTextBlockEditor.json +0 -6
- package/packages/volto-slate/build/messages/src/blocks/Text/DetachedTextBlockEditor.json +0 -6
- package/packages/volto-slate/build/messages/src/blocks/Text/SlashMenu.json +0 -6
- package/packages/volto-slate/build/messages/src/editor/plugins/AdvancedLink/index.json +0 -10
- package/packages/volto-slate/build/messages/src/editor/plugins/Link/index.json +0 -10
- package/packages/volto-slate/build/messages/src/editor/plugins/Table/index.json +0 -30
- package/packages/volto-slate/build/messages/src/elementEditor/messages.json +0 -10
- package/packages/volto-slate/build/messages/src/widgets/HtmlSlateWidget.json +0 -6
- package/packages/volto-slate/build/messages/src/widgets/RichTextWidgetView.json +0 -6
- package/packages/volto-slate/locales/de/LC_MESSAGES/volto.po +0 -148
- package/packages/volto-slate/locales/en/LC_MESSAGES/volto.po +0 -148
- package/packages/volto-slate/locales/volto.pot +0 -182
- package/packages/volto-slate/package.json +0 -43
- package/packages/volto-slate/src/actions/content.js +0 -30
- package/packages/volto-slate/src/actions/index.js +0 -3
- package/packages/volto-slate/src/actions/plugins.js +0 -9
- package/packages/volto-slate/src/actions/selection.js +0 -22
- package/packages/volto-slate/src/blocks/Table/Cell.jsx +0 -87
- package/packages/volto-slate/src/blocks/Table/Cell.test.js +0 -54
- package/packages/volto-slate/src/blocks/Table/TableBlockEdit.jsx +0 -694
- package/packages/volto-slate/src/blocks/Table/TableBlockEdit.test.js +0 -40
- package/packages/volto-slate/src/blocks/Table/TableBlockView.jsx +0 -150
- package/packages/volto-slate/src/blocks/Table/TableBlockView.test.js +0 -49
- package/packages/volto-slate/src/blocks/Table/deconstruct.js +0 -113
- package/packages/volto-slate/src/blocks/Table/extensions/normalizeTable.js +0 -5
- package/packages/volto-slate/src/blocks/Table/index.js +0 -60
- package/packages/volto-slate/src/blocks/Table/schema.js +0 -122
- package/packages/volto-slate/src/blocks/Text/DefaultTextBlockEditor.jsx +0 -304
- package/packages/volto-slate/src/blocks/Text/DetachedTextBlockEditor.jsx +0 -77
- package/packages/volto-slate/src/blocks/Text/MarkdownIntroduction.jsx +0 -59
- package/packages/volto-slate/src/blocks/Text/PluginSidebar.jsx +0 -18
- package/packages/volto-slate/src/blocks/Text/ShortcutListing.jsx +0 -28
- package/packages/volto-slate/src/blocks/Text/SlashMenu.jsx +0 -203
- package/packages/volto-slate/src/blocks/Text/TextBlockEdit.jsx +0 -38
- package/packages/volto-slate/src/blocks/Text/TextBlockEdit.test.js +0 -107
- package/packages/volto-slate/src/blocks/Text/TextBlockSchema.js +0 -54
- package/packages/volto-slate/src/blocks/Text/TextBlockView.jsx +0 -31
- package/packages/volto-slate/src/blocks/Text/css/editor.css +0 -18
- package/packages/volto-slate/src/blocks/Text/extensions/Readme.md +0 -49
- package/packages/volto-slate/src/blocks/Text/extensions/breakList.js +0 -100
- package/packages/volto-slate/src/blocks/Text/extensions/index.js +0 -6
- package/packages/volto-slate/src/blocks/Text/extensions/insertBreak.js +0 -57
- package/packages/volto-slate/src/blocks/Text/extensions/isSelected.js +0 -7
- package/packages/volto-slate/src/blocks/Text/extensions/normalizeExternalData.js +0 -7
- package/packages/volto-slate/src/blocks/Text/extensions/withDeserializers.js +0 -87
- package/packages/volto-slate/src/blocks/Text/extensions/withLists.js +0 -5
- package/packages/volto-slate/src/blocks/Text/index.js +0 -171
- package/packages/volto-slate/src/blocks/Text/keyboard/backspaceInList.js +0 -58
- package/packages/volto-slate/src/blocks/Text/keyboard/breakBlocks.js +0 -3
- package/packages/volto-slate/src/blocks/Text/keyboard/cancelEsc.js +0 -7
- package/packages/volto-slate/src/blocks/Text/keyboard/indentListItems.js +0 -240
- package/packages/volto-slate/src/blocks/Text/keyboard/index.js +0 -52
- package/packages/volto-slate/src/blocks/Text/keyboard/joinBlocks.js +0 -180
- package/packages/volto-slate/src/blocks/Text/keyboard/moveListItems.js +0 -124
- package/packages/volto-slate/src/blocks/Text/keyboard/slashMenu.js +0 -19
- package/packages/volto-slate/src/blocks/Text/keyboard/softBreak.js +0 -7
- package/packages/volto-slate/src/blocks/Text/keyboard/traverseBlocks.js +0 -81
- package/packages/volto-slate/src/blocks/Text/keyboard/unwrapEmptyString.js +0 -26
- package/packages/volto-slate/src/blocks/Text/schema.js +0 -39
- package/packages/volto-slate/src/constants.js +0 -123
- package/packages/volto-slate/src/editor/EditorContext.jsx +0 -5
- package/packages/volto-slate/src/editor/EditorReference.jsx +0 -22
- package/packages/volto-slate/src/editor/SlateEditor.jsx +0 -375
- package/packages/volto-slate/src/editor/config.jsx +0 -344
- package/packages/volto-slate/src/editor/decorate.js +0 -68
- package/packages/volto-slate/src/editor/deserialize.js +0 -185
- package/packages/volto-slate/src/editor/extensions/index.js +0 -6
- package/packages/volto-slate/src/editor/extensions/insertBreak.js +0 -15
- package/packages/volto-slate/src/editor/extensions/insertData.js +0 -159
- package/packages/volto-slate/src/editor/extensions/isInline.js +0 -14
- package/packages/volto-slate/src/editor/extensions/normalizeExternalData.js +0 -8
- package/packages/volto-slate/src/editor/extensions/normalizeNode.js +0 -48
- package/packages/volto-slate/src/editor/extensions/withDeserializers.js +0 -15
- package/packages/volto-slate/src/editor/extensions/withTestingFeatures.jsx +0 -84
- package/packages/volto-slate/src/editor/index.js +0 -14
- package/packages/volto-slate/src/editor/less/editor.less +0 -173
- package/packages/volto-slate/src/editor/less/globals.less +0 -18
- package/packages/volto-slate/src/editor/less/slate.less +0 -28
- package/packages/volto-slate/src/editor/plugins/AdvancedLink/deserialize.js +0 -90
- package/packages/volto-slate/src/editor/plugins/AdvancedLink/extensions.js +0 -32
- package/packages/volto-slate/src/editor/plugins/AdvancedLink/index.js +0 -50
- package/packages/volto-slate/src/editor/plugins/AdvancedLink/render.jsx +0 -37
- package/packages/volto-slate/src/editor/plugins/AdvancedLink/schema.js +0 -114
- package/packages/volto-slate/src/editor/plugins/AdvancedLink/styles.less +0 -8
- package/packages/volto-slate/src/editor/plugins/Blockquote/index.js +0 -30
- package/packages/volto-slate/src/editor/plugins/Callout/index.js +0 -34
- package/packages/volto-slate/src/editor/plugins/Image/deconstruct.js +0 -30
- package/packages/volto-slate/src/editor/plugins/Image/extensions.js +0 -51
- package/packages/volto-slate/src/editor/plugins/Image/index.js +0 -11
- package/packages/volto-slate/src/editor/plugins/Image/render.jsx +0 -22
- package/packages/volto-slate/src/editor/plugins/Link/extensions.js +0 -58
- package/packages/volto-slate/src/editor/plugins/Link/index.js +0 -164
- package/packages/volto-slate/src/editor/plugins/Link/render.jsx +0 -54
- package/packages/volto-slate/src/editor/plugins/Markdown/constants.js +0 -81
- package/packages/volto-slate/src/editor/plugins/Markdown/extensions.js +0 -334
- package/packages/volto-slate/src/editor/plugins/Markdown/index.js +0 -28
- package/packages/volto-slate/src/editor/plugins/Markdown/utils.js +0 -198
- package/packages/volto-slate/src/editor/plugins/StyleMenu/StyleMenu.jsx +0 -153
- package/packages/volto-slate/src/editor/plugins/StyleMenu/index.js +0 -19
- package/packages/volto-slate/src/editor/plugins/StyleMenu/style.less +0 -29
- package/packages/volto-slate/src/editor/plugins/StyleMenu/utils.js +0 -168
- package/packages/volto-slate/src/editor/plugins/Table/TableButton.jsx +0 -142
- package/packages/volto-slate/src/editor/plugins/Table/TableCell.jsx +0 -44
- package/packages/volto-slate/src/editor/plugins/Table/TableContainer.jsx +0 -37
- package/packages/volto-slate/src/editor/plugins/Table/TableSizePicker.jsx +0 -83
- package/packages/volto-slate/src/editor/plugins/Table/extensions.js +0 -87
- package/packages/volto-slate/src/editor/plugins/Table/index.js +0 -390
- package/packages/volto-slate/src/editor/plugins/Table/less/public.less +0 -29
- package/packages/volto-slate/src/editor/plugins/Table/less/table.less +0 -28
- package/packages/volto-slate/src/editor/plugins/Table/render.jsx +0 -30
- package/packages/volto-slate/src/editor/plugins/index.js +0 -19
- package/packages/volto-slate/src/editor/render.jsx +0 -224
- package/packages/volto-slate/src/editor/ui/BasicToolbar.jsx +0 -11
- package/packages/volto-slate/src/editor/ui/BlockButton.jsx +0 -31
- package/packages/volto-slate/src/editor/ui/ClearFormattingButton.jsx +0 -21
- package/packages/volto-slate/src/editor/ui/ExpandedToolbar.jsx +0 -18
- package/packages/volto-slate/src/editor/ui/Expando.jsx +0 -5
- package/packages/volto-slate/src/editor/ui/InlineToolbar.jsx +0 -73
- package/packages/volto-slate/src/editor/ui/MarkButton.jsx +0 -23
- package/packages/volto-slate/src/editor/ui/MarkElementButton.jsx +0 -30
- package/packages/volto-slate/src/editor/ui/Menu.jsx +0 -13
- package/packages/volto-slate/src/editor/ui/PositionedToolbar.jsx +0 -32
- package/packages/volto-slate/src/editor/ui/Separator.jsx +0 -7
- package/packages/volto-slate/src/editor/ui/SlateContextToolbar.jsx +0 -13
- package/packages/volto-slate/src/editor/ui/SlateToolbar.jsx +0 -96
- package/packages/volto-slate/src/editor/ui/Toolbar.jsx +0 -103
- package/packages/volto-slate/src/editor/ui/ToolbarButton.jsx +0 -33
- package/packages/volto-slate/src/editor/ui/ToolbarButton.test.js +0 -25
- package/packages/volto-slate/src/editor/ui/index.js +0 -15
- package/packages/volto-slate/src/editor/utils.js +0 -248
- package/packages/volto-slate/src/elementEditor/ContextButtons.jsx +0 -56
- package/packages/volto-slate/src/elementEditor/PluginEditor.jsx +0 -124
- package/packages/volto-slate/src/elementEditor/Readme.md +0 -6
- package/packages/volto-slate/src/elementEditor/SchemaProvider.jsx +0 -3
- package/packages/volto-slate/src/elementEditor/SidebarEditor.jsx +0 -46
- package/packages/volto-slate/src/elementEditor/ToolbarButton.jsx +0 -44
- package/packages/volto-slate/src/elementEditor/index.js +0 -5
- package/packages/volto-slate/src/elementEditor/makeInlineElementPlugin.js +0 -100
- package/packages/volto-slate/src/elementEditor/messages.js +0 -14
- package/packages/volto-slate/src/elementEditor/utils.js +0 -226
- package/packages/volto-slate/src/hooks/index.js +0 -3
- package/packages/volto-slate/src/hooks/useEditorContext.js +0 -6
- package/packages/volto-slate/src/hooks/useIsomorphicLayoutEffect.js +0 -7
- package/packages/volto-slate/src/hooks/useSelectionPosition.js +0 -25
- package/packages/volto-slate/src/i18n.js +0 -180
- package/packages/volto-slate/src/icons/hashlink.svg +0 -57
- package/packages/volto-slate/src/index.js +0 -61
- package/packages/volto-slate/src/reducers/content.js +0 -74
- package/packages/volto-slate/src/reducers/index.js +0 -3
- package/packages/volto-slate/src/reducers/plugins.js +0 -17
- package/packages/volto-slate/src/reducers/selection.js +0 -16
- package/packages/volto-slate/src/utils/blocks.js +0 -375
- package/packages/volto-slate/src/utils/blocks.test.js +0 -138
- package/packages/volto-slate/src/utils/editor.js +0 -31
- package/packages/volto-slate/src/utils/image.js +0 -25
- package/packages/volto-slate/src/utils/index.js +0 -11
- package/packages/volto-slate/src/utils/internals.js +0 -46
- package/packages/volto-slate/src/utils/lists.js +0 -92
- package/packages/volto-slate/src/utils/marks.js +0 -104
- package/packages/volto-slate/src/utils/mime-types.js +0 -24
- package/packages/volto-slate/src/utils/nodes.js +0 -4
- package/packages/volto-slate/src/utils/ops.js +0 -20
- package/packages/volto-slate/src/utils/random.js +0 -17
- package/packages/volto-slate/src/utils/selection.js +0 -236
- package/packages/volto-slate/src/utils/slate-string-utils.js +0 -408
- package/packages/volto-slate/src/utils/volto-blocks.js +0 -314
- package/packages/volto-slate/src/widgets/ErrorBoundary.jsx +0 -27
- package/packages/volto-slate/src/widgets/HtmlSlateWidget.jsx +0 -139
- package/packages/volto-slate/src/widgets/ObjectByTypeWidget.jsx +0 -49
- package/packages/volto-slate/src/widgets/RichTextWidget.jsx +0 -72
- package/packages/volto-slate/src/widgets/RichTextWidgetView.jsx +0 -37
- package/packages/volto-slate/src/widgets/style.css +0 -21
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/* eslint no-console: 0 */
|
|
3
|
-
const fs = require('fs');
|
|
4
|
-
const semver = require('semver');
|
|
5
|
-
|
|
6
|
-
if (process.argv.length < 3) {
|
|
7
|
-
console.log(
|
|
8
|
-
'Not enough arguments. You should supply one of: bump || excerpt || back',
|
|
9
|
-
);
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const command = process.argv[2];
|
|
14
|
-
const version = process.argv[3];
|
|
15
|
-
|
|
16
|
-
// Get the right location of the CHANGELOG.md file
|
|
17
|
-
// Covers use case that the file is in the parent folder and the
|
|
18
|
-
// frontend code in `frontend` folder (recommended structure)
|
|
19
|
-
let changelogFile;
|
|
20
|
-
if (fs.existsSync('CHANGELOG.md')) {
|
|
21
|
-
changelogFile = 'CHANGELOG.md';
|
|
22
|
-
} else if (fs.existsSync('../CHANGELOG.md')) {
|
|
23
|
-
changelogFile = '../CHANGELOG.md';
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
try {
|
|
27
|
-
if (command === 'excerpt') {
|
|
28
|
-
const data = fs.readFileSync(changelogFile, 'utf8');
|
|
29
|
-
const allReleases = data.match(/##\s(.+)\s\((.+)\)/g);
|
|
30
|
-
// const re = new RegExp(escapeRegExp(allReleases[1]), 'g');
|
|
31
|
-
const index = data.indexOf(allReleases[1]);
|
|
32
|
-
let versionExcerpt = data.slice(0, index);
|
|
33
|
-
versionExcerpt = versionExcerpt.replace('# Change Log\n\n', '');
|
|
34
|
-
versionExcerpt = versionExcerpt.slice(
|
|
35
|
-
versionExcerpt.match('\n\n')['index'] + 2,
|
|
36
|
-
);
|
|
37
|
-
process.stdout.write(versionExcerpt);
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
if (command === 'bump') {
|
|
42
|
-
const data = fs.readFileSync(changelogFile, 'utf8');
|
|
43
|
-
const [original, origVersion, orig] = data.match(/##\s(.+)\s\((.+)\)/);
|
|
44
|
-
if (orig !== 'unreleased') {
|
|
45
|
-
return console.log('Error, the CHANGELOG file is malformed.');
|
|
46
|
-
}
|
|
47
|
-
const currentDate = new Date();
|
|
48
|
-
const date = `${currentDate.getFullYear()}-${`0${
|
|
49
|
-
currentDate.getMonth() + 1
|
|
50
|
-
}`.slice(-2)}-${`0${currentDate.getDate()}`.slice(-2)}`;
|
|
51
|
-
|
|
52
|
-
if (version !== origVersion) {
|
|
53
|
-
console.log(`Updating to the given version ${version}`);
|
|
54
|
-
}
|
|
55
|
-
const newLine = original
|
|
56
|
-
.replace('unreleased', date)
|
|
57
|
-
.replace(origVersion, version);
|
|
58
|
-
|
|
59
|
-
const newChangelog = data.replace(original, newLine);
|
|
60
|
-
|
|
61
|
-
// Save data to disk if command is bump
|
|
62
|
-
fs.writeFile(changelogFile, newChangelog, (err) => {
|
|
63
|
-
// throws an error, you could also catch it here
|
|
64
|
-
if (err) throw err;
|
|
65
|
-
|
|
66
|
-
// success case, the file was saved
|
|
67
|
-
console.log('Updated version on CHANGELOG.md');
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (command === 'back') {
|
|
72
|
-
const data = fs.readFileSync(changelogFile, 'utf8');
|
|
73
|
-
const nextversion = semver.inc(process.argv[3], 'patch');
|
|
74
|
-
const backToDevelTemplate = `\n\n## ${nextversion} (unreleased)\n\n### Breaking\n\n### Feature\n\n### Bugfix\n\n### Internal`;
|
|
75
|
-
|
|
76
|
-
const insertIndex = data.indexOf('\n\n');
|
|
77
|
-
const back = `${data.slice(
|
|
78
|
-
0,
|
|
79
|
-
insertIndex,
|
|
80
|
-
)}${backToDevelTemplate}${data.slice(insertIndex)}`;
|
|
81
|
-
console.log(back);
|
|
82
|
-
fs.writeFile(changelogFile, back, (err) => {
|
|
83
|
-
// throws an error, you could also catch it here
|
|
84
|
-
if (err) throw err;
|
|
85
|
-
|
|
86
|
-
// success case, the file was saved
|
|
87
|
-
console.log('Back to development on CHANGELOG.md');
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
return;
|
|
92
|
-
} catch (e) {
|
|
93
|
-
console.log('Error:', e.stack);
|
|
94
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/* eslint no-console: 0 */
|
|
3
|
-
import fs from 'fs';
|
|
4
|
-
|
|
5
|
-
if (process.argv.length < 3) {
|
|
6
|
-
console.log(process.argv.length);
|
|
7
|
-
process.exit(1);
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
const pkg = process.argv[2];
|
|
11
|
-
const version = process.argv[3];
|
|
12
|
-
|
|
13
|
-
const packageJSON = JSON.parse(fs.readFileSync(`${pkg}/package.json`, 'utf8'));
|
|
14
|
-
|
|
15
|
-
packageJSON.version = version;
|
|
16
|
-
|
|
17
|
-
fs.writeFileSync(
|
|
18
|
-
`${pkg}/package.json`,
|
|
19
|
-
`${JSON.stringify(packageJSON, null, 2)}`,
|
|
20
|
-
);
|
|
@@ -1,310 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/* eslint no-console: 0 */
|
|
3
|
-
/**
|
|
4
|
-
* i18n script.
|
|
5
|
-
* @module scripts/i18n
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
const { find, keys, map, concat, reduce } = require('lodash');
|
|
9
|
-
const glob = require('glob').sync;
|
|
10
|
-
const fs = require('fs');
|
|
11
|
-
const Pofile = require('pofile');
|
|
12
|
-
const babel = require('@babel/core');
|
|
13
|
-
|
|
14
|
-
const path = require('path');
|
|
15
|
-
const projectRootPath = path.resolve('.');
|
|
16
|
-
const packageJson = require(path.join(projectRootPath, 'package.json'));
|
|
17
|
-
|
|
18
|
-
const { program } = require('commander');
|
|
19
|
-
const chalk = require('chalk');
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Extract messages into separate JSON files
|
|
23
|
-
* @function extractMessages
|
|
24
|
-
* @return {undefined}
|
|
25
|
-
*/
|
|
26
|
-
function extractMessages() {
|
|
27
|
-
map(
|
|
28
|
-
// We ignore the existing customized shadowed components ones, since most
|
|
29
|
-
// probably we won't be overriding them
|
|
30
|
-
// If so, we should do it in the config object or somewhere else
|
|
31
|
-
// We also ignore the addons folder since they are populated using
|
|
32
|
-
// their own locales files and taken care separatedly in this script
|
|
33
|
-
glob('src/**/*.js?(x)', {
|
|
34
|
-
ignore: ['src/customizations/**', 'src/addons/**'],
|
|
35
|
-
}),
|
|
36
|
-
(filename) => {
|
|
37
|
-
babel.transformFileSync(filename, {}, (err) => {
|
|
38
|
-
if (err) {
|
|
39
|
-
console.log(err);
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
},
|
|
43
|
-
);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Get messages from separate JSON files
|
|
48
|
-
* @function getMessages
|
|
49
|
-
* @return {Object} Object with messages
|
|
50
|
-
*/
|
|
51
|
-
function getMessages() {
|
|
52
|
-
return reduce(
|
|
53
|
-
concat(
|
|
54
|
-
{},
|
|
55
|
-
...map(
|
|
56
|
-
// We ignore the existing customized shadowed components ones, since most
|
|
57
|
-
// probably we won't be overriding them
|
|
58
|
-
// If so, we should do it in the config object or somewhere else
|
|
59
|
-
// We also ignore the addons folder since they are populated using
|
|
60
|
-
// their own locales files and taken care separatedly in this script
|
|
61
|
-
glob('build/messages/src/**/*.json', {
|
|
62
|
-
ignore: [
|
|
63
|
-
'build/messages/src/customizations/**',
|
|
64
|
-
'build/messages/src/addons/**',
|
|
65
|
-
],
|
|
66
|
-
}),
|
|
67
|
-
(filename) =>
|
|
68
|
-
map(JSON.parse(fs.readFileSync(filename, 'utf8')), (message) => ({
|
|
69
|
-
...message,
|
|
70
|
-
filename: filename.match(/build\/messages\/src\/(.*).json$/)[1],
|
|
71
|
-
})),
|
|
72
|
-
),
|
|
73
|
-
),
|
|
74
|
-
(current, value) => {
|
|
75
|
-
let result = current;
|
|
76
|
-
if (current.id) {
|
|
77
|
-
result = {
|
|
78
|
-
[current.id]: {
|
|
79
|
-
defaultMessage: current.defaultMessage,
|
|
80
|
-
filenames: [current.filename],
|
|
81
|
-
},
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
if (result[value.id]) {
|
|
86
|
-
result[value.id].filenames.push(value.filename);
|
|
87
|
-
} else {
|
|
88
|
-
result[value.id] = {
|
|
89
|
-
defaultMessage: value.defaultMessage,
|
|
90
|
-
filenames: [value.filename],
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
return result;
|
|
94
|
-
},
|
|
95
|
-
);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Convert messages to pot format
|
|
100
|
-
* @function messagesToPot
|
|
101
|
-
* @param {Object} messages Messages
|
|
102
|
-
* @return {string} Formatted pot string
|
|
103
|
-
*/
|
|
104
|
-
function messagesToPot(messages) {
|
|
105
|
-
return map(keys(messages).sort(), (key) =>
|
|
106
|
-
[
|
|
107
|
-
...map(messages[key].filenames, (filename) => `#: ${filename}`),
|
|
108
|
-
`# defaultMessage: ${messages[key].defaultMessage}`,
|
|
109
|
-
`msgid "${key}"`,
|
|
110
|
-
'msgstr ""',
|
|
111
|
-
].join('\n'),
|
|
112
|
-
).join('\n\n');
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Pot header
|
|
117
|
-
* @function potHeader
|
|
118
|
-
* @return {string} Formatted pot header
|
|
119
|
-
*/
|
|
120
|
-
function potHeader() {
|
|
121
|
-
return `msgid ""
|
|
122
|
-
msgstr ""
|
|
123
|
-
"Project-Id-Version: Plone\\n"
|
|
124
|
-
"POT-Creation-Date: ${new Date().toISOString()}\\n"
|
|
125
|
-
"Last-Translator: Plone i18n <plone-i18n@lists.sourceforge.net>\\n"
|
|
126
|
-
"Language-Team: Plone i18n <plone-i18n@lists.sourceforge.net>\\n"
|
|
127
|
-
"MIME-Version: 1.0\\n"
|
|
128
|
-
"Content-Type: text/plain; charset=utf-8\\n"
|
|
129
|
-
"Content-Transfer-Encoding: 8bit\\n"
|
|
130
|
-
"Plural-Forms: nplurals=1; plural=0;\\n"
|
|
131
|
-
"Language-Code: en\\n"
|
|
132
|
-
"Language-Name: English\\n"
|
|
133
|
-
"Preferred-Encodings: utf-8\\n"
|
|
134
|
-
"Domain: volto\\n"
|
|
135
|
-
|
|
136
|
-
`;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Convert po files into json
|
|
141
|
-
* @function poToJson
|
|
142
|
-
* @return {undefined}
|
|
143
|
-
*/
|
|
144
|
-
function poToJson({ registry, addonMode }) {
|
|
145
|
-
const mergeMessages = (result, items, language) => {
|
|
146
|
-
items.forEach((item) => {
|
|
147
|
-
if (item.msgid in result) {
|
|
148
|
-
if (item.msgstr[0] !== '') {
|
|
149
|
-
result[item.msgid] = item.msgstr[0];
|
|
150
|
-
}
|
|
151
|
-
} else {
|
|
152
|
-
result[item.msgid] =
|
|
153
|
-
language === 'en'
|
|
154
|
-
? item.msgstr[0] ||
|
|
155
|
-
(item.comments[0]
|
|
156
|
-
? item.comments[0].replace('defaultMessage: ', '')
|
|
157
|
-
: '')
|
|
158
|
-
: item.msgstr[0];
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
return result;
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
map(glob('locales/**/*.po'), (filename) => {
|
|
166
|
-
let { items } = Pofile.parse(fs.readFileSync(filename, 'utf8'));
|
|
167
|
-
const projectLocalesItems = Pofile.parse(fs.readFileSync(filename, 'utf8'))
|
|
168
|
-
.items;
|
|
169
|
-
const lang = filename.match(/locales\/(.*)\/LC_MESSAGES\//)[1];
|
|
170
|
-
const result = {};
|
|
171
|
-
|
|
172
|
-
// Merge volto core locales
|
|
173
|
-
const lib = `node_modules/@plone/volto/${filename}`;
|
|
174
|
-
if (fs.existsSync(lib)) {
|
|
175
|
-
const libItems = Pofile.parse(fs.readFileSync(lib, 'utf8')).items;
|
|
176
|
-
items = [...libItems, ...items];
|
|
177
|
-
mergeMessages(result, items, lang);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
if (!addonMode) {
|
|
181
|
-
// Merge addons locales
|
|
182
|
-
if (packageJson.addons) {
|
|
183
|
-
registry.getAddonDependencies().forEach((addon) => {
|
|
184
|
-
const addonlocale = `${registry.packages[addon].modulePath}/../${filename}`;
|
|
185
|
-
if (fs.existsSync(addonlocale)) {
|
|
186
|
-
const addonItems = Pofile.parse(
|
|
187
|
-
fs.readFileSync(addonlocale, 'utf8'),
|
|
188
|
-
).items;
|
|
189
|
-
|
|
190
|
-
mergeMessages(result, addonItems, lang);
|
|
191
|
-
if (require.main === module) {
|
|
192
|
-
// We only log it if called as script
|
|
193
|
-
console.log(`Merging ${addon} locales for ${lang}`);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
// Merge project locales, the project customization wins
|
|
200
|
-
mergeMessages(result, projectLocalesItems, lang);
|
|
201
|
-
fs.writeFileSync(`locales/${lang}.json`, JSON.stringify(result));
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* Format header
|
|
207
|
-
* @function formatHeader
|
|
208
|
-
* @param {Array} comments Array of comments
|
|
209
|
-
* @param {Object} headers Object of header items
|
|
210
|
-
* @return {string} Formatted header
|
|
211
|
-
*/
|
|
212
|
-
function formatHeader(comments, headers) {
|
|
213
|
-
return [
|
|
214
|
-
...map(comments, (comment) => `# ${comment}`),
|
|
215
|
-
'msgid ""',
|
|
216
|
-
'msgstr ""',
|
|
217
|
-
...map(keys(headers), (key) => `"${key}: ${headers[key]}\\n"`),
|
|
218
|
-
'',
|
|
219
|
-
].join('\n');
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
/**
|
|
223
|
-
* Sync po by the pot file
|
|
224
|
-
* @function syncPoByPot
|
|
225
|
-
* @return {undefined}
|
|
226
|
-
*/
|
|
227
|
-
function syncPoByPot() {
|
|
228
|
-
const pot = Pofile.parse(fs.readFileSync('locales/volto.pot', 'utf8'));
|
|
229
|
-
|
|
230
|
-
map(glob('locales/**/*.po'), (filename) => {
|
|
231
|
-
const po = Pofile.parse(fs.readFileSync(filename, 'utf8'));
|
|
232
|
-
|
|
233
|
-
fs.writeFileSync(
|
|
234
|
-
filename,
|
|
235
|
-
`${formatHeader(po.comments, po.headers)}
|
|
236
|
-
${map(pot.items, (item) => {
|
|
237
|
-
const poItem = find(po.items, { msgid: item.msgid });
|
|
238
|
-
return [
|
|
239
|
-
`${map(item.references, (ref) => `#: ${ref}`).join('\n')}`,
|
|
240
|
-
`# ${item.comments[0]}`,
|
|
241
|
-
`msgid "${item.msgid}"`,
|
|
242
|
-
`msgstr "${poItem ? poItem.msgstr : ''}"`,
|
|
243
|
-
].join('\n');
|
|
244
|
-
}).join('\n\n')}\n`,
|
|
245
|
-
);
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
function main({ addonMode }) {
|
|
250
|
-
console.log('Extracting messages from source files...');
|
|
251
|
-
extractMessages();
|
|
252
|
-
console.log('Synchronizing messages to pot file...');
|
|
253
|
-
// We only write the pot file if it's really different
|
|
254
|
-
const newPot = `${potHeader()}${messagesToPot(getMessages())}\n`.replace(
|
|
255
|
-
/"POT-Creation-Date:(.*)\\n"/,
|
|
256
|
-
'',
|
|
257
|
-
);
|
|
258
|
-
const oldPot = fs
|
|
259
|
-
.readFileSync('locales/volto.pot', 'utf8')
|
|
260
|
-
.replace(/"POT-Creation-Date:(.*)\\n"/, '');
|
|
261
|
-
|
|
262
|
-
if (newPot !== oldPot) {
|
|
263
|
-
fs.writeFileSync(
|
|
264
|
-
'locales/volto.pot',
|
|
265
|
-
`${potHeader()}${messagesToPot(getMessages())}\n`,
|
|
266
|
-
);
|
|
267
|
-
}
|
|
268
|
-
console.log('Synchronizing messages to po files...');
|
|
269
|
-
syncPoByPot();
|
|
270
|
-
if (!addonMode) {
|
|
271
|
-
// Detect if I'm in a project or in Volto itself
|
|
272
|
-
let AddonConfigurationRegistry;
|
|
273
|
-
try {
|
|
274
|
-
if (fs.existsSync(`${projectRootPath}/node_modules/@plone/volto`)) {
|
|
275
|
-
// We are in a project
|
|
276
|
-
AddonConfigurationRegistry = require(path.join(
|
|
277
|
-
projectRootPath,
|
|
278
|
-
'/node_modules/@plone/volto/packages/registry/addon-registry',
|
|
279
|
-
));
|
|
280
|
-
} else {
|
|
281
|
-
// We are in Volto itself
|
|
282
|
-
AddonConfigurationRegistry = require(path.join(
|
|
283
|
-
projectRootPath,
|
|
284
|
-
'/packages/registry/addon-registry',
|
|
285
|
-
));
|
|
286
|
-
}
|
|
287
|
-
} catch {
|
|
288
|
-
console.log(
|
|
289
|
-
chalk.red(
|
|
290
|
-
'Getting the addon registry failed. Are you executing i18n from inside an addon? Try the -a flag.',
|
|
291
|
-
),
|
|
292
|
-
);
|
|
293
|
-
process.exit();
|
|
294
|
-
}
|
|
295
|
-
console.log('Generating the language JSON files...');
|
|
296
|
-
const registry = new AddonConfigurationRegistry(projectRootPath);
|
|
297
|
-
poToJson({ registry, addonMode });
|
|
298
|
-
}
|
|
299
|
-
console.log('done!');
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
// This is the equivalent of `if __name__ == '__main__'` in Python :)
|
|
303
|
-
if (require.main === module) {
|
|
304
|
-
program.option('-a, --addon', 'run i18n script for addons');
|
|
305
|
-
program.parse(process.argv);
|
|
306
|
-
const options = program.opts();
|
|
307
|
-
main({ addonMode: options.addon });
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
module.exports = { poToJson };
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@plone/scripts",
|
|
3
|
-
"description": "Volto Core scripts package - Contains scripts and dependencies for these scripts for tooling when developing Plone 6 / Volto",
|
|
4
|
-
"maintainers": [
|
|
5
|
-
{
|
|
6
|
-
"name": "Plone Foundation",
|
|
7
|
-
"email": "plone-developers@lists.sourceforge.net",
|
|
8
|
-
"url": "http://plone.org"
|
|
9
|
-
}
|
|
10
|
-
],
|
|
11
|
-
"license": "MIT",
|
|
12
|
-
"version": "3.0.1",
|
|
13
|
-
"repository": {
|
|
14
|
-
"type": "git",
|
|
15
|
-
"url": "git@github.com:plone/volto.git"
|
|
16
|
-
},
|
|
17
|
-
"bugs": {
|
|
18
|
-
"url": "https://github.com/plone/volto/issues",
|
|
19
|
-
"email": "plone-developers@lists.sourceforge.net"
|
|
20
|
-
},
|
|
21
|
-
"type": "module",
|
|
22
|
-
"homepage": "https://plone.org",
|
|
23
|
-
"keywords": [
|
|
24
|
-
"volto",
|
|
25
|
-
"plone",
|
|
26
|
-
"plone6",
|
|
27
|
-
"react",
|
|
28
|
-
"cms"
|
|
29
|
-
],
|
|
30
|
-
"scripts": {
|
|
31
|
-
"dry-release": "release-it --dry-run",
|
|
32
|
-
"release": "release-it",
|
|
33
|
-
"release-major-alpha": "release-it major --preRelease=alpha",
|
|
34
|
-
"release-alpha": "release-it --preRelease=alpha"
|
|
35
|
-
},
|
|
36
|
-
"bin": {
|
|
37
|
-
"addon": "./addon/index.js",
|
|
38
|
-
"changelogupdater": "./changelogupdater.cjs",
|
|
39
|
-
"i18n": "./i18n.cjs"
|
|
40
|
-
},
|
|
41
|
-
"release-it": {
|
|
42
|
-
"hooks": {
|
|
43
|
-
"after:bump": "pipx run towncrier build --draft --yes --version ${version} > .changelog.draft && pipx run towncrier build --yes --version ${version}",
|
|
44
|
-
"after:release": "rm .changelog.draft"
|
|
45
|
-
},
|
|
46
|
-
"git": {
|
|
47
|
-
"changelog": "pipx run towncrier build --draft --yes --version 0.0.0",
|
|
48
|
-
"requireUpstream": false,
|
|
49
|
-
"requireCleanWorkingDir": false,
|
|
50
|
-
"commitMessage": "Release @plone/scripts ${version}",
|
|
51
|
-
"tagName": "plone-scripts-${version}",
|
|
52
|
-
"tagAnnotation": "Release @plone/scripts ${version}"
|
|
53
|
-
},
|
|
54
|
-
"github": {
|
|
55
|
-
"release": true,
|
|
56
|
-
"releaseName": "@plone/scripts ${version}",
|
|
57
|
-
"releaseNotes": "cat .changelog.draft"
|
|
58
|
-
}
|
|
59
|
-
},
|
|
60
|
-
"publishConfig": {
|
|
61
|
-
"access": "public"
|
|
62
|
-
},
|
|
63
|
-
"dependencies": {
|
|
64
|
-
"babel-plugin-react-intl": "5.1.17",
|
|
65
|
-
"babel-preset-razzle": "4.2.17",
|
|
66
|
-
"chalk": "4",
|
|
67
|
-
"commander": "8.2.0",
|
|
68
|
-
"fs-extra": "10.1.0",
|
|
69
|
-
"git-url-parse": "^13.1.0",
|
|
70
|
-
"mrs-developer": "*",
|
|
71
|
-
"pofile": "1.0.10"
|
|
72
|
-
},
|
|
73
|
-
"devDependencies": {
|
|
74
|
-
"release-it": "^16.1.3"
|
|
75
|
-
}
|
|
76
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{% if sections[""] %}
|
|
2
|
-
{% for category, val in definitions.items() if category in sections[""] %}
|
|
3
|
-
### {{ definitions[category]['name'] }}
|
|
4
|
-
|
|
5
|
-
{% for text, values in sections[""][category].items() %}
|
|
6
|
-
- {{ text }} {{ values|join(', ') }}
|
|
7
|
-
{% endfor %}
|
|
8
|
-
|
|
9
|
-
{% endfor %}
|
|
10
|
-
{% endif %}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { GetContentResponse } from '../content/get';
|
|
2
|
-
import { BlocksConfig } from '../config/Blocks';
|
|
3
|
-
|
|
4
|
-
export interface BlockViewProps {
|
|
5
|
-
id: string;
|
|
6
|
-
metadata?: GetContentResponse;
|
|
7
|
-
properties: GetContentResponse;
|
|
8
|
-
data: any;
|
|
9
|
-
path: string;
|
|
10
|
-
blocksConfig: BlocksConfig;
|
|
11
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
interface Object {
|
|
2
|
-
icon: string;
|
|
3
|
-
id: string;
|
|
4
|
-
title: string;
|
|
5
|
-
url: string;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export interface ActionsResponse {
|
|
9
|
-
document_actions: Object[];
|
|
10
|
-
object: Object[];
|
|
11
|
-
object_buttons: Object[];
|
|
12
|
-
portal_tabs: Object[];
|
|
13
|
-
site_actions: Object[];
|
|
14
|
-
user: Object[];
|
|
15
|
-
}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import { GetContentResponse } from '../content/get';
|
|
2
|
-
import type { BlockViewProps } from '@plone/types/Blocks/View';
|
|
3
|
-
|
|
4
|
-
export interface BlocksConfig {
|
|
5
|
-
[key: string]: BlockConfigBase | undefined;
|
|
6
|
-
title?: BlockConfigBase;
|
|
7
|
-
description?: BlockConfigBase;
|
|
8
|
-
slate?: SlateBlock;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
interface BlockConfigBase {
|
|
12
|
-
/**
|
|
13
|
-
* The programmatic id of the block
|
|
14
|
-
*/
|
|
15
|
-
id: string;
|
|
16
|
-
/**
|
|
17
|
-
* // The display name of the block (translatable)
|
|
18
|
-
*/
|
|
19
|
-
title: string;
|
|
20
|
-
/**
|
|
21
|
-
* The icon used in the block chooser
|
|
22
|
-
*/
|
|
23
|
-
icon: string;
|
|
24
|
-
/**
|
|
25
|
-
* The group of the block
|
|
26
|
-
*/
|
|
27
|
-
group: string;
|
|
28
|
-
/**
|
|
29
|
-
* The view mode component
|
|
30
|
-
*/
|
|
31
|
-
view: React.ComponentType<BlockViewProps>;
|
|
32
|
-
/**
|
|
33
|
-
* The edit mode component
|
|
34
|
-
*/
|
|
35
|
-
edit: React.ComponentType;
|
|
36
|
-
/**
|
|
37
|
-
* The group (blocks can be grouped, displayed in the chooser)
|
|
38
|
-
*/
|
|
39
|
-
schema?: object;
|
|
40
|
-
/**
|
|
41
|
-
* The group of the block
|
|
42
|
-
*/
|
|
43
|
-
blockSchema?: (args: {
|
|
44
|
-
props: unknown;
|
|
45
|
-
intl: unknown;
|
|
46
|
-
}) => Record<string, unknown>;
|
|
47
|
-
/**
|
|
48
|
-
* If the block is restricted, it won't show in the chooser.
|
|
49
|
-
* The function signature is `({properties, block})` where `properties` is
|
|
50
|
-
* the current object data and `block` is the block being evaluated in `BlockChooser`.
|
|
51
|
-
*/
|
|
52
|
-
restricted: (args: {
|
|
53
|
-
properties: GetContentResponse;
|
|
54
|
-
block: BlockConfigBase; // TODO: This has to be extendable
|
|
55
|
-
}) => boolean;
|
|
56
|
-
/**
|
|
57
|
-
* A meta group `most used`, appearing at the top of the chooser
|
|
58
|
-
*/
|
|
59
|
-
mostUsed: false;
|
|
60
|
-
/**
|
|
61
|
-
* Set this to true if the block manages its own focus
|
|
62
|
-
*/
|
|
63
|
-
blockHasOwnFocusManagement: true;
|
|
64
|
-
/**
|
|
65
|
-
* The sidebar tab you want to be selected when selecting the block
|
|
66
|
-
*/
|
|
67
|
-
sidebarTab: 0;
|
|
68
|
-
/**
|
|
69
|
-
* A block can have an schema enhancer function with the signature: (schema) => schema
|
|
70
|
-
* It can be either be at block level (it's applied always), at a variation level
|
|
71
|
-
* or both. It's up to the developer to make them work nicely (not conflict) between them
|
|
72
|
-
*/
|
|
73
|
-
schemaEnhancer: (args: {
|
|
74
|
-
schema: JSONSchema;
|
|
75
|
-
formData: BlockConfigBase; // Not sure, if so, has to be extendable
|
|
76
|
-
intl: unknown;
|
|
77
|
-
}) => JSONSchema;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
interface SlateBlock extends BlockConfigBase {
|
|
81
|
-
/**
|
|
82
|
-
* Returns true if the provided block data represents a value for the current block.
|
|
83
|
-
* Required for alternate default block types implementations.
|
|
84
|
-
*/
|
|
85
|
-
blockHasValue: (data: BlockConfigBase) => boolean;
|
|
86
|
-
/**
|
|
87
|
-
*
|
|
88
|
-
*/
|
|
89
|
-
tocEntry: (block: BlockConfigBase) => object;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
export interface ContainerBlock extends BlockConfigBase {
|
|
93
|
-
/**
|
|
94
|
-
* A custom `EditBlockWrapper` component to use by the container
|
|
95
|
-
*/
|
|
96
|
-
EditBlockWrapper: React.ComponentType;
|
|
97
|
-
/**
|
|
98
|
-
* A custom `TemplateChooser` component to use by the container
|
|
99
|
-
*/
|
|
100
|
-
TemplateChooser: React.ComponentType;
|
|
101
|
-
/**
|
|
102
|
-
* The available templates for the TemplateChooser generator
|
|
103
|
-
*/
|
|
104
|
-
templates: (type: string) => (intl: unknown) => TemplateDefaultBlocksData;
|
|
105
|
-
/**
|
|
106
|
-
* Maximum number of blocks in the container
|
|
107
|
-
*/
|
|
108
|
-
maxLength: number;
|
|
109
|
-
/**
|
|
110
|
-
* List of the `id`s of the allowed blocks in the container
|
|
111
|
-
*/
|
|
112
|
-
allowedBlocks: string[];
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// interface ExtendedObject extends ArbitraryObject {
|
|
116
|
-
// baz: { someProp: string };
|
|
117
|
-
// }
|
|
118
|
-
|
|
119
|
-
// const myObject: ExtendedObject = {};
|
|
120
|
-
|
|
121
|
-
// // Add properties one by one
|
|
122
|
-
// myObject.foo = 'hello';
|
|
123
|
-
// myObject.bar = 42;
|
|
124
|
-
// myObject.baz = { someProp: 'someValue' };
|
|
125
|
-
|
|
126
|
-
type JSONSchemaFieldsets = {
|
|
127
|
-
id: string;
|
|
128
|
-
title: string;
|
|
129
|
-
fields: string[];
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
type JSONSchema = {
|
|
133
|
-
title: string;
|
|
134
|
-
fieldsets: JSONSchemaFieldsets[];
|
|
135
|
-
properties: object;
|
|
136
|
-
required: string[];
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
type BlocksData = {
|
|
140
|
-
blocks: {
|
|
141
|
-
[key: string]: object;
|
|
142
|
-
};
|
|
143
|
-
blocks_layout: {
|
|
144
|
-
items: string[];
|
|
145
|
-
};
|
|
146
|
-
};
|
|
147
|
-
|
|
148
|
-
interface TemplateDefaultBlocksData {
|
|
149
|
-
image: string;
|
|
150
|
-
id: string;
|
|
151
|
-
title: string;
|
|
152
|
-
blocksData: BlocksData;
|
|
153
|
-
}
|