@vivliostyle/core 2.41.0 → 2.42.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.
@@ -24,7 +24,7 @@ export declare const VivliostyleViewportCss = "\n[data-vivliostyle-layout-box] {
24
24
  /** validation.txt */
25
25
  export declare const ValidationTxt = "\n/*\n * Copyright 2013 Google, Inc.\n * Copyright 2015 Daishinsha Inc.\n * Copyright 2019 Vivliostyle Foundation\n *\n * CSS property validation.\n */\nNUM = POS_NUM | ZERO | NEGATIVE;\nNNEG_NUM = POS_NUM | ZERO;\nINT = POS_INT | ZERO | NEGATIVE;\nNNEG_INT = POS_INT | ZERO;\nPERCENTAGE = POS_PERCENTAGE | ZERO | NEGATIVE;\nSTRICT_PERCENTAGE = POS_PERCENTAGE | ZERO_PERCENTAGE | NEGATIVE;\nNNEG_PERCENTAGE = POS_PERCENTAGE | ZERO;\nLENGTH = POS_LENGTH | ZERO | NEGATIVE;\nNNEG_LENGTH = POS_LENGTH | ZERO;\nPLENGTH = LENGTH | PERCENTAGE;\nPPLENGTH = POS_LENGTH | ZERO | POS_PERCENTAGE;\nALENGTH = LENGTH | auto;\nAPLENGTH = PLENGTH | auto;\nPAPLENGTH = PPLENGTH | auto;\nANGLE = POS_ANGLE | ZERO | NEGATIVE;\nLENGTH_OR_NUM = LENGTH | NUM;\nANGLE_OR_NUM = ANGLE | NUM;\nMIN_MAX_FIT_CONTENT = min-content | max-content | fit-content;\nBG_POSITION_TERM = PLENGTH | left | center | right | top | bottom;\nURI_OR_NONE = URI | none;\nIMAGE = URI | IMAGE_FUNCTION | none;\nbackground-attachment = COMMA( [scroll | fixed | local]+ );\nbackground-color = COLOR;\nbackground-image = COMMA( IMAGE+ );\nbackground-position = COMMA( SPACE(BG_POSITION_TERM{1,4})+ ); /* relaxed */\nbackground-repeat = COMMA( [repeat | repeat-x | repeat-y | no-repeat]+ );\nborder-collapse = collapse | separate;\nBORDER_SIDE_COLOR = COLOR;\nBORDER_SIDE_STYLE = none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset;\nBORDER_SIDE_WIDTH = thin: 1px | medium: 3px | thick: 5px | NNEG_LENGTH;\nborder-spacing = LENGTH LENGTH?;\nborder-top-color = BORDER_SIDE_COLOR;\nborder-right-color = BORDER_SIDE_COLOR;\nborder-bottom-color = BORDER_SIDE_COLOR;\nborder-left-color = BORDER_SIDE_COLOR;\nborder-top-style = BORDER_SIDE_STYLE;\nborder-right-style = BORDER_SIDE_STYLE;\nborder-bottom-style = BORDER_SIDE_STYLE;\nborder-left-style = BORDER_SIDE_STYLE;\nborder-top-width = BORDER_SIDE_WIDTH;\nborder-right-width = BORDER_SIDE_WIDTH;\nborder-bottom-width = BORDER_SIDE_WIDTH;\nborder-left-width = BORDER_SIDE_WIDTH;\nBORDER_RADIUS = PLENGTH{1,2};\nborder-top-left-radius = BORDER_RADIUS;\nborder-top-right-radius = BORDER_RADIUS;\nborder-bottom-right-radius = BORDER_RADIUS;\nborder-bottom-left-radius = BORDER_RADIUS;\nborder-image-source = IMAGE;\nborder-image-slice = [NUM | PERCENTAGE]{1,4} || fill; /* relaxed */\nborder-image-width = [NUM | PLENGTH | auto]{1,4};\nborder-image-outset = [NUM | LENGTH]{1,4};\nborder-image-repeat = [ stretch | repeat | round | space ]{1,2};\nbottom = APLENGTH;\ncaption-side = top | bottom;\nclip = rect(ALENGTH{4}) | rect(SPACE(ALENGTH{4})) | auto;\ncolor = COLOR;\nLIST_STYLE_TYPE = IDENT;\nTYPE_OR_UNIT_IN_ATTR = string | color | url | integer | number | length | angle | time | frequency;\nATTR = attr(SPACE(IDENT TYPE_OR_UNIT_IN_ATTR?) [ STRING | IDENT | COLOR | INT | NUM | PLENGTH | ANGLE | POS_TIME | FREQUENCY]?);\nCONTENT_LIST = [ STRING | URI | counter(IDENT LIST_STYLE_TYPE?) |\n counters(IDENT STRING LIST_STYLE_TYPE?) | ATTR |\n target-counter([ STRING | URI ] IDENT LIST_STYLE_TYPE?) |\n target-counter(ATTR IDENT LIST_STYLE_TYPE?) |\n target-counters([ STRING | URI ] IDENT STRING LIST_STYLE_TYPE?) |\n target-counters(ATTR IDENT STRING LIST_STYLE_TYPE?) |\n target-text([ STRING | URI ] [content | before | after | first-letter | marker]?) |\n target-text(ATTR [content | before | after | first-letter | marker]?) |\n leader([ dotted | solid | space ] | STRING ) |\n open-quote | close-quote | no-open-quote | no-close-quote |\n content([ text | before | after | first-letter | marker ]?) |\n string(IDENT [first | start | last | first-except]?) |\n element(IDENT [first | start | last | first-except]?) ]+;\nCONTENT = normal | none | CONTENT_LIST;\ncontent = CONTENT;\nCOUNTER = [ IDENT INT? ]+ | none;\ncounter-increment = COUNTER;\ncounter-reset = COUNTER;\ncounter-set = COUNTER;\ncursor = COMMA(URI* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-resize |\n n-resize | se-resize | sw-resize | s-resize | w-resize | text | wait | help | progress ]);\ndirection = ltr | rtl;\ndisplay = inline | block | list-item | inline-block | table | inline-table | table-row-group |\n table-header-group | table-footer-group | table-row | table-column-group | table-column |\n table-cell | table-caption | none | oeb-page-head | oeb-page-foot | flex | inline-flex |\n ruby | ruby-base | ruby-text | ruby-base-container | ruby-text-container | run-in | compact | marker |\n flow-root | grid | inline-grid | contents;\nempty-cells = show | hide;\nFAMILY = SPACE(IDENT+) | STRING;\nFAMILY_LIST = COMMA( FAMILY+ );\nfont-family = FAMILY_LIST;\nfont-size = xx-small | x-small | small | medium | large | x-large | xx-large | larger | smaller | PPLENGTH;\nfont-style = normal | italic | oblique;\nfont-weight = normal | bold | bolder | lighter | POS_NUM;\nheight = PAPLENGTH | MIN_MAX_FIT_CONTENT;\nleft = APLENGTH;\nletter-spacing = normal | LENGTH_OR_NUM;\nline-height = normal | POS_NUM | PPLENGTH;\nlist-style-image = IMAGE;\nlist-style-position = inside | outside;\nlist-style-type = LIST_STYLE_TYPE | STRING | none;\nmargin-right = APLENGTH;\nmargin-left = APLENGTH;\nmargin-top = APLENGTH;\nmargin-bottom = APLENGTH;\nNPLENGTH = none | PLENGTH;\nmax-height = NPLENGTH | MIN_MAX_FIT_CONTENT;\nmax-width = NPLENGTH | MIN_MAX_FIT_CONTENT;\nmin-height = APLENGTH | MIN_MAX_FIT_CONTENT;\nmin-width = APLENGTH | MIN_MAX_FIT_CONTENT;\norphans = POS_INT;\noutline-offset = LENGTH;\noutline-color = COLOR | invert;\noutline-style = BORDER_SIDE_STYLE;\noutline-width = BORDER_SIDE_WIDTH;\noverflow = visible | hidden | scroll | auto | clip;\npadding-right = PPLENGTH;\npadding-left = PPLENGTH;\npadding-top = PPLENGTH;\npadding-bottom = PPLENGTH;\nPAGE_BREAK = auto | always | avoid | left | right | recto | verso;\npage-break-after = PAGE_BREAK;\npage-break-before = PAGE_BREAK;\npage-break-inside = avoid | auto;\nposition = static | relative | absolute | fixed | running(IDENT);\nquotes = [STRING STRING]+ | none | auto;\nright = APLENGTH;\ntable-layout = auto | fixed;\ntext-align = left | right | center | justify | start | end | match-parent | inside | outside;\ntext-indent = PLENGTH;\ntext-transform = capitalize | uppercase | lowercase | none;\ntop = APLENGTH;\nvertical-align = baseline | sub | super | top | text-top | middle | bottom | text-bottom | PLENGTH;\nvisibility = visible | hidden | collapse;\nwhite-space = normal | pre | nowrap | pre-wrap | pre-line | break-spaces;\nwidows = POS_INT;\nwidth = PAPLENGTH | MIN_MAX_FIT_CONTENT;\nword-spacing = normal | LENGTH_OR_NUM;\nz-index = auto | INT;\n\n[epub,moz,webkit]hyphens = auto | manual | none;\n[webkit]hyphenate-character = auto | STRING;\n\n/* css-logical */\nmargin-block-start = APLENGTH;\nmargin-block-end = APLENGTH;\nmargin-inline-start = APLENGTH;\nmargin-inline-end = APLENGTH;\npadding-block-start = APLENGTH;\npadding-block-end = APLENGTH;\npadding-inline-start = APLENGTH;\npadding-inline-end = APLENGTH;\nborder-block-start-color = BORDER_SIDE_COLOR;\nborder-block-end-color = BORDER_SIDE_COLOR;\nborder-inline-start-color = BORDER_SIDE_COLOR;\nborder-inline-end-color = BORDER_SIDE_COLOR;\nborder-block-start-style = BORDER_SIDE_STYLE;\nborder-block-end-style = BORDER_SIDE_STYLE;\nborder-inline-start-style = BORDER_SIDE_STYLE;\nborder-inline-end-style = BORDER_SIDE_STYLE;\nborder-block-start-width = BORDER_SIDE_WIDTH;\nborder-block-end-width = BORDER_SIDE_WIDTH;\nborder-inline-start-width = BORDER_SIDE_WIDTH;\nborder-inline-end-width = BORDER_SIDE_WIDTH;\nblock-start = APLENGTH;\nblock-end = APLENGTH;\ninline-start = APLENGTH;\ninline-end = APLENGTH;\nblock-size = PAPLENGTH | MIN_MAX_FIT_CONTENT;\ninline-size = PAPLENGTH | MIN_MAX_FIT_CONTENT;\nmax-block-size = NPLENGTH | MIN_MAX_FIT_CONTENT;\nmax-inline-size = NPLENGTH | MIN_MAX_FIT_CONTENT;\nmin-block-size = APLENGTH | MIN_MAX_FIT_CONTENT;\nmin-inline-size = APLENGTH | MIN_MAX_FIT_CONTENT;\n\nmargin-inside = auto | APLENGTH;\nmargin-outside = auto | APLENGTH;\npadding-inside = PPLENGTH;\npadding-outside = PPLENGTH;\nborder-inside-color = BORDER_SIDE_COLOR;\nborder-outside-color = BORDER_SIDE_COLOR;\nborder-inside-style = BORDER_SIDE_STYLE;\nborder-outside-style = BORDER_SIDE_STYLE;\nborder-inside-width = BORDER_SIDE_WIDTH;\nborder-outside-width = BORDER_SIDE_WIDTH;\ninside = APLENGTH;\noutside = APLENGTH;\n\nSHAPE = auto | rectangle( PLENGTH{4} ) | ellipse( PLENGTH{4} ) | circle( PLENGTH{3} ) |\n polygon( SPACE(PLENGTH+)+ );\n[epubx]shape-inside = SHAPE;\n[epubx,webkit]shape-outside = SHAPE;\n[epubx]wrap-flow = auto | both | start | end | maximum | clear | around /* epub al */;\n\nTRANSFORM_FUNCTION = matrix(NUM{6}) | translate(PLENGTH{1,2}) | translateX(PLENGTH) | translateY(PLENGTH) |\n scale(NUM{1,2}) | scaleX(NUM) | scaleY(NUM) | rotate(ANGLE) | skewX(ANGLE) | skewY(ANGLE);\n[epub]transform = none | TRANSFORM_FUNCTION+;\n[epub]transform-origin = [[[ top | bottom | left | right] PLENGTH?] | center | PLENGTH]{1,2}; /* relaxed */\n\nBOX = border-box | padding-box | content-box;\nSHADOW = SPACE(inset || LENGTH{2,4} || COLOR); /* relaxed */\n[webkit]background-size = COMMA( SPACE( [PLENGTH | auto ]{1,2} | cover | contain)+ );\n[webkit]background-origin = COMMA( BOX+ );\n[webkit]background-clip = COMMA( BOX+ );\n[webkit]box-shadow = none | COMMA( SHADOW+ );\ntext-shadow = none | COMMA( SHADOW+ );\n[webkit]box-decoration-break = slice | clone;\nFILTER_FUNCTION = blur(LENGTH) | brightness(NUM | PERCENTAGE) | contrast(NUM | PERCENTAGE) | drop-shadow(SPACE(LENGTH{2,3} COLOR?))\n | grayscale(NUM | PERCENTAGE) | hue-rotate(ANGLE) | invert(NUM | PERCENTAGE) | opacity(NUM | PERCENTAGE)\n | saturate(NUM | PERCENTAGE) | sepia(NUM | PERCENTAGE);\nFILTER_FUNCTION_LIST = FILTER_FUNCTION+;\n[webkit]filter = none | FILTER_FUNCTION_LIST;\n\nopacity = NUM;\n\n[moz,webkit]column-width = LENGTH | auto;\n[moz,webkit]column-count = INT | auto;\n[moz,webkit]column-gap = LENGTH | normal;\n[moz,webkit]column-rule-color = COLOR;\n[moz,webkit]column-rule-style = BORDER_SIDE_STYLE;\n[moz,webkit]column-rule-width = BORDER_SIDE_WIDTH;\nBREAK = auto | avoid | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region;\nbreak-before = BREAK;\nbreak-after = BREAK;\nbreak-inside = auto | avoid | avoid-page | avoid-column | avoid-region;\n[webkit]column-span = none | auto | all;\n[moz]column-fill = auto | balance | balance-all;\nmargin-break = auto | keep | discard;\n\nsrc = COMMA([SPACE(URI format(STRING+)?) | local(FAMILY)]+); /* for font-face */\n\n[epubx,webkit]flow-from = IDENT;\n[epubx,webkit]flow-into = IDENT;\n[epubx]flow-linger = INT | none;\n[epubx]flow-priority = INT;\n[epubx]flow-options = none | [ exclusive || last || static ];\n[epubx]page = INT | auto | IDENT; /* page: IDENT is for CSS Paged Media */\n[epubx]min-page-width = LENGTH;\n[epubx]min-page-height = LENGTH;\n[epubx]required = true | false;\n[epubx]enabled = true | false;\n[epubx]conflicting-partitions = COMMA(IDENT+);\n[epubx]required-partitions = COMMA(IDENT+);\n[epubx]snap-height = LENGTH | none;\n[epubx]snap-width = LENGTH | none;\n[epubx]flow-consume = all | some;\n[epubx]utilization = NUM;\n[epubx]text-zoom = font-size | scale;\n\n[adapt]template = URI_OR_NONE | footnote;\n[adapt]behavior = IDENT;\n\n/* CSS Fonts */\nCOMMON_LIG_VALUES = [ common-ligatures | no-common-ligatures ];\nDISCRETIONARY_LIG_VALUES = [ discretionary-ligatures | no-discretionary-ligatures ];\nHISTORICAL_LIG_VALUES = [ historical-ligatures | no-historical-ligatures ];\nCONTEXTUAL_ALT_VALUES = [ contextual | no-contextual ];\nfont-variant-ligatures = normal | none | [ COMMON_LIG_VALUES || DISCRETIONARY_LIG_VALUES || HISTORICAL_LIG_VALUES || CONTEXTUAL_ALT_VALUES ];\nfont-variant-caps = normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps;\nNUMERIC_FIGURE_VALUES = [ lining-nums | oldstyle-nums ];\nNUMERIC_SPACING_VALUES = [ proportional-nums | tabular-nums ];\nNUMERIC_FRACTION_VALUES = [ diagonal-fractions | stacked-fractions ];\nfont-variant-numeric = normal | [ NUMERIC_FIGURE_VALUES || NUMERIC_SPACING_VALUES || NUMERIC_FRACTION_VALUES || ordinal || slashed-zero ];\nEAST_ASIAN_VARIANT_VALUES = [ jis78 | jis83 | jis90 | jis04 | simplified | traditional ];\nEAST_ASIAN_WIDTH_VALUES = [ full-width | proportional-width ];\nfont-variant-east-asian = normal | [ EAST_ASIAN_VARIANT_VALUES || EAST_ASIAN_WIDTH_VALUES || ruby ];\nfont-variant_css2 = normal | small-caps; /* for font shorthand */\nfont-size-adjust = none | NNEG_NUM;\n[webkit]font-kerning = auto | normal | none;\nfont-feature-settings = COMMA( normal | SPACE( STRING [ on | off | INT ]? )+ );\nFONT_STRETCH_CSS3_VALUES = normal | wider | narrower | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded;\nfont-stretch = FONT_STRETCH_CSS3_VALUES | PERCENTAGE;\nfont-stretch_css3 = FONT_STRETCH_CSS3_VALUES; /* for font shorthand */\nfont-display = [ auto | block | swap | fallback | optional ];\nunicode-range = COMMA( URANGE+ );\n\n/* CSS Images */\nimage-resolution = RESOLUTION;\nobject-fit = fill | contain | cover | none | scale-down;\nobject-position = COMMA( SPACE(BG_POSITION_TERM{1,4})+ ); /* relaxed */\n\n/* CSS Paged Media */\nPAGE_SIZE = a10 | a9 | a8 | a7 | a6 | a5 | a4 | a3 | a2 | a1 | a0\n | b10 | b9 | b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0\n | c10 | c9 | c8 | c7 | c6 | c5 | c4 | c3 | c2 | c1 | c0\n | jis-b10 | jis-b9 | jis-b8 | jis-b7 | jis-b6 | jis-b5 | jis-b4 | jis-b3 | jis-b2 | jis-b1 | jis-b0\n | letter | legal | ledger;\nbleed = auto | LENGTH;\nmarks = none | [ crop || cross ];\nsize = POS_LENGTH{1,2} | auto | [ PAGE_SIZE || [ portrait | landscape ] ];\ncrop-offset = auto | LENGTH;\ncrop-marks-line-color = auto | COLOR;\n\n/* CSS Page Floats */\nclear = none | left | right | top | bottom | inline-start | inline-end | block-start | block-end | inside | outside | both | all | same | column | region | page;\nfloat-reference = inline | column | region | page;\nfloat = none | footnote | [ block-start || block-end || inline-start || inline-end || snap-block || snap-inline || left || right || top || bottom || inside || outside ];\nfloat-min-wrap-block = PPLENGTH;\n\n/* CSS Ruby */\nruby-align = start | center | space-between | space-around;\nruby-position = over | under | inter-character;\n\n/* CSS Size Adjust */\n[moz,webkit]text-size-adjust = auto | none | POS_PERCENTAGE;\n\n/* CSS Text */\n[webkit]line-break = auto | loose | normal | strict | anywhere;\noverflow-wrap = normal | break-word | anywhere;\n[moz]tab-size = NNEG_INT | NNEG_LENGTH;\n[moz]text-align-last = auto | start | end | left | right | center | justify | inside | outside;\ntext-justify = auto | none | inter-word | inter-character;\nword-break = normal | keep-all | break-all | break-word;\ntext-spacing-trim = auto | normal | space-all | trim-both | trim-auto |\n [[ trim-start | space-start | space-first ] ||\n [ trim-end | space-end | allow-end ] ||\n [ trim-adjacent | space-adjacent ]];\ntext-autospace = normal | auto | no-autospace |\n [[ ideograph-alpha || ideograph-numeric || punctuation ] || [ insert | replace ]];\nhanging-punctuation = none | [ first || [ force-end | allow-end ] || last ];\n\n/* CSS Text Decoration */\n[webkit]text-decoration-color = COLOR;\n[webkit]text-decoration-line = none | [ underline || overline || line-through || blink ];\n[webkit]text-decoration-skip = none | [ objects || spaces || ink || edges || box-decoration ];\n[webkit]text-decoration-style = solid | double | dotted | dashed | wavy;\n[webkit]text-decoration-thickness = from-font | APLENGTH;\n[epub,webkit]text-emphasis-color = COLOR;\n[webkit]text-emphasis-position = [ over | under ] [ right | left ];\n[epub,webkit]text-emphasis-style = none | [[ filled | open ] || [ dot | circle | double-circle | triangle | sesame ]] | STRING;\n[webkit]text-underline-position = auto | [ under || [ left | right ]];\n\n[webkit]initial-letter = normal | [ POS_NUM POS_INT? ];\n\n/* CSS Transforms */\n[webkit]backface-visibility = visible | hidden;\n\n/* CSS UI */\n[moz,webkit]box-sizing = content-box | padding-box | border-box;\ntext-overflow = [clip | ellipsis | STRING]{1,2};\n\n/* CSS Writing Modes */\n[epub,webkit]text-combine = none | horizontal;\ntext-combine-upright = none | all; /* relaxed */\n[epub,webkit]text-orientation = mixed | upright | sideways-right | sideways-left | sideways | use-glyph-orientation /* the following values are kept for backward-compatibility */ | vertical-right | rotate-right | rotate-left | rotate-normal | auto;\nunicode-bidi = normal | embed | isolate | bidi-override | isolate-override | plaintext;\n[epub,webkit]writing-mode = horizontal-tb | vertical-rl | lr-tb | rl-tb | tb-rl | lr | rl | tb;\n\n/* CSS Flex box */\nFLEX_BASIS = content | PAPLENGTH;\nflex-direction = row | row-reverse | column | column-reverse;\nflex-wrap = nowrap | wrap | wrap-reverse;\norder = INT;\nflex-grow = NNEG_NUM;\nflex-shrink = NNEG_NUM;\nflex-basis = FLEX_BASIS;\nflex = none | [ [ NNEG_NUM NNEG_NUM? ] || FLEX_BASIS ];\njustify-content = flex-start | flex-end | center | space-between | space-around;\nalign-items = flex-start | flex-end | center | baseline | stretch;\nalign-self = auto | flex-start | flex-end | center | baseline | stretch;\nalign-content = flex-start | flex-end | center | space-between | space-around | stretch;\n\n/* Pointer Events */\ntouch-action = auto | none | [ pan-x || pan-y ] | manipulation;\n\n/* SVG 2 */\nOPACITY_VALUE = NUM | PERCENTAGE;\nDASH_ARRAY = COMMA( SPACE( [ LENGTH | PERCENTAGE | NUM ]+ )+ );\nPAINT = none | child | child(INT) | COLOR | SPACE( URI [none | COLOR]? ) | context-fill | context-stroke;\ncolor-interpolation = auto | sRGB | linearRGB;\ncolor-rendering = auto | optimizeSpeed | optimizeQuality;\nfill = PAINT;\nfill-opacity = OPACITY_VALUE;\nfill-rule = nonzero | evenodd;\nglyph-orientation-vertical = auto | NUM | ANGLE;\nimage-rendering = auto | optimizeSpeed | optimizeQuality | crisp-edges | pixelated;\nmarker-start = none | URI;\nmarker-mid = none | URI;\nmarker-end = none | URI;\npointer-events = bounding-box | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | none;\npaint-order = normal | [ fill || stroke || markers ];\nshape-rendering = auto | optimizeSpeed | crispEdges | geometricPrecision;\nstop-color = COLOR;\nstop-opacity = OPACITY_VALUE;\nstroke = PAINT;\nstroke-dasharray = none | DASH_ARRAY;\nstroke-dashoffset = PERCENTAGE | LENGTH_OR_NUM;\nstroke-linecap = butt | round | square;\nstroke-linejoin = miter | round | bevel;\nstroke-miterlimit = NUM;\nstroke-opacity = OPACITY_VALUE;\nstroke-width = PERCENTAGE | LENGTH_OR_NUM;\ntext-anchor = start | middle | end;\ntext-rendering = auto | optimizeSpeed | optimizeLegibility | geometricPrecision;\nvector-effect = none | SPACE( [ non-scaling-stroke | non-scaling-size | non-rotation | fixed-position ]+ [ viewport | screen ]? );\n\n/* SVG 1.1 */\nalignment-baseline = auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical;\nbaseline-shift = baseline | sub | super | PERCENTAGE | LENGTH_OR_NUM;\ndominant-baseline = auto | use-script | no-change | reset-size | ideographic | alphabetic | hanging | mathematical | central | middle | text-after-edge | text-before-edge;\nmask = none | URI;\n\n/* css-masking-1 */\nSHAPE_RADIUS = PLENGTH | closest-side | farthest-side;\nFILL_RULE = nonzero | evenodd;\nSHAPE_BOX = BOX | margin-box;\nGEOMETRY_BOX = SHAPE_BOX | fill-box | stroke-box | view-box;\nBASIC_SHAPE =\n inset( SPACE( PLENGTH{1,4} [ round PLENGTH{1,4} [ SLASH PLENGTH{1,4} ]? ]? ) )\n | circle( SPACE( [SHAPE_RADIUS]? [at BG_POSITION_TERM{1,4}]? ) )\n | ellipse( SPACE( SHAPE_RADIUS{2}? [at BG_POSITION_TERM{1,4}]? ) )\n | polygon( FILL_RULE? COMMA( SPACE( PLENGTH{2} )+ )+ );\n[webkit]clip-path = none | URI | [ BASIC_SHAPE || GEOMETRY_BOX ];\nclip-rule = nonzero | evenodd;\n\n/* filters */\nflood-color = COLOR;\nflood-opacity = OPACITY_VALUE;\nlighting-color = COLOR;\n\n/* compositing-1 */\nBLEND_MODE = normal | multiply | screen | overlay | darken | lighten | color-dodge | color-burn | hard-light | soft-light | difference | exclusion | hue | saturation | color | luminosity;\nmix-blend-mode = BLEND_MODE;\nisolation = auto | isolate;\nbackground-blend-mode = COMMA( BLEND_MODE+ );\n\n/* CSS GCPM */\nstring-set = COMMA( SPACE( IDENT CONTENT_LIST )+ | none );\nfootnote-display = block | inline | compact;\nfootnote-policy = auto | line;\n\n/* CSS Repeated Headers and Footers */\n[viv]repeat-on-break = auto | none | header | footer;\n\n/* Compatibility */\n[webkit]text-fill-color = COLOR;\n[webkit]text-stroke-color = COLOR;\n[webkit]text-stroke-width = BORDER_SIDE_WIDTH;\n\nDEFAULTS\n\nbackground-attachment: scroll;\nbackground-color: transparent;\nbackground-image: none;\nbackground-repeat: repeat;\nbackground-position: 0% 0%;\nbackground-clip: border-box;\nbackground-origin: padding-box;\nbackground-size: auto;\nborder-top-color: currentColor;\nborder-right-color: currentColor;\nborder-bottom-color: currentColor;\nborder-left-color: currentColor;\nborder-top-style: none;\nborder-right-style: none;\nborder-bottom-style: none;\nborder-left-style: none;\nborder-top-width: 3px;\nborder-right-width: 3px;\nborder-bottom-width: 3px;\nborder-left-width: 3px;\nborder-top-left-radius: 0;\nborder-top-right-radius: 0;\nborder-bottom-right-radius: 0;\nborder-bottom-left-radius: 0;\nborder-image-source: none;\nborder-image-slice: 100%;\nborder-image-width: 1;\nborder-image-outset: 0;\nborder-image-repeat: stretch;\ncolumn-count: auto;\ncolumn-gap: normal;\ncolumn-width: auto;\ncolumn-rule-color: currentColor;\ncolumn-rule-style: none;\ncolumn-rule-width: 3px;\ncolumn-fill: balance;\noutline-color: currentColor;\noutline-style: none;\noutline-width: 3px;\nflex-direction: row;\nflex-wrap: nowrap;\nfont-family: serif;\nfont-style: normal;\nfont-size: medium;\nfont-size-adjust: none;\nfont-kerning: auto;\nfont-feature-settings: normal;\nfont-variant-ligatures: normal;\nfont-variant-caps: normal;\nfont-variant-numeric: normal;\nfont-variant-east-asian: normal;\nfont-weight: normal;\nfont-stretch: normal;\nline-height: normal;\nlist-style-image: none;\nlist-style-position: outside;\nlist-style-type: disc;\nmargin-bottom: auto;\nmargin-left: auto;\nmargin-right: auto;\nmargin-top: auto;\npadding-bottom: auto;\npadding-left: auto;\npadding-right: auto;\npadding-top: auto;\ntext-autospace: normal;\ntext-emphasis-color: currentColor;\ntext-emphasis-style: none;\ntext-spacing-trim: normal;\ntext-stroke-color: currentColor;\ntext-stroke-width: 0;\nmarker-start: none;\nmarker-mid: none;\nmarker-end: none;\n\n/* css-logical */\nborder-block-start-color: currentColor;\nborder-block-end-color: currentColor;\nborder-inline-start-color: currentColor;\nborder-inline-end-color: currentColor;\nborder-inside-color: currentColor;\nborder-outside-color: currentColor;\nborder-block-start-style: none;\nborder-block-end-style: none;\nborder-inline-start-style: none;\nborder-inline-end-style: none;\nborder-inside-style: none;\nborder-outside-style: none;\nborder-block-start-width: 3px;\nborder-block-end-width: 3px;\nborder-inline-start-width: 3px;\nborder-inline-end-width: 3px;\nborder-inside-width: 3px;\nborder-outside-width: 3px;\n\nSHORTHANDS\n\nall = ALL;\nbackground = COMMA background-image [background-position [ / background-size ]] background-repeat\n background-attachment [background-origin background-clip] background-color; /* background-color is a special case, see the code */\nborder-top = border-top-width border-top-style border-top-color;\nborder-right = border-right-width border-right-style border-right-color;\nborder-bottom = border-bottom-width border-bottom-style border-bottom-color;\nborder-left = border-left-width border-left-style border-left-color;\nborder-inside = border-inside-width border-inside-style border-inside-color;\nborder-outside = border-outside-width border-outside-style border-outside-color;\nborder-width = INSETS border-top-width border-right-width border-bottom-width border-left-width;\nborder-style = INSETS border-top-style border-right-style border-bottom-style border-left-style;\nborder-color = INSETS border-top-color border-right-color border-bottom-color border-left-color;\nborder = border-width border-style border-color;\nborder-image = border-image-source border-image-slice [ / border-image-width [ / border-image-outset ] ]\n border-image-repeat;\nborder-radius = INSETS_SLASH border-top-left-radius border-top-right-radius\n border-bottom-right-radius border-bottom-left-radius;\n[moz,webkit]columns = column-width column-count;\n[moz,webkit]column-rule = column-rule-width column-rule-style column-rule-color;\nflex-flow = flex-direction flex-wrap;\noeb-column-number = column-count;\noutline = outline-width outline-style outline-color;\nlist-style = list-style-position list-style-type list-style-image;\nmargin = INSETS margin-top margin-right margin-bottom margin-left;\npadding = INSETS padding-top padding-right padding-bottom padding-left;\nfont = FONT font-style font-variant_css2 font-weight font-stretch_css3 /* font-size line-height font-family are special-cased */;\nfont-variant = font-variant-ligatures font-variant-caps font-variant-numeric font-variant-east-asian;\n[epub,webkit]text-emphasis = text-emphasis-style text-emphasis-color;\nmarker = INSETS marker-start marker-mid marker-end;\n[webkit]text-stroke = text-stroke-width text-stroke-color;\ntext-decoration = text-decoration-line text-decoration-color text-decoration-style text-decoration-thickness;\ntext-spacing = TEXT_SPACING text-autospace text-spacing-trim;\n\n/* css-logical */\nmargin-block = INSETS margin-block-start margin-block-end;\nmargin-inline = INSETS margin-inline-start margin-inline-end;\npadding-block = INSETS padding-block-start padding-block-end;\npadding-inline = INSETS padding-inline-start padding-inline-end;\nborder-block-width = INSETS border-block-start-width border-block-end-width;\nborder-block-style = INSETS border-block-start-style border-block-end-style;\nborder-block-color = INSETS border-block-start-color border-block-end-color;\nborder-inline-width = INSETS border-inline-start-width border-inline-end-width;\nborder-inline-style = INSETS border-inline-start-style border-inline-end-style;\nborder-inline-color = INSETS border-inline-start-color border-inline-end-color;\nborder-block = border-block-width border-block-style border-block-color;\nborder-inline = border-inline-width border-inline-style border-inline-color;\nborder-block-start = border-block-start-width border-block-start-style border-block-start-color;\nborder-block-end = border-block-end-width border-block-end-style border-block-end-color;\nborder-inline-start = border-inline-start-width border-inline-start-style border-inline-start-color;\nborder-inline-end = border-inline-end-width border-inline-end-style border-inline-end-color;\ninset-block-start = block-start;\ninset-block-end = block-end;\ninset-inline-start = inline-start;\ninset-inline-end = inline-end;\ninset-inside = inside;\ninset-outside = outside;\ninset-block = INSETS block-start block-end;\ninset-inline = INSETS inline-start inline-end;\ninset = INSETS top right bottom left;\n\n/* old names */\nword-wrap = overflow-wrap;\n[adapt,webkit]margin-before = margin-block-start;\n[adapt,webkit]margin-after = margin-block-end;\n[adapt,webkit]margin-start = margin-inline-start;\n[adapt,webkit]margin-end = margin-inline-end;\n[adapt,webkit]padding-before = padding-block-start;\n[adapt,webkit]padding-after = padding-block-end;\n[adapt,webkit]padding-start = padding-inline-start;\n[adapt,webkit]padding-end = padding-inline-end;\n[adapt,webkit]border-before-color = border-block-start-color;\n[adapt,webkit]border-after-color = border-block-end-color;\n[adapt,webkit]border-start-color = border-inline-start-color;\n[adapt,webkit]border-end-color = border-inline-end-color;\n[adapt,webkit]border-before-style = border-block-start-style;\n[adapt,webkit]border-after-style = border-block-end-style;\n[adapt,webkit]border-start-style = border-inline-start-style;\n[adapt,webkit]border-end-style = border-inline-end-style;\n[adapt,webkit]border-before-width = border-block-start-width;\n[adapt,webkit]border-after-width = border-block-end-width;\n[adapt,webkit]border-start-width = border-inline-start-width;\n[adapt,webkit]border-end-width = border-inline-end-width;\n[adapt,webkit]before = block-start;\n[adapt,webkit]after = block-end;\n[adapt,webkit]start = inline-start;\n[adapt,webkit]end = inline-end;\n\n";
