@pixldocs/canvas-renderer 0.5.312 → 0.5.313

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.
@@ -11194,30 +11194,39 @@ function applyWarpAwareSelectionBorders(selection) {
11194
11194
  const n = (a % 360 + 360) % 360;
11195
11195
  return n > 180 ? n - 360 : n;
11196
11196
  };
11197
- const first = norm(((_a2 = kids[0]) == null ? void 0 : _a2.angle) ?? 0);
11198
- let allSame = Math.abs(first) > 0.5;
11197
+ const angleDelta = (a, b) => Math.abs(norm(a - b));
11198
+ const selectionMatrix = selection.calcTransformMatrix();
11199
+ const worldMatrices = kids.map((k) => fabric__namespace.util.multiplyTransformMatrices(
11200
+ selectionMatrix,
11201
+ k.calcOwnMatrix()
11202
+ ));
11203
+ const worldAngles = worldMatrices.map((m) => norm(fabric__namespace.util.qrDecompose(m).angle ?? 0));
11204
+ const first = worldAngles[0] ?? 0;
11205
+ const allSame = Math.abs(first) > 0.5 && worldAngles.every((a) => angleDelta(a, first) <= 0.5);
11199
11206
  if (allSame) {
11200
- for (const k of kids) {
11201
- if (Math.abs(norm(k.angle ?? 0) - first) > 0.5) {
11202
- allSame = false;
11203
- break;
11204
- }
11205
- }
11206
- }
11207
- if (allSame) {
11208
- const rad = -first * Math.PI / 180;
11209
- const cos = Math.cos(rad), sin = Math.sin(rad);
11210
- for (const k of kids) {
11211
- const x = k.left ?? 0, y = k.top ?? 0;
11212
- k.set({
11213
- left: x * cos - y * sin,
11214
- top: x * sin + y * cos,
11215
- angle: 0
11207
+ const restoreKidsFromWorld = () => {
11208
+ const invSelection = fabric__namespace.util.invertTransform(
11209
+ selection.calcTransformMatrix()
11210
+ );
11211
+ kids.forEach((k, index) => {
11212
+ const localMatrix = fabric__namespace.util.multiplyTransformMatrices(
11213
+ invSelection,
11214
+ worldMatrices[index]
11215
+ );
11216
+ fabric__namespace.util.applyTransformToObject(k, localMatrix);
11217
+ k.setCoords();
11218
+ k.dirty = true;
11216
11219
  });
11217
- k.setCoords();
11220
+ };
11221
+ selection.set({ angle: first, scaleX: 1, scaleY: 1, skewX: 0, skewY: 0 });
11222
+ restoreKidsFromWorld();
11223
+ try {
11224
+ (_a2 = selection.triggerLayout) == null ? void 0 : _a2.call(selection);
11225
+ } catch {
11218
11226
  }
11219
- selection.set({ angle: first });
11227
+ restoreKidsFromWorld();
11220
11228
  selection.setCoords();
11229
+ selection.dirty = true;
11221
11230
  selection.__pixldocsAlignedAngle = first;
11222
11231
  }
11223
11232
  }
@@ -24267,9 +24276,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
24267
24276
  }
24268
24277
  return svgString;
24269
24278
  }
24270
- const resolvedPackageVersion = "0.5.312";
24279
+ const resolvedPackageVersion = "0.5.313";
24271
24280
  const PACKAGE_VERSION = resolvedPackageVersion;
24272
- const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.312";
24281
+ const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.313";
24273
24282
  const roundParityValue = (value) => {
24274
24283
  if (typeof value !== "number") return value;
24275
24284
  return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
@@ -25083,7 +25092,7 @@ class PixldocsRenderer {
25083
25092
  await this.waitForCanvasScene(container, cloned, i);
25084
25093
  }
25085
25094
  console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
25086
- const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-WWb68zM6.cjs"));
25095
+ const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-BdNT5NW8.cjs"));
25087
25096
  const prepared = preparePagesForExport(
25088
25097
  cloned.pages,
25089
25098
  canvasWidth,
@@ -27403,7 +27412,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
27403
27412
  if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
27404
27413
  sanitizeSvgTreeForPdf(svgToDraw);
27405
27414
  try {
27406
- const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-WWb68zM6.cjs"));
27415
+ const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-BdNT5NW8.cjs"));
27407
27416
  try {
27408
27417
  await logTextMeasurementDiagnostic(svgToDraw);
27409
27418
  } catch {
@@ -27800,4 +27809,4 @@ exports.setAutoShrinkDebug = setAutoShrinkDebug;
27800
27809
  exports.setBundledAssetPrefixes = setBundledAssetPrefixes;
27801
27810
  exports.warmResolvedTemplateForPreview = warmResolvedTemplateForPreview;
27802
27811
  exports.warmTemplateFromForm = warmTemplateFromForm;
27803
- //# sourceMappingURL=index-BVdt88VI.cjs.map
27812
+ //# sourceMappingURL=index-DaZy0Hz3.cjs.map