@pixldocs/canvas-renderer 0.5.185 → 0.5.187

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.
@@ -16133,6 +16133,44 @@ async function getTemplateForm(options) {
16133
16133
  initialSectionState
16134
16134
  };
16135
16135
  }
16136
+ function stripFieldPrefix(s) {
16137
+ return s.startsWith("field_") ? s.slice("field_".length) : s;
16138
+ }
16139
+ function addAll(val, out) {
16140
+ if (!val) return false;
16141
+ if (Array.isArray(val)) {
16142
+ for (const v of val) out.add(v);
16143
+ return val.length > 0;
16144
+ }
16145
+ out.add(val);
16146
+ return true;
16147
+ }
16148
+ function resolveBlurElementExactIdsFromFlatFormKeys(config, flatFormKeys, options) {
16149
+ const cloneIdMap = (config == null ? void 0 : config.__cloneIdMap) || {};
16150
+ if (!cloneIdMap || typeof cloneIdMap !== "object") return [];
16151
+ const bindings = (options == null ? void 0 : options.bindings) ?? "value";
16152
+ const out = /* @__PURE__ */ new Set();
16153
+ for (const rawId of flatFormKeys) {
16154
+ if (typeof rawId !== "string" || !rawId) continue;
16155
+ if (bindings === "value" && !rawId.endsWith("_value")) continue;
16156
+ const candidates = [rawId];
16157
+ if (rawId.startsWith("field_")) {
16158
+ const topStripped = stripFieldPrefix(rawId);
16159
+ candidates.push(topStripped);
16160
+ const nestedIdx = topStripped.indexOf("_field_");
16161
+ if (nestedIdx >= 0) {
16162
+ const nestedStripped = topStripped.slice(0, nestedIdx + 1) + topStripped.slice(nestedIdx + 1 + "field_".length);
16163
+ candidates.push(nestedStripped);
16164
+ }
16165
+ }
16166
+ for (const k of candidates) {
16167
+ if (k in cloneIdMap) {
16168
+ if (addAll(cloneIdMap[k], out)) break;
16169
+ }
16170
+ }
16171
+ }
16172
+ return Array.from(out);
16173
+ }
16136
16174
  const PREVIEW_DEBUG_PREFIX = "[canvas-renderer][preview-debug]";
