Split Node Operation

특정 위치에서 노드를 두 개의 노드로 분할합니다.

개요

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
  };
}