26
26
  /** user-agent.xml */
27
- export declare const UserAgentXml = "\n<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:s=\"http://www.pyroxy.com/ns/shadow\">\n<head>\n<style><![CDATA[\n\n.-vivliostyle-footnote-content {\n float: footnote;\n}\n\n.-vivliostyle-table-cell-container {\n display: block;\n}\n\n]]></style>\n</head>\n<body>\n\n<s:template id=\"footnote\"><s:content/><s:include class=\"-vivliostyle-footnote-content\"/></s:template>\n\n<s:template id=\"table-cell\"><div data-vivliostyle-flow-root=\"true\" class=\"-vivliostyle-table-cell-container\"><s:content/></div></s:template>\n\n</body>\n</html>";
27
+ export declare const UserAgentXml = "\n<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:s=\"http://www.pyroxy.com/ns/shadow\">\n<head>\n<style><![CDATA[\n\n.-vivliostyle-footnote-content {\n float: footnote;\n --viv-semantic-footnote-content: 1;\n}\n\n.-vivliostyle-table-cell-container {\n display: block;\n}\n\n]]></style>\n</head>\n<body>\n\n<s:template id=\"footnote\"><s:content/><s:include class=\"-vivliostyle-footnote-content\"/></s:template>\n\n<s:template id=\"table-cell\"><div data-vivliostyle-flow-root=\"true\" class=\"-vivliostyle-table-cell-container\"><s:content/></div></s:template>\n\n</body>\n</html>";
28
28
  /** user-agent-page.css */
