@zodiac-ui/editor
Version:
A rich text editor for Angular based on `@atlaskit/editor-core`.
44 lines • 6.38 kB
JavaScript
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==