@coze-editor/react 0.1.0-alpha.9c7cf5 → 0.1.0-alpha.ab222a
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/dist/esm/index.js +60 -8
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.mts +12 -3
- package/dist/index.d.ts +12 -3
- package/dist/index.js +65 -13
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/dist/esm/index.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
// src/renderer.tsx
|
|
2
|
-
import
|
|
2
|
+
import React3, {
|
|
3
3
|
useEffect,
|
|
4
4
|
useRef as useRef2,
|
|
5
|
-
useState as
|
|
5
|
+
useState as useState3,
|
|
6
|
+
useMemo
|
|
6
7
|
} from "react";
|
|
8
|
+
import { FacetCombineStrategy } from "@coze-editor/utils";
|
|
7
9
|
import {
|
|
8
10
|
create
|
|
9
11
|
} from "@coze-editor/core";
|
|
12
|
+
import { Facet } from "@codemirror/state";
|
|
10
13
|
|
|
11
14
|
// src/provider.tsx
|
|
12
15
|
import React, {
|
|
@@ -41,10 +44,54 @@ function EditorProvider({ children }) {
|
|
|
41
44
|
return /* @__PURE__ */ React.createElement(InternalEditorContext.Provider, { value: editor }, /* @__PURE__ */ React.createElement(InternalSetEditorContext.Provider, { value: setEditor }, /* @__PURE__ */ React.createElement(InjectorContext.Provider, { value: injectorRef.current }, children)));
|
|
42
45
|
}
|
|
43
46
|
|
|
47
|
+
// src/connector.tsx
|
|
48
|
+
import React2, { useState as useState2, useCallback, Fragment } from "react";
|
|
49
|
+
function createPortalConnector() {
|
|
50
|
+
let add = (id, portal) => {
|
|
51
|
+
};
|
|
52
|
+
let remove = (id) => {
|
|
53
|
+
};
|
|
54
|
+
function connect(id, portal) {
|
|
55
|
+
add(id, portal);
|
|
56
|
+
}
|
|
57
|
+
function disconnect(id) {
|
|
58
|
+
remove(id);
|
|
59
|
+
}
|
|
60
|
+
function Portal() {
|
|
61
|
+
const [items, setItems] = useState2([]);
|
|
62
|
+
const addItem = useCallback((id, portal) => {
|
|
63
|
+
setItems((prevItems) => {
|
|
64
|
+
const nextItems = [...prevItems];
|
|
65
|
+
const index = nextItems.findIndex((item) => item.id === id);
|
|
66
|
+
if (index > -1) {
|
|
67
|
+
nextItems[index] = { id, portal };
|
|
68
|
+
} else {
|
|
69
|
+
nextItems.push({ id, portal });
|
|
70
|
+
}
|
|
71
|
+
return nextItems;
|
|
72
|
+
});
|
|
73
|
+
}, []);
|
|
74
|
+
const removeItem = useCallback((id) => {
|
|
75
|
+
setItems((items2) => items2.filter((item) => item.id !== id));
|
|
76
|
+
}, []);
|
|
77
|
+
add = addItem;
|
|
78
|
+
remove = removeItem;
|
|
79
|
+
return /* @__PURE__ */ React2.createElement(Fragment, null, items.map((item) => item.portal));
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
connect,
|
|
83
|
+
disconnect,
|
|
84
|
+
Portal
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
44
88
|
// src/renderer.tsx
|
|
45
89
|
function firstLetterToUppercase(str) {
|
|
46
90
|
return str.charAt(0).toUpperCase() + str.substring(1);
|
|
47
91
|
}
|
|
92
|
+
var connector = Facet.define({
|
|
93
|
+
combine: FacetCombineStrategy.First
|
|
94
|
+
});
|
|
48
95
|
function Renderer(props) {
|
|
49
96
|
const {
|
|
50
97
|
plugins,
|
|
@@ -56,12 +103,16 @@ function Renderer(props) {
|
|
|
56
103
|
didMount,
|
|
57
104
|
children
|
|
58
105
|
} = props;
|
|
59
|
-
const [api, setAPI] =
|
|
106
|
+
const [api, setAPI] = useState3();
|
|
60
107
|
const ref = useRef2(null);
|
|
61
108
|
const apiRef = useRef2(null);
|
|
62
109
|
const propsRef = useRef2(null);
|
|
63
110
|
const setEditor = useSetEditor();
|
|
64
111
|
const injector = useInjector();
|
|
112
|
+
const pc = useMemo(() => createPortalConnector(), []);
|
|
113
|
+
const connectorRef = useRef2(pc);
|
|
114
|
+
connectorRef.current = pc;
|
|
115
|
+
const { Portal } = pc;
|
|
65
116
|
propsRef.current = props;
|
|
66
117
|
useEffect(() => {
|
|
67
118
|
const { render, eventKeys } = create({
|
|
@@ -73,7 +124,7 @@ function Renderer(props) {
|
|
|
73
124
|
root,
|
|
74
125
|
defaultValue,
|
|
75
126
|
options: options ?? {},
|
|
76
|
-
extensions
|
|
127
|
+
extensions: [connector.of(connectorRef.current), ...extensions ?? []]
|
|
77
128
|
});
|
|
78
129
|
apiRef.current = exported;
|
|
79
130
|
eventKeys.forEach((eventName) => {
|
|
@@ -102,20 +153,20 @@ function Renderer(props) {
|
|
|
102
153
|
useEffect(() => {
|
|
103
154
|
apiRef.current.$set(props.options ?? {});
|
|
104
155
|
}, [props.options]);
|
|
105
|
-
return /* @__PURE__ */
|
|
156
|
+
return /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ React3.createElement("div", { ...domProps, ref }), children, /* @__PURE__ */ React3.createElement(Portal, null));
|
|
106
157
|
}
|
|
107
158
|
|
|
108
159
|
// src/create-renderer.tsx
|
|
109
|
-
import
|
|
160
|
+
import React4, { useMemo as useMemo2 } from "react";
|
|
110
161
|
var OriginRenderer = Renderer;
|
|
111
162
|
function createRenderer(plugins, builtinExtensions) {
|
|
112
163
|
return function CustomRenderer(props) {
|
|
113
164
|
const userExtensions = props.extensions;
|
|
114
|
-
const extensions =
|
|
165
|
+
const extensions = useMemo2(
|
|
115
166
|
() => [...builtinExtensions ?? [], ...userExtensions ?? []],
|
|
116
167
|
[userExtensions]
|
|
117
168
|
);
|
|
118
|
-
return /* @__PURE__ */
|
|
169
|
+
return /* @__PURE__ */ React4.createElement(OriginRenderer, { ...props, extensions, plugins });
|
|
119
170
|
};
|
|
120
171
|
}
|
|
121
172
|
|
|
@@ -124,6 +175,7 @@ export * from "@coze-editor/core";
|
|
|
124
175
|
export {
|
|
125
176
|
EditorProvider,
|
|
126
177
|
Renderer,
|
|
178
|
+
connector,
|
|
127
179
|
createRenderer,
|
|
128
180
|
useEditor,
|
|
129
181
|
useInjector
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/renderer.tsx","../../src/provider.tsx","../../src/create-renderer.tsx","../../src/index.ts"],"sourcesContent":["// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, {\n type CSSProperties,\n useEffect,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\n\nimport {\n type EditorPluginSpec,\n type InferEditorAPIFromPlugins,\n type InferEvents,\n type InferValues,\n create,\n} from '@coze-editor/core';\nimport { type Extension } from '@codemirror/state';\n\nimport { useInjector, useSetEditor } from './provider';\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (\n k: infer I,\n) => void\n ? I\n : never;\n\ntype InferReactEvents<T extends Record<string, any>> = UnionToIntersection<{\n [K in keyof T as `on${Capitalize<string & K>}`]?: (e: T[K]) => void;\n}>;\n\nfunction firstLetterToUppercase(str: string) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n}\n\ntype InferRendererProps<T extends EditorPluginSpec<string, any, any>[]> = {\n domProps?: {\n style?: CSSProperties;\n className?: string;\n };\n defaultValue?: string;\n root?: Document | ShadowRoot;\n options?: Partial<InferValues<T[number]>>;\n extensions?: Extension[];\n didMount?: (api: InferEditorAPIFromPlugins<T>) => void;\n children?: ReactNode;\n} & (InferEvents<T[number]> extends Record<string, any>\n ? InferReactEvents<InferEvents<T[number]>>\n : unknown);\n\nfunction Renderer<T extends EditorPluginSpec<string, any, any>[]>(\n props: { plugins: T } & InferRendererProps<T>,\n) {\n const {\n plugins,\n defaultValue,\n root,\n options,\n domProps = {},\n extensions,\n didMount,\n children,\n } = props;\n\n const [api, setAPI] = useState<any>();\n const ref = useRef(null);\n const apiRef = useRef<any>(null);\n const propsRef = useRef<typeof props | null>(null);\n const setEditor = useSetEditor();\n const injector = useInjector();\n\n propsRef.current = props;\n\n useEffect(() => {\n const { render, eventKeys } = create({\n plugins,\n injector,\n });\n\n const exported = render({\n parent: ref.current!,\n root,\n defaultValue,\n options: options ?? {},\n extensions,\n });\n\n apiRef.current = exported;\n\n eventKeys.forEach((eventName: any) => {\n exported.$on(eventName, e => {\n const handler = (propsRef.current as any)?.[\n `on${firstLetterToUppercase(eventName)}`\n ];\n if (typeof handler === 'function') {\n handler(e);\n }\n });\n });\n\n if (typeof didMount === 'function') {\n didMount(exported);\n }\n\n setAPI(exported);\n\n return () => {\n exported.$destroy();\n };\n }, []);\n\n useEffect(() => {\n if (!api || !setEditor) {\n return;\n }\n\n setEditor(api);\n }, [api, setEditor]);\n\n useEffect(() => {\n apiRef.current.$set(props.options ?? {});\n }, [props.options]);\n\n return (\n <>\n <div {...domProps} ref={ref} />\n {children}\n </>\n );\n}\n\nexport { Renderer };\n\nexport type { InferRendererProps };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport React, {\n type Dispatch,\n type ReactNode,\n createContext,\n useContext,\n useRef,\n useState,\n} from 'react';\n\nimport { type Injector, createInjector } from '@coze-editor/core';\n\nconst InternalEditorContext = createContext<unknown>(null);\nconst InternalSetEditorContext = createContext<Dispatch<any> | null>(null);\nconst InjectorContext = createContext<Injector | undefined>(undefined);\n\nfunction useEditor<T>(): T {\n return useContext(InternalEditorContext) as T;\n}\n\nfunction useSetEditor(): Dispatch<any> | null {\n return useContext(InternalSetEditorContext);\n}\n\nfunction useInjector(): Injector {\n const injector = useContext(InjectorContext);\n\n if (!injector) {\n throw new Error('useInjector should be used in EditorProvider');\n }\n\n return injector;\n}\n\nfunction EditorProvider({ children }: { children?: ReactNode }) {\n const [editor, setEditor] = useState(null);\n const injectorRef = useRef<Injector | null>(null);\n\n if (!injectorRef.current) {\n injectorRef.current = createInjector();\n }\n\n return (\n <InternalEditorContext.Provider value={editor}>\n <InternalSetEditorContext.Provider value={setEditor}>\n <InjectorContext.Provider value={injectorRef.current}>\n {children}\n </InjectorContext.Provider>\n </InternalSetEditorContext.Provider>\n </InternalEditorContext.Provider>\n );\n}\n\nexport { EditorProvider, useEditor, useSetEditor, useInjector };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport React, { useMemo } from 'react';\n\nimport { type EditorPluginSpec } from '@coze-editor/core';\nimport { type Extension } from '@codemirror/state';\n\nimport { Renderer, type InferRendererProps } from './renderer';\n\nconst OriginRenderer: (props: any) => JSX.Element = Renderer;\n\nfunction createRenderer<T extends EditorPluginSpec<string, any, any>[]>(\n plugins: T,\n builtinExtensions?: Extension[],\n) {\n return function CustomRenderer(props: InferRendererProps<T>) {\n const userExtensions = props.extensions;\n\n const extensions: Extension[] = useMemo(\n () => [...(builtinExtensions ?? []), ...(userExtensions ?? [])],\n [userExtensions],\n );\n\n return (\n <OriginRenderer {...props} extensions={extensions} plugins={plugins} />\n );\n };\n}\n\nexport { createRenderer };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nexport { Renderer, type InferRendererProps } from './renderer';\n\nexport { createRenderer } from './create-renderer';\n\nexport { EditorProvider, useEditor, useInjector } from './provider';\n\nexport * from '@coze-editor/core';\n"],"mappings":"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","names":["React","useRef","useState","useState","useRef","React","React","React"]}
|
|
1
|
+
{"version":3,"sources":["../../src/renderer.tsx","../../src/provider.tsx","../../src/connector.tsx","../../src/create-renderer.tsx","../../src/index.ts"],"sourcesContent":["// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, {\n type CSSProperties,\n useEffect,\n useRef,\n useState,\n type ReactNode,\n useMemo,\n} from 'react';\n\nimport { FacetCombineStrategy } from '@coze-editor/utils';\nimport {\n type EditorPluginSpec,\n type InferEditorAPIFromPlugins,\n type InferEvents,\n type InferValues,\n create,\n} from '@coze-editor/core';\nimport { Facet, type Extension } from '@codemirror/state';\n\nimport { useInjector, useSetEditor } from './provider';\nimport { type Connector, createPortalConnector } from './connector';\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (\n k: infer I,\n) => void\n ? I\n : never;\n\ntype InferReactEvents<T extends Record<string, any>> = UnionToIntersection<{\n [K in keyof T as `on${Capitalize<string & K>}`]?: (e: T[K]) => void;\n}>;\n\nfunction firstLetterToUppercase(str: string) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n}\n\ntype InferRendererProps<T extends EditorPluginSpec<string, any, any>[]> = {\n domProps?: {\n style?: CSSProperties;\n className?: string;\n };\n defaultValue?: string;\n root?: Document | ShadowRoot;\n options?: Partial<InferValues<T[number]>>;\n extensions?: Extension[];\n didMount?: (api: InferEditorAPIFromPlugins<T>) => void;\n children?: ReactNode;\n} & (InferEvents<T[number]> extends Record<string, any>\n ? InferReactEvents<InferEvents<T[number]>>\n : unknown);\n\nconst connector = Facet.define<Connector, Connector>({\n combine: FacetCombineStrategy.First,\n});\n\nfunction Renderer<T extends EditorPluginSpec<string, any, any>[]>(\n props: { plugins: T } & InferRendererProps<T>,\n) {\n const {\n plugins,\n defaultValue,\n root,\n options,\n domProps = {},\n extensions,\n didMount,\n children,\n } = props;\n\n const [api, setAPI] = useState<any>();\n const ref = useRef(null);\n const apiRef = useRef<any>(null);\n const propsRef = useRef<typeof props | null>(null);\n const setEditor = useSetEditor();\n const injector = useInjector();\n\n const pc = useMemo(() => createPortalConnector(), []);\n const connectorRef = useRef<Connector>(pc);\n connectorRef.current = pc;\n const { Portal } = pc;\n\n propsRef.current = props;\n\n useEffect(() => {\n const { render, eventKeys } = create({\n plugins,\n injector,\n });\n\n const exported = render({\n parent: ref.current!,\n root,\n defaultValue,\n options: options ?? {},\n extensions: [connector.of(connectorRef.current), ...(extensions ?? [])],\n });\n\n apiRef.current = exported;\n\n eventKeys.forEach((eventName: any) => {\n exported.$on(eventName, e => {\n const handler = (propsRef.current as any)?.[\n `on${firstLetterToUppercase(eventName)}`\n ];\n if (typeof handler === 'function') {\n handler(e);\n }\n });\n });\n\n if (typeof didMount === 'function') {\n didMount(exported);\n }\n\n setAPI(exported);\n\n return () => {\n exported.$destroy();\n };\n }, []);\n\n useEffect(() => {\n if (!api || !setEditor) {\n return;\n }\n\n setEditor(api);\n }, [api, setEditor]);\n\n useEffect(() => {\n apiRef.current.$set(props.options ?? {});\n }, [props.options]);\n\n return (\n <>\n <div {...domProps} ref={ref} />\n {children}\n <Portal />\n </>\n );\n}\n\nexport { Renderer, connector };\n\nexport type { InferRendererProps };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport React, {\n type Dispatch,\n type ReactNode,\n createContext,\n useContext,\n useRef,\n useState,\n} from 'react';\n\nimport { type Injector, createInjector } from '@coze-editor/core';\n\nconst InternalEditorContext = createContext<unknown>(null);\nconst InternalSetEditorContext = createContext<Dispatch<any> | null>(null);\nconst InjectorContext = createContext<Injector | undefined>(undefined);\n\nfunction useEditor<T>(): T {\n return useContext(InternalEditorContext) as T;\n}\n\nfunction useSetEditor(): Dispatch<any> | null {\n return useContext(InternalSetEditorContext);\n}\n\nfunction useInjector(): Injector {\n const injector = useContext(InjectorContext);\n\n if (!injector) {\n throw new Error('useInjector should be used in EditorProvider');\n }\n\n return injector;\n}\n\nfunction EditorProvider({ children }: { children?: ReactNode }) {\n const [editor, setEditor] = useState(null);\n const injectorRef = useRef<Injector | null>(null);\n\n if (!injectorRef.current) {\n injectorRef.current = createInjector();\n }\n\n return (\n <InternalEditorContext.Provider value={editor}>\n <InternalSetEditorContext.Provider value={setEditor}>\n <InjectorContext.Provider value={injectorRef.current}>\n {children}\n </InjectorContext.Provider>\n </InternalSetEditorContext.Provider>\n </InternalEditorContext.Provider>\n );\n}\n\nexport { EditorProvider, useEditor, useSetEditor, useInjector };\n","import React, { useState, useCallback, Fragment } from 'react';\nimport type { ReactPortal } from 'react';\n\ntype PortalItem = {\n id: string;\n portal: ReactPortal;\n};\n\nfunction createPortalConnector() {\n let add = (id: string, portal: ReactPortal) => {};\n let remove = (id: string) => {};\n\n function connect(id: string, portal: ReactPortal) {\n add(id, portal);\n }\n\n function disconnect(id: string) {\n remove(id);\n }\n\n function Portal() {\n const [items, setItems] = useState<PortalItem[]>([]);\n\n const addItem = useCallback((id: string, portal: ReactPortal) => {\n setItems(prevItems => {\n const nextItems = [...prevItems];\n const index = nextItems.findIndex(item => item.id === id);\n if (index > -1) {\n nextItems[index] = { id, portal };\n } else {\n nextItems.push({ id, portal });\n }\n return nextItems;\n });\n }, []);\n const removeItem = useCallback((id: string) => {\n setItems(items => items.filter(item => item.id !== id));\n }, []);\n\n add = addItem;\n remove = removeItem;\n\n return <Fragment>{items.map(item => item.portal)}</Fragment>;\n }\n\n return {\n connect,\n disconnect,\n Portal,\n };\n}\n\ntype Connector = ReturnType<typeof createPortalConnector>;\n\nexport { createPortalConnector };\nexport type { Connector };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport React, { useMemo } from 'react';\n\nimport { type EditorPluginSpec } from '@coze-editor/core';\nimport { type Extension } from '@codemirror/state';\n\nimport { Renderer, type InferRendererProps } from './renderer';\n\nconst OriginRenderer: (props: any) => JSX.Element = Renderer;\n\nfunction createRenderer<T extends EditorPluginSpec<string, any, any>[]>(\n plugins: T,\n builtinExtensions?: Extension[],\n) {\n return function CustomRenderer(props: InferRendererProps<T>) {\n const userExtensions = props.extensions;\n\n const extensions: Extension[] = useMemo(\n () => [...(builtinExtensions ?? []), ...(userExtensions ?? [])],\n [userExtensions],\n );\n\n return (\n <OriginRenderer {...props} extensions={extensions} plugins={plugins} />\n );\n };\n}\n\nexport { createRenderer };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nexport { Renderer, connector, type InferRendererProps } from './renderer';\n\nexport { createRenderer } from './create-renderer';\n\nexport { EditorProvider, useEditor, useInjector } from './provider';\n\nexport * from '@coze-editor/core';\n"],"mappings":"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","names":["React","useRef","useState","React","useState","items","useState","useRef","React","React","useMemo","useMemo","React"]}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { CSSProperties, ReactNode } from 'react';
|
|
2
|
+
import React, { CSSProperties, ReactNode } from 'react';
|
|
3
3
|
import { EditorPluginSpec, InferValues, InferEditorAPIFromPlugins, InferEvents, Injector } from '@coze-editor/core';
|
|
4
4
|
export * from '@coze-editor/core';
|
|
5
|
-
import { Extension } from '@codemirror/state';
|
|
5
|
+
import { Extension, Facet } from '@codemirror/state';
|
|
6
6
|
|
|
7
7
|
type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
8
8
|
type InferReactEvents<T extends Record<string, any>> = UnionToIntersection<{
|
|
@@ -20,6 +20,15 @@ type InferRendererProps<T extends EditorPluginSpec<string, any, any>[]> = {
|
|
|
20
20
|
didMount?: (api: InferEditorAPIFromPlugins<T>) => void;
|
|
21
21
|
children?: ReactNode;
|
|
22
22
|
} & (InferEvents<T[number]> extends Record<string, any> ? InferReactEvents<InferEvents<T[number]>> : unknown);
|
|
23
|
+
declare const connector: Facet<{
|
|
24
|
+
connect: (id: string, portal: React.ReactPortal) => void;
|
|
25
|
+
disconnect: (id: string) => void;
|
|
26
|
+
Portal: () => react_jsx_runtime.JSX.Element;
|
|
27
|
+
}, {
|
|
28
|
+
connect: (id: string, portal: React.ReactPortal) => void;
|
|
29
|
+
disconnect: (id: string) => void;
|
|
30
|
+
Portal: () => react_jsx_runtime.JSX.Element;
|
|
31
|
+
}>;
|
|
23
32
|
declare function Renderer<T extends EditorPluginSpec<string, any, any>[]>(props: {
|
|
24
33
|
plugins: T;
|
|
25
34
|
} & InferRendererProps<T>): react_jsx_runtime.JSX.Element;
|
|
@@ -32,4 +41,4 @@ declare function EditorProvider({ children }: {
|
|
|
32
41
|
children?: ReactNode;
|
|
33
42
|
}): react_jsx_runtime.JSX.Element;
|
|
34
43
|
|
|
35
|
-
export { EditorProvider, type InferRendererProps, Renderer, createRenderer, useEditor, useInjector };
|
|
44
|
+
export { EditorProvider, type InferRendererProps, Renderer, connector, createRenderer, useEditor, useInjector };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { CSSProperties, ReactNode } from 'react';
|
|
2
|
+
import React, { CSSProperties, ReactNode } from 'react';
|
|
3
3
|
import { EditorPluginSpec, InferValues, InferEditorAPIFromPlugins, InferEvents, Injector } from '@coze-editor/core';
|
|
4
4
|
export * from '@coze-editor/core';
|
|
5
|
-
import { Extension } from '@codemirror/state';
|
|
5
|
+
import { Extension, Facet } from '@codemirror/state';
|
|
6
6
|
|
|
7
7
|
type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
8
8
|
type InferReactEvents<T extends Record<string, any>> = UnionToIntersection<{
|
|
@@ -20,6 +20,15 @@ type InferRendererProps<T extends EditorPluginSpec<string, any, any>[]> = {
|
|
|
20
20
|
didMount?: (api: InferEditorAPIFromPlugins<T>) => void;
|
|
21
21
|
children?: ReactNode;
|
|
22
22
|
} & (InferEvents<T[number]> extends Record<string, any> ? InferReactEvents<InferEvents<T[number]>> : unknown);
|
|
23
|
+
declare const connector: Facet<{
|
|
24
|
+
connect: (id: string, portal: React.ReactPortal) => void;
|
|
25
|
+
disconnect: (id: string) => void;
|
|
26
|
+
Portal: () => react_jsx_runtime.JSX.Element;
|
|
27
|
+
}, {
|
|
28
|
+
connect: (id: string, portal: React.ReactPortal) => void;
|
|
29
|
+
disconnect: (id: string) => void;
|
|
30
|
+
Portal: () => react_jsx_runtime.JSX.Element;
|
|
31
|
+
}>;
|
|
23
32
|
declare function Renderer<T extends EditorPluginSpec<string, any, any>[]>(props: {
|
|
24
33
|
plugins: T;
|
|
25
34
|
} & InferRendererProps<T>): react_jsx_runtime.JSX.Element;
|
|
@@ -32,4 +41,4 @@ declare function EditorProvider({ children }: {
|
|
|
32
41
|
children?: ReactNode;
|
|
33
42
|
}): react_jsx_runtime.JSX.Element;
|
|
34
43
|
|
|
35
|
-
export { EditorProvider, type InferRendererProps, Renderer, createRenderer, useEditor, useInjector };
|
|
44
|
+
export { EditorProvider, type InferRendererProps, Renderer, connector, createRenderer, useEditor, useInjector };
|
package/dist/index.js
CHANGED
|
@@ -32,6 +32,7 @@ var index_exports = {};
|
|
|
32
32
|
__export(index_exports, {
|
|
33
33
|
EditorProvider: () => EditorProvider,
|
|
34
34
|
Renderer: () => Renderer,
|
|
35
|
+
connector: () => connector,
|
|
35
36
|
createRenderer: () => createRenderer,
|
|
36
37
|
useEditor: () => useEditor,
|
|
37
38
|
useInjector: () => useInjector
|
|
@@ -39,8 +40,10 @@ __export(index_exports, {
|
|
|
39
40
|
module.exports = __toCommonJS(index_exports);
|
|
40
41
|
|
|
41
42
|
// src/renderer.tsx
|
|
42
|
-
var
|
|
43
|
+
var import_react3 = __toESM(require("react"));
|
|
44
|
+
var import_utils = require("@coze-editor/utils");
|
|
43
45
|
var import_core2 = require("@coze-editor/core");
|
|
46
|
+
var import_state = require("@codemirror/state");
|
|
44
47
|
|
|
45
48
|
// src/provider.tsx
|
|
46
49
|
var import_react = __toESM(require("react"));
|
|
@@ -70,10 +73,54 @@ function EditorProvider({ children }) {
|
|
|
70
73
|
return /* @__PURE__ */ import_react.default.createElement(InternalEditorContext.Provider, { value: editor }, /* @__PURE__ */ import_react.default.createElement(InternalSetEditorContext.Provider, { value: setEditor }, /* @__PURE__ */ import_react.default.createElement(InjectorContext.Provider, { value: injectorRef.current }, children)));
|
|
71
74
|
}
|
|
72
75
|
|
|
76
|
+
// src/connector.tsx
|
|
77
|
+
var import_react2 = __toESM(require("react"));
|
|
78
|
+
function createPortalConnector() {
|
|
79
|
+
let add = (id, portal) => {
|
|
80
|
+
};
|
|
81
|
+
let remove = (id) => {
|
|
82
|
+
};
|
|
83
|
+
function connect(id, portal) {
|
|
84
|
+
add(id, portal);
|
|
85
|
+
}
|
|
86
|
+
function disconnect(id) {
|
|
87
|
+
remove(id);
|
|
88
|
+
}
|
|
89
|
+
function Portal() {
|
|
90
|
+
const [items, setItems] = (0, import_react2.useState)([]);
|
|
91
|
+
const addItem = (0, import_react2.useCallback)((id, portal) => {
|
|
92
|
+
setItems((prevItems) => {
|
|
93
|
+
const nextItems = [...prevItems];
|
|
94
|
+
const index = nextItems.findIndex((item) => item.id === id);
|
|
95
|
+
if (index > -1) {
|
|
96
|
+
nextItems[index] = { id, portal };
|
|
97
|
+
} else {
|
|
98
|
+
nextItems.push({ id, portal });
|
|
99
|
+
}
|
|
100
|
+
return nextItems;
|
|
101
|
+
});
|
|
102
|
+
}, []);
|
|
103
|
+
const removeItem = (0, import_react2.useCallback)((id) => {
|
|
104
|
+
setItems((items2) => items2.filter((item) => item.id !== id));
|
|
105
|
+
}, []);
|
|
106
|
+
add = addItem;
|
|
107
|
+
remove = removeItem;
|
|
108
|
+
return /* @__PURE__ */ import_react2.default.createElement(import_react2.Fragment, null, items.map((item) => item.portal));
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
connect,
|
|
112
|
+
disconnect,
|
|
113
|
+
Portal
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
|
|
73
117
|
// src/renderer.tsx
|
|
74
118
|
function firstLetterToUppercase(str) {
|
|
75
119
|
return str.charAt(0).toUpperCase() + str.substring(1);
|
|
76
120
|
}
|
|
121
|
+
var connector = import_state.Facet.define({
|
|
122
|
+
combine: import_utils.FacetCombineStrategy.First
|
|
123
|
+
});
|
|
77
124
|
function Renderer(props) {
|
|
78
125
|
const {
|
|
79
126
|
plugins,
|
|
@@ -85,14 +132,18 @@ function Renderer(props) {
|
|
|
85
132
|
didMount,
|
|
86
133
|
children
|
|
87
134
|
} = props;
|
|
88
|
-
const [api, setAPI] = (0,
|
|
89
|
-
const ref = (0,
|
|
90
|
-
const apiRef = (0,
|
|
91
|
-
const propsRef = (0,
|
|
135
|
+
const [api, setAPI] = (0, import_react3.useState)();
|
|
136
|
+
const ref = (0, import_react3.useRef)(null);
|
|
137
|
+
const apiRef = (0, import_react3.useRef)(null);
|
|
138
|
+
const propsRef = (0, import_react3.useRef)(null);
|
|
92
139
|
const setEditor = useSetEditor();
|
|
93
140
|
const injector = useInjector();
|
|
141
|
+
const pc = (0, import_react3.useMemo)(() => createPortalConnector(), []);
|
|
142
|
+
const connectorRef = (0, import_react3.useRef)(pc);
|
|
143
|
+
connectorRef.current = pc;
|
|
144
|
+
const { Portal } = pc;
|
|
94
145
|
propsRef.current = props;
|
|
95
|
-
(0,
|
|
146
|
+
(0, import_react3.useEffect)(() => {
|
|
96
147
|
const { render, eventKeys } = (0, import_core2.create)({
|
|
97
148
|
plugins,
|
|
98
149
|
injector
|
|
@@ -102,7 +153,7 @@ function Renderer(props) {
|
|
|
102
153
|
root,
|
|
103
154
|
defaultValue,
|
|
104
155
|
options: options ?? {},
|
|
105
|
-
extensions
|
|
156
|
+
extensions: [connector.of(connectorRef.current), ...extensions ?? []]
|
|
106
157
|
});
|
|
107
158
|
apiRef.current = exported;
|
|
108
159
|
eventKeys.forEach((eventName) => {
|
|
@@ -122,29 +173,29 @@ function Renderer(props) {
|
|
|
122
173
|
exported.$destroy();
|
|
123
174
|
};
|
|
124
175
|
}, []);
|
|
125
|
-
(0,
|
|
176
|
+
(0, import_react3.useEffect)(() => {
|
|
126
177
|
if (!api || !setEditor) {
|
|
127
178
|
return;
|
|
128
179
|
}
|
|
129
180
|
setEditor(api);
|
|
130
181
|
}, [api, setEditor]);
|
|
131
|
-
(0,
|
|
182
|
+
(0, import_react3.useEffect)(() => {
|
|
132
183
|
apiRef.current.$set(props.options ?? {});
|
|
133
184
|
}, [props.options]);
|
|
134
|
-
return /* @__PURE__ */
|
|
185
|
+
return /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, /* @__PURE__ */ import_react3.default.createElement("div", { ...domProps, ref }), children, /* @__PURE__ */ import_react3.default.createElement(Portal, null));
|
|
135
186
|
}
|
|
136
187
|
|
|
137
188
|
// src/create-renderer.tsx
|
|
138
|
-
var
|
|
189
|
+
var import_react4 = __toESM(require("react"));
|
|
139
190
|
var OriginRenderer = Renderer;
|
|
140
191
|
function createRenderer(plugins, builtinExtensions) {
|
|
141
192
|
return function CustomRenderer(props) {
|
|
142
193
|
const userExtensions = props.extensions;
|
|
143
|
-
const extensions = (0,
|
|
194
|
+
const extensions = (0, import_react4.useMemo)(
|
|
144
195
|
() => [...builtinExtensions ?? [], ...userExtensions ?? []],
|
|
145
196
|
[userExtensions]
|
|
146
197
|
);
|
|
147
|
-
return /* @__PURE__ */
|
|
198
|
+
return /* @__PURE__ */ import_react4.default.createElement(OriginRenderer, { ...props, extensions, plugins });
|
|
148
199
|
};
|
|
149
200
|
}
|
|
150
201
|
|
|
@@ -154,6 +205,7 @@ __reExport(index_exports, require("@coze-editor/core"), module.exports);
|
|
|
154
205
|
0 && (module.exports = {
|
|
155
206
|
EditorProvider,
|
|
156
207
|
Renderer,
|
|
208
|
+
connector,
|
|
157
209
|
createRenderer,
|
|
158
210
|
useEditor,
|
|
159
211
|
useInjector,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/renderer.tsx","../src/provider.tsx","../src/create-renderer.tsx"],"sourcesContent":["// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nexport { Renderer, type InferRendererProps } from './renderer';\n\nexport { createRenderer } from './create-renderer';\n\nexport { EditorProvider, useEditor, useInjector } from './provider';\n\nexport * from '@coze-editor/core';\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, {\n type CSSProperties,\n useEffect,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\n\nimport {\n type EditorPluginSpec,\n type InferEditorAPIFromPlugins,\n type InferEvents,\n type InferValues,\n create,\n} from '@coze-editor/core';\nimport { type Extension } from '@codemirror/state';\n\nimport { useInjector, useSetEditor } from './provider';\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (\n k: infer I,\n) => void\n ? I\n : never;\n\ntype InferReactEvents<T extends Record<string, any>> = UnionToIntersection<{\n [K in keyof T as `on${Capitalize<string & K>}`]?: (e: T[K]) => void;\n}>;\n\nfunction firstLetterToUppercase(str: string) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n}\n\ntype InferRendererProps<T extends EditorPluginSpec<string, any, any>[]> = {\n domProps?: {\n style?: CSSProperties;\n className?: string;\n };\n defaultValue?: string;\n root?: Document | ShadowRoot;\n options?: Partial<InferValues<T[number]>>;\n extensions?: Extension[];\n didMount?: (api: InferEditorAPIFromPlugins<T>) => void;\n children?: ReactNode;\n} & (InferEvents<T[number]> extends Record<string, any>\n ? InferReactEvents<InferEvents<T[number]>>\n : unknown);\n\nfunction Renderer<T extends EditorPluginSpec<string, any, any>[]>(\n props: { plugins: T } & InferRendererProps<T>,\n) {\n const {\n plugins,\n defaultValue,\n root,\n options,\n domProps = {},\n extensions,\n didMount,\n children,\n } = props;\n\n const [api, setAPI] = useState<any>();\n const ref = useRef(null);\n const apiRef = useRef<any>(null);\n const propsRef = useRef<typeof props | null>(null);\n const setEditor = useSetEditor();\n const injector = useInjector();\n\n propsRef.current = props;\n\n useEffect(() => {\n const { render, eventKeys } = create({\n plugins,\n injector,\n });\n\n const exported = render({\n parent: ref.current!,\n root,\n defaultValue,\n options: options ?? {},\n extensions,\n });\n\n apiRef.current = exported;\n\n eventKeys.forEach((eventName: any) => {\n exported.$on(eventName, e => {\n const handler = (propsRef.current as any)?.[\n `on${firstLetterToUppercase(eventName)}`\n ];\n if (typeof handler === 'function') {\n handler(e);\n }\n });\n });\n\n if (typeof didMount === 'function') {\n didMount(exported);\n }\n\n setAPI(exported);\n\n return () => {\n exported.$destroy();\n };\n }, []);\n\n useEffect(() => {\n if (!api || !setEditor) {\n return;\n }\n\n setEditor(api);\n }, [api, setEditor]);\n\n useEffect(() => {\n apiRef.current.$set(props.options ?? {});\n }, [props.options]);\n\n return (\n <>\n <div {...domProps} ref={ref} />\n {children}\n </>\n );\n}\n\nexport { Renderer };\n\nexport type { InferRendererProps };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport React, {\n type Dispatch,\n type ReactNode,\n createContext,\n useContext,\n useRef,\n useState,\n} from 'react';\n\nimport { type Injector, createInjector } from '@coze-editor/core';\n\nconst InternalEditorContext = createContext<unknown>(null);\nconst InternalSetEditorContext = createContext<Dispatch<any> | null>(null);\nconst InjectorContext = createContext<Injector | undefined>(undefined);\n\nfunction useEditor<T>(): T {\n return useContext(InternalEditorContext) as T;\n}\n\nfunction useSetEditor(): Dispatch<any> | null {\n return useContext(InternalSetEditorContext);\n}\n\nfunction useInjector(): Injector {\n const injector = useContext(InjectorContext);\n\n if (!injector) {\n throw new Error('useInjector should be used in EditorProvider');\n }\n\n return injector;\n}\n\nfunction EditorProvider({ children }: { children?: ReactNode }) {\n const [editor, setEditor] = useState(null);\n const injectorRef = useRef<Injector | null>(null);\n\n if (!injectorRef.current) {\n injectorRef.current = createInjector();\n }\n\n return (\n <InternalEditorContext.Provider value={editor}>\n <InternalSetEditorContext.Provider value={setEditor}>\n <InjectorContext.Provider value={injectorRef.current}>\n {children}\n </InjectorContext.Provider>\n </InternalSetEditorContext.Provider>\n </InternalEditorContext.Provider>\n );\n}\n\nexport { EditorProvider, useEditor, useSetEditor, useInjector };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport React, { useMemo } from 'react';\n\nimport { type EditorPluginSpec } from '@coze-editor/core';\nimport { type Extension } from '@codemirror/state';\n\nimport { Renderer, type InferRendererProps } from './renderer';\n\nconst OriginRenderer: (props: any) => JSX.Element = Renderer;\n\nfunction createRenderer<T extends EditorPluginSpec<string, any, any>[]>(\n plugins: T,\n builtinExtensions?: Extension[],\n) {\n return function CustomRenderer(props: InferRendererProps<T>) {\n const userExtensions = props.extensions;\n\n const extensions: Extension[] = useMemo(\n () => [...(builtinExtensions ?? []), ...(userExtensions ?? [])],\n [userExtensions],\n );\n\n return (\n <OriginRenderer {...props} extensions={extensions} plugins={plugins} />\n );\n };\n}\n\nexport { createRenderer };\n"],"mappings":"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","names":["import_react","import_core","React","React","import_react","React"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/renderer.tsx","../src/provider.tsx","../src/connector.tsx","../src/create-renderer.tsx"],"sourcesContent":["// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nexport { Renderer, connector, type InferRendererProps } from './renderer';\n\nexport { createRenderer } from './create-renderer';\n\nexport { EditorProvider, useEditor, useInjector } from './provider';\n\nexport * from '@coze-editor/core';\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, {\n type CSSProperties,\n useEffect,\n useRef,\n useState,\n type ReactNode,\n useMemo,\n} from 'react';\n\nimport { FacetCombineStrategy } from '@coze-editor/utils';\nimport {\n type EditorPluginSpec,\n type InferEditorAPIFromPlugins,\n type InferEvents,\n type InferValues,\n create,\n} from '@coze-editor/core';\nimport { Facet, type Extension } from '@codemirror/state';\n\nimport { useInjector, useSetEditor } from './provider';\nimport { type Connector, createPortalConnector } from './connector';\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (\n k: infer I,\n) => void\n ? I\n : never;\n\ntype InferReactEvents<T extends Record<string, any>> = UnionToIntersection<{\n [K in keyof T as `on${Capitalize<string & K>}`]?: (e: T[K]) => void;\n}>;\n\nfunction firstLetterToUppercase(str: string) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n}\n\ntype InferRendererProps<T extends EditorPluginSpec<string, any, any>[]> = {\n domProps?: {\n style?: CSSProperties;\n className?: string;\n };\n defaultValue?: string;\n root?: Document | ShadowRoot;\n options?: Partial<InferValues<T[number]>>;\n extensions?: Extension[];\n didMount?: (api: InferEditorAPIFromPlugins<T>) => void;\n children?: ReactNode;\n} & (InferEvents<T[number]> extends Record<string, any>\n ? InferReactEvents<InferEvents<T[number]>>\n : unknown);\n\nconst connector = Facet.define<Connector, Connector>({\n combine: FacetCombineStrategy.First,\n});\n\nfunction Renderer<T extends EditorPluginSpec<string, any, any>[]>(\n props: { plugins: T } & InferRendererProps<T>,\n) {\n const {\n plugins,\n defaultValue,\n root,\n options,\n domProps = {},\n extensions,\n didMount,\n children,\n } = props;\n\n const [api, setAPI] = useState<any>();\n const ref = useRef(null);\n const apiRef = useRef<any>(null);\n const propsRef = useRef<typeof props | null>(null);\n const setEditor = useSetEditor();\n const injector = useInjector();\n\n const pc = useMemo(() => createPortalConnector(), []);\n const connectorRef = useRef<Connector>(pc);\n connectorRef.current = pc;\n const { Portal } = pc;\n\n propsRef.current = props;\n\n useEffect(() => {\n const { render, eventKeys } = create({\n plugins,\n injector,\n });\n\n const exported = render({\n parent: ref.current!,\n root,\n defaultValue,\n options: options ?? {},\n extensions: [connector.of(connectorRef.current), ...(extensions ?? [])],\n });\n\n apiRef.current = exported;\n\n eventKeys.forEach((eventName: any) => {\n exported.$on(eventName, e => {\n const handler = (propsRef.current as any)?.[\n `on${firstLetterToUppercase(eventName)}`\n ];\n if (typeof handler === 'function') {\n handler(e);\n }\n });\n });\n\n if (typeof didMount === 'function') {\n didMount(exported);\n }\n\n setAPI(exported);\n\n return () => {\n exported.$destroy();\n };\n }, []);\n\n useEffect(() => {\n if (!api || !setEditor) {\n return;\n }\n\n setEditor(api);\n }, [api, setEditor]);\n\n useEffect(() => {\n apiRef.current.$set(props.options ?? {});\n }, [props.options]);\n\n return (\n <>\n <div {...domProps} ref={ref} />\n {children}\n <Portal />\n </>\n );\n}\n\nexport { Renderer, connector };\n\nexport type { InferRendererProps };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport React, {\n type Dispatch,\n type ReactNode,\n createContext,\n useContext,\n useRef,\n useState,\n} from 'react';\n\nimport { type Injector, createInjector } from '@coze-editor/core';\n\nconst InternalEditorContext = createContext<unknown>(null);\nconst InternalSetEditorContext = createContext<Dispatch<any> | null>(null);\nconst InjectorContext = createContext<Injector | undefined>(undefined);\n\nfunction useEditor<T>(): T {\n return useContext(InternalEditorContext) as T;\n}\n\nfunction useSetEditor(): Dispatch<any> | null {\n return useContext(InternalSetEditorContext);\n}\n\nfunction useInjector(): Injector {\n const injector = useContext(InjectorContext);\n\n if (!injector) {\n throw new Error('useInjector should be used in EditorProvider');\n }\n\n return injector;\n}\n\nfunction EditorProvider({ children }: { children?: ReactNode }) {\n const [editor, setEditor] = useState(null);\n const injectorRef = useRef<Injector | null>(null);\n\n if (!injectorRef.current) {\n injectorRef.current = createInjector();\n }\n\n return (\n <InternalEditorContext.Provider value={editor}>\n <InternalSetEditorContext.Provider value={setEditor}>\n <InjectorContext.Provider value={injectorRef.current}>\n {children}\n </InjectorContext.Provider>\n </InternalSetEditorContext.Provider>\n </InternalEditorContext.Provider>\n );\n}\n\nexport { EditorProvider, useEditor, useSetEditor, useInjector };\n","import React, { useState, useCallback, Fragment } from 'react';\nimport type { ReactPortal } from 'react';\n\ntype PortalItem = {\n id: string;\n portal: ReactPortal;\n};\n\nfunction createPortalConnector() {\n let add = (id: string, portal: ReactPortal) => {};\n let remove = (id: string) => {};\n\n function connect(id: string, portal: ReactPortal) {\n add(id, portal);\n }\n\n function disconnect(id: string) {\n remove(id);\n }\n\n function Portal() {\n const [items, setItems] = useState<PortalItem[]>([]);\n\n const addItem = useCallback((id: string, portal: ReactPortal) => {\n setItems(prevItems => {\n const nextItems = [...prevItems];\n const index = nextItems.findIndex(item => item.id === id);\n if (index > -1) {\n nextItems[index] = { id, portal };\n } else {\n nextItems.push({ id, portal });\n }\n return nextItems;\n });\n }, []);\n const removeItem = useCallback((id: string) => {\n setItems(items => items.filter(item => item.id !== id));\n }, []);\n\n add = addItem;\n remove = removeItem;\n\n return <Fragment>{items.map(item => item.portal)}</Fragment>;\n }\n\n return {\n connect,\n disconnect,\n Portal,\n };\n}\n\ntype Connector = ReturnType<typeof createPortalConnector>;\n\nexport { createPortalConnector };\nexport type { Connector };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport React, { useMemo } from 'react';\n\nimport { type EditorPluginSpec } from '@coze-editor/core';\nimport { type Extension } from '@codemirror/state';\n\nimport { Renderer, type InferRendererProps } from './renderer';\n\nconst OriginRenderer: (props: any) => JSX.Element = Renderer;\n\nfunction createRenderer<T extends EditorPluginSpec<string, any, any>[]>(\n plugins: T,\n builtinExtensions?: Extension[],\n) {\n return function CustomRenderer(props: InferRendererProps<T>) {\n const userExtensions = props.extensions;\n\n const extensions: Extension[] = useMemo(\n () => [...(builtinExtensions ?? []), ...(userExtensions ?? [])],\n [userExtensions],\n );\n\n return (\n <OriginRenderer {...props} extensions={extensions} plugins={plugins} />\n );\n };\n}\n\nexport { createRenderer };\n"],"mappings":"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","names":["import_react","import_core","React","import_react","items","React","React","import_react","React"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coze-editor/react",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.ab222a",
|
|
4
4
|
"description": "react",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "fengzilong",
|
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
"lint": "eslint && tsc --noEmit"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@coze-editor/core": "0.1.0-alpha.
|
|
26
|
+
"@coze-editor/core": "0.1.0-alpha.ab222a",
|
|
27
|
+
"@coze-editor/utils": "0.1.0-alpha.ab222a"
|
|
27
28
|
},
|
|
28
29
|
"devDependencies": {
|
|
29
30
|
"@codemirror/state": "^6.4.1",
|