BlockNote

A React Rich Text Editor that's block-based (Notion style) and extensible. Built on top of Prosemirror and Tiptap.

MPL-2.0 License

Downloads
333.4K
Stars
5.1K
Committers
56

Bot releases are hidden (Show)

BlockNote - 0.11.0

Published by matthewlipski 9 months ago

What's Changed

New Contributors

Full Changelog: https://github.com/TypeCellOS/BlockNote/compare/v0.10.1...v0.11.0

Breaking Changes

Change import "@blocknote/core/style.css"; to import "@blocknote/react/style.css"; if you're using @blocknote/react

This update changes how themes and styles are applied to the editor. This means if you were previously overriding CSS using the componentStyles field in a Theme object, you should convert those styles to CSS rules. See the new theming and styling documentation here.

BlockNote - 0.10.1

Published by matthewlipski 11 months ago

What's Changed

Full Changelog: https://github.com/TypeCellOS/BlockNote/compare/v0.10.0...v0.10.1

BlockNote - 0.10.0

Published by matthewlipski 11 months ago

Features

Some nice new stuff now possible with BlockNote!

Tables

ezgif-2-fd6034a112

Closes https://github.com/TypeCellOS/BlockNote/issues/194

Custom Inline Content and Custom Styles

Until now, it was only possible to create your own custom Blocks. Now, you can also create custom Styles and Inline Content. Styles are markup that can be enabled on text (think bold, italic, etc.). Custom Inline Content can be used for "inline blocks", for example for Mentions.

Closes https://github.com/TypeCellOS/BlockNote/issues/267

Better copy paste handling

The copy / paste and Blocks to / from Markdown / HTML system has been overhauled and should be more robust. Copying and pasting of custom blocks is now also supported!

Closes #221 #69 #361 #381 #282 #226 #249

Breaking changes:

Custom Block API

If you're using Custom Blocks (createReactBlockSpec), there are 3 major changes:

  • The "schema" of your block and the "implementation" are now separated
  • The <InlineContent /> element has been removed in favor of contentRef
  • Use content: "inline" | "none" instead of containsInlineContent: boolean

Old (deprecated) code example:

const ImageBlock = createReactBlockSpec({
  type: "image",
  propSchema: {
    src: {
      default: "https://via.placeholder.com/1000",
    },
  },
  containsInlineContent: true,
  render: ({ block }) => (
    <div
      style={{
        display: "flex",
        flexDirection: "column",
      }}>
      <img
        style={{
          width: "100%",
        }}
        src={block.props.src}
        alt={"Image"}
        contentEditable={false}
      />
      <InlineContent />
    </div>
  ),
});

New version:

const ImageBlock = createReactBlockSpec({
  type: "image",
  propSchema: {
    src: {
      default: "https://via.placeholder.com/1000",
    },
  },
  content: "inline"
}, {
  render: ({ block, contentRef }) => (
    <div
      style={{
        display: "flex",
        flexDirection: "column",
      }}>
      <img
        style={{
          width: "100%",
        }}
        src={block.props.src}
        alt={"Image"}
        contentEditable={false}
      />
      <span ref={contentRef} />
    </div>
  ),
});

Additionally, blockSchemas are now blockSpecs, so to pass in the blocks that you want the editor to use:

const editor = useBlockNote({
  blockSpecs: {
    ...defaultBlockSpecs,
    image: ImageBlock
  }
});

In functions that still require a BlockSchema type, you can use the getBlockSchemaFromSpecs function, e.g. for getDefaultReactSlashMenuItems:

const blockSpecs = {
  ...defaultBlockSpecs,
  image: ImageBlock
}

const blockSchema = getBlockSchemaFromSpecs(blockSpecs);

const editor = useBlockNote({
  blockSpecs: blockSpecs,
  slashMenuItems: {
    ...getDefaultReactSlashMenuItems(blockSchema),
    insertImageBlock
  }
});

Naming of export / parse functions

To better indicate the conversion to / from Markdown and HTML is lossy, the following functions have been renamed:

  • editor.blocksToHTML -> editor.blocksToHTMLLossy
  • editor.HTMLToBlocks -> editor.tryParseHTMLToBlocks
  • editor.blocksToMarkdown -> editor.blocksToMarkdownLossy
  • editor.markdownToBlocks -> editor.tryParseMarkdownToBlocks

