@pixldocs/canvas-renderer 0.5.302 → 0.5.303
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.
- package/dist/{index-ZeWTxoUj.js → index-BZNOM2c8.js} +62 -8
- package/dist/index-BZNOM2c8.js.map +1 -0
- package/dist/{index-Basn7lBW.cjs → index-RzHOtjZi.cjs} +62 -8
- package/dist/index-RzHOtjZi.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/{vectorPdfExport-DXYVw9V2.cjs → vectorPdfExport-BWWx6ATR.cjs} +4 -4
- package/dist/{vectorPdfExport-DXYVw9V2.cjs.map → vectorPdfExport-BWWx6ATR.cjs.map} +1 -1
- package/dist/{vectorPdfExport-Bje676YF.js → vectorPdfExport-DlOAYoOr.js} +4 -4
- package/dist/{vectorPdfExport-Bje676YF.js.map → vectorPdfExport-DlOAYoOr.js.map} +1 -1
- package/package.json +1 -1
- package/dist/index-Basn7lBW.cjs.map +0 -1
- package/dist/index-ZeWTxoUj.js.map +0 -1
|
@@ -11348,6 +11348,7 @@ const PageCanvas = forwardRef(
|
|
|
11348
11348
|
const lastTextEditDimensionsRef = useRef(null);
|
|
11349
11349
|
const lastResizeScaleTargetRef = useRef(null);
|
|
11350
11350
|
const activeSelectionResizeHandleRef = useRef(null);
|
|
11351
|
+
const groupShiftReflowSnapshotRef = useRef(null);
|
|
11351
11352
|
const preserveSelectionAfterTransformIdRef = useRef(null);
|
|
11352
11353
|
const groupSelectionTransformStartRef = useRef(null);
|
|
11353
11354
|
const activeSelectionMoveStartRef = useRef(null);
|
|
@@ -13505,7 +13506,7 @@ const PageCanvas = forwardRef(
|
|
|
13505
13506
|
fabricCanvas.on("selection:cleared", () => {
|
|
13506
13507
|
});
|
|
13507
13508
|
fabricCanvas.on("object:scaling", (e) => {
|
|
13508
|
-
var _a2, _b2, _c;
|
|
13509
|
+
var _a2, _b2, _c, _d, _e, _f;
|
|
13509
13510
|
if (!isActiveRef.current) return;
|
|
13510
13511
|
const t = e.target;
|
|
13511
13512
|
if (t) lastResizeScaleTargetRef.current = t;
|
|
@@ -13682,6 +13683,33 @@ const PageCanvas = forwardRef(
|
|
|
13682
13683
|
const isXSide = corner === "ml" || corner === "mr";
|
|
13683
13684
|
const sAxis = isXSide ? Math.abs(obj.scaleX ?? 1) : Math.abs(obj.scaleY ?? 1);
|
|
13684
13685
|
if (sAxis > 1e-3) {
|
|
13686
|
+
if (isXSide && ((_b2 = groupShiftReflowSnapshotRef.current) == null ? void 0 : _b2.selection) !== obj) {
|
|
13687
|
+
groupShiftReflowSnapshotRef.current = null;
|
|
13688
|
+
const logicalGroupId = obj.__pixldocsGroupSelection;
|
|
13689
|
+
if (logicalGroupId) {
|
|
13690
|
+
try {
|
|
13691
|
+
const state = useEditorStore.getState();
|
|
13692
|
+
const pageChildren2 = ((_c = state.canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _c.children) ?? [];
|
|
13693
|
+
const groupNode = findNodeById(pageChildren2, logicalGroupId);
|
|
13694
|
+
if (groupNode && isGroup(groupNode) && !isStackLayoutMode(groupNode.layoutMode)) {
|
|
13695
|
+
const entries = obj.getObjects().map((c) => ({
|
|
13696
|
+
obj: c,
|
|
13697
|
+
id: getObjectId(c) ?? "",
|
|
13698
|
+
top0: c.top ?? 0,
|
|
13699
|
+
height0: (c.height ?? 0) * Math.abs(c.scaleY ?? 1)
|
|
13700
|
+
})).filter((e2) => e2.id).sort((a, b) => a.top0 - b.top0);
|
|
13701
|
+
if (entries.length > 1) {
|
|
13702
|
+
const gaps = [];
|
|
13703
|
+
for (let i = 1; i < entries.length; i++) {
|
|
13704
|
+
gaps.push(Math.max(0, entries[i].top0 - (entries[i - 1].top0 + entries[i - 1].height0)));
|
|
13705
|
+
}
|
|
13706
|
+
groupShiftReflowSnapshotRef.current = { selection: obj, groupId: logicalGroupId, children: entries, gaps };
|
|
13707
|
+
}
|
|
13708
|
+
}
|
|
13709
|
+
} catch {
|
|
13710
|
+
}
|
|
13711
|
+
}
|
|
13712
|
+
}
|
|
13685
13713
|
const asW0 = obj.width ?? 0;
|
|
13686
13714
|
const asH0 = obj.height ?? 0;
|
|
13687
13715
|
const asSx0 = obj.scaleX ?? 1;
|
|
@@ -13691,7 +13719,7 @@ const PageCanvas = forwardRef(
|
|
|
13691
13719
|
const asRect0 = obj.getBoundingRect();
|
|
13692
13720
|
let didReflowTextChild = false;
|
|
13693
13721
|
for (const child of obj.getObjects()) {
|
|
13694
|
-
if (child instanceof fabric.Group && (child.__cropGroup || ((
|
|
13722
|
+
if (child instanceof fabric.Group && (child.__cropGroup || ((_d = child._ct) == null ? void 0 : _d.isCropGroup))) {
|
|
13695
13723
|
const ct = child.__cropData;
|
|
13696
13724
|
if (!ct) continue;
|
|
13697
13725
|
if (isXSide) {
|
|
@@ -13796,6 +13824,31 @@ const PageCanvas = forwardRef(
|
|
|
13796
13824
|
didReflowTextChild = true;
|
|
13797
13825
|
}
|
|
13798
13826
|
}
|
|
13827
|
+
if (isXSide && ((_e = groupShiftReflowSnapshotRef.current) == null ? void 0 : _e.selection) === obj) {
|
|
13828
|
+
const snap = groupShiftReflowSnapshotRef.current;
|
|
13829
|
+
let prevBottom = -Infinity;
|
|
13830
|
+
let didShift = false;
|
|
13831
|
+
for (let i = 0; i < snap.children.length; i++) {
|
|
13832
|
+
const entry = snap.children[i];
|
|
13833
|
+
const c = entry.obj;
|
|
13834
|
+
let liveH;
|
|
13835
|
+
if (c instanceof fabric.Textbox) {
|
|
13836
|
+
liveH = c.height ?? entry.height0;
|
|
13837
|
+
} else {
|
|
13838
|
+
liveH = (c.height ?? entry.height0) * Math.abs(c.scaleY ?? 1);
|
|
13839
|
+
}
|
|
13840
|
+
const gap = i === 0 ? 0 : snap.gaps[i - 1];
|
|
13841
|
+
const targetTop = i === 0 ? entry.top0 : Math.max(entry.top0, prevBottom + gap);
|
|
13842
|
+
if (Math.abs((c.top ?? 0) - targetTop) > 0.5) {
|
|
13843
|
+
c._set("top", targetTop);
|
|
13844
|
+
c.setCoords();
|
|
13845
|
+
c.dirty = true;
|
|
13846
|
+
didShift = true;
|
|
13847
|
+
}
|
|
13848
|
+
prevBottom = targetTop + liveH;
|
|
13849
|
+
}
|
|
13850
|
+
if (didShift) didReflowTextChild = true;
|
|
13851
|
+
}
|
|
13799
13852
|
if (isXSide && didReflowTextChild && typeof obj.triggerLayout === "function") {
|
|
13800
13853
|
try {
|
|
13801
13854
|
obj.triggerLayout();
|
|
@@ -13909,7 +13962,7 @@ const PageCanvas = forwardRef(
|
|
|
13909
13962
|
setGuides(gridGuidesForScale.length ? [...scaleGuides, ...gridGuidesForScale] : scaleGuides);
|
|
13910
13963
|
if (drilledGroupIdRef.current) {
|
|
13911
13964
|
try {
|
|
13912
|
-
(
|
|
13965
|
+
(_f = fabricCanvas.__updateDrilledGroupOutline) == null ? void 0 : _f.call(fabricCanvas);
|
|
13913
13966
|
} catch {
|
|
13914
13967
|
}
|
|
13915
13968
|
}
|
|
@@ -14116,6 +14169,7 @@ const PageCanvas = forwardRef(
|
|
|
14116
14169
|
}
|
|
14117
14170
|
} catch {
|
|
14118
14171
|
}
|
|
14172
|
+
groupShiftReflowSnapshotRef.current = null;
|
|
14119
14173
|
lockEdits();
|
|
14120
14174
|
const modifiedTarget = e.target;
|
|
14121
14175
|
const modifiedTargetId = modifiedTarget ? getObjectId(modifiedTarget) : null;
|
|
@@ -24104,9 +24158,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
|
|
|
24104
24158
|
}
|
|
24105
24159
|
return svgString;
|
|
24106
24160
|
}
|
|
24107
|
-
const resolvedPackageVersion = "0.5.
|
|
24161
|
+
const resolvedPackageVersion = "0.5.303";
|
|
24108
24162
|
const PACKAGE_VERSION = resolvedPackageVersion;
|
|
24109
|
-
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.
|
|
24163
|
+
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.303";
|
|
24110
24164
|
const roundParityValue = (value) => {
|
|
24111
24165
|
if (typeof value !== "number") return value;
|
|
24112
24166
|
return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
|
|
@@ -24920,7 +24974,7 @@ class PixldocsRenderer {
|
|
|
24920
24974
|
await this.waitForCanvasScene(container, cloned, i);
|
|
24921
24975
|
}
|
|
24922
24976
|
console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
|
|
24923
|
-
const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-
|
|
24977
|
+
const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-DlOAYoOr.js");
|
|
24924
24978
|
const prepared = preparePagesForExport(
|
|
24925
24979
|
cloned.pages,
|
|
24926
24980
|
canvasWidth,
|
|
@@ -27240,7 +27294,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
|
|
|
27240
27294
|
if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
|
|
27241
27295
|
sanitizeSvgTreeForPdf(svgToDraw);
|
|
27242
27296
|
try {
|
|
27243
|
-
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await import("./vectorPdfExport-
|
|
27297
|
+
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await import("./vectorPdfExport-DlOAYoOr.js");
|
|
27244
27298
|
try {
|
|
27245
27299
|
await logTextMeasurementDiagnostic(svgToDraw);
|
|
27246
27300
|
} catch {
|
|
@@ -27640,4 +27694,4 @@ export {
|
|
|
27640
27694
|
buildTeaserBlurFlatKeys as y,
|
|
27641
27695
|
collectFontDescriptorsFromConfig as z
|
|
27642
27696
|
};
|
|
27643
|
-
//# sourceMappingURL=index-
|
|
27697
|
+
//# sourceMappingURL=index-BZNOM2c8.js.map
|