@dxos/react-ui-editor 0.3.9-next.7522f7a → 0.3.9

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 (148) hide show
  1. package/dist/lib/browser/index.mjs +930 -811
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/types/src/automerge/automerge-plugin/PatchSemaphore.d.ts +2 -2
  5. package/dist/types/src/automerge/automerge-plugin/PatchSemaphore.d.ts.map +1 -1
  6. package/dist/types/src/automerge/automerge-plugin/codeMirrorToAm.d.ts +2 -2
  7. package/dist/types/src/automerge/automerge-plugin/codeMirrorToAm.d.ts.map +1 -1
  8. package/dist/types/src/automerge/automerge-plugin/handle.d.ts +9 -0
  9. package/dist/types/src/automerge/automerge-plugin/handle.d.ts.map +1 -0
  10. package/dist/types/src/automerge/automerge-plugin/index.d.ts +2 -2
  11. package/dist/types/src/automerge/automerge-plugin/index.d.ts.map +1 -1
  12. package/dist/types/src/automerge/automerge-plugin/plugin.d.ts +6 -5
  13. package/dist/types/src/automerge/automerge-plugin/plugin.d.ts.map +1 -1
  14. package/dist/types/src/automerge/automerge.stories.d.ts +2 -1
  15. package/dist/types/src/automerge/automerge.stories.d.ts.map +1 -1
  16. package/dist/types/src/components/TextEditor/TextEditor.d.ts +24 -20
  17. package/dist/types/src/components/TextEditor/TextEditor.d.ts.map +1 -1
  18. package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts +7 -10
  19. package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts.map +1 -1
  20. package/dist/types/{stories/html/code-mirror.stories.d.ts → src/components/TextEditor/codemirror.stories.d.ts} +2 -2
  21. package/dist/types/src/components/TextEditor/codemirror.stories.d.ts.map +1 -0
  22. package/dist/types/src/components/TextEditor/extensions/basic/bundle.d.ts +8 -0
  23. package/dist/types/src/components/TextEditor/extensions/basic/bundle.d.ts.map +1 -0
  24. package/dist/types/src/components/TextEditor/extensions/basic/index.d.ts +3 -0
  25. package/dist/types/src/components/TextEditor/extensions/basic/index.d.ts.map +1 -0
  26. package/dist/types/src/components/TextEditor/{theme.d.ts → extensions/basic/theme.d.ts} +2 -1
  27. package/dist/types/src/components/TextEditor/extensions/basic/theme.d.ts.map +1 -0
  28. package/dist/types/src/components/TextEditor/extensions/change.d.ts +7 -0
  29. package/dist/types/src/components/TextEditor/extensions/change.d.ts.map +1 -0
  30. package/dist/types/src/components/TextEditor/extensions/hyperlink/hyperlinkDecoration.d.ts.map +1 -0
  31. package/dist/types/src/components/TextEditor/extensions/hyperlink/hyperlinkTooltip.d.ts.map +1 -0
  32. package/dist/types/src/components/TextEditor/extensions/hyperlink/hyperlinkWidget.d.ts.map +1 -0
  33. package/dist/types/src/components/TextEditor/extensions/hyperlink/index.d.ts +4 -0
  34. package/dist/types/src/components/TextEditor/extensions/hyperlink/index.d.ts.map +1 -0
  35. package/dist/types/src/components/TextEditor/extensions/index.d.ts +4 -3
  36. package/dist/types/src/components/TextEditor/extensions/index.d.ts.map +1 -1
  37. package/dist/types/src/components/TextEditor/extensions/markdown/bundle.d.ts +8 -0
  38. package/dist/types/src/components/TextEditor/extensions/markdown/bundle.d.ts.map +1 -0
  39. package/dist/types/src/components/TextEditor/extensions/markdown/index.d.ts +3 -0
  40. package/dist/types/src/components/TextEditor/extensions/markdown/index.d.ts.map +1 -0
  41. package/dist/types/src/components/{Markdown/markdownTags.d.ts → TextEditor/extensions/markdown/tags.d.ts} +1 -1
  42. package/dist/types/src/components/TextEditor/extensions/markdown/tags.d.ts.map +1 -0
  43. package/dist/types/src/components/TextEditor/extensions/markdown/theme.d.ts +21 -0
  44. package/dist/types/src/components/TextEditor/extensions/markdown/theme.d.ts.map +1 -0
  45. package/dist/types/src/components/TextEditor/index.d.ts +1 -3
  46. package/dist/types/src/components/TextEditor/index.d.ts.map +1 -1
  47. package/dist/types/src/components/TextEditor/yjs.stories.d.ts +11 -0
  48. package/dist/types/src/components/TextEditor/yjs.stories.d.ts.map +1 -0
  49. package/dist/types/src/components/index.d.ts +0 -3
  50. package/dist/types/src/components/index.d.ts.map +1 -1
  51. package/dist/types/src/hooks/index.d.ts +4 -0
  52. package/dist/types/src/hooks/index.d.ts.map +1 -0
  53. package/dist/types/src/hooks/useCollaboration.d.ts +9 -0
  54. package/dist/types/src/hooks/useCollaboration.d.ts.map +1 -0
  55. package/dist/types/src/{model.d.ts → hooks/useTextModel.d.ts} +3 -15
  56. package/dist/types/src/hooks/useTextModel.d.ts.map +1 -0
  57. package/dist/types/src/hooks/yjs/cursors.d.ts.map +1 -0
  58. package/dist/types/src/hooks/yjs/index.d.ts.map +1 -0
  59. package/dist/types/src/hooks/yjs/space-provider.d.ts.map +1 -0
  60. package/dist/types/src/index.d.ts +2 -2
  61. package/dist/types/src/index.d.ts.map +1 -1
  62. package/dist/types/src/styles/tokens.d.ts +4 -0
  63. package/dist/types/src/styles/tokens.d.ts.map +1 -1
  64. package/dist/types/src/testing/replicator.d.ts +1 -1
  65. package/dist/types/src/testing/replicator.d.ts.map +1 -1
  66. package/package.json +30 -27
  67. package/src/automerge/automerge-plugin/PatchSemaphore.ts +5 -5
  68. package/src/automerge/automerge-plugin/codeMirrorToAm.ts +10 -7
  69. package/src/automerge/automerge-plugin/handle.ts +14 -0
  70. package/src/automerge/automerge-plugin/index.ts +2 -2
  71. package/src/automerge/automerge-plugin/plugin.ts +39 -10
  72. package/src/automerge/automerge.stories.tsx +32 -47
  73. package/src/components/TextEditor/TextEditor.stories.tsx +10 -3
  74. package/src/components/TextEditor/TextEditor.tsx +113 -56
  75. package/src/components/TextEditor/codemirror.stories.ts +114 -0
  76. package/src/components/TextEditor/extensions/basic/bundle.ts +28 -0
  77. package/src/components/TextEditor/extensions/basic/index.ts +6 -0
  78. package/src/components/TextEditor/{theme.ts → extensions/basic/theme.ts} +22 -8
  79. package/src/components/TextEditor/extensions/change.ts +22 -0
  80. package/src/components/TextEditor/extensions/hyperlink/index.ts +7 -0
  81. package/src/components/TextEditor/extensions/index.ts +4 -3
  82. package/src/components/TextEditor/extensions/markdown/bundle.ts +99 -0
  83. package/src/components/TextEditor/extensions/markdown/index.ts +6 -0
  84. package/src/components/{Markdown/markdownTheme.ts → TextEditor/extensions/markdown/theme.ts} +16 -16
  85. package/src/components/TextEditor/index.ts +1 -4
  86. package/src/components/TextEditor/yjs.stories.tsx +55 -0
  87. package/src/components/index.ts +0 -3
  88. package/src/hooks/index.ts +7 -0
  89. package/src/hooks/useCollaboration.ts +45 -0
  90. package/src/{model.ts → hooks/useTextModel.ts} +42 -17
  91. package/src/index.ts +3 -3
  92. package/src/styles/tokens.ts +6 -0
  93. package/src/testing/replicator.ts +1 -2
  94. package/dist/types/src/automerge/demo.d.ts +0 -25
  95. package/dist/types/src/automerge/demo.d.ts.map +0 -1
  96. package/dist/types/src/components/Editor/Editor.d.ts +0 -14
  97. package/dist/types/src/components/Editor/Editor.d.ts.map +0 -1
  98. package/dist/types/src/components/Editor/Editor.stories.d.ts +0 -29
  99. package/dist/types/src/components/Editor/Editor.stories.d.ts.map +0 -1
  100. package/dist/types/src/components/Editor/index.d.ts +0 -2
  101. package/dist/types/src/components/Editor/index.d.ts.map +0 -1
  102. package/dist/types/src/components/Markdown/Markdown.d.ts +0 -21
  103. package/dist/types/src/components/Markdown/Markdown.d.ts.map +0 -1
  104. package/dist/types/src/components/Markdown/Markdown.stories.d.ts +0 -20
  105. package/dist/types/src/components/Markdown/Markdown.stories.d.ts.map +0 -1
  106. package/dist/types/src/components/Markdown/index.d.ts +0 -2
  107. package/dist/types/src/components/Markdown/index.d.ts.map +0 -1
  108. package/dist/types/src/components/Markdown/markdownTags.d.ts.map +0 -1
  109. package/dist/types/src/components/Markdown/markdownTheme.d.ts +0 -100
  110. package/dist/types/src/components/Markdown/markdownTheme.d.ts.map +0 -1
  111. package/dist/types/src/components/RichText/RichText.d.ts +0 -20
  112. package/dist/types/src/components/RichText/RichText.d.ts.map +0 -1
  113. package/dist/types/src/components/RichText/RichText.stories.d.ts +0 -27
  114. package/dist/types/src/components/RichText/RichText.stories.d.ts.map +0 -1
  115. package/dist/types/src/components/RichText/index.d.ts +0 -2
  116. package/dist/types/src/components/RichText/index.d.ts.map +0 -1
  117. package/dist/types/src/components/TextEditor/extensions/hyperlinkDecoration.d.ts.map +0 -1
  118. package/dist/types/src/components/TextEditor/extensions/hyperlinkTooltip.d.ts.map +0 -1
  119. package/dist/types/src/components/TextEditor/extensions/hyperlinkWidget.d.ts.map +0 -1
  120. package/dist/types/src/components/TextEditor/theme.d.ts.map +0 -1
  121. package/dist/types/src/model.d.ts.map +0 -1
  122. package/dist/types/src/yjs/cursors.d.ts.map +0 -1
  123. package/dist/types/src/yjs/index.d.ts.map +0 -1
  124. package/dist/types/src/yjs/space-provider.d.ts.map +0 -1
  125. package/dist/types/stories/html/code-mirror.stories.d.ts.map +0 -1
  126. package/src/automerge/demo.ts +0 -106
  127. package/src/components/Editor/Editor.stories.tsx +0 -82
  128. package/src/components/Editor/Editor.tsx +0 -36
  129. package/src/components/Editor/index.ts +0 -5
  130. package/src/components/Markdown/Markdown.stories.tsx +0 -70
  131. package/src/components/Markdown/Markdown.tsx +0 -239
  132. package/src/components/Markdown/index.ts +0 -5
  133. package/src/components/RichText/RichText.stories.tsx +0 -70
  134. package/src/components/RichText/RichText.tsx +0 -181
  135. package/src/components/RichText/index.ts +0 -5
  136. /package/dist/types/src/components/TextEditor/extensions/{hyperlinkDecoration.d.ts → hyperlink/hyperlinkDecoration.d.ts} +0 -0
  137. /package/dist/types/src/components/TextEditor/extensions/{hyperlinkTooltip.d.ts → hyperlink/hyperlinkTooltip.d.ts} +0 -0
  138. /package/dist/types/src/components/TextEditor/extensions/{hyperlinkWidget.d.ts → hyperlink/hyperlinkWidget.d.ts} +0 -0
  139. /package/dist/types/src/{yjs → hooks/yjs}/cursors.d.ts +0 -0
  140. /package/dist/types/src/{yjs → hooks/yjs}/index.d.ts +0 -0
  141. /package/dist/types/src/{yjs → hooks/yjs}/space-provider.d.ts +0 -0
  142. /package/src/components/TextEditor/extensions/{hyperlinkDecoration.ts → hyperlink/hyperlinkDecoration.ts} +0 -0
  143. /package/src/components/TextEditor/extensions/{hyperlinkTooltip.tsx → hyperlink/hyperlinkTooltip.tsx} +0 -0
  144. /package/src/components/TextEditor/extensions/{hyperlinkWidget.tsx → hyperlink/hyperlinkWidget.tsx} +0 -0
  145. /package/src/components/{Markdown/markdownTags.ts → TextEditor/extensions/markdown/tags.ts} +0 -0
  146. /package/src/{yjs → hooks/yjs}/cursors.ts +0 -0
  147. /package/src/{yjs → hooks/yjs}/index.ts +0 -0
  148. /package/src/{yjs → hooks/yjs}/space-provider.ts +0 -0
