@dxos/react-ui-editor 0.4.8-main.eb5ae94 → 0.4.8-main.fff1521

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 (127) hide show
  1. package/dist/lib/browser/index.mjs +2725 -2711
  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 +80 -5
  7. package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts.map +1 -1
  8. package/dist/types/src/components/Toolbar/Toolbar.d.ts +11 -5
  9. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  10. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +4 -2
  11. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  12. package/dist/types/src/extensions/automerge/automerge.d.ts +1 -1
  13. package/dist/types/src/extensions/automerge/automerge.d.ts.map +1 -1
  14. package/dist/types/src/extensions/automerge/automerge.stories.d.ts +2 -1
  15. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +1 -1
  16. package/dist/types/src/extensions/automerge/cursor.d.ts +1 -1
  17. package/dist/types/src/extensions/automerge/cursor.d.ts.map +1 -1
  18. package/dist/types/src/extensions/automerge/defs.d.ts +1 -15
  19. package/dist/types/src/extensions/automerge/defs.d.ts.map +1 -1
  20. package/dist/types/src/extensions/automerge/index.d.ts +0 -1
  21. package/dist/types/src/extensions/automerge/index.d.ts.map +1 -1
  22. package/dist/types/src/extensions/automerge/sync.d.ts +2 -1
  23. package/dist/types/src/extensions/automerge/sync.d.ts.map +1 -1
  24. package/dist/types/src/extensions/automerge/update-automerge.d.ts +2 -1
  25. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +1 -1
  26. package/dist/types/src/{hooks → extensions/awareness}/awareness-provider.d.ts +1 -1
  27. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +1 -0
  28. package/dist/types/src/extensions/awareness/awareness.d.ts.map +1 -0
  29. package/dist/types/src/extensions/awareness/index.d.ts +3 -0
  30. package/dist/types/src/extensions/awareness/index.d.ts.map +1 -0
  31. package/dist/types/src/extensions/comments.d.ts +2 -2
  32. package/dist/types/src/extensions/comments.d.ts.map +1 -1
  33. package/dist/types/src/extensions/cursor-line-margin.d.ts +6 -7
  34. package/dist/types/src/extensions/cursor-line-margin.d.ts.map +1 -1
  35. package/dist/types/src/extensions/cursor.d.ts +1 -1
  36. package/dist/types/src/extensions/cursor.d.ts.map +1 -1
  37. package/dist/types/src/extensions/doc.d.ts +3 -0
  38. package/dist/types/src/extensions/doc.d.ts.map +1 -0
  39. package/dist/types/src/extensions/factories.d.ts +49 -0
  40. package/dist/types/src/extensions/factories.d.ts.map +1 -0
  41. package/dist/types/src/extensions/index.d.ts +4 -1
  42. package/dist/types/src/extensions/index.d.ts.map +1 -1
  43. package/dist/types/src/extensions/markdown/bundle.d.ts +5 -4
  44. package/dist/types/src/extensions/markdown/bundle.d.ts.map +1 -1
  45. package/dist/types/src/extensions/markdown/decorate.d.ts.map +1 -1
  46. package/dist/types/src/extensions/markdown/formatting.d.ts +8 -5
  47. package/dist/types/src/extensions/markdown/formatting.d.ts.map +1 -1
  48. package/dist/types/src/extensions/markdown/image.d.ts +6 -0
  49. package/dist/types/src/extensions/markdown/image.d.ts.map +1 -1
  50. package/dist/types/src/extensions/markdown/table.d.ts +2 -2
  51. package/dist/types/src/extensions/markdown/table.d.ts.map +1 -1
  52. package/dist/types/src/extensions/modes.d.ts +1 -0
  53. package/dist/types/src/extensions/modes.d.ts.map +1 -1
  54. package/dist/types/src/extensions/state.d.ts +20 -0
  55. package/dist/types/src/extensions/state.d.ts.map +1 -0
  56. package/dist/types/src/extensions/types.d.ts +9 -0
  57. package/dist/types/src/extensions/types.d.ts.map +1 -0
  58. package/dist/types/src/hooks/index.d.ts +1 -4
  59. package/dist/types/src/hooks/index.d.ts.map +1 -1
  60. package/dist/types/src/hooks/useActionHandler.d.ts.map +1 -1
  61. package/dist/types/src/hooks/useDocAccessor.d.ts +7 -0
  62. package/dist/types/src/hooks/useDocAccessor.d.ts.map +1 -0
  63. package/dist/types/src/hooks/useTextEditor.d.ts +3 -44
  64. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  65. package/dist/types/src/hooks/useTextEditor.stories.d.ts +7 -0
  66. package/dist/types/src/hooks/useTextEditor.stories.d.ts.map +1 -1
  67. package/dist/types/src/themes/default.d.ts +0 -3
  68. package/dist/types/src/themes/default.d.ts.map +1 -1
  69. package/dist/types/src/translations.d.ts +1 -0
  70. package/dist/types/src/translations.d.ts.map +1 -1
  71. package/package.json +25 -27
  72. package/src/components/TextEditor/TextEditor.stories.tsx +520 -23
  73. package/src/components/TextEditor/TextEditor.tsx +45 -156
  74. package/src/components/Toolbar/Toolbar.stories.tsx +54 -55
  75. package/src/components/Toolbar/Toolbar.tsx +96 -35
  76. package/src/extensions/automerge/automerge.stories.tsx +16 -17
  77. package/src/extensions/automerge/automerge.ts +2 -1
  78. package/src/extensions/automerge/cursor.ts +1 -1
  79. package/src/extensions/automerge/defs.ts +1 -22
  80. package/src/extensions/automerge/index.ts +0 -1
  81. package/src/extensions/automerge/sync.ts +2 -9
  82. package/src/extensions/automerge/update-automerge.ts +2 -1
  83. package/src/{hooks → extensions/awareness}/awareness-provider.ts +1 -1
  84. package/src/extensions/{awareness.ts → awareness/awareness.ts} +1 -1
  85. package/src/extensions/awareness/index.ts +6 -0
  86. package/src/extensions/command/state.ts +1 -1
  87. package/src/extensions/comments.ts +9 -5
  88. package/src/extensions/cursor-line-margin.ts +17 -18
  89. package/src/extensions/cursor.ts +1 -1
  90. package/src/extensions/doc.ts +14 -0
  91. package/src/extensions/factories.ts +167 -0
  92. package/src/extensions/index.ts +4 -1
  93. package/src/extensions/markdown/bundle.ts +11 -28
  94. package/src/extensions/markdown/decorate.ts +2 -4
  95. package/src/extensions/markdown/formatting.test.ts +13 -13
  96. package/src/extensions/markdown/formatting.ts +106 -93
  97. package/src/extensions/markdown/image.ts +7 -0
  98. package/src/extensions/markdown/table.ts +11 -3
  99. package/src/extensions/modes.ts +3 -1
  100. package/src/extensions/state.ts +90 -0
  101. package/src/extensions/types.ts +16 -0
  102. package/src/hooks/index.ts +1 -5
  103. package/src/hooks/useActionHandler.ts +5 -1
  104. package/src/hooks/useDocAccessor.ts +21 -0
  105. package/src/hooks/useTextEditor.stories.tsx +40 -35
  106. package/src/hooks/useTextEditor.ts +14 -120
  107. package/src/index.ts +1 -1
  108. package/src/themes/default.ts +1 -28
  109. package/src/translations.ts +1 -0
  110. package/dist/types/src/components/TextEditor/MarkdownEditor.stories.d.ts +0 -103
  111. package/dist/types/src/components/TextEditor/MarkdownEditor.stories.d.ts.map +0 -1
  112. package/dist/types/src/extensions/awareness.d.ts.map +0 -1
  113. package/dist/types/src/extensions/outliner.d.ts +0 -4
  114. package/dist/types/src/extensions/outliner.d.ts.map +0 -1
  115. package/dist/types/src/hooks/awareness-provider.d.ts.map +0 -1
  116. package/dist/types/src/hooks/defs.d.ts +0 -20
  117. package/dist/types/src/hooks/defs.d.ts.map +0 -1
  118. package/dist/types/src/hooks/useEditorView.d.ts +0 -20
  119. package/dist/types/src/hooks/useEditorView.d.ts.map +0 -1
  120. package/dist/types/src/hooks/useTextModel.d.ts +0 -33
  121. package/dist/types/src/hooks/useTextModel.d.ts.map +0 -1
  122. package/src/components/TextEditor/MarkdownEditor.stories.tsx +0 -524
  123. package/src/extensions/outliner.ts +0 -12
  124. package/src/hooks/defs.ts +0 -30
  125. package/src/hooks/useEditorView.ts +0 -32
  126. package/src/hooks/useTextModel.ts +0 -121
  127. /package/dist/types/src/extensions/{awareness.d.ts → awareness/awareness.d.ts} +0 -0
@@ -1,32 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { type EditorView } from '@codemirror/view';
6
- import { type MutableRefObject, useRef, useState } from 'react';
7
-
8
- /**
9
- * Hook for accessing the editor view.
10
- * @deprecated
11
- *
12
- * ```tsx
13
- * const Test = () => {
14
- * const [editorRef, viewInvalidated] = useEditorView();
15
- * useEffect(() => {
16
- * if (editorRef.current && !viewInvalidated) {
17
- * editorView?.focus();
18
- * }
19
- * }, [editorView]);
20
- * return <TextEditor ref={editorRef} />;
21
- * };
22
- * ```
23
- */
24
- export const useEditorView = (id: string): [MutableRefObject<EditorView | null>, boolean] => {
25
- const editorRef = useRef<EditorView | null>(null);
26
- const [prev, setPrev] = useState<[EditorView | null, string]>([null, '']);
27
- if (prev[0] !== editorRef.current) {
28
- setPrev([editorRef.current, id]);
29
- }
30
-
31
- return [editorRef, prev[1] !== id];
32
- };
@@ -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
- };