@pixldocs/canvas-renderer 0.5.172 → 0.5.173

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.
@@ -3,8 +3,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jspdf = require("jspdf");
4
4
  const svg2pdf_js = require("svg2pdf.js");
5
5
  const fabric = require("fabric");
6
- const index = require("./index-DYtJJzdk.cjs");
7
- const pdfFonts = require("./pdfFonts-BTEVnYX8.cjs");
6
+ const index = require("./index-ZehEOqUB.cjs");
7
+ const pdfFonts = require("./pdfFonts-BTj2f465.cjs");
8
8
  function _interopNamespaceDefault(e) {
9
9
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
10
10
  if (e) {
@@ -31,7 +31,7 @@ async function embedFontsForSvg(pdf, svgStr) {
31
31
  FONT_FALLBACK_SYMBOLS: FONT_FALLBACK_SYMBOLS2,
32
32
  FONT_FALLBACK_DEVANAGARI: FONT_FALLBACK_DEVANAGARI2,
33
33
  FONT_FALLBACK_MATH: FONT_FALLBACK_MATH2
34
- } = await Promise.resolve().then(() => require("./pdfFonts-BTEVnYX8.cjs"));
34
+ } = await Promise.resolve().then(() => require("./pdfFonts-BTj2f465.cjs"));
35
35
  const parser = new DOMParser();
36
36
  const doc = parser.parseFromString(svgStr, "image/svg+xml");
37
37
  const textEls = Array.from(doc.querySelectorAll("text, tspan, textPath"));
@@ -2519,7 +2519,7 @@ async function fetchSvgAsElement(imageUrl, colorMap) {
2519
2519
  async function getRecoloredSvgDataUrl(imageUrl, colorMap) {
2520
2520
  if (!colorMap || Object.keys(colorMap).length === 0) return null;
2521
2521
  try {
2522
- const { getNormalizedSvgUrl } = await Promise.resolve().then(() => require("./index-DYtJJzdk.cjs")).then((n) => n.canvasImageLoader);
2522
+ const { getNormalizedSvgUrl } = await Promise.resolve().then(() => require("./index-ZehEOqUB.cjs")).then((n) => n.canvasImageLoader);
2523
2523
  return await getNormalizedSvgUrl(imageUrl, colorMap);
2524
2524
  } catch {
2525
2525
  return null;
@@ -2548,8 +2548,18 @@ function normalizeElement(el) {
2548
2548
  const skewY = el.skewY ?? 0;
2549
2549
  const style = el.style || {};
2550
2550
  const opacity = el.opacity ?? style.opacity ?? 1;
2551
- const fill = el.fill || style.fill || "";
2552
- const stroke = el.stroke || style.stroke || "";
2551
+ const firstStop = (g) => {
2552
+ var _a2;
2553
+ const stops = g == null ? void 0 : g.stops;
2554
+ if (!Array.isArray(stops) || stops.length === 0) return null;
2555
+ const sorted = [...stops].sort((a, b) => (Number(a == null ? void 0 : a.offset) || 0) - (Number(b == null ? void 0 : b.offset) || 0));
2556
+ const c = (_a2 = sorted[0]) == null ? void 0 : _a2.color;
2557
+ return typeof c === "string" && c ? c : null;
2558
+ };
2559
+ const fillGradientFirst = firstStop(el.fillGradient);
2560
+ const strokeGradientFirst = firstStop(el.strokeGradient);
2561
+ const fill = fillGradientFirst ?? (el.fill || style.fill || "");
2562
+ const stroke = strokeGradientFirst ?? (el.stroke || style.stroke || "");
2553
2563
  const strokeWidth = el.strokeWidth ?? style.strokeWidth ?? 0;
2554
2564
  const strokeDashArray = ((_e = el.strokeDashArray) == null ? void 0 : _e.join(",")) || style.strokeDasharray;
2555
2565
  const text = el.text || el.content || "";
@@ -3300,7 +3310,7 @@ async function fetchImageAsBase64(imageUrl, opts = {}) {
3300
3310
  }
3301
3311
  let fetchUrl = imageUrl;
3302
3312
  if (imageUrl.startsWith("http://") || imageUrl.startsWith("https://")) {
3303
- const { isPrivateUrl } = await Promise.resolve().then(() => require("./index-DYtJJzdk.cjs")).then((n) => n.canvasImageLoader);
3313
+ const { isPrivateUrl } = await Promise.resolve().then(() => require("./index-ZehEOqUB.cjs")).then((n) => n.canvasImageLoader);
3304
3314
  if (isPrivateUrl(imageUrl)) return null;
3305
3315
  const proxyUrl = new URL(`${index.API_URL}/image-proxy`);
3306
3316
  proxyUrl.searchParams.set("url", imageUrl);
@@ -4907,7 +4917,7 @@ function preparePagesForExport(pages, canvasWidth, canvasHeight, options) {
4907
4917
  }
4908
4918
  async function exportMultiPagePdf(pages, options) {
4909
4919
  var _a, _b, _c, _d, _e;
4910
- const { filename = "document.pdf", title, watermark = false, returnBlob = false } = options;
4920
+ const { filename = "document.pdf", title, watermark = false, returnBlob = false, pdfTextMode = "selectable" } = options;
4911
4921
  pdfFonts.resetPdfFontRegistry();
4912
4922
  if (pages.length === 0) {
4913
4923
  throw new Error("No pages to export");
@@ -5066,8 +5076,24 @@ async function exportMultiPagePdf(pages, options) {
5066
5076
  } catch (fontEmbedErr) {
5067
5077
  console.warn("[client-pdf-export] JIT font embed for live SVG failed", fontEmbedErr);
5068
5078
  }
5079
+ let preppedSvgString = liveSvgString;
5080
+ try {
5081
+ if (pdfTextMode === "auto" || pdfTextMode === "pixel-perfect") {
5082
+ const { convertDevanagariTextToPath } = await Promise.resolve().then(() => require("./svgTextToPath-BLk_mcqi.cjs"));
5083
+ preppedSvgString = await convertDevanagariTextToPath(
5084
+ liveSvgString,
5085
+ void 0,
5086
+ { mode: "gradient-only" }
5087
+ );
5088
+ } else {
5089
+ const { replaceGradientTextFillsWithFirstStop } = await Promise.resolve().then(() => require("./svgTextToPath-BLk_mcqi.cjs"));
5090
+ preppedSvgString = replaceGradientTextFillsWithFirstStop(liveSvgString);
5091
+ }
5092
+ } catch (gradErr) {
5093
+ console.warn("[client-pdf-export] gradient-text fill resolution failed", gradErr);
5094
+ }
5069
5095
  const liveSvg = await prepareLiveCanvasSvgForPdf(
5070
- liveSvgString,
5096
+ preppedSvgString,
5071
5097
  liveSvgWidth,
5072
5098
  liveSvgHeight,
5073
5099
  `page-${pageIndex + 1}`,
@@ -5282,4 +5308,4 @@ exports.exportMultiPagePdf = exportMultiPagePdf;
5282
5308
  exports.logTextMeasurementDiagnostic = logTextMeasurementDiagnostic;
5283
5309
  exports.preparePagesForExport = preparePagesForExport;
5284
5310
  exports.rewriteSvgFontsForJsPDFWithSourceMeta = rewriteSvgFontsForJsPDFWithSourceMeta;
5285
- //# sourceMappingURL=vectorPdfExport-CDOztP1H.cjs.map
5311
+ //# sourceMappingURL=vectorPdfExport-BWDj55kq.cjs.map