@dxos/react-ui-editor 0.3.11-main.674a7f9 → 0.3.11-main.6901f09

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 (103) hide show
  1. package/dist/lib/browser/index.mjs +1994 -433
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/types/src/components/TextEditor/MarkdownEditor.stories.d.ts +1 -2
  5. package/dist/types/src/components/TextEditor/MarkdownEditor.stories.d.ts.map +1 -1
  6. package/dist/types/src/components/TextEditor/TextEditor.d.ts.map +1 -1
  7. package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts +1 -1
  8. package/dist/types/src/components/TextEditor/automerge.stories.d.ts.map +1 -1
  9. package/dist/types/src/components/TextEditor/{comments.stories.d.ts → hooks.stories.d.ts} +9 -12
  10. package/dist/types/src/components/TextEditor/hooks.stories.d.ts.map +1 -0
  11. package/dist/types/src/components/Toolbar/Toolbar.d.ts +29 -0
  12. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -0
  13. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +25 -0
  14. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -0
  15. package/dist/types/src/components/Toolbar/index.d.ts +2 -0
  16. package/dist/types/src/components/Toolbar/index.d.ts.map +1 -0
  17. package/dist/types/src/components/index.d.ts +1 -0
  18. package/dist/types/src/components/index.d.ts.map +1 -1
  19. package/dist/types/src/extensions/automerge/automerge.d.ts.map +1 -1
  20. package/dist/types/src/extensions/automerge/automerge.spec.d.ts +2 -0
  21. package/dist/types/src/extensions/automerge/automerge.spec.d.ts.map +1 -0
  22. package/dist/types/src/extensions/automerge/automerge.test.d.ts +2 -0
  23. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +1 -0
  24. package/dist/types/src/extensions/automerge/defs.d.ts +5 -5
  25. package/dist/types/src/extensions/automerge/defs.d.ts.map +1 -1
  26. package/dist/types/src/extensions/automerge/semaphore.d.ts +2 -1
  27. package/dist/types/src/extensions/automerge/semaphore.d.ts.map +1 -1
  28. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +1 -1
  29. package/dist/types/src/extensions/awareness.d.ts +1 -1
  30. package/dist/types/src/extensions/basic.d.ts +1 -1
  31. package/dist/types/src/extensions/basic.d.ts.map +1 -1
  32. package/dist/types/src/extensions/comments.d.ts +11 -3
  33. package/dist/types/src/extensions/comments.d.ts.map +1 -1
  34. package/dist/types/src/extensions/markdown/bundle.d.ts +2 -2
  35. package/dist/types/src/extensions/markdown/bundle.d.ts.map +1 -1
  36. package/dist/types/src/extensions/markdown/code.d.ts.map +1 -1
  37. package/dist/types/src/extensions/markdown/formatting.d.ts +57 -0
  38. package/dist/types/src/extensions/markdown/formatting.d.ts.map +1 -0
  39. package/dist/types/src/extensions/markdown/formatting.test.d.ts +3 -0
  40. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +1 -0
  41. package/dist/types/src/extensions/markdown/heading.d.ts.map +1 -1
  42. package/dist/types/src/extensions/markdown/highlight.d.ts.map +1 -1
  43. package/dist/types/src/extensions/markdown/hr.d.ts.map +1 -1
  44. package/dist/types/src/extensions/markdown/index.d.ts +1 -0
  45. package/dist/types/src/extensions/markdown/index.d.ts.map +1 -1
  46. package/dist/types/src/extensions/markdown/link.d.ts.map +1 -1
  47. package/dist/types/src/extensions/markdown/tasklist.d.ts.map +1 -1
  48. package/dist/types/src/hooks/index.d.ts +2 -0
  49. package/dist/types/src/hooks/index.d.ts.map +1 -1
  50. package/dist/types/src/hooks/useActionHandler.d.ts +4 -0
  51. package/dist/types/src/hooks/useActionHandler.d.ts.map +1 -0
  52. package/dist/types/src/hooks/useEditorView.d.ts +17 -0
  53. package/dist/types/src/hooks/useEditorView.d.ts.map +1 -0
  54. package/dist/types/src/hooks/useTextEditor.d.ts +36 -14
  55. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  56. package/dist/types/src/hooks/useTextModel.d.ts +12 -0
  57. package/dist/types/src/hooks/useTextModel.d.ts.map +1 -1
  58. package/dist/types/src/index.d.ts +1 -1
  59. package/dist/types/src/index.d.ts.map +1 -1
  60. package/dist/types/src/styles/markdown.d.ts +2 -2
  61. package/dist/types/src/styles/markdown.d.ts.map +1 -1
  62. package/dist/types/src/themes/default.d.ts.map +1 -1
  63. package/package.json +40 -27
  64. package/src/components/TextEditor/MarkdownEditor.stories.tsx +15 -21
  65. package/src/components/TextEditor/TextEditor.tsx +27 -16
  66. package/src/components/TextEditor/automerge.stories.tsx +1 -2
  67. package/src/components/TextEditor/hooks.stories.tsx +111 -0
  68. package/src/components/Toolbar/Toolbar.stories.tsx +102 -0
  69. package/src/components/Toolbar/Toolbar.tsx +245 -0
  70. package/src/components/Toolbar/index.ts +5 -0
  71. package/src/components/index.ts +1 -0
  72. package/src/extensions/automerge/automerge.spec.tsx +76 -0
  73. package/src/extensions/automerge/automerge.test.ts +13 -0
  74. package/src/extensions/automerge/automerge.ts +26 -11
  75. package/src/extensions/automerge/cursor.ts +3 -3
  76. package/src/extensions/automerge/defs.ts +9 -9
  77. package/src/extensions/automerge/semaphore.ts +17 -19
  78. package/src/extensions/automerge/update-automerge.ts +12 -6
  79. package/src/extensions/automerge/update-codemirror.ts +5 -5
  80. package/src/extensions/awareness.ts +7 -4
  81. package/src/extensions/basic.ts +15 -13
  82. package/src/extensions/blast.ts +4 -1
  83. package/src/extensions/comments.ts +126 -68
  84. package/src/extensions/markdown/bundle.ts +9 -8
  85. package/src/extensions/markdown/code.ts +95 -49
  86. package/src/extensions/markdown/formatting.test.ts +481 -0
  87. package/src/extensions/markdown/formatting.ts +1198 -0
  88. package/src/extensions/markdown/heading.ts +5 -6
  89. package/src/extensions/markdown/highlight.ts +9 -15
  90. package/src/extensions/markdown/hr.ts +2 -3
  91. package/src/extensions/markdown/index.ts +1 -0
  92. package/src/extensions/markdown/link.ts +13 -4
  93. package/src/extensions/markdown/tasklist.ts +1 -2
  94. package/src/hooks/index.ts +2 -0
  95. package/src/hooks/useActionHandler.ts +93 -0
  96. package/src/hooks/useEditorView.ts +29 -0
  97. package/src/hooks/useTextEditor.ts +143 -19
  98. package/src/hooks/useTextModel.ts +28 -9
  99. package/src/index.ts +1 -1
  100. package/src/styles/markdown.ts +9 -10
  101. package/src/themes/default.ts +11 -8
  102. package/dist/types/src/components/TextEditor/comments.stories.d.ts.map +0 -1
  103. package/src/components/TextEditor/comments.stories.tsx +0 -357
