@ohos-ports/html2canvas-pro 0.0.0-stage → 2.3.2-beta.0
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/LICENSE +21 -0
- package/README.md +86 -2
- package/dist/html2canvas-pro.cjs +11191 -0
- package/dist/html2canvas-pro.cjs.map +1 -0
- package/dist/html2canvas-pro.esm.js +11182 -0
- package/dist/html2canvas-pro.esm.js.map +1 -0
- package/dist/html2canvas-pro.js +11196 -0
- package/dist/html2canvas-pro.js.map +1 -0
- package/dist/html2canvas-pro.min.js +10 -0
- package/dist/lib/config.js +49 -0
- package/dist/lib/core/abort-helper.js +20 -0
- package/dist/lib/core/background-parser.js +41 -0
- package/dist/lib/core/bitwise.js +5 -0
- package/dist/lib/core/cache-storage.js +268 -0
- package/dist/lib/core/config-assembler.js +88 -0
- package/dist/lib/core/constants.js +25 -0
- package/dist/lib/core/context.js +19 -0
- package/dist/lib/core/debugger.js +27 -0
- package/dist/lib/core/features.js +190 -0
- package/dist/lib/core/logger.js +56 -0
- package/dist/lib/core/lru-map.js +66 -0
- package/dist/lib/core/origin-checker.js +53 -0
- package/dist/lib/core/performance-monitor.js +185 -0
- package/dist/lib/core/render-element.js +132 -0
- package/dist/lib/core/util.js +4 -0
- package/dist/lib/core/validator.js +500 -0
- package/dist/lib/css/grouped/background-styles.js +36 -0
- package/dist/lib/css/grouped/border-styles.js +75 -0
- package/dist/lib/css/grouped/font-styles.js +93 -0
- package/dist/lib/css/grouped/layout-styles.js +127 -0
- package/dist/lib/css/index.js +330 -0
- package/dist/lib/css/layout/bounds.js +52 -0
- package/dist/lib/css/layout/text.js +133 -0
- package/dist/lib/css/property-descriptor.js +2 -0
- package/dist/lib/css/property-descriptors/background-blend-mode.js +41 -0
- package/dist/lib/css/property-descriptors/background-clip.js +23 -0
- package/dist/lib/css/property-descriptors/background-color.js +10 -0
- package/dist/lib/css/property-descriptors/background-image.js +24 -0
- package/dist/lib/css/property-descriptors/background-origin.js +23 -0
- package/dist/lib/css/property-descriptors/background-position.js +19 -0
- package/dist/lib/css/property-descriptors/background-repeat.js +33 -0
- package/dist/lib/css/property-descriptors/background-size.js +23 -0
- package/dist/lib/css/property-descriptors/border-color.js +14 -0
- package/dist/lib/css/property-descriptors/border-image-repeat.js +42 -0
- package/dist/lib/css/property-descriptors/border-image-slice.js +45 -0
- package/dist/lib/css/property-descriptors/border-image-source.js +22 -0
- package/dist/lib/css/property-descriptors/border-radius.js +15 -0
- package/dist/lib/css/property-descriptors/border-style.js +26 -0
- package/dist/lib/css/property-descriptors/border-width.js +20 -0
- package/dist/lib/css/property-descriptors/box-decoration-break.js +18 -0
- package/dist/lib/css/property-descriptors/box-shadow.js +54 -0
- package/dist/lib/css/property-descriptors/clip-path.js +189 -0
- package/dist/lib/css/property-descriptors/color.js +10 -0
- package/dist/lib/css/property-descriptors/content.js +19 -0
- package/dist/lib/css/property-descriptors/counter-increment.js +35 -0
- package/dist/lib/css/property-descriptors/counter-reset.js +18 -0
- package/dist/lib/css/property-descriptors/direction.js +18 -0
- package/dist/lib/css/property-descriptors/display.js +81 -0
- package/dist/lib/css/property-descriptors/duration.js +14 -0
- package/dist/lib/css/property-descriptors/filter.js +76 -0
- package/dist/lib/css/property-descriptors/float.js +22 -0
- package/dist/lib/css/property-descriptors/font-family.js +32 -0
- package/dist/lib/css/property-descriptors/font-size.js +10 -0
- package/dist/lib/css/property-descriptors/font-style.js +20 -0
- package/dist/lib/css/property-descriptors/font-variant-ligatures.js +34 -0
- package/dist/lib/css/property-descriptors/font-variant.js +13 -0
- package/dist/lib/css/property-descriptors/font-weight.js +25 -0
- package/dist/lib/css/property-descriptors/image-rendering.js +33 -0
- package/dist/lib/css/property-descriptors/letter-spacing.js +21 -0
- package/dist/lib/css/property-descriptors/line-break.js +23 -0
- package/dist/lib/css/property-descriptors/line-height.js +24 -0
- package/dist/lib/css/property-descriptors/list-style-image.js +17 -0
- package/dist/lib/css/property-descriptors/list-style-position.js +18 -0
- package/dist/lib/css/property-descriptors/list-style-type.js +122 -0
- package/dist/lib/css/property-descriptors/margin.js +13 -0
- package/dist/lib/css/property-descriptors/mix-blend-mode.js +31 -0
- package/dist/lib/css/property-descriptors/object-fit.js +28 -0
- package/dist/lib/css/property-descriptors/object-position.js +42 -0
- package/dist/lib/css/property-descriptors/opacity.js +16 -0
- package/dist/lib/css/property-descriptors/overflow-wrap.js +18 -0
- package/dist/lib/css/property-descriptors/overflow.js +27 -0
- package/dist/lib/css/property-descriptors/padding.js +14 -0
- package/dist/lib/css/property-descriptors/paint-order.js +33 -0
- package/dist/lib/css/property-descriptors/position.js +22 -0
- package/dist/lib/css/property-descriptors/quotes.js +41 -0
- package/dist/lib/css/property-descriptors/rotate.js +27 -0
- package/dist/lib/css/property-descriptors/text-align.js +21 -0
- package/dist/lib/css/property-descriptors/text-decoration-color.js +10 -0
- package/dist/lib/css/property-descriptors/text-decoration-line.js +28 -0
- package/dist/lib/css/property-descriptors/text-decoration-style.js +24 -0
- package/dist/lib/css/property-descriptors/text-decoration-thickness.js +26 -0
- package/dist/lib/css/property-descriptors/text-overflow.js +18 -0
- package/dist/lib/css/property-descriptors/text-shadow.js +46 -0
- package/dist/lib/css/property-descriptors/text-transform.js +20 -0
- package/dist/lib/css/property-descriptors/text-underline-offset.js +23 -0
- package/dist/lib/css/property-descriptors/transform-origin.js +24 -0
- package/dist/lib/css/property-descriptors/transform.js +57 -0
- package/dist/lib/css/property-descriptors/visibility.js +20 -0
- package/dist/lib/css/property-descriptors/webkit-line-clamp.js +26 -0
- package/dist/lib/css/property-descriptors/webkit-text-stroke-color.js +10 -0
- package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js +16 -0
- package/dist/lib/css/property-descriptors/word-break.js +26 -0
- package/dist/lib/css/property-descriptors/writing-mode.js +28 -0
- package/dist/lib/css/property-descriptors/z-index.js +19 -0
- package/dist/lib/css/property-descriptors/zoom.js +18 -0
- package/dist/lib/css/syntax/parser.js +140 -0
- package/dist/lib/css/syntax/token-constants.js +214 -0
- package/dist/lib/css/syntax/token-singletons.js +36 -0
- package/dist/lib/css/syntax/token-types.js +10 -0
- package/dist/lib/css/syntax/tokenizer.js +502 -0
- package/dist/lib/css/type-descriptor.js +2 -0
- package/dist/lib/css/types/angle.js +80 -0
- package/dist/lib/css/types/color-math.js +25 -0
- package/dist/lib/css/types/color-spaces/a98.js +78 -0
- package/dist/lib/css/types/color-spaces/p3.js +86 -0
- package/dist/lib/css/types/color-spaces/pro-photo.js +83 -0
- package/dist/lib/css/types/color-spaces/rec2020.js +85 -0
- package/dist/lib/css/types/color-spaces/srgb.js +79 -0
- package/dist/lib/css/types/color-utilities.js +342 -0
- package/dist/lib/css/types/color.js +400 -0
- package/dist/lib/css/types/functions/-prefix-linear-gradient.js +32 -0
- package/dist/lib/css/types/functions/-prefix-radial-gradient.js +83 -0
- package/dist/lib/css/types/functions/-webkit-gradient.js +59 -0
- package/dist/lib/css/types/functions/counter.js +367 -0
- package/dist/lib/css/types/functions/gradient.js +163 -0
- package/dist/lib/css/types/functions/linear-gradient.js +27 -0
- package/dist/lib/css/types/functions/radial-gradient.js +90 -0
- package/dist/lib/css/types/functions/repeating-linear-gradient.js +9 -0
- package/dist/lib/css/types/image.js +62 -0
- package/dist/lib/css/types/index.js +2 -0
- package/dist/lib/css/types/length-percentage.js +197 -0
- package/dist/lib/css/types/length.js +5 -0
- package/dist/lib/css/types/safe-eval.js +80 -0
- package/dist/lib/css/types/time.js +17 -0
- package/dist/lib/dom/document-cloner.js +597 -0
- package/dist/lib/dom/dom-normalizer.js +115 -0
- package/dist/lib/dom/element-container.js +56 -0
- package/dist/lib/dom/elements/li-element-container.js +11 -0
- package/dist/lib/dom/elements/ol-element-container.js +12 -0
- package/dist/lib/dom/elements/select-element-container.js +12 -0
- package/dist/lib/dom/elements/textarea-element-container.js +11 -0
- package/dist/lib/dom/node-parser.js +112 -0
- package/dist/lib/dom/node-type-guards.js +81 -0
- package/dist/lib/dom/replaced-elements/canvas-element-container.js +13 -0
- package/dist/lib/dom/replaced-elements/iframe-element-container.js +38 -0
- package/dist/lib/dom/replaced-elements/image-element-container.js +14 -0
- package/dist/lib/dom/replaced-elements/index.js +2 -0
- package/dist/lib/dom/replaced-elements/input-element-container.js +89 -0
- package/dist/lib/dom/replaced-elements/svg-element-container.js +19 -0
- package/dist/lib/dom/slot-cloner.js +176 -0
- package/dist/lib/dom/text-container.js +35 -0
- package/dist/lib/index.js +49 -0
- package/dist/lib/options.js +2 -0
- package/dist/lib/render/background.js +188 -0
- package/dist/lib/render/bezier-curve.js +34 -0
- package/dist/lib/render/border.js +104 -0
- package/dist/lib/render/bound-curves.js +188 -0
- package/dist/lib/render/box-sizing.js +20 -0
- package/dist/lib/render/canvas/background-renderer.js +327 -0
- package/dist/lib/render/canvas/border-image-renderer.js +153 -0
- package/dist/lib/render/canvas/border-renderer.js +184 -0
- package/dist/lib/render/canvas/canvas-path.js +25 -0
- package/dist/lib/render/canvas/canvas-renderer.js +312 -0
- package/dist/lib/render/canvas/content-renderer.js +204 -0
- package/dist/lib/render/canvas/effects-renderer.js +171 -0
- package/dist/lib/render/canvas/font-utils.js +29 -0
- package/dist/lib/render/canvas/foreignobject-renderer.js +38 -0
- package/dist/lib/render/canvas/text/text-decoration-renderer.js +99 -0
- package/dist/lib/render/canvas/text-renderer.js +485 -0
- package/dist/lib/render/effects.js +231 -0
- package/dist/lib/render/font-metrics.js +53 -0
- package/dist/lib/render/object-fit.js +91 -0
- package/dist/lib/render/path.js +26 -0
- package/dist/lib/render/renderer-interface.js +2 -0
- package/dist/lib/render/stacking-context.js +340 -0
- package/dist/lib/render/vector.js +16 -0
- package/dist/types/config.d.ts +44 -0
- package/dist/types/core/abort-helper.d.ts +12 -0
- package/dist/types/core/background-parser.d.ts +16 -0
- package/dist/types/core/bitwise.d.ts +1 -0
- package/dist/types/core/cache-storage.d.ts +68 -0
- package/dist/types/core/config-assembler.d.ts +28 -0
- package/dist/types/core/constants.d.ts +22 -0
- package/dist/types/core/context.d.ts +22 -0
- package/dist/types/core/debugger.d.ts +8 -0
- package/dist/types/core/features.d.ts +12 -0
- package/dist/types/core/logger.d.ts +18 -0
- package/dist/types/core/lru-map.d.ts +37 -0
- package/dist/types/core/origin-checker.d.ts +33 -0
- package/dist/types/core/performance-monitor.d.ts +120 -0
- package/dist/types/core/render-element.d.ts +3 -0
- package/dist/types/core/util.d.ts +1 -0
- package/dist/types/core/validator.d.ts +130 -0
- package/dist/types/css/grouped/background-styles.d.ts +16 -0
- package/dist/types/css/grouped/border-styles.d.ts +31 -0
- package/dist/types/css/grouped/font-styles.d.ts +35 -0
- package/dist/types/css/grouped/layout-styles.d.ts +46 -0
- package/dist/types/css/index.d.ts +185 -0
- package/dist/types/css/layout/bounds.d.ts +14 -0
- package/dist/types/css/layout/text.d.ts +10 -0
- package/dist/types/css/property-descriptor.d.ts +40 -0
- package/dist/types/css/property-descriptors/background-blend-mode.d.ts +23 -0
- package/dist/types/css/property-descriptors/background-clip.d.ts +8 -0
- package/dist/types/css/property-descriptors/background-color.d.ts +2 -0
- package/dist/types/css/property-descriptors/background-image.d.ts +3 -0
- package/dist/types/css/property-descriptors/background-origin.d.ts +8 -0
- package/dist/types/css/property-descriptors/background-position.d.ts +5 -0
- package/dist/types/css/property-descriptors/background-repeat.d.ts +9 -0
- package/dist/types/css/property-descriptors/background-size.d.ts +11 -0
- package/dist/types/css/property-descriptors/border-color.d.ts +5 -0
- package/dist/types/css/property-descriptors/border-image-repeat.d.ts +12 -0
- package/dist/types/css/property-descriptors/border-image-slice.d.ts +10 -0
- package/dist/types/css/property-descriptors/border-image-source.d.ts +4 -0
- package/dist/types/css/property-descriptors/border-radius.d.ts +7 -0
- package/dist/types/css/property-descriptors/border-style.d.ts +12 -0
- package/dist/types/css/property-descriptors/border-width.d.ts +5 -0
- package/dist/types/css/property-descriptors/box-decoration-break.d.ts +6 -0
- package/dist/types/css/property-descriptors/box-shadow.d.ts +14 -0
- package/dist/types/css/property-descriptors/clip-path.d.ts +62 -0
- package/dist/types/css/property-descriptors/color.d.ts +2 -0
- package/dist/types/css/property-descriptors/content.d.ts +4 -0
- package/dist/types/css/property-descriptors/counter-increment.d.ts +10 -0
- package/dist/types/css/property-descriptors/counter-reset.d.ts +7 -0
- package/dist/types/css/property-descriptors/direction.d.ts +6 -0
- package/dist/types/css/property-descriptors/display.d.ts +35 -0
- package/dist/types/css/property-descriptors/duration.d.ts +2 -0
- package/dist/types/css/property-descriptors/filter.d.ts +3 -0
- package/dist/types/css/property-descriptors/float.d.ts +9 -0
- package/dist/types/css/property-descriptors/font-family.d.ts +4 -0
- package/dist/types/css/property-descriptors/font-size.d.ts +2 -0
- package/dist/types/css/property-descriptors/font-style.d.ts +7 -0
- package/dist/types/css/property-descriptors/font-variant-ligatures.d.ts +14 -0
- package/dist/types/css/property-descriptors/font-variant.d.ts +2 -0
- package/dist/types/css/property-descriptors/font-weight.d.ts +2 -0
- package/dist/types/css/property-descriptors/image-rendering.d.ts +8 -0
- package/dist/types/css/property-descriptors/letter-spacing.d.ts +2 -0
- package/dist/types/css/property-descriptors/line-break.d.ts +6 -0
- package/dist/types/css/property-descriptors/line-height.d.ts +4 -0
- package/dist/types/css/property-descriptors/list-style-image.d.ts +3 -0
- package/dist/types/css/property-descriptors/list-style-position.d.ts +6 -0
- package/dist/types/css/property-descriptors/list-style-type.d.ts +58 -0
- package/dist/types/css/property-descriptors/margin.d.ts +5 -0
- package/dist/types/css/property-descriptors/mix-blend-mode.d.ts +21 -0
- package/dist/types/css/property-descriptors/object-fit.d.ts +10 -0
- package/dist/types/css/property-descriptors/object-position.d.ts +4 -0
- package/dist/types/css/property-descriptors/opacity.d.ts +2 -0
- package/dist/types/css/property-descriptors/overflow-wrap.d.ts +6 -0
- package/dist/types/css/property-descriptors/overflow.d.ts +9 -0
- package/dist/types/css/property-descriptors/padding.d.ts +5 -0
- package/dist/types/css/property-descriptors/paint-order.d.ts +8 -0
- package/dist/types/css/property-descriptors/position.d.ts +9 -0
- package/dist/types/css/property-descriptors/quotes.d.ts +8 -0
- package/dist/types/css/property-descriptors/rotate.d.ts +3 -0
- package/dist/types/css/property-descriptors/text-align.d.ts +7 -0
- package/dist/types/css/property-descriptors/text-decoration-color.d.ts +2 -0
- package/dist/types/css/property-descriptors/text-decoration-line.d.ts +10 -0
- package/dist/types/css/property-descriptors/text-decoration-style.d.ts +9 -0
- package/dist/types/css/property-descriptors/text-decoration-thickness.d.ts +3 -0
- package/dist/types/css/property-descriptors/text-overflow.d.ts +6 -0
- package/dist/types/css/property-descriptors/text-shadow.d.ts +12 -0
- package/dist/types/css/property-descriptors/text-transform.d.ts +8 -0
- package/dist/types/css/property-descriptors/text-underline-offset.d.ts +3 -0
- package/dist/types/css/property-descriptors/transform-origin.d.ts +4 -0
- package/dist/types/css/property-descriptors/transform.d.ts +4 -0
- package/dist/types/css/property-descriptors/visibility.d.ts +7 -0
- package/dist/types/css/property-descriptors/webkit-line-clamp.d.ts +7 -0
- package/dist/types/css/property-descriptors/webkit-text-stroke-color.d.ts +2 -0
- package/dist/types/css/property-descriptors/webkit-text-stroke-width.d.ts +2 -0
- package/dist/types/css/property-descriptors/word-break.d.ts +7 -0
- package/dist/types/css/property-descriptors/writing-mode.d.ts +11 -0
- package/dist/types/css/property-descriptors/z-index.d.ts +7 -0
- package/dist/types/css/property-descriptors/zoom.d.ts +3 -0
- package/dist/types/css/syntax/parser.d.ts +34 -0
- package/dist/types/css/syntax/token-constants.d.ts +74 -0
- package/dist/types/css/syntax/token-singletons.d.ts +22 -0
- package/dist/types/css/syntax/token-types.d.ts +72 -0
- package/dist/types/css/syntax/tokenizer.d.ts +32 -0
- package/dist/types/css/type-descriptor.d.ts +6 -0
- package/dist/types/css/types/angle.d.ts +7 -0
- package/dist/types/css/types/color-math.d.ts +12 -0
- package/dist/types/css/types/color-spaces/a98.d.ts +39 -0
- package/dist/types/css/types/color-spaces/p3.d.ts +45 -0
- package/dist/types/css/types/color-spaces/pro-photo.d.ts +45 -0
- package/dist/types/css/types/color-spaces/rec2020.d.ts +45 -0
- package/dist/types/css/types/color-spaces/srgb.d.ts +38 -0
- package/dist/types/css/types/color-utilities.d.ts +107 -0
- package/dist/types/css/types/color.d.ts +8 -0
- package/dist/types/css/types/functions/-prefix-linear-gradient.d.ts +4 -0
- package/dist/types/css/types/functions/-prefix-radial-gradient.d.ts +4 -0
- package/dist/types/css/types/functions/-webkit-gradient.d.ts +4 -0
- package/dist/types/css/types/functions/counter.d.ts +10 -0
- package/dist/types/css/types/functions/gradient.d.ts +7 -0
- package/dist/types/css/types/functions/linear-gradient.d.ts +4 -0
- package/dist/types/css/types/functions/radial-gradient.d.ts +12 -0
- package/dist/types/css/types/functions/repeating-linear-gradient.d.ts +4 -0
- package/dist/types/css/types/image.d.ts +56 -0
- package/dist/types/css/types/index.d.ts +1 -0
- package/dist/types/css/types/length-percentage.d.ts +62 -0
- package/dist/types/css/types/length.d.ts +4 -0
- package/dist/types/css/types/safe-eval.d.ts +8 -0
- package/dist/types/css/types/time.d.ts +2 -0
- package/dist/types/dom/document-cloner.d.ts +57 -0
- package/dist/types/dom/dom-normalizer.d.ts +62 -0
- package/dist/types/dom/element-container.d.ts +31 -0
- package/dist/types/dom/elements/li-element-container.d.ts +6 -0
- package/dist/types/dom/elements/ol-element-container.d.ts +7 -0
- package/dist/types/dom/elements/select-element-container.d.ts +6 -0
- package/dist/types/dom/elements/textarea-element-container.d.ts +6 -0
- package/dist/types/dom/node-parser.d.ts +3 -0
- package/dist/types/dom/node-type-guards.d.ts +32 -0
- package/dist/types/dom/replaced-elements/canvas-element-container.d.ts +8 -0
- package/dist/types/dom/replaced-elements/iframe-element-container.d.ts +14 -0
- package/dist/types/dom/replaced-elements/image-element-container.d.ts +8 -0
- package/dist/types/dom/replaced-elements/index.d.ts +4 -0
- package/dist/types/dom/replaced-elements/input-element-container.d.ts +14 -0
- package/dist/types/dom/replaced-elements/svg-element-container.d.ts +8 -0
- package/dist/types/dom/slot-cloner.d.ts +66 -0
- package/dist/types/dom/text-container.d.ts +8 -0
- package/dist/types/index.d.ts +36 -0
- package/dist/types/options.d.ts +62 -0
- package/dist/types/render/background.d.ts +16 -0
- package/dist/types/render/bezier-curve.d.ts +14 -0
- package/dist/types/render/border.d.ts +6 -0
- package/dist/types/render/bound-curves.d.ts +32 -0
- package/dist/types/render/box-sizing.d.ts +4 -0
- package/dist/types/render/canvas/background-renderer.d.ts +94 -0
- package/dist/types/render/canvas/border-image-renderer.d.ts +18 -0
- package/dist/types/render/canvas/border-renderer.d.ts +67 -0
- package/dist/types/render/canvas/canvas-path.d.ts +3 -0
- package/dist/types/render/canvas/canvas-renderer.d.ts +60 -0
- package/dist/types/render/canvas/content-renderer.d.ts +43 -0
- package/dist/types/render/canvas/effects-renderer.d.ts +90 -0
- package/dist/types/render/canvas/font-utils.d.ts +19 -0
- package/dist/types/render/canvas/foreignobject-renderer.d.ts +10 -0
- package/dist/types/render/canvas/text/text-decoration-renderer.d.ts +18 -0
- package/dist/types/render/canvas/text-renderer.d.ts +103 -0
- package/dist/types/render/effects.d.ts +112 -0
- package/dist/types/render/font-metrics.d.ts +11 -0
- package/dist/types/render/object-fit.d.ts +19 -0
- package/dist/types/render/path.d.ts +13 -0
- package/dist/types/render/renderer-interface.d.ts +28 -0
- package/dist/types/render/stacking-context.d.ts +49 -0
- package/dist/types/render/vector.d.ts +9 -0
- package/package.json +139 -4
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { Context } from '../../core/context';
|
|
2
|
+
import { CSSValue } from '../syntax/parser';
|
|
3
|
+
import { clamp, multiplyMatrices } from './color-math';
|
|
4
|
+
type Color = number;
|
|
5
|
+
export declare const isTransparent: (color: Color) => boolean;
|
|
6
|
+
export declare const asString: (color: Color) => string;
|
|
7
|
+
export declare const pack: (r: number, g: number, b: number, a: number) => Color;
|
|
8
|
+
export declare const getTokenColorValue: (token: CSSValue, i: number) => number;
|
|
9
|
+
export declare const isRelativeTransform: (tokens: CSSValue[]) => boolean;
|
|
10
|
+
export { clamp, multiplyMatrices };
|
|
11
|
+
export declare const packSrgb: (args: number[]) => number;
|
|
12
|
+
export declare const packSrgbLinear: ([r, g, b, a]: [number, number, number, number]) => number;
|
|
13
|
+
export declare const packXYZ: (args: number[]) => number;
|
|
14
|
+
export declare const packLab: (_context: Context, args: CSSValue[]) => number;
|
|
15
|
+
export declare const packOkLab: (_context: Context, args: CSSValue[]) => number;
|
|
16
|
+
export declare const packOkLch: (_context: Context, args: CSSValue[]) => number;
|
|
17
|
+
export declare const packLch: (_context: Context, args: CSSValue[]) => number;
|
|
18
|
+
export declare const extractHslComponents: (context: Context, args: CSSValue[]) => [number, number, number, number];
|
|
19
|
+
export declare const packHSL: (context: Context, args: CSSValue[]) => number;
|
|
20
|
+
export declare const extractLchComponents: (args: CSSValue[]) => [number, number, number, number];
|
|
21
|
+
export declare const extractLabComponents: (args: CSSValue[]) => [number, number, number, number];
|
|
22
|
+
export declare const extractOkLchComponents: (args: CSSValue[]) => [number, number, number, number];
|
|
23
|
+
/**
|
|
24
|
+
* Convert D65 to D50
|
|
25
|
+
*
|
|
26
|
+
* @param xyz
|
|
27
|
+
*/
|
|
28
|
+
export declare const d65toD50: (xyz: [number, number, number]) => [number, number, number];
|
|
29
|
+
/**
|
|
30
|
+
* Convert D50 to D65
|
|
31
|
+
*
|
|
32
|
+
* @param xyz
|
|
33
|
+
*/
|
|
34
|
+
export declare const d50toD65: (xyz: [number, number, number]) => [number, number, number];
|
|
35
|
+
export declare const hue2rgb: (t1: number, t2: number, hue: number) => number;
|
|
36
|
+
/**
|
|
37
|
+
* Convert RGB to XYZ
|
|
38
|
+
*
|
|
39
|
+
* @param _context
|
|
40
|
+
* @param args
|
|
41
|
+
*/
|
|
42
|
+
export declare const rgbToXyz: (_context: Context, args: CSSValue[]) => [number, number, number, number];
|
|
43
|
+
/**
|
|
44
|
+
* HSL to XYZ
|
|
45
|
+
*
|
|
46
|
+
* @param context
|
|
47
|
+
* @param args
|
|
48
|
+
*/
|
|
49
|
+
export declare const hslToXyz: (context: Context, args: CSSValue[]) => [number, number, number, number];
|
|
50
|
+
/**
|
|
51
|
+
* LAB to XYZ
|
|
52
|
+
*
|
|
53
|
+
* @param _context
|
|
54
|
+
* @param args
|
|
55
|
+
*/
|
|
56
|
+
export declare const labToXyz: (_context: Context, args: CSSValue[]) => [number, number, number, number];
|
|
57
|
+
/**
|
|
58
|
+
* LCH to XYZ
|
|
59
|
+
*
|
|
60
|
+
* @param _context
|
|
61
|
+
* @param args
|
|
62
|
+
*/
|
|
63
|
+
export declare const lchToXyz: (_context: Context, args: CSSValue[]) => [number, number, number, number];
|
|
64
|
+
/**
|
|
65
|
+
* OKLch to XYZ
|
|
66
|
+
*
|
|
67
|
+
* @param _context
|
|
68
|
+
* @param args
|
|
69
|
+
*/
|
|
70
|
+
export declare const oklchToXyz: (_context: Context, args: CSSValue[]) => [number, number, number, number];
|
|
71
|
+
/**
|
|
72
|
+
* OKLab to XYZ
|
|
73
|
+
*
|
|
74
|
+
* @param _context
|
|
75
|
+
* @param args
|
|
76
|
+
*/
|
|
77
|
+
export declare const oklabToXyz: (_context: Context, args: CSSValue[]) => [number, number, number, number];
|
|
78
|
+
/**
|
|
79
|
+
* XYZ-50 to XYZ
|
|
80
|
+
*
|
|
81
|
+
* @param args
|
|
82
|
+
*/
|
|
83
|
+
export declare const xyz50ToXYZ: (args: number[]) => [number, number, number];
|
|
84
|
+
/**
|
|
85
|
+
* Does nothing, required for SUPPORTED_COLOR_SPACES_FROM_XYZ in the _color() function
|
|
86
|
+
*
|
|
87
|
+
* @param args
|
|
88
|
+
*/
|
|
89
|
+
export declare const xyzFromXYZ: (args: [number, number, number, number]) => [number, number, number, number];
|
|
90
|
+
/**
|
|
91
|
+
* XYZ-65 to XYZ-50
|
|
92
|
+
*
|
|
93
|
+
* @param args
|
|
94
|
+
*/
|
|
95
|
+
export declare const xyz50FromXYZ: (args: [number, number, number, number]) => [number, number, number, number];
|
|
96
|
+
/**
|
|
97
|
+
* Convert XYZ to SRGB and Pack
|
|
98
|
+
*
|
|
99
|
+
* @param args
|
|
100
|
+
*/
|
|
101
|
+
export declare const convertXyz: (args: number[]) => number;
|
|
102
|
+
/**
|
|
103
|
+
* Convert XYZ-50 to SRGB and Pack
|
|
104
|
+
*
|
|
105
|
+
* @param args
|
|
106
|
+
*/
|
|
107
|
+
export declare const convertXyz50: (args: number[]) => number;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ITypeDescriptor } from '../type-descriptor';
|
|
2
|
+
import { Context } from '../../core/context';
|
|
3
|
+
export type Color = number;
|
|
4
|
+
export declare const color: ITypeDescriptor<Color>;
|
|
5
|
+
export declare const parseColor: (context: Context, value: string) => Color;
|
|
6
|
+
export declare const COLORS: {
|
|
7
|
+
[key: string]: Color;
|
|
8
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { CSSValue } from '../../syntax/parser';
|
|
2
|
+
import { CSSLinearGradientImage, CSSRadialGradientImage } from '../image';
|
|
3
|
+
import { Context } from '../../../core/context';
|
|
4
|
+
export declare const webkitGradient: (context: Context, tokens: CSSValue[]) => CSSLinearGradientImage | CSSRadialGradientImage;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { LIST_STYLE_TYPE } from '../../property-descriptors/list-style-type';
|
|
2
|
+
import { CSSParsedCounterDeclaration } from '../../index';
|
|
3
|
+
export declare class CounterState {
|
|
4
|
+
private readonly counters;
|
|
5
|
+
getCounterValue(name: string): number;
|
|
6
|
+
getCounterValues(name: string): readonly number[];
|
|
7
|
+
pop(counters: string[]): void;
|
|
8
|
+
parse(style: CSSParsedCounterDeclaration): string[];
|
|
9
|
+
}
|
|
10
|
+
export declare const createCounterText: (value: number, type: LIST_STYLE_TYPE, appendSuffix: boolean) => string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CSSValue } from '../../syntax/parser';
|
|
2
|
+
import { CSSRadialGradientImage, GradientColorStop, GradientCorner, UnprocessedGradientColorStop } from '../image';
|
|
3
|
+
import { Context } from '../../../core/context';
|
|
4
|
+
export declare const parseColorStop: (context: Context, args: CSSValue[]) => UnprocessedGradientColorStop;
|
|
5
|
+
export declare const processColorStops: (stops: UnprocessedGradientColorStop[], lineLength: number) => GradientColorStop[];
|
|
6
|
+
export declare const calculateGradientDirection: (angle: number | GradientCorner, width: number, height: number) => [number, number, number, number, number];
|
|
7
|
+
export declare const calculateRadius: (gradient: CSSRadialGradientImage, x: number, y: number, width: number, height: number) => [number, number];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CSSValue } from '../../syntax/parser';
|
|
2
|
+
import { CSSRadialGradientImage } from '../image';
|
|
3
|
+
import { Context } from '../../../core/context';
|
|
4
|
+
export declare const CLOSEST_SIDE = "closest-side";
|
|
5
|
+
export declare const FARTHEST_SIDE = "farthest-side";
|
|
6
|
+
export declare const CLOSEST_CORNER = "closest-corner";
|
|
7
|
+
export declare const FARTHEST_CORNER = "farthest-corner";
|
|
8
|
+
export declare const CIRCLE = "circle";
|
|
9
|
+
export declare const ELLIPSE = "ellipse";
|
|
10
|
+
export declare const COVER = "cover";
|
|
11
|
+
export declare const CONTAIN = "contain";
|
|
12
|
+
export declare const radialGradient: (context: Context, tokens: CSSValue[]) => CSSRadialGradientImage;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { CSSValue } from '../syntax/parser';
|
|
2
|
+
import { Color } from './color';
|
|
3
|
+
import { ITypeDescriptor } from '../type-descriptor';
|
|
4
|
+
import { LengthPercentage } from './length-percentage';
|
|
5
|
+
export declare const enum CSSImageType {
|
|
6
|
+
URL = 0,
|
|
7
|
+
LINEAR_GRADIENT = 1,
|
|
8
|
+
RADIAL_GRADIENT = 2,
|
|
9
|
+
REPEATING_LINEAR_GRADIENT = 3
|
|
10
|
+
}
|
|
11
|
+
export declare const isLinearGradient: (background: ICSSImage) => background is CSSLinearGradientImage;
|
|
12
|
+
export declare const isRadialGradient: (background: ICSSImage) => background is CSSRadialGradientImage;
|
|
13
|
+
export declare const isRepeatingLinearGradient: (background: ICSSImage) => background is CSSLinearGradientImage;
|
|
14
|
+
export interface UnprocessedGradientColorStop {
|
|
15
|
+
color: Color;
|
|
16
|
+
stop: LengthPercentage | null;
|
|
17
|
+
}
|
|
18
|
+
export interface GradientColorStop {
|
|
19
|
+
color: Color;
|
|
20
|
+
stop: number;
|
|
21
|
+
}
|
|
22
|
+
export interface ICSSImage {
|
|
23
|
+
type: CSSImageType;
|
|
24
|
+
}
|
|
25
|
+
export interface CSSURLImage extends ICSSImage {
|
|
26
|
+
url: string;
|
|
27
|
+
type: CSSImageType.URL;
|
|
28
|
+
}
|
|
29
|
+
export type GradientCorner = [LengthPercentage, LengthPercentage];
|
|
30
|
+
interface ICSSGradientImage extends ICSSImage {
|
|
31
|
+
stops: UnprocessedGradientColorStop[];
|
|
32
|
+
}
|
|
33
|
+
export interface CSSLinearGradientImage extends ICSSGradientImage {
|
|
34
|
+
angle: number | GradientCorner;
|
|
35
|
+
type: CSSImageType.LINEAR_GRADIENT | CSSImageType.REPEATING_LINEAR_GRADIENT;
|
|
36
|
+
}
|
|
37
|
+
export declare const enum CSSRadialShape {
|
|
38
|
+
CIRCLE = 0,
|
|
39
|
+
ELLIPSE = 1
|
|
40
|
+
}
|
|
41
|
+
export declare const enum CSSRadialExtent {
|
|
42
|
+
CLOSEST_SIDE = 0,
|
|
43
|
+
FARTHEST_SIDE = 1,
|
|
44
|
+
CLOSEST_CORNER = 2,
|
|
45
|
+
FARTHEST_CORNER = 3
|
|
46
|
+
}
|
|
47
|
+
export type CSSRadialSize = CSSRadialExtent | LengthPercentage[];
|
|
48
|
+
export interface CSSRadialGradientImage extends ICSSGradientImage {
|
|
49
|
+
type: CSSImageType.RADIAL_GRADIENT;
|
|
50
|
+
shape: CSSRadialShape;
|
|
51
|
+
size: CSSRadialSize;
|
|
52
|
+
position: LengthPercentage[];
|
|
53
|
+
}
|
|
54
|
+
export declare const image: ITypeDescriptor<ICSSImage>;
|
|
55
|
+
export declare function isSupportedImage(value: CSSValue): boolean;
|
|
56
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type CSSTypes = 'angle' | 'color' | 'image' | 'length' | 'length-percentage' | 'time';
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { DimensionToken, NumberValueToken, TokenType } from '../syntax/tokenizer';
|
|
2
|
+
import { CSSValue, CSSFunction } from '../syntax/parser';
|
|
3
|
+
/**
|
|
4
|
+
* Internal token representing a calc() expression that has both a percentage
|
|
5
|
+
* component and a pixel offset. Created at parse time and resolved at render
|
|
6
|
+
* time once the container size is known.
|
|
7
|
+
*
|
|
8
|
+
* Extends NumberValueToken so it is structurally assignable wherever
|
|
9
|
+
* LengthPercentage (DimensionToken | NumberValueToken) is expected,
|
|
10
|
+
* avoiding widespread type changes.
|
|
11
|
+
*/
|
|
12
|
+
export interface CalcWithPercentage extends NumberValueToken {
|
|
13
|
+
type: TokenType.NUMBER_TOKEN;
|
|
14
|
+
/** The percentage coefficient (extracted from the calc expression). */
|
|
15
|
+
_calcPercentage: number;
|
|
16
|
+
/** The pixel offset (extracted from the calc expression). */
|
|
17
|
+
_calcPixelOffset: number;
|
|
18
|
+
}
|
|
19
|
+
export type LengthPercentage = DimensionToken | NumberValueToken;
|
|
20
|
+
export type LengthPercentageTuple = [LengthPercentage] | [LengthPercentage, LengthPercentage];
|
|
21
|
+
export declare const isLengthPercentage: (token: CSSValue) => token is LengthPercentage;
|
|
22
|
+
/**
|
|
23
|
+
* Check if a token is a CalcWithPercentage deferred token.
|
|
24
|
+
* Accepts CSSValue (structural duck-type check) for use in type guards.
|
|
25
|
+
*/
|
|
26
|
+
export declare const isCalcWithPercentage: (token: CSSValue) => token is CalcWithPercentage;
|
|
27
|
+
/**
|
|
28
|
+
* Check if a token is a calc() function
|
|
29
|
+
*/
|
|
30
|
+
export declare const isCalcFunction: (token: CSSValue) => token is CSSFunction;
|
|
31
|
+
/**
|
|
32
|
+
* Parse a calc() token and produce a LengthPercentage.
|
|
33
|
+
*
|
|
34
|
+
* Uses two-point evaluation to extract the percentage coefficient and pixel
|
|
35
|
+
* offset from a calc() expression so it can be resolved later at render time
|
|
36
|
+
* when the container size is known.
|
|
37
|
+
*
|
|
38
|
+
* evaluate(0) → pixelOffset
|
|
39
|
+
* evaluate(100) → percentage + pixelOffset → percentage = evaluate(100) - pixelOffset
|
|
40
|
+
*
|
|
41
|
+
* If the expression has no percentage component, returns a plain NUMBER_TOKEN
|
|
42
|
+
* for backwards compatibility.
|
|
43
|
+
*/
|
|
44
|
+
export declare const parseCalcForLengthPercentage: (calcToken: CSSFunction) => LengthPercentage | null;
|
|
45
|
+
/**
|
|
46
|
+
* Convenience helper for parsing an optional calc() or length-percentage value.
|
|
47
|
+
* Used by property descriptors that accept both calc() and regular length-percentage tokens.
|
|
48
|
+
* Returns null if the value is neither a calc() function nor a length-percentage token.
|
|
49
|
+
*/
|
|
50
|
+
export declare const parseOptionalCalcOrLength: (value: CSSValue) => LengthPercentage | null;
|
|
51
|
+
/**
|
|
52
|
+
* Evaluate a calc() expression and convert to LengthPercentage token
|
|
53
|
+
* Supports basic arithmetic: +, -, *, /
|
|
54
|
+
* Note: Percentages in calc() are converted based on a context value
|
|
55
|
+
*/
|
|
56
|
+
export declare const evaluateCalcToLengthPercentage: (calcToken: CSSFunction, contextValue?: number) => LengthPercentage | null;
|
|
57
|
+
export declare const parseLengthPercentageTuple: (tokens: LengthPercentage[]) => LengthPercentageTuple;
|
|
58
|
+
export declare const ZERO_LENGTH: NumberValueToken;
|
|
59
|
+
export declare const FIFTY_PERCENT: NumberValueToken;
|
|
60
|
+
export declare const HUNDRED_PERCENT: NumberValueToken;
|
|
61
|
+
export declare const getAbsoluteValueForTuple: (tuple: LengthPercentageTuple, width: number, height: number) => [number, number];
|
|
62
|
+
export declare const getAbsoluteValue: (token: LengthPercentage, parent: number) => number;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safe arithmetic expression evaluator — replaces `new Function()`.
|
|
3
|
+
*
|
|
4
|
+
* Supports only: numbers, +, -, *, /, parentheses.
|
|
5
|
+
* Does NOT execute arbitrary code. Returns NaN on any illegal token.
|
|
6
|
+
*/
|
|
7
|
+
declare const safeEvalArithmetic: (expr: string) => number;
|
|
8
|
+
export default safeEvalArithmetic;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Bounds } from '../css/layout/bounds';
|
|
2
|
+
import { Context } from '../core/context';
|
|
3
|
+
export interface CloneOptions {
|
|
4
|
+
ignoreElements?: (element: Element) => boolean;
|
|
5
|
+
onclone?: (document: Document, element: HTMLElement) => void;
|
|
6
|
+
allowTaint?: boolean;
|
|
7
|
+
iframeContainer?: HTMLElement | ShadowRoot;
|
|
8
|
+
}
|
|
9
|
+
export interface WindowOptions {
|
|
10
|
+
scrollX: number;
|
|
11
|
+
scrollY: number;
|
|
12
|
+
windowWidth: number;
|
|
13
|
+
windowHeight: number;
|
|
14
|
+
}
|
|
15
|
+
export type CloneConfigurations = CloneOptions & {
|
|
16
|
+
inlineImages: boolean;
|
|
17
|
+
copyStyles: boolean;
|
|
18
|
+
cspNonce?: string;
|
|
19
|
+
};
|
|
20
|
+
export declare class DocumentCloner {
|
|
21
|
+
private readonly context;
|
|
22
|
+
private readonly options;
|
|
23
|
+
private readonly scrolledElements;
|
|
24
|
+
private readonly referenceElement;
|
|
25
|
+
clonedReferenceElement?: HTMLElement;
|
|
26
|
+
private readonly documentElement;
|
|
27
|
+
private readonly counters;
|
|
28
|
+
private readonly slotCloner;
|
|
29
|
+
private quoteDepth;
|
|
30
|
+
constructor(context: Context, element: HTMLElement, options: CloneConfigurations);
|
|
31
|
+
toIFrame(ownerDocument: Document, windowSize: Bounds): Promise<HTMLIFrameElement>;
|
|
32
|
+
createElementClone<T extends HTMLElement | SVGElement>(node: T): HTMLElement | SVGElement;
|
|
33
|
+
createCustomElementClone(node: HTMLElement): HTMLElement;
|
|
34
|
+
createStyleClone(node: HTMLStyleElement): HTMLStyleElement;
|
|
35
|
+
createCanvasClone(canvas: HTMLCanvasElement): HTMLImageElement | HTMLCanvasElement;
|
|
36
|
+
createVideoClone(video: HTMLVideoElement): HTMLCanvasElement;
|
|
37
|
+
appendChildNode(clone: HTMLElement | SVGElement, child: Node, copyStyles: boolean): void;
|
|
38
|
+
/**
|
|
39
|
+
* Clone child nodes from source element to clone element.
|
|
40
|
+
* Delegates to SlotCloner which handles shadow DOM, slots, and light DOM.
|
|
41
|
+
*/
|
|
42
|
+
cloneChildNodes(node: Element, clone: HTMLElement | SVGElement, copyStyles: boolean): void;
|
|
43
|
+
cloneNode(node: Node, copyStyles: boolean): Node;
|
|
44
|
+
resolvePseudoContent(node: Element, clone: Element, style: CSSStyleDeclaration, pseudoElt: PseudoElementType): HTMLElement | void;
|
|
45
|
+
static destroy(container: HTMLIFrameElement): boolean;
|
|
46
|
+
}
|
|
47
|
+
declare enum PseudoElementType {
|
|
48
|
+
BEFORE = 0,
|
|
49
|
+
AFTER = 1
|
|
50
|
+
}
|
|
51
|
+
export declare const copyCSSStyles: <T extends HTMLElement | SVGElement>(style: CSSStyleDeclaration, target: T) => T;
|
|
52
|
+
/**
|
|
53
|
+
* Serialise a document type declaration to an HTML string.
|
|
54
|
+
* @internal – exported for testing only, not part of the public API.
|
|
55
|
+
*/
|
|
56
|
+
export declare const serializeDoctype: (doctype?: DocumentType | null) => string;
|
|
57
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOM Normalizer
|
|
3
|
+
* Handles DOM side effects that need to happen before rendering
|
|
4
|
+
* Extracted from ElementContainer to follow SRP
|
|
5
|
+
*/
|
|
6
|
+
import { CSSParsedDeclaration } from '../css';
|
|
7
|
+
/**
|
|
8
|
+
* Stored original styles for restoration
|
|
9
|
+
*/
|
|
10
|
+
export interface OriginalStyles {
|
|
11
|
+
animationDuration?: string;
|
|
12
|
+
transform?: string;
|
|
13
|
+
rotate?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Normalize element styles for accurate rendering
|
|
17
|
+
* This includes disabling animations and neutralizing transforms.
|
|
18
|
+
*/
|
|
19
|
+
export declare class DOMNormalizer {
|
|
20
|
+
/**
|
|
21
|
+
* Normalize a single element and return original styles.
|
|
22
|
+
*
|
|
23
|
+
* ## Why we replace transforms with an identity value instead of "none"
|
|
24
|
+
*
|
|
25
|
+
* `getBoundingClientRect()` returns visual (post-transform) coordinates, so we
|
|
26
|
+
* must neutralize any active transform before measuring element bounds.
|
|
27
|
+
*
|
|
28
|
+
* The naive approach of setting `transform: none` (or `rotate: none`) has a
|
|
29
|
+
* critical side-effect: per **CSS Transforms Level 2**, an element whose
|
|
30
|
+
* `transform` is non-none automatically becomes the **containing block** for
|
|
31
|
+
* all of its `position: absolute` *and* `position: fixed` descendants.
|
|
32
|
+
* Setting it to `none` destroys that role, causing children to resolve their
|
|
33
|
+
* percentage dimensions and offsets against an unintended ancestor — which
|
|
34
|
+
* produces completely wrong bounds.
|
|
35
|
+
*
|
|
36
|
+
* Solution: instead of removing the transform, we replace it with a visually
|
|
37
|
+
* inert identity value:
|
|
38
|
+
*
|
|
39
|
+
* - `transform: scale(0.5)` → `transform: translate(0, 0)`
|
|
40
|
+
* - `translate(0, 0)` is an identity transform (no visual change, no layout shift).
|
|
41
|
+
* - `getBoundingClientRect()` returns the same layout-space coordinates as
|
|
42
|
+
* if there were no transform at all.
|
|
43
|
+
* - Because the value is still non-none, the element **remains a containing
|
|
44
|
+
* block** for both `position: absolute` and `position: fixed` descendants.
|
|
45
|
+
*
|
|
46
|
+
* - `rotate: 45deg` → `rotate: 0deg`
|
|
47
|
+
* - `0deg` is the identity rotation; `0deg ≠ none`, so the same containing-
|
|
48
|
+
* block guarantee holds.
|
|
49
|
+
*
|
|
50
|
+
* @param element - Element to normalize
|
|
51
|
+
* @param styles - Parsed CSS styles
|
|
52
|
+
* @returns Original styles map for restoration
|
|
53
|
+
*/
|
|
54
|
+
static normalizeElement(element: Element, styles: CSSParsedDeclaration): OriginalStyles;
|
|
55
|
+
/**
|
|
56
|
+
* Restore element styles after rendering.
|
|
57
|
+
*
|
|
58
|
+
* @param element - Element to restore
|
|
59
|
+
* @param originalStyles - Original styles to restore
|
|
60
|
+
*/
|
|
61
|
+
static restoreElement(element: Element, originalStyles: OriginalStyles): void;
|
|
62
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { CSSParsedDeclaration } from '../css/index';
|
|
2
|
+
import { TextContainer } from './text-container';
|
|
3
|
+
import { Bounds } from '../css/layout/bounds';
|
|
4
|
+
import { Context } from '../core/context';
|
|
5
|
+
export interface ElementContainerOptions {
|
|
6
|
+
normalizeDom?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare class ElementContainer {
|
|
9
|
+
protected readonly context: Context;
|
|
10
|
+
readonly styles: CSSParsedDeclaration;
|
|
11
|
+
readonly textNodes: TextContainer[];
|
|
12
|
+
readonly elements: ElementContainer[];
|
|
13
|
+
bounds: Bounds;
|
|
14
|
+
createsStackingContext: boolean;
|
|
15
|
+
createsRealStackingContext: boolean;
|
|
16
|
+
isListOwner: boolean;
|
|
17
|
+
debugRender: boolean;
|
|
18
|
+
private originalStyles?;
|
|
19
|
+
private originalElement?;
|
|
20
|
+
constructor(context: Context, element: Element, options?: ElementContainerOptions);
|
|
21
|
+
/**
|
|
22
|
+
* Restore original element styles (if normalized)
|
|
23
|
+
* Call this after rendering is complete to clean up DOM state
|
|
24
|
+
*/
|
|
25
|
+
restore(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Recursively restore all elements in the tree
|
|
28
|
+
* Call this on the root container after rendering is complete
|
|
29
|
+
*/
|
|
30
|
+
restoreTree(): void;
|
|
31
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ElementContainer } from '../element-container';
|
|
2
|
+
import { Context } from '../../core/context';
|
|
3
|
+
export declare class OLElementContainer extends ElementContainer {
|
|
4
|
+
readonly start: number;
|
|
5
|
+
readonly reversed: boolean;
|
|
6
|
+
constructor(context: Context, element: HTMLOListElement);
|
|
7
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ElementContainer } from '../element-container';
|
|
2
|
+
import { Context } from '../../core/context';
|
|
3
|
+
export declare class TextareaElementContainer extends ElementContainer {
|
|
4
|
+
readonly value: string;
|
|
5
|
+
constructor(context: Context, element: HTMLTextAreaElement);
|
|
6
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOM Node Type Guards
|
|
3
|
+
*
|
|
4
|
+
* All DOM node type guards consolidated here to eliminate duplication
|
|
5
|
+
* and provide a single source of truth for node type checking.
|
|
6
|
+
*/
|
|
7
|
+
export declare const isElementNode: (node: Node) => node is Element;
|
|
8
|
+
export declare const isTextNode: (node: Node) => node is Text;
|
|
9
|
+
export declare const isSVGElementNode: (element: Element) => element is SVGElement;
|
|
10
|
+
export declare const isHTMLElementNode: (node: Node) => node is HTMLElement;
|
|
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
|
+
export declare const isLIElement: (node: Element) => node is HTMLLIElement;
|
|
25
|
+
export declare const isOLElement: (node: Element) => node is HTMLOListElement;
|
|
26
|
+
export declare const isCustomElement: (element: Element) => element is HTMLElement;
|
|
27
|
+
/**
|
|
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.
|
|
31
|
+
*/
|
|
32
|
+
export declare const canHavePseudoElements: (element: Element) => boolean;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ElementContainer } from '../element-container';
|
|
2
|
+
import { Context } from '../../core/context';
|
|
3
|
+
export declare class CanvasElementContainer extends ElementContainer {
|
|
4
|
+
canvas: HTMLCanvasElement;
|
|
5
|
+
intrinsicWidth: number;
|
|
6
|
+
intrinsicHeight: number;
|
|
7
|
+
constructor(context: Context, canvas: HTMLCanvasElement);
|
|
8
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ElementContainer } from '../element-container';
|
|
2
|
+
import { Color } from '../../css/types/color';
|
|
3
|
+
import { Context } from '../../core/context';
|
|
4
|
+
type ParseTreeFunction = (context: Context, node: Node) => ElementContainer;
|
|
5
|
+
export declare class IFrameElementContainer extends ElementContainer {
|
|
6
|
+
src: string;
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
tree?: ElementContainer;
|
|
10
|
+
backgroundColor: Color;
|
|
11
|
+
private parseTreeFn?;
|
|
12
|
+
constructor(context: Context, iframe: HTMLIFrameElement, parseTreeFn?: ParseTreeFunction);
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ElementContainer } from '../element-container';
|
|
2
|
+
import { Context } from '../../core/context';
|
|
3
|
+
export declare class ImageElementContainer extends ElementContainer {
|
|
4
|
+
src: string;
|
|
5
|
+
intrinsicWidth: number;
|
|
6
|
+
intrinsicHeight: number;
|
|
7
|
+
constructor(context: Context, img: HTMLImageElement);
|
|
8
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { CanvasElementContainer } from './canvas-element-container';
|
|
2
|
+
import { ImageElementContainer } from './image-element-container';
|
|
3
|
+
import { SVGElementContainer } from './svg-element-container';
|
|
4
|
+
export type ReplacedElementContainer = CanvasElementContainer | ImageElementContainer | SVGElementContainer;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ElementContainer } from '../element-container';
|
|
2
|
+
import { Context } from '../../core/context';
|
|
3
|
+
export declare const CHECKBOX = "checkbox";
|
|
4
|
+
export declare const RADIO = "radio";
|
|
5
|
+
export declare const PASSWORD = "password";
|
|
6
|
+
export declare const INPUT_COLOR = 707406591;
|
|
7
|
+
export declare const PLACEHOLDER_COLOR = 1970632191;
|
|
8
|
+
export declare class InputElementContainer extends ElementContainer {
|
|
9
|
+
readonly type: string;
|
|
10
|
+
readonly checked: boolean;
|
|
11
|
+
readonly value: string;
|
|
12
|
+
readonly isPlaceholder: boolean;
|
|
13
|
+
constructor(context: Context, input: HTMLInputElement);
|
|
14
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ElementContainer } from '../element-container';
|
|
2
|
+
import { Context } from '../../core/context';
|
|
3
|
+
export declare class SVGElementContainer extends ElementContainer {
|
|
4
|
+
svg: string;
|
|
5
|
+
intrinsicWidth: number;
|
|
6
|
+
intrinsicHeight: number;
|
|
7
|
+
constructor(context: Context, img: SVGSVGElement);
|
|
8
|
+
}
|