agentsclimarketplace

Syncfusion react blockeditor

Skill syncfusion/react-ui-components-skills/skills/syncfusion-react-blockeditor

Implement the Syncfusion React BlockEditor component for block-based content editing. Use this skill for block-based rich content editing, document creation, CMS interfaces, markdown alternatives, editor setup, block configuration, toolbar or menu customization, drag-and-drop behavior, formatting options, APIs, accessibility, real-time collaborative editing with Yjs integration, user presence and remote cursors, document version history and snapshot management in React.From its SKILL.md

Install
npx -y skills add syncfusion/react-ui-components-skills --skill syncfusion-react-blockeditor

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

9.8 KB, ~2.2k tokens by cl100k_base, as published. Nobody here has run it

Syncfusion React Block Editor in React

Component Overview

The Syncfusion React BlockEditorComponent is a powerful block-based rich text editor that allows users to create, edit, and format content using a modern block architecture. Each piece of content (paragraphs, headings, lists, tables, code snippets) is a discrete, manageable block.

Key Capabilities

The BlockEditorComponent provides:

  • Block-based architecture - Content structured as discrete, reorderable blocks
  • Built-in block types - Paragraphs, headings, lists, tables, code, callouts, quotes, collapsible sections
  • Intuitive menus - Slash commands, context menus, inline toolbars
  • Drag-and-drop - Reorder blocks easily with visual handles
  • Content export - Export as JSON, HTML, or plain text
  • Accessibility - WCAG 2.1 compliant with keyboard navigation and screen reader support
  • Customization - Custom styling, themes, RTL support, globalization
  • Collaborative Editing - Real-time multi-user editing powered by Yjs, with user presence and remote cursors, document version history and snapshot management

Documentation Navigation Guide

Getting Started

๐Ÿ“„ Read: references/getting-started.md

  • Installation and npm package setup
  • Basic component implementation
  • CSS imports and theme configuration
  • Creating your first block editor
  • Setting initial content with blocks

Built-in Block Types

๐Ÿ“„ Read: references/built-in-blocks.md

  • Block type reference (Paragraph, Heading, List, Table, Code, Quote, Callout)
  • Nested block types (CollapsibleHeading, CollapsibleParagraph)
  • Block indentation and CSS class styling
  • Content configuration and properties

Menus and Commands

๐Ÿ“„ Read: references/block-editor-menus.md

  • Slash command menu customization
  • Context menu configuration with Table and Link options
  • Inline toolbar setup with Transform, code, link, and color support
  • Block action menu customization and tooltips
  • Menu events and filtering

Drag-Drop and Content Management

๐Ÿ“„ Read: references/drag-drop-and-content.md

  • Drag-and-drop block reordering (enableDragAndDrop)
  • Content insertion and nesting
  • Drag events (blockDragStart, blockDragging, blockDropped)
  • Programmatic block movement

Mentions and Labels

๐Ÿ“„ Read: references/mentions-and-labels.md

  • users prop and UserModel interface for @mention feature
  • labelSettings prop and LabelItemModel interface for label feature
  • ContentType.Mention / ContentType.Label inline content
  • IMentionContentSettings / ILabelContentSettings

Methods and API

๐Ÿ“„ Read: references/methods-and-api.md

  • Block management methods (add, remove, update, move)
  • Selection and cursor control
  • Data export/import (JSON, HTML)
  • Content formatting and rendering

Styling and Appearance

๐Ÿ“„ Read: references/styling-and-appearance.md

  • CSS theming and imports
  • Block styling with custom CSS classes
  • Typography and formatting options
  • Dark mode and responsive design

Advanced Features

๐Ÿ“„ Read: references/advanced-features.md

  • Paste cleanup and content sanitization
  • Undo/redo functionality
  • Keyboard shortcut customization
  • Read-only mode configuration
  • XSS protection and HTML sanitization
  • RTL support and internationalization

Collaborative Editing

๐Ÿ“„ Read: references/collaborative-editing.md

  • Real-time collaborative editing powered by Yjs (CRDT-based sync and conflict resolution)
  • Injecting the Collaboration and VersionHistory modules
  • collaborationSettings property (provider, adapter, enableAwareness, versionHistory)
  • Choosing a Yjs provider (y-websocket, y-webrtc, y-indexeddb, Hocuspocus, Liveblocks, PartyKit)
  • Setting up a Yjs document, YjsAdapter, and provider
  • User presence, remote cursors, and text selection overlays (enableAwareness)
  • Configuring the current user via users and currentUserId
  • Version history: creating, listing, renaming, restoring, comparing, exporting, and importing snapshots
  • Custom snapshot storage via the IVersionStorage interface
  • Version history events: snapshotCreated, snapshotRestored

