[Enhancement] Support Cloning Custom Elements#129
Merged
Conversation
…ements Inspired by tsayen/dom-to-image#370 If element has `shadowRoot` property it is custom (and the shadow node is open) so fetch it's children. Closes bubkoo#128
Introduced by 021f124 Access to shadow node exposes the code to custom elements that break the current code. Was breaking because of elements without a style node. This commit fixes these bugs with simple, NON-BREAKING safety checks.
renders mathfield custom element https://github.com/arnog/mathlive
Contributor
|
| 💖 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. |
Contributor
Author
$ rimraf ./test/coverage
$ karma start
14 05 2021 22:51:59.774:INFO [compiler.karma-typescript]: Compiling project using Typescript 4.0.3
14 05 2021 22:52:04.811:INFO [compiler.karma-typescript]: Compiled 13 files in 4854 ms.
Since Acorn 8.0.0, options.ecmaVersion is required.
Defaulting to 2020, but this will stop working in the future.
14 05 2021 22:52:05.534:INFO [bundler.karma-typescript]: Bundled imports for 12 file(s) in 217 ms.
14 05 2021 22:52:08.487:INFO [karma-server]: Karma v5.2.3 server started at http://localhost:9876/
14 05 2021 22:52:08.489:INFO [launcher]: Launching browsers Chrome with concurrency unlimited
14 05 2021 22:52:08.504:INFO [launcher]: Starting browser Chrome
14 05 2021 22:52:09.643:INFO [Chrome 90.0.4430.212 (Windows 10)]: Connected on socket B9QoY__gkEXINHHvAAAA with id 20104069
html to image
basic usage
√ should render to svg
√ should render to png
√ should render to blob
√ should render to jpeg
√ should use quality parameter when rendering to jpeg
√ should convert an element to an array of pixels
√ should handle border
√ should render bigger node
√ should handle "#" in colors and attributes
√ should render whole node when its scrolled
√ should render text nodes
√ should preserve content of ::before and ::after pseudo elements
√ should render with external stylesheet
√ should render web fonts
√ should render images
√ should render background images
√ should render user input from <input>
√ should render user input from <textarea>
√ should render content from <canvas>
LOG LOG: 'Error inlining remote css file', 'SecurityError: Failed to read the 'cssRules' property from 'CSSStyleSheet': Cannot access rules'
Chrome 90.0.4430.212 (Windows 10) LOG: 'Error inlining remote css file', 'SecurityError: Failed to read the 'cssRules' property from 'CSSStyleSheet': Cannot access rules'
LOG LOG: 'Error loading remote stylesheet', 'SecurityError: Failed to read the 'cssRules' property from 'CSSStyleSheet': Cannot access rules'
Chrome 90.0.4430.212 (Windows 10) LOG: 'Error loading remote stylesheet', 'SecurityError: Failed to read the 'cssRules' property from 'CSSStyleSheet': Cannot access rules'
LOG LOG: 'Error while reading CSS rules from https://unpkg.com/mathlive/dist/mathlive-fonts.css', 'SecurityError: Failed to read the 'cssRules' property from 'CSSStyleSheet': Cannot access rules'
Chrome 90.0.4430.212 (Windows 10) LOG: 'Error while reading CSS rules from https://unpkg.com/mathlive/dist/mathlive-fonts.css', 'SecurityError: Failed to read the 'cssRules' property from 'CSSStyleSheet': Cannot access rules'
custom element
√ should render content from shadow node of custom element
work with svg
- should render nested svg with broken namespace
√ should render svg `<rect>` with width and heigth
√ should render svg `<rect>` with applied css styles
work with options
√ should apply width and height options to node copy being rendered
√ should render backgroundColor
√ should render backgroundColor in SVG
√ should apply style text to node copy being rendered
√ should combine dimensions and style
√ should use node filter
√ should not apply node filter to root node
√ should only use fontEmbedCss if it is supplied
ERROR LOG: 'Failed to fetch resource: http://fonts.com/font1.woff2'
Chrome 90.0.4430.212 (Windows 10) ERROR: 'Failed to fetch resource: http://fonts.com/font1.woff2'
√ should embed only the preferred font
LOG LOG: 'Error inlining remote css file', 'SecurityError: Failed to read the 'cssRules' property from 'CSSStyleSheet': Cannot access rules'
Chrome 90.0.4430.212 (Windows 10) LOG: 'Error inlining remote css file', 'SecurityError: Failed to read the 'cssRules' property from 'CSSStyleSheet': Cannot access rules'
LOG LOG: 'Error loading remote stylesheet', 'SecurityError: Failed to read the 'cssRules' property from 'CSSStyleSheet': Cannot access rules'
Chrome 90.0.4430.212 (Windows 10) LOG: 'Error loading remote stylesheet', 'SecurityError: Failed to read the 'cssRules' property from 'CSSStyleSheet': Cannot access rules'
LOG LOG: 'Error while reading CSS rules from http://fonts.googleapis.com/css?family=Open+Sans:400italic,600italic,400,600', 'SecurityError: Failed to read the 'cssRules' property from 'CSSStyleSheet': Cannot access rules'
Chrome 90.0.4430.212 (Windows 10) LOG: 'Error while reading CSS rules from http://fonts.googleapis.com/css?family=Open+Sans:400italic,600italic,400,600', 'SecurityError: Failed to read the 'cssRules' property from 'CSSStyleSheet': Cannot access rules'
special cases
√ should not crash when loading external stylesheet causes error
util
parseURLs
√ should parse urls
√ should ignore data urls
embed
√ should embed url
√ should resolve urls if base url given
Chrome 90.0.4430.212 (Windows 10): Executed 36 of 37 (skipped 1) SUCCESS (20.871 secs / 20.2 secs)
TOTAL: 36 SUCCESS
=============================== Coverage summary ===============================
Statements : 89.85% ( 726/808 )
Branches : 70.25% ( 170/242 )
Functions : 93.79% ( 272/290 )
Lines : 89.56% ( 695/776 )
================================================================================
Done in 33.17s.
|
Contributor
|
👋 @ShaMan123 Congrats on merging your first pull request! 🎉🎉🎉 |
Contributor
|
🎉 This PR is included in version 1.6.2 🎉 The release is available on: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Support custom elements:
Clone a custom element by cloning it's shadow node's children rather than trying to clone it's own.
Motivation and Context
#128
Inspired by: tsayen/dom-to-image#370
Types of changes
Self Check before Merge