@plone/volto 18.0.0-alpha.33 → 18.0.0-alpha.35

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 (75) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/locales/ca/LC_MESSAGES/volto.po +5 -0
  3. package/locales/ca.json +1 -1
  4. package/locales/de/LC_MESSAGES/volto.po +5 -0
  5. package/locales/de.json +1 -1
  6. package/locales/en/LC_MESSAGES/volto.po +5 -0
  7. package/locales/en.json +1 -1
  8. package/locales/es/LC_MESSAGES/volto.po +5 -0
  9. package/locales/es.json +1 -1
  10. package/locales/eu/LC_MESSAGES/volto.po +5 -0
  11. package/locales/eu.json +1 -1
  12. package/locales/fi/LC_MESSAGES/volto.po +5 -0
  13. package/locales/fi.json +1 -1
  14. package/locales/fr/LC_MESSAGES/volto.po +5 -0
  15. package/locales/fr.json +1 -1
  16. package/locales/hi/LC_MESSAGES/volto.po +5 -0
  17. package/locales/hi.json +1 -1
  18. package/locales/it/LC_MESSAGES/volto.po +5 -0
  19. package/locales/it.json +1 -1
  20. package/locales/ja/LC_MESSAGES/volto.po +5 -0
  21. package/locales/ja.json +1 -1
  22. package/locales/nl/LC_MESSAGES/volto.po +5 -0
  23. package/locales/nl.json +1 -1
  24. package/locales/pt/LC_MESSAGES/volto.po +5 -0
  25. package/locales/pt.json +1 -1
  26. package/locales/pt_BR/LC_MESSAGES/volto.po +5 -0
  27. package/locales/pt_BR.json +1 -1
  28. package/locales/ro/LC_MESSAGES/volto.po +5 -0
  29. package/locales/ro.json +1 -1
  30. package/locales/volto.pot +5 -0
  31. package/locales/zh_CN/LC_MESSAGES/volto.po +5 -0
  32. package/locales/zh_CN.json +1 -1
  33. package/package.json +8 -5
  34. package/razzle.config.js +20 -5
  35. package/src/actions/form/form.js +18 -2
  36. package/src/actions/index.js +1 -1
  37. package/src/components/manage/Blocks/Block/BlocksForm.jsx +157 -81
  38. package/src/components/manage/Blocks/Block/BlocksForm.test.jsx +8 -0
  39. package/src/components/manage/Blocks/Block/Edit.jsx +37 -4
  40. package/src/components/manage/Blocks/Block/Order/Item.jsx +122 -0
  41. package/src/components/manage/Blocks/Block/Order/Order.jsx +367 -0
  42. package/src/components/manage/Blocks/Block/Order/SortableItem.jsx +58 -0
  43. package/src/components/manage/Blocks/Block/Order/utilities.js +113 -0
  44. package/src/components/manage/Blocks/Container/Edit.jsx +1 -0
  45. package/src/components/manage/Blocks/Grid/Edit.jsx +6 -4
  46. package/src/components/manage/Blocks/Image/schema.js +2 -0
  47. package/src/components/manage/Controlpanels/Relations/RelationsListing.jsx +1 -1
  48. package/src/components/manage/Controlpanels/Relations/RelationsMatrix.jsx +1 -1
  49. package/src/components/manage/Form/Form.jsx +159 -151
  50. package/src/components/manage/Sidebar/Sidebar.jsx +28 -1
  51. package/src/components/manage/Widgets/InternalUrlWidget.jsx +10 -14
  52. package/src/components/theme/FormattedDate/FormattedDate.jsx +13 -1
  53. package/src/components/theme/Icon/Icon.jsx +4 -4
  54. package/src/config/Loadables.jsx +18 -0
  55. package/src/config/index.js +0 -1
  56. package/src/constants/ActionTypes.js +1 -0
  57. package/src/helpers/Blocks/Blocks.js +198 -4
  58. package/src/helpers/Blocks/Blocks.test.js +191 -0
  59. package/src/helpers/index.js +5 -0
  60. package/src/reducers/form/form.js +18 -1
  61. package/src/reducers/form/form.test.js +15 -1
  62. package/theme/themes/pastanaga/extras/blocks.less +7 -6
  63. package/theme/themes/pastanaga/extras/sidebar.less +145 -0
  64. package/types/actions/form/form.d.ts +8 -1
  65. package/types/actions/index.d.ts +1 -1
  66. package/types/components/manage/Blocks/Block/Order/Item.d.ts +2 -0
  67. package/types/components/manage/Blocks/Block/Order/Order.d.ts +13 -0
  68. package/types/components/manage/Blocks/Block/Order/SortableItem.d.ts +9 -0
  69. package/types/components/manage/Blocks/Block/Order/utilities.d.ts +9 -0
  70. package/types/components/manage/Blocks/Image/schema.d.ts +2 -0
  71. package/types/components/theme/Icon/Icon.d.ts +8 -8
  72. package/types/config/Loadables.d.ts +15 -162
  73. package/types/constants/ActionTypes.d.ts +1 -0
  74. package/types/helpers/Blocks/Blocks.d.ts +19 -0
  75. package/types/helpers/index.d.ts +3 -3
