@dxos/react-ui-editor 0.8.0 → 0.8.1-main.81238a8
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 +18 -14
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +18 -14
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +18 -14
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/InputMode.stories.d.ts +3 -2
- package/dist/types/src/InputMode.stories.d.ts.map +1 -1
- package/dist/types/src/TextEditor.stories.d.ts +34 -33
- package/dist/types/src/TextEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +2 -1
- package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
- package/dist/types/src/defaults.d.ts +2 -1
- package/dist/types/src/defaults.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/automerge.stories.d.ts +4 -3
- package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +1 -1
- package/dist/types/src/extensions/factories.d.ts +1 -0
- package/dist/types/src/extensions/factories.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/decorate.d.ts.map +1 -1
- package/dist/types/src/hooks/useTextEditor.d.ts +3 -3
- package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
- package/dist/types/src/styles/theme.d.ts.map +1 -1
- package/package.json +28 -28
- package/src/defaults.ts +8 -5
- package/src/extensions/factories.ts +1 -0
- package/src/extensions/markdown/decorate.ts +5 -1
- package/src/hooks/useTextEditor.ts +17 -8
- package/src/styles/stack-item-content-class-names.ts +1 -1
- package/src/styles/theme.ts +1 -0
- package/src/util/debug.ts +1 -1
@@ -1,5 +1,6 @@
|
|
1
1
|
import '@dxos-theme';
|
2
2
|
import '@preact/signals-react';
|
3
|
+
import React from 'react';
|
3
4
|
import { DocAccessor, type Space } from '@dxos/react-client/echo';
|
4
5
|
import { type Identity } from '@dxos/react-client/halo';
|
5
6
|
type EditorProps = {
|
@@ -10,9 +11,9 @@ type EditorProps = {
|
|
10
11
|
};
|
11
12
|
declare const _default: {
|
12
13
|
title: string;
|
13
|
-
component: ({ source, autoFocus, space, identity }: EditorProps) =>
|
14
|
+
component: ({ source, autoFocus, space, identity }: EditorProps) => React.JSX.Element;
|
14
15
|
decorators: import("@storybook/react").Decorator[];
|
15
|
-
render: () =>
|
16
|
+
render: () => React.JSX.Element;
|
16
17
|
parameters: {
|
17
18
|
translations: {
|
18
19
|
'en-US': {
|
@@ -50,6 +51,6 @@ export default _default;
|
|
50
51
|
export declare const Default: {};
|
51
52
|
export declare const WithEcho: {
|
52
53
|
decorators: import("@storybook/react").Decorator[];
|
53
|
-
render: () =>
|
54
|
+
render: () => React.JSX.Element;
|
54
55
|
};
|
55
56
|
//# sourceMappingURL=automerge.stories.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"automerge.stories.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/automerge/automerge.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC;AAErB,OAAO,uBAAuB,CAAC;
|
1
|
+
{"version":3,"file":"automerge.stories.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/automerge/automerge.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC;AAErB,OAAO,uBAAuB,CAAC;AAC/B,OAAO,KAA8B,MAAM,OAAO,CAAC;AAKnD,OAAO,EACL,WAAW,EAMX,KAAK,KAAK,EACX,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAgBrE,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;;;wDAEsD,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDnE,wBAME;AAsBF,eAAO,MAAM,OAAO,IAAK,CAAC;AAE1B,eAAO,MAAM,QAAQ;;;CAmBpB,CAAC"}
|
@@ -24,6 +24,7 @@ export type BasicExtensionsOptions = {
|
|
24
24
|
lineNumbers?: boolean;
|
25
25
|
lineWrapping?: boolean;
|
26
26
|
placeholder?: string;
|
27
|
+
/** If true user cannot edit the text, but they can still select and copy it. */
|
27
28
|
readonly?: boolean;
|
28
29
|
search?: boolean;
|
29
30
|
scrollPastEnd?: boolean;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../../../../src/extensions/factories.ts"],"names":[],"mappings":"AAQA,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAkBhE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAOhD,OAAO,EAAE,KAAK,WAAW,EAAgB,MAAM,WAAW,CAAC;AAM3D,eAAO,MAAM,cAAc,WAA4E,CAAC;AAExG;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,UAAU,CAAC;IACvC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAsBF,eAAO,MAAM,qBAAqB,YAAa,sBAAsB,KAAG,SA8CvE,CAAC;AAMF,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,KAAK,CAAC,EAAE;QACN,MAAM,CAAC,EAAE;YACP,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;QACF,OAAO,CAAC,EAAE;YACR,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;KACH,CAAC;CACH,CAAC;AAQF;;GAEG;AACH,eAAO,MAAM,qBAAqB,oFAK/B,sBAAsB,KAAQ,SAWhC,CAAC;AAMF,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC5B,CAAC;AAGF,eAAO,MAAM,oBAAoB,GAAI,CAAC,iCAAiC,mBAAmB,CAAC,CAAC,CAAC,KAAG,SAAS,EA2BxG,CAAC"}
|
1
|
+
{"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../../../../src/extensions/factories.ts"],"names":[],"mappings":"AAQA,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAkBhE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAOhD,OAAO,EAAE,KAAK,WAAW,EAAgB,MAAM,WAAW,CAAC;AAM3D,eAAO,MAAM,cAAc,WAA4E,CAAC;AAExG;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,UAAU,CAAC;IACvC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAsBF,eAAO,MAAM,qBAAqB,YAAa,sBAAsB,KAAG,SA8CvE,CAAC;AAMF,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,KAAK,CAAC,EAAE;QACN,MAAM,CAAC,EAAE;YACP,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;QACF,OAAO,CAAC,EAAE;YACR,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;KACH,CAAC;CACH,CAAC;AAQF;;GAEG;AACH,eAAO,MAAM,qBAAqB,oFAK/B,sBAAsB,KAAQ,SAWhC,CAAC;AAMF,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC5B,CAAC;AAGF,eAAO,MAAM,oBAAoB,GAAI,CAAC,iCAAiC,mBAAmB,CAAC,CAAC,CAAC,KAAG,SAAS,EA2BxG,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"decorate.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/decorate.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"decorate.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/decorate.ts"],"names":[],"mappings":"AAmgBA,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD;AAED,eAAO,MAAM,gBAAgB,aAAa,eAAe,4CAgExD,CAAC"}
|
@@ -1,13 +1,13 @@
|
|
1
1
|
import { type EditorStateConfig } from '@codemirror/state';
|
2
2
|
import { EditorView } from '@codemirror/view';
|
3
|
-
import {
|
3
|
+
import { type TabsterTypes } from '@fluentui/react-tabster';
|
4
4
|
import { type DependencyList, type KeyboardEventHandler, type RefObject } from 'react';
|
5
5
|
import { type MaybeProvider } from '@dxos/util';
|
6
6
|
import { type EditorSelection } from '../extensions';
|
7
7
|
export type UseTextEditor = {
|
8
8
|
parentRef: RefObject<HTMLDivElement>;
|
9
9
|
view?: EditorView;
|
10
|
-
focusAttributes
|
10
|
+
focusAttributes?: TabsterTypes.TabsterDOMAttribute & {
|
11
11
|
tabIndex: 0;
|
12
12
|
onKeyUp: KeyboardEventHandler<HTMLDivElement>;
|
13
13
|
};
|
@@ -31,7 +31,7 @@ export type UseTextEditorProps = Pick<EditorStateConfig, 'extensions'> & {
|
|
31
31
|
debug?: boolean;
|
32
32
|
};
|
33
33
|
/**
|
34
|
-
*
|
34
|
+
* Creates codemirror text editor.
|
35
35
|
*/
|
36
36
|
export declare const useTextEditor: (props?: MaybeProvider<UseTextEditorProps>, deps?: DependencyList) => UseTextEditor;
|
37
37
|
//# sourceMappingURL=useTextEditor.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useTextEditor.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useTextEditor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,
|
1
|
+
{"version":3,"file":"useTextEditor.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useTextEditor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAGf,OAAO,EAAgC,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9E,OAAO,EAAE,KAAK,eAAe,EAA6D,MAAM,eAAe,CAAC;AAGhH,MAAM,MAAM,aAAa,GAAG;IAE1B,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,eAAe,CAAC,EAAE,YAAY,CAAC,mBAAmB,GAAG;QACnD,QAAQ,EAAE,CAAC,CAAC;QACZ,OAAO,EAAE,oBAAoB,CAAC,cAAc,CAAC,CAAC;KAC/C,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,GAAG;IACvE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,aAAa,WACjB,aAAa,CAAC,kBAAkB,CAAC,SAClC,cAAc,KACnB,aA+HF,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/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@dxos/react-ui-editor",
|
3
|
-
"version": "0.8.
|
3
|
+
"version": "0.8.1-main.81238a8",
|
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",
|
@@ -35,7 +35,7 @@
|
|
35
35
|
"@codemirror/state": "^6.4.1",
|
36
36
|
"@codemirror/theme-one-dark": "^6.1.2",
|
37
37
|
"@codemirror/view": "^6.34.1",
|
38
|
-
"@fluentui/react-tabster": "9.
|
38
|
+
"@fluentui/react-tabster": "^9.24.2",
|
39
39
|
"@lezer/common": "^1.2.2",
|
40
40
|
"@lezer/generator": "^1.7.1",
|
41
41
|
"@lezer/highlight": "^1.2.1",
|
@@ -51,20 +51,20 @@
|
|
51
51
|
"lodash.merge": "^4.6.2",
|
52
52
|
"lodash.sortby": "^4.7.0",
|
53
53
|
"style-mod": "^4.1.0",
|
54
|
-
"@dxos/app-graph": "0.8.
|
55
|
-
"@dxos/async": "0.8.
|
56
|
-
"@dxos/
|
57
|
-
"@dxos/
|
58
|
-
"@dxos/display-name": "0.8.
|
59
|
-
"@dxos/
|
60
|
-
"@dxos/
|
61
|
-
"@dxos/
|
62
|
-
"@dxos/
|
63
|
-
"@dxos/
|
64
|
-
"@dxos/
|
65
|
-
"@dxos/
|
66
|
-
"@dxos/
|
67
|
-
"@dxos/
|
54
|
+
"@dxos/app-graph": "0.8.1-main.81238a8",
|
55
|
+
"@dxos/async": "0.8.1-main.81238a8",
|
56
|
+
"@dxos/debug": "0.8.1-main.81238a8",
|
57
|
+
"@dxos/context": "0.8.1-main.81238a8",
|
58
|
+
"@dxos/display-name": "0.8.1-main.81238a8",
|
59
|
+
"@dxos/echo-schema": "0.8.1-main.81238a8",
|
60
|
+
"@dxos/invariant": "0.8.1-main.81238a8",
|
61
|
+
"@dxos/automerge": "0.8.1-main.81238a8",
|
62
|
+
"@dxos/live-object": "0.8.1-main.81238a8",
|
63
|
+
"@dxos/log": "0.8.1-main.81238a8",
|
64
|
+
"@dxos/react-hooks": "0.8.1-main.81238a8",
|
65
|
+
"@dxos/util": "0.8.1-main.81238a8",
|
66
|
+
"@dxos/react-ui-menu": "0.8.1-main.81238a8",
|
67
|
+
"@dxos/protocols": "0.8.1-main.81238a8"
|
68
68
|
},
|
69
69
|
"devDependencies": {
|
70
70
|
"@phosphor-icons/react": "^2.1.5",
|
@@ -88,23 +88,23 @@
|
|
88
88
|
"vite": "5.4.7",
|
89
89
|
"vite-plugin-top-level-await": "^1.4.1",
|
90
90
|
"vite-plugin-wasm": "^3.3.0",
|
91
|
-
"@dxos/automerge": "0.8.
|
92
|
-
"@dxos/
|
93
|
-
"@dxos/
|
94
|
-
"@dxos/keyboard": "0.8.
|
95
|
-
"@dxos/
|
96
|
-
"@dxos/react-ui": "0.8.
|
97
|
-
"@dxos/
|
98
|
-
"@dxos/react-ui-theme": "0.8.
|
99
|
-
"@dxos/storybook-utils": "0.8.
|
91
|
+
"@dxos/automerge": "0.8.1-main.81238a8",
|
92
|
+
"@dxos/echo-signals": "0.8.1-main.81238a8",
|
93
|
+
"@dxos/config": "0.8.1-main.81238a8",
|
94
|
+
"@dxos/keyboard": "0.8.1-main.81238a8",
|
95
|
+
"@dxos/random": "0.8.1-main.81238a8",
|
96
|
+
"@dxos/react-ui": "0.8.1-main.81238a8",
|
97
|
+
"@dxos/react-client": "0.8.1-main.81238a8",
|
98
|
+
"@dxos/react-ui-theme": "0.8.1-main.81238a8",
|
99
|
+
"@dxos/storybook-utils": "0.8.1-main.81238a8"
|
100
100
|
},
|
101
101
|
"peerDependencies": {
|
102
102
|
"@phosphor-icons/react": "^2.1.5",
|
103
103
|
"react": "~18.2.0",
|
104
104
|
"react-dom": "~18.2.0",
|
105
|
-
"@dxos/react-
|
106
|
-
"@dxos/react-ui": "0.8.
|
107
|
-
"@dxos/react-
|
105
|
+
"@dxos/react-client": "0.8.1-main.81238a8",
|
106
|
+
"@dxos/react-ui": "0.8.1-main.81238a8",
|
107
|
+
"@dxos/react-ui-theme": "0.8.1-main.81238a8"
|
108
108
|
},
|
109
109
|
"publishConfig": {
|
110
110
|
"access": "public"
|
package/src/defaults.ts
CHANGED
@@ -14,21 +14,21 @@ const margin = '!mt-[1rem]';
|
|
14
14
|
* CodeMirror content width.
|
15
15
|
* 40rem = 640px. Corresponds to initial plank width (Google docs, Stashpad, etc.)
|
16
16
|
* 50rem = 800px. Maximum content width for solo mode.
|
17
|
+
* NOTE: Max width - 4rem = 2rem left/right margin (or 2rem gutter plus 1rem left/right margin).
|
17
18
|
*/
|
18
|
-
|
19
|
+
// TOOD(burdon): Adjust depending on
|
20
|
+
export const editorContent = mx(margin, '!mli-auto w-full max-w-[min(50rem,100%-4rem)]');
|
19
21
|
|
20
22
|
/**
|
21
23
|
* Margin for numbers.
|
22
24
|
*/
|
23
25
|
export const editorFullWidth = mx(margin);
|
24
26
|
|
25
|
-
export const editorWithToolbarLayout =
|
26
|
-
'grid grid-cols-1 grid-rows-[min-content_1fr] data-[toolbar=disabled]:grid-rows-[1fr] justify-center content-start overflow-hidden';
|
27
|
-
|
28
27
|
export const editorGutter = EditorView.theme({
|
29
28
|
// Match margin from content.
|
29
|
+
// Gutter = 2rem + 1rem margin.
|
30
30
|
'.cm-gutters': {
|
31
|
-
marginTop: '
|
31
|
+
marginTop: '1rem',
|
32
32
|
paddingRight: '1rem',
|
33
33
|
},
|
34
34
|
});
|
@@ -38,3 +38,6 @@ export const editorMonospace = EditorView.theme({
|
|
38
38
|
fontFamily: fontMono,
|
39
39
|
},
|
40
40
|
});
|
41
|
+
|
42
|
+
export const editorWithToolbarLayout =
|
43
|
+
'grid grid-cols-1 grid-rows-[min-content_1fr] data-[toolbar=disabled]:grid-rows-[1fr] justify-center content-start overflow-hidden';
|
@@ -61,6 +61,7 @@ export type BasicExtensionsOptions = {
|
|
61
61
|
lineNumbers?: boolean;
|
62
62
|
lineWrapping?: boolean;
|
63
63
|
placeholder?: string;
|
64
|
+
/** If true user cannot edit the text, but they can still select and copy it. */
|
64
65
|
readonly?: boolean;
|
65
66
|
search?: boolean;
|
66
67
|
scrollPastEnd?: boolean;
|
@@ -217,7 +217,11 @@ const buildDecorations = (view: EditorView, options: DecorateOptions, focus: boo
|
|
217
217
|
const level = parseInt(node.name['ATXHeading'.length]) as HeadingLevel;
|
218
218
|
const headers = getHeaderLevels(node, level);
|
219
219
|
if (options.numberedHeadings?.from !== undefined) {
|
220
|
-
headers[level - 1]
|
220
|
+
const header = headers[level - 1];
|
221
|
+
// TODO(burdon): Header will be missing if headers are out of order (e.g., ## header then # header).
|
222
|
+
if (header) {
|
223
|
+
header.number++;
|
224
|
+
}
|
221
225
|
}
|
222
226
|
|
223
227
|
const editing = editingRange(state, node, focus);
|
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
import { EditorState, type EditorStateConfig } from '@codemirror/state';
|
6
6
|
import { EditorView } from '@codemirror/view';
|
7
|
-
import { useFocusableGroup } from '@fluentui/react-tabster';
|
7
|
+
import { useFocusableGroup, type TabsterTypes } from '@fluentui/react-tabster';
|
8
8
|
import {
|
9
9
|
type DependencyList,
|
10
10
|
type KeyboardEventHandler,
|
@@ -19,14 +19,14 @@ import {
|
|
19
19
|
import { log } from '@dxos/log';
|
20
20
|
import { getProviderValue, isNotFalsy, type MaybeProvider } from '@dxos/util';
|
21
21
|
|
22
|
-
import {
|
22
|
+
import { type EditorSelection, documentId, createEditorStateTransaction, editorInputMode } from '../extensions';
|
23
23
|
import { debugDispatcher } from '../util';
|
24
24
|
|
25
25
|
export type UseTextEditor = {
|
26
26
|
// TODO(burdon): Rename.
|
27
27
|
parentRef: RefObject<HTMLDivElement>;
|
28
28
|
view?: EditorView;
|
29
|
-
focusAttributes
|
29
|
+
focusAttributes?: TabsterTypes.TabsterDOMAttribute & {
|
30
30
|
tabIndex: 0;
|
31
31
|
onKeyUp: KeyboardEventHandler<HTMLDivElement>;
|
32
32
|
};
|
@@ -55,7 +55,7 @@ export type UseTextEditorProps = Pick<EditorStateConfig, 'extensions'> & {
|
|
55
55
|
let instanceCount = 0;
|
56
56
|
|
57
57
|
/**
|
58
|
-
*
|
58
|
+
* Creates codemirror text editor.
|
59
59
|
*/
|
60
60
|
export const useTextEditor = (
|
61
61
|
props: MaybeProvider<UseTextEditorProps> = {},
|
@@ -155,9 +155,11 @@ export const useTextEditor = (
|
|
155
155
|
}
|
156
156
|
}, [autoFocus, view]);
|
157
157
|
|
158
|
-
const
|
158
|
+
const focusableGroupAttrs = useFocusableGroup({
|
159
159
|
tabBehavior: 'limited',
|
160
|
-
ignoreDefaultKeydown: {
|
160
|
+
ignoreDefaultKeydown: {
|
161
|
+
Escape: view?.state.facet(editorInputMode).noTabster,
|
162
|
+
},
|
161
163
|
});
|
162
164
|
|
163
165
|
// Focus editor on Enter (e.g., when tabbing to this component).
|
@@ -176,6 +178,13 @@ export const useTextEditor = (
|
|
176
178
|
[view],
|
177
179
|
);
|
178
180
|
|
179
|
-
|
180
|
-
|
181
|
+
return {
|
182
|
+
parentRef,
|
183
|
+
view,
|
184
|
+
focusAttributes: {
|
185
|
+
tabIndex: 0 as const,
|
186
|
+
...focusableGroupAttrs,
|
187
|
+
onKeyUp: handleKeyUp,
|
188
|
+
},
|
189
|
+
};
|
181
190
|
};
|
@@ -7,7 +7,7 @@ import { mx } from '@dxos/react-ui-theme';
|
|
7
7
|
export const stackItemContentEditorClassNames = (role?: string) =>
|
8
8
|
mx(
|
9
9
|
'dx-focus-ring-inset data-[toolbar=disabled]:pbs-2 attention-surface',
|
10
|
-
role === '
|
10
|
+
role === 'section' ? '[&_.cm-scroller]:overflow-hidden [&_.cm-scroller]:min-bs-24' : 'min-bs-0',
|
11
11
|
);
|
12
12
|
|
13
13
|
export const stackItemContentToolbarClassNames = (role?: string) =>
|
package/src/styles/theme.ts
CHANGED