pagyra-js 0.0.20 → 0.0.21

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.
Files changed (286) hide show
  1. package/README.md +55 -0
  2. package/dist/assets/fonts/licenses/selawik/SIL Open Font License.txt +43 -0
  3. package/dist/assets/fonts/ttf/arimo/Arimo-Bold.ttf +0 -0
  4. package/dist/assets/fonts/ttf/arimo/Arimo-BoldItalic.ttf +0 -0
  5. package/dist/assets/fonts/ttf/arimo/Arimo-Italic.ttf +0 -0
  6. package/dist/assets/fonts/ttf/arimo/Arimo-Regular.ttf +0 -0
  7. package/dist/assets/fonts/ttf/cinzeldecorative/CinzelDecorative-Black.ttf +0 -0
  8. package/dist/assets/fonts/ttf/cinzeldecorative/CinzelDecorative-Bold.ttf +0 -0
  9. package/dist/assets/fonts/ttf/cinzeldecorative/CinzelDecorative-Regular.ttf +0 -0
  10. package/dist/assets/fonts/ttf/dejavu/DejaVuSans.ttf +0 -0
  11. package/dist/assets/fonts/ttf/firecode/FiraCode-Bold.ttf +0 -0
  12. package/dist/assets/fonts/ttf/firecode/FiraCode-Light.ttf +0 -0
  13. package/dist/assets/fonts/ttf/firecode/FiraCode-Medium.ttf +0 -0
  14. package/dist/assets/fonts/ttf/firecode/FiraCode-Regular.ttf +0 -0
  15. package/dist/assets/fonts/ttf/firecode/FiraCode-SemiBold.ttf +0 -0
  16. package/dist/assets/fonts/ttf/notoemoji/NotoEmoji-Bold.ttf +0 -0
  17. package/dist/assets/fonts/ttf/notoemoji/NotoEmoji-Light.ttf +0 -0
  18. package/dist/assets/fonts/ttf/notoemoji/NotoEmoji-Medium.ttf +0 -0
  19. package/dist/assets/fonts/ttf/notoemoji/NotoEmoji-Regular.ttf +0 -0
  20. package/dist/assets/fonts/ttf/notoemoji/NotoEmoji-SemiBold.ttf +0 -0
  21. package/dist/assets/fonts/ttf/notosans/NotoSans-Regular.ttf +0 -0
  22. package/dist/assets/fonts/ttf/roboto/Roboto-Bold.ttf +0 -0
  23. package/dist/assets/fonts/ttf/roboto/Roboto-BoldItalic.ttf +0 -0
  24. package/dist/assets/fonts/ttf/roboto/Roboto-Italic.ttf +0 -0
  25. package/dist/assets/fonts/ttf/roboto/Roboto-Regular.ttf +0 -0
  26. package/dist/assets/fonts/ttf/selawik/selawk.ttf +0 -0
  27. package/dist/assets/fonts/ttf/selawik/selawkb.ttf +0 -0
  28. package/dist/assets/fonts/ttf/selawik/selawkl.ttf +0 -0
  29. package/dist/assets/fonts/ttf/selawik/selawksb.ttf +0 -0
  30. package/dist/assets/fonts/ttf/selawik/selawksl.ttf +0 -0
  31. package/dist/assets/fonts/ttf/stixtwomath/STIXTwoMath-Regular.ttf +0 -0
  32. package/dist/assets/fonts/ttf/tinos/Tinos-Bold.ttf +0 -0
  33. package/dist/assets/fonts/ttf/tinos/Tinos-BoldItalic.ttf +0 -0
  34. package/dist/assets/fonts/ttf/tinos/Tinos-Italic.ttf +0 -0
  35. package/dist/assets/fonts/ttf/tinos/Tinos-Regular.ttf +0 -0
  36. package/dist/assets/fonts/woff/lato/lato-latin-400-italic.woff +0 -0
  37. package/dist/assets/fonts/woff/lato/lato-latin-400-normal.woff +0 -0
  38. package/dist/assets/fonts/woff/lato/lato-latin-700-italic.woff +0 -0
  39. package/dist/assets/fonts/woff/lato/lato-latin-700-normal.woff +0 -0
  40. package/dist/assets/fonts/woff2/caveat/Caveat-Bold.woff2 +0 -0
  41. package/dist/assets/fonts/woff2/caveat/Caveat-Regular.woff2 +0 -0
  42. package/dist/assets/fonts/woff2/lato/lato-latin-400-italic.woff2 +0 -0
  43. package/dist/assets/fonts/woff2/lato/lato-latin-400-normal.woff2 +0 -0
  44. package/dist/assets/fonts/woff2/lato/lato-latin-700-italic.woff2 +0 -0
  45. package/dist/assets/fonts/woff2/lato/lato-latin-700-normal.woff2 +0 -0
  46. package/dist/browser/pagyra.min.js +34 -34
  47. package/dist/browser/pagyra.min.js.map +4 -4
  48. package/dist/playground/server.js +2 -0
  49. package/dist/src/css/compute-style/base-options.d.ts +7 -0
  50. package/dist/src/css/compute-style/base-options.js +24 -0
  51. package/dist/src/css/compute-style/declarations.d.ts +10 -0
  52. package/dist/src/css/compute-style/declarations.js +77 -0
  53. package/dist/src/css/compute-style/decoration.d.ts +8 -0
  54. package/dist/src/css/compute-style/decoration.js +55 -0
  55. package/dist/src/css/compute-style/defaults.d.ts +3 -0
  56. package/dist/src/css/compute-style/defaults.js +34 -0
  57. package/dist/src/css/compute-style/display.d.ts +3 -0
  58. package/dist/src/css/compute-style/display.js +85 -0
  59. package/dist/src/css/compute-style/float.d.ts +2 -0
  60. package/dist/src/css/compute-style/float.js +13 -0
  61. package/dist/src/css/compute-style/font.d.ts +12 -0
  62. package/dist/src/css/compute-style/font.js +57 -0
  63. package/dist/src/css/compute-style/overrides.d.ts +3 -0
  64. package/dist/src/css/compute-style/overrides.js +241 -0
  65. package/dist/src/css/compute-style.d.ts +2 -0
  66. package/dist/src/css/compute-style.js +34 -487
  67. package/dist/src/css/enums.d.ts +4 -0
  68. package/dist/src/css/enums.js +5 -0
  69. package/dist/src/css/layout-property-resolver.js +30 -18
  70. package/dist/src/css/length.d.ts +26 -2
  71. package/dist/src/css/length.js +48 -0
  72. package/dist/src/css/parsers/background-parser.js +1 -1
  73. package/dist/src/css/parsers/calc-parser.d.ts +2 -0
  74. package/dist/src/css/parsers/calc-parser.js +310 -0
  75. package/dist/src/css/parsers/content-parser.d.ts +2 -1
  76. package/dist/src/css/parsers/content-parser.js +7 -2
  77. package/dist/src/css/parsers/dimension-parser.js +37 -18
  78. package/dist/src/css/parsers/display-flex-parser.d.ts +4 -0
  79. package/dist/src/css/parsers/display-flex-parser.js +97 -0
  80. package/dist/src/css/parsers/filter-parser.d.ts +14 -0
  81. package/dist/src/css/parsers/filter-parser.js +255 -0
  82. package/dist/src/css/parsers/grid-parser-extended.d.ts +1 -0
  83. package/dist/src/css/parsers/grid-parser-extended.js +40 -1
  84. package/dist/src/css/parsers/grid-parser.d.ts +5 -2
  85. package/dist/src/css/parsers/grid-parser.js +71 -7
  86. package/dist/src/css/parsers/length-parser.d.ts +8 -3
  87. package/dist/src/css/parsers/length-parser.js +45 -2
  88. package/dist/src/css/parsers/margin-block-parser.js +3 -3
  89. package/dist/src/css/parsers/margin-parser.js +3 -3
  90. package/dist/src/css/parsers/padding-block-parser.js +3 -3
  91. package/dist/src/css/parsers/padding-inline-parser.js +3 -3
  92. package/dist/src/css/parsers/padding-parser.js +6 -6
  93. package/dist/src/css/parsers/position-parser.js +2 -22
  94. package/dist/src/css/parsers/register-parsers.js +29 -2
  95. package/dist/src/css/parsers/word-break-parser.d.ts +2 -0
  96. package/dist/src/css/parsers/word-break-parser.js +23 -0
  97. package/dist/src/css/properties/grid.d.ts +16 -2
  98. package/dist/src/css/properties/layout.d.ts +3 -1
  99. package/dist/src/css/properties/layout.js +1 -1
  100. package/dist/src/css/properties/misc.d.ts +5 -0
  101. package/dist/src/css/properties/typography.d.ts +3 -0
  102. package/dist/src/css/properties/visual.d.ts +36 -0
  103. package/dist/src/css/shorthands/box-shorthand.d.ts +2 -2
  104. package/dist/src/css/style-inheritance.d.ts +2 -1
  105. package/dist/src/css/style-inheritance.js +1 -0
  106. package/dist/src/css/style.d.ts +30 -10
  107. package/dist/src/css/style.js +8 -1
  108. package/dist/src/css/ua-defaults/base-defaults.d.ts +1 -0
  109. package/dist/src/css/ua-defaults/base-defaults.js +10 -1
  110. package/dist/src/css/ua-defaults/element-defaults.js +0 -2
  111. package/dist/src/html/css/parse-css.d.ts +2 -0
  112. package/dist/src/html/css/parse-css.js +32 -3
  113. package/dist/src/html/dom-converter/background-images.d.ts +3 -0
  114. package/dist/src/html/dom-converter/background-images.js +88 -0
  115. package/dist/src/html/dom-converter/convert-dom-node.d.ts +5 -0
  116. package/dist/src/html/dom-converter/convert-dom-node.js +81 -0
  117. package/dist/src/html/dom-converter/handlers/br-handler.d.ts +2 -0
  118. package/dist/src/html/dom-converter/handlers/br-handler.js +20 -0
  119. package/dist/src/html/dom-converter/handlers/form-control-handler.d.ts +2 -0
  120. package/dist/src/html/dom-converter/handlers/form-control-handler.js +28 -0
  121. package/dist/src/html/dom-converter/handlers/img-handler.d.ts +2 -0
  122. package/dist/src/html/dom-converter/handlers/img-handler.js +4 -0
  123. package/dist/src/html/dom-converter/handlers/index.d.ts +4 -0
  124. package/dist/src/html/dom-converter/handlers/index.js +19 -0
  125. package/dist/src/html/dom-converter/handlers/svg-handler.d.ts +2 -0
  126. package/dist/src/html/dom-converter/handlers/svg-handler.js +32 -0
  127. package/dist/src/html/dom-converter/handlers/types.d.ts +12 -0
  128. package/dist/src/html/dom-converter/handlers/types.js +2 -0
  129. package/dist/src/html/dom-converter/helpers.d.ts +7 -0
  130. package/dist/src/html/dom-converter/helpers.js +35 -0
  131. package/dist/src/html/dom-converter/index.d.ts +1 -0
  132. package/dist/src/html/dom-converter/index.js +1 -0
  133. package/dist/src/html/dom-converter/pseudo-elements.d.ts +6 -0
  134. package/dist/src/html/dom-converter/pseudo-elements.js +48 -0
  135. package/dist/src/html/dom-converter/text.d.ts +15 -0
  136. package/dist/src/html/dom-converter/text.js +170 -0
  137. package/dist/src/html/dom-converter.d.ts +1 -5
  138. package/dist/src/html/dom-converter.js +1 -417
  139. package/dist/src/html/image-converter.d.ts +5 -0
  140. package/dist/src/html-to-pdf/document-css.d.ts +14 -0
  141. package/dist/src/html-to-pdf/document-css.js +45 -0
  142. package/dist/src/html-to-pdf/fonts.d.ts +16 -0
  143. package/dist/src/html-to-pdf/fonts.js +74 -0
  144. package/dist/src/html-to-pdf/header-footer.d.ts +14 -0
  145. package/dist/src/html-to-pdf/header-footer.js +101 -0
  146. package/dist/src/html-to-pdf/html-parser.d.ts +6 -0
  147. package/dist/src/html-to-pdf/html-parser.js +81 -0
  148. package/dist/src/html-to-pdf/index.d.ts +3 -0
  149. package/dist/src/html-to-pdf/index.js +2 -0
  150. package/dist/src/html-to-pdf/layout-build.d.ts +37 -0
  151. package/dist/src/html-to-pdf/layout-build.js +73 -0
  152. package/dist/src/html-to-pdf/prepare-html-render.d.ts +2 -0
  153. package/dist/src/html-to-pdf/prepare-html-render.js +121 -0
  154. package/dist/src/html-to-pdf/render-finalize.d.ts +15 -0
  155. package/dist/src/html-to-pdf/render-finalize.js +27 -0
  156. package/dist/src/html-to-pdf/render-html-to-pdf.d.ts +3 -0
  157. package/dist/src/html-to-pdf/render-html-to-pdf.js +25 -0
  158. package/dist/src/html-to-pdf/resource-loader.d.ts +6 -0
  159. package/dist/src/html-to-pdf/resource-loader.js +120 -0
  160. package/dist/src/html-to-pdf/types.d.ts +38 -0
  161. package/dist/src/html-to-pdf/types.js +2 -0
  162. package/dist/src/html-to-pdf.d.ts +1 -37
  163. package/dist/src/html-to-pdf.js +1 -537
  164. package/dist/src/image/js-png-backend.d.ts +7 -0
  165. package/dist/src/image/js-png-backend.js +9 -0
  166. package/dist/src/image/png-backend.d.ts +5 -0
  167. package/dist/src/image/png-backend.js +1 -0
  168. package/dist/src/image/png-wasm-loader.d.ts +5 -0
  169. package/dist/src/image/png-wasm-loader.js +59 -0
  170. package/dist/src/image/wasm/png_decoder_wasm.d.ts +8 -0
  171. package/dist/src/image/wasm/png_decoder_wasm.js +24 -0
  172. package/dist/src/image/wasm/png_decoder_wasm_bg.js +16 -0
  173. package/dist/src/image/wasm-png-backend.d.ts +6 -0
  174. package/dist/src/image/wasm-png-backend.js +17 -0
  175. package/dist/src/layout/counter.d.ts +1 -2
  176. package/dist/src/layout/counter.js +18 -18
  177. package/dist/src/layout/inline/inline-utils.d.ts +1 -1
  178. package/dist/src/layout/inline/inline-utils.js +8 -7
  179. package/dist/src/layout/inline/layout.js +16 -3
  180. package/dist/src/layout/inline/run-placer.d.ts +1 -0
  181. package/dist/src/layout/inline/run-placer.js +2 -10
  182. package/dist/src/layout/pipeline/out-of-flow-manager.js +25 -1
  183. package/dist/src/layout/strategies/block.js +35 -24
  184. package/dist/src/layout/strategies/flex.js +305 -61
  185. package/dist/src/layout/strategies/form.d.ts +2 -0
  186. package/dist/src/layout/strategies/form.js +38 -13
  187. package/dist/src/layout/strategies/grid.js +166 -29
  188. package/dist/src/layout/strategies/image.js +53 -27
  189. package/dist/src/layout/strategies/inline.js +26 -21
  190. package/dist/src/layout/strategies/table.js +26 -18
  191. package/dist/src/layout/utils/content-measurer.d.ts +1 -1
  192. package/dist/src/layout/utils/content-measurer.js +8 -7
  193. package/dist/src/layout/utils/floats.d.ts +1 -0
  194. package/dist/src/layout/utils/floats.js +14 -12
  195. package/dist/src/layout/utils/margin.d.ts +4 -4
  196. package/dist/src/layout/utils/margin.js +20 -16
  197. package/dist/src/layout/utils/node-math.d.ts +12 -6
  198. package/dist/src/layout/utils/node-math.js +71 -41
  199. package/dist/src/layout/utils/sizing.js +2 -1
  200. package/dist/src/pdf/font-subset/font-registry.d.ts +6 -0
  201. package/dist/src/pdf/font-subset/font-registry.js +30 -2
  202. package/dist/src/pdf/header-footer-renderer.js +12 -1
  203. package/dist/src/pdf/layout-tree-builder.js +5 -1
  204. package/dist/src/pdf/page-painter.js +13 -0
  205. package/dist/src/pdf/pagination.js +2 -2
  206. package/dist/src/pdf/renderer/box-painter.js +28 -3
  207. package/dist/src/pdf/renderer/page-paint.js +11 -3
  208. package/dist/src/pdf/renderers/radius-utils.js +31 -38
  209. package/dist/src/pdf/renderers/shape-renderer.js +1 -1
  210. package/dist/src/pdf/renderers/shape-utils.js +1 -1
  211. package/dist/src/pdf/renderers/text-renderer.d.ts +9 -1
  212. package/dist/src/pdf/renderers/text-renderer.js +36 -2
  213. package/dist/src/pdf/stacking/build-stacking-contexts.js +1 -2
  214. package/dist/src/pdf/stacking/resolve-paint-order.d.ts +5 -6
  215. package/dist/src/pdf/stacking/resolve-paint-order.js +29 -9
  216. package/dist/src/pdf/stacking/types.d.ts +14 -0
  217. package/dist/src/pdf/svg/shape-renderer.js +47 -20
  218. package/dist/src/pdf/types.d.ts +7 -1
  219. package/dist/src/pdf/utils/border-radius-utils.js +31 -38
  220. package/dist/src/pdf/utils/color-utils.js +17 -2
  221. package/dist/src/pdf/utils/filter-utils.d.ts +29 -0
  222. package/dist/src/pdf/utils/filter-utils.js +85 -0
  223. package/dist/src/pdf/utils/node-text-run-factory.js +1 -1
  224. package/dist/src/pdf/utils/text-layout-adjuster.d.ts +0 -8
  225. package/dist/src/pdf/utils/text-layout-adjuster.js +12 -9
  226. package/dist/src/units/units.d.ts +1 -1
  227. package/dist/tests/css/box-sizing.spec.d.ts +1 -0
  228. package/dist/tests/css/box-sizing.spec.js +46 -0
  229. package/dist/tests/css/calc-parser.spec.d.ts +1 -0
  230. package/dist/tests/css/calc-parser.spec.js +68 -0
  231. package/dist/tests/css/container-query-units.spec.d.ts +1 -0
  232. package/dist/tests/css/container-query-units.spec.js +64 -0
  233. package/dist/tests/css/content-parser.spec.js +13 -0
  234. package/dist/tests/css/filter-parser.spec.d.ts +1 -0
  235. package/dist/tests/css/filter-parser.spec.js +116 -0
  236. package/dist/tests/css/flex-shorthand.spec.d.ts +1 -0
  237. package/dist/tests/css/flex-shorthand.spec.js +45 -0
  238. package/dist/tests/css/grid-clamp.spec.d.ts +1 -0
  239. package/dist/tests/css/grid-clamp.spec.js +82 -0
  240. package/dist/tests/css/parse-css-pseudo.spec.d.ts +1 -0
  241. package/dist/tests/css/parse-css-pseudo.spec.js +26 -0
  242. package/dist/tests/helpers/render-utils.d.ts +18 -2
  243. package/dist/tests/helpers/render-utils.js +25 -12
  244. package/dist/tests/html/dom-converter-pseudo-elements.spec.d.ts +1 -0
  245. package/dist/tests/html/dom-converter-pseudo-elements.spec.js +33 -0
  246. package/dist/tests/html/dom-converter-text.spec.d.ts +1 -0
  247. package/dist/tests/html/dom-converter-text.spec.js +67 -0
  248. package/dist/tests/image/png-backend.spec.d.ts +1 -0
  249. package/dist/tests/image/png-backend.spec.js +34 -0
  250. package/dist/tests/layout/box-sizing.spec.d.ts +1 -0
  251. package/dist/tests/layout/box-sizing.spec.js +75 -0
  252. package/dist/tests/layout/calc-padding.spec.d.ts +1 -0
  253. package/dist/tests/layout/calc-padding.spec.js +19 -0
  254. package/dist/tests/layout/container-query-units.spec.d.ts +1 -0
  255. package/dist/tests/layout/container-query-units.spec.js +24 -0
  256. package/dist/tests/layout/flex-auto-height.spec.d.ts +1 -0
  257. package/dist/tests/layout/flex-auto-height.spec.js +35 -0
  258. package/dist/tests/layout/flex-wrap-cards.spec.d.ts +1 -0
  259. package/dist/tests/layout/flex-wrap-cards.spec.js +16 -0
  260. package/dist/tests/layout/flex-wrap-grow-align-content.spec.d.ts +1 -0
  261. package/dist/tests/layout/flex-wrap-grow-align-content.spec.js +20 -0
  262. package/dist/tests/layout/grid-clamp-gap.spec.d.ts +1 -0
  263. package/dist/tests/layout/grid-clamp-gap.spec.js +22 -0
  264. package/dist/tests/layout/inline-fragments.spec.js +38 -0
  265. package/dist/tests/layout/paged-body-margin.spec.d.ts +1 -0
  266. package/dist/tests/layout/paged-body-margin.spec.js +92 -0
  267. package/dist/tests/layout/pseudo-counters-generated-content.spec.d.ts +1 -0
  268. package/dist/tests/layout/pseudo-counters-generated-content.spec.js +51 -0
  269. package/dist/tests/layout/responsive-clamp-grid-parity.spec.d.ts +1 -0
  270. package/dist/tests/layout/responsive-clamp-grid-parity.spec.js +75 -0
  271. package/dist/tests/layout/run-placer-baseline.spec.js +13 -11
  272. package/dist/tests/pdf/backdrop-filter-noop.spec.d.ts +1 -0
  273. package/dist/tests/pdf/backdrop-filter-noop.spec.js +140 -0
  274. package/dist/tests/pdf/filter-drop-shadow.spec.d.ts +1 -0
  275. package/dist/tests/pdf/filter-drop-shadow.spec.js +74 -0
  276. package/dist/tests/pdf/filter-opacity.spec.d.ts +1 -0
  277. package/dist/tests/pdf/filter-opacity.spec.js +30 -0
  278. package/dist/tests/pdf/font-subset-registry-key.spec.d.ts +1 -0
  279. package/dist/tests/pdf/font-subset-registry-key.spec.js +66 -0
  280. package/dist/tests/pdf/selawik-opt-in.spec.d.ts +1 -0
  281. package/dist/tests/pdf/selawik-opt-in.spec.js +106 -0
  282. package/dist/tests/pdf/system-ui-fallback-subset-regression.spec.d.ts +1 -0
  283. package/dist/tests/pdf/system-ui-fallback-subset-regression.spec.js +39 -0
  284. package/dist/tests/pdf/text-renderer-fallback.spec.js +55 -0
  285. package/dist/tests/pdf/text-transform-matrix.spec.js +8 -7
  286. package/package.json +2 -2