@@ -2,6 +2,13 @@
2
2
  * Set form data function.
3
3
  * @function setFormData
4
4
  * @param {Object} data New form data.
5
- * @returns {Object} Set sidebar action.
5
+ * @returns {Object} Set form data action.
6
6
  */
7
7
  export function setFormData(data: any): any;
8
+ /**
9
+ * Set ui state function.
10
+ * @function setUIState
11
+ * @param {Object} ui New ui state.
12
+ * @returns {Object} Set ui state action.
13
+ */
14
+ export function setUIState(ui: any): any;
@@ -10,7 +10,6 @@ export { listRoles } from "@plone/volto/actions/roles/roles";
10
10
  export { getTypes } from "@plone/volto/actions/types/types";
11
11
  export { getQuerystring } from "@plone/volto/actions/querystring/querystring";
12
12
  export { getQueryStringResults } from "@plone/volto/actions/querystringsearch/querystringsearch";
13
- export { setFormData } from "@plone/volto/actions/form/form";
14
13
  export { loadLazyLibrary } from "@plone/volto/actions/lazyLibraries/lazyLibraries";
15
14
  export { getContextNavigation } from "@plone/volto/actions/contextNavigation/contextNavigation";
16
15
  export { authenticatedRole } from "@plone/volto/actions/authRole/authRole";
@@ -38,6 +37,7 @@ export { login, loginRenew, logout, resetLoginRequest } from "@plone/volto/actio
38
37
  export { getVocabulary, getVocabularyTokenTitle } from "@plone/volto/actions/vocabularies/vocabularies";
39
38
  export { getWorkflow, transitionWorkflow } from "@plone/volto/actions/workflow/workflow";
40
39
  export { setMetadataFieldsets, setMetadataFocus, resetMetadataFocus, setSidebarTab } from "@plone/volto/actions/sidebar/sidebar";
40
+ export { setFormData, setUIState } from "@plone/volto/actions/form/form";
41
41
  export { deleteLinkTranslation, getTranslationLocator, linkTranslation } from "@plone/volto/actions/translations/translations";
42
42
  export { setBlocksClipboard, resetBlocksClipboard } from "@plone/volto/actions/blocksClipboard/blocksClipboard";
43
43
  export { changeLanguage, changeLanguageCookies } from "./language/language";
