docxodus 9.7.0 → 9.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +0 -1
  3. package/dist/editor.bundle.js +454 -99
  4. package/dist/editor.d.ts +4 -4
  5. package/dist/editor.d.ts.map +1 -1
  6. package/dist/editor.js +55 -8
  7. package/dist/editor.js.map +1 -1
  8. package/dist/embed.bundle.js +454 -99
  9. package/dist/embed.iife.js +454 -99
  10. package/dist/page-geometry.d.ts +50 -3
  11. package/dist/page-geometry.d.ts.map +1 -1
  12. package/dist/page-geometry.js +63 -6
  13. package/dist/page-geometry.js.map +1 -1
  14. package/dist/pagination.bundle.js +416 -91
  15. package/dist/pagination.d.ts +61 -8
  16. package/dist/pagination.d.ts.map +1 -1
  17. package/dist/pagination.js +353 -105
  18. package/dist/pagination.js.map +1 -1
  19. package/dist/ribbon-chrome.d.ts +1 -1
  20. package/dist/ribbon-chrome.d.ts.map +1 -1
  21. package/dist/ribbon-chrome.js +1 -0
  22. package/dist/ribbon-chrome.js.map +1 -1
  23. package/dist/wasm/_framework/Docxodus.wasm +0 -0
  24. package/dist/wasm/_framework/Docxodus.wasm.br +0 -0
  25. package/dist/wasm/_framework/DocxodusWasm.wasm +0 -0
  26. package/dist/wasm/_framework/DocxodusWasm.wasm.br +0 -0
  27. package/dist/wasm/_framework/System.Collections.Concurrent.wasm +0 -0
  28. package/dist/wasm/_framework/System.Collections.Concurrent.wasm.br +0 -0
  29. package/dist/wasm/_framework/System.Collections.Immutable.wasm +0 -0
  30. package/dist/wasm/_framework/System.Collections.Immutable.wasm.br +0 -0
  31. package/dist/wasm/_framework/System.Collections.NonGeneric.wasm +0 -0
  32. package/dist/wasm/_framework/System.Collections.NonGeneric.wasm.br +0 -0
  33. package/dist/wasm/_framework/System.Collections.Specialized.wasm +0 -0
  34. package/dist/wasm/_framework/System.Collections.Specialized.wasm.br +0 -0
  35. package/dist/wasm/_framework/System.Collections.wasm +0 -0
  36. package/dist/wasm/_framework/System.Collections.wasm.br +0 -0
  37. package/dist/wasm/_framework/System.ComponentModel.Primitives.wasm +0 -0
  38. package/dist/wasm/_framework/System.ComponentModel.Primitives.wasm.br +0 -0
  39. package/dist/wasm/_framework/System.ComponentModel.TypeConverter.wasm +0 -0
  40. package/dist/wasm/_framework/System.ComponentModel.TypeConverter.wasm.br +0 -0
  41. package/dist/wasm/_framework/System.ComponentModel.wasm +0 -0
  42. package/dist/wasm/_framework/System.ComponentModel.wasm.br +0 -0
  43. package/dist/wasm/_framework/System.Console.wasm +0 -0
  44. package/dist/wasm/_framework/System.Console.wasm.br +0 -0
  45. package/dist/wasm/_framework/System.Diagnostics.Process.wasm +0 -0
  46. package/dist/wasm/_framework/System.Diagnostics.Process.wasm.br +0 -0
  47. package/dist/wasm/_framework/System.IO.Compression.wasm +0 -0
  48. package/dist/wasm/_framework/System.IO.Compression.wasm.br +0 -0
  49. package/dist/wasm/_framework/System.IO.Pipelines.wasm +0 -0
  50. package/dist/wasm/_framework/System.IO.Pipelines.wasm.br +0 -0
  51. package/dist/wasm/_framework/System.Linq.Expressions.wasm +0 -0
  52. package/dist/wasm/_framework/System.Linq.Expressions.wasm.br +0 -0
  53. package/dist/wasm/_framework/System.Linq.wasm +0 -0
  54. package/dist/wasm/_framework/System.Linq.wasm.br +0 -0
  55. package/dist/wasm/_framework/System.Memory.wasm +0 -0
  56. package/dist/wasm/_framework/System.Memory.wasm.br +0 -0
  57. package/dist/wasm/_framework/System.Net.Http.wasm +0 -0
  58. package/dist/wasm/_framework/System.Net.Http.wasm.br +0 -0
  59. package/dist/wasm/_framework/System.Net.Primitives.wasm +0 -0
  60. package/dist/wasm/_framework/System.Net.Primitives.wasm.br +0 -0
  61. package/dist/wasm/_framework/System.ObjectModel.wasm +0 -0
  62. package/dist/wasm/_framework/System.ObjectModel.wasm.br +0 -0
  63. package/dist/wasm/_framework/System.Private.CoreLib.wasm +0 -0
  64. package/dist/wasm/_framework/System.Private.CoreLib.wasm.br +0 -0
  65. package/dist/wasm/_framework/System.Private.Uri.wasm +0 -0
  66. package/dist/wasm/_framework/System.Private.Uri.wasm.br +0 -0
  67. package/dist/wasm/_framework/System.Private.Xml.Linq.wasm +0 -0
  68. package/dist/wasm/_framework/System.Private.Xml.Linq.wasm.br +0 -0
  69. package/dist/wasm/_framework/System.Private.Xml.wasm +0 -0
  70. package/dist/wasm/_framework/System.Private.Xml.wasm.br +0 -0
  71. package/dist/wasm/_framework/System.Runtime.InteropServices.JavaScript.wasm +0 -0
  72. package/dist/wasm/_framework/System.Runtime.InteropServices.JavaScript.wasm.br +0 -0
  73. package/dist/wasm/_framework/System.Runtime.wasm +0 -0
  74. package/dist/wasm/_framework/System.Runtime.wasm.br +0 -0
  75. package/dist/wasm/_framework/System.Security.Cryptography.wasm +0 -0
  76. package/dist/wasm/_framework/System.Security.Cryptography.wasm.br +0 -0
  77. package/dist/wasm/_framework/System.Text.Encodings.Web.wasm +0 -0
  78. package/dist/wasm/_framework/System.Text.Encodings.Web.wasm.br +0 -0
  79. package/dist/wasm/_framework/System.Text.Json.wasm +0 -0
  80. package/dist/wasm/_framework/System.Text.Json.wasm.br +0 -0
  81. package/dist/wasm/_framework/System.Text.RegularExpressions.wasm +0 -0
  82. package/dist/wasm/_framework/System.Text.RegularExpressions.wasm.br +0 -0
  83. package/dist/wasm/_framework/System.Xml.Linq.wasm +0 -0
  84. package/dist/wasm/_framework/System.Xml.Linq.wasm.br +0 -0
  85. package/dist/wasm/_framework/System.Xml.XDocument.wasm +0 -0
  86. package/dist/wasm/_framework/System.Xml.XDocument.wasm.br +0 -0
  87. package/dist/wasm/_framework/System.wasm +0 -0
  88. package/dist/wasm/_framework/System.wasm.br +0 -0
  89. package/dist/wasm/_framework/dotnet.boot.js +35 -35
  90. package/dist/wasm/_framework/dotnet.boot.js.br +0 -0
  91. package/dist/wasm/_framework/dotnet.js +1 -1
  92. package/dist/wasm/_framework/dotnet.js.br +0 -0
  93. package/dist/wasm/_framework/dotnet.native.js +3 -3
  94. package/dist/wasm/_framework/dotnet.native.js.br +0 -0
  95. package/dist/wasm/_framework/dotnet.native.wasm +0 -0
  96. package/dist/wasm/_framework/dotnet.native.wasm.br +0 -0
  97. package/dist/wasm/_framework/dotnet.runtime.js +1 -1
  98. package/dist/wasm/_framework/dotnet.runtime.js.br +0 -0
  99. package/package.json +14 -5
  100. package/dist/wasm/index.html +0 -238
  101. package/dist/wasm/main.js +0 -26
