@atlaskit/editor-plugin-code-block-advanced
Version:
CodeBlockAdvanced plugin for @atlaskit/editor-core
30 lines (26 loc) • 848 B
text/typescript
import type { Extension } from '@codemirror/state';
import { EditorView as CodeMirror } from '@codemirror/view';
import type { ExtractInjectionAPI } from '@atlaskit/editor-common/types';
import type { CodeBlockAdvancedPlugin } from '../../codeBlockAdvancedPluginType';
/**
* Hides selection marker decoration when focused on codemirror editor and re-enables on blur
*
* @param api
* @returns CodeMirror Extension
* @example
*/
export const manageSelectionMarker = (
api: ExtractInjectionAPI<CodeBlockAdvancedPlugin> | undefined,
): Extension => {
let decoHide: (() => void) | undefined;
return CodeMirror.focusChangeEffect.of((_state, focusing) => {
if (focusing) {
api?.selectionMarker?.actions.queueHideDecoration((hideDecoration) => {
decoHide = hideDecoration;
});
} else {
decoHide?.();
}
return null;
});
};