Newer
Older
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import React from 'react'
import ReactDOM from 'react-dom'
import { Alert } from 'react-bootstrap'
var Component = require('substance/ui/Component')
var Configurator = require('substance/packages/prose-editor/ProseEditorConfigurator')
var DocumentSession = require('substance/model/DocumentSession')
var Editor = require('./Editor')
var Importer = require('./SimpleEditorImporter')
var SimpleExporter = require('./SimpleEditorExporter')
import config from './config.js'
// import fixture from './fixture'
import './SimpleEditor.scss'
export default class SimpleEditor extends React.Component {
constructor (props) {
super(props)
this.save = this.save.bind(this)
}
createSession () {
var configurator = new Configurator().import(config)
configurator.setSaveHandler({
saveDocument: this.save
})
configurator.addImporter('prose-article', Importer)
const { fragment } = this.props
let source
if (fragment) { source = fragment.source }
var importer = configurator.createImporter('prose-article')
var doc = importer.importDocument(source)
var documentSession = new DocumentSession(doc)
return {
documentSession: documentSession,
configurator: configurator
}
}
save (source, changes, callback) {
const { onSave } = this.props
var exporter = new SimpleExporter()
onSave(exporter.exportDocument(source), callback)
}
componentDidMount () {
const { canEdit } = this.props
var el = ReactDOM.findDOMNode(this)
var session = this.createSession()
var documentSession = session.documentSession
var configurator = session.configurator
this.writer = Component.mount(Editor, {
book: this.props.book,
configurator: configurator,
containerId: 'body',
disabled: !canEdit, // set to true read only mode
documentSession: documentSession,
fragment: this.props.fragment,
updateComments: this.props.updateComments,
user: this.props.user
}, el)
}
// New props arrived, update the editor
// componentDidUpdate () {
// console.log('did update')
//
// var session = this.createSession()
// var documentSession = session.documentSession
// var configurator = session.configurator
//
// this.writer.extendProps({
// documentSession: documentSession,
// configurator: configurator
// })
//
// console.log(this.writer)
// }
//
// componentWillUnmount () {
// this.writer.dispose()
// }
render () {
const { canEdit } = this.props
let viewMode = !canEdit
? (
<Alert bsStyle="warning" className="view-mode">
Editor is in View Mode
</Alert>
)
: null
return (
<div className="editor-wrapper">
{viewMode}
</div>
)
}
}
SimpleEditor.propTypes = {
book: React.PropTypes.object.isRequired,
canEdit: React.PropTypes.bool,
fragment: React.PropTypes.object.isRequired,
onSave: React.PropTypes.func.isRequired,
updateComments: React.PropTypes.func.isRequired,
user: React.PropTypes.object.isRequired
}