@pixldocs/canvas-renderer 0.5.129 → 0.5.132

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.
@@ -5723,11 +5723,14 @@ function applyTextBackground(obj, cfg) {
5723
5723
  }
5724
5724
  const openTagMatch = svg.match(/^\s*<g\b[^>]*>/);
5725
5725
  const inserted = bgShadowMarker + bgPath + textShadowMarker;
5726
+ const shadowBlur = hasShadow ? Math.max(0, Number(shadow.blur ?? 0)) : 0;
5727
+ const needsOutlineTag = shadowBlur > 0 ? ' data-pd-shadow-blur="1"' : "";
5726
5728
  if (openTagMatch) {
5727
5729
  const openTag = openTagMatch[0];
5728
- return svg.replace(openTag, openTag + inserted);
5730
+ const taggedOpenTag = needsOutlineTag && !/data-pd-shadow-blur=/i.test(openTag) ? openTag.replace(/^<g\b/, `<g${needsOutlineTag}`) : openTag;
5731
+ return svg.replace(openTag, taggedOpenTag + inserted);
5729
5732
  }
5730
- return `<g>${inserted}${svg}</g>`;
5733
+ return `<g${needsOutlineTag}>${inserted}${svg}</g>`;
5731
5734
  };
5732
5735
  }
5733
5736
  }
@@ -15763,7 +15766,7 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
15763
15766
  }
15764
15767
  return svgString;
15765
15768
  }
15766
- const PACKAGE_VERSION = "0.5.129";
15769
+ const PACKAGE_VERSION = "0.5.131";
15767
15770
  const roundParityValue = (value) => {
15768
15771
  if (typeof value !== "number") return value;
15769
15772
  return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
@@ -16182,7 +16185,7 @@ class PixldocsRenderer {
16182
16185
  await this.waitForCanvasScene(container, cloned, i);
16183
16186
  }
16184
16187
  console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
16185
- const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-DrXSoUpy.js");
16188
+ const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-3QFNDStb.js");
16186
16189
  const prepared = preparePagesForExport(
16187
16190
  cloned.pages,
16188
16191
  canvasWidth,
@@ -18174,6 +18177,12 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
18174
18177
  stripSuspiciousFullPageOverlayNodes(svgToDraw);
18175
18178
  if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
18176
18179
  sanitizeSvgTreeForPdf(svgToDraw);
18180
+ try {
18181
+ const { bakeTextAnchorPositionsFromLiveSvg } = await import("./vectorPdfExport-3QFNDStb.js");
18182
+ await bakeTextAnchorPositionsFromLiveSvg(svgToDraw);
18183
+ } catch (e) {
18184
+ console.warn("[canvas-renderer][pdf-export] anchor-bake pass failed (continuing):", e);
18185
+ }
18177
18186
  await rasterizeShadowMarkers(svgToDraw);
18178
18187
  return svgToDraw;
18179
18188
  } catch {
@@ -18286,7 +18295,7 @@ async function assemblePdfFromSvgs(svgResults, options = {}) {
18286
18295
  const hasGradient = !!((_b = (_a = page.backgroundGradient) == null ? void 0 : _a.stops) == null ? void 0 : _b.length);
18287
18296
  drawPageBackground(pdf, i, page.width, page.height, page.backgroundColor, page.backgroundGradient);
18288
18297
  const shouldStripBg = stripPageBackground ?? hasGradient;
18289
- const textMode = options.textMode ?? (options.outlineText === true ? "pixel-perfect" : "selectable");
18298
+ const textMode = options.textMode ?? (options.outlineText === true ? "pixel-perfect" : "auto");
18290
18299
  const shouldOutlineText = textMode === "pixel-perfect" || textMode === "auto";
18291
18300
  const outlineSubMode = textMode === "auto" ? "complex-only" : "all";
18292
18301
  let pageSvg = page.svg;
@@ -18300,7 +18309,7 @@ async function assemblePdfFromSvgs(svgResults, options = {}) {
18300
18309
  }
18301
18310
  if (shouldOutlineText) {
18302
18311
  try {
18303
- const { convertAllTextToPath } = await import("./svgTextToPath-n7TTV6Xv.js");
18312
+ const { convertAllTextToPath } = await import("./svgTextToPath-Bne0QyE7.js");
18304
18313
  pageSvg = await convertAllTextToPath(pageSvg, fontBaseUrl, { mode: outlineSubMode });
18305
18314
  try {
18306
18315
  dumpSvgTextDiagnostics(pageSvg, i, PARITY_TAG, "STAGE-1b-after-text-to-path-raw");
@@ -18514,4 +18523,4 @@ export {
18514
18523
  collectFontDescriptorsFromConfig as y,
18515
18524
  collectFontsFromConfig as z
18516
18525
  };
18517
- //# sourceMappingURL=index-BinoVoB5.js.map
18526
+ //# sourceMappingURL=index-TWLUgM18.js.map