@dxos/react-ui-editor 0.4.8-main.c4e8b01 → 0.4.8-main.ec0899a

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 (108) hide show
  1. package/dist/lib/browser/index.mjs +2489 -2651
  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/doc.d.ts +3 -0
  34. package/dist/types/src/extensions/doc.d.ts.map +1 -0
  35. package/dist/types/src/extensions/factories.d.ts +49 -0
  36. package/dist/types/src/extensions/factories.d.ts.map +1 -0
  37. package/dist/types/src/extensions/index.d.ts +3 -1
  38. package/dist/types/src/extensions/index.d.ts.map +1 -1
  39. package/dist/types/src/extensions/markdown/bundle.d.ts +5 -4
  40. package/dist/types/src/extensions/markdown/bundle.d.ts.map +1 -1
  41. package/dist/types/src/extensions/markdown/decorate.d.ts.map +1 -1
  42. package/dist/types/src/extensions/markdown/formatting.d.ts +1 -1
  43. package/dist/types/src/extensions/markdown/formatting.d.ts.map +1 -1
  44. package/dist/types/src/extensions/markdown/table.d.ts +2 -2
  45. package/dist/types/src/extensions/markdown/table.d.ts.map +1 -1
  46. package/dist/types/src/extensions/types.d.ts +9 -0
  47. package/dist/types/src/extensions/types.d.ts.map +1 -0
  48. package/dist/types/src/hooks/index.d.ts +1 -4
  49. package/dist/types/src/hooks/index.d.ts.map +1 -1
  50. package/dist/types/src/hooks/useDocAccessor.d.ts +7 -0
  51. package/dist/types/src/hooks/useDocAccessor.d.ts.map +1 -0
  52. package/dist/types/src/hooks/useTextEditor.d.ts +3 -44
  53. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  54. package/dist/types/src/hooks/useTextEditor.stories.d.ts +6 -0
  55. package/dist/types/src/hooks/useTextEditor.stories.d.ts.map +1 -1
  56. package/dist/types/src/themes/default.d.ts +0 -3
  57. package/dist/types/src/themes/default.d.ts.map +1 -1
  58. package/package.json +24 -24
  59. package/src/components/TextEditor/TextEditor.stories.tsx +508 -23
  60. package/src/components/TextEditor/TextEditor.tsx +37 -149
  61. package/src/components/Toolbar/Toolbar.stories.tsx +42 -42
  62. package/src/extensions/automerge/automerge.stories.tsx +16 -17
  63. package/src/extensions/automerge/automerge.ts +2 -1
  64. package/src/extensions/automerge/cursor.ts +1 -1
  65. package/src/extensions/automerge/defs.ts +1 -22
  66. package/src/extensions/automerge/index.ts +0 -1
  67. package/src/extensions/automerge/sync.ts +2 -9
  68. package/src/extensions/automerge/update-automerge.ts +2 -1
  69. package/src/{hooks → extensions/awareness}/awareness-provider.ts +1 -1
  70. package/src/extensions/{awareness.ts → awareness/awareness.ts} +1 -1
  71. package/src/extensions/awareness/index.ts +6 -0
  72. package/src/extensions/command/state.ts +1 -1
  73. package/src/extensions/comments.ts +9 -5
  74. package/src/extensions/cursor-line-margin.ts +17 -18
  75. package/src/extensions/cursor.ts +1 -1
  76. package/src/extensions/doc.ts +14 -0
  77. package/src/extensions/factories.ts +170 -0
  78. package/src/extensions/index.ts +3 -1
  79. package/src/extensions/markdown/bundle.ts +11 -28
  80. package/src/extensions/markdown/decorate.ts +2 -4
  81. package/src/extensions/markdown/formatting.ts +15 -10
  82. package/src/extensions/markdown/image.ts +1 -0
  83. package/src/extensions/markdown/table.ts +11 -3
  84. package/src/extensions/types.ts +16 -0
  85. package/src/hooks/index.ts +1 -5
  86. package/src/hooks/useDocAccessor.ts +21 -0
  87. package/src/hooks/useTextEditor.stories.tsx +39 -34
  88. package/src/hooks/useTextEditor.ts +11 -120
  89. package/src/index.ts +1 -1
  90. package/src/themes/default.ts +1 -28
  91. package/dist/types/src/components/TextEditor/MarkdownEditor.stories.d.ts +0 -103
  92. package/dist/types/src/components/TextEditor/MarkdownEditor.stories.d.ts.map +0 -1
  93. package/dist/types/src/extensions/awareness.d.ts.map +0 -1
  94. package/dist/types/src/extensions/outliner.d.ts +0 -4
  95. package/dist/types/src/extensions/outliner.d.ts.map +0 -1
  96. package/dist/types/src/hooks/awareness-provider.d.ts.map +0 -1
  97. package/dist/types/src/hooks/defs.d.ts +0 -20
  98. package/dist/types/src/hooks/defs.d.ts.map +0 -1
  99. package/dist/types/src/hooks/useEditorView.d.ts +0 -20
  100. package/dist/types/src/hooks/useEditorView.d.ts.map +0 -1
  101. package/dist/types/src/hooks/useTextModel.d.ts +0 -33
  102. package/dist/types/src/hooks/useTextModel.d.ts.map +0 -1
  103. package/src/components/TextEditor/MarkdownEditor.stories.tsx +0 -524
  104. package/src/extensions/outliner.ts +0 -12
  105. package/src/hooks/defs.ts +0 -30
  106. package/src/hooks/useEditorView.ts +0 -32
  107. package/src/hooks/useTextModel.ts +0 -121
  108. /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
- };