UNPKG

@atlaskit/editor-plugin-focus

Version:

Focus plugin for @atlaskit/editor-core

42 lines 1.16 kB
import { SafePlugin } from '@atlaskit/editor-common/safe-plugin'; import { PluginKey } from '@atlaskit/editor-prosemirror/state'; export const key = new PluginKey('focusPluginHandler'); export const createPlugin = () => new SafePlugin({ key, state: { init() { return { hasFocus: false }; }, apply(tr, oldPluginState) { const meta = tr.getMeta(key); if (typeof meta === 'boolean') { if (meta !== oldPluginState.hasFocus) { return { hasFocus: meta }; } } return oldPluginState; } }, props: { handleDOMEvents: { focus: view => { const focusState = key.getState(view.state); if (!(focusState !== null && focusState !== void 0 && focusState.hasFocus)) { view.dispatch(view.state.tr.setMeta(key, true)); } return false; }, blur: view => { const focusState = key.getState(view.state); if (focusState !== null && focusState !== void 0 && focusState.hasFocus) { view.dispatch(view.state.tr.setMeta(key, false)); } return false; } } } });