Accessibility

๐Ÿ“„ Read: references/accessibility.md

  • WCAG 2.1 compliance
  • Keyboard navigation patterns
  • Screen reader support and ARIA attributes
  • Focus management
  • Color contrast and visual indicators

Quick Start Example

import { BlockEditorComponent } from '@syncfusion/ej2-react-blockeditor';
import { BlockModel, ContentType } from '@syncfusion/ej2-react-blockeditor';
import '@syncfusion/ej2-react-blockeditor/styles/material.css';

function App() {
  // Define initial blocks
  const blocksData: BlockModel[] = [
    {
      id: 'block-1',
      blockType: 'Heading',
      properties: { level: 1 },
      content: [
        {
          contentType: ContentType.Text,
          content: 'Welcome to Block Editor'
        }
      ]
    },
    {
      id: 'block-2',
      blockType: 'Paragraph',
      content: [
        {
          contentType: ContentType.Text,
          content: 'This is your first paragraph. Click the "+" button to add more blocks.'
        }
      ]
    }
  ];

  return (
    <BlockEditorComponent
      id="block-editor"
      blocks={blocksData}
    />
  );
}

export default App;

Common Patterns

1. Add a Block Programmatically

const editorRef = React.useRef<BlockEditorComponent>(null);

const addNewBlock = () => {
  const newBlock: BlockModel = {
    blockType: 'Paragraph',
    content: [
      {
        contentType: ContentType.Text,
        content: 'New paragraph block'
      }
    ]
  };
  
  editorRef.current?.addBlock(newBlock);
};

2. Handle Menu Item Selection

const commandMenuSettings = {
  itemSelect: (args) => {
    console.log('Selected command:', args.command.label, args.command.id);
    // Handle custom actions based on selected command
  }
};

3. Export Content as JSON

const exportContent = () => {
  const jsonContent = editorRef.current?.getDataAsJson();
  console.log('Exported content:', jsonContent);
};

4. Enable Read-Only Mode

<BlockEditorComponent
  id="block-editor"
  blocks={blocksData}
  readOnly={true}
/>

Key Props

โš ๏ธ Props toolbarSettings, containerCssClass, and showBlockHandle do not exist in the BlockEditor API and must not be used.

PropTypeDescription
idstringUnique identifier for the component
blocksBlockModel[]Array of block objects defining content
readOnlybooleanEnable read-only mode (default: false)
widthstring | numberWidth of the editor container (default: '100%')
heightstring | numberHeight of the editor container
commandMenuSettingsCommandMenuSettingsModelCustomize slash command (/) menu
contextMenuSettingsContextMenuSettingsModelConfigure right-click context menu
inlineToolbarSettingsInlineToolbarSettingsModelConfigure inline text selection toolbar
blockActionMenuSettingsBlockActionMenuSettingsModelConfigure block action (โ‹ฎ) menu
transformSettingsTransformSettingsModelConfigure block type transform menu
imageBlockSettingsImageBlockSettingsModelConfigure image upload and rendering
codeBlockSettingsCodeBlockSettingsModelConfigure code block languages
pasteCleanupSettingsPasteCleanupSettingsModelControl paste sanitization behavior
usersUserModel[]User list for @mention feature and collaboration presence with avatar colors
labelSettingsLabelSettingsModelLabel items and trigger char for label feature
enableDragAndDropbooleanEnable/disable drag-and-drop reordering (default: true)
undoRedoStacknumberMax number of undo/redo history steps
keyConfig{ [key: string]: string }Custom keyboard shortcut mappings
localestringLocalization language code (default: 'en-US')
blockChangedEmitType<BlockChangedEventArgs>Fires when block content changes
collaborationSettingsCollaborationSettingsModelConfigure real-time collaboration with Yjs provider, awareness, and version history
currentUserIdstringUnique identifier of the current user for collaboration and cursor identification

Common Use Cases

Content Management System - Build a CMS with block-based editing, custom block types, and content export

Document Editor - Create a collaborative document editor with formatting, templates, and version control

Note-Taking App - Implement a personal notes app with nesting, tagging, and search capabilities

Blog Editor - Enable blog authors to write with rich formatting, media embeds, and preview

Knowledge Base - Build internal documentation with organized blocks, search, and linked references

Survey/Form Builder - Create dynamic surveys with conditional blocks and response capture


What ships with it: 10 files

155.7 KB alongside SKILL.md

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.