Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

how to disable nest or unnest feature? #876

Open
jueinin opened this issue Jun 27, 2024 · 4 comments
Open

how to disable nest or unnest feature? #876

jueinin opened this issue Jun 27, 2024 · 4 comments
Labels
enhancement New feature or request

Comments

@jueinin
Copy link

jueinin commented Jun 27, 2024

Due to some special reasons, I need to disable the nest feature.

I customized the toolbar to remove the nest unNest button. However, I still can't get rid of the Tab and Shift Tab shortcuts.
I found that the shortcut code is written in the blockContainer, and I intended to disable it through the extend method, with the code as follows:

import {BlockContainer} from "@blocknote/core/src/pm-nodes";

const newBlockContainer = BlockContainer.extend({
  addKeyboardShortcuts() {
    const obj = this.parent?.() || {};
    delete obj.Tab
    delete obj['Shift-Tab']
    return obj
  }
})
export default function App() {

  const editor = useCreateBlockNote({
    _tiptapOptions: {
      extensions: [
        newBlockContainer.configure({
          editor, // the editor has not been initialized
          domAttributes: {},
        })
      ]
    },
    disableExtensions: ['blockContainer'],


  });
  return <BlockNoteView editor={editor} />;
}

However, the issue lies in the fact that the configure method requires the editor object, which, at this point, has not been fully initialized, leading to an error. In this scenario, perhaps the tiptapOptions could be a function instead?

_tiptapOptions: (editor) => Partial<EditorOptions>
@jueinin
Copy link
Author

jueinin commented Jun 27, 2024

and I'am wondering why this #408 PR hasn't been merged?

@matthewlipski
Copy link
Collaborator

matthewlipski commented Jun 27, 2024

and I'am wondering why this #408 PR hasn't been merged?

This PR doesn't completely removed block nesting - it's a bandaid fix that disables functions to nest/unnest blocks, but nested blocks are allowed in the schema. This means that you can still create them by e.g. copy pasting a nested list from somewhere else, passing them in initialContent, etc. Implementing this feature is a bigger undertaking than it seems, because most block-related types have to be overhauled to "properly" remove nesting.

@matthewlipski
Copy link
Collaborator

Also, nesting is a pretty core feature of BlockNote, so adding this hasn't been a high priority issue

@jueinin
Copy link
Author

jueinin commented Jun 28, 2024

@matthewlipski because I need to transform the editor exported JSON data to another data structure, for some history reason.
and the data structure do not support nesting. so that I want to disable the nesting feature.

i know this method is not perfect, but it's enough for us. and how about if someone want to extend some buildin extensions?

so I hope this PR can be merged

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants