@dxos/react-ui-editor 0.4.7 → 0.4.8-main.00e6f19

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 (116) hide show
  1. package/dist/lib/browser/index.mjs +2633 -2705
  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/TextEditor.d.ts +18 -34
  5. package/dist/types/src/components/TextEditor/TextEditor.d.ts.map +1 -1
  6. package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts +79 -5
  7. package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts.map +1 -1
  8. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +0 -1
  9. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  10. package/dist/types/src/extensions/automerge/automerge.d.ts +1 -1
  11. package/dist/types/src/extensions/automerge/automerge.d.ts.map +1 -1
  12. package/dist/types/src/extensions/automerge/automerge.stories.d.ts +1 -2
  13. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +1 -1
  14. package/dist/types/src/extensions/automerge/cursor.d.ts +1 -1
  15. package/dist/types/src/extensions/automerge/cursor.d.ts.map +1 -1
  16. package/dist/types/src/extensions/automerge/defs.d.ts +1 -15
  17. package/dist/types/src/extensions/automerge/defs.d.ts.map +1 -1
  18. package/dist/types/src/extensions/automerge/index.d.ts +0 -1
  19. package/dist/types/src/extensions/automerge/index.d.ts.map +1 -1
  20. package/dist/types/src/extensions/automerge/sync.d.ts +2 -1
  21. package/dist/types/src/extensions/automerge/sync.d.ts.map +1 -1
  22. package/dist/types/src/extensions/automerge/update-automerge.d.ts +2 -1
  23. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +1 -1
  24. package/dist/types/src/{hooks → extensions/awareness}/awareness-provider.d.ts +1 -1
  25. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +1 -0
  26. package/dist/types/src/extensions/awareness/awareness.d.ts.map +1 -0
  27. package/dist/types/src/extensions/awareness/index.d.ts +3 -0
  28. package/dist/types/src/extensions/awareness/index.d.ts.map +1 -0
  29. package/dist/types/src/extensions/comments.d.ts +2 -2
  30. package/dist/types/src/extensions/comments.d.ts.map +1 -1
  31. package/dist/types/src/extensions/cursor-line-margin.d.ts +6 -7
  32. package/dist/types/src/extensions/cursor-line-margin.d.ts.map +1 -1
  33. package/dist/types/src/extensions/cursor.d.ts +1 -1
  34. package/dist/types/src/extensions/cursor.d.ts.map +1 -1
  35. package/dist/types/src/extensions/doc.d.ts +3 -0
  36. package/dist/types/src/extensions/doc.d.ts.map +1 -0
  37. package/dist/types/src/extensions/factories.d.ts +49 -0
  38. package/dist/types/src/extensions/factories.d.ts.map +1 -0
  39. package/dist/types/src/extensions/index.d.ts +4 -1
  40. package/dist/types/src/extensions/index.d.ts.map +1 -1
  41. package/dist/types/src/extensions/markdown/bundle.d.ts +5 -4
  42. package/dist/types/src/extensions/markdown/bundle.d.ts.map +1 -1
  43. package/dist/types/src/extensions/markdown/decorate.d.ts.map +1 -1
  44. package/dist/types/src/extensions/markdown/formatting.d.ts +1 -1
  45. package/dist/types/src/extensions/markdown/formatting.d.ts.map +1 -1
  46. package/dist/types/src/extensions/markdown/table.d.ts +2 -2
  47. package/dist/types/src/extensions/markdown/table.d.ts.map +1 -1
  48. package/dist/types/src/extensions/modes.d.ts +1 -0
  49. package/dist/types/src/extensions/modes.d.ts.map +1 -1
  50. package/dist/types/src/extensions/state.d.ts +20 -0
  51. package/dist/types/src/extensions/state.d.ts.map +1 -0
  52. package/dist/types/src/extensions/types.d.ts +9 -0
  53. package/dist/types/src/extensions/types.d.ts.map +1 -0
  54. package/dist/types/src/hooks/index.d.ts +1 -4
  55. package/dist/types/src/hooks/index.d.ts.map +1 -1
  56. package/dist/types/src/hooks/useDocAccessor.d.ts +7 -0
  57. package/dist/types/src/hooks/useDocAccessor.d.ts.map +1 -0
  58. package/dist/types/src/hooks/useTextEditor.d.ts +3 -44
  59. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  60. package/dist/types/src/hooks/useTextEditor.stories.d.ts +6 -1
  61. package/dist/types/src/hooks/useTextEditor.stories.d.ts.map +1 -1
  62. package/dist/types/src/themes/default.d.ts +0 -3
  63. package/dist/types/src/themes/default.d.ts.map +1 -1
  64. package/package.json +24 -27
  65. package/src/components/TextEditor/TextEditor.stories.tsx +520 -23
  66. package/src/components/TextEditor/TextEditor.tsx +44 -155
  67. package/src/components/Toolbar/Toolbar.stories.tsx +42 -42
  68. package/src/extensions/automerge/automerge.stories.tsx +16 -17
  69. package/src/extensions/automerge/automerge.ts +2 -1
  70. package/src/extensions/automerge/cursor.ts +1 -1
  71. package/src/extensions/automerge/defs.ts +1 -22
  72. package/src/extensions/automerge/index.ts +0 -1
  73. package/src/extensions/automerge/sync.ts +2 -9
  74. package/src/extensions/automerge/update-automerge.ts +2 -1
  75. package/src/{hooks → extensions/awareness}/awareness-provider.ts +1 -1
  76. package/src/extensions/{awareness.ts → awareness/awareness.ts} +1 -1
  77. package/src/extensions/awareness/index.ts +6 -0
  78. package/src/extensions/command/state.ts +1 -1
  79. package/src/extensions/comments.ts +9 -5
  80. package/src/extensions/cursor-line-margin.ts +17 -18
  81. package/src/extensions/cursor.ts +1 -1
  82. package/src/extensions/doc.ts +14 -0
  83. package/src/extensions/factories.ts +167 -0
  84. package/src/extensions/index.ts +4 -1
  85. package/src/extensions/markdown/bundle.ts +11 -28
  86. package/src/extensions/markdown/decorate.ts +2 -4
  87. package/src/extensions/markdown/formatting.ts +15 -10
  88. package/src/extensions/markdown/image.ts +1 -0
  89. package/src/extensions/markdown/table.ts +11 -3
  90. package/src/extensions/modes.ts +3 -1
  91. package/src/extensions/state.ts +90 -0
  92. package/src/extensions/types.ts +16 -0
  93. package/src/hooks/index.ts +1 -5
  94. package/src/hooks/useDocAccessor.ts +21 -0
  95. package/src/hooks/useTextEditor.stories.tsx +40 -35
  96. package/src/hooks/useTextEditor.ts +11 -120
  97. package/src/index.ts +1 -1
  98. package/src/themes/default.ts +1 -28
  99. package/dist/types/src/components/TextEditor/MarkdownEditor.stories.d.ts +0 -103
  100. package/dist/types/src/components/TextEditor/MarkdownEditor.stories.d.ts.map +0 -1
  101. package/dist/types/src/extensions/awareness.d.ts.map +0 -1
  102. package/dist/types/src/extensions/outliner.d.ts +0 -4
  103. package/dist/types/src/extensions/outliner.d.ts.map +0 -1
  104. package/dist/types/src/hooks/awareness-provider.d.ts.map +0 -1
  105. package/dist/types/src/hooks/defs.d.ts +0 -20
  106. package/dist/types/src/hooks/defs.d.ts.map +0 -1
  107. package/dist/types/src/hooks/useEditorView.d.ts +0 -20
  108. package/dist/types/src/hooks/useEditorView.d.ts.map +0 -1
  109. package/dist/types/src/hooks/useTextModel.d.ts +0 -33
  110. package/dist/types/src/hooks/useTextModel.d.ts.map +0 -1
  111. package/src/components/TextEditor/MarkdownEditor.stories.tsx +0 -524
  112. package/src/extensions/outliner.ts +0 -12
  113. package/src/hooks/defs.ts +0 -30
  114. package/src/hooks/useEditorView.ts +0 -32
  115. package/src/hooks/useTextModel.ts +0 -121
  116. /package/dist/types/src/extensions/{awareness.d.ts → awareness/awareness.d.ts} +0 -0
