@pixldocs/canvas-renderer 0.5.277 → 0.5.279

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.
@@ -13921,14 +13921,24 @@ const PageCanvas = react.forwardRef(
13921
13921
  }
13922
13922
  });
13923
13923
  let cropGroupSaveTimer = null;
13924
+ let objectModifiedInFlight = false;
13924
13925
  fabricCanvas.on("object:modified", (e) => {
13925
- var _a2, _b2, _c, _d, _e, _f, _g, _h, _i;
13926
+ var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k;
13927
+ if (objectModifiedInFlight) {
13928
+ if (shouldLogGroupMove()) {
13929
+ console.log("[GRP-MOVE] object:modified re-entry skipped", {
13930
+ targetType: (_b2 = (_a2 = e.target) == null ? void 0 : _a2.constructor) == null ? void 0 : _b2.name
13931
+ });
13932
+ }
13933
+ return;
13934
+ }
13935
+ objectModifiedInFlight = true;
13926
13936
  try {
13927
13937
  dragStarted = false;
13928
13938
  if (shouldLogGroupMove()) {
13929
13939
  const t = e.target;
13930
13940
  console.log("[GRP-MOVE] object:modified fired", {
13931
- targetType: (_a2 = t == null ? void 0 : t.constructor) == null ? void 0 : _a2.name,
13941
+ targetType: (_c = t == null ? void 0 : t.constructor) == null ? void 0 : _c.name,
13932
13942
  isActiveSelection: t instanceof fabric__namespace.ActiveSelection,
13933
13943
  groupSelectionId: t ? t.__pixldocsGroupSelection : null,
13934
13944
  memberIds: t instanceof fabric__namespace.ActiveSelection ? t.getObjects().map((o) => getObjectId(o)) : [getObjectId(t)],
@@ -13980,7 +13990,7 @@ const PageCanvas = react.forwardRef(
13980
13990
  const active = fabricCanvas.getActiveObject();
13981
13991
  const activeId = active ? getObjectId(active) : null;
13982
13992
  if (active && activeId && activeId !== "__background__" && !(active instanceof fabric__namespace.Group)) {
13983
- const pageChildrenForParent = ((_b2 = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _b2.children) ?? [];
13993
+ const pageChildrenForParent = ((_d = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _d.children) ?? [];
13984
13994
  const parentGroup = findParentGroup(pageChildrenForParent, activeId);
13985
13995
  if (parentGroup && isGroup(parentGroup) && parentGroup.backgroundColor) {
13986
13996
  let fabricSectionGroup = active.group && active.group instanceof fabric__namespace.Group ? active.group : null;
@@ -14062,7 +14072,7 @@ const PageCanvas = react.forwardRef(
14062
14072
  useEditorStore.getState().reflowStackGroupInPage(pageId, groupId);
14063
14073
  }
14064
14074
  const stateAfter = useEditorStore.getState();
14065
- const pageAfter = ((_c = stateAfter.canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _c.children) ?? [];
14075
+ const pageAfter = ((_e = stateAfter.canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _e.children) ?? [];
14066
14076
  const groupNodeAfter = findNodeById(pageAfter, groupId);
14067
14077
  if (groupNodeAfter) {
14068
14078
  const abs = getAbsoluteBounds(groupNodeAfter, pageAfter);
@@ -14124,7 +14134,7 @@ const PageCanvas = react.forwardRef(
14124
14134
  }
14125
14135
  if (active && active instanceof fabric__namespace.Group && active.__docuforgeSectionGroup && getObjectId(active)) {
14126
14136
  const groupId = getObjectId(active);
14127
- const pageChildrenSec = ((_d = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _d.children) ?? [];
14137
+ const pageChildrenSec = ((_f = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _f.children) ?? [];
14128
14138
  const modifiedTarget2 = e == null ? void 0 : e.target;
14129
14139
  const resizeScaleTarget = lastResizeScaleTargetRef.current;
14130
14140
  lastResizeScaleTargetRef.current = null;
@@ -14155,7 +14165,7 @@ const PageCanvas = react.forwardRef(
14155
14165
  const node = findNodeById(pageChildrenSec, groupId);
14156
14166
  if (isChildModified && node && !groupMoved) {
14157
14167
  const stateAfter = useEditorStore.getState();
14158
- const pageAfter = ((_e = stateAfter.canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _e.children) ?? [];
14168
+ const pageAfter = ((_g = stateAfter.canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _g.children) ?? [];
14159
14169
  const groupNodeAfter = findNodeById(pageAfter, groupId);
14160
14170
  if (groupNodeAfter) {
14161
14171
  const abs = getAbsoluteBounds(groupNodeAfter, pageAfter);
@@ -14171,7 +14181,7 @@ const PageCanvas = react.forwardRef(
14171
14181
  }
14172
14182
  if (active && active instanceof fabric__namespace.Group && !(active instanceof fabric__namespace.ActiveSelection) && getObjectId(active)) {
14173
14183
  const groupId = getObjectId(active);
14174
- const pageChildren3 = ((_f = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _f.children) ?? [];
14184
+ const pageChildren3 = ((_h = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _h.children) ?? [];
14175
14185
  const w = (active.width ?? 0) * (active.scaleX ?? 1);
14176
14186
  const h = (active.height ?? 0) * (active.scaleY ?? 1);
14177
14187
  const centerX = active.left ?? 0;
@@ -14193,7 +14203,7 @@ const PageCanvas = react.forwardRef(
14193
14203
  }
14194
14204
  const activeObj = fabricCanvas.getActiveObject();
14195
14205
  let activeObjects = fabricCanvas.getActiveObjects();
14196
- const activeSelectionMoveStart = activeObj instanceof fabric__namespace.ActiveSelection && ((_g = activeSelectionMoveStartRef.current) == null ? void 0 : _g.selection) === activeObj ? activeSelectionMoveStartRef.current : null;
14206
+ const activeSelectionMoveStart = activeObj instanceof fabric__namespace.ActiveSelection && ((_i = activeSelectionMoveStartRef.current) == null ? void 0 : _i.selection) === activeObj ? activeSelectionMoveStartRef.current : null;
14197
14207
  const activeSelectionDelta = activeObj instanceof fabric__namespace.ActiveSelection && activeSelectionMoveStart ? (() => {
14198
14208
  const rect = activeObj.getBoundingRect();
14199
14209
  return {
@@ -14393,7 +14403,7 @@ const PageCanvas = react.forwardRef(
14393
14403
  }
14394
14404
  } catch {
14395
14405
  }
14396
- const pageAfterMove = ((_h = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _h.children) ?? [];
14406
+ const pageAfterMove = ((_j = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _j.children) ?? [];
14397
14407
  const groupAfterMove = findNodeById(pageAfterMove, groupToMove.id);
14398
14408
  const memberIdsAfterMove = groupAfterMove && isGroup(groupAfterMove) ? getAllElementIds(groupAfterMove.children ?? []) : targetObjects.map((obj) => getObjectId(obj)).filter((id) => !!id && id !== "__background__");
14399
14409
  preservedGroupMemberIds = memberIdsAfterMove;
@@ -14406,10 +14416,15 @@ const PageCanvas = react.forwardRef(
14406
14416
  const bounds = getNodeBounds(node, pageAfterMove, pageBoundsOptions);
14407
14417
  const __prevLeft = obj.left;
14408
14418
  const __prevTop = obj.top;
14409
- if (obj instanceof fabric__namespace.Group && obj.__cropGroup || obj instanceof fabric__namespace.FabricImage && (obj.originX === "center" || obj.originY === "center")) {
14410
- obj.set({ left: abs.left + Math.max(1, bounds.width) / 2, top: abs.top + Math.max(1, bounds.height) / 2 });
14419
+ const useCenterAnchor = obj instanceof fabric__namespace.Group && obj.__cropGroup || obj instanceof fabric__namespace.FabricImage && (obj.originX === "center" || obj.originY === "center");
14420
+ const nextPoint = new fabric__namespace.Point(
14421
+ useCenterAnchor ? abs.left + Math.max(1, bounds.width) / 2 : abs.left,
14422
+ useCenterAnchor ? abs.top + Math.max(1, bounds.height) / 2 : abs.top
14423
+ );
14424
+ if (typeof obj.setXY === "function") {
14425
+ obj.setXY(nextPoint, useCenterAnchor ? "center" : "left", useCenterAnchor ? "center" : "top");
14411
14426
  } else {
14412
- obj.set({ left: abs.left, top: abs.top });
14427
+ obj.set({ left: nextPoint.x, top: nextPoint.y });
14413
14428
  }
14414
14429
  obj.setCoords();
14415
14430
  if (shouldLogGroupMove()) {
@@ -14708,7 +14723,7 @@ const PageCanvas = react.forwardRef(
14708
14723
  updateElement(objId, elementUpdate, { recordHistory: false, skipLayoutRecalc: true });
14709
14724
  obj.setCoords();
14710
14725
  }
14711
- const pageChildrenForReflow = ((_i = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _i.children) ?? [];
14726
+ const pageChildrenForReflow = ((_k = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _k.children) ?? [];
14712
14727
  const stackGroupsToReflow = /* @__PURE__ */ new Set();
14713
14728
  for (const id of modifiedIdsThisRound) {
14714
14729
  const parent = findParentGroup(pageChildrenForReflow, id);
@@ -14777,6 +14792,8 @@ const PageCanvas = react.forwardRef(
14777
14792
  } catch (e2) {
14778
14793
  lastResizeScaleCornerRef.current = null;
14779
14794
  unlockEditsSoon();
14795
+ } finally {
14796
+ objectModifiedInFlight = false;
14780
14797
  }
14781
14798
  });
14782
14799
  fabricCanvas.on("before:selection:cleared", (e) => {
@@ -15088,6 +15105,7 @@ const PageCanvas = react.forwardRef(
15088
15105
  skipSelectionClearOnDiscardRef.current = false;
15089
15106
  }
15090
15107
  }
15108
+ activeSelectionSnapshot.memberIds.forEach((id) => justModifiedIdsRef.current.delete(id));
15091
15109
  }
15092
15110
  const currentFabricObjects = /* @__PURE__ */ new Map();
15093
15111
  fc.getObjects().forEach((obj) => {
@@ -23869,9 +23887,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
23869
23887
  }
23870
23888
  return svgString;
23871
23889
  }
23872
- const resolvedPackageVersion = "0.5.277";
23890
+ const resolvedPackageVersion = "0.5.279";
23873
23891
  const PACKAGE_VERSION = resolvedPackageVersion;
23874
- const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.277";
23892
+ const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.279";
23875
23893
  const roundParityValue = (value) => {
23876
23894
  if (typeof value !== "number") return value;
23877
23895
  return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
@@ -24685,7 +24703,7 @@ class PixldocsRenderer {
24685
24703
  await this.waitForCanvasScene(container, cloned, i);
24686
24704
  }
24687
24705
  console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
24688
- const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-D1OXNkaD.cjs"));
24706
+ const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-D8smkShg.cjs"));
24689
24707
  const prepared = preparePagesForExport(
24690
24708
  cloned.pages,
24691
24709
  canvasWidth,
@@ -27005,7 +27023,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
27005
27023
  if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
27006
27024
  sanitizeSvgTreeForPdf(svgToDraw);
27007
27025
  try {
27008
- const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-D1OXNkaD.cjs"));
27026
+ const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-D8smkShg.cjs"));
27009
27027
  try {
27010
27028
  await logTextMeasurementDiagnostic(svgToDraw);
27011
27029
  } catch {
@@ -27402,4 +27420,4 @@ exports.setAutoShrinkDebug = setAutoShrinkDebug;
27402
27420
  exports.setBundledAssetPrefixes = setBundledAssetPrefixes;
27403
27421
  exports.warmResolvedTemplateForPreview = warmResolvedTemplateForPreview;
27404
27422
  exports.warmTemplateFromForm = warmTemplateFromForm;
27405
- //# sourceMappingURL=index-DcwU_VE_.cjs.map
27423
+ //# sourceMappingURL=index-6-1e1Fh3.cjs.map