summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/content_editor/services/content_editor.js
blob: e2188f5aa69bc8c917f01fa6d169c521077ea628 (plain)
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
/* eslint-disable no-underscore-dangle */
export class ContentEditor {
  constructor({ tiptapEditor, serializer }) {
    this._tiptapEditor = tiptapEditor;
    this._serializer = serializer;
  }

  get tiptapEditor() {
    return this._tiptapEditor;
  }

  async setSerializedContent(serializedContent) {
    const { _tiptapEditor: editor, _serializer: serializer } = this;

    editor.commands.setContent(
      await serializer.deserialize({ schema: editor.schema, content: serializedContent }),
    );
  }

  getSerializedContent() {
    const { _tiptapEditor: editor, _serializer: serializer } = this;

    return serializer.serialize({ schema: editor.schema, content: editor.getJSON() });
  }
}