@pixldocs/canvas-renderer 0.5.182 → 0.5.184
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 +26 -0
- package/dist/{index-CcCXKYy6.js → index-D2deevHj.js} +105 -24
- package/dist/index-D2deevHj.js.map +1 -0
- package/dist/{index-CUINpGhe.cjs → index-DUJw7ypl.cjs} +105 -24
- package/dist/index-DUJw7ypl.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +12 -0
- package/dist/index.js +1 -1
- package/dist/{previewBlur-D1laq3kn.cjs → previewBlur-Dbd6dn62.cjs} +2 -2
- package/dist/{previewBlur-D1laq3kn.cjs.map → previewBlur-Dbd6dn62.cjs.map} +1 -1
- package/dist/{previewBlur-ceEQYSVv.js → previewBlur-Dwbjk5sM.js} +2 -2
- package/dist/{previewBlur-ceEQYSVv.js.map → previewBlur-Dwbjk5sM.js.map} +1 -1
- package/dist/{vectorPdfExport-0dwbE8Kn.cjs → vectorPdfExport-BIgSi-Ef.cjs} +4 -4
- package/dist/{vectorPdfExport-0dwbE8Kn.cjs.map → vectorPdfExport-BIgSi-Ef.cjs.map} +1 -1
- package/dist/{vectorPdfExport-BpRBLtU-.js → vectorPdfExport-CBUTexHq.js} +4 -4
- package/dist/{vectorPdfExport-BpRBLtU-.js.map → vectorPdfExport-CBUTexHq.js.map} +1 -1
- package/package.json +1 -1
- package/dist/index-CUINpGhe.cjs.map +0 -1
- package/dist/index-CcCXKYy6.js.map +0 -1
package/README.md
CHANGED
|
@@ -367,6 +367,32 @@ Preview-blur is gated identically to the watermark: it only runs when
|
|
|
367
367
|
`watermark === true` (or, by default, when `template.price > 0` and the user
|
|
368
368
|
hasn't paid). Clean / paid downloads always render the original content.
|
|
369
369
|
|
|
370
|
+
### Live `backdrop-filter` overlay in `<PixldocsPreview>`
|
|
371
|
+
|
|
372
|
+
The React `<PixldocsPreview>` component automatically renders a real CSS
|
|
373
|
+
`backdrop-filter: blur()` frosted-glass overlay on top of every element
|
|
374
|
+
marked `previewBlur: true`. Bounds are auto-derived from the config
|
|
375
|
+
(groups respected), so no extra wiring is required.
|
|
376
|
+
|
|
377
|
+
Defaults: `blur(5px) saturate(130%)` with a `rgba(255,255,255,0.12)` tint,
|
|
378
|
+
square corners, no stroke, no shadow — identical to the in-app preview on
|
|
379
|
+
pixldocs.com.
|
|
380
|
+
|
|
381
|
+
Opt-out or tune via props:
|
|
382
|
+
|
|
383
|
+
```tsx
|
|
384
|
+
<PixldocsPreview
|
|
385
|
+
config={config}
|
|
386
|
+
// disable entirely
|
|
387
|
+
frostedBlur={false}
|
|
388
|
+
// or tune
|
|
389
|
+
frostedBlurOptions={{ blurPx: 6, saturatePct: 140, background: 'rgba(255,255,255,0.15)' }}
|
|
390
|
+
/>
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
The imperative PNG / PDF export paths still use the static translucent
|
|
394
|
+
rectangle (the closest pure-vector approximation), unchanged.
|
|
395
|
+
|
|
370
396
|
```ts
|
|
371
397
|
// In your template config
|
|
372
398
|
{
|
|
@@ -3412,6 +3412,7 @@ const setupFontLoadingListener = (canvas, afterRerender, options = {}) => {
|
|
|
3412
3412
|
};
|
|
3413
3413
|
};
|
|
3414
3414
|
preloadAllFonts();
|
|
3415
|
+
const EMPTY_IMAGE_PLACEHOLDER_DATA_URL = "data:image/png;base64,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";
|
|
3415
3416
|
const svgTextCache = /* @__PURE__ */ new Map();
|
|
3416
3417
|
const htmlImageCache = /* @__PURE__ */ new Map();
|
|
3417
3418
|
const MAX_CACHE_ENTRIES = 200;
|
|
@@ -3644,7 +3645,7 @@ async function normalizeSvgImageDimensions(fabricImage, imageUrl, sourceFormat)
|
|
|
3644
3645
|
fabricImage.setCoords();
|
|
3645
3646
|
}
|
|
3646
3647
|
}
|
|
3647
|
-
const EMPTY_IMAGE_PLACEHOLDER_URL =
|
|
3648
|
+
const EMPTY_IMAGE_PLACEHOLDER_URL = EMPTY_IMAGE_PLACEHOLDER_DATA_URL;
|
|
3648
3649
|
let placeholderTileImage = null;
|
|
3649
3650
|
let placeholderTilePromise = null;
|
|
3650
3651
|
function loadPlaceholderTile() {
|
|
@@ -16143,7 +16144,39 @@ function countUnderlinedNodes(config) {
|
|
|
16143
16144
|
for (const page of config.pages) walk(page.children || []);
|
|
16144
16145
|
return count;
|
|
16145
16146
|
}
|
|
16147
|
+
function getNum(v, fallback = 0) {
|
|
16148
|
+
return typeof v === "number" && Number.isFinite(v) ? v : fallback;
|
|
16149
|
+
}
|
|
16150
|
+
function collectBlurBounds(node, parentLeft, parentTop, inheritedBlur, out) {
|
|
16151
|
+
if (!node || typeof node !== "object") return;
|
|
16152
|
+
const isBlurred = inheritedBlur || node.previewBlur === true;
|
|
16153
|
+
const absLeft = parentLeft + getNum(node.left, 0);
|
|
16154
|
+
const absTop = parentTop + getNum(node.top, 0);
|
|
16155
|
+
if (node.type === "group") {
|
|
16156
|
+
const children = node.children || node.elements;
|
|
16157
|
+
if (Array.isArray(children)) {
|
|
16158
|
+
for (const c of children) collectBlurBounds(c, absLeft, absTop, isBlurred, out);
|
|
16159
|
+
}
|
|
16160
|
+
return;
|
|
16161
|
+
}
|
|
16162
|
+
if (!isBlurred) return;
|
|
16163
|
+
const sx = getNum(node.scaleX, 1) || 1;
|
|
16164
|
+
const sy = getNum(node.scaleY, 1) || 1;
|
|
16165
|
+
const w = Math.max(4, getNum(node.width, 0) * sx);
|
|
16166
|
+
const h = Math.max(4, getNum(node.height, 0) * sy);
|
|
16167
|
+
out.push({ left: absLeft, top: absTop, width: w, height: h });
|
|
16168
|
+
}
|
|
16169
|
+
function computeFrostedBoundsForPage(config, pageIndex) {
|
|
16170
|
+
var _a;
|
|
16171
|
+
const page = (_a = config == null ? void 0 : config.pages) == null ? void 0 : _a[pageIndex];
|
|
16172
|
+
const children = (page == null ? void 0 : page.children) || (page == null ? void 0 : page.elements);
|
|
16173
|
+
if (!Array.isArray(children)) return [];
|
|
16174
|
+
const out = [];
|
|
16175
|
+
for (const c of children) collectBlurBounds(c, 0, 0, false, out);
|
|
16176
|
+
return out;
|
|
16177
|
+
}
|
|
16146
16178
|
function PixldocsPreview(props) {
|
|
16179
|
+
var _a, _b;
|
|
16147
16180
|
const {
|
|
16148
16181
|
pageIndex = 0,
|
|
16149
16182
|
zoom = 1,
|
|
@@ -16167,7 +16200,9 @@ function PixldocsPreview(props) {
|
|
|
16167
16200
|
// `captureSvgViaPreviewCanvas`) already pass `skipFontReadyWait: false`
|
|
16168
16201
|
// for this exact reason — that's why the downloaded PDF was correct
|
|
16169
16202
|
// while the on-screen preview wasn't.
|
|
16170
|
-
skipFontReadyWait = false
|
|
16203
|
+
skipFontReadyWait = false,
|
|
16204
|
+
frostedBlur = true,
|
|
16205
|
+
frostedBlurOptions
|
|
16171
16206
|
} = props;
|
|
16172
16207
|
useEffect(() => {
|
|
16173
16208
|
setPackageApiUrl(imageProxyUrl);
|
|
@@ -16204,10 +16239,10 @@ function PixldocsPreview(props) {
|
|
|
16204
16239
|
supabaseUrl: p.supabaseUrl,
|
|
16205
16240
|
supabaseAnonKey: p.supabaseAnonKey
|
|
16206
16241
|
}).then((resolved) => {
|
|
16207
|
-
var
|
|
16242
|
+
var _a2, _b2;
|
|
16208
16243
|
if (!cancelled) {
|
|
16209
16244
|
console.log(PREVIEW_DEBUG_PREFIX, "resolve-done", {
|
|
16210
|
-
pages: ((
|
|
16245
|
+
pages: ((_b2 = (_a2 = resolved.config) == null ? void 0 : _a2.pages) == null ? void 0 : _b2.length) ?? 0,
|
|
16211
16246
|
underlinedNodes: countUnderlinedNodes(resolved.config)
|
|
16212
16247
|
});
|
|
16213
16248
|
setResolvedConfig(resolved.config);
|
|
@@ -16283,6 +16318,16 @@ function PixldocsPreview(props) {
|
|
|
16283
16318
|
setCanvasSettled(true);
|
|
16284
16319
|
onReady == null ? void 0 : onReady();
|
|
16285
16320
|
}, [onReady, pageIndex]);
|
|
16321
|
+
const frostedBounds = useMemo(
|
|
16322
|
+
() => frostedBlur ? computeFrostedBoundsForPage(config, pageIndex) : [],
|
|
16323
|
+
[frostedBlur, config, pageIndex]
|
|
16324
|
+
);
|
|
16325
|
+
const blurPx = (frostedBlurOptions == null ? void 0 : frostedBlurOptions.blurPx) ?? 5;
|
|
16326
|
+
const satPct = (frostedBlurOptions == null ? void 0 : frostedBlurOptions.saturatePct) ?? 130;
|
|
16327
|
+
const bgTint = (frostedBlurOptions == null ? void 0 : frostedBlurOptions.background) ?? "rgba(255,255,255,0.12)";
|
|
16328
|
+
const canvasW = getNum((_a = config == null ? void 0 : config.canvas) == null ? void 0 : _a.width, 0);
|
|
16329
|
+
const canvasH = getNum((_b = config == null ? void 0 : config.canvas) == null ? void 0 : _b.height, 0);
|
|
16330
|
+
const hasOverlays = frostedBounds.length > 0 && canvasW > 0 && canvasH > 0;
|
|
16286
16331
|
if (isLoading) {
|
|
16287
16332
|
return /* @__PURE__ */ jsx("div", { className, style: { ...style, display: "flex", alignItems: "center", justifyContent: "center", minHeight: 200 }, children: /* @__PURE__ */ jsx("div", { style: { color: "#888", fontSize: 14 }, children: "Loading preview..." }) });
|
|
16288
16333
|
}
|
|
@@ -16291,19 +16336,55 @@ function PixldocsPreview(props) {
|
|
|
16291
16336
|
return /* @__PURE__ */ jsx("div", { className, style: { ...style, display: "flex", alignItems: "center", justifyContent: "center", minHeight: 200 }, children: /* @__PURE__ */ jsx("div", { style: { color: "#888", fontSize: 14 }, children: "Loading preview..." }) });
|
|
16292
16337
|
}
|
|
16293
16338
|
return /* @__PURE__ */ jsxs("div", { className, style: { ...style, position: "relative" }, children: [
|
|
16294
|
-
/* @__PURE__ */
|
|
16295
|
-
|
|
16339
|
+
/* @__PURE__ */ jsxs(
|
|
16340
|
+
"div",
|
|
16296
16341
|
{
|
|
16297
|
-
|
|
16298
|
-
|
|
16299
|
-
|
|
16300
|
-
|
|
16301
|
-
|
|
16302
|
-
|
|
16303
|
-
|
|
16304
|
-
|
|
16305
|
-
|
|
16306
|
-
|
|
16342
|
+
style: hasOverlays ? { visibility: canvasSettled ? "visible" : "hidden", position: "relative", width: canvasW * zoom, height: canvasH * zoom } : { visibility: canvasSettled ? "visible" : "hidden" },
|
|
16343
|
+
children: [
|
|
16344
|
+
/* @__PURE__ */ jsx(
|
|
16345
|
+
PreviewCanvas,
|
|
16346
|
+
{
|
|
16347
|
+
config,
|
|
16348
|
+
pageIndex,
|
|
16349
|
+
zoom,
|
|
16350
|
+
absoluteZoom,
|
|
16351
|
+
skipFontReadyWait,
|
|
16352
|
+
onDynamicFieldClick,
|
|
16353
|
+
onReady: handleCanvasReady
|
|
16354
|
+
},
|
|
16355
|
+
previewKey
|
|
16356
|
+
),
|
|
16357
|
+
hasOverlays && /* @__PURE__ */ jsx(
|
|
16358
|
+
"div",
|
|
16359
|
+
{
|
|
16360
|
+
style: {
|
|
16361
|
+
position: "absolute",
|
|
16362
|
+
inset: 0,
|
|
16363
|
+
pointerEvents: "none",
|
|
16364
|
+
zIndex: 5
|
|
16365
|
+
},
|
|
16366
|
+
children: frostedBounds.map((b, i) => /* @__PURE__ */ jsx(
|
|
16367
|
+
"div",
|
|
16368
|
+
{
|
|
16369
|
+
style: {
|
|
16370
|
+
position: "absolute",
|
|
16371
|
+
left: b.left * zoom,
|
|
16372
|
+
top: b.top * zoom,
|
|
16373
|
+
width: b.width * zoom,
|
|
16374
|
+
height: b.height * zoom,
|
|
16375
|
+
borderRadius: 0,
|
|
16376
|
+
backdropFilter: `blur(${blurPx}px) saturate(${satPct}%)`,
|
|
16377
|
+
WebkitBackdropFilter: `blur(${blurPx}px) saturate(${satPct}%)`,
|
|
16378
|
+
background: bgTint
|
|
16379
|
+
}
|
|
16380
|
+
},
|
|
16381
|
+
`frost-${pageIndex}-${i}`
|
|
16382
|
+
))
|
|
16383
|
+
}
|
|
16384
|
+
)
|
|
16385
|
+
]
|
|
16386
|
+
}
|
|
16387
|
+
),
|
|
16307
16388
|
!canvasSettled && /* @__PURE__ */ jsx("div", { style: { position: "absolute", inset: 0, display: "flex", alignItems: "center", justifyContent: "center", minHeight: 200 }, children: /* @__PURE__ */ jsx("div", { style: { color: "#888", fontSize: 14 }, children: "Loading preview..." }) })
|
|
16308
16389
|
] });
|
|
16309
16390
|
}
|
|
@@ -16480,9 +16561,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
|
|
|
16480
16561
|
}
|
|
16481
16562
|
return svgString;
|
|
16482
16563
|
}
|
|
16483
|
-
const resolvedPackageVersion = "0.5.
|
|
16564
|
+
const resolvedPackageVersion = "0.5.184";
|
|
16484
16565
|
const PACKAGE_VERSION = resolvedPackageVersion;
|
|
16485
|
-
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.
|
|
16566
|
+
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.184";
|
|
16486
16567
|
const roundParityValue = (value) => {
|
|
16487
16568
|
if (typeof value !== "number") return value;
|
|
16488
16569
|
return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
|
|
@@ -16781,7 +16862,7 @@ class PixldocsRenderer {
|
|
|
16781
16862
|
if (shouldWatermark) {
|
|
16782
16863
|
const { injectWatermark } = await import("./canvasWatermark-pkhacGge.js");
|
|
16783
16864
|
configToRender = injectWatermark(configToRender, watermarkOptions);
|
|
16784
|
-
const { injectPreviewBlur } = await import("./previewBlur-
|
|
16865
|
+
const { injectPreviewBlur } = await import("./previewBlur-Dwbjk5sM.js");
|
|
16785
16866
|
configToRender = injectPreviewBlur(configToRender);
|
|
16786
16867
|
}
|
|
16787
16868
|
return this.renderAllPages(configToRender, renderOpts);
|
|
@@ -16840,7 +16921,7 @@ class PixldocsRenderer {
|
|
|
16840
16921
|
if (shouldWatermark) {
|
|
16841
16922
|
const { injectWatermark } = await import("./canvasWatermark-pkhacGge.js");
|
|
16842
16923
|
configToRender = injectWatermark(configToRender, watermarkOptions);
|
|
16843
|
-
const { injectPreviewBlur } = await import("./previewBlur-
|
|
16924
|
+
const { injectPreviewBlur } = await import("./previewBlur-Dwbjk5sM.js");
|
|
16844
16925
|
configToRender = injectPreviewBlur(configToRender);
|
|
16845
16926
|
}
|
|
16846
16927
|
return this.renderAllPageSvgs(configToRender);
|
|
@@ -16884,7 +16965,7 @@ class PixldocsRenderer {
|
|
|
16884
16965
|
if (shouldWatermark) {
|
|
16885
16966
|
const { injectWatermark } = await import("./canvasWatermark-pkhacGge.js");
|
|
16886
16967
|
configToRender = injectWatermark(configToRender, watermarkOptions);
|
|
16887
|
-
const { injectPreviewBlur } = await import("./previewBlur-
|
|
16968
|
+
const { injectPreviewBlur } = await import("./previewBlur-Dwbjk5sM.js");
|
|
16888
16969
|
configToRender = injectPreviewBlur(configToRender);
|
|
16889
16970
|
}
|
|
16890
16971
|
return this.renderPdfViaClientExport(configToRender, {
|
|
@@ -16990,7 +17071,7 @@ class PixldocsRenderer {
|
|
|
16990
17071
|
await this.waitForCanvasScene(container, cloned, i);
|
|
16991
17072
|
}
|
|
16992
17073
|
console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
|
|
16993
|
-
const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-
|
|
17074
|
+
const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-CBUTexHq.js");
|
|
16994
17075
|
const prepared = preparePagesForExport(
|
|
16995
17076
|
cloned.pages,
|
|
16996
17077
|
canvasWidth,
|
|
@@ -19135,7 +19216,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
|
|
|
19135
19216
|
if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
|
|
19136
19217
|
sanitizeSvgTreeForPdf(svgToDraw);
|
|
19137
19218
|
try {
|
|
19138
|
-
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await import("./vectorPdfExport-
|
|
19219
|
+
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await import("./vectorPdfExport-CBUTexHq.js");
|
|
19139
19220
|
try {
|
|
19140
19221
|
await logTextMeasurementDiagnostic(svgToDraw);
|
|
19141
19222
|
} catch {
|
|
@@ -19532,4 +19613,4 @@ export {
|
|
|
19532
19613
|
awaitFontsForConfig as y,
|
|
19533
19614
|
collectFontDescriptorsFromConfig as z
|
|
19534
19615
|
};
|
|
19535
|
-
//# sourceMappingURL=index-
|
|
19616
|
+
//# sourceMappingURL=index-D2deevHj.js.map
|