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).
37 lines (33 loc) • 1.24 kB
JavaScript
import { documentHelpers } from '../model'
import ApiExtension from './ApiExtension'
export default class AffiliationApi extends ApiExtension {
/**
* @param {object} data from AffiliationModal state
*/
addAffiliation (data, options) {
return this.insertAffiliation(data, null, options)
}
insertAffiliation (data, currentAffiliation, options) {
const editorSession = this.api.getEditorSession()
const doc = editorSession.getDocument()
const root = doc.root
let insertPos = root.affiliations.length
if (currentAffiliation) {
insertPos = currentAffiliation.getPosition() + 1
}
const nodeData = Object.assign({}, data, { type: 'affiliation' })
return this.api.insertNode([root.id, 'affiliations'], insertPos, nodeData, options)
}
/**
* @param {string} affId
* @param {object} data from AffiliationModal state
*/
updateAffiliation (affId, data) {
this.api.getEditorSession().transaction(tx => {
documentHelpers.updateProperty(tx, [affId, 'name'], data.name)
documentHelpers.updateProperty(tx, [affId, 'city'], data.city)
documentHelpers.updateProperty(tx, [affId, 'country'], data.country)
this.api._selectItem(tx, tx.get(affId))
})
}
}