import React, { CSSProperties, useMemo } from 'react'; import { useNode, UserComponent } from '@craftjs/core'; import DOMPurify from 'dompurify'; import { stableHash } from '../../utils/escape'; import { scopeCss } from '../../utils/scope-css'; interface HtmlBlockProps { code: string; style?: CSSProperties; aiName?: string; node_id?: string; } // Task 24: widening the allow-list after a customer's broad HTML fixture // showed 38% of it silently deleted (tables losing colspan/rowspan/scope, //
//
/inline /
    flattened). The owner's call: // be generous -- this block is an explicit escape hatch and customers // reasonably expect it to render ordinary HTML, including forms. The four // non-negotiables (no