import type { Draft } from '@knapsack/utils'; import type { BlockConfig } from '@knapsack/types'; import { stripUnrecognizedTiptapContent, recognizedTiptapTypeNames, } from '@knapsack/tiptap-utils'; import { getTiptapContentFields } from './tiptap-content-fields.js'; /** * Per-block-shape-aware counterpart to `stripUnrecognizedTiptapContent` * (from `@knapsack/tiptap-utils`, which only knows JSONContent, not * BlockConfig). Mutates the draft in place, only touching fields that * actually had something unrecognized - never makes a patch if there's * nothing to strip. */ export function stripUnrecognizedTiptapContentFromBlock( block: Draft, recognizedTypeNames: ReadonlySet = recognizedTiptapTypeNames, ): void { for (const field of getTiptapContentFields(block)) { const { content, removedTypes } = stripUnrecognizedTiptapContent( field.content, recognizedTypeNames, ); if (removedTypes.length > 0) { field.setContent(content); } } }