@pixldocs/canvas-renderer 0.5.340 → 0.5.342

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.
@@ -11368,8 +11368,16 @@ const PageCanvas = react.forwardRef(
11368
11368
  const pageChildren2 = ((_a2 = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _a2.children) ?? [];
11369
11369
  const groupNode = findNodeById(pageChildren2, groupId);
11370
11370
  const groupAngle = groupNode && isGroup(groupNode) ? Number(groupNode.angle ?? 0) : 0;
11371
+ const groupAbs = groupNode && isGroup(groupNode) ? getAbsoluteBounds(groupNode, pageChildren2) : null;
11371
11372
  if (Number.isFinite(groupAngle) && Math.abs(groupAngle) > 0.01) {
11372
11373
  selection.set({ angle: groupAngle, scaleX: 1, scaleY: 1, skewX: 0, skewY: 0 });
11374
+ if (groupAbs) {
11375
+ selection.setPositionByOrigin(
11376
+ new fabric__namespace.Point(groupAbs.left + groupAbs.width / 2, groupAbs.top + groupAbs.height / 2),
11377
+ "center",
11378
+ "center"
11379
+ );
11380
+ }
11373
11381
  selection.setCoords();
11374
11382
  }
11375
11383
  } catch {
@@ -12840,13 +12848,18 @@ const PageCanvas = react.forwardRef(
12840
12848
  if (!groupNode) return;
12841
12849
  const groupAbs = getAbsoluteBounds(groupNode, pageChildren2);
12842
12850
  const rect = active.getBoundingRect();
12851
+ const center = active.getCenterPoint();
12843
12852
  groupSelectionTransformStartRef.current = {
12844
12853
  groupId,
12845
12854
  selection: active,
12846
12855
  selectionLeft: rect.left,
12847
12856
  selectionTop: rect.top,
12857
+ selectionCenterX: center.x,
12858
+ selectionCenterY: center.y,
12848
12859
  groupLeft: groupAbs.left,
12849
12860
  groupTop: groupAbs.top,
12861
+ groupWidth: groupAbs.width,
12862
+ groupHeight: groupAbs.height,
12850
12863
  selectionAngle: ((active.angle ?? 0) % 360 + 360) % 360
12851
12864
  };
12852
12865
  };
@@ -14497,6 +14510,10 @@ const PageCanvas = react.forwardRef(
14497
14510
  } catch (err) {
14498
14511
  console.warn("[Pixldocs][group-image-side-resize] modified-entry log failed", err);
14499
14512
  }
14513
+ const modifiedTarget = e.target;
14514
+ if (modifiedTarget instanceof fabric__namespace.ActiveSelection && modifiedTarget.getObjects().length === 0) {
14515
+ return;
14516
+ }
14500
14517
  try {
14501
14518
  const t = e.target;
14502
14519
  if (t instanceof fabric__namespace.ActiveSelection) {
@@ -14509,7 +14526,6 @@ const PageCanvas = react.forwardRef(
14509
14526
  }
14510
14527
  groupShiftReflowSnapshotRef.current = null;
14511
14528
  lockEdits();
14512
- const modifiedTarget = e.target;
14513
14529
  const modifiedTargetId = modifiedTarget ? getObjectId(modifiedTarget) : null;
14514
14530
  const modifiedTargetElement = modifiedTargetId ? elementsRef.current.find((el) => el.id === modifiedTargetId) : null;
14515
14531
  if (modifiedTarget && (modifiedTargetElement == null ? void 0 : modifiedTargetElement.type) === "shape") {
@@ -14923,6 +14939,44 @@ const PageCanvas = react.forwardRef(
14923
14939
  const currentSelAngle = isActiveSelection && activeObj ? normalizeAngle(activeObj.angle ?? 0) : 0;
14924
14940
  const angleDelta = shortestAngleDelta(currentSelAngle, startSelAngle);
14925
14941
  const hadRotation = isActiveSelection && activeObj && angleDelta > 0.01;
14942
+ if (activeGroupSelectionId === groupToMove.id && hadRotation && !hadScale && !activeSelectionResizeHandle && activeObj instanceof fabric__namespace.ActiveSelection) {
14943
+ const { updateNode: updateNodeStore, commitHistory: commitHistoryStore, getCurrentElements } = useEditorStore.getState();
14944
+ const center = activeObj.getCenterPoint();
14945
+ const nextAbsLeft = center.x - groupAbs.width / 2;
14946
+ const nextAbsTop = center.y - groupAbs.height / 2;
14947
+ const storePos = absoluteToStorePosition(nextAbsLeft, nextAbsTop, groupToMove.id, pageChildren2);
14948
+ updateNodeStore(groupToMove.id, {
14949
+ left: storePos.left,
14950
+ top: storePos.top,
14951
+ angle: currentSelAngle
14952
+ }, { recordHistory: false, skipLayoutRecalc: true });
14953
+ commitHistoryStore();
14954
+ restoreGroupSelectionVisualState(activeObj, groupToMove.id);
14955
+ fabricCanvas.setActiveObject(activeObj);
14956
+ activeObj.setCoords();
14957
+ selectElements([groupToMove.id], false, false);
14958
+ fabricCanvas.requestRenderAll();
14959
+ elementsRef.current = getCurrentElements();
14960
+ const restoreSnapshot = {
14961
+ memberIds: activeObj.getObjects().map((obj) => getObjectId(obj)).filter((id) => !!id && id !== "__background__"),
14962
+ groupSelectionId: groupToMove.id,
14963
+ expiresAt: Date.now() + 1200
14964
+ };
14965
+ recentGroupSelectionRestoreRef.current = restoreSnapshot;
14966
+ activeObj.getObjects().forEach((obj) => {
14967
+ const objId = getObjectId(obj);
14968
+ if (objId && objId !== "__background__") {
14969
+ justModifiedIdsRef.current.add(objId);
14970
+ modifiedIdsThisRound.add(objId);
14971
+ }
14972
+ });
14973
+ setTimeout(() => modifiedIdsThisRound.forEach((id) => justModifiedIdsRef.current.delete(id)), 150);
14974
+ groupSelectionTransformStartRef.current = null;
14975
+ activeSelectionMoveStartRef.current = null;
14976
+ activeSelectionResizeHandleRef.current = null;
14977
+ unlockEditsSoon();
14978
+ return;
14979
+ }
14926
14980
  if (!isActiveSelectionSideResize && !hadScale && !hadRotation && (Math.abs(deltaX) > 0.1 || Math.abs(deltaY) > 0.1)) {
14927
14981
  const { updateNode: updateNodeStore, commitHistory: commitHistoryStore, getCurrentElements } = useEditorStore.getState();
14928
14982
  const newLeft = (groupToMove.left ?? 0) + deltaX;
@@ -24608,9 +24662,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
24608
24662
  }
24609
24663
  return svgString;
24610
24664
  }
24611
- const resolvedPackageVersion = "0.5.340";
24665
+ const resolvedPackageVersion = "0.5.342";
24612
24666
  const PACKAGE_VERSION = resolvedPackageVersion;
24613
- const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.340";
24667
+ const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.342";
24614
24668
  const roundParityValue = (value) => {
24615
24669
  if (typeof value !== "number") return value;
24616
24670
  return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
@@ -25424,7 +25478,7 @@ class PixldocsRenderer {
25424
25478
  await this.waitForCanvasScene(container, cloned, i);
25425
25479
  }
25426
25480
  console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
25427
- const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-DHQyGl_Z.cjs"));
25481
+ const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-8iq2cL_r.cjs"));
25428
25482
  const prepared = preparePagesForExport(
25429
25483
  cloned.pages,
25430
25484
  canvasWidth,
@@ -27744,7 +27798,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
27744
27798
  if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
27745
27799
  sanitizeSvgTreeForPdf(svgToDraw);
27746
27800
  try {
27747
- const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-DHQyGl_Z.cjs"));
27801
+ const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-8iq2cL_r.cjs"));
27748
27802
  try {
27749
27803
  await logTextMeasurementDiagnostic(svgToDraw);
27750
27804
  } catch {
@@ -28141,4 +28195,4 @@ exports.setAutoShrinkDebug = setAutoShrinkDebug;
28141
28195
  exports.setBundledAssetPrefixes = setBundledAssetPrefixes;
28142
28196
  exports.warmResolvedTemplateForPreview = warmResolvedTemplateForPreview;
28143
28197
  exports.warmTemplateFromForm = warmTemplateFromForm;
28144
- //# sourceMappingURL=index-SISBmJf0.cjs.map
28198
+ //# sourceMappingURL=index-AFV1WnF5.cjs.map