abstract-document 17.0.4 → 17.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/).
4
4
 
5
+ ## [17.0.4] - 2025-11-12
6
+
7
+ - AbstractDocument Bugfix non-string text in TextRun, memoize widthOfString() and heightOfString()
8
+
5
9
  ## [17.0.2] - 2025-11-10
6
10
 
7
11
  - AbstractDocument Pdf handle texts with newlines
@@ -4,7 +4,7 @@ export function create(props) {
4
4
  return {
5
5
  type: "TextRun",
6
6
  styleName,
7
- text,
7
+ text: (text ?? "").toString(),
8
8
  style,
9
9
  };
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"text-run.js","sourceRoot":"","sources":["../../../src/abstract-document/atoms/text-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,yBAAyB,CAAC;AAgBrD,MAAM,UAAU,MAAM,CAAC,KAAmB;IACxC,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,KAAK,CAAC;IACnE,OAAO;QACL,IAAI,EAAE,SAAS;QACf,SAAS;QACT,IAAI;QACJ,KAAK;KACN,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"text-run.js","sourceRoot":"","sources":["../../../src/abstract-document/atoms/text-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,yBAAyB,CAAC;AAgBrD,MAAM,UAAU,MAAM,CAAC,KAAmB;IACxC,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,KAAK,CAAC;IACnE,OAAO;QACL,IAAI,EAAE,SAAS;QACf,SAAS;QACT,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC7B,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"measure.d.ts","sourceRoot":"","sources":["../../../src/abstract-document-exporters/pdf/measure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEvD,OAAO,EAAsB,IAAI,EAAE,MAAM,eAAe,CAAC;AAKzD,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAIhH;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,CAAC,WAAW,EAC1B,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,WAAW,EACpC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,GACzB,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAMxB;AAsLD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,CAAC,WAAW,EAC1B,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,EACjC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAC3B,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GACpB,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CA2FxB"}
1
+ {"version":3,"file":"measure.d.ts","sourceRoot":"","sources":["../../../src/abstract-document-exporters/pdf/measure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEvD,OAAO,EAAsB,IAAI,EAAE,MAAM,eAAe,CAAC;AAQzD,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAOhH;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,CAAC,WAAW,EAC1B,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,WAAW,EACpC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,GACzB,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAMxB;AA6LD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,CAAC,WAAW,EAC1B,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,EACjC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAC3B,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GACpB,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CA2FxB"}
@@ -3,10 +3,15 @@ import { exhaustiveCheck } from "ts-exhaustive-check";
3
3
  import { getHeaderAndFooter } from "./paginate.js";
4
4
  import { registerFonts, getFontNameStyle } from "./font.js";
5
5
  //tslint:disable:no-any variable-name
6
+ const widthOfStringCache = new Map();
7
+ const heightOfStringCache = new Map();
6
8
  export function measure(pdfKit, document) {
7
9
  let pdf = new pdfKit();
8
10
  registerFonts((fontName, fontSource) => pdf.registerFont(fontName, fontSource), document);
9
- return mergeMaps(document.children.map((s) => measureSection(pdf, document, s)));
11
+ const result = mergeMaps(document.children.map((s) => measureSection(pdf, document, s)));
12
+ widthOfStringCache.clear();
13
+ heightOfStringCache.clear();
14
+ return result;
10
15
  }
11
16
  export function measurePages(pdfKit, document, pages) {
12
17
  const pdf = new pdfKit();
@@ -33,7 +38,7 @@ function measureSection(pdfKit, parentResources, section, separateHeader, separa
33
38
  const firstPageHeaderAndFooters = getHeaderAndFooter(section, 1);
34
39
  const firstPageHeaderAndFootersExtracted = [
35
40
  [firstPageHeaderAndFooters.header, firstPageHeaderAndFooters.headerMargins],
36
- [firstPageHeaderAndFooters.footer, firstPageHeaderAndFooters.footerMargins]
41
+ [firstPageHeaderAndFooters.footer, firstPageHeaderAndFooters.footerMargins],
37
42
  ];
38
43
  const firstPageHeaderAndFooterSizes = firstPageHeaderAndFootersExtracted.reduce((prev, [sections, margins]) => {
39
44
  const availabelWidth = pageWidth - (margins.left + margins.right);
@@ -88,6 +93,8 @@ function measureParagraph(pdfKit, resources, availableSize, paragraph) {
88
93
  let concatenatedText = "";
89
94
  let hasAtomImage = false;
90
95
  let textOptions;
96
+ let font = getFontNameStyle(style.textStyle);
97
+ let fontSize = AD.TextStyle.calculateFontSize(style.textStyle, 10);
91
98
  for (const atom of row) {
92
99
  if (atom.type === "Image") {
93
100
  hasAtomImage = true;
@@ -95,6 +102,8 @@ function measureParagraph(pdfKit, resources, availableSize, paragraph) {
95
102
  const atomSize = measureAtom(pdfKit, resources, style.textStyle, contentAvailableSize, contentAvailableSize.width - currentRowWidth, atom);
96
103
  if (atom.type === "TextRun" || atom.type === "TextField" || atom.type === "HyperLink") {
97
104
  concatenatedText += atom.text;
105
+ font = atom.style ? getFontNameStyle(atom.style) : font;
106
+ fontSize = atom.style ? Math.max(fontSize, AD.TextStyle.calculateFontSize(style.textStyle, 10)) : fontSize;
98
107
  textOptions = getBiggestStyle(atom, style, resources, textOptions);
99
108
  }
100
109
  desiredSizes.set(atom, atomSize);
@@ -113,7 +122,7 @@ function measureParagraph(pdfKit, resources, availableSize, paragraph) {
113
122
  paragraphHeight += desiredHeight + currentRowHeight;
114
123
  }
115
124
  else {
116
- paragraphHeight += pdfKit.heightOfString(concatenatedText, {
125
+ paragraphHeight += heightOfString(pdfKit, font, fontSize, concatenatedText, {
117
126
  width: textOptions && textOptions.lineBreak === false ? Infinity : availableSize.width,
118
127
  ...textOptions,
119
128
  });
@@ -320,22 +329,44 @@ function measureText(pdf, text, textStyle, availableSize, measureWithSpaces) {
320
329
  };
321
330
  let measuredWidth = 0;
322
331
  if (measureWithSpaces !== undefined && measureWithSpaces) {
323
- const spaceWidth = pdf.widthOfString(" ", textOptions);
324
- const stringWidth = pdf.widthOfString(` ${text} `, textOptions) - (spaceWidth * 2);
325
- const normalWidth = pdf.widthOfString(text, textOptions);
332
+ const spaceWidth = widthOfString(pdf, font, fontSize, " ", textOptions);
333
+ const stringWidth = widthOfString(pdf, font, fontSize, ` ${text} `, textOptions) - spaceWidth * 2;
326
334
  measuredWidth = stringWidth;
327
335
  }
328
336
  else {
329
- measuredWidth = pdf.widthOfString(text, textOptions);
337
+ measuredWidth = widthOfString(pdf, font, fontSize, text, textOptions);
330
338
  }
331
339
  const width = Math.min(availableSize.width, measuredWidth);
332
340
  const lineWidth = textStyle.lineBreak === false ? Infinity : availableSize.width;
333
- const height = pdf.heightOfString(text, {
341
+ const options = {
334
342
  width: lineWidth,
335
343
  ...textOptions,
336
- });
344
+ };
345
+ const height = heightOfString(pdf, font, fontSize, text, options);
337
346
  return AD.Size.create(width, height, availableSize.width);
338
347
  }
348
+ function widthOfString(pdf, font, fontSize, text, options) {
349
+ const key = JSON.stringify({ font, fontSize, text, options });
350
+ const cached = widthOfStringCache.get(key);
351
+ if (cached !== undefined) {
352
+ return cached;
353
+ }
354
+ pdf.font(font).fontSize(fontSize);
355
+ const width = pdf.widthOfString(text, options);
356
+ widthOfStringCache.set(key, width);
357
+ return width;
358
+ }
359
+ function heightOfString(pdf, font, fontSize, text, options) {
360
+ const key = JSON.stringify({ font, fontSize, text, options });
361
+ const cached = heightOfStringCache.get(key);
362
+ if (cached !== undefined) {
363
+ return cached;
364
+ }
365
+ pdf.font(font).fontSize(fontSize);
366
+ const height = pdf.heightOfString(text, options);
367
+ heightOfStringCache.set(key, height);
368
+ return height;
369
+ }
339
370
  function mergeMaps(maps) {
340
371
  let newMap = new Map();
341
372
  maps.forEach((m) => m.forEach((v, k) => newMap.set(k, v)));
@@ -1 +1 @@
1
- {"version":3,"file":"measure.js","sourceRoot":"","sources":["../../../src/abstract-document-exporters/pdf/measure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAQ,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE5D,qCAAqC;AAErC,MAAM,UAAU,OAAO,CAAC,MAA0B,EAAE,QAAoC;IACtF,IAAI,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC;IACvB,aAAa,CAAC,CAAC,QAAgB,EAAE,UAA8B,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtH,OAAO,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,MAA0B,EAC1B,QAAoC,EACpC,KAA0B;IAE1B,MAAM,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,CAAC,QAAgB,EAAE,UAA8B,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtH,OAAO,SAAS,CACd,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAC1G,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,MAA0B,EAC1B,eAAuC,EACvC,OAA2B,EAC3B,cAAgE,EAChE,cAAgE,EAChE,gBAAkE;IAElE,MAAM,MAAM,GAAG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IACrD,MAAM,MAAM,GAAG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IACrD,MAAM,QAAQ,GAAG,gBAAgB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAEtD,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;IAE1E,MAAM,qBAAqB,GACzB,SAAS,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACjG,MAAM,oBAAoB,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;IAE5G,MAAM,oBAAoB,GACxB,SAAS,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC/F,MAAM,mBAAmB,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC;IAExG,MAAM,oBAAoB,GACxB,SAAS,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC/F,MAAM,mBAAmB,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC;IAExG,4CAA4C;IAC5C,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACjE,MAAM,kCAAkC,GAA2G;QACjJ,CAAC,yBAAyB,CAAC,MAAM,EAAE,yBAAyB,CAAC,aAAa,CAAC;QAC3E,CAAC,yBAAyB,CAAC,MAAM,EAAE,yBAAyB,CAAC,aAAa,CAAC;KAC5E,CAAC;IACF,MAAM,6BAA6B,GAAG,kCAAkC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE;QAC5G,MAAM,cAAc,GAAG,SAAS,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,cAAc,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxG,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,SAAS,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,WAAW,EAAE,GAAG,WAAW,EAAE,GAAG,6BAA6B,CAAC,CAAC,CAAC;AACxG,CAAC;AAED,SAAS,qBAAqB,CAC5B,GAAuB,EACvB,eAAuC,EACvC,aAA2B,EAC3B,OAAyC;IAEzC,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1E,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,WAAW;YACd,OAAO,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAClE,KAAK,OAAO;YACV,OAAO,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAC9D,KAAK,OAAO;YACV,OAAO,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAC9D,KAAK,WAAW;YACd,OAAO,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAClD;YACE,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,aAA2B,EAAE,SAAiC;IACtF,IAAI,YAAY,GAAG,IAAI,GAAG,EAAqB,CAAC;IAChD,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAC3C,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,gBAAgB,CACvB,MAA0B,EAC1B,SAAiC,EACjC,aAA2B,EAC3B,SAAiC;IAEjC,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CACjC,SAAS,EACT,SAAS,CAAC,KAAK,EACf,gBAAgB,EAChB,SAAS,CAAC,SAAS,EACnB,SAAS,CAC0B,CAAC;IACtC,MAAM,qBAAqB,GAAG,aAAa,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/F,MAAM,sBAAsB,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjG,MAAM,oBAAoB,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,CAAC;IAE3F,IAAI,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/D,IAAI,YAAY,GAAG,IAAI,GAAG,EAAqB,CAAC;IAEhD,MAAM,IAAI,GAA+B,EAAE,CAAC;IAC5C,IAAI,UAAU,GAAwB,EAAE,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACtC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtB,UAAU,GAAG,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAC1B,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,WAAW,CAAC;QAChB,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC1B,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;YACD,MAAM,QAAQ,GAAG,WAAW,CAC1B,MAAM,EACN,SAAS,EACT,KAAK,CAAC,SAAS,EACf,oBAAoB,EACpB,oBAAoB,CAAC,KAAK,GAAG,eAAe,EAC5C,IAAI,CACL,CAAC;YACF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACtF,gBAAgB,IAAI,IAAI,CAAC,IAAI,CAAC;gBAC9B,WAAW,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YACrE,CAAC;YACD,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACjC,eAAe,IAAI,QAAQ,CAAC,KAAK,CAAC;YAClC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YAC/D,IAAI,eAAe,GAAG,oBAAoB,CAAC,KAAK,EAAE,CAAC;gBACjD,aAAa,IAAI,gBAAgB,CAAC;gBAClC,eAAe,GAAG,CAAC,CAAC;gBACpB,gBAAgB,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACpD,eAAe,IAAI,gBAAgB,CAAC;QACtC,CAAC;aAAM,IAAI,YAAY,EAAE,CAAC;YACxB,eAAe,IAAI,aAAa,GAAG,gBAAgB,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,eAAe,IAAI,MAAM,CAAC,cAAc,CAAC,gBAAgB,EAAE;gBACzD,KAAK,EAAE,WAAW,IAAI,WAAW,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK;gBACtF,GAAG,WAAW;aACf,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;IAElF,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,eAAe,CACtB,IAA0E,EAC1E,KAAuC,EACvC,SAAiC,EACjC,WAA+C;IAE/C,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,cAAc,CAC3C,KAAK,CAAC,SAAS,EACf,IAAI,CAAC,KAAK,EACV,WAAW,EACX,IAAI,CAAC,SAAS,EACd,SAAS,EACT,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CACpD,CAAC;IAE5B,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,GAAG,CAAC,EAAE,CAAC;YAChE,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,MAA0B,EAC1B,SAAiC,EACjC,aAA2B,EAC3B,KAAqB;IAErB,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CACjC,SAAS,EACT,KAAK,CAAC,KAAK,EACX,YAAY,EACZ,KAAK,CAAC,SAAS,EACf,SAAS,CACkB,CAAC;IAC9B,MAAM,mBAAmB,GAAG,aAAa,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7F,MAAM,kBAAkB,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACjF,MAAM,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnG,MAAM,aAAa,GAAG,CAAC,mBAAmB,GAAG,iBAAiB,CAAC,GAAG,kBAAkB,CAAC;IACrF,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IACtF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAqB,CAAC;IAClD,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtD,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CACrC,KAAK,CAAC,SAAS,EACf,IAAI,CAAC,KAAK,EACV,gBAAgB,EAChB,IAAI,CAAC,SAAS,EACd,SAAS,CAC0B,CAAC;YACtC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAElG,MAAM,qBAAqB,GAAG,SAAS,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7F,IAAI,iBAAiB,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;YAEzE,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClC,MAAM,oBAAoB,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;gBAC7E,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;gBAC7F,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvD,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBAC1D,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC7C,iBAAiB,IAAI,WAAW,CAAC,MAAM,CAAC;gBAC1C,CAAC;YACH,CAAC;YAED,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;YACrE,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAClB,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACxC,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrD,KAAK,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,KAAK,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QACnC,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,QAAQ,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,MAAM,GAAG,aAAa,CAAC;QAC9E,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,gBAAgB,GAAG,UAAU,GAAG,OAAO,CAAC;YAC9C,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,QAAQ,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnD,aAAa,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,aAAa,CAAC,KAAK;QACrB,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzF,IAAI,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACnC,aAAa,IAAI,SAAS,CAAC;QAC3B,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;QAC/D,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChE,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC,CAAC;IAE5E,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,YAAY,CACnB,MAA0B,EAC1B,SAAiC,EACjC,aAA2B,EAC3B,YAA4B;IAE5B,IAAI,YAAY,GAAG,SAAS,CAC1B,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAC7F,CAAC;IACF,IAAI,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAC9C,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,EAClG,GAAG,CACJ,CAAC;IACF,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IACnF,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,WAAW,CAClB,MAA0B,EAC1B,SAAiC,EACjC,SAAiC,EACjC,aAA2B,EAC3B,iBAAyB,EACzB,IAAkB;IAElB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC3E,KAAK,WAAW;YACd,OAAO,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC7E,KAAK,OAAO;YACV,OAAO,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;QACtD,KAAK,WAAW;YACd,OAAO,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC7E,KAAK,cAAc;YACjB,OAAO,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;QAClF,KAAK,WAAW;YACd,OAAO,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QACvE,KAAK,YAAY;YACf,OAAO;gBACL,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,MAAM,EAAE,CAAC;aACV,CAAC;QACJ;YACE,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,MAA0B,EAC1B,SAAiC,EACjC,SAAiC,EACjC,aAA2B;IAE3B,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IACpE,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,KAAK,EAAE,CAAC;KACT,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,GAAuB,EACvB,SAAiC,EACjC,SAAiC,EACjC,OAA2B,EAC3B,aAA2B;IAE3B,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,cAAc,CACvC,SAAS,EACT,OAAO,CAAC,KAAK,EACb,WAAW,EACX,OAAO,CAAC,SAAS,EACjB,SAAS,EACT,OAAO,CAAC,gBAAgB,IAAI,EAAE,CACL,CAAC;IAC5B,OAAO,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,gBAAgB,CACvB,GAAuB,EACvB,SAAiC,EACjC,SAAiC,EACjC,SAAiC,EACjC,aAA2B;IAE3B,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CACjC,SAAS,EACT,SAAS,CAAC,KAAK,EACf,WAAW,EACX,SAAS,CAAC,SAAS,EACnB,SAAS,CACgB,CAAC;IAC5B,OAAO,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,gBAAgB,CACvB,GAAuB,EACvB,SAAiC,EACjC,SAAiC,EACjC,SAAiC,EACjC,aAA2B;IAE3B,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CACjC,SAAS,EACT,SAAS,CAAC,KAAK,EACf,WAAW,EACX,SAAS,CAAC,SAAS,EACnB,SAAS,CACgB,CAAC;IAC5B,QAAQ,SAAS,CAAC,SAAS,EAAE,CAAC;QAC5B,KAAK,MAAM;YACT,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;QACrF,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY,CAAC;QAClB,KAAK,cAAc;YACjB,OAAO,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,IAAI,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;QACzE;YACE,OAAO,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,GAAuB,EACvB,SAAiC,EACjC,aAA2B,EAC3B,iBAAyB;IAEzB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAC7D,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,iBAAiB,GAAG,CAAC;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,SAAiC,EACjC,aAA2B,EAC3B,KAAqB;IAErB,MAAM,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC;IAC7C,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,QAAQ,GACZ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,IAAI,KAAK,aAAa,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK;QACrG,CAAC,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,aAAa;QACvE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;IAE1B,IAAI,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC;IACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC;IACrC,CAAC;SAAM,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACvB,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC;IAC7B,CAAC;SAAM,IAAI,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9C,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzG,CAAC;IAED,IAAI,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC;IACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC;IAC/B,CAAC;SAAM,IAAI,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAC/C,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QACxD,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;IACxG,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AACjH,CAAC;AAED,SAAS,WAAW,CAClB,GAAuB,EACvB,IAAY,EACZ,SAAiC,EACjC,aAA2B,EAC3B,iBAA2B;IAE3B,MAAM,IAAI,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC,iBAAiB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC/D,GAAG;SACA,IAAI,CAAC,IAAI,CAAC;SACV,QAAQ,CAAC,QAAQ,CAAC;SAClB,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC;IAEzC,MAAM,WAAW,GAAG;QAClB,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,KAAK;QACvC,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC;QAC7B,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,IAAI;QACtC,GAAG,CAAC,SAAS,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrG,GAAG,CAAC,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3E,CAAC;IAEF,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAG,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,EAAE,CAAC;QACxD,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACnF,MAAM,WAAW,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACzD,aAAa,GAAG,WAAW,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC;IACjF,MAAM,MAAM,GAAG,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE;QACtC,KAAK,EAAE,SAAS;QAChB,GAAG,WAAW;KACf,CAAC,CAAC;IACH,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,SAAS,CAAC,IAAmC;IACpD,IAAI,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,OAAY,EAAE,YAAoC;IACxE,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"measure.js","sourceRoot":"","sources":["../../../src/abstract-document-exporters/pdf/measure.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "abstract-document",
3
- "version": "17.0.4",
3
+ "version": "17.0.6",
4
4
  "description": "Dynamically create documents using code or JSX and render to any format",
5
5
  "repository": "https://github.com/dividab/abstract-visuals/tree/master/packages/abstract-document",
6
6
  "main": "lib/index.js",
@@ -50,5 +50,5 @@
50
50
  "vite": "^6.0.1",
51
51
  "vitest": "^2.1.6"
52
52
  },
53
- "gitHead": "21e8016ec790760ed7c05325bc67560d49769369"
53
+ "gitHead": "b58314dbf6b21e99761223317adb4249f2dbe8c9"
54
54
  }
@@ -19,7 +19,7 @@ export function create(props: TextRunProps): TextRun {
19
19
  return {
20
20
  type: "TextRun",
21
21
  styleName,
22
- text,
22
+ text: (text ?? "").toString(),
23
23
  style,
24
24
  };
25
25
  }
@@ -5,10 +5,16 @@ import { registerFonts, getFontNameStyle } from "./font.js";
5
5
 
6
6
  //tslint:disable:no-any variable-name
7
7
 
8
+ const widthOfStringCache = new Map<string, number>();
9
+ const heightOfStringCache = new Map<string, number>();
10
+
8
11
  export function measure(pdfKit: PDFKit.PDFDocument, document: AD.AbstractDoc.AbstractDoc): Map<any, AD.Size.Size> {
9
12
  let pdf = new pdfKit();
10
13
  registerFonts((fontName: string, fontSource: AD.Font.FontSource) => pdf.registerFont(fontName, fontSource), document);
11
- return mergeMaps(document.children.map((s) => measureSection(pdf, document, s)));
14
+ const result = mergeMaps(document.children.map((s) => measureSection(pdf, document, s)));
15
+ widthOfStringCache.clear();
16
+ heightOfStringCache.clear();
17
+ return result;
12
18
  }
13
19
 
14
20
  export function measurePages(
@@ -29,7 +35,7 @@ function measureSection(
29
35
  section: AD.Section.Section,
30
36
  separateHeader?: ReadonlyArray<AD.SectionElement.SectionElement>,
31
37
  separateFooter?: ReadonlyArray<AD.SectionElement.SectionElement>,
32
- separateChildren?: ReadonlyArray<AD.SectionElement.SectionElement>,
38
+ separateChildren?: ReadonlyArray<AD.SectionElement.SectionElement>
33
39
  ): Map<any, AD.Size.Size> {
34
40
  const header = separateHeader || section.page.header;
35
41
  const footer = separateFooter || section.page.footer;
@@ -56,16 +62,18 @@ function measureSection(
56
62
 
57
63
  //header and footer sizes for the first page
58
64
  const firstPageHeaderAndFooters = getHeaderAndFooter(section, 1);
59
- const firstPageHeaderAndFootersExtracted: ReadonlyArray<[ReadonlyArray<AD.SectionElement.SectionElement>, AD.LayoutFoundation.LayoutFoundation]> = [
65
+ const firstPageHeaderAndFootersExtracted: ReadonlyArray<
66
+ [ReadonlyArray<AD.SectionElement.SectionElement>, AD.LayoutFoundation.LayoutFoundation]
67
+ > = [
60
68
  [firstPageHeaderAndFooters.header, firstPageHeaderAndFooters.headerMargins],
61
- [firstPageHeaderAndFooters.footer, firstPageHeaderAndFooters.footerMargins]
69
+ [firstPageHeaderAndFooters.footer, firstPageHeaderAndFooters.footerMargins],
62
70
  ];
63
71
  const firstPageHeaderAndFooterSizes = firstPageHeaderAndFootersExtracted.reduce((prev, [sections, margins]) => {
64
72
  const availabelWidth = pageWidth - (margins.left + margins.right);
65
73
  const availableSizes = AD.Size.create(availabelWidth, pageHeight);
66
74
  return [...prev, ...sections.map((e) => measureSectionElement(pdfKit, resources, availableSizes, e))];
67
75
  }, []);
68
-
76
+
69
77
  return mergeMaps([...sectionSizes, ...headerSizes, ...footerSizes, ...firstPageHeaderAndFooterSizes]);
70
78
  }
71
79
 
@@ -136,6 +144,9 @@ function measureParagraph(
136
144
  let concatenatedText = "";
137
145
  let hasAtomImage = false;
138
146
  let textOptions;
147
+ let font = getFontNameStyle(style.textStyle);
148
+ let fontSize = AD.TextStyle.calculateFontSize(style.textStyle, 10);
149
+
139
150
  for (const atom of row) {
140
151
  if (atom.type === "Image") {
141
152
  hasAtomImage = true;
@@ -150,6 +161,8 @@ function measureParagraph(
150
161
  );
151
162
  if (atom.type === "TextRun" || atom.type === "TextField" || atom.type === "HyperLink") {
152
163
  concatenatedText += atom.text;
164
+ font = atom.style ? getFontNameStyle(atom.style) : font;
165
+ fontSize = atom.style ? Math.max(fontSize, AD.TextStyle.calculateFontSize(style.textStyle, 10)) : fontSize;
153
166
  textOptions = getBiggestStyle(atom, style, resources, textOptions);
154
167
  }
155
168
  desiredSizes.set(atom, atomSize);
@@ -166,7 +179,7 @@ function measureParagraph(
166
179
  } else if (hasAtomImage) {
167
180
  paragraphHeight += desiredHeight + currentRowHeight;
168
181
  } else {
169
- paragraphHeight += pdfKit.heightOfString(concatenatedText, {
182
+ paragraphHeight += heightOfString(pdfKit, font, fontSize, concatenatedText, {
170
183
  width: textOptions && textOptions.lineBreak === false ? Infinity : availableSize.width,
171
184
  ...textOptions,
172
185
  });
@@ -477,7 +490,7 @@ function measureText(
477
490
  text: string,
478
491
  textStyle: AD.TextStyle.TextStyle,
479
492
  availableSize: AD.Size.Size,
480
- measureWithSpaces?: boolean,
493
+ measureWithSpaces?: boolean
481
494
  ): AD.Size.Size {
482
495
  const font = getFontNameStyle(textStyle);
483
496
  const fontSize = AD.TextStyle.calculateFontSize(textStyle, 10);
@@ -495,24 +508,62 @@ function measureText(
495
508
  };
496
509
 
497
510
  let measuredWidth = 0;
498
- if(measureWithSpaces !== undefined && measureWithSpaces) {
499
- const spaceWidth = pdf.widthOfString(" ", textOptions);
500
- const stringWidth = pdf.widthOfString(` ${text} `, textOptions) - (spaceWidth * 2);
501
- const normalWidth = pdf.widthOfString(text, textOptions);
511
+ if (measureWithSpaces !== undefined && measureWithSpaces) {
512
+ const spaceWidth = widthOfString(pdf, font, fontSize, " ", textOptions);
513
+ const stringWidth = widthOfString(pdf, font, fontSize, ` ${text} `, textOptions) - spaceWidth * 2;
502
514
  measuredWidth = stringWidth;
503
515
  } else {
504
- measuredWidth = pdf.widthOfString(text, textOptions);
516
+ measuredWidth = widthOfString(pdf, font, fontSize, text, textOptions);
505
517
  }
506
518
 
507
519
  const width = Math.min(availableSize.width, measuredWidth);
508
520
  const lineWidth = textStyle.lineBreak === false ? Infinity : availableSize.width;
509
- const height = pdf.heightOfString(text, {
521
+ const options = {
510
522
  width: lineWidth,
511
523
  ...textOptions,
512
- });
524
+ };
525
+ const height = heightOfString(pdf, font, fontSize, text, options);
513
526
  return AD.Size.create(width, height, availableSize.width);
514
527
  }
515
528
 
529
+ function widthOfString(
530
+ pdf: PDFKit.PDFDocument,
531
+ font: string,
532
+ fontSize: number,
533
+ text: string,
534
+ options: PDFKit.Mixins.TextOptions
535
+ ): number {
536
+ const key = JSON.stringify({ font, fontSize, text, options });
537
+ const cached = widthOfStringCache.get(key);
538
+ if (cached !== undefined) {
539
+ return cached;
540
+ }
541
+ pdf.font(font).fontSize(fontSize);
542
+
543
+ const width = pdf.widthOfString(text, options);
544
+ widthOfStringCache.set(key, width);
545
+ return width;
546
+ }
547
+
548
+ function heightOfString(
549
+ pdf: PDFKit.PDFDocument,
550
+ font: string,
551
+ fontSize: number,
552
+ text: string,
553
+ options: PDFKit.Mixins.TextOptions
554
+ ): number {
555
+ const key = JSON.stringify({ font, fontSize, text, options });
556
+ const cached = heightOfStringCache.get(key);
557
+ if (cached !== undefined) {
558
+ return cached;
559
+ }
560
+ pdf.font(font).fontSize(fontSize);
561
+
562
+ const height = pdf.heightOfString(text, options);
563
+ heightOfStringCache.set(key, height);
564
+ return height;
565
+ }
566
+
516
567
  function mergeMaps(maps: Array<Map<any, AD.Size.Size>>): Map<any, AD.Size.Size> {
517
568
  let newMap = new Map<any, AD.Size.Size>();
518
569
  maps.forEach((m) => m.forEach((v, k) => newMap.set(k, v)));