29
29
  export declare const UserAgentPageCss = "\n@namespace \"http://www.w3.org/1999/xhtml\";\n\n:root {\n hyphens: -epubx-expr(pref-hyphenate? \"auto\": \"manual\");\n}\n:root[data-vivliostyle-epub-spine-properties~=\"page-spread-left\"] {\n break-before: left;\n}\n:root[data-vivliostyle-epub-spine-properties~=\"page-spread-right\"] {\n break-before: right;\n}\n\n@footnote {\n margin-block-start: 0.5em;\n}\n@footnote ::before {\n border-block-start-width: 1px;\n border-block-start-style: solid;\n border-block-start-color: black;\n margin-block-end: 0.4em;\n margin-inline-start: 0;\n margin-inline-end: 60%;\n}\n\n/* default page master */\n@-epubx-page-master :background-host {\n @-epubx-partition :layout-host {\n -epubx-flow-from: body;\n top: -epubx-expr(header.margin-bottom-edge);\n bottom: -epubx-expr(page-height - footer.margin-top-edge);\n left: 0px;\n right: 0px;\n column-width: 25em;\n }\n @-epubx-partition footer :oeb-page-foot {\n writing-mode: horizontal-tb;\n -epubx-flow-from: oeb-page-foot;\n bottom: 0px;\n left: 0px;\n right: 0px;\n }\n @-epubx-partition header :oeb-page-head {\n writing-mode: horizontal-tb;\n -epubx-flow-from: oeb-page-head;\n top: 0px;\n left: 0px;\n right: 0px;\n }\n}\n\n@page {\n @top-left-corner {\n text-align: right;\n vertical-align: middle;\n }\n @top-left {\n text-align: left;\n vertical-align: middle;\n }\n @top-center {\n text-align: center;\n vertical-align: middle;\n }\n @top-right {\n text-align: right;\n vertical-align: middle;\n }\n @top-right-corner {\n text-align: left;\n vertical-align: middle;\n }\n @left-top {\n text-align: center;\n vertical-align: top;\n }\n @left-middle {\n text-align: center;\n vertical-align: middle;\n }\n @left-bottom {\n text-align: center;\n vertical-align: bottom;\n }\n @right-top {\n text-align: center;\n vertical-align: top;\n }\n @right-middle {\n text-align: center;\n vertical-align: middle;\n }\n @right-bottom {\n text-align: center;\n vertical-align: bottom;\n }\n @bottom-left-corner {\n text-align: right;\n vertical-align: middle;\n }\n @bottom-left {\n text-align: left;\n vertical-align: middle;\n }\n @bottom-center {\n text-align: center;\n vertical-align: middle;\n }\n @bottom-right {\n text-align: right;\n vertical-align: middle;\n }\n @bottom-right-corner {\n text-align: left;\n vertical-align: middle;\n }\n}\n\n@media print {\n @page {\n margin: 10%;\n }\n}\n";
