@dxos/react-ui-editor 0.3.11-main.4eab977 → 0.3.11-main.4faaf44
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.
- package/dist/lib/browser/index.mjs +1134 -1241
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/types/src/components/TextEditor/MarkdownEditor.stories.d.ts +16 -13
- package/dist/types/src/components/TextEditor/MarkdownEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/TextEditor/TextEditor.d.ts +20 -17
- package/dist/types/src/components/TextEditor/TextEditor.d.ts.map +1 -1
- package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts +6 -6
- package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/TextEditor/comments.stories.d.ts +26 -0
- package/dist/types/src/components/TextEditor/comments.stories.d.ts.map +1 -0
- package/dist/types/src/extensions/autocomplete.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/automerge.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/cursor.d.ts +1 -1
- package/dist/types/src/extensions/automerge/cursor.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/defs.d.ts +7 -9
- package/dist/types/src/extensions/automerge/defs.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/index.d.ts +0 -1
- package/dist/types/src/extensions/automerge/index.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/semaphore.d.ts +7 -12
- package/dist/types/src/extensions/automerge/semaphore.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/update-automerge.d.ts +2 -2
- package/dist/types/src/extensions/awareness.d.ts +1 -1
- package/dist/types/src/extensions/awareness.d.ts.map +1 -1
- package/dist/types/src/extensions/basic.d.ts +4 -5
- package/dist/types/src/extensions/basic.d.ts.map +1 -1
- package/dist/types/src/extensions/comments.d.ts +32 -19
- package/dist/types/src/extensions/comments.d.ts.map +1 -1
- package/dist/types/src/{util → extensions}/cursor.d.ts +10 -2
- package/dist/types/src/extensions/cursor.d.ts.map +1 -0
- package/dist/types/src/extensions/index.d.ts +2 -7
- package/dist/types/src/extensions/index.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/bundle.d.ts +3 -6
- package/dist/types/src/extensions/markdown/bundle.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/code.d.ts.map +1 -0
- package/dist/types/src/extensions/markdown/heading.d.ts +6 -0
- package/dist/types/src/extensions/markdown/heading.d.ts.map +1 -0
- package/dist/types/src/extensions/markdown/highlight.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/hr.d.ts.map +1 -0
- package/dist/types/src/extensions/markdown/image.d.ts.map +1 -0
- package/dist/types/src/extensions/markdown/index.d.ts +7 -0
- package/dist/types/src/extensions/markdown/index.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/link.d.ts.map +1 -0
- package/dist/types/src/extensions/markdown/table.d.ts.map +1 -0
- package/dist/types/src/extensions/markdown/tasklist.d.ts.map +1 -0
- package/dist/types/src/extensions/mention.d.ts.map +1 -1
- package/dist/types/src/extensions/outliner.d.ts +4 -0
- package/dist/types/src/extensions/outliner.d.ts.map +1 -0
- package/dist/types/src/hooks/awareness-provider.d.ts +7 -4
- package/dist/types/src/hooks/awareness-provider.d.ts.map +1 -1
- package/dist/types/src/hooks/defs.d.ts +25 -0
- package/dist/types/src/hooks/defs.d.ts.map +1 -0
- package/dist/types/src/hooks/index.d.ts +2 -2
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useTextEditor.d.ts +17 -0
- package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -0
- package/dist/types/src/hooks/useTextModel.d.ts +2 -32
- package/dist/types/src/hooks/useTextModel.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/styles/markdown.d.ts +2 -2
- package/dist/types/src/styles/markdown.d.ts.map +1 -1
- package/dist/types/src/themes/default.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +7 -0
- package/dist/types/src/util.d.ts.map +1 -0
- package/package.json +34 -36
- package/src/components/TextEditor/MarkdownEditor.stories.tsx +82 -82
- package/src/components/TextEditor/TextEditor.stories.tsx +12 -46
- package/src/components/TextEditor/TextEditor.tsx +122 -93
- package/src/components/TextEditor/comments.stories.tsx +357 -0
- package/src/extensions/autocomplete.ts +6 -3
- package/src/extensions/automerge/automerge.ts +40 -46
- package/src/extensions/automerge/cursor.ts +2 -1
- package/src/extensions/automerge/defs.ts +10 -31
- package/src/extensions/automerge/index.ts +0 -1
- package/src/extensions/automerge/semaphore.ts +23 -20
- package/src/extensions/automerge/update-automerge.ts +2 -2
- package/src/extensions/awareness.ts +40 -46
- package/src/extensions/basic.ts +22 -17
- package/src/extensions/comments.ts +246 -238
- package/src/extensions/cursor.ts +50 -0
- package/src/extensions/index.ts +2 -7
- package/src/extensions/markdown/bundle.ts +20 -30
- package/src/extensions/markdown/code.ts +127 -0
- package/src/extensions/markdown/heading.ts +59 -0
- package/src/extensions/markdown/highlight.ts +9 -23
- package/src/extensions/markdown/hr.ts +71 -0
- package/src/extensions/{image.ts → markdown/image.ts} +2 -2
- package/src/extensions/markdown/index.ts +7 -0
- package/src/extensions/{link.ts → markdown/link.ts} +8 -9
- package/src/extensions/{table.ts → markdown/table.ts} +2 -2
- package/src/extensions/markdown/tasklist.ts +110 -0
- package/src/extensions/mention.ts +9 -2
- package/src/extensions/outliner.ts +12 -0
- package/src/hooks/awareness-provider.ts +24 -20
- package/src/hooks/defs.ts +42 -0
- package/src/hooks/index.ts +3 -2
- package/src/hooks/useTextEditor.ts +29 -0
- package/src/hooks/useTextModel.ts +48 -60
- package/src/index.ts +1 -0
- package/src/styles/markdown.ts +9 -12
- package/src/themes/default.ts +15 -50
- package/src/util.ts +41 -0
- package/dist/types/src/components/TextEditor/codemirror.stories.d.ts +0 -12
- package/dist/types/src/components/TextEditor/codemirror.stories.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/yjs.stories.d.ts +0 -12
- package/dist/types/src/components/TextEditor/yjs.stories.d.ts.map +0 -1
- package/dist/types/src/extensions/code.d.ts.map +0 -1
- package/dist/types/src/extensions/hr.d.ts.map +0 -1
- package/dist/types/src/extensions/image.d.ts.map +0 -1
- package/dist/types/src/extensions/link.d.ts.map +0 -1
- package/dist/types/src/extensions/table.d.ts.map +0 -1
- package/dist/types/src/extensions/tasklist.d.ts.map +0 -1
- package/dist/types/src/extensions/yjs/cursor.d.ts +0 -4
- package/dist/types/src/extensions/yjs/cursor.d.ts.map +0 -1
- package/dist/types/src/extensions/yjs/index.d.ts +0 -2
- package/dist/types/src/extensions/yjs/index.d.ts.map +0 -1
- package/dist/types/src/extensions/yjs/yjs.d.ts +0 -4
- package/dist/types/src/extensions/yjs/yjs.d.ts.map +0 -1
- package/dist/types/src/extensions/yjs/yjs.test.d.ts +0 -2
- package/dist/types/src/extensions/yjs/yjs.test.d.ts.map +0 -1
- package/dist/types/src/hooks/automerge.d.ts +0 -3
- package/dist/types/src/hooks/automerge.d.ts.map +0 -1
- package/dist/types/src/hooks/yjs.d.ts +0 -27
- package/dist/types/src/hooks/yjs.d.ts.map +0 -1
- package/dist/types/src/testing/index.d.ts +0 -3
- package/dist/types/src/testing/index.d.ts.map +0 -1
- package/dist/types/src/testing/proto/gen/schema.d.ts +0 -15
- package/dist/types/src/testing/proto/gen/schema.d.ts.map +0 -1
- package/dist/types/src/testing/proto/index.d.ts +0 -2
- package/dist/types/src/testing/proto/index.d.ts.map +0 -1
- package/dist/types/src/testing/replicator.d.ts +0 -45
- package/dist/types/src/testing/replicator.d.ts.map +0 -1
- package/dist/types/src/util/cursor.d.ts.map +0 -1
- package/dist/types/src/util/index.d.ts +0 -3
- package/dist/types/src/util/index.d.ts.map +0 -1
- package/dist/types/src/util/util.d.ts +0 -5
- package/dist/types/src/util/util.d.ts.map +0 -1
- package/src/components/TextEditor/codemirror.stories.ts +0 -115
- package/src/components/TextEditor/yjs.stories.tsx +0 -56
- package/src/extensions/code.ts +0 -98
- package/src/extensions/hr.ts +0 -73
- package/src/extensions/tasklist.ts +0 -119
- package/src/extensions/yjs/cursor.ts +0 -21
- package/src/extensions/yjs/index.ts +0 -5
- package/src/extensions/yjs/yjs.test.ts +0 -35
- package/src/extensions/yjs/yjs.ts +0 -16
- package/src/hooks/automerge.ts +0 -52
- package/src/hooks/yjs.ts +0 -178
- package/src/testing/index.ts +0 -6
- package/src/testing/proto/gen/schema.ts +0 -49
- package/src/testing/proto/index.ts +0 -5
- package/src/testing/proto/schema.proto +0 -15
- package/src/testing/replicator.ts +0 -184
- package/src/util/cursor.ts +0 -29
- package/src/util/index.ts +0 -6
- package/src/util/util.ts +0 -18
- /package/dist/types/src/extensions/{code.d.ts → markdown/code.d.ts} +0 -0
- /package/dist/types/src/extensions/{hr.d.ts → markdown/hr.d.ts} +0 -0
- /package/dist/types/src/extensions/{image.d.ts → markdown/image.d.ts} +0 -0
- /package/dist/types/src/extensions/{link.d.ts → markdown/link.d.ts} +0 -0
- /package/dist/types/src/extensions/{table.d.ts → markdown/table.d.ts} +0 -0
- /package/dist/types/src/extensions/{tasklist.d.ts → markdown/tasklist.d.ts} +0 -0
|
@@ -8,10 +8,10 @@ import { type EditorState, type StateField, type Text, type Transaction } from '
|
|
|
8
8
|
|
|
9
9
|
import { next as am, type Heads } from '@dxos/automerge/automerge';
|
|
10
10
|
|
|
11
|
-
import { type IDocHandle, type
|
|
11
|
+
import { type IDocHandle, type State } from './defs';
|
|
12
12
|
|
|
13
13
|
export const updateAutomerge = (
|
|
14
|
-
field: StateField<
|
|
14
|
+
field: StateField<State>,
|
|
15
15
|
handle: IDocHandle,
|
|
16
16
|
transactions: Transaction[],
|
|
17
17
|
state: EditorState,
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
import { Event } from '@dxos/async';
|
|
17
17
|
import { Context } from '@dxos/context';
|
|
18
18
|
|
|
19
|
-
import { CursorConverter } from '
|
|
19
|
+
import { Cursor, type CursorConverter } from './cursor';
|
|
20
20
|
|
|
21
21
|
export interface AwarenessProvider {
|
|
22
22
|
remoteStateChange: Event<void>;
|
|
@@ -24,8 +24,8 @@ export interface AwarenessProvider {
|
|
|
24
24
|
open(): void;
|
|
25
25
|
close(): void;
|
|
26
26
|
|
|
27
|
-
update(position: AwarenessPosition | undefined): void;
|
|
28
27
|
getRemoteStates(): AwarenessState[];
|
|
28
|
+
update(position: AwarenessPosition | undefined): void;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const dummyProvider: AwarenessProvider = {
|
|
@@ -34,8 +34,8 @@ const dummyProvider: AwarenessProvider = {
|
|
|
34
34
|
open: () => {},
|
|
35
35
|
close: () => {},
|
|
36
36
|
|
|
37
|
-
update: () => {},
|
|
38
37
|
getRemoteStates: () => [],
|
|
38
|
+
update: () => {},
|
|
39
39
|
};
|
|
40
40
|
|
|
41
41
|
export const AwarenessProvider = Facet.define<AwarenessProvider, AwarenessProvider>({
|
|
@@ -66,7 +66,6 @@ export type AwarenessState = {
|
|
|
66
66
|
/**
|
|
67
67
|
* Extension provides presence information about other peers.
|
|
68
68
|
*/
|
|
69
|
-
// TODO(burdon): Why provide default?
|
|
70
69
|
export const awareness = (provider = dummyProvider): Extension => {
|
|
71
70
|
return [
|
|
72
71
|
AwarenessProvider.of(provider),
|
|
@@ -91,7 +90,7 @@ export class RemoteSelectionsDecorator implements PluginValue {
|
|
|
91
90
|
private _lastHead?: number = undefined;
|
|
92
91
|
|
|
93
92
|
constructor(view: EditorView) {
|
|
94
|
-
this._cursorConverter = view.state.facet(
|
|
93
|
+
this._cursorConverter = view.state.facet(Cursor.converter);
|
|
95
94
|
this._provider = view.state.facet(AwarenessProvider);
|
|
96
95
|
this._provider.open();
|
|
97
96
|
this._provider.remoteStateChange.on(this._ctx, () => {
|
|
@@ -156,7 +155,7 @@ export class RemoteSelectionsDecorator implements PluginValue {
|
|
|
156
155
|
to: end,
|
|
157
156
|
value: Decoration.mark({
|
|
158
157
|
attributes: { style: `background-color: ${lightColor}` },
|
|
159
|
-
class: 'cm-
|
|
158
|
+
class: 'cm-collab-selection',
|
|
160
159
|
}),
|
|
161
160
|
});
|
|
162
161
|
} else {
|
|
@@ -166,7 +165,7 @@ export class RemoteSelectionsDecorator implements PluginValue {
|
|
|
166
165
|
to: startLine.from + startLine.length,
|
|
167
166
|
value: Decoration.mark({
|
|
168
167
|
attributes: { style: `background-color: ${color}` },
|
|
169
|
-
class: 'cm-
|
|
168
|
+
class: 'cm-collab-selection',
|
|
170
169
|
}),
|
|
171
170
|
});
|
|
172
171
|
|
|
@@ -176,7 +175,7 @@ export class RemoteSelectionsDecorator implements PluginValue {
|
|
|
176
175
|
to: end,
|
|
177
176
|
value: Decoration.mark({
|
|
178
177
|
attributes: { style: `background-color: ${color}` },
|
|
179
|
-
class: 'cm-
|
|
178
|
+
class: 'cm-collab-selection',
|
|
180
179
|
}),
|
|
181
180
|
});
|
|
182
181
|
|
|
@@ -186,7 +185,7 @@ export class RemoteSelectionsDecorator implements PluginValue {
|
|
|
186
185
|
from: linePos,
|
|
187
186
|
to: linePos,
|
|
188
187
|
value: Decoration.line({
|
|
189
|
-
attributes: { style: `background-color: ${color}`, class: 'cm-
|
|
188
|
+
attributes: { style: `background-color: ${color}`, class: 'cm-collab-selectionLine' },
|
|
190
189
|
}),
|
|
191
190
|
});
|
|
192
191
|
}
|
|
@@ -208,24 +207,22 @@ export class RemoteSelectionsDecorator implements PluginValue {
|
|
|
208
207
|
}
|
|
209
208
|
|
|
210
209
|
class RemoteCaretWidget extends WidgetType {
|
|
211
|
-
constructor(
|
|
210
|
+
constructor(private readonly _name: string, private readonly _color: string) {
|
|
212
211
|
super();
|
|
213
|
-
this.name = name;
|
|
214
|
-
this.color = color;
|
|
215
212
|
}
|
|
216
213
|
|
|
217
|
-
toDOM(): HTMLElement {
|
|
214
|
+
override toDOM(): HTMLElement {
|
|
218
215
|
const span = document.createElement('span');
|
|
219
|
-
span.className = 'cm-
|
|
220
|
-
span.style.backgroundColor = this.
|
|
221
|
-
span.style.borderColor = this.
|
|
216
|
+
span.className = 'cm-collab-selectionCaret';
|
|
217
|
+
span.style.backgroundColor = this._color;
|
|
218
|
+
span.style.borderColor = this._color;
|
|
222
219
|
|
|
223
220
|
const dot = document.createElement('div');
|
|
224
|
-
dot.className = 'cm-
|
|
221
|
+
dot.className = 'cm-collab-selectionCaretDot';
|
|
225
222
|
|
|
226
223
|
const info = document.createElement('div');
|
|
227
|
-
info.className = 'cm-
|
|
228
|
-
info.innerText = this.
|
|
224
|
+
info.className = 'cm-collab-selectionInfo';
|
|
225
|
+
info.innerText = this._name;
|
|
229
226
|
|
|
230
227
|
span.appendChild(document.createTextNode('\u2060'));
|
|
231
228
|
span.appendChild(dot);
|
|
@@ -236,18 +233,14 @@ class RemoteCaretWidget extends WidgetType {
|
|
|
236
233
|
return span;
|
|
237
234
|
}
|
|
238
235
|
|
|
239
|
-
override eq(widget: this) {
|
|
240
|
-
return widget.color === this.color;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
compare(widget: this) {
|
|
244
|
-
return widget.color === this.color;
|
|
245
|
-
}
|
|
246
|
-
|
|
247
236
|
override updateDOM() {
|
|
248
237
|
return false;
|
|
249
238
|
}
|
|
250
239
|
|
|
240
|
+
override eq(widget: this) {
|
|
241
|
+
return widget._color === this._color;
|
|
242
|
+
}
|
|
243
|
+
|
|
251
244
|
override get estimatedHeight() {
|
|
252
245
|
return -1;
|
|
253
246
|
}
|
|
@@ -257,14 +250,13 @@ class RemoteCaretWidget extends WidgetType {
|
|
|
257
250
|
}
|
|
258
251
|
}
|
|
259
252
|
|
|
260
|
-
// TODO(burdon): Rename prefix (y for yjs?)
|
|
261
253
|
const styles = EditorView.baseTheme({
|
|
262
|
-
'.cm-
|
|
263
|
-
'.cm-
|
|
254
|
+
'.cm-collab-selection': {},
|
|
255
|
+
'.cm-collab-selectionLine': {
|
|
264
256
|
padding: 0,
|
|
265
257
|
margin: '0px 2px 0px 4px',
|
|
266
258
|
},
|
|
267
|
-
'.cm-
|
|
259
|
+
'.cm-collab-selectionCaret': {
|
|
268
260
|
position: 'relative',
|
|
269
261
|
borderLeft: '1px solid black',
|
|
270
262
|
borderRight: '1px solid black',
|
|
@@ -272,44 +264,46 @@ const styles = EditorView.baseTheme({
|
|
|
272
264
|
marginRight: '-1px',
|
|
273
265
|
boxSizing: 'border-box',
|
|
274
266
|
display: 'inline',
|
|
267
|
+
cursor: 'pointer',
|
|
275
268
|
},
|
|
276
|
-
'.cm-
|
|
269
|
+
'.cm-collab-selectionCaretDot': {
|
|
277
270
|
borderRadius: '50%',
|
|
278
271
|
position: 'absolute',
|
|
279
|
-
width: '.
|
|
280
|
-
height: '.
|
|
281
|
-
top: '-.
|
|
282
|
-
left: '-.
|
|
272
|
+
width: '.5em',
|
|
273
|
+
height: '.5em',
|
|
274
|
+
top: '-.25em',
|
|
275
|
+
left: '-.25em',
|
|
283
276
|
backgroundColor: 'inherit',
|
|
284
277
|
transition: 'transform .3s ease-in-out',
|
|
285
278
|
boxSizing: 'border-box',
|
|
286
279
|
},
|
|
287
|
-
'.cm-
|
|
288
|
-
transformOrigin: 'bottom center',
|
|
280
|
+
'.cm-collab-selectionCaret:hover > .cm-collab-selectionCaretDot': {
|
|
289
281
|
transform: 'scale(0)',
|
|
282
|
+
transformOrigin: 'center',
|
|
290
283
|
},
|
|
291
|
-
'.cm-
|
|
284
|
+
'.cm-collab-selectionInfo': {
|
|
292
285
|
position: 'absolute',
|
|
293
|
-
|
|
294
|
-
|
|
286
|
+
transform: 'translate(-50%, 0)',
|
|
287
|
+
top: '-20px',
|
|
288
|
+
left: 0,
|
|
295
289
|
fontSize: '.75em',
|
|
296
|
-
fontFamily: 'serif',
|
|
290
|
+
fontFamily: 'sans-serif',
|
|
297
291
|
fontStyle: 'normal',
|
|
298
292
|
fontWeight: 'normal',
|
|
299
293
|
lineHeight: 'normal',
|
|
300
294
|
userSelect: 'none',
|
|
301
295
|
color: 'white',
|
|
302
|
-
|
|
303
|
-
paddingRight: '2px',
|
|
296
|
+
padding: '2px',
|
|
304
297
|
zIndex: 101,
|
|
305
298
|
transition: 'opacity .3s ease-in-out',
|
|
306
299
|
backgroundColor: 'inherit',
|
|
307
|
-
|
|
300
|
+
borderRadius: '2px',
|
|
301
|
+
// These should be separate.
|
|
308
302
|
opacity: 0,
|
|
309
303
|
transitionDelay: '0s',
|
|
310
304
|
whiteSpace: 'nowrap',
|
|
311
305
|
},
|
|
312
|
-
'.cm-
|
|
306
|
+
'.cm-collab-selectionCaret:hover > .cm-collab-selectionInfo': {
|
|
313
307
|
opacity: 1,
|
|
314
308
|
transitionDelay: '0s',
|
|
315
309
|
},
|
package/src/extensions/basic.ts
CHANGED
|
@@ -3,30 +3,35 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { closeBrackets } from '@codemirror/autocomplete';
|
|
6
|
+
import { history } from '@codemirror/commands';
|
|
6
7
|
import { bracketMatching, defaultHighlightStyle, syntaxHighlighting } from '@codemirror/language';
|
|
7
8
|
import { type Extension } from '@codemirror/state';
|
|
8
9
|
import { oneDarkHighlightStyle } from '@codemirror/theme-one-dark';
|
|
9
|
-
import { drawSelection, EditorView, placeholder } from '@codemirror/view';
|
|
10
|
+
import { drawSelection, EditorView, highlightActiveLine, placeholder } from '@codemirror/view';
|
|
10
11
|
|
|
11
|
-
import type
|
|
12
|
+
import { type ThemeMode } from '@dxos/react-ui';
|
|
13
|
+
|
|
14
|
+
import { type TextEditorProps } from '../components';
|
|
12
15
|
|
|
13
16
|
export type BasicBundleOptions = {
|
|
14
|
-
readonly?: boolean;
|
|
15
17
|
themeMode?: ThemeMode;
|
|
16
|
-
|
|
17
|
-
};
|
|
18
|
+
} & Pick<TextEditorProps, 'placeholder' | 'lineWrapping'>;
|
|
18
19
|
|
|
19
|
-
export const basicBundle = ({
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
export const basicBundle = ({
|
|
21
|
+
themeMode,
|
|
22
|
+
placeholder: _placeholder,
|
|
23
|
+
lineWrapping = true,
|
|
24
|
+
}: BasicBundleOptions): Extension[] => [
|
|
25
|
+
lineWrapping ? EditorView.lineWrapping : [],
|
|
22
26
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
// https://codemirror.net/docs/ref/#codemirror.minimalSetup
|
|
28
|
+
bracketMatching(),
|
|
29
|
+
closeBrackets(),
|
|
30
|
+
drawSelection(),
|
|
31
|
+
highlightActiveLine(),
|
|
32
|
+
history(),
|
|
33
|
+
_placeholder ? placeholder(_placeholder) : [],
|
|
29
34
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
// https://github.com/codemirror/theme-one-dark
|
|
36
|
+
themeMode === 'dark' ? syntaxHighlighting(oneDarkHighlightStyle) : syntaxHighlighting(defaultHighlightStyle),
|
|
37
|
+
];
|