16137
16175
  function computeFontSignature(config) {
16138
16176
  var _a;
@@ -16165,15 +16203,18 @@ function countUnderlinedNodes(config) {
16165
16203
  function getNum(v, fallback = 0) {
16166
16204
  return typeof v === "number" && Number.isFinite(v) ? v : fallback;
16167
16205
  }
16168
- function collectBlurBounds(node, parentLeft, parentTop, inheritedBlur, out) {
16206
+ function collectBlurBounds(node, parentLeft, parentTop, inheritedBlur, extraBaseIds, extraExactIds, out) {
16169
16207
  if (!node || typeof node !== "object") return;
16170
- const isBlurred = inheritedBlur || node.previewBlur === true;
16208
+ const matchesBase = !!(extraBaseIds && typeof node.id === "string" && extraBaseIds.has(baseId(node.id)));
16209
+ const matchesExact = !!(extraExactIds && typeof node.id === "string" && extraExactIds.has(node.id));
16210
+ const isBlurred = inheritedBlur || node.previewBlur === true || matchesBase || matchesExact;
16171
16211
  const absLeft = parentLeft + getNum(node.left, 0);
16172
16212
  const absTop = parentTop + getNum(node.top, 0);
16173
16213
  if (node.type === "group") {
16174
16214
  const children = node.children || node.elements;
16175
16215
  if (Array.isArray(children)) {
16176
- for (const c of children) collectBlurBounds(c, absLeft, absTop, isBlurred, out);
16216
+ for (const c of children)
16217
+ collectBlurBounds(c, absLeft, absTop, isBlurred, extraBaseIds, extraExactIds, out);
16177
16218
  }
16178
16219
  return;
16179
16220
  }
@@ -16184,13 +16225,14 @@ function collectBlurBounds(node, parentLeft, parentTop, inheritedBlur, out) {
16184
16225
  const h = Math.max(4, getNum(node.height, 0) * sy);
16185
16226
  out.push({ left: absLeft, top: absTop, width: w, height: h });
16186
16227
  }
16187
- function computeFrostedBoundsForPage(config, pageIndex) {
16228
+ function computeFrostedBoundsForPage(config, pageIndex, extraBaseIds, extraExactIds) {
16188
16229
  var _a;
16189
16230
  const page = (_a = config == null ? void 0 : config.pages) == null ? void 0 : _a[pageIndex];
16190
16231
  const children = (page == null ? void 0 : page.children) || (page == null ? void 0 : page.elements);
16191
16232
  if (!Array.isArray(children)) return [];
16192
16233
  const out = [];
16193
- for (const c of children) collectBlurBounds(c, 0, 0, false, out);
16234
+ for (const c of children)
16235
+ collectBlurBounds(c, 0, 0, false, extraBaseIds, extraExactIds, out);
16194
16236
  return out;
16195
16237
  }
16196
16238
  function PixldocsPreview(props) {
@@ -16220,7 +16262,11 @@ function PixldocsPreview(props) {
16220
16262
  // while the on-screen preview wasn't.
16221
16263
  skipFontReadyWait = false,
16222
16264
  frostedBlur = true,
16223
- frostedBlurOptions
16265
+ frostedBlurOptions,
16266
+ blurFieldIds,
16267
+ blurElementExactIds,
16268
+ blurFlatFormKeys,
16269
+ blurFlatFormKeyOptions
16224
16270
  } = props;
16225
16271
  react.useEffect(() => {
16226
16272
  setPackageApiUrl(imageProxyUrl);
@@ -16336,9 +16382,35 @@ function PixldocsPreview(props) {
16336
16382
  setCanvasSettled(true);
16337
16383
  onReady == null ? void 0 : onReady();
16338
16384
  }, [onReady, pageIndex]);
16385
+ const blurBaseSet = react.useMemo(
16386
+ () => blurFieldIds && blurFieldIds.length ? new Set(blurFieldIds) : void 0,
16387
+ [blurFieldIds ? blurFieldIds.join("|") : ""]
16388
+ );
16389
+ const blurExactSet = react.useMemo(
16390
+ () => {
16391
+ const merged = /* @__PURE__ */ new Set();
16392
+ if (blurElementExactIds) for (const id of blurElementExactIds) merged.add(id);
16393
+ if (config && blurFlatFormKeys && blurFlatFormKeys.length) {
16394
+ for (const id of resolveBlurElementExactIdsFromFlatFormKeys(
16395
+ config,
16396
+ blurFlatFormKeys,
16397
+ blurFlatFormKeyOptions
16398
+ )) {
16399
+ merged.add(id);
16400
+ }
16401
+ }
16402
+ return merged.size > 0 ? merged : void 0;
16403
+ },
16404
+ [
16405
+ blurElementExactIds ? blurElementExactIds.join("|") : "",
16406
+ blurFlatFormKeys ? blurFlatFormKeys.join("|") : "",
16407
+ blurFlatFormKeyOptions == null ? void 0 : blurFlatFormKeyOptions.bindings,
16408
+ config
16409
+ ]
16410
+ );
16339
16411
  const frostedBounds = react.useMemo(
16340
- () => frostedBlur ? computeFrostedBoundsForPage(config, pageIndex) : [],
16341
- [frostedBlur, config, pageIndex]
16412
+ () => frostedBlur ? computeFrostedBoundsForPage(config, pageIndex, blurBaseSet, blurExactSet) : [],
16413
+ [frostedBlur, config, pageIndex, blurBaseSet, blurExactSet]
16342
16414
  );
16343
16415
  const blurPx = (frostedBlurOptions == null ? void 0 : frostedBlurOptions.blurPx) ?? 5;
16344
16416
  const satPct = (frostedBlurOptions == null ? void 0 : frostedBlurOptions.saturatePct) ?? 130;
@@ -16579,9 +16651,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
16579
16651
  }
16580
16652
  return svgString;
16581
16653
  }
16582
- const resolvedPackageVersion = "0.5.185";
16654
+ const resolvedPackageVersion = "0.5.187";
16583
16655
  const PACKAGE_VERSION = resolvedPackageVersion;
16584
- const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.185";
16656
+ const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.187";
16585
16657
  const roundParityValue = (value) => {
16586
16658
  if (typeof value !== "number") return value;
16587
16659
  return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
@@ -16880,8 +16952,8 @@ class PixldocsRenderer {
16880
16952
  if (shouldWatermark) {
16881
16953
  const { injectWatermark } = await Promise.resolve().then(() => require("./canvasWatermark-B0ab38Ok.cjs"));
16882
16954
  configToRender = injectWatermark(configToRender, watermarkOptions);
16883
- const { injectPreviewBlur } = await Promise.resolve().then(() => require("./previewBlur-CORNmaPO.cjs"));
16884
- configToRender = injectPreviewBlur(configToRender);
16955
+ const { injectPreviewBlur: injectPreviewBlur2 } = await Promise.resolve().then(() => previewBlur);
16956
+ configToRender = injectPreviewBlur2(configToRender);
16885
16957
  }
16886
16958
  return this.renderAllPages(configToRender, renderOpts);
16887
16959
  }
@@ -16939,8 +17011,8 @@ class PixldocsRenderer {
16939
17011
  if (shouldWatermark) {
16940
17012
  const { injectWatermark } = await Promise.resolve().then(() => require("./canvasWatermark-B0ab38Ok.cjs"));
16941
17013
  configToRender = injectWatermark(configToRender, watermarkOptions);
16942
- const { injectPreviewBlur } = await Promise.resolve().then(() => require("./previewBlur-CORNmaPO.cjs"));
16943
- configToRender = injectPreviewBlur(configToRender);
17014
+ const { injectPreviewBlur: injectPreviewBlur2 } = await Promise.resolve().then(() => previewBlur);
17015
+ configToRender = injectPreviewBlur2(configToRender);
16944
17016
  }
16945
17017
  return this.renderAllPageSvgs(configToRender);
16946
17018
  }
@@ -16983,8 +17055,8 @@ class PixldocsRenderer {
16983
17055
  if (shouldWatermark) {
16984
17056
  const { injectWatermark } = await Promise.resolve().then(() => require("./canvasWatermark-B0ab38Ok.cjs"));
16985
17057
  configToRender = injectWatermark(configToRender, watermarkOptions);
16986
- const { injectPreviewBlur } = await Promise.resolve().then(() => require("./previewBlur-CORNmaPO.cjs"));
16987
- configToRender = injectPreviewBlur(configToRender);
17058
+ const { injectPreviewBlur: injectPreviewBlur2 } = await Promise.resolve().then(() => previewBlur);
17059
+ configToRender = injectPreviewBlur2(configToRender);
16988
17060
  }
16989
17061
  return this.renderPdfViaClientExport(configToRender, {
16990
17062
  title: title ?? resolved.config.name,
@@ -17089,7 +17161,7 @@ class PixldocsRenderer {
17089
17161
  await this.waitForCanvasScene(container, cloned, i);
17090
17162
  }
17091
17163
  console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
17092
- const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-CHO9VGGL.cjs"));
17164
+ const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-BknzMTNP.cjs"));
17093
17165
  const prepared = preparePagesForExport(
17094
17166
  cloned.pages,
17095
17167
  canvasWidth,
@@ -17931,7 +18003,7 @@ function collectFontSpecsFromMarkup(markup) {
17931
18003
  }
17932
18004
  return Array.from(specs);
17933
18005
  }
17934
- function parseColor(color) {
18006
+ function parseColor$1(color) {
17935
18007
  if (!color) return null;
17936
18008
  const raw = color.trim().toLowerCase();
17937
18009
  if (!raw || raw === "transparent" || raw === "none") return null;
@@ -18484,7 +18556,7 @@ function stripSuspiciousFullPageOverlayNodes(svg) {
18484
18556
  if (!(pageWidth > 0 && pageHeight > 0)) return;
18485
18557
  const isNear = (a, b, tolerance = 0.75) => Math.abs(a - b) <= tolerance;
18486
18558
  const isDarkPaint = (value) => {
18487
- const rgb = value ? parseColor(value) : null;
18559
+ const rgb = value ? parseColor$1(value) : null;
18488
18560
  return rgb ? rgb.r <= 32 && rgb.g <= 32 && rgb.b <= 32 : false;
18489
18561
  };
18490
18562
  const removeIfSuspicious = (el) => {
@@ -18597,13 +18669,13 @@ function inlineComputedStyles(svg) {
18597
18669
  const fill = cs.fill;
18598
18670
  const stroke = cs.stroke;
18599
18671
  if (fill && fill !== "none" && fill !== "rgba(0, 0, 0, 0)") {
18600
- const parsed = parseColor(fill);
18672
+ const parsed = parseColor$1(fill);
18601
18673
  if (parsed) el.setAttribute("fill", rgbToHex(parsed.r, parsed.g, parsed.b));
18602
18674
  } else if (fill === "rgba(0, 0, 0, 0)" || fill === "transparent") {
18603
18675
  el.setAttribute("fill", "none");
18604
18676
  }
18605
18677
  if (stroke && stroke !== "none" && stroke !== "rgba(0, 0, 0, 0)") {
18606
- const parsed = parseColor(stroke);
18678
+ const parsed = parseColor$1(stroke);
18607
18679
  if (parsed) el.setAttribute("stroke", rgbToHex(parsed.r, parsed.g, parsed.b));
18608
18680
  }
18609
18681
  }
@@ -18751,7 +18823,7 @@ function setPdfColorFromSvg(pdf, svg, _elementId) {
18751
18823
  const { fill, stroke } = getFirstExplicitColorFromSvg(svg);
18752
18824
  const setColor = (hex, setter) => {
18753
18825
  if (!hex) return;
18754
- const c = parseColor(hex);
18826
+ const c = parseColor$1(hex);
18755
18827
  if (c) pdf[setter](c.r, c.g, c.b);
18756
18828
  };
18757
18829
  setColor(fill, "setFillColor");
@@ -19234,7 +19306,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
19234
19306
  if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
19235
19307
  sanitizeSvgTreeForPdf(svgToDraw);
19236
19308
  try {
19237
- const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-CHO9VGGL.cjs"));
19309
+ const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-BknzMTNP.cjs"));
19238
19310
  try {
19239
19311
  await logTextMeasurementDiagnostic(svgToDraw);
19240
19312
  } catch {
@@ -19254,7 +19326,7 @@ function drawPageBackground(pdf, pageIndex, pageWidth, pageHeight, backgroundCol
19254
19326
  if (backgroundGradient && ((_a = backgroundGradient.stops) == null ? void 0 : _a.length) >= 2) {
19255
19327
  const grad = backgroundGradient;
19256
19328
  const colorStops = grad.stops.map((s) => {
19257
- const c = parseColor(s.color);
19329
+ const c = parseColor$1(s.color);
19258
19330
  return {
19259
19331
  offset: Math.max(0, Math.min(1, Number(s.offset))),
19260
19332
  color: c ? [c.r, c.g, c.b] : [0, 0, 0]
@@ -19310,7 +19382,7 @@ function drawPageBackground(pdf, pageIndex, pageWidth, pageHeight, backgroundCol
19310
19382
  pdf.rect(0, 0, pageWidth, pageHeight, "F");
19311
19383
  }
19312
19384
  } else {
19313
- const bgColor = parseColor(backgroundColor && backgroundColor !== "transparent" ? backgroundColor : "#ffffff");
19385
+ const bgColor = parseColor$1(backgroundColor && backgroundColor !== "transparent" ? backgroundColor : "#ffffff");
19314
19386
  if (bgColor) {
19315
19387
  pdf.setFillColor(bgColor.r, bgColor.g, bgColor.b);
19316
19388
  pdf.rect(0, 0, pageWidth, pageHeight, "F");
@@ -19433,6 +19505,123 @@ async function assemblePdfFromSvgs(svgResults, options = {}) {
19433
19505
  pages: svgResults.map((p) => ({ width: p.width, height: p.height }))
19434
19506
  };
19435
19507
  }
19508
+ const OVERLAY_ID_PREFIX = "__pb_";
19509
+ function getNumber(v, fallback = 0) {
19510
+ return typeof v === "number" && Number.isFinite(v) ? v : fallback;
19511
+ }
19512
+ function resolveSize(node, key) {
19513
+ const v = node == null ? void 0 : node[key];
19514
+ if (typeof v === "number" && Number.isFinite(v)) return v;
19515
+ return 0;
19516
+ }
19517
+ function collectOverlays(node, parentLeft, parentTop, inheritedBlur, extraBaseIds, extraExactIds, out) {
19518
+ if (!node || typeof node !== "object") return;
19519
+ const matchesBase = !!(extraBaseIds && typeof node.id === "string" && extraBaseIds.has(baseId(node.id)));
19520
+ const matchesExact = !!(extraExactIds && typeof node.id === "string" && extraExactIds.has(node.id));
19521
+ const isBlurred = inheritedBlur || node.previewBlur === true || matchesBase || matchesExact;
19522
+ const absLeft = parentLeft + getNumber(node.left, 0);
19523
+ const absTop = parentTop + getNumber(node.top, 0);
19524
+ if (node.type === "group") {
19525
+ const children = node.children || node.elements;
19526
+ if (Array.isArray(children)) {
19527
+ for (const child of children) {
19528
+ collectOverlays(child, absLeft, absTop, isBlurred, extraBaseIds, extraExactIds, out);
19529
+ }
19530
+ }
19531
+ return;
19532
+ }
19533
+ if (!isBlurred) return;
19534
+ const scaleX = getNumber(node.scaleX, 1) || 1;
19535
+ const scaleY = getNumber(node.scaleY, 1) || 1;
19536
+ const w = Math.max(4, resolveSize(node, "width") * scaleX);
19537
+ const h = Math.max(4, resolveSize(node, "height") * scaleY);
19538
+ out.push({
19539
+ left: absLeft,
19540
+ top: absTop,
19541
+ width: w,
19542
+ height: h,
19543
+ hintFill: typeof node.fill === "string" ? node.fill : void 0
19544
+ });
19545
+ }
19546
+ function parseColor(c) {
19547
+ if (!c) return null;
19548
+ const s = c.trim();
19549
+ const hex = s.match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/i);
19550
+ if (hex) {
19551
+ let h = hex[1];
19552
+ if (h.length === 3) h = h.split("").map((x) => x + x).join("");
19553
+ return {
19554
+ r: parseInt(h.slice(0, 2), 16),
19555
+ g: parseInt(h.slice(2, 4), 16),
19556
+ b: parseInt(h.slice(4, 6), 16)
19557
+ };
19558
+ }
19559
+ const rgb = s.match(/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/i);
19560
+ if (rgb) return { r: +rgb[1], g: +rgb[2], b: +rgb[3] };
19561
+ return null;
19562
+ }
19563
+ function buildOverlay(b, idx) {
19564
+ const c = parseColor(b.hintFill);
19565
+ const lum = c ? (0.299 * c.r + 0.587 * c.g + 0.114 * c.b) / 255 : 0.2;
19566
+ const isLightGlass = lum < 0.5;
19567
+ const baseFill = isLightGlass ? "rgba(245,245,245,0.68)" : "rgba(30,30,30,0.62)";
19568
+ return {
19569
+ id: `${OVERLAY_ID_PREFIX}${idx}`,
19570
+ type: "shape",
19571
+ shapeType: "rounded-rect",
19572
+ left: b.left,
19573
+ top: b.top,
19574
+ width: b.width,
19575
+ height: b.height,
19576
+ cornerRadius: 0,
19577
+ fill: baseFill,
19578
+ stroke: "transparent",
19579
+ strokeWidth: 0,
19580
+ opacity: 1,
19581
+ selectable: false,
19582
+ locked: true,
19583
+ visible: true,
19584
+ scaleX: 1,
19585
+ scaleY: 1
19586
+ };
19587
+ }
19588
+ function injectPreviewBlur(config, options) {
19589
+ const cloned = typeof structuredClone === "function" ? structuredClone(config) : JSON.parse(JSON.stringify(config));
19590
+ const extraBase = (options == null ? void 0 : options.extraElementBaseIds) && options.extraElementBaseIds.size > 0 ? options.extraElementBaseIds : void 0;
19591
+ const extraExact = (options == null ? void 0 : options.extraElementExactIds) && options.extraElementExactIds.size > 0 ? options.extraElementExactIds : void 0;
19592
+ let idx = 0;
19593
+ for (const page of cloned.pages || []) {
19594
+ const children = page.children || page.elements;
19595
+ if (!Array.isArray(children)) continue;
19596
+ const overlays = [];
19597
+ for (const child of children) {
19598
+ collectOverlays(child, 0, 0, false, extraBase, extraExact, overlays);
19599
+ }
19600
+ if (overlays.length === 0) continue;
19601
+ for (const b of overlays) {
19602
+ children.push(buildOverlay(b, idx++));
19603
+ }
19604
+ }
19605
+ return cloned;
19606
+ }
19607
+ function hasAnyPreviewBlur(config) {
19608
+ function walk(node) {
19609
+ if (!node || typeof node !== "object") return false;
19610
+ if (node.previewBlur === true) return true;
19611
+ const children = node.children || node.elements;
19612
+ if (Array.isArray(children)) {
19613
+ for (const c of children) if (walk(c)) return true;
19614
+ }
19615
+ return false;
19616
+ }
19617
+ for (const page of config.pages || []) if (walk(page)) return true;
19618
+ return false;
19619
+ }
19620
+ const previewBlur = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
19621
+ __proto__: null,
19622
+ hasAnyPreviewBlur,
19623
+ injectPreviewBlur
19624
+ }, Symbol.toStringTag, { value: "Module" }));
19436
19625
  const SELECT_COLUMNS = "id,name,description,category,thumbnail_url,preview_images,price,download_count,workspace_id,sort_order,created_at,updated_at";
19437
19626
  async function listPublishedTemplates(options) {
19438
19627
  const { workspaceId, supabaseUrl, supabaseAnonKey, category, limit = 200, offset = 0 } = options;
@@ -19584,7 +19773,6 @@ exports.applyThemeToConfig = applyThemeToConfig;
19584
19773
  exports.assemblePdfFromSvgs = assemblePdfFromSvgs;
19585
19774
  exports.awaitFontsForConfig = awaitFontsForConfig;
19586
19775
  exports.bakeEdgeFade = bakeEdgeFade;
19587
- exports.baseId = baseId;
19588
19776
  exports.buildRoundedTrianglePath = buildRoundedTrianglePath;
19589
19777
  exports.canvasImageLoader = canvasImageLoader;
19590
19778
  exports.captureFabricCanvasSvgForPdf = captureFabricCanvasSvgForPdf;
@@ -19608,7 +19796,9 @@ exports.getPublishedTemplate = getPublishedTemplate;
19608
19796
  exports.getRoundedRectRadii = getRoundedRectRadii;
19609
19797
  exports.getTemplateForm = getTemplateForm;
19610
19798
  exports.getTrianglePoints = getTrianglePoints;
19799
+ exports.hasAnyPreviewBlur = hasAnyPreviewBlur;
19611
19800
  exports.hasEdgeFade = hasEdgeFade;
19801
+ exports.injectPreviewBlur = injectPreviewBlur;
19612
19802
  exports.isBundledAssetUrl = isBundledAssetUrl;
19613
19803
  exports.isElement = isElement;
19614
19804
  exports.isFontAvailable = isFontAvailable;
@@ -19620,6 +19810,7 @@ exports.normalizeFontFamily = normalizeFontFamily;
19620
19810
  exports.normalizeShapeType = normalizeShapeType;
19621
19811
  exports.parseTextMarkdown = parseTextMarkdown;
19622
19812
  exports.renderSmartElementToSvg = renderSmartElementToSvg;
19813
+ exports.resolveBlurElementExactIdsFromFlatFormKeys = resolveBlurElementExactIdsFromFlatFormKeys;
19623
19814
  exports.resolveFontWeight = resolveFontWeight;
19624
19815
  exports.resolveFromForm = resolveFromForm;
19625
19816
  exports.resolveTemplateData = resolveTemplateData;
@@ -19628,4 +19819,4 @@ exports.setAutoShrinkDebug = setAutoShrinkDebug;
19628
19819
  exports.setBundledAssetPrefixes = setBundledAssetPrefixes;
19629
19820
  exports.warmResolvedTemplateForPreview = warmResolvedTemplateForPreview;
19630
19821
  exports.warmTemplateFromForm = warmTemplateFromForm;
19631
- //# sourceMappingURL=index-bI33y64A.cjs.map
19822
+ //# sourceMappingURL=index-DgMi1JSR.cjs.map