UNPKG

@atlaskit/editor-plugin-selection

Version:

Selection plugin for @atlaskit/editor-core

46 lines 1.54 kB
import { SafePlugin } from '@atlaskit/editor-common/safe-plugin'; import { DecorationSet } from '@atlaskit/editor-prosemirror/view'; import { markBoundaryCursorPluginKey } from './mark-boundary-cursor-plugin-key'; import { createMarkBoundaryCursorDecoration } from './mark-boundary-cursor/ui/mark-boundary-cursor-decoration'; import { getActiveMarksSide } from './mark-boundary-cursor/utils/active-marks-side'; export const createMarkBoundaryCursorPlugin = () => { return new SafePlugin({ key: markBoundaryCursorPluginKey, state: { init: () => ({ decorations: DecorationSet.empty }), apply(tr, currentState) { const { selection, storedMarks, doc, selectionSet, storedMarksSet, docChanged } = tr; if (!selectionSet && !storedMarksSet && !docChanged) { return currentState; } const side = getActiveMarksSide({ selection, storedMarks }); if (!side) { return { decorations: DecorationSet.empty }; } return { decorations: DecorationSet.create(doc, [createMarkBoundaryCursorDecoration(selection.head, side)]) }; } }, props: { decorations: state => { var _markBoundaryCursorPl; return (_markBoundaryCursorPl = markBoundaryCursorPluginKey.getState(state)) === null || _markBoundaryCursorPl === void 0 ? void 0 : _markBoundaryCursorPl.decorations; } } }); };