@@ -1 +1 @@
1
- {"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../../../src/extensions/comments.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAsC,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAkD,UAAU,EAAE,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AASzG,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAmBpD,KAAK,YAAY,GAAG;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,SAAS,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,QAAQ,SAAU,UAAU,MAAM,MAAM,2BAiBpD,CAAC;AAEF,eAAO,MAAM,WAAW,wDAAkC,CAAC;AAE3D,eAAO,MAAM,YAAY,6DAAuC,CAAC;AAwEjE,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1E;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD,CAAC;AAuEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,aAAa,eAAe,KAAQ,SAqKxD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,SAAU,UAAU,GAAG,IAAI,aAAY,OAAO,EAAE,SAQvE,CAAC"}
1
+ {"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../../../src/extensions/comments.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAA8D,MAAM,mBAAmB,CAAC;AAC/G,OAAO,EAAwB,KAAK,OAAO,EAAc,UAAU,EAAE,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAQzG,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AA2BpD,KAAK,YAAY,GAAG;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,SAAS,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,YAAY,SAAU,UAAU,MAAM,MAAM,2BAiBxD,CAAC;AAEF,eAAO,MAAM,WAAW,wDAAkC,CAAC;AAE3D,eAAO,MAAM,YAAY,6DAAuC,CAAC;AAwEjE,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAC;IACpG;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD,CAAC;AAwHF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,OAiC3B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,aAAa,eAAe,KAAQ,SAgIxD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,SAAU,UAAU,GAAG,IAAI,aAAY,OAAO,EAAE,SAQvE,CAAC"}
@@ -3,12 +3,12 @@ import type { ThemeMode } from '@dxos/react-ui';
3
3
  import { type TextEditorProps } from '../../components';
4
4
  export type MarkdownBundleOptions = {
5
5
  themeMode?: ThemeMode;
6
- } & Pick<TextEditorProps, 'readonly' | 'placeholder'>;
6
+ } & Pick<TextEditorProps, 'placeholder' | 'lineWrapping'>;
7
7
  /**
8
8
  * Markdown bundle.
9
9
  * Refs:
10
10
  * https://codemirror.net/docs/community
11
11
  * https://codemirror.net/docs/ref/#codemirror.basicSetup
12
12
  */
13
- export declare const markdownBundle: ({ readonly, themeMode, placeholder: _placeholder, }: MarkdownBundleOptions) => Extension[];
13
+ export declare const createMarkdownExtensions: ({ themeMode, placeholder: _placeholder, lineWrapping, }?: MarkdownBundleOptions) => Extension[];
14
14
  //# sourceMappingURL=bundle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/bundle.ts"],"names":[],"mappings":"AAUA,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAYhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,aAAa,CAAC,CAAC;AAEtD;;;;;GAKG;AAEH,eAAO,MAAM,cAAc,wDAIxB,qBAAqB,KAAG,SAAS,EAyDnC,CAAC"}
