@dxos/react-ui-editor 0.3.11-main.8be6c8a → 0.3.11-main.8ef1cc6

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 (81) hide show
  1. package/dist/lib/browser/index.mjs +306 -402
  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 +3 -0
  5. package/dist/types/src/components/TextEditor/MarkdownEditor.stories.d.ts.map +1 -1
  6. package/dist/types/src/components/TextEditor/TextEditor.d.ts +4 -9
  7. package/dist/types/src/components/TextEditor/TextEditor.d.ts.map +1 -1
  8. package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts +4 -4
  9. package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts.map +1 -1
  10. package/dist/types/src/components/TextEditor/comments.stories.d.ts +26 -0
  11. package/dist/types/src/components/TextEditor/comments.stories.d.ts.map +1 -0
  12. package/dist/types/src/extensions/automerge/automerge.d.ts.map +1 -1
  13. package/dist/types/src/extensions/automerge/cursor.d.ts +1 -1
  14. package/dist/types/src/extensions/automerge/cursor.d.ts.map +1 -1
  15. package/dist/types/src/extensions/automerge/defs.d.ts +4 -4
  16. package/dist/types/src/extensions/automerge/defs.d.ts.map +1 -1
  17. package/dist/types/src/extensions/automerge/index.d.ts +0 -1
  18. package/dist/types/src/extensions/automerge/index.d.ts.map +1 -1
  19. package/dist/types/src/extensions/automerge/semaphore.d.ts +4 -9
  20. package/dist/types/src/extensions/automerge/semaphore.d.ts.map +1 -1
  21. package/dist/types/src/extensions/code.d.ts.map +1 -1
  22. package/dist/types/src/extensions/comments.d.ts +14 -5
  23. package/dist/types/src/extensions/comments.d.ts.map +1 -1
  24. package/dist/types/src/{util → extensions}/cursor.d.ts +9 -1
  25. package/dist/types/src/extensions/cursor.d.ts.map +1 -0
  26. package/dist/types/src/extensions/hr.d.ts.map +1 -1
  27. package/dist/types/src/extensions/index.d.ts +2 -0
  28. package/dist/types/src/extensions/index.d.ts.map +1 -1
  29. package/dist/types/src/extensions/markdown/highlight.d.ts.map +1 -1
  30. package/dist/types/src/extensions/outliner.d.ts +4 -0
  31. package/dist/types/src/extensions/outliner.d.ts.map +1 -0
  32. package/dist/types/src/extensions/tasklist.d.ts +5 -1
  33. package/dist/types/src/extensions/tasklist.d.ts.map +1 -1
  34. package/dist/types/src/extensions/yjs/cursor.d.ts +1 -1
  35. package/dist/types/src/extensions/yjs/cursor.d.ts.map +1 -1
  36. package/dist/types/src/hooks/index.d.ts +1 -1
  37. package/dist/types/src/hooks/index.d.ts.map +1 -1
  38. package/dist/types/src/hooks/useTextModel.d.ts +0 -5
  39. package/dist/types/src/hooks/useTextModel.d.ts.map +1 -1
  40. package/dist/types/src/hooks/yjs.d.ts.map +1 -1
  41. package/dist/types/src/styles/markdown.d.ts.map +1 -1
  42. package/dist/types/src/themes/default.d.ts.map +1 -1
  43. package/dist/types/src/util.d.ts.map +1 -0
  44. package/package.json +25 -24
  45. package/src/components/TextEditor/MarkdownEditor.stories.tsx +28 -26
  46. package/src/components/TextEditor/TextEditor.stories.tsx +10 -43
  47. package/src/components/TextEditor/TextEditor.tsx +31 -41
  48. package/src/components/TextEditor/comments.stories.tsx +355 -0
  49. package/src/extensions/automerge/automerge.ts +12 -14
  50. package/src/extensions/automerge/cursor.ts +2 -1
  51. package/src/extensions/automerge/defs.ts +13 -9
  52. package/src/extensions/automerge/index.ts +0 -1
  53. package/src/extensions/automerge/semaphore.ts +10 -12
  54. package/src/extensions/awareness.ts +27 -33
  55. package/src/extensions/code.ts +24 -18
  56. package/src/extensions/comments.ts +128 -140
  57. package/src/extensions/cursor.ts +46 -0
  58. package/src/extensions/hr.ts +8 -9
  59. package/src/extensions/image.ts +2 -2
  60. package/src/extensions/index.ts +2 -0
  61. package/src/extensions/link.ts +7 -7
  62. package/src/extensions/markdown/highlight.ts +0 -8
  63. package/src/extensions/outliner.ts +12 -0
  64. package/src/extensions/table.ts +2 -2
  65. package/src/extensions/tasklist.ts +54 -77
  66. package/src/extensions/yjs/cursor.ts +2 -1
  67. package/src/extensions/yjs/yjs.test.ts +1 -1
  68. package/src/extensions/yjs/yjs.ts +2 -2
  69. package/src/hooks/index.ts +2 -1
  70. package/src/hooks/useTextModel.ts +3 -6
  71. package/src/hooks/yjs.ts +1 -23
  72. package/src/styles/markdown.ts +0 -2
  73. package/src/themes/default.ts +17 -50
  74. package/dist/types/src/util/cursor.d.ts.map +0 -1
  75. package/dist/types/src/util/index.d.ts +0 -3
  76. package/dist/types/src/util/index.d.ts.map +0 -1
  77. package/dist/types/src/util/util.d.ts.map +0 -1
  78. package/src/util/cursor.ts +0 -29
  79. package/src/util/index.ts +0 -6
  80. /package/dist/types/src/{util/util.d.ts → util.d.ts} +0 -0
  81. /package/src/{util/util.ts → util.ts} +0 -0
