@pixldocs/canvas-renderer 0.5.340 → 0.5.341

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.
@@ -11350,8 +11350,16 @@ const PageCanvas = forwardRef(
11350
11350
  const pageChildren2 = ((_a2 = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _a2.children) ?? [];
11351
11351
  const groupNode = findNodeById(pageChildren2, groupId);
11352
11352
  const groupAngle = groupNode && isGroup(groupNode) ? Number(groupNode.angle ?? 0) : 0;
11353
+ const groupAbs = groupNode && isGroup(groupNode) ? getAbsoluteBounds(groupNode, pageChildren2) : null;
11353
11354
  if (Number.isFinite(groupAngle) && Math.abs(groupAngle) > 0.01) {
11354
11355
  selection.set({ angle: groupAngle, scaleX: 1, scaleY: 1, skewX: 0, skewY: 0 });
11356
+ if (groupAbs) {
11357
+ selection.setPositionByOrigin(
11358
+ new fabric.Point(groupAbs.left + groupAbs.width / 2, groupAbs.top + groupAbs.height / 2),
11359
+ "center",
11360
+ "center"
11361
+ );
11362
+ }
11355
11363
  selection.setCoords();
11356
11364
  }
11357
11365
  } catch {
@@ -12822,13 +12830,18 @@ const PageCanvas = forwardRef(
12822
12830
  if (!groupNode) return;
12823
12831
  const groupAbs = getAbsoluteBounds(groupNode, pageChildren2);
12824
12832
  const rect = active.getBoundingRect();
12833
+ const center = active.getCenterPoint();
12825
12834
  groupSelectionTransformStartRef.current = {
12826
12835
  groupId,
12827
12836
  selection: active,
12828
12837
  selectionLeft: rect.left,
12829
12838
  selectionTop: rect.top,
12839
+ selectionCenterX: center.x,
12840
+ selectionCenterY: center.y,
12830
12841
  groupLeft: groupAbs.left,
12831
12842
  groupTop: groupAbs.top,
12843
+ groupWidth: groupAbs.width,
12844
+ groupHeight: groupAbs.height,
12832
12845
  selectionAngle: ((active.angle ?? 0) % 360 + 360) % 360
12833
12846
  };
12834
12847
  };
@@ -14905,6 +14918,44 @@ const PageCanvas = forwardRef(
14905
14918
  const currentSelAngle = isActiveSelection && activeObj ? normalizeAngle(activeObj.angle ?? 0) : 0;
14906
14919
  const angleDelta = shortestAngleDelta(currentSelAngle, startSelAngle);
14907
14920
  const hadRotation = isActiveSelection && activeObj && angleDelta > 0.01;
14921
+ if (activeGroupSelectionId === groupToMove.id && hadRotation && !hadScale && !activeSelectionResizeHandle && activeObj instanceof fabric.ActiveSelection) {
14922
+ const { updateNode: updateNodeStore, commitHistory: commitHistoryStore, getCurrentElements } = useEditorStore.getState();
14923
+ const center = activeObj.getCenterPoint();
14924
+ const nextAbsLeft = center.x - groupAbs.width / 2;
14925
+ const nextAbsTop = center.y - groupAbs.height / 2;
14926
+ const storePos = absoluteToStorePosition(nextAbsLeft, nextAbsTop, groupToMove.id, pageChildren2);
14927
+ updateNodeStore(groupToMove.id, {
14928
+ left: storePos.left,
14929
+ top: storePos.top,
14930
+ angle: currentSelAngle
14931
+ }, { recordHistory: false, skipLayoutRecalc: true });
14932
+ commitHistoryStore();
14933
+ restoreGroupSelectionVisualState(activeObj, groupToMove.id);
14934
+ fabricCanvas.setActiveObject(activeObj);
14935
+ activeObj.setCoords();
14936
+ selectElements([groupToMove.id], false, false);
14937
+ fabricCanvas.requestRenderAll();
14938
+ elementsRef.current = getCurrentElements();
14939
+ const restoreSnapshot = {
14940
+ memberIds: activeObj.getObjects().map((obj) => getObjectId(obj)).filter((id) => !!id && id !== "__background__"),
14941
+ groupSelectionId: groupToMove.id,
14942
+ expiresAt: Date.now() + 1200
14943
+ };
14944
+ recentGroupSelectionRestoreRef.current = restoreSnapshot;
14945
+ activeObj.getObjects().forEach((obj) => {
14946
+ const objId = getObjectId(obj);
14947
+ if (objId && objId !== "__background__") {
14948
+ justModifiedIdsRef.current.add(objId);
14949
+ modifiedIdsThisRound.add(objId);
14950
+ }
14951
+ });
14952
+ setTimeout(() => modifiedIdsThisRound.forEach((id) => justModifiedIdsRef.current.delete(id)), 150);
14953
+ groupSelectionTransformStartRef.current = null;
14954
+ activeSelectionMoveStartRef.current = null;
14955
+ activeSelectionResizeHandleRef.current = null;
14956
+ unlockEditsSoon();
14957
+ return;
14958
+ }
14908
14959
  if (!isActiveSelectionSideResize && !hadScale && !hadRotation && (Math.abs(deltaX) > 0.1 || Math.abs(deltaY) > 0.1)) {
14909
14960
  const { updateNode: updateNodeStore, commitHistory: commitHistoryStore, getCurrentElements } = useEditorStore.getState();
14910
14961
  const newLeft = (groupToMove.left ?? 0) + deltaX;
@@ -24590,9 +24641,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
24590
24641
  }
24591
24642
  return svgString;
24592
24643
  }
24593
- const resolvedPackageVersion = "0.5.340";
24644
+ const resolvedPackageVersion = "0.5.341";
24594
24645
  const PACKAGE_VERSION = resolvedPackageVersion;
24595
- const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.340";
24646
+ const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.341";
24596
24647
  const roundParityValue = (value) => {
24597
24648
  if (typeof value !== "number") return value;
24598
24649
  return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
@@ -25406,7 +25457,7 @@ class PixldocsRenderer {
25406
25457
  await this.waitForCanvasScene(container, cloned, i);
25407
25458
  }
25408
25459
  console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
25409
- const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-eD9Y7zuY.js");
25460
+ const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-Bq49zb70.js");
25410
25461
  const prepared = preparePagesForExport(
25411
25462
  cloned.pages,
25412
25463
  canvasWidth,
@@ -27726,7 +27777,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
27726
27777
  if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
27727
27778
  sanitizeSvgTreeForPdf(svgToDraw);
27728
27779
  try {
27729
- const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await import("./vectorPdfExport-eD9Y7zuY.js");
27780
+ const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await import("./vectorPdfExport-Bq49zb70.js");
27730
27781
  try {
27731
27782
  await logTextMeasurementDiagnostic(svgToDraw);
27732
27783
  } catch {
@@ -28126,4 +28177,4 @@ export {
28126
28177
  buildTeaserBlurFlatKeys as y,
28127
28178
  collectFontDescriptorsFromConfig as z
28128
28179
  };
28129
- //# sourceMappingURL=index-DCyiaRZr.js.map
28180
+ //# sourceMappingURL=index-8AH1NCZZ.js.map