@dxos/react-ui-editor 0.6.12 → 0.6.13-main.041e8aa
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/chunk-CIQSMP7K.mjs +148 -0
- package/dist/lib/browser/chunk-CIQSMP7K.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +227 -345
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/state/index.mjs +17 -0
- package/dist/lib/browser/state/index.mjs.map +7 -0
- package/dist/lib/node/chunk-GZWIENFM.cjs +169 -0
- package/dist/lib/node/chunk-GZWIENFM.cjs.map +7 -0
- package/dist/lib/node/index.cjs +5480 -0
- package/dist/lib/node/index.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -0
- package/dist/lib/node/state/index.cjs +39 -0
- package/dist/lib/node/state/index.cjs.map +7 -0
- package/dist/lib/node-esm/chunk-GP5RCZ3X.mjs +150 -0
- package/dist/lib/node-esm/chunk-GP5RCZ3X.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +5471 -0
- package/dist/lib/node-esm/index.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -0
- package/dist/lib/node-esm/state/index.mjs +18 -0
- package/dist/lib/node-esm/state/index.mjs.map +7 -0
- package/dist/types/src/TextEditor.stories.d.ts +4 -1
- package/dist/types/src/TextEditor.stories.d.ts.map +1 -1
- package/dist/types/src/defaults.d.ts.map +1 -1
- package/dist/types/src/extensions/autocomplete.d.ts +2 -1
- package/dist/types/src/extensions/autocomplete.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/cursor.d.ts +1 -1
- package/dist/types/src/extensions/automerge/cursor.d.ts.map +1 -1
- package/dist/types/src/extensions/awareness/awareness.d.ts +2 -2
- package/dist/types/src/extensions/awareness/awareness.d.ts.map +1 -1
- package/dist/types/src/extensions/command/state.d.ts +2 -2
- package/dist/types/src/extensions/command/state.d.ts.map +1 -1
- package/dist/types/src/extensions/comments.d.ts +1 -1
- package/dist/types/src/extensions/comments.d.ts.map +1 -1
- package/dist/types/src/extensions/debug.d.ts +2 -2
- package/dist/types/src/extensions/debug.d.ts.map +1 -1
- package/dist/types/src/extensions/folding.d.ts.map +1 -1
- package/dist/types/src/extensions/index.d.ts +0 -4
- package/dist/types/src/extensions/index.d.ts.map +1 -1
- package/dist/types/src/extensions/listener.d.ts +1 -0
- package/dist/types/src/extensions/listener.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/decorate.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/highlight.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/link.d.ts +1 -1
- package/dist/types/src/extensions/markdown/link.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/styles.d.ts.map +1 -1
- package/dist/types/src/extensions/modes.d.ts +3 -3
- package/dist/types/src/extensions/modes.d.ts.map +1 -1
- package/dist/types/src/extensions/util/overlap.d.ts +1 -1
- package/dist/types/src/extensions/util/overlap.d.ts.map +1 -1
- package/dist/types/src/extensions/util/react.d.ts +1 -1
- package/dist/types/src/extensions/util/react.d.ts.map +1 -1
- package/dist/types/src/hooks/useTextEditor.d.ts +1 -1
- package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/{extensions → state}/cursor.d.ts +2 -2
- package/dist/types/src/state/cursor.d.ts.map +1 -0
- package/dist/types/src/state/doc.d.ts +5 -0
- package/dist/types/src/state/doc.d.ts.map +1 -0
- package/dist/types/src/state/index.d.ts +6 -0
- package/dist/types/src/state/index.d.ts.map +1 -0
- package/dist/types/src/{extensions → state}/state.d.ts +2 -2
- package/dist/types/src/state/state.d.ts.map +1 -0
- package/dist/types/src/state/types.d.ts.map +1 -0
- package/dist/types/src/state/util.d.ts +3 -0
- package/dist/types/src/state/util.d.ts.map +1 -0
- package/dist/types/src/styles/markdown.d.ts +1 -2
- package/dist/types/src/styles/markdown.d.ts.map +1 -1
- package/dist/types/src/styles/theme.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +6 -0
- package/dist/types/src/util.d.ts.map +1 -1
- package/package.json +59 -38
- package/src/TextEditor.stories.tsx +22 -17
- package/src/defaults.ts +0 -2
- package/src/extensions/annotations.ts +1 -1
- package/src/extensions/autocomplete.ts +9 -8
- package/src/extensions/automerge/automerge.stories.tsx +1 -1
- package/src/extensions/automerge/{automerge.spec.tsx → automerge.test.tsx} +1 -0
- package/src/extensions/automerge/automerge.ts +2 -2
- package/src/extensions/automerge/cursor.ts +1 -1
- package/src/extensions/awareness/awareness.ts +3 -5
- package/src/extensions/command/hint.ts +1 -1
- package/src/extensions/command/state.ts +3 -4
- package/src/extensions/comments.ts +44 -45
- package/src/extensions/debug.ts +2 -2
- package/src/extensions/folding.tsx +4 -2
- package/src/extensions/index.ts +0 -4
- package/src/extensions/listener.ts +1 -0
- package/src/extensions/markdown/changes.test.ts +1 -3
- package/src/extensions/markdown/decorate.ts +49 -6
- package/src/extensions/markdown/formatting.test.ts +1 -3
- package/src/extensions/markdown/highlight.ts +0 -5
- package/src/extensions/markdown/link.ts +3 -2
- package/src/extensions/markdown/parser.test.ts +1 -2
- package/src/extensions/markdown/styles.ts +10 -0
- package/src/extensions/markdown/table.ts +3 -3
- package/src/extensions/modes.ts +6 -5
- package/src/extensions/util/overlap.ts +1 -1
- package/src/extensions/util/react.tsx +5 -1
- package/src/hooks/useTextEditor.ts +30 -31
- package/src/index.ts +1 -0
- package/src/{extensions → state}/cursor.ts +3 -6
- package/src/state/doc.ts +10 -0
- package/src/state/index.ts +11 -0
- package/src/{extensions → state}/state.ts +7 -3
- package/src/state/util.ts +13 -0
- package/src/styles/markdown.ts +1 -3
- package/src/styles/theme.ts +3 -1
- package/src/util.ts +10 -0
- package/dist/types/src/extensions/automerge/automerge.spec.d.ts +0 -2
- package/dist/types/src/extensions/automerge/automerge.spec.d.ts.map +0 -1
- package/dist/types/src/extensions/cursor.d.ts.map +0 -1
- package/dist/types/src/extensions/doc.d.ts +0 -6
- package/dist/types/src/extensions/doc.d.ts.map +0 -1
- package/dist/types/src/extensions/state.d.ts.map +0 -1
- package/dist/types/src/extensions/types.d.ts.map +0 -1
- package/src/extensions/automerge/automerge.test.ts +0 -13
- package/src/extensions/doc.ts +0 -17
- /package/dist/types/src/{extensions → state}/types.d.ts +0 -0
- /package/src/{extensions → state}/types.ts +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
import { type Extension, type TransactionSpec } from '@codemirror/state';
|
1
|
+
import { type EditorState, type Extension, type TransactionSpec } from '@codemirror/state';
|
2
2
|
export type EditorSelection = {
|
3
3
|
anchor: number;
|
4
4
|
head?: number;
|
@@ -12,7 +12,7 @@ export type EditorStateOptions = {
|
|
12
12
|
getState: (id: string) => EditorSelectionState | undefined;
|
13
13
|
};
|
14
14
|
export declare const localStorageStateStoreAdapter: EditorStateOptions;
|
15
|
-
export declare const createEditorStateTransaction: ({ scrollTo, selection }: EditorSelectionState) => TransactionSpec;
|
15
|
+
export declare const createEditorStateTransaction: (state: EditorState, { scrollTo, selection }: EditorSelectionState) => TransactionSpec;
|
16
16
|
/**
|
17
17
|
* Track scrolling and selection state to be restored when switching to document.
|
18
18
|
*/
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../src/state/state.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAe,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAWxG,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC5D,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,oBAAoB,GAAG,SAAS,CAAC;CAC5D,CAAC;AAGF,eAAO,MAAM,6BAA6B,EAAE,kBAW3C,CAAC;AAEF,eAAO,MAAM,4BAA4B,UAChC,WAAW,2BACO,oBAAoB,KAC5C,eAOF,CAAC;AAEF;;GAEG;AAEH,eAAO,MAAM,KAAK,4BAA4B,OAAO,CAAC,kBAAkB,CAAC,KAAQ,SAuChF,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/state/types.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAIF,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/state/util.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,gBAMvD,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../../src/styles/markdown.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAYjD,eAAO,MAAM,KAAK
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../../src/styles/markdown.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAYjD,eAAO,MAAM,KAAK;;;;qBAIC,YAAY;CAG9B,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../../src/styles/theme.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAI3C,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,YAAY,EAAE,
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../../src/styles/theme.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAI3C,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,YAAY,EAAE,WA+M1B,CAAC"}
|
package/dist/types/src/util.d.ts
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
import type { Transaction } from '@codemirror/state';
|
2
|
+
import { type EditorView } from '@codemirror/view';
|
2
3
|
/**
|
3
4
|
* CodeMirror callbacks swallow errors so wrap handlers.
|
4
5
|
*/
|
5
6
|
export declare const callbackWrapper: <T extends Function>(fn: T) => T;
|
7
|
+
/**
|
8
|
+
* Log all changes before dispatching them to the view.
|
9
|
+
* https://codemirror.net/docs/ref/#view.EditorView.dispatch
|
10
|
+
*/
|
11
|
+
export declare const debugDispatcher: (trs: readonly Transaction[], view: EditorView) => void;
|
6
12
|
export declare const logChanges: (trs: readonly Transaction[]) => void;
|
7
13
|
//# sourceMappingURL=util.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD;;GAEG;AAEH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,QAAQ,MAAM,CAAC,KAAG,CAOxC,CAAC;AAErB;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAS,SAAS,WAAW,EAAE,QAAQ,UAAU,SAG5E,CAAC;AAEF,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.6.
|
3
|
+
"version": "0.6.13-main.041e8aa",
|
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",
|
@@ -9,35 +9,52 @@
|
|
9
9
|
"exports": {
|
10
10
|
".": {
|
11
11
|
"browser": "./dist/lib/browser/index.mjs",
|
12
|
+
"node": {
|
13
|
+
"require": "./dist/lib/node/index.cjs",
|
14
|
+
"default": "./dist/lib/node-esm/index.mjs"
|
15
|
+
},
|
12
16
|
"types": "./dist/types/src/index.d.ts"
|
17
|
+
},
|
18
|
+
"./state": {
|
19
|
+
"browser": "./dist/lib/browser/state/index.mjs",
|
20
|
+
"node": {
|
21
|
+
"require": "./dist/lib/node/state/index.cjs",
|
22
|
+
"default": "./dist/lib/node-esm/state/index.mjs"
|
23
|
+
},
|
24
|
+
"types": "./dist/types/src/state/index.d.ts"
|
13
25
|
}
|
14
26
|
},
|
15
27
|
"types": "dist/types/src/index.d.ts",
|
16
28
|
"typesVersions": {
|
17
|
-
"*": {
|
29
|
+
"*": {
|
30
|
+
"state": [
|
31
|
+
"dist/types/src/state/index.d.ts"
|
32
|
+
]
|
33
|
+
}
|
18
34
|
},
|
19
35
|
"files": [
|
20
36
|
"dist",
|
21
37
|
"src"
|
22
38
|
],
|
23
39
|
"dependencies": {
|
24
|
-
"@codemirror/autocomplete": "^6.18.
|
25
|
-
"@codemirror/commands": "^6.6.
|
40
|
+
"@codemirror/autocomplete": "^6.18.1",
|
41
|
+
"@codemirror/commands": "^6.6.2",
|
26
42
|
"@codemirror/lang-javascript": "^6.2.2",
|
27
|
-
"@codemirror/lang-markdown": "^6.
|
28
|
-
"@codemirror/language": "^6.10.
|
43
|
+
"@codemirror/lang-markdown": "^6.3.0",
|
44
|
+
"@codemirror/language": "^6.10.3",
|
29
45
|
"@codemirror/language-data": "^6.5.1",
|
30
|
-
"@codemirror/lint": "^6.8.
|
46
|
+
"@codemirror/lint": "^6.8.2",
|
31
47
|
"@codemirror/search": "^6.5.6",
|
32
48
|
"@codemirror/state": "^6.4.1",
|
33
49
|
"@codemirror/theme-one-dark": "^6.1.2",
|
34
|
-
"@codemirror/view": "^6.
|
50
|
+
"@codemirror/view": "^6.34.1",
|
35
51
|
"@fluentui/react-tabster": "^9.19.0",
|
36
|
-
"@lezer/common": "^1.2.
|
37
|
-
"@lezer/
|
38
|
-
"@lezer/
|
52
|
+
"@lezer/common": "^1.2.2",
|
53
|
+
"@lezer/generator": "^1.7.1",
|
54
|
+
"@lezer/highlight": "^1.2.1",
|
55
|
+
"@lezer/markdown": "^1.3.1",
|
39
56
|
"@radix-ui/react-context": "^1.0.0",
|
40
|
-
"@replit/codemirror-vim": "^6.
|
57
|
+
"@replit/codemirror-vim": "^6.2.1",
|
41
58
|
"@replit/codemirror-vscode-keymap": "^6.0.2",
|
42
59
|
"codemirror": "^6.0.1",
|
43
60
|
"lib0": "^0.2.65",
|
@@ -47,19 +64,19 @@
|
|
47
64
|
"lodash.sortby": "^4.7.0",
|
48
65
|
"react-dropzone": "^14.2.3",
|
49
66
|
"style-mod": "^4.1.0",
|
50
|
-
"@dxos/async": "0.6.
|
51
|
-
"@dxos/
|
52
|
-
"@dxos/
|
53
|
-
"@dxos/
|
54
|
-
"@dxos/
|
55
|
-
"@dxos/
|
56
|
-
"@dxos/invariant": "0.6.
|
57
|
-
"@dxos/log": "0.6.
|
58
|
-
"@dxos/protocols": "0.6.
|
59
|
-
"@dxos/react-hooks": "0.6.
|
60
|
-
"@dxos/react-ui": "0.6.
|
61
|
-
"@dxos/react-ui-theme": "0.6.
|
62
|
-
"@dxos/util": "0.6.
|
67
|
+
"@dxos/async": "0.6.13-main.041e8aa",
|
68
|
+
"@dxos/context": "0.6.13-main.041e8aa",
|
69
|
+
"@dxos/automerge": "0.6.13-main.041e8aa",
|
70
|
+
"@dxos/display-name": "0.6.13-main.041e8aa",
|
71
|
+
"@dxos/echo-schema": "0.6.13-main.041e8aa",
|
72
|
+
"@dxos/debug": "0.6.13-main.041e8aa",
|
73
|
+
"@dxos/invariant": "0.6.13-main.041e8aa",
|
74
|
+
"@dxos/log": "0.6.13-main.041e8aa",
|
75
|
+
"@dxos/protocols": "0.6.13-main.041e8aa",
|
76
|
+
"@dxos/react-hooks": "0.6.13-main.041e8aa",
|
77
|
+
"@dxos/react-ui": "0.6.13-main.041e8aa",
|
78
|
+
"@dxos/react-ui-theme": "0.6.13-main.041e8aa",
|
79
|
+
"@dxos/util": "0.6.13-main.041e8aa"
|
63
80
|
},
|
64
81
|
"devDependencies": {
|
65
82
|
"@phosphor-icons/react": "^2.1.5",
|
@@ -67,6 +84,8 @@
|
|
67
84
|
"@testing-library/dom": "^8.17.1",
|
68
85
|
"@testing-library/react": "^13.4.0",
|
69
86
|
"@testing-library/user-event": "^14.4.3",
|
87
|
+
"@types/chai": "^4.2.15",
|
88
|
+
"@types/chai-dom": "^1.11.0",
|
70
89
|
"@types/lodash.defaultsdeep": "^4.6.6",
|
71
90
|
"@types/lodash.get": "^4.4.7",
|
72
91
|
"@types/lodash.merge": "^4.6.6",
|
@@ -74,29 +93,31 @@
|
|
74
93
|
"@types/react": "~18.2.0",
|
75
94
|
"@types/react-dom": "~18.2.0",
|
76
95
|
"@types/react-test-renderer": "^17.0.2",
|
96
|
+
"chai": "^4.4.1",
|
97
|
+
"chai-dom": "^1.11.0",
|
77
98
|
"happy-dom": "^13.3.1",
|
78
99
|
"jsdom": "^24.0.0",
|
100
|
+
"mocha": "^10.6.0",
|
79
101
|
"react": "~18.2.0",
|
80
102
|
"react-dom": "~18.2.0",
|
81
103
|
"react-test-renderer": "~18.2.0",
|
82
|
-
"vite": "
|
104
|
+
"vite": "5.4.7",
|
83
105
|
"vite-plugin-top-level-await": "^1.4.1",
|
84
106
|
"vite-plugin-wasm": "^3.3.0",
|
85
|
-
"@dxos/
|
86
|
-
"@dxos/
|
87
|
-
"@dxos/
|
88
|
-
"@dxos/
|
89
|
-
"@dxos/
|
90
|
-
"@dxos/
|
91
|
-
"@dxos/react-
|
92
|
-
"@dxos/
|
93
|
-
"@dxos/storybook-utils": "0.6.12"
|
107
|
+
"@dxos/config": "0.6.13-main.041e8aa",
|
108
|
+
"@dxos/echo-signals": "0.6.13-main.041e8aa",
|
109
|
+
"@dxos/automerge": "0.6.13-main.041e8aa",
|
110
|
+
"@dxos/keyboard": "0.6.13-main.041e8aa",
|
111
|
+
"@dxos/random": "0.6.13-main.041e8aa",
|
112
|
+
"@dxos/react-client": "0.6.13-main.041e8aa",
|
113
|
+
"@dxos/react-ui": "0.6.13-main.041e8aa",
|
114
|
+
"@dxos/storybook-utils": "0.6.13-main.041e8aa"
|
94
115
|
},
|
95
116
|
"peerDependencies": {
|
96
117
|
"@phosphor-icons/react": "^2.1.5",
|
97
|
-
"react": "
|
98
|
-
"react-dom": "
|
99
|
-
"@dxos/react-client": "0.6.
|
118
|
+
"react": "~18.2.0",
|
119
|
+
"react-dom": "~18.2.0",
|
120
|
+
"@dxos/react-client": "0.6.13-main.041e8aa"
|
100
121
|
},
|
101
122
|
"publishConfig": {
|
102
123
|
"access": "public"
|
@@ -3,6 +3,7 @@
|
|
3
3
|
//
|
4
4
|
|
5
5
|
import '@dxos-theme';
|
6
|
+
|
6
7
|
import { javascript } from '@codemirror/lang-javascript';
|
7
8
|
import { markdown } from '@codemirror/lang-markdown';
|
8
9
|
import { openSearchPanel } from '@codemirror/search';
|
@@ -46,18 +47,16 @@ import {
|
|
46
47
|
linkTooltip,
|
47
48
|
listener,
|
48
49
|
mention,
|
49
|
-
state,
|
50
50
|
table,
|
51
51
|
typewriter,
|
52
52
|
type CommandAction,
|
53
|
-
type Comment,
|
54
53
|
type CommentsOptions,
|
55
|
-
type EditorSelectionState,
|
56
54
|
debugTree,
|
57
55
|
type DebugNode,
|
58
56
|
} from './extensions';
|
59
57
|
import { renderRoot } from './extensions/util';
|
60
58
|
import { useTextEditor, type UseTextEditorProps } from './hooks';
|
59
|
+
import { type Comment, type EditorSelectionState, state } from './state';
|
61
60
|
import translations from './translations';
|
62
61
|
|
63
62
|
faker.seed(101);
|
@@ -164,8 +163,8 @@ const content = {
|
|
164
163
|
'> This is a long wrapping block quote. Neque reiciendis ullam quae error labore sit, at, et, nulla, aut at nostrum omnis quas nostrum, at consectetur vitae eos asperiores non omnis ullam in beatae at vitae deserunt asperiores sapiente.',
|
165
164
|
'',
|
166
165
|
'> This is ...',
|
167
|
-
'
|
168
|
-
'
|
166
|
+
'... a multi-line ...',
|
167
|
+
'block quote.',
|
169
168
|
'',
|
170
169
|
),
|
171
170
|
|
@@ -254,7 +253,7 @@ const renderLinkButton = (el: Element, url: string) => {
|
|
254
253
|
// Story
|
255
254
|
//
|
256
255
|
|
257
|
-
type DebugMode = '
|
256
|
+
type DebugMode = 'raw' | 'tree' | 'raw+tree';
|
258
257
|
|
259
258
|
type StoryProps = {
|
260
259
|
id?: string;
|
@@ -317,16 +316,16 @@ const Story = ({
|
|
317
316
|
return (
|
318
317
|
<div className='flex w-full'>
|
319
318
|
<div role='none' className='flex w-full overflow-hidden' ref={parentRef} {...focusAttributes} />
|
320
|
-
{debug
|
321
|
-
<div className='w-[800px] border-l border-separator overflow-auto'>
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
319
|
+
{debug && (
|
320
|
+
<div className='flex flex-col w-[800px] border-l border-separator divide-y divide-separator overflow-auto'>
|
321
|
+
{(debug === 'raw' || debug === 'raw+tree') && (
|
322
|
+
<pre className='p-1 font-mono text-xs text-green-800 dark:text-green-200'>{view?.state.doc.toString()}</pre>
|
323
|
+
)}
|
324
|
+
{(debug === 'tree' || debug === 'raw+tree') && (
|
325
|
+
<pre className='p-1 font-mono text-xs text-green-800 dark:text-green-200'>
|
326
|
+
{JSON.stringify(tree, null, 2)}
|
327
|
+
</pre>
|
328
|
+
)}
|
330
329
|
</div>
|
331
330
|
)}
|
332
331
|
</div>
|
@@ -452,6 +451,12 @@ export const ScrollTo = {
|
|
452
451
|
// Markdown
|
453
452
|
//
|
454
453
|
|
454
|
+
export const Blockquote = {
|
455
|
+
render: () => (
|
456
|
+
<Story text={str('> Blockquote', 'continuation', content.footer)} extensions={decorateMarkdown()} debug='raw' />
|
457
|
+
),
|
458
|
+
};
|
459
|
+
|
455
460
|
export const Headings = {
|
456
461
|
render: () => <Story text={headings} extensions={decorateMarkdown({ numberedHeadings: { from: 2, to: 4 } })} />,
|
457
462
|
};
|
@@ -486,7 +491,7 @@ export const OrderedList = {
|
|
486
491
|
};
|
487
492
|
|
488
493
|
export const TaskList = {
|
489
|
-
render: () => <Story text={str(content.tasks, content.footer)} extensions={[decorateMarkdown()]} debug='raw' />,
|
494
|
+
render: () => <Story text={str(content.tasks, content.footer)} extensions={[decorateMarkdown()]} debug='raw+tree' />,
|
490
495
|
};
|
491
496
|
|
492
497
|
export const Table = {
|
package/src/defaults.ts
CHANGED
@@ -2,10 +2,6 @@
|
|
2
2
|
// Copyright 2023 DXOS.org
|
3
3
|
//
|
4
4
|
|
5
|
-
// https://codemirror.net/examples/autocompletion
|
6
|
-
// https://codemirror.net/docs/ref/#autocomplete.autocompletion
|
7
|
-
// https://codemirror.net/docs/ref/#autocomplete.Completion
|
8
|
-
|
9
5
|
import {
|
10
6
|
autocompletion,
|
11
7
|
completionKeymap,
|
@@ -15,6 +11,7 @@ import {
|
|
15
11
|
type CompletionResult,
|
16
12
|
} from '@codemirror/autocomplete';
|
17
13
|
import { markdownLanguage } from '@codemirror/lang-markdown';
|
14
|
+
import { type Extension } from '@codemirror/state';
|
18
15
|
import { keymap } from '@codemirror/view';
|
19
16
|
|
20
17
|
export type AutocompleteResult = Completion;
|
@@ -25,11 +22,15 @@ export type AutocompleteOptions = {
|
|
25
22
|
onSearch?: (text: string) => Completion[];
|
26
23
|
};
|
27
24
|
|
25
|
+
// https://codemirror.net/examples/autocompletion
|
26
|
+
// https://codemirror.net/docs/ref/#autocomplete.autocompletion
|
27
|
+
// https://codemirror.net/docs/ref/#autocomplete.Completion
|
28
|
+
|
28
29
|
/**
|
29
30
|
* Autocomplete extension.
|
30
31
|
*/
|
31
|
-
export const autocomplete = ({ activateOnTyping, override, onSearch }: AutocompleteOptions = {}) => {
|
32
|
-
const
|
32
|
+
export const autocomplete = ({ activateOnTyping, override, onSearch }: AutocompleteOptions = {}): Extension => {
|
33
|
+
const extensions: Extension[] = [
|
33
34
|
// https://codemirror.net/docs/ref/#view.keymap
|
34
35
|
// https://discuss.codemirror.net/t/how-can-i-replace-the-default-autocompletion-keymap-v6/3322
|
35
36
|
// TODO(burdon): Set custom keymap.
|
@@ -50,7 +51,7 @@ export const autocomplete = ({ activateOnTyping, override, onSearch }: Autocompl
|
|
50
51
|
];
|
51
52
|
|
52
53
|
if (onSearch) {
|
53
|
-
|
54
|
+
extensions.push(
|
54
55
|
// TODO(burdon): Optional decoration via addToOptions
|
55
56
|
markdownLanguage.data.of({
|
56
57
|
autocomplete: (context: CompletionContext): CompletionResult | null => {
|
@@ -68,5 +69,5 @@ export const autocomplete = ({ activateOnTyping, override, onSearch }: Autocompl
|
|
68
69
|
);
|
69
70
|
}
|
70
71
|
|
71
|
-
return
|
72
|
+
return extensions;
|
72
73
|
};
|
@@ -5,6 +5,7 @@
|
|
5
5
|
import { EditorState } from '@codemirror/state';
|
6
6
|
import { EditorView } from '@codemirror/view';
|
7
7
|
import { render, screen } from '@testing-library/react';
|
8
|
+
// TODO(wittjosiah): Move to vitest expect.
|
8
9
|
import chai, { expect } from 'chai';
|
9
10
|
import chaiDom from 'chai-dom';
|
10
11
|
import get from 'lodash.get';
|
@@ -1,5 +1,5 @@
|
|
1
1
|
//
|
2
|
-
// Copyright
|
2
|
+
// Copyright 2024 DXOS.org
|
3
3
|
// Copyright 2024 Automerge
|
4
4
|
// Ref: https://github.com/automerge/automerge-codemirror
|
5
5
|
//
|
@@ -13,7 +13,7 @@ import { type DocAccessor } from '@dxos/react-client/echo';
|
|
13
13
|
import { cursorConverter } from './cursor';
|
14
14
|
import { updateHeadsEffect, isReconcile, type State } from './defs';
|
15
15
|
import { Syncer } from './sync';
|
16
|
-
import { Cursor } from '
|
16
|
+
import { Cursor } from '../../state';
|
17
17
|
|
18
18
|
export const automerge = (accessor: DocAccessor): Extension => {
|
19
19
|
const syncState = StateField.define<State>({
|
@@ -5,7 +5,7 @@
|
|
5
5
|
import { log } from '@dxos/log';
|
6
6
|
import { type DocAccessor, fromCursor, toCursor } from '@dxos/react-client/echo';
|
7
7
|
|
8
|
-
import { type CursorConverter } from '
|
8
|
+
import { type CursorConverter } from '../../state';
|
9
9
|
|
10
10
|
export const cursorConverter = (accessor: DocAccessor): CursorConverter => ({
|
11
11
|
toCursor: (pos, assoc) => {
|
@@ -2,7 +2,7 @@
|
|
2
2
|
// Copyright 2024 DXOS.org
|
3
3
|
//
|
4
4
|
|
5
|
-
import { Annotation,
|
5
|
+
import { Annotation, type Extension, RangeSet, type Range } from '@codemirror/state';
|
6
6
|
import {
|
7
7
|
Decoration,
|
8
8
|
type DecorationSet,
|
@@ -16,7 +16,7 @@ import {
|
|
16
16
|
import { Event } from '@dxos/async';
|
17
17
|
import { Context } from '@dxos/context';
|
18
18
|
|
19
|
-
import { Cursor, type CursorConverter } from '
|
19
|
+
import { singleValueFacet, Cursor, type CursorConverter } from '../../state';
|
20
20
|
|
21
21
|
export interface AwarenessProvider {
|
22
22
|
remoteStateChange: Event<void>;
|
@@ -38,9 +38,7 @@ const dummyProvider: AwarenessProvider = {
|
|
38
38
|
update: () => {},
|
39
39
|
};
|
40
40
|
|
41
|
-
export const awarenessProvider =
|
42
|
-
combine: (providers) => providers[0] ?? dummyProvider,
|
43
|
-
});
|
41
|
+
export const awarenessProvider = singleValueFacet<AwarenessProvider>(dummyProvider);
|
44
42
|
|
45
43
|
// TODO(dmaretskyi): Specify the users that actually changed. Currently, we recalculate positions for every user.
|
46
44
|
const RemoteSelectionChangedAnnotation = Annotation.define();
|
@@ -7,7 +7,7 @@ import { Decoration, EditorView, ViewPlugin, type ViewUpdate, WidgetType } from
|
|
7
7
|
|
8
8
|
import { type CommandOptions } from './command';
|
9
9
|
import { commandState } from './state';
|
10
|
-
import { clientRectsFor, flattenRect } from '../util
|
10
|
+
import { clientRectsFor, flattenRect } from '../util';
|
11
11
|
|
12
12
|
class CommandHint extends WidgetType {
|
13
13
|
constructor(readonly content: string | HTMLElement) {
|
@@ -2,7 +2,7 @@
|
|
2
2
|
// Copyright 2024 DXOS.org
|
3
3
|
//
|
4
4
|
|
5
|
-
import {
|
5
|
+
import { StateEffect, StateField } from '@codemirror/state';
|
6
6
|
import {
|
7
7
|
type Command,
|
8
8
|
type EditorView,
|
@@ -13,14 +13,13 @@ import {
|
|
13
13
|
} from '@codemirror/view';
|
14
14
|
|
15
15
|
import { type CommandOptions } from './command';
|
16
|
+
import { singleValueFacet } from '../../state';
|
16
17
|
|
17
18
|
type CommandState = {
|
18
19
|
tooltip?: Tooltip | null;
|
19
20
|
};
|
20
21
|
|
21
|
-
export const commandConfig =
|
22
|
-
combine: (providers) => providers[0],
|
23
|
-
});
|
22
|
+
export const commandConfig = singleValueFacet<CommandOptions>();
|
24
23
|
|
25
24
|
export const commandState = StateField.define<CommandState>({
|
26
25
|
create: () => ({}),
|