jodit
Version:
Jodit is awesome and usefully wysiwyg editor with filebrowser
61 lines (56 loc) • 1.67 kB
text/typescript
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Licensed under GNU General Public License version 2 or later or a commercial license or MIT;
* For GPL see LICENSE-GPL.txt in the project root for license information.
* For MIT see LICENSE-MIT.txt in the project root for license information.
* For commercial licenses see https://xdsoft.net/jodit/commercial/
* Copyright (c) 2013-2019 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
*/
import { Config } from '../Config';
import { Dom } from '../modules/Dom';
import { setTimeout } from '../modules/helpers/async';
import { IJodit } from '../types';
declare module '../Config' {
interface Config {
autofocus: boolean;
}
}
/**
* @property{boolean} autofocus=false true After loading the page into the editor once the focus is set
*/
Config.prototype.autofocus = false;
/**
* Autofocus plugin - set focus inside the editor after reload
*
* @param {Jodit} editor
*/
export function autofocus(editor: IJodit) {
let timeout: number;
editor.events
.on('afterInit', () => {
if (editor.options.autofocus) {
if (editor.defaultTimeout) {
timeout = setTimeout(editor.selection.focus, 300);
} else {
editor.selection.focus();
}
}
})
.on('mousedown', (e: MouseEvent) => {
if (
editor.isEditorMode() &&
e.target &&
Dom.isBlock(e.target as Node, editor.editorWindow) &&
!(e.target as HTMLElement).childNodes.length
) {
if (editor.editor === e.target) {
editor.selection.focus();
} else {
editor.selection.setCursorIn(e.target as HTMLElement);
}
}
})
.on('beforeDestruct', () => {
clearTimeout(timeout);
});
}