bubkoo / html-to-image

✂️ Generates an image from a DOM node using HTML5 canvas and SVG.
MIT License
5.39k stars 503 forks source link

Add option to selectively include style properties when cloning element #436

Open Justineo opened 9 months ago

Justineo commented 9 months ago

Description

Added a new option includeStyleProperties which allows users to selectively copy computed style.

Motivation and Context

Currently we need to copy and serialize all the style properties in computedStyle for every node. In performance sensitive scenarios we would like to be able to minimize the time consumed when cloning node styles, for example:

Apart from performance use cases, as CSS custom properties are not iterable from CSSStyleDeclaration, they are not included in the snapshot image with current implementation (see #433). This new option may also help in this case as it allows users to manually specify custom properties that are used.

Types of changes

Self Check before Merge

vivcat[bot] commented 9 months ago

👋 @Justineo

💖 Thanks for opening this pull request! 💖

Please follow the contributing guidelines. And we use semantic commit messages to streamline the release process.

Examples of commit messages with semantic prefixes:

Things that will help get your PR across the finish line:

We get a lot of pull requests on this repo, so please be patient and we will get back to you as soon as we can.

codecov[bot] commented 9 months ago

Codecov Report

Patch coverage: 61.53% and no project coverage change.

Comparison is base (b751cbf) 62.93% compared to head (f9efd26) 62.93%. Report is 3 commits behind head on master.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## master #436 +/- ## ======================================= Coverage 62.93% 62.93% ======================================= Files 10 10 Lines 580 580 Branches 143 143 ======================================= Hits 365 365 Misses 151 151 Partials 64 64 ``` | [Files Changed](https://app.codecov.io/gh/bubkoo/html-to-image/pull/436?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=%E5%B4%96) | Coverage Δ | | |---|---|---| | [src/apply-style.ts](https://app.codecov.io/gh/bubkoo/html-to-image/pull/436?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=%E5%B4%96#diff-c3JjL2FwcGx5LXN0eWxlLnRz) | `100.00% <ø> (ø)` | | | [src/clone-pseudos.ts](https://app.codecov.io/gh/bubkoo/html-to-image/pull/436?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=%E5%B4%96#diff-c3JjL2Nsb25lLXBzZXVkb3MudHM=) | `29.16% <50.00%> (ø)` | | | [src/clone-node.ts](https://app.codecov.io/gh/bubkoo/html-to-image/pull/436?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=%E5%B4%96#diff-c3JjL2Nsb25lLW5vZGUudHM=) | `71.42% <54.54%> (ø)` | | | [src/util.ts](https://app.codecov.io/gh/bubkoo/html-to-image/pull/436?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=%E5%B4%96#diff-c3JjL3V0aWwudHM=) | `62.80% <77.77%> (ø)` | |

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

aeharding commented 7 months ago

@Justineo FWIW I was inspired by your PR and made a PR to modern-screenshot with this :)