Optional builder for fully custom all-day chip widgets (#80) — the same
hybrid overlay as entryBuilder, applied to the all-day band. When
non-null the planner layers a widget overlay over the band canvas and calls
this for every (on-screen) all-day chip, sizing/positioning the returned
widget at the chip's current on-screen rect so it tracks the band's
horizontal scroll; the band canvas then skips painting the default chip
bodies (the per-chip accessibility semantics stay intact).
Optional public handle for driving and observing zoom from outside the
widget (#76) — e.g. a host's own zoom toolbar. When supplied it attaches to
the planner's internal zoom/scroll controller for the life of this widget
(and across a controller swap); when null, zoom is driven only by the
built-in controls, pinch and Ctrl+wheel, exactly as before. Pair it with
config.showZoomControls: false to replace the on-canvas buttons.
Optional builder for fully custom day/column header widgets (#79). When
non-null the planner replaces the painted DateRow text with a row of
host-built header widgets — one per config.labels entry — each sized to
the column's blockWidth and the date row's height, and offset by the live
horizontal scroll so the headers track the day-columns below as the user
pans (rebuilt on the same triggerUpdate the row repaints on).
Optional builder for fully custom timed-event widgets (#78). When non-null
the planner layers a widget overlay over the events canvas and calls this
for every on-screen event, sizing/positioning the returned widget at the
event's current on-screen rect so it tracks scroll, zoom and drag in
lockstep with the grid; the canvas then skips painting the default event
bodies (the grid lines and accessibility semantics stay intact).