개요
Split node operation은 특정 위치에서 노드를 두 개의 별도 노드로 나눕니다. 사용자가 Enter 키를 눌러 단락을 분할할 때 일반적으로 사용됩니다.
인터페이스
interface SplitNodeOperation extends Operation {
type: 'splitNode';
path: Path;
position: number; // 분할할 노드 내 위치
depth?: number; // 분할 깊이 (기본값: 0, 최상위 레벨에서 분할)
}사용법
// 커서 위치에서 단락 분할
function splitParagraph(editor: Editor, position: Path) {
const operation: SplitNodeOperation = {
type: 'splitNode',
path: position,
position: position[1] // 단락 내 오프셋
};
editor.applyOperation(operation);
}
// 특정 오프셋에서 분할
function splitAtOffset(editor: Editor, nodePath: Path, offset: number) {
const operation: SplitNodeOperation = {
type: 'splitNode',
path: nodePath,
position: offset
};
editor.applyOperation(operation);
}리버스 Operation
Split node의 리버스 Operation은 merge nodes입니다:
function getInverse(operation: SplitNodeOperation): MergeNodesOperation {
return {
type: 'mergeNodes',
path: operation.path,
targetPath: [operation.path[0] + 1], // 다음 형제
position: operation.position
};
}