@@ -1,181 +0,0 @@
1
- //
2
- // Copyright 2022 DXOS.org
3
- //
4
- import { mergeAttributes } from '@tiptap/core';
5
- import Collaboration from '@tiptap/extension-collaboration';
6
- import CollaborationCursor from '@tiptap/extension-collaboration-cursor';
7
- import Heading from '@tiptap/extension-heading';
8
- import ListItem from '@tiptap/extension-list-item';
9
- import Placeholder from '@tiptap/extension-placeholder';
10
- import { type Editor, EditorContent, useEditor as useNaturalEditor } from '@tiptap/react';
11
- import StarterKit from '@tiptap/starter-kit';
12
- import React, { forwardRef, useImperativeHandle, useMemo } from 'react';
13
-
14
- import { generateName } from '@dxos/display-name';
15
- import { mx } from '@dxos/react-ui-theme';
16
-
17
- import { type EditorModel, type EditorSlots } from '../../model';
18
- import {
19
- blockquote,
20
- bold,
21
- codeBlock,
22
- heading,
23
- type HeadingLevel,
24
- horizontalRule,
25
- italic,
26
- listItem,
27
- orderedList,
28
- paragraph,
29
- strikethrough,
30
- unorderedList,
31
- codeWithoutMarks,
32
- } from '../../styles';
33
- import { cursorColor } from '../../yjs';
34
-
35
- export type TipTapEditor = Editor;
36
-
37
- type UseEditorOptions = {
38
- model?: EditorModel;
39
- placeholder?: string;
40
- slots?: Pick<EditorSlots, 'editor'>;
41
- };
42
-
43
- const useEditor = ({ model, placeholder = 'Enter text…', slots = {} }: UseEditorOptions) => {
44
- const extensions = useMemo(
45
- () => [
46
- StarterKit.configure({
47
- // Extensions
48
- history: false,
49
- // Nodes
50
- blockquote: {
51
- HTMLAttributes: {
52
- class: blockquote,
53
- },
54
- },
55
- bulletList: {
56
- HTMLAttributes: {
57
- class: unorderedList,
58
- },
59
- },
60
- codeBlock: {
61
- HTMLAttributes: {
62
- class: codeBlock,
63
- },
64
- },
65
- heading: false, // (thure): `StarterKit` doesn’t let you configure how headings are rendered, see `Heading` below.
66
- horizontalRule: {
67
- HTMLAttributes: {
68
- class: horizontalRule,
69
- },
70
- },
71
- listItem: false, // (thure): `StarterKit` doesn’t let you configure how list items are rendered, see `ListItem` below.
72
- orderedList: {
73
- HTMLAttributes: {
74
- class: orderedList,
75
- },
76
- },
77
- paragraph: {
78
- HTMLAttributes: {
79
- class: paragraph,
80
- },
81
- },
82
- // Marks
83
- bold: {
84
- HTMLAttributes: {
85
- class: bold,
86
- },
87
- },
88
- code: {
89
- HTMLAttributes: {
90
- class: codeWithoutMarks,
91
- },
92
- },
93
- italic: {
94
- HTMLAttributes: {
95
- class: italic,
96
- },
97
- },
98
- strike: {
99
- HTMLAttributes: {
100
- class: strikethrough,
101
- },
102
- },
103
- }),
104
- Heading.extend({
105
- renderHTML({ node, HTMLAttributes }) {
106
- const hasLevel = this.options.levels.includes(node.attrs.level);
107
- const level: HeadingLevel = hasLevel ? node.attrs.level : this.options.levels[0];
108
-
109
- return [
110
- `h${level}`,
111
- mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, {
112
- class: heading[level],
113
- }),
114
- 0,
115
- ];
116
- },
117
- }),
118
- ListItem.extend({
119
- renderHTML: ({ HTMLAttributes }) => [
120
- 'li',
121
- mergeAttributes(HTMLAttributes, {
122
- marker: '• ',
123
- class: listItem,
124
- }),
125
- ['div', { role: 'none' }, 0],
126
- ],
127
- }),
128
- // https://github.com/ueberdosis/tiptap/tree/main/packages/extension-collaboration
129
- ...(model && typeof model.content !== 'string' ? [Collaboration.configure({ fragment: model.content })] : []),
130
- ...(model?.provider
131
- ? [
132
- CollaborationCursor.configure({
133
- provider: model.provider,
134
- user: model.peer && {
135
- name: model.peer.name ?? generateName(model.peer.id),
136
- color: cursorColor.color,
137
- },
138
- }),
139
- ]
140
- : []),
141
- Placeholder.configure({
142
- placeholder,
143
- emptyEditorClass: 'before:content-[attr(data-placeholder)] before:absolute opacity-50 cursor-text',
144
- }),
145
- ],
146
- [model?.id],
147
- );
148
-
149
- return useNaturalEditor(
150
- {
151
- extensions,
152
- editorProps: {
153
- attributes: {
154
- class: mx('focus:outline-none focus-visible:outline-none', slots.editor?.className),
155
- spellcheck: slots.editor?.spellCheck === false ? 'false' : 'true',
156
- tabindex: slots.editor?.tabIndex ? String(slots.editor?.tabIndex) : '0',
157
- },
158
- },
159
- },
160
- [extensions],
161
- );
162
- };
163
-
164
- export type RichTextEditorProps = UseEditorOptions & {
165
- slots?: EditorSlots;
166
- };
167
-
168
- /**
169
- * @deprecated
170
- */
171
- // TODO(burdon): Currently broken.
172
- export const RichTextEditor = forwardRef<Editor | null, RichTextEditorProps>((props, ref) => {
173
- const editor = useEditor(props);
174
- useImperativeHandle<Editor | null, Editor | null>(ref, () => editor, [editor]);
175
-
176
- // Reference:
177
- // https://tiptap.dev/installation/react
178
- // https://github.com/ueberdosis/tiptap
179
- // https://tiptap.dev/guide/output/#option-3-yjs
180
- return <EditorContent {...props.slots?.root} editor={editor} />;
181
- });
@@ -1,5 +0,0 @@
1
- //
2
- // Copyright 2022 DXOS.org
3
- //
4
-
5
- export * from './RichText';
File without changes
File without changes
File without changes
File without changes
File without changes