Skip to content

Commit 26c707d

Browse files
committed
Merge branch 'table-html-export-fix' of github.com:TypeCellOS/BlockNote into table-html-export-fix
2 parents 43aea59 + 6113a1c commit 26c707d

File tree

104 files changed

+3665
-1930
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

104 files changed

+3665
-1930
lines changed

CHANGELOG.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,38 @@
1+
## 0.36.0 (2025-08-25)
2+
3+
### 🚀 Features
4+
5+
- **docx:** add locale configuration for docx export ([#1937](https://github.com/TypeCellOS/BlockNote/pull/1937))
6+
7+
### 🩹 Fixes
8+
9+
- Editors in comments not inheriting theme ([#1890](https://github.com/TypeCellOS/BlockNote/pull/1890))
10+
- Minor drag & drop changes ([#1891](https://github.com/TypeCellOS/BlockNote/pull/1891))
11+
- Overflow on table blocks ([#1892](https://github.com/TypeCellOS/BlockNote/pull/1892))
12+
- Suggestion menu closing when clicking scroll bar ([#1899](https://github.com/TypeCellOS/BlockNote/pull/1899))
13+
- Table padding ([#1906](https://github.com/TypeCellOS/BlockNote/pull/1906))
14+
- Formatting toolbar getting wrong bounding box when updating React inline content ([#1908](https://github.com/TypeCellOS/BlockNote/pull/1908))
15+
- Vanilla blocks return true for editor.isEditable on initial render ([#1925](https://github.com/TypeCellOS/BlockNote/pull/1925))
16+
- table cell menu styling ([#1945](https://github.com/TypeCellOS/BlockNote/pull/1945))
17+
- Missing internationalization for toggle wrapper ([#1946](https://github.com/TypeCellOS/BlockNote/pull/1946))
18+
- parse image alt text for image blocks ([#1883](https://github.com/TypeCellOS/BlockNote/pull/1883))
19+
- initialize esm deps before copy extension uses it ([#1951](https://github.com/TypeCellOS/BlockNote/pull/1951))
20+
- error when dragging a block from one editor to another with multiple column extension ([#1950](https://github.com/TypeCellOS/BlockNote/pull/1950))
21+
- prevent infinite render loop when selecting all content ([#1956](https://github.com/TypeCellOS/BlockNote/pull/1956))
22+
- **core:** maintain text selection across table updates ([#1894](https://github.com/TypeCellOS/BlockNote/pull/1894))
23+
- **locales:** ko locale fix ([#1902](https://github.com/TypeCellOS/BlockNote/pull/1902))
24+
- **react:** add data attribute for correct react rendering ([#1954](https://github.com/TypeCellOS/BlockNote/pull/1954))
25+
- **xl-email-exporter:** better defaults, customize textStyles, output inline styles ([#1856](https://github.com/TypeCellOS/BlockNote/pull/1856))
26+
27+
### ❤️ Thank You
28+
29+
- Brad Greenlee
30+
- Cyril G @Ovgodd
31+
- Héctor Zhuang @Hector-Zhuang
32+
- Matthew Lipski @matthewlipski
33+
- Nick Perez
34+
- Nick the Sick
35+
136
## 0.35.0 (2025-07-25)
237

338
### 🚀 Features

LICENSE.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ BlockNote is 100% Open Source Software.
22

33
Source code in this repository is covered by the "Mozilla Public License Version 2.0" (MPL-2.0) license, except for the XL packages. The MPL-2.0 license allows you to use BlockNote in commercial (and closed-source) applications. If you make changes to the BlockNote source files, you're expected to publish these changes so the wider community can benefit as well.
44

5-
The XL packages (source code in the `packages/xl-*` directories and published in NPM as `@blocknote/xl-*`) are licensed under the "GNU Affero General Public License Version 3" (AGPL-3.0). Additionally, a commercial license is available. See our website (https://www.blocknotejs.org/pricing) for more information and the commercial license terms.
5+
The XL packages (source code in the `packages/xl-*` directories and published in NPM as `@blocknote/xl-*`) are licensed under the "GNU General Public License Version 3" (GPL-3.0). Additionally, a commercial license is available. See our website (https://www.blocknotejs.org/pricing) for more information and the commercial license terms.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ The codebase is automatically tested using Vitest and Playwright.
9090

9191
BlockNote is 100% Open Source Software. The majority of BlockNote is licensed under the [MPL-2.0 license](LICENSE-MPL.txt), which allows you to use BlockNote in commercial (and closed-source) applications. If you make changes to the BlockNote source files, you're expected to publish these changes so the wider community can benefit as well. [Learn more](https://fossa.com/blog/open-source-software-licenses-101-mozilla-public-license-2-0/).
9292

93-
The XL packages (source code in the `packages/xl-*` directories and published in NPM as `@blocknote/xl-*`) are licensed under the AGPL-3.0. If you cannot comply with this license and want to use the XL libraries, you'll need a commercial license. Refer to [our website](https://www.blocknotejs.org/pricing) for more information.
93+
The XL packages (source code in the `packages/xl-*` directories and published in NPM as `@blocknote/xl-*`) are licensed under the GPL-3.0. If you cannot comply with this license and want to use the XL libraries, you'll need a commercial license. Refer to [our website](https://www.blocknotejs.org/pricing) for more information.
9494

9595
# Credits ❤️
9696

docs/app/pricing/faq.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const faqs = [
1818
<br />
1919
The XL packages (like AI integration, multi-column layouts, and
2020
exporters) are dual-licensed and available under{" "}
21-
<a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0</a>, or -
21+
<a href="https://www.gnu.org/licenses/gpl-3.0.html">GPL-3.0</a>, or -
2222
for closed-source projects - a commercial license as part of the
2323
BlockNote Business subscription or above. See the{" "}
2424
<a href="/legal/blocknote-xl-commercial-license">
@@ -34,7 +34,7 @@ const faqs = [
3434
<>
3535
Only when you use any of the XL packages (like AI integration,
3636
multi-column layouts, and exporters) and you cannot comply with the
37-
AGPL-3.0 license you'll need a{" "}
37+
GPL-3.0 license you'll need a{" "}
3838
<a href="/legal/blocknote-xl-commercial-license">commercial license</a>.
3939
This is likely to be the case when you're building closed-source
4040
applications. The BlockNote Business subscription and above includes a
@@ -53,7 +53,7 @@ const faqs = [
5353
To sustainably support ongoing development, we offer a small set of
5454
advanced features (the XL packages) under a dual-license model:
5555
<ul>
56-
<li>AGPL-3.0 for open-source projects</li>
56+
<li>GPL-3.0 for open-source projects</li>
5757
<li>
5858
Commercial license (included in the BlockNote Business tier and
5959
above) for closed-source use

docs/app/pricing/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ const tiers: Tier[] = [
3232
"Access to all Pro Examples",
3333
"Prioritized Bug Reports on GitHub",
3434
"Support maintenance and new versions of our open source library",
35-
"XL packages only available for open source projects under AGPL-3.0",
35+
"XL packages only available for open source projects under GPL-3.0",
3636
],
3737
},
3838
{

docs/content/docs/features/export/email.mdx

Lines changed: 57 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,16 +55,33 @@ See the [full example](/examples/interoperability/converting-blocks-to-react-ema
5555
- **header**: Add content to the top of the email (must be a React-Email compatible component)
5656
- **footer**: Add content to the bottom of the email (must be a React-Email compatible component)
5757
- **head**: Inject elements into the [Head element](https://react.email/docs/components/head)
58+
- **container**: Customize the container element (A component which will wrap the email content including the header and footer)
5859

5960
Example usage:
6061

61-
```tsx
62-
import { Text } from "@react-email/components";
62+
```tsx twoslash
63+
import React from "react";
64+
import {
65+
ReactEmailExporter,
66+
reactEmailDefaultSchemaMappings,
67+
} from "@blocknote/xl-email-exporter";
68+
import { BlockNoteEditor } from "@blocknote/core";
69+
import { Text, Container } from "@react-email/components";
70+
71+
const editor = BlockNoteEditor.create();
72+
73+
// ---cut---
74+
const exporter = new ReactEmailExporter(
75+
editor.schema,
76+
reactEmailDefaultSchemaMappings,
77+
);
78+
6379
const html = await exporter.toReactEmailDocument(editor.document, {
6480
preview: "This is a preview of the email content",
6581
header: <Text>Header</Text>,
6682
footer: <Text>Footer</Text>,
6783
head: <title>My email</title>,
84+
container: ({ children }) => <Container>{children}</Container>,
6885
});
6986
```
7087

@@ -106,3 +123,41 @@ const defaultOptions = {
106123
colors: COLORS_DEFAULT, // defaults from @blocknote/core
107124
};
108125
```
126+
127+
### Custom styles
128+
129+
Want to tweak the default styles of the email? You can use `reactEmailDefaultSchemaMappingsWithStyles` to create a custom mapping with your own styles.
130+
131+
```tsx
132+
import {
133+
ReactEmailExporter,
134+
reactEmailDefaultSchemaMappingsWithStyles,
135+
} from "@blocknote/xl-email-exporter";
136+
import { Text } from "@react-email/components";
137+
138+
const { blockMapping, inlineContentMapping, styleMapping } =
139+
reactEmailDefaultSchemaMappingsWithStyles({
140+
textStyles: {
141+
paragraph: {
142+
style: {
143+
fontSize: 16,
144+
lineHeight: 1.5,
145+
margin: 3,
146+
minHeight: 24,
147+
},
148+
},
149+
},
150+
});
151+
152+
new ReactEmailExporter(schema, {
153+
// You can still use the default block mapping, but you can also overwrite it
154+
blockMapping: {
155+
...blockMapping,
156+
audio: (block, exporter) => {
157+
return <Text>Audio block</Text>;
158+
},
159+
},
160+
inlineContentMapping,
161+
styleMapping,
162+
});
163+
```

docs/content/docs/reference/editor/overview.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ The BlockNote editor API is a comprehensive set of functions and methods that al
1010

1111
## Editable
1212

13-
The editor is editable by default, but you can make it read-only by setting the `editable` property to `false`.
13+
The editor is editable by default, but you can make it read-only by setting the `isEditable` property to `false`.
1414

1515
```ts
16-
editor.editable = false;
16+
editor.isEditable = false;
1717
```
1818

1919
## Focus

docs/content/pages/blocknote-xl-commercial-license.mdx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ If you do not agree to any of the terms and conditions of this Agreement or if y
1919
- "Affiliates" means the subsidiaries and the affiliates of the Licensee.
2020
- "Agreement" means this legally binding agreement that grants the Commercial License for all BlockNote XL products.
2121
- “Application” means either one (1) unique domain for web-based applications (excluding development, testing, or staging domains), or one (1) executable application instance for desktop or mobile use;
22-
- "AGPL" means the GNU Affero General Public License version 3.0.
22+
- "GPL" means the GNU General Public License version 3.0.
2323
- "BlockNote" means OpenBlocks B.V., a legal entity registered under the Dutch Chamber of Commerce identifier 96110295.
2424
- "Commercial License" means the commercial license that is granted in this Agreement.
2525
- "Effective Date" means the date on which the Agreement is made effective. This is the date of the purchase.
@@ -43,7 +43,7 @@ If you do not agree to any of the terms and conditions of this Agreement or if y
4343

4444
Licensor offers the XL Packages under a dual license model. Licensor offers two licensing options:
4545

46-
- a) the open source AGPL, where any modifications or derivative works must also be made available under the license terms of AGPL; and
46+
- a) the open source GPL, where any modifications or derivative works must also be made available under the license terms of GPL; and
4747
- b) this Commercial License, where you may use the Software under the terms and conditions mentioned in this Agreement.
4848

4949
This Agreement is only applicable if you use the Commercial License.
@@ -112,12 +112,12 @@ No Commercial License is required if:
112112
- a) you are an open source contributor who is not affiliated with the Licensee; or
113113
- b) you are someone who solely executes the front end for testing purposes, such as verifying back-end changes, and are not contributing changes to the Front-end code.
114114
115-
Licensor is committed to supporting Open Source Software (OSS). When Licensee is developing OSS licensed under an Open Source Initiative approved license and not compatible with the AGPL (e.g. a permissive license like MIT), Licensee may include the Software in its project and use the Commercial License free of charge, provided that:
115+
Licensor is committed to supporting Open Source Software (OSS). When Licensee is developing OSS licensed under an Open Source Initiative approved license and not compatible with the GPL (e.g. a permissive license like MIT), Licensee may include the Software in its project and use the Commercial License free of charge, provided that:
116116
117117
- a) the Software is used solely for the development or demonstration of your open source project;
118-
- b) Licensee informs its downstream users that enabling any feature relying on our Software will require compliance with either the AGPL or the Commercial License.
118+
- b) Licensee informs its downstream users that enabling any feature relying on our Software will require compliance with either the GPL or the Commercial License.
119119
120-
For clarity, inclusion of the Software in your OSS project, where it is completely disabled and not exposed to Users, does not trigger AGPL reciprocity or the terms of this Commercial License until such functionality is enabled or made accessible.
120+
For clarity, inclusion of the Software in your OSS project, where it is completely disabled and not exposed to Users, does not trigger GPL reciprocity or the terms of this Commercial License until such functionality is enabled or made accessible.
121121
122122
Please contact the Licensor for explicit permission or clarification if you intend to enable the Software in a publicly accessible or hosted environment, or if you are uncertain whether your use qualifies under these conditions.
123123
*/}
@@ -171,11 +171,11 @@ Upon termination of this Agreement, Licensee's license to access and use the Sof
171171

172172
Any provisions of this Agreement containing licensing restrictions, warranties and warranty disclaimers, confidentiality obligations, limitations of liability and/or indemnity terms, and any term of this Agreement which, by its nature, is intended to survive termination or expiration, will remain in effect following any termination or expiration of this Agreement, as will Licensee's obligation to pay any fees accrued and owing to Licensor as of termination or expiration.
173173

174-
### 5.5. Transition from Commercial License to AGPL
174+
### 5.5. Transition from Commercial License to GPL
175175

176-
If the Licensee chooses to discontinue the Commercial License and instead rely solely on the AGPL license, all rights and benefits granted under the Commercial License shall immediately terminate. This includes, but is not limited to, access to the Software, priority updates, and any form of technical support or assistance provided under the Commercial License.
176+
If the Licensee chooses to discontinue the Commercial License and instead rely solely on the GPL license, all rights and benefits granted under the Commercial License shall immediately terminate. This includes, but is not limited to, access to the Software, priority updates, and any form of technical support or assistance provided under the Commercial License.
177177

178-
By transitioning to the AGPL license, the Licensee agrees to comply fully with the terms of the AGPL. The Licensor shall bear no further obligations toward the Licensee after the transition, and no refunds or credits shall be issued for any remaining term of the Commercial License.
178+
By transitioning to the GPL license, the Licensee agrees to comply fully with the terms of the GPL. The Licensor shall bear no further obligations toward the Licensee after the transition, and no refunds or credits shall be issued for any remaining term of the Commercial License.
179179

180180
## 6. Payment
181181

docs/content/pages/terms-and-conditions.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ If you have any questions regarding these Terms or BlockNote, do not hesitate to
3333

3434
1. BlockNote offers you access to the BlockNote open source library, examples and documentation which you can use as to power text editors in your application.
3535
2. We offer BlockNote to business users and consumers. **Consumer** means: any person not acting in the exercise of a profession or business.
36-
3. The open source software is available under the licenses specified in the source code (MPL 2.0 for the general library, and AGPL 3.0 for the XL packages unless, specified otherwise).
36+
3. The open source software is available under the licenses specified in the source code (MPL 2.0 for the general library, and GPL 3.0 for the XL packages unless, specified otherwise).
3737
4. We offer additional services and licenses under separate terms. These are available as part through specific BlockNote Pro tiers, and include options like a [commercial license](/legal/blocknote-xl-commercial-license) for the XL packages and a [Service Level Agreement](/legal/service-level-agreement). If these specific terms conflict with our general Terms and Conditions, the commercial license terms will apply.
3838

3939
### Subscriptions and cancellation of BlockNote Pro

docs/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"@shikijs/langs-precompiled": "^3.2.1",
5555
"@shikijs/themes": "^3.2.1",
5656
"@shikijs/types": "^3.2.1",
57-
"@tiptap/core": "^2.12.0",
57+
"@tiptap/core": "^2.26.1",
5858
"@uppy/core": "^3.13.1",
5959
"@uppy/dashboard": "^3.9.1",
6060
"@uppy/drag-drop": "^3.1.1",
@@ -84,7 +84,7 @@
8484
"fumadocs-typescript": "^4.0.6",
8585
"fumadocs-ui": "^15.5.4",
8686
"import-in-the-middle": "^1.14.2",
87-
"next": "^15.4.1",
87+
"next": "^15.4.3",
8888
"nodemailer": "^6.10.1",
8989
"partykit": "^0.0.115",
9090
"pg": "^8.15.5",

0 commit comments

Comments
 (0)