@pixldocs/canvas-renderer 0.5.338 → 0.5.340

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.
@@ -11360,10 +11360,20 @@ const PageCanvas = react.forwardRef(
11360
11360
  const [ready, setReady] = react.useState(false);
11361
11361
  const [unlockRequestId, setUnlockRequestId] = react.useState(0);
11362
11362
  const applyLogicalGroupSelectionVisualState = react.useCallback((selection, groupId) => {
11363
- var _a2;
11363
+ var _a2, _b2;
11364
11364
  selection.__pixldocsGroupSelection = groupId;
11365
11365
  delete selection.__pixldocsLogicalGroupIds;
11366
11366
  selection.hasBorders = true;
11367
+ try {
11368
+ const pageChildren2 = ((_a2 = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _a2.children) ?? [];
11369
+ const groupNode = findNodeById(pageChildren2, groupId);
11370
+ const groupAngle = groupNode && isGroup(groupNode) ? Number(groupNode.angle ?? 0) : 0;
11371
+ if (Number.isFinite(groupAngle) && Math.abs(groupAngle) > 0.01) {
11372
+ selection.set({ angle: groupAngle, scaleX: 1, scaleY: 1, skewX: 0, skewY: 0 });
11373
+ selection.setCoords();
11374
+ }
11375
+ } catch {
11376
+ }
11367
11377
  const members = selection.getObjects();
11368
11378
  for (const prev of suppressGroupMemberBordersRef.current) {
11369
11379
  if (members.includes(prev)) continue;
@@ -11387,7 +11397,7 @@ const PageCanvas = react.forwardRef(
11387
11397
  if (m.__pixldocsOrigHasControls === void 0) m.__pixldocsOrigHasControls = m.hasControls;
11388
11398
  m.hasBorders = false;
11389
11399
  m.hasControls = false;
11390
- if (m.__cropGroup || ((_a2 = m._ct) == null ? void 0 : _a2.isCropGroup)) {
11400
+ if (m.__cropGroup || ((_b2 = m._ct) == null ? void 0 : _b2.isCropGroup)) {
11391
11401
  if (m.__pixldocsOrigLockScalingX === void 0) {
11392
11402
  m.__pixldocsOrigLockScalingX = m.lockScalingX;
11393
11403
  m.__pixldocsOrigLockScalingY = m.lockScalingY;
@@ -11397,7 +11407,7 @@ const PageCanvas = react.forwardRef(
11397
11407
  }
11398
11408
  }
11399
11409
  applyWarpAwareSelectionBorders(selection);
11400
- }, []);
11410
+ }, [pageId]);
11401
11411
  const pageBoundsOptions = react.useMemo(
11402
11412
  () => ({ pageContentWidth: canvasWidth, pageContentHeight: canvasHeight }),
11403
11413
  [canvasWidth, canvasHeight]
@@ -14841,6 +14851,11 @@ const PageCanvas = react.forwardRef(
14841
14851
  }
14842
14852
  }
14843
14853
  const isActiveSelectionSideResize = isActiveSelection && (activeSelectionResizeHandle === "ml" || activeSelectionResizeHandle === "mr" || activeSelectionResizeHandle === "mt" || activeSelectionResizeHandle === "mb");
14854
+ const normalizeAngle = (angle) => (angle % 360 + 360) % 360;
14855
+ const shortestAngleDelta = (a, b) => {
14856
+ const diff = Math.abs(normalizeAngle(a) - normalizeAngle(b));
14857
+ return Math.min(diff, 360 - diff);
14858
+ };
14844
14859
  if (selectedElementIds.length > 0) {
14845
14860
  const firstObj = activeObjects[0];
14846
14861
  const firstId = getObjectId(firstObj);
@@ -14904,12 +14919,9 @@ const PageCanvas = react.forwardRef(
14904
14919
  const deltaY = movedGroupTop - groupAbs.top;
14905
14920
  const hadResizeHandle = isActiveSelection && !!activeSelectionResizeHandle;
14906
14921
  const hadScale = isActiveSelection && activeObj && (hadResizeHandle || Math.abs((activeObj.scaleX ?? 1) - 1) > 0.01 || Math.abs((activeObj.scaleY ?? 1) - 1) > 0.01);
14907
- const startSelAngle = (((transformStart == null ? void 0 : transformStart.selectionAngle) ?? 0) % 360 + 360) % 360;
14908
- const currentSelAngle = isActiveSelection && activeObj ? ((activeObj.angle ?? 0) % 360 + 360) % 360 : 0;
14909
- const angleDelta = Math.min(
14910
- Math.abs(currentSelAngle - startSelAngle),
14911
- 360 - Math.abs(currentSelAngle - startSelAngle)
14912
- );
14922
+ const startSelAngle = normalizeAngle((transformStart == null ? void 0 : transformStart.selectionAngle) ?? 0);
14923
+ const currentSelAngle = isActiveSelection && activeObj ? normalizeAngle(activeObj.angle ?? 0) : 0;
14924
+ const angleDelta = shortestAngleDelta(currentSelAngle, startSelAngle);
14913
14925
  const hadRotation = isActiveSelection && activeObj && angleDelta > 0.01;
14914
14926
  if (!isActiveSelectionSideResize && !hadScale && !hadRotation && (Math.abs(deltaX) > 0.1 || Math.abs(deltaY) > 0.1)) {
14915
14927
  const { updateNode: updateNodeStore, commitHistory: commitHistoryStore, getCurrentElements } = useEditorStore.getState();
@@ -15467,8 +15479,7 @@ const PageCanvas = react.forwardRef(
15467
15479
  for (const gid of stackGroupsToReflow) {
15468
15480
  useEditorStore.getState().reflowStackGroupInPage(pageId, gid);
15469
15481
  }
15470
- const shouldRebuildActiveSelectionAfterPersist = activeObj instanceof fabric__namespace.ActiveSelection && (!!activeSelectionResizeHandle || pendingCropGroupFrameBakes.length > 0 || Math.abs((activeObj.scaleX ?? 1) - 1) > 1e-3 || Math.abs((activeObj.scaleY ?? 1) - 1) > 1e-3);
15471
- if (activeObj instanceof fabric__namespace.ActiveSelection && activeObjects.length > 0 && shouldRebuildActiveSelectionAfterPersist) {
15482
+ if (activeObj instanceof fabric__namespace.ActiveSelection && activeObjects.length > 0) {
15472
15483
  const wasGroupSel = activeObj.__pixldocsGroupSelection;
15473
15484
  const membersToReselect = activeObjects.filter((o) => {
15474
15485
  const oid = getObjectId(o);
@@ -24597,9 +24608,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
24597
24608
  }
24598
24609
  return svgString;
24599
24610
  }
24600
- const resolvedPackageVersion = "0.5.338";
24611
+ const resolvedPackageVersion = "0.5.340";
24601
24612
  const PACKAGE_VERSION = resolvedPackageVersion;
24602
- const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.338";
24613
+ const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.340";
24603
24614
  const roundParityValue = (value) => {
24604
24615
  if (typeof value !== "number") return value;
24605
24616
  return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
@@ -25413,7 +25424,7 @@ class PixldocsRenderer {
25413
25424
  await this.waitForCanvasScene(container, cloned, i);
25414
25425
  }
25415
25426
  console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
25416
- const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-B_BXZamD.cjs"));
25427
+ const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-DHQyGl_Z.cjs"));
25417
25428
  const prepared = preparePagesForExport(
25418
25429
  cloned.pages,
25419
25430
  canvasWidth,
@@ -27733,7 +27744,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
27733
27744
  if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
27734
27745
  sanitizeSvgTreeForPdf(svgToDraw);
27735
27746
  try {
27736
- const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-B_BXZamD.cjs"));
27747
+ const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-DHQyGl_Z.cjs"));
27737
27748
  try {
27738
27749
  await logTextMeasurementDiagnostic(svgToDraw);
27739
27750
  } catch {
@@ -28130,4 +28141,4 @@ exports.setAutoShrinkDebug = setAutoShrinkDebug;
28130
28141
  exports.setBundledAssetPrefixes = setBundledAssetPrefixes;
28131
28142
  exports.warmResolvedTemplateForPreview = warmResolvedTemplateForPreview;
28132
28143
  exports.warmTemplateFromForm = warmTemplateFromForm;
28133
- //# sourceMappingURL=index-qdd3MkaO.cjs.map
28144
+ //# sourceMappingURL=index-SISBmJf0.cjs.map