@windoc/core 0.2.8 → 0.2.10
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.d.mts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +65 -32
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +65 -32
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -454,6 +454,8 @@ interface IRow {
|
|
|
454
454
|
listIndex?: number;
|
|
455
455
|
offsetX?: number;
|
|
456
456
|
offsetY?: number;
|
|
457
|
+
spaceAbove?: number;
|
|
458
|
+
spaceBelow?: number;
|
|
457
459
|
elementList: IRowElement[];
|
|
458
460
|
isWidthNotEnough?: boolean;
|
|
459
461
|
rowIndex: number;
|
|
@@ -2519,6 +2521,7 @@ declare class Draw {
|
|
|
2519
2521
|
getElementSize(el: IElement): number;
|
|
2520
2522
|
getElementRowMargin(el: IElement): number;
|
|
2521
2523
|
computeRowList(payload: IComputeRowListPayload): IRow[];
|
|
2524
|
+
private _applyRowSpacing;
|
|
2522
2525
|
private _computePageList;
|
|
2523
2526
|
private _drawHighlight;
|
|
2524
2527
|
drawRow(ctx: CanvasRenderingContext2D, payload: IDrawRowPayload): void;
|
package/dist/index.d.ts
CHANGED
|
@@ -454,6 +454,8 @@ interface IRow {
|
|
|
454
454
|
listIndex?: number;
|
|
455
455
|
offsetX?: number;
|
|
456
456
|
offsetY?: number;
|
|
457
|
+
spaceAbove?: number;
|
|
458
|
+
spaceBelow?: number;
|
|
457
459
|
elementList: IRowElement[];
|
|
458
460
|
isWidthNotEnough?: boolean;
|
|
459
461
|
rowIndex: number;
|
|
@@ -2519,6 +2521,7 @@ declare class Draw {
|
|
|
2519
2521
|
getElementSize(el: IElement): number;
|
|
2520
2522
|
getElementRowMargin(el: IElement): number;
|
|
2521
2523
|
computeRowList(payload: IComputeRowListPayload): IRow[];
|
|
2524
|
+
private _applyRowSpacing;
|
|
2522
2525
|
private _computePageList;
|
|
2523
2526
|
private _drawHighlight;
|
|
2524
2527
|
drawRow(ctx: CanvasRenderingContext2D, payload: IDrawRowPayload): void;
|
package/dist/index.js
CHANGED
|
@@ -145,6 +145,17 @@ var LETTER_CLASS = {
|
|
|
145
145
|
};
|
|
146
146
|
var METRICS_BASIS_TEXT = "M";
|
|
147
147
|
|
|
148
|
+
// src/dataset/enum/Title.ts
|
|
149
|
+
var TitleLevel = /* @__PURE__ */ ((TitleLevel2) => {
|
|
150
|
+
TitleLevel2["FIRST"] = "first";
|
|
151
|
+
TitleLevel2["SECOND"] = "second";
|
|
152
|
+
TitleLevel2["THIRD"] = "third";
|
|
153
|
+
TitleLevel2["FOURTH"] = "fourth";
|
|
154
|
+
TitleLevel2["FIFTH"] = "fifth";
|
|
155
|
+
TitleLevel2["SIXTH"] = "sixth";
|
|
156
|
+
return TitleLevel2;
|
|
157
|
+
})(TitleLevel || {});
|
|
158
|
+
|
|
148
159
|
// src/dataset/enum/Row.ts
|
|
149
160
|
var RowFlex = /* @__PURE__ */ ((RowFlex2) => {
|
|
150
161
|
RowFlex2["LEFT"] = "left";
|
|
@@ -3964,25 +3975,14 @@ var ulPresetCycles = {
|
|
|
3964
3975
|
var INDENT_PER_LEVEL = 20;
|
|
3965
3976
|
var MAX_LIST_LEVEL = 8;
|
|
3966
3977
|
|
|
3967
|
-
// src/dataset/enum/Title.ts
|
|
3968
|
-
var TitleLevel = /* @__PURE__ */ ((TitleLevel2) => {
|
|
3969
|
-
TitleLevel2["FIRST"] = "first";
|
|
3970
|
-
TitleLevel2["SECOND"] = "second";
|
|
3971
|
-
TitleLevel2["THIRD"] = "third";
|
|
3972
|
-
TitleLevel2["FOURTH"] = "fourth";
|
|
3973
|
-
TitleLevel2["FIFTH"] = "fifth";
|
|
3974
|
-
TitleLevel2["SIXTH"] = "sixth";
|
|
3975
|
-
return TitleLevel2;
|
|
3976
|
-
})(TitleLevel || {});
|
|
3977
|
-
|
|
3978
3978
|
// src/dataset/constant/Title.ts
|
|
3979
3979
|
var defaultTitleOption = {
|
|
3980
|
-
defaultFirstSize:
|
|
3981
|
-
defaultSecondSize:
|
|
3982
|
-
defaultThirdSize:
|
|
3983
|
-
defaultFourthSize:
|
|
3984
|
-
defaultFifthSize:
|
|
3985
|
-
defaultSixthSize:
|
|
3980
|
+
defaultFirstSize: 20,
|
|
3981
|
+
defaultSecondSize: 16,
|
|
3982
|
+
defaultThirdSize: 14,
|
|
3983
|
+
defaultFourthSize: 12,
|
|
3984
|
+
defaultFifthSize: 11,
|
|
3985
|
+
defaultSixthSize: 11
|
|
3986
3986
|
};
|
|
3987
3987
|
var titleSizeMapping = {
|
|
3988
3988
|
["first" /* FIRST */]: "defaultFirstSize",
|
|
@@ -5403,7 +5403,7 @@ function convertElementToDom(element, options) {
|
|
|
5403
5403
|
if (element.italic) {
|
|
5404
5404
|
dom.style.fontStyle = "italic";
|
|
5405
5405
|
}
|
|
5406
|
-
dom.style.fontSize = `${element.size || options.defaultSize}
|
|
5406
|
+
dom.style.fontSize = `${element.size || options.defaultSize}pt`;
|
|
5407
5407
|
if (element.highlight) {
|
|
5408
5408
|
dom.style.backgroundColor = element.highlight;
|
|
5409
5409
|
}
|
|
@@ -5729,7 +5729,7 @@ function convertTextNodeToElement(textNode) {
|
|
|
5729
5729
|
color: style.color,
|
|
5730
5730
|
bold: Number(style.fontWeight) > 500,
|
|
5731
5731
|
italic: style.fontStyle.includes("italic"),
|
|
5732
|
-
size: Math.
|
|
5732
|
+
size: Math.round(parseFloat(style.fontSize) * 0.75)
|
|
5733
5733
|
};
|
|
5734
5734
|
if (anchorNode.nodeName === "SUB" || style.verticalAlign === "sub") {
|
|
5735
5735
|
element.type = "subscript" /* SUBSCRIPT */;
|
|
@@ -6515,11 +6515,13 @@ var Cursor = class {
|
|
|
6515
6515
|
const curIndex = cursorPosition.index;
|
|
6516
6516
|
const curElement = elementList[curIndex];
|
|
6517
6517
|
const nextElement = elementList[curIndex + 1];
|
|
6518
|
-
|
|
6518
|
+
const isNearImage = curElement && curElement.type === "image" /* IMAGE */ || nextElement && nextElement.type === "image" /* IMAGE */;
|
|
6519
|
+
const isNearSeparator = curElement && curElement.type === "separator" /* SEPARATOR */ || nextElement && nextElement.type === "separator" /* SEPARATOR */;
|
|
6520
|
+
if (isNearImage || isNearSeparator) {
|
|
6519
6521
|
const { defaultSize, defaultFont } = this.options;
|
|
6520
6522
|
const ctx = this.draw.getCtx();
|
|
6521
6523
|
ctx.save();
|
|
6522
|
-
ctx.font = `${defaultSize * scale}px ${defaultFont}`;
|
|
6524
|
+
ctx.font = `${defaultSize * (96 / 72) * scale}px ${defaultFont}`;
|
|
6523
6525
|
const textMetrics = ctx.measureText("M");
|
|
6524
6526
|
ctx.restore();
|
|
6525
6527
|
const textHeight = textMetrics.actualBoundingBoxAscent + textMetrics.actualBoundingBoxDescent;
|
|
@@ -6530,10 +6532,9 @@ var Cursor = class {
|
|
|
6530
6532
|
boundingBoxDescent: textMetrics.actualBoundingBoxDescent
|
|
6531
6533
|
};
|
|
6532
6534
|
}
|
|
6533
|
-
const descent = effectiveMetrics.boundingBoxDescent < 0 ? 0 : effectiveMetrics.boundingBoxDescent;
|
|
6534
6535
|
const cursorPadding = 2 * scale;
|
|
6535
|
-
const cursorHeight = effectiveMetrics.
|
|
6536
|
-
const cursorTop = leftTop[1] +
|
|
6536
|
+
const cursorHeight = effectiveMetrics.boundingBoxAscent + effectiveMetrics.boundingBoxDescent + cursorPadding;
|
|
6537
|
+
const cursorTop = isNearImage ? leftTop[1] + cursorPosition.lineHeight - effectiveMetrics.boundingBoxDescent - cursorPadding / 2 + preY : leftTop[1] + ascent - effectiveMetrics.boundingBoxAscent - cursorPadding / 2 + preY;
|
|
6537
6538
|
const cursorLeft = hitLineStartIndex ? leftTop[0] : rightTop[0];
|
|
6538
6539
|
agentCursorDom.style.left = `${cursorLeft}px`;
|
|
6539
6540
|
agentCursorDom.style.top = `${cursorTop}px`;
|
|
@@ -9310,7 +9311,7 @@ var Position = class {
|
|
|
9310
9311
|
}
|
|
9311
9312
|
}
|
|
9312
9313
|
x += curRow.offsetX || 0;
|
|
9313
|
-
y += curRow.offsetY || 0;
|
|
9314
|
+
y += (curRow.offsetY || 0) + (curRow.spaceAbove || 0);
|
|
9314
9315
|
const tablePreX = x;
|
|
9315
9316
|
const tablePreY = y;
|
|
9316
9317
|
for (let j = 0; j < curRow.elementList.length; j++) {
|
|
@@ -9423,7 +9424,7 @@ var Position = class {
|
|
|
9423
9424
|
}
|
|
9424
9425
|
}
|
|
9425
9426
|
x = startX;
|
|
9426
|
-
y += curRow.height;
|
|
9427
|
+
y += curRow.height + (curRow.spaceBelow || 0);
|
|
9427
9428
|
}
|
|
9428
9429
|
return { x, y, index };
|
|
9429
9430
|
}
|
|
@@ -21170,7 +21171,8 @@ var Draw = class {
|
|
|
21170
21171
|
const { defaultSize, defaultFont } = this.options;
|
|
21171
21172
|
const font = el.font || defaultFont;
|
|
21172
21173
|
const size = el.actualSize || el.size || defaultSize;
|
|
21173
|
-
|
|
21174
|
+
const sizePx = size * (96 / 72) * scale;
|
|
21175
|
+
return `${el.italic ? "italic " : ""}${el.bold ? "bold " : ""}${sizePx}px ${font}`;
|
|
21174
21176
|
}
|
|
21175
21177
|
getElementSize(el) {
|
|
21176
21178
|
return el.actualSize || el.size || this.options.defaultSize;
|
|
@@ -21811,6 +21813,28 @@ var Draw = class {
|
|
|
21811
21813
|
}
|
|
21812
21814
|
return rowList;
|
|
21813
21815
|
}
|
|
21816
|
+
_applyRowSpacing() {
|
|
21817
|
+
const { scale } = this.options;
|
|
21818
|
+
const PT_TO_PX = 96 / 72;
|
|
21819
|
+
const HEADING_SPACE = {
|
|
21820
|
+
["first" /* FIRST */]: { above: 20, below: 6 },
|
|
21821
|
+
["second" /* SECOND */]: { above: 18, below: 6 },
|
|
21822
|
+
["third" /* THIRD */]: { above: 16, below: 4 },
|
|
21823
|
+
["fourth" /* FOURTH */]: { above: 14, below: 4 },
|
|
21824
|
+
["fifth" /* FIFTH */]: { above: 12, below: 4 },
|
|
21825
|
+
["sixth" /* SIXTH */]: { above: 12, below: 4 }
|
|
21826
|
+
};
|
|
21827
|
+
for (const row of this.rowList) {
|
|
21828
|
+
const headingEl = row.elementList.find((el) => el.level != null);
|
|
21829
|
+
if (headingEl?.level != null) {
|
|
21830
|
+
const space = HEADING_SPACE[headingEl.level];
|
|
21831
|
+
if (space) {
|
|
21832
|
+
row.spaceAbove = space.above * PT_TO_PX * scale;
|
|
21833
|
+
row.spaceBelow = space.below * PT_TO_PX * scale;
|
|
21834
|
+
}
|
|
21835
|
+
}
|
|
21836
|
+
}
|
|
21837
|
+
}
|
|
21814
21838
|
_computePageList() {
|
|
21815
21839
|
const pageRowList = [[]];
|
|
21816
21840
|
const {
|
|
@@ -21827,7 +21851,7 @@ var Draw = class {
|
|
|
21827
21851
|
this.rowList[i].columnNo = 0;
|
|
21828
21852
|
}
|
|
21829
21853
|
pageHeight += this.rowList.reduce(
|
|
21830
|
-
(pre, cur) => pre + cur.height + (cur.offsetY || 0),
|
|
21854
|
+
(pre, cur) => pre + cur.height + (cur.offsetY || 0) + (cur.spaceAbove || 0) + (cur.spaceBelow || 0),
|
|
21831
21855
|
0
|
|
21832
21856
|
);
|
|
21833
21857
|
const dpr = this.getPagePixelRatio();
|
|
@@ -21850,10 +21874,11 @@ var Draw = class {
|
|
|
21850
21874
|
const rowOffsetY = row.offsetY || 0;
|
|
21851
21875
|
const isPageBreak = this.rowList[i - 1]?.isPageBreak;
|
|
21852
21876
|
const isColumnBreak = this.rowList[i - 1]?.isColumnBreak;
|
|
21853
|
-
|
|
21877
|
+
const rowTotalHeight = row.height + rowOffsetY + (row.spaceAbove || 0) + (row.spaceBelow || 0);
|
|
21878
|
+
if (rowTotalHeight + pageHeight > height || isPageBreak || isColumnBreak) {
|
|
21854
21879
|
if ((!isPageBreak || isColumnBreak) && columnCount > 1 && columnNo < columnCount - 1) {
|
|
21855
21880
|
columnNo++;
|
|
21856
|
-
pageHeight = marginHeight +
|
|
21881
|
+
pageHeight = marginHeight + rowTotalHeight;
|
|
21857
21882
|
row.columnNo = columnNo;
|
|
21858
21883
|
pageRowList[pageNo].push(row);
|
|
21859
21884
|
} else {
|
|
@@ -21862,14 +21887,14 @@ var Draw = class {
|
|
|
21862
21887
|
break;
|
|
21863
21888
|
}
|
|
21864
21889
|
columnNo = 0;
|
|
21865
|
-
pageHeight = marginHeight +
|
|
21890
|
+
pageHeight = marginHeight + rowTotalHeight;
|
|
21866
21891
|
row.columnNo = columnNo;
|
|
21867
21892
|
pageRowList.push([row]);
|
|
21868
21893
|
pageNo++;
|
|
21869
21894
|
}
|
|
21870
21895
|
} else {
|
|
21871
21896
|
row.columnNo = columnNo;
|
|
21872
|
-
pageHeight +=
|
|
21897
|
+
pageHeight += rowTotalHeight;
|
|
21873
21898
|
pageRowList[pageNo].push(row);
|
|
21874
21899
|
}
|
|
21875
21900
|
}
|
|
@@ -22392,6 +22417,7 @@ var Draw = class {
|
|
|
22392
22417
|
surroundElementList,
|
|
22393
22418
|
elementList: this.elementList
|
|
22394
22419
|
});
|
|
22420
|
+
this._applyRowSpacing();
|
|
22395
22421
|
this.pageRowList = this._computePageList();
|
|
22396
22422
|
this.position.computePositionList();
|
|
22397
22423
|
this.area.compute();
|
|
@@ -23719,6 +23745,13 @@ var CommandAdapt = class {
|
|
|
23719
23745
|
]);
|
|
23720
23746
|
curIndex = startIndex;
|
|
23721
23747
|
}
|
|
23748
|
+
const afterSepIndex = curIndex + 2;
|
|
23749
|
+
if (elementList[afterSepIndex]?.value !== ZERO) {
|
|
23750
|
+
this.draw.spliceElementList(elementList, afterSepIndex, 0, [
|
|
23751
|
+
{ value: ZERO }
|
|
23752
|
+
]);
|
|
23753
|
+
}
|
|
23754
|
+
curIndex = afterSepIndex - 1;
|
|
23722
23755
|
}
|
|
23723
23756
|
this.range.setRange(curIndex, curIndex);
|
|
23724
23757
|
this.draw.render({ curIndex });
|