@coze-editor/react-merge 0.1.0-alpha.d92d50 → 0.1.0-alpha.dac011
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 +6 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/esm/index.js
CHANGED
|
@@ -97,7 +97,12 @@ function MergeViewRenderer(props) {
|
|
|
97
97
|
}, [props.b.options]);
|
|
98
98
|
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", { ...domProps, ref }), children);
|
|
99
99
|
}
|
|
100
|
+
|
|
101
|
+
// src/index.ts
|
|
102
|
+
import { goToPreviousChunk, goToNextChunk } from "@codemirror/merge";
|
|
100
103
|
export {
|
|
101
|
-
MergeViewRenderer
|
|
104
|
+
MergeViewRenderer,
|
|
105
|
+
goToNextChunk,
|
|
106
|
+
goToPreviousChunk
|
|
102
107
|
};
|
|
103
108
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/renderer.tsx"],"sourcesContent":["// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport React, {\n useRef,\n useEffect,\n type CSSProperties,\n type ReactNode,\n} from 'react';\n\nimport {\n // from core\n create,\n type EditorPluginSpec,\n type InferEditorAPIFromPlugins,\n type InferValues,\n // from react\n useInjector,\n} from '@coze-editor/react';\nimport { type Extension } from '@codemirror/state';\nimport { type MergeConfig, MergeView } from '@codemirror/merge';\n\ninterface SingleEditorProps<T extends EditorPluginSpec<string, any, any>[]> {\n defaultValue?: string;\n options?: Partial<InferValues<T[number]>>;\n extensions?: Extension[];\n}\ninterface InferRendererProps<T extends EditorPluginSpec<string, any, any>[]> {\n domProps?: {\n style?: CSSProperties;\n className?: string;\n };\n mergeConfig?: MergeConfig;\n a: SingleEditorProps<T>;\n b: SingleEditorProps<T>;\n didMount?: (e: {\n a: InferEditorAPIFromPlugins<T>;\n b: InferEditorAPIFromPlugins<T>;\n }) => void;\n children?: ReactNode;\n}\n\nfunction MergeViewRenderer<T extends EditorPluginSpec<string, any, any>[]>(\n props: { plugins: T } & InferRendererProps<T>,\n) {\n const {\n plugins,\n mergeConfig,\n a,\n b,\n domProps = {},\n didMount,\n children,\n } = props;\n\n const ref = useRef(null);\n const apiRef = useRef<any>(null);\n const propsRef = useRef<any>(null);\n const injector = useInjector();\n const mergeConfigRef = useRef(mergeConfig);\n const aRef = useRef(a);\n const bRef = useRef(b);\n\n aRef.current = a;\n bRef.current = b;\n propsRef.current = props;\n\n useEffect(() => {\n const a = aRef.current;\n const b = bRef.current;\n const config = mergeConfigRef.current ?? {};\n\n const { getExtensions, createAPI, createOptions, createEvents } = create({\n plugins,\n injector,\n });\n\n const aOptions = createOptions();\n const aEvents = createEvents();\n\n const bOptions = createOptions();\n const bEvents = createEvents();\n\n const mergeView = new MergeView({\n ...config,\n a: {\n doc: a.defaultValue ?? '',\n extensions: [\n ...getExtensions(a.options ?? {}, {\n options: aOptions,\n events: aEvents,\n }),\n ...(a.extensions ?? []),\n ],\n },\n b: {\n doc: b.defaultValue ?? '',\n extensions: [\n ...getExtensions(b.options ?? {}, {\n options: bOptions,\n events: bEvents,\n }),\n ...(b.extensions ?? []),\n ],\n },\n parent: ref.current!,\n });\n\n const aAPI = createAPI({\n view: mergeView.a,\n options: aOptions,\n events: aEvents,\n });\n\n const bAPI = createAPI({\n view: mergeView.b,\n options: bOptions,\n events: bEvents,\n });\n\n apiRef.current = {\n a: aAPI,\n b: bAPI,\n };\n\n if (typeof didMount === 'function') {\n didMount({ a: aAPI, b: bAPI });\n }\n\n return () => {\n aAPI.$destroy();\n bAPI.$destroy();\n mergeView.destroy();\n };\n }, []);\n\n useEffect(() => {\n apiRef.current?.a.$set(props.a.options ?? {});\n }, [props.a.options]);\n\n useEffect(() => {\n apiRef.current?.b.$set(props.b.options ?? {});\n }, [props.b.options]);\n\n return (\n <>\n <div {...domProps} ref={ref} />\n {children}\n </>\n );\n}\n\nexport { MergeViewRenderer };\n"],"mappings":";AAGA,OAAO;AAAA,EACL;AAAA,EACA;AAAA,OAGK;AAEP;AAAA,EAEE;AAAA,EAKA;AAAA,OACK;AAEP,SAA2B,iBAAiB;AAsB5C,SAAS,kBACP,OACA;AACA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,CAAC;AAAA,IACZ;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,SAAS,OAAY,IAAI;AAC/B,QAAM,WAAW,OAAY,IAAI;AACjC,QAAM,WAAW,YAAY;AAC7B,QAAM,iBAAiB,OAAO,WAAW;AACzC,QAAM,OAAO,OAAO,CAAC;AACrB,QAAM,OAAO,OAAO,CAAC;AAErB,OAAK,UAAU;AACf,OAAK,UAAU;AACf,WAAS,UAAU;AAEnB,YAAU,MAAM;AACd,UAAMA,KAAI,KAAK;AACf,UAAMC,KAAI,KAAK;AACf,UAAM,SAAS,eAAe,WAAW,CAAC;AAE1C,UAAM,EAAE,eAAe,WAAW,eAAe,aAAa,IAAI,OAAO;AAAA,MACvE;AAAA,MACA;AAAA,IACF,CAAC;AAED,UAAM,WAAW,cAAc;AAC/B,UAAM,UAAU,aAAa;AAE7B,UAAM,WAAW,cAAc;AAC/B,UAAM,UAAU,aAAa;AAE7B,UAAM,YAAY,IAAI,UAAU;AAAA,MAC9B,GAAG;AAAA,MACH,GAAG;AAAA,QACD,KAAKD,GAAE,gBAAgB;AAAA,QACvB,YAAY;AAAA,UACV,GAAG,cAAcA,GAAE,WAAW,CAAC,GAAG;AAAA,YAChC,SAAS;AAAA,YACT,QAAQ;AAAA,UACV,CAAC;AAAA,UACD,GAAIA,GAAE,cAAc,CAAC;AAAA,QACvB;AAAA,MACF;AAAA,MACA,GAAG;AAAA,QACD,KAAKC,GAAE,gBAAgB;AAAA,QACvB,YAAY;AAAA,UACV,GAAG,cAAcA,GAAE,WAAW,CAAC,GAAG;AAAA,YAChC,SAAS;AAAA,YACT,QAAQ;AAAA,UACV,CAAC;AAAA,UACD,GAAIA,GAAE,cAAc,CAAC;AAAA,QACvB;AAAA,MACF;AAAA,MACA,QAAQ,IAAI;AAAA,IACd,CAAC;AAED,UAAM,OAAO,UAAU;AAAA,MACrB,MAAM,UAAU;AAAA,MAChB,SAAS;AAAA,MACT,QAAQ;AAAA,IACV,CAAC;AAED,UAAM,OAAO,UAAU;AAAA,MACrB,MAAM,UAAU;AAAA,MAChB,SAAS;AAAA,MACT,QAAQ;AAAA,IACV,CAAC;AAED,WAAO,UAAU;AAAA,MACf,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAEA,QAAI,OAAO,aAAa,YAAY;AAClC,eAAS,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC;AAAA,IAC/B;AAEA,WAAO,MAAM;AACX,WAAK,SAAS;AACd,WAAK,SAAS;AACd,gBAAU,QAAQ;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AAxIlB;AAyII,iBAAO,YAAP,mBAAgB,EAAE,KAAK,MAAM,EAAE,WAAW,CAAC;AAAA,EAC7C,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;AAEpB,YAAU,MAAM;AA5IlB;AA6II,iBAAO,YAAP,mBAAgB,EAAE,KAAK,MAAM,EAAE,WAAW,CAAC;AAAA,EAC7C,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;AAEpB,SACE,0DACE,oCAAC,SAAK,GAAG,UAAU,KAAU,GAC5B,QACH;AAEJ;","names":["a","b"]}
|
|
1
|
+
{"version":3,"sources":["../../src/renderer.tsx","../../src/index.ts"],"sourcesContent":["// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport React, {\n useRef,\n useEffect,\n type CSSProperties,\n type ReactNode,\n} from 'react';\n\nimport {\n // from core\n create,\n type EditorPluginSpec,\n type InferEditorAPIFromPlugins,\n type InferValues,\n // from react\n useInjector,\n} from '@coze-editor/react';\nimport { type Extension } from '@codemirror/state';\nimport { type MergeConfig, MergeView } from '@codemirror/merge';\n\ninterface SingleEditorProps<T extends EditorPluginSpec<string, any, any>[]> {\n defaultValue?: string;\n options?: Partial<InferValues<T[number]>>;\n extensions?: Extension[];\n}\ninterface InferRendererProps<T extends EditorPluginSpec<string, any, any>[]> {\n domProps?: {\n style?: CSSProperties;\n className?: string;\n };\n mergeConfig?: MergeConfig;\n a: SingleEditorProps<T>;\n b: SingleEditorProps<T>;\n didMount?: (e: {\n a: InferEditorAPIFromPlugins<T>;\n b: InferEditorAPIFromPlugins<T>;\n }) => void;\n children?: ReactNode;\n}\n\nfunction MergeViewRenderer<T extends EditorPluginSpec<string, any, any>[]>(\n props: { plugins: T } & InferRendererProps<T>,\n) {\n const {\n plugins,\n mergeConfig,\n a,\n b,\n domProps = {},\n didMount,\n children,\n } = props;\n\n const ref = useRef(null);\n const apiRef = useRef<any>(null);\n const propsRef = useRef<any>(null);\n const injector = useInjector();\n const mergeConfigRef = useRef(mergeConfig);\n const aRef = useRef(a);\n const bRef = useRef(b);\n\n aRef.current = a;\n bRef.current = b;\n propsRef.current = props;\n\n useEffect(() => {\n const a = aRef.current;\n const b = bRef.current;\n const config = mergeConfigRef.current ?? {};\n\n const { getExtensions, createAPI, createOptions, createEvents } = create({\n plugins,\n injector,\n });\n\n const aOptions = createOptions();\n const aEvents = createEvents();\n\n const bOptions = createOptions();\n const bEvents = createEvents();\n\n const mergeView = new MergeView({\n ...config,\n a: {\n doc: a.defaultValue ?? '',\n extensions: [\n ...getExtensions(a.options ?? {}, {\n options: aOptions,\n events: aEvents,\n }),\n ...(a.extensions ?? []),\n ],\n },\n b: {\n doc: b.defaultValue ?? '',\n extensions: [\n ...getExtensions(b.options ?? {}, {\n options: bOptions,\n events: bEvents,\n }),\n ...(b.extensions ?? []),\n ],\n },\n parent: ref.current!,\n });\n\n const aAPI = createAPI({\n view: mergeView.a,\n options: aOptions,\n events: aEvents,\n });\n\n const bAPI = createAPI({\n view: mergeView.b,\n options: bOptions,\n events: bEvents,\n });\n\n apiRef.current = {\n a: aAPI,\n b: bAPI,\n };\n\n if (typeof didMount === 'function') {\n didMount({ a: aAPI, b: bAPI });\n }\n\n return () => {\n aAPI.$destroy();\n bAPI.$destroy();\n mergeView.destroy();\n };\n }, []);\n\n useEffect(() => {\n apiRef.current?.a.$set(props.a.options ?? {});\n }, [props.a.options]);\n\n useEffect(() => {\n apiRef.current?.b.$set(props.b.options ?? {});\n }, [props.b.options]);\n\n return (\n <>\n <div {...domProps} ref={ref} />\n {children}\n </>\n );\n}\n\nexport { MergeViewRenderer };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nexport { MergeViewRenderer } from './renderer';\nexport { goToPreviousChunk, goToNextChunk } from '@codemirror/merge';\n"],"mappings":";AAGA,OAAO;AAAA,EACL;AAAA,EACA;AAAA,OAGK;AAEP;AAAA,EAEE;AAAA,EAKA;AAAA,OACK;AAEP,SAA2B,iBAAiB;AAsB5C,SAAS,kBACP,OACA;AACA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,CAAC;AAAA,IACZ;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,SAAS,OAAY,IAAI;AAC/B,QAAM,WAAW,OAAY,IAAI;AACjC,QAAM,WAAW,YAAY;AAC7B,QAAM,iBAAiB,OAAO,WAAW;AACzC,QAAM,OAAO,OAAO,CAAC;AACrB,QAAM,OAAO,OAAO,CAAC;AAErB,OAAK,UAAU;AACf,OAAK,UAAU;AACf,WAAS,UAAU;AAEnB,YAAU,MAAM;AACd,UAAMA,KAAI,KAAK;AACf,UAAMC,KAAI,KAAK;AACf,UAAM,SAAS,eAAe,WAAW,CAAC;AAE1C,UAAM,EAAE,eAAe,WAAW,eAAe,aAAa,IAAI,OAAO;AAAA,MACvE;AAAA,MACA;AAAA,IACF,CAAC;AAED,UAAM,WAAW,cAAc;AAC/B,UAAM,UAAU,aAAa;AAE7B,UAAM,WAAW,cAAc;AAC/B,UAAM,UAAU,aAAa;AAE7B,UAAM,YAAY,IAAI,UAAU;AAAA,MAC9B,GAAG;AAAA,MACH,GAAG;AAAA,QACD,KAAKD,GAAE,gBAAgB;AAAA,QACvB,YAAY;AAAA,UACV,GAAG,cAAcA,GAAE,WAAW,CAAC,GAAG;AAAA,YAChC,SAAS;AAAA,YACT,QAAQ;AAAA,UACV,CAAC;AAAA,UACD,GAAIA,GAAE,cAAc,CAAC;AAAA,QACvB;AAAA,MACF;AAAA,MACA,GAAG;AAAA,QACD,KAAKC,GAAE,gBAAgB;AAAA,QACvB,YAAY;AAAA,UACV,GAAG,cAAcA,GAAE,WAAW,CAAC,GAAG;AAAA,YAChC,SAAS;AAAA,YACT,QAAQ;AAAA,UACV,CAAC;AAAA,UACD,GAAIA,GAAE,cAAc,CAAC;AAAA,QACvB;AAAA,MACF;AAAA,MACA,QAAQ,IAAI;AAAA,IACd,CAAC;AAED,UAAM,OAAO,UAAU;AAAA,MACrB,MAAM,UAAU;AAAA,MAChB,SAAS;AAAA,MACT,QAAQ;AAAA,IACV,CAAC;AAED,UAAM,OAAO,UAAU;AAAA,MACrB,MAAM,UAAU;AAAA,MAChB,SAAS;AAAA,MACT,QAAQ;AAAA,IACV,CAAC;AAED,WAAO,UAAU;AAAA,MACf,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAEA,QAAI,OAAO,aAAa,YAAY;AAClC,eAAS,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC;AAAA,IAC/B;AAEA,WAAO,MAAM;AACX,WAAK,SAAS;AACd,WAAK,SAAS;AACd,gBAAU,QAAQ;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AAxIlB;AAyII,iBAAO,YAAP,mBAAgB,EAAE,KAAK,MAAM,EAAE,WAAW,CAAC;AAAA,EAC7C,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;AAEpB,YAAU,MAAM;AA5IlB;AA6II,iBAAO,YAAP,mBAAgB,EAAE,KAAK,MAAM,EAAE,WAAW,CAAC;AAAA,EAC7C,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;AAEpB,SACE,0DACE,oCAAC,SAAK,GAAG,UAAU,KAAU,GAC5B,QACH;AAEJ;;;AClJA,SAAS,mBAAmB,qBAAqB;","names":["a","b"]}
|
package/dist/index.d.mts
CHANGED
|
@@ -3,6 +3,7 @@ import { CSSProperties, ReactNode } from 'react';
|
|
|
3
3
|
import { EditorPluginSpec, InferValues, InferEditorAPIFromPlugins } from '@coze-editor/react';
|
|
4
4
|
import { Extension } from '@codemirror/state';
|
|
5
5
|
import { MergeConfig } from '@codemirror/merge';
|
|
6
|
+
export { goToNextChunk, goToPreviousChunk } from '@codemirror/merge';
|
|
6
7
|
|
|
7
8
|
interface SingleEditorProps<T extends EditorPluginSpec<string, any, any>[]> {
|
|
8
9
|
defaultValue?: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { CSSProperties, ReactNode } from 'react';
|
|
|
3
3
|
import { EditorPluginSpec, InferValues, InferEditorAPIFromPlugins } from '@coze-editor/react';
|
|
4
4
|
import { Extension } from '@codemirror/state';
|
|
5
5
|
import { MergeConfig } from '@codemirror/merge';
|
|
6
|
+
export { goToNextChunk, goToPreviousChunk } from '@codemirror/merge';
|
|
6
7
|
|
|
7
8
|
interface SingleEditorProps<T extends EditorPluginSpec<string, any, any>[]> {
|
|
8
9
|
defaultValue?: string;
|
package/dist/index.js
CHANGED
|
@@ -29,7 +29,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
29
29
|
// src/index.ts
|
|
30
30
|
var index_exports = {};
|
|
31
31
|
__export(index_exports, {
|
|
32
|
-
MergeViewRenderer: () => MergeViewRenderer
|
|
32
|
+
MergeViewRenderer: () => MergeViewRenderer,
|
|
33
|
+
goToNextChunk: () => import_merge2.goToNextChunk,
|
|
34
|
+
goToPreviousChunk: () => import_merge2.goToPreviousChunk
|
|
33
35
|
});
|
|
34
36
|
module.exports = __toCommonJS(index_exports);
|
|
35
37
|
|
|
@@ -126,8 +128,13 @@ function MergeViewRenderer(props) {
|
|
|
126
128
|
}, [props.b.options]);
|
|
127
129
|
return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement("div", { ...domProps, ref }), children);
|
|
128
130
|
}
|
|
131
|
+
|
|
132
|
+
// src/index.ts
|
|
133
|
+
var import_merge2 = require("@codemirror/merge");
|
|
129
134
|
// Annotate the CommonJS export names for ESM import in node:
|
|
130
135
|
0 && (module.exports = {
|
|
131
|
-
MergeViewRenderer
|
|
136
|
+
MergeViewRenderer,
|
|
137
|
+
goToNextChunk,
|
|
138
|
+
goToPreviousChunk
|
|
132
139
|
});
|
|
133
140
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/renderer.tsx"],"sourcesContent":["// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nexport { MergeViewRenderer } from './renderer';\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport React, {\n useRef,\n useEffect,\n type CSSProperties,\n type ReactNode,\n} from 'react';\n\nimport {\n // from core\n create,\n type EditorPluginSpec,\n type InferEditorAPIFromPlugins,\n type InferValues,\n // from react\n useInjector,\n} from '@coze-editor/react';\nimport { type Extension } from '@codemirror/state';\nimport { type MergeConfig, MergeView } from '@codemirror/merge';\n\ninterface SingleEditorProps<T extends EditorPluginSpec<string, any, any>[]> {\n defaultValue?: string;\n options?: Partial<InferValues<T[number]>>;\n extensions?: Extension[];\n}\ninterface InferRendererProps<T extends EditorPluginSpec<string, any, any>[]> {\n domProps?: {\n style?: CSSProperties;\n className?: string;\n };\n mergeConfig?: MergeConfig;\n a: SingleEditorProps<T>;\n b: SingleEditorProps<T>;\n didMount?: (e: {\n a: InferEditorAPIFromPlugins<T>;\n b: InferEditorAPIFromPlugins<T>;\n }) => void;\n children?: ReactNode;\n}\n\nfunction MergeViewRenderer<T extends EditorPluginSpec<string, any, any>[]>(\n props: { plugins: T } & InferRendererProps<T>,\n) {\n const {\n plugins,\n mergeConfig,\n a,\n b,\n domProps = {},\n didMount,\n children,\n } = props;\n\n const ref = useRef(null);\n const apiRef = useRef<any>(null);\n const propsRef = useRef<any>(null);\n const injector = useInjector();\n const mergeConfigRef = useRef(mergeConfig);\n const aRef = useRef(a);\n const bRef = useRef(b);\n\n aRef.current = a;\n bRef.current = b;\n propsRef.current = props;\n\n useEffect(() => {\n const a = aRef.current;\n const b = bRef.current;\n const config = mergeConfigRef.current ?? {};\n\n const { getExtensions, createAPI, createOptions, createEvents } = create({\n plugins,\n injector,\n });\n\n const aOptions = createOptions();\n const aEvents = createEvents();\n\n const bOptions = createOptions();\n const bEvents = createEvents();\n\n const mergeView = new MergeView({\n ...config,\n a: {\n doc: a.defaultValue ?? '',\n extensions: [\n ...getExtensions(a.options ?? {}, {\n options: aOptions,\n events: aEvents,\n }),\n ...(a.extensions ?? []),\n ],\n },\n b: {\n doc: b.defaultValue ?? '',\n extensions: [\n ...getExtensions(b.options ?? {}, {\n options: bOptions,\n events: bEvents,\n }),\n ...(b.extensions ?? []),\n ],\n },\n parent: ref.current!,\n });\n\n const aAPI = createAPI({\n view: mergeView.a,\n options: aOptions,\n events: aEvents,\n });\n\n const bAPI = createAPI({\n view: mergeView.b,\n options: bOptions,\n events: bEvents,\n });\n\n apiRef.current = {\n a: aAPI,\n b: bAPI,\n };\n\n if (typeof didMount === 'function') {\n didMount({ a: aAPI, b: bAPI });\n }\n\n return () => {\n aAPI.$destroy();\n bAPI.$destroy();\n mergeView.destroy();\n };\n }, []);\n\n useEffect(() => {\n apiRef.current?.a.$set(props.a.options ?? {});\n }, [props.a.options]);\n\n useEffect(() => {\n apiRef.current?.b.$set(props.b.options ?? {});\n }, [props.b.options]);\n\n return (\n <>\n <div {...domProps} ref={ref} />\n {children}\n </>\n );\n}\n\nexport { MergeViewRenderer };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGA,mBAKO;AAEP,IAAAA,gBAQO;AAEP,mBAA4C;AAsB5C,SAAS,kBACP,OACA;AACA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,CAAC;AAAA,IACZ;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,UAAM,qBAAO,IAAI;AACvB,QAAM,aAAS,qBAAY,IAAI;AAC/B,QAAM,eAAW,qBAAY,IAAI;AACjC,QAAM,eAAW,2BAAY;AAC7B,QAAM,qBAAiB,qBAAO,WAAW;AACzC,QAAM,WAAO,qBAAO,CAAC;AACrB,QAAM,WAAO,qBAAO,CAAC;AAErB,OAAK,UAAU;AACf,OAAK,UAAU;AACf,WAAS,UAAU;AAEnB,8BAAU,MAAM;AACd,UAAMC,KAAI,KAAK;AACf,UAAMC,KAAI,KAAK;AACf,UAAM,SAAS,eAAe,WAAW,CAAC;AAE1C,UAAM,EAAE,eAAe,WAAW,eAAe,aAAa,QAAI,sBAAO;AAAA,MACvE;AAAA,MACA;AAAA,IACF,CAAC;AAED,UAAM,WAAW,cAAc;AAC/B,UAAM,UAAU,aAAa;AAE7B,UAAM,WAAW,cAAc;AAC/B,UAAM,UAAU,aAAa;AAE7B,UAAM,YAAY,IAAI,uBAAU;AAAA,MAC9B,GAAG;AAAA,MACH,GAAG;AAAA,QACD,KAAKD,GAAE,gBAAgB;AAAA,QACvB,YAAY;AAAA,UACV,GAAG,cAAcA,GAAE,WAAW,CAAC,GAAG;AAAA,YAChC,SAAS;AAAA,YACT,QAAQ;AAAA,UACV,CAAC;AAAA,UACD,GAAIA,GAAE,cAAc,CAAC;AAAA,QACvB;AAAA,MACF;AAAA,MACA,GAAG;AAAA,QACD,KAAKC,GAAE,gBAAgB;AAAA,QACvB,YAAY;AAAA,UACV,GAAG,cAAcA,GAAE,WAAW,CAAC,GAAG;AAAA,YAChC,SAAS;AAAA,YACT,QAAQ;AAAA,UACV,CAAC;AAAA,UACD,GAAIA,GAAE,cAAc,CAAC;AAAA,QACvB;AAAA,MACF;AAAA,MACA,QAAQ,IAAI;AAAA,IACd,CAAC;AAED,UAAM,OAAO,UAAU;AAAA,MACrB,MAAM,UAAU;AAAA,MAChB,SAAS;AAAA,MACT,QAAQ;AAAA,IACV,CAAC;AAED,UAAM,OAAO,UAAU;AAAA,MACrB,MAAM,UAAU;AAAA,MAChB,SAAS;AAAA,MACT,QAAQ;AAAA,IACV,CAAC;AAED,WAAO,UAAU;AAAA,MACf,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAEA,QAAI,OAAO,aAAa,YAAY;AAClC,eAAS,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC;AAAA,IAC/B;AAEA,WAAO,MAAM;AACX,WAAK,SAAS;AACd,WAAK,SAAS;AACd,gBAAU,QAAQ;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,8BAAU,MAAM;AAxIlB;AAyII,iBAAO,YAAP,mBAAgB,EAAE,KAAK,MAAM,EAAE,WAAW,CAAC;AAAA,EAC7C,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;AAEpB,8BAAU,MAAM;AA5IlB;AA6II,iBAAO,YAAP,mBAAgB,EAAE,KAAK,MAAM,EAAE,WAAW,CAAC;AAAA,EAC7C,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;AAEpB,SACE,6BAAAC,QAAA,2BAAAA,QAAA,gBACE,6BAAAA,QAAA,cAAC,SAAK,GAAG,UAAU,KAAU,GAC5B,QACH;AAEJ;","names":["import_react","a","b","React"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/renderer.tsx"],"sourcesContent":["// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nexport { MergeViewRenderer } from './renderer';\nexport { goToPreviousChunk, goToNextChunk } from '@codemirror/merge';\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport React, {\n useRef,\n useEffect,\n type CSSProperties,\n type ReactNode,\n} from 'react';\n\nimport {\n // from core\n create,\n type EditorPluginSpec,\n type InferEditorAPIFromPlugins,\n type InferValues,\n // from react\n useInjector,\n} from '@coze-editor/react';\nimport { type Extension } from '@codemirror/state';\nimport { type MergeConfig, MergeView } from '@codemirror/merge';\n\ninterface SingleEditorProps<T extends EditorPluginSpec<string, any, any>[]> {\n defaultValue?: string;\n options?: Partial<InferValues<T[number]>>;\n extensions?: Extension[];\n}\ninterface InferRendererProps<T extends EditorPluginSpec<string, any, any>[]> {\n domProps?: {\n style?: CSSProperties;\n className?: string;\n };\n mergeConfig?: MergeConfig;\n a: SingleEditorProps<T>;\n b: SingleEditorProps<T>;\n didMount?: (e: {\n a: InferEditorAPIFromPlugins<T>;\n b: InferEditorAPIFromPlugins<T>;\n }) => void;\n children?: ReactNode;\n}\n\nfunction MergeViewRenderer<T extends EditorPluginSpec<string, any, any>[]>(\n props: { plugins: T } & InferRendererProps<T>,\n) {\n const {\n plugins,\n mergeConfig,\n a,\n b,\n domProps = {},\n didMount,\n children,\n } = props;\n\n const ref = useRef(null);\n const apiRef = useRef<any>(null);\n const propsRef = useRef<any>(null);\n const injector = useInjector();\n const mergeConfigRef = useRef(mergeConfig);\n const aRef = useRef(a);\n const bRef = useRef(b);\n\n aRef.current = a;\n bRef.current = b;\n propsRef.current = props;\n\n useEffect(() => {\n const a = aRef.current;\n const b = bRef.current;\n const config = mergeConfigRef.current ?? {};\n\n const { getExtensions, createAPI, createOptions, createEvents } = create({\n plugins,\n injector,\n });\n\n const aOptions = createOptions();\n const aEvents = createEvents();\n\n const bOptions = createOptions();\n const bEvents = createEvents();\n\n const mergeView = new MergeView({\n ...config,\n a: {\n doc: a.defaultValue ?? '',\n extensions: [\n ...getExtensions(a.options ?? {}, {\n options: aOptions,\n events: aEvents,\n }),\n ...(a.extensions ?? []),\n ],\n },\n b: {\n doc: b.defaultValue ?? '',\n extensions: [\n ...getExtensions(b.options ?? {}, {\n options: bOptions,\n events: bEvents,\n }),\n ...(b.extensions ?? []),\n ],\n },\n parent: ref.current!,\n });\n\n const aAPI = createAPI({\n view: mergeView.a,\n options: aOptions,\n events: aEvents,\n });\n\n const bAPI = createAPI({\n view: mergeView.b,\n options: bOptions,\n events: bEvents,\n });\n\n apiRef.current = {\n a: aAPI,\n b: bAPI,\n };\n\n if (typeof didMount === 'function') {\n didMount({ a: aAPI, b: bAPI });\n }\n\n return () => {\n aAPI.$destroy();\n bAPI.$destroy();\n mergeView.destroy();\n };\n }, []);\n\n useEffect(() => {\n apiRef.current?.a.$set(props.a.options ?? {});\n }, [props.a.options]);\n\n useEffect(() => {\n apiRef.current?.b.$set(props.b.options ?? {});\n }, [props.b.options]);\n\n return (\n <>\n <div {...domProps} ref={ref} />\n {children}\n </>\n );\n}\n\nexport { MergeViewRenderer };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGA,mBAKO;AAEP,IAAAA,gBAQO;AAEP,mBAA4C;AAsB5C,SAAS,kBACP,OACA;AACA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,CAAC;AAAA,IACZ;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,UAAM,qBAAO,IAAI;AACvB,QAAM,aAAS,qBAAY,IAAI;AAC/B,QAAM,eAAW,qBAAY,IAAI;AACjC,QAAM,eAAW,2BAAY;AAC7B,QAAM,qBAAiB,qBAAO,WAAW;AACzC,QAAM,WAAO,qBAAO,CAAC;AACrB,QAAM,WAAO,qBAAO,CAAC;AAErB,OAAK,UAAU;AACf,OAAK,UAAU;AACf,WAAS,UAAU;AAEnB,8BAAU,MAAM;AACd,UAAMC,KAAI,KAAK;AACf,UAAMC,KAAI,KAAK;AACf,UAAM,SAAS,eAAe,WAAW,CAAC;AAE1C,UAAM,EAAE,eAAe,WAAW,eAAe,aAAa,QAAI,sBAAO;AAAA,MACvE;AAAA,MACA;AAAA,IACF,CAAC;AAED,UAAM,WAAW,cAAc;AAC/B,UAAM,UAAU,aAAa;AAE7B,UAAM,WAAW,cAAc;AAC/B,UAAM,UAAU,aAAa;AAE7B,UAAM,YAAY,IAAI,uBAAU;AAAA,MAC9B,GAAG;AAAA,MACH,GAAG;AAAA,QACD,KAAKD,GAAE,gBAAgB;AAAA,QACvB,YAAY;AAAA,UACV,GAAG,cAAcA,GAAE,WAAW,CAAC,GAAG;AAAA,YAChC,SAAS;AAAA,YACT,QAAQ;AAAA,UACV,CAAC;AAAA,UACD,GAAIA,GAAE,cAAc,CAAC;AAAA,QACvB;AAAA,MACF;AAAA,MACA,GAAG;AAAA,QACD,KAAKC,GAAE,gBAAgB;AAAA,QACvB,YAAY;AAAA,UACV,GAAG,cAAcA,GAAE,WAAW,CAAC,GAAG;AAAA,YAChC,SAAS;AAAA,YACT,QAAQ;AAAA,UACV,CAAC;AAAA,UACD,GAAIA,GAAE,cAAc,CAAC;AAAA,QACvB;AAAA,MACF;AAAA,MACA,QAAQ,IAAI;AAAA,IACd,CAAC;AAED,UAAM,OAAO,UAAU;AAAA,MACrB,MAAM,UAAU;AAAA,MAChB,SAAS;AAAA,MACT,QAAQ;AAAA,IACV,CAAC;AAED,UAAM,OAAO,UAAU;AAAA,MACrB,MAAM,UAAU;AAAA,MAChB,SAAS;AAAA,MACT,QAAQ;AAAA,IACV,CAAC;AAED,WAAO,UAAU;AAAA,MACf,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAEA,QAAI,OAAO,aAAa,YAAY;AAClC,eAAS,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC;AAAA,IAC/B;AAEA,WAAO,MAAM;AACX,WAAK,SAAS;AACd,WAAK,SAAS;AACd,gBAAU,QAAQ;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,8BAAU,MAAM;AAxIlB;AAyII,iBAAO,YAAP,mBAAgB,EAAE,KAAK,MAAM,EAAE,WAAW,CAAC;AAAA,EAC7C,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;AAEpB,8BAAU,MAAM;AA5IlB;AA6II,iBAAO,YAAP,mBAAgB,EAAE,KAAK,MAAM,EAAE,WAAW,CAAC;AAAA,EAC7C,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;AAEpB,SACE,6BAAAC,QAAA,2BAAAA,QAAA,gBACE,6BAAAA,QAAA,cAAC,SAAK,GAAG,UAAU,KAAU,GAC5B,QACH;AAEJ;;;ADlJA,IAAAC,gBAAiD;","names":["import_react","a","b","React","import_merge"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coze-editor/react-merge",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.dac011",
|
|
4
4
|
"description": "react merge",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "fengzilong",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"@codemirror/state": "^6.4.1",
|
|
45
45
|
"@codemirror/view": "^6.26.1",
|
|
46
|
-
"@coze-editor/react": "0.1.0-alpha.
|
|
46
|
+
"@coze-editor/react": "0.1.0-alpha.dac011",
|
|
47
47
|
"react": "~18.2.0",
|
|
48
48
|
"react-dom": "~18.2.0"
|
|
49
49
|
},
|