|
| 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