substance
Version:
Substance is a JavaScript library for web-based content editing. It provides building blocks for realizing custom text editors and web-based publishing system. It is developed to power our online editing platform [Substance](http://substance.io).
39 lines (35 loc) • 1.21 kB
JavaScript
import { documentHelpers } from '../model'
import ApiExtension from './ApiExtension'
export default class ReferenceApi extends ApiExtension {
/**
* @param {object} data from ReferenceModal state
*/
addReference (data, options) {
return this.insertReference(data, null, options)
}
/**
* @param {object} data from ReferenceModal state
* @param {object} currentReference
*/
insertReference (data, currentReference, options = {}) {
const editorSession = this.api.getEditorSession()
const doc = editorSession.getDocument()
const root = doc.root
let insertPos = root.references.length
if (currentReference) {
insertPos = currentReference.getPosition() + 1
}
const nodeData = Object.assign({}, data, { type: 'reference' })
return this.api.insertNode([root.id, 'references'], insertPos, nodeData, options)
}
/**
* @param {string} citationId
* @param {object} data from CitationModal state
*/
updateCitation (citationId, data) {
this.api.getEditorSession().transaction(tx => {
documentHelpers.updateProperty(tx, [citationId, 'references'], data.references)
this.api._selectInlineNode(tx, tx.get(citationId))
})
}
}