@@ -0,0 +1,4 @@
1
+ import { type Extension } from '@codemirror/state';
2
+ export type OutlinerOptions = {};
3
+ export declare const outliner: (options?: OutlinerOptions) => Extension;
4
+ //# sourceMappingURL=outliner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outliner.d.ts","sourceRoot":"","sources":["../../../../src/extensions/outliner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,eAAe,GAAG,EAAE,CAAC;AAGjC,eAAO,MAAM,QAAQ,aAAa,eAAe,KAAQ,SAExD,CAAC"}
@@ -1,3 +1,7 @@
1
+ import { ViewPlugin, type DecorationSet, type ViewUpdate } from '@codemirror/view';
1
2
  export type TasklistOptions = {};
2
- export declare const tasklist: (options?: TasklistOptions) => import("@codemirror/state").Extension[];
3
+ export declare const tasklist: (options?: TasklistOptions) => ViewPlugin<{
4
+ decorations: DecorationSet;
5
+ update(update: ViewUpdate): void;
6
+ }>;
3
7
  //# sourceMappingURL=tasklist.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tasklist.d.ts","sourceRoot":"","sources":["../../../../src/extensions/tasklist.ts"],"names":[],"mappings":"AA8DA,MAAM,MAAM,eAAe,GAAG,EAAE,CAAC;AAEjC,eAAO,MAAM,QAAQ,aAAa,eAAe,4CAsDhD,CAAC"}
