@bendyline/squisq-formats 2.8.5 → 2.8.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/README.md CHANGED
@@ -87,7 +87,7 @@ const imported = await pdfToMarkdownDoc(pdfBuffer);
87
87
  const container = await pdfToContainer(pdfBuffer);
88
88
  ```
89
89
 
90
- **Fidelity:** export uses pdf-lib's standard 14 fonts (`themeId` affects colors only). Text they cannot encode — Greek, Cyrillic, Vietnamese, arrows, math, box drawing, symbols — is drawn with an embedded Unicode font: the bundled DejaVu Sans faces, loaded and subset only for a document that needs them (`unicodeFonts` supplies your own faces, or `false` turns this off). CJK and emoji are still replaced, and reported once through `onWarning`. Pages stay white for printing. Theme text, heading, and link colors are retained when they meet 4.5:1 contrast against both white paper and the shaded table header; otherwise the exporter uses its default dark ink for that role. This also applies to inherited and custom themes. Pass `images` (keyed by the markdown URL, as for DOCX) to draw PNG and JPEG images that stand alone in a paragraph; other images print as an `[Image: alt]` note. PDF has no semantic structure, so import is heuristic and best-effort: headings are detected by font size, and tables / code blocks / blockquotes / links via the `detectTables` / `detectCodeBlocks` / `detectBlockquotes` / `detectLinks` options (all default true). `pdfToMarkdownDoc` is text-only; `pdfToContainer` also extracts embedded XObject and inline raster images in browsers and Node, placed **by page** — each image is inserted after the last content block from its page (image-only pages fall back to the nearest preceding page with content, else the document end). Placement is page-level only; masks, vector artwork, and images that PDF.js cannot expose as decoded pixels are not emitted.
90
+ **Fidelity:** export uses pdf-lib's standard 14 fonts (`themeId` affects colors only). Text they cannot encode — Greek, Cyrillic, Vietnamese, arrows, math, box drawing, symbols — is drawn with an embedded Unicode font: the bundled DejaVu Sans faces, loaded and subset only for a document that needs them (`unicodeFonts` supplies your own faces, or `false` turns this off). CJK and most emoji are still replaced, and reported once through `onWarning`. Lines break at a `<br>` (the only line break a table cell can hold), table columns are sized to their content, and a word too long for its line or cell breaks between characters. Pages stay white for printing. Theme text, heading, and link colors are retained when they meet 4.5:1 contrast against both white paper and the shaded table header; otherwise the exporter uses its default dark ink for that role. This also applies to inherited and custom themes. Pass `images` (keyed by the markdown URL, as for DOCX) to draw PNG and JPEG images that stand alone in a paragraph; other images print as an `[Image: alt]` note. PDF has no semantic structure, so import is heuristic and best-effort: headings are detected by font size, and tables / code blocks / blockquotes / links via the `detectTables` / `detectCodeBlocks` / `detectBlockquotes` / `detectLinks` options (all default true). `pdfToMarkdownDoc` is text-only; `pdfToContainer` also extracts embedded XObject and inline raster images in browsers and Node, placed **by page** — each image is inserted after the last content block from its page (image-only pages fall back to the nearest preceding page with content, else the document end). Placement is page-level only; masks, vector artwork, and images that PDF.js cannot expose as decoded pixels are not emitted.
91
91
 
92
92
  ### Diagrams as pictures
93
93
 
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  extractPlainText,
3
3
  inlineToPlainText
4
- } from "./chunk-AVOZAKGP.js";
4
+ } from "./chunk-BZ5SHMOY.js";
5
5
  import {
6
6
  MAX_COL_INDEX,
7
7
  MAX_ROW_INDEX,
@@ -1,4 +1,5 @@
1
1
  // src/shared/text.ts
2
+ import { isHtmlLineBreak } from "@bendyline/squisq/markdown";
2
3
  function stripHtmlTags(html) {
3
4
  return html.replace(/<[^>]*>/g, "");
4
5
  }
@@ -21,6 +22,8 @@ function inlineToPlainText(node) {
21
22
  return `{[${node.token}]}`;
22
23
  case "break":
23
24
  return " ";
25
+ case "htmlInline":
26
+ return isHtmlLineBreak(node.rawHtml) ? " " : "";
24
27
  default:
25
28
  return "";
26
29
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  stripHtmlTags
3
- } from "./chunk-AVOZAKGP.js";
3
+ } from "./chunk-BZ5SHMOY.js";
4
4
 
5
5
  // src/ooxml/relIds.ts
6
6
  var RelIdAllocator = class {
@@ -75,6 +75,7 @@ function hasControls(value) {
75
75
  }
76
76
 
77
77
  // src/shared/inlineRuns.ts
78
+ import { isHtmlLineBreak } from "@bendyline/squisq/markdown";
78
79
  function inlineNodesToRuns(nodes, handlers, format = {}) {
79
80
  let out = "";
80
81
  for (const node of nodes) {
@@ -101,6 +102,7 @@ function inlineNodeToRuns(node, handlers, format) {
101
102
  case "inlineMath":
102
103
  return handlers.run(node.value, { ...format, code: true });
103
104
  case "htmlInline":
105
+ if (isHtmlLineBreak(node.rawHtml)) return handlers.lineBreak();
104
106
  return handlers.run(stripHtmlTags(node.rawHtml), format);
105
107
  case "link":
106
108
  if (node.wikiTarget !== void 0 && !node.url)
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  convert,
3
3
  defaultRegistry
4
- } from "./chunk-X6WFQDZD.js";
4
+ } from "./chunk-ALDCFHZT.js";
5
5
  import {
6
6
  ConversionError
7
7
  } from "./chunk-KXOZMWBS.js";
@@ -5,7 +5,7 @@ import {
5
5
  inlineNodesToRuns,
6
6
  normalizeOoxmlHex,
7
7
  sanitizeOfficeHyperlink
8
- } from "./chunk-CJUOAGGS.js";
8
+ } from "./chunk-DHAK4PII.js";
9
9
  import {
10
10
  docHasSvgIslands,
11
11
  isSvgImageEntry,
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-VCZUXQUL.js";
15
15
  import {
16
16
  stripHtmlTags
17
- } from "./chunk-AVOZAKGP.js";
17
+ } from "./chunk-BZ5SHMOY.js";
18
18
  import {
19
19
  createPackage
20
20
  } from "./chunk-ILCJ3WFD.js";
@@ -8,7 +8,7 @@ import {
8
8
  inlineNodesToRuns,
9
9
  sanitizeOfficeHyperlink,
10
10
  toOoxmlHex
11
- } from "./chunk-CJUOAGGS.js";
11
+ } from "./chunk-DHAK4PII.js";
12
12
  import {
13
13
  svgImageFromBytes,
14
14
  svgIslandImage
@@ -16,7 +16,7 @@ import {
16
16
  import {
17
17
  extractPlainText,
18
18
  stripHtmlTags
19
- } from "./chunk-AVOZAKGP.js";
19
+ } from "./chunk-BZ5SHMOY.js";
20
20
  import {
21
21
  createPackage
22
22
  } from "./chunk-ILCJ3WFD.js";
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-VCZUXQUL.js";
9
9
  import {
10
10
  extractPlainText
11
- } from "./chunk-AVOZAKGP.js";
11
+ } from "./chunk-BZ5SHMOY.js";
12
12
  import {
13
13
  escapeXml
14
14
  } from "./chunk-JU2RHXUB.js";
@@ -29,7 +29,7 @@ import {
29
29
  import JSZip from "jszip";
30
30
  import { resolveFontFamily } from "@bendyline/squisq/schemas";
31
31
  import { resolveThemeForDoc } from "@bendyline/squisq/doc";
32
- import { readFrontmatterThemeId, sanitizeUrl } from "@bendyline/squisq/markdown";
32
+ import { isHtmlLineBreak, readFrontmatterThemeId, sanitizeUrl } from "@bendyline/squisq/markdown";
33
33
  async function markdownDocToEpub(sourceDoc, options = {}) {
34
34
  options.signal?.throwIfAborted();
35
35
  const themeId = options.themeId ?? readFrontmatterThemeId(sourceDoc.frontmatter);
@@ -442,6 +442,7 @@ function inlineToXhtml(node, ctx) {
442
442
  case "inlineMath":
443
443
  return `<span class="math">${escapeXml(node.value)}</span>`;
444
444
  case "htmlInline":
445
+ if (isHtmlLineBreak(node.rawHtml)) return "<br/>";
445
446
  return escapeXml(node.rawHtml.replace(/<[^>]+>/g, ""));
446
447
  case "inlineIcon": {
447
448
  const icon = node;
@@ -23,7 +23,7 @@ import { PDFDocument, StandardFonts, rgb, PDFString } from "pdf-lib";
23
23
  import fontkit2 from "@pdf-lib/fontkit";
24
24
  import { contrastRatio } from "@bendyline/squisq/schemas";
25
25
  import { docToMarkdown, resolveThemeForDoc } from "@bendyline/squisq/doc";
26
- import { readFrontmatterThemeId, sanitizeUrl } from "@bendyline/squisq/markdown";
26
+ import { isHtmlLineBreak, readFrontmatterThemeId, sanitizeUrl } from "@bendyline/squisq/markdown";
27
27
 
28
28
  // src/pdf/winAnsi.ts
29
29
  var CP1252_HIGH_SPECIALS = /* @__PURE__ */ new Set([
@@ -333,7 +333,7 @@ var WinAnsiTracker = class {
333
333
  warning(options = {}) {
334
334
  if (this.count === 0) return void 0;
335
335
  if (options.unicodeFont) {
336
- return `PDF export replaced ${this.count} character(s) that its fonts cannot draw (${this.samples.join(", ")}). Scripts such as CJK and emoji are not available in PDF export.`;
336
+ return `PDF export replaced ${this.count} character(s) that its fonts cannot draw (${this.samples.join(", ")}). The PDF fonts do not cover CJK scripts or most emoji.`;
337
337
  }
338
338
  return `PDF export replaced ${this.count} character(s) that the standard PDF fonts cannot encode (${this.samples.join(", ")}). Scripts such as emoji, CJK and Cyrillic require an embedded Unicode font.`;
339
339
  }
@@ -741,16 +741,13 @@ function flattenInlines(nodes, ctx, state) {
741
741
  break;
742
742
  }
743
743
  case "break":
744
- spans.push({
745
- text: "\n",
746
- font: ctx.fonts.regular,
747
- fontSize: ctx.fontSize,
748
- color: ctx.colors.text
749
- });
744
+ spans.push(lineBreakSpan(ctx));
750
745
  break;
751
746
  case "htmlInline": {
752
747
  const html = node.rawHtml;
753
- if (html) {
748
+ if (isHtmlLineBreak(html)) {
749
+ spans.push(lineBreakSpan(ctx));
750
+ } else if (html) {
754
751
  spans.push(
755
752
  ...textSpans(ctx, html, ctx.fonts.mono, {
756
753
  fontSize: CODE_FONT_SIZE,
@@ -799,6 +796,9 @@ function flattenInlines(nodes, ctx, state) {
799
796
  }
800
797
  return spans;
801
798
  }
799
+ function lineBreakSpan(ctx) {
800
+ return { text: "\n", font: ctx.fonts.regular, fontSize: ctx.fontSize, color: ctx.colors.text };
801
+ }
802
802
  var STANDARD_FONT_NAMES = new Set(Object.values(StandardFonts));
803
803
  function drawnWidth(font, text, size) {
804
804
  if (!STANDARD_FONT_NAMES.has(font.name)) return font.widthOfTextAtSize(text, size);
@@ -895,7 +895,7 @@ function wrapSpans(spans, maxWidth) {
895
895
  lineWidth = 0;
896
896
  continue;
897
897
  }
898
- const words = splitIntoWords(span.text);
898
+ const words = splitIntoWords(span.text).flatMap((word) => breakLongWord(word, span, maxWidth));
899
899
  for (const word of words) {
900
900
  const wordWidth = drawnWidth(span.font, word, span.fontSize);
901
901
  if (lineWidth + wordWidth > maxWidth && currentLine.length > 0 && word.trim().length > 0) {
@@ -916,6 +916,42 @@ function wrapSpans(spans, maxWidth) {
916
916
  }
917
917
  return lines.length > 0 ? lines : [[]];
918
918
  }
919
+ function breakLongWord(word, span, maxWidth) {
920
+ if (word.trim().length === 0 || drawnWidth(span.font, word, span.fontSize) <= maxWidth) {
921
+ return [word];
922
+ }
923
+ const pieces = [];
924
+ let piece = "";
925
+ let pieceWidth = 0;
926
+ for (const cluster of characterClusters(word)) {
927
+ const width = drawnWidth(span.font, cluster, span.fontSize);
928
+ if (piece && pieceWidth + width > maxWidth) {
929
+ pieces.push(piece);
930
+ piece = "";
931
+ pieceWidth = 0;
932
+ }
933
+ piece += cluster;
934
+ pieceWidth += width;
935
+ }
936
+ if (piece) pieces.push(piece);
937
+ return pieces;
938
+ }
939
+ function continuesCluster(ch) {
940
+ const codePoint = ch.codePointAt(0);
941
+ return /\p{M}/u.test(ch) || codePoint === 8205 || codePoint === 65038 || codePoint === 65039 || codePoint >= 127995 && codePoint <= 127999;
942
+ }
943
+ function characterClusters(text) {
944
+ const clusters = [];
945
+ for (const ch of text) {
946
+ const last = clusters.length - 1;
947
+ if (last >= 0 && (continuesCluster(ch) || clusters[last].endsWith("\u200D"))) {
948
+ clusters[last] += ch;
949
+ } else {
950
+ clusters.push(ch);
951
+ }
952
+ }
953
+ return clusters;
954
+ }
919
955
  function splitIntoWords(text) {
920
956
  const tokens = [];
921
957
  let current = "";
@@ -1145,18 +1181,29 @@ function renderTable(node, ctx, extraIndent) {
1145
1181
  ...node.children.map((row) => row.children.length)
1146
1182
  );
1147
1183
  if (numCols === 0) return;
1148
- const colWidth = tableWidth / numCols;
1149
- for (let rowIdx = 0; rowIdx < node.children.length; rowIdx++) {
1150
- const row = node.children[rowIdx];
1184
+ const rows = node.children.map((rowNode, rowIdx) => {
1185
+ const row = rowNode;
1151
1186
  const isHeader = rowIdx === 0 && row.children.some((c) => c.isHeader);
1152
- const rowCellHeights = row.children.map((cell) => {
1153
- const cellNode = cell;
1154
- const spans = flattenInlines(cellNode.children, ctx, {
1187
+ const cells = row.children.map(
1188
+ (cell) => flattenInlines(cell.children, ctx, {
1155
1189
  bold: isHeader,
1156
1190
  italic: false,
1157
1191
  code: false
1158
- });
1159
- const lines = wrapSpans(spans, colWidth - 2 * TABLE_CELL_PAD_X);
1192
+ })
1193
+ );
1194
+ return { isHeader, cells };
1195
+ });
1196
+ const colWidths = tableColumnWidths(
1197
+ rows.map((row) => row.cells),
1198
+ tableWidth,
1199
+ numCols
1200
+ );
1201
+ const colX = colWidths.map(
1202
+ (_, colIdx) => colWidths.slice(0, colIdx).reduce((sum, width) => sum + width, x0)
1203
+ );
1204
+ for (const { isHeader, cells } of rows) {
1205
+ const rowCellHeights = cells.map((spans, colIdx) => {
1206
+ const lines = wrapSpans(spans, colWidths[colIdx] - 2 * TABLE_CELL_PAD_X);
1160
1207
  return lines.length * ctx.fontSize * LINE_HEIGHT_FACTOR + 2 * TABLE_CELL_PAD_Y;
1161
1208
  });
1162
1209
  const rowHeight = Math.max(
@@ -1174,7 +1221,8 @@ function renderTable(node, ctx, extraIndent) {
1174
1221
  });
1175
1222
  }
1176
1223
  for (let colIdx = 0; colIdx < numCols; colIdx++) {
1177
- const cellX = x0 + colIdx * colWidth;
1224
+ const cellX = colX[colIdx];
1225
+ const colWidth = colWidths[colIdx];
1178
1226
  ctx.page.drawRectangle({
1179
1227
  x: cellX,
1180
1228
  y: ctx.y - rowHeight,
@@ -1183,13 +1231,8 @@ function renderTable(node, ctx, extraIndent) {
1183
1231
  borderColor: rgb(COLOR_TABLE_BORDER.r, COLOR_TABLE_BORDER.g, COLOR_TABLE_BORDER.b),
1184
1232
  borderWidth: TABLE_BORDER_WIDTH
1185
1233
  });
1186
- if (colIdx < row.children.length) {
1187
- const cellNode = row.children[colIdx];
1188
- const spans = flattenInlines(cellNode.children, ctx, {
1189
- bold: isHeader,
1190
- italic: false,
1191
- code: false
1192
- });
1234
+ const spans = cells[colIdx];
1235
+ if (spans) {
1193
1236
  const savedY = ctx.y;
1194
1237
  ctx.y = ctx.y - TABLE_CELL_PAD_Y;
1195
1238
  const cellAvailableWidth = colWidth - 2 * TABLE_CELL_PAD_X;
@@ -1215,6 +1258,44 @@ function renderTable(node, ctx, extraIndent) {
1215
1258
  }
1216
1259
  ctx.y -= PARAGRAPH_SPACING;
1217
1260
  }
1261
+ function tableColumnWidths(rows, tableWidth, numCols) {
1262
+ const pad = 2 * TABLE_CELL_PAD_X;
1263
+ const minimum = new Array(numCols).fill(pad);
1264
+ const preferred = new Array(numCols).fill(pad);
1265
+ for (const cells of rows) {
1266
+ cells.forEach((spans, colIdx) => {
1267
+ let longestLine = 0;
1268
+ let longestWord = 0;
1269
+ let line = 0;
1270
+ for (const span of spans) {
1271
+ if (span.text === "\n") {
1272
+ line = 0;
1273
+ continue;
1274
+ }
1275
+ for (const word of splitIntoWords(span.text)) {
1276
+ const width = drawnWidth(span.font, word, span.fontSize);
1277
+ line += width;
1278
+ if (word.trim().length > 0) longestWord = Math.max(longestWord, width);
1279
+ }
1280
+ longestLine = Math.max(longestLine, line);
1281
+ }
1282
+ minimum[colIdx] = Math.max(minimum[colIdx], longestWord + pad);
1283
+ preferred[colIdx] = Math.max(preferred[colIdx], longestLine + pad);
1284
+ });
1285
+ }
1286
+ const share = tableWidth / numCols;
1287
+ const floor = minimum.map((width) => Math.min(width, share));
1288
+ const wish = preferred.map((width, colIdx) => Math.max(width, floor[colIdx]));
1289
+ const sum = (values) => values.reduce((total, value) => total + value, 0);
1290
+ const wished = sum(wish);
1291
+ if (wished <= tableWidth) return wish.map((width) => width / wished * tableWidth);
1292
+ const spare = tableWidth - sum(floor);
1293
+ const wants = wish.map((width, colIdx) => width - floor[colIdx]);
1294
+ const wanted = sum(wants);
1295
+ return floor.map(
1296
+ (width, colIdx) => wanted > 0 ? width + spare * wants[colIdx] / wanted : width + spare / numCols
1297
+ );
1298
+ }
1218
1299
  function renderThematicBreak(ctx, extraIndent) {
1219
1300
  ctx.y -= PARAGRAPH_SPACING;
1220
1301
  ensureSpace(ctx, 10);
@@ -4,10 +4,10 @@ import {
4
4
  docxToDoc,
5
5
  docxToMarkdownDoc,
6
6
  markdownDocToDocx
7
- } from "../chunk-BIERSSDF.js";
8
- import "../chunk-CJUOAGGS.js";
7
+ } from "../chunk-KROH7FNT.js";
8
+ import "../chunk-DHAK4PII.js";
9
9
  import "../chunk-VCZUXQUL.js";
10
- import "../chunk-AVOZAKGP.js";
10
+ import "../chunk-BZ5SHMOY.js";
11
11
  import "../chunk-ILCJ3WFD.js";
12
12
  import "../chunk-JU2RHXUB.js";
13
13
  import "../chunk-S5PCVMKU.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  docToEpub,
3
3
  markdownDocToEpub
4
- } from "../chunk-GESOAVYN.js";
4
+ } from "../chunk-SVYTUYZM.js";
5
5
  import "../chunk-WMIDXNGR.js";
6
6
  import "../chunk-VCZUXQUL.js";
7
- import "../chunk-AVOZAKGP.js";
7
+ import "../chunk-BZ5SHMOY.js";
8
8
  import "../chunk-JU2RHXUB.js";
9
9
  import "../chunk-BXWNU4T5.js";
10
10
  import "../chunk-LBXBRFBZ.js";
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  import {
10
10
  docToEpub,
11
11
  markdownDocToEpub
12
- } from "./chunk-GESOAVYN.js";
12
+ } from "./chunk-SVYTUYZM.js";
13
13
  import {
14
14
  BUILTIN_FORMAT_IDS
15
15
  } from "./chunk-2P5HJAQL.js";
@@ -28,7 +28,7 @@ import {
28
28
  renderOutsideInDocument,
29
29
  withOutsideInMarkdownEditing,
30
30
  withOutsideInMetadata
31
- } from "./chunk-AOY3UPE3.js";
31
+ } from "./chunk-IYNDHW2C.js";
32
32
  import {
33
33
  DEFAULT_CONVERSION_LIMITS,
34
34
  convert,
@@ -37,7 +37,7 @@ import {
37
37
  defaultRegistry,
38
38
  prepareConversion,
39
39
  resolveConversionLimits
40
- } from "./chunk-X6WFQDZD.js";
40
+ } from "./chunk-ALDCFHZT.js";
41
41
  import {
42
42
  ConversionError
43
43
  } from "./chunk-KXOZMWBS.js";
@@ -52,23 +52,23 @@ import {
52
52
  docxToDoc,
53
53
  docxToMarkdownDoc,
54
54
  markdownDocToDocx
55
- } from "./chunk-BIERSSDF.js";
55
+ } from "./chunk-KROH7FNT.js";
56
56
  import {
57
57
  docToPptx,
58
58
  markdownDocToPptx,
59
59
  pptxToDoc,
60
60
  pptxToMarkdownDoc
61
- } from "./chunk-QRDJOYT3.js";
61
+ } from "./chunk-QU4EVC62.js";
62
62
  import "./chunk-6N2J7C2B.js";
63
63
  import "./chunk-WMIDXNGR.js";
64
- import "./chunk-CJUOAGGS.js";
64
+ import "./chunk-DHAK4PII.js";
65
65
  import "./chunk-VCZUXQUL.js";
66
66
  import {
67
67
  docToXlsx,
68
68
  markdownDocToXlsx,
69
69
  xlsxToDoc
70
- } from "./chunk-ZULJFSA4.js";
71
- import "./chunk-AVOZAKGP.js";
70
+ } from "./chunk-4A3EHQJP.js";
71
+ import "./chunk-BZ5SHMOY.js";
72
72
  import {
73
73
  gridToTables,
74
74
  xlsxToMarkdownDoc,
@@ -94,7 +94,7 @@ import {
94
94
  markdownDocToPdf,
95
95
  pdfToDoc,
96
96
  pdfToMarkdownDoc
97
- } from "./chunk-GLIUMDYD.js";
97
+ } from "./chunk-TMOXUUTG.js";
98
98
  import "./chunk-34KECNZO.js";
99
99
  import "./chunk-BXWNU4T5.js";
100
100
  import "./chunk-IIQYS2YH.js";
@@ -6,8 +6,8 @@ import {
6
6
  renderOutsideInDocument,
7
7
  withOutsideInMarkdownEditing,
8
8
  withOutsideInMetadata
9
- } from "../chunk-AOY3UPE3.js";
10
- import "../chunk-X6WFQDZD.js";
9
+ } from "../chunk-IYNDHW2C.js";
10
+ import "../chunk-ALDCFHZT.js";
11
11
  import "../chunk-KXOZMWBS.js";
12
12
  import {
13
13
  OUTSIDE_IN_FORMAT_IDS,
package/dist/pdf/index.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  pdfToContainer,
6
6
  pdfToDoc,
7
7
  pdfToMarkdownDoc
8
- } from "../chunk-GLIUMDYD.js";
8
+ } from "../chunk-TMOXUUTG.js";
9
9
  import "../chunk-34KECNZO.js";
10
10
  import "../chunk-BXWNU4T5.js";
11
11
  import "../chunk-IIQYS2YH.js";
@@ -4,15 +4,15 @@ import {
4
4
  pptxToContainer,
5
5
  pptxToDoc,
6
6
  pptxToMarkdownDoc
7
- } from "../chunk-QRDJOYT3.js";
7
+ } from "../chunk-QU4EVC62.js";
8
8
  import {
9
9
  analyzePptxLayouts,
10
10
  inspectPptxLayouts
11
11
  } from "../chunk-6N2J7C2B.js";
12
12
  import "../chunk-WMIDXNGR.js";
13
- import "../chunk-CJUOAGGS.js";
13
+ import "../chunk-DHAK4PII.js";
14
14
  import "../chunk-VCZUXQUL.js";
15
- import "../chunk-AVOZAKGP.js";
15
+ import "../chunk-BZ5SHMOY.js";
16
16
  import "../chunk-ILCJ3WFD.js";
17
17
  import "../chunk-JU2RHXUB.js";
18
18
  import "../chunk-S5PCVMKU.js";
@@ -9,7 +9,7 @@ import {
9
9
  defaultRegistry,
10
10
  prepareConversion,
11
11
  resolveConversionLimits
12
- } from "../chunk-X6WFQDZD.js";
12
+ } from "../chunk-ALDCFHZT.js";
13
13
  import {
14
14
  ConversionError
15
15
  } from "../chunk-KXOZMWBS.js";
@@ -4,8 +4,8 @@ import {
4
4
  markdownDocToXlsx,
5
5
  patchXlsxCellValues,
6
6
  xlsxToDoc
7
- } from "../chunk-ZULJFSA4.js";
8
- import "../chunk-AVOZAKGP.js";
7
+ } from "../chunk-4A3EHQJP.js";
8
+ import "../chunk-BZ5SHMOY.js";
9
9
  import {
10
10
  formatCellRef,
11
11
  gridToTables,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bendyline/squisq-formats",
3
- "version": "2.8.5",
3
+ "version": "2.8.6",
4
4
  "description": "Document format converters — DOCX, PDF, OOXML import/export",
5
5
  "license": "MIT",
6
6
  "author": "Bendyline",
@@ -125,7 +125,7 @@
125
125
  "typecheck": "tsc --noEmit"
126
126
  },
127
127
  "dependencies": {
128
- "@bendyline/squisq": "2.13.4",
128
+ "@bendyline/squisq": "2.13.5",
129
129
  "@pdf-lib/fontkit": "1.1.1",
130
130
  "@pdf-lib/upng": "1.0.1",
131
131
  "@xmldom/xmldom": "0.9.12",
File without changes