@dxos/react-ui-editor 0.3.11-main.bd26370 → 0.3.11-main.c244d7e
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 +2065 -1565
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/types/src/components/TextEditor/MarkdownEditor.stories.d.ts +17 -14
- package/dist/types/src/components/TextEditor/MarkdownEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/TextEditor/TextEditor.d.ts +19 -17
- package/dist/types/src/components/TextEditor/TextEditor.d.ts.map +1 -1
- package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts +6 -3
- package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts.map +1 -1
- package/dist/types/src/{hooks/automerge → components/TextEditor}/automerge.stories.d.ts +6 -1
- package/dist/types/src/components/TextEditor/automerge.stories.d.ts.map +1 -0
- package/dist/types/src/components/TextEditor/codemirror.stories.d.ts.map +1 -1
- package/dist/types/src/components/TextEditor/comments.stories.d.ts +26 -0
- package/dist/types/src/components/TextEditor/comments.stories.d.ts.map +1 -0
- package/dist/types/src/components/TextEditor/index.d.ts +0 -2
- package/dist/types/src/components/TextEditor/index.d.ts.map +1 -1
- package/dist/types/src/{hooks/yjs → components/TextEditor}/yjs.stories.d.ts +1 -1
- package/dist/types/src/components/TextEditor/yjs.stories.d.ts.map +1 -0
- package/dist/types/src/extensions/autocomplete.d.ts.map +1 -0
- package/dist/types/src/extensions/automerge/automerge.d.ts +9 -0
- package/dist/types/src/extensions/automerge/automerge.d.ts.map +1 -0
- package/dist/types/src/extensions/automerge/cursor.d.ts +5 -0
- package/dist/types/src/extensions/automerge/cursor.d.ts.map +1 -0
- package/dist/types/src/extensions/automerge/defs.d.ts +24 -0
- package/dist/types/src/extensions/automerge/defs.d.ts.map +1 -0
- package/dist/types/src/extensions/automerge/index.d.ts +3 -0
- package/dist/types/src/extensions/automerge/index.d.ts.map +1 -0
- package/dist/types/src/extensions/automerge/semaphore.d.ts +14 -0
- package/dist/types/src/extensions/automerge/semaphore.d.ts.map +1 -0
- package/dist/types/src/extensions/automerge/update-automerge.d.ts +5 -0
- package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +1 -0
- package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +1 -0
- package/dist/types/src/extensions/awareness.d.ts +48 -0
- package/dist/types/src/extensions/awareness.d.ts.map +1 -0
- package/dist/types/src/extensions/basic.d.ts +8 -0
- package/dist/types/src/extensions/basic.d.ts.map +1 -0
- package/dist/types/src/extensions/blast.d.ts.map +1 -0
- package/dist/types/src/extensions/code.d.ts.map +1 -0
- package/dist/types/src/{components/TextEditor/extensions → extensions}/comments.d.ts +32 -17
- package/dist/types/src/extensions/comments.d.ts.map +1 -0
- package/dist/types/src/extensions/cursor.d.ts +25 -0
- package/dist/types/src/extensions/cursor.d.ts.map +1 -0
- package/dist/types/src/extensions/hr.d.ts.map +1 -0
- package/dist/types/src/extensions/image.d.ts.map +1 -0
- package/dist/types/src/{components/TextEditor/extensions → extensions}/index.d.ts +5 -2
- package/dist/types/src/extensions/index.d.ts.map +1 -0
- package/dist/types/src/{components/TextEditor/extensions → extensions}/link.d.ts +1 -0
- package/dist/types/src/extensions/link.d.ts.map +1 -0
- package/dist/types/src/extensions/listener.d.ts +10 -0
- package/dist/types/src/extensions/listener.d.ts.map +1 -0
- package/dist/types/src/{components/TextEditor/extensions → extensions}/markdown/bundle.d.ts +2 -5
- package/dist/types/src/extensions/markdown/bundle.d.ts.map +1 -0
- package/dist/types/src/extensions/markdown/highlight.d.ts.map +1 -0
- package/dist/types/src/extensions/markdown/index.d.ts.map +1 -0
- package/dist/types/src/extensions/mention.d.ts.map +1 -0
- package/dist/types/src/extensions/outliner.d.ts +4 -0
- package/dist/types/src/extensions/outliner.d.ts.map +1 -0
- package/dist/types/src/extensions/table.d.ts.map +1 -0
- package/dist/types/src/extensions/tasklist.d.ts.map +1 -0
- package/dist/types/src/extensions/typewriter.d.ts.map +1 -0
- package/dist/types/src/extensions/yjs/cursor.d.ts +4 -0
- package/dist/types/src/extensions/yjs/cursor.d.ts.map +1 -0
- package/dist/types/src/extensions/yjs/index.d.ts +2 -0
- package/dist/types/src/extensions/yjs/index.d.ts.map +1 -0
- package/dist/types/src/extensions/yjs/yjs.d.ts +4 -0
- package/dist/types/src/extensions/yjs/yjs.d.ts.map +1 -0
- package/dist/types/src/extensions/yjs/yjs.test.d.ts.map +1 -0
- package/dist/types/src/hooks/automerge.d.ts +4 -0
- package/dist/types/src/hooks/automerge.d.ts.map +1 -0
- package/dist/types/src/hooks/awareness-provider.d.ts +28 -0
- package/dist/types/src/hooks/awareness-provider.d.ts.map +1 -0
- package/dist/types/src/hooks/defs.d.ts +28 -0
- package/dist/types/src/hooks/defs.d.ts.map +1 -0
- package/dist/types/src/hooks/index.d.ts +4 -1
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useTextModel.d.ts +2 -31
- package/dist/types/src/hooks/useTextModel.d.ts.map +1 -1
- package/dist/types/src/hooks/{yjs/space-provider.d.ts → yjs.d.ts} +9 -8
- package/dist/types/src/hooks/yjs.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +5 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/styles/cursors.d.ts.map +1 -0
- package/dist/types/src/styles/index.d.ts +1 -0
- package/dist/types/src/styles/index.d.ts.map +1 -1
- package/dist/types/src/styles/markdown.d.ts.map +1 -1
- package/dist/types/src/styles/tokens.d.ts +1 -0
- package/dist/types/src/styles/tokens.d.ts.map +1 -1
- package/dist/types/src/testing/replicator.d.ts +2 -2
- package/dist/types/src/testing/replicator.d.ts.map +1 -1
- package/dist/types/src/{components/TextEditor/themes → themes}/default.d.ts +1 -1
- package/dist/types/src/themes/default.d.ts.map +1 -0
- package/dist/types/src/themes/index.d.ts.map +1 -0
- package/dist/types/src/util.d.ts +7 -0
- package/dist/types/src/util.d.ts.map +1 -0
- package/package.json +25 -23
- package/src/components/TextEditor/MarkdownEditor.stories.tsx +77 -81
- package/src/components/TextEditor/TextEditor.stories.tsx +13 -34
- package/src/components/TextEditor/TextEditor.tsx +115 -94
- package/src/{hooks/automerge → components/TextEditor}/automerge.stories.tsx +66 -6
- package/src/components/TextEditor/codemirror.stories.ts +3 -2
- package/src/components/TextEditor/comments.stories.tsx +357 -0
- package/src/components/TextEditor/index.ts +0 -3
- package/src/{hooks/yjs → components/TextEditor}/yjs.stories.tsx +1 -1
- package/src/{components/TextEditor/extensions → extensions}/autocomplete.ts +23 -19
- package/src/extensions/automerge/automerge.ts +70 -0
- package/src/extensions/automerge/cursor.ts +52 -0
- package/src/extensions/automerge/defs.ts +41 -0
- package/src/extensions/automerge/index.ts +6 -0
- package/src/{hooks → extensions}/automerge/semaphore.ts +37 -28
- package/src/{hooks → extensions}/automerge/update-automerge.ts +5 -6
- package/src/{hooks → extensions}/automerge/update-codemirror.ts +13 -5
- package/src/extensions/awareness.ts +327 -0
- package/src/extensions/basic.ts +37 -0
- package/src/{components/TextEditor/extensions → extensions}/code.ts +28 -23
- package/src/extensions/comments.ts +428 -0
- package/src/extensions/cursor.ts +50 -0
- package/src/extensions/hr.ts +72 -0
- package/src/extensions/image.ts +87 -0
- package/src/{components/TextEditor/extensions → extensions}/index.ts +5 -2
- package/src/{components/TextEditor/extensions → extensions}/link.ts +116 -62
- package/src/extensions/listener.ts +35 -0
- package/src/{components/TextEditor/extensions → extensions}/markdown/bundle.ts +18 -24
- package/src/{components/TextEditor/extensions → extensions}/markdown/highlight.ts +4 -13
- package/src/{components/TextEditor/extensions → extensions}/mention.ts +6 -1
- package/src/extensions/outliner.ts +12 -0
- package/src/{components/TextEditor/extensions → extensions}/table.ts +10 -4
- package/src/extensions/tasklist.ts +111 -0
- package/src/{components/TextEditor/extensions → extensions}/typewriter.ts +1 -1
- package/src/extensions/yjs/cursor.ts +22 -0
- package/src/extensions/yjs/index.ts +5 -0
- package/src/{hooks → extensions}/yjs/yjs.test.ts +2 -26
- package/src/extensions/yjs/yjs.ts +16 -0
- package/src/hooks/automerge.ts +53 -0
- package/src/hooks/awareness-provider.ts +120 -0
- package/src/hooks/defs.ts +47 -0
- package/src/hooks/index.ts +5 -1
- package/src/hooks/useTextModel.ts +9 -128
- package/src/hooks/{yjs/space-provider.ts → yjs.ts} +50 -19
- package/src/index.ts +5 -0
- package/src/styles/index.ts +1 -0
- package/src/styles/markdown.ts +0 -2
- package/src/styles/tokens.ts +3 -0
- package/src/testing/replicator.ts +10 -15
- package/src/{components/TextEditor/themes → themes}/default.ts +52 -79
- package/src/util.ts +41 -0
- package/dist/types/src/components/TextEditor/extensions/autocomplete.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/basic.d.ts +0 -9
- package/dist/types/src/components/TextEditor/extensions/basic.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/blast.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/code.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/comments.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/hr.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/image.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/index.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/link.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/listener.d.ts +0 -9
- package/dist/types/src/components/TextEditor/extensions/listener.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/markdown/bundle.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/markdown/highlight.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/markdown/index.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/mention.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/mermaid.d.ts +0 -3
- package/dist/types/src/components/TextEditor/extensions/mermaid.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/table.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/tasklist.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/tooltip.d.ts +0 -12
- package/dist/types/src/components/TextEditor/extensions/tooltip.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/typewriter.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/util.d.ts +0 -5
- package/dist/types/src/components/TextEditor/extensions/util.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/themes/default.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/themes/index.d.ts.map +0 -1
- package/dist/types/src/hooks/automerge/automerge.stories.d.ts.map +0 -1
- package/dist/types/src/hooks/automerge/handle.d.ts +0 -9
- package/dist/types/src/hooks/automerge/handle.d.ts.map +0 -1
- package/dist/types/src/hooks/automerge/index.d.ts +0 -3
- package/dist/types/src/hooks/automerge/index.d.ts.map +0 -1
- package/dist/types/src/hooks/automerge/plugin.d.ts +0 -26
- package/dist/types/src/hooks/automerge/plugin.d.ts.map +0 -1
- package/dist/types/src/hooks/automerge/semaphore.d.ts +0 -19
- package/dist/types/src/hooks/automerge/semaphore.d.ts.map +0 -1
- package/dist/types/src/hooks/automerge/update-automerge.d.ts +0 -6
- package/dist/types/src/hooks/automerge/update-automerge.d.ts.map +0 -1
- package/dist/types/src/hooks/automerge/update-codemirror.d.ts.map +0 -1
- package/dist/types/src/hooks/yjs/cursors.d.ts.map +0 -1
- package/dist/types/src/hooks/yjs/index.d.ts +0 -3
- package/dist/types/src/hooks/yjs/index.d.ts.map +0 -1
- package/dist/types/src/hooks/yjs/space-provider.d.ts.map +0 -1
- package/dist/types/src/hooks/yjs/yjs.stories.d.ts.map +0 -1
- package/dist/types/src/hooks/yjs/yjs.test.d.ts.map +0 -1
- package/src/components/TextEditor/extensions/basic.ts +0 -32
- package/src/components/TextEditor/extensions/comments.ts +0 -388
- package/src/components/TextEditor/extensions/hr.ts +0 -74
- package/src/components/TextEditor/extensions/image.ts +0 -69
- package/src/components/TextEditor/extensions/listener.ts +0 -23
- package/src/components/TextEditor/extensions/mermaid.ts +0 -11
- package/src/components/TextEditor/extensions/tasklist.ts +0 -121
- package/src/components/TextEditor/extensions/tooltip.ts +0 -61
- package/src/components/TextEditor/extensions/util.ts +0 -18
- package/src/hooks/automerge/handle.ts +0 -14
- package/src/hooks/automerge/index.ts +0 -6
- package/src/hooks/automerge/plugin.ts +0 -134
- package/src/hooks/yjs/index.ts +0 -6
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/autocomplete.d.ts +0 -0
- /package/dist/types/src/{hooks → extensions}/automerge/update-codemirror.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/blast.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/code.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/hr.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/image.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/markdown/highlight.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/markdown/index.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/mention.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/table.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/tasklist.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/typewriter.d.ts +0 -0
- /package/dist/types/src/{hooks → extensions}/yjs/yjs.test.d.ts +0 -0
- /package/dist/types/src/{hooks/yjs → styles}/cursors.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/themes → themes}/index.d.ts +0 -0
- /package/src/{components/TextEditor/extensions → extensions}/blast.ts +0 -0
- /package/src/{components/TextEditor/extensions → extensions}/markdown/index.ts +0 -0
- /package/src/{hooks/yjs → styles}/cursors.ts +0 -0
- /package/src/{components/TextEditor/themes → themes}/index.ts +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Observable } from 'lib0/observable';
|
|
2
|
-
import * as
|
|
2
|
+
import * as YP 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
6
|
import { type EditorModel } from '../hooks';
|
|
7
|
-
type Awareness =
|
|
7
|
+
type Awareness = YP.Awareness;
|
|
8
8
|
/**
|
|
9
9
|
* Yjs awareness provider in-memory.
|
|
10
10
|
*/
|
|
@@ -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,
|
|
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,EAAE,MAAM,uBAAuB,CAAC;AAE5C,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,EAAE,CAAC,SAAS,CAAC;AAM9B;;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;IA4BtG,IAAI,SAAS,IAAI,SAAS,CAEzB;IAED,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,sBAAsB;IAS9B,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,CAoB1D;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,WAEzE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../../../src/themes/default.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,WAAW,EAAU,MAAM,WAAW,CAAC;AAKrD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,EAAE,WAiO1B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,WAOvB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAO3B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,WAOvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/themes/index.ts"],"names":[],"mappings":"AAIA,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Transaction } from '@codemirror/state';
|
|
2
|
+
/**
|
|
3
|
+
* CodeMirror callbacks swallow errors so wrap handlers.
|
|
4
|
+
*/
|
|
5
|
+
export declare const callbackWrapper: <T extends Function>(fn: T) => T;
|
|
6
|
+
export declare const logChanges: (trs: readonly Transaction[]) => void;
|
|
7
|
+
//# sourceMappingURL=util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIrD;;GAEG;AAEH,eAAO,MAAM,eAAe,kCAOR,CAAC;AAErB,eAAO,MAAM,UAAU,QAAS,SAAS,WAAW,EAAE,SAmBrD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/react-ui-editor",
|
|
3
|
-
"version": "0.3.11-main.
|
|
3
|
+
"version": "0.3.11-main.c244d7e",
|
|
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",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@codemirror/autocomplete": "^6.11.1",
|
|
17
17
|
"@codemirror/commands": "^6.3.2",
|
|
18
|
-
"@codemirror/lang-markdown": "^6.2.
|
|
18
|
+
"@codemirror/lang-markdown": "^6.2.4",
|
|
19
19
|
"@codemirror/language": "^6.9.3",
|
|
20
20
|
"@codemirror/language-data": "^6.3.1",
|
|
21
21
|
"@codemirror/lint": "^6.4.2",
|
|
@@ -38,23 +38,24 @@
|
|
|
38
38
|
"y-codemirror.next": "^0.3.2",
|
|
39
39
|
"y-protocols": "^1.0.5",
|
|
40
40
|
"yjs": "^13.6.10",
|
|
41
|
-
"@dxos/async": "0.3.11-main.
|
|
42
|
-
"@dxos/automerge": "0.3.11-main.
|
|
43
|
-
"@dxos/
|
|
44
|
-
"@dxos/
|
|
45
|
-
"@dxos/
|
|
46
|
-
"@dxos/
|
|
47
|
-
"@dxos/
|
|
48
|
-
"@dxos/
|
|
49
|
-
"@dxos/
|
|
50
|
-
"@dxos/react-ui-theme": "0.3.11-main.
|
|
51
|
-
"@dxos/
|
|
52
|
-
"@dxos/
|
|
53
|
-
"@dxos/
|
|
41
|
+
"@dxos/async": "0.3.11-main.c244d7e",
|
|
42
|
+
"@dxos/automerge": "0.3.11-main.c244d7e",
|
|
43
|
+
"@dxos/context": "0.3.11-main.c244d7e",
|
|
44
|
+
"@dxos/debug": "0.3.11-main.c244d7e",
|
|
45
|
+
"@dxos/display-name": "0.3.11-main.c244d7e",
|
|
46
|
+
"@dxos/echo-schema": "0.3.11-main.c244d7e",
|
|
47
|
+
"@dxos/invariant": "0.3.11-main.c244d7e",
|
|
48
|
+
"@dxos/log": "0.3.11-main.c244d7e",
|
|
49
|
+
"@dxos/protocols": "0.3.11-main.c244d7e",
|
|
50
|
+
"@dxos/react-ui-theme": "0.3.11-main.c244d7e",
|
|
51
|
+
"@dxos/react-async": "0.3.11-main.c244d7e",
|
|
52
|
+
"@dxos/react-ui": "0.3.11-main.c244d7e",
|
|
53
|
+
"@dxos/text-model": "0.3.11-main.c244d7e",
|
|
54
|
+
"@dxos/util": "0.3.11-main.c244d7e"
|
|
54
55
|
},
|
|
55
56
|
"devDependencies": {
|
|
56
57
|
"@automerge/automerge-repo-network-broadcastchannel": "^1.0.19",
|
|
57
|
-
"@faker-js/faker": "^8.
|
|
58
|
+
"@faker-js/faker": "^8.3.1",
|
|
58
59
|
"@phosphor-icons/react": "^2.0.5",
|
|
59
60
|
"@preact/signals-react": "^1.3.6",
|
|
60
61
|
"@types/lodash.defaultsdeep": "^4.6.6",
|
|
@@ -66,18 +67,19 @@
|
|
|
66
67
|
"deepsignal": "1.4.0-shallow.0",
|
|
67
68
|
"react": "^18.2.0",
|
|
68
69
|
"react-dom": "^18.2.0",
|
|
69
|
-
"@dxos/config": "0.3.11-main.
|
|
70
|
-
"@dxos/echo-signals": "0.3.11-main.
|
|
71
|
-
"@dxos/
|
|
72
|
-
"@dxos/
|
|
73
|
-
"@dxos/react-ui": "0.3.11-main.
|
|
74
|
-
"@dxos/
|
|
70
|
+
"@dxos/config": "0.3.11-main.c244d7e",
|
|
71
|
+
"@dxos/echo-signals": "0.3.11-main.c244d7e",
|
|
72
|
+
"@dxos/echo-typegen": "0.3.11-main.c244d7e",
|
|
73
|
+
"@dxos/storybook-utils": "0.3.11-main.c244d7e",
|
|
74
|
+
"@dxos/react-ui": "0.3.11-main.c244d7e",
|
|
75
|
+
"@dxos/react-client": "0.3.11-main.c244d7e",
|
|
76
|
+
"@dxos/keyboard": "0.3.11-main.c244d7e"
|
|
75
77
|
},
|
|
76
78
|
"peerDependencies": {
|
|
77
79
|
"@phosphor-icons/react": "^2.0.5",
|
|
78
80
|
"react": "^18.2.0",
|
|
79
81
|
"react-dom": "^18.2.0",
|
|
80
|
-
"@dxos/react-client": "0.3.11-main.
|
|
82
|
+
"@dxos/react-client": "0.3.11-main.c244d7e"
|
|
81
83
|
},
|
|
82
84
|
"publishConfig": {
|
|
83
85
|
"access": "public"
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import '@dxosTheme';
|
|
6
6
|
|
|
7
|
-
import { EditorView } from '@codemirror/view';
|
|
7
|
+
import { type EditorView } from '@codemirror/view';
|
|
8
8
|
import { faker } from '@faker-js/faker';
|
|
9
9
|
import { ArrowSquareOut } from '@phosphor-icons/react';
|
|
10
10
|
import defaultsDeep from 'lodash.defaultsdeep';
|
|
@@ -12,11 +12,12 @@ import React, { type FC, StrictMode, useRef, useState } from 'react';
|
|
|
12
12
|
import { createRoot } from 'react-dom/client';
|
|
13
13
|
|
|
14
14
|
import { TextObject } from '@dxos/echo-schema';
|
|
15
|
+
import { keySymbols, parseShortcut } from '@dxos/keyboard';
|
|
15
16
|
import { PublicKey } from '@dxos/keys';
|
|
16
17
|
import { fixedInsetFlexLayout, getSize, groupSurface, mx } from '@dxos/react-ui-theme';
|
|
17
18
|
import { withTheme } from '@dxos/storybook-utils';
|
|
18
19
|
|
|
19
|
-
import { MarkdownEditor, type TextEditorProps
|
|
20
|
+
import { MarkdownEditor, type TextEditorProps } from './TextEditor';
|
|
20
21
|
import {
|
|
21
22
|
autocomplete,
|
|
22
23
|
blast,
|
|
@@ -25,19 +26,17 @@ import {
|
|
|
25
26
|
defaultOptions,
|
|
26
27
|
hr,
|
|
27
28
|
image,
|
|
28
|
-
listener,
|
|
29
29
|
link,
|
|
30
30
|
mention,
|
|
31
31
|
table,
|
|
32
32
|
tasklist,
|
|
33
|
-
tooltip,
|
|
34
33
|
typewriter,
|
|
35
34
|
type CommentsOptions,
|
|
36
|
-
type TooltipOptions,
|
|
37
35
|
type LinkOptions,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
outliner,
|
|
37
|
+
useComments,
|
|
38
|
+
} from '../../extensions';
|
|
39
|
+
import { type Comment, useTextModel } from '../../hooks';
|
|
41
40
|
|
|
42
41
|
// Extensions:
|
|
43
42
|
// TODO(burdon): Table of contents.
|
|
@@ -57,8 +56,8 @@ const text = {
|
|
|
57
56
|
'- [x] decorator',
|
|
58
57
|
'- [ ] checkbox',
|
|
59
58
|
' - [ ] state',
|
|
60
|
-
'
|
|
61
|
-
'
|
|
59
|
+
' - [ ] indent',
|
|
60
|
+
' - [x] style',
|
|
62
61
|
'',
|
|
63
62
|
),
|
|
64
63
|
|
|
@@ -125,8 +124,6 @@ const text = {
|
|
|
125
124
|
|
|
126
125
|
paragraphs: str(...faker.helpers.multiple(() => [faker.lorem.paragraph(), ''], { count: 3 }).flat()),
|
|
127
126
|
|
|
128
|
-
mermaid: str('```mermaid', 'graph TD;', 'A-->B;', 'A-->C;', 'B-->D;', 'C-->D;', '```'),
|
|
129
|
-
|
|
130
127
|
footer: str('', '', '', '', '')
|
|
131
128
|
};
|
|
132
129
|
|
|
@@ -166,10 +163,12 @@ const links = [
|
|
|
166
163
|
{ label: 'StackEdit', apply: '[StackEdit](https://stackedit.io/app)' },
|
|
167
164
|
];
|
|
168
165
|
|
|
166
|
+
const names = ['adam', 'alice', 'alison', 'bob', 'carol', 'charlie', 'sayuri', 'shoko'];
|
|
167
|
+
|
|
169
168
|
const hover =
|
|
170
169
|
'rounded-sm text-base text-primary-600 hover:text-primary-500 dark:text-primary-300 hover:dark:text-primary-200';
|
|
171
170
|
|
|
172
|
-
const
|
|
171
|
+
const onHoverLinkTooltip: LinkOptions['onHover'] = (el, url) => {
|
|
173
172
|
const web = new URL(url);
|
|
174
173
|
createRoot(el).render(
|
|
175
174
|
<StrictMode>
|
|
@@ -187,26 +186,26 @@ const Key: FC<{ char: string }> = ({ char }) => (
|
|
|
187
186
|
</span>
|
|
188
187
|
);
|
|
189
188
|
|
|
190
|
-
const onCommentsHover: CommentsOptions['onHover'] = (el) => {
|
|
189
|
+
const onCommentsHover: CommentsOptions['onHover'] = (el, shortcut) => {
|
|
191
190
|
createRoot(el).render(
|
|
192
191
|
<StrictMode>
|
|
193
192
|
<div className='flex items-center gap-2 px-2 py-2 bg-neutral-700 text-white text-xs rounded'>
|
|
194
193
|
<div>Create comment</div>
|
|
195
|
-
{/* TODO(burdon): Unify shortcuts. */}
|
|
196
194
|
<div className='flex gap-1'>
|
|
197
|
-
|
|
198
|
-
|
|
195
|
+
{keySymbols(parseShortcut(shortcut)).map((char) => (
|
|
196
|
+
<Key key={char} char={char} />
|
|
197
|
+
))}
|
|
199
198
|
</div>
|
|
200
199
|
</div>
|
|
201
200
|
</StrictMode>,
|
|
202
201
|
);
|
|
203
202
|
};
|
|
204
203
|
|
|
205
|
-
const
|
|
204
|
+
const onRenderLink: LinkOptions['onRender'] = (el, url) => {
|
|
206
205
|
createRoot(el).render(
|
|
207
206
|
<StrictMode>
|
|
208
207
|
<a href={url} target='_blank' rel='noreferrer' className={hover}>
|
|
209
|
-
<ArrowSquareOut weight='bold' className={mx(getSize(4), 'inline-block leading-none mis-1 mb-
|
|
208
|
+
<ArrowSquareOut weight='bold' className={mx(getSize(4), 'inline-block leading-none mis-1 mb-[2px]')} />
|
|
210
209
|
</a>
|
|
211
210
|
</StrictMode>,
|
|
212
211
|
);
|
|
@@ -214,23 +213,24 @@ const onLinkRender: LinkOptions['onRender'] = (el, url) => {
|
|
|
214
213
|
|
|
215
214
|
type StoryProps = {
|
|
216
215
|
text?: string;
|
|
216
|
+
comments?: Comment[];
|
|
217
217
|
automerge?: boolean;
|
|
218
|
-
} & Pick<TextEditorProps, '
|
|
218
|
+
} & Pick<TextEditorProps, 'readonly' | 'placeholder' | 'slots' | 'extensions'>;
|
|
219
219
|
|
|
220
|
-
const Story = ({ text, automerge, ...props }: StoryProps) => {
|
|
221
|
-
const ref = useRef<TextEditorRef>(null);
|
|
220
|
+
const Story = ({ text, comments, automerge, placeholder = 'New document.', ...props }: StoryProps) => {
|
|
222
221
|
const [item] = useState({ text: new TextObject(text, undefined, undefined, { automerge }) });
|
|
222
|
+
const view = useRef<EditorView>(null);
|
|
223
223
|
const model = useTextModel({ text: item.text });
|
|
224
|
+
useComments(view.current, comments);
|
|
224
225
|
if (!model) {
|
|
225
226
|
return null;
|
|
226
227
|
}
|
|
227
228
|
|
|
228
229
|
return (
|
|
229
230
|
<div className={mx(fixedInsetFlexLayout, groupSurface)}>
|
|
230
|
-
<div className='flex justify-center
|
|
231
|
-
<div className='flex flex-col w-[800px]
|
|
232
|
-
<MarkdownEditor ref={
|
|
233
|
-
<div className='flex shrink-0 h-[300px]'></div>
|
|
231
|
+
<div className='flex h-full justify-center'>
|
|
232
|
+
<div className='flex flex-col h-full w-[800px]'>
|
|
233
|
+
<MarkdownEditor ref={view} model={model} placeholder={placeholder} {...props} />
|
|
234
234
|
</div>
|
|
235
235
|
</div>
|
|
236
236
|
</div>
|
|
@@ -244,47 +244,59 @@ export default {
|
|
|
244
244
|
render: Story,
|
|
245
245
|
};
|
|
246
246
|
|
|
247
|
-
const
|
|
247
|
+
const defaults = [
|
|
248
248
|
autocomplete({
|
|
249
249
|
onSearch: (text) => links.filter(({ label }) => label.toLowerCase().includes(text.toLowerCase())),
|
|
250
250
|
}),
|
|
251
251
|
code(),
|
|
252
252
|
hr(),
|
|
253
253
|
image(),
|
|
254
|
-
link({ onRender:
|
|
254
|
+
link({ onRender: onRenderLink, onHover: onHoverLinkTooltip }),
|
|
255
|
+
// mention({
|
|
256
|
+
// onSearch: (text) => names.filter((name) => name.toLowerCase().startsWith(text.toLowerCase())),
|
|
257
|
+
// }),
|
|
255
258
|
table(),
|
|
256
259
|
tasklist(),
|
|
257
|
-
tooltip({ onHover: onTooltipHover }),
|
|
258
260
|
];
|
|
259
261
|
|
|
260
262
|
export const Default = {
|
|
261
|
-
render: () => <Story text={document} extensions={
|
|
263
|
+
render: () => <Story text={document} extensions={defaults} />,
|
|
262
264
|
};
|
|
263
265
|
|
|
264
266
|
export const Readonly = {
|
|
265
|
-
render: () => <Story text={document} extensions={
|
|
267
|
+
render: () => <Story text={document} extensions={defaults} readonly />,
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
const large = faker.helpers.multiple(() => faker.lorem.paragraph({ min: 8, max: 16 }), { count: 20 }).join('\n\n');
|
|
271
|
+
|
|
272
|
+
export const Large = {
|
|
273
|
+
render: () => <Story text={str('# Large Document', '', large)} extensions={[]} />,
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
export const Empty = {
|
|
277
|
+
render: () => <Story />,
|
|
266
278
|
};
|
|
267
279
|
|
|
268
280
|
export const NoExtensions = {
|
|
269
281
|
render: () => <Story text={document} />,
|
|
270
282
|
};
|
|
271
283
|
|
|
272
|
-
// TODO(burdon): Cursor bug if no newline after BR (cursor down just loops back to start of each paragraph).
|
|
273
284
|
export const HorizontalRule = {
|
|
274
285
|
render: () => (
|
|
275
286
|
<Story
|
|
276
|
-
text={str('# Horizontal Rule', '', text.paragraphs, '---',
|
|
287
|
+
text={str('# Horizontal Rule', '', text.paragraphs, '---', text.paragraphs, '---', text.paragraphs)}
|
|
277
288
|
extensions={[hr()]}
|
|
278
289
|
/>
|
|
279
290
|
),
|
|
280
291
|
};
|
|
281
292
|
|
|
282
|
-
export const Tooltips = {
|
|
283
|
-
render: () => <Story text={str(text.links, text.footer)} extensions={[tooltip({ onHover: onTooltipHover })]} />,
|
|
284
|
-
};
|
|
285
|
-
|
|
286
293
|
export const Links = {
|
|
287
|
-
render: () =>
|
|
294
|
+
render: () => (
|
|
295
|
+
<Story
|
|
296
|
+
text={str(text.links, text.footer)}
|
|
297
|
+
extensions={[link({ onHover: onHoverLinkTooltip, onRender: onRenderLink })]}
|
|
298
|
+
/>
|
|
299
|
+
),
|
|
288
300
|
};
|
|
289
301
|
|
|
290
302
|
export const Code = {
|
|
@@ -299,18 +311,17 @@ export const Image = {
|
|
|
299
311
|
render: () => <Story text={str(text.image, text.footer)} readonly extensions={[image()]} />,
|
|
300
312
|
};
|
|
301
313
|
|
|
302
|
-
export const
|
|
314
|
+
export const Lists = {
|
|
315
|
+
render: () => (
|
|
316
|
+
<Story text={str(text.tasks, '', text.list, '', text.numbered, text.footer)} extensions={[tasklist()]} />
|
|
317
|
+
),
|
|
318
|
+
};
|
|
319
|
+
|
|
320
|
+
export const Outliner = {
|
|
303
321
|
render: () => (
|
|
304
322
|
<Story
|
|
305
|
-
text={str(
|
|
306
|
-
extensions={[
|
|
307
|
-
tasklist(),
|
|
308
|
-
listener({
|
|
309
|
-
onChange: (text) => {
|
|
310
|
-
console.log(text);
|
|
311
|
-
},
|
|
312
|
-
}),
|
|
313
|
-
]}
|
|
323
|
+
text={str('# Outliner', '', 'Block', ': this is a block', ': with multiple lines', text.footer)}
|
|
324
|
+
extensions={[outliner()]}
|
|
314
325
|
/>
|
|
315
326
|
),
|
|
316
327
|
};
|
|
@@ -318,9 +329,9 @@ export const Tasklist = {
|
|
|
318
329
|
export const Autocomplete = {
|
|
319
330
|
render: () => (
|
|
320
331
|
<Story
|
|
321
|
-
text={str('# Autocomplete', '', 'Press
|
|
332
|
+
text={str('# Autocomplete', '', 'Press Ctrl-Space...', text.footer)}
|
|
322
333
|
extensions={[
|
|
323
|
-
link({ onRender:
|
|
334
|
+
link({ onRender: onRenderLink }),
|
|
324
335
|
autocomplete({
|
|
325
336
|
onSearch: (text) => links.filter(({ label }) => label.toLowerCase().includes(text.toLowerCase())),
|
|
326
337
|
}),
|
|
@@ -329,8 +340,6 @@ export const Autocomplete = {
|
|
|
329
340
|
),
|
|
330
341
|
};
|
|
331
342
|
|
|
332
|
-
const names = ['adam', 'alice', 'alison', 'bob', 'carol', 'charlie', 'sayuri', 'shoko'];
|
|
333
|
-
|
|
334
343
|
export const Mention = {
|
|
335
344
|
render: () => (
|
|
336
345
|
<Story
|
|
@@ -344,24 +353,20 @@ export const Mention = {
|
|
|
344
353
|
),
|
|
345
354
|
};
|
|
346
355
|
|
|
347
|
-
export const Mermaid = {
|
|
348
|
-
render: () => <Story text={str('# Mermaid', '', text.mermaid, text.footer)} extensions={[code(), mermaid()]} />,
|
|
349
|
-
};
|
|
350
|
-
|
|
351
356
|
export const Comments = {
|
|
352
357
|
render: () => {
|
|
353
|
-
const [
|
|
358
|
+
const [commentRanges, setCommentRanges] = useState<Comment[]>([]);
|
|
354
359
|
|
|
355
360
|
return (
|
|
356
361
|
<Story
|
|
357
362
|
text={str('# Comments', '', text.paragraphs, text.footer)}
|
|
358
|
-
comments={
|
|
363
|
+
comments={commentRanges}
|
|
359
364
|
extensions={[
|
|
360
365
|
comments({
|
|
361
366
|
onHover: onCommentsHover,
|
|
362
|
-
onCreate: (
|
|
367
|
+
onCreate: (range) => {
|
|
363
368
|
const id = PublicKey.random().toHex();
|
|
364
|
-
|
|
369
|
+
setCommentRanges((commentRanges) => [...commentRanges, { id, cursor: range }]);
|
|
365
370
|
return id;
|
|
366
371
|
},
|
|
367
372
|
onSelect: (state) => {
|
|
@@ -370,9 +375,9 @@ export const Comments = {
|
|
|
370
375
|
console.log(
|
|
371
376
|
'update',
|
|
372
377
|
JSON.stringify({
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
378
|
+
comments: state.comments.length,
|
|
379
|
+
active: state.selection.active?.slice(0, 8),
|
|
380
|
+
closest: state.selection.closest?.slice(0, 8),
|
|
376
381
|
}),
|
|
377
382
|
);
|
|
378
383
|
}
|
|
@@ -384,8 +389,15 @@ export const Comments = {
|
|
|
384
389
|
},
|
|
385
390
|
};
|
|
386
391
|
|
|
392
|
+
const typewriterItems = localStorage.getItem('dxos.org/plugin/markdown/typewriter')?.split(',');
|
|
393
|
+
|
|
387
394
|
export const Typewriter = {
|
|
388
|
-
render: () =>
|
|
395
|
+
render: () => (
|
|
396
|
+
<Story
|
|
397
|
+
text={str('# Typewriter', '', text.paragraphs, text.footer)}
|
|
398
|
+
extensions={[typewriter({ items: typewriterItems })]}
|
|
399
|
+
/>
|
|
400
|
+
),
|
|
389
401
|
};
|
|
390
402
|
|
|
391
403
|
export const Blast = {
|
|
@@ -393,9 +405,7 @@ export const Blast = {
|
|
|
393
405
|
<Story
|
|
394
406
|
text={str('# Blast', '', text.paragraphs, text.code, text.paragraphs)}
|
|
395
407
|
extensions={[
|
|
396
|
-
typewriter({
|
|
397
|
-
items: localStorage.getItem('dxos.composer.extension.demo')?.split(','),
|
|
398
|
-
}),
|
|
408
|
+
typewriter({ items: typewriterItems }),
|
|
399
409
|
blast(
|
|
400
410
|
defaultsDeep(
|
|
401
411
|
{
|
|
@@ -412,17 +422,3 @@ export const Blast = {
|
|
|
412
422
|
/>
|
|
413
423
|
),
|
|
414
424
|
};
|
|
415
|
-
|
|
416
|
-
export const Diagnostics = {
|
|
417
|
-
render: () => (
|
|
418
|
-
<Story
|
|
419
|
-
text={document}
|
|
420
|
-
extensions={[
|
|
421
|
-
// Cursor moved.
|
|
422
|
-
EditorView.updateListener.of((update) => {
|
|
423
|
-
console.log('update', update.view.state.selection.main.head);
|
|
424
|
-
}),
|
|
425
|
-
]}
|
|
426
|
-
/>
|
|
427
|
-
),
|
|
428
|
-
};
|
|
@@ -4,15 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
import '@dxosTheme';
|
|
6
6
|
|
|
7
|
-
import
|
|
8
|
-
import React, { useRef, useState } from 'react';
|
|
7
|
+
import React, { useState } from 'react';
|
|
9
8
|
|
|
10
9
|
import { TextObject } from '@dxos/echo-schema';
|
|
11
10
|
import { fixedInsetFlexLayout, groupSurface, mx } from '@dxos/react-ui-theme';
|
|
12
11
|
import { withTheme } from '@dxos/storybook-utils';
|
|
13
12
|
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
13
|
+
import { TextEditor, type TextEditorProps } from './TextEditor';
|
|
14
|
+
import { listener } from '../../extensions';
|
|
16
15
|
import { useTextModel } from '../../hooks';
|
|
17
16
|
|
|
18
17
|
const initialText = [
|
|
@@ -29,8 +28,7 @@ const Story = ({
|
|
|
29
28
|
text,
|
|
30
29
|
automerge,
|
|
31
30
|
...props
|
|
32
|
-
}: { text?: string; automerge?: boolean } & Pick<TextEditorProps, 'extensions' | 'slots'>) => {
|
|
33
|
-
const ref = useRef<TextEditorRef>(null);
|
|
31
|
+
}: { text?: string; automerge?: boolean } & Pick<TextEditorProps, 'extensions' | 'placeholder' | 'slots'>) => {
|
|
34
32
|
const [item] = useState({ text: new TextObject(text, undefined, undefined, { automerge }) });
|
|
35
33
|
const model = useTextModel({ text: item.text });
|
|
36
34
|
if (!model) {
|
|
@@ -39,10 +37,9 @@ const Story = ({
|
|
|
39
37
|
|
|
40
38
|
return (
|
|
41
39
|
<div className={mx(fixedInsetFlexLayout, groupSurface)}>
|
|
42
|
-
<div className='flex justify-center
|
|
40
|
+
<div className='flex justify-center'>
|
|
43
41
|
<div className='flex flex-col w-[800px] py-16'>
|
|
44
|
-
<TextEditor
|
|
45
|
-
<div className='flex shrink-0 h-[300px]'></div>
|
|
42
|
+
<TextEditor model={model} {...props} />
|
|
46
43
|
</div>
|
|
47
44
|
</div>
|
|
48
45
|
</div>
|
|
@@ -57,37 +54,19 @@ export default {
|
|
|
57
54
|
};
|
|
58
55
|
|
|
59
56
|
export const Default = {
|
|
60
|
-
render: () =>
|
|
61
|
-
<Story
|
|
62
|
-
slots={defaultsDeep(
|
|
63
|
-
{ editor: { theme: textTheme, placeholder: 'Enter text...' } } satisfies TextEditorSlots,
|
|
64
|
-
defaultSlots,
|
|
65
|
-
)}
|
|
66
|
-
/>
|
|
67
|
-
),
|
|
57
|
+
render: () => <Story placeholder='Enter text...' />,
|
|
68
58
|
};
|
|
69
59
|
|
|
70
60
|
export const Text = {
|
|
71
|
-
render: () =>
|
|
72
|
-
<Story
|
|
73
|
-
text={initialText}
|
|
74
|
-
slots={defaultsDeep(
|
|
75
|
-
{ editor: { theme: textTheme, placeholder: 'Enter text...' } } satisfies TextEditorSlots,
|
|
76
|
-
defaultSlots,
|
|
77
|
-
)}
|
|
78
|
-
/>
|
|
79
|
-
),
|
|
61
|
+
render: () => <Story text={initialText} placeholder='Enter text...' />,
|
|
80
62
|
};
|
|
81
63
|
|
|
82
64
|
export const Automerge = {
|
|
65
|
+
render: () => <Story text={initialText} placeholder='Enter text...' automerge />,
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export const Listener = {
|
|
83
69
|
render: () => (
|
|
84
|
-
<Story
|
|
85
|
-
automerge
|
|
86
|
-
text={initialText}
|
|
87
|
-
slots={defaultsDeep(
|
|
88
|
-
{ editor: { theme: textTheme, placeholder: 'Enter text...' } } satisfies TextEditorSlots,
|
|
89
|
-
defaultSlots,
|
|
90
|
-
)}
|
|
91
|
-
/>
|
|
70
|
+
<Story placeholder='Enter text...' extensions={[listener({ onChange: (text) => console.log(text) })]} />
|
|
92
71
|
),
|
|
93
72
|
};
|