1
+ {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/bundle.ts"],"names":[],"mappings":"AAUA,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAYhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,GAAG,IAAI,CAAC,eAAe,EAAE,aAAa,GAAG,cAAc,CAAC,CAAC;AAE1D;;;;;GAKG;AAEH,eAAO,MAAM,wBAAwB,6DAIlC,qBAAqB,KAAQ,SAAS,EAyDxC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/code.ts"],"names":[],"mappings":"AAsDA,eAAO,MAAM,IAAI,+CAiDhB,CAAC"}
1
+ {"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/code.ts"],"names":[],"mappings":"AAkIA,eAAO,MAAM,IAAI,+CAmBhB,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { type Extension, type StateCommand, type EditorState } from '@codemirror/state';
2
+ import { EditorView } from '@codemirror/view';
3
+ export type Formatting = {
4
+ blockType: 'paragraph' | 'tablecell' | 'codeblock' | 'heading1' | 'heading2' | 'heading3' | 'heading4' | 'heading5' | 'heading6' | null;
5
+ strong: boolean;
6
+ emphasis: boolean;
7
+ strikethrough: boolean;
8
+ code: boolean;
9
+ link: boolean;
10
+ listStyle: null | 'ordered' | 'bullet' | 'task';
11
+ blockquote: boolean;
12
+ };
13
+ export declare const compareFormatting: (a: Formatting, b: Formatting) => boolean;
14
+ export declare enum Inline {
15
+ Strong = 0,
16
+ Emphasis = 1,
17
+ Strikethrough = 2,
18
+ Code = 3
19
+ }
20
+ export declare enum List {
21
+ Ordered = 0,
22
+ Bullet = 1,
23
+ Task = 2
24
+ }
25
+ export declare const setHeading: (level: number) => StateCommand;
26
+ export declare const setStyle: (type: Inline, enable: boolean) => StateCommand;
27
+ export declare const addStyle: (style: Inline) => StateCommand;
28
+ export declare const removeStyle: (style: Inline) => StateCommand;
29
+ export declare const toggleStyle: (style: Inline) => StateCommand;
30
+ export declare const toggleStrong: StateCommand;
31
+ export declare const toggleEmphasis: StateCommand;
32
+ export declare const toggleStrikethrough: StateCommand;
33
+ export declare const toggleInlineCode: StateCommand;
34
+ export declare const insertTable: (view: EditorView) => void;
35
+ export declare const removeLink: StateCommand;
36
+ export declare const addLink: StateCommand;
37
+ export declare const addList: (type: List) => StateCommand;
38
+ export declare const removeList: (type: List) => StateCommand;
39
+ export declare const toggleList: (type: List) => StateCommand;
40
+ export declare const setBlockquote: (enable: boolean) => StateCommand;
41
+ export declare const addBlockquote: StateCommand;
42
+ export declare const removeBlockquote: StateCommand;
43
+ export declare const toggleBlockquote: StateCommand;
44
+ export declare const addCodeblock: StateCommand;
45
+ export declare const removeCodeblock: StateCommand;
46
+ export declare const toggleCodeblock: StateCommand;
47
+ export type FormattingOptions = {};
48
+ export declare const formatting: (options?: FormattingOptions) => Extension;
49
+ /**
50
+ * Query an editor state for the active formatting at the selection.
51
+ */
52
+ export declare const getFormatting: (state: EditorState) => Formatting;
53
+ /**
54
+ * Hook computes the current formatting state.
55
+ */
56
+ export declare const useFormattingState: () => [Formatting | null, Extension];
57
+ //# sourceMappingURL=formatting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/formatting.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,YAAY,EAEjB,KAAK,WAAW,EAKjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAkC,UAAU,EAAuC,MAAM,kBAAkB,CAAC;AAYnH,MAAM,MAAM,UAAU,GAAG;IAGvB,SAAS,EACL,WAAW,GACX,WAAW,GACX,WAAW,GACX,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,IAAI,CAAC;IAET,MAAM,EAAE,OAAO,CAAC;IAEhB,QAAQ,EAAE,OAAO,CAAC;IAElB,aAAa,EAAE,OAAO,CAAC;IAEvB,IAAI,EAAE,OAAO,CAAC;IAEd,IAAI,EAAE,OAAO,CAAC;IAEd,SAAS,EAAE,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAEhD,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,iBAAiB,MAAO,UAAU,KAAK,UAAU,YAQ/B,CAAC;AAEhC,oBAAY,MAAM;IAChB,MAAM,IAAI;IACV,QAAQ,IAAI;IACZ,aAAa,IAAI;IACjB,IAAI,IAAI;CACT;AAED,oBAAY,IAAI;IACd,OAAO,IAAA;IACP,MAAM,IAAA;IACN,IAAI,IAAA;CACL;AAMD,eAAO,MAAM,UAAU,UACb,MAAM,KAAG,YAmDhB,CAAC;AAMJ,eAAO,MAAM,QAAQ,SACZ,MAAM,UAAU,OAAO,KAAG,YAmJhC,CAAC;AAEJ,eAAO,MAAM,QAAQ,UAAW,MAAM,KAAG,YAAqC,CAAC;AAE/E,eAAO,MAAM,WAAW,UAAW,MAAM,KAAG,YAAsC,CAAC;AAEnF,eAAO,MAAM,WAAW,UACd,MAAM,KAAG,YAahB,CAAC;AAEJ,eAAO,MAAM,YAAY,cAA6B,CAAC;AACvD,eAAO,MAAM,cAAc,cAA+B,CAAC;AAC3D,eAAO,MAAM,mBAAmB,cAAoC,CAAC;AACrE,eAAO,MAAM,gBAAgB,cAA2B,CAAC;AA8CzD,eAAO,MAAM,WAAW,SAAU,UAAU,SAQ3C,CAAC;AA4BF,eAAO,MAAM,UAAU,EAAE,YAUxB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,YAmFrB,CAAC;AAMF,eAAO,MAAM,OAAO,SACX,IAAI,KAAG,YAsHb,CAAC;AAEJ,eAAO,MAAM,UAAU,SACd,IAAI,KAAG,YAwDb,CAAC;AAEJ,eAAO,MAAM,UAAU,SACd,IAAI,KAAG,YAMb,CAAC;AAqBJ,eAAO,MAAM,aAAa,WACf,OAAO,KAAG,YAiElB,CAAC;AAEJ,eAAO,MAAM,aAAa,cAAsB,CAAC;AAEjD,eAAO,MAAM,gBAAgB,cAAuB,CAAC;AAErD,eAAO,MAAM,gBAAgB,EAAE,YAE9B,CAAC;AAMF,eAAO,MAAM,YAAY,EAAE,YAsD1B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,YAyC7B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,YAE7B,CAAC;AAMF,MAAM,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAEnC,eAAO,MAAM,UAAU,aAAa,iBAAiB,KAAQ,SAU5D,CAAC;AAyGF;;GAEG;AACH,eAAO,MAAM,aAAa,UAAW,WAAW,KAAG,UAiKlD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAO,CAAC,UAAU,GAAG,IAAI,EAAE,SAAS,CAgBlE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Formatting } from './formatting';
2
+ export declare const emptyFormatting: Formatting;
3
+ //# sourceMappingURL=formatting.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting.test.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/formatting.test.ts"],"names":[],"mappings":"AAUA,OAAO,EAeL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAEtB,eAAO,MAAM,eAAe,EAAE,UAS7B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/heading.ts"],"names":[],"mappings":"AAMA,OAAO,EAAc,KAAK,aAAa,EAAmB,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAkChH,eAAO,MAAM,OAAO;;mBAUG,UAAU;IAShC,CAAC"}
1
+ {"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/heading.ts"],"names":[],"mappings":"AAMA,OAAO,EAAc,KAAK,aAAa,EAAmB,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAkChH,eAAO,MAAM,OAAO;;mBASG,UAAU;IAShC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"highlight.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/highlight.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAmB,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,KAAK,cAAc,EAAS,MAAM,iBAAiB,CAAC;AAe7D;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAexB,CAAC;AAaF,eAAO,MAAM,sBAAsB,EAAE,cAAc,EAKlD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,cAAe,OAAO,mBAyHxD,CAAC"}
1
+ {"version":3,"file":"highlight.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/highlight.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAmB,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,KAAK,cAAc,EAAS,MAAM,iBAAiB,CAAC;AAe7D;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAexB,CAAC;AAaF,eAAO,MAAM,sBAAsB,EAAE,cAAc,EAKlD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,cAAe,OAAO,mBAmHxD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"hr.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/hr.ts"],"names":[],"mappings":"AAmDA,eAAO,MAAM,EAAE,+CAoBd,CAAC"}
1
+ {"version":3,"file":"hr.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/hr.ts"],"names":[],"mappings":"AAmDA,eAAO,MAAM,EAAE,+CAmBd,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export * from './bundle';
2
2
  export * from './code';
3
+ export * from './formatting';
3
4
  export * from './heading';
4
5
  export * from './highlight';
5
6
  export * from './hr';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/index.ts"],"names":[],"mappings":"AAIA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,MAAM,CAAC;AACrB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/index.ts"],"names":[],"mappings":"AAIA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,MAAM,CAAC;AACrB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/link.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,mBAAmB,CAAC;AAkBpE,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,IAAI,aAAa,WAAW,KAAQ,SAsDhD,CAAC"}
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/link.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,mBAAmB,CAAC;AAmBpE,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,IAAI,aAAa,WAAW,KAAQ,SAuDhD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tasklist.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/tasklist.ts"],"names":[],"mappings":"AAsFA,MAAM,MAAM,eAAe,GAAG,EAAE,CAAC;AAEjC,eAAO,MAAM,QAAQ,aAAa,eAAe,4CAsBhD,CAAC"}
1
+ {"version":3,"file":"tasklist.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/markdown/tasklist.ts"],"names":[],"mappings":"AAsFA,MAAM,MAAM,eAAe,GAAG,EAAE,CAAC;AAEjC,eAAO,MAAM,QAAQ,aAAa,eAAe,4CAqBhD,CAAC"}
@@ -1,5 +1,7 @@
1
1
  export * from './awareness-provider';
2
2
  export * from './defs';
3
+ export * from './useActionHandler';
4
+ export * from './useEditorView';
3
5
  export * from './useTextEditor';
4
6
  export * from './useTextModel';
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAIA,cAAc,sBAAsB,CAAC;AACrC,cAAc,QAAQ,CAAC;AAEvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAIA,cAAc,sBAAsB,CAAC;AACrC,cAAc,QAAQ,CAAC;AAEvB,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { EditorView } from '@codemirror/view';
2
+ import type { ToolbarProps } from '../components';
3
+ export declare const useActionHandler: (view?: EditorView | null) => ToolbarProps['onAction'];
4
+ //# sourceMappingURL=useActionHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useActionHandler.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useActionHandler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAqBlD,eAAO,MAAM,gBAAgB,UAAW,UAAU,GAAG,IAAI,KAAG,YAAY,CAAC,UAAU,CAiElF,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type EditorView } from '@codemirror/view';
2
+ import { type RefCallback } from 'react';
3
+ /**
4
+ * Hook for accessing the editor view.
5
+ *
6
+ * ```tsx
7
+ * const Test = () => {
8
+ * const [editorRef, editorView] = useEditorView();
9
+ * useEffect(() => {
10
+ * editorView?.focus();
11
+ * }, [editorView]);
12
+ * return <TextEditor ref={editorRef} />;
13
+ * };
14
+ * ```
15
+ */
16
+ export declare const useEditorView: () => [RefCallback<EditorView | null>, EditorView | null];
17
+ //# sourceMappingURL=useEditorView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEditorView.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useEditorView.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,WAAW,EAAY,MAAM,OAAO,CAAC;AAEnD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,QAAO,CAAC,YAAY,UAAU,GAAG,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAQlF,CAAC"}
@@ -1,17 +1,39 @@
1
- import { type EditorView } from '@codemirror/view';
2
- import { type RefCallback } from 'react';
1
+ import { type EditorStateConfig, type Extension, type StateEffect } from '@codemirror/state';
2
+ import { EditorView } from '@codemirror/view';
3
+ import { type RefObject } from 'react';
4
+ import { type ThemeMode } from '@dxos/react-ui';
5
+ import { type ThemeStyles } from '..//styles';
6
+ export type UseTextEditorOptions = {
7
+ autoFocus?: boolean;
8
+ scrollTo?: StateEffect<any>;
9
+ debug?: boolean;
10
+ } & EditorStateConfig;
11
+ export type UseTextEditor = {
12
+ parentRef: RefObject<HTMLDivElement>;
13
+ view?: EditorView;
14
+ };
3
15
  /**
4
- * Hook for accessing the editor view.
5
- *
6
- * ```tsx
7
- * const Test = () => {
8
- * const [editorRef, editorView] = useTextEditor();
9
- * useEffect(() => {
10
- * editorView?.focus();
11
- * }, [editorView]);
12
- * return <TextEditor ref={editorRef} />;
13
- * };
14
- * ```
16
+ * Hook for creating editor.
15
17
  */
16
- export declare const useTextEditor: () => [RefCallback<EditorView | null>, EditorView | null];
18
+ export declare const useTextEditor: ({ autoFocus, scrollTo, debug, doc, selection, extensions, }?: UseTextEditorOptions) => UseTextEditor;
19
+ export type DataExtensionsOptions = {
20
+ readonly?: boolean;
21
+ };
22
+ export declare const createDataExtensions: ({ readonly }?: {
23
+ readonly?: boolean | undefined;
24
+ }) => Extension;
25
+ export type ThemeExtensionsOptions = {
26
+ theme?: ThemeStyles;
27
+ themeMode?: ThemeMode;
28
+ lineWrap?: boolean;
29
+ slots?: {
30
+ editor?: {
31
+ className?: string;
32
+ };
33
+ content?: {
34
+ className?: string;
35
+ };
36
+ };
37
+ };
38
+ export declare const createThemeExtensions: ({ theme, themeMode, slots }?: ThemeExtensionsOptions) => Extension;
17
39
  //# 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,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,WAAW,EAAY,MAAM,OAAO,CAAC;AAEnD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,QAAO,CAAC,YAAY,UAAU,GAAG,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAQlF,CAAC"}
1
+ {"version":3,"file":"useTextEditor.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useTextEditor.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,SAAS,EAA+B,MAAM,OAAO,CAAC;AAGpE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,iBAAiB,CAAC;AAEtB,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,iEAOvB,oBAAoB,KAAQ,aAqE9B,CAAC;AAIF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAGF,eAAO,MAAM,oBAAoB;;MAAgC,SAMhE,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,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;AAEF,eAAO,MAAM,qBAAqB,iCAAiC,sBAAsB,KAAQ,SAShG,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type Dispatch, type SetStateAction } from 'react';
1
2
  import { type Space, type TextObject } from '@dxos/react-client/echo';
2
3
  import { type Identity } from '@dxos/react-client/halo';
3
4
  import { type EditorModel } from './defs';
@@ -7,4 +8,15 @@ export type UseTextModelProps = {
7
8
  text?: TextObject;
8
9
  };
9
10
  export declare const useTextModel: (props: UseTextModelProps) => EditorModel | undefined;
11
+ /**
12
+ * For use primarily in stories & tests so the dependence on TextObject can be avoided.
13
+ * @param id
14
+ * @param defaultContent
15
+ */
16
+ export declare const useInMemoryTextModel: ({ id, defaultContent, }: {
17
+ id: string;
18
+ defaultContent?: string | undefined;
19
+ }) => EditorModel & {
20
+ setContent: Dispatch<SetStateAction<string>>;
21
+ };
10
22
  //# sourceMappingURL=useTextModel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTextModel.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useTextModel.ts"],"names":[],"mappings":"AAUA,OAAO,EAAqB,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAIxD,OAAO,EAAE,KAAK,WAAW,EAAc,MAAM,QAAQ,CAAC;AAKtD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,iBAAiB,KAAG,WAAW,GAAG,SAKrE,CAAC"}
1
+ {"version":3,"file":"useTextModel.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useTextModel.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAuB,MAAM,OAAO,CAAC;AAKhF,OAAO,EAAqB,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EAAE,KAAK,WAAW,EAAc,MAAM,QAAQ,CAAC;AAKtD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,iBAAiB,KAAG,WAAW,GAAG,SAKrE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;QAI3B,MAAM;;;gBAEoB,SAAS,eAAe,MAAM,CAAC,CAAC;CAG/D,CAAC"}
@@ -1,7 +1,7 @@
1
1
  export { TextKind } from '@dxos/protocols/proto/dxos/echo/model/text';
2
2
  export { Doc, YText, YXmlFragment } from '@dxos/text-model';
3
3
  export { type Extension } from '@codemirror/state';
4
- export { type EditorView } from '@codemirror/view';
4
+ export { type EditorView, keymap } from '@codemirror/view';
5
5
  export * from './components';
6
6
  export * from './extensions';
7
7
  export * from './hooks';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE3D,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
2
- export declare const headings: Record<HeadingLevel, string[]>;
3
- export declare const heading: (level: HeadingLevel, readonly?: boolean) => string;
2
+ export declare const headings: Record<HeadingLevel, string>;
3
+ export declare const heading: (level: HeadingLevel) => string;
4
4
  export declare const text = "text-neutral-800 dark:text-neutral-200";
5
5
  export declare const light = "text-neutral-200 dark:text-neutral-800";
6
6
  export declare const mark: string;
@@ -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;AAIjD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,CAOnD,CAAC;AAEF,eAAO,MAAM,OAAO,UAAW,YAAY,aAAa,OAAO,WAG9D,CAAC;AAEF,eAAO,MAAM,IAAI,2CAA2C,CAAC;AAC7D,eAAO,MAAM,KAAK,2CAA2C,CAAC;AAE9D,eAAO,MAAM,IAAI,QAAmE,CAAC;AAErF,eAAO,MAAM,SAAS,UAAU,CAAC;AAEjC,eAAO,MAAM,IAAI,cAAc,CAAC;AAChC,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAE5C,eAAO,MAAM,IAAI,mEAAmE,CAAC;AACrF,eAAO,MAAM,QAAQ,+BAA+B,CAAC;AACrD,eAAO,MAAM,SAAS,kDAAkD,CAAC;AAEzE,eAAO,MAAM,SAAS,QAAmB,CAAC;AAE1C,eAAO,MAAM,UAAU,QAAsF,CAAC;AAE9G,eAAO,MAAM,cAAc,0GAC8E,CAAC;AAG1G,eAAO,MAAM,aAAa,wHAC6F,CAAC;AACxH,eAAO,MAAM,WAAW,+IACkH,CAAC;AAE3I,eAAO,MAAM,QAAQ,gDAAgD,CAAC"}
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;AAIjD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAOjD,CAAC;AAEF,eAAO,MAAM,OAAO,UAAW,YAAY,WAE1C,CAAC;AAEF,eAAO,MAAM,IAAI,2CAA2C,CAAC;AAC7D,eAAO,MAAM,KAAK,2CAA2C,CAAC;AAE9D,eAAO,MAAM,IAAI,QAAmE,CAAC;AAErF,eAAO,MAAM,SAAS,UAAU,CAAC;AAEjC,eAAO,MAAM,IAAI,cAAc,CAAC;AAChC,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAE5C,eAAO,MAAM,IAAI,mEAAmE,CAAC;AACrF,eAAO,MAAM,QAAQ,+BAA+B,CAAC;AACrD,eAAO,MAAM,SAAS,kDAAkD,CAAC;AAEzE,eAAO,MAAM,SAAS,QAAmB,CAAC;AAE1C,eAAO,MAAM,UAAU,QAAsF,CAAC;AAE9G,eAAO,MAAM,cAAc,0GAC8E,CAAC;AAG1G,eAAO,MAAM,aAAa,wHAC6F,CAAC;AACxH,eAAO,MAAM,WAAW,+IACkH,CAAC;AAE3I,eAAO,MAAM,QAAQ,gDAAgD,CAAC"}
@@ -1 +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"}
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,WAoO1B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,WAOvB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAO3B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,WAOvB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/react-ui-editor",
3
- "version": "0.3.11-main.674a7f9",
3
+ "version": "0.3.11-main.6901f09",
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",
@@ -23,10 +23,11 @@
23
23
  "@codemirror/state": "^6.4.0",
24
24
  "@codemirror/theme-one-dark": "^6.1.2",
25
25
  "@codemirror/view": "^6.23.0",
26
- "@fluentui/react-tabster": "^9.16.1",
26
+ "@fluentui/react-tabster": "^9.18.0",
27
27
  "@lezer/common": "^1.2.1",
28
28
  "@lezer/highlight": "^1.2.0",
29
29
  "@lezer/markdown": "^1.2.0",
30
+ "@radix-ui/react-context": "^1.0.0",
30
31
  "@replit/codemirror-vim": "^6.0.14",
31
32
  "codemirror": "6.0.1",
32
33
  "lib0": "^0.2.65",
@@ -35,53 +36,65 @@
35
36
  "lodash.pick": "^4.4.0",
36
37
  "lodash.sortby": "^4.7.0",
37
38
  "style-mod": "^4.1.0",
38
- "@dxos/async": "0.3.11-main.674a7f9",
39
- "@dxos/automerge": "0.3.11-main.674a7f9",
40
- "@dxos/debug": "0.3.11-main.674a7f9",
41
- "@dxos/context": "0.3.11-main.674a7f9",
42
- "@dxos/display-name": "0.3.11-main.674a7f9",
43
- "@dxos/echo-schema": "0.3.11-main.674a7f9",
44
- "@dxos/invariant": "0.3.11-main.674a7f9",
45
- "@dxos/log": "0.3.11-main.674a7f9",
46
- "@dxos/protocols": "0.3.11-main.674a7f9",
47
- "@dxos/react-async": "0.3.11-main.674a7f9",
48
- "@dxos/react-ui": "0.3.11-main.674a7f9",
49
- "@dxos/react-ui-theme": "0.3.11-main.674a7f9",
50
- "@dxos/util": "0.3.11-main.674a7f9",
51
- "@dxos/text-model": "0.3.11-main.674a7f9"
39
+ "@dxos/async": "0.3.11-main.6901f09",
40
+ "@dxos/automerge": "0.3.11-main.6901f09",
41
+ "@dxos/debug": "0.3.11-main.6901f09",
42
+ "@dxos/context": "0.3.11-main.6901f09",
43
+ "@dxos/display-name": "0.3.11-main.6901f09",
44
+ "@dxos/echo-schema": "0.3.11-main.6901f09",
45
+ "@dxos/invariant": "0.3.11-main.6901f09",
46
+ "@dxos/log": "0.3.11-main.6901f09",
47
+ "@dxos/react-async": "0.3.11-main.6901f09",
48
+ "@dxos/protocols": "0.3.11-main.6901f09",
49
+ "@dxos/react-ui": "0.3.11-main.6901f09",
50
+ "@dxos/react-ui-theme": "0.3.11-main.6901f09",
51
+ "@dxos/text-model": "0.3.11-main.6901f09",
52
+ "@dxos/util": "0.3.11-main.6901f09"
52
53
  },
53
54
  "devDependencies": {
54
- "@automerge/automerge-repo-network-broadcastchannel": "^1.0.19",
55
- "@faker-js/faker": "^8.3.1",
55
+ "@automerge/automerge-repo-network-broadcastchannel": "^1.1.0",
56
56
  "@phosphor-icons/react": "^2.0.5",
57
57
  "@preact/signals-react": "^1.3.6",
58
+ "@testing-library/dom": "^8.17.1",
59
+ "@testing-library/react": "^13.4.0",
60
+ "@testing-library/user-event": "^14.4.3",
58
61
  "@types/lodash.defaultsdeep": "^4.6.6",
59
62
  "@types/lodash.get": "^4.4.7",
60
63
  "@types/lodash.pick": "^4.4.7",
61
64
  "@types/lodash.sortby": "^4.7.7",
62
65
  "@types/react": "^18.0.21",
63
66
  "@types/react-dom": "^18.0.6",
67
+ "@types/react-test-renderer": "^17.0.2",
68
+ "@vitest/ui": "^1.2.1",
64
69
  "deepsignal": "1.4.0-shallow.0",
70
+ "happy-dom": "^13.3.1",
71
+ "jsdom": "^20.0.1",
65
72
  "react": "^18.2.0",
66
73
  "react-dom": "^18.2.0",
67
- "@dxos/echo-signals": "0.3.11-main.674a7f9",
68
- "@dxos/config": "0.3.11-main.674a7f9",
69
- "@dxos/echo-typegen": "0.3.11-main.674a7f9",
70
- "@dxos/keyboard": "0.3.11-main.674a7f9",
71
- "@dxos/react-client": "0.3.11-main.674a7f9",
72
- "@dxos/storybook-utils": "0.3.11-main.674a7f9",
73
- "@dxos/react-ui": "0.3.11-main.674a7f9"
74
+ "react-test-renderer": "^18.2.0",
75
+ "vite": "^5.0.12",
76
+ "vite-plugin-top-level-await": "^1.4.1",
77
+ "vite-plugin-wasm": "^3.3.0",
78
+ "vitest": "^1.2.1",
79
+ "@dxos/echo-signals": "0.3.11-main.6901f09",
80
+ "@dxos/echo-typegen": "0.3.11-main.6901f09",
81
+ "@dxos/config": "0.3.11-main.6901f09",
82
+ "@dxos/keyboard": "0.3.11-main.6901f09",
83
+ "@dxos/random": "0.3.11-main.6901f09",
84
+ "@dxos/react-ui": "0.3.11-main.6901f09",
85
+ "@dxos/react-client": "0.3.11-main.6901f09",
86
+ "@dxos/storybook-utils": "0.3.11-main.6901f09"
74
87
  },
75
88
  "peerDependencies": {
76
89
  "@phosphor-icons/react": "^2.0.5",
77
90
  "react": "^18.2.0",
78
91
  "react-dom": "^18.2.0",
79
- "@dxos/react-client": "0.3.11-main.674a7f9"
92
+ "@dxos/react-client": "0.3.11-main.6901f09"
80
93
  },
81
94
  "publishConfig": {
82
95
  "access": "public"
83
96
  },
84
97
  "scripts": {
85
- "test": "true"
98
+ "vitest": "vitest --ui"
86
99
  }
87
100
  }
