{# Chart-readiness wrapper for Chart.js. Templates that emit + new Chart() use fsReportNewChart(ctx, config) instead of new Chart(ctx, config). The wrapper: - calls fsBeaconAcquire() before constructing the chart - enforces options.animation = false per chart (load-order independent) - calls fsBeaconRelease() after two requestAnimationFrame ticks (layout + paint guaranteed complete) fsBeaconAcquire/Release are provided by _ready_beacon.html, the shared coordinator that owns window.fsReportReady AND the empty-data safety net. This wrapper does NOT own that flag and does NOT need its own safety net — the beacon's safety net covers the case where no chart ever constructs. ECharts uses the same beacon via _echarts_ready.html. #} {% include "_ready_beacon.html" %}