/* Copyright 2026 Marimo. All rights reserved. */ import React from "react"; import type { TopLevelSpec } from "vega-lite"; import { LazyVegaEmbed } from "@/components/charts/lazy"; import { tooltipHandler } from "@/components/charts/tooltip"; import { getContainerWidth } from "@/plugins/impl/vega/utils"; import { useTheme } from "@/theme/useTheme"; import type { ErrorMessage } from "./chart-spec/spec"; import { augmentSpecWithData } from "./chart-spec/spec"; import { ChartInfoState } from "./components/chart-states"; export const LazyChart: React.FC<{ baseSpec: TopLevelSpec | ErrorMessage; data?: object[]; height: number; }> = ({ baseSpec, data, height }) => { const { theme } = useTheme(); if (!data) { return
No data
; } const renderChart = (specOrMessage: TopLevelSpec | ErrorMessage) => { if (typeof specOrMessage === "string") { return {specOrMessage}; } const spec = augmentSpecWithData(specOrMessage, data); return ( }> ); }; return (
{renderChart(baseSpec)}
); }; const LoadingChart = () => { return Loading chart...; };