github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/ui/dashboard/src/hooks/useTemplateRender.ts (about)

     1  import {
     2    KeyValuePairs,
     3    TemplatesMap,
     4  } from "../components/dashboards/common/types";
     5  import { renderInterpolatedTemplates } from "../utils/template";
     6  import { useCallback, useEffect, useState } from "react";
     7  
     8  const useTemplateRender = () => {
     9    const [jqWeb, setJqWeb] = useState<any | null>(null);
    10  
    11    // Dynamically import jq-web from its own bundle
    12    useEffect(() => {
    13      import("jq-web").then((m) => setJqWeb(m));
    14    }, []);
    15  
    16    const renderTemplates = useCallback(
    17      async (templates: TemplatesMap, data: KeyValuePairs[]) => {
    18        if (!jqWeb) {
    19          return [];
    20        }
    21        return renderInterpolatedTemplates(templates, data, jqWeb);
    22      },
    23      [jqWeb]
    24    );
    25  
    26    return {
    27      renderTemplates,
    28      ready: !!jqWeb,
    29    };
    30  };
    31  
    32  export default useTemplateRender;