Skip to content

Commit ac54f67

Browse files
committed
docs: add descriptions for configuration
1 parent a80259f commit ac54f67

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

adr/2025_06_16-configuration.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# BlockNote Configuration
2+
3+
Editors are widely different across applications, often with users having opposing requirements. Most editors explode with complexity when trying to support all of these use cases. So, there needs to be a guide for the different ways to configure so that there is not just a single overwhelming list of options.
4+
5+
Fundamentally, there are few different kinds of things to be configured:
6+
7+
- **block-configuration**: The configuration for a specific kind of block
8+
- e.g. the `table` block might have toggles for enabling/disabling the header rows/columns
9+
- **schema-configuration**: The configuration of what blocks, inline content, and styles are available in the editor
10+
- e.g. whether to include the `table` block at all
11+
- **extension-level-configuration**: The configuration of the extension itself
12+
- e.g. what ydoc should the collaboration extension use
13+
- **extension-configuration**: The configuration of the extensions that are available in the editor
14+
- e.g. whether to add collaboration to the editor
15+
- **editor-view-configuration**: The configuration of the editor views
16+
- e.g. whether to show the sidebar, the toolbar, etc.
17+
- **editor-configuration**: The configuration of the editor itself
18+
- e.g. how to handle paste events
19+
20+
These forms of configuration are not mutually exclusive, and can be combined in different ways. For example, knowing that the editor has collaboration enabled, might change the what the keybindings do for undo/redo.
21+
22+
In an ideal world, these configurations would be made at the "lowest possible level", like configuring the number of levels of headings would be configured when composing the schema for the editor, rather than at the editor level.
23+
24+
Configuration should be publicly accessible, so that mixed combinations can be created (i.e. different behaviors for an editor with or without collaboration).
25+
26+
## TODO
27+
28+
- Describe how you configure at the block level, then compose that into a schema, the compose that into an editor, and then compose that into a view.

0 commit comments

Comments
 (0)