@pixldocs/canvas-renderer 0.5.346 → 0.5.348

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.
@@ -11216,6 +11216,7 @@ function applyWarpAwareSelectionBorders(selection) {
11216
11216
  }
11217
11217
  selection.hasBorders = true;
11218
11218
  selection.hasControls = true;
11219
+ if (selection.__pixldocsGroupSelection) return;
11219
11220
  try {
11220
11221
  if (selection.__pixldocsAlignedAngle == null) {
11221
11222
  const kids = selection.getObjects();
@@ -11347,11 +11348,17 @@ const PageCanvas = forwardRef(
11347
11348
  delete selection.__pixldocsLogicalGroupIds;
11348
11349
  selection.hasBorders = true;
11349
11350
  try {
11351
+ const membersBeforeFrame = selection.getObjects();
11352
+ const selectionMatrixBefore = selection.calcTransformMatrix();
11353
+ const memberWorldMatrices = membersBeforeFrame.map((member) => fabric.util.multiplyTransformMatrices(
11354
+ selectionMatrixBefore,
11355
+ member.calcOwnMatrix()
11356
+ ));
11350
11357
  const pageChildren2 = ((_a2 = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _a2.children) ?? [];
11351
11358
  const groupNode = findNodeById(pageChildren2, groupId);
11352
11359
  const groupAngle = groupNode && isGroup(groupNode) ? Number(groupNode.angle ?? 0) : 0;
11353
11360
  const groupAbs = groupNode && isGroup(groupNode) ? getAbsoluteBounds(groupNode, pageChildren2) : null;
11354
- if (Number.isFinite(groupAngle) && Math.abs(groupAngle) > 0.01) {
11361
+ if (Number.isFinite(groupAngle)) {
11355
11362
  selection.set({ angle: groupAngle, scaleX: 1, scaleY: 1, skewX: 0, skewY: 0 });
11356
11363
  if (groupAbs) {
11357
11364
  selection.setPositionByOrigin(
@@ -11360,6 +11367,18 @@ const PageCanvas = forwardRef(
11360
11367
  "center"
11361
11368
  );
11362
11369
  }
11370
+ const invSelectionAfter = fabric.util.invertTransform(
11371
+ selection.calcTransformMatrix()
11372
+ );
11373
+ membersBeforeFrame.forEach((member, index) => {
11374
+ const localMatrix = fabric.util.multiplyTransformMatrices(
11375
+ invSelectionAfter,
11376
+ memberWorldMatrices[index]
11377
+ );
11378
+ fabric.util.applyTransformToObject(member, localMatrix);
11379
+ member.setCoords();
11380
+ member.dirty = true;
11381
+ });
11363
11382
  selection.setCoords();
11364
11383
  }
11365
11384
  } catch {
@@ -15516,9 +15535,13 @@ const PageCanvas = forwardRef(
15516
15535
  skewX: isLineObj ? 0 : finalSkewX,
15517
15536
  skewY: isLineObj ? 0 : finalSkewY,
15518
15537
  scaleX: finalScaleX,
15519
- scaleY: finalScaleY,
15520
- transformMatrix: finalAbsoluteMatrix
15538
+ scaleY: finalScaleY
15521
15539
  };
15540
+ if (!isLogicalGroupAS) {
15541
+ elementUpdate.transformMatrix = finalAbsoluteMatrix;
15542
+ } else {
15543
+ elementUpdate.transformMatrix = void 0;
15544
+ }
15522
15545
  if (obj instanceof fabric.Textbox) {
15523
15546
  const bakedTextScaleUpdates = obj.__pixldocsBakedTextScaleUpdates;
15524
15547
  if (bakedTextScaleUpdates && typeof bakedTextScaleUpdates === "object") {
@@ -17043,9 +17066,7 @@ const PageCanvas = forwardRef(
17043
17066
  if (sameSelection && isFlatGroupSelection) {
17044
17067
  if (selectedGroupSelectionId && active instanceof fabric.ActiveSelection) {
17045
17068
  if (isPureSingleGroupSelection) {
17046
- active.__pixldocsGroupSelection = selectedGroupSelectionId;
17047
- delete active.__pixldocsLogicalGroupIds;
17048
- suppressGroupMemberBordersRef.current = active.getObjects();
17069
+ applyLogicalGroupSelectionVisualState(active, selectedGroupSelectionId);
17049
17070
  } else {
17050
17071
  delete active.__pixldocsGroupSelection;
17051
17072
  active.__pixldocsLogicalGroupIds = selectedGroupIds;
@@ -17085,8 +17106,7 @@ const PageCanvas = forwardRef(
17085
17106
  const selection = new fabric.ActiveSelection(toSelect, { canvas: fc });
17086
17107
  if (selectedGroupSelectionId) {
17087
17108
  if (isPureSingleGroupSelection) {
17088
- selection.__pixldocsGroupSelection = selectedGroupSelectionId;
17089
- suppressGroupMemberBordersRef.current = toSelect;
17109
+ applyLogicalGroupSelectionVisualState(selection, selectedGroupSelectionId);
17090
17110
  } else {
17091
17111
  selection.__pixldocsLogicalGroupIds = selectedGroupIds;
17092
17112
  selection.hasBorders = true;
@@ -24721,9 +24741,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
24721
24741
  }
24722
24742
  return svgString;
24723
24743
  }
24724
- const resolvedPackageVersion = "0.5.346";
24744
+ const resolvedPackageVersion = "0.5.348";
24725
24745
  const PACKAGE_VERSION = resolvedPackageVersion;
24726
- const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.346";
24746
+ const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.348";
24727
24747
  const roundParityValue = (value) => {
24728
24748
  if (typeof value !== "number") return value;
24729
24749
  return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
@@ -25537,7 +25557,7 @@ class PixldocsRenderer {
25537
25557
  await this.waitForCanvasScene(container, cloned, i);
25538
25558
  }
25539
25559
  console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
25540
- const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-Bbi4foK-.js");
25560
+ const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-CXxYlE0-.js");
25541
25561
  const prepared = preparePagesForExport(
25542
25562
  cloned.pages,
25543
25563
  canvasWidth,
@@ -27857,7 +27877,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
27857
27877
  if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
27858
27878
  sanitizeSvgTreeForPdf(svgToDraw);
27859
27879
  try {
27860
- const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await import("./vectorPdfExport-Bbi4foK-.js");
27880
+ const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await import("./vectorPdfExport-CXxYlE0-.js");
27861
27881
  try {
27862
27882
  await logTextMeasurementDiagnostic(svgToDraw);
27863
27883
  } catch {
@@ -28257,4 +28277,4 @@ export {
28257
28277
  buildTeaserBlurFlatKeys as y,
28258
28278
  collectFontDescriptorsFromConfig as z
28259
28279
  };
28260
- //# sourceMappingURL=index-Jiw7-9ee.js.map
28280
+ //# sourceMappingURL=index-BbbkWYa_.js.map