Skip to content

Commit e330ffd

Browse files
committed
feat: add default schema to ProsemirrorTransformer and default extensions to TiptapTransformer, making both parameters in toYdoc optional
1 parent 0b0b76d commit e330ffd

2 files changed

Lines changed: 32 additions & 6 deletions

File tree

packages/transformer/src/Prosemirror.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,19 @@ import { Transformer } from './types'
55

66
class Prosemirror implements Transformer {
77

8+
defaultSchema: Schema = new Schema({
9+
nodes: {
10+
text: {},
11+
doc: { content: 'text*' },
12+
},
13+
})
14+
15+
schema(schema: Schema): Prosemirror {
16+
this.defaultSchema = schema
17+
18+
return this
19+
}
20+
821
fromYdoc(document: Doc, fieldName?: string | Array<string>): any {
922
const data = {}
1023

@@ -26,17 +39,17 @@ class Prosemirror implements Transformer {
2639
return data
2740
}
2841

29-
toYdoc(document: any, schema: Schema, fieldName: string | Array<string> = 'prosemirror'): Doc {
42+
toYdoc(document: any, schema?: Schema, fieldName: string | Array<string> = 'prosemirror'): Doc {
3043
// allow a single field name
3144
if (typeof fieldName === 'string') {
32-
return prosemirrorJSONToYDoc(schema, document, fieldName)
45+
return prosemirrorJSONToYDoc(schema || this.defaultSchema, document, fieldName)
3346
}
3447

3548
const ydoc = new Doc()
3649

3750
fieldName.forEach(field => {
3851
const update = encodeStateAsUpdate(
39-
prosemirrorJSONToYDoc(schema, document, field),
52+
prosemirrorJSONToYDoc(schema || this.defaultSchema, document, field),
4053
)
4154

4255
applyUpdate(ydoc, update)

packages/transformer/src/Tiptap.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,30 @@
11
import { Doc } from 'yjs'
22
import { Extensions } from '@tiptap/core/dist/packages/core/src/types'
33
import { getSchema } from '@tiptap/core'
4+
import { defaultExtensions } from '@tiptap/starter-kit'
45
import { ProsemirrorTransformer } from './Prosemirror'
56
import { Transformer } from './types'
67

7-
class Tiptap implements Transformer {
8+
export class Tiptap implements Transformer {
9+
10+
defaultExtensions: Extensions = defaultExtensions()
11+
12+
extensions(extensions: Extensions): Tiptap {
13+
this.defaultExtensions = extensions
14+
15+
return this
16+
}
817

918
fromYdoc(document: Doc, fieldName?: string | Array<string>): any {
1019
return ProsemirrorTransformer.fromYdoc(document, fieldName)
1120
}
1221

13-
toYdoc(document: any, extensions: Extensions, fieldName: string | Array<string> = 'default'): Doc {
14-
return ProsemirrorTransformer.toYdoc(document, getSchema(extensions), fieldName)
22+
toYdoc(document: any, extensions?: Extensions, fieldName: string | Array<string> = 'default'): Doc {
23+
return ProsemirrorTransformer.toYdoc(
24+
document,
25+
getSchema(extensions || this.defaultExtensions),
26+
fieldName,
27+
)
1528
}
1629

1730
}

0 commit comments

Comments
 (0)