Newer
Older
import {
ProseEditor,
Toolbar
} from 'substance'
import ContainerEditor from '../ContainerEditor'
import Comments from '../panes/Comments/CommentBoxList'
import CommentsProvider from '../panes/Comments/CommentsProvider'
import TrackChangesProvider from '../elements/track_change/TrackChangesProvider'
chris
committed
import { find, pickBy, isEmpty, values } from 'lodash'
didMount () {
const provider = this.getProvider()
this.editorSession.onUpdate('document', this.findNote, this)
}
const el = $$('div').addClass('sc-notes-editor')
let editor = this._renderEditor($$)
let SplitPane = this.componentRegistry.get('split-pane')
let ScrollPane = this.componentRegistry.get('scroll-pane')
let Overlay = this.componentRegistry.get('overlay')
var commentsPane = $$(Comments, {
fragment: this.props.fragment,
update: this.props.update,
user: this.props.user
}).addClass('sc-comments-pane')
const editorWithComments = $$(SplitPane, { sizeA: '80%', splitType: 'vertical' })
const contentPanel = $$(ScrollPane, {
scrollbarPosition: 'right'
})
.append(editorWithComments, $$(Overlay))
.attr('id', 'notes-editor-content-panel')
.ref('notesEditorContentPanel')
return el
}
_renderEditor ($$) {
const hasIsolatedNotes = this.getIsolatedNodes()
const disabled = (isEmpty(hasIsolatedNotes))
return $$(ContainerEditor, {
containerId: this.props.containerId,
editorSession: this.editorSession,
trackChanges: this.props.trackChanges,
trackChangesView: this.props.trackChangesView,
scrollTo (nodeId) {
chris
committed
const note = find(nodes, function (c) {
if (note) this.refs.notesEditorContentPanel.scrollTo(note.id)
}
const exporter = new SimpleExporter(this.props.configurator.config)
const convertedNode = exporter.convertNode(isolatedNote)
this.context.editorSession.transaction(function (tx, args) {
const path = [isolatedNote.calloutId, 'note-content']
})
}
findNote () {
const selection = this.editorSession.getSelection()
if (!selection.end) return
const isolatedNoteId = selection.end.path[0]
const isolatedNote = this.editorSession.document.get(isolatedNoteId)
return this.saveNote(isolatedNote)
}
getIsolatedNodes () {
const doc = this.editorSession.document
const nodes = doc.getNodes()
chris
committed
const entries = pickBy(nodes, function (value, key) {
chris
committed
return values(entries)
getProvider () {
return this.context.notesProvider
}
getInitialState () {
return {
trackChangesView: this.props.trackChangesView
}
getChildContext () {
const oldContext = super.getChildContext()
const doc = this.doc
// comments provider
const commentsProvider = new CommentsProvider(doc, {
commandManager: this.commandManager,
containerId: this.props.containerId,
controller: this,
editorSession: this.editorSession,
fragment: this.props.fragment,
surfaceManager: this.surfaceManager,
update: this.props.update
})
const trackChangesProvider = new TrackChangesProvider(doc, {
commandManager: this.commandManager,
containerId: this.props.containerId,
controller: this,
editorSession: this.editorSession,
surfaceManager: this.surfaceManager,
user: this.props.user
})
// attach all to context
return {
...oldContext,
commentsProvider,
trackChangesProvider
}
}