Core conversion shared by the JSON entry points and the binder.
Single chart: identical output to the original single-panel adapter.
Multiple charts: one subplot per chart, positioned via computeChartGrid
(falls back to one row in insertion order when geometry is unavailable).
Charts yielding no supported layers are dropped — the core model crashes on
empty subplots or empty grid rows. When NO chart yields a layer, a
descriptive error is thrown instead of emitting the [[{ layers: [] }]]
shape, which would crash the core model at Controller construction.
Core conversion shared by the JSON entry points and the binder.
Single chart: identical output to the original single-panel adapter. Multiple charts: one subplot per chart, positioned via computeChartGrid (falls back to one row in insertion order when geometry is unavailable). Charts yielding no supported layers are dropped — the core model crashes on empty subplots or empty grid rows. When NO chart yields a layer, a descriptive error is thrown instead of emitting the
[[{ layers: [] }]]shape, which would crash the core model at Controller construction.