mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-16 17:46:45 +00:00
53 lines
1.1 KiB
TypeScript
53 lines
1.1 KiB
TypeScript
import { EditorSelection } from '@codemirror/state';
|
|
import type { Command } from '@codemirror/view';
|
|
|
|
const createAddCursor =
|
|
(direction: 'up' | 'down'): Command =>
|
|
(view) => {
|
|
const forward = direction === 'down';
|
|
|
|
let selection = view.state.selection;
|
|
|
|
for (const r of selection.ranges) {
|
|
selection = selection.addRange(view.moveVertically(r, forward));
|
|
}
|
|
|
|
view.dispatch({ selection });
|
|
|
|
return true;
|
|
};
|
|
|
|
export const addCursorUp = createAddCursor('up');
|
|
export const addCursorDown = createAddCursor('down');
|
|
|
|
export const addCursorAtEachSelectionLine: Command = (view) => {
|
|
let selection: EditorSelection | null = null;
|
|
for (const r of view.state.selection.ranges) {
|
|
if (r.empty) {
|
|
continue;
|
|
}
|
|
|
|
for (let pos = r.from; pos <= r.to; ) {
|
|
const line = view.state.doc.lineAt(pos);
|
|
|
|
const anchor = Math.min(line.to, r.to);
|
|
|
|
if (selection) {
|
|
selection = selection.addRange(EditorSelection.range(anchor, anchor));
|
|
} else {
|
|
selection = EditorSelection.single(anchor);
|
|
}
|
|
|
|
pos = line.to + 1;
|
|
}
|
|
}
|
|
|
|
if (!selection) {
|
|
return false;
|
|
}
|
|
|
|
view.dispatch({ selection });
|
|
|
|
return true;
|
|
};
|