-
Notifications
You must be signed in to change notification settings - Fork 85
/
Copy pathInternalArticleDocument.js
86 lines (78 loc) · 1.87 KB
/
InternalArticleDocument.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import { Document, documentHelpers, EditingInterface } from 'substance'
import ArticleEditingImpl from './shared/ArticleEditingImpl'
import { DEFAULT_JATS_SCHEMA_ID } from './ArticleConstants'
export default class InternalArticleDocument extends Document {
getRootNode () {
return this.get('article')
}
createEditingInterface () {
return new EditingInterface(this, { editing: new ArticleEditingImpl() })
}
find (selector) {
return this.getRootNode().find(selector)
}
findAll (selector) {
return this.getRootNode().findAll(selector)
}
getTitle () {
this.resolve(['article', 'title'])
}
invert (change) {
let inverted = change.invert()
let info = inverted.info || {}
switch (change.info.action) {
case 'insertRows': {
info.action = 'deleteRows'
break
}
case 'deleteRows': {
info.action = 'insertRows'
break
}
case 'insertCols': {
info.action = 'deleteCols'
break
}
case 'deleteCols': {
info.action = 'insertCols'
break
}
default:
//
}
inverted.info = info
return inverted
}
// Overridden to retain the original docType
newInstance () {
let doc = super.newInstance()
doc.docType = this.docType
return doc
}
static createEmptyArticle (schema) {
let doc = new InternalArticleDocument(schema)
documentHelpers.createNodeFromJson(doc, {
type: 'article',
id: 'article',
metadata: {
type: 'metadata',
id: 'metadata',
permission: {
type: 'permission',
id: 'permission'
}
},
abstract: {
type: 'abstract',
id: 'abstract',
content: [{ type: 'paragraph' }]
},
body: {
type: 'body',
id: 'body'
}
})
doc.docType = DEFAULT_JATS_SCHEMA_ID
return doc
}
}