@dxos/react-ui-editor 0.8.0 → 0.8.1-main.013e445

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.
Files changed (33) hide show
  1. package/dist/lib/browser/index.mjs +18 -14
  2. package/dist/lib/browser/index.mjs.map +3 -3
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node/index.cjs +18 -14
  5. package/dist/lib/node/index.cjs.map +3 -3
  6. package/dist/lib/node/meta.json +1 -1
  7. package/dist/lib/node-esm/index.mjs +18 -14
  8. package/dist/lib/node-esm/index.mjs.map +3 -3
  9. package/dist/lib/node-esm/meta.json +1 -1
  10. package/dist/types/src/InputMode.stories.d.ts +3 -2
  11. package/dist/types/src/InputMode.stories.d.ts.map +1 -1
  12. package/dist/types/src/TextEditor.stories.d.ts +34 -33
  13. package/dist/types/src/TextEditor.stories.d.ts.map +1 -1
  14. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +2 -1
  15. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
  16. package/dist/types/src/defaults.d.ts +2 -1
  17. package/dist/types/src/defaults.d.ts.map +1 -1
  18. package/dist/types/src/extensions/automerge/automerge.stories.d.ts +4 -3
  19. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +1 -1
  20. package/dist/types/src/extensions/factories.d.ts +1 -0
  21. package/dist/types/src/extensions/factories.d.ts.map +1 -1
  22. package/dist/types/src/extensions/markdown/decorate.d.ts.map +1 -1
  23. package/dist/types/src/hooks/useTextEditor.d.ts +3 -3
  24. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  25. package/dist/types/src/styles/theme.d.ts.map +1 -1
  26. package/package.json +28 -28
  27. package/src/defaults.ts +8 -5
  28. package/src/extensions/factories.ts +1 -0
  29. package/src/extensions/markdown/decorate.ts +5 -1
  30. package/src/hooks/useTextEditor.ts +17 -8
  31. package/src/styles/stack-item-content-class-names.ts +1 -1
  32. package/src/styles/theme.ts +1 -0
  33. 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) => import("react/jsx-runtime").JSX.Element;
14
+ component: ({ source, autoFocus, space, identity }: EditorProps) => React.JSX.Element;
14
15
  decorators: import("@storybook/react").Decorator[];
