html2canvas-pro 2.0.4 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -6
- package/dist/html2canvas-pro.esm.js +10103 -9993
- package/dist/html2canvas-pro.esm.js.map +1 -1
- package/dist/html2canvas-pro.js +10102 -9993
- package/dist/html2canvas-pro.js.map +1 -1
- package/dist/html2canvas-pro.min.js +5 -5
- package/dist/lib/config.js +3 -4
- package/dist/lib/core/bitwise.js +0 -1
- package/dist/lib/core/cache-storage.js +36 -50
- package/dist/lib/core/context.js +0 -1
- package/dist/lib/core/debugger.js +0 -1
- package/dist/lib/core/features.js +2 -3
- package/dist/lib/core/logger.js +0 -1
- package/dist/lib/core/origin-checker.js +0 -1
- package/dist/lib/core/performance-monitor.js +1 -24
- package/dist/lib/core/render-element.js +210 -0
- package/dist/lib/core/util.js +0 -1
- package/dist/lib/core/validator.js +0 -1
- package/dist/lib/css/index.js +149 -90
- package/dist/lib/css/layout/bounds.js +0 -1
- package/dist/lib/css/layout/text.js +0 -1
- package/dist/lib/css/{ITypeDescriptor.js → property-descriptor.js} +0 -1
- package/dist/lib/css/property-descriptors/background-clip.js +0 -1
- package/dist/lib/css/property-descriptors/background-color.js +0 -1
- package/dist/lib/css/property-descriptors/background-image.js +0 -1
- package/dist/lib/css/property-descriptors/background-origin.js +0 -1
- package/dist/lib/css/property-descriptors/background-position.js +0 -1
- package/dist/lib/css/property-descriptors/background-repeat.js +0 -1
- package/dist/lib/css/property-descriptors/background-size.js +0 -1
- package/dist/lib/css/property-descriptors/border-color.js +0 -1
- package/dist/lib/css/property-descriptors/border-radius.js +0 -1
- package/dist/lib/css/property-descriptors/border-style.js +0 -1
- package/dist/lib/css/property-descriptors/border-width.js +0 -1
- package/dist/lib/css/property-descriptors/box-shadow.js +0 -1
- package/dist/lib/css/property-descriptors/clip-path.js +0 -1
- package/dist/lib/css/property-descriptors/color.js +0 -1
- package/dist/lib/css/property-descriptors/content.js +0 -1
- package/dist/lib/css/property-descriptors/counter-increment.js +0 -1
- package/dist/lib/css/property-descriptors/counter-reset.js +0 -1
- package/dist/lib/css/property-descriptors/direction.js +0 -1
- package/dist/lib/css/property-descriptors/display.js +0 -1
- package/dist/lib/css/property-descriptors/duration.js +0 -1
- package/dist/lib/css/property-descriptors/float.js +0 -1
- package/dist/lib/css/property-descriptors/font-family.js +0 -1
- package/dist/lib/css/property-descriptors/font-size.js +0 -1
- package/dist/lib/css/property-descriptors/font-style.js +0 -1
- package/dist/lib/css/property-descriptors/font-variant.js +0 -1
- package/dist/lib/css/property-descriptors/font-weight.js +0 -1
- package/dist/lib/css/property-descriptors/image-rendering.js +0 -1
- package/dist/lib/css/property-descriptors/letter-spacing.js +0 -1
- package/dist/lib/css/property-descriptors/line-break.js +0 -1
- package/dist/lib/css/property-descriptors/line-height.js +0 -1
- package/dist/lib/css/property-descriptors/list-style-image.js +0 -1
- package/dist/lib/css/property-descriptors/list-style-position.js +0 -1
- package/dist/lib/css/property-descriptors/list-style-type.js +0 -1
- package/dist/lib/css/property-descriptors/margin.js +0 -1
- package/dist/lib/css/property-descriptors/mix-blend-mode.js +31 -0
- package/dist/lib/css/property-descriptors/object-fit.js +0 -1
- package/dist/lib/css/property-descriptors/opacity.js +0 -1
- package/dist/lib/css/property-descriptors/overflow-wrap.js +0 -1
- package/dist/lib/css/property-descriptors/overflow.js +0 -1
- package/dist/lib/css/property-descriptors/padding.js +0 -1
- package/dist/lib/css/property-descriptors/paint-order.js +0 -1
- package/dist/lib/css/property-descriptors/position.js +0 -1
- package/dist/lib/css/property-descriptors/quotes.js +0 -1
- package/dist/lib/css/property-descriptors/rotate.js +0 -1
- package/dist/lib/css/property-descriptors/text-align.js +0 -1
- package/dist/lib/css/property-descriptors/text-decoration-color.js +0 -1
- package/dist/lib/css/property-descriptors/text-decoration-line.js +0 -1
- package/dist/lib/css/property-descriptors/text-decoration-style.js +0 -1
- package/dist/lib/css/property-descriptors/text-decoration-thickness.js +0 -1
- package/dist/lib/css/property-descriptors/text-overflow.js +0 -1
- package/dist/lib/css/property-descriptors/text-shadow.js +0 -1
- package/dist/lib/css/property-descriptors/text-transform.js +0 -1
- package/dist/lib/css/property-descriptors/text-underline-offset.js +0 -1
- package/dist/lib/css/property-descriptors/transform-origin.js +0 -1
- package/dist/lib/css/property-descriptors/transform.js +0 -1
- package/dist/lib/css/property-descriptors/visibility.js +0 -1
- package/dist/lib/css/property-descriptors/webkit-line-clamp.js +0 -1
- package/dist/lib/css/property-descriptors/webkit-text-stroke-color.js +0 -1
- package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js +0 -1
- package/dist/lib/css/property-descriptors/word-break.js +0 -1
- package/dist/lib/css/property-descriptors/writing-mode.js +0 -1
- package/dist/lib/css/property-descriptors/z-index.js +0 -1
- package/dist/lib/css/syntax/parser.js +0 -1
- package/dist/lib/css/syntax/tokenizer.js +14 -1
- package/dist/lib/css/{IPropertyDescriptor.js → type-descriptor.js} +0 -1
- package/dist/lib/css/types/angle.js +0 -1
- package/dist/lib/css/types/color-math.js +0 -1
- package/dist/lib/css/types/color-spaces/a98.js +0 -1
- package/dist/lib/css/types/color-spaces/p3.js +0 -1
- package/dist/lib/css/types/color-spaces/pro-photo.js +0 -1
- package/dist/lib/css/types/color-spaces/rec2020.js +0 -1
- package/dist/lib/css/types/color-spaces/srgb.js +0 -1
- package/dist/lib/css/types/color-utilities.js +0 -1
- package/dist/lib/css/types/color.js +0 -1
- package/dist/lib/css/types/functions/-prefix-linear-gradient.js +0 -1
- package/dist/lib/css/types/functions/-prefix-radial-gradient.js +0 -1
- package/dist/lib/css/types/functions/-webkit-gradient.js +0 -1
- package/dist/lib/css/types/functions/counter.js +0 -1
- package/dist/lib/css/types/functions/gradient.js +0 -1
- package/dist/lib/css/types/functions/linear-gradient.js +0 -1
- package/dist/lib/css/types/functions/radial-gradient.js +0 -1
- package/dist/lib/css/types/image.js +0 -1
- package/dist/lib/css/types/index.js +0 -1
- package/dist/lib/css/types/length-percentage.js +0 -1
- package/dist/lib/css/types/length.js +0 -1
- package/dist/lib/css/types/time.js +0 -1
- package/dist/lib/dom/document-cloner.js +27 -22
- package/dist/lib/dom/dom-normalizer.js +0 -1
- package/dist/lib/dom/element-container.js +7 -6
- package/dist/lib/dom/elements/li-element-container.js +0 -1
- package/dist/lib/dom/elements/ol-element-container.js +0 -1
- package/dist/lib/dom/elements/select-element-container.js +0 -1
- package/dist/lib/dom/elements/textarea-element-container.js +0 -1
- package/dist/lib/dom/node-parser.js +37 -53
- package/dist/lib/dom/node-type-guards.js +62 -25
- package/dist/lib/dom/replaced-elements/canvas-element-container.js +0 -1
- package/dist/lib/dom/replaced-elements/iframe-element-container.js +0 -1
- package/dist/lib/dom/replaced-elements/image-element-container.js +0 -1
- package/dist/lib/dom/replaced-elements/index.js +0 -1
- package/dist/lib/dom/replaced-elements/input-element-container.js +0 -1
- package/dist/lib/dom/replaced-elements/pseudo-elements.js +0 -1
- package/dist/lib/dom/replaced-elements/svg-element-container.js +0 -1
- package/dist/lib/dom/text-container.js +0 -1
- package/dist/lib/index.js +32 -210
- package/dist/lib/options.js +2 -0
- package/dist/lib/render/background.js +0 -1
- package/dist/lib/render/bezier-curve.js +0 -1
- package/dist/lib/render/border.js +0 -1
- package/dist/lib/render/bound-curves.js +0 -1
- package/dist/lib/render/box-sizing.js +0 -1
- package/dist/lib/render/canvas/background-renderer.js +8 -24
- package/dist/lib/render/canvas/border-renderer.js +0 -1
- package/dist/lib/render/canvas/canvas-path.js +25 -0
- package/dist/lib/render/canvas/canvas-renderer.js +28 -97
- package/dist/lib/render/canvas/effects-renderer.js +3 -1
- package/dist/lib/render/canvas/foreignobject-renderer.js +13 -17
- package/dist/lib/render/canvas/text-renderer.js +61 -117
- package/dist/lib/render/effects.js +11 -2
- package/dist/lib/render/font-metrics.js +0 -1
- package/dist/lib/render/object-fit.js +87 -0
- package/dist/lib/render/path.js +0 -1
- package/dist/lib/render/renderer-interface.js +0 -1
- package/dist/lib/render/stacking-context.js +16 -8
- package/dist/lib/render/vector.js +0 -1
- package/dist/types/core/cache-storage.d.ts +5 -6
- package/dist/types/core/performance-monitor.d.ts +0 -11
- package/dist/types/core/render-element.d.ts +3 -0
- package/dist/types/css/index.d.ts +3 -0
- package/dist/types/css/property-descriptors/background-clip.d.ts +1 -1
- package/dist/types/css/property-descriptors/background-color.d.ts +1 -1
- package/dist/types/css/property-descriptors/background-image.d.ts +1 -1
- package/dist/types/css/property-descriptors/background-origin.d.ts +1 -1
- package/dist/types/css/property-descriptors/background-position.d.ts +1 -1
- package/dist/types/css/property-descriptors/background-repeat.d.ts +1 -1
- package/dist/types/css/property-descriptors/background-size.d.ts +1 -1
- package/dist/types/css/property-descriptors/border-color.d.ts +1 -1
- package/dist/types/css/property-descriptors/border-radius.d.ts +1 -1
- package/dist/types/css/property-descriptors/border-style.d.ts +1 -1
- package/dist/types/css/property-descriptors/border-width.d.ts +1 -1
- package/dist/types/css/property-descriptors/box-shadow.d.ts +1 -1
- package/dist/types/css/property-descriptors/clip-path.d.ts +1 -1
- package/dist/types/css/property-descriptors/color.d.ts +1 -1
- package/dist/types/css/property-descriptors/content.d.ts +1 -1
- package/dist/types/css/property-descriptors/counter-increment.d.ts +1 -1
- package/dist/types/css/property-descriptors/counter-reset.d.ts +1 -1
- package/dist/types/css/property-descriptors/direction.d.ts +1 -1
- package/dist/types/css/property-descriptors/display.d.ts +1 -1
- package/dist/types/css/property-descriptors/duration.d.ts +1 -1
- package/dist/types/css/property-descriptors/float.d.ts +1 -1
- package/dist/types/css/property-descriptors/font-family.d.ts +1 -1
- package/dist/types/css/property-descriptors/font-size.d.ts +1 -1
- package/dist/types/css/property-descriptors/font-style.d.ts +1 -1
- package/dist/types/css/property-descriptors/font-variant.d.ts +1 -1
- package/dist/types/css/property-descriptors/font-weight.d.ts +1 -1
- package/dist/types/css/property-descriptors/image-rendering.d.ts +1 -1
- package/dist/types/css/property-descriptors/letter-spacing.d.ts +1 -1
- package/dist/types/css/property-descriptors/line-break.d.ts +1 -1
- package/dist/types/css/property-descriptors/line-height.d.ts +1 -1
- package/dist/types/css/property-descriptors/list-style-image.d.ts +1 -1
- package/dist/types/css/property-descriptors/list-style-position.d.ts +1 -1
- package/dist/types/css/property-descriptors/list-style-type.d.ts +1 -1
- package/dist/types/css/property-descriptors/margin.d.ts +1 -1
- package/dist/types/css/property-descriptors/mix-blend-mode.d.ts +21 -0
- package/dist/types/css/property-descriptors/object-fit.d.ts +1 -1
- package/dist/types/css/property-descriptors/opacity.d.ts +1 -1
- package/dist/types/css/property-descriptors/overflow-wrap.d.ts +1 -1
- package/dist/types/css/property-descriptors/overflow.d.ts +1 -1
- package/dist/types/css/property-descriptors/padding.d.ts +1 -1
- package/dist/types/css/property-descriptors/paint-order.d.ts +1 -1
- package/dist/types/css/property-descriptors/position.d.ts +1 -1
- package/dist/types/css/property-descriptors/quotes.d.ts +1 -1
- package/dist/types/css/property-descriptors/rotate.d.ts +1 -1
- package/dist/types/css/property-descriptors/text-align.d.ts +1 -1
- package/dist/types/css/property-descriptors/text-decoration-color.d.ts +1 -1
- package/dist/types/css/property-descriptors/text-decoration-line.d.ts +1 -1
- package/dist/types/css/property-descriptors/text-decoration-style.d.ts +1 -1
- package/dist/types/css/property-descriptors/text-decoration-thickness.d.ts +1 -1
- package/dist/types/css/property-descriptors/text-overflow.d.ts +1 -1
- package/dist/types/css/property-descriptors/text-shadow.d.ts +1 -1
- package/dist/types/css/property-descriptors/text-transform.d.ts +1 -1
- package/dist/types/css/property-descriptors/text-underline-offset.d.ts +1 -1
- package/dist/types/css/property-descriptors/transform-origin.d.ts +1 -1
- package/dist/types/css/property-descriptors/transform.d.ts +1 -1
- package/dist/types/css/property-descriptors/visibility.d.ts +1 -1
- package/dist/types/css/property-descriptors/webkit-line-clamp.d.ts +1 -1
- package/dist/types/css/property-descriptors/webkit-text-stroke-color.d.ts +1 -1
- package/dist/types/css/property-descriptors/webkit-text-stroke-width.d.ts +1 -1
- package/dist/types/css/property-descriptors/word-break.d.ts +1 -1
- package/dist/types/css/property-descriptors/writing-mode.d.ts +1 -1
- package/dist/types/css/property-descriptors/z-index.d.ts +1 -1
- package/dist/types/css/syntax/tokenizer.d.ts +5 -0
- package/dist/types/css/types/angle.d.ts +1 -1
- package/dist/types/css/types/color.d.ts +1 -1
- package/dist/types/css/types/image.d.ts +1 -1
- package/dist/types/css/types/time.d.ts +1 -1
- package/dist/types/dom/element-container.d.ts +4 -11
- package/dist/types/dom/node-parser.d.ts +2 -15
- package/dist/types/dom/node-type-guards.d.ts +21 -22
- package/dist/types/index.d.ts +28 -48
- package/dist/types/options.d.ts +51 -0
- package/dist/types/render/canvas/background-renderer.d.ts +0 -6
- package/dist/types/render/canvas/canvas-path.d.ts +3 -0
- package/dist/types/render/canvas/canvas-renderer.d.ts +4 -2
- package/dist/types/render/canvas/foreignobject-renderer.d.ts +2 -3
- package/dist/types/render/canvas/text-renderer.d.ts +5 -0
- package/dist/types/render/effects.d.ts +9 -1
- package/dist/types/render/object-fit.d.ts +18 -0
- package/package.json +44 -44
- package/demo/image-smoothing-demo.html +0 -256
- package/demo/refactoring-test.html +0 -602
- package/dist/lib/__tests__/index.js +0 -85
- package/dist/lib/__tests__/index.js.map +0 -1
- package/dist/lib/config.js.map +0 -1
- package/dist/lib/core/__mocks__/cache-storage.js +0 -7
- package/dist/lib/core/__mocks__/cache-storage.js.map +0 -1
- package/dist/lib/core/__mocks__/context.js +0 -19
- package/dist/lib/core/__mocks__/context.js.map +0 -1
- package/dist/lib/core/__mocks__/features.js +0 -12
- package/dist/lib/core/__mocks__/features.js.map +0 -1
- package/dist/lib/core/__mocks__/logger.js +0 -16
- package/dist/lib/core/__mocks__/logger.js.map +0 -1
- package/dist/lib/core/__tests__/cache-storage.js +0 -225
- package/dist/lib/core/__tests__/cache-storage.js.map +0 -1
- package/dist/lib/core/__tests__/cache-storage.test.js +0 -158
- package/dist/lib/core/__tests__/cache-storage.test.js.map +0 -1
- package/dist/lib/core/__tests__/logger.js +0 -27
- package/dist/lib/core/__tests__/logger.js.map +0 -1
- package/dist/lib/core/__tests__/validator.js +0 -296
- package/dist/lib/core/__tests__/validator.js.map +0 -1
- package/dist/lib/core/bitwise.js.map +0 -1
- package/dist/lib/core/cache-storage.js.map +0 -1
- package/dist/lib/core/context.js.map +0 -1
- package/dist/lib/core/debugger.js.map +0 -1
- package/dist/lib/core/features.js.map +0 -1
- package/dist/lib/core/logger.js.map +0 -1
- package/dist/lib/core/origin-checker.js.map +0 -1
- package/dist/lib/core/performance-monitor.js.map +0 -1
- package/dist/lib/core/util.js.map +0 -1
- package/dist/lib/core/validator.js.map +0 -1
- package/dist/lib/css/IPropertyDescriptor.js.map +0 -1
- package/dist/lib/css/ITypeDescriptor.js.map +0 -1
- package/dist/lib/css/index.js.map +0 -1
- package/dist/lib/css/layout/__mocks__/bounds.js +0 -9
- package/dist/lib/css/layout/__mocks__/bounds.js.map +0 -1
- package/dist/lib/css/layout/bounds.js.map +0 -1
- package/dist/lib/css/layout/text.js.map +0 -1
- package/dist/lib/css/property-descriptors/__tests__/background-tests.js +0 -49
- package/dist/lib/css/property-descriptors/__tests__/background-tests.js.map +0 -1
- package/dist/lib/css/property-descriptors/__tests__/clip-path.test.js +0 -273
- package/dist/lib/css/property-descriptors/__tests__/clip-path.test.js.map +0 -1
- package/dist/lib/css/property-descriptors/__tests__/font-family.js +0 -19
- package/dist/lib/css/property-descriptors/__tests__/font-family.js.map +0 -1
- package/dist/lib/css/property-descriptors/__tests__/image-rendering-integration.test.js +0 -143
- package/dist/lib/css/property-descriptors/__tests__/image-rendering-integration.test.js.map +0 -1
- package/dist/lib/css/property-descriptors/__tests__/image-rendering-performance.test.js +0 -167
- package/dist/lib/css/property-descriptors/__tests__/image-rendering-performance.test.js.map +0 -1
- package/dist/lib/css/property-descriptors/__tests__/image-rendering.test.js +0 -61
- package/dist/lib/css/property-descriptors/__tests__/image-rendering.test.js.map +0 -1
- package/dist/lib/css/property-descriptors/__tests__/paint-order.js +0 -66
- package/dist/lib/css/property-descriptors/__tests__/paint-order.js.map +0 -1
- package/dist/lib/css/property-descriptors/__tests__/text-shadow.js +0 -82
- package/dist/lib/css/property-descriptors/__tests__/text-shadow.js.map +0 -1
- package/dist/lib/css/property-descriptors/__tests__/transform-tests.js +0 -14
- package/dist/lib/css/property-descriptors/__tests__/transform-tests.js.map +0 -1
- package/dist/lib/css/property-descriptors/background-clip.js.map +0 -1
- package/dist/lib/css/property-descriptors/background-color.js.map +0 -1
- package/dist/lib/css/property-descriptors/background-image.js.map +0 -1
- package/dist/lib/css/property-descriptors/background-origin.js.map +0 -1
- package/dist/lib/css/property-descriptors/background-position.js.map +0 -1
- package/dist/lib/css/property-descriptors/background-repeat.js.map +0 -1
- package/dist/lib/css/property-descriptors/background-size.js.map +0 -1
- package/dist/lib/css/property-descriptors/border-color.js.map +0 -1
- package/dist/lib/css/property-descriptors/border-radius.js.map +0 -1
- package/dist/lib/css/property-descriptors/border-style.js.map +0 -1
- package/dist/lib/css/property-descriptors/border-width.js.map +0 -1
- package/dist/lib/css/property-descriptors/box-shadow.js.map +0 -1
- package/dist/lib/css/property-descriptors/clip-path.js.map +0 -1
- package/dist/lib/css/property-descriptors/color.js.map +0 -1
- package/dist/lib/css/property-descriptors/content.js.map +0 -1
- package/dist/lib/css/property-descriptors/counter-increment.js.map +0 -1
- package/dist/lib/css/property-descriptors/counter-reset.js.map +0 -1
- package/dist/lib/css/property-descriptors/direction.js.map +0 -1
- package/dist/lib/css/property-descriptors/display.js.map +0 -1
- package/dist/lib/css/property-descriptors/duration.js.map +0 -1
- package/dist/lib/css/property-descriptors/float.js.map +0 -1
- package/dist/lib/css/property-descriptors/font-family.js.map +0 -1
- package/dist/lib/css/property-descriptors/font-size.js.map +0 -1
- package/dist/lib/css/property-descriptors/font-style.js.map +0 -1
- package/dist/lib/css/property-descriptors/font-variant.js.map +0 -1
- package/dist/lib/css/property-descriptors/font-weight.js.map +0 -1
- package/dist/lib/css/property-descriptors/image-rendering.js.map +0 -1
- package/dist/lib/css/property-descriptors/letter-spacing.js.map +0 -1
- package/dist/lib/css/property-descriptors/line-break.js.map +0 -1
- package/dist/lib/css/property-descriptors/line-height.js.map +0 -1
- package/dist/lib/css/property-descriptors/list-style-image.js.map +0 -1
- package/dist/lib/css/property-descriptors/list-style-position.js.map +0 -1
- package/dist/lib/css/property-descriptors/list-style-type.js.map +0 -1
- package/dist/lib/css/property-descriptors/margin.js.map +0 -1
- package/dist/lib/css/property-descriptors/object-fit.js.map +0 -1
- package/dist/lib/css/property-descriptors/opacity.js.map +0 -1
- package/dist/lib/css/property-descriptors/overflow-wrap.js.map +0 -1
- package/dist/lib/css/property-descriptors/overflow.js.map +0 -1
- package/dist/lib/css/property-descriptors/padding.js.map +0 -1
- package/dist/lib/css/property-descriptors/paint-order.js.map +0 -1
- package/dist/lib/css/property-descriptors/position.js.map +0 -1
- package/dist/lib/css/property-descriptors/quotes.js.map +0 -1
- package/dist/lib/css/property-descriptors/rotate.js.map +0 -1
- package/dist/lib/css/property-descriptors/text-align.js.map +0 -1
- package/dist/lib/css/property-descriptors/text-decoration-color.js.map +0 -1
- package/dist/lib/css/property-descriptors/text-decoration-line.js.map +0 -1
- package/dist/lib/css/property-descriptors/text-decoration-style.js.map +0 -1
- package/dist/lib/css/property-descriptors/text-decoration-thickness.js.map +0 -1
- package/dist/lib/css/property-descriptors/text-overflow.js.map +0 -1
- package/dist/lib/css/property-descriptors/text-shadow.js.map +0 -1
- package/dist/lib/css/property-descriptors/text-transform.js.map +0 -1
- package/dist/lib/css/property-descriptors/text-underline-offset.js.map +0 -1
- package/dist/lib/css/property-descriptors/transform-origin.js.map +0 -1
- package/dist/lib/css/property-descriptors/transform.js.map +0 -1
- package/dist/lib/css/property-descriptors/visibility.js.map +0 -1
- package/dist/lib/css/property-descriptors/webkit-line-clamp.js.map +0 -1
- package/dist/lib/css/property-descriptors/webkit-text-stroke-color.js.map +0 -1
- package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js.map +0 -1
- package/dist/lib/css/property-descriptors/word-break.js.map +0 -1
- package/dist/lib/css/property-descriptors/writing-mode.js.map +0 -1
- package/dist/lib/css/property-descriptors/z-index.js.map +0 -1
- package/dist/lib/css/syntax/__tests__/tokernizer-tests.js +0 -26
- package/dist/lib/css/syntax/__tests__/tokernizer-tests.js.map +0 -1
- package/dist/lib/css/syntax/parser.js.map +0 -1
- package/dist/lib/css/syntax/tokenizer.js.map +0 -1
- package/dist/lib/css/types/__tests__/color-tests.js +0 -111
- package/dist/lib/css/types/__tests__/color-tests.js.map +0 -1
- package/dist/lib/css/types/__tests__/image-tests.js +0 -215
- package/dist/lib/css/types/__tests__/image-tests.js.map +0 -1
- package/dist/lib/css/types/angle.js.map +0 -1
- package/dist/lib/css/types/color-math.js.map +0 -1
- package/dist/lib/css/types/color-spaces/a98.js.map +0 -1
- package/dist/lib/css/types/color-spaces/p3.js.map +0 -1
- package/dist/lib/css/types/color-spaces/pro-photo.js.map +0 -1
- package/dist/lib/css/types/color-spaces/rec2020.js.map +0 -1
- package/dist/lib/css/types/color-spaces/srgb.js.map +0 -1
- package/dist/lib/css/types/color-utilities.js.map +0 -1
- package/dist/lib/css/types/color.js.map +0 -1
- package/dist/lib/css/types/functions/-prefix-linear-gradient.js.map +0 -1
- package/dist/lib/css/types/functions/-prefix-radial-gradient.js.map +0 -1
- package/dist/lib/css/types/functions/-webkit-gradient.js.map +0 -1
- package/dist/lib/css/types/functions/__tests__/radial-gradient.js +0 -63
- package/dist/lib/css/types/functions/__tests__/radial-gradient.js.map +0 -1
- package/dist/lib/css/types/functions/counter.js.map +0 -1
- package/dist/lib/css/types/functions/gradient.js.map +0 -1
- package/dist/lib/css/types/functions/linear-gradient.js.map +0 -1
- package/dist/lib/css/types/functions/radial-gradient.js.map +0 -1
- package/dist/lib/css/types/image.js.map +0 -1
- package/dist/lib/css/types/index.js.map +0 -1
- package/dist/lib/css/types/length-percentage.js.map +0 -1
- package/dist/lib/css/types/length.js.map +0 -1
- package/dist/lib/css/types/time.js.map +0 -1
- package/dist/lib/dom/__mocks__/document-cloner.js +0 -23
- package/dist/lib/dom/__mocks__/document-cloner.js.map +0 -1
- package/dist/lib/dom/__tests__/dom-normalizer.test.js +0 -113
- package/dist/lib/dom/__tests__/dom-normalizer.test.js.map +0 -1
- package/dist/lib/dom/__tests__/element-container.test.js +0 -109
- package/dist/lib/dom/__tests__/element-container.test.js.map +0 -1
- package/dist/lib/dom/document-cloner.js.map +0 -1
- package/dist/lib/dom/dom-normalizer.js.map +0 -1
- package/dist/lib/dom/element-container.js.map +0 -1
- package/dist/lib/dom/elements/li-element-container.js.map +0 -1
- package/dist/lib/dom/elements/ol-element-container.js.map +0 -1
- package/dist/lib/dom/elements/select-element-container.js.map +0 -1
- package/dist/lib/dom/elements/textarea-element-container.js.map +0 -1
- package/dist/lib/dom/node-parser.js.map +0 -1
- package/dist/lib/dom/node-type-guards.js.map +0 -1
- package/dist/lib/dom/replaced-elements/canvas-element-container.js.map +0 -1
- package/dist/lib/dom/replaced-elements/iframe-element-container.js.map +0 -1
- package/dist/lib/dom/replaced-elements/image-element-container.js.map +0 -1
- package/dist/lib/dom/replaced-elements/index.js.map +0 -1
- package/dist/lib/dom/replaced-elements/input-element-container.js.map +0 -1
- package/dist/lib/dom/replaced-elements/pseudo-elements.js.map +0 -1
- package/dist/lib/dom/replaced-elements/svg-element-container.js.map +0 -1
- package/dist/lib/dom/text-container.js.map +0 -1
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/invariant.js +0 -10
- package/dist/lib/invariant.js.map +0 -1
- package/dist/lib/render/background.js.map +0 -1
- package/dist/lib/render/bezier-curve.js.map +0 -1
- package/dist/lib/render/border.js.map +0 -1
- package/dist/lib/render/bound-curves.js.map +0 -1
- package/dist/lib/render/box-sizing.js.map +0 -1
- package/dist/lib/render/canvas/__tests__/background-renderer.test.js +0 -65
- package/dist/lib/render/canvas/__tests__/background-renderer.test.js.map +0 -1
- package/dist/lib/render/canvas/__tests__/border-renderer.test.js +0 -23
- package/dist/lib/render/canvas/__tests__/border-renderer.test.js.map +0 -1
- package/dist/lib/render/canvas/__tests__/effects-renderer.test.js +0 -30
- package/dist/lib/render/canvas/__tests__/effects-renderer.test.js.map +0 -1
- package/dist/lib/render/canvas/__tests__/text-renderer.test.js +0 -402
- package/dist/lib/render/canvas/__tests__/text-renderer.test.js.map +0 -1
- package/dist/lib/render/canvas/background-renderer.js.map +0 -1
- package/dist/lib/render/canvas/border-renderer.js.map +0 -1
- package/dist/lib/render/canvas/canvas-renderer.js.map +0 -1
- package/dist/lib/render/canvas/effects-renderer.js.map +0 -1
- package/dist/lib/render/canvas/foreignobject-renderer.js.map +0 -1
- package/dist/lib/render/canvas/text-renderer.js.map +0 -1
- package/dist/lib/render/effects.js.map +0 -1
- package/dist/lib/render/font-metrics.js.map +0 -1
- package/dist/lib/render/path.js.map +0 -1
- package/dist/lib/render/renderer-interface.js.map +0 -1
- package/dist/lib/render/renderer.js +0 -11
- package/dist/lib/render/renderer.js.map +0 -1
- package/dist/lib/render/stacking-context.js.map +0 -1
- package/dist/lib/render/vector.js.map +0 -1
- package/dist/types/__tests__/index.d.ts +0 -1
- package/dist/types/core/__mocks__/cache-storage.d.ts +0 -2
- package/dist/types/core/__mocks__/context.d.ts +0 -9
- package/dist/types/core/__mocks__/features.d.ts +0 -8
- package/dist/types/core/__mocks__/logger.d.ts +0 -9
- package/dist/types/core/__tests__/cache-storage.d.ts +0 -1
- package/dist/types/core/__tests__/cache-storage.test.d.ts +0 -1
- package/dist/types/core/__tests__/logger.d.ts +0 -1
- package/dist/types/core/__tests__/validator.d.ts +0 -1
- package/dist/types/css/layout/__mocks__/bounds.d.ts +0 -2
- package/dist/types/css/property-descriptors/__tests__/background-tests.d.ts +0 -1
- package/dist/types/css/property-descriptors/__tests__/clip-path.test.d.ts +0 -1
- package/dist/types/css/property-descriptors/__tests__/font-family.d.ts +0 -1
- package/dist/types/css/property-descriptors/__tests__/image-rendering-integration.test.d.ts +0 -1
- package/dist/types/css/property-descriptors/__tests__/image-rendering-performance.test.d.ts +0 -1
- package/dist/types/css/property-descriptors/__tests__/image-rendering.test.d.ts +0 -1
- package/dist/types/css/property-descriptors/__tests__/paint-order.d.ts +0 -1
- package/dist/types/css/property-descriptors/__tests__/text-shadow.d.ts +0 -1
- package/dist/types/css/property-descriptors/__tests__/transform-tests.d.ts +0 -1
- package/dist/types/css/syntax/__tests__/tokernizer-tests.d.ts +0 -1
- package/dist/types/css/types/__tests__/color-tests.d.ts +0 -1
- package/dist/types/css/types/__tests__/image-tests.d.ts +0 -1
- package/dist/types/css/types/functions/__tests__/radial-gradient.d.ts +0 -1
- package/dist/types/dom/__mocks__/document-cloner.d.ts +0 -6
- package/dist/types/dom/__tests__/dom-normalizer.test.d.ts +0 -1
- package/dist/types/dom/__tests__/element-container.test.d.ts +0 -1
- package/dist/types/invariant.d.ts +0 -1
- package/dist/types/render/canvas/__tests__/background-renderer.test.d.ts +0 -1
- package/dist/types/render/canvas/__tests__/border-renderer.test.d.ts +0 -1
- package/dist/types/render/canvas/__tests__/effects-renderer.test.d.ts +0 -1
- package/dist/types/render/canvas/__tests__/text-renderer.test.d.ts +0 -1
- package/dist/types/render/renderer.d.ts +0 -7
- package/eslint.config.js +0 -35
- package/jest.config.cjs +0 -5
- package/karma.conf.cjs +0 -300
- /package/dist/types/css/{IPropertyDescriptor.d.ts → property-descriptor.d.ts} +0 -0
- /package/dist/types/css/{ITypeDescriptor.d.ts → type-descriptor.d.ts} +0 -0
|
@@ -71,8 +71,13 @@ export declare const FLAG_INTEGER: number;
|
|
|
71
71
|
export declare const FLAG_NUMBER: number;
|
|
72
72
|
export declare const EOF_TOKEN: Token;
|
|
73
73
|
export declare class Tokenizer {
|
|
74
|
+
private static _pool;
|
|
75
|
+
private static readonly MAX_POOL_SIZE;
|
|
76
|
+
static get(): Tokenizer;
|
|
77
|
+
static release(tokenizer: Tokenizer): void;
|
|
74
78
|
private _value;
|
|
75
79
|
constructor();
|
|
80
|
+
private _reset;
|
|
76
81
|
write(chunk: string): void;
|
|
77
82
|
read(): CSSToken[];
|
|
78
83
|
private consumeToken;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CSSValue } from '../syntax/parser';
|
|
2
|
-
import { ITypeDescriptor } from '../
|
|
2
|
+
import { ITypeDescriptor } from '../type-descriptor';
|
|
3
3
|
import { GradientCorner } from './image';
|
|
4
4
|
export declare const angle: ITypeDescriptor<number>;
|
|
5
5
|
export declare const isAngle: (value: CSSValue) => boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CSSValue } from '../syntax/parser';
|
|
2
2
|
import { Color } from './color';
|
|
3
|
-
import { ITypeDescriptor } from '../
|
|
3
|
+
import { ITypeDescriptor } from '../type-descriptor';
|
|
4
4
|
import { LengthPercentage } from './length-percentage';
|
|
5
5
|
export declare const enum CSSImageType {
|
|
6
6
|
URL = 0,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ITypeDescriptor } from '../
|
|
1
|
+
import { ITypeDescriptor } from '../type-descriptor';
|
|
2
2
|
export declare const time: ITypeDescriptor<number>;
|
|
@@ -2,17 +2,7 @@ import { CSSParsedDeclaration } from '../css/index';
|
|
|
2
2
|
import { TextContainer } from './text-container';
|
|
3
3
|
import { Bounds } from '../css/layout/bounds';
|
|
4
4
|
import { Context } from '../core/context';
|
|
5
|
-
export declare const enum FLAGS {
|
|
6
|
-
CREATES_STACKING_CONTEXT = 2,
|
|
7
|
-
CREATES_REAL_STACKING_CONTEXT = 4,
|
|
8
|
-
IS_LIST_OWNER = 8,
|
|
9
|
-
DEBUG_RENDER = 16
|
|
10
|
-
}
|
|
11
5
|
export interface ElementContainerOptions {
|
|
12
|
-
/**
|
|
13
|
-
* Whether to normalize DOM (disable animations, reset transforms)
|
|
14
|
-
* Default: true for backward compatibility
|
|
15
|
-
*/
|
|
16
6
|
normalizeDom?: boolean;
|
|
17
7
|
}
|
|
18
8
|
export declare class ElementContainer {
|
|
@@ -21,7 +11,10 @@ export declare class ElementContainer {
|
|
|
21
11
|
readonly textNodes: TextContainer[];
|
|
22
12
|
readonly elements: ElementContainer[];
|
|
23
13
|
bounds: Bounds;
|
|
24
|
-
|
|
14
|
+
createsStackingContext: boolean;
|
|
15
|
+
createsRealStackingContext: boolean;
|
|
16
|
+
isListOwner: boolean;
|
|
17
|
+
debugRender: boolean;
|
|
25
18
|
private originalStyles?;
|
|
26
19
|
private originalElement?;
|
|
27
20
|
constructor(context: Context, element: Element, options?: ElementContainerOptions);
|
|
@@ -1,18 +1,5 @@
|
|
|
1
1
|
import { ElementContainer } from './element-container';
|
|
2
2
|
import { Context } from '../core/context';
|
|
3
|
-
import {
|
|
4
|
-
export {
|
|
3
|
+
import { isBodyElement, isCanvasElement, isCustomElement, isElementNode, isHTMLElement, isHTMLElementNode, isIFrameElement, isImageElement, isInputElement, isLIElement, isOLElement, isScriptElement, isSelectElement, isSlotElement, isStyleElement, isSVGElement, isSVGElementNode, isTextareaElement, isTextNode, isVideoElement } from './node-type-guards';
|
|
4
|
+
export { isBodyElement, isCanvasElement, isCustomElement, isElementNode, isHTMLElement, isHTMLElementNode, isIFrameElement, isImageElement, isInputElement, isLIElement, isOLElement, isScriptElement, isSelectElement, isSlotElement, isStyleElement, isSVGElement, isSVGElementNode, isTextareaElement, isTextNode, isVideoElement };
|
|
5
5
|
export declare const parseTree: (context: Context, element: HTMLElement) => ElementContainer;
|
|
6
|
-
export declare const isInputElement: (node: Element) => node is HTMLInputElement;
|
|
7
|
-
export declare const isHTMLElement: (node: Element) => node is HTMLHtmlElement;
|
|
8
|
-
export declare const isSVGElement: (node: Element) => node is SVGSVGElement;
|
|
9
|
-
export declare const isBodyElement: (node: Element) => node is HTMLBodyElement;
|
|
10
|
-
export declare const isCanvasElement: (node: Element) => node is HTMLCanvasElement;
|
|
11
|
-
export declare const isVideoElement: (node: Element) => node is HTMLVideoElement;
|
|
12
|
-
export declare const isImageElement: (node: Element) => node is HTMLImageElement;
|
|
13
|
-
export declare const isIFrameElement: (node: Element) => node is HTMLIFrameElement;
|
|
14
|
-
export declare const isStyleElement: (node: Element) => node is HTMLStyleElement;
|
|
15
|
-
export declare const isScriptElement: (node: Element) => node is HTMLScriptElement;
|
|
16
|
-
export declare const isTextareaElement: (node: Element) => node is HTMLTextAreaElement;
|
|
17
|
-
export declare const isSelectElement: (node: Element) => node is HTMLSelectElement;
|
|
18
|
-
export declare const isSlotElement: (node: Element) => node is HTMLSlotElement;
|
|
@@ -1,33 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* DOM Node Type Guards
|
|
3
|
-
*
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
* Check if node is an Element
|
|
3
|
+
*
|
|
4
|
+
* All DOM node type guards consolidated here to eliminate duplication
|
|
5
|
+
* and provide a single source of truth for node type checking.
|
|
7
6
|
*/
|
|
8
7
|
export declare const isElementNode: (node: Node) => node is Element;
|
|
9
|
-
/**
|
|
10
|
-
* Check if node is a Text node
|
|
11
|
-
*/
|
|
12
8
|
export declare const isTextNode: (node: Node) => node is Text;
|
|
13
|
-
/**
|
|
14
|
-
* Check if element is an SVG element
|
|
15
|
-
*/
|
|
16
9
|
export declare const isSVGElementNode: (element: Element) => element is SVGElement;
|
|
17
|
-
/**
|
|
18
|
-
* Check if node is an HTML element
|
|
19
|
-
*/
|
|
20
10
|
export declare const isHTMLElementNode: (node: Node) => node is HTMLElement;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
11
|
+
export declare const isInputElement: (node: Element) => node is HTMLInputElement;
|
|
12
|
+
export declare const isHTMLElement: (node: Element) => node is HTMLHtmlElement;
|
|
13
|
+
export declare const isSVGElement: (node: Element) => node is SVGSVGElement;
|
|
14
|
+
export declare const isBodyElement: (node: Element) => node is HTMLBodyElement;
|
|
15
|
+
export declare const isCanvasElement: (node: Element) => node is HTMLCanvasElement;
|
|
16
|
+
export declare const isVideoElement: (node: Element) => node is HTMLVideoElement;
|
|
17
|
+
export declare const isImageElement: (node: Element) => node is HTMLImageElement;
|
|
18
|
+
export declare const isIFrameElement: (node: Element) => node is HTMLIFrameElement;
|
|
19
|
+
export declare const isStyleElement: (node: Element) => node is HTMLStyleElement;
|
|
20
|
+
export declare const isScriptElement: (node: Element) => node is HTMLScriptElement;
|
|
21
|
+
export declare const isTextareaElement: (node: Element) => node is HTMLTextAreaElement;
|
|
22
|
+
export declare const isSelectElement: (node: Element) => node is HTMLSelectElement;
|
|
23
|
+
export declare const isSlotElement: (node: Element) => node is HTMLSlotElement;
|
|
24
24
|
export declare const isLIElement: (node: Element) => node is HTMLLIElement;
|
|
25
|
-
/**
|
|
26
|
-
* Check if node is an OL element
|
|
27
|
-
*/
|
|
28
25
|
export declare const isOLElement: (node: Element) => node is HTMLOListElement;
|
|
26
|
+
export declare const isCustomElement: (element: Element) => element is HTMLElement;
|
|
29
27
|
/**
|
|
30
|
-
* Check if element
|
|
31
|
-
*
|
|
28
|
+
* Check if an element can have ::before / ::after pseudo-elements.
|
|
29
|
+
* Per the CSS spec, replaced elements and void elements cannot have pseudo-elements.
|
|
30
|
+
* SVG elements also do not support pseudo-elements.
|
|
32
31
|
*/
|
|
33
|
-
export declare const
|
|
32
|
+
export declare const canHavePseudoElements: (element: Element) => boolean;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,60 +1,40 @@
|
|
|
1
|
-
import { CloneOptions, WindowOptions } from './dom/document-cloner';
|
|
2
|
-
import { RenderOptions } from './render/canvas/canvas-renderer';
|
|
3
|
-
import { ContextOptions } from './core/context';
|
|
4
1
|
import { Html2CanvasConfig, ConfigOptions } from './config';
|
|
5
2
|
import { createDefaultValidator, Validator, ValidationResult } from './core/validator';
|
|
6
3
|
import { PerformanceMonitor } from './core/performance-monitor';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
foreignObjectRendering: boolean;
|
|
10
|
-
removeContainer?: boolean;
|
|
11
|
-
cspNonce?: string;
|
|
12
|
-
validator?: Validator;
|
|
13
|
-
skipValidation?: boolean;
|
|
14
|
-
enablePerformanceMonitoring?: boolean;
|
|
15
|
-
/**
|
|
16
|
-
* Enable/disable image smoothing (anti-aliasing) globally.
|
|
17
|
-
* - `false`: Pixel-perfect rendering for pixel art, sprites, and retro graphics
|
|
18
|
-
* - `true`: Smooth rendering for photos and high-quality images
|
|
19
|
-
* - CSS `image-rendering` property on individual elements takes precedence
|
|
20
|
-
* @default true (browser default)
|
|
21
|
-
* @example
|
|
22
|
-
* // Pixel art game screenshot
|
|
23
|
-
* html2canvas(element, { imageSmoothing: false, scale: 2 });
|
|
24
|
-
*
|
|
25
|
-
* // High-quality photo
|
|
26
|
-
* html2canvas(element, { imageSmoothing: true, imageSmoothingQuality: 'high' });
|
|
27
|
-
*/
|
|
28
|
-
imageSmoothing?: boolean;
|
|
29
|
-
/**
|
|
30
|
-
* Image smoothing quality level when imageSmoothing is enabled.
|
|
31
|
-
* - `'low'`: Faster, lower quality (good for preview)
|
|
32
|
-
* - `'medium'`: Balanced (default in most browsers)
|
|
33
|
-
* - `'high'`: Slower, best quality (good for final export)
|
|
34
|
-
*
|
|
35
|
-
* Browser support: Chrome 54+, Firefox 94+, Safari 17+
|
|
36
|
-
* Falls back gracefully in older browsers.
|
|
37
|
-
* @default browser default (usually 'low' or 'medium')
|
|
38
|
-
*/
|
|
39
|
-
imageSmoothingQuality?: 'low' | 'medium' | 'high';
|
|
40
|
-
};
|
|
4
|
+
import type { Options } from './options';
|
|
5
|
+
export type { Options };
|
|
41
6
|
/**
|
|
42
|
-
*
|
|
7
|
+
* Renders an HTML element to a `<canvas>` element.
|
|
8
|
+
*
|
|
9
|
+
* The function clones the target element and its subtree into a hidden iframe,
|
|
10
|
+
* resolves all computed styles, and paints the result onto a canvas —
|
|
11
|
+
* producing a visual snapshot of the DOM as it appears in the browser.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import html2canvas from 'html2canvas-pro';
|
|
16
|
+
*
|
|
17
|
+
* const canvas = await html2canvas(document.body, {
|
|
18
|
+
* backgroundColor: '#ffffff',
|
|
19
|
+
* scale: 2,
|
|
20
|
+
* useCORS: true
|
|
21
|
+
* });
|
|
22
|
+
* document.body.appendChild(canvas);
|
|
23
|
+
* ```
|
|
43
24
|
*
|
|
44
|
-
* @param element -
|
|
45
|
-
* @param options - Rendering options
|
|
46
|
-
* @param config
|
|
47
|
-
*
|
|
25
|
+
* @param element - The root HTMLElement to render.
|
|
26
|
+
* @param options - Rendering options.
|
|
27
|
+
* @param config - Advanced configuration. In most cases this is auto-created;
|
|
28
|
+
* only pass it if you need to share a cache across multiple calls.
|
|
29
|
+
* @returns A promise that resolves to the rendered HTMLCanvasElement.
|
|
30
|
+
*
|
|
31
|
+
* @throws {Error} If the element is not attached to a document.
|
|
32
|
+
* @throws {DOMException} If an {@link Options.signal|AbortSignal} was provided and the operation was aborted.
|
|
48
33
|
*/
|
|
49
34
|
declare const html2canvas: {
|
|
50
35
|
(element: HTMLElement, options?: Partial<Options>, config?: Html2CanvasConfig): Promise<HTMLCanvasElement>;
|
|
51
36
|
setCspNonce: (nonce: string) => void;
|
|
52
37
|
};
|
|
53
|
-
/**
|
|
54
|
-
* Set CSP nonce for inline styles
|
|
55
|
-
* @deprecated Use options.cspNonce instead
|
|
56
|
-
*/
|
|
57
|
-
declare const setCspNonce: (nonce: string) => void;
|
|
58
38
|
export default html2canvas;
|
|
59
|
-
export { html2canvas,
|
|
39
|
+
export { html2canvas, Html2CanvasConfig, ConfigOptions, Validator, ValidationResult, createDefaultValidator, PerformanceMonitor };
|
|
60
40
|
export { IMAGE_RENDERING } from './css/property-descriptors/image-rendering';
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { CloneOptions, WindowOptions } from './dom/document-cloner';
|
|
2
|
+
import { RenderOptions } from './render/canvas/canvas-renderer';
|
|
3
|
+
import { ContextOptions } from './core/context';
|
|
4
|
+
import { Validator } from './core/validator';
|
|
5
|
+
/**
|
|
6
|
+
* Options passed to {@link html2canvas}.
|
|
7
|
+
*
|
|
8
|
+
* Combines clone, window, render, and context configuration into a single
|
|
9
|
+
* options object. All properties are optional.
|
|
10
|
+
*/
|
|
11
|
+
export type Options = CloneOptions & WindowOptions & RenderOptions & ContextOptions & {
|
|
12
|
+
/** Background color for the resulting canvas. Use `null` for transparent. */
|
|
13
|
+
backgroundColor: string | null;
|
|
14
|
+
/** Use foreignObject rendering (SVG-based) instead of the default Canvas 2D pipeline. */
|
|
15
|
+
foreignObjectRendering: boolean;
|
|
16
|
+
/** Whether to remove the cloned iframe after rendering. @default true */
|
|
17
|
+
removeContainer?: boolean;
|
|
18
|
+
/** CSP nonce for inline style elements. */
|
|
19
|
+
cspNonce?: string;
|
|
20
|
+
/** Custom input validator. */
|
|
21
|
+
validator?: Validator;
|
|
22
|
+
/** Skip pre-render validation of element and options. */
|
|
23
|
+
skipValidation?: boolean;
|
|
24
|
+
/** Enable performance monitoring and log a timing summary. */
|
|
25
|
+
enablePerformanceMonitoring?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* An AbortSignal that can be used to cancel an in-progress render.
|
|
28
|
+
* When the signal is aborted, the returned promise rejects with an
|
|
29
|
+
* `AbortError` DOMException.
|
|
30
|
+
*/
|
|
31
|
+
signal?: AbortSignal;
|
|
32
|
+
/**
|
|
33
|
+
* Enable/disable image smoothing (anti-aliasing) globally.
|
|
34
|
+
* - `false`: Pixel-perfect rendering for pixel art, sprites, and retro graphics
|
|
35
|
+
* - `true`: Smooth rendering for photos and high-quality images
|
|
36
|
+
* - CSS `image-rendering` property on individual elements takes precedence
|
|
37
|
+
* @default true (browser default)
|
|
38
|
+
*/
|
|
39
|
+
imageSmoothing?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Image smoothing quality level when imageSmoothing is enabled.
|
|
42
|
+
* - `'low'`: Faster, lower quality (good for preview)
|
|
43
|
+
* - `'medium'`: Balanced (default in most browsers)
|
|
44
|
+
* - `'high'`: Slower, best quality (good for final export)
|
|
45
|
+
*
|
|
46
|
+
* Browser support: Chrome 54+, Firefox 94+, Safari 17+
|
|
47
|
+
* Falls back gracefully in older browsers.
|
|
48
|
+
* @default browser default (usually 'low' or 'medium')
|
|
49
|
+
*/
|
|
50
|
+
imageSmoothingQuality?: 'low' | 'medium' | 'high';
|
|
51
|
+
};
|
|
@@ -4,10 +4,10 @@ import { ElementContainer } from '../../dom/element-container';
|
|
|
4
4
|
import { Path } from '../path';
|
|
5
5
|
import { BoundCurves } from '../bound-curves';
|
|
6
6
|
import { ReplacedElementContainer } from '../../dom/replaced-elements';
|
|
7
|
-
import { Renderer } from '../renderer';
|
|
8
7
|
import { Context } from '../../core/context';
|
|
9
8
|
export type RenderConfigurations = RenderOptions & {
|
|
10
9
|
backgroundColor: Color | null;
|
|
10
|
+
signal?: AbortSignal;
|
|
11
11
|
/**
|
|
12
12
|
* Enable/disable image smoothing (anti-aliasing).
|
|
13
13
|
* When disabled, images are rendered with pixel-perfect sharpness (no interpolation).
|
|
@@ -32,9 +32,11 @@ export interface RenderOptions {
|
|
|
32
32
|
width: number;
|
|
33
33
|
height: number;
|
|
34
34
|
}
|
|
35
|
-
export declare class CanvasRenderer
|
|
35
|
+
export declare class CanvasRenderer {
|
|
36
36
|
canvas: HTMLCanvasElement;
|
|
37
37
|
ctx: CanvasRenderingContext2D;
|
|
38
|
+
private readonly context;
|
|
39
|
+
private readonly options;
|
|
38
40
|
private readonly fontMetrics;
|
|
39
41
|
private readonly backgroundRenderer;
|
|
40
42
|
private readonly borderRenderer;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { RenderConfigurations } from './canvas-renderer';
|
|
2
|
-
import { Renderer } from '../renderer';
|
|
3
2
|
import { Context } from '../../core/context';
|
|
4
|
-
export declare class ForeignObjectRenderer
|
|
3
|
+
export declare class ForeignObjectRenderer {
|
|
5
4
|
canvas: HTMLCanvasElement;
|
|
6
5
|
ctx: CanvasRenderingContext2D;
|
|
7
6
|
options: RenderConfigurations;
|
|
7
|
+
private readonly context;
|
|
8
8
|
constructor(context: Context, options: RenderConfigurations);
|
|
9
9
|
render(element: HTMLElement): Promise<HTMLCanvasElement>;
|
|
10
10
|
}
|
|
11
|
-
export declare const loadSerializedSVG: (svg: Node) => Promise<HTMLImageElement>;
|
|
@@ -60,6 +60,11 @@ export declare class TextRenderer {
|
|
|
60
60
|
* grapheme is drawn individually so spacing and CJK baseline are applied correctly.
|
|
61
61
|
*/
|
|
62
62
|
renderTextWithLetterSpacing(text: TextBounds, letterSpacing: number, baseline: number, writingMode?: WRITING_MODE): void;
|
|
63
|
+
private canRenderWholeText;
|
|
64
|
+
private renderFillText;
|
|
65
|
+
private renderStrokeText;
|
|
66
|
+
private renderTextStrokeWithStyle;
|
|
67
|
+
private renderTextFillWithShadows;
|
|
63
68
|
/**
|
|
64
69
|
* Helper method to render text with paint order support
|
|
65
70
|
* Reduces code duplication in line-clamp and normal rendering
|
|
@@ -4,7 +4,8 @@ export declare const enum EffectType {
|
|
|
4
4
|
TRANSFORM = 0,
|
|
5
5
|
CLIP = 1,
|
|
6
6
|
OPACITY = 2,
|
|
7
|
-
CLIP_PATH = 3
|
|
7
|
+
CLIP_PATH = 3,
|
|
8
|
+
BLEND = 4
|
|
8
9
|
}
|
|
9
10
|
export declare const enum EffectTarget {
|
|
10
11
|
BACKGROUND_BORDERS = 2,
|
|
@@ -46,7 +47,14 @@ export declare class ClipPathEffect implements IElementEffect {
|
|
|
46
47
|
readonly target: number;
|
|
47
48
|
constructor(applyClip: (ctx: CanvasRenderingContext2D) => void);
|
|
48
49
|
}
|
|
50
|
+
export declare class BlendEffect implements IElementEffect {
|
|
51
|
+
readonly compositeOperation: GlobalCompositeOperation;
|
|
52
|
+
readonly type: EffectType;
|
|
53
|
+
readonly target: number;
|
|
54
|
+
constructor(compositeOperation: GlobalCompositeOperation);
|
|
55
|
+
}
|
|
49
56
|
export declare const isTransformEffect: (effect: IElementEffect) => effect is TransformEffect;
|
|
50
57
|
export declare const isClipEffect: (effect: IElementEffect) => effect is ClipEffect;
|
|
51
58
|
export declare const isOpacityEffect: (effect: IElementEffect) => effect is OpacityEffect;
|
|
52
59
|
export declare const isClipPathEffect: (effect: IElementEffect) => effect is ClipPathEffect;
|
|
60
|
+
export declare const isBlendEffect: (effect: IElementEffect) => effect is BlendEffect;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ObjectFit } from '../css/property-descriptors/object-fit';
|
|
2
|
+
export interface ObjectFitBox {
|
|
3
|
+
left: number;
|
|
4
|
+
top: number;
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
}
|
|
8
|
+
export interface ObjectFitRendering {
|
|
9
|
+
sx: number;
|
|
10
|
+
sy: number;
|
|
11
|
+
sw: number;
|
|
12
|
+
sh: number;
|
|
13
|
+
dx: number;
|
|
14
|
+
dy: number;
|
|
15
|
+
dw: number;
|
|
16
|
+
dh: number;
|
|
17
|
+
}
|
|
18
|
+
export declare const calculateObjectFitRendering: (intrinsicWidth: number, intrinsicHeight: number, box: ObjectFitBox, objectFit: ObjectFit) => ObjectFitRendering;
|
package/package.json
CHANGED
|
@@ -5,7 +5,12 @@
|
|
|
5
5
|
"main": "dist/html2canvas-pro.js",
|
|
6
6
|
"module": "dist/html2canvas-pro.esm.js",
|
|
7
7
|
"typings": "dist/types/index.d.ts",
|
|
8
|
-
"browser": "dist/html2canvas-pro.js",
|
|
8
|
+
"browser": "dist/html2canvas-pro.esm.js",
|
|
9
|
+
"sideEffects": false,
|
|
10
|
+
"files": [
|
|
11
|
+
"dist/",
|
|
12
|
+
"LICENSE"
|
|
13
|
+
],
|
|
9
14
|
"exports": {
|
|
10
15
|
".": {
|
|
11
16
|
"types": "./dist/types/index.d.ts",
|
|
@@ -14,7 +19,7 @@
|
|
|
14
19
|
"default": "./dist/html2canvas-pro.esm.js"
|
|
15
20
|
}
|
|
16
21
|
},
|
|
17
|
-
"version": "2.
|
|
22
|
+
"version": "2.1.1",
|
|
18
23
|
"author": {
|
|
19
24
|
"name": "yorickshan",
|
|
20
25
|
"email": "yorickshan@gmail.com",
|
|
@@ -42,28 +47,24 @@
|
|
|
42
47
|
"@rollup/plugin-typescript": "^12.3.0",
|
|
43
48
|
"@types/chai": "^5.2.3",
|
|
44
49
|
"@types/express": "^5.0.6",
|
|
45
|
-
"@types/filenamify-url": "^2.0.1",
|
|
46
|
-
"@types/glob": "^9.0.0",
|
|
47
|
-
"@types/jest": "^29.5.12",
|
|
48
|
-
"@types/jest-image-snapshot": "^6.4.0",
|
|
49
50
|
"@types/karma": "^6.3.0",
|
|
50
|
-
"@types/mkdirp": "^2.0.0",
|
|
51
51
|
"@types/mocha": "^10.0.7",
|
|
52
52
|
"@types/node": "^25.0.3",
|
|
53
53
|
"@types/platform": "^1.3.4",
|
|
54
|
-
"@types/
|
|
54
|
+
"@types/pngjs": "^6.0.5",
|
|
55
55
|
"@types/serve-index": "^1.9.4",
|
|
56
56
|
"@typescript-eslint/eslint-plugin": "^8.50.0",
|
|
57
57
|
"@typescript-eslint/parser": "^8.50.0",
|
|
58
|
+
"@vitest/coverage-v8": "^3.2.6",
|
|
58
59
|
"appium-ios-simulator": "^8.0.9",
|
|
59
60
|
"base64-arraybuffer": "1.0.2",
|
|
60
61
|
"body-parser": "^2.2.1",
|
|
61
62
|
"chai": "6.2.2",
|
|
62
63
|
"change-case": "^5.4.4",
|
|
63
|
-
"conventional-changelog
|
|
64
|
+
"conventional-changelog": "^7.2.1",
|
|
65
|
+
"conventional-changelog-conventionalcommits": "^9.3.1",
|
|
64
66
|
"cors": "^2.8.5",
|
|
65
67
|
"cz-conventional-changelog": "^3.3.0",
|
|
66
|
-
"es6-promise": "^4.2.8",
|
|
67
68
|
"eslint": "^9.13.0",
|
|
68
69
|
"eslint-config-prettier": "^10.1.8",
|
|
69
70
|
"eslint-plugin-prettier": "^5.5.4",
|
|
@@ -71,11 +72,7 @@
|
|
|
71
72
|
"filenamify-url": "4.0.0",
|
|
72
73
|
"glob": "^13.0.0",
|
|
73
74
|
"husky": "^9.1.7",
|
|
74
|
-
"
|
|
75
|
-
"jest-environment-jsdom": "^30.2.0",
|
|
76
|
-
"jest-image-snapshot": "^6.4.0",
|
|
77
|
-
"jquery": "^3.5.1",
|
|
78
|
-
"js-polyfills": "^0.1.42",
|
|
75
|
+
"jsdom": "^29.1.1",
|
|
79
76
|
"karma": "^6.3.2",
|
|
80
77
|
"karma-chrome-launcher": "^3.1.0",
|
|
81
78
|
"karma-edge-launcher": "^0.4.2",
|
|
@@ -84,11 +81,12 @@
|
|
|
84
81
|
"karma-junit-reporter": "^2.0.1",
|
|
85
82
|
"karma-mocha": "^2.0.1",
|
|
86
83
|
"karma-safarinative-launcher": "^1.1.0",
|
|
87
|
-
"karma-sauce-launcher": "^4.3.6",
|
|
88
84
|
"lint-staged": "^16.2.7",
|
|
89
85
|
"mocha": "^11.7.5",
|
|
90
86
|
"node-simctl": "^8.1.2",
|
|
87
|
+
"pixelmatch": "^7.2.0",
|
|
91
88
|
"platform": "^1.3.6",
|
|
89
|
+
"pngjs": "^7.0.0",
|
|
92
90
|
"prettier": "^3.3.3",
|
|
93
91
|
"puppeteer": "^24.34.0",
|
|
94
92
|
"replace-in-file": "^8.4.0",
|
|
@@ -97,48 +95,50 @@
|
|
|
97
95
|
"rollup-plugin-sourcemaps": "^0.6.3",
|
|
98
96
|
"serve-index": "^1.9.1",
|
|
99
97
|
"slash": "5.1.0",
|
|
100
|
-
"standard-version": "^9.5.0",
|
|
101
|
-
"ts-jest": "^29.1.5",
|
|
102
98
|
"ts-node": "^10.9.2",
|
|
103
99
|
"tsx": "^4.22.3",
|
|
100
|
+
"typedoc": "^0.28.19",
|
|
104
101
|
"typescript": "^5.5.4",
|
|
105
102
|
"uglify-js": "^3.13.10",
|
|
106
|
-
"vitepress": "^1.
|
|
103
|
+
"vitepress": "^1.6.4",
|
|
104
|
+
"vitest": "^3.2.6",
|
|
107
105
|
"yargs": "^18.0.0"
|
|
108
106
|
},
|
|
107
|
+
"dependencies": {
|
|
108
|
+
"css-line-break": "^2.1.0",
|
|
109
|
+
"text-segmentation": "^1.0.3"
|
|
110
|
+
},
|
|
111
|
+
"lint-staged": {
|
|
112
|
+
"{src,tests}/**/*.ts": [
|
|
113
|
+
"prettier --write",
|
|
114
|
+
"eslint --fix"
|
|
115
|
+
]
|
|
116
|
+
},
|
|
109
117
|
"scripts": {
|
|
110
|
-
"prebuild": "rimraf dist/ && rimraf build/ &&
|
|
111
|
-
"build": "tsc --module commonjs
|
|
112
|
-
"build:testrunner": "
|
|
118
|
+
"prebuild": "rimraf dist/ && rimraf build/ && mkdir -p dist && mkdir -p build",
|
|
119
|
+
"build": "tsc --module commonjs -p tsconfig.build.json && rollup --configPlugin typescript -c rollup.config.ts && pnpm build:create-reftest-list && rollup --configPlugin typescript -c tests/rollup.config.ts && pnpm build:minify",
|
|
120
|
+
"build:testrunner": "rollup --configPlugin typescript -c tests/rollup.config.ts",
|
|
113
121
|
"build:minify": "uglifyjs --compress --comments /^!/ -o dist/html2canvas-pro.min.js --mangle -- dist/html2canvas-pro.js",
|
|
114
|
-
"build:reftest-result-list": "
|
|
115
|
-
"build:create-reftest-list": "
|
|
122
|
+
"build:reftest-result-list": "tsx scripts/create-reftest-result-list.ts",
|
|
123
|
+
"build:create-reftest-list": "tsx scripts/create-reftest-list.ts tests/reftests/ignore.txt build/reftests.js",
|
|
116
124
|
"release": "sh scripts/version-upgrade.sh",
|
|
117
125
|
"format": "prettier --write \"{src,tests,scripts}/**/*.ts\"",
|
|
118
126
|
"lint": "eslint src/**/*.ts --max-warnings 0",
|
|
119
|
-
"test": "
|
|
120
|
-
"unittest": "
|
|
121
|
-
"
|
|
127
|
+
"test": "pnpm lint && pnpm unittest && pnpm karma",
|
|
128
|
+
"unittest": "vitest run",
|
|
129
|
+
"unittest:coverage": "vitest run --coverage",
|
|
130
|
+
"bench:css-parse": "tsx scripts/benchmarks/css-parse.bench.ts",
|
|
131
|
+
"reftests-diff": "mkdir -p tmp/snapshots && vitest run --config vitest.reftest.config.ts",
|
|
122
132
|
"prekarma": "node scripts/ensure-karma-prereqs.mjs",
|
|
123
133
|
"karma": "tsx tests/karma",
|
|
124
|
-
"watch": "rollup -c rollup.config.ts -w",
|
|
125
|
-
"watch:unittest": "
|
|
126
|
-
"start": "
|
|
134
|
+
"watch": "rollup --configPlugin typescript -c rollup.config.ts -w",
|
|
135
|
+
"watch:unittest": "vitest",
|
|
136
|
+
"start": "tsx tests/server --port=8080 --cors=8081",
|
|
127
137
|
"commitlint": "commitlint --config .commitlintrc.json -e -V",
|
|
128
|
-
"tag": "sh scripts/create-tag.sh",
|
|
129
|
-
"prepare": "if [ \"$SKIP_PREPARE\" != \"true\" ]; then husky install; fi",
|
|
130
138
|
"docs:dev": "vitepress dev docs",
|
|
131
139
|
"docs:build": "vitepress build docs",
|
|
132
|
-
"docs:preview": "vitepress preview docs"
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
"css-line-break": "^2.1.0",
|
|
136
|
-
"text-segmentation": "^1.0.3"
|
|
137
|
-
},
|
|
138
|
-
"lint-staged": {
|
|
139
|
-
"{src,tests}/**/*.ts": [
|
|
140
|
-
"prettier --write",
|
|
141
|
-
"eslint --fix"
|
|
142
|
-
]
|
|
140
|
+
"docs:preview": "vitepress preview docs",
|
|
141
|
+
"docs:api": "typedoc",
|
|
142
|
+
"docs:api:watch": "typedoc --watch"
|
|
143
143
|
}
|
|
144
|
-
}
|
|
144
|
+
}
|