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