setup() {
this.elem = this.$el;
- this.editArea = this.$refs.editArea;
+ this.editContainer = this.$refs.editContainer;
+ this.input = this.$refs.input;
+
+ /** @var {SimpleWysiwygEditorInterface|null} */
+ this.editor = null;
+
+ const translations = {
+ ...window.editor_translations,
+ imageUploadErrorText: this.$opts.imageUploadErrorText,
+ serverUploadLimitText: this.$opts.serverUploadLimitText,
+ };
window.importVersioned('wysiwyg').then(wysiwyg => {
- wysiwyg.createPageEditorInstance(this.editArea);
+ const editorContent = this.input.value;
+ this.editor = wysiwyg.createPageEditorInstance(this.editContainer, editorContent, {
+ drawioUrl: this.getDrawIoUrl(),
+ pageId: Number(this.$opts.pageId),
+ darkMode: document.documentElement.classList.contains('dark-mode'),
+ textDirection: this.$opts.textDirection,
+ translations,
+ });
+ window.wysiwyg = this.editor;
+ });
+
+ let handlingFormSubmit = false;
+ this.input.form.addEventListener('submit', event => {
+ if (!this.editor) {
+ return;
+ }
+
+ if (!handlingFormSubmit) {
+ event.preventDefault();
+ handlingFormSubmit = true;
+ this.editor.getContentAsHtml().then(html => {
+ this.input.value = html;
+ setTimeout(() => {
+ this.input.form.requestSubmit();
+ }, 5);
+ });
+ } else {
+ handlingFormSubmit = false;
+ }
});
}
/**
* Get the content of this editor.
* Used by the parent page editor component.
- * @return {{html: String}}
+ * @return {Promise<{html: String}>}
*/
- getContent() {
- // TODO - Update
+ async getContent() {
return {
- html: this.editor.getContent(),
+ html: await this.editor.getContentAsHtml(),
};
}