@pixldocs/canvas-renderer 0.5.440 → 0.5.441

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.
@@ -11679,6 +11679,12 @@ const applyTransformPreservingFlip = (obj, matrix) => {
11679
11679
  }
11680
11680
  obj.set({ scaleX: sx, scaleY: sy, flipX, flipY });
11681
11681
  };
11682
+ const toggleLogicalFlipInMatrix = (matrix, flipX, flipY) => {
11683
+ if (!flipX && !flipY) return matrix;
11684
+ const sx = flipX ? -1 : 1;
11685
+ const sy = flipY ? -1 : 1;
11686
+ return [matrix[0] * sx, matrix[1] * sx, matrix[2] * sy, matrix[3] * sy, matrix[4], matrix[5]];
11687
+ };
11682
11688
  function applyWarpAwareSelectionBorders(selection) {
11683
11689
  var _a2;
11684
11690
  if (selection.__pixldocsOrigASHasBorders !== void 0) {
@@ -16470,6 +16476,10 @@ const PageCanvas = react.forwardRef(
16470
16476
  const isLineObj = obj instanceof fabric__namespace.Line;
16471
16477
  const isAutoShrinkText = (sourceElement == null ? void 0 : sourceElement.type) === "text" && sourceElement.overflowPolicy === "auto-shrink";
16472
16478
  const autoShrinkStoredHeight = isAutoShrinkText ? sourceElement.height : void 0;
16479
+ const persistedFlipX = (sourceElement == null ? void 0 : sourceElement.flipX) ?? obj.flipX ?? false;
16480
+ const persistedFlipY = (sourceElement == null ? void 0 : sourceElement.flipY) ?? obj.flipY ?? false;
16481
+ const cleanTransformMatrix = toggleLogicalFlipInMatrix(finalAbsoluteMatrix, persistedFlipX, persistedFlipY);
16482
+ const persistedDecomposed = fabric__namespace.util.qrDecompose(cleanTransformMatrix);
16473
16483
  const elementUpdate = {
16474
16484
  left: storePos.left,
16475
16485
  top: storePos.top,
@@ -16478,11 +16488,13 @@ const PageCanvas = react.forwardRef(
16478
16488
  // so finalWidth already reflects the new width chosen by the user.
16479
16489
  width: finalWidth,
16480
16490
  height: isLineObj ? 0 : isAutoShrinkText ? typeof autoShrinkStoredHeight === "number" ? autoShrinkStoredHeight : finalHeight : finalHeight,
16481
- angle: decomposed.angle,
16482
- skewX: isLineObj ? 0 : decomposed.skewX,
16483
- skewY: isLineObj ? 0 : decomposed.skewY,
16491
+ angle: persistedDecomposed.angle,
16492
+ skewX: isLineObj ? 0 : persistedDecomposed.skewX,
16493
+ skewY: isLineObj ? 0 : persistedDecomposed.skewY,
16484
16494
  scaleX: finalScaleX,
16485
16495
  scaleY: finalScaleY,
16496
+ flipX: persistedFlipX,
16497
+ flipY: persistedFlipY,
16486
16498
  transformMatrix: finalAbsoluteMatrix
16487
16499
  };
16488
16500
  if (obj instanceof fabric__namespace.Textbox) {
@@ -16532,15 +16544,19 @@ const PageCanvas = react.forwardRef(
16532
16544
  elementUpdate.scaleY = 1;
16533
16545
  elementUpdate.skewX = 0;
16534
16546
  elementUpdate.skewY = 0;
16535
- elementUpdate.transformMatrix = fabric__namespace.util.composeMatrix({
16536
- translateX: cx,
16537
- translateY: cy,
16538
- angle: cleanAngle,
16539
- scaleX: 1,
16540
- scaleY: 1,
16541
- skewX: 0,
16542
- skewY: 0
16543
- });
16547
+ elementUpdate.transformMatrix = toggleLogicalFlipInMatrix(
16548
+ fabric__namespace.util.composeMatrix({
16549
+ translateX: cx,
16550
+ translateY: cy,
16551
+ angle: cleanAngle,
16552
+ scaleX: 1,
16553
+ scaleY: 1,
16554
+ skewX: 0,
16555
+ skewY: 0
16556
+ }),
16557
+ elementUpdate.flipX,
16558
+ elementUpdate.flipY
16559
+ );
16544
16560
  } catch {
16545
16561
  }
16546
16562
  }
@@ -16574,15 +16590,19 @@ const PageCanvas = react.forwardRef(
16574
16590
  elementUpdate.scaleY = 1;
16575
16591
  elementUpdate.skewX = 0;
16576
16592
  elementUpdate.skewY = 0;
16577
- elementUpdate.transformMatrix = fabric__namespace.util.composeMatrix({
16578
- translateX: cx,
16579
- translateY: cy,
16580
- angle: cleanAngleI,
16581
- scaleX: 1,
16582
- scaleY: 1,
16583
- skewX: 0,
16584
- skewY: 0
16585
- });
16593
+ elementUpdate.transformMatrix = toggleLogicalFlipInMatrix(
16594
+ fabric__namespace.util.composeMatrix({
16595
+ translateX: cx,
16596
+ translateY: cy,
16597
+ angle: cleanAngleI,
16598
+ scaleX: 1,
16599
+ scaleY: 1,
16600
+ skewX: 0,
16601
+ skewY: 0
16602
+ }),
16603
+ elementUpdate.flipX,
16604
+ elementUpdate.flipY
16605
+ );
16586
16606
  } catch {
16587
16607
  }
16588
16608
  }
@@ -25869,9 +25889,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
25869
25889
  }
25870
25890
  return svgString;
25871
25891
  }
25872
- const resolvedPackageVersion = "0.5.440";
25892
+ const resolvedPackageVersion = "0.5.441";
25873
25893
  const PACKAGE_VERSION = resolvedPackageVersion;
25874
- const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.440";
25894
+ const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.441";
25875
25895
  const roundParityValue = (value) => {
25876
25896
  if (typeof value !== "number") return value;
25877
25897
  return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
@@ -26685,7 +26705,7 @@ class PixldocsRenderer {
26685
26705
  await this.waitForCanvasScene(container, cloned, i);
26686
26706
  }
26687
26707
  console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
26688
- const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-CtvA0Dck.cjs"));
26708
+ const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-BKPFy7-t.cjs"));
26689
26709
  const prepared = preparePagesForExport(
26690
26710
  cloned.pages,
26691
26711
  canvasWidth,
@@ -29005,7 +29025,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
29005
29025
  if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
29006
29026
  sanitizeSvgTreeForPdf(svgToDraw);
29007
29027
  try {
29008
- const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-CtvA0Dck.cjs"));
29028
+ const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-BKPFy7-t.cjs"));
29009
29029
  try {
29010
29030
  await logTextMeasurementDiagnostic(svgToDraw);
29011
29031
  } catch {
@@ -29402,4 +29422,4 @@ exports.setAutoShrinkDebug = setAutoShrinkDebug;
29402
29422
  exports.setBundledAssetPrefixes = setBundledAssetPrefixes;
29403
29423
  exports.warmResolvedTemplateForPreview = warmResolvedTemplateForPreview;
29404
29424
  exports.warmTemplateFromForm = warmTemplateFromForm;
29405
- //# sourceMappingURL=index-hWZ5kvhb.cjs.map
29425
+ //# sourceMappingURL=index-BPlFxSU1.cjs.map