reamkit 1.32.1 → 1.33.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 (153) hide show
  1. package/README.md +5 -4
  2. package/dist/esm/core/bidi/algorithm.js +2 -2
  3. package/dist/esm/core/bidi/char-types.js +1 -1
  4. package/dist/esm/core/bidi/index.js +3 -3
  5. package/dist/esm/core/bytes.js +1 -1
  6. package/dist/esm/core/converter/facade.js +3 -2
  7. package/dist/esm/core/converter/ream.js +12 -5
  8. package/dist/esm/core/crypto/asn1.js +2 -2
  9. package/dist/esm/core/crypto/cms.js +5 -3
  10. package/dist/esm/core/crypto/index.js +2 -1
  11. package/dist/esm/core/crypto/offcrypto.js +8 -7
  12. package/dist/esm/core/crypto/primitives.js +16 -16
  13. package/dist/esm/core/document-model/index.d.ts +1 -1
  14. package/dist/esm/core/document-model/types.d.ts +174 -2
  15. package/dist/esm/core/drawingml/chart-geometry.d.ts +24 -6
  16. package/dist/esm/core/drawingml/chart-geometry.js +905 -208
  17. package/dist/esm/core/drawingml/chart-parser.d.ts +5 -1
  18. package/dist/esm/core/drawingml/chart-parser.js +275 -19
  19. package/dist/esm/core/drawingml/chart-text.d.ts +41 -0
  20. package/dist/esm/core/drawingml/chart-text.js +93 -0
  21. package/dist/esm/core/drawingml/colors.js +5 -5
  22. package/dist/esm/core/drawingml/diagram/layout-engine.js +1 -4
  23. package/dist/esm/core/drawingml/diagram/run.js +2 -1
  24. package/dist/esm/core/drawingml/preset-geometry.js +4 -6
  25. package/dist/esm/core/drawingml/shape-render.js +1 -1
  26. package/dist/esm/core/drawingml/text-warp.js +4 -16
  27. package/dist/esm/core/drawingml/theme-parser.js +14 -8
  28. package/dist/esm/core/font/arabic-joining.js +2 -2
  29. package/dist/esm/core/font/binary-reader.js +2 -0
  30. package/dist/esm/core/font/font-registry.js +1 -0
  31. package/dist/esm/core/font/ligatures.js +1 -1
  32. package/dist/esm/core/font/opentype-layout.js +11 -5
  33. package/dist/esm/core/font/ttf-build.js +6 -10
  34. package/dist/esm/core/font/ttf-parser.js +2 -1
  35. package/dist/esm/core/font/ttf-subset.js +8 -8
  36. package/dist/esm/core/fonts/families.js +1 -1
  37. package/dist/esm/core/fonts/remote-fonts.js +4 -4
  38. package/dist/esm/core/hyphenation/index.js +1 -1
  39. package/dist/esm/core/images.js +8 -8
  40. package/dist/esm/core/ir/loss.js +1 -0
  41. package/dist/esm/core/line-breaker/cjk.js +1 -1
  42. package/dist/esm/core/line-breaker/index.js +4 -3
  43. package/dist/esm/core/links.js +1 -1
  44. package/dist/esm/core/lzw.js +1 -1
  45. package/dist/esm/core/metafile/blit.js +1 -1
  46. package/dist/esm/core/metafile/emf.js +5 -7
  47. package/dist/esm/core/metafile/picture.js +1 -1
  48. package/dist/esm/core/metafile/symbol-fonts.js +7 -7
  49. package/dist/esm/core/metafile/wmf.js +5 -7
  50. package/dist/esm/core/number-format.js +4 -6
  51. package/dist/esm/core/numbering/index.js +3 -2
  52. package/dist/esm/core/ole/cfb.js +4 -4
  53. package/dist/esm/core/ole/escher-blip.js +1 -1
  54. package/dist/esm/core/opc/index.js +5 -4
  55. package/dist/esm/core/opc/package.js +3 -1
  56. package/dist/esm/core/opc/xml-entities.js +1 -1
  57. package/dist/esm/core/outline.js +1 -1
  58. package/dist/esm/core/png-encode.js +3 -3
  59. package/dist/esm/core/po-helpers.js +1 -1
  60. package/dist/esm/core/spreadsheet-model/types.d.ts +6 -0
  61. package/dist/esm/core/style-cascade/index.js +4 -3
  62. package/dist/esm/core/tiff.js +3 -1
  63. package/dist/esm/excel/activex-parser.js +1 -1
  64. package/dist/esm/excel/conditional-format.js +7 -7
  65. package/dist/esm/excel/formula/functions.js +8 -4
  66. package/dist/esm/excel/formula/index.js +3 -3
  67. package/dist/esm/excel/formula/lexer.js +2 -2
  68. package/dist/esm/excel/formula/parser.js +4 -3
  69. package/dist/esm/excel/formula/value.js +1 -1
  70. package/dist/esm/excel/index.js +7 -6
  71. package/dist/esm/excel/print-model.js +4 -4
  72. package/dist/esm/excel/printer-settings.js +6 -7
  73. package/dist/esm/excel/rich-value.js +1 -1
  74. package/dist/esm/excel/sheet-shape-parser.js +4 -2
  75. package/dist/esm/excel/sheet-to-flow.js +13 -11
  76. package/dist/esm/excel/styles-parser.js +5 -3
  77. package/dist/esm/excel/tint.js +5 -5
  78. package/dist/esm/excel/vml-drawing.js +2 -2
  79. package/dist/esm/excel/worksheet-parser.js +5 -5
  80. package/dist/esm/excel/xls/biff-chart.js +1 -3
  81. package/dist/esm/excel/xls/biff-reader.js +10 -11
  82. package/dist/esm/excel/xls/xls-reader.js +1 -1
  83. package/dist/esm/excel/xlsx-reader.js +17 -4
  84. package/dist/esm/excel/xlsx-to-pdf.js +1 -1
  85. package/dist/esm/excel/xlsx-writer.js +2 -2
  86. package/dist/esm/html/html-writer.js +18 -10
  87. package/dist/esm/layout/line-paint.js +1 -1
  88. package/dist/esm/layout/math-layout.js +5 -8
  89. package/dist/esm/layout/styled-layout.js +103 -31
  90. package/dist/esm/layout/turned-section.js +2 -2
  91. package/dist/esm/markdown/markdown-writer.js +1 -1
  92. package/dist/esm/pdf/encryption.js +9 -9
  93. package/dist/esm/pdf/icc-profile.js +2 -2
  94. package/dist/esm/pdf/index.js +3 -2
  95. package/dist/esm/pdf/objects.js +7 -0
  96. package/dist/esm/pdf/serialize.js +1 -1
  97. package/dist/esm/pdf/struct-tree.js +3 -1
  98. package/dist/esm/pdf/styled-page-emitter.js +23 -15
  99. package/dist/esm/pdf/styled-page-renderer.js +9 -5
  100. package/dist/esm/pdf-reader/annot-draw.js +3 -3
  101. package/dist/esm/pdf-reader/ccitt.js +2 -1
  102. package/dist/esm/pdf-reader/cff-outline.js +1 -4
  103. package/dist/esm/pdf-reader/content.js +13 -15
  104. package/dist/esm/pdf-reader/decrypt.js +5 -4
  105. package/dist/esm/pdf-reader/document.js +6 -2
  106. package/dist/esm/pdf-reader/encodings.js +1 -1
  107. package/dist/esm/pdf-reader/flow-build.js +4 -6
  108. package/dist/esm/pdf-reader/font.js +3 -3
  109. package/dist/esm/pdf-reader/function.js +8 -7
  110. package/dist/esm/pdf-reader/icc.js +1 -1
  111. package/dist/esm/pdf-reader/images.js +1 -1
  112. package/dist/esm/pdf-reader/jbig2.js +36 -38
  113. package/dist/esm/pdf-reader/jpeg.js +14 -13
  114. package/dist/esm/pdf-reader/layout.js +12 -9
  115. package/dist/esm/pdf-reader/lexer.js +2 -1
  116. package/dist/esm/pdf-reader/math-rows.js +2 -2
  117. package/dist/esm/pdf-reader/optional-content.js +1 -1
  118. package/dist/esm/pdf-reader/page-numbers.js +1 -1
  119. package/dist/esm/pdf-reader/pattern-tint.js +1 -2
  120. package/dist/esm/pdf-reader/reader.js +2 -2
  121. package/dist/esm/pdf-reader/struct-tree.js +1 -1
  122. package/dist/esm/pdf-reader/tagged.js +3 -2
  123. package/dist/esm/pdf-reader/text.js +2 -2
  124. package/dist/esm/pdf-reader/type1-outline.js +1 -3
  125. package/dist/esm/pptx/embedded-fonts.js +3 -5
  126. package/dist/esm/pptx/placeholder-cascade.js +1 -1
  127. package/dist/esm/pptx/ppt/ppt-reader.js +5 -4
  128. package/dist/esm/pptx/ppt/ppt-text.js +9 -10
  129. package/dist/esm/pptx/pptx-reader.js +6 -5
  130. package/dist/esm/pptx/preset-table-styles.js +1 -1
  131. package/dist/esm/pptx/slide-parser.js +6 -4
  132. package/dist/esm/pptx/sp-helpers.js +1 -1
  133. package/dist/esm/pptx/table-style.js +2 -1
  134. package/dist/esm/svg/svg-writer.js +1 -1
  135. package/dist/esm/word/doc/doc-reader.js +2 -2
  136. package/dist/esm/word/doc/doc-text.js +20 -22
  137. package/dist/esm/word/document-parser.js +26 -21
  138. package/dist/esm/word/docx-reader.js +2 -2
  139. package/dist/esm/word/docx-to-pdf.js +3 -3
  140. package/dist/esm/word/docx-writer.js +10 -6
  141. package/dist/esm/word/drawing-parser.js +18 -18
  142. package/dist/esm/word/font-table.js +1 -1
  143. package/dist/esm/word/index.js +6 -5
  144. package/dist/esm/word/numbering-parser.js +4 -3
  145. package/dist/esm/word/omml-parser.js +1 -1
  146. package/dist/esm/word/paragraph-properties.js +11 -10
  147. package/dist/esm/word/run-properties.js +4 -4
  148. package/dist/esm/word/settings-parser.js +2 -1
  149. package/dist/esm/word/shading.js +1 -1
  150. package/dist/esm/word/styles-parser.js +5 -4
  151. package/dist/esm/word/table-parser.js +4 -4
  152. package/dist/esm/word/theme-fonts.js +1 -1
  153. package/package.json +8 -2
