feat: Dynamically load jspdf and html2canvas-pro to improve first-screen loading speed

This commit is contained in:
Shirasawa 2025-09-17 07:52:12 +00:00
parent 980019bb50
commit df433f852f
4 changed files with 20 additions and 12 deletions

View file

@ -6,9 +6,6 @@
import fileSaver from 'file-saver'; import fileSaver from 'file-saver';
const { saveAs } = fileSaver; const { saveAs } = fileSaver;
import jsPDF from 'jspdf';
import html2canvas from 'html2canvas-pro';
import { downloadChatAsPDF } from '$lib/apis/utils'; import { downloadChatAsPDF } from '$lib/apis/utils';
import { copyToClipboard, createMessagesList } from '$lib/utils'; import { copyToClipboard, createMessagesList } from '$lib/utils';
@ -75,6 +72,11 @@
}; };
const downloadPdf = async () => { const downloadPdf = async () => {
const [{ default: jsPDF }, { default: html2canvas }] = await Promise.all([
import('jspdf'),
import('html2canvas-pro')
]);
if ($settings?.stylizedPdfExport ?? true) { if ($settings?.stylizedPdfExport ?? true) {
showFullMessages = true; showFullMessages = true;
await tick(); await tick();

View file

@ -6,9 +6,6 @@
import fileSaver from 'file-saver'; import fileSaver from 'file-saver';
const { saveAs } = fileSaver; const { saveAs } = fileSaver;
import jsPDF from 'jspdf';
import html2canvas from 'html2canvas-pro';
const dispatch = createEventDispatcher(); const dispatch = createEventDispatcher();
import Dropdown from '$lib/components/common/Dropdown.svelte'; import Dropdown from '$lib/components/common/Dropdown.svelte';
@ -91,6 +88,11 @@
return; return;
} }
const [{ default: jsPDF }, { default: html2canvas }] = await Promise.all([
import('jspdf'),
import('html2canvas-pro')
]);
if ($settings?.stylizedPdfExport ?? true) { if ($settings?.stylizedPdfExport ?? true) {
showFullMessages = true; showFullMessages = true;
await tick(); await tick();

View file

@ -4,9 +4,6 @@
import fileSaver from 'file-saver'; import fileSaver from 'file-saver';
const { saveAs } = fileSaver; const { saveAs } = fileSaver;
import jsPDF from 'jspdf';
import html2canvas from 'html2canvas-pro';
const i18n = getContext('i18n'); const i18n = getContext('i18n');
import { marked } from 'marked'; import { marked } from 'marked';
@ -575,6 +572,11 @@ ${content}
const downloadPdf = async (note) => { const downloadPdf = async (note) => {
try { try {
const [{ default: jsPDF }, { default: html2canvas }] = await Promise.all([
import('jspdf'),
import('html2canvas-pro')
]);
// Define a fixed virtual screen size // Define a fixed virtual screen size
const virtualWidth = 1024; // Fixed width (adjust as needed) const virtualWidth = 1024; // Fixed width (adjust as needed)
const virtualHeight = 1400; // Fixed height (adjust as needed) const virtualHeight = 1400; // Fixed height (adjust as needed)

View file

@ -5,9 +5,6 @@
const { saveAs } = fileSaver; const { saveAs } = fileSaver;
import jsPDF from 'jspdf';
import html2canvas from 'html2canvas-pro';
import dayjs from '$lib/dayjs'; import dayjs from '$lib/dayjs';
import duration from 'dayjs/plugin/duration'; import duration from 'dayjs/plugin/duration';
import relativeTime from 'dayjs/plugin/relativeTime'; import relativeTime from 'dayjs/plugin/relativeTime';
@ -137,6 +134,11 @@
const downloadPdf = async (note) => { const downloadPdf = async (note) => {
try { try {
const [{ default: jsPDF }, { default: html2canvas }] = await Promise.all([
import('jspdf'),
import('html2canvas-pro')
]);
// Define a fixed virtual screen size // Define a fixed virtual screen size
const virtualWidth = 1024; // Fixed width (adjust as needed) const virtualWidth = 1024; // Fixed width (adjust as needed)
const virtualHeight = 1400; // Fixed height (adjust as needed) const virtualHeight = 1400; // Fixed height (adjust as needed)