@@ -32,16 +32,22 @@ export interface PageDimensions {
32
32
  marginBottom: number;
33
33
  /** Left margin in points */
34
34
  marginLeft: number;
35
- /** Header distance from top of page in points */
35
+ /** `w:pgMar/@w:header` — page top edge to the TOP of the header story, in points. */
36
+ headerDistance: number;
37
+ /** `w:pgMar/@w:footer` — page bottom edge to the BOTTOM of the footer story, in points. */
38
+ footerDistance: number;
39
+ /** @deprecated Misnamed alias of {@link headerDistance} — it never held a height. */
36
40
  headerHeight: number;
37
- /** Footer distance from bottom of page in points */
41
+ /** @deprecated Misnamed alias of {@link footerDistance} — it never held a height. */
38
42
  footerHeight: number;
39
43
  }
40
44
  /** US Letter portrait — Word's default, and this module's fallback for an unstamped section. */
41
45
  export declare const DEFAULT_PAGE_WIDTH = 612;
42
46
  export declare const DEFAULT_PAGE_HEIGHT = 792;
43
47
  export declare const DEFAULT_MARGIN = 72;
44
- /** Default header/footer distance (0.5 inch). */
48
+ /** Default header/footer distance from the paper edge (0.5 inch). */
49
+ export declare const DEFAULT_HEADER_FOOTER_DISTANCE = 36;
50
+ /** @deprecated Misnamed alias of {@link DEFAULT_HEADER_FOOTER_DISTANCE}. */
45
51
  export declare const DEFAULT_HEADER_FOOTER_HEIGHT = 36;
