@pixldocs/canvas-renderer 0.5.175 → 0.5.176
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/dist/{index-CTIPncpy.js → index-C03-L2j3.js} +31 -37
- package/dist/index-C03-L2j3.js.map +1 -0
- package/dist/{index-DOxhZsjV.cjs → index-DSe1eOVD.cjs} +31 -37
- package/dist/index-DSe1eOVD.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -1
- package/dist/{svgTextToPath-ra4EhtBL.js → svgTextToPath-BoT6H7Lz.js} +12 -2
- package/dist/svgTextToPath-BoT6H7Lz.js.map +1 -0
- package/dist/{svgTextToPath-BLk_mcqi.cjs → svgTextToPath-hYM9qTeC.cjs} +12 -2
- package/dist/svgTextToPath-hYM9qTeC.cjs.map +1 -0
- package/dist/{vectorPdfExport-COqBgUXt.js → vectorPdfExport-CA6a-apV.js} +6 -22
- package/dist/{vectorPdfExport-COqBgUXt.js.map → vectorPdfExport-CA6a-apV.js.map} +1 -1
- package/dist/{vectorPdfExport-BZAl0Pdr.cjs → vectorPdfExport-CZWsOCqF.cjs} +6 -22
- package/dist/{vectorPdfExport-BZAl0Pdr.cjs.map → vectorPdfExport-CZWsOCqF.cjs.map} +1 -1
- package/package.json +1 -1
- package/dist/index-CTIPncpy.js.map +0 -1
- package/dist/index-DOxhZsjV.cjs.map +0 -1
- package/dist/svgTextToPath-BLk_mcqi.cjs.map +0 -1
- package/dist/svgTextToPath-ra4EhtBL.js.map +0 -1
|
@@ -3206,8 +3206,8 @@ const clearFabricCharCache = () => {
|
|
|
3206
3206
|
fabric.util.clearFabricFontCache();
|
|
3207
3207
|
}
|
|
3208
3208
|
};
|
|
3209
|
-
const clearFontCacheAndRerender = (canvas) => {
|
|
3210
|
-
clearFabricCharCache();
|
|
3209
|
+
const clearFontCacheAndRerender = (canvas, options = {}) => {
|
|
3210
|
+
if (options.clearGlobalCharCache !== false) clearFabricCharCache();
|
|
3211
3211
|
const logUnderlineDebug = (stage, payload) => {
|
|
3212
3212
|
try {
|
|
3213
3213
|
console.log(`[canvas-renderer][underline-debug] ${stage} ${JSON.stringify(payload)}`);
|
|
@@ -3298,9 +3298,9 @@ const ensureFontLoaded = async (fontFamily) => {
|
|
|
3298
3298
|
} catch {
|
|
3299
3299
|
}
|
|
3300
3300
|
};
|
|
3301
|
-
const setupFontLoadingListener = (canvas, afterRerender) => {
|
|
3301
|
+
const setupFontLoadingListener = (canvas, afterRerender, options = {}) => {
|
|
3302
3302
|
const handleFontLoad = () => {
|
|
3303
|
-
clearFontCacheAndRerender(canvas);
|
|
3303
|
+
clearFontCacheAndRerender(canvas, options);
|
|
3304
3304
|
afterRerender == null ? void 0 : afterRerender(canvas);
|
|
3305
3305
|
};
|
|
3306
3306
|
if (document.fonts) {
|
|
@@ -7360,6 +7360,7 @@ const PageCanvas = forwardRef(
|
|
|
7360
7360
|
canvasUpdateVersion = 0,
|
|
7361
7361
|
pageChildren,
|
|
7362
7362
|
skipFontReadyWait = false,
|
|
7363
|
+
preserveGlobalFontCache = false,
|
|
7363
7364
|
onReady
|
|
7364
7365
|
}, ref) => {
|
|
7365
7366
|
setMarkdownThemeColors({
|
|
@@ -7725,7 +7726,7 @@ const PageCanvas = forwardRef(
|
|
|
7725
7726
|
await waitUntilFontsAvailable(fontFamilies, { timeoutMs: 3500, pollIntervalMs: 60 });
|
|
7726
7727
|
await new Promise((r) => requestAnimationFrame(() => r()));
|
|
7727
7728
|
}
|
|
7728
|
-
clearFabricCharCache();
|
|
7729
|
+
if (!preserveGlobalFontCache) clearFabricCharCache();
|
|
7729
7730
|
clearMeasurementCache();
|
|
7730
7731
|
setReady(true);
|
|
7731
7732
|
} catch (e) {
|
|
@@ -7764,7 +7765,11 @@ const PageCanvas = forwardRef(
|
|
|
7764
7765
|
}
|
|
7765
7766
|
});
|
|
7766
7767
|
};
|
|
7767
|
-
const fontCleanup = setupFontLoadingListener(
|
|
7768
|
+
const fontCleanup = setupFontLoadingListener(
|
|
7769
|
+
fabricCanvas,
|
|
7770
|
+
persistTextDimensionsAfterFontLoad,
|
|
7771
|
+
{ clearGlobalCharCache: !preserveGlobalFontCache }
|
|
7772
|
+
);
|
|
7768
7773
|
fabricCanvas.__fontCleanup = fontCleanup;
|
|
7769
7774
|
fabricCanvas.__isUserTransforming = false;
|
|
7770
7775
|
fabricCanvas.on("mouse:down", () => {
|
|
@@ -9764,7 +9769,7 @@ const PageCanvas = forwardRef(
|
|
|
9764
9769
|
pendingSyncRef.current = false;
|
|
9765
9770
|
if (ready && !hasClearedCachesBeforeFirstSyncRef.current) {
|
|
9766
9771
|
hasClearedCachesBeforeFirstSyncRef.current = true;
|
|
9767
|
-
clearFabricCharCache();
|
|
9772
|
+
if (!preserveGlobalFontCache) clearFabricCharCache();
|
|
9768
9773
|
clearMeasurementCache();
|
|
9769
9774
|
}
|
|
9770
9775
|
doSyncRef.current();
|
|
@@ -9848,7 +9853,7 @@ const PageCanvas = forwardRef(
|
|
|
9848
9853
|
const runReflowAndPersist = () => {
|
|
9849
9854
|
const fc = fabricRef.current;
|
|
9850
9855
|
if (!fc || cancelled) return;
|
|
9851
|
-
clearFontCacheAndRerender(fc);
|
|
9856
|
+
clearFontCacheAndRerender(fc, { clearGlobalCharCache: !preserveGlobalFontCache });
|
|
9852
9857
|
const state = useEditorStore.getState();
|
|
9853
9858
|
const page = state.canvas.pages.find((p) => p.id === pageId);
|
|
9854
9859
|
if (page) {
|
|
@@ -11425,6 +11430,7 @@ function PreviewCanvas({
|
|
|
11425
11430
|
zoom = 1,
|
|
11426
11431
|
absoluteZoom = false,
|
|
11427
11432
|
skipFontReadyWait = false,
|
|
11433
|
+
preserveGlobalFontCache = false,
|
|
11428
11434
|
pageIdOverride,
|
|
11429
11435
|
className,
|
|
11430
11436
|
onDynamicFieldClick,
|
|
@@ -11587,6 +11593,7 @@ function PreviewCanvas({
|
|
|
11587
11593
|
activeTool: "select",
|
|
11588
11594
|
mode: "preview",
|
|
11589
11595
|
skipFontReadyWait,
|
|
11596
|
+
preserveGlobalFontCache,
|
|
11590
11597
|
dynamicFieldIds,
|
|
11591
11598
|
onDynamicFieldClick: handleDynamicFieldClick,
|
|
11592
11599
|
onReady
|
|
@@ -16331,9 +16338,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
|
|
|
16331
16338
|
}
|
|
16332
16339
|
return svgString;
|
|
16333
16340
|
}
|
|
16334
|
-
const resolvedPackageVersion = "0.5.
|
|
16341
|
+
const resolvedPackageVersion = "0.5.176";
|
|
16335
16342
|
const PACKAGE_VERSION = resolvedPackageVersion;
|
|
16336
|
-
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.
|
|
16343
|
+
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.176";
|
|
16337
16344
|
const roundParityValue = (value) => {
|
|
16338
16345
|
if (typeof value !== "number") return value;
|
|
16339
16346
|
return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
|
|
@@ -16820,6 +16827,7 @@ class PixldocsRenderer {
|
|
|
16820
16827
|
zoom: 1,
|
|
16821
16828
|
absoluteZoom: true,
|
|
16822
16829
|
skipFontReadyWait: false,
|
|
16830
|
+
preserveGlobalFontCache: true,
|
|
16823
16831
|
onReady: () => {
|
|
16824
16832
|
clearTimeout(timer);
|
|
16825
16833
|
resolve();
|
|
@@ -16834,7 +16842,7 @@ class PixldocsRenderer {
|
|
|
16834
16842
|
await this.waitForCanvasScene(container, cloned, i);
|
|
16835
16843
|
}
|
|
16836
16844
|
console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
|
|
16837
|
-
const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-
|
|
16845
|
+
const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-CA6a-apV.js");
|
|
16838
16846
|
const prepared = preparePagesForExport(
|
|
16839
16847
|
cloned.pages,
|
|
16840
16848
|
canvasWidth,
|
|
@@ -17217,6 +17225,7 @@ class PixldocsRenderer {
|
|
|
17217
17225
|
zoom: pixelRatio,
|
|
17218
17226
|
absoluteZoom: true,
|
|
17219
17227
|
skipFontReadyWait: false,
|
|
17228
|
+
preserveGlobalFontCache: true,
|
|
17220
17229
|
onReady: onReadyOnce
|
|
17221
17230
|
})
|
|
17222
17231
|
);
|
|
@@ -17277,6 +17286,7 @@ class PixldocsRenderer {
|
|
|
17277
17286
|
zoom: pixelRatio,
|
|
17278
17287
|
absoluteZoom: true,
|
|
17279
17288
|
skipFontReadyWait: false,
|
|
17289
|
+
preserveGlobalFontCache: true,
|
|
17280
17290
|
onReady
|
|
17281
17291
|
})
|
|
17282
17292
|
);
|
|
@@ -17328,6 +17338,7 @@ class PixldocsRenderer {
|
|
|
17328
17338
|
zoom: 1,
|
|
17329
17339
|
absoluteZoom: true,
|
|
17330
17340
|
skipFontReadyWait: false,
|
|
17341
|
+
preserveGlobalFontCache: true,
|
|
17331
17342
|
onReady: readyHandler
|
|
17332
17343
|
})
|
|
17333
17344
|
);
|
|
@@ -18972,7 +18983,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
|
|
|
18972
18983
|
if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
|
|
18973
18984
|
sanitizeSvgTreeForPdf(svgToDraw);
|
|
18974
18985
|
try {
|
|
18975
|
-
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await import("./vectorPdfExport-
|
|
18986
|
+
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await import("./vectorPdfExport-CA6a-apV.js");
|
|
18976
18987
|
try {
|
|
18977
18988
|
await logTextMeasurementDiagnostic(svgToDraw);
|
|
18978
18989
|
} catch {
|
|
@@ -19094,8 +19105,6 @@ async function assemblePdfFromSvgs(svgResults, options = {}) {
|
|
|
19094
19105
|
drawPageBackground(pdf, i, page.width, page.height, page.backgroundColor, page.backgroundGradient);
|
|
19095
19106
|
const shouldStripBg = stripPageBackground ?? hasGradient;
|
|
19096
19107
|
const textMode = options.textMode ?? (options.outlineText === true ? "pixel-perfect" : "selectable");
|
|
19097
|
-
const shouldOutlineText = textMode === "pixel-perfect" || textMode === "auto";
|
|
19098
|
-
const outlineSubMode = textMode === "pixel-perfect" ? "all" : "gradient-only";
|
|
19099
19108
|
let pageSvg = page.svg;
|
|
19100
19109
|
try {
|
|
19101
19110
|
pageSvg = await convertSvgTextDecorationsToLinesString(pageSvg);
|
|
@@ -19105,30 +19114,15 @@ async function assemblePdfFromSvgs(svgResults, options = {}) {
|
|
|
19105
19114
|
underlineErr
|
|
19106
19115
|
);
|
|
19107
19116
|
}
|
|
19108
|
-
|
|
19109
|
-
|
|
19110
|
-
|
|
19111
|
-
pageSvg = await convertAllTextToPath(pageSvg, fontBaseUrl, { mode: outlineSubMode });
|
|
19112
|
-
try {
|
|
19113
|
-
dumpSvgTextDiagnostics(pageSvg, i, PARITY_TAG, "STAGE-1b-after-text-to-path-raw");
|
|
19114
|
-
} catch {
|
|
19115
|
-
}
|
|
19116
|
-
} catch (outlineErr) {
|
|
19117
|
-
console.warn(
|
|
19118
|
-
"[canvas-renderer][pdf] raw-stage text outlining unavailable, falling back to embedded SVG text:",
|
|
19119
|
-
outlineErr
|
|
19120
|
-
);
|
|
19121
|
-
}
|
|
19122
|
-
} else {
|
|
19117
|
+
try {
|
|
19118
|
+
const { prepareSvgTextForPdfMode } = await import("./svgTextToPath-BoT6H7Lz.js");
|
|
19119
|
+
pageSvg = await prepareSvgTextForPdfMode(pageSvg, textMode, fontBaseUrl);
|
|
19123
19120
|
try {
|
|
19124
|
-
|
|
19125
|
-
|
|
19126
|
-
} catch (gradErr) {
|
|
19127
|
-
console.warn(
|
|
19128
|
-
"[canvas-renderer][pdf] gradient-text fill resolution failed:",
|
|
19129
|
-
gradErr
|
|
19130
|
-
);
|
|
19121
|
+
dumpSvgTextDiagnostics(pageSvg, i, PARITY_TAG, "STAGE-1b-after-shared-text-prep");
|
|
19122
|
+
} catch {
|
|
19131
19123
|
}
|
|
19124
|
+
} catch (textPrepErr) {
|
|
19125
|
+
console.warn("[canvas-renderer][pdf] shared text prep failed:", textPrepErr);
|
|
19132
19126
|
}
|
|
19133
19127
|
let processedSvg = await prepareLiveCanvasSvgForPdf(pageSvg, page.width, page.height, `page-${i + 1}`, {
|
|
19134
19128
|
stripPageBackground: shouldStripBg
|
|
@@ -19385,4 +19379,4 @@ export {
|
|
|
19385
19379
|
collectFontDescriptorsFromConfig as y,
|
|
19386
19380
|
collectFontsFromConfig as z
|
|
19387
19381
|
};
|
|
19388
|
-
//# sourceMappingURL=index-
|
|
19382
|
+
//# sourceMappingURL=index-C03-L2j3.js.map
|