@@ -0,0 +1,2 @@
1
+ export const Item: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
2
+ import React from 'react';
@@ -0,0 +1,13 @@
1
+ export function Order({ items, onMoveBlock, onDeleteBlock, onSelectBlock, indentationWidth, removable, dndKitCore, dndKitSortable, dndKitUtilities, }: {
2
+ items?: any[];
3
+ onMoveBlock: any;
4
+ onDeleteBlock: any;
5
+ onSelectBlock: any;
6
+ indentationWidth?: number;
7
+ removable: any;
8
+ dndKitCore: any;
9
+ dndKitSortable: any;
10
+ dndKitUtilities: any;
11
+ }): import("react/jsx-runtime").JSX.Element;
12
+ declare const _default: any;
13
+ export default _default;
@@ -0,0 +1,9 @@
1
+ export function SortableItem({ id, depth, dndKitSortable, dndKitUtilities, ...props }: {
2
+ [x: string]: any;
3
+ id: any;
4
+ depth: any;
5
+ dndKitSortable: any;
6
+ dndKitUtilities: any;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ declare const _default: any;
9
+ export default _default;
@@ -0,0 +1,9 @@
1
+ export function getProjection(items: any, activeId: any, overId: any, dragOffset: any, indentationWidth: any, arrayMove: any): {
2
+ depth: any;
3
+ maxDepth: any;
4
+ minDepth: any;
5
+ parentId: any;
6
+ };
7
+ export function flattenTree(items: any): any;
8
+ export function findItem(items: any, itemId: any): any;
9
+ export function removeChildrenOf(items: any, ids: any): any;
@@ -15,10 +15,12 @@ export function ImageSchema({ formData, intl }: {
15
15
  align: {
16
16
  title: any;
17
17
  widget: string;
18
+ default: string;
18
19
  };
19
20
  size: {
20
21
  title: any;
21
22
  widget: string;
23
+ default: string;
22
24
  };
23
25
  href: {
24
26
  title: any;
@@ -4,10 +4,10 @@ export default Icon;
4
4
  * @function Field
5
5
  * @param {Object} props Component properties.
6
6
  * @param {string} props.name Name source object.
7
- * @param {string} props.size Size of the Icon (in px).
8
- * @param {string} props.color Color of the Icon.
9
- * @param {string} props.className className to add to the component.
10
- * @param {string} props.title Title (a11y).
7
+ * @param {string} [props.size] Size of the Icon (in px).
8
+ * @param {string} [props.color] Color of the Icon.
9
+ * @param {string} [props.className] className to add to the component.
10
+ * @param {string} [props.title] Title (a11y).
11
11
  * @returns {string} Markup of the component.
12
12
  *
13
13
  * Use:
@@ -26,10 +26,10 @@ export default Icon;
26
26
  */
27
27
  declare function Icon({ name, size, color, className, title, onClick, style, id, ariaHidden, }: {
28
28
  name: string;
29
- size: string;
30
- color: string;
31
- className: string;
32
- title: string;
29
+ size?: string;
30
+ color?: string;
31
+ className?: string;
32
+ title?: string;
33
33
  }): string;
34
34
  declare namespace Icon {
35
35
  namespace propTypes {
@@ -1,162 +1,15 @@
1
- export namespace loadables {
2
- let prettierStandalone: import("@loadable/component").LoadableLibrary<{
3
- default: typeof import("prettier/standalone");
4
- formatWithCursor(source: string, options: import("prettier").CursorOptions): Promise<import("prettier").CursorResult>;
5
- format(source: string, options?: import("prettier").Options): Promise<string>;
6
- check(source: string, options?: import("prettier").Options): Promise<boolean>;
7
- getSupportInfo(): Promise<import("prettier").SupportInfo>;
8
- }>;
9
- let prettierParserHtml: import("@loadable/component").LoadableLibrary<{
10
- default: typeof import("prettier/plugins/html");
11
- parsers: {
12
- angular: import("prettier").Parser<any>;
13
- html: import("prettier").Parser<any>;
14
- lwc: import("prettier").Parser<any>;
15
- vue: import("prettier").Parser<any>;
16
- };
17
- }>;
18
- let prismCore: any;
19
- let toastify: import("@loadable/component").LoadableLibrary<{
20
- default: typeof import("react-toastify");
21
- cssTransition(props: import("react-toastify").cssTransitionProps): import("react").ComponentType<{}>;
22
- ToastType: import("react-toastify").Type;
23
- ToastPosition: import("react-toastify").Position;
24
- ToastContainer: typeof import("react-toastify").ToastContainer;
25
- toast: import("react-toastify").Toast;
26
- Slide: import("react").ComponentType<{}>;
27
- Bounce: import("react").ComponentType<{}>;
28
- Flip: import("react").ComponentType<{}>;
29
- Zoom: import("react").ComponentType<{}>;
30
- }>;
31
- let reactSelect: any;
32
- let reactVirtualized: any;
33
- let reactSortableHOC: import("@loadable/component").LoadableLibrary<{
34
- default: typeof import("react-sortable-hoc");
35
- SortableContainer<P>(wrappedComponent: any, config?: import("react-sortable-hoc").Config): import("react").ComponentClass<P & import("react-sortable-hoc").SortableContainerProps, any>;
36
- SortableElement<P_1>(wrappedComponent: any, config?: import("react-sortable-hoc").Config): import("react").ComponentClass<P_1 & import("react-sortable-hoc").SortableElementProps, any>;
37
- SortableHandle<P_2>(wrappedComponent: any, config?: import("react-sortable-hoc").Config): import("react").ComponentClass<P_2, any>;
38
- arrayMove<T>(collection: T[], previousIndex: number, newIndex: number): T[];
39
- }>;
40
- let reactSelectAsyncPaginate: import("@loadable/component").LoadableLibrary<{
41
- default: typeof import("react-select-async-paginate");
42
- wrapMenuList: (MenuList: import("react").ComponentType<{
43
- innerRef: import("react").Ref<HTMLElement>;
44
- }>) => import("react").FC<import("react-select-async-paginate/ts/wrapMenuList").Props>;
45
- reduceGroupedOptions: import("react-select-async-paginate").ReduceOptions<any, any>;
46
- withAsyncPaginate: typeof import("react-select-async-paginate").withAsyncPaginate;
47
- useAsyncPaginateBase: <OptionType, Additional>(params: import("react-select-async-paginate").UseAsyncPaginateBaseParams<OptionType, Additional>, deps?: readonly any[]) => import("react-select-async-paginate").UseAsyncPaginateBaseResult<OptionType>;
48
- useAsyncPaginate: <OptionType_1, Additional_1>(params: import("react-select-async-paginate").UseAsyncPaginateParams<OptionType_1, Additional_1>, deps?: readonly any[]) => import("react-select-async-paginate").UseAsyncPaginateResult<OptionType_1>;
49
- useComponents: <OptionType_2, IsMulti extends boolean>(components: any) => any;
50
- AsyncPaginate: import("react").FC<any>;
51
- }>;
52
- let reactSelectAsync: any;
53
- let reactSelectCreateable: any;
54
- let reactSelectAsyncCreateable: any;
55
- let diffLib: any;
56
- let moment: import("@loadable/component").LoadableLibrary<{
57
- default: typeof import("moment");
58
- utc(inp?: import("moment").MomentInput, strict?: boolean): import("moment").Moment;
59
- utc(inp?: import("moment").MomentInput, format?: import("moment").MomentFormatSpecification, strict?: boolean): import("moment").Moment;
60
- utc(inp?: import("moment").MomentInput, format?: import("moment").MomentFormatSpecification, language?: string, strict?: boolean): import("moment").Moment;
61
- unix(timestamp: number): import("moment").Moment;
62
- invalid(flags?: import("moment").MomentParsingFlagsOpt): import("moment").Moment;
63
- isMoment(m: any): m is import("moment").Moment;
64
- isDate(m: any): m is Date;
65
- isDuration(d: any): d is import("moment").Duration;
66
- lang(language?: string): string;
67
- lang(language?: string, definition?: import("moment").Locale): string;
68
- locale(language?: string): string;
69
- locale(language?: string[]): string;
70
- locale(language?: string, definition?: import("moment").LocaleSpecification): string;
71
- localeData(key?: string | string[]): import("moment").Locale;
72
- duration(inp?: import("moment").DurationInputArg1, unit?: import("moment").unitOfTime.DurationConstructor): import("moment").Duration;
73
- parseZone(inp?: import("moment").MomentInput, format?: import("moment").MomentFormatSpecification, strict?: boolean): import("moment").Moment;
74
- parseZone(inp?: import("moment").MomentInput, format?: import("moment").MomentFormatSpecification, language?: string, strict?: boolean): import("moment").Moment;
75
- months(): string[];
76
- months(index: number): string;
77
- months(format: string): string[];
78
- months(format: string, index: number): string;
79
- monthsShort(): string[];
80
- monthsShort(index: number): string;
81
- monthsShort(format: string): string[];
82
- monthsShort(format: string, index: number): string;
83
- weekdays(): string[];
84
- weekdays(index: number): string;
85
- weekdays(format: string): string[];
86
- weekdays(format: string, index: number): string;
87
- weekdays(localeSorted: boolean): string[];
88
- weekdays(localeSorted: boolean, index: number): string;
89
- weekdays(localeSorted: boolean, format: string): string[];
90
- weekdays(localeSorted: boolean, format: string, index: number): string;
91
- weekdaysShort(): string[];
92
- weekdaysShort(index: number): string;
93
- weekdaysShort(format: string): string[];
94
- weekdaysShort(format: string, index: number): string;
95
- weekdaysShort(localeSorted: boolean): string[];
96
- weekdaysShort(localeSorted: boolean, index: number): string;
97
- weekdaysShort(localeSorted: boolean, format: string): string[];
98
- weekdaysShort(localeSorted: boolean, format: string, index: number): string;
99
- weekdaysMin(): string[];
100
- weekdaysMin(index: number): string;
101
- weekdaysMin(format: string): string[];
102
- weekdaysMin(format: string, index: number): string;
103
- weekdaysMin(localeSorted: boolean): string[];
104
- weekdaysMin(localeSorted: boolean, index: number): string;
105
- weekdaysMin(localeSorted: boolean, format: string): string[];
106
- weekdaysMin(localeSorted: boolean, format: string, index: number): string;
107
- min(moments: import("moment").Moment[]): import("moment").Moment;
108
- min(...moments: import("moment").Moment[]): import("moment").Moment;
109
- max(moments: import("moment").Moment[]): import("moment").Moment;
110
- max(...moments: import("moment").Moment[]): import("moment").Moment;
111
- now(): number;
112
- defineLocale(language: string, localeSpec: import("moment").LocaleSpecification): import("moment").Locale;
113
- updateLocale(language: string, localeSpec: import("moment").LocaleSpecification): import("moment").Locale;
114
- locales(): string[];
115
- normalizeUnits(unit: import("moment").unitOfTime.All): string;
116
- relativeTimeThreshold(threshold: string): number | boolean;
117
- relativeTimeThreshold(threshold: string, limit: number): boolean;
118
- relativeTimeRounding(fn: (num: number) => number): boolean;
119
- relativeTimeRounding(): (num: number) => number;
120
- calendarFormat(m: import("moment").Moment, now: import("moment").Moment): string;
121
- parseTwoDigitYear(input: string): number;
122
- version: string;
123
- fn: import("moment").Moment;
124
- ISO_8601: import("moment").MomentBuiltinFormat;
125
- RFC_2822: import("moment").MomentBuiltinFormat;
126
- defaultFormat: string;
127
- defaultFormatUtc: string;
128
- suppressDeprecationWarnings: boolean;
129
- deprecationHandler: (name: string, msg: string) => void;
130
- HTML5_FMT: {
131
- DATETIME_LOCAL: string;
132
- DATETIME_LOCAL_SECONDS: string;
133
- DATETIME_LOCAL_MS: string;
134
- DATE: string;
135
- TIME: string;
136
- TIME_SECONDS: string;
137
- TIME_MS: string;
138
- WEEK: string;
139
- MONTH: string;
140
- };
141
- }>;
142
- let reactDates: any;
143
- let reactDnd: import("@loadable/component").LoadableLibrary<{
144
- default: typeof import("react-dnd");
145
- DragDropContext: typeof import("react-dnd").DragDropContext;
146
- DragDropContextProvider: React.SFC<import("react-dnd").DragDropContextProviderProps<any>>;
147
- DragLayer: typeof import("react-dnd").DragLayer;
148
- DragSource: typeof import("react-dnd").DragSource;
149
- DropTarget: typeof import("react-dnd").DropTarget;
150
- XYCoord: any;
151
- }>;
152
- let reactDndHtml5Backend: import("@loadable/component").LoadableLibrary<typeof import("react-dnd-html5-backend")>;
153
- let reactBeautifulDnd: any;
154
- let rrule: import("@loadable/component").LoadableLibrary<{
155
- default: typeof import("rrule");
156
- RRule: typeof import("rrule").RRule;
157
- RRuleSet: typeof import("rrule").RRuleSet;
158
- rrulestr: typeof import("rrule").rrulestr;
159
- Frequency: typeof import("rrule").Frequency;
160
- Weekday: typeof import("rrule").Weekday;
161
- }>;
162
- }
1
+ /**
2
+ * @typedef {Object} LoadableLib
3
+ * @property {() => Promise<any>} import
4
+ * @property {Object} [options]
5
+ */
6
+ /**
7
+ * @type {{ [key: string]: LoadableLib }}
8
+ */
9
+ export const loadables: {
10
+ [key: string]: LoadableLib;
11
+ };
12
+ export type LoadableLib = {
13
+ import: () => Promise<any>;
14
+ options?: any;
15
+ };
@@ -141,4 +141,5 @@ export const RESET_LOGIN_REQUEST: "RESET_LOGIN_REQUEST";
141
141
  export const GET_SITE: "GET_SITE";
142
142
  export const GET_NAVROOT: "GET_NAVROOT";
143
143
  export const SET_FORM_DATA: "SET_FORM_DATA";
144
+ export const SET_UI_STATE: "SET_UI_STATE";
144
145
  export const UPDATE_UPLOADED_FILES: "UPDATE_UPLOADED_FILES";
@@ -134,6 +134,12 @@ export function applySchemaDefaults({ data, schema, intl }: {
134
134
  * @return {Object} Derived data, with the defaults extracted from the schema
135
135
  */
136
136
  export function applyBlockDefaults({ data, intl, navRoot, contentType, ...rest }: any, blocksConfig: any): any;
137
+ /**
138
+ * Check if a block is a container block
139
+ * check blocks from data as well since some add-ons use that
140
+ * such as @eeacms/volto-tabs-block
141
+ */
142
+ export function isBlockContainer(block: any): boolean;
137
143
  /**
138
144
  * Given a `block` object and a list of block types, return a list of block ids matching the types
139
145
  *
@@ -142,6 +148,15 @@ export function applyBlockDefaults({ data, intl, navRoot, contentType, ...rest }
142
148
  * @return {Array} An array of block ids
143
149
  */
144
150
  export function findBlocks(blocks: any, types: any, result?: any[]): any[];
151
+ /**
152
+ * Move block to different location index within blocks_layout
153
+ * @function moveBlock
154
+ * @param {Object} formData Form data
155
+ * @param {number} source index within form blocks_layout items
156
+ * @param {number} destination index within form blocks_layout items
157
+ * @return {Object} New form data
158
+ */
159
+ export function moveBlockEnhanced(formData: any, { source, destination }: number): any;
145
160
  export function getBlocks(properties: any): any[];
146
161
  export function styleToClassName(key: any, value: any, prefix?: string): any;
147
162
  export function buildStyleClassNamesFromData(obj?: {}, prefix?: string): any;
@@ -149,3 +164,7 @@ export function buildStyleClassNamesExtenders({ block, content, data, classNames
149
164
  export function styleDataToStyleObject(key: any, value: any, prefix?: string): any[];
150
165
  export function buildStyleObjectFromData(obj?: any, prefix?: string): any;
151
166
  export function getPreviousNextBlock({ content, block }: any): any[];
167
+ export function getBlocksHierarchy(properties: any): any;
168
+ export function findContainer(formData: object, { containerId }: {
169
+ containerId: string;
170
+ }): object | undefined;
@@ -18,13 +18,13 @@ export { getWidgetView } from "./Widget/widget";
18
18
  export { getSiteAsyncPropExtender } from "./Site";
19
19
  export { ContentTypeCondition } from "./Slots";
20
20
  export { getAuthToken, persistAuthToken } from "@plone/volto/helpers/AuthToken/AuthToken";
21
- export { addAppURL, expandToBackendURL, flattenHTMLToAppURL, flattenToAppURL, stripQuerystring, toPublicURL, isInternalURL, getParentUrl, getBaseUrl, getView, isCmsUi, getId, isUrl, normalizeUrl, removeProtocol, URLUtils, flattenScales } from "@plone/volto/helpers/Url/Url";
21
+ export { addAppURL, expandToBackendURL, flattenHTMLToAppURL, flattenToAppURL, stripQuerystring, toPublicURL, isInternalURL, getParentUrl, getBaseUrl, getView, isCmsUi, getId, isUrl, normalizeUrl, removeProtocol, URLUtils, flattenScales, getFieldURL } from "@plone/volto/helpers/Url/Url";
22
22
  export { nestContent, getLayoutFieldname, getContentIcon, getLanguageIndependentFields } from "@plone/volto/helpers/Content/Content";
23
- export { addBlock, insertBlock, blockHasValue, changeBlock, deleteBlock, emptyBlocksForm, getBlocks, getBlocksFieldname, getBlocksLayoutFieldname, hasBlocksData, moveBlock, mutateBlock, nextBlockId, previousBlockId, applyBlockDefaults, applySchemaDefaults, blocksFormGenerator, buildStyleClassNamesFromData, buildStyleClassNamesExtenders, buildStyleObjectFromData, getPreviousNextBlock, findBlocks } from "@plone/volto/helpers/Blocks/Blocks";
23
+ export { addBlock, insertBlock, blockHasValue, changeBlock, deleteBlock, emptyBlocksForm, getBlocks, getBlocksFieldname, getBlocksLayoutFieldname, hasBlocksData, moveBlock, mutateBlock, nextBlockId, previousBlockId, applyBlockDefaults, applySchemaDefaults, blocksFormGenerator, buildStyleClassNamesFromData, buildStyleClassNamesExtenders, buildStyleObjectFromData, getPreviousNextBlock, findBlocks, getBlocksHierarchy, moveBlockEnhanced } from "@plone/volto/helpers/Blocks/Blocks";
24
24
  export { getSimpleDefaultBlocks, getDefaultBlocks } from "@plone/volto/helpers/Blocks/defaultBlocks";
25
25
  export { getBoolean, getVocabName, getVocabFromHint, getVocabFromField, getVocabFromItems, getFieldsVocabulary } from "@plone/volto/helpers/Vocabularies/Vocabularies";
26
26
  export { default as FormValidation, validateFileUploadSize, tryParseJSON } from "./FormValidation/FormValidation";
27
- export { difference, getColor, getInitials, safeWrapper, applyConfig, withServerErrorCode, parseDateTime, toGettextLang, normalizeLanguageName, toReactIntlLang, toLangUnderscoreRegion, toBackendLang, hasApiExpander, replaceItemOfArray, cloneDeepSchema, arrayRange, reorderArray, isInteractiveElement, slugify, normalizeString } from "@plone/volto/helpers/Utils/Utils";
27
+ export { difference, getColor, getInitials, safeWrapper, applyConfig, withServerErrorCode, parseDateTime, toGettextLang, normalizeLanguageName, toReactIntlLang, toLangUnderscoreRegion, toBackendLang, hasApiExpander, replaceItemOfArray, cloneDeepSchema, insertInArray, removeFromArray, arrayRange, reorderArray, isInteractiveElement, slugify, normalizeString } from "@plone/volto/helpers/Utils/Utils";
28
28
  export { withBlockSchemaEnhancer, withVariationSchemaEnhancer, withBlockExtensions, applySchemaEnhancer, resolveExtension, resolveBlockExtensions, addStyling, composeSchema } from "./Extensions";
29
29
  export { userHasRoles, isManager, canAssignGroup, canAssignRole } from "./User/User";
30
30
  export { getCurrentStateMapping, getWorkflowOptions } from "./Workflows/Workflows";