`/``).
+ return content;
+ }
return (
- {
- ref(element);
- if (element) {
- element.className = mergeCSSClasses(
- "bn-inline-content",
- element.className,
- );
- element.dataset.nodeViewContent = "";
- }
- }}
- />
+ {content}
);
},
@@ -318,8 +364,29 @@ export function createReactBlockSpec<
},
)(this.props!) as ReturnType;
} else {
+ const isContainer = !!editor.pmSchema.nodes[block.type]?.isInGroup(
+ "bnBlock",
+ );
const BlockContent = blockImplementation.render;
const output = renderToDOMSpec((refCB) => {
+ const content = (
+ {
+ refCB(element);
+ if (element && !isContainer) {
+ element.className = mergeCSSClasses(
+ "bn-inline-content",
+ element.className,
+ );
+ }
+ }}
+ />
+ );
+ if (isContainer) {
+ return content;
+ }
return (
- {
- refCB(element);
- if (element) {
- element.className = mergeCSSClasses(
- "bn-inline-content",
- element.className,
- );
- }
- }}
- />
+ {content}
);
}, editor);
diff --git a/packages/react/src/schema/__snapshots__/ReactBlockSpec.container.test.tsx.snap b/packages/react/src/schema/__snapshots__/ReactBlockSpec.container.test.tsx.snap
new file mode 100644
index 0000000000..810f3cc319
--- /dev/null
+++ b/packages/react/src/schema/__snapshots__/ReactBlockSpec.container.test.tsx.snap
@@ -0,0 +1,36 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`React updateBlock → container with defaultBlocks (document-level) > converts an empty paragraph to a callout via editor.updateBlock 1`] = `
+[
+ {
+ "children": [
+ {
+ "children": [],
+ "content": [],
+ "id": "1",
+ "props": {
+ "backgroundColor": "default",
+ "textAlignment": "left",
+ "textColor": "default",
+ },
+ "type": "paragraph",
+ },
+ ],
+ "content": undefined,
+ "id": "0",
+ "props": {},
+ "type": "callout",
+ },
+ {
+ "children": [],
+ "content": [],
+ "id": "trailing",
+ "props": {
+ "backgroundColor": "default",
+ "textAlignment": "left",
+ "textColor": "default",
+ },
+ "type": "paragraph",
+ },
+]
+`;
diff --git a/packages/xl-multi-column/src/blocks/Columns/index.ts b/packages/xl-multi-column/src/blocks/Columns/index.ts
index 2e49261ec6..1f55b5532a 100644
--- a/packages/xl-multi-column/src/blocks/Columns/index.ts
+++ b/packages/xl-multi-column/src/blocks/Columns/index.ts
@@ -1,22 +1,77 @@
+import {
+ createBlockSpec,
+ createBlockSpecFromTiptapNode,
+} from "@blocknote/core";
+
+import { ColumnResizeExtension } from "../../extensions/ColumnResize/ColumnResizeExtension.js";
import { MultiColumnDropHandlerExtension } from "../../extensions/DropCursor/multiColumnHandleDropPlugin.js";
-import { Column } from "../../pm-nodes/Column.js";
import { ColumnList } from "../../pm-nodes/ColumnList.js";
-import { createBlockSpecFromTiptapNode } from "@blocknote/core";
+// Why does each column have a default width of 1, i.e. 100%? Because when
+// creating a new column, we want to make sure that existing column widths are
+// preserved, while the new one also has a sensible width. If we set it so all
+// column widths must add up to 100% instead, then each time a new column is
+// created, we'd have to assign it a width depending on the total number of
+// columns and also adjust the widths of the others. The same can be said for
+// using px instead of percent widths and making them add to the editor width.
+// Using flex-grow on the value handles all the resizing for us, instead of
+// manually having to set `width` on each column.
+const COLUMN_WIDTH_DEFAULT = 1;
-export const ColumnBlock = createBlockSpecFromTiptapNode(
+export const ColumnBlock = createBlockSpec(
{
- node: Column,
- type: "column",
+ type: "column" as const,
+ propSchema: {
+ width: {
+ default: COLUMN_WIDTH_DEFAULT,
+ },
+ },
content: "none",
+ // Columns only ever live inside a `columnList` (whose content expression
+ // is `column column+`). `topLevel: false` keeps column out of the
+ // generic `blockGroupChild` group so it can't be inserted at the document
+ // root or as a child of any other block.
+ container: { topLevel: false },
},
{
- width: {
- default: 1,
+ render: (block) => {
+ const dom = document.createElement("div");
+ dom.className = "bn-block-column";
+ const width = block.props.width ?? COLUMN_WIDTH_DEFAULT;
+ dom.style.flexGrow = String(width);
+ dom.setAttribute("data-node-type", "column");
+ dom.setAttribute("data-id", block.id);
+ if (width !== COLUMN_WIDTH_DEFAULT) {
+ dom.setAttribute("data-width", String(width));
+ }
+
+ return {
+ dom,
+ contentDOM: dom,
+ update: (newNode: {
+ type: { name: string };
+ attrs: { id?: string; width?: number };
+ }) => {
+ if (newNode.type.name !== "column") {
+ return false;
+ }
+ const newWidth = newNode.attrs.width ?? COLUMN_WIDTH_DEFAULT;
+ dom.style.flexGrow = String(newWidth);
+ if (newWidth !== COLUMN_WIDTH_DEFAULT) {
+ dom.setAttribute("data-width", String(newWidth));
+ } else {
+ dom.removeAttribute("data-width");
+ }
+ if (newNode.attrs.id) {
+ dom.setAttribute("data-id", newNode.attrs.id);
+ }
+ return true;
+ },
+ };
},
},
- [MultiColumnDropHandlerExtension()],
-);
+ [MultiColumnDropHandlerExtension(), ColumnResizeExtension()],
+)();
export const ColumnListBlock = createBlockSpecFromTiptapNode(
{
diff --git a/packages/xl-multi-column/src/extensions/ColumnResize/ColumnResizeExtension.ts b/packages/xl-multi-column/src/extensions/ColumnResize/ColumnResizeExtension.ts
index 50d95c1292..46a24abdcb 100644
--- a/packages/xl-multi-column/src/extensions/ColumnResize/ColumnResizeExtension.ts
+++ b/packages/xl-multi-column/src/extensions/ColumnResize/ColumnResizeExtension.ts
@@ -1,6 +1,9 @@
-import { BlockNoteEditor, getNodeById } from "@blocknote/core";
+import {
+ BlockNoteEditor,
+ createExtension,
+ getNodeById,
+} from "@blocknote/core";
import { SideMenuExtension } from "@blocknote/core/extensions";
-import { Extension } from "@tiptap/core";
import { Node } from "prosemirror-model";
import { Plugin, PluginKey, PluginView } from "prosemirror-state";
import { Decoration, DecorationSet, EditorView } from "prosemirror-view";
@@ -356,12 +359,7 @@ const createColumnResizePlugin = (editor: BlockNoteEditor) =>
view: (view) => new ColumnResizePluginView(editor, view),
});
-export const createColumnResizeExtension = (
- editor: BlockNoteEditor,
-) =>
- Extension.create({
- name: "columnResize",
- addProseMirrorPlugins() {
- return [createColumnResizePlugin(editor)];
- },
- });
+export const ColumnResizeExtension = createExtension(({ editor }) => ({
+ key: "columnResize",
+ prosemirrorPlugins: [createColumnResizePlugin(editor)],
+}));
diff --git a/packages/xl-multi-column/src/pm-nodes/Column.ts b/packages/xl-multi-column/src/pm-nodes/Column.ts
deleted file mode 100644
index d527edfd2e..0000000000
--- a/packages/xl-multi-column/src/pm-nodes/Column.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-import { Node } from "@tiptap/core";
-
-import { createColumnResizeExtension } from "../extensions/ColumnResize/ColumnResizeExtension.js";
-
-export const Column = Node.create({
- name: "column",
- group: "bnBlock childContainer",
- // A block always contains content, and optionally a blockGroup which contains nested blocks
- content: "blockContainer+",
- priority: 40,
- defining: true,
- marks: "deletion insertion modification",
- addAttributes() {
- return {
- width: {
- // Why does each column have a default width of 1, i.e. 100%? Because
- // when creating a new column, we want to make sure that existing
- // column widths are preserved, while the new one also has a sensible
- // width. If we'd set it so all column widths must add up to 100%
- // instead, then each time a new column is created, we'd have to assign
- // it a width depending on the total number of columns and also adjust
- // the widths of the other columns. The same can be said for using px
- // instead of percent widths and making them add to the editor width. So
- // using this method is both simpler and computationally cheaper. This
- // is possible because we can set the `flex-grow` property to the width
- // value, which handles all the resizing for us, instead of manually
- // having to set the `width` property of each column.
- default: 1,
- parseHTML: (element) => {
- const attr = element.getAttribute("data-width");
- if (attr === null) {
- return null;
- }
-
- const parsed = parseFloat(attr);
- if (isFinite(parsed)) {
- return parsed;
- }
-
- return null;
- },
- renderHTML: (attributes) => {
- return {
- "data-width": (attributes.width as number).toString(),
- style: `flex-grow: ${attributes.width as number};`,
- };
- },
- },
- };
- },
-
- parseHTML() {
- return [
- {
- tag: "div",
- getAttrs: (element) => {
- if (typeof element === "string") {
- return false;
- }
-
- if (element.getAttribute("data-node-type") === this.name) {
- return {};
- }
-
- return false;
- },
- },
- ];
- },
-
- renderHTML({ HTMLAttributes }) {
- const column = document.createElement("div");
- column.className = "bn-block-column";
- column.setAttribute("data-node-type", this.name);
- for (const [attribute, value] of Object.entries(HTMLAttributes)) {
- column.setAttribute(attribute, value as any); // TODO as any
- }
-
- return {
- dom: column,
- contentDOM: column,
- };
- },
-
- addExtensions() {
- return [createColumnResizeExtension(this.options.editor)];
- },
-});
diff --git a/packages/xl-multi-column/src/test/conversions/__snapshots__/multi-column/undefined/external.html b/packages/xl-multi-column/src/test/conversions/__snapshots__/multi-column/undefined/external.html
index 2237513b6b..ec052ff27b 100644
--- a/packages/xl-multi-column/src/test/conversions/__snapshots__/multi-column/undefined/external.html
+++ b/packages/xl-multi-column/src/test/conversions/__snapshots__/multi-column/undefined/external.html
@@ -1 +1 @@
-Column Paragraph 0 Column Paragraph 1 Column Paragraph 2 Column Paragraph 3
\ No newline at end of file
+Column Paragraph 0 Column Paragraph 1 Column Paragraph 2 Column Paragraph 3
\ No newline at end of file
diff --git a/packages/xl-multi-column/src/test/conversions/__snapshots__/multi-column/undefined/internal.html b/packages/xl-multi-column/src/test/conversions/__snapshots__/multi-column/undefined/internal.html
index 5876b3bd03..ea4d3b437a 100644
--- a/packages/xl-multi-column/src/test/conversions/__snapshots__/multi-column/undefined/internal.html
+++ b/packages/xl-multi-column/src/test/conversions/__snapshots__/multi-column/undefined/internal.html
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/playground/src/examples.gen.tsx b/playground/src/examples.gen.tsx
index ae117ce392..ebeeffee18 100644
--- a/playground/src/examples.gen.tsx
+++ b/playground/src/examples.gen.tsx
@@ -1414,6 +1414,32 @@
},
"readme": "This example shows how you can configure the editor's default blocks. Specifically, heading blocks are made to only support levels 1-3, and cannot be toggleable.\n\n**Relevant Docs:**\n\n- [Editor Setup](/docs/getting-started/editor-setup)\n- [Default Schema](/docs/foundations/schemas)\n- [Custom Schemas](/docs/features/custom-schemas)"
},
+ {
+ "projectSlug": "container-block",
+ "fullSlug": "custom-schema/container-block",
+ "pathFromRoot": "examples/06-custom-schema/08-container-block",
+ "config": {
+ "playground": true,
+ "docs": true,
+ "author": "nickthesick",
+ "tags": [
+ "Intermediate",
+ "Blocks",
+ "Custom Schemas",
+ "Suggestion Menus",
+ "Slash Menu"
+ ],
+ "dependencies": {
+ "react-icons": "^5.5.0"
+ } as any
+ },
+ "title": "Container Block",
+ "group": {
+ "pathFromRoot": "examples/06-custom-schema",
+ "slug": "custom-schema"
+ },
+ "readme": "In this example, we create a custom `Callout` block that holds **other blocks** as its body — like a Notion-style callout that can wrap a paragraph followed by a code block, or any combination of nested blocks.\n\nThe block uses the new `container` config on `BlockConfig`. Setting `container: { defaultBlocks: [\"paragraph\"] }` (with `content: \"none\"`) tells BlockNote to emit a ProseMirror node that holds nested `blockContainer+` children — the same shape that columns use under the hood. The contained blocks live on `block.children` at runtime.\n\nWe also wire up a Slash Menu item to insert the callout, and render the document JSON next to the editor so you can inspect the structure of the nested blocks.\n\n**Try it out:**\n\n- Press the \"/\" key inside the callout's body and add a code block, heading, or list — anything goes.\n- Watch the JSON panel on the right update as you edit; the callout's children appear in `block.children`.\n- Insert a new callout via the Slash Menu (search \"callout\").\n\n**Relevant Docs:**\n\n- [Custom Blocks](/docs/features/custom-schemas/custom-blocks)\n- [Editor Setup](/docs/getting-started/editor-setup)"
+ },
{
"projectSlug": "non-editable-block",
"fullSlug": "custom-schema/non-editable-block",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 966cf9e887..0517592a12 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -3395,6 +3395,55 @@ importers:
specifier: ^8.0.8
version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)
+ examples/06-custom-schema/08-container-block:
+ dependencies:
+ '@blocknote/ariakit':
+ specifier: latest
+ version: link:../../../packages/ariakit
+ '@blocknote/core':
+ specifier: latest
+ version: link:../../../packages/core
+ '@blocknote/mantine':
+ specifier: latest
+ version: link:../../../packages/mantine
+ '@blocknote/react':
+ specifier: latest
+ version: link:../../../packages/react
+ '@blocknote/shadcn':
+ specifier: latest
+ version: link:../../../packages/shadcn
+ '@mantine/core':
+ specifier: ^8.3.11
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ '@mantine/hooks':
+ specifier: ^8.3.11
+ version: 8.3.18(react@19.2.5)
+ '@mantine/utils':
+ specifier: ^6.0.22
+ version: 6.0.22(react@19.2.5)
+ react:
+ specifier: ^19.2.3
+ version: 19.2.5
+ react-dom:
+ specifier: ^19.2.3
+ version: 19.2.5(react@19.2.5)
+ react-icons:
+ specifier: ^5.5.0
+ version: 5.6.0(react@19.2.5)
+ devDependencies:
+ '@types/react':
+ specifier: ^19.2.3
+ version: 19.2.14
+ '@types/react-dom':
+ specifier: ^19.2.3
+ version: 19.2.3(@types/react@19.2.14)
+ '@vitejs/plugin-react':
+ specifier: ^6.0.1
+ version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))
+ vite:
+ specifier: ^8.0.8
+ version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)
+
examples/06-custom-schema/08-non-editable-block:
dependencies:
'@blocknote/ariakit':
@@ -24078,8 +24127,8 @@ snapshots:
'@next/eslint-plugin-next': 16.2.2
eslint: 9.39.4(jiti@2.6.1)
eslint-import-resolver-node: 0.3.10
- eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1))
eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.4(jiti@2.6.1))
@@ -24128,7 +24177,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
@@ -24139,7 +24188,7 @@ snapshots:
tinyglobby: 0.2.16
unrs-resolver: 1.11.1
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
@@ -24153,14 +24202,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
'@typescript-eslint/parser': 8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)
eslint: 9.39.4(jiti@2.6.1)
eslint-import-resolver-node: 0.3.10
- eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
@@ -24201,7 +24250,7 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -24212,7 +24261,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.39.4(jiti@2.6.1)
eslint-import-resolver-node: 0.3.10
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
diff --git a/tests/nextjs-test-app/package.json b/tests/nextjs-test-app/package.json
index f4f81ae9f7..d0098c1e75 100644
--- a/tests/nextjs-test-app/package.json
+++ b/tests/nextjs-test-app/package.json
@@ -3,10 +3,10 @@
"private": true,
"version": "0.0.0",
"dependencies": {
- "@blocknote/core": "file:.tarballs/blocknote-core-0.48.1.tgz",
- "@blocknote/mantine": "file:.tarballs/blocknote-mantine-0.48.1.tgz",
- "@blocknote/react": "file:.tarballs/blocknote-react-0.48.1.tgz",
- "@blocknote/server-util": "file:.tarballs/blocknote-server-util-0.48.1.tgz",
+ "@blocknote/core": "file:.tarballs/blocknote-core-0.49.0.tgz",
+ "@blocknote/mantine": "file:.tarballs/blocknote-mantine-0.49.0.tgz",
+ "@blocknote/react": "file:.tarballs/blocknote-react-0.49.0.tgz",
+ "@blocknote/server-util": "file:.tarballs/blocknote-server-util-0.49.0.tgz",
"@mantine/core": "^8.3.11",
"@mantine/hooks": "^8.3.11",
"next": "^16.0.0",
diff --git a/tests/src/unit/core/schema/__snapshots__/blocks.json b/tests/src/unit/core/schema/__snapshots__/blocks.json
index 142a5e7771..22d2a856b6 100644
--- a/tests/src/unit/core/schema/__snapshots__/blocks.json
+++ b/tests/src/unit/core/schema/__snapshots__/blocks.json
@@ -1,6 +1,7 @@
{
"audio": {
"config": {
+ "container": undefined,
"content": "none",
"propSchema": {
"backgroundColor": {
@@ -39,6 +40,7 @@
},
"bulletListItem": {
"config": {
+ "container": undefined,
"content": "inline",
"propSchema": {
"backgroundColor": {
@@ -75,6 +77,7 @@
},
"checkListItem": {
"config": {
+ "container": undefined,
"content": "inline",
"propSchema": {
"backgroundColor": {
@@ -118,6 +121,7 @@
},
"codeBlock": {
"config": {
+ "container": undefined,
"content": "inline",
"propSchema": {
"language": {
@@ -145,6 +149,7 @@
},
"customParagraph": {
"config": {
+ "container": undefined,
"content": "inline",
"propSchema": {
"backgroundColor": {
@@ -175,6 +180,7 @@
},
"divider": {
"config": {
+ "container": undefined,
"content": "none",
"propSchema": {},
"type": "divider",
@@ -194,6 +200,7 @@
},
"file": {
"config": {
+ "container": undefined,
"content": "none",
"propSchema": {
"backgroundColor": {
@@ -226,6 +233,7 @@
},
"heading": {
"config": {
+ "container": undefined,
"content": "inline",
"propSchema": {
"backgroundColor": {
@@ -280,6 +288,7 @@
},
"image": {
"config": {
+ "container": undefined,
"content": "none",
"propSchema": {
"backgroundColor": {
@@ -331,6 +340,7 @@
},
"numberedListItem": {
"config": {
+ "container": undefined,
"content": "inline",
"propSchema": {
"backgroundColor": {
@@ -371,6 +381,7 @@
},
"pageBreak": {
"config": {
+ "container": undefined,
"content": "none",
"propSchema": {},
"type": "pageBreak",
@@ -385,6 +396,7 @@
},
"paragraph": {
"config": {
+ "container": undefined,
"content": "inline",
"propSchema": {
"backgroundColor": {
@@ -424,6 +436,7 @@
},
"quote": {
"config": {
+ "container": undefined,
"content": "inline",
"propSchema": {
"backgroundColor": {
@@ -450,6 +463,7 @@
},
"simpleCustomParagraph": {
"config": {
+ "container": undefined,
"content": "inline",
"propSchema": {
"backgroundColor": {
@@ -479,6 +493,7 @@
},
"simpleImage": {
"config": {
+ "container": undefined,
"content": "none",
"propSchema": {
"backgroundColor": {
@@ -521,6 +536,7 @@
},
"table": {
"config": {
+ "container": undefined,
"content": "table",
"propSchema": {
"textColor": {
@@ -541,6 +557,7 @@
},
"toggleListItem": {
"config": {
+ "container": undefined,
"content": "inline",
"propSchema": {
"backgroundColor": {
@@ -580,6 +597,7 @@
},
"video": {
"config": {
+ "container": undefined,
"content": "none",
"propSchema": {
"backgroundColor": {
|