@superdoc-dev/cli 0.3.0-next.3 → 0.3.0-next.4
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.js +677 -604
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -131315,7 +131315,7 @@ var init_remark_gfm_CjV8kaUy_es = __esm(() => {
|
|
|
131315
131315
|
init_remark_gfm_z_sDF4ss_es();
|
|
131316
131316
|
});
|
|
131317
131317
|
|
|
131318
|
-
// ../../packages/superdoc/dist/chunks/src-
|
|
131318
|
+
// ../../packages/superdoc/dist/chunks/src-CcGVOrgc.es.js
|
|
131319
131319
|
function deleteProps(obj, propOrProps) {
|
|
131320
131320
|
const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
|
|
131321
131321
|
const removeNested = (target, pathParts, index2 = 0) => {
|
|
@@ -139169,9 +139169,17 @@ function extractColumns(elements) {
|
|
|
139169
139169
|
const cols = elements.find((el) => el?.name === "w:cols");
|
|
139170
139170
|
if (!cols?.attributes)
|
|
139171
139171
|
return;
|
|
139172
|
+
const count = parseColumnCount(cols.attributes["w:num"]);
|
|
139173
|
+
const equalWidthRaw = cols.attributes["w:equalWidth"];
|
|
139174
|
+
const equalWidth = equalWidthRaw === "0" || equalWidthRaw === 0 || equalWidthRaw === false ? false : equalWidthRaw === "1" || equalWidthRaw === 1 || equalWidthRaw === true ? true : undefined;
|
|
139175
|
+
const columnChildren = Array.isArray(cols.elements) ? cols.elements.filter((child) => child?.name === "w:col") : [];
|
|
139176
|
+
const gapInches = parseColumnGap(cols.attributes["w:space"] ?? columnChildren.find((child) => child?.attributes?.["w:space"] != null)?.attributes?.["w:space"]);
|
|
139177
|
+
const widths = columnChildren.map((child) => Number(child.attributes?.["w:w"])).filter((widthTwips) => Number.isFinite(widthTwips) && widthTwips > 0).map((widthTwips) => widthTwips / 1440 * PX_PER_INCH$2);
|
|
139172
139178
|
return {
|
|
139173
|
-
count
|
|
139174
|
-
gap:
|
|
139179
|
+
count,
|
|
139180
|
+
gap: gapInches * PX_PER_INCH$2,
|
|
139181
|
+
...widths.length > 0 ? { widths } : {},
|
|
139182
|
+
...equalWidth !== undefined ? { equalWidth } : {}
|
|
139175
139183
|
};
|
|
139176
139184
|
}
|
|
139177
139185
|
function extractVerticalAlign(elements) {
|
|
@@ -139222,6 +139230,512 @@ function extractSectionData(para) {
|
|
|
139222
139230
|
vAlign
|
|
139223
139231
|
};
|
|
139224
139232
|
}
|
|
139233
|
+
function computeTabStops$1(context) {
|
|
139234
|
+
const { explicitStops, defaultTabInterval, paragraphIndent } = context;
|
|
139235
|
+
const leftIndent = paragraphIndent.left ?? 0;
|
|
139236
|
+
const hanging = paragraphIndent.hanging ?? 0;
|
|
139237
|
+
const effectiveMinIndent = Math.max(0, leftIndent - hanging);
|
|
139238
|
+
const clearPositions = explicitStops.filter((stop) => stop.val === "clear").map((stop) => stop.pos);
|
|
139239
|
+
const filteredExplicitStops = explicitStops.filter((stop) => stop.val !== "clear").filter((stop) => stop.pos >= effectiveMinIndent);
|
|
139240
|
+
const maxExplicit = filteredExplicitStops.reduce((max$2, stop) => Math.max(max$2, stop.pos), 0);
|
|
139241
|
+
const hasExplicit = filteredExplicitStops.length > 0;
|
|
139242
|
+
const stops = [...filteredExplicitStops];
|
|
139243
|
+
const defaultStart = hasExplicit ? Math.max(maxExplicit, leftIndent) : 0;
|
|
139244
|
+
let pos = defaultStart;
|
|
139245
|
+
const targetLimit = Math.max(defaultStart, leftIndent) + 14400;
|
|
139246
|
+
while (pos < targetLimit) {
|
|
139247
|
+
pos += defaultTabInterval;
|
|
139248
|
+
const hasExplicitStop = filteredExplicitStops.some((s2) => Math.abs(s2.pos - pos) < 20);
|
|
139249
|
+
const hasClearStop = clearPositions.some((clearPos) => Math.abs(clearPos - pos) < 20);
|
|
139250
|
+
if (!hasExplicitStop && !hasClearStop && pos >= leftIndent)
|
|
139251
|
+
stops.push({
|
|
139252
|
+
val: "start",
|
|
139253
|
+
pos,
|
|
139254
|
+
leader: "none"
|
|
139255
|
+
});
|
|
139256
|
+
}
|
|
139257
|
+
return stops.sort((a2, b$1) => a2.pos - b$1.pos);
|
|
139258
|
+
}
|
|
139259
|
+
function layoutWithTabs(runs2, stops, lineWidth, options = {}) {
|
|
139260
|
+
const result = [];
|
|
139261
|
+
let currentX = 0;
|
|
139262
|
+
let currentStopIndex = 0;
|
|
139263
|
+
let pendingDecimalStop;
|
|
139264
|
+
let pendingCenterStop;
|
|
139265
|
+
let pendingEndStop;
|
|
139266
|
+
const decimalSeparator = options.decimalSeparator ?? ".";
|
|
139267
|
+
for (const entry of runs2) {
|
|
139268
|
+
const { run: run2, width, isTab } = entry;
|
|
139269
|
+
if (isTab) {
|
|
139270
|
+
while (currentStopIndex < stops.length && stops[currentStopIndex].pos <= currentX)
|
|
139271
|
+
currentStopIndex++;
|
|
139272
|
+
if (currentStopIndex < stops.length) {
|
|
139273
|
+
const stop = stops[currentStopIndex];
|
|
139274
|
+
result.push({
|
|
139275
|
+
run: run2,
|
|
139276
|
+
x: currentX,
|
|
139277
|
+
width: 0,
|
|
139278
|
+
tabStop: stop
|
|
139279
|
+
});
|
|
139280
|
+
currentX = stop.pos;
|
|
139281
|
+
pendingDecimalStop = stop.val === "decimal" ? stop : undefined;
|
|
139282
|
+
pendingCenterStop = stop.val === "center" ? stop : undefined;
|
|
139283
|
+
pendingEndStop = stop.val === "end" ? stop : undefined;
|
|
139284
|
+
currentStopIndex++;
|
|
139285
|
+
} else {
|
|
139286
|
+
result.push({
|
|
139287
|
+
run: run2,
|
|
139288
|
+
x: currentX,
|
|
139289
|
+
width
|
|
139290
|
+
});
|
|
139291
|
+
currentX += width;
|
|
139292
|
+
pendingDecimalStop = undefined;
|
|
139293
|
+
pendingCenterStop = undefined;
|
|
139294
|
+
pendingEndStop = undefined;
|
|
139295
|
+
}
|
|
139296
|
+
} else {
|
|
139297
|
+
if (pendingDecimalStop) {
|
|
139298
|
+
currentX = computeDecimalAlignedX(entry, pendingDecimalStop, options, decimalSeparator);
|
|
139299
|
+
pendingDecimalStop = undefined;
|
|
139300
|
+
} else if (pendingCenterStop) {
|
|
139301
|
+
currentX = computeCenterAlignedX(entry, pendingCenterStop);
|
|
139302
|
+
pendingCenterStop = undefined;
|
|
139303
|
+
} else if (pendingEndStop) {
|
|
139304
|
+
currentX = computeEndAlignedX(entry, pendingEndStop);
|
|
139305
|
+
pendingEndStop = undefined;
|
|
139306
|
+
}
|
|
139307
|
+
result.push({
|
|
139308
|
+
run: run2,
|
|
139309
|
+
x: currentX,
|
|
139310
|
+
width
|
|
139311
|
+
});
|
|
139312
|
+
currentX += width;
|
|
139313
|
+
}
|
|
139314
|
+
}
|
|
139315
|
+
return result;
|
|
139316
|
+
}
|
|
139317
|
+
function computeDecimalAlignedX(entry, stop, options, separator) {
|
|
139318
|
+
const text5 = entry.text ?? "";
|
|
139319
|
+
const decimalIndex = text5.indexOf(separator);
|
|
139320
|
+
if (decimalIndex <= 0)
|
|
139321
|
+
return stop.pos;
|
|
139322
|
+
const beforeText = text5.slice(0, decimalIndex);
|
|
139323
|
+
let beforeWidth;
|
|
139324
|
+
if (options.measureTextWidth)
|
|
139325
|
+
beforeWidth = options.measureTextWidth(entry.run, beforeText);
|
|
139326
|
+
else if (text5.length > 0)
|
|
139327
|
+
beforeWidth = entry.width * decimalIndex / text5.length;
|
|
139328
|
+
else
|
|
139329
|
+
beforeWidth = 0;
|
|
139330
|
+
const targetX = stop.pos - beforeWidth;
|
|
139331
|
+
return targetX < 0 ? 0 : targetX;
|
|
139332
|
+
}
|
|
139333
|
+
function computeCenterAlignedX(entry, stop) {
|
|
139334
|
+
const width = entry.width;
|
|
139335
|
+
const targetX = stop.pos - width / 2;
|
|
139336
|
+
return targetX < 0 ? 0 : targetX;
|
|
139337
|
+
}
|
|
139338
|
+
function computeEndAlignedX(entry, stop) {
|
|
139339
|
+
const width = entry.width;
|
|
139340
|
+
const targetX = stop.pos - width;
|
|
139341
|
+
return targetX < 0 ? 0 : targetX;
|
|
139342
|
+
}
|
|
139343
|
+
function calculateTabWidth(params$1) {
|
|
139344
|
+
const { currentX, tabStops, paragraphWidth, defaultTabDistance: defaultTabDistance$1, defaultLineLength: defaultLineLength$1, followingText = "", measureText: measureText$1, decimalSeparator = "." } = params$1;
|
|
139345
|
+
const nextStop = tabStops.find((stop) => stop.val !== "clear" && stop.pos > currentX);
|
|
139346
|
+
const fallbackWidth = () => {
|
|
139347
|
+
let tabWidth = defaultTabDistance$1 - currentX % defaultLineLength$1 % defaultTabDistance$1;
|
|
139348
|
+
if (tabWidth <= 0)
|
|
139349
|
+
tabWidth = defaultTabDistance$1;
|
|
139350
|
+
return {
|
|
139351
|
+
width: tabWidth,
|
|
139352
|
+
alignment: "default",
|
|
139353
|
+
tabStopPosUsed: "default"
|
|
139354
|
+
};
|
|
139355
|
+
};
|
|
139356
|
+
if (!nextStop)
|
|
139357
|
+
return fallbackWidth();
|
|
139358
|
+
let width = Math.min(nextStop.pos, paragraphWidth) - currentX;
|
|
139359
|
+
const alignment$1 = nextStop.val;
|
|
139360
|
+
if (alignment$1 === "bar")
|
|
139361
|
+
return {
|
|
139362
|
+
width: 0,
|
|
139363
|
+
leader: nextStop.leader,
|
|
139364
|
+
alignment: alignment$1,
|
|
139365
|
+
tabStopPosUsed: nextStop.pos
|
|
139366
|
+
};
|
|
139367
|
+
if (alignment$1 === "center" || alignment$1 === "end") {
|
|
139368
|
+
const textWidth = measureText$1 ? measureText$1(followingText) : 0;
|
|
139369
|
+
if (alignment$1 === "center")
|
|
139370
|
+
width -= textWidth / 2;
|
|
139371
|
+
else
|
|
139372
|
+
width -= textWidth;
|
|
139373
|
+
} else if (alignment$1 === "decimal") {
|
|
139374
|
+
const decimalIndex = followingText.indexOf(decimalSeparator);
|
|
139375
|
+
if (decimalIndex >= 0) {
|
|
139376
|
+
const before = followingText.slice(0, decimalIndex);
|
|
139377
|
+
const beforeWidth = measureText$1 ? measureText$1(before) : 0;
|
|
139378
|
+
width -= beforeWidth;
|
|
139379
|
+
}
|
|
139380
|
+
}
|
|
139381
|
+
if (width < 1)
|
|
139382
|
+
return fallbackWidth();
|
|
139383
|
+
return {
|
|
139384
|
+
width,
|
|
139385
|
+
leader: nextStop.leader,
|
|
139386
|
+
alignment: alignment$1,
|
|
139387
|
+
tabStopPosUsed: nextStop.pos
|
|
139388
|
+
};
|
|
139389
|
+
}
|
|
139390
|
+
function resolveColumnWidths(columns, availableWidth) {
|
|
139391
|
+
const width = availableWidth / columns.length;
|
|
139392
|
+
return columns.map(() => width);
|
|
139393
|
+
}
|
|
139394
|
+
function measureRowHeights(cells, _columnWidths) {
|
|
139395
|
+
return cells.map(() => 20);
|
|
139396
|
+
}
|
|
139397
|
+
function effectiveTableCellSpacing(spacing, isBoundary, padding) {
|
|
139398
|
+
if (typeof spacing !== "number" || spacing <= 0)
|
|
139399
|
+
return 0;
|
|
139400
|
+
return isBoundary ? Math.max(0, spacing - padding) : spacing;
|
|
139401
|
+
}
|
|
139402
|
+
function shouldApplyJustify(params$1) {
|
|
139403
|
+
const { alignment: alignment$1, hasExplicitPositioning, isLastLineOfParagraph, paragraphEndsWithLineBreak, skipJustifyOverride } = params$1;
|
|
139404
|
+
if (alignment$1 !== "justify" && alignment$1 !== "both")
|
|
139405
|
+
return false;
|
|
139406
|
+
if (skipJustifyOverride === true)
|
|
139407
|
+
return false;
|
|
139408
|
+
if (hasExplicitPositioning)
|
|
139409
|
+
return false;
|
|
139410
|
+
if (isLastLineOfParagraph && !paragraphEndsWithLineBreak)
|
|
139411
|
+
return false;
|
|
139412
|
+
return true;
|
|
139413
|
+
}
|
|
139414
|
+
function calculateJustifySpacing(params$1) {
|
|
139415
|
+
const { lineWidth, availableWidth, spaceCount, shouldJustify } = params$1;
|
|
139416
|
+
if (!shouldJustify)
|
|
139417
|
+
return 0;
|
|
139418
|
+
if (spaceCount <= 0)
|
|
139419
|
+
return 0;
|
|
139420
|
+
return (availableWidth - lineWidth) / spaceCount;
|
|
139421
|
+
}
|
|
139422
|
+
function parseInsetClipPathForScale(clipPath) {
|
|
139423
|
+
const m$1 = clipPath.trim().match(/^inset\(\s*(\d+(?:\.\d+)?|\.\d+)%\s+(\d+(?:\.\d+)?|\.\d+)%\s+(\d+(?:\.\d+)?|\.\d+)%\s+(\d+(?:\.\d+)?|\.\d+)%\s*\)$/);
|
|
139424
|
+
if (!m$1)
|
|
139425
|
+
return null;
|
|
139426
|
+
const top$1 = Number(m$1[1]);
|
|
139427
|
+
const right$1 = Number(m$1[2]);
|
|
139428
|
+
const bottom$1 = Number(m$1[3]);
|
|
139429
|
+
const left$1 = Number(m$1[4]);
|
|
139430
|
+
if (![
|
|
139431
|
+
top$1,
|
|
139432
|
+
right$1,
|
|
139433
|
+
bottom$1,
|
|
139434
|
+
left$1
|
|
139435
|
+
].every(Number.isFinite))
|
|
139436
|
+
return null;
|
|
139437
|
+
const visibleW = 100 - left$1 - right$1;
|
|
139438
|
+
const visibleH = 100 - top$1 - bottom$1;
|
|
139439
|
+
if (visibleW <= 0 || visibleH <= 0)
|
|
139440
|
+
return null;
|
|
139441
|
+
const scaleX = 100 / visibleW;
|
|
139442
|
+
const scaleY = 100 / visibleH;
|
|
139443
|
+
return {
|
|
139444
|
+
scaleX,
|
|
139445
|
+
scaleY,
|
|
139446
|
+
translateX: -left$1 * scaleX,
|
|
139447
|
+
translateY: -top$1 * scaleY
|
|
139448
|
+
};
|
|
139449
|
+
}
|
|
139450
|
+
function formatInsetClipPathTransform(clipPath) {
|
|
139451
|
+
const scale = parseInsetClipPathForScale(clipPath);
|
|
139452
|
+
if (!scale)
|
|
139453
|
+
return;
|
|
139454
|
+
return `transform-origin: 0 0; transform: translate(${scale.translateX}%, ${scale.translateY}%) scale(${scale.scaleX}, ${scale.scaleY});`;
|
|
139455
|
+
}
|
|
139456
|
+
function computeLinePmRange$1(block, line) {
|
|
139457
|
+
if (!line)
|
|
139458
|
+
return {};
|
|
139459
|
+
if (block.kind !== "paragraph")
|
|
139460
|
+
return {};
|
|
139461
|
+
let pmStart;
|
|
139462
|
+
let pmEnd;
|
|
139463
|
+
for (let runIndex = line.fromRun;runIndex <= line.toRun; runIndex += 1) {
|
|
139464
|
+
const run2 = block.runs[runIndex];
|
|
139465
|
+
if (!run2)
|
|
139466
|
+
continue;
|
|
139467
|
+
const runPmStart = coercePmStart(run2);
|
|
139468
|
+
if (runPmStart == null)
|
|
139469
|
+
continue;
|
|
139470
|
+
if (isAtomicRunKind(run2.kind) || isImageLikeRun(run2)) {
|
|
139471
|
+
const runPmEnd = coercePmEnd(run2) ?? runPmStart + 1;
|
|
139472
|
+
if (pmStart == null)
|
|
139473
|
+
pmStart = runPmStart;
|
|
139474
|
+
pmEnd = runPmEnd;
|
|
139475
|
+
continue;
|
|
139476
|
+
}
|
|
139477
|
+
const runLength = coerceRunText(run2).length;
|
|
139478
|
+
const isFirstRun = runIndex === line.fromRun;
|
|
139479
|
+
const isLastRun = runIndex === line.toRun;
|
|
139480
|
+
const startOffset = isFirstRun ? line.fromChar : 0;
|
|
139481
|
+
const endOffset = isLastRun ? line.toChar : runLength;
|
|
139482
|
+
const sliceStart = runPmStart + startOffset;
|
|
139483
|
+
const sliceEnd = runPmStart + endOffset;
|
|
139484
|
+
if (pmStart == null)
|
|
139485
|
+
pmStart = sliceStart;
|
|
139486
|
+
pmEnd = sliceEnd;
|
|
139487
|
+
}
|
|
139488
|
+
return {
|
|
139489
|
+
pmStart,
|
|
139490
|
+
pmEnd
|
|
139491
|
+
};
|
|
139492
|
+
}
|
|
139493
|
+
function computeFragmentPmRange$1(block, lines, fromLine, toLine) {
|
|
139494
|
+
let pmStart;
|
|
139495
|
+
let pmEnd;
|
|
139496
|
+
for (let index2 = fromLine;index2 < toLine; index2 += 1) {
|
|
139497
|
+
const line = lines[index2];
|
|
139498
|
+
if (!line)
|
|
139499
|
+
continue;
|
|
139500
|
+
const range = computeLinePmRange$1(block, line);
|
|
139501
|
+
if (range.pmStart != null && pmStart == null)
|
|
139502
|
+
pmStart = range.pmStart;
|
|
139503
|
+
if (range.pmEnd != null)
|
|
139504
|
+
pmEnd = range.pmEnd;
|
|
139505
|
+
}
|
|
139506
|
+
return {
|
|
139507
|
+
pmStart,
|
|
139508
|
+
pmEnd
|
|
139509
|
+
};
|
|
139510
|
+
}
|
|
139511
|
+
function widthsEqual(a2, b$1) {
|
|
139512
|
+
if (!a2 && !b$1)
|
|
139513
|
+
return true;
|
|
139514
|
+
if (!a2 || !b$1)
|
|
139515
|
+
return false;
|
|
139516
|
+
if (a2.length !== b$1.length)
|
|
139517
|
+
return false;
|
|
139518
|
+
for (let i$1 = 0;i$1 < a2.length; i$1 += 1)
|
|
139519
|
+
if (a2[i$1] !== b$1[i$1])
|
|
139520
|
+
return false;
|
|
139521
|
+
return true;
|
|
139522
|
+
}
|
|
139523
|
+
function cloneColumnLayout(columns) {
|
|
139524
|
+
return columns ? {
|
|
139525
|
+
count: columns.count,
|
|
139526
|
+
gap: columns.gap,
|
|
139527
|
+
...Array.isArray(columns.widths) ? { widths: [...columns.widths] } : {},
|
|
139528
|
+
...columns.equalWidth !== undefined ? { equalWidth: columns.equalWidth } : {}
|
|
139529
|
+
} : {
|
|
139530
|
+
count: 1,
|
|
139531
|
+
gap: 0
|
|
139532
|
+
};
|
|
139533
|
+
}
|
|
139534
|
+
function normalizeColumnLayout(input2, contentWidth, epsilon = 0.0001) {
|
|
139535
|
+
const rawCount = input2 && Number.isFinite(input2.count) ? Math.floor(input2.count) : 1;
|
|
139536
|
+
const count = Math.max(1, rawCount || 1);
|
|
139537
|
+
const gap = Math.max(0, input2?.gap ?? 0);
|
|
139538
|
+
const availableWidth = contentWidth - gap * (count - 1);
|
|
139539
|
+
const explicitWidths = Array.isArray(input2?.widths) && input2.widths.length > 0 ? input2.widths.filter((width$1) => typeof width$1 === "number" && Number.isFinite(width$1) && width$1 > 0) : [];
|
|
139540
|
+
let widths = explicitWidths.length > 0 ? explicitWidths.slice(0, count) : Array.from({ length: count }, () => availableWidth > 0 ? availableWidth / count : contentWidth);
|
|
139541
|
+
if (widths.length < count) {
|
|
139542
|
+
const remaining = Math.max(0, availableWidth - widths.reduce((sum, width$1) => sum + width$1, 0));
|
|
139543
|
+
const fallbackWidth = count - widths.length > 0 ? remaining / (count - widths.length) : 0;
|
|
139544
|
+
widths.push(...Array.from({ length: count - widths.length }, () => fallbackWidth));
|
|
139545
|
+
}
|
|
139546
|
+
const totalExplicitWidth = widths.reduce((sum, width$1) => sum + width$1, 0);
|
|
139547
|
+
if (availableWidth > 0 && totalExplicitWidth > 0) {
|
|
139548
|
+
const scale = availableWidth / totalExplicitWidth;
|
|
139549
|
+
widths = widths.map((width$1) => Math.max(1, width$1 * scale));
|
|
139550
|
+
}
|
|
139551
|
+
const width = widths.reduce((max$2, value) => Math.max(max$2, value), 0);
|
|
139552
|
+
if (!Number.isFinite(width) || width <= epsilon)
|
|
139553
|
+
return {
|
|
139554
|
+
count: 1,
|
|
139555
|
+
gap: 0,
|
|
139556
|
+
width: Math.max(0, contentWidth)
|
|
139557
|
+
};
|
|
139558
|
+
return {
|
|
139559
|
+
count,
|
|
139560
|
+
gap,
|
|
139561
|
+
...widths.length > 0 ? { widths } : {},
|
|
139562
|
+
...input2?.equalWidth !== undefined ? { equalWidth: input2.equalWidth } : {},
|
|
139563
|
+
width
|
|
139564
|
+
};
|
|
139565
|
+
}
|
|
139566
|
+
function resolveSpacingIndent(style2, numbering) {
|
|
139567
|
+
const spacing = {
|
|
139568
|
+
before: style2.spacing?.before ?? 0,
|
|
139569
|
+
after: style2.spacing?.after ?? 0,
|
|
139570
|
+
line: style2.spacing?.line ?? 12,
|
|
139571
|
+
lineRule: style2.spacing?.lineRule ?? "auto"
|
|
139572
|
+
};
|
|
139573
|
+
let indent2 = {
|
|
139574
|
+
left: style2.indent?.left ?? 0,
|
|
139575
|
+
right: style2.indent?.right ?? 0,
|
|
139576
|
+
firstLine: style2.indent?.firstLine ?? 0,
|
|
139577
|
+
hanging: style2.indent?.hanging ?? 0
|
|
139578
|
+
};
|
|
139579
|
+
if (numbering?.indent)
|
|
139580
|
+
indent2 = {
|
|
139581
|
+
...indent2,
|
|
139582
|
+
left: numbering.indent.left ?? indent2.left,
|
|
139583
|
+
hanging: numbering.indent.hanging ?? indent2.hanging
|
|
139584
|
+
};
|
|
139585
|
+
return {
|
|
139586
|
+
spacing,
|
|
139587
|
+
indent: indent2
|
|
139588
|
+
};
|
|
139589
|
+
}
|
|
139590
|
+
function formatListLabel(level, indices) {
|
|
139591
|
+
const { format, text: template, start: start$1 } = level;
|
|
139592
|
+
if (format === "bullet" || format === "custom")
|
|
139593
|
+
return {
|
|
139594
|
+
text: template,
|
|
139595
|
+
width: estimateTextWidth(template)
|
|
139596
|
+
};
|
|
139597
|
+
let result = template;
|
|
139598
|
+
for (let i$1 = 0;i$1 < indices.length; i$1++) {
|
|
139599
|
+
const placeholder = `%${i$1 + 1}`;
|
|
139600
|
+
if (result.includes(placeholder)) {
|
|
139601
|
+
const formattedNum = formatNumber(indices[i$1] + start$1 - 1, format);
|
|
139602
|
+
result = result.replace(placeholder, formattedNum);
|
|
139603
|
+
}
|
|
139604
|
+
}
|
|
139605
|
+
return {
|
|
139606
|
+
text: result,
|
|
139607
|
+
width: estimateTextWidth(result)
|
|
139608
|
+
};
|
|
139609
|
+
}
|
|
139610
|
+
function computeListIndent(level) {
|
|
139611
|
+
const { indent: indent2 } = level;
|
|
139612
|
+
return {
|
|
139613
|
+
labelWidth: Math.abs(indent2.hanging),
|
|
139614
|
+
hangingIndent: indent2.hanging,
|
|
139615
|
+
firstLineIndent: indent2.left - Math.abs(indent2.hanging)
|
|
139616
|
+
};
|
|
139617
|
+
}
|
|
139618
|
+
function formatNumber(num, format) {
|
|
139619
|
+
switch (format) {
|
|
139620
|
+
case "decimal":
|
|
139621
|
+
return num.toString();
|
|
139622
|
+
case "lowerLetter":
|
|
139623
|
+
return toLetter(num, false);
|
|
139624
|
+
case "upperLetter":
|
|
139625
|
+
return toLetter(num, true);
|
|
139626
|
+
case "lowerRoman":
|
|
139627
|
+
return toRoman(num).toLowerCase();
|
|
139628
|
+
case "upperRoman":
|
|
139629
|
+
return toRoman(num);
|
|
139630
|
+
default:
|
|
139631
|
+
return num.toString();
|
|
139632
|
+
}
|
|
139633
|
+
}
|
|
139634
|
+
function toLetter(num, uppercase) {
|
|
139635
|
+
let result = "";
|
|
139636
|
+
let n = num;
|
|
139637
|
+
while (n > 0) {
|
|
139638
|
+
const remainder = (n - 1) % 26;
|
|
139639
|
+
result = String.fromCharCode((uppercase ? 65 : 97) + remainder) + result;
|
|
139640
|
+
n = Math.floor((n - 1) / 26);
|
|
139641
|
+
}
|
|
139642
|
+
return result || (uppercase ? "A" : "a");
|
|
139643
|
+
}
|
|
139644
|
+
function toRoman(num) {
|
|
139645
|
+
const lookup3 = [
|
|
139646
|
+
[1000, "M"],
|
|
139647
|
+
[900, "CM"],
|
|
139648
|
+
[500, "D"],
|
|
139649
|
+
[400, "CD"],
|
|
139650
|
+
[100, "C"],
|
|
139651
|
+
[90, "XC"],
|
|
139652
|
+
[50, "L"],
|
|
139653
|
+
[40, "XL"],
|
|
139654
|
+
[10, "X"],
|
|
139655
|
+
[9, "IX"],
|
|
139656
|
+
[5, "V"],
|
|
139657
|
+
[4, "IV"],
|
|
139658
|
+
[1, "I"]
|
|
139659
|
+
];
|
|
139660
|
+
let result = "";
|
|
139661
|
+
let remaining = num;
|
|
139662
|
+
for (const [value, numeral] of lookup3)
|
|
139663
|
+
while (remaining >= value) {
|
|
139664
|
+
result += numeral;
|
|
139665
|
+
remaining -= value;
|
|
139666
|
+
}
|
|
139667
|
+
return result;
|
|
139668
|
+
}
|
|
139669
|
+
function estimateTextWidth(text5) {
|
|
139670
|
+
return text5.length * 7;
|
|
139671
|
+
}
|
|
139672
|
+
function scaleWrapPolygon(ooxml, imageRect) {
|
|
139673
|
+
if (!ooxml || ooxml.length === 0)
|
|
139674
|
+
return [];
|
|
139675
|
+
let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
|
|
139676
|
+
for (const [x, y$1] of ooxml) {
|
|
139677
|
+
minX = Math.min(minX, x);
|
|
139678
|
+
minY = Math.min(minY, y$1);
|
|
139679
|
+
maxX = Math.max(maxX, x);
|
|
139680
|
+
maxY = Math.max(maxY, y$1);
|
|
139681
|
+
}
|
|
139682
|
+
const ooxmlWidth = maxX - minX;
|
|
139683
|
+
const ooxmlHeight = maxY - minY;
|
|
139684
|
+
if (ooxmlWidth === 0 || ooxmlHeight === 0)
|
|
139685
|
+
return [];
|
|
139686
|
+
const scaleX = imageRect.width / ooxmlWidth;
|
|
139687
|
+
const scaleY = imageRect.height / ooxmlHeight;
|
|
139688
|
+
return ooxml.map(([x, y$1]) => [imageRect.x + (x - minX) * scaleX, imageRect.y + (y$1 - minY) * scaleY]);
|
|
139689
|
+
}
|
|
139690
|
+
function computeWrapExclusion(image2, lineY, lineHeight) {
|
|
139691
|
+
const { rect, wrap: wrap4 } = image2;
|
|
139692
|
+
const top$1 = rect.y - (wrap4.distTop ?? 0);
|
|
139693
|
+
const bottom$1 = rect.y + rect.height + (wrap4.distBottom ?? 0);
|
|
139694
|
+
const left$1 = rect.x - (wrap4.distLeft ?? 0);
|
|
139695
|
+
const right$1 = rect.x + rect.width + (wrap4.distRight ?? 0);
|
|
139696
|
+
if (lineY + lineHeight <= top$1 || lineY >= bottom$1)
|
|
139697
|
+
return null;
|
|
139698
|
+
switch (wrap4.type) {
|
|
139699
|
+
case "None":
|
|
139700
|
+
return null;
|
|
139701
|
+
case "TopAndBottom":
|
|
139702
|
+
return null;
|
|
139703
|
+
case "Square":
|
|
139704
|
+
return {
|
|
139705
|
+
left: left$1,
|
|
139706
|
+
right: right$1
|
|
139707
|
+
};
|
|
139708
|
+
case "Tight":
|
|
139709
|
+
case "Through": {
|
|
139710
|
+
if (!wrap4.polygon || wrap4.polygon.length === 0)
|
|
139711
|
+
return {
|
|
139712
|
+
left: left$1,
|
|
139713
|
+
right: right$1
|
|
139714
|
+
};
|
|
139715
|
+
const polygon = wrap4.polygon;
|
|
139716
|
+
const midY = lineY + lineHeight / 2;
|
|
139717
|
+
let polyLeft = Infinity;
|
|
139718
|
+
let polyRight = -Infinity;
|
|
139719
|
+
for (let i$1 = 0;i$1 < polygon.length; i$1++) {
|
|
139720
|
+
const [x1, y1] = polygon[i$1];
|
|
139721
|
+
const [x2, y2] = polygon[(i$1 + 1) % polygon.length];
|
|
139722
|
+
if (midY >= Math.min(y1, y2) && midY <= Math.max(y1, y2)) {
|
|
139723
|
+
const x = x1 + (midY - y1) / (y2 - y1) * (x2 - x1);
|
|
139724
|
+
polyLeft = Math.min(polyLeft, x);
|
|
139725
|
+
polyRight = Math.max(polyRight, x);
|
|
139726
|
+
}
|
|
139727
|
+
}
|
|
139728
|
+
if (polyLeft === Infinity || polyRight === -Infinity)
|
|
139729
|
+
return null;
|
|
139730
|
+
return {
|
|
139731
|
+
left: polyLeft - (wrap4.distLeft ?? 0),
|
|
139732
|
+
right: polyRight + (wrap4.distRight ?? 0)
|
|
139733
|
+
};
|
|
139734
|
+
}
|
|
139735
|
+
default:
|
|
139736
|
+
return null;
|
|
139737
|
+
}
|
|
139738
|
+
}
|
|
139225
139739
|
function isSectPrElement(value) {
|
|
139226
139740
|
return typeof value === "object" && value !== null && value.type === "element" && value.name === "w:sectPr";
|
|
139227
139741
|
}
|
|
@@ -167633,457 +168147,6 @@ function preferFullRestoredWhenPartial(current, previousRanges, doc$2, docSize)
|
|
|
167633
168147
|
return current;
|
|
167634
168148
|
return currentSpan.from >= restoredSpan.from && currentSpan.to <= restoredSpan.to && restoredSpan.to - restoredSpan.from > currentSpan.to - currentSpan.from ? restored : current;
|
|
167635
168149
|
}
|
|
167636
|
-
function computeTabStops$1(context) {
|
|
167637
|
-
const { explicitStops, defaultTabInterval, paragraphIndent } = context;
|
|
167638
|
-
const leftIndent = paragraphIndent.left ?? 0;
|
|
167639
|
-
const hanging = paragraphIndent.hanging ?? 0;
|
|
167640
|
-
const effectiveMinIndent = Math.max(0, leftIndent - hanging);
|
|
167641
|
-
const clearPositions = explicitStops.filter((stop) => stop.val === "clear").map((stop) => stop.pos);
|
|
167642
|
-
const filteredExplicitStops = explicitStops.filter((stop) => stop.val !== "clear").filter((stop) => stop.pos >= effectiveMinIndent);
|
|
167643
|
-
const maxExplicit = filteredExplicitStops.reduce((max$2, stop) => Math.max(max$2, stop.pos), 0);
|
|
167644
|
-
const hasExplicit = filteredExplicitStops.length > 0;
|
|
167645
|
-
const stops = [...filteredExplicitStops];
|
|
167646
|
-
const defaultStart = hasExplicit ? Math.max(maxExplicit, leftIndent) : 0;
|
|
167647
|
-
let pos = defaultStart;
|
|
167648
|
-
const targetLimit = Math.max(defaultStart, leftIndent) + 14400;
|
|
167649
|
-
while (pos < targetLimit) {
|
|
167650
|
-
pos += defaultTabInterval;
|
|
167651
|
-
const hasExplicitStop = filteredExplicitStops.some((s2) => Math.abs(s2.pos - pos) < 20);
|
|
167652
|
-
const hasClearStop = clearPositions.some((clearPos) => Math.abs(clearPos - pos) < 20);
|
|
167653
|
-
if (!hasExplicitStop && !hasClearStop && pos >= leftIndent)
|
|
167654
|
-
stops.push({
|
|
167655
|
-
val: "start",
|
|
167656
|
-
pos,
|
|
167657
|
-
leader: "none"
|
|
167658
|
-
});
|
|
167659
|
-
}
|
|
167660
|
-
return stops.sort((a2, b$1) => a2.pos - b$1.pos);
|
|
167661
|
-
}
|
|
167662
|
-
function layoutWithTabs(runs2, stops, lineWidth, options = {}) {
|
|
167663
|
-
const result = [];
|
|
167664
|
-
let currentX = 0;
|
|
167665
|
-
let currentStopIndex = 0;
|
|
167666
|
-
let pendingDecimalStop;
|
|
167667
|
-
let pendingCenterStop;
|
|
167668
|
-
let pendingEndStop;
|
|
167669
|
-
const decimalSeparator = options.decimalSeparator ?? ".";
|
|
167670
|
-
for (const entry of runs2) {
|
|
167671
|
-
const { run: run2, width, isTab } = entry;
|
|
167672
|
-
if (isTab) {
|
|
167673
|
-
while (currentStopIndex < stops.length && stops[currentStopIndex].pos <= currentX)
|
|
167674
|
-
currentStopIndex++;
|
|
167675
|
-
if (currentStopIndex < stops.length) {
|
|
167676
|
-
const stop = stops[currentStopIndex];
|
|
167677
|
-
result.push({
|
|
167678
|
-
run: run2,
|
|
167679
|
-
x: currentX,
|
|
167680
|
-
width: 0,
|
|
167681
|
-
tabStop: stop
|
|
167682
|
-
});
|
|
167683
|
-
currentX = stop.pos;
|
|
167684
|
-
pendingDecimalStop = stop.val === "decimal" ? stop : undefined;
|
|
167685
|
-
pendingCenterStop = stop.val === "center" ? stop : undefined;
|
|
167686
|
-
pendingEndStop = stop.val === "end" ? stop : undefined;
|
|
167687
|
-
currentStopIndex++;
|
|
167688
|
-
} else {
|
|
167689
|
-
result.push({
|
|
167690
|
-
run: run2,
|
|
167691
|
-
x: currentX,
|
|
167692
|
-
width
|
|
167693
|
-
});
|
|
167694
|
-
currentX += width;
|
|
167695
|
-
pendingDecimalStop = undefined;
|
|
167696
|
-
pendingCenterStop = undefined;
|
|
167697
|
-
pendingEndStop = undefined;
|
|
167698
|
-
}
|
|
167699
|
-
} else {
|
|
167700
|
-
if (pendingDecimalStop) {
|
|
167701
|
-
currentX = computeDecimalAlignedX(entry, pendingDecimalStop, options, decimalSeparator);
|
|
167702
|
-
pendingDecimalStop = undefined;
|
|
167703
|
-
} else if (pendingCenterStop) {
|
|
167704
|
-
currentX = computeCenterAlignedX(entry, pendingCenterStop);
|
|
167705
|
-
pendingCenterStop = undefined;
|
|
167706
|
-
} else if (pendingEndStop) {
|
|
167707
|
-
currentX = computeEndAlignedX(entry, pendingEndStop);
|
|
167708
|
-
pendingEndStop = undefined;
|
|
167709
|
-
}
|
|
167710
|
-
result.push({
|
|
167711
|
-
run: run2,
|
|
167712
|
-
x: currentX,
|
|
167713
|
-
width
|
|
167714
|
-
});
|
|
167715
|
-
currentX += width;
|
|
167716
|
-
}
|
|
167717
|
-
}
|
|
167718
|
-
return result;
|
|
167719
|
-
}
|
|
167720
|
-
function computeDecimalAlignedX(entry, stop, options, separator) {
|
|
167721
|
-
const text5 = entry.text ?? "";
|
|
167722
|
-
const decimalIndex = text5.indexOf(separator);
|
|
167723
|
-
if (decimalIndex <= 0)
|
|
167724
|
-
return stop.pos;
|
|
167725
|
-
const beforeText = text5.slice(0, decimalIndex);
|
|
167726
|
-
let beforeWidth;
|
|
167727
|
-
if (options.measureTextWidth)
|
|
167728
|
-
beforeWidth = options.measureTextWidth(entry.run, beforeText);
|
|
167729
|
-
else if (text5.length > 0)
|
|
167730
|
-
beforeWidth = entry.width * decimalIndex / text5.length;
|
|
167731
|
-
else
|
|
167732
|
-
beforeWidth = 0;
|
|
167733
|
-
const targetX = stop.pos - beforeWidth;
|
|
167734
|
-
return targetX < 0 ? 0 : targetX;
|
|
167735
|
-
}
|
|
167736
|
-
function computeCenterAlignedX(entry, stop) {
|
|
167737
|
-
const width = entry.width;
|
|
167738
|
-
const targetX = stop.pos - width / 2;
|
|
167739
|
-
return targetX < 0 ? 0 : targetX;
|
|
167740
|
-
}
|
|
167741
|
-
function computeEndAlignedX(entry, stop) {
|
|
167742
|
-
const width = entry.width;
|
|
167743
|
-
const targetX = stop.pos - width;
|
|
167744
|
-
return targetX < 0 ? 0 : targetX;
|
|
167745
|
-
}
|
|
167746
|
-
function calculateTabWidth(params$1) {
|
|
167747
|
-
const { currentX, tabStops, paragraphWidth, defaultTabDistance: defaultTabDistance$1, defaultLineLength: defaultLineLength$1, followingText = "", measureText: measureText$1, decimalSeparator = "." } = params$1;
|
|
167748
|
-
const nextStop = tabStops.find((stop) => stop.val !== "clear" && stop.pos > currentX);
|
|
167749
|
-
const fallbackWidth = () => {
|
|
167750
|
-
let tabWidth = defaultTabDistance$1 - currentX % defaultLineLength$1 % defaultTabDistance$1;
|
|
167751
|
-
if (tabWidth <= 0)
|
|
167752
|
-
tabWidth = defaultTabDistance$1;
|
|
167753
|
-
return {
|
|
167754
|
-
width: tabWidth,
|
|
167755
|
-
alignment: "default",
|
|
167756
|
-
tabStopPosUsed: "default"
|
|
167757
|
-
};
|
|
167758
|
-
};
|
|
167759
|
-
if (!nextStop)
|
|
167760
|
-
return fallbackWidth();
|
|
167761
|
-
let width = Math.min(nextStop.pos, paragraphWidth) - currentX;
|
|
167762
|
-
const alignment$1 = nextStop.val;
|
|
167763
|
-
if (alignment$1 === "bar")
|
|
167764
|
-
return {
|
|
167765
|
-
width: 0,
|
|
167766
|
-
leader: nextStop.leader,
|
|
167767
|
-
alignment: alignment$1,
|
|
167768
|
-
tabStopPosUsed: nextStop.pos
|
|
167769
|
-
};
|
|
167770
|
-
if (alignment$1 === "center" || alignment$1 === "end") {
|
|
167771
|
-
const textWidth = measureText$1 ? measureText$1(followingText) : 0;
|
|
167772
|
-
if (alignment$1 === "center")
|
|
167773
|
-
width -= textWidth / 2;
|
|
167774
|
-
else
|
|
167775
|
-
width -= textWidth;
|
|
167776
|
-
} else if (alignment$1 === "decimal") {
|
|
167777
|
-
const decimalIndex = followingText.indexOf(decimalSeparator);
|
|
167778
|
-
if (decimalIndex >= 0) {
|
|
167779
|
-
const before = followingText.slice(0, decimalIndex);
|
|
167780
|
-
const beforeWidth = measureText$1 ? measureText$1(before) : 0;
|
|
167781
|
-
width -= beforeWidth;
|
|
167782
|
-
}
|
|
167783
|
-
}
|
|
167784
|
-
if (width < 1)
|
|
167785
|
-
return fallbackWidth();
|
|
167786
|
-
return {
|
|
167787
|
-
width,
|
|
167788
|
-
leader: nextStop.leader,
|
|
167789
|
-
alignment: alignment$1,
|
|
167790
|
-
tabStopPosUsed: nextStop.pos
|
|
167791
|
-
};
|
|
167792
|
-
}
|
|
167793
|
-
function resolveColumnWidths(columns, availableWidth) {
|
|
167794
|
-
const width = availableWidth / columns.length;
|
|
167795
|
-
return columns.map(() => width);
|
|
167796
|
-
}
|
|
167797
|
-
function measureRowHeights(cells, _columnWidths) {
|
|
167798
|
-
return cells.map(() => 20);
|
|
167799
|
-
}
|
|
167800
|
-
function effectiveTableCellSpacing(spacing, isBoundary, padding) {
|
|
167801
|
-
if (typeof spacing !== "number" || spacing <= 0)
|
|
167802
|
-
return 0;
|
|
167803
|
-
return isBoundary ? Math.max(0, spacing - padding) : spacing;
|
|
167804
|
-
}
|
|
167805
|
-
function shouldApplyJustify(params$1) {
|
|
167806
|
-
const { alignment: alignment$1, hasExplicitPositioning, isLastLineOfParagraph, paragraphEndsWithLineBreak, skipJustifyOverride } = params$1;
|
|
167807
|
-
if (alignment$1 !== "justify" && alignment$1 !== "both")
|
|
167808
|
-
return false;
|
|
167809
|
-
if (skipJustifyOverride === true)
|
|
167810
|
-
return false;
|
|
167811
|
-
if (hasExplicitPositioning)
|
|
167812
|
-
return false;
|
|
167813
|
-
if (isLastLineOfParagraph && !paragraphEndsWithLineBreak)
|
|
167814
|
-
return false;
|
|
167815
|
-
return true;
|
|
167816
|
-
}
|
|
167817
|
-
function calculateJustifySpacing(params$1) {
|
|
167818
|
-
const { lineWidth, availableWidth, spaceCount, shouldJustify } = params$1;
|
|
167819
|
-
if (!shouldJustify)
|
|
167820
|
-
return 0;
|
|
167821
|
-
if (spaceCount <= 0)
|
|
167822
|
-
return 0;
|
|
167823
|
-
return (availableWidth - lineWidth) / spaceCount;
|
|
167824
|
-
}
|
|
167825
|
-
function parseInsetClipPathForScale(clipPath) {
|
|
167826
|
-
const m$1 = clipPath.trim().match(/^inset\(\s*(\d+(?:\.\d+)?|\.\d+)%\s+(\d+(?:\.\d+)?|\.\d+)%\s+(\d+(?:\.\d+)?|\.\d+)%\s+(\d+(?:\.\d+)?|\.\d+)%\s*\)$/);
|
|
167827
|
-
if (!m$1)
|
|
167828
|
-
return null;
|
|
167829
|
-
const top$1 = Number(m$1[1]);
|
|
167830
|
-
const right$1 = Number(m$1[2]);
|
|
167831
|
-
const bottom$1 = Number(m$1[3]);
|
|
167832
|
-
const left$1 = Number(m$1[4]);
|
|
167833
|
-
if (![
|
|
167834
|
-
top$1,
|
|
167835
|
-
right$1,
|
|
167836
|
-
bottom$1,
|
|
167837
|
-
left$1
|
|
167838
|
-
].every(Number.isFinite))
|
|
167839
|
-
return null;
|
|
167840
|
-
const visibleW = 100 - left$1 - right$1;
|
|
167841
|
-
const visibleH = 100 - top$1 - bottom$1;
|
|
167842
|
-
if (visibleW <= 0 || visibleH <= 0)
|
|
167843
|
-
return null;
|
|
167844
|
-
const scaleX = 100 / visibleW;
|
|
167845
|
-
const scaleY = 100 / visibleH;
|
|
167846
|
-
return {
|
|
167847
|
-
scaleX,
|
|
167848
|
-
scaleY,
|
|
167849
|
-
translateX: -left$1 * scaleX,
|
|
167850
|
-
translateY: -top$1 * scaleY
|
|
167851
|
-
};
|
|
167852
|
-
}
|
|
167853
|
-
function formatInsetClipPathTransform(clipPath) {
|
|
167854
|
-
const scale = parseInsetClipPathForScale(clipPath);
|
|
167855
|
-
if (!scale)
|
|
167856
|
-
return;
|
|
167857
|
-
return `transform-origin: 0 0; transform: translate(${scale.translateX}%, ${scale.translateY}%) scale(${scale.scaleX}, ${scale.scaleY});`;
|
|
167858
|
-
}
|
|
167859
|
-
function computeLinePmRange$1(block, line) {
|
|
167860
|
-
if (!line)
|
|
167861
|
-
return {};
|
|
167862
|
-
if (block.kind !== "paragraph")
|
|
167863
|
-
return {};
|
|
167864
|
-
let pmStart;
|
|
167865
|
-
let pmEnd;
|
|
167866
|
-
for (let runIndex = line.fromRun;runIndex <= line.toRun; runIndex += 1) {
|
|
167867
|
-
const run2 = block.runs[runIndex];
|
|
167868
|
-
if (!run2)
|
|
167869
|
-
continue;
|
|
167870
|
-
const runPmStart = coercePmStart(run2);
|
|
167871
|
-
if (runPmStart == null)
|
|
167872
|
-
continue;
|
|
167873
|
-
if (isAtomicRunKind(run2.kind) || isImageLikeRun(run2)) {
|
|
167874
|
-
const runPmEnd = coercePmEnd(run2) ?? runPmStart + 1;
|
|
167875
|
-
if (pmStart == null)
|
|
167876
|
-
pmStart = runPmStart;
|
|
167877
|
-
pmEnd = runPmEnd;
|
|
167878
|
-
continue;
|
|
167879
|
-
}
|
|
167880
|
-
const runLength = coerceRunText(run2).length;
|
|
167881
|
-
const isFirstRun = runIndex === line.fromRun;
|
|
167882
|
-
const isLastRun = runIndex === line.toRun;
|
|
167883
|
-
const startOffset = isFirstRun ? line.fromChar : 0;
|
|
167884
|
-
const endOffset = isLastRun ? line.toChar : runLength;
|
|
167885
|
-
const sliceStart = runPmStart + startOffset;
|
|
167886
|
-
const sliceEnd = runPmStart + endOffset;
|
|
167887
|
-
if (pmStart == null)
|
|
167888
|
-
pmStart = sliceStart;
|
|
167889
|
-
pmEnd = sliceEnd;
|
|
167890
|
-
}
|
|
167891
|
-
return {
|
|
167892
|
-
pmStart,
|
|
167893
|
-
pmEnd
|
|
167894
|
-
};
|
|
167895
|
-
}
|
|
167896
|
-
function computeFragmentPmRange$1(block, lines, fromLine, toLine) {
|
|
167897
|
-
let pmStart;
|
|
167898
|
-
let pmEnd;
|
|
167899
|
-
for (let index2 = fromLine;index2 < toLine; index2 += 1) {
|
|
167900
|
-
const line = lines[index2];
|
|
167901
|
-
if (!line)
|
|
167902
|
-
continue;
|
|
167903
|
-
const range = computeLinePmRange$1(block, line);
|
|
167904
|
-
if (range.pmStart != null && pmStart == null)
|
|
167905
|
-
pmStart = range.pmStart;
|
|
167906
|
-
if (range.pmEnd != null)
|
|
167907
|
-
pmEnd = range.pmEnd;
|
|
167908
|
-
}
|
|
167909
|
-
return {
|
|
167910
|
-
pmStart,
|
|
167911
|
-
pmEnd
|
|
167912
|
-
};
|
|
167913
|
-
}
|
|
167914
|
-
function resolveSpacingIndent(style2, numbering) {
|
|
167915
|
-
const spacing = {
|
|
167916
|
-
before: style2.spacing?.before ?? 0,
|
|
167917
|
-
after: style2.spacing?.after ?? 0,
|
|
167918
|
-
line: style2.spacing?.line ?? 12,
|
|
167919
|
-
lineRule: style2.spacing?.lineRule ?? "auto"
|
|
167920
|
-
};
|
|
167921
|
-
let indent2 = {
|
|
167922
|
-
left: style2.indent?.left ?? 0,
|
|
167923
|
-
right: style2.indent?.right ?? 0,
|
|
167924
|
-
firstLine: style2.indent?.firstLine ?? 0,
|
|
167925
|
-
hanging: style2.indent?.hanging ?? 0
|
|
167926
|
-
};
|
|
167927
|
-
if (numbering?.indent)
|
|
167928
|
-
indent2 = {
|
|
167929
|
-
...indent2,
|
|
167930
|
-
left: numbering.indent.left ?? indent2.left,
|
|
167931
|
-
hanging: numbering.indent.hanging ?? indent2.hanging
|
|
167932
|
-
};
|
|
167933
|
-
return {
|
|
167934
|
-
spacing,
|
|
167935
|
-
indent: indent2
|
|
167936
|
-
};
|
|
167937
|
-
}
|
|
167938
|
-
function formatListLabel(level, indices) {
|
|
167939
|
-
const { format, text: template, start: start$1 } = level;
|
|
167940
|
-
if (format === "bullet" || format === "custom")
|
|
167941
|
-
return {
|
|
167942
|
-
text: template,
|
|
167943
|
-
width: estimateTextWidth(template)
|
|
167944
|
-
};
|
|
167945
|
-
let result = template;
|
|
167946
|
-
for (let i$1 = 0;i$1 < indices.length; i$1++) {
|
|
167947
|
-
const placeholder = `%${i$1 + 1}`;
|
|
167948
|
-
if (result.includes(placeholder)) {
|
|
167949
|
-
const formattedNum = formatNumber(indices[i$1] + start$1 - 1, format);
|
|
167950
|
-
result = result.replace(placeholder, formattedNum);
|
|
167951
|
-
}
|
|
167952
|
-
}
|
|
167953
|
-
return {
|
|
167954
|
-
text: result,
|
|
167955
|
-
width: estimateTextWidth(result)
|
|
167956
|
-
};
|
|
167957
|
-
}
|
|
167958
|
-
function computeListIndent(level) {
|
|
167959
|
-
const { indent: indent2 } = level;
|
|
167960
|
-
return {
|
|
167961
|
-
labelWidth: Math.abs(indent2.hanging),
|
|
167962
|
-
hangingIndent: indent2.hanging,
|
|
167963
|
-
firstLineIndent: indent2.left - Math.abs(indent2.hanging)
|
|
167964
|
-
};
|
|
167965
|
-
}
|
|
167966
|
-
function formatNumber(num, format) {
|
|
167967
|
-
switch (format) {
|
|
167968
|
-
case "decimal":
|
|
167969
|
-
return num.toString();
|
|
167970
|
-
case "lowerLetter":
|
|
167971
|
-
return toLetter(num, false);
|
|
167972
|
-
case "upperLetter":
|
|
167973
|
-
return toLetter(num, true);
|
|
167974
|
-
case "lowerRoman":
|
|
167975
|
-
return toRoman(num).toLowerCase();
|
|
167976
|
-
case "upperRoman":
|
|
167977
|
-
return toRoman(num);
|
|
167978
|
-
default:
|
|
167979
|
-
return num.toString();
|
|
167980
|
-
}
|
|
167981
|
-
}
|
|
167982
|
-
function toLetter(num, uppercase) {
|
|
167983
|
-
let result = "";
|
|
167984
|
-
let n = num;
|
|
167985
|
-
while (n > 0) {
|
|
167986
|
-
const remainder = (n - 1) % 26;
|
|
167987
|
-
result = String.fromCharCode((uppercase ? 65 : 97) + remainder) + result;
|
|
167988
|
-
n = Math.floor((n - 1) / 26);
|
|
167989
|
-
}
|
|
167990
|
-
return result || (uppercase ? "A" : "a");
|
|
167991
|
-
}
|
|
167992
|
-
function toRoman(num) {
|
|
167993
|
-
const lookup3 = [
|
|
167994
|
-
[1000, "M"],
|
|
167995
|
-
[900, "CM"],
|
|
167996
|
-
[500, "D"],
|
|
167997
|
-
[400, "CD"],
|
|
167998
|
-
[100, "C"],
|
|
167999
|
-
[90, "XC"],
|
|
168000
|
-
[50, "L"],
|
|
168001
|
-
[40, "XL"],
|
|
168002
|
-
[10, "X"],
|
|
168003
|
-
[9, "IX"],
|
|
168004
|
-
[5, "V"],
|
|
168005
|
-
[4, "IV"],
|
|
168006
|
-
[1, "I"]
|
|
168007
|
-
];
|
|
168008
|
-
let result = "";
|
|
168009
|
-
let remaining = num;
|
|
168010
|
-
for (const [value, numeral] of lookup3)
|
|
168011
|
-
while (remaining >= value) {
|
|
168012
|
-
result += numeral;
|
|
168013
|
-
remaining -= value;
|
|
168014
|
-
}
|
|
168015
|
-
return result;
|
|
168016
|
-
}
|
|
168017
|
-
function estimateTextWidth(text5) {
|
|
168018
|
-
return text5.length * 7;
|
|
168019
|
-
}
|
|
168020
|
-
function scaleWrapPolygon(ooxml, imageRect) {
|
|
168021
|
-
if (!ooxml || ooxml.length === 0)
|
|
168022
|
-
return [];
|
|
168023
|
-
let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
|
|
168024
|
-
for (const [x, y$1] of ooxml) {
|
|
168025
|
-
minX = Math.min(minX, x);
|
|
168026
|
-
minY = Math.min(minY, y$1);
|
|
168027
|
-
maxX = Math.max(maxX, x);
|
|
168028
|
-
maxY = Math.max(maxY, y$1);
|
|
168029
|
-
}
|
|
168030
|
-
const ooxmlWidth = maxX - minX;
|
|
168031
|
-
const ooxmlHeight = maxY - minY;
|
|
168032
|
-
if (ooxmlWidth === 0 || ooxmlHeight === 0)
|
|
168033
|
-
return [];
|
|
168034
|
-
const scaleX = imageRect.width / ooxmlWidth;
|
|
168035
|
-
const scaleY = imageRect.height / ooxmlHeight;
|
|
168036
|
-
return ooxml.map(([x, y$1]) => [imageRect.x + (x - minX) * scaleX, imageRect.y + (y$1 - minY) * scaleY]);
|
|
168037
|
-
}
|
|
168038
|
-
function computeWrapExclusion(image2, lineY, lineHeight) {
|
|
168039
|
-
const { rect, wrap: wrap4 } = image2;
|
|
168040
|
-
const top$1 = rect.y - (wrap4.distTop ?? 0);
|
|
168041
|
-
const bottom$1 = rect.y + rect.height + (wrap4.distBottom ?? 0);
|
|
168042
|
-
const left$1 = rect.x - (wrap4.distLeft ?? 0);
|
|
168043
|
-
const right$1 = rect.x + rect.width + (wrap4.distRight ?? 0);
|
|
168044
|
-
if (lineY + lineHeight <= top$1 || lineY >= bottom$1)
|
|
168045
|
-
return null;
|
|
168046
|
-
switch (wrap4.type) {
|
|
168047
|
-
case "None":
|
|
168048
|
-
return null;
|
|
168049
|
-
case "TopAndBottom":
|
|
168050
|
-
return null;
|
|
168051
|
-
case "Square":
|
|
168052
|
-
return {
|
|
168053
|
-
left: left$1,
|
|
168054
|
-
right: right$1
|
|
168055
|
-
};
|
|
168056
|
-
case "Tight":
|
|
168057
|
-
case "Through": {
|
|
168058
|
-
if (!wrap4.polygon || wrap4.polygon.length === 0)
|
|
168059
|
-
return {
|
|
168060
|
-
left: left$1,
|
|
168061
|
-
right: right$1
|
|
168062
|
-
};
|
|
168063
|
-
const polygon = wrap4.polygon;
|
|
168064
|
-
const midY = lineY + lineHeight / 2;
|
|
168065
|
-
let polyLeft = Infinity;
|
|
168066
|
-
let polyRight = -Infinity;
|
|
168067
|
-
for (let i$1 = 0;i$1 < polygon.length; i$1++) {
|
|
168068
|
-
const [x1, y1] = polygon[i$1];
|
|
168069
|
-
const [x2, y2] = polygon[(i$1 + 1) % polygon.length];
|
|
168070
|
-
if (midY >= Math.min(y1, y2) && midY <= Math.max(y1, y2)) {
|
|
168071
|
-
const x = x1 + (midY - y1) / (y2 - y1) * (x2 - x1);
|
|
168072
|
-
polyLeft = Math.min(polyLeft, x);
|
|
168073
|
-
polyRight = Math.max(polyRight, x);
|
|
168074
|
-
}
|
|
168075
|
-
}
|
|
168076
|
-
if (polyLeft === Infinity || polyRight === -Infinity)
|
|
168077
|
-
return null;
|
|
168078
|
-
return {
|
|
168079
|
-
left: polyLeft - (wrap4.distLeft ?? 0),
|
|
168080
|
-
right: polyRight + (wrap4.distRight ?? 0)
|
|
168081
|
-
};
|
|
168082
|
-
}
|
|
168083
|
-
default:
|
|
168084
|
-
return null;
|
|
168085
|
-
}
|
|
168086
|
-
}
|
|
168087
168150
|
function mapWordFamilyFallback(wordFamily) {
|
|
168088
168151
|
if (!wordFamily)
|
|
168089
168152
|
return DEFAULT_GENERIC_FALLBACK2;
|
|
@@ -170998,7 +171061,7 @@ async function measureParagraphBlock(block, maxWidth) {
|
|
|
170998
171061
|
const spaceWidth = shouldIncludeDelimiterSpace ? measureRunWidth(" ", font, ctx$1, run2, wordEndNoSpace) : 0;
|
|
170999
171062
|
const wordCommitWidth = wordOnlyWidth + spaceWidth;
|
|
171000
171063
|
const wordEndWithSpace = wordEndNoSpace + (shouldIncludeDelimiterSpace ? 1 : 0);
|
|
171001
|
-
if (wordOnlyWidth > (currentLine ? currentLine.maxWidth : getEffectiveWidth(lines.length === 0 ? initialAvailableWidth : contentWidth)) && word$1.length > 1) {
|
|
171064
|
+
if (wordOnlyWidth > (currentLine ? currentLine.maxWidth : getEffectiveWidth(lines.length === 0 ? initialAvailableWidth : contentWidth)) + WIDTH_FUDGE_PX$1 && word$1.length > 1) {
|
|
171002
171065
|
if (currentLine && currentLine.width > 0 && currentLine.segments && currentLine.segments.length > 0) {
|
|
171003
171066
|
trimTrailingWrapSpaces(currentLine);
|
|
171004
171067
|
const metrics = finalizeLineMetrics(currentLine, spacing);
|
|
@@ -171015,7 +171078,7 @@ async function measureParagraphBlock(block, maxWidth) {
|
|
|
171015
171078
|
const lineMaxWidth = getEffectiveWidth(lines.length === 0 ? initialAvailableWidth : contentWidth);
|
|
171016
171079
|
const hasTabOnlyLine = currentLine && currentLine.segments && currentLine.segments.length === 0 && currentLine.width > 0;
|
|
171017
171080
|
const remainingWidthAfterTab = hasTabOnlyLine ? currentLine.maxWidth - currentLine.width : lineMaxWidth;
|
|
171018
|
-
const chunks = breakWordIntoChunks(word$1,
|
|
171081
|
+
const chunks = breakWordIntoChunks(word$1, hasTabOnlyLine ? Math.max(remainingWidthAfterTab, lineMaxWidth * 0.25) : lineMaxWidth, font, ctx$1, run2, wordStartChar);
|
|
171019
171082
|
let chunkCharOffset = wordStartChar;
|
|
171020
171083
|
for (let chunkIndex = 0;chunkIndex < chunks.length; chunkIndex++) {
|
|
171021
171084
|
const chunk = chunks[chunkIndex];
|
|
@@ -172063,14 +172126,11 @@ function computeNextSectionPropsAtBreak(blocks2) {
|
|
|
172063
172126
|
return nextSectionPropsAtBreak;
|
|
172064
172127
|
}
|
|
172065
172128
|
function getColumnConfig(blockColumns) {
|
|
172066
|
-
return blockColumns ? {
|
|
172067
|
-
count: blockColumns.count,
|
|
172068
|
-
gap: blockColumns.gap
|
|
172069
|
-
} : { ...SINGLE_COLUMN_DEFAULT };
|
|
172129
|
+
return blockColumns ? cloneColumnLayout(blockColumns) : { ...SINGLE_COLUMN_DEFAULT };
|
|
172070
172130
|
}
|
|
172071
172131
|
function isColumnConfigChanging(blockColumns, activeColumns) {
|
|
172072
172132
|
if (blockColumns)
|
|
172073
|
-
return blockColumns.count !== activeColumns.count || blockColumns.gap !== activeColumns.gap;
|
|
172133
|
+
return blockColumns.count !== activeColumns.count || blockColumns.gap !== activeColumns.gap || blockColumns.equalWidth !== activeColumns.equalWidth || !widthsEqual(blockColumns.widths, activeColumns.widths);
|
|
172074
172134
|
return activeColumns.count > 1;
|
|
172075
172135
|
}
|
|
172076
172136
|
function scheduleSectionBreak(block, state, baseMargins, maxHeaderContentHeight = 0, maxFooterContentHeight = 0) {
|
|
@@ -174072,7 +174132,13 @@ function createPaginator(opts) {
|
|
|
174072
174132
|
};
|
|
174073
174133
|
const columnX = (columnIndex) => {
|
|
174074
174134
|
const cols = opts.getCurrentColumns();
|
|
174075
|
-
|
|
174135
|
+
const widths = Array.isArray(cols.widths) && cols.widths.length > 0 ? cols.widths : null;
|
|
174136
|
+
if (!widths)
|
|
174137
|
+
return opts.margins.left + columnIndex * (cols.width + cols.gap);
|
|
174138
|
+
let x = opts.margins.left;
|
|
174139
|
+
for (let index2 = 0;index2 < columnIndex; index2 += 1)
|
|
174140
|
+
x += (widths[index2] ?? cols.width) + cols.gap;
|
|
174141
|
+
return x;
|
|
174076
174142
|
};
|
|
174077
174143
|
const startNewPage = () => {
|
|
174078
174144
|
if (opts.onNewPage)
|
|
@@ -174259,6 +174325,24 @@ function computeDisplayPageNumber(pages, sections) {
|
|
|
174259
174325
|
}
|
|
174260
174326
|
return result;
|
|
174261
174327
|
}
|
|
174328
|
+
function shouldSkipBalancing(ctx$1, config2 = DEFAULT_BALANCING_CONFIG) {
|
|
174329
|
+
if (!config2.enabled)
|
|
174330
|
+
return true;
|
|
174331
|
+
if (ctx$1.columnCount <= 1)
|
|
174332
|
+
return true;
|
|
174333
|
+
if (ctx$1.contentBlocks.length === 0)
|
|
174334
|
+
return true;
|
|
174335
|
+
if (ctx$1.contentBlocks.length === 1) {
|
|
174336
|
+
if (!ctx$1.contentBlocks[0].canBreak)
|
|
174337
|
+
return true;
|
|
174338
|
+
}
|
|
174339
|
+
const totalHeight = ctx$1.contentBlocks.reduce((sum, b$1) => sum + b$1.measuredHeight, 0);
|
|
174340
|
+
if (totalHeight < config2.minColumnHeight)
|
|
174341
|
+
return true;
|
|
174342
|
+
if (totalHeight / ctx$1.columnCount < config2.minColumnHeight)
|
|
174343
|
+
return true;
|
|
174344
|
+
return false;
|
|
174345
|
+
}
|
|
174262
174346
|
function getFragmentHeight$1(fragment2, measureMap) {
|
|
174263
174347
|
if (fragment2.kind === "para") {
|
|
174264
174348
|
const measure = measureMap.get(fragment2.blockId);
|
|
@@ -174280,7 +174364,7 @@ function getFragmentHeight$1(fragment2, measureMap) {
|
|
|
174280
174364
|
}
|
|
174281
174365
|
return 0;
|
|
174282
174366
|
}
|
|
174283
|
-
function balancePageColumns(fragments, columns, margins, topMargin, measureMap) {
|
|
174367
|
+
function balancePageColumns(fragments, columns, margins, topMargin, availableHeight, measureMap) {
|
|
174284
174368
|
if (columns.count <= 1 || fragments.length === 0)
|
|
174285
174369
|
return;
|
|
174286
174370
|
const columnX = (columnIndex) => {
|
|
@@ -174300,10 +174384,26 @@ function balancePageColumns(fragments, columns, margins, topMargin, measureMap)
|
|
|
174300
174384
|
});
|
|
174301
174385
|
const sortedRows = [...rowMap.entries()].sort((a2, b$1) => a2[0] - b$1[0]);
|
|
174302
174386
|
let totalHeight = 0;
|
|
174387
|
+
const contentBlocks = [];
|
|
174303
174388
|
for (const [, rowFragments] of sortedRows) {
|
|
174304
174389
|
const maxHeight = Math.max(...rowFragments.map((f2) => f2.height));
|
|
174305
174390
|
totalHeight += maxHeight;
|
|
174391
|
+
contentBlocks.push({
|
|
174392
|
+
blockId: rowFragments[0]?.fragment.blockId ?? `row-${contentBlocks.length}`,
|
|
174393
|
+
measuredHeight: maxHeight,
|
|
174394
|
+
canBreak: false,
|
|
174395
|
+
keepWithNext: false,
|
|
174396
|
+
keepTogether: true
|
|
174397
|
+
});
|
|
174306
174398
|
}
|
|
174399
|
+
if (shouldSkipBalancing({
|
|
174400
|
+
columnCount: columns.count,
|
|
174401
|
+
columnWidth: columns.width,
|
|
174402
|
+
columnGap: columns.gap,
|
|
174403
|
+
availableHeight,
|
|
174404
|
+
contentBlocks
|
|
174405
|
+
}))
|
|
174406
|
+
return;
|
|
174307
174407
|
const targetHeight = totalHeight / columns.count;
|
|
174308
174408
|
if (targetHeight < DEFAULT_BALANCING_CONFIG.minColumnHeight)
|
|
174309
174409
|
return;
|
|
@@ -174639,10 +174739,7 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
174639
174739
|
h: pageSize.h
|
|
174640
174740
|
};
|
|
174641
174741
|
let pendingPageSize = null;
|
|
174642
|
-
let activeColumns = options.columns
|
|
174643
|
-
count: 1,
|
|
174644
|
-
gap: 0
|
|
174645
|
-
};
|
|
174742
|
+
let activeColumns = cloneColumnLayout(options.columns);
|
|
174646
174743
|
let pendingColumns = null;
|
|
174647
174744
|
let activeOrientation = null;
|
|
174648
174745
|
let pendingOrientation = null;
|
|
@@ -174706,16 +174803,10 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
174706
174803
|
next2.pendingRightMargin = rightMargin;
|
|
174707
174804
|
}
|
|
174708
174805
|
if (block.columns) {
|
|
174709
|
-
next2.activeColumns =
|
|
174710
|
-
count: block.columns.count,
|
|
174711
|
-
gap: block.columns.gap
|
|
174712
|
-
};
|
|
174806
|
+
next2.activeColumns = cloneColumnLayout(block.columns);
|
|
174713
174807
|
next2.pendingColumns = null;
|
|
174714
174808
|
} else {
|
|
174715
|
-
next2.activeColumns =
|
|
174716
|
-
count: 1,
|
|
174717
|
-
gap: 0
|
|
174718
|
-
};
|
|
174809
|
+
next2.activeColumns = cloneColumnLayout(undefined);
|
|
174719
174810
|
next2.pendingColumns = null;
|
|
174720
174811
|
}
|
|
174721
174812
|
if (block.headerRefs || block.footerRefs) {
|
|
@@ -174782,7 +174873,7 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
174782
174873
|
if (block.orientation)
|
|
174783
174874
|
next2.pendingOrientation = block.orientation;
|
|
174784
174875
|
const sectionType = block.type ?? "continuous";
|
|
174785
|
-
const isColumnsChanging = block.columns && (block.columns.count !== next2.activeColumns.count || block.columns.gap !== next2.activeColumns.gap) || !block.columns && next2.activeColumns.count > 1;
|
|
174876
|
+
const isColumnsChanging = block.columns && (block.columns.count !== next2.activeColumns.count || block.columns.gap !== next2.activeColumns.gap || block.columns.equalWidth !== next2.activeColumns.equalWidth || !widthsEqual(block.columns.widths, next2.activeColumns.widths)) || !block.columns && next2.activeColumns.count > 1;
|
|
174786
174877
|
const sectionIndexRaw = block.attrs?.sectionIndex;
|
|
174787
174878
|
const metadataIndex = typeof sectionIndexRaw === "number" ? sectionIndexRaw : Number(sectionIndexRaw ?? NaN);
|
|
174788
174879
|
if (Number.isFinite(metadataIndex))
|
|
@@ -174799,13 +174890,7 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
174799
174890
|
});
|
|
174800
174891
|
layoutLog(`[Layout] Compat fallback: Scheduled pendingSectionRefs:`, pendingSectionRefs);
|
|
174801
174892
|
}
|
|
174802
|
-
const getColumnConfig$1 = () => block.columns
|
|
174803
|
-
count: block.columns.count,
|
|
174804
|
-
gap: block.columns.gap
|
|
174805
|
-
} : {
|
|
174806
|
-
count: 1,
|
|
174807
|
-
gap: 0
|
|
174808
|
-
};
|
|
174893
|
+
const getColumnConfig$1 = () => cloneColumnLayout(block.columns);
|
|
174809
174894
|
if (block.attrs?.requirePageBoundary) {
|
|
174810
174895
|
next2.pendingColumns = getColumnConfig$1();
|
|
174811
174896
|
return {
|
|
@@ -175081,21 +175166,21 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
175081
175166
|
const state = states[states.length - 1] ?? null;
|
|
175082
175167
|
const colsConfig = state ? getActiveColumnsForState(state) : activeColumns;
|
|
175083
175168
|
const constraintIndex = state ? state.activeConstraintIndex : -1;
|
|
175084
|
-
if (cachedColumnsState.state === state && cachedColumnsState.constraintIndex === constraintIndex && cachedColumnsState.contentWidth === currentContentWidth && cachedColumnsState.colsConfig?.count === colsConfig.count && cachedColumnsState.colsConfig?.gap === colsConfig.gap && cachedColumnsState.normalized)
|
|
175169
|
+
if (cachedColumnsState.state === state && cachedColumnsState.constraintIndex === constraintIndex && cachedColumnsState.contentWidth === currentContentWidth && cachedColumnsState.colsConfig?.count === colsConfig.count && cachedColumnsState.colsConfig?.gap === colsConfig.gap && cachedColumnsState.colsConfig?.equalWidth === colsConfig.equalWidth && widthsEqual(cachedColumnsState.colsConfig?.widths, colsConfig.widths) && cachedColumnsState.normalized)
|
|
175085
175170
|
return cachedColumnsState.normalized;
|
|
175086
175171
|
const normalized = normalizeColumns(colsConfig, currentContentWidth);
|
|
175087
175172
|
cachedColumnsState = {
|
|
175088
175173
|
state,
|
|
175089
175174
|
constraintIndex,
|
|
175090
175175
|
contentWidth: currentContentWidth,
|
|
175091
|
-
colsConfig:
|
|
175092
|
-
count: colsConfig.count,
|
|
175093
|
-
gap: colsConfig.gap
|
|
175094
|
-
},
|
|
175176
|
+
colsConfig: cloneColumnLayout(colsConfig),
|
|
175095
175177
|
normalized
|
|
175096
175178
|
};
|
|
175097
175179
|
return normalized;
|
|
175098
175180
|
};
|
|
175181
|
+
const getCurrentColumnWidth = () => {
|
|
175182
|
+
return getColumnWidthAt(getCurrentColumns(), (states[states.length - 1] ?? null)?.columnIndex ?? 0);
|
|
175183
|
+
};
|
|
175099
175184
|
const columnX = paginator.columnX;
|
|
175100
175185
|
const advanceColumn = paginator.advanceColumn;
|
|
175101
175186
|
const startMidPageRegion = (state, newColumns) => {
|
|
@@ -175110,7 +175195,7 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
175110
175195
|
layoutLog(` OLD activeColumns: ${JSON.stringify(activeColumns)}`);
|
|
175111
175196
|
layoutLog(` NEW activeColumns: ${JSON.stringify(newColumns)}`);
|
|
175112
175197
|
layoutLog(` Current page: ${state.page.number}, cursorY: ${state.cursorY}`);
|
|
175113
|
-
activeColumns = newColumns;
|
|
175198
|
+
activeColumns = cloneColumnLayout(newColumns);
|
|
175114
175199
|
cachedColumnsState.state = null;
|
|
175115
175200
|
const contentWidth = activePageSize.w - (activeLeftMargin + activeRightMargin);
|
|
175116
175201
|
floatManager.setLayoutContext(normalizeColumns(activeColumns, contentWidth), {
|
|
@@ -175412,7 +175497,7 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
175412
175497
|
layoutParagraphBlock({
|
|
175413
175498
|
block,
|
|
175414
175499
|
measure,
|
|
175415
|
-
columnWidth:
|
|
175500
|
+
columnWidth: getCurrentColumnWidth(),
|
|
175416
175501
|
ensurePage: paginator.ensurePage,
|
|
175417
175502
|
advanceColumn: paginator.advanceColumn,
|
|
175418
175503
|
columnX,
|
|
@@ -175433,7 +175518,7 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
175433
175518
|
} : undefined);
|
|
175434
175519
|
if (tablesForPara) {
|
|
175435
175520
|
const state = paginator.ensurePage();
|
|
175436
|
-
const columnWidthForTable =
|
|
175521
|
+
const columnWidthForTable = getCurrentColumnWidth();
|
|
175437
175522
|
let tableBottomY = state.cursorY;
|
|
175438
175523
|
for (const { block: tableBlock, measure: tableMeasure } of tablesForPara) {
|
|
175439
175524
|
if (placedAnchoredTableIds.has(tableBlock.id))
|
|
@@ -175474,7 +175559,7 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
175474
175559
|
else if (relativeFrom === "margin")
|
|
175475
175560
|
maxWidth = activePageSize.w - (activeLeftMargin + activeRightMargin);
|
|
175476
175561
|
else
|
|
175477
|
-
maxWidth = cols.
|
|
175562
|
+
maxWidth = getColumnWidthAt(cols, state.columnIndex);
|
|
175478
175563
|
const aspectRatio = imgMeasure.width > 0 && imgMeasure.height > 0 ? imgMeasure.width / imgMeasure.height : 1;
|
|
175479
175564
|
const minWidth = 20;
|
|
175480
175565
|
const minHeight = minWidth / aspectRatio;
|
|
@@ -175566,7 +175651,7 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
175566
175651
|
layoutTableBlock({
|
|
175567
175652
|
block,
|
|
175568
175653
|
measure,
|
|
175569
|
-
columnWidth:
|
|
175654
|
+
columnWidth: getCurrentColumnWidth(),
|
|
175570
175655
|
ensurePage: paginator.ensurePage,
|
|
175571
175656
|
advanceColumn: paginator.advanceColumn,
|
|
175572
175657
|
columnX
|
|
@@ -175641,16 +175726,23 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
175641
175726
|
const normalizedCols = normalizeColumns(activeColumns, contentWidth);
|
|
175642
175727
|
const measureMap = /* @__PURE__ */ new Map;
|
|
175643
175728
|
const blockSectionMap = /* @__PURE__ */ new Map;
|
|
175729
|
+
const sectionColumnsMap = /* @__PURE__ */ new Map;
|
|
175644
175730
|
blocks2.forEach((block, idx) => {
|
|
175645
175731
|
const measure = measures[idx];
|
|
175646
175732
|
if (measure)
|
|
175647
175733
|
measureMap.set(block.id, measure);
|
|
175648
175734
|
const sectionIdx = block.attrs?.sectionIndex;
|
|
175649
|
-
if (typeof sectionIdx === "number")
|
|
175735
|
+
if (typeof sectionIdx === "number") {
|
|
175650
175736
|
blockSectionMap.set(block.id, sectionIdx);
|
|
175737
|
+
if (block.kind === "sectionBreak" && block.columns)
|
|
175738
|
+
sectionColumnsMap.set(sectionIdx, cloneColumnLayout(block.columns));
|
|
175739
|
+
}
|
|
175651
175740
|
});
|
|
175652
175741
|
for (const page of pages)
|
|
175653
175742
|
if (page === pages[pages.length - 1] && page.fragments.length > 0) {
|
|
175743
|
+
const finalSectionColumns = sectionColumnsMap.get(activeSectionIndex) ?? activeColumns;
|
|
175744
|
+
if (finalSectionColumns?.equalWidth === false && Array.isArray(finalSectionColumns.widths) && finalSectionColumns.widths.length > 0)
|
|
175745
|
+
continue;
|
|
175654
175746
|
if (new Set(page.fragments.map((f2) => Math.round(f2.x))).size > 1)
|
|
175655
175747
|
continue;
|
|
175656
175748
|
if (new Set(page.fragments.map((f2) => Math.round(f2.width))).size > 1)
|
|
@@ -175664,8 +175756,10 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
175664
175756
|
const fragmentsToBalance = fragmentSections.size > 1 ? page.fragments.filter((f2) => {
|
|
175665
175757
|
return blockSectionMap.get(f2.blockId) === activeSectionIndex;
|
|
175666
175758
|
}) : page.fragments;
|
|
175667
|
-
if (fragmentsToBalance.length > 0)
|
|
175668
|
-
|
|
175759
|
+
if (fragmentsToBalance.length > 0) {
|
|
175760
|
+
const availableHeight = pageSize.h - activeBottomMargin - activeTopMargin;
|
|
175761
|
+
balancePageColumns(fragmentsToBalance, normalizedCols, { left: activeLeftMargin }, activeTopMargin, availableHeight, measureMap);
|
|
175762
|
+
}
|
|
175669
175763
|
}
|
|
175670
175764
|
}
|
|
175671
175765
|
return {
|
|
@@ -175773,21 +175867,7 @@ function layoutHeaderFooter(blocks2, measures, constraints) {
|
|
|
175773
175867
|
};
|
|
175774
175868
|
}
|
|
175775
175869
|
function normalizeColumns(input2, contentWidth) {
|
|
175776
|
-
|
|
175777
|
-
const count = Math.max(1, rawCount || 1);
|
|
175778
|
-
const gap = Math.max(0, input2?.gap ?? 0);
|
|
175779
|
-
const width = (contentWidth - gap * (count - 1)) / count;
|
|
175780
|
-
if (width <= COLUMN_EPSILON$1)
|
|
175781
|
-
return {
|
|
175782
|
-
count: 1,
|
|
175783
|
-
gap: 0,
|
|
175784
|
-
width: contentWidth
|
|
175785
|
-
};
|
|
175786
|
-
return {
|
|
175787
|
-
count,
|
|
175788
|
-
gap,
|
|
175789
|
-
width
|
|
175790
|
-
};
|
|
175870
|
+
return normalizeColumnLayout(input2, contentWidth, COLUMN_EPSILON$1);
|
|
175791
175871
|
}
|
|
175792
175872
|
function resolveClipPath(value) {
|
|
175793
175873
|
if (typeof value !== "string")
|
|
@@ -180987,6 +181067,12 @@ function remeasureParagraph(block, maxWidth, firstLineIndent = 0) {
|
|
|
180987
181067
|
}
|
|
180988
181068
|
const w = measureRunSliceWidth(run2, c, c + 1);
|
|
180989
181069
|
if (width + w > effectiveMaxWidth - WIDTH_FUDGE_PX && width > 0) {
|
|
181070
|
+
if (lastBreakRun < 0 && width + w <= effectiveMaxWidth + WIDTH_FUDGE_PX) {
|
|
181071
|
+
width += w;
|
|
181072
|
+
endRun = r$1;
|
|
181073
|
+
endChar = c + 1;
|
|
181074
|
+
continue;
|
|
181075
|
+
}
|
|
180990
181076
|
if (lastBreakRun >= 0) {
|
|
180991
181077
|
endRun = lastBreakRun;
|
|
180992
181078
|
endChar = lastBreakChar;
|
|
@@ -181999,15 +182085,10 @@ function computePerSectionConstraints(options, blocks2) {
|
|
|
181999
182085
|
bottom: normalizeMargin(options.margins?.bottom, DEFAULT_MARGINS$1.bottom),
|
|
182000
182086
|
left: normalizeMargin(options.margins?.left, DEFAULT_MARGINS$1.left)
|
|
182001
182087
|
};
|
|
182002
|
-
const computeColumnWidth = (contentWidth, columns) => {
|
|
182003
|
-
if (!columns || columns.count <= 1)
|
|
182004
|
-
return contentWidth;
|
|
182005
|
-
return (contentWidth - Math.max(0, columns.gap ?? 0) * (columns.count - 1)) / columns.count;
|
|
182006
|
-
};
|
|
182007
182088
|
const defaultContentWidth = pageSize.w - (defaultMargins.left + defaultMargins.right);
|
|
182008
182089
|
const defaultContentHeight = pageSize.h - (defaultMargins.top + defaultMargins.bottom);
|
|
182009
182090
|
let current = {
|
|
182010
|
-
maxWidth:
|
|
182091
|
+
maxWidth: resolveMaxColumnWidth(defaultContentWidth, options.columns),
|
|
182011
182092
|
maxHeight: defaultContentHeight
|
|
182012
182093
|
};
|
|
182013
182094
|
const result = [];
|
|
@@ -182025,7 +182106,7 @@ function computePerSectionConstraints(options, blocks2) {
|
|
|
182025
182106
|
const contentHeight = sectionPageSize.h - (sectionMargins.top + sectionMargins.bottom);
|
|
182026
182107
|
if (contentWidth > 0 && contentHeight > 0)
|
|
182027
182108
|
current = {
|
|
182028
|
-
maxWidth:
|
|
182109
|
+
maxWidth: resolveMaxColumnWidth(contentWidth, ooXmlSectionColumns(sb.columns)),
|
|
182029
182110
|
maxHeight: contentHeight
|
|
182030
182111
|
};
|
|
182031
182112
|
}
|
|
@@ -182055,12 +182136,7 @@ function resolveMeasurementConstraints(options, blocks2) {
|
|
|
182055
182136
|
};
|
|
182056
182137
|
const baseContentWidth = pageSize.w - (margins.left + margins.right);
|
|
182057
182138
|
const baseContentHeight = pageSize.h - (margins.top + margins.bottom);
|
|
182058
|
-
|
|
182059
|
-
if (!columns || columns.count <= 1)
|
|
182060
|
-
return contentWidth;
|
|
182061
|
-
return (contentWidth - Math.max(0, columns.gap ?? 0) * (columns.count - 1)) / columns.count;
|
|
182062
|
-
};
|
|
182063
|
-
let measurementWidth = computeColumnWidth(baseContentWidth, options.columns);
|
|
182139
|
+
let measurementWidth = resolveMaxColumnWidth(baseContentWidth, options.columns);
|
|
182064
182140
|
let measurementHeight = baseContentHeight;
|
|
182065
182141
|
if (blocks2 && blocks2.length > 0)
|
|
182066
182142
|
for (const block of blocks2) {
|
|
@@ -182077,7 +182153,7 @@ function resolveMeasurementConstraints(options, blocks2) {
|
|
|
182077
182153
|
const contentHeight = sectionPageSize.h - (sectionMargins.top + sectionMargins.bottom);
|
|
182078
182154
|
if (contentWidth <= 0 || contentHeight <= 0)
|
|
182079
182155
|
continue;
|
|
182080
|
-
const columnWidth =
|
|
182156
|
+
const columnWidth = resolveMaxColumnWidth(contentWidth, ooXmlSectionColumns(block.columns));
|
|
182081
182157
|
if (columnWidth > measurementWidth)
|
|
182082
182158
|
measurementWidth = columnWidth;
|
|
182083
182159
|
if (contentHeight > measurementHeight)
|
|
@@ -198578,7 +198654,26 @@ var Node$13 = class Node$14 {
|
|
|
198578
198654
|
console.warn("Failed to initialize developer tools:", error);
|
|
198579
198655
|
}
|
|
198580
198656
|
}
|
|
198581
|
-
}, BLANK_DOCX_DATA_URI = `data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,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`, DocumentApiAdapterError, ALIAS_ELIGIBLE_TYPES, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, SectionType, DEFAULT_PARAGRAPH_SECTION_TYPE, DEFAULT_BODY_SECTION_TYPE, TWIPS_PER_INCH$2 = 1440, PX_PER_INCH$2 = 96, DEFAULT_COLUMN_GAP_INCHES = 0.5, DEFAULT_HEADER_FOOTER_MARGIN_PX = 0, LINK_MARK_NAME = "link", COMMENT_MARK_NAME, SUPPORTED_INLINE_TYPES, cacheByEditor, OBJECT_REPLACEMENT_CHAR = "", LINE_NUMBER_RESTART_VALUES, PAGE_NUMBER_FORMAT_VALUES, SECTION_ORIENTATION_VALUES, SECTION_VERTICAL_ALIGN_VALUES, readSectPrHeaderFooterRefs, PIXELS_PER_INCH$2 = 96, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SDT_NODE_NAMES, SDT_BLOCK_NAME = "structuredContentBlock", VALID_CONTROL_TYPES, VALID_LOCK_MODES, VALID_APPEARANCES, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, CSS_NAMED_COLORS, HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, registry, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", CONTENT_CAPABILITIES, INLINE_CAPABILITIES, SDT_LOCK_TO_LOCK_MODE, STUB_WHERE, EMPTY_RESOLUTION, CONTAINER_NODE_TYPES, VALID_EDGE_NODE_TYPES3, FALLBACK_STORE_KEY = "__documentApiComments", STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL2, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, PARAGRAPH_NODE_TYPES, ALIGNMENT_TO_JUSTIFICATION, DERIVED_ID_LENGTH = 24, groupedCache, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, PREVIEW_TEXT_MAX_LENGTH = 2000, BLOCK_PREVIEW_MAX_LENGTH = 200, EDGE_NODE_TYPES, SETTINGS_PART_PATH = "word/settings.xml", POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART = "word/settings.xml", TABLE_ADAPTER_DISPATCH, ROW_OPS, TABLE_SCOPED_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS$1 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, DOCUMENT_RELS_PATH$1 = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", WORDPROCESSINGML_XMLNS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main", OFFICE_DOCUMENT_RELS_XMLNS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships", RELATIONSHIP_ID_PATTERN, HEADER_FILE_PATTERN$1, FOOTER_FILE_PATTERN$1, HISTORY_UNSAFE_OPS, IGNORED_ATTRIBUTE_KEYS, TRACK_CHANGE_MARK_NAMES, TRACK_CHANGE_IGNORED_ATTRIBUTE_KEYS, SIMILARITY_THRESHOLD = 0.65, MIN_LENGTH_FOR_SIMILARITY = 4, COMMENT_ATTRS_DIFF_IGNORED_KEYS, setNestedValue = (target, path2, value) => {
|
|
198657
|
+
}, BLANK_DOCX_DATA_URI = `data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,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`, DocumentApiAdapterError, ALIAS_ELIGIBLE_TYPES, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, SectionType, DEFAULT_PARAGRAPH_SECTION_TYPE, DEFAULT_BODY_SECTION_TYPE, TWIPS_PER_INCH$2 = 1440, PX_PER_INCH$2 = 96, DEFAULT_COLUMN_GAP_INCHES = 0.5, OOXML_PCT_DIVISOR = 5000, SPACE_CHARS, isAtomicRunKind = (kind) => kind === "image" || kind === "lineBreak" || kind === "break" || kind === "tab" || kind === "fieldAnnotation", isImageLikeRun = (run2) => {
|
|
198658
|
+
if (!run2 || typeof run2 !== "object")
|
|
198659
|
+
return false;
|
|
198660
|
+
return typeof run2.src === "string";
|
|
198661
|
+
}, coerceRunText = (run2) => {
|
|
198662
|
+
if (!run2 || typeof run2 !== "object")
|
|
198663
|
+
return "";
|
|
198664
|
+
const candidate = run2.text;
|
|
198665
|
+
return typeof candidate === "string" ? candidate : "";
|
|
198666
|
+
}, coercePmStart = (run2) => {
|
|
198667
|
+
if (!run2 || typeof run2 !== "object")
|
|
198668
|
+
return;
|
|
198669
|
+
const candidate = run2.pmStart;
|
|
198670
|
+
return typeof candidate === "number" ? candidate : undefined;
|
|
198671
|
+
}, coercePmEnd = (run2) => {
|
|
198672
|
+
if (!run2 || typeof run2 !== "object")
|
|
198673
|
+
return;
|
|
198674
|
+
const candidate = run2.pmEnd;
|
|
198675
|
+
return typeof candidate === "number" ? candidate : undefined;
|
|
198676
|
+
}, engines_exports, DEFAULT_HEADER_FOOTER_MARGIN_PX = 0, LINK_MARK_NAME = "link", COMMENT_MARK_NAME, SUPPORTED_INLINE_TYPES, cacheByEditor, OBJECT_REPLACEMENT_CHAR = "", LINE_NUMBER_RESTART_VALUES, PAGE_NUMBER_FORMAT_VALUES, SECTION_ORIENTATION_VALUES, SECTION_VERTICAL_ALIGN_VALUES, readSectPrHeaderFooterRefs, PIXELS_PER_INCH$2 = 96, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SDT_NODE_NAMES, SDT_BLOCK_NAME = "structuredContentBlock", VALID_CONTROL_TYPES, VALID_LOCK_MODES, VALID_APPEARANCES, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, CSS_NAMED_COLORS, HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, registry, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", CONTENT_CAPABILITIES, INLINE_CAPABILITIES, SDT_LOCK_TO_LOCK_MODE, STUB_WHERE, EMPTY_RESOLUTION, CONTAINER_NODE_TYPES, VALID_EDGE_NODE_TYPES3, FALLBACK_STORE_KEY = "__documentApiComments", STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL2, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, PARAGRAPH_NODE_TYPES, ALIGNMENT_TO_JUSTIFICATION, DERIVED_ID_LENGTH = 24, groupedCache, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, PREVIEW_TEXT_MAX_LENGTH = 2000, BLOCK_PREVIEW_MAX_LENGTH = 200, EDGE_NODE_TYPES, SETTINGS_PART_PATH = "word/settings.xml", POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART = "word/settings.xml", TABLE_ADAPTER_DISPATCH, ROW_OPS, TABLE_SCOPED_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS$1 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, DOCUMENT_RELS_PATH$1 = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", WORDPROCESSINGML_XMLNS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main", OFFICE_DOCUMENT_RELS_XMLNS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships", RELATIONSHIP_ID_PATTERN, HEADER_FILE_PATTERN$1, FOOTER_FILE_PATTERN$1, HISTORY_UNSAFE_OPS, IGNORED_ATTRIBUTE_KEYS, TRACK_CHANGE_MARK_NAMES, TRACK_CHANGE_IGNORED_ATTRIBUTE_KEYS, SIMILARITY_THRESHOLD = 0.65, MIN_LENGTH_FOR_SIMILARITY = 4, COMMENT_ATTRS_DIFF_IGNORED_KEYS, setNestedValue = (target, path2, value) => {
|
|
198582
198677
|
if (!path2.includes(".")) {
|
|
198583
198678
|
target[path2] = value;
|
|
198584
198679
|
return;
|
|
@@ -200825,26 +200920,7 @@ var Node$13 = class Node$14 {
|
|
|
200825
200920
|
if (epoch < minKeptFromEpoch)
|
|
200826
200921
|
this.#mapsByFromEpoch.delete(epoch);
|
|
200827
200922
|
}
|
|
200828
|
-
},
|
|
200829
|
-
if (!run2 || typeof run2 !== "object")
|
|
200830
|
-
return false;
|
|
200831
|
-
return typeof run2.src === "string";
|
|
200832
|
-
}, coerceRunText = (run2) => {
|
|
200833
|
-
if (!run2 || typeof run2 !== "object")
|
|
200834
|
-
return "";
|
|
200835
|
-
const candidate = run2.text;
|
|
200836
|
-
return typeof candidate === "string" ? candidate : "";
|
|
200837
|
-
}, coercePmStart = (run2) => {
|
|
200838
|
-
if (!run2 || typeof run2 !== "object")
|
|
200839
|
-
return;
|
|
200840
|
-
const candidate = run2.pmStart;
|
|
200841
|
-
return typeof candidate === "number" ? candidate : undefined;
|
|
200842
|
-
}, coercePmEnd = (run2) => {
|
|
200843
|
-
if (!run2 || typeof run2 !== "object")
|
|
200844
|
-
return;
|
|
200845
|
-
const candidate = run2.pmEnd;
|
|
200846
|
-
return typeof candidate === "number" ? candidate : undefined;
|
|
200847
|
-
}, engines_exports, FONT_FAMILY_FALLBACKS2, DEFAULT_GENERIC_FALLBACK2 = "sans-serif", normalizeParts = (value) => (value || "").split(",").map((part) => part.trim()).filter(Boolean), splitOutsideQuotes = (str, delimiter) => {
|
|
200923
|
+
}, FONT_FAMILY_FALLBACKS2, DEFAULT_GENERIC_FALLBACK2 = "sans-serif", normalizeParts = (value) => (value || "").split(",").map((part) => part.trim()).filter(Boolean), splitOutsideQuotes = (str, delimiter) => {
|
|
200848
200924
|
if (!str.includes('"') && !str.includes("'"))
|
|
200849
200925
|
return str.split(delimiter).map((p$12) => p$12.trim()).filter(Boolean);
|
|
200850
200926
|
const parts = [];
|
|
@@ -201979,7 +202055,11 @@ var Node$13 = class Node$14 {
|
|
|
201979
202055
|
if (!Number.isFinite(value) || value < 0)
|
|
201980
202056
|
return 0;
|
|
201981
202057
|
return value;
|
|
201982
|
-
}, COLUMN_MIN_WIDTH_PX = 25, COLUMN_MAX_WIDTH_PX = 200, ROW_MIN_HEIGHT_PX = 10, MIN_PARTIAL_ROW_HEIGHT = 20, ROW_HEIGHT_EPSILON = 0.1, DEFAULT_BALANCING_CONFIG,
|
|
202058
|
+
}, COLUMN_MIN_WIDTH_PX = 25, COLUMN_MAX_WIDTH_PX = 200, ROW_MIN_HEIGHT_PX = 10, MIN_PARTIAL_ROW_HEIGHT = 20, ROW_HEIGHT_EPSILON = 0.1, DEFAULT_BALANCING_CONFIG, getColumnWidthAt = (columns, columnIndex) => {
|
|
202059
|
+
if (Array.isArray(columns.widths) && columns.widths.length > 0)
|
|
202060
|
+
return columns.widths[Math.max(0, Math.min(columnIndex, columns.widths.length - 1))] ?? columns.width;
|
|
202061
|
+
return columns.width;
|
|
202062
|
+
}, DEFAULT_PARAGRAPH_LINE_HEIGHT_PX = 20, SEMANTIC_PAGE_HEIGHT_PX = 1e6, DEFAULT_PAGE_SIZE$2, DEFAULT_MARGINS$2, COLUMN_EPSILON$1 = 0.0001, PAGE_START_EPSILON = 0.0001, asBoolean = (value) => {
|
|
201983
202063
|
if (value === true || value === 1)
|
|
201984
202064
|
return true;
|
|
201985
202065
|
if (typeof value === "string") {
|
|
@@ -208070,43 +208150,26 @@ var Node$13 = class Node$14 {
|
|
|
208070
208150
|
if (layout.pages.length > 0)
|
|
208071
208151
|
return layout.pages.length - 1;
|
|
208072
208152
|
return null;
|
|
208073
|
-
}, footnoteColumnKey = (pageIndex, columnIndex) => `${pageIndex}:${columnIndex}`, COLUMN_EPSILON = 0.01,
|
|
208074
|
-
|
|
208075
|
-
|
|
208076
|
-
|
|
208077
|
-
|
|
208078
|
-
|
|
208079
|
-
|
|
208080
|
-
count: 1,
|
|
208081
|
-
gap: 0,
|
|
208082
|
-
width: Math.max(0, contentWidth)
|
|
208083
|
-
};
|
|
208084
|
-
return {
|
|
208085
|
-
count,
|
|
208086
|
-
gap,
|
|
208087
|
-
width
|
|
208088
|
-
};
|
|
208089
|
-
}, resolveSectionColumnsByIndex = (options, blocks2) => {
|
|
208153
|
+
}, footnoteColumnKey = (pageIndex, columnIndex) => `${pageIndex}:${columnIndex}`, COLUMN_EPSILON = 0.01, resolveMaxColumnWidth = (contentWidth, columns) => {
|
|
208154
|
+
if (!columns || columns.count <= 1)
|
|
208155
|
+
return contentWidth;
|
|
208156
|
+
return normalizeColumnsForFootnotes(columns, contentWidth).width;
|
|
208157
|
+
}, normalizeColumnsForFootnotes = (input2, contentWidth) => {
|
|
208158
|
+
return normalizeColumnLayout(input2, contentWidth, COLUMN_EPSILON);
|
|
208159
|
+
}, ooXmlSectionColumns = (columns) => cloneColumnLayout(columns), resolveSectionColumnsByIndex = (options, blocks2) => {
|
|
208090
208160
|
const result = /* @__PURE__ */ new Map;
|
|
208091
|
-
let activeColumns = options.columns
|
|
208092
|
-
count: 1,
|
|
208093
|
-
gap: 0
|
|
208094
|
-
};
|
|
208161
|
+
let activeColumns = cloneColumnLayout(options.columns);
|
|
208095
208162
|
if (blocks2 && blocks2.length > 0)
|
|
208096
208163
|
for (const block of blocks2) {
|
|
208097
208164
|
if (block.kind !== "sectionBreak")
|
|
208098
208165
|
continue;
|
|
208099
208166
|
const sectionIndexRaw = block.attrs?.sectionIndex;
|
|
208100
208167
|
const sectionIndex = typeof sectionIndexRaw === "number" && Number.isFinite(sectionIndexRaw) ? sectionIndexRaw : result.size;
|
|
208101
|
-
|
|
208102
|
-
|
|
208103
|
-
count: block.columns.count,
|
|
208104
|
-
gap: block.columns.gap
|
|
208105
|
-
};
|
|
208106
|
-
result.set(sectionIndex, { ...activeColumns });
|
|
208168
|
+
activeColumns = ooXmlSectionColumns(block.columns);
|
|
208169
|
+
result.set(sectionIndex, cloneColumnLayout(activeColumns));
|
|
208107
208170
|
}
|
|
208108
208171
|
if (result.size === 0)
|
|
208109
|
-
result.set(0,
|
|
208172
|
+
result.set(0, cloneColumnLayout(activeColumns));
|
|
208110
208173
|
return result;
|
|
208111
208174
|
}, resolvePageColumns = (layout, options, blocks2) => {
|
|
208112
208175
|
const sectionColumns = resolveSectionColumnsByIndex(options, blocks2);
|
|
@@ -208152,9 +208215,23 @@ var Node$13 = class Node$14 {
|
|
|
208152
208215
|
if (columns && columns.count > 1 && page) {
|
|
208153
208216
|
const fragment2 = findFragmentForPos(page, ref$1.pos);
|
|
208154
208217
|
if (fragment2 && typeof fragment2.x === "number") {
|
|
208155
|
-
const
|
|
208156
|
-
|
|
208157
|
-
|
|
208218
|
+
const widths = Array.isArray(columns.widths) && columns.widths.length > 0 ? columns.widths : undefined;
|
|
208219
|
+
if (widths) {
|
|
208220
|
+
let cursorX = columns.left;
|
|
208221
|
+
for (let index2 = 0;index2 < columns.count; index2 += 1) {
|
|
208222
|
+
const columnWidth = widths[index2] ?? columns.width;
|
|
208223
|
+
if (fragment2.x < cursorX + columnWidth + columns.gap / 2) {
|
|
208224
|
+
columnIndex = index2;
|
|
208225
|
+
break;
|
|
208226
|
+
}
|
|
208227
|
+
cursorX += columnWidth + columns.gap;
|
|
208228
|
+
columnIndex = Math.min(columns.count - 1, index2 + 1);
|
|
208229
|
+
}
|
|
208230
|
+
} else {
|
|
208231
|
+
const columnStride = columns.width + columns.gap;
|
|
208232
|
+
const rawIndex = columnStride > 0 ? Math.floor((fragment2.x - columns.left) / columnStride) : 0;
|
|
208233
|
+
columnIndex = Math.max(0, Math.min(columns.count - 1, rawIndex));
|
|
208234
|
+
}
|
|
208158
208235
|
}
|
|
208159
208236
|
}
|
|
208160
208237
|
const key$1 = footnoteColumnKey(pageIndex, columnIndex);
|
|
@@ -208180,10 +208257,7 @@ var Node$13 = class Node$14 {
|
|
|
208180
208257
|
left: normalizeMargin(options.margins?.left, DEFAULT_MARGINS$1.left)
|
|
208181
208258
|
};
|
|
208182
208259
|
let width = pageSize.w - (margins.left + margins.right);
|
|
208183
|
-
let activeColumns = options.columns
|
|
208184
|
-
count: 1,
|
|
208185
|
-
gap: 0
|
|
208186
|
-
};
|
|
208260
|
+
let activeColumns = cloneColumnLayout(options.columns);
|
|
208187
208261
|
let activePageSize = pageSize;
|
|
208188
208262
|
let activeMargins = { ...margins };
|
|
208189
208263
|
const resolveColumnWidth = () => {
|
|
@@ -208200,11 +208274,7 @@ var Node$13 = class Node$14 {
|
|
|
208200
208274
|
right: normalizeMargin(block.margins?.right, activeMargins.right),
|
|
208201
208275
|
left: normalizeMargin(block.margins?.left, activeMargins.left)
|
|
208202
208276
|
};
|
|
208203
|
-
|
|
208204
|
-
activeColumns = {
|
|
208205
|
-
count: block.columns.count,
|
|
208206
|
-
gap: block.columns.gap
|
|
208207
|
-
};
|
|
208277
|
+
activeColumns = ooXmlSectionColumns(block.columns);
|
|
208208
208278
|
const w = resolveColumnWidth();
|
|
208209
208279
|
if (w > 0 && w < width)
|
|
208210
208280
|
width = w;
|
|
@@ -217670,7 +217740,7 @@ var Node$13 = class Node$14 {
|
|
|
217670
217740
|
return false;
|
|
217671
217741
|
return Boolean(checker(attrs));
|
|
217672
217742
|
}, SuperToolbar, ICONS, TEXTS, tableActionsOptions;
|
|
217673
|
-
var
|
|
217743
|
+
var init_src_CcGVOrgc_es = __esm(() => {
|
|
217674
217744
|
init_rolldown_runtime_B2q5OVn9_es();
|
|
217675
217745
|
init_SuperConverter_C2Sw7Q5Z_es();
|
|
217676
217746
|
init_jszip_ChlR43oI_es();
|
|
@@ -225757,6 +225827,20 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
225757
225827
|
}({});
|
|
225758
225828
|
DEFAULT_PARAGRAPH_SECTION_TYPE = SectionType.NEXT_PAGE;
|
|
225759
225829
|
DEFAULT_BODY_SECTION_TYPE = SectionType.CONTINUOUS;
|
|
225830
|
+
SPACE_CHARS = new Set([" ", " "]);
|
|
225831
|
+
engines_exports = /* @__PURE__ */ __export2({
|
|
225832
|
+
OOXML_PCT_DIVISOR: () => OOXML_PCT_DIVISOR,
|
|
225833
|
+
calculateTabWidth: () => calculateTabWidth,
|
|
225834
|
+
computeListIndent: () => computeListIndent,
|
|
225835
|
+
computeTabStops: () => computeTabStops$1,
|
|
225836
|
+
computeWrapExclusion: () => computeWrapExclusion,
|
|
225837
|
+
formatListLabel: () => formatListLabel,
|
|
225838
|
+
layoutWithTabs: () => layoutWithTabs,
|
|
225839
|
+
measureRowHeights: () => measureRowHeights,
|
|
225840
|
+
resolveColumnWidths: () => resolveColumnWidths,
|
|
225841
|
+
resolveSpacingIndent: () => resolveSpacingIndent,
|
|
225842
|
+
scaleWrapPolygon: () => scaleWrapPolygon
|
|
225843
|
+
}, 1);
|
|
225760
225844
|
COMMENT_MARK_NAME = CommentMarkName;
|
|
225761
225845
|
SUPPORTED_INLINE_TYPES = new Set([
|
|
225762
225846
|
"run",
|
|
@@ -229520,20 +229604,6 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
229520
229604
|
"search",
|
|
229521
229605
|
"yjs-cursor"
|
|
229522
229606
|
];
|
|
229523
|
-
SPACE_CHARS = new Set([" ", " "]);
|
|
229524
|
-
engines_exports = /* @__PURE__ */ __export2({
|
|
229525
|
-
OOXML_PCT_DIVISOR: () => OOXML_PCT_DIVISOR,
|
|
229526
|
-
calculateTabWidth: () => calculateTabWidth,
|
|
229527
|
-
computeListIndent: () => computeListIndent,
|
|
229528
|
-
computeTabStops: () => computeTabStops$1,
|
|
229529
|
-
computeWrapExclusion: () => computeWrapExclusion,
|
|
229530
|
-
formatListLabel: () => formatListLabel,
|
|
229531
|
-
layoutWithTabs: () => layoutWithTabs,
|
|
229532
|
-
measureRowHeights: () => measureRowHeights,
|
|
229533
|
-
resolveColumnWidths: () => resolveColumnWidths,
|
|
229534
|
-
resolveSpacingIndent: () => resolveSpacingIndent,
|
|
229535
|
-
scaleWrapPolygon: () => scaleWrapPolygon
|
|
229536
|
-
}, 1);
|
|
229537
229607
|
FONT_FAMILY_FALLBACKS2 = Object.freeze({
|
|
229538
229608
|
swiss: "Arial, sans-serif",
|
|
229539
229609
|
roman: "Times New Roman, serif",
|
|
@@ -239388,7 +239458,10 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
239388
239458
|
...firstSection?.margins?.header != null ? { header: firstSection.margins.header } : {},
|
|
239389
239459
|
...firstSection?.margins?.footer != null ? { footer: firstSection.margins.footer } : {}
|
|
239390
239460
|
};
|
|
239391
|
-
const columns = firstSection
|
|
239461
|
+
const columns = firstSection ? firstSection.columns ?? {
|
|
239462
|
+
count: 1,
|
|
239463
|
+
gap: 0
|
|
239464
|
+
} : defaults2.columns;
|
|
239392
239465
|
this.#layoutOptions.pageSize = pageSize;
|
|
239393
239466
|
this.#layoutOptions.margins = margins;
|
|
239394
239467
|
const flowMode = this.#layoutOptions.flowMode ?? "paginated";
|
|
@@ -251763,7 +251836,7 @@ var init_zipper_DqXT7uTa_es = __esm(() => {
|
|
|
251763
251836
|
|
|
251764
251837
|
// ../../packages/superdoc/dist/super-editor.es.js
|
|
251765
251838
|
var init_super_editor_es = __esm(() => {
|
|
251766
|
-
|
|
251839
|
+
init_src_CcGVOrgc_es();
|
|
251767
251840
|
init_SuperConverter_C2Sw7Q5Z_es();
|
|
251768
251841
|
init_jszip_ChlR43oI_es();
|
|
251769
251842
|
init_xml_js_BtmJ6bNs_es();
|