1
+ {"version":3,"file":"tasklist.d.ts","sourceRoot":"","sources":["../../../../src/extensions/tasklist.ts"],"names":[],"mappings":"AAMA,OAAO,EAAsC,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAyCvH,MAAM,MAAM,eAAe,GAAG,EAAE,CAAC;AAEjC,eAAO,MAAM,QAAQ,aAAa,eAAe;;mBAS5B,UAAU;EAe9B,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import * as Y from 'yjs';
2
- import { type CursorConverter } from '../../util';
2
+ import { type CursorConverter } from '../cursor';
3
3
  export declare const cursorConverter: (text: Y.Text) => CursorConverter;
4
4
  //# sourceMappingURL=cursor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/yjs/cursor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,eAAe,SAAU,MAAM,KAAG,eAU7C,CAAC"}
1
+ {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/yjs/cursor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,eAAO,MAAM,eAAe,SAAU,MAAM,KAAG,eAW7C,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export * from './automerge';
2
2
  export * from './awareness-provider';
3
- export * from './useTextModel';
4
3
  export * from './yjs';
4
+ export * from './useTextModel';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,OAAO,CAAC;AAEtB,cAAc,gBAAgB,CAAC"}
@@ -20,11 +20,6 @@ export type EditorModel = {
20
20
  text: () => string;
21
21
  extension?: Extension;
22
22
  content: string | YText | YXmlFragment | DocAccessor;
23
- /**
24
- * @deprecated Use CursorConverter.
25
- */
26
- getCursorFromRange?: (value: Range) => string;
27
- getRangeFromCursor?: (cursor: string) => Range | undefined;
28
23
  awareness?: YP.Awareness;
29
24
  peer?: {
30
25
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"useTextModel.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useTextModel.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAqB,KAAK,WAAW,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC3G,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAO5D;;GAEG;AACH,eAAO,MAAM,UAAU,qCAGrB,CAAC;AAEH,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAGF,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IAGtB,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,YAAY,GAAG,WAAW,CAAC;IACrD;;OAEG;IACH,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC;IAC9C,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,KAAK,GAAG,SAAS,CAAC;IAE3D,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC;IAEzB,IAAI,CAAC,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AAGF,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;AAIF,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":"AAIA,OAAO,EAAE,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAqB,KAAK,WAAW,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC3G,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAO5D;;GAEG;AACH,eAAO,MAAM,UAAU,qCAGrB,CAAC;AAEH,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAGF,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IAGtB,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,YAAY,GAAG,WAAW,CAAC;IAGrD,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC;IAGzB,IAAI,CAAC,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AAGF,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;AAIF,eAAO,MAAM,YAAY,UAAW,iBAAiB,KAAG,WAAW,GAAG,SAKrE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"yjs.d.ts","sourceRoot":"","sources":["../../../../src/hooks/yjs.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAI/B,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAKrD,OAAO,EAAE,KAAK,WAAW,EAA0B,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGlG,eAAO,MAAM,cAAc,8BAA+B,iBAAiB,KAAG,WAyC7E,CAAC;AAOF;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,UAAU,CAAC,GAAG,CAAC;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,EACV,KAAK,EACL,GAAG,EACH,OAAO,EACP,SAAS,GACV,EAAE;QACD,KAAK,EAAE,KAAK,CAAC;QACb,GAAG,EAAE,GAAG,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC;KAC1B;IA4BD,IAAI,SAAS,IAAI,EAAE,CAAC,SAAS,CAE5B;IAED,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,YAAY;IAoCpB,OAAO,CAAC,mBAAmB;CAG5B"}
1
+ {"version":3,"file":"yjs.d.ts","sourceRoot":"","sources":["../../../../src/hooks/yjs.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAI/B,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAIrD,OAAO,EAAE,KAAK,WAAW,EAAc,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGtF,eAAO,MAAM,cAAc,8BAA+B,iBAAiB,KAAG,WAqB7E,CAAC;AAOF;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,UAAU,CAAC,GAAG,CAAC;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,EACV,KAAK,EACL,GAAG,EACH,OAAO,EACP,SAAS,GACV,EAAE;QACD,KAAK,EAAE,KAAK,CAAC;QACb,GAAG,EAAE,GAAG,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC;KAC1B;IA4BD,IAAI,SAAS,IAAI,EAAE,CAAC,SAAS,CAE5B;IAED,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,YAAY;IAoCpB,OAAO,CAAC,mBAAmB;CAG5B"}
@@ -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;AAG1C,eAAO,MAAM,UAAU,QAAsF,CAAC;AAG9G,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,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 +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,WAoQ1B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,WAOvB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAK3B,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,WAiO1B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,WAOvB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAO3B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,WAOvB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util.ts"],"names":[],"mappings":"AAMA;;GAEG;AAEH,eAAO,MAAM,eAAe,kCAOR,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/react-ui-editor",
3
- "version": "0.3.11-main.8be6c8a",
3
+ "version": "0.3.11-main.8ef1cc6",
4
4
  "description": "Document editing experience within a DXOS shell.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -15,7 +15,7 @@
15
15
  "dependencies": {
16
16
  "@codemirror/autocomplete": "^6.11.1",
17
17
  "@codemirror/commands": "^6.3.2",
18
- "@codemirror/lang-markdown": "^6.2.3",
18
+ "@codemirror/lang-markdown": "^6.2.4",
19
19
  "@codemirror/language": "^6.9.3",
20
20
  "@codemirror/language-data": "^6.3.1",
21
21
  "@codemirror/lint": "^6.4.2",
@@ -38,24 +38,24 @@
38
38
  "y-codemirror.next": "^0.3.2",
39
39
  "y-protocols": "^1.0.5",
40
40
  "yjs": "^13.6.10",
41
- "@dxos/async": "0.3.11-main.8be6c8a",
42
- "@dxos/context": "0.3.11-main.8be6c8a",
43
- "@dxos/display-name": "0.3.11-main.8be6c8a",
44
- "@dxos/automerge": "0.3.11-main.8be6c8a",
45
- "@dxos/debug": "0.3.11-main.8be6c8a",
46
- "@dxos/echo-schema": "0.3.11-main.8be6c8a",
47
- "@dxos/invariant": "0.3.11-main.8be6c8a",
48
- "@dxos/log": "0.3.11-main.8be6c8a",
49
- "@dxos/react-async": "0.3.11-main.8be6c8a",
50
- "@dxos/protocols": "0.3.11-main.8be6c8a",
51
- "@dxos/react-ui-theme": "0.3.11-main.8be6c8a",
52
- "@dxos/react-ui": "0.3.11-main.8be6c8a",
53
- "@dxos/text-model": "0.3.11-main.8be6c8a",
54
- "@dxos/util": "0.3.11-main.8be6c8a"
41
+ "@dxos/async": "0.3.11-main.8ef1cc6",
42
+ "@dxos/context": "0.3.11-main.8ef1cc6",
43
+ "@dxos/debug": "0.3.11-main.8ef1cc6",
44
+ "@dxos/display-name": "0.3.11-main.8ef1cc6",
45
+ "@dxos/automerge": "0.3.11-main.8ef1cc6",
46
+ "@dxos/echo-schema": "0.3.11-main.8ef1cc6",
47
+ "@dxos/log": "0.3.11-main.8ef1cc6",
48
+ "@dxos/invariant": "0.3.11-main.8ef1cc6",
49
+ "@dxos/protocols": "0.3.11-main.8ef1cc6",
50
+ "@dxos/react-async": "0.3.11-main.8ef1cc6",
51
+ "@dxos/react-ui-theme": "0.3.11-main.8ef1cc6",
52
+ "@dxos/react-ui": "0.3.11-main.8ef1cc6",
53
+ "@dxos/util": "0.3.11-main.8ef1cc6",
54
+ "@dxos/text-model": "0.3.11-main.8ef1cc6"
55
55
  },
56
56
  "devDependencies": {
57
57
  "@automerge/automerge-repo-network-broadcastchannel": "^1.0.19",
58
- "@faker-js/faker": "^8.0.2",
58
+ "@faker-js/faker": "^8.3.1",
59
59
  "@phosphor-icons/react": "^2.0.5",
60
60
  "@preact/signals-react": "^1.3.6",
61
61
  "@types/lodash.defaultsdeep": "^4.6.6",
@@ -67,18 +67,19 @@
67
67
  "deepsignal": "1.4.0-shallow.0",
68
68
  "react": "^18.2.0",
69
69
  "react-dom": "^18.2.0",
70
- "@dxos/echo-signals": "0.3.11-main.8be6c8a",
71
- "@dxos/echo-typegen": "0.3.11-main.8be6c8a",
72
- "@dxos/react-ui": "0.3.11-main.8be6c8a",
73
- "@dxos/config": "0.3.11-main.8be6c8a",
74
- "@dxos/storybook-utils": "0.3.11-main.8be6c8a",
75
- "@dxos/react-client": "0.3.11-main.8be6c8a"
70
+ "@dxos/config": "0.3.11-main.8ef1cc6",
71
+ "@dxos/echo-typegen": "0.3.11-main.8ef1cc6",
72
+ "@dxos/keyboard": "0.3.11-main.8ef1cc6",
73
+ "@dxos/echo-signals": "0.3.11-main.8ef1cc6",
74
+ "@dxos/react-client": "0.3.11-main.8ef1cc6",
75
+ "@dxos/react-ui": "0.3.11-main.8ef1cc6",
76
+ "@dxos/storybook-utils": "0.3.11-main.8ef1cc6"
76
77
  },
77
78
  "peerDependencies": {
78
79
  "@phosphor-icons/react": "^2.0.5",
79
80
  "react": "^18.2.0",
80
81
  "react-dom": "^18.2.0",
81
- "@dxos/react-client": "0.3.11-main.8be6c8a"
82
+ "@dxos/react-client": "0.3.11-main.8ef1cc6"
82
83
  },
83
84
  "publishConfig": {
84
85
  "access": "public"
@@ -12,6 +12,7 @@ import React, { type FC, StrictMode, useState } from 'react';
12
12
  import { createRoot } from 'react-dom/client';
13
13
 
14
14
  import { TextObject } from '@dxos/echo-schema';
15
+ import { keySymbols, parseShortcut } from '@dxos/keyboard';
15
16
  import { PublicKey } from '@dxos/keys';
16
17
  import { fixedInsetFlexLayout, getSize, groupSurface, mx } from '@dxos/react-ui-theme';
17
18
  import { withTheme } from '@dxos/storybook-utils';
@@ -25,7 +26,6 @@ import {
25
26
  defaultOptions,
26
27
  hr,
27
28
  image,
28
- listener,
29
29
  link,
30
30
  mention,
31
31
  table,
@@ -33,6 +33,7 @@ import {
33
33
  typewriter,
34
34
  type CommentsOptions,
35
35
  type LinkOptions,
36
+ outliner,
36
37
  } from '../../extensions';
37
38
  import { type CommentRange, useTextModel } from '../../hooks';
38
39
 
@@ -182,15 +183,15 @@ const Key: FC<{ char: string }> = ({ char }) => (
182
183
  </span>
183
184
  );
184
185
 
185
- const onCommentsHover: CommentsOptions['onHover'] = (el) => {
186
+ const onCommentsHover: CommentsOptions['onHover'] = (el, shortcut) => {
186
187
  createRoot(el).render(
187
188
  <StrictMode>
188
189
  <div className='flex items-center gap-2 px-2 py-2 bg-neutral-700 text-white text-xs rounded'>
189
190
  <div>Create comment</div>
190
- {/* TODO(burdon): Unify shortcuts. */}
191
191
  <div className='flex gap-1'>
192
- <Key char='⌘' />
193
- <Key char="'" />
192
+ {keySymbols(parseShortcut(shortcut)).map((char) => (
193
+ <Key key={char} char={char} />
194
+ ))}
194
195
  </div>
195
196
  </div>
196
197
  </StrictMode>,
@@ -201,7 +202,7 @@ const onRenderLink: LinkOptions['onRender'] = (el, url) => {
201
202
  createRoot(el).render(
202
203
  <StrictMode>
203
204
  <a href={url} target='_blank' rel='noreferrer' className={hover}>
204
- <ArrowSquareOut weight='bold' className={mx(getSize(4), 'inline-block leading-none mis-1 mb-1')} />
205
+ <ArrowSquareOut weight='bold' className={mx(getSize(4), 'inline-block leading-none mis-1 mb-[2px]')} />
205
206
  </a>
206
207
  </StrictMode>,
207
208
  );
@@ -221,10 +222,9 @@ const Story = ({ text, automerge, ...props }: StoryProps) => {
221
222
 
222
223
  return (
223
224
  <div className={mx(fixedInsetFlexLayout, groupSurface)}>
224
- <div className='flex justify-center overflow-y-scroll'>
225
- <div className='flex flex-col w-[800px] py-16'>
225
+ <div className='flex h-full justify-center'>
226
+ <div className='flex flex-col h-full w-[800px]'>
226
227
  <MarkdownEditor model={model} {...props} />
227
- <div className='flex shrink-0 h-[300px]'></div>
228
228
  </div>
229
229
  </div>
230
230
  </div>
@@ -304,17 +304,14 @@ export const Image = {
304
304
  };
305
305
 
306
306
  export const Tasklist = {
307
+ render: () => <Story text={str(text.tasks, '', text.list, text.footer)} extensions={[tasklist()]} />,
308
+ };
309
+
310
+ export const Outliner = {
307
311
  render: () => (
308
312
  <Story
309
- text={str(text.tasks, '', text.list, text.footer)}
310
- extensions={[
311
- tasklist(),
312
- listener({
313
- onChange: (text) => {
314
- console.log(text);
315
- },
316
- }),
317
- ]}
313
+ text={str('# Outliner', '', 'Block', ': this is a block', ': with multiple lines', text.footer)}
314
+ extensions={[outliner()]}
318
315
  />
319
316
  ),
320
317
  };
@@ -350,18 +347,18 @@ export const Mention = {
350
347
 
351
348
  export const Comments = {
352
349
  render: () => {
353
- const [commentsStates, setCommentStates] = useState<CommentRange[]>([]);
350
+ const [commentRanges, setCommentRanges] = useState<CommentRange[]>([]);
354
351
 
355
352
  return (
356
353
  <Story
357
354
  text={str('# Comments', '', text.paragraphs, text.footer)}
358
- comments={commentsStates}
355
+ comments={commentRanges}
359
356
  extensions={[
360
357
  comments({
361
358
  onHover: onCommentsHover,
362
- onCreate: (relPos) => {
359
+ onCreate: (range) => {
363
360
  const id = PublicKey.random().toHex();
364
- setCommentStates((comments) => [...comments, { id, cursor: relPos }]);
361
+ setCommentRanges((commentRanges) => [...commentRanges, { id, cursor: range }]);
365
362
  return id;
366
363
  },
367
364
  onSelect: (state) => {
@@ -384,8 +381,15 @@ export const Comments = {
384
381
  },
385
382
  };
386
383
 
384
+ const typewriterItems = localStorage.getItem('dxos.org/plugin/markdown/typewriter')?.split(',');
385
+
387
386
  export const Typewriter = {
388
- render: () => <Story text={str('# Typewriter', '', text.paragraphs, text.footer)} extensions={[typewriter()]} />,
387
+ render: () => (
388
+ <Story
389
+ text={str('# Typewriter', '', text.paragraphs, text.footer)}
390
+ extensions={[typewriter({ items: typewriterItems })]}
391
+ />
392
+ ),
389
393
  };
390
394
 
391
395
  export const Blast = {
@@ -393,9 +397,7 @@ export const Blast = {
393
397
  <Story
394
398
  text={str('# Blast', '', text.paragraphs, text.code, text.paragraphs)}
395
399
  extensions={[
396
- typewriter({
397
- items: localStorage.getItem('dxos.composer.extension.demo')?.split(','),
398
- }),
400
+ typewriter({ items: typewriterItems }),
399
401
  blast(
400
402
  defaultsDeep(
401
403
  {
@@ -4,17 +4,15 @@
4
4
 
5
5
  import '@dxosTheme';
6
6
 
7
- import defaultsDeep from 'lodash.defaultsdeep';
8
7
  import React, { useState } from 'react';
9
8
 
10
9
  import { TextObject } from '@dxos/echo-schema';
11
10
  import { fixedInsetFlexLayout, groupSurface, mx } from '@dxos/react-ui-theme';
12
11
  import { withTheme } from '@dxos/storybook-utils';
13
12
 
14
- import { defaultSlots, TextEditor, type TextEditorProps, type TextEditorSlots } from './TextEditor';
13
+ import { TextEditor, type TextEditorProps } from './TextEditor';
15
14
  import { listener } from '../../extensions';
16
15
  import { useTextModel } from '../../hooks';
17
- import { textTheme } from '../../themes';
18
16
 
19
17
  const initialText = [
20
18
  '# TextEditor',
@@ -30,7 +28,7 @@ const Story = ({
30
28
  text,
31
29
  automerge,
32
30
  ...props
33
- }: { text?: string; automerge?: boolean } & Pick<TextEditorProps, 'extensions' | 'slots'>) => {
31
+ }: { text?: string; automerge?: boolean } & Pick<TextEditorProps, 'extensions' | 'placeholder' | 'slots'>) => {
34
32
  const [item] = useState({ text: new TextObject(text, undefined, undefined, { automerge }) });
35
33
  const model = useTextModel({ text: item.text });
36
34
  if (!model) {
@@ -39,10 +37,9 @@ const Story = ({
39
37
 
40
38
  return (
41
39
  <div className={mx(fixedInsetFlexLayout, groupSurface)}>
42
- <div className='flex justify-center overflow-y-scroll'>
40
+ <div className='flex justify-center'>
43
41
  <div className='flex flex-col w-[800px] py-16'>
44
42
  <TextEditor model={model} {...props} />
45
- <div className='flex shrink-0 h-[300px]'></div>
46
43
  </div>
47
44
  </div>
48
45
  </div>
@@ -57,49 +54,19 @@ export default {
57
54
  };
58
55
 
59
56
  export const Default = {
60
- render: () => (
61
- <Story
62
- slots={defaultsDeep(
63
- { editor: { theme: textTheme, placeholder: 'Enter text...' } } satisfies TextEditorSlots,
64
- defaultSlots,
65
- )}
66
- />
67
- ),
68
- };
69
-
70
- export const Listener = {
71
- render: () => (
72
- <Story
73
- slots={defaultsDeep(
74
- { editor: { theme: textTheme, placeholder: 'Enter text...' } } satisfies TextEditorSlots,
75
- defaultSlots,
76
- )}
77
- extensions={[listener({ onChange: (text) => console.log(text) })]}
78
- />
79
- ),
57
+ render: () => <Story placeholder='Enter text...' />,
80
58
  };
81
59
 
82
60
  export const Text = {
83
- render: () => (
84
- <Story
85
- text={initialText}
86
- slots={defaultsDeep(
87
- { editor: { theme: textTheme, placeholder: 'Enter text...' } } satisfies TextEditorSlots,
88
- defaultSlots,
89
- )}
90
- />
91
- ),
61
+ render: () => <Story text={initialText} placeholder='Enter text...' />,
92
62
  };
93
63
 
94
64
  export const Automerge = {
65
+ render: () => <Story text={initialText} placeholder='Enter text...' automerge />,
66
+ };
67
+
68
+ export const Listener = {
95
69
  render: () => (
96
- <Story
97
- automerge
98
- text={initialText}
99
- slots={defaultsDeep(
100
- { editor: { theme: textTheme, placeholder: 'Enter text...' } } satisfies TextEditorSlots,
101
- defaultSlots,
102
- )}
103
- />
70
+ <Story placeholder='Enter text...' extensions={[listener({ onChange: (text) => console.log(text) })]} />
104
71
  ),
105
72
  };
@@ -41,23 +41,22 @@ export type CursorInfo = {
41
41
 
42
42
  export type TextEditorSlots = {
43
43
  root?: Omit<ComponentProps<'div'>, 'ref'>;
44
- editor?: {
45
- className?: string;
46
- placeholder?: string;
47
- spellCheck?: boolean;
48
- tabIndex?: number;
49
- theme?: ThemeStyles;
50
- };
44
+ // editor?: {
45
+ // className?: string;
46
+ // };
51
47
  };
52
48
 
49
+ // TODO(burdon): Spellcheck?
53
50
  export type TextEditorProps = {
54
51
  model: EditorModel;
55
- focus?: boolean;
56
- selection?: { anchor: number; head?: number };
52
+ autofocus?: boolean;
57
53
  readonly?: boolean; // TODO(burdon): Move into model.
58
- comments?: CommentRange[]; // TODO(burdon): Move into extension.
54
+ selection?: { anchor: number; head?: number };
55
+ comments?: CommentRange[]; // TODO(burdon): Move into extension?
59
56
  extensions?: Extension[];
60
57
  editorMode?: EditorMode;
58
+ placeholder?: string;
59
+ theme?: ThemeStyles;
61
60
  slots?: TextEditorSlots;
62
61
  };
63
62
 
@@ -66,7 +65,7 @@ export type TextEditorProps = {
66
65
  */
67
66
  export const BaseTextEditor = forwardRef<EditorView, TextEditorProps>(
68
67
  (
69
- { model, focus, selection, readonly, comments, extensions = [], editorMode, slots = defaultSlots },
68
+ { model, autofocus, readonly, selection, comments, extensions = [], editorMode, theme, slots = defaultSlots },
70
69
  forwardedRef,
71
70
  ) => {
72
71
  const tabsterDOMAttribute = useFocusableGroup({ tabBehavior: 'limited' });
@@ -75,16 +74,16 @@ export const BaseTextEditor = forwardRef<EditorView, TextEditorProps>(
75
74
  // The editor view ref should only be used as an escape hatch.
76
75
  const rootRef = useRef<HTMLDivElement>(null);
77
76
  const [view, setView] = useState<EditorView | null>(null);
77
+ // NOTE: This does not cause the parent to re-render, so the ref is not available immediately.
78
78
  useImperativeHandle<EditorView | null, EditorView | null>(forwardedRef, () => view, [view]);
79
79
 
80
- // Focus.
81
80
  useEffect(() => {
82
- if (view && focus) {
83
- view.focus();
81
+ if (autofocus) {
82
+ view?.focus();
84
83
  }
85
- }, [view, focus]);
84
+ }, [autofocus, view]);
86
85
 
87
- // TODO(burdon): Factor out as extension.
86
+ // TODO(burdon): Factor out as extension/hook.
88
87
  const { awareness, peer } = model;
89
88
  useEffect(() => {
90
89
  if (awareness && peer) {
@@ -96,9 +95,9 @@ export const BaseTextEditor = forwardRef<EditorView, TextEditorProps>(
96
95
  }
97
96
  }, [awareness, peer, themeMode]);
98
97
 
99
- // TODO(burdon): Factor out as extension.
98
+ // TODO(burdon): Factor out as extension/hook.
100
99
  useEffect(() => {
101
- if (view && comments?.length) {
100
+ if (view && comments !== undefined) {
102
101
  view.dispatch({
103
102
  effects: setCommentRange.of({ model, comments }),
104
103
  });
@@ -110,10 +109,10 @@ export const BaseTextEditor = forwardRef<EditorView, TextEditorProps>(
110
109
  return;
111
110
  }
112
111
 
113
- // TODO(burdon): Remember cursor position.
114
112
  // https://codemirror.net/docs/ref/#state.EditorStateConfig
115
113
  const state = EditorState.create({
116
114
  doc: model.text(),
115
+ // TODO(burdon): Composer should store and set selection when switching documents.
117
116
  selection,
118
117
  extensions: [
119
118
  readonly && EditorState.readOnly.of(readonly),
@@ -124,7 +123,7 @@ export const BaseTextEditor = forwardRef<EditorView, TextEditorProps>(
124
123
  // Theme.
125
124
  // TODO(burdon): Make theme configurable.
126
125
  EditorView.baseTheme(defaultTheme),
127
- EditorView.theme(slots?.editor?.theme ?? {}),
126
+ EditorView.theme(theme ?? {}),
128
127
  EditorView.darkTheme.of(themeMode === 'dark'),
129
128
 
130
129
  // Storage and replication.
@@ -160,7 +159,7 @@ export const BaseTextEditor = forwardRef<EditorView, TextEditorProps>(
160
159
  (event: KeyboardEvent) => {
161
160
  const { key, altKey, shiftKey, metaKey, ctrlKey } = event;
162
161
  switch (key) {
163
- // TODO(burdon): ???
162
+ // TODO(burdon): Is this required (for vim mode?)
164
163
  // case 'Enter': {
165
164
  // view?.contentDOM.focus();
166
165
  // break;
@@ -178,28 +177,27 @@ export const BaseTextEditor = forwardRef<EditorView, TextEditorProps>(
178
177
  return (
179
178
  <div
180
179
  key={model.id}
181
- ref={rootRef}
180
+ role='none'
182
181
  tabIndex={0}
183
- {...slots?.root}
184
- {...(editorMode !== 'vim' && tabsterDOMAttribute)}
185
182
  onKeyUp={handleKeyUp}
183
+ {...slots.root}
184
+ {...(editorMode !== 'vim' && tabsterDOMAttribute)}
185
+ ref={rootRef}
186
186
  />
187
187
  );
188
188
  },
189
189
  );
190
190
 
191
191
  export const TextEditor = forwardRef<EditorView, TextEditorProps>(
192
- ({ readonly, extensions = [], slots, ...props }, forwardedRef) => {
192
+ ({ readonly, placeholder, extensions = [], theme = textTheme, slots, ...props }, forwardedRef) => {
193
193
  const { themeMode } = useThemeContext();
194
194
  const updatedSlots = defaultsDeep({}, slots, defaultTextSlots);
195
195
  return (
196
196
  <BaseTextEditor
197
197
  ref={forwardedRef}
198
198
  readonly={readonly}
199
- extensions={[
200
- basicBundle({ readonly, themeMode, placeholder: updatedSlots?.editor?.placeholder }),
201
- ...extensions,
202
- ]}
199
+ extensions={[basicBundle({ readonly, themeMode, placeholder }), ...extensions]}
200
+ theme={theme}
203
201
  slots={updatedSlots}
204
202
  {...props}
205
203
  />
@@ -209,17 +207,15 @@ export const TextEditor = forwardRef<EditorView, TextEditorProps>(
209
207
 
210
208
  // TODO(burdon): Remove (Just provide bundle, slots).
211
209
  export const MarkdownEditor = forwardRef<EditorView, TextEditorProps>(
212
- ({ readonly, extensions = [], slots, ...props }, forwardedRef) => {
210
+ ({ readonly, placeholder, extensions = [], theme = markdownTheme, slots, ...props }, forwardedRef) => {
213
211
  const { themeMode } = useThemeContext();
214
212
  const updatedSlots = defaultsDeep({}, slots, defaultMarkdownSlots);
215
213
  return (
216
214
  <BaseTextEditor
217
215
  ref={forwardedRef}
218
216
  readonly={readonly}
219
- extensions={[
220
- markdownBundle({ readonly, themeMode, placeholder: updatedSlots?.editor?.placeholder }),
221
- ...extensions,
222
- ]}
217
+ extensions={[markdownBundle({ readonly, themeMode, placeholder }), ...extensions]}
218
+ theme={theme}
223
219
  slots={updatedSlots}
224
220
  {...props}
225
221
  />
@@ -229,20 +225,14 @@ export const MarkdownEditor = forwardRef<EditorView, TextEditorProps>(
229
225
 
230
226
  export const defaultSlots: TextEditorSlots = {
231
227
  root: {
232
- className: mx('p-2', inputSurface),
228
+ className: mx('w-full p-2 overflow-y-auto', inputSurface),
233
229
  },
234
230
  };
235
231
 
236
232
  export const defaultTextSlots: TextEditorSlots = {
237
233
  ...defaultSlots,
238
- editor: {
239
- theme: textTheme,
240
- },
241
234
  };
242
235
 
243
236
  export const defaultMarkdownSlots: TextEditorSlots = {
244
237
  ...defaultSlots,
245
- editor: {
246
- theme: markdownTheme,
247
- },
248
238
  };