package/README.md CHANGED
@@ -213,10 +213,11 @@ own PDF: columns in the Normal font's digit as Excel counts it, a table in the
213
213
  style it names, a theme colour's tint to the digit, a sheet that reads from the
214
214
  right turned round, the notes it shows beside their cells, its drawings over
215
215
  the cells and cut where its pages are, a chart's axes scaled and crossed where
216
- Excel puts them. As HTML a workbook comes out as Excel's window shows it —
217
- every tab, its gridlines, a noted cell flagged with the note on hover — and as
218
- SVG as pictures of its sheets, each whole, its text drawn from the faces' own
219
- outlines.
216
+ Excel puts them, its text in the face Excel sets it in, its 3-D bars and pies
217
+ standing in three dimensions. As HTML a workbook comes out as Excel's window
218
+ shows it — every tab, its gridlines, a noted cell flagged with the note on
219
+ hover — and as SVG as pictures of its sheets, each whole, its text drawn from
220
+ the faces' own outlines.
220
221
 
221
222
  **Reads PDF, too.** `Ream.parse` accepts a PDF and reconstructs a `FlowDoc` — a
222
223
  tagged PDF from its structure tree (headings, tables, lists, reading order), an
@@ -268,7 +268,7 @@ function resolveWeakTypes(types, seq) {
268
268
  else if (t === "EN" && lastStrong === "L") types[i] = "L";
269
269
  }
270
270
  }
