@pixldocs/canvas-renderer 0.5.401 → 0.5.402

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.
@@ -11505,12 +11505,14 @@ function applyWarpAwareSelectionBorders(selection) {
11505
11505
  if (isLogicalGroupSelection && typeof frozenGroupAngle === "number" && Math.abs(frozenGroupAngle) > 0.5) {
11506
11506
  targetAngle = frozenGroupAngle;
11507
11507
  }
11508
- if (targetAngle == null && dominant && Math.abs(dominant.angle) > 0.5 && // Dominant-angle alignment is required to keep side-handle resize
11509
- // shear-free on rotated children. Without it, Fabric's AS drags
11510
- // along world X/Y while rotated children render in their local
11511
- // frame visible skew. Frozen group angle (when persisted) takes
11512
- // priority above; otherwise fall back to dominant.
11513
- (isLogicalGroupSelection || kids.length === 1 || dominant.count >= 2 || dominant.count === kids.length)) {
11508
+ if (targetAngle == null && dominant && Math.abs(dominant.angle) > 0.5 && // Canva-style: a *logical group* bbox is authoritative from the
11509
+ // persisted group.angle only. Individual child rotations must not
11510
+ // drift the group's selection bbox angle. The per-child rotation-
11511
+ // aware reflow (S^-1·R(θ) decomposition) keeps side-handle drags
11512
+ // shear-free on rotated text/image/crop-group kids without needing
11513
+ // the AS itself to tilt.
11514
+ // Ad-hoc multi-select (non-logical) still aligns to dominant.
11515
+ (!isLogicalGroupSelection && (kids.length === 1 || dominant.count >= 2 || dominant.count === kids.length))) {
11514
11516
  targetAngle = dominant.angle;
11515
11517
  }
11516
11518
  if (targetAngle != null) {
@@ -25117,9 +25119,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
25117
25119
  }
25118
25120
  return svgString;
25119
25121
  }
25120
- const resolvedPackageVersion = "0.5.401";
25122
+ const resolvedPackageVersion = "0.5.402";
25121
25123
  const PACKAGE_VERSION = resolvedPackageVersion;
25122
- const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.401";
25124
+ const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.402";
25123
25125
  const roundParityValue = (value) => {
25124
25126
  if (typeof value !== "number") return value;
25125
25127
  return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
@@ -25933,7 +25935,7 @@ class PixldocsRenderer {
25933
25935
  await this.waitForCanvasScene(container, cloned, i);
25934
25936
  }
25935
25937
  console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
25936
- const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-8uhoJ38-.js");
25938
+ const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-Bo_XOpSd.js");
25937
25939
  const prepared = preparePagesForExport(
25938
25940
  cloned.pages,
25939
25941
  canvasWidth,
@@ -28253,7 +28255,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
28253
28255
  if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
28254
28256
  sanitizeSvgTreeForPdf(svgToDraw);
28255
28257
  try {
28256
- const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await import("./vectorPdfExport-8uhoJ38-.js");
28258
+ const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await import("./vectorPdfExport-Bo_XOpSd.js");
28257
28259
  try {
28258
28260
  await logTextMeasurementDiagnostic(svgToDraw);
28259
28261
  } catch {
@@ -28653,4 +28655,4 @@ export {
28653
28655
  buildTeaserBlurFlatKeys as y,
28654
28656
  collectFontDescriptorsFromConfig as z
28655
28657
  };
28656
- //# sourceMappingURL=index-B0wcgE-q.js.map
28658
+ //# sourceMappingURL=index-CF2nx5LE.js.map