@kerebron/editor-react 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +23 -0
- package/README.md +82 -0
- package/esm/_dnt.shims.d.ts +2 -0
- package/esm/_dnt.shims.d.ts.map +1 -0
- package/esm/_dnt.shims.js +57 -0
- package/esm/editor/src/CoreEditor.d.ts +40 -0
- package/esm/editor/src/CoreEditor.d.ts.map +1 -0
- package/esm/editor/src/CoreEditor.js +252 -0
- package/esm/editor/src/DummyEditorView.d.ts +60 -0
- package/esm/editor/src/DummyEditorView.d.ts.map +1 -0
- package/esm/editor/src/DummyEditorView.js +277 -0
- package/esm/editor/src/Extension.d.ts +31 -0
- package/esm/editor/src/Extension.d.ts.map +1 -0
- package/esm/editor/src/Extension.js +53 -0
- package/esm/editor/src/ExtensionManager.d.ts +32 -0
- package/esm/editor/src/ExtensionManager.d.ts.map +1 -0
- package/esm/editor/src/ExtensionManager.js +260 -0
- package/esm/editor/src/Mark.d.ts +23 -0
- package/esm/editor/src/Mark.d.ts.map +1 -0
- package/esm/editor/src/Mark.js +51 -0
- package/esm/editor/src/Node.d.ts +32 -0
- package/esm/editor/src/Node.d.ts.map +1 -0
- package/esm/editor/src/Node.js +60 -0
- package/esm/editor/src/commands/CommandManager.d.ts +23 -0
- package/esm/editor/src/commands/CommandManager.d.ts.map +1 -0
- package/esm/editor/src/commands/CommandManager.js +118 -0
- package/esm/editor/src/commands/baseCommandFactories.d.ts +3 -0
- package/esm/editor/src/commands/baseCommandFactories.d.ts.map +1 -0
- package/esm/editor/src/commands/baseCommandFactories.js +836 -0
- package/esm/editor/src/commands/createChainableState.d.ts +3 -0
- package/esm/editor/src/commands/createChainableState.d.ts.map +1 -0
- package/esm/editor/src/commands/createChainableState.js +29 -0
- package/esm/editor/src/commands/keyCommandFactories.d.ts +3 -0
- package/esm/editor/src/commands/keyCommandFactories.d.ts.map +1 -0
- package/esm/editor/src/commands/keyCommandFactories.js +10 -0
- package/esm/editor/src/commands/mod.d.ts +7 -0
- package/esm/editor/src/commands/mod.d.ts.map +1 -0
- package/esm/editor/src/commands/mod.js +76 -0
- package/esm/editor/src/commands/replaceCommandFactories.d.ts +3 -0
- package/esm/editor/src/commands/replaceCommandFactories.d.ts.map +1 -0
- package/esm/editor/src/commands/replaceCommandFactories.js +94 -0
- package/esm/editor/src/commands/types.d.ts +18 -0
- package/esm/editor/src/commands/types.d.ts.map +1 -0
- package/esm/editor/src/commands/types.js +1 -0
- package/esm/editor/src/mod.d.ts +9 -0
- package/esm/editor/src/mod.d.ts.map +1 -0
- package/esm/editor/src/mod.js +8 -0
- package/esm/editor/src/nodeToTreeString.d.ts +10 -0
- package/esm/editor/src/nodeToTreeString.d.ts.map +1 -0
- package/esm/editor/src/nodeToTreeString.js +74 -0
- package/esm/editor/src/plugins/TrackSelecionPlugin.d.ts +6 -0
- package/esm/editor/src/plugins/TrackSelecionPlugin.d.ts.map +1 -0
- package/esm/editor/src/plugins/TrackSelecionPlugin.js +24 -0
- package/esm/editor/src/plugins/input-rules/InputRulesPlugin.d.ts +23 -0
- package/esm/editor/src/plugins/input-rules/InputRulesPlugin.d.ts.map +1 -0
- package/esm/editor/src/plugins/input-rules/InputRulesPlugin.js +163 -0
- package/esm/editor/src/plugins/keymap/keymap.d.ts +11 -0
- package/esm/editor/src/plugins/keymap/keymap.d.ts.map +1 -0
- package/esm/editor/src/plugins/keymap/keymap.js +125 -0
- package/esm/editor/src/plugins/keymap/w3c-keyname.d.ts +4 -0
- package/esm/editor/src/plugins/keymap/w3c-keyname.d.ts.map +1 -0
- package/esm/editor/src/plugins/keymap/w3c-keyname.js +124 -0
- package/esm/editor/src/types.d.ts +52 -0
- package/esm/editor/src/types.d.ts.map +1 -0
- package/esm/editor/src/types.js +1 -0
- package/esm/editor/src/ui.d.ts +15 -0
- package/esm/editor/src/ui.d.ts.map +1 -0
- package/esm/editor/src/ui.js +16 -0
- package/esm/editor/src/utilities/SmartOutput.d.ts +41 -0
- package/esm/editor/src/utilities/SmartOutput.d.ts.map +1 -0
- package/esm/editor/src/utilities/SmartOutput.js +228 -0
- package/esm/editor/src/utilities/createNodeFromContent.d.ts +9 -0
- package/esm/editor/src/utilities/createNodeFromContent.d.ts.map +1 -0
- package/esm/editor/src/utilities/createNodeFromContent.js +32 -0
- package/esm/editor/src/utilities/getHtmlAttributes.d.ts +9 -0
- package/esm/editor/src/utilities/getHtmlAttributes.d.ts.map +1 -0
- package/esm/editor/src/utilities/getHtmlAttributes.js +47 -0
- package/esm/editor-react/src/EditorContent.d.ts +26 -0
- package/esm/editor-react/src/EditorContent.d.ts.map +1 -0
- package/esm/editor-react/src/EditorContent.js +31 -0
- package/esm/editor-react/src/mod.d.ts +24 -0
- package/esm/editor-react/src/mod.d.ts.map +1 -0
- package/esm/editor-react/src/mod.js +24 -0
- package/esm/editor-react/src/useEditor.d.ts +38 -0
- package/esm/editor-react/src/useEditor.d.ts.map +1 -0
- package/esm/editor-react/src/useEditor.js +69 -0
- package/esm/package.json +3 -0
- package/package.json +22 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { MarkSpec, Node as ProseMirrorNode, NodeSpec } from 'prosemirror-model';
|
|
2
|
+
import type { Mark } from '../Mark.js';
|
|
3
|
+
import type { Node } from '../Node.js';
|
|
4
|
+
type MarkOfNode = Mark | Node;
|
|
5
|
+
export declare function getHtmlAttributes(extension: MarkOfNode, node: ProseMirrorNode): Record<string, any>;
|
|
6
|
+
export declare function setHtmlAttributes(extension: MarkOfNode, element: HTMLElement): Record<string, any>;
|
|
7
|
+
export declare function addAttributesToSchema(spec: MarkSpec | NodeSpec, extension: MarkOfNode): void;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=getHtmlAttributes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getHtmlAttributes.d.ts","sourceRoot":"","sources":["../../../../src/editor/src/utilities/getHtmlAttributes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,IAAI,IAAI,eAAe,EACvB,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9B,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,UAAU,EACrB,IAAI,EAAE,eAAe,uBAmBtB;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,uBAc5E;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,QAAQ,GAAG,QAAQ,EACzB,SAAS,EAAE,UAAU,QAetB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export function getHtmlAttributes(extension, node) {
|
|
2
|
+
const attrs = {};
|
|
3
|
+
if (extension.attributes) {
|
|
4
|
+
for (const [key, value] of Object.entries(extension.attributes)) {
|
|
5
|
+
if ('undefined' !== typeof node.attrs[key]) {
|
|
6
|
+
attrs[key] = node.attrs[key];
|
|
7
|
+
}
|
|
8
|
+
else {
|
|
9
|
+
if (value.toDom) {
|
|
10
|
+
attrs[key] = value.toDom(node);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
attrs[key] = value.default;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return attrs;
|
|
19
|
+
}
|
|
20
|
+
export function setHtmlAttributes(extension, element) {
|
|
21
|
+
const attrs = {};
|
|
22
|
+
if (extension.attributes) {
|
|
23
|
+
for (const [key, value] of Object.entries(extension.attributes)) {
|
|
24
|
+
if (value.fromDom) {
|
|
25
|
+
attrs[key] = value.fromDom(element);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
attrs[key] = value.default;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return attrs;
|
|
33
|
+
}
|
|
34
|
+
export function addAttributesToSchema(spec, extension) {
|
|
35
|
+
const attrs = {};
|
|
36
|
+
if (extension.attributes) {
|
|
37
|
+
if (!spec.attrs) {
|
|
38
|
+
spec.attrs = {};
|
|
39
|
+
}
|
|
40
|
+
for (const [key, value] of Object.entries(extension.attributes)) {
|
|
41
|
+
spec.attrs[key] = value;
|
|
42
|
+
if (!value.toDom) {
|
|
43
|
+
value.toDom = (node) => node.attrs[key];
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { CoreEditor } from '../../editor/src/mod.js';
|
|
3
|
+
export interface EditorContentProps {
|
|
4
|
+
/** The editor instance from useEditor */
|
|
5
|
+
editor: CoreEditor | null;
|
|
6
|
+
/** Additional class name */
|
|
7
|
+
className?: string;
|
|
8
|
+
/** Additional inline styles */
|
|
9
|
+
style?: React.CSSProperties;
|
|
10
|
+
}
|
|
11
|
+
export interface EditorContentRef {
|
|
12
|
+
/** Get the container element */
|
|
13
|
+
getElement: () => HTMLDivElement | null;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* EditorContent renders the Kerebron editor.
|
|
17
|
+
* Use with the useEditor hook.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```tsx
|
|
21
|
+
* const editor = useEditor({ extensions: [StarterKit] })
|
|
22
|
+
* return <EditorContent editor={editor} />
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare const EditorContent: React.ForwardRefExoticComponent<EditorContentProps & React.RefAttributes<EditorContentRef>>;
|
|
26
|
+
//# sourceMappingURL=EditorContent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditorContent.d.ts","sourceRoot":"","sources":["../../../src/editor-react/src/EditorContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAKN,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,UAAU,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC;CACzC;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,6FAkCzB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React, { forwardRef, useEffect, useImperativeHandle, useRef, } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* EditorContent renders the Kerebron editor.
|
|
4
|
+
* Use with the useEditor hook.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```tsx
|
|
8
|
+
* const editor = useEditor({ extensions: [StarterKit] })
|
|
9
|
+
* return <EditorContent editor={editor} />
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export const EditorContent = forwardRef(function EditorContent({ editor, className = '', style }, ref) {
|
|
13
|
+
const containerRef = useRef(null);
|
|
14
|
+
useImperativeHandle(ref, () => ({
|
|
15
|
+
getElement: () => containerRef.current,
|
|
16
|
+
}));
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
const container = containerRef.current;
|
|
19
|
+
if (!container || !editor)
|
|
20
|
+
return;
|
|
21
|
+
// Get the editor's DOM element and append it to our container
|
|
22
|
+
const editorDom = editor.view?.dom;
|
|
23
|
+
if (editorDom && editorDom.parentElement !== container) {
|
|
24
|
+
container.appendChild(editorDom);
|
|
25
|
+
}
|
|
26
|
+
return () => {
|
|
27
|
+
// Don't remove on cleanup - editor.destroy() handles this
|
|
28
|
+
};
|
|
29
|
+
}, [editor]);
|
|
30
|
+
return (React.createElement("div", { ref: containerRef, className: `kb-component ${className}`.trim(), style: style }));
|
|
31
|
+
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React bindings for Kerebron Editor
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```tsx
|
|
6
|
+
* import { useEditor, EditorContent } from '@kerebron/editor-react'
|
|
7
|
+
* import { StarterKit } from '@kerebron/editor-kits/StarterKit'
|
|
8
|
+
*
|
|
9
|
+
* const MyEditor = () => {
|
|
10
|
+
* const editor = useEditor({
|
|
11
|
+
* extensions: [StarterKit],
|
|
12
|
+
* content: '<p>Hello World!</p>',
|
|
13
|
+
* })
|
|
14
|
+
*
|
|
15
|
+
* return <EditorContent editor={editor} />
|
|
16
|
+
* }
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @module
|
|
20
|
+
*/
|
|
21
|
+
export { useEditor, type UseEditorOptions } from './useEditor.js';
|
|
22
|
+
export { EditorContent, type EditorContentProps, type EditorContentRef, } from './EditorContent.js';
|
|
23
|
+
export { CoreEditor } from '../../editor/src/mod.js';
|
|
24
|
+
//# sourceMappingURL=mod.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/editor-react/src/mod.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React bindings for Kerebron Editor
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```tsx
|
|
6
|
+
* import { useEditor, EditorContent } from '@kerebron/editor-react'
|
|
7
|
+
* import { StarterKit } from '@kerebron/editor-kits/StarterKit'
|
|
8
|
+
*
|
|
9
|
+
* const MyEditor = () => {
|
|
10
|
+
* const editor = useEditor({
|
|
11
|
+
* extensions: [StarterKit],
|
|
12
|
+
* content: '<p>Hello World!</p>',
|
|
13
|
+
* })
|
|
14
|
+
*
|
|
15
|
+
* return <EditorContent editor={editor} />
|
|
16
|
+
* }
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @module
|
|
20
|
+
*/
|
|
21
|
+
export { useEditor } from './useEditor.js';
|
|
22
|
+
export { EditorContent, } from './EditorContent.js';
|
|
23
|
+
// Re-export CoreEditor for convenience
|
|
24
|
+
export { CoreEditor } from '../../editor/src/mod.js';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type DependencyList } from 'react';
|
|
2
|
+
import { CoreEditor } from '../../editor/src/mod.js';
|
|
3
|
+
import type { AnyExtensionOrReq, Content } from '../../editor/src/mod.js';
|
|
4
|
+
export interface UseEditorOptions {
|
|
5
|
+
/** Array of extensions to use */
|
|
6
|
+
extensions?: AnyExtensionOrReq[];
|
|
7
|
+
/** Initial HTML content */
|
|
8
|
+
content?: string;
|
|
9
|
+
/** Initial JSON content */
|
|
10
|
+
initialContent?: Content;
|
|
11
|
+
/** CDN URL for WASM files */
|
|
12
|
+
cdnUrl?: string;
|
|
13
|
+
/** Document URI */
|
|
14
|
+
uri?: string;
|
|
15
|
+
/** Called when editor is ready */
|
|
16
|
+
onReady?: (editor: CoreEditor) => void;
|
|
17
|
+
/** Called on every transaction */
|
|
18
|
+
onTransaction?: (editor: CoreEditor) => void;
|
|
19
|
+
/** Called when content changes */
|
|
20
|
+
onChange?: (editor: CoreEditor) => void;
|
|
21
|
+
/** Prevent immediate render (useful for SSR) */
|
|
22
|
+
immediatelyRender?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* React hook for creating and managing a Kerebron editor instance.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```tsx
|
|
29
|
+
* const editor = useEditor({
|
|
30
|
+
* extensions: [StarterKit],
|
|
31
|
+
* content: '<p>Hello World!</p>',
|
|
32
|
+
* })
|
|
33
|
+
*
|
|
34
|
+
* return <EditorContent editor={editor} />
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function useEditor(options?: UseEditorOptions, deps?: DependencyList): CoreEditor | null;
|
|
38
|
+
//# sourceMappingURL=useEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useEditor.d.ts","sourceRoot":"","sources":["../../../src/editor-react/src/useEditor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAA+B,MAAM,OAAO,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAE1E,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACjC,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACvC,kCAAkC;IAClC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAC7C,kCAAkC;IAClC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CACvB,OAAO,GAAE,gBAAqB,EAC9B,IAAI,GAAE,cAAmB,GACxB,UAAU,GAAG,IAAI,CAyEnB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import * as dntShim from "../../_dnt.shims.js";
|
|
2
|
+
import { useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { CoreEditor } from '../../editor/src/mod.js';
|
|
4
|
+
/**
|
|
5
|
+
* React hook for creating and managing a Kerebron editor instance.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* const editor = useEditor({
|
|
10
|
+
* extensions: [StarterKit],
|
|
11
|
+
* content: '<p>Hello World!</p>',
|
|
12
|
+
* })
|
|
13
|
+
*
|
|
14
|
+
* return <EditorContent editor={editor} />
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export function useEditor(options = {}, deps = []) {
|
|
18
|
+
const [editor, setEditor] = useState(null);
|
|
19
|
+
const editorContainerRef = useRef(null);
|
|
20
|
+
const optionsRef = useRef(options);
|
|
21
|
+
// Keep options ref updated
|
|
22
|
+
optionsRef.current = options;
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
// Skip if SSR and immediatelyRender is false
|
|
25
|
+
if (options.immediatelyRender === false && typeof dntShim.dntGlobalThis === 'undefined') {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const { extensions = [], content, initialContent, cdnUrl, uri, onReady, onTransaction, onChange, } = optionsRef.current;
|
|
29
|
+
// Create a container element for the editor
|
|
30
|
+
const container = document.createElement('div');
|
|
31
|
+
editorContainerRef.current = container;
|
|
32
|
+
const editorInstance = new CoreEditor({
|
|
33
|
+
element: container,
|
|
34
|
+
extensions,
|
|
35
|
+
content: initialContent,
|
|
36
|
+
cdnUrl,
|
|
37
|
+
uri,
|
|
38
|
+
});
|
|
39
|
+
// Set up event listeners
|
|
40
|
+
if (onTransaction) {
|
|
41
|
+
editorInstance.addEventListener('transaction', () => {
|
|
42
|
+
onTransaction(editorInstance);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
if (onChange) {
|
|
46
|
+
editorInstance.addEventListener('changed', () => {
|
|
47
|
+
onChange(editorInstance);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
// Load HTML content if provided
|
|
51
|
+
if (content) {
|
|
52
|
+
const buffer = new TextEncoder().encode(content);
|
|
53
|
+
editorInstance.loadDocument('text/html', buffer).catch(() => {
|
|
54
|
+
// If HTML loading fails, try setting as plain text
|
|
55
|
+
console.warn('Failed to load HTML content');
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
setEditor(editorInstance);
|
|
59
|
+
if (onReady) {
|
|
60
|
+
onReady(editorInstance);
|
|
61
|
+
}
|
|
62
|
+
// Cleanup
|
|
63
|
+
return () => {
|
|
64
|
+
editorInstance.destroy();
|
|
65
|
+
setEditor(null);
|
|
66
|
+
};
|
|
67
|
+
}, deps); // eslint-disable-line react-hooks/exhaustive-deps
|
|
68
|
+
return editor;
|
|
69
|
+
}
|
package/esm/package.json
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@kerebron/editor-react",
|
|
3
|
+
"version": "0.4.3",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"module": "./esm/editor-react/src/mod.js",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"import": "./esm/editor-react/src/mod.js"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"scripts": {},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"prosemirror-model": "1.25.3",
|
|
14
|
+
"prosemirror-state": "1.4.3",
|
|
15
|
+
"prosemirror-transform": "1.10.4",
|
|
16
|
+
"prosemirror-view": "1.40.0"
|
|
17
|
+
},
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"@types/node": "^20.9.0"
|
|
20
|
+
},
|
|
21
|
+
"_generatedBy": "dnt@dev"
|
|
22
|
+
}
|