UNPKG

@zodiac-ui/editor

Version:

A rich text editor for Angular based on `@atlaskit/editor-core`.

44 lines 6.38 kB
import { PluginKey, Plugin } from 'prosemirror-state'; export const focusStateKey = new PluginKey('focusStatePlugin'); export const focusHandlerPlugin = (dispatch) => new Plugin({ key: focusStateKey, state: { init: () => true, apply: (tr, wasEditorFocused) => { const meta = tr.getMeta(focusStateKey); if (typeof meta === 'boolean') { if (meta !== wasEditorFocused) { dispatch(focusStateKey, meta); return meta; } } return wasEditorFocused; }, }, props: { handleDOMEvents: { click: view => { const isEditorFocused = focusStateKey.getState(view.state); if (!isEditorFocused) { view.dispatch(view.state.tr.setMeta(focusStateKey, view.hasFocus())); } return false; }, focus: view => { const isEditorFocused = focusStateKey.getState(view.state); if (!isEditorFocused) { view.dispatch(view.state.tr.setMeta(focusStateKey, true)); } return false; }, blur: view => { const isEditorFocused = focusStateKey.getState(view.state); if (isEditorFocused) { view.dispatch(view.state.tr.setMeta(focusStateKey, false)); } return false; }, }, }, }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B6b2RpYWMtdWkvZWRpdG9yLyIsInNvdXJjZXMiOlsicGx1Z2lucy9iYXNlL3BtL2ZvY3VzLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUd0RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUUvRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFFBQWtCLEVBQUUsRUFBRSxDQUNyRCxJQUFJLE1BQU0sQ0FBQztJQUNQLEdBQUcsRUFBRSxhQUFhO0lBQ2xCLEtBQUssRUFBRTtRQUNILElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO1FBQ2hCLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxnQkFBeUIsRUFBRSxFQUFFO1lBQ3JDLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFZLENBQUM7WUFDbEQsSUFBSSxPQUFPLElBQUksS0FBSyxTQUFTLEVBQUU7Z0JBQzNCLElBQUksSUFBSSxLQUFLLGdCQUFnQixFQUFFO29CQUMzQixRQUFRLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUM5QixPQUFPLElBQUksQ0FBQztpQkFDZjthQUNKO1lBQ0QsT0FBTyxnQkFBZ0IsQ0FBQztRQUM1QixDQUFDO0tBQ0o7SUFDRCxLQUFLLEVBQUU7UUFDSCxlQUFlLEVBQUU7WUFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ1YsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxlQUFlLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FDeEQsQ0FBQztpQkFDTDtnQkFDRCxPQUFPLEtBQUssQ0FBQztZQUNqQixDQUFDO1lBQ0QsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNWLE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLENBQUMsZUFBZSxFQUFFO29CQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDN0Q7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUNELElBQUksRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDVCxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxlQUFlLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2lCQUM5RDtnQkFDRCxPQUFPLEtBQUssQ0FBQztZQUNqQixDQUFDO1NBQ0o7S0FDSjtDQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsdWdpbktleSwgUGx1Z2luIH0gZnJvbSAncHJvc2VtaXJyb3Itc3RhdGUnO1xyXG5pbXBvcnQgeyBEaXNwYXRjaCB9IGZyb20gXCIuLi8uLi8uLi9saWIvaW50ZXJmYWNlcy9lZGl0b3ItY29uZmlnXCJcclxuXHJcbmV4cG9ydCBjb25zdCBmb2N1c1N0YXRlS2V5ID0gbmV3IFBsdWdpbktleSgnZm9jdXNTdGF0ZVBsdWdpbicpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGZvY3VzSGFuZGxlclBsdWdpbiA9IChkaXNwYXRjaDogRGlzcGF0Y2gpID0+XHJcbiAgICBuZXcgUGx1Z2luKHtcclxuICAgICAgICBrZXk6IGZvY3VzU3RhdGVLZXksXHJcbiAgICAgICAgc3RhdGU6IHtcclxuICAgICAgICAgICAgaW5pdDogKCkgPT4gdHJ1ZSxcclxuICAgICAgICAgICAgYXBwbHk6ICh0ciwgd2FzRWRpdG9yRm9jdXNlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWV0YSA9IHRyLmdldE1ldGEoZm9jdXNTdGF0ZUtleSkgYXMgYm9vbGVhbjtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbWV0YSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1ldGEgIT09IHdhc0VkaXRvckZvY3VzZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2goZm9jdXNTdGF0ZUtleSwgbWV0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZXRhO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB3YXNFZGl0b3JGb2N1c2VkO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgICAgaGFuZGxlRE9NRXZlbnRzOiB7XHJcbiAgICAgICAgICAgICAgICBjbGljazogdmlldyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNFZGl0b3JGb2N1c2VkID0gZm9jdXNTdGF0ZUtleS5nZXRTdGF0ZSh2aWV3LnN0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRWRpdG9yRm9jdXNlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3LmRpc3BhdGNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5zdGF0ZS50ci5zZXRNZXRhKGZvY3VzU3RhdGVLZXksIHZpZXcuaGFzRm9jdXMoKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmb2N1czogdmlldyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNFZGl0b3JGb2N1c2VkID0gZm9jdXNTdGF0ZUtleS5nZXRTdGF0ZSh2aWV3LnN0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRWRpdG9yRm9jdXNlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3LmRpc3BhdGNoKHZpZXcuc3RhdGUudHIuc2V0TWV0YShmb2N1c1N0YXRlS2V5LCB0cnVlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBibHVyOiB2aWV3ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0VkaXRvckZvY3VzZWQgPSBmb2N1c1N0YXRlS2V5LmdldFN0YXRlKHZpZXcuc3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0VkaXRvckZvY3VzZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5kaXNwYXRjaCh2aWV3LnN0YXRlLnRyLnNldE1ldGEoZm9jdXNTdGF0ZUtleSwgZmFsc2UpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgfSk7XHJcbiJdfQ==