@blocknote/xl-multi-column 0.27.2 → 0.29.0
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/dist/blocknote-xl-multi-column.cjs +1 -1
- package/dist/blocknote-xl-multi-column.cjs.map +1 -1
- package/dist/blocknote-xl-multi-column.js +17 -26
- package/dist/blocknote-xl-multi-column.js.map +1 -1
- package/dist/webpack-stats.json +1 -1
- package/package.json +4 -4
- package/src/extensions/DropCursor/MultiColumnDropCursorPlugin.ts +4 -13
- package/src/i18n/locales/de.ts +2 -2
- package/src/test/commands/updateBlock.test.ts +2 -2
- package/src/test/conversions/formatConversionTestUtil.ts +197 -0
- package/src/test/conversions/htmlConversion.test.ts +4 -2
- package/src/test/conversions/nodeConversion.test.ts +3 -8
- package/src/test/conversions/testCases.ts +3 -6
- package/types/src/test/conversions/formatConversionTestUtil.d.ts +5 -0
- package/types/src/test/conversions/testCases.d.ts +1 -3
package/dist/webpack-stats.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"builtAt":
|
|
1
|
+
{"builtAt":1744903044704,"assets":[{"name":"blocknote-xl-multi-column.cjs","size":20482},{"name":"blocknote-xl-multi-column.cjs.map","size":3791822}],"chunks":[{"id":"a1ee98a","entry":true,"initial":true,"files":["blocknote-xl-multi-column.cjs"],"names":["blocknote-xl-multi-column"]}],"modules":[{"name":"./src/i18n/locales/ar.ts","size":364,"chunks":["a1ee98a"]},{"name":"./src/i18n/locales/de.ts","size":400,"chunks":["a1ee98a"]},{"name":"./src/i18n/locales/en.ts","size":378,"chunks":["a1ee98a"]},{"name":"./src/i18n/locales/es.ts","size":392,"chunks":["a1ee98a"]},{"name":"./src/i18n/locales/fr.ts","size":398,"chunks":["a1ee98a"]},{"name":"./src/i18n/locales/hr.ts","size":396,"chunks":["a1ee98a"]},{"name":"./src/i18n/locales/is.ts","size":376,"chunks":["a1ee98a"]},{"name":"./src/i18n/locales/ja.ts","size":284,"chunks":["a1ee98a"]},{"name":"./src/i18n/locales/ko.ts","size":288,"chunks":["a1ee98a"]},{"name":"./src/i18n/locales/nl.ts","size":390,"chunks":["a1ee98a"]},{"name":"./src/i18n/locales/pl.ts","size":394,"chunks":["a1ee98a"]},{"name":"./src/i18n/locales/pt.ts","size":388,"chunks":["a1ee98a"]},{"name":"./src/i18n/locales/ru.ts","size":370,"chunks":["a1ee98a"]},{"name":"./src/i18n/locales/vi.ts","size":340,"chunks":["a1ee98a"]},{"name":"./src/i18n/locales/zh.ts","size":274,"chunks":["a1ee98a"]},{"name":"./src/i18n/locales/index.ts","size":0,"chunks":["a1ee98a"]},{"name":"./src/i18n/dictionary.ts","size":189,"chunks":["a1ee98a"]},{"name":"./src/extensions/ColumnResize/ColumnResizeExtension.ts","size":8309,"chunks":["a1ee98a"]},{"name":"./src/pm-nodes/Column.ts","size":2567,"chunks":["a1ee98a"]},{"name":"./src/pm-nodes/ColumnList.ts","size":1120,"chunks":["a1ee98a"]},{"name":"./src/blocks/Columns/index.ts","size":210,"chunks":["a1ee98a"]},{"name":"./src/blocks/schema.ts","size":425,"chunks":["a1ee98a"]},{"name":"./src/extensions/DropCursor/MultiColumnDropCursorPlugin.ts","size":11715,"chunks":["a1ee98a"]},{"name":"../../node_modules/.pnpm/react-icons@5.5.0_react@18.3.1/node_modules/react-icons/lib/iconContext.mjs","size":251,"chunks":["a1ee98a"]},{"name":"../../node_modules/.pnpm/react-icons@5.5.0_react@18.3.1/node_modules/react-icons/lib/iconBase.mjs","size":4003,"chunks":["a1ee98a"]},{"name":"../../node_modules/.pnpm/react-icons@5.5.0_react@18.3.1/node_modules/react-icons/tb/index.mjs","size":708,"chunks":["a1ee98a"]},{"name":"./src/extensions/SuggestionMenu/getMultiColumnSlashMenuItems.tsx","size":2073,"chunks":["a1ee98a"]},{"name":"./src/index.ts","size":0,"chunks":["a1ee98a"]}]}
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"directory": "packages/xl-multi-column"
|
|
10
10
|
},
|
|
11
11
|
"license": "AGPL-3.0 OR PROPRIETARY",
|
|
12
|
-
"version": "0.
|
|
12
|
+
"version": "0.29.0",
|
|
13
13
|
"files": [
|
|
14
14
|
"dist",
|
|
15
15
|
"types",
|
|
@@ -42,15 +42,15 @@
|
|
|
42
42
|
}
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@blocknote/core": "^0.27.2",
|
|
46
|
-
"@blocknote/react": "^0.27.2",
|
|
47
45
|
"@tiptap/core": "^2.7.1",
|
|
48
46
|
"prosemirror-model": "^1.23.0",
|
|
49
47
|
"prosemirror-state": "^1.4.3",
|
|
50
48
|
"prosemirror-tables": "^1.3.7",
|
|
51
49
|
"prosemirror-transform": "^1.9.0",
|
|
52
50
|
"prosemirror-view": "^1.38.1",
|
|
53
|
-
"react-icons": "^5.2.1"
|
|
51
|
+
"react-icons": "^5.2.1",
|
|
52
|
+
"@blocknote/core": "^0.29.0",
|
|
53
|
+
"@blocknote/react": "^0.29.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@types/react": "^18.3.1",
|
|
@@ -80,9 +80,7 @@ export function multiColumnDropCursor(
|
|
|
80
80
|
|
|
81
81
|
const draggedBlock = nodeToBlock(
|
|
82
82
|
slice.content.child(0),
|
|
83
|
-
editor.
|
|
84
|
-
editor.schema.inlineContentSchema,
|
|
85
|
-
editor.schema.styleSchema
|
|
83
|
+
editor.pmSchema
|
|
86
84
|
// TODO: cache?
|
|
87
85
|
);
|
|
88
86
|
|
|
@@ -93,11 +91,9 @@ export function multiColumnDropCursor(
|
|
|
93
91
|
.resolve(blockInfo.bnBlock.beforePos)
|
|
94
92
|
.node();
|
|
95
93
|
|
|
96
|
-
const columnList = nodeToBlock(
|
|
94
|
+
const columnList = nodeToBlock<any, any, any>(
|
|
97
95
|
parentBlock,
|
|
98
|
-
editor.
|
|
99
|
-
editor.schema.inlineContentSchema,
|
|
100
|
-
editor.schema.styleSchema
|
|
96
|
+
editor.pmSchema
|
|
101
97
|
);
|
|
102
98
|
|
|
103
99
|
// In a `columnList`, we expect that the average width of each column
|
|
@@ -156,12 +152,7 @@ export function multiColumnDropCursor(
|
|
|
156
152
|
});
|
|
157
153
|
} else {
|
|
158
154
|
// create new columnList with blocks as columns
|
|
159
|
-
const block = nodeToBlock(
|
|
160
|
-
blockInfo.bnBlock.node,
|
|
161
|
-
editor.schema.blockSchema,
|
|
162
|
-
editor.schema.inlineContentSchema,
|
|
163
|
-
editor.schema.styleSchema
|
|
164
|
-
);
|
|
155
|
+
const block = nodeToBlock(blockInfo.bnBlock.node, editor.pmSchema);
|
|
165
156
|
|
|
166
157
|
// The user is dropping next to the original block being dragged - do
|
|
167
158
|
// nothing.
|
package/src/i18n/locales/de.ts
CHANGED
|
@@ -6,13 +6,13 @@ export const de: MultiColumnDictionary = {
|
|
|
6
6
|
title: "Zwei Spalten",
|
|
7
7
|
subtext: "Zwei Spalten nebeneinander",
|
|
8
8
|
aliases: ["Spalten", "Reihe", "teilen"],
|
|
9
|
-
group: "Grundlegende
|
|
9
|
+
group: "Grundlegende Blöcke",
|
|
10
10
|
},
|
|
11
11
|
three_columns: {
|
|
12
12
|
title: "Drei Spalten",
|
|
13
13
|
subtext: "Drei Spalten nebeneinander",
|
|
14
14
|
aliases: ["Spalten", "Reihe", "teilen"],
|
|
15
|
-
group: "Grundlegende
|
|
15
|
+
group: "Grundlegende Blöcke",
|
|
16
16
|
},
|
|
17
17
|
},
|
|
18
18
|
};
|
|
@@ -147,7 +147,7 @@ describe("Test updateBlock", () => {
|
|
|
147
147
|
}).toThrow();
|
|
148
148
|
});
|
|
149
149
|
|
|
150
|
-
it("Update paragraph to column", () => {
|
|
150
|
+
it.skip("Update paragraph to column", () => {
|
|
151
151
|
getEditor().updateBlock("paragraph-0", {
|
|
152
152
|
type: "column",
|
|
153
153
|
children: [
|
|
@@ -161,7 +161,7 @@ describe("Test updateBlock", () => {
|
|
|
161
161
|
expect(getEditor().document).toMatchSnapshot();
|
|
162
162
|
});
|
|
163
163
|
|
|
164
|
-
it("Update nested paragraph to column", () => {
|
|
164
|
+
it.skip("Update nested paragraph to column", () => {
|
|
165
165
|
getEditor().updateBlock("nested-paragraph-0", {
|
|
166
166
|
type: "column",
|
|
167
167
|
children: [
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Block,
|
|
3
|
+
BlockNoteSchema,
|
|
4
|
+
BlockSchema,
|
|
5
|
+
InlineContent,
|
|
6
|
+
InlineContentSchema,
|
|
7
|
+
isPartialLinkInlineContent,
|
|
8
|
+
isStyledTextInlineContent,
|
|
9
|
+
PartialBlock,
|
|
10
|
+
PartialInlineContent,
|
|
11
|
+
PartialTableCell,
|
|
12
|
+
StyledText,
|
|
13
|
+
StyleSchema,
|
|
14
|
+
TableCell,
|
|
15
|
+
TableContent,
|
|
16
|
+
UniqueID,
|
|
17
|
+
} from "@blocknote/core";
|
|
18
|
+
|
|
19
|
+
function textShorthandToStyledText(
|
|
20
|
+
content: string | StyledText<any>[] = ""
|
|
21
|
+
): StyledText<any>[] {
|
|
22
|
+
if (typeof content === "string") {
|
|
23
|
+
return [
|
|
24
|
+
{
|
|
25
|
+
type: "text",
|
|
26
|
+
text: content,
|
|
27
|
+
styles: {},
|
|
28
|
+
},
|
|
29
|
+
];
|
|
30
|
+
}
|
|
31
|
+
return content;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function partialContentToInlineContent(
|
|
35
|
+
content:
|
|
36
|
+
| PartialInlineContent<any, any>
|
|
37
|
+
| PartialTableCell<any, any>
|
|
38
|
+
| TableContent<any>
|
|
39
|
+
| undefined
|
|
40
|
+
):
|
|
41
|
+
| InlineContent<any, any>[]
|
|
42
|
+
| TableContent<any>
|
|
43
|
+
| TableCell<any, any>
|
|
44
|
+
| undefined {
|
|
45
|
+
if (typeof content === "string") {
|
|
46
|
+
return textShorthandToStyledText(content);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (Array.isArray(content)) {
|
|
50
|
+
return content.flatMap((partialContent) => {
|
|
51
|
+
if (typeof partialContent === "string") {
|
|
52
|
+
return textShorthandToStyledText(partialContent);
|
|
53
|
+
} else if (isPartialLinkInlineContent(partialContent)) {
|
|
54
|
+
return {
|
|
55
|
+
...partialContent,
|
|
56
|
+
content: textShorthandToStyledText(partialContent.content),
|
|
57
|
+
};
|
|
58
|
+
} else if (isStyledTextInlineContent(partialContent)) {
|
|
59
|
+
return partialContent;
|
|
60
|
+
} else {
|
|
61
|
+
// custom inline content
|
|
62
|
+
|
|
63
|
+
return {
|
|
64
|
+
props: {},
|
|
65
|
+
...partialContent,
|
|
66
|
+
content: partialContentToInlineContent(partialContent.content),
|
|
67
|
+
} as any;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
} else if (content?.type === "tableContent") {
|
|
71
|
+
return {
|
|
72
|
+
type: "tableContent",
|
|
73
|
+
columnWidths: content.columnWidths,
|
|
74
|
+
headerRows: content.headerRows,
|
|
75
|
+
headerCols: content.headerCols,
|
|
76
|
+
rows: content.rows.map((row) => ({
|
|
77
|
+
...row,
|
|
78
|
+
cells: row.cells.map(
|
|
79
|
+
(cell) => partialContentToInlineContent(cell) as any
|
|
80
|
+
),
|
|
81
|
+
})),
|
|
82
|
+
};
|
|
83
|
+
} else if (content?.type === "tableCell") {
|
|
84
|
+
return {
|
|
85
|
+
type: "tableCell",
|
|
86
|
+
content: partialContentToInlineContent(content.content) as any[],
|
|
87
|
+
props: {
|
|
88
|
+
backgroundColor: content.props?.backgroundColor ?? "default",
|
|
89
|
+
textColor: content.props?.textColor ?? "default",
|
|
90
|
+
textAlignment: content.props?.textAlignment ?? "left",
|
|
91
|
+
colspan: content.props?.colspan ?? 1,
|
|
92
|
+
rowspan: content.props?.rowspan ?? 1,
|
|
93
|
+
},
|
|
94
|
+
} satisfies TableCell<any, any>;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return content;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export function partialBlocksToBlocksForTesting<
|
|
101
|
+
BSchema extends BlockSchema,
|
|
102
|
+
I extends InlineContentSchema,
|
|
103
|
+
S extends StyleSchema
|
|
104
|
+
>(
|
|
105
|
+
schema: BlockNoteSchema<BSchema, I, S>,
|
|
106
|
+
partialBlocks: Array<PartialBlock<NoInfer<BSchema>, NoInfer<I>, NoInfer<S>>>
|
|
107
|
+
): Array<Block<BSchema, I, S>> {
|
|
108
|
+
return partialBlocks.map((partialBlock) =>
|
|
109
|
+
partialBlockToBlockForTesting(schema.blockSchema, partialBlock)
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export function partialBlockToBlockForTesting<
|
|
114
|
+
BSchema extends BlockSchema,
|
|
115
|
+
I extends InlineContentSchema,
|
|
116
|
+
S extends StyleSchema
|
|
117
|
+
>(
|
|
118
|
+
schema: BSchema,
|
|
119
|
+
partialBlock: PartialBlock<BSchema, I, S>
|
|
120
|
+
): Block<BSchema, I, S> {
|
|
121
|
+
const contentType: "inline" | "table" | "none" =
|
|
122
|
+
schema[partialBlock.type!].content;
|
|
123
|
+
|
|
124
|
+
const withDefaults: Block<BSchema, I, S> = {
|
|
125
|
+
id: "",
|
|
126
|
+
type: partialBlock.type!,
|
|
127
|
+
props: {} as any,
|
|
128
|
+
content:
|
|
129
|
+
contentType === "inline"
|
|
130
|
+
? []
|
|
131
|
+
: contentType === "table"
|
|
132
|
+
? {
|
|
133
|
+
type: "tableContent",
|
|
134
|
+
columnWidths: undefined,
|
|
135
|
+
headerRows: undefined,
|
|
136
|
+
headerCols: undefined,
|
|
137
|
+
rows: [],
|
|
138
|
+
}
|
|
139
|
+
: (undefined as any),
|
|
140
|
+
children: [] as any,
|
|
141
|
+
...partialBlock,
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
Object.entries(schema[partialBlock.type!].propSchema).forEach(
|
|
145
|
+
([propKey, propValue]) => {
|
|
146
|
+
if (
|
|
147
|
+
withDefaults.props[propKey] === undefined &&
|
|
148
|
+
propValue.default !== undefined
|
|
149
|
+
) {
|
|
150
|
+
(withDefaults.props as any)[propKey] = propValue.default;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
);
|
|
154
|
+
|
|
155
|
+
if (contentType === "inline") {
|
|
156
|
+
const content = withDefaults.content as InlineContent<I, S>[] | undefined;
|
|
157
|
+
withDefaults.content = partialContentToInlineContent(content) as any;
|
|
158
|
+
} else if (contentType === "table") {
|
|
159
|
+
const content = withDefaults.content as TableContent<I, S> | undefined;
|
|
160
|
+
withDefaults.content = {
|
|
161
|
+
type: "tableContent",
|
|
162
|
+
columnWidths:
|
|
163
|
+
content?.columnWidths ||
|
|
164
|
+
content?.rows[0]?.cells.map(() => undefined) ||
|
|
165
|
+
[],
|
|
166
|
+
headerRows: content?.headerRows || undefined,
|
|
167
|
+
headerCols: content?.headerCols || undefined,
|
|
168
|
+
rows:
|
|
169
|
+
content?.rows.map((row) => ({
|
|
170
|
+
cells: row.cells.map((cell) => partialContentToInlineContent(cell)),
|
|
171
|
+
})) || [],
|
|
172
|
+
} as any;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
return {
|
|
176
|
+
...withDefaults,
|
|
177
|
+
content: partialContentToInlineContent(withDefaults.content),
|
|
178
|
+
children: withDefaults.children.map((c) => {
|
|
179
|
+
return partialBlockToBlockForTesting(schema, c);
|
|
180
|
+
}),
|
|
181
|
+
} as any;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export function addIdsToBlock(block: PartialBlock<any, any, any>) {
|
|
185
|
+
if (!block.id) {
|
|
186
|
+
block.id = UniqueID.options.generateID();
|
|
187
|
+
}
|
|
188
|
+
if (block.children) {
|
|
189
|
+
addIdsToBlocks(block.children);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
export function addIdsToBlocks(blocks: PartialBlock<any, any, any>[]) {
|
|
194
|
+
for (const block of blocks) {
|
|
195
|
+
addIdsToBlock(block);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
@@ -6,13 +6,15 @@ import {
|
|
|
6
6
|
InlineContentSchema,
|
|
7
7
|
PartialBlock,
|
|
8
8
|
StyleSchema,
|
|
9
|
-
addIdsToBlocks,
|
|
10
9
|
createExternalHTMLExporter,
|
|
11
10
|
createInternalHTMLSerializer,
|
|
12
|
-
partialBlocksToBlocksForTesting,
|
|
13
11
|
} from "@blocknote/core";
|
|
14
12
|
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
15
13
|
|
|
14
|
+
import {
|
|
15
|
+
addIdsToBlocks,
|
|
16
|
+
partialBlocksToBlocksForTesting,
|
|
17
|
+
} from "./formatConversionTestUtil.js";
|
|
16
18
|
import { multiColumnSchemaTestCases } from "./testCases.js";
|
|
17
19
|
|
|
18
20
|
// TODO: code same from @blocknote/core, maybe create separate test util package
|
|
@@ -6,9 +6,9 @@ import {
|
|
|
6
6
|
UniqueID,
|
|
7
7
|
blockToNode,
|
|
8
8
|
nodeToBlock,
|
|
9
|
-
partialBlockToBlockForTesting,
|
|
10
9
|
} from "@blocknote/core";
|
|
11
10
|
|
|
11
|
+
import { partialBlockToBlockForTesting } from "./formatConversionTestUtil.js";
|
|
12
12
|
import { multiColumnSchemaTestCases } from "./testCases.js";
|
|
13
13
|
|
|
14
14
|
function addIdsToBlock(block: PartialBlock<any, any, any>) {
|
|
@@ -25,16 +25,11 @@ function validateConversion(
|
|
|
25
25
|
editor: BlockNoteEditor<any, any, any>
|
|
26
26
|
) {
|
|
27
27
|
addIdsToBlock(block);
|
|
28
|
-
const node = blockToNode(block, editor.pmSchema
|
|
28
|
+
const node = blockToNode(block, editor.pmSchema);
|
|
29
29
|
|
|
30
30
|
expect(node).toMatchSnapshot();
|
|
31
31
|
|
|
32
|
-
const outputBlock = nodeToBlock(
|
|
33
|
-
node,
|
|
34
|
-
editor.schema.blockSchema,
|
|
35
|
-
editor.schema.inlineContentSchema,
|
|
36
|
-
editor.schema.styleSchema
|
|
37
|
-
);
|
|
32
|
+
const outputBlock = nodeToBlock(node, editor.pmSchema);
|
|
38
33
|
|
|
39
34
|
const fullOriginalBlock = partialBlockToBlockForTesting(
|
|
40
35
|
editor.schema.blockSchema,
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import { BlockNoteEditor
|
|
1
|
+
import { BlockNoteEditor } from "@blocknote/core";
|
|
2
2
|
|
|
3
3
|
import { testEditorSchema } from "../setupTestEnv.js";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
typeof testEditorSchema.inlineContentSchema,
|
|
8
|
-
typeof testEditorSchema.styleSchema
|
|
9
|
-
> = {
|
|
5
|
+
// TODO
|
|
6
|
+
export const multiColumnSchemaTestCases: any = {
|
|
10
7
|
name: "multi-column-schema",
|
|
11
8
|
createEditor: () => {
|
|
12
9
|
return BlockNoteEditor.create({
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Block, BlockNoteSchema, BlockSchema, InlineContentSchema, PartialBlock, StyleSchema } from "@blocknote/core";
|
|
2
|
+
export declare function partialBlocksToBlocksForTesting<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(schema: BlockNoteSchema<BSchema, I, S>, partialBlocks: Array<PartialBlock<NoInfer<BSchema>, NoInfer<I>, NoInfer<S>>>): Array<Block<BSchema, I, S>>;
|
|
3
|
+
export declare function partialBlockToBlockForTesting<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(schema: BSchema, partialBlock: PartialBlock<BSchema, I, S>): Block<BSchema, I, S>;
|
|
4
|
+
export declare function addIdsToBlock(block: PartialBlock<any, any, any>): void;
|
|
5
|
+
export declare function addIdsToBlocks(blocks: PartialBlock<any, any, any>[]): void;
|
|
@@ -1,3 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { testEditorSchema } from "../setupTestEnv.js";
|
|
3
|
-
export declare const multiColumnSchemaTestCases: EditorTestCases<typeof testEditorSchema.blockSchema, typeof testEditorSchema.inlineContentSchema, typeof testEditorSchema.styleSchema>;
|
|
1
|
+
export declare const multiColumnSchemaTestCases: any;
|