@pixldocs/canvas-renderer 0.5.180 → 0.5.182

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
@@ -344,3 +344,39 @@ const { config } = await resolveTemplateData({
344
344
  ## License
345
345
 
346
346
  UNLICENSED — Private package for Pixldocs ecosystem only.
347
+
348
+ ---
349
+
350
+ ## Preview Blur (anti-screenshot)
351
+
352
+ Set `previewBlur: true` on any text or image element in your config to redact
353
+ it in watermarked previews — useful for protecting paid content (e.g. biodata
354
+ reference rows) from screenshot theft.
355
+
356
+ The element renders normally underneath, and a **translucent frosted-glass
357
+ overlay rectangle** is appended on top at the element's absolute bounds, so
358
+ layout/wrap stays identical but the content is visually obscured. The
359
+ overlay auto-tints (light glass on dark text, dark glass on light text) and
360
+ is rendered with no stroke, no shadow, and square corners so it sits flush
361
+ against neighboring content. In the live web preview the overlay is upgraded
362
+ to a CSS `backdrop-filter: blur()` rectangle for a real frosted-glass effect;
363
+ exported PNG/PDF use the translucent rect (the closest pure-vector
364
+ approximation).
365
+
366
+ Preview-blur is gated identically to the watermark: it only runs when
367
+ `watermark === true` (or, by default, when `template.price > 0` and the user
368
+ hasn't paid). Clean / paid downloads always render the original content.
369
+
370
+ ```ts
371
+ // In your template config
372
+ {
373
+ id: 'reference-1-name',
374
+ type: 'text',
375
+ text: 'John Doe',
376
+ previewBlur: true, // ← redacted in preview, full in paid download
377
+ ...
378
+ }
379
+ ```
380
+
381
+ No API change is required on the consumer side — the same `renderFromForm`,
382
+ `renderPdfFromForm`, etc. respect the flag automatically.
@@ -16498,9 +16498,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
16498
16498
  }
16499
16499
  return svgString;
16500
16500
  }
16501
- const resolvedPackageVersion = "0.5.180";
16501
+ const resolvedPackageVersion = "0.5.182";
16502
16502
  const PACKAGE_VERSION = resolvedPackageVersion;
16503
- const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.180";
16503
+ const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.182";
16504
16504
  const roundParityValue = (value) => {
16505
16505
  if (typeof value !== "number") return value;
16506
16506
  return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
@@ -16799,6 +16799,8 @@ class PixldocsRenderer {
16799
16799
  if (shouldWatermark) {
16800
16800
  const { injectWatermark } = await Promise.resolve().then(() => require("./canvasWatermark-B0ab38Ok.cjs"));
16801
16801
  configToRender = injectWatermark(configToRender, watermarkOptions);
16802
+ const { injectPreviewBlur } = await Promise.resolve().then(() => require("./previewBlur-D1laq3kn.cjs"));
16803
+ configToRender = injectPreviewBlur(configToRender);
16802
16804
  }
16803
16805
  return this.renderAllPages(configToRender, renderOpts);
16804
16806
  }
@@ -16856,6 +16858,8 @@ class PixldocsRenderer {
16856
16858
  if (shouldWatermark) {
16857
16859
  const { injectWatermark } = await Promise.resolve().then(() => require("./canvasWatermark-B0ab38Ok.cjs"));
16858
16860
  configToRender = injectWatermark(configToRender, watermarkOptions);
16861
+ const { injectPreviewBlur } = await Promise.resolve().then(() => require("./previewBlur-D1laq3kn.cjs"));
16862
+ configToRender = injectPreviewBlur(configToRender);
16859
16863
  }
16860
16864
  return this.renderAllPageSvgs(configToRender);
16861
16865
  }
@@ -16898,6 +16902,8 @@ class PixldocsRenderer {
16898
16902
  if (shouldWatermark) {
16899
16903
  const { injectWatermark } = await Promise.resolve().then(() => require("./canvasWatermark-B0ab38Ok.cjs"));
16900
16904
  configToRender = injectWatermark(configToRender, watermarkOptions);
16905
+ const { injectPreviewBlur } = await Promise.resolve().then(() => require("./previewBlur-D1laq3kn.cjs"));
16906
+ configToRender = injectPreviewBlur(configToRender);
16901
16907
  }
16902
16908
  return this.renderPdfViaClientExport(configToRender, {
16903
16909
  title: title ?? resolved.config.name,
@@ -17002,7 +17008,7 @@ class PixldocsRenderer {
17002
17008
  await this.waitForCanvasScene(container, cloned, i);
17003
17009
  }
17004
17010
  console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
17005
- const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-B8qiTpn8.cjs"));
17011
+ const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-0dwbE8Kn.cjs"));
17006
17012
  const prepared = preparePagesForExport(
17007
17013
  cloned.pages,
17008
17014
  canvasWidth,
@@ -19147,7 +19153,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
19147
19153
  if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
19148
19154
  sanitizeSvgTreeForPdf(svgToDraw);
19149
19155
  try {
19150
- const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-B8qiTpn8.cjs"));
19156
+ const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-0dwbE8Kn.cjs"));
19151
19157
  try {
19152
19158
  await logTextMeasurementDiagnostic(svgToDraw);
19153
19159
  } catch {
@@ -19497,6 +19503,7 @@ exports.applyThemeToConfig = applyThemeToConfig;
19497
19503
  exports.assemblePdfFromSvgs = assemblePdfFromSvgs;
19498
19504
  exports.awaitFontsForConfig = awaitFontsForConfig;
19499
19505
  exports.bakeEdgeFade = bakeEdgeFade;
19506
+ exports.baseId = baseId;
19500
19507
  exports.buildRoundedTrianglePath = buildRoundedTrianglePath;
19501
19508
  exports.canvasImageLoader = canvasImageLoader;
19502
19509
  exports.captureFabricCanvasSvgForPdf = captureFabricCanvasSvgForPdf;
@@ -19540,4 +19547,4 @@ exports.setAutoShrinkDebug = setAutoShrinkDebug;
19540
19547
  exports.setBundledAssetPrefixes = setBundledAssetPrefixes;
19541
19548
  exports.warmResolvedTemplateForPreview = warmResolvedTemplateForPreview;
19542
19549
  exports.warmTemplateFromForm = warmTemplateFromForm;
19543
- //# sourceMappingURL=index-B9NOXCTL.cjs.map
19550
+ //# sourceMappingURL=index-CUINpGhe.cjs.map