@@ -0,0 +1,241 @@
1
+ import { BoxSizing } from "../enums.js";
2
+ import { normalizeFontWeight } from "../font-weight.js";
3
+ import { CssUnitResolver } from "../css-unit-resolver.js";
4
+ import { LayoutPropertyResolver } from "../layout-property-resolver.js";
5
+ import { resolveLineHeightInput } from "../line-height.js";
6
+ import { isClampNumericLength, resolveClampNumericLength, resolveNumberLike, } from "../length.js";
7
+ function assignMarginWithFallback(styleValue, fallbackValue, fontSize, rootFontSize, assignLength, setter) {
8
+ if (styleValue !== undefined) {
9
+ assignLength(styleValue, setter);
10
+ return;
11
+ }
12
+ const resolvedFallback = resolveNumberLike(fallbackValue, fontSize, rootFontSize);
13
+ if (resolvedFallback !== undefined) {
14
+ setter(resolvedFallback);
15
+ }
16
+ }
17
+ export function applyStyleInitOverrides(styleInit, styleOptions, mergedDefaults, computedFontSize, rootFontReference) {
18
+ if (styleInit.lineHeight !== undefined) {
19
+ styleOptions.lineHeight = resolveLineHeightInput(styleInit.lineHeight, computedFontSize, rootFontReference);
20
+ }
21
+ const unitResolver = new CssUnitResolver(computedFontSize, rootFontReference);
22
+ const assignLength = (value, setter) => {
23
+ unitResolver.createLengthAssigner(setter)(value);
24
+ };
25
+ const assignNumberLength = (value, setter) => {
26
+ unitResolver.createNumberAssigner(setter)(value);
27
+ };
28
+ const assignGapLength = (value, setter) => {
29
+ if (isClampNumericLength(value)) {
30
+ const resolved = resolveClampNumericLength(value, computedFontSize, rootFontReference);
31
+ if (resolved !== undefined) {
32
+ setter(resolved);
33
+ }
34
+ return;
35
+ }
36
+ unitResolver.createNumberAssigner(setter)(value);
37
+ };
38
+ if (styleInit.boxSizing !== undefined) {
39
+ styleOptions.boxSizing = styleInit.boxSizing === "border-box" ? BoxSizing.BorderBox : BoxSizing.ContentBox;
40
+ }
41
+ if (styleInit.position !== undefined)
42
+ styleOptions.position = styleInit.position;
43
+ if (styleInit.top !== undefined)
44
+ assignLength(styleInit.top, (v) => (styleOptions.top = v));
45
+ if (styleInit.right !== undefined)
46
+ assignLength(styleInit.right, (v) => (styleOptions.right = v));
47
+ if (styleInit.bottom !== undefined)
48
+ assignLength(styleInit.bottom, (v) => (styleOptions.bottom = v));
49
+ if (styleInit.left !== undefined)
50
+ assignLength(styleInit.left, (v) => (styleOptions.left = v));
51
+ if (styleInit.zIndex !== undefined)
52
+ styleOptions.zIndex = styleInit.zIndex;
53
+ if (styleInit.color !== undefined)
54
+ styleOptions.color = styleInit.color;
55
+ if (styleInit.backgroundLayers !== undefined)
56
+ styleOptions.backgroundLayers = styleInit.backgroundLayers;
57
+ if (styleInit.clipPath !== undefined)
58
+ styleOptions.clipPath = styleInit.clipPath;
59
+ if (styleInit.borderColor !== undefined)
60
+ styleOptions.borderColor = styleInit.borderColor;
61
+ if (styleInit.borderStyleTop !== undefined)
62
+ styleOptions.borderStyleTop = styleInit.borderStyleTop;
63
+ if (styleInit.borderStyleRight !== undefined)
64
+ styleOptions.borderStyleRight = styleInit.borderStyleRight;
65
+ if (styleInit.borderStyleBottom !== undefined)
66
+ styleOptions.borderStyleBottom = styleInit.borderStyleBottom;
67
+ if (styleInit.borderStyleLeft !== undefined)
68
+ styleOptions.borderStyleLeft = styleInit.borderStyleLeft;
69
+ if (styleInit.boxShadows !== undefined) {
70
+ styleOptions.boxShadows = styleInit.boxShadows.map((shadow) => ({
71
+ inset: shadow.inset,
72
+ offsetX: unitResolver.resolveShadowLength(shadow.offsetX),
73
+ offsetY: unitResolver.resolveShadowLength(shadow.offsetY),
74
+ blurRadius: unitResolver.resolveShadowLength(shadow.blurRadius, true),
75
+ spreadRadius: unitResolver.resolveShadowLength(shadow.spreadRadius),
76
+ color: shadow.color,
77
+ }));
78
+ }
79
+ if (styleInit.textShadows !== undefined) {
80
+ styleOptions.textShadows = styleInit.textShadows.map((shadow) => ({
81
+ offsetX: unitResolver.resolveShadowLength(shadow.offsetX),
82
+ offsetY: unitResolver.resolveShadowLength(shadow.offsetY),
83
+ blurRadius: unitResolver.resolveShadowLength(shadow.blurRadius, true),
84
+ color: shadow.color,
85
+ }));
86
+ }
87
+ if (styleInit.fontFamily !== undefined)
88
+ styleOptions.fontFamily = styleInit.fontFamily;
89
+ if (styleInit.fontStyle !== undefined)
90
+ styleOptions.fontStyle = styleInit.fontStyle;
91
+ if (styleInit.fontVariant !== undefined)
92
+ styleOptions.fontVariant = styleInit.fontVariant;
93
+ if (styleInit.fontWeight !== undefined)
94
+ styleOptions.fontWeight = normalizeFontWeight(styleInit.fontWeight);
95
+ if (styleInit.overflowWrap !== undefined)
96
+ styleOptions.overflowWrap = styleInit.overflowWrap;
97
+ if (styleInit.wordBreak !== undefined)
98
+ styleOptions.wordBreak = styleInit.wordBreak;
99
+ if (styleInit.content !== undefined)
100
+ styleOptions.content = styleInit.content;
101
+ if (styleInit.counterReset !== undefined)
102
+ styleOptions.counterReset = [...styleInit.counterReset];
103
+ if (styleInit.counterIncrement !== undefined)
104
+ styleOptions.counterIncrement = [...styleInit.counterIncrement];
105
+ assignMarginWithFallback(styleInit.marginTop, mergedDefaults.marginTop, computedFontSize, rootFontReference, assignLength, (v) => (styleOptions.marginTop = v));
106
+ assignMarginWithFallback(styleInit.marginRight, mergedDefaults.marginRight, computedFontSize, rootFontReference, assignLength, (v) => (styleOptions.marginRight = v));
107
+ assignMarginWithFallback(styleInit.marginBottom, mergedDefaults.marginBottom, computedFontSize, rootFontReference, assignLength, (v) => (styleOptions.marginBottom = v));
108
+ assignMarginWithFallback(styleInit.marginLeft, mergedDefaults.marginLeft, computedFontSize, rootFontReference, assignLength, (v) => (styleOptions.marginLeft = v));
109
+ if (styleInit.paddingTop !== undefined)
110
+ assignLength(styleInit.paddingTop, (v) => (styleOptions.paddingTop = v));
111
+ if (styleInit.paddingRight !== undefined)
112
+ assignLength(styleInit.paddingRight, (v) => (styleOptions.paddingRight = v));
113
+ if (styleInit.paddingBottom !== undefined)
114
+ assignLength(styleInit.paddingBottom, (v) => (styleOptions.paddingBottom = v));
115
+ if (styleInit.paddingLeft !== undefined)
116
+ assignLength(styleInit.paddingLeft, (v) => (styleOptions.paddingLeft = v));
117
+ if (styleInit.borderTop !== undefined)
118
+ assignLength(styleInit.borderTop, (v) => (styleOptions.borderTop = v));
119
+ if (styleInit.borderRight !== undefined)
120
+ assignLength(styleInit.borderRight, (v) => (styleOptions.borderRight = v));
121
+ if (styleInit.borderBottom !== undefined)
122
+ assignLength(styleInit.borderBottom, (v) => (styleOptions.borderBottom = v));
123
+ if (styleInit.borderLeft !== undefined)
124
+ assignLength(styleInit.borderLeft, (v) => (styleOptions.borderLeft = v));
125
+ if (styleInit.borderTopLeftRadiusX !== undefined)
126
+ assignNumberLength(styleInit.borderTopLeftRadiusX, (v) => (styleOptions.borderTopLeftRadiusX = v));
127
+ if (styleInit.borderTopLeftRadiusY !== undefined)
128
+ assignNumberLength(styleInit.borderTopLeftRadiusY, (v) => (styleOptions.borderTopLeftRadiusY = v));
129
+ if (styleInit.borderTopRightRadiusX !== undefined)
130
+ assignNumberLength(styleInit.borderTopRightRadiusX, (v) => (styleOptions.borderTopRightRadiusX = v));
131
+ if (styleInit.borderTopRightRadiusY !== undefined)
132
+ assignNumberLength(styleInit.borderTopRightRadiusY, (v) => (styleOptions.borderTopRightRadiusY = v));
133
+ if (styleInit.borderBottomRightRadiusX !== undefined)
134
+ assignNumberLength(styleInit.borderBottomRightRadiusX, (v) => (styleOptions.borderBottomRightRadiusX = v));
135
+ if (styleInit.borderBottomRightRadiusY !== undefined)
136
+ assignNumberLength(styleInit.borderBottomRightRadiusY, (v) => (styleOptions.borderBottomRightRadiusY = v));
137
+ if (styleInit.borderBottomLeftRadiusX !== undefined)
138
+ assignNumberLength(styleInit.borderBottomLeftRadiusX, (v) => (styleOptions.borderBottomLeftRadiusX = v));
139
+ if (styleInit.borderBottomLeftRadiusY !== undefined)
140
+ assignNumberLength(styleInit.borderBottomLeftRadiusY, (v) => (styleOptions.borderBottomLeftRadiusY = v));
141
+ if (styleInit.width !== undefined)
142
+ assignLength(styleInit.width, (v) => (styleOptions.width = v));
143
+ if (styleInit.minWidth !== undefined)
144
+ assignLength(styleInit.minWidth, (v) => (styleOptions.minWidth = v));
145
+ if (styleInit.maxWidth !== undefined)
146
+ assignLength(styleInit.maxWidth, (v) => (styleOptions.maxWidth = v));
147
+ if (styleInit.height !== undefined)
148
+ assignLength(styleInit.height, (v) => (styleOptions.height = v));
149
+ if (styleInit.minHeight !== undefined)
150
+ assignLength(styleInit.minHeight, (v) => (styleOptions.minHeight = v));
151
+ if (styleInit.maxHeight !== undefined)
152
+ assignLength(styleInit.maxHeight, (v) => (styleOptions.maxHeight = v));
153
+ if (styleInit.trackListColumns !== undefined) {
154
+ const resolved = LayoutPropertyResolver.resolveTrackDefinitionsInput(styleInit.trackListColumns, computedFontSize, rootFontReference);
155
+ if (resolved) {
156
+ styleOptions.trackListColumns = resolved;
157
+ }
158
+ }
159
+ if (styleInit.trackListRows !== undefined) {
160
+ const resolved = LayoutPropertyResolver.resolveTrackDefinitionsInput(styleInit.trackListRows, computedFontSize, rootFontReference);
161
+ if (resolved) {
162
+ styleOptions.trackListRows = resolved;
163
+ }
164
+ }
165
+ if (styleInit.autoFlow !== undefined) {
166
+ styleOptions.autoFlow = styleInit.autoFlow;
167
+ }
168
+ if (styleInit.rowGap !== undefined) {
169
+ assignGapLength(styleInit.rowGap, (v) => (styleOptions.rowGap = v));
170
+ }
171
+ if (styleInit.columnGap !== undefined) {
172
+ assignGapLength(styleInit.columnGap, (v) => (styleOptions.columnGap = v));
173
+ }
174
+ if (styleInit.gridColumnSpan !== undefined) {
175
+ styleOptions.gridColumnSpan = styleInit.gridColumnSpan;
176
+ }
177
+ if (styleInit.justifyContent !== undefined)
178
+ styleOptions.justifyContent = styleInit.justifyContent;
179
+ if (styleInit.alignItems !== undefined)
180
+ styleOptions.alignItems = styleInit.alignItems;
181
+ if (styleInit.alignContent !== undefined)
182
+ styleOptions.alignContent = styleInit.alignContent;
183
+ if (styleInit.alignSelf !== undefined)
184
+ styleOptions.alignSelf = styleInit.alignSelf;
185
+ if (styleInit.flexDirection !== undefined)
186
+ styleOptions.flexDirection = styleInit.flexDirection;
187
+ if (styleInit.flexWrap !== undefined)
188
+ styleOptions.flexWrap = styleInit.flexWrap;
189
+ if (styleInit.flexGrow !== undefined)
190
+ styleOptions.flexGrow = styleInit.flexGrow;
191
+ if (styleInit.flexShrink !== undefined)
192
+ styleOptions.flexShrink = styleInit.flexShrink;
193
+ if (styleInit.flexBasis !== undefined)
194
+ assignLength(styleInit.flexBasis, (v) => (styleOptions.flexBasis = v));
195
+ if (styleInit.textAlign !== undefined)
196
+ styleOptions.textAlign = styleInit.textAlign;
197
+ if (styleInit.textIndent !== undefined)
198
+ assignLength(styleInit.textIndent, (v) => (styleOptions.textIndent = v));
199
+ if (styleInit.textTransform !== undefined)
200
+ styleOptions.textTransform = styleInit.textTransform;
201
+ if (styleInit.letterSpacing !== undefined)
202
+ assignNumberLength(styleInit.letterSpacing, (v) => (styleOptions.letterSpacing = v));
203
+ if (styleInit.listStyleType !== undefined)
204
+ styleOptions.listStyleType = styleInit.listStyleType;
205
+ if (styleInit.transform !== undefined) {
206
+ styleOptions.transform = styleInit.transform;
207
+ }
208
+ if (styleInit.objectFit !== undefined) {
209
+ styleOptions.objectFit = styleInit.objectFit;
210
+ }
211
+ if (styleInit.opacity !== undefined) {
212
+ styleOptions.opacity = styleInit.opacity;
213
+ }
214
+ if (styleInit.filter !== undefined) {
215
+ // Resolver unidades relativas em blur() e drop-shadow()
216
+ styleOptions.filter = styleInit.filter.map((fn) => resolveFilterUnits(fn, unitResolver));
217
+ }
218
+ if (styleInit.backdropFilter !== undefined) {
219
+ styleOptions.backdropFilter = styleInit.backdropFilter.map((fn) => resolveFilterUnits(fn, unitResolver));
220
+ }
221
+ }
222
+ function resolveFilterUnits(fn, unitResolver) {
223
+ switch (fn.kind) {
224
+ case "blur":
225
+ return {
226
+ kind: "blur",
227
+ value: typeof fn.value === "number" ? fn.value : unitResolver.resolveShadowLength(fn.value),
228
+ };
229
+ case "drop-shadow":
230
+ return {
231
+ kind: "drop-shadow",
232
+ offsetX: unitResolver.resolveShadowLength(fn.offsetX),
233
+ offsetY: unitResolver.resolveShadowLength(fn.offsetY),
234
+ blurRadius: unitResolver.resolveShadowLength(fn.blurRadius, true),
235
+ color: fn.color,
236
+ };
237
+ default:
238
+ // Funções numéricas e hue-rotate não têm unidades relativas
239
+ return fn;
240
+ }
241
+ }
@@ -1,5 +1,7 @@
1
1
  import { type CssRuleEntry } from "../html/css/parse-css.js";
2
+ import type { CssPseudoElement } from "../html/css/parse-css.js";
2
3
  import { type UnitParsers } from "../units/units.js";
3
4
  import type { SvgElement } from "../types/core.js";
4
5
  import { ComputedStyle } from "./style.js";
5
6
  export declare function computeStyleForElement(element: SvgElement, cssRules: CssRuleEntry[], parentStyle: ComputedStyle, units: UnitParsers, rootFontSize?: number): ComputedStyle;
7
+ export declare function computeStyleForPseudoElement(element: SvgElement, cssRules: CssRuleEntry[], pseudoType: CssPseudoElement, parentStyle: ComputedStyle, units: UnitParsers, rootFontSize?: number): ComputedStyle;