30
30
  /** user-agent-base.css */
@@ -32,5 +32,5 @@ export declare const UserAgentBaseCss: string;
32
32
  /** user-agent-toc.css */
33
33
  export declare const UserAgentTocCss = "\n@namespace \"http://www.w3.org/1999/xhtml\";\n\n*:not([data-vivliostyle-role=doc-toc],\n [data-vivliostyle-role=doc-toc] *,\n :has([data-vivliostyle-role=doc-toc]),\n :is(h1,h2,h3,h4,h5,h6):has(+:not(nav)[data-vivliostyle-role=doc-toc])) {\n display: none;\n}\n\n[hidden] {\n display: revert;\n}\n\n[data-vivliostyle-role=doc-toc] li a {\n -adapt-behavior: toc-node-anchor;\n}\n\n[data-vivliostyle-role=doc-toc] li {\n -adapt-behavior: toc-node;\n}\n\n[data-vivliostyle-role=doc-toc] li > :not(ul,ol):first-child {\n -adapt-behavior: toc-node-first-child;\n}\n\n[data-vivliostyle-role=doc-toc] :is(ol,ul),\n[data-vivliostyle-role=doc-toc]:is(ol,ul) {\n -adapt-behavior: toc-container;\n}\n";
34
34
  /** vivliostyle-polyfill.css */
