
Security News
pnpm 11.5 Adds Support for Recognizing npm Staged Publishes
pnpm 11.5 now recognizes npm staged publish approvals in release metadata, preventing those releases from being mistaken for lower-trust package publishes.
@editora/core
Advanced tools
Framework-agnostic rich text editor core for React and web apps, built for enterprise editing workflows.
[!IMPORTANT] Live Website: https://editora-ecosystem.netlify.app/
Storybook: https://editora-ecosystem-storybook.netlify.app/
Framework-agnostic core editor engine that works with any JavaScript framework
Framework-agnostic core editor engine for Editora Rich Text Editor.
npm install @editora/core @editora/plugins @editora/themes @editora/react
The core package provides the fundamental editor engine that can be integrated with any JavaScript framework. It's built on top of modern web standards and provides a solid foundation for building rich text editors.
import { createEditor, EditorConfig } from '@editora/core';
import "@editora/themes/themes/default.css";
// Create editor configuration
const config: EditorConfig = {
content: '<p>Hello World!</p>',
placeholder: 'Start typing...',
onChange: (html) => {
console.log('Content changed:', html);
}
};
// Create editor instance
const editor = createEditor(config);
// Mount to DOM element
const container = document.getElementById('editor');
editor.mount(container);
import { createEditor } from '@editora/core';
import { BoldPlugin, ItalicPlugin, HeadingPlugin } from '@editora/plugins';
import "@editora/themes/themes/default.css";
const editor = createEditor({
plugins: [
BoldPlugin(),
ItalicPlugin(),
HeadingPlugin()
],
content: '<h1>Welcome</h1><p>Start writing...</p>'
});
editor.mount(document.getElementById('editor'));
import "@editora/themes/themes/default.css";
import "@editora/themes/themes/dark.css";
import "@editora/themes/themes/acme.css";
<div data-theme="dark">...</div> or <div data-theme="acme">...</div>.<editora-editor theme="dark"> or <editora-editor theme="acme">.createEditor(config: EditorConfig): EditorCreates a new editor instance with the provided configuration.
Parameters:
config.content (string, optional): Initial HTML contentconfig.placeholder (string, optional): Placeholder text when emptyconfig.onChange (function, optional): Callback fired when content changesconfig.plugins (Plugin[], optional): Array of plugins to loadconfig.readonly (boolean, optional): Make editor read-onlyconfig.autofocus (boolean, optional): Auto-focus on mountReturns: Editor instance
mount(element: HTMLElement): voidMounts the editor to a DOM element.
editor.mount(document.getElementById('editor'));
unmount(): voidUnmounts the editor and cleans up resources.
editor.unmount();
getHTML(): stringGets the current editor content as HTML.
const html = editor.getHTML();
setHTML(html: string): voidSets the editor content from HTML.
editor.setHTML('<p>New content</p>');
getJSON(): objectGets the current content as JSON (AST).
const json = editor.getJSON();
setJSON(json: object): voidSets content from JSON (AST).
editor.setJSON(jsonContent);
focus(): voidFocuses the editor.
editor.focus();
blur(): voidBlurs the editor.
editor.blur();
clear(): voidClears all content.
editor.clear();
destroy(): voidDestroys the editor instance and frees resources.
editor.destroy();
interface EditorConfig {
// Initial content
content?: string;
// Placeholder text
placeholder?: string;
// Change handler
onChange?: (html: string, json: object) => void;
// Focus handlers
onFocus?: () => void;
onBlur?: () => void;
// Plugins
plugins?: Plugin[];
// Editor state
readonly?: boolean;
autofocus?: boolean;
// Content validation
sanitize?: boolean;
maxLength?: number;
// Performance
debounceDelay?: number;
}
When using <editora-editor> or element.setConfig(...), these config groups are supported:
accessibility?: {
enableARIA?: boolean;
keyboardNavigation?: boolean;
checker?: boolean;
};
performance?: {
debounceInputMs?: number;
viewportOnlyScan?: boolean;
};
accessibility.enableARIA: toggles ARIA role/labels on the editable surface.accessibility.keyboardNavigation: toggles keyboard shortcut handling.accessibility.checker: auto-loads a11yChecker when plugin list is explicitly configured.performance.debounceInputMs: debounces content-change events.performance.viewportOnlyScan: skips floating-toolbar/status scans for offscreen instances.Create custom plugins by extending the base Plugin class:
import { Plugin, Editor } from '@editora/core';
import "@editora/themes/themes/default.css";
class CustomPlugin extends Plugin {
name = 'custom';
install(editor: Editor) {
// Plugin initialization
console.log('Plugin installed');
}
execute(command: string, ...args: any[]) {
// Handle commands
if (command === 'doSomething') {
// Custom logic
}
}
}
MIT © Ajay Kumar
FAQs
Framework-agnostic rich text editor core for React and web apps, built for enterprise editing workflows.
We found that @editora/core demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
pnpm 11.5 now recognizes npm staged publish approvals in release metadata, preventing those releases from being mistaken for lower-trust package publishes.

Security News
Federal audit finds NIST lacked a plan to clear the NVD backlog, wasted funds on duplicate work, and delayed use of CISA data.

Research
/Security News
A mini Shai-Hulud campaign compromised Red Hat Cloud Services npm packages to steal developer and CI/CD secrets during installation.