271
- var BRACKET_OPEN_TO_CLOSE = new Map([
271
+ var BRACKET_OPEN_TO_CLOSE = /* @__PURE__ */ new Map([
272
272
  [40, 41],
273
273
  [91, 93],
274
274
  [123, 125],
@@ -447,7 +447,7 @@ function reorderVisual(levels) {
447
447
  const order = Array.from({ length: n }, (_, i) => i);
448
448
  if (n === 0) return order;
449
449
  let highest = 0;
450
- let lowestOdd = MAX_DEPTH + 1;
450
+ let lowestOdd = 126;
451
451
  for (const lvl of levels) {
452
452
  if (lvl > highest) highest = lvl;
453
453
  if (lvl % 2 === 1 && lvl < lowestOdd) lowestOdd = lvl;
@@ -1,5 +1,5 @@
1
1
  //#region src/core/bidi/char-types.ts
2
- var SINGLE = new Map([
2
+ var SINGLE = /* @__PURE__ */ new Map([
3
3
  [9, "S"],
4
4
  [10, "B"],
5
5
  [11, "S"],
@@ -1,6 +1,6 @@
1
1
  import { bidiClass } from "./char-types.js";
2
- import { computeBidi } from "./algorithm.js";
3
- import "./segments.js";
2
+ import { computeBidi, reorderVisual } from "./algorithm.js";
3
+ import { segmentLevels } from "./segments.js";
4
4
  //#region src/core/bidi/index.ts
5
5
  /**
6
6
  * Run the UAX #9 algorithm over a string, returning per-code-point embedding
@@ -66,4 +66,4 @@ function reverseByCodePoint(text) {
66
66
  return [...text].reverse().join("");
67
67
  }
68
68
  //#endregion
69
- export { analyzeString, firstStrongDirection, hasBidiCharacters, reverseByCodePoint };
69
+ export { analyzeString, bidiClass, firstStrongDirection, hasBidiCharacters, reorderVisual, reverseByCodePoint, segmentLevels };
@@ -104,4 +104,4 @@ function bytesInclude(haystack, needle) {
104
104
  return false;
105
105
  }
106
106
  //#endregion
107
- export { bytesInclude, packageHasPart, toBase64 };
107
+ export { bytesInclude, bytesIncludePartName, packageHasPart, toBase64 };
@@ -129,10 +129,11 @@ function createConverter(opts = {}) {
129
129
  if (!fonts) throw new Error("to: 'svg' requires options.fonts/fontBytes or fontProviders");
130
130
  const { doc } = reader.read(bytes);
131
131
  const registry = FontRegistry.fromBytes(fonts);
132
- const svg = writeSvg(doc.kind === "sheet" ? layoutSheetImages(doc, { registry }, rest.now ? { now: rest.now } : {}) : layoutStyledDocument(doc.body, {
132
+ const laid = doc.kind === "sheet" ? layoutSheetImages(doc, { registry }, rest.now ? { now: rest.now } : {}) : layoutStyledDocument(doc.body, {
133
133
  registry,
134
134
  ...flowRenderOptions(doc)
135
- }));
135
+ });
136
+ const svg = writeSvg(laid);
136
137
  losses.push(...svg.losses);
137
138
  if (strict && losses.length > 0) throw new ConversionLossError(losses[0]);
138
139
  return {
@@ -53,6 +53,11 @@ var SOURCE_MIME = {
53
53
  * substitute-font auto-detection and PDF/A-3 `embedSource`.
54
54
  */
55
55
  var Ream = class Ream {
56
+ flow;
57
+ sheet;
58
+ losses;
59
+ source;
60
+ readerId;
56
61
  /**
57
62
  * @param flow The interlayer — the parsed, format-neutral document tree.
58
63
  * @param sheet The native SpreadsheetML tree when the source is a spreadsheet
@@ -142,11 +147,12 @@ var Ream = class Ream {
142
147
  };
143
148
  }
144
149
  if (to === "md") {
145
- const markdown = writeMarkdown(this.sheet && options.sheetNames !== false ? projectSheetDoc(this.sheet, {
150
+ const source = this.sheet && options.sheetNames !== false ? projectSheetDoc(this.sheet, {
146
151
  ...options.now ? { now: options.now } : {},
147
152
  ...options.fileName ? { fileName: options.fileName } : {},
148
153
  sheetHeadings: true
149
- }) : flow, {
154
+ }) : flow;
155
+ const markdown = writeMarkdown(source, {
150
156
  ...options.images ? { images: options.images } : {},
151
157
  ...options.pageBreaks ? { pageBreaks: options.pageBreaks } : {}
152
158
  });
@@ -189,11 +195,12 @@ var Ream = class Ream {
189
195
  registry,
190
196
  ...registriesByFamily ? { registriesByFamily } : {}
191
197
  };
192
- const svg = writeSvg(this.sheet ? layoutSheetImages(this.sheet, faces, sheetOptions, renderOptions) : layoutStyledDocument(flow.body, {
198
+ const laid = this.sheet ? layoutSheetImages(this.sheet, faces, sheetOptions, renderOptions) : layoutStyledDocument(flow.body, {
193
199
  ...faces,
194
200
  ...flowRenderOptions(flow),
195
201
  ...renderOptions
196
- }));
202
+ });
203
+ const svg = writeSvg(laid);
197
204
  losses.push(...svg.losses);
198
205
  this.enforceStrict(options, losses);
199
206
  return {
@@ -250,7 +257,7 @@ var Ream = class Ream {
250
257
  if (fonts) return { fonts };
251
258
  }
252
259
  const fetchOpt = options.fontFetch ? { fetch: options.fontFetch } : {};
253
- const keys = options.fontFamily ? new Set([resolveFamilyKey(options.fontFamily)]) : familiesInFlow(flow);
260
+ const keys = options.fontFamily ? /* @__PURE__ */ new Set([resolveFamilyKey(options.fontFamily)]) : familiesInFlow(flow);
254
261
  if (keys.size <= 1 && scriptsInFlow(flow).scripts.size === 0) {
255
262
  const family = keys.values().next().value;
256
263
  return { fonts: await fetchFontSet({
@@ -49,7 +49,7 @@ var set = (...items) => tlv(49, concat(items));
49
49
  /** OCTET STRING (tag `0x04`) wrapping raw `bytes`. */
50
50
  var octetString = (bytes) => tlv(4, bytes);
51
51
  /** NULL (tag `0x05`, empty content). */
52
- var nullValue = () => tlv(5, new Uint8Array(0));
52
+ var nullValue = () => tlv(5, /* @__PURE__ */ new Uint8Array(0));
53
53
  /** `[n]` context-tag, constructed (EXPLICIT or IMPLICIT-over-constructed). */
54
54
  var explicit = (tagNum, content) => tlv(160 | tagNum, content);
55
55
  function base128(v) {
@@ -185,4 +185,4 @@ function certIssuerAndSerial(cert) {
185
185
  };
186
186
  }
187
187
  //#endregion
188
- export { certIssuerAndSerial, cmsTime, concat, explicit, integer, nullValue, octetString, oid, seq, set, setOfBody, tlv };
188
+ export { certIssuerAndSerial, cmsTime, concat, explicit, integer, nullValue, octetString, oid, readTlv, seq, set, setOfBody, tlv };
@@ -24,17 +24,19 @@ var attribute = (oidStr, value) => seq(oid(oidStr), set(value));
24
24
  */
25
25
  async function buildPkcs7Detached(params) {
26
26
  const { issuer, serial } = certIssuerAndSerial(params.certificate);
27
- const attrsBody = setOfBody([
27
+ const attrs = [
28
28
  attribute(OID.contentType, oid(OID.idData)),
29
29
  attribute(OID.messageDigest, octetString(params.messageDigest)),
30
30
  attribute(OID.signingTime, cmsTime(params.signingTime))
31
- ]);
31
+ ];
32
+ const attrsBody = setOfBody(attrs);
32
33
  const signedAttrsForSigning = tlv(49, attrsBody);
33
34
  const signedAttrsTagged = tlv(160, attrsBody);
34
35
  const signature = await params.sign(signedAttrsForSigning);
35
36
  const sigAlgId = params.signatureAlgorithm === "ecdsa" ? ecdsaAlgId() : rsaAlgId();
36
37
  const signerInfo = seq(integer(1), seq(issuer, serial), sha256AlgId(), signedAttrsTagged, sigAlgId, octetString(signature));
37
- const certificates = tlv(160, concat([params.certificate, ...params.extraCertificates ?? []]));
38
+ const certBlobs = [params.certificate, ...params.extraCertificates ?? []];
39
+ const certificates = tlv(160, concat(certBlobs));
38
40
  const signedData = seq(integer(1), set(sha256AlgId()), seq(oid(OID.idData)), certificates, set(signerInfo));
39
41
  return seq(oid(OID.idSignedData), explicit(0, signedData));
40
42
  }
@@ -1 +1,2 @@
1
- import "./cms.js";
1
+ import { buildPkcs7Detached } from "./cms.js";
2
+ export { buildPkcs7Detached };
@@ -69,16 +69,16 @@ function standard(info, payload, password) {
69
69
  }
70
70
  function standardKey(password, salt, keyLength) {
71
71
  let h = sha1(concat(salt, utf16le(password)));
72
- const counter = new Uint8Array(4);
72
+ const counter = /* @__PURE__ */ new Uint8Array(4);
73
73
  for (let i = 0; i < 5e4; i++) {
74
74
  new DataView(counter.buffer).setUint32(0, i, true);
75
75
  h = sha1(concat(counter, h));
76
76
  }
77
- h = sha1(concat(h, new Uint8Array(4)));
77
+ h = sha1(concat(h, /* @__PURE__ */ new Uint8Array(4)));
78
78
  return concat(sha1(padded(h, 54)), sha1(padded(h, 92))).subarray(0, keyLength);
79
79
  }
80
80
  function padded(h, byte) {
81
- const buf = new Uint8Array(64).fill(byte);
81
+ const buf = (/* @__PURE__ */ new Uint8Array(64)).fill(byte);
82
82
  for (let i = 0; i < h.length && i < 64; i++) buf[i] = buf[i] ^ h[i];
83
83
  return buf;
84
84
  }
@@ -104,7 +104,7 @@ function agile(info, payload, password) {
104
104
  const packageKey = decryptAgile(keyFor(BLOCK_KEY_VALUE), enc.saltValue, encryptedKeyValue, enc.cbc).subarray(0, keyData.keyBits / 8);
105
105
  const cipher = payload.subarray(8);
106
106
  const out = new Uint8Array(cipher.length);
107
- const counter = new Uint8Array(4);
107
+ const counter = /* @__PURE__ */ new Uint8Array(4);
108
108
  for (let i = 0; i * SEGMENT < cipher.length; i++) {
109
109
  new DataView(counter.buffer).setUint32(0, i, true);
110
110
  const iv = keyData.hash(concat(keyData.saltValue, counter)).subarray(0, keyData.blockSize || 16);
@@ -115,7 +115,7 @@ function agile(info, payload, password) {
115
115
  }
116
116
  function agileSpin(password, enc, spinCount) {
117
117
  let h = enc.hash(concat(enc.saltValue, utf16le(password)));
118
- const counter = new Uint8Array(4);
118
+ const counter = /* @__PURE__ */ new Uint8Array(4);
119
119
  for (let i = 0; i < spinCount; i++) {
120
120
  new DataView(counter.buffer).setUint32(0, i, true);
121
121
  h = enc.hash(concat(counter, h));
@@ -132,9 +132,10 @@ function agileBlockKey(spun, enc, block) {
132
132
  }
133
133
  function decryptAgile(key, iv, data, cbc) {
134
134
  if (!cbc) return aesEcbDecrypt(key, data);
135
- return aesCbcDecrypt(key, iv.length >= 16 ? iv.subarray(0, 16) : concat(iv, new Uint8Array(16 - iv.length)), data, false);
135
+ const block = iv.length >= 16 ? iv.subarray(0, 16) : concat(iv, new Uint8Array(16 - iv.length));
136
+ return aesCbcDecrypt(key, block, data, false);
136
137
  }
137
- var HASHES = new Map([
138
+ var HASHES = /* @__PURE__ */ new Map([
138
139
  ["sha1", sha1],
139
140
  ["sha-1", sha1],
140
141
  ["sha256", sha256],
@@ -4,7 +4,7 @@
4
4
  * decrypts; used by the legacy V1/V2/V4 Standard security handlers.
5
5
  */
6
6
  function rc4(key, data) {
7
- const s = new Uint8Array(256);
7
+ const s = /* @__PURE__ */ new Uint8Array(256);
8
8
  for (let i = 0; i < 256; i++) s[i] = i;
9
9
  let j = 0;
10
10
  for (let i = 0; i < 256; i++) {
@@ -137,7 +137,7 @@ function md5(input) {
137
137
  c0 = c0 + c | 0;
138
138
  d0 = d0 + d | 0;
139
139
  }
140
- const out = new Uint8Array(16);
140
+ const out = /* @__PURE__ */ new Uint8Array(16);
141
141
  [
142
142
  a0,
143
143
  b0,
@@ -234,7 +234,7 @@ function sha1(input) {
234
234
  let h2 = 2562383102;
235
235
  let h3 = 271733878;
236
236
  let h4 = 3285377520;
237
- const w = new Uint32Array(80);
237
+ const w = /* @__PURE__ */ new Uint32Array(80);
238
238
  for (let off = 0; off < withPad.length; off += 64) {
239
239
  for (let i = 0; i < 16; i++) w[i] = view.getUint32(off + i * 4, false);
240
240
  for (let i = 16; i < 80; i++) {
@@ -261,7 +261,7 @@ function sha1(input) {
261
261
  h3 = h3 + d >>> 0;
262
262
  h4 = h4 + e >>> 0;
263
263
  }
264
- const out = new Uint8Array(20);
264
+ const out = /* @__PURE__ */ new Uint8Array(20);
265
265
  new DataView(out.buffer).setUint32(0, h0, false);
266
266
  new DataView(out.buffer).setUint32(4, h1, false);
267
267
  new DataView(out.buffer).setUint32(8, h2, false);
@@ -322,7 +322,7 @@ function sha256(input) {
322
322
  h[6] = h[6] + g | 0;
323
323
  h[7] = h[7] + hh | 0;
324
324
  }
325
- const out = new Uint8Array(32);
325
+ const out = /* @__PURE__ */ new Uint8Array(32);
326
326
  new DataView(out.buffer).setUint32(0, h[0] >>> 0);
327
327
  for (let i = 0; i < 8; i++) new DataView(out.buffer).setUint32(i * 4, h[i] >>> 0);
328
328
  return out;
@@ -409,15 +409,15 @@ var SHA512_K = [
409
409
  6902733635092675308n,
410
410
  7801388544844847127n
411
411
  ];
412
- var SHA512_KH = new Int32Array(80);
413
- var SHA512_KL = new Int32Array(80);
412
+ var SHA512_KH = /* @__PURE__ */ new Int32Array(80);
413
+ var SHA512_KL = /* @__PURE__ */ new Int32Array(80);
414
414
  for (let i = 0; i < 80; i++) {
415
415
  SHA512_KH[i] = Number(SHA512_K[i] >> 32n & 4294967295n) | 0;
416
416
  SHA512_KL[i] = Number(SHA512_K[i] & 4294967295n) | 0;
417
417
  }
418
418
  function sha512Core(iv, input, outLen) {
419
- const hh = new Int32Array(8);
420
- const hl = new Int32Array(8);
419
+ const hh = /* @__PURE__ */ new Int32Array(8);
420
+ const hl = /* @__PURE__ */ new Int32Array(8);
421
421
  for (let i = 0; i < 8; i++) {
422
422
  hh[i] = Number(iv[i] >> 32n & 4294967295n) | 0;
423
423
  hl[i] = Number(iv[i] & 4294967295n) | 0;
@@ -431,8 +431,8 @@ function sha512Core(iv, input, outLen) {
431
431
  const bits = len * 8;
432
432
  view.setUint32(msg.length - 4, bits >>> 0, false);
433
433
  view.setUint32(msg.length - 8, Math.floor(bits / 4294967296), false);
434
- const wh = new Int32Array(80);
435
- const wl = new Int32Array(80);
434
+ const wh = /* @__PURE__ */ new Int32Array(80);
435
+ const wl = /* @__PURE__ */ new Int32Array(80);
436
436
  for (let off = 0; off < msg.length; off += 128) {
437
437
  for (let i = 0; i < 16; i++) {
438
438
  wh[i] = view.getInt32(off + i * 8, false);
@@ -527,7 +527,7 @@ function sha512Core(iv, input, outLen) {
527
527
  add(6, gh, gl);
528
528
  add(7, xh, xl);
529
529
  }
530
- const out = new Uint8Array(64);
530
+ const out = /* @__PURE__ */ new Uint8Array(64);
531
531
  const ov = new DataView(out.buffer);
532
532
  for (let i = 0; i < 8; i++) {
533
533
  ov.setInt32(i * 8, hh[i], false);
@@ -561,8 +561,8 @@ function sha384(input) {
561
561
  }
562
562
  var AES = buildAesTables();
563
563
  function buildAesTables() {
564
- const exp = new Uint8Array(256);
565
- const log = new Uint8Array(256);
564
+ const exp = /* @__PURE__ */ new Uint8Array(256);
565
+ const log = /* @__PURE__ */ new Uint8Array(256);
566
566
  let x = 1;
567
567
  for (let i = 0; i < 255; i++) {
568
568
  exp[i] = x;
@@ -570,8 +570,8 @@ function buildAesTables() {
570
570
  x ^= x << 1 ^ (x & 128 ? 283 : 0);
571
571
  x &= 255;
572
572
  }
573
- const sbox = new Uint8Array(256);
574
- const inv = new Uint8Array(256);
573
+ const sbox = /* @__PURE__ */ new Uint8Array(256);
574
+ const inv = /* @__PURE__ */ new Uint8Array(256);
575
575
  for (let i = 0; i < 256; i++) {
576
576
  const invByte = i === 0 ? 0 : exp[(255 - log[i]) % 255];
577
577
  let s = invByte;
@@ -5,4 +5,4 @@
5
5
  *
6
6
  * @packageDocumentation
7
7
  */
8
- export type { AbstractNumbering, Alignment, Border, BorderStyle, BodyElement, Comment, CellBorders, CellMerge, DocumentInfo, CellMargins, CellProperties, CellShading, CellDataBar, CellIcon, CellNoteFlag, CellIconShape, CellSparkline, Chart, ChartBlock, ChartDataPoint, ChartLineStyle, ChartMarker, ChartMarkerSymbol, ChartSeries, ChartType, CustomGeometry, CustomPathCmd, DocumentModel, FontFamilyMap, HeaderFooterReference, HeaderFooterType, ImageBlock, ImageCrop, InlineImage, MathAccent, MathBar, MathDelimiter, MathEqArray, MathFraction, MathFunc, MathGroupChr, MathLimit, MathMatrix, MathNary, MathNode, MathRadical, MathRow, MathRun, MathScript, Numbering, NumberingFormat, NumberingInstance, NumberingLevel, PictureBullet, PictureOutline, NumberingReference, PageMargins, PageSize, Paragraph, ParagraphProperties, FrameProperties, RelativeSize, TabStop, Run, RunProperties, TextOutline, Ligatures, RowConditionalFormat, RowProperties, Section, FloatAnchor, SectionColumns, SectionProperties, ShapeBlock, ShapeShadow, ShapeDash, ShapeFill, ShapeFillKind, ShapeGeometry, ShapeGroupChild, ShapeLine, LineEnd, ShapeTextBody, ShapeTransform, Style, StyleSheet, StyleType, Table, TableCell, TableLook, TableOverlay, TableProperties, TableStyleCondition, TableStyleConditionType, TableStyleLayer, TableRow, UnderlineStyle, VerticalAlign, } from './types.js';
8
+ export type { AbstractNumbering, Alignment, Border, BorderStyle, BodyElement, Comment, CellBorders, CellMerge, DocumentInfo, CellMargins, CellProperties, CellShading, CellDataBar, CellIcon, CellNoteFlag, CellIconShape, CellSparkline, Chart, ChartBlock, ChartDataLabels, ChartDataPoint, ChartLabelPosition, ChartLineStyle, ChartMarker, ChartMarkerSymbol, ChartSeries, ChartSurface, ChartTextStyle, ChartTextStyles, ChartType, CustomGeometry, CustomPathCmd, DocumentModel, FontFamilyMap, HeaderFooterReference, HeaderFooterType, ImageBlock, ImageCrop, InlineImage, MathAccent, MathBar, MathDelimiter, MathEqArray, MathFraction, MathFunc, MathGroupChr, MathLimit, MathMatrix, MathNary, MathNode, MathRadical, MathRow, MathRun, MathScript, Numbering, NumberingFormat, NumberingInstance, NumberingLevel, PictureBullet, PictureOutline, NumberingReference, PageMargins, PageSize, Paragraph, ParagraphProperties, FrameProperties, RelativeSize, TabStop, Run, RunProperties, TextOutline, Ligatures, RowConditionalFormat, RowProperties, Section, FloatAnchor, SectionColumns, SectionProperties, ShapeBlock, ShapeShadow, ShapeDash, ShapeFill, ShapeFillKind, ShapeGeometry, ShapeGroupChild, ShapeLine, LineEnd, ShapeTextBody, ShapeTransform, Style, StyleSheet, StyleType, Table, TableCell, TableLook, TableOverlay, TableProperties, TableStyleCondition, TableStyleConditionType, TableStyleLayer, TableRow, UnderlineStyle, VerticalAlign, } from './types.js';
@@ -1429,6 +1429,16 @@ export interface ChartSeries {
1429
1429
  readonly xValues?: ReadonlyArray<number>;
1430
1430
  readonly colorHex?: string;
1431
1431
  readonly pointColors?: ReadonlyArray<ChartDataPoint>;
1432
+ /**
1433
+ * §21.2.2.61 `c:explosion` — how far a pie's slices stand out from its
1434
+ * centre, as a percentage of its radius: the series' own, and each point's
1435
+ * (`c:dPt/c:explosion`) over it.
1436
+ */
1437
+ readonly explosion?: number;
1438
+ readonly pointExplosions?: ReadonlyArray<{
1439
+ readonly idx: number;
1440
+ readonly percent: number;
1441
+ }>;
1432
1442
  /**
1433
1443
  * §21.2.2.49 `c:dLbl/c:tx` — a data label the author typed rather than one
1434
1444
  * the chart computes, by point index. Excel and Calc print it verbatim: it
@@ -1440,6 +1450,19 @@ export interface ChartSeries {
1440
1450
  readonly idx: number;
1441
1451
  readonly text: string;
1442
1452
  }>;
1453
+ /**
1454
+ * §21.2.2.47 `c:dLbl` — where one point's label stands, when the point says:
1455
+ * its own `c:dLblPos`, and the `c:layout/c:manualLayout` it was dragged to —
1456
+ * `x` and `y` fractions of the chart, the label's own top-left corner where
1457
+ * `edge`, else how far it moved from where the chart would set it.
1458
+ */
1459
+ readonly pointLabelPlacements?: ReadonlyArray<{
1460
+ readonly idx: number;
1461
+ readonly position?: ChartLabelPosition;
1462
+ readonly x?: number;
1463
+ readonly y?: number;
1464
+ readonly edge?: boolean;
1465
+ }>;
1443
1466
  /**
1444
1467
  * §21.2.2.59 `c:val/c:numRef/c:f` and §21.2.2.215 `c:tx/c:strRef/c:f` — where
1445
1468
  * the series reads its numbers and its name FROM, when the chart part carries
@@ -1489,10 +1512,76 @@ export interface ChartLineStyle {
1489
1512
  /** §20.1.10.49 `a:prstDash` — the rule's dash pattern, when it names one. */
1490
1513
  readonly dash?: ShapeDash;
1491
1514
  }
1515
+ /** A 3-D chart's wall or floor (§21.2.2.11, §21.2.2.69, §21.2.2.191): its fill and rule. */
1516
+ export interface ChartSurface {
1517
+ /** `c:spPr/a:solidFill` — RRGGBB; absent, unfilled. */
1518
+ readonly fillHex?: string;
1519
+ /** `c:spPr/a:ln` — its rule, `{ none: true }` for `a:noFill`; absent, the default. */
1520
+ readonly line?: ChartLineStyle;
1521
+ }
1522
+ /**
1523
+ * §21.2.2.216 `c:txPr`, §21.2.2.156 `c:rich` — how one kind of a chart's text
1524
+ * is set: the element's own run properties over the chart's (`c:chartSpace/
1525
+ * c:txPr`) over the application's defaults, theme tokens resolved.
1526
+ */
1527
+ export interface ChartTextStyle {
1528
+ /** `a:latin@typeface` — the family, `+mn-lt`/`+mj-lt` already resolved. */
1529
+ readonly family?: string;
1530
+ /** `@sz`, in points. */
1531
+ readonly sizePt?: number;
1532
+ readonly bold?: boolean;
1533
+ readonly italic?: boolean;
1534
+ /** `a:solidFill` — the text colour as RRGGBB. */
1535
+ readonly colorHex?: string;
1536
+ }
1537
+ /** A chart's text by role, each resolved through the cascade on its own. */
1538
+ export interface ChartTextStyles {
1539
+ /** `c:chart/c:title`. */
1540
+ readonly title?: ChartTextStyle;
1541
+ /** `c:legend` — the entries. */
1542
+ readonly legend?: ChartTextStyle;
1543
+ /** The category axis's tick labels — a scatter's horizontal value axis. */
1544
+ readonly catAxis?: ChartTextStyle;
1545
+ /** The value axis's tick labels — a scatter's upright one. */
1546
+ readonly valAxis?: ChartTextStyle;
1547
+ /** The secondary value axis's tick labels. */
1548
+ readonly secondaryValAxis?: ChartTextStyle;
1549
+ readonly catAxisTitle?: ChartTextStyle;
1550
+ readonly valAxisTitle?: ChartTextStyle;
1551
+ readonly secondaryValAxisTitle?: ChartTextStyle;
1552
+ /** `c:dLbls` — the values and labels printed on the data. */
1553
+ readonly dataLabels?: ChartTextStyle;
1554
+ }
1555
+ /** §21.2.2.48 ST_DLblPos — where a data label stands against its point. */
1556
+ export type ChartLabelPosition = 'bestFit' | 'b' | 'ctr' | 'inBase' | 'inEnd' | 'l' | 'outEnd' | 'r' | 't';
1557
+ /**
1558
+ * §21.2.2.49 `c:dLbls` — what a chart's data labels show and how their parts
1559
+ * are joined: the chart group's switches, the first series' own over them.
1560
+ */
1561
+ export interface ChartDataLabels {
1562
+ readonly showVal?: boolean;
1563
+ readonly showCatName?: boolean;
1564
+ readonly showSerName?: boolean;
1565
+ readonly showPercent?: boolean;
1566
+ /** §21.2.2.166 `c:separator` — between the parts; absent, Excel's ", ". */
1567
+ readonly separator?: string;
1568
+ /** `c:dLbls/c:numFmt@formatCode`, when the labels have their own. */
1569
+ readonly numberFormat?: string;
1570
+ /** §21.2.2.48 `c:dLblPos` — where the labels stand. */
1571
+ readonly position?: ChartLabelPosition;
1572
+ /** §21.2.2.183 `c:showLeaderLines` — a label set off its slice is tied back to it. */
1573
+ readonly showLeaderLines?: boolean;
1574
+ }
1492
1575
  /** A parsed chart (§21.2): its type, title, categories, series and rendering options. */
1493
1576
  export interface Chart {
1494
1577
  readonly type: ChartType;
1495
1578
  readonly title?: string;
1579
+ /**
1580
+ * The chart's text, role by role, as its application sets it. Absent when
1581
+ * the reader resolves none: the renderer then keeps its own sizes and greys
1582
+ * in the document's base face.
1583
+ */
1584
+ readonly text?: ChartTextStyles;
1496
1585
  readonly categories: ReadonlyArray<string>;
1497
1586
  /** §21.2.2.24 `c:cat/…/c:f` — where the categories live, when uncached. */
1498
1587
  readonly categoriesRef?: string;
@@ -1512,12 +1601,72 @@ export interface Chart {
1512
1601
  readonly barDir?: 'col' | 'bar';
1513
1602
  readonly grouping?: 'clustered' | 'stacked' | 'percentStacked' | 'standard';
1514
1603
  readonly doughnut?: boolean;
1604
+ /**
1605
+ * §21.2.2.140 `c:pie3DChart` with §21.2.2.228 `c:view3D` — a pie drawn as a
1606
+ * tilted disc: `rotX` the elevation in degrees (90 looks straight down),
1607
+ * `rotY` how far its first slice is turned clockwise from twelve o'clock.
1608
+ */
1609
+ readonly pie3D?: {
1610
+ readonly rotX: number;
1611
+ readonly rotY: number;
1612
+ };
1613
+ /**
1614
+ * §21.2.2.15 `c:bar3DChart` with §21.2.2.228 `c:view3D` — bars drawn as
1615
+ * boxes standing in a box of walls and a floor, seen at an angle with the
1616
+ * axes kept square: `rotX` the elevation and `rotY` the turn in degrees,
1617
+ * `depthPercent` a bar's depth as a percentage of its width, `gapDepth` the
1618
+ * room before and behind it as a percentage of its depth.
1619
+ */
1620
+ readonly bar3D?: {
1621
+ readonly rotX: number;
1622
+ readonly rotY: number;
1623
+ readonly depthPercent: number;
1624
+ readonly gapDepth: number;
1625
+ };
1626
+ /**
1627
+ * §21.2.2.69 `c:floor` — a 3-D chart's floor, the wall its bars stand on:
1628
+ * its fill and its rule. Absent, it is unfilled and ruled in light grey.
1629
+ */
1630
+ readonly floor?: ChartSurface;
1631
+ /** §21.2.2.11 `c:backWall` — the wall behind the bars; absent, nothing drawn. */
1632
+ readonly backWall?: ChartSurface;
1633
+ /** §21.2.2.191 `c:sideWall` — the wall beside them; absent, nothing drawn. */
1634
+ readonly sideWall?: ChartSurface;
1635
+ /** §21.2.2.68 `c:firstSliceAng` — a flat pie's first slice, degrees clockwise from twelve. */
1636
+ readonly firstSliceAngle?: number;
1637
+ /**
1638
+ * §21.2.2.104 `c:plotArea/c:layout/c:manualLayout` in `edge` mode — the box
1639
+ * the author sized the plot to, as fractions of the chart from its top
1640
+ * left; a pie is fitted into it whole, keeping its shape.
1641
+ */
1642
+ readonly plotBox?: {
1643
+ readonly x: number;
1644
+ readonly y: number;
1645
+ readonly w: number;
1646
+ readonly h: number;
1647
+ /**
1648
+ * `c:layoutTarget` `inner` — the box is the plot's own rectangle, the
1649
+ * axes' labels outside it; else (`outer`) it holds them too.
1650
+ */
1651
+ readonly inner?: boolean;
1652
+ };
1515
1653
  readonly showValues?: boolean;
1654
+ /**
1655
+ * §21.2.2.49 — the data labels' switches, when the chart has a `c:dLbls` at
1656
+ * all. Absent, it labels nothing.
1657
+ */
1658
+ readonly dataLabels?: ChartDataLabels;
1516
1659
  /**
1517
1660
  * §21.2.2.75 `c:gapWidth` — the gap between category slots as a percentage
1518
1661
  * of the bar width. Absent ⇒ the schema's 150.
1519
1662
  */
1520
1663
  readonly gapPercent?: number;
1664
+ /**
1665
+ * §21.2.2.131 `c:overlap` — how far the bars of one category's cluster lie
1666
+ * over each other, as a percentage of a bar's width: −100 a bar's width
1667
+ * apart … 100 one on the next. Absent ⇒ 0, bars side by side.
1668
+ */
1669
+ readonly overlapPercent?: number;
1521
1670
  readonly catAxisTitle?: string;
1522
1671
  /**
1523
1672
  * §21.2.2.134 `c:catAx/c:scaling/c:orientation` = `maxMin` — the category
@@ -1567,8 +1716,21 @@ export interface Chart {
1567
1716
  readonly valAxisLine?: ChartLineStyle;
1568
1717
  /** §21.2.2.196 — the secondary value axis's own rule. */
1569
1718
  readonly secondaryValAxisLine?: ChartLineStyle;
1570
- /** §21.2.2.87 `c:majorGridlines/c:spPr/a:ln` — the gridlines' own rule. */
1719
+ /**
1720
+ * §21.2.2.100 `c:majorGridlines` of the value axis (a scatter's upright one)
1721
+ * — its own rule (§21.2.2.197 `c:spPr/a:ln`). An axis without the element
1722
+ * rules nothing, which reads `{ none: true }`; absent, the default rule.
1723
+ */
1571
1724
  readonly gridLine?: ChartLineStyle;
1725
+ /** The same for a scatter's lying (x) axis. */
1726
+ readonly xGridLine?: ChartLineStyle;
1727
+ /**
1728
+ * §21.2.2.40 `c:delete` — the author deleted the category axis (a scatter's
1729
+ * x axis): neither its rule nor its labels are drawn, nor room kept for them.
1730
+ */
1731
+ readonly catAxisDeleted?: boolean;
1732
+ /** §21.2.2.40 — …or the value axis (a scatter's upright one). */
1733
+ readonly valAxisDeleted?: boolean;
1572
1734
  /**
1573
1735
  * §21.2.2.157 `c:valAx/c:scaling/c:min|c:max` — the value axis the AUTHOR
1574
1736
  * fixed. Absent means "auto", and only then is the range read off the data:
@@ -1578,10 +1740,20 @@ export interface Chart {
1578
1740
  readonly valAxisMin?: number;
1579
1741
  readonly valAxisMax?: number;
1580
1742
  /**
1581
- * §21.2.2.98 `c:valAx/c:majorUnit` — the step between the value axis's
1743
+ * §21.2.2.103 `c:valAx/c:majorUnit` — the step between the value axis's
1582
1744
  * labels, when the author fixed it. Absent ⇒ the application's own choice.
1583
1745
  */
1584
1746
  readonly valAxisMajorUnit?: number;
1747
+ /**
1748
+ * §21.2.2.226 — a scatter's lying value axis, the x's: the ends and step the
1749
+ * author fixed and its number format, as {@link Chart.valAxisMin},
1750
+ * {@link Chart.valAxisMax}, {@link Chart.valAxisMajorUnit} and
1751
+ * {@link Chart.numberFormat} are its upright one's.
1752
+ */
1753
+ readonly xAxisMin?: number;
1754
+ readonly xAxisMax?: number;
1755
+ readonly xAxisMajorUnit?: number;
1756
+ readonly xNumberFormat?: string;
1585
1757
  /**
1586
1758
  * §21.2.2.198 `c:chartSpace/c:spPr` — the frame around the whole chart: its
1587
1759
  * background fill and its outline. Excel writes both on every chart it
@@ -20,10 +20,14 @@ export interface ChartPolyline {
20
20
  readonly strokeHex: string;
21
21
  readonly widthPt: number;
22
22
  }
23
- /** A closed, filled polygon (area-chart bands). Drawn before strokes/labels. */
23
+ /**
24
+ * A closed polygon: area-chart bands, the faces of 3-D bars, a 3-D chart's
25
+ * walls. Drawn before rectangles, strokes and labels; one without a fill is
26
+ * its outline alone.
27
+ */
24
28
  export interface ChartPolygon {
25
29
  readonly points: ReadonlyArray<readonly [number, number]>;
26
- readonly fillHex: string;
30
+ readonly fillHex?: string;
27
31
  readonly strokeHex?: string;
28
32
  readonly widthPt?: number;
29
33
  }
@@ -44,7 +48,7 @@ export interface ChartWedge {
44
48
  /** How a {@link ChartLabel} sits horizontally relative to its anchor point. */
45
49
  export type LabelAlign = 'left' | 'center' | 'right';
46
50
  /** A text label (title, axis tick, category, data value, legend entry). */
47
- export interface ChartLabel {
51
+ export interface ChartLabel extends ChartFont {
48
52
  readonly text: string;
49
53
  /** Anchor point; `align` says how text sits relative to it. */
50
54
  readonly x: number;
@@ -80,6 +84,11 @@ export interface ChartScene {
80
84
  * frame and under the gridlines.
81
85
  */
82
86
  readonly plotBackground?: ChartRect;
87
+ /**
88
+ * §21.2.2.69/§21.2.2.11/§21.2.2.191 — a 3-D chart's floor and walls, drawn
89
+ * over the plot's own fill and under its gridlines.
90
+ */
91
+ readonly walls?: ReadonlyArray<ChartPolygon>;
83
92
  /**
84
93
  * Major gridlines, drawn UNDER the plotted data. Kept apart from the other
85
94
  * polylines because z-order is the whole point: gridlines over the bars strip
@@ -88,12 +97,21 @@ export interface ChartScene {
88
97
  */
89
98
  readonly gridlines?: ReadonlyArray<ChartPolyline>;
90
99
  }
100
+ /**
101
+ * The face a chart's text is set in beyond its size: the family the chart
102
+ * names (absent — the document's own) and its weight and slant.
103
+ */
104
+ export interface ChartFont {
105
+ readonly family?: string;
106
+ readonly bold?: boolean;
107
+ readonly italic?: boolean;
108
+ }
91
109
  /**
92
110
  * Injected text-width measurer: the rendered advance width (points) of `text` at
93
- * `sizePt`. Keeps this module free of any font/PDF dependency, so it is
94
- * unit-testable in isolation.
111
+ * `sizePt`, in `font` when the chart names one. Keeps this module free of any
112
+ * font/PDF dependency, so it is unit-testable in isolation.
95
113
  */
96
- export type MeasureText = (text: string, sizePt: number) => number;
114
+ export type MeasureText = (text: string, sizePt: number, font?: ChartFont) => number;
97
115
  /** Font size (points) for axis ticks, category/data labels and legend text. */
98
116
  export declare const CHART_LABEL_PT = 9;
99
117
  /** Font size (points) for the chart title. */