35
- export declare const VivliostylePolyfillCss = "\n[data-viv-margin-discard~=\"block-start\"] {\n margin-block-start: 0 !important;\n}\n[data-viv-margin-discard~=\"block-end\"] {\n margin-block-end: 0 !important;\n}\n[data-viv-margin-discard~=\"inline-start\"] {\n margin-inline-start: 0 !important;\n}\n[data-viv-margin-discard~=\"inline-end\"] {\n margin-inline-end: 0 !important;\n}\n\n[data-viv-box-break~=\"inline-start\"]:not([data-viv-box-break~=\"clone\"]) {\n margin-inline-start: 0 !important;\n padding-inline-start: 0 !important;\n border-inline-start-width: 0 !important;\n border-start-start-radius: 0 !important;\n border-end-start-radius: 0 !important;\n}\n[data-viv-box-break~=\"inline-end\"]:not([data-viv-box-break~=\"clone\"]) {\n margin-inline-end: 0 !important;\n padding-inline-end: 0 !important;\n border-inline-end-width: 0 !important;\n border-start-end-radius: 0 !important;\n border-end-end-radius: 0 !important;\n}\n[data-viv-box-break~=\"block-start\"]:not([data-viv-box-break~=\"clone\"]):not(table[style*=\"border-collapse: collapse\"]:has(>thead)) {\n margin-block-start: 0 !important;\n padding-block-start: 0 !important;\n border-block-start-width: 0 !important;\n border-start-start-radius: 0 !important;\n border-start-end-radius: 0 !important;\n}\n[data-viv-box-break~=\"block-end\"]:not([data-viv-box-break~=\"clone\"]):not(table[style*=\"border-collapse: collapse\"]:has(>tfoot)) {\n margin-block-end: 0 !important;\n padding-block-end: 0 !important;\n border-block-end-width: 0 !important;\n border-end-start-radius: 0 !important;\n border-end-end-radius: 0 !important;\n}\n[data-viv-box-break~=\"block-start\"][data-viv-box-break~=\"text-start\"] {\n text-indent: 0 !important;\n}\n[data-viv-box-break~=\"block-end\"][data-viv-box-break~=\"text-end\"][data-viv-box-break~=\"justify\"] {\n text-align-last: justify !important;\n}\n[data-viv-box-break~=\"block-end\"][data-viv-box-break~=\"text-end\"][data-viv-box-break~=\"justify\"] > * {\n text-align-last: auto;\n}\n[data-viv-box-break~=\"block-end\"][data-viv-box-break~=\"text-end\"]:not([data-viv-box-break~=\"justify\"]) {\n text-align-last: auto !important;\n}\n\nspan.viv-anonymous-block {\n display: block;\n}\n\n[data-vivliostyle-page-container] {\n text-spacing-trim: space-all;\n text-autospace: no-autospace;\n}\nviv-ts-open.viv-ts-auto > viv-ts-inner,\nviv-ts-open.viv-ts-trim > viv-ts-inner {\n margin-inline-start: -0.5em;\n}\nviv-ts-close.viv-ts-auto > viv-ts-inner,\nviv-ts-close.viv-ts-trim > viv-ts-inner {\n letter-spacing: -0.5em;\n}\nviv-ts-close.viv-hang-end > viv-ts-inner,\nviv-ts-close.viv-hang-last > viv-ts-inner {\n letter-spacing: -1em;\n}\nviv-ts-open.viv-ts-auto::before,\nviv-ts-close.viv-ts-auto::after,\nviv-ts-close.viv-hang-end::after {\n content: \" \";\n font-family: Courier, monospace;\n word-spacing: normal;\n letter-spacing: -0.11em;\n line-height: 0;\n text-orientation: mixed;\n visibility: hidden;\n}\nviv-ts-close.viv-hang-end:not(.viv-hang-hw)::after {\n letter-spacing: 0.4em;\n}\nviv-ts-close.viv-hang-hw > viv-ts-inner {\n letter-spacing: -0.5em;\n}\nviv-ts-open.viv-hang-first > viv-ts-inner {\n display: inline-block;\n line-height: 1;\n inline-size: 1em;\n text-indent: 0;\n text-align: end;\n text-align-last: end;\n margin-inline-start: -1em;\n}\nviv-ts-thin-sp::after {\n content: \" \";\n font-family: Times, serif;\n word-spacing: normal;\n letter-spacing: -0.125em;\n line-height: 0;\n text-orientation: mixed;\n visibility: hidden;\n}\n[style*=text-decoration] :is(viv-ts-thin-sp, viv-ts-close.viv-ts-auto)::after {\n visibility: visible;\n}\n\nspan[data-viv-leader] {\n text-combine-upright: none;\n text-orientation: mixed;\n white-space: pre;\n}\n\n/* ::marker */\n[style*=\"--viv-marker-content\"]::marker {\n content: var(--viv-marker-content);\n unicode-bidi: isolate;\n font-variant-numeric: tabular-nums;\n white-space: pre;\n text-transform: none;\n}\n/* ::footnote-marker inherits --viv-marker-content from the footnote element */\n.-vivliostyle-footnote-content::marker {\n content: var(--viv-marker-content);\n unicode-bidi: isolate;\n font-variant-numeric: tabular-nums;\n white-space: pre;\n text-transform: none;\n}\n[style*=\"--viv-footnote-inline-separator\"]::after {\n content: var(--viv-footnote-inline-separator);\n white-space: normal;\n}\n[style*=\"--viv-footnote-white-space\"] {\n white-space: var(--viv-footnote-white-space);\n}\n[style*=\"--viv-marker-color\"]::marker {\n color: var(--viv-marker-color);\n}\n[style*=\"--viv-marker-font-size\"]::marker {\n font-size: var(--viv-marker-font-size);\n}\n[style*=\"--viv-marker-font-family\"]::marker {\n font-family: var(--viv-marker-font-family);\n}\n[style*=\"--viv-marker-font-style\"]::marker {\n font-style: var(--viv-marker-font-style);\n}\n[style*=\"--viv-marker-font-weight\"]::marker {\n font-weight: var(--viv-marker-font-weight);\n}\n[style*=\"--viv-marker-font-variant\"]::marker {\n font-variant: var(--viv-marker-font-variant);\n}\n[style*=\"--viv-marker-unicode-bidi\"]::marker {\n unicode-bidi: var(--viv-marker-unicode-bidi);\n}\n[style*=\"--viv-marker-direction\"]::marker {\n direction: var(--viv-marker-direction);\n}\n[style*=\"--viv-marker-white-space\"]::marker {\n white-space: var(--viv-marker-white-space);\n}\n[style*=\"--viv-marker-text-transform\"]::marker {\n text-transform: var(--viv-marker-text-transform);\n}\n[style*=\"--viv-marker-text-combine-upright\"]::marker {\n text-combine-upright: var(--viv-marker-text-combine-upright);\n}\n\n/* initial-letter */\n[style*=\"--viv-initialLetter\"]:has(>[data-adapt-pseudo=\"first-letter\"])::first-letter {\n -webkit-initial-letter: var(--viv-initialLetter);\n initial-letter: var(--viv-initialLetter);\n}\n";
35
+ export declare const VivliostylePolyfillCss = "\n[data-viv-margin-discard~=\"block-start\"] {\n margin-block-start: 0 !important;\n}\n[data-viv-margin-discard~=\"block-end\"] {\n margin-block-end: 0 !important;\n}\n[data-viv-margin-discard~=\"inline-start\"] {\n margin-inline-start: 0 !important;\n}\n[data-viv-margin-discard~=\"inline-end\"] {\n margin-inline-end: 0 !important;\n}\n\n[data-viv-box-break~=\"inline-start\"]:not([data-viv-box-break~=\"clone\"]) {\n margin-inline-start: 0 !important;\n padding-inline-start: 0 !important;\n border-inline-start-width: 0 !important;\n border-start-start-radius: 0 !important;\n border-end-start-radius: 0 !important;\n}\n[data-viv-box-break~=\"inline-end\"]:not([data-viv-box-break~=\"clone\"]) {\n margin-inline-end: 0 !important;\n padding-inline-end: 0 !important;\n border-inline-end-width: 0 !important;\n border-start-end-radius: 0 !important;\n border-end-end-radius: 0 !important;\n}\n[data-viv-box-break~=\"block-start\"]:not([data-viv-box-break~=\"clone\"]):not(table[style*=\"border-collapse: collapse\"]:has(>thead)) {\n margin-block-start: 0 !important;\n padding-block-start: 0 !important;\n border-block-start-width: 0 !important;\n border-start-start-radius: 0 !important;\n border-start-end-radius: 0 !important;\n}\n[data-viv-box-break~=\"block-end\"]:not([data-viv-box-break~=\"clone\"]):not(table[style*=\"border-collapse: collapse\"]:has(>tfoot)) {\n margin-block-end: 0 !important;\n padding-block-end: 0 !important;\n border-block-end-width: 0 !important;\n border-end-start-radius: 0 !important;\n border-end-end-radius: 0 !important;\n}\n[data-viv-box-break~=\"block-start\"][data-viv-box-break~=\"text-start\"] {\n text-indent: 0 !important;\n}\n[data-viv-box-break~=\"block-end\"][data-viv-box-break~=\"text-end\"][data-viv-box-break~=\"justify\"] {\n text-align-last: justify !important;\n}\n[data-viv-box-break~=\"block-end\"][data-viv-box-break~=\"text-end\"][data-viv-box-break~=\"justify\"] > * {\n text-align-last: auto;\n}\n[data-viv-box-break~=\"block-end\"][data-viv-box-break~=\"text-end\"]:not([data-viv-box-break~=\"justify\"]) {\n text-align-last: auto !important;\n}\n\nspan.viv-anonymous-block {\n display: block;\n}\n\n[data-vivliostyle-page-container] {\n text-spacing-trim: space-all;\n text-autospace: no-autospace;\n}\nviv-ts-open.viv-ts-auto > viv-ts-inner,\nviv-ts-open.viv-ts-trim > viv-ts-inner {\n margin-inline-start: -0.5em;\n}\nviv-ts-close.viv-ts-auto > viv-ts-inner,\nviv-ts-close.viv-ts-trim > viv-ts-inner {\n letter-spacing: -0.5em;\n}\nviv-ts-close.viv-hang-end > viv-ts-inner,\nviv-ts-close.viv-hang-last > viv-ts-inner {\n letter-spacing: -1em;\n}\nviv-ts-open.viv-ts-auto::before,\nviv-ts-close.viv-ts-auto::after,\nviv-ts-close.viv-hang-end::after {\n content: \" \";\n font-family: Courier, monospace;\n word-spacing: normal;\n letter-spacing: -0.11em;\n line-height: 0;\n text-orientation: mixed;\n visibility: hidden;\n}\nviv-ts-close.viv-hang-end:not(.viv-hang-hw)::after {\n letter-spacing: 0.4em;\n}\nviv-ts-close.viv-hang-hw > viv-ts-inner {\n letter-spacing: -0.5em;\n}\nviv-ts-open.viv-hang-first > viv-ts-inner {\n display: inline-block;\n line-height: 1;\n inline-size: 1em;\n text-indent: 0;\n text-align: end;\n text-align-last: end;\n margin-inline-start: -1em;\n}\nviv-ts-thin-sp::after {\n content: \" \";\n font-family: Times, serif;\n word-spacing: normal;\n letter-spacing: -0.125em;\n line-height: 0;\n text-orientation: mixed;\n visibility: hidden;\n}\n[style*=text-decoration] :is(viv-ts-thin-sp, viv-ts-close.viv-ts-auto)::after {\n visibility: visible;\n}\n\nspan[data-viv-leader] {\n text-combine-upright: none;\n text-orientation: mixed;\n white-space: pre;\n}\n\n/* ::marker */\n[style*=\"--viv-marker-content\"]::marker {\n content: var(--viv-marker-content);\n unicode-bidi: isolate;\n font-variant-numeric: tabular-nums;\n white-space: pre;\n text-transform: none;\n}\n/* ::footnote-marker inherits --viv-marker-content from the footnote element */\n.-vivliostyle-footnote-content::marker {\n content: var(--viv-marker-content);\n unicode-bidi: isolate;\n font-variant-numeric: tabular-nums;\n white-space: pre;\n text-transform: none;\n}\n[style*=\"--viv-footnote-white-space\"] {\n white-space: var(--viv-footnote-white-space);\n}\n[style*=\"--viv-marker-color\"]::marker {\n color: var(--viv-marker-color);\n}\n[style*=\"--viv-marker-font-size\"]::marker {\n font-size: var(--viv-marker-font-size);\n}\n[style*=\"--viv-marker-font-family\"]::marker {\n font-family: var(--viv-marker-font-family);\n}\n[style*=\"--viv-marker-font-style\"]::marker {\n font-style: var(--viv-marker-font-style);\n}\n[style*=\"--viv-marker-font-weight\"]::marker {\n font-weight: var(--viv-marker-font-weight);\n}\n[style*=\"--viv-marker-font-variant\"]::marker {\n font-variant: var(--viv-marker-font-variant);\n}\n[style*=\"--viv-marker-unicode-bidi\"]::marker {\n unicode-bidi: var(--viv-marker-unicode-bidi);\n}\n[style*=\"--viv-marker-direction\"]::marker {\n direction: var(--viv-marker-direction);\n}\n[style*=\"--viv-marker-white-space\"]::marker {\n white-space: var(--viv-marker-white-space);\n}\n[style*=\"--viv-marker-text-transform\"]::marker {\n text-transform: var(--viv-marker-text-transform);\n}\n[style*=\"--viv-marker-text-combine-upright\"]::marker {\n text-combine-upright: var(--viv-marker-text-combine-upright);\n}\n[style*=\"--viv-marker-text-orientation\"]::marker {\n text-orientation: var(--viv-marker-text-orientation);\n}\n[style*=\"--viv-marker-hyphens\"]::marker {\n hyphens: var(--viv-marker-hyphens);\n}\n[style*=\"--viv-marker-line-height\"]::marker {\n line-height: var(--viv-marker-line-height);\n}\n[style*=\"--viv-marker-tab-size\"]::marker {\n tab-size: var(--viv-marker-tab-size);\n}\n[style*=\"--viv-marker-text-emphasis-style\"]::marker {\n text-emphasis-style: var(--viv-marker-text-emphasis-style);\n}\n[style*=\"--viv-marker-text-emphasis-color\"]::marker {\n text-emphasis-color: var(--viv-marker-text-emphasis-color);\n}\n[style*=\"--viv-marker-text-emphasis-position\"]::marker {\n text-emphasis-position: var(--viv-marker-text-emphasis-position);\n}\n[style*=\"--viv-marker-text-shadow\"]::marker {\n text-shadow: var(--viv-marker-text-shadow);\n}\n\n/* initial-letter */\n[style*=\"--viv-initialLetter\"]:has(>[data-adapt-pseudo=\"first-letter\"])::first-letter {\n -webkit-initial-letter: var(--viv-initialLetter);\n initial-letter: var(--viv-initialLetter);\n}\n";
36
36
  export declare const UserAgentCounterStylesCss: string;
