@dxos/react-ui-editor 0.3.7-main.fcec8cd → 0.3.7
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/lib/browser/index.mjs +23 -17
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/types/src/components/Editor/Editor.d.ts +15 -0
- package/dist/types/src/components/Editor/Editor.d.ts.map +1 -0
- package/dist/types/src/components/{Composer/Composer.stories.d.ts → Editor/Editor.stories.d.ts} +3 -3
- package/dist/types/src/components/Editor/Editor.stories.d.ts.map +1 -0
- package/dist/types/src/components/Editor/index.d.ts +2 -0
- package/dist/types/src/components/Editor/index.d.ts.map +1 -0
- package/dist/types/src/components/Markdown/Markdown.d.ts +6 -6
- package/dist/types/src/components/Markdown/Markdown.d.ts.map +1 -1
- package/dist/types/src/components/Markdown/Markdown.stories.d.ts +1 -1
- package/dist/types/src/components/Markdown/markdownTheme.d.ts +10 -4
- package/dist/types/src/components/Markdown/markdownTheme.d.ts.map +1 -1
- package/dist/types/src/components/RichText/RichText.d.ts +7 -7
- package/dist/types/src/components/RichText/RichText.d.ts.map +1 -1
- package/dist/types/src/components/RichText/RichText.stories.d.ts +5 -5
- package/dist/types/src/components/RichText/RichText.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/model.d.ts +3 -3
- package/dist/types/src/model.d.ts.map +1 -1
- package/dist/types/src/testing/proto/gen/schema.d.ts +4 -4
- package/dist/types/src/testing/proto/gen/schema.d.ts.map +1 -1
- package/dist/types/src/testing/replicator.d.ts +4 -4
- package/dist/types/src/testing/replicator.d.ts.map +1 -1
- package/package.json +15 -15
- package/src/components/{Composer/Composer.stories.tsx → Editor/Editor.stories.tsx} +8 -8
- package/src/components/Editor/Editor.tsx +33 -0
- package/src/components/{Composer → Editor}/index.ts +1 -1
- package/src/components/Markdown/Markdown.stories.tsx +3 -3
- package/src/components/Markdown/Markdown.tsx +6 -6
- package/src/components/Markdown/markdownTheme.ts +12 -6
- package/src/components/RichText/RichText.stories.tsx +4 -4
- package/src/components/RichText/RichText.tsx +6 -6
- package/src/components/index.ts +1 -1
- package/src/model.ts +4 -4
- package/src/testing/proto/gen/schema.ts +10 -10
- package/src/testing/proto/schema.proto +2 -2
- package/src/testing/replicator.ts +6 -6
- package/dist/types/src/components/Composer/Composer.d.ts +0 -15
- package/dist/types/src/components/Composer/Composer.d.ts.map +0 -1
- package/dist/types/src/components/Composer/Composer.stories.d.ts.map +0 -1
- package/dist/types/src/components/Composer/index.d.ts +0 -2
- package/dist/types/src/components/Composer/index.d.ts.map +0 -1
- package/src/components/Composer/Composer.tsx +0 -33
|
@@ -41,11 +41,11 @@ export declare const markdownTheme: {
|
|
|
41
41
|
'& .cm-line *': {
|
|
42
42
|
lineHeight: number;
|
|
43
43
|
};
|
|
44
|
-
'& .cm-selectionBackground': {
|
|
45
|
-
background:
|
|
44
|
+
'&.cm-focused .cm-selectionBackground, & .cm-selectionBackground': {
|
|
45
|
+
background: any;
|
|
46
46
|
};
|
|
47
|
-
'.dark & .cm-selectionBackground': {
|
|
48
|
-
background:
|
|
47
|
+
'.dark & .cm-selectionBackground, .dark &.cm-focused .cm-selectionBackground': {
|
|
48
|
+
background: any;
|
|
49
49
|
};
|
|
50
50
|
'& .cm-selectionMatch': {
|
|
51
51
|
background: string;
|
|
@@ -87,6 +87,12 @@ export declare const markdownTheme: {
|
|
|
87
87
|
paddingBlockStart: string;
|
|
88
88
|
paddingBlockEnd: string;
|
|
89
89
|
};
|
|
90
|
+
'& .cm-ySelection, & .cm-yLineSelection': {
|
|
91
|
+
mixBlendMode: string;
|
|
92
|
+
};
|
|
93
|
+
'.dark & .cm-ySelection, .dark & .cm-yLineSelection': {
|
|
94
|
+
mixBlendMode: string;
|
|
95
|
+
};
|
|
90
96
|
'& .cm-ySelectionCaret': {
|
|
91
97
|
display: string;
|
|
92
98
|
insetBlockStart: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdownTheme.d.ts","sourceRoot":"","sources":["../../../../../src/components/Markdown/markdownTheme.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAUtD,eAAO,MAAM,MAAM,YAAY,CAAC;AAChC,eAAO,MAAM,KAAK,YAAY,CAAC;AAC/B,eAAO,MAAM,IAAI,YAAY,CAAC;AAC9B,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,KAAK,YAAY,CAAC;AAC/B,eAAO,MAAM,KAAK,YAAY,CAAC;AAC/B,eAAO,MAAM,MAAM,YAAY,CAAC;AAChC,eAAO,MAAM,IAAI,YAAY,CAAC;AAC9B,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,MAAM,YAAY,CAAC;AAEhC,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAE7C,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAE3C,eAAO,MAAM,MAAM,YAAY,CAAC;AAIhC,eAAO,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"markdownTheme.d.ts","sourceRoot":"","sources":["../../../../../src/components/Markdown/markdownTheme.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAUtD,eAAO,MAAM,MAAM,YAAY,CAAC;AAChC,eAAO,MAAM,KAAK,YAAY,CAAC;AAC/B,eAAO,MAAM,IAAI,YAAY,CAAC;AAC9B,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,KAAK,YAAY,CAAC;AAC/B,eAAO,MAAM,KAAK,YAAY,CAAC;AAC/B,eAAO,MAAM,MAAM,YAAY,CAAC;AAChC,eAAO,MAAM,IAAI,YAAY,CAAC;AAC9B,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,MAAM,YAAY,CAAC;AAEhC,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAE7C,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAE3C,eAAO,MAAM,MAAM,YAAY,CAAC;AAIhC,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwIzB,CAAC;AAEF,eAAO,MAAM,wBAAwB,gBA6EpC,CAAC"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { type Editor } from '@tiptap/react';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import { type
|
|
3
|
+
import { type EditorModel, type EditorSlots } from '../../model';
|
|
4
4
|
export type TipTapEditor = Editor;
|
|
5
5
|
type UseEditorOptions = {
|
|
6
|
-
model?:
|
|
6
|
+
model?: EditorModel;
|
|
7
7
|
placeholder?: string;
|
|
8
|
-
slots?: Pick<
|
|
8
|
+
slots?: Pick<EditorSlots, 'editor'>;
|
|
9
9
|
};
|
|
10
|
-
export type
|
|
11
|
-
slots?:
|
|
10
|
+
export type RichTextEditorProps = UseEditorOptions & {
|
|
11
|
+
slots?: EditorSlots;
|
|
12
12
|
};
|
|
13
13
|
/**
|
|
14
14
|
* @deprecated
|
|
15
15
|
*/
|
|
16
|
-
export declare const
|
|
17
|
-
slots?:
|
|
16
|
+
export declare const RichTextEditor: React.ForwardRefExoticComponent<UseEditorOptions & {
|
|
17
|
+
slots?: EditorSlots | undefined;
|
|
18
18
|
} & React.RefAttributes<Editor | null>>;
|
|
19
19
|
export {};
|
|
20
20
|
//# sourceMappingURL=RichText.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichText.d.ts","sourceRoot":"","sources":["../../../../../src/components/RichText/RichText.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,MAAM,EAAgD,MAAM,eAAe,CAAC;AAE1F,OAAO,KAAmD,MAAM,OAAO,CAAC;AAKxE,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"RichText.d.ts","sourceRoot":"","sources":["../../../../../src/components/RichText/RichText.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,MAAM,EAAgD,MAAM,eAAe,CAAC;AAE1F,OAAO,KAAmD,MAAM,OAAO,CAAC;AAKxE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAkBjE,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC,KAAK,gBAAgB,GAAG;IACtB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;CACrC,CAAC;AA2HF,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,GAAG;IACnD,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF;;GAEG;AAEH,eAAO,MAAM,cAAc;;uCASzB,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import '@dxosTheme';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import { type
|
|
3
|
+
import { type RichTextEditorProps } from './RichText';
|
|
4
4
|
declare const _default: {
|
|
5
5
|
component: React.ForwardRefExoticComponent<{
|
|
6
|
-
model?: import("../..").
|
|
6
|
+
model?: import("../..").EditorModel | undefined;
|
|
7
7
|
placeholder?: string | undefined;
|
|
8
|
-
slots?: Pick<import("../..").
|
|
8
|
+
slots?: Pick<import("../..").EditorSlots, "editor"> | undefined;
|
|
9
9
|
} & {
|
|
10
|
-
slots?: import("../..").
|
|
10
|
+
slots?: import("../..").EditorSlots | undefined;
|
|
11
11
|
} & React.RefAttributes<import("@tiptap/react").Editor | null>>;
|
|
12
12
|
};
|
|
13
13
|
export default _default;
|
|
@@ -20,7 +20,7 @@ export declare const Default: {
|
|
|
20
20
|
};
|
|
21
21
|
};
|
|
22
22
|
export declare const WithYjs: {
|
|
23
|
-
render: (args: Omit<
|
|
23
|
+
render: (args: Omit<RichTextEditorProps, 'model'>) => JSX.Element;
|
|
24
24
|
decorators: import("@storybook/csf").DecoratorFunction<import("@storybook/react/dist/types-0a347bb9").R, any>[];
|
|
25
25
|
};
|
|
26
26
|
//# sourceMappingURL=RichText.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichText.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/RichText/RichText.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,YAAY,CAAC;AAEpB,OAAO,KAAmB,MAAM,OAAO,CAAC;AAQxC,OAAO,
|
|
1
|
+
{"version":3,"file":"RichText.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/RichText/RichText.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,YAAY,CAAC;AAEpB,OAAO,KAAmB,MAAM,OAAO,CAAC;AAQxC,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;;;;;;;;;;AAGtE,wBAEE;AAEF,eAAO,MAAM,OAAO;;;;;;;CAOnB,CAAC;AAGF,eAAO,MAAM,OAAO;mBACH,KAAK,mBAAmB,EAAE,OAAO,CAAC;;CAmClD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAIA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAIA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
@@ -4,7 +4,7 @@ import type * as awarenessProtocol from 'y-protocols/awareness';
|
|
|
4
4
|
import { type Space, type TextObject } from '@dxos/react-client/echo';
|
|
5
5
|
import { type Identity } from '@dxos/react-client/halo';
|
|
6
6
|
import type { YText, YXmlFragment } from '@dxos/text-model';
|
|
7
|
-
export type
|
|
7
|
+
export type EditorSlots = {
|
|
8
8
|
root?: Omit<ComponentProps<'div'>, 'ref'>;
|
|
9
9
|
editor?: {
|
|
10
10
|
className?: string;
|
|
@@ -18,7 +18,7 @@ type Awareness = awarenessProtocol.Awareness;
|
|
|
18
18
|
type Provider = {
|
|
19
19
|
awareness: Awareness;
|
|
20
20
|
};
|
|
21
|
-
export type
|
|
21
|
+
export type EditorModel = {
|
|
22
22
|
id: string;
|
|
23
23
|
content: string | YText | YXmlFragment;
|
|
24
24
|
provider?: Provider;
|
|
@@ -32,6 +32,6 @@ export type UseTextModelOptions = {
|
|
|
32
32
|
space?: Space;
|
|
33
33
|
text?: TextObject;
|
|
34
34
|
};
|
|
35
|
-
export declare const useTextModel: ({ identity, space, text }: UseTextModelOptions) =>
|
|
35
|
+
export declare const useTextModel: ({ identity, space, text }: UseTextModelOptions) => EditorModel | undefined;
|
|
36
36
|
export {};
|
|
37
37
|
//# sourceMappingURL=model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/model.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,cAAc,EAAW,MAAM,OAAO,CAAC;AACrD,OAAO,KAAK,KAAK,iBAAiB,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAI5D,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/model.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,cAAc,EAAW,MAAM,OAAO,CAAC;AACrD,OAAO,KAAK,KAAK,iBAAiB,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAI5D,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1C,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACxD,CAAC;CACH,CAAC;AAEF,KAAK,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC;AAC7C,KAAK,QAAQ,GAAG;IAAE,SAAS,EAAE,SAAS,CAAA;CAAE,CAAC;AAGzC,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC;IACvC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,IAAI,CAAC,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,CAAC;AAIF,eAAO,MAAM,YAAY,8BAA+B,mBAAmB,KAAG,WAAW,GAAG,SAwB3F,CAAC"}
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
**/
|
|
4
4
|
import * as dxos_echo_schema from "@dxos/echo-schema";
|
|
5
5
|
export declare const types: dxos_echo_schema.TypeCollection;
|
|
6
|
-
export type
|
|
6
|
+
export type EditorDocumentProps = {
|
|
7
7
|
content: dxos_echo_schema.Text;
|
|
8
8
|
};
|
|
9
|
-
export declare class
|
|
9
|
+
export declare class EditorDocument extends dxos_echo_schema.TypedObject<EditorDocumentProps> {
|
|
10
10
|
static readonly schema: dxos_echo_schema.Schema;
|
|
11
|
-
static filter(filter?: Partial<
|
|
12
|
-
constructor(initValues?: Partial<
|
|
11
|
+
static filter(filter?: Partial<EditorDocumentProps> | dxos_echo_schema.OperatorFilter<EditorDocument>): dxos_echo_schema.Filter<EditorDocument>;
|
|
12
|
+
constructor(initValues?: Partial<EditorDocumentProps>, opts?: dxos_echo_schema.TypedObjectOptions);
|
|
13
13
|
content: dxos_echo_schema.Text;
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../../../src/testing/proto/gen/schema.ts"],"names":[],"mappings":"AAAA;;IAEI;AAEJ,OAAO,KAAK,gBAAgB,MAAM,mBAAmB,CAAC;AAEtD,eAAO,MAAM,KAAK,iCAAwC,CAAC;AAE3D,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../../../src/testing/proto/gen/schema.ts"],"names":[],"mappings":"AAAA;;IAEI;AAEJ,OAAO,KAAK,gBAAgB,MAAM,mBAAmB,CAAC;AAEtD,eAAO,MAAM,KAAK,iCAAwC,CAAC;AAE3D,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC;CAChC,CAAC;AAEF,qBAAa,cAAe,SAAQ,gBAAgB,CAAC,WAAW,CAAC,mBAAmB,CAAC;IACnF,gBAAwB,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC;IAExD,MAAM,CAAC,MAAM,CACX,MAAM,CAAC,EACH,OAAO,CAAC,mBAAmB,CAAC,GAC5B,gBAAgB,CAAC,cAAc,CAAC,cAAc,CAAC,GAClD,gBAAgB,CAAC,MAAM,CAAC,cAAc,CAAC;gBAQxC,UAAU,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,EACzC,IAAI,CAAC,EAAE,gBAAgB,CAAC,kBAAkB;IAIpC,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC;CACxC"}
|
|
@@ -3,7 +3,7 @@ import * as awarenessProtocol from 'y-protocols/awareness';
|
|
|
3
3
|
import { Doc } from 'yjs';
|
|
4
4
|
import { Event } from '@dxos/async';
|
|
5
5
|
import { TextKind } from '@dxos/protocols/proto/dxos/echo/model/text';
|
|
6
|
-
import { type
|
|
6
|
+
import { type EditorModel } from '../model';
|
|
7
7
|
type Awareness = awarenessProtocol.Awareness;
|
|
8
8
|
/**
|
|
9
9
|
* Yjs awareness provider in-memory.
|
|
@@ -32,14 +32,14 @@ export declare class Replicator {
|
|
|
32
32
|
private readonly _update;
|
|
33
33
|
private _peers;
|
|
34
34
|
constructor(_kind: TextKind);
|
|
35
|
-
setPeers(peers:
|
|
36
|
-
createPeer: (id: string, doc?: Doc) =>
|
|
35
|
+
setPeers(peers: EditorModel[]): void;
|
|
36
|
+
createPeer: (id: string, doc?: Doc) => EditorModel;
|
|
37
37
|
}
|
|
38
38
|
export type UseYjsModelOptions = {
|
|
39
39
|
replicator: Replicator;
|
|
40
40
|
id: string;
|
|
41
41
|
doc?: Doc;
|
|
42
42
|
};
|
|
43
|
-
export declare const useYjsModel: ({ replicator, id, doc }: UseYjsModelOptions) =>
|
|
43
|
+
export declare const useYjsModel: ({ replicator, id, doc }: UseYjsModelOptions) => EditorModel;
|
|
44
44
|
export {};
|
|
45
45
|
//# sourceMappingURL=replicator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replicator.d.ts","sourceRoot":"","sources":["../../../../src/testing/replicator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,KAAK,iBAAiB,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AAEtE,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"replicator.d.ts","sourceRoot":"","sources":["../../../../src/testing/replicator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,KAAK,iBAAiB,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AAEtE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C,KAAK,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC;AAM7C;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,UAAU,CAAC,GAAG,CAAC;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;gBAEf,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;QAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAAC,GAAG,EAAE,GAAG,CAAC;QAAC,SAAS,CAAC,EAAE,SAAS,CAAA;KAAE;IA+BtG,IAAI,SAAS,IAAI,SAAS,CAEzB;IAED,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,YAAY;IA0CpB,OAAO,CAAC,mBAAmB;CAG5B;AAED;;GAEG;AACH,qBAAa,UAAU;IAIT,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHlC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,MAAM,CAAqB;gBAEN,KAAK,EAAE,QAAQ;IAE5C,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE;IAI7B,UAAU,OAAQ,MAAM,QAAO,GAAG,KAAe,WAAW,CAmB1D;CACH;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,GAAG,CAAC;CACX,CAAC;AAEF,eAAO,MAAM,WAAW,4BAA6B,kBAAkB,KAAG,WAIzE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/react-ui-editor",
|
|
3
|
-
"version": "0.3.7
|
|
3
|
+
"version": "0.3.7",
|
|
4
4
|
"description": "Document editing experience within a DXOS shell.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -47,15 +47,15 @@
|
|
|
47
47
|
"y-prosemirror": "~1.0.20",
|
|
48
48
|
"y-protocols": "^1.0.5",
|
|
49
49
|
"yjs": "^13.6.8",
|
|
50
|
-
"@dxos/debug": "0.3.7
|
|
51
|
-
"@dxos/display-name": "0.3.7
|
|
52
|
-
"@dxos/log": "0.3.7
|
|
53
|
-
"@dxos/protocols": "0.3.7
|
|
54
|
-
"@dxos/react-async": "0.3.7
|
|
55
|
-
"@dxos/react-ui": "0.3.7
|
|
56
|
-
"@dxos/react-ui-theme": "0.3.7
|
|
57
|
-
"@dxos/text-model": "0.3.7
|
|
58
|
-
"@dxos/util": "0.3.7
|
|
50
|
+
"@dxos/debug": "0.3.7",
|
|
51
|
+
"@dxos/display-name": "0.3.7",
|
|
52
|
+
"@dxos/log": "0.3.7",
|
|
53
|
+
"@dxos/protocols": "0.3.7",
|
|
54
|
+
"@dxos/react-async": "0.3.7",
|
|
55
|
+
"@dxos/react-ui": "0.3.7",
|
|
56
|
+
"@dxos/react-ui-theme": "0.3.7",
|
|
57
|
+
"@dxos/text-model": "0.3.7",
|
|
58
|
+
"@dxos/util": "0.3.7"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@types/lodash.get": "^4.4.7",
|
|
@@ -63,15 +63,15 @@
|
|
|
63
63
|
"@types/react-dom": "^18.0.6",
|
|
64
64
|
"react": "^18.2.0",
|
|
65
65
|
"react-dom": "^18.2.0",
|
|
66
|
-
"@dxos/config": "0.3.7
|
|
67
|
-
"@dxos/echo-schema": "0.3.7
|
|
68
|
-
"@dxos/echo-typegen": "0.3.7
|
|
69
|
-
"@dxos/react-client": "0.3.7
|
|
66
|
+
"@dxos/config": "0.3.7",
|
|
67
|
+
"@dxos/echo-schema": "0.3.7",
|
|
68
|
+
"@dxos/echo-typegen": "0.3.7",
|
|
69
|
+
"@dxos/react-client": "0.3.7"
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
|
72
72
|
"react": "^18.2.0",
|
|
73
73
|
"react-dom": "^18.2.0",
|
|
74
|
-
"@dxos/react-client": "0.3.7
|
|
74
|
+
"@dxos/react-client": "0.3.7"
|
|
75
75
|
},
|
|
76
76
|
"publishConfig": {
|
|
77
77
|
"access": "public"
|
|
@@ -12,20 +12,20 @@ import { useIdentity } from '@dxos/react-client/halo';
|
|
|
12
12
|
import { ClientDecorator, setupPeersInSpace, textGenerator, useDataGenerator } from '@dxos/react-client/testing';
|
|
13
13
|
import { useId } from '@dxos/react-ui';
|
|
14
14
|
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
15
|
+
import { Editor, type EditorProps } from './Editor';
|
|
16
|
+
import { EditorDocument, types as schema } from '../../testing';
|
|
17
17
|
|
|
18
18
|
export default {
|
|
19
|
-
component:
|
|
19
|
+
component: Editor,
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
-
const Story = ({ spaceKey, ...args }: Pick<
|
|
22
|
+
const Story = ({ spaceKey, ...args }: Pick<EditorProps, 'slots'> & { spaceKey: PublicKey }) => {
|
|
23
23
|
const [generate, setGenerate] = useState(false);
|
|
24
24
|
const generateId = useId('generate');
|
|
25
25
|
|
|
26
26
|
const identity = useIdentity();
|
|
27
27
|
const space = useSpace(spaceKey);
|
|
28
|
-
const [document] = useQuery(space,
|
|
28
|
+
const [document] = useQuery(space, EditorDocument.filter());
|
|
29
29
|
|
|
30
30
|
useDataGenerator({
|
|
31
31
|
generator: generate ? textGenerator : undefined,
|
|
@@ -39,7 +39,7 @@ const Story = ({ spaceKey, ...args }: Pick<ComposerProps, 'slots'> & { spaceKey:
|
|
|
39
39
|
Generate Data
|
|
40
40
|
</div>
|
|
41
41
|
{document?.content.toString().length}
|
|
42
|
-
<
|
|
42
|
+
<Editor identity={identity} space={space} text={document?.content} {...args} />
|
|
43
43
|
</main>
|
|
44
44
|
);
|
|
45
45
|
};
|
|
@@ -48,7 +48,7 @@ const { spaceKey: markdownSpaceKey, clients: markdownClients } = await setupPeer
|
|
|
48
48
|
count: 2,
|
|
49
49
|
schema,
|
|
50
50
|
onCreateSpace: async (space) => {
|
|
51
|
-
const document = new
|
|
51
|
+
const document = new EditorDocument({ content: new TextObject('Hello, Storybook!') });
|
|
52
52
|
await space?.db.add(document);
|
|
53
53
|
},
|
|
54
54
|
});
|
|
@@ -62,7 +62,7 @@ const { spaceKey: richSpaceKey, clients: richClients } = await setupPeersInSpace
|
|
|
62
62
|
count: 2,
|
|
63
63
|
schema,
|
|
64
64
|
onCreateSpace: async (space) => {
|
|
65
|
-
const document = new
|
|
65
|
+
const document = new EditorDocument({ content: new TextObject('Hello, Storybook!', TextKind.RICH) });
|
|
66
66
|
await space?.db.add(document);
|
|
67
67
|
},
|
|
68
68
|
});
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import React, { forwardRef, memo, type Ref } from 'react';
|
|
6
|
+
|
|
7
|
+
import { YXmlFragment } from '@dxos/text-model';
|
|
8
|
+
|
|
9
|
+
import { type EditorSlots, useTextModel, type UseTextModelOptions } from '../../model';
|
|
10
|
+
import { MarkdownEditor, type MarkdownEditorRef } from '../Markdown';
|
|
11
|
+
import { RichTextEditor, type TipTapEditor } from '../RichText';
|
|
12
|
+
|
|
13
|
+
export type EditorProps = UseTextModelOptions & {
|
|
14
|
+
slots?: EditorSlots;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Memoized editor which depends on DXOS platform.
|
|
19
|
+
*
|
|
20
|
+
* Determines which editor to render based on the kind of text.
|
|
21
|
+
*/
|
|
22
|
+
// NOTE: Without `memo`, if parent component uses `observer` the editor re-renders excessively.
|
|
23
|
+
// TODO(wittjosiah): Factor out?
|
|
24
|
+
export const Editor = memo(
|
|
25
|
+
forwardRef<TipTapEditor | MarkdownEditorRef, EditorProps>(({ slots, ...options }, forwardedRef) => {
|
|
26
|
+
const model = useTextModel(options);
|
|
27
|
+
if (model?.content instanceof YXmlFragment) {
|
|
28
|
+
return <RichTextEditor ref={forwardedRef as Ref<TipTapEditor>} model={model} slots={slots} />;
|
|
29
|
+
} else {
|
|
30
|
+
return <MarkdownEditor ref={forwardedRef as Ref<MarkdownEditorRef>} model={model} slots={slots} />;
|
|
31
|
+
}
|
|
32
|
+
}),
|
|
33
|
+
);
|
|
@@ -11,11 +11,11 @@ import { TextKind } from '@dxos/react-client/echo';
|
|
|
11
11
|
import { ClientDecorator, textGenerator, useDataGenerator } from '@dxos/react-client/testing';
|
|
12
12
|
import { useId } from '@dxos/react-ui';
|
|
13
13
|
|
|
14
|
-
import {
|
|
14
|
+
import { MarkdownEditor } from './Markdown';
|
|
15
15
|
import { Replicator, useYjsModel } from '../../testing';
|
|
16
16
|
|
|
17
17
|
export default {
|
|
18
|
-
component:
|
|
18
|
+
component: MarkdownEditor,
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
export const Default = {
|
|
@@ -47,7 +47,7 @@ export const WithYjs = {
|
|
|
47
47
|
<input type='checkbox' onChange={(event) => setGenerate(event.target.checked)} />
|
|
48
48
|
Generate Data
|
|
49
49
|
</div>
|
|
50
|
-
<
|
|
50
|
+
<MarkdownEditor model={model} />
|
|
51
51
|
</main>
|
|
52
52
|
);
|
|
53
53
|
},
|
|
@@ -49,25 +49,25 @@ import { YText } from '@dxos/text-model';
|
|
|
49
49
|
|
|
50
50
|
import { markdownTagsExtension } from './markdownTags';
|
|
51
51
|
import { markdownDarkHighlighting, markdownTheme } from './markdownTheme';
|
|
52
|
-
import { type
|
|
52
|
+
import { type EditorModel, type EditorSlots } from '../../model';
|
|
53
53
|
|
|
54
54
|
export const EditorModes = ['default', 'vim'] as const;
|
|
55
55
|
export type EditorMode = (typeof EditorModes)[number];
|
|
56
56
|
|
|
57
|
-
export type
|
|
58
|
-
model?:
|
|
59
|
-
slots?:
|
|
57
|
+
export type MarkdownEditorProps = {
|
|
58
|
+
model?: EditorModel;
|
|
59
|
+
slots?: EditorSlots;
|
|
60
60
|
editorMode?: EditorMode;
|
|
61
61
|
onChange?: (content: string | Text) => void;
|
|
62
62
|
};
|
|
63
63
|
|
|
64
|
-
export type
|
|
64
|
+
export type MarkdownEditorRef = {
|
|
65
65
|
editor: HTMLDivElement | null;
|
|
66
66
|
state?: EditorState;
|
|
67
67
|
view?: EditorView;
|
|
68
68
|
};
|
|
69
69
|
|
|
70
|
-
export const
|
|
70
|
+
export const MarkdownEditor = forwardRef<MarkdownEditorRef, MarkdownEditorProps>(
|
|
71
71
|
({ model, slots = {}, onChange, editorMode }, forwardedRef) => {
|
|
72
72
|
const { id, content, provider, peer } = model ?? {};
|
|
73
73
|
const { themeMode } = useThemeContext();
|
|
@@ -99,17 +99,17 @@ export const markdownTheme = {
|
|
|
99
99
|
'& .cm-line *': {
|
|
100
100
|
lineHeight: 1.6,
|
|
101
101
|
},
|
|
102
|
-
'& .cm-selectionBackground': {
|
|
103
|
-
background: get(tokens, 'extend.colors.primary.150', '#00ffff')
|
|
102
|
+
'&.cm-focused .cm-selectionBackground, & .cm-selectionBackground': {
|
|
103
|
+
background: get(tokens, 'extend.colors.primary.150', '#00ffff'),
|
|
104
104
|
},
|
|
105
|
-
'.dark & .cm-selectionBackground': {
|
|
106
|
-
background: get(tokens, 'extend.colors.primary.
|
|
105
|
+
'.dark & .cm-selectionBackground, .dark &.cm-focused .cm-selectionBackground': {
|
|
106
|
+
background: get(tokens, 'extend.colors.primary.850', '#00ffff'),
|
|
107
107
|
},
|
|
108
108
|
'& .cm-selectionMatch': {
|
|
109
|
-
background: get(tokens, 'extend.colors.primary.
|
|
109
|
+
background: get(tokens, 'extend.colors.primary.250', '#00ffff') + '44',
|
|
110
110
|
},
|
|
111
111
|
'.dark & .cm-selectionMatch': {
|
|
112
|
-
background: get(tokens, 'extend.colors.primary.
|
|
112
|
+
background: get(tokens, 'extend.colors.primary.600', '#00ffff') + '44',
|
|
113
113
|
},
|
|
114
114
|
'& .cm-content': {
|
|
115
115
|
caretColor: 'black',
|
|
@@ -145,6 +145,12 @@ export const markdownTheme = {
|
|
|
145
145
|
paddingBlockStart: '.15em',
|
|
146
146
|
paddingBlockEnd: '.15em',
|
|
147
147
|
},
|
|
148
|
+
'& .cm-ySelection, & .cm-yLineSelection': {
|
|
149
|
+
mixBlendMode: 'multiply',
|
|
150
|
+
},
|
|
151
|
+
'.dark & .cm-ySelection, .dark & .cm-yLineSelection': {
|
|
152
|
+
mixBlendMode: 'screen',
|
|
153
|
+
},
|
|
148
154
|
'& .cm-ySelectionCaret': {
|
|
149
155
|
display: 'inline-block',
|
|
150
156
|
insetBlockStart: '.1em',
|
|
@@ -12,11 +12,11 @@ import { ClientDecorator, textGenerator, useDataGenerator } from '@dxos/react-cl
|
|
|
12
12
|
import { useId } from '@dxos/react-ui';
|
|
13
13
|
import { mx } from '@dxos/react-ui-theme';
|
|
14
14
|
|
|
15
|
-
import {
|
|
15
|
+
import { RichTextEditor, type RichTextEditorProps } from './RichText';
|
|
16
16
|
import { Replicator, useYjsModel } from '../../testing';
|
|
17
17
|
|
|
18
18
|
export default {
|
|
19
|
-
component:
|
|
19
|
+
component: RichTextEditor,
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
export const Default = {
|
|
@@ -30,7 +30,7 @@ export const Default = {
|
|
|
30
30
|
|
|
31
31
|
const replicator = new Replicator(TextKind.RICH);
|
|
32
32
|
export const WithYjs = {
|
|
33
|
-
render: (args: Omit<
|
|
33
|
+
render: (args: Omit<RichTextEditorProps, 'model'>) => {
|
|
34
34
|
const [generate, setGenerate] = useState(false);
|
|
35
35
|
const generateId = useId('generate');
|
|
36
36
|
|
|
@@ -48,7 +48,7 @@ export const WithYjs = {
|
|
|
48
48
|
<input type='checkbox' onChange={(event) => setGenerate(event.target.checked)} />
|
|
49
49
|
Generate Data
|
|
50
50
|
</div>
|
|
51
|
-
<
|
|
51
|
+
<RichTextEditor
|
|
52
52
|
{...args}
|
|
53
53
|
model={model}
|
|
54
54
|
slots={{
|
|
@@ -14,7 +14,7 @@ import React, { forwardRef, useImperativeHandle, useMemo } from 'react';
|
|
|
14
14
|
import { generateName } from '@dxos/display-name';
|
|
15
15
|
import { mx } from '@dxos/react-ui-theme';
|
|
16
16
|
|
|
17
|
-
import { type
|
|
17
|
+
import { type EditorModel, type EditorSlots } from '../../model';
|
|
18
18
|
import {
|
|
19
19
|
blockquote,
|
|
20
20
|
bold,
|
|
@@ -35,9 +35,9 @@ import { cursorColor } from '../../yjs';
|
|
|
35
35
|
export type TipTapEditor = Editor;
|
|
36
36
|
|
|
37
37
|
type UseEditorOptions = {
|
|
38
|
-
model?:
|
|
38
|
+
model?: EditorModel;
|
|
39
39
|
placeholder?: string;
|
|
40
|
-
slots?: Pick<
|
|
40
|
+
slots?: Pick<EditorSlots, 'editor'>;
|
|
41
41
|
};
|
|
42
42
|
|
|
43
43
|
const useEditor = ({ model, placeholder = 'Enter text…', slots = {} }: UseEditorOptions) => {
|
|
@@ -161,15 +161,15 @@ const useEditor = ({ model, placeholder = 'Enter text…', slots = {} }: UseEdit
|
|
|
161
161
|
);
|
|
162
162
|
};
|
|
163
163
|
|
|
164
|
-
export type
|
|
165
|
-
slots?:
|
|
164
|
+
export type RichTextEditorProps = UseEditorOptions & {
|
|
165
|
+
slots?: EditorSlots;
|
|
166
166
|
};
|
|
167
167
|
|
|
168
168
|
/**
|
|
169
169
|
* @deprecated
|
|
170
170
|
*/
|
|
171
171
|
// TODO(burdon): Currently broken.
|
|
172
|
-
export const
|
|
172
|
+
export const RichTextEditor = forwardRef<Editor | null, RichTextEditorProps>((props, ref) => {
|
|
173
173
|
const editor = useEditor(props);
|
|
174
174
|
useImperativeHandle<Editor | null, Editor | null>(ref, () => editor, [editor]);
|
|
175
175
|
|
package/src/components/index.ts
CHANGED
package/src/model.ts
CHANGED
|
@@ -12,7 +12,7 @@ import type { YText, YXmlFragment } from '@dxos/text-model';
|
|
|
12
12
|
|
|
13
13
|
import { SpaceAwarenessProvider } from './yjs';
|
|
14
14
|
|
|
15
|
-
export type
|
|
15
|
+
export type EditorSlots = {
|
|
16
16
|
root?: Omit<ComponentProps<'div'>, 'ref'>;
|
|
17
17
|
editor?: {
|
|
18
18
|
className?: string;
|
|
@@ -27,7 +27,7 @@ type Awareness = awarenessProtocol.Awareness;
|
|
|
27
27
|
type Provider = { awareness: Awareness };
|
|
28
28
|
|
|
29
29
|
// TODO(wittjosiah): Factor out to common package? @dxos/react-client?
|
|
30
|
-
export type
|
|
30
|
+
export type EditorModel = {
|
|
31
31
|
id: string;
|
|
32
32
|
content: string | YText | YXmlFragment;
|
|
33
33
|
provider?: Provider;
|
|
@@ -44,8 +44,8 @@ export type UseTextModelOptions = {
|
|
|
44
44
|
};
|
|
45
45
|
|
|
46
46
|
// TODO(wittjosiah): Factor out to common package? @dxos/react-client?
|
|
47
|
-
// TODO(burdon): Decouple space (make
|
|
48
|
-
export const useTextModel = ({ identity, space, text }: UseTextModelOptions):
|
|
47
|
+
// TODO(burdon): Decouple space (make Editor less dependent on entire stack)?
|
|
48
|
+
export const useTextModel = ({ identity, space, text }: UseTextModelOptions): EditorModel | undefined => {
|
|
49
49
|
const provider = useMemo(() => {
|
|
50
50
|
if (!space || !text?.doc) {
|
|
51
51
|
return undefined;
|
|
@@ -6,35 +6,35 @@ import * as dxos_echo_schema from "@dxos/echo-schema";
|
|
|
6
6
|
|
|
7
7
|
export const types = new dxos_echo_schema.TypeCollection();
|
|
8
8
|
|
|
9
|
-
export type
|
|
9
|
+
export type EditorDocumentProps = {
|
|
10
10
|
content: dxos_echo_schema.Text;
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
export class
|
|
13
|
+
export class EditorDocument extends dxos_echo_schema.TypedObject<EditorDocumentProps> {
|
|
14
14
|
declare static readonly schema: dxos_echo_schema.Schema;
|
|
15
15
|
|
|
16
16
|
static filter(
|
|
17
17
|
filter?:
|
|
18
|
-
| Partial<
|
|
19
|
-
| dxos_echo_schema.OperatorFilter<
|
|
20
|
-
): dxos_echo_schema.Filter<
|
|
18
|
+
| Partial<EditorDocumentProps>
|
|
19
|
+
| dxos_echo_schema.OperatorFilter<EditorDocument>
|
|
20
|
+
): dxos_echo_schema.Filter<EditorDocument> {
|
|
21
21
|
return dxos_echo_schema.Filter.typename(
|
|
22
|
-
"dxos.testing.
|
|
22
|
+
"dxos.testing.editor.EditorDocument",
|
|
23
23
|
filter
|
|
24
24
|
);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
constructor(
|
|
28
|
-
initValues?: Partial<
|
|
28
|
+
initValues?: Partial<EditorDocumentProps>,
|
|
29
29
|
opts?: dxos_echo_schema.TypedObjectOptions
|
|
30
30
|
) {
|
|
31
|
-
super({ ...initValues }, { schema:
|
|
31
|
+
super({ ...initValues }, { schema: EditorDocument.schema, ...opts });
|
|
32
32
|
}
|
|
33
33
|
declare content: dxos_echo_schema.Text;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
types.registerPrototype(
|
|
37
|
-
typename: "dxos.testing.
|
|
36
|
+
types.registerPrototype(EditorDocument, {
|
|
37
|
+
typename: "dxos.testing.editor.EditorDocument",
|
|
38
38
|
props: [
|
|
39
39
|
{
|
|
40
40
|
id: "content",
|