@@ -1,121 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { type Extension } from '@codemirror/state';
6
- import get from 'lodash.get';
7
- import { type Dispatch, type SetStateAction, useState, useMemo } from 'react';
8
-
9
- import { generateName } from '@dxos/display-name';
10
- import { type AutomergeTextCompat, getRawDoc } from '@dxos/echo-schema';
11
- import { invariant } from '@dxos/invariant';
12
- import { isAutomergeObject, type Space, type TextObject } from '@dxos/react-client/echo';
13
- import { type Identity } from '@dxos/react-client/halo';
14
- import { type HuePalette, hueTokens } from '@dxos/react-ui-theme';
15
- import { hexToHue } from '@dxos/util';
16
-
17
- import { SpaceAwarenessProvider } from './awareness-provider';
18
- import { type EditorModel } from './defs';
19
- import { automerge, awareness } from '../extensions';
20
- import { type DocAccessor } from '../extensions/automerge/defs';
21
-
22
- export type useTextExtensionsProps = {
23
- id: string;
24
- text: DocAccessor;
25
- space?: Space;
26
- identity?: Identity;
27
- };
28
-
29
- // TODO(burdon): Factor out automerge defs and extension (not hook).
30
- export const useTextExtensions = ({ id, text, space, identity }: useTextExtensionsProps): Extension[] => {
31
- const extensions: Extension[] = [automerge(text)];
32
-
33
- const peerId = identity?.identityKey.toHex();
34
- const { cursorLightValue, cursorDarkValue } =
35
- hueTokens[(identity?.profile?.data?.hue as HuePalette | undefined) ?? hexToHue(peerId ?? '0')];
36
-
37
- if (space && identity) {
38
- const awarenessProvider = new SpaceAwarenessProvider({
39
- space,
40
- channel: `awareness.${id}`,
41
- peerId: identity.identityKey.toHex(),
42
- info: {
43
- displayName: identity.profile?.displayName ?? generateName(identity.identityKey.toHex()),
44
- color: cursorDarkValue,
45
- lightColor: cursorLightValue,
46
- },
47
- });
48
-
49
- extensions.push(awareness(awarenessProvider));
50
- }
51
-
52
- return extensions;
53
- };
54
-
55
- export type UseTextModelProps = {
56
- text?: TextObject;
57
- space?: Space;
58
- identity?: Identity | null;
59
- };
60
-
61
- /**
62
- * @deprecated
63
- */
64
- // TODO(burdon): Remove once automerge lands.
65
- export const useTextModel = (props: UseTextModelProps): EditorModel | undefined =>
66
- useMemo(() => createModel(props), Object.values(props));
67
-
68
- /**
69
- * For use primarily in stories & tests so the dependence on TextObject can be avoided.
70
- * @deprecated
71
- */
72
- // TODO(burdon): Remove.
73
- export const useInMemoryTextModel = ({
74
- id,
75
- defaultContent,
76
- }: {
77
- id: string;
78
- defaultContent?: string;
79
- }): EditorModel & { setContent: Dispatch<SetStateAction<string>> } => {
80
- const [content, setContent] = useState(defaultContent ?? '');
81
- return { id, content, text: () => content, setContent };
82
- };
83
-
84
- const createModel = ({ space, identity, text }: UseTextModelProps): EditorModel | undefined => {
85
- if (!text) {
86
- return undefined;
87
- }
88
-
89
- invariant(isAutomergeObject(text));
90
- const obj = text as any as AutomergeTextCompat;
91
- const doc = getRawDoc(obj, [obj.field]);
92
-
93
- const peerId = identity?.identityKey.toHex();
94
- const { cursorLightValue, cursorDarkValue } =
95
- hueTokens[(identity?.profile?.data?.hue as HuePalette | undefined) ?? hexToHue(peerId ?? '0')];
96
-
97
- const awarenessProvider =
98
- space &&
99
- new SpaceAwarenessProvider({
100
- space,
101
- channel: `automerge.awareness.${obj.id}`,
102
- info: {
103
- displayName: identity ? identity.profile?.displayName ?? generateName(identity.identityKey.toHex()) : undefined,
104
- color: cursorLightValue,
105
- lightColor: cursorDarkValue,
106
- },
107
- peerId: identity?.identityKey.toHex() ?? 'Anonymous',
108
- });
109
-
110
- const extensions = [automerge({ handle: doc.handle, path: doc.path })];
111
- if (awarenessProvider) {
112
- extensions.push(awareness(awarenessProvider));
113
- }
114
-
115
- return {
116
- id: obj.id,
117
- content: doc,
118
- text: () => get(doc.handle.docSync(), doc.path),
119
- extension: extensions,
120
- };
121
- };