@@ -5,7 +5,6 @@
5
5
  import '@dxosTheme';
6
6
 
7
7
  import { type EditorView } from '@codemirror/view';
8
- import { faker } from '@faker-js/faker';
9
8
  import { ArrowSquareOut } from '@phosphor-icons/react';
10
9
  import defaultsDeep from 'lodash.defaultsdeep';
11
10
  import React, { type FC, StrictMode, useRef, useState } from 'react';
@@ -14,16 +13,20 @@ import { createRoot } from 'react-dom/client';
14
13
  import { TextObject } from '@dxos/echo-schema';
15
14
  import { keySymbols, parseShortcut } from '@dxos/keyboard';
16
15
  import { PublicKey } from '@dxos/keys';
16
+ import { faker } from '@dxos/random';
17
17
  import { fixedInsetFlexLayout, getSize, groupSurface, mx } from '@dxos/react-ui-theme';
18
18
  import { withTheme } from '@dxos/storybook-utils';
19
19
 
20
20
  import { MarkdownEditor, type TextEditorProps } from './TextEditor';
21
21
  import {
22
+ type CommentsOptions,
23
+ type LinkOptions,
22
24
  autocomplete,
23
25
  blast,
24
26
  code,
25
27
  comments,
26
28
  defaultOptions,
29
+ heading,
27
30
  hr,
28
31
  image,
29
32
  link,
@@ -31,17 +34,11 @@ import {
31
34
  table,
32
35
  tasklist,
33
36
  typewriter,
34
- type CommentsOptions,
35
- type LinkOptions,
36
37
  useComments,
37
- heading,
38
+ formatting,
38
39
  } from '../../extensions';
39
40
  import { type Comment, useTextModel } from '../../hooks';
40
41
 
41
- // Extensions:
42
- // TODO(burdon): Table of contents.
43
- // TODO(burdon): Front-matter
44
-
45
42
  faker.seed(101);
46
43
 
47
44
  const str = (...lines: string[]) => lines.join('\n');
@@ -83,7 +80,7 @@ const text = {
83
80
  '## Code',
84
81
  '',
85
82
  '```',
86
- 'const x = 100;',
83
+ '$ ls -las',
87
84
  '```',
88
85
  '',
89
86
  '```tsx',
@@ -214,11 +211,10 @@ const onRenderLink: LinkOptions['onRender'] = (el, url) => {
214
211
  type StoryProps = {
215
212
  text?: string;
216
213
  comments?: Comment[];
217
- automerge?: boolean;
218
214
  } & Pick<TextEditorProps, 'readonly' | 'placeholder' | 'slots' | 'extensions'>;
219
215
 
220
- const Story = ({ text, comments, automerge, placeholder = 'New document.', ...props }: StoryProps) => {
221
- const [item] = useState({ text: new TextObject(text, undefined, undefined, { automerge }) });
216
+ const Story = ({ text, comments, placeholder = 'New document.', ...props }: StoryProps) => {
217
+ const [item] = useState({ text: new TextObject(text) });
222
218
  const view = useRef<EditorView>(null);
223
219
  const model = useTextModel({ text: item.text });
224
220
  useComments(view.current, comments);
@@ -249,13 +245,11 @@ const defaults = [
249
245
  onSearch: (text) => links.filter(({ label }) => label.toLowerCase().includes(text.toLowerCase())),
250
246
  }),
251
247
  code(),
248
+ formatting(),
252
249
  heading(),
253
250
  hr(),
254
251
  image(),
255
252
  link({ onRender: onRenderLink, onHover: onHoverLinkTooltip }),
256
- // mention({
257
- // onSearch: (text) => names.filter((name) => name.toLowerCase().startsWith(text.toLowerCase())),
258
- // }),
259
253
  table(),
260
254
  tasklist(),
261
255
  ];
@@ -292,11 +286,11 @@ export const Links = {
292
286
  };
293
287
 
294
288
  export const Code = {
295
- render: () => <Story text={str(text.code, text.footer)} extensions={[code()]} readonly />,
289
+ render: () => <Story text={str(text.code, text.footer)} extensions={[code()]} />,
296
290
  };
297
291
 
298
292
  export const Image = {
299
- render: () => <Story text={str(text.image, text.footer)} readonly extensions={[image()]} />,
293
+ render: () => <Story text={str(text.image, text.footer)} extensions={[image()]} />,
300
294
  };
301
295
 
302
296
  export const Lists = {
@@ -347,18 +341,18 @@ export const Mention = {
347
341
 
348
342
  export const Comments = {
349
343
  render: () => {
350
- const [commentRanges, setCommentRanges] = useState<Comment[]>([]);
344
+ const [_comments, setComments] = useState<Comment[]>([]);
351
345
 
352
346
  return (
353
347
  <Story
354
348
  text={str('# Comments', '', text.paragraphs, text.footer)}
355
- comments={commentRanges}
349
+ comments={_comments}
356
350
  extensions={[
357
351
  comments({
358
352
  onHover: onCommentsHover,
359
- onCreate: (range) => {
353
+ onCreate: ({ cursor }) => {
360
354
  const id = PublicKey.random().toHex();
361
- setCommentRanges((commentRanges) => [...commentRanges, { id, cursor: range }]);
355
+ setComments((commentRanges) => [...commentRanges, { id, cursor }]);
362
356
  return id;
363
357
  },
364
358
  onSelect: (state) => {