@pixldocs/canvas-renderer 0.5.256 → 0.5.257

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.
@@ -11198,6 +11198,50 @@ const PageCanvas = react.forwardRef(
11198
11198
  }
11199
11199
  }
11200
11200
  applyWarpAwareSelectionBorders(selection);
11201
+ try {
11202
+ if (members.length >= 2 && Math.abs((selection.angle ?? 0) % 360) < 0.01 && !selection.__pixldocsGroupAngleApplied) {
11203
+ const someBusy = members.some((m) => m.__pdCircleRadiusDrag || m.__pixldocsSectionGroup);
11204
+ if (!someBusy) {
11205
+ const first = ((members[0].angle ?? 0) % 360 + 360) % 360;
11206
+ const EPS = 0.5;
11207
+ const allSame = members.every((m) => {
11208
+ const a = ((m.angle ?? 0) % 360 + 360) % 360;
11209
+ const d = Math.min(Math.abs(a - first), 360 - Math.abs(a - first));
11210
+ return d <= EPS;
11211
+ });
11212
+ if (allSame && first > EPS && first < 360 - EPS) {
11213
+ const worldMatrices = members.map((c) => c.calcTransformMatrix());
11214
+ selection.set({ angle: first });
11215
+ selection.setCoords();
11216
+ const selMatrix = selection.calcTransformMatrix();
11217
+ const invSel = fabric__namespace.util.invertTransform(selMatrix);
11218
+ for (let i = 0; i < members.length; i++) {
11219
+ const child = members[i];
11220
+ const rel = fabric__namespace.util.multiplyTransformMatrices(invSel, worldMatrices[i]);
11221
+ const d = fabric__namespace.util.qrDecompose(rel);
11222
+ child.flipX = false;
11223
+ child.flipY = false;
11224
+ child.set({
11225
+ scaleX: d.scaleX,
11226
+ scaleY: d.scaleY,
11227
+ skewX: d.skewX,
11228
+ skewY: d.skewY,
11229
+ angle: d.angle
11230
+ });
11231
+ child.setPositionByOrigin(
11232
+ new fabric__namespace.Point(d.translateX, d.translateY),
11233
+ "center",
11234
+ "center"
11235
+ );
11236
+ child.setCoords();
11237
+ }
11238
+ selection.__pixldocsGroupAngleApplied = first;
11239
+ }
11240
+ }
11241
+ }
11242
+ } catch (err) {
11243
+ console.warn("[group-rotation-align] skipped", err);
11244
+ }
11201
11245
  }, []);
11202
11246
  const pageBoundsOptions = react.useMemo(
11203
11247
  () => ({ pageContentWidth: canvasWidth, pageContentHeight: canvasHeight }),
@@ -12547,7 +12591,8 @@ const PageCanvas = react.forwardRef(
12547
12591
  selectionLeft: rect.left,
12548
12592
  selectionTop: rect.top,
12549
12593
  groupLeft: groupAbs.left,
12550
- groupTop: groupAbs.top
12594
+ groupTop: groupAbs.top,
12595
+ selectionAngle: ((active.angle ?? 0) % 360 + 360) % 360
12551
12596
  };
12552
12597
  };
12553
12598
  const restoreGroupSelectionVisualState = (selection, groupId) => {
@@ -14188,7 +14233,13 @@ const PageCanvas = react.forwardRef(
14188
14233
  const deltaX = movedGroupLeft - groupAbs.left;
14189
14234
  const deltaY = movedGroupTop - groupAbs.top;
14190
14235
  const hadScale = isActiveSelection && activeObj && (Math.abs((activeObj.scaleX ?? 1) - 1) > 0.01 || Math.abs((activeObj.scaleY ?? 1) - 1) > 0.01);
14191
- const hadRotation = isActiveSelection && activeObj && Math.abs((activeObj.angle ?? 0) % 360) > 0.01;
14236
+ const startSelAngle = (((transformStart == null ? void 0 : transformStart.selectionAngle) ?? 0) % 360 + 360) % 360;
14237
+ const currentSelAngle = isActiveSelection && activeObj ? ((activeObj.angle ?? 0) % 360 + 360) % 360 : 0;
14238
+ const angleDelta = Math.min(
14239
+ Math.abs(currentSelAngle - startSelAngle),
14240
+ 360 - Math.abs(currentSelAngle - startSelAngle)
14241
+ );
14242
+ const hadRotation = isActiveSelection && activeObj && angleDelta > 0.01;
14192
14243
  if (!hadScale && !hadRotation && (Math.abs(deltaX) > 0.1 || Math.abs(deltaY) > 0.1)) {
14193
14244
  const { updateNode: updateNodeStore, commitHistory: commitHistoryStore, getCurrentElements } = useEditorStore.getState();
14194
14245
  const newLeft = (groupToMove.left ?? 0) + deltaX;
@@ -23539,9 +23590,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
23539
23590
  }
23540
23591
  return svgString;
23541
23592
  }
23542
- const resolvedPackageVersion = "0.5.256";
23593
+ const resolvedPackageVersion = "0.5.257";
23543
23594
  const PACKAGE_VERSION = resolvedPackageVersion;
23544
- const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.256";
23595
+ const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.257";
23545
23596
  const roundParityValue = (value) => {
23546
23597
  if (typeof value !== "number") return value;
23547
23598
  return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
@@ -24355,7 +24406,7 @@ class PixldocsRenderer {
24355
24406
  await this.waitForCanvasScene(container, cloned, i);
24356
24407
  }
24357
24408
  console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
24358
- const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-BNa-hQ-e.cjs"));
24409
+ const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-EysRHv2h.cjs"));
24359
24410
  const prepared = preparePagesForExport(
24360
24411
  cloned.pages,
24361
24412
  canvasWidth,
@@ -26675,7 +26726,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
26675
26726
  if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
26676
26727
  sanitizeSvgTreeForPdf(svgToDraw);
26677
26728
  try {
26678
- const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-BNa-hQ-e.cjs"));
26729
+ const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-EysRHv2h.cjs"));
26679
26730
  try {
26680
26731
  await logTextMeasurementDiagnostic(svgToDraw);
26681
26732
  } catch {
@@ -27072,4 +27123,4 @@ exports.setAutoShrinkDebug = setAutoShrinkDebug;
27072
27123
  exports.setBundledAssetPrefixes = setBundledAssetPrefixes;
27073
27124
  exports.warmResolvedTemplateForPreview = warmResolvedTemplateForPreview;
27074
27125
  exports.warmTemplateFromForm = warmTemplateFromForm;
27075
- //# sourceMappingURL=index-C1nsxh7P.cjs.map
27126
+ //# sourceMappingURL=index-oOI_SYzS.cjs.map