*/
editor = null;
- callback = null;
+ /**
+ * @type {?Function}
+ */
+ saveCallback = null;
+
+ /**
+ * @type {?Function}
+ */
+ cancelCallback = null;
history = {};
}
save() {
- if (this.callback) {
- this.callback(this.editor.getContent(), this.languageInput.value);
+ if (this.saveCallback) {
+ this.saveCallback(this.editor.getContent(), this.languageInput.value);
}
this.hide();
}
- async open(code, language, callback) {
+ async open(code, language, saveCallback, cancelCallback) {
this.languageInput.value = language;
- this.callback = callback;
+ this.saveCallback = saveCallback;
+ this.cancelCallback = cancelCallback;
await this.show();
this.languageInputChange(language);
this.editor.focus();
}, () => {
this.addHistory();
+ if (this.cancelCallback) {
+ this.cancelCallback();
+ }
});
}
* @param {function(string, string)} callback (Receives (code: string,language: string)
*/
function showPopup(editor, code, language, callback) {
- window.$components.first('code-editor').open(code, language, (newCode, newLang) => {
+ /** @var {CodeEditor} codeEditor * */
+ const codeEditor = window.$components.first('code-editor');
+ const bookMark = editor.selection.getBookmark();
+ codeEditor.open(code, language, (newCode, newLang) => {
callback(newCode, newLang);
editor.focus();
+ editor.selection.moveToBookmark(bookMark);
+ }, () => {
+ editor.focus();
+ editor.selection.moveToBookmark(bookMark);
});
}