Vanilla (non-react) constructor usage

Instead of new BlockNoteEditor(...), now use BlockNoteEditor.create(...)

Changelog

Full Changelog: https://github.com/TypeCellOS/BlockNote/compare/v0.9.6...v0.10.0

BlockNote - 0.9.6

Published by matthewlipski 12 months ago

What's Changed

New Contributors

Full Changelog: https://github.com/TypeCellOS/BlockNote/compare/v0.9.5...v0.9.6

BlockNote - 0.9.5

Published by matthewlipski about 1 year ago

What's Changed

Full Changelog: https://github.com/TypeCellOS/BlockNote/compare/v0.9.4...v0.9.5

BlockNote - 0.9.4

Published by matthewlipski about 1 year ago

What's Changed

Full Changelog: https://github.com/TypeCellOS/BlockNote/compare/v0.9.3...v0.9.4

BlockNote - 0.9.3

Published by matthewlipski about 1 year ago

What's Changed

Full Changelog: https://github.com/TypeCellOS/BlockNote/compare/v0.9.2...v0.9.3

BlockNote - 0.9.2

Published by matthewlipski about 1 year ago

What's Changed

Full Changelog: https://github.com/TypeCellOS/BlockNote/compare/v0.9.0...v0.9.1

BlockNote - 0.9.0

Published by matthewlipski about 1 year ago

What's Changed

Full Changelog: https://github.com/TypeCellOS/BlockNote/compare/v0.8.5...v0.9.0

BlockNote - 0.8.5

Published by matthewlipski about 1 year ago

BlockNote - 0.8.4

Published by matthewlipski about 1 year ago

What's Changed

Full Changelog: https://github.com/TypeCellOS/BlockNote/compare/v0.8.3...v0.8.4

BlockNote - v0.8.3

Published by matthewlipski about 1 year ago

This release includes an overhaul for customizing and rendering UI elements in BlockNote. Everything is now rendered under a single root. Includes breaking changes:

  • The slashCommands editor option has been renamed to slashMenuItems
  • BlockNote no longer uses factories to create UI elements. See the documentation to find out how this is now done.

What's Changed

New Contributors

Full Changelog: https://github.com/TypeCellOS/BlockNote/compare/v0.8.2...v0.8.3

BlockNote - v0.8.2

Published by matthewlipski over 1 year ago

What's Changed

New Contributors

Full Changelog: https://github.com/TypeCellOS/BlockNote/compare/v0.8.1...v0.8.2

BlockNote - v0.8.1

Published by matthewlipski over 1 year ago

What's Changed

Full Changelog: https://github.com/TypeCellOS/BlockNote/compare/v0.8.0...v0.8.1

BlockNote - v0.8.0: Custom Blocks

Published by YousefED over 1 year ago

Custom blocks enable users to add their own custom blocks to BlockNote!

https://www.blocknotejs.org/docs/block-types#custom-block-types

What's Changed

New Contributors

Full Changelog: https://github.com/TypeCellOS/BlockNote/compare/v0.7.0...v0.8.0

BlockNote - v0.7.1

Published by YousefED over 1 year ago

What's Changed

New Contributors

Full Changelog: https://github.com/TypeCellOS/BlockNote/compare/v0.7.0...v0.7.1

BlockNote - v0.7.0: multiplayer

Published by YousefED over 1 year ago

What's Changed

New Contributors

Full Changelog: https://github.com/TypeCellOS/BlockNote/compare/v0.6.2...v0.7.0

BlockNote - v0.6.2

Published by matthewlipski over 1 year ago

What's Changed

Full Changelog: https://github.com/TypeCellOS/BlockNote/compare/v0.6.1...v0.6.2

BlockNote - v0.6.1

Published by matthewlipski over 1 year ago

What's Changed

New Contributors

Full Changelog: https://github.com/TypeCellOS/BlockNote/compare/v0.5.0...v0.6.1

BlockNote - v0.5.1

Published by YousefED over 1 year ago

  • fix: nextjs integration #158

Full Changelog: https://github.com/TypeCellOS/BlockNote/compare/v0.5.0...v0.5.1