15
- render: () => import("react/jsx-runtime").JSX.Element;
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: () => import("react/jsx-runtime").JSX.Element;
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;AAM/B,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"}
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":"AA+fA,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
+ {"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 { useFocusableGroup } from '@fluentui/react-tabster';
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: ReturnType<typeof useFocusableGroup> & {
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
- * Hook for creating editor.
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,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,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,EAAmB,KAAK,eAAe,EAA4C,MAAM,eAAe,CAAC;AAGhH,MAAM,MAAM,aAAa,GAAG;IAE1B,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,eAAe,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,GAAG;QACtD,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,aAsHF,CAAC"}
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,WA8M1B,CAAC"}
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.0",
3
+ "version": "0.8.1-main.013e445",
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.23.3",
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.0",
55
- "@dxos/async": "0.8.0",
56
- "@dxos/automerge": "0.8.0",
57
- "@dxos/debug": "0.8.0",
58
- "@dxos/display-name": "0.8.0",
59
- "@dxos/invariant": "0.8.0",
60
- "@dxos/live-object": "0.8.0",
61
- "@dxos/echo-schema": "0.8.0",
62
- "@dxos/log": "0.8.0",
63
- "@dxos/protocols": "0.8.0",
64
- "@dxos/context": "0.8.0",
65
- "@dxos/react-hooks": "0.8.0",
66
- "@dxos/util": "0.8.0",
67
- "@dxos/react-ui-menu": "0.8.0"
54
+ "@dxos/app-graph": "0.8.1-main.013e445",
55
+ "@dxos/async": "0.8.1-main.013e445",
56
+ "@dxos/context": "0.8.1-main.013e445",
57
+ "@dxos/debug": "0.8.1-main.013e445",
58
+ "@dxos/display-name": "0.8.1-main.013e445",
59
+ "@dxos/automerge": "0.8.1-main.013e445",
60
+ "@dxos/echo-schema": "0.8.1-main.013e445",
61
+ "@dxos/live-object": "0.8.1-main.013e445",
62
+ "@dxos/log": "0.8.1-main.013e445",
63
+ "@dxos/invariant": "0.8.1-main.013e445",
64
+ "@dxos/protocols": "0.8.1-main.013e445",
65
+ "@dxos/react-hooks": "0.8.1-main.013e445",
66
+ "@dxos/react-ui-menu": "0.8.1-main.013e445",
67
+ "@dxos/util": "0.8.1-main.013e445"
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.0",
92
- "@dxos/config": "0.8.0",
93
- "@dxos/random": "0.8.0",
94
- "@dxos/keyboard": "0.8.0",
95
- "@dxos/react-client": "0.8.0",
96
- "@dxos/react-ui": "0.8.0",
97
- "@dxos/echo-signals": "0.8.0",
98
- "@dxos/react-ui-theme": "0.8.0",
99
- "@dxos/storybook-utils": "0.8.0"
91
+ "@dxos/automerge": "0.8.1-main.013e445",
92
+ "@dxos/config": "0.8.1-main.013e445",
93
+ "@dxos/echo-signals": "0.8.1-main.013e445",
94
+ "@dxos/keyboard": "0.8.1-main.013e445",
95
+ "@dxos/random": "0.8.1-main.013e445",
96
+ "@dxos/react-client": "0.8.1-main.013e445",
97
+ "@dxos/react-ui": "0.8.1-main.013e445",
98
+ "@dxos/react-ui-theme": "0.8.1-main.013e445",
99
+ "@dxos/storybook-utils": "0.8.1-main.013e445"
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-ui-theme": "0.8.0",
106
- "@dxos/react-ui": "0.8.0",
107
- "@dxos/react-client": "0.8.0"
105
+ "@dxos/react-client": "0.8.1-main.013e445",
106
+ "@dxos/react-ui": "0.8.1-main.013e445",
107
+ "@dxos/react-ui-theme": "0.8.1-main.013e445"
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
- export const editorContent = mx(margin, '!mli-auto w-full max-w-[min(50rem,100%-2rem)]');
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: '16px',
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]!.number++;
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 { editorInputMode, type EditorSelection, documentId, createEditorStateTransaction } from '../extensions';
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: ReturnType<typeof useFocusableGroup> & {
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
- * Hook for creating editor.
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 focusableGroup = useFocusableGroup({
158
+ const focusableGroupAttrs = useFocusableGroup({
159
159
  tabBehavior: 'limited',
160
- ignoreDefaultKeydown: { Escape: view?.state.facet(editorInputMode).noTabster },
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
- const focusAttributes = { tabIndex: 0 as const, ...focusableGroup, onKeyUp: handleKeyUp };
180
- return { parentRef, view, focusAttributes };
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 === 'article' ? 'min-bs-0' : '[&_.cm-scroller]:overflow-hidden [&_.cm-scroller]:min-bs-24',
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) =>
@@ -137,6 +137,7 @@ export const defaultTheme: ThemeStyles = {
137
137
  '.cm-link': {
138
138
  textDecorationLine: 'underline',
139
139
  textDecorationThickness: '1px',
140
+ textDecorationColor: 'var(--dx-separator)',
140
141
  textUnderlineOffset: '2px',
141
142
  borderRadius: '.125rem',
142
143
  },
package/src/util/debug.ts CHANGED
@@ -59,6 +59,6 @@ export const logChanges = (trs: readonly Transaction[]) => {
59
59
  .filter(Boolean);
60
60
 
61
61
  if (changes.length) {
62
- log.info('changes', { changes });
62
+ log('changes', { changes });
63
63
  }
64
64
  };