Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
_initEditorWithEventEmitters () {
this.$emit('willCreateEditor')
this.editor = new Mobiledoc.Editor(this.editorOptions)
if (this.enableEditing === false) this.toggleEditMode()
this.$emit('didCreateEditor', this.editor)
this.editor.inputModeDidChange(() => {
this._updateActiveMarkupTags()
this._updateActiveSectionTags()
})
this.editor.postDidChange(() => {
// serialize the editor's post to the mobiledoc version format
// any cards or atoms present in doc, will be ommited
const mobiledoc = this.editor.serialize(this.serializeVersion)
this.$emit('postWasUpdated', mobiledoc)
})
// Parse pasted/initial templates and convert to tag atoms
// see https://github.com/bustlelabs/mobiledoc-kit#dom-parsing-hooks
let pastedTextPlugin = function(node, builder, { addMarkerable, nodeFinished }) {
if (node.nodeType === Node.TEXT_NODE) {
let text = node.textContent;
let markerables = createMarkerables(text, builder);
markerables.forEach((markerable) => {
addMarkerable(markerable);
});
nodeFinished();
}
};
let editor = new Mobiledoc.Editor({
html: template,
autofocus: false,
parserPlugins: [pastedTextPlugin],
atoms: [
// tag atom implementation for the editor
{
name: 'tag',
type: 'dom',
render: ({ value, env, payload }) => {
// Remove select when tag erased
// TODO: Only remove select if open for current tag, might not be able to get into this state any way
env.onTeardown(() => {
closeAllDropdowns(true);
});
let container = document.createElement('span');
let inner = document.createElement('span');
mobiledoc,
// temp
cards: createCard(editorCards.concat(userCards)),
atoms: [{
name: 'soft-return',
type: 'dom',
render() {
return document.createElement('br');
}
}],
spellcheck: true,
autofocus: this.get('shouldFocusEditor'),
placeholder: 'Click here to start ...'
};
this.editor = new Mobiledoc.Editor(options);
},
componentWillMount() {
if (typeof this.props.willCreateEditor === 'function') {
this.props.willCreateEditor();
}
const { atoms, autofocus, cardProps, cards, html, placeholder, serializeVersion, spellcheck } = this.props;
const mobiledoc = this.props.mobiledoc || (html ? undefined : EMPTY_MOBILEDOC);
const editorOptions = { ...this.props.options, atoms, autofocus, cardOptions: { cardProps }, cards, html, mobiledoc, placeholder, serializeVersion, spellcheck };
this.editor = new Mobiledoc.Editor(editorOptions);
this.editor.inputModeDidChange(this.setActiveTags);
if (typeof this.props.onChange === 'function') {
this.editor.postDidChange(() => {
const mobiledoc = this.editor.serialize(this.props.serializeVersion);
this.props.onChange(mobiledoc);
});
}
if (typeof this.props.didCreateEditor === 'function') {
this.props.didCreateEditor(this.editor);
}
}