@@ -28,6 +28,12 @@ export declare function setBaseURL(value: string): void;
28
28
  */
29
29
  export declare let resourceBaseURL: string;
30
30
  export declare function setResourceBaseURL(value: string): void;
31
+ /**
32
+ * Convert a WPT raw.githack.com URL to the equivalent wpt.live URL.
33
+ * Applied at DOM/CSS output points for resource URLs (images, fonts, etc.)
34
+ * so that dynamic WPT endpoints (e.g. `.py` scripts) work correctly.
35
+ */
36
+ export declare function resolveWptResourceURL(url: string): string;
31
37
  /**
32
38
  * @param relURL relative URL
33
39
  * @param baseURL base (absolute) URL
@@ -40,6 +46,11 @@ export declare function resolveURL(relURL: string, baseURL: string): string;
40
46
  * resolveURL("#id", data:...) intentionally returns just "#id".
41
47
  */
42
48
  export declare function resolveReferenceURL(relURL: string, baseURL: string): string;
49
+ /**
50
+ * Convert `about:blank` (with optional query/fragment, case-insensitive)
51
+ * to `data:text/html,` so the browser can load it natively.
52
+ */
53
+ export declare function convertAboutBlankURL(url: string): string;
43
54
  /**
44
55
  * Convert special URLs (e.g. GitHub, Gist) to their raw equivalents.
45
56
  * This is useful for fetching content from these services in a format
@@ -181,6 +181,7 @@ export declare const SPECIALS: {
181
181
  "region-id": boolean;
182
182
  "fragment-selector-id": boolean;
183
183
  };
184
+ export declare const FOOTNOTE_COUNTER_ATTR = "data-viv-footnote-counter";
184
185
  export declare function isSpecialName(name: string): boolean;
185
186
  export declare function isMapName(name: string): boolean;
186
187
  export declare function isPropName(name: string): boolean;
@@ -852,6 +853,7 @@ export declare class CascadeParserHandler extends CssParser.SlaveParserHandler i
852
853
  elementStyle: ElementStyle;
853
854
  conditionCount: number;
854
855
  pseudoelement: string | null;
856
+ selectorFunctionContainsPseudoelement: boolean;
855
857
  footnoteContent: boolean;
856
858
  cascade: Cascade;
857
859
  state: ParseState;
@@ -861,6 +863,7 @@ export declare class CascadeParserHandler extends CssParser.SlaveParserHandler i
861
863
  constructor(scope: Exprs.LexicalScope, owner: CssParser.DispatchParserHandler, condition: Exprs.Val, parent: CascadeParserHandler, regionId: string | null, validatorSet: CssValidator.ValidatorSet, topLevel: boolean);
862
864
  protected insertNonPrimary(action: CascadeAction): void;
863
865
  processChain(action: CascadeAction): void;
866
+ private invalidContinuationAfterPseudoelement;
864
867
  isInsideSelectorRule(mnemonics: string): boolean;
865
868
  tagSelector(ns: string | null, name: string | null): void;
866
869
  invalidSelector(message: string): void;
@@ -906,6 +909,7 @@ export declare class MatchesParameterParserHandler extends CascadeParserHandler
906
909
  chains: ChainedAction[][];
907
910
  maxSpecificity: number;
908
911
  selectorTexts: string[];
912
+ containsPseudoelementSelector: boolean;
909
913
  constructor(parent: CascadeParserHandler);
910
914
  nextSelector(): void;
911
915
  endFuncWithSelector(): void;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Copyright 2026 Vivliostyle Foundation
3
+ *
4
+ * Vivliostyle.js is free software: you can redistribute it and/or modify
5
+ * it under the terms of the GNU Affero General Public License as published by
6
+ * the Free Software Foundation, either version 3 of the License, or
7
+ * (at your option) any later version.
8
+ *
9
+ * Vivliostyle.js is distributed in the hope that it will be useful,
10
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ * GNU Affero General Public License for more details.
13
+ *
14
+ * You should have received a copy of the GNU Affero General Public License
15
+ * along with Vivliostyle.js. If not, see <http://www.gnu.org/licenses/>.
16
+ *
17
+ * @fileoverview CssNesting - CSS Nesting preprocessor.
18
+ */
19
+ export declare function expandNesting(input: string): string;
20
+ export declare function replaceScopeAmpersands(selector: string): string;
@@ -293,6 +293,7 @@ export declare class Parser {
293
293
  exprStackReduce(op: number, token: CssTokenizer.Token): boolean;
294
294
  readSupportsTest(token: CssTokenizer.Token): Exprs.SupportsTest;
295
295
  readPseudoParams(): (number | string)[];
296
+ skipPseudoFunctionContents(): boolean;
296
297
  /**
297
298
  * Read `an+b` argument of pseudoclasses. Roughly based on the algorithm at
298
299
  * https://drafts.csswg.org/css-syntax/#the-anb-type
@@ -6,7 +6,8 @@ import { Layout } from "./types";
6
6
  declare const PageFloatFragment: typeof PageFloats.PageFloatFragment;
7
7
  export declare class Footnote extends PageFloats.PageFloat {
8
8
  readonly footnotePolicy: Css.Ident | null;
9
- constructor(nodePosition: Vtree.NodePosition, floatReference: PageFloats.FloatReference, flowName: string, footnotePolicy: Css.Ident | null, floatMinWrapBlock: Css.Numeric | null);
9
+ readonly policyAnchorNode: Node;
10
+ constructor(nodePosition: Vtree.NodePosition, floatReference: PageFloats.FloatReference, flowName: string, footnotePolicy: Css.Ident | null, floatMinWrapBlock: Css.Numeric | null, policyAnchorNode: Node);
10
11
  isAllowedToPrecede(other: PageFloats.PageFloat): boolean;
11
12
  }
12
13
  /**
@@ -58,6 +58,19 @@ export declare function getElementClientRectAdjusted(clientLayout: Vtree.ClientL
58
58
  * This is used to prevent unnecessary blank pages.
59
59
  */
60
60
  export declare function clearForcedColumnBreaks(prevNode: Node, currNode: Node): void;
61
+ /**
62
+ * Check if an element has non-root multi-column styles (column-count or
63
+ * column-width) set on its inline style.
64
+ *
65
+ * NOTE: Do not use `instanceof HTMLElement` for the check because it does
66
+ * not work when the node is inside an iframe. (Issue #1000)
67
+ */
68
+ export declare function hasNonRootMultiColumnStyle(element: Element): boolean;
69
+ /**
70
+ * Check if the given element or any of its descendants establishes a
71
+ * non-root multi-column layout (via inline style).
72
+ */
73
+ export declare function containsNonRootMultiColumn(element: Element): boolean;
61
74
  /**
62
75
  * Find the nearest ancestor element that establishes a multi-column
63
76
  * layout but is not the root column element.
@@ -151,6 +151,8 @@ export declare class Column extends VtreeImpl.Container implements Layout.Column
151
151
  isFloatNodeContext(nodeContext: Vtree.NodeContext): boolean;
152
152
  stopByOverflow(nodeContext: Vtree.NodeContext): boolean;
153
153
  private almostEquals;
154
+ private getFloatLayoutUnit;
155
+ private getFloatLayoutTolerance;
154
156
  isOverflown(edge: number): boolean;
155
157
  getExclusions(): GeometryUtil.Shape[];
156
158
  openAllViews(position: Vtree.NodePosition): Task.Result<Vtree.NodeContext>;
@@ -485,5 +487,10 @@ export declare class PageFloatArea extends Column implements Layout.PageFloatAre
485
487
  getContentBlockMarginAfter(): number;
486
488
  applyCompactFootnoteDisplay(): void;
487
489
  private updateComputedBlockSizeForFootnoteArea;
490
+ private getFootnoteAfterPseudo;
491
+ private hasAuthorFootnoteAfterPseudo;
492
+ private createDefaultFootnoteAfterPseudo;
493
+ private getFootnoteBreakOpportunity;
494
+ private createFootnoteBreakOpportunity;
488
495
  private updateInlineFootnoteSeparators;
489
496
  }
@@ -102,6 +102,27 @@ export declare class PageFloatLayoutContext implements PageFloats.PageFloatLayou
102
102
  private floatsDeferredFromPrevious;
103
103
  private layoutConstraints;
104
104
  private locked;
105
+ /**
106
+ * Maximum outer block size for footnotes on this page.
107
+ * Set when a footnote is placed but then found to be not-allowed (anchor
108
+ * not reachable in multi-column). Each retry halves this value until
109
+ * the footnote fits or is too small to display. (Issue #1879)
110
+ */
111
+ footnoteMaxBlockSize: number | null;
112
+ /**
113
+ * When true, max-height on @footnote areas should be ignored.
114
+ * Set when a page contains only footnote continuation(s) and no body
115
+ * content. Per CSS GCPM §2.4.2, max-height should not apply in this
116
+ * case. (Issue #1878)
117
+ */
118
+ ignoreFootnoteAreaMaxHeight: boolean;
119
+ /**
120
+ * Tracks footnote IDs whose anchors have been registered at least once
121
+ * during this page's layout cycle. Unlike floatAnchors, this set
122
+ * survives invalidate() calls, so we can detect feedback loops where
123
+ * a footnote's own size pushes its anchor off the page. (Issue #1879)
124
+ */
125
+ private footnoteAnchorsSeen;
105
126
  /**
106
127
  * Reference to the outer column's context for page float area contexts.
107
128
  * Used only for getParent() navigation to propagate nested page floats
@@ -138,15 +159,22 @@ export declare class PageFloatLayoutContext implements PageFloats.PageFloatLayou
138
159
  findPageFloatFragment(float: PageFloat): PageFloatFragment | null;
139
160
  hasFloatFragments(condition?: (p1: PageFloatFragment) => boolean): boolean;
140
161
  hasContinuingFloatFragmentsInFlow(flowName: string): boolean;
162
+ markPageFloatAnchorSeen(float: PageFloat): void;
141
163
  registerPageFloatAnchor(float: PageFloat, anchorViewNode: Node): void;
142
164
  collectPageFloatAnchors(): any;
143
165
  isAnchorAlreadyAppeared(floatId: PageFloatID): boolean;
144
166
  deferPageFloat(continuation: PageFloatContinuation): void;
167
+ removeFloatDeferredToNext(float: PageFloat): void;
145
168
  hasPrecedingFloatsDeferredToNext(float: PageFloat, ignoreReference?: boolean): boolean;
146
169
  getLastFollowingFloatInFragments(float: PageFloat): PageFloat | null;
147
170
  getDeferredPageFloatContinuations(flowName?: string | null): PageFloatContinuation[];
148
171
  getPageFloatContinuationsDeferredToNext(flowName?: string | null): PageFloatContinuation[];
149
172
  getFloatsDeferredToNextInChildContexts(): PageFloat[];
173
+ private hasRootMultiColumnFootnoteContext;
174
+ private hasNonRootMultiColumnFootnoteContext;
175
+ private hasMultiColumnFootnoteContext;
176
+ private trySetFootnoteRetryMaxBlockSize;
177
+ initFootnoteRetryFromEmptyFragment(float: PageFloat, area: LayoutType.PageFloatArea): boolean;
150
178
  checkAndForbidNotAllowedFloat(): boolean;
151
179
  checkAndForbidFloatFollowingDeferredFloat(): boolean;
152
180
  finish(): void;
@@ -160,3 +160,10 @@ export declare class RepetitiveElementsOwnerLayoutProcessor extends LayoutProces
160
160
  export declare function appendHeaderToAncestors(nodeContext: Vtree.NodeContext, column: LayoutType.Column): void;
161
161
  export declare function appendHeader(formattingContext: RepetitiveElement.RepetitiveElementsOwnerFormattingContext, nodeContext: Vtree.NodeContext, column: LayoutType.Column): Task.Result<boolean>;
162
162
  export declare function appendFooter(formattingContext: RepetitiveElement.RepetitiveElementsOwnerFormattingContext, nodeContext: Vtree.NodeContext, column: LayoutType.Column): Task.Result<boolean>;
163
+ /**
164
+ * Check whether an overflow is within the scope of the repetitive elements
165
+ * owner. Returns true if the overflow should trigger header/footer skipping
166
+ * (i.e., the overflowing node is inside the owner), false otherwise.
167
+ * (Issue #1873)
168
+ */
169
+ export declare function isOverflowInsideRepetitiveElementsOwner(nodeContext: Vtree.NodeContext, overflownNodeContext: Vtree.NodeContext, repetitiveElements: RepetitiveElement.RepetitiveElements): boolean;
@@ -15,6 +15,60 @@
15
15
  * along with Vivliostyle.js. If not, see <http://www.gnu.org/licenses/>.
16
16
  *
17
17
  * @fileoverview Semantic footnote helper utilities.
18
+ *
19
+ * This module owns semantic-footnote-specific rules that are independent from
20
+ * the main view-generation flow: element/reference detection, shared marker
21
+ * attributes, first-reference bookkeeping, and style-merging helpers that can
22
+ * be driven by injected style accessors.
23
+ *
24
+ * Keep view-tree sequencing and DOM construction in vgen.ts. Extend this
25
+ * module when new DPUB/EPUB semantic footnote behavior can be expressed as
26
+ * pure reference/style helpers that do not need direct access to ViewFactory
27
+ * state.
18
28
  */
29
+ import * as Css from "./css";
30
+ import * as Exprs from "./exprs";
31
+ import * as Vtree from "./vtree";
32
+ import { CssCascade } from "./types";
33
+ export declare const SEMANTIC_FOOTNOTE_FIRST_REF_ATTR = "data-vivliostyle-footnote-first-ref";
34
+ export declare const SEMANTIC_FOOTNOTE_REFERENCED_ATTR = "data-vivliostyle-footnote-referenced";
35
+ type CascadeValueLike = {
36
+ value: Css.Val;
37
+ priority: number;
38
+ evaluate?: (context: Exprs.Context, propName: string) => Css.Val;
39
+ filterValue?: (visitor: unknown) => CascadeValueLike;
40
+ };
41
+ type ElementStyleMap = {
42
+ [key: string]: CssCascade.ElementStyle;
43
+ };
44
+ export type SemanticFootnoteStyleAccess = {
45
+ getStyle: (element: Element) => CssCascade.ElementStyle | null;
46
+ getProp: (style: CssCascade.ElementStyle | null | undefined, propName: string) => CascadeValueLike | null | undefined;
47
+ getStyleMap: (style: CssCascade.ElementStyle, mapName: string) => ElementStyleMap | null | undefined;
48
+ getMutableStyleMap: (style: CssCascade.ElementStyle, mapName: string) => ElementStyleMap;
49
+ createCascadeValue: (value: Css.Val, priority: number) => CascadeValueLike;
50
+ filterFootnoteMarkerContent: (content: CascadeValueLike, element: Element) => Css.Val;
51
+ };
52
+ export type SemanticFootnoteStyleState = {
53
+ sourceStyle: CssCascade.ElementStyle | null;
54
+ footnoteDisplay: Css.Val | null;
55
+ footnotePolicy: Css.Ident | null;
56
+ };
19
57
  export declare function isSemanticFootnoteElement(element: Element): boolean;
20
58
  export declare function isSemanticFootnoteNoterefElement(element: Element): boolean;
59
+ export declare function resolveSemanticFootnoteReference(element: Element, baseURL: string): string | null;
60
+ export declare function resolveSemanticFootnoteTarget(element: Element, baseURL: string, resolveElement: (reference: string) => Element | null): Element | null;
61
+ export declare function initializeFirstSemanticFootnoteReferenceOffsets(ownerDocument: Document, baseURL: string, getElementOffset: (element: Element) => number, firstRefOffsets: Map<string, number>, initialized: {
62
+ value: boolean;
63
+ }): void;
64
+ export declare function shouldGenerateSemanticFootnote(element: Element, baseURL: string, getElementOffset: (element: Element) => number, firstRefOffsets: Map<string, number>, initialized: {
65
+ value: boolean;
66
+ }): boolean;
67
+ export declare function mergeSemanticFootnoteIncludeStyle(element: Element, elementStyle: CssCascade.ElementStyle, shadowContext: Vtree.ShadowContext | null, baseURL: string, resolveElement: (reference: string) => Element | null, footnoteCounterAttr: string, styleAccess: SemanticFootnoteStyleAccess): CssCascade.ElementStyle;
68
+ export declare function mergeSemanticFootnoteRootStyle(element: Element, elementStyle: CssCascade.ElementStyle, shadowContext: Vtree.ShadowContext | null, context: Exprs.Context, styleAccess: SemanticFootnoteStyleAccess): CssCascade.ElementStyle;
69
+ export declare function getSemanticFootnoteStyleState(element: Element, shadowContext: Vtree.ShadowContext | null, styleAccess: SemanticFootnoteStyleAccess): SemanticFootnoteStyleState;
70
+ export declare function resolveMarkerContentValue(val: Css.Val, context: Exprs.Context): Css.Val;
71
+ export declare function refreshSemanticFootnoteMarkerContent(sourceStyle: CssCascade.ElementStyle | null, computedStyle: {
72
+ [key: string]: Css.Val;
73
+ }, context: Exprs.Context): void;
74
+ export {};
@@ -110,6 +110,7 @@ export declare class TableFormattingContext extends RepetitiveElementImpl.Repeti
110
110
  addCell(rowIndex: number, cell: TableCell): void;
111
111
  getRowByIndex(index: number): TableRow;
112
112
  findRowIndexBySourceNode(sourceNode: Node): number;
113
+ private isPreviousFragmentRowSpanningCellBreakPosition;
113
114
  addCellFragment(rowIndex: number, columnIndex: number, cellFragment: TableCellFragment): void;
114
115
  getCellsFallingOnRow(rowIndex: number): TableCell[];
115
116
  getRowSpanningCellsOverflowingTheRow(rowIndex: number): TableCell[];
@@ -169,6 +170,7 @@ export declare class TableLayoutStrategy extends LayoutUtil.EdgeSkipper {
169
170
  originalStopAtOverflow: boolean;
170
171
  inHeader: boolean;
171
172
  inFooter: boolean;
173
+ private didExtractRowSpanningCellBreakPositions;
172
174
  constructor(formattingContext: TableFormattingContext, column: Layout.Column);
173
175
  startNonInlineElementNode(state: LayoutUtil.LayoutIteratorState): void | Task.Result<boolean>;
174
176
  resetColumn(): void;
@@ -209,6 +211,13 @@ export declare class TableLayoutProcessor implements LayoutProcessor.LayoutProce
209
211
  * (propagated from cells or set on the row itself).
210
212
  */
211
213
  private hasForcedBreakInRows;
214
+ /**
215
+ * Check if there is any in-flow content before the given view node.
216
+ * Walks previous siblings at each ancestor level (up to the column root)
217
+ * to determine whether the table is at the leading edge of the
218
+ * page/column.
219
+ */
220
+ private hasInFlowContentBefore;
212
221
  addCaptions(formattingContext: TableFormattingContext, rootViewNode: Element, firstChild: Node | null): void;
213
222
  addColGroups(formattingContext: TableFormattingContext, rootViewNode: Element, firstChild: Node | null): void;
214
223
  removeColGroups(formattingContext: TableFormattingContext, rootViewNode: Element): void;
@@ -477,6 +477,7 @@ export declare namespace PageFloats {
477
477
  writingMode: Css.Val;
478
478
  direction: Css.Val;
479
479
  floatFragments: PageFloatFragment[];
480
+ ignoreFootnoteAreaMaxHeight: boolean;
480
481
  readonly parent: PageFloatLayoutContext;
481
482
  readonly effectiveParent: PageFloatLayoutContext | null;
482
483
  readonly flowName: string | null;
@@ -493,15 +494,18 @@ export declare namespace PageFloats {
493
494
  findPageFloatFragment(float: PageFloat): PageFloatFragment | null;
494
495
  hasFloatFragments(condition?: (p1: PageFloatFragment) => boolean): boolean;
495
496
  hasContinuingFloatFragmentsInFlow(flowName: string): boolean;
497
+ markPageFloatAnchorSeen(float: PageFloat): void;
496
498
  registerPageFloatAnchor(float: PageFloat, anchorViewNode: Node): void;
497
499
  collectPageFloatAnchors(): any;
498
500
  isAnchorAlreadyAppeared(floatId: PageFloatID): boolean;
499
501
  deferPageFloat(continuation: PageFloatContinuation): void;
502
+ removeFloatDeferredToNext(float: PageFloat): void;
500
503
  hasPrecedingFloatsDeferredToNext(float: PageFloat, ignoreReference?: boolean): boolean;
501
504
  getLastFollowingFloatInFragments(float: PageFloat): PageFloat | null;
502
505
  getDeferredPageFloatContinuations(flowName?: string | null): PageFloatContinuation[];
503
506
  getPageFloatContinuationsDeferredToNext(flowName?: string | null): PageFloatContinuation[];
504
507
  getFloatsDeferredToNextInChildContexts(): PageFloat[];
508
+ initFootnoteRetryFromEmptyFragment(float: PageFloat, area: Layout.PageFloatArea): boolean;
505
509
  checkAndForbidNotAllowedFloat(): boolean;
506
510
  checkAndForbidFloatFollowingDeferredFloat(): boolean;
507
511
  finish(): void;
@@ -17,9 +17,4 @@
17
17
  *
18
18
  * @fileoverview Urls - URL Utilities
19
19
  */
20
- /**
21
- * transform all urls in attributeValue using documentURLTransformer.
22
- *
23
- * @returns transformed attributeValue
24
- */
25
20
  export declare const transformURIs: (attributeValue: any, baseUrl: any, documentURLTransformer: any) => any;
@@ -48,6 +48,8 @@ export declare class ViewFactory extends Base.SimpleEventTarget implements Vtree
48
48
  private static FOOTNOTE_CALL_OWNER_ATTR;
49
49
  document: Document;
50
50
  exprContentListener: Vtree.ExprContentListener;
51
+ private computedStyleParentFontSizeOverride;
52
+ private computedStyleParentLineHeightOverride;
51
53
  nodeContext: Vtree.NodeContext | null;
52
54
  viewRoot: Element | null;
53
55
  isFootnote: boolean;
@@ -63,11 +65,7 @@ export declare class ViewFactory extends Base.SimpleEventTarget implements Vtree
63
65
  });
64
66
  /** @override */
65
67
  clone(): Vtree.LayoutContext;
66
- private initializeSemanticFootnoteFirstRefOffsets;
67
- /**
68
- * True only for the first semantic footnote reference to the same target.
69
- */
70
- private shouldGenerateSemanticFootnote;
68
+ private syncSemanticFootnoteCounterToTarget;
71
69
  createPseudoelementShadow(element: Element, isRoot: boolean, cascStyle: CssCascade.ElementStyle, computedStyle: {
72
70
  [key: string]: Css.Val;
73
71
  }, styler: CssStyler.AbstractStyler, context: Exprs.Context, parentShadow: Vtree.ShadowContext, subShadow: Vtree.ShadowContext): Vtree.ShadowContext;
@@ -171,6 +169,10 @@ export declare class ViewFactory extends Base.SimpleEventTarget implements Vtree
171
169
  * @returns parsed and adjusted value in px, or null if cannot parse as "px" unit, e.g. "normal"
172
170
  */
173
171
  private parsePlusLayoutUnitAdj;
172
+ private getFootnoteAreaInheritedMetrics;
173
+ private getComputedFontMetrics;
174
+ private getParentViewStyle;
175
+ private getParentComputedMetrics;
174
176
  /**
175
177
  * Get "lh" unit size in px
176
178
  * @return line-height in px, or null if cannot be determined
@@ -267,3 +269,9 @@ export declare class Viewport {
267
269
  */
268
270
  clear(): void;
269
271
  }
272
+ /**
273
+ * Recursively walk a CSS value tree and push image-load fetchers for any
274
+ * URL values found. Used to preload images referenced by background-image,
275
+ * border-image-source, filter, etc.
276
+ */
277
+ export declare function addImageFetchersToPage(val: Css.Val, page: Vtree.Page): void;