개요
Unwrap operation은 래퍼 노드를 제거하고 자식을 부모 레벨로 승격합니다. 링크 서식 제거 또는 목록 항목을 단락으로 변환할 때 일반적으로 사용됩니다.
인터페이스
interface UnwrapOperation extends Operation {
type: 'unwrap';
path: Path; // 래퍼 노드 경로
wrapperType?: string; // 풀 래퍼 타입 (검증용)
preservedWrapper?: Node; // undo를 위해 래퍼 저장
}사용법
// 링크 풀기
function unwrapLink(editor: Editor, linkPath: Path) {
const linkNode = editor.getNodeAtPath(linkPath);
const operation: UnwrapOperation = {
type: 'unwrap',
path: linkPath,
wrapperType: 'link',
preservedWrapper: linkNode
};
editor.applyOperation(operation);
}
// 목록 항목 풀기
function unwrapListItem(editor: Editor, itemPath: Path) {
const itemNode = editor.getNodeAtPath(itemPath);
const operation: UnwrapOperation = {
type: 'unwrap',
path: itemPath,
wrapperType: 'listItem',
preservedWrapper: itemNode
};
editor.applyOperation(operation);
}리버스 Operation
Unwrap의 리버스 Operation은 wrap입니다:
function getInverse(operation: UnwrapOperation): WrapOperation {
return {
type: 'wrap',
path: operation.path,
wrapper: operation.preservedWrapper!
};
}