From bc55e975454bb03bde8973cea0abcc95bdb91153 Mon Sep 17 00:00:00 2001 From: Jon Bake Date: Sat, 18 Jun 2022 12:02:05 -0500 Subject: [PATCH 1/2] Fixes #681 - Add font awesome CSS to exported SVG --- src/lib/components/actions.svelte | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/lib/components/actions.svelte b/src/lib/components/actions.svelte index 9f5f72bd..ed3d8cfd 100644 --- a/src/lib/components/actions.svelte +++ b/src/lib/components/actions.svelte @@ -14,7 +14,7 @@ svg?.setAttribute('height', `${height}px`); svg?.setAttribute('width', `${width}px`); // Workaround https://stackoverflow.com/questions/28690643/firefox-error-rendering-an-svg-image-to-html5-canvas-with-drawimage if (!svg) { - svg = document.querySelector('#container svg'); + svg = getSvgEl(); } const svgString = svg.outerHTML .replaceAll('
', '
') @@ -24,7 +24,7 @@ const exportImage = (event: Event, exporter: Exporter) => { const canvas: HTMLCanvasElement = document.createElement('canvas'); - const svg: HTMLElement = document.querySelector('#container svg'); + const svg: HTMLElement = getSvgEl(); const box: DOMRect = svg.getBoundingClientRect(); canvas.width = box.width; canvas.height = box.height; @@ -50,6 +50,22 @@ event.preventDefault(); }; + const getSvgEl = () => { + const svgEl: HTMLElement = document + .querySelector('#container svg') + .cloneNode(true) as HTMLElement; + const fontAwesomeCdnUrl = Array.from(document.head.getElementsByTagName('link')) + .map((l) => l.href) + .find((h) => h && h.includes('font-awesome')); + if (fontAwesomeCdnUrl == null) { + return svgEl; + } + const styleEl = document.createElement('style'); + styleEl.innerText = `@import url("${fontAwesomeCdnUrl}");'`; + svgEl.prepend(styleEl); + return svgEl; + }; + const simulateDownload = (download: string, href: string): void => { const a = document.createElement('a'); a.download = download; From af5caacc1a869b418ba5abfde6505bee5b4f36c0 Mon Sep 17 00:00:00 2001 From: sidharthv96 Date: Wed, 22 Jun 2022 16:58:53 +0000 Subject: [PATCH 2/2] Update Browserslist --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index c5bd6430..7b31deb9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -728,9 +728,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001335: - version "1.0.30001356" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001356.tgz" - integrity sha512-/30854bktMLhxtjieIxsrJBfs2gTM1pel6MXKF3K+RdIVJZcsn2A2QdhsuR4/p9+R204fZw0zCBBhktX8xWuyQ== + version "1.0.30001358" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001358.tgz" + integrity sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw== caseless@~0.12.0: version "0.12.0"