46
52
  /** Converts pixels to points (assuming 96 DPI screen). */
47
53
  export declare function pxToPt(px: number): number;
@@ -49,6 +55,47 @@ export declare function pxToPt(px: number): number;
49
55
  export declare function ptToPx(pt: number): number;
50
56
  /** Parses page dimensions from a section wrapper's data attributes. */
51
57
  export declare function parseSectionDimensions(section: HTMLElement): PageDimensions;
58
+ /**
59
+ * Where a page's three bands sit, in points measured from the page's TOP edge.
60
+ *
61
+ * Resolved by {@link resolvePageBands} from the section's page setup plus the measured
62
+ * height of the running content actually selected for that page.
63
+ */
64
+ export interface PageBands {
65
+ /** Top of the header band; it grows downward from here. */
66
+ headerTop: number;
67
+ /** Height of the header band (the measured header story, clipped to the body's top). */
68
+ headerHeight: number;
69
+ /** Top of the body text band. */
70
+ bodyTop: number;
71
+ /** Height of the body text band. */
72
+ bodyHeight: number;
73
+ /** Top of the footer band; it grows upward, so its BOTTOM is the fixed edge. */
74
+ footerTop: number;
75
+ /** Height of the footer band (the measured footer story, clipped to the body's bottom). */
76
+ footerHeight: number;
77
+ }
78
+ /**
79
+ * A body band this short cannot hold a single line, and a page that can hold nothing sends
80
+ * every block down the oversized-block path. Running content may push the body — Word does
81
+ * that — but it may not delete it, so a pathological header/footer gives this much back.
82
+ */
83
+ export declare const MIN_BODY_BAND_PT = 12;
84
+ /**
85
+ * Word's page band model.
86
+ *
87
+ * `w:header`/`w:footer` are DISTANCES from the paper edge to the running content, and
88
+ * `w:top`/`w:bottom` are distances from the paper edge to the body text — four independent
89
+ * numbers, not two nested boxes. The header is laid out from `headerDistance` downward and
90
+ * the footer from `footerDistance` upward; the body then starts at the top margin unless the
91
+ * header has already run past it, and ends at the bottom margin unless the footer has
92
+ * already climbed above it.
93
+ *
94
+ * Anchoring the bands to the margins instead — header bottom-aligned to `marginTop`, footer
95
+ * top-aligned to `pageHeight - marginBottom` — collapses both toward the body by exactly
96
+ * `margin - distance`, which is what this function replaced.
97
+ */
98
+ export declare function resolvePageBands(dims: PageDimensions, headerContentHeight: number, footerContentHeight: number): PageBands;
52
99
  /** Every section wrapper under `root`, or `root` itself when the render stamped none. */
53
100
  export declare function sectionWrappers(root: HTMLElement): HTMLElement[];
54
101
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"page-geometry.d.ts","sourceRoot":"","sources":["../src/page-geometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,sFAAsF;AACtF,MAAM,WAAW,cAAc;IAC7B,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,gGAAgG;AAChG,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,iDAAiD;AACjD,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,0DAA0D;AAC1D,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED,0DAA0D;AAC1D,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED,uEAAuE;AACvE,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAwB3E;AAED,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,EAAE,CAGhE;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,OAAO,CAAC;AAElC,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,SAAI,GAAG,MAAM,CAKhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,EAAE,EAAE,WAAW,EACf,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC5C,IAAI,CAqBN"}
1
+ {"version":3,"file":"page-geometry.d.ts","sourceRoot":"","sources":["../src/page-geometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,sFAAsF;AACtF,MAAM,WAAW,cAAc;IAC7B,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,cAAc,EAAE,MAAM,CAAC;IACvB,2FAA2F;IAC3F,cAAc,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,YAAY,EAAE,MAAM,CAAC;IACrB,qFAAqF;IACrF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,gGAAgG;AAChG,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,qEAAqE;AACrE,eAAO,MAAM,8BAA8B,KAAK,CAAC;AACjD,4EAA4E;AAC5E,eAAO,MAAM,4BAA4B,KAAiC,CAAC;AAE3E,0DAA0D;AAC1D,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED,0DAA0D;AAC1D,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED,uEAAuE;AACvE,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CA8B3E;AAED;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,YAAY,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,2FAA2F;IAC3F,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,cAAc,EACpB,mBAAmB,EAAE,MAAM,EAC3B,mBAAmB,EAAE,MAAM,GAC1B,SAAS,CAkCX;AAED,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,EAAE,CAGhE;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,OAAO,CAAC;AAElC,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,SAAI,GAAG,MAAM,CAKhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,EAAE,EAAE,WAAW,EACf,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC5C,IAAI,CAqBN"}
@@ -18,8 +18,10 @@
18
18
  export const DEFAULT_PAGE_WIDTH = 612;
19
19
  export const DEFAULT_PAGE_HEIGHT = 792;
20
20
  export const DEFAULT_MARGIN = 72; // 1 inch
21
- /** Default header/footer distance (0.5 inch). */
22
- export const DEFAULT_HEADER_FOOTER_HEIGHT = 36;
21
+ /** Default header/footer distance from the paper edge (0.5 inch). */
22
+ export const DEFAULT_HEADER_FOOTER_DISTANCE = 36;
23
+ /** @deprecated Misnamed alias of {@link DEFAULT_HEADER_FOOTER_DISTANCE}. */
24
+ export const DEFAULT_HEADER_FOOTER_HEIGHT = DEFAULT_HEADER_FOOTER_DISTANCE;
23
25
  /** Converts pixels to points (assuming 96 DPI screen). */
24
26
  export function pxToPt(px) {
25
27
  return px * 0.75; // 72 points / 96 pixels
@@ -38,8 +40,10 @@ export function parseSectionDimensions(section) {
38
40
  const marginRight = parseFloat(section.dataset.marginRight || "") || DEFAULT_MARGIN;
39
41
  const marginBottom = parseFloat(section.dataset.marginBottom || "") || DEFAULT_MARGIN;
40
42
  const marginLeft = parseFloat(section.dataset.marginLeft || "") || DEFAULT_MARGIN;
41
- const headerHeight = parseFloat(section.dataset.headerHeight || "") || DEFAULT_HEADER_FOOTER_HEIGHT;
42
- const footerHeight = parseFloat(section.dataset.footerHeight || "") || DEFAULT_HEADER_FOOTER_HEIGHT;
43
+ // `data-header-height`/`data-footer-height` carry `w:pgMar/@w:header` and `@w:footer`, which
44
+ // are distances from the paper edge — the attribute names predate that being understood.
45
+ const headerDistance = parseFloat(section.dataset.headerHeight || "") || DEFAULT_HEADER_FOOTER_DISTANCE;
46
+ const footerDistance = parseFloat(section.dataset.footerHeight || "") || DEFAULT_HEADER_FOOTER_DISTANCE;
43
47
  return {
44
48
  pageWidth,
45
49
  pageHeight,
@@ -49,8 +53,61 @@ export function parseSectionDimensions(section) {
49
53
  marginRight,
50
54
  marginBottom,
51
55
  marginLeft,
52
- headerHeight,
53
- footerHeight,
56
+ headerDistance,
57
+ footerDistance,
58
+ headerHeight: headerDistance,
59
+ footerHeight: footerDistance,
60
+ };
61
+ }
62
+ /**
63
+ * A body band this short cannot hold a single line, and a page that can hold nothing sends
64
+ * every block down the oversized-block path. Running content may push the body — Word does
65
+ * that — but it may not delete it, so a pathological header/footer gives this much back.
66
+ */
67
+ export const MIN_BODY_BAND_PT = 12;
68
+ /**
69
+ * Word's page band model.
70
+ *
71
+ * `w:header`/`w:footer` are DISTANCES from the paper edge to the running content, and
72
+ * `w:top`/`w:bottom` are distances from the paper edge to the body text — four independent
73
+ * numbers, not two nested boxes. The header is laid out from `headerDistance` downward and
74
+ * the footer from `footerDistance` upward; the body then starts at the top margin unless the
75
+ * header has already run past it, and ends at the bottom margin unless the footer has
76
+ * already climbed above it.
77
+ *
78
+ * Anchoring the bands to the margins instead — header bottom-aligned to `marginTop`, footer
79
+ * top-aligned to `pageHeight - marginBottom` — collapses both toward the body by exactly
80
+ * `margin - distance`, which is what this function replaced.
81
+ */
82
+ export function resolvePageBands(dims, headerContentHeight, footerContentHeight) {
83
+ const headerTop = dims.headerDistance;
84
+ const footerBottom = dims.pageHeight - dims.footerDistance;
85
+ // A page with NO running story has nothing below the paper edge to push the body: the
86
+ // distance alone reserves no space. (Word's own empty header is still a story — one empty
87
+ // paragraph with a real line height — so zero here means absent, not blank.)
88
+ const headerReach = headerContentHeight > 0 ? headerTop + headerContentHeight : 0;
89
+ const footerReach = footerContentHeight > 0 ? footerBottom - footerContentHeight : dims.pageHeight;
90
+ let bodyTop = Math.max(dims.marginTop, headerReach);
91
+ let bodyBottom = Math.min(dims.pageHeight - dims.marginBottom, footerReach);
92
+ // Hand back whatever the bands over-claimed, in proportion to how far each grew past its
93
+ // own margin, so a tall header does not silently consume the whole page.
94
+ const shortfall = MIN_BODY_BAND_PT - (bodyBottom - bodyTop);
95
+ if (shortfall > 0) {
96
+ const headerGrowth = bodyTop - dims.marginTop;
97
+ const footerGrowth = dims.pageHeight - dims.marginBottom - bodyBottom;
98
+ const growth = headerGrowth + footerGrowth;
99
+ if (growth > 0) {
100
+ bodyTop -= (shortfall * headerGrowth) / growth;
101
+ bodyBottom += (shortfall * footerGrowth) / growth;
102
+ }
103
+ }
104
+ return {
105
+ headerTop,
106
+ headerHeight: Math.max(0, Math.min(headerContentHeight, bodyTop - headerTop)),
107
+ bodyTop,
108
+ bodyHeight: Math.max(0, bodyBottom - bodyTop),
109
+ footerTop: footerBottom - Math.max(0, Math.min(footerContentHeight, footerBottom - bodyBottom)),
110
+ footerHeight: Math.max(0, Math.min(footerContentHeight, footerBottom - bodyBottom)),
54
111
  };
55
112
  }
56
113
  /** Every section wrapper under `root`, or `root` itself when the render stamped none. */
@@ -1 +1 @@
1
- {"version":3,"file":"page-geometry.js","sourceRoot":"","sources":["../src/page-geometry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page-geometry.js","sourceRoot":"","sources":["../src/page-geometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA8BH,gGAAgG;AAChG,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AACtC,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC,CAAC,SAAS;AAC3C,qEAAqE;AACrE,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,CAAC;AACjD,4EAA4E;AAC5E,MAAM,CAAC,MAAM,4BAA4B,GAAG,8BAA8B,CAAC;AAE3E,0DAA0D;AAC1D,MAAM,UAAU,MAAM,CAAC,EAAU;IAC/B,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,wBAAwB;AAC5C,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,MAAM,CAAC,EAAU;IAC/B,OAAO,EAAE,GAAG,IAAI,CAAC;AACnB,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,sBAAsB,CAAC,OAAoB;IACzD,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,kBAAkB,CAAC;IACpF,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,IAAI,mBAAmB,CAAC;IACvF,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,IAAI,SAAS,GAAG,CAAC,GAAG,cAAc,CAAC;IACtG,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,IAAI,UAAU,GAAG,CAAC,GAAG,cAAc,CAAC;IACzG,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,cAAc,CAAC;IAChF,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,IAAI,cAAc,CAAC;IACpF,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,IAAI,cAAc,CAAC;IACtF,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,IAAI,cAAc,CAAC;IAClF,6FAA6F;IAC7F,yFAAyF;IACzF,MAAM,cAAc,GAClB,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,IAAI,8BAA8B,CAAC;IACnF,MAAM,cAAc,GAClB,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,IAAI,8BAA8B,CAAC;IAEnF,OAAO;QACL,SAAS;QACT,UAAU;QACV,YAAY;QACZ,aAAa;QACb,SAAS;QACT,WAAW;QACX,YAAY;QACZ,UAAU;QACV,cAAc;QACd,cAAc;QACd,YAAY,EAAE,cAAc;QAC5B,YAAY,EAAE,cAAc;KAC7B,CAAC;AACJ,CAAC;AAuBD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAoB,EACpB,mBAA2B,EAC3B,mBAA2B;IAE3B,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;IACtC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC;IAE3D,sFAAsF;IACtF,0FAA0F;IAC1F,6EAA6E;IAC7E,MAAM,WAAW,GAAG,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,WAAW,GAAG,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;IAEnG,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACpD,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAE5E,yFAAyF;IACzF,yEAAyE;IACzE,MAAM,SAAS,GAAG,gBAAgB,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC;IAC5D,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,YAAY,GAAG,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;QACtE,MAAM,MAAM,GAAG,YAAY,GAAG,YAAY,CAAC;QAC3C,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,GAAG,MAAM,CAAC;YAC/C,UAAU,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,GAAG,MAAM,CAAC;QACpD,CAAC;IACH,CAAC;IAED,OAAO;QACL,SAAS;QACT,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;QAC7E,OAAO;QACP,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;QAC7C,SAAS,EAAE,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,YAAY,GAAG,UAAU,CAAC,CAAC;QAC/F,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,YAAY,GAAG,UAAU,CAAC,CAAC;KACpF,CAAC;AACJ,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,eAAe,CAAC,IAAiB;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAc,sBAAsB,CAAC,CAAC,CAAC;IACxF,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAElC,MAAM,UAAU,QAAQ,CAAC,WAAmB,EAAE,SAAiB,EAAE,GAAG,GAAG,CAAC;IACtE,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC;IACvD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,SAAS,IAAI,WAAW;QAAE,OAAO,GAAG,CAAC;IACzC,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CACvB,EAAe,EACf,KAAa,EACb,SAA6C;IAE7C,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAChC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACrC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;QAC5C,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QACxC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IACD,MAAM,aAAa,GACjB,OAAO,GAAG,KAAK,WAAW,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClG,IAAI,aAAa,EAAE,CAAC;QAClB,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IACD,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,KAAK,GAAG,CAAC;IACvC,EAAE,CAAC,KAAK,CAAC,eAAe,GAAG,UAAU,CAAC;IACtC,IAAI,SAAS,EAAE,CAAC;QACd,EAAE,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC;QACrE,EAAE,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC;IACzE,CAAC;AACH,CAAC"}