849f4323304f8d4b08591c06b43d6403098ff30a
The canonical Craft.js state from real saves shows that layout shells (Section, BackgroundSection, HeroSimple, FeaturesGrid, ColumnLayout, CTASection, FormContainer, Navbar, Footer) all serialize with isCanvas:false. Only Container instances are canvases. The shells use internal <Element canvas id="..."> linkedNodes for their drop targets. Our previous CANVAS_TYPES set claimed all those shells were canvases, which made Craft.js's toNodeTree walker hit an uncaught Invariant — the shell asserted "I'm a canvas" but its render ignores data.nodes, so the walker would chase phantom children.
Description
Visual drag-and-drop website builder using GrapesJS
3.5 MiB
Languages
TypeScript
64.8%
HTML
16.1%
JavaScript
14.9%
CSS
3.2%
PHP
0.7%
Other
0.3%