From 883c20efac957d7e37f716bf5cfe043d11a51e68 Mon Sep 17 00:00:00 2001 From: "metabase-bot[bot]" <109303359+metabase-bot[bot]@users.noreply.github.com> Date: Thu, 4 Apr 2024 19:08:02 +0000 Subject: [PATCH] asynchronously load libraries for png and pdf exports (#41036) (#41050) Co-authored-by: Aleksandr Lesnenko <alxnddr@users.noreply.github.com> --- frontend/src/metabase/visualizations/lib/save-chart-image.ts | 2 +- .../src/metabase/visualizations/lib/save-dashboard-pdf.ts | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/frontend/src/metabase/visualizations/lib/save-chart-image.ts b/frontend/src/metabase/visualizations/lib/save-chart-image.ts index 5324edafe02..99137432f10 100644 --- a/frontend/src/metabase/visualizations/lib/save-chart-image.ts +++ b/frontend/src/metabase/visualizations/lib/save-chart-image.ts @@ -1,5 +1,4 @@ import { css } from "@emotion/react"; -import html2canvas from "html2canvas"; export const SAVING_DOM_IMAGE_CLASS = "saving-dom-image"; export const SAVING_DOM_IMAGE_HIDDEN_CLASS = "saving-dom-image-hidden"; @@ -22,6 +21,7 @@ export const saveChartImage = async (selector: string, fileName: string) => { node.classList.add(SAVING_DOM_IMAGE_CLASS); + const { default: html2canvas } = await import("html2canvas"); const canvas = await html2canvas(node, { useCORS: true, }); diff --git a/frontend/src/metabase/visualizations/lib/save-dashboard-pdf.ts b/frontend/src/metabase/visualizations/lib/save-dashboard-pdf.ts index e2496076390..e41a36aa090 100644 --- a/frontend/src/metabase/visualizations/lib/save-dashboard-pdf.ts +++ b/frontend/src/metabase/visualizations/lib/save-dashboard-pdf.ts @@ -1,6 +1,3 @@ -import html2canvas from "html2canvas"; -import jspdf from "jspdf"; - import { color } from "metabase/lib/colors"; import { SAVING_DOM_IMAGE_CLASS } from "./save-chart-image"; @@ -17,6 +14,7 @@ export const saveDashboardPdf = async ( return; } + const { default: html2canvas } = await import("html2canvas"); const image = await html2canvas(node, { useCORS: true, onclone: (doc: Document, node: HTMLElement) => { @@ -35,6 +33,7 @@ export const saveDashboardPdf = async ( const pdfWidth = imageWidth; const pdfHeight = imageHeight + 80; + const { default: jspdf } = await import("jspdf"); const pdf = new jspdf({ unit: "px", hotfixes: ["px_scaling"], -- GitLab