@pixldocs/canvas-renderer 0.5.319 → 0.5.321

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.
@@ -11186,19 +11186,9 @@ function applyWarpAwareSelectionBorders(selection) {
11186
11186
  const first = worldAngles[0] ?? 0;
11187
11187
  const ALL_SAME_TOL_DEG = 2;
11188
11188
  const allSame = Math.abs(first) > 0.5 && worldAngles.every((a) => angleDelta(a, first) <= ALL_SAME_TOL_DEG);
11189
- const anyRotated = worldAngles.some((a) => Math.abs(a) > 0.5);
11190
11189
  let targetAngle = null;
11191
11190
  if (allSame) {
11192
11191
  targetAngle = first;
11193
- } else if (anyRotated) {
11194
- const rad = (d) => d * Math.PI / 180;
11195
- const deg = (r) => r * 180 / Math.PI;
11196
- let sx = 0, sy = 0;
11197
- for (const a of worldAngles) {
11198
- sx += Math.cos(rad(a));
11199
- sy += Math.sin(rad(a));
11200
- }
11201
- targetAngle = norm(deg(Math.atan2(sy, sx)));
11202
11192
  }
11203
11193
  if (targetAngle != null) {
11204
11194
  const restoreKidsFromWorld = () => {
@@ -11225,7 +11215,6 @@ function applyWarpAwareSelectionBorders(selection) {
11225
11215
  selection.setCoords();
11226
11216
  selection.dirty = true;
11227
11217
  selection.__pixldocsAlignedAngle = targetAngle;
11228
- if (!allSame) selection.__pixldocsMixedRotation = true;
11229
11218
  }
11230
11219
  }
11231
11220
  }
@@ -13570,21 +13559,10 @@ const PageCanvas = forwardRef(
13570
13559
  fabricCanvas.on("selection:cleared", () => {
13571
13560
  });
13572
13561
  fabricCanvas.on("object:scaling", (e) => {
13573
- var _a2, _b2, _c, _d, _e, _f, _g;
13562
+ var _a2, _b2, _c, _d, _e, _f;
13574
13563
  if (!isActiveRef.current) return;
13575
13564
  const t = e.target;
13576
13565
  if (t) lastResizeScaleTargetRef.current = t;
13577
- try {
13578
- if (t instanceof fabric.ActiveSelection && t.__pixldocsMixedRotation) {
13579
- const corner2 = (_a2 = e.transform) == null ? void 0 : _a2.corner;
13580
- if (corner2 === "ml" || corner2 === "mr") {
13581
- t.scaleY = t.scaleX;
13582
- } else if (corner2 === "mt" || corner2 === "mb") {
13583
- t.scaleX = t.scaleY;
13584
- }
13585
- }
13586
- } catch {
13587
- }
13588
13566
  prepareGroupSelectionTransformStart(t);
13589
13567
  markTransforming(t);
13590
13568
  didTransformRef.current = true;
@@ -13748,24 +13726,36 @@ const PageCanvas = forwardRef(
13748
13726
  time: Math.round(performance.now()),
13749
13727
  corner,
13750
13728
  groupSelectionId: obj.__pixldocsGroupSelection,
13751
- currentTransformAction: (_b2 = fabricCanvas._currentTransform) == null ? void 0 : _b2.action,
13729
+ currentTransformAction: (_a2 = fabricCanvas._currentTransform) == null ? void 0 : _a2.action,
13752
13730
  selection: summarizeFabricObjectForResizeDebug(obj),
13753
13731
  textChildren: obj.getObjects().filter((child) => child instanceof fabric.Textbox).map((child) => summarizeFabricObjectForResizeDebug(child))
13754
13732
  };
13755
13733
  }
13756
13734
  }
13757
- const _asMixedRotForReflow = obj instanceof fabric.ActiveSelection && !!obj.__pixldocsMixedRotation;
13758
- if (obj instanceof fabric.ActiveSelection && !_asMixedRotForReflow && (corner === "ml" || corner === "mr" || corner === "mt" || corner === "mb")) {
13735
+ if (obj instanceof fabric.ActiveSelection && (corner === "ml" || corner === "mr" || corner === "mt" || corner === "mb")) {
13759
13736
  const isXSide = corner === "ml" || corner === "mr";
13760
13737
  const sAxis = isXSide ? Math.abs(obj.scaleX ?? 1) : Math.abs(obj.scaleY ?? 1);
13761
13738
  if (sAxis > 1e-3) {
13762
- if (isXSide && ((_c = groupShiftReflowSnapshotRef.current) == null ? void 0 : _c.selection) !== obj) {
13739
+ const hasRotatedChild = obj.getObjects().some(
13740
+ (c) => Math.abs((c.angle ?? 0) % 360) > 0.5
13741
+ );
13742
+ if (hasRotatedChild) {
13743
+ if (isXSide) {
13744
+ obj._set("scaleY", obj.scaleX ?? 1);
13745
+ } else {
13746
+ obj._set("scaleX", obj.scaleY ?? 1);
13747
+ }
13748
+ obj.setCoords();
13749
+ obj.dirty = true;
13750
+ return;
13751
+ }
13752
+ if (isXSide && ((_b2 = groupShiftReflowSnapshotRef.current) == null ? void 0 : _b2.selection) !== obj) {
13763
13753
  groupShiftReflowSnapshotRef.current = null;
13764
13754
  const logicalGroupId = obj.__pixldocsGroupSelection;
13765
13755
  if (logicalGroupId) {
13766
13756
  try {
13767
13757
  const state = useEditorStore.getState();
13768
- const pageChildren2 = ((_d = state.canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _d.children) ?? [];
13758
+ const pageChildren2 = ((_c = state.canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _c.children) ?? [];
13769
13759
  const groupNode = findNodeById(pageChildren2, logicalGroupId);
13770
13760
  if (groupNode && isGroup(groupNode) && !isStackLayoutMode(groupNode.layoutMode)) {
13771
13761
  const entries = obj.getObjects().map((c) => ({
@@ -13795,7 +13785,7 @@ const PageCanvas = forwardRef(
13795
13785
  const asRect0 = obj.getBoundingRect();
13796
13786
  let didReflowTextChild = false;
13797
13787
  for (const child of obj.getObjects()) {
13798
- if (child instanceof fabric.Group && (child.__cropGroup || ((_e = child._ct) == null ? void 0 : _e.isCropGroup))) {
13788
+ if (child instanceof fabric.Group && (child.__cropGroup || ((_d = child._ct) == null ? void 0 : _d.isCropGroup))) {
13799
13789
  const ct = child.__cropData;
13800
13790
  if (!ct) continue;
13801
13791
  if (isXSide) {
@@ -13900,7 +13890,7 @@ const PageCanvas = forwardRef(
13900
13890
  didReflowTextChild = true;
13901
13891
  }
13902
13892
  }
13903
- if (isXSide && ((_f = groupShiftReflowSnapshotRef.current) == null ? void 0 : _f.selection) === obj) {
13893
+ if (isXSide && ((_e = groupShiftReflowSnapshotRef.current) == null ? void 0 : _e.selection) === obj) {
13904
13894
  const snap = groupShiftReflowSnapshotRef.current;
13905
13895
  const anchorEntry = snap.children[0];
13906
13896
  const anchorTopLive = anchorEntry.obj.top ?? 0;
@@ -14056,7 +14046,7 @@ const PageCanvas = forwardRef(
14056
14046
  setGuides(gridGuidesForScale.length ? [...scaleGuides, ...gridGuidesForScale] : scaleGuides);
14057
14047
  if (drilledGroupIdRef.current) {
14058
14048
  try {
14059
- (_g = fabricCanvas.__updateDrilledGroupOutline) == null ? void 0 : _g.call(fabricCanvas);
14049
+ (_f = fabricCanvas.__updateDrilledGroupOutline) == null ? void 0 : _f.call(fabricCanvas);
14060
14050
  } catch {
14061
14051
  }
14062
14052
  }
@@ -24286,9 +24276,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
24286
24276
  }
24287
24277
  return svgString;
24288
24278
  }
24289
- const resolvedPackageVersion = "0.5.319";
24279
+ const resolvedPackageVersion = "0.5.321";
24290
24280
  const PACKAGE_VERSION = resolvedPackageVersion;
24291
- const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.319";
24281
+ const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.321";
24292
24282
  const roundParityValue = (value) => {
24293
24283
  if (typeof value !== "number") return value;
24294
24284
  return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
@@ -25102,7 +25092,7 @@ class PixldocsRenderer {
25102
25092
  await this.waitForCanvasScene(container, cloned, i);
25103
25093
  }
25104
25094
  console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
25105
- const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-9kP7srXG.js");
25095
+ const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-B7vQ9kv2.js");
25106
25096
  const prepared = preparePagesForExport(
25107
25097
  cloned.pages,
25108
25098
  canvasWidth,
@@ -27422,7 +27412,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
27422
27412
  if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
27423
27413
  sanitizeSvgTreeForPdf(svgToDraw);
27424
27414
  try {
27425
- const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await import("./vectorPdfExport-9kP7srXG.js");
27415
+ const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await import("./vectorPdfExport-B7vQ9kv2.js");
27426
27416
  try {
27427
27417
  await logTextMeasurementDiagnostic(svgToDraw);
27428
27418
  } catch {
@@ -27822,4 +27812,4 @@ export {
27822
27812
  buildTeaserBlurFlatKeys as y,
27823
27813
  collectFontDescriptorsFromConfig as z
27824
27814
  };
27825
- //# sourceMappingURL=index-D75MmxRi.js.map
27815
+ //# sourceMappingURL=index-CHc4fbe1.js.map