@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 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
@@ -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.d92d50",
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.d92d50",
46
+ "@coze-editor/react": "0.1.0-alpha.dac011",
47
47
  "react": "~18.2.0",
48
48
  "react-dom": "~18.2.0"
49
49
  },