@windoc/core 0.2.9 → 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 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,17 +3975,6 @@ 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
3980
  defaultFirstSize: 20,
@@ -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
- if (curElement && curElement.type === "image" /* IMAGE */ || nextElement && nextElement.type === "image" /* IMAGE */) {
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.height + descent + cursorPadding;
6536
- const cursorTop = leftTop[1] + ascent - effectiveMetrics.height + cursorPadding / 2 + preY;
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
  }
@@ -21812,6 +21813,28 @@ var Draw = class {
21812
21813
  }
21813
21814
  return rowList;
21814
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
+ }
21815
21838
  _computePageList() {
21816
21839
  const pageRowList = [[]];
21817
21840
  const {
@@ -21828,7 +21851,7 @@ var Draw = class {
21828
21851
  this.rowList[i].columnNo = 0;
21829
21852
  }
21830
21853
  pageHeight += this.rowList.reduce(
21831
- (pre, cur) => pre + cur.height + (cur.offsetY || 0),
21854
+ (pre, cur) => pre + cur.height + (cur.offsetY || 0) + (cur.spaceAbove || 0) + (cur.spaceBelow || 0),
21832
21855
  0
21833
21856
  );
21834
21857
  const dpr = this.getPagePixelRatio();
@@ -21851,10 +21874,11 @@ var Draw = class {
21851
21874
  const rowOffsetY = row.offsetY || 0;
21852
21875
  const isPageBreak = this.rowList[i - 1]?.isPageBreak;
21853
21876
  const isColumnBreak = this.rowList[i - 1]?.isColumnBreak;
21854
- if (row.height + rowOffsetY + pageHeight > height || isPageBreak || isColumnBreak) {
21877
+ const rowTotalHeight = row.height + rowOffsetY + (row.spaceAbove || 0) + (row.spaceBelow || 0);
21878
+ if (rowTotalHeight + pageHeight > height || isPageBreak || isColumnBreak) {
21855
21879
  if ((!isPageBreak || isColumnBreak) && columnCount > 1 && columnNo < columnCount - 1) {
21856
21880
  columnNo++;
21857
- pageHeight = marginHeight + row.height + rowOffsetY;
21881
+ pageHeight = marginHeight + rowTotalHeight;
21858
21882
  row.columnNo = columnNo;
21859
21883
  pageRowList[pageNo].push(row);
21860
21884
  } else {
@@ -21863,14 +21887,14 @@ var Draw = class {
21863
21887
  break;
21864
21888
  }
21865
21889
  columnNo = 0;
21866
- pageHeight = marginHeight + row.height + rowOffsetY;
21890
+ pageHeight = marginHeight + rowTotalHeight;
21867
21891
  row.columnNo = columnNo;
21868
21892
  pageRowList.push([row]);
21869
21893
  pageNo++;
21870
21894
  }
21871
21895
  } else {
21872
21896
  row.columnNo = columnNo;
21873
- pageHeight += row.height + rowOffsetY;
21897
+ pageHeight += rowTotalHeight;
21874
21898
  pageRowList[pageNo].push(row);
21875
21899
  }
21876
21900
  }
@@ -22393,6 +22417,7 @@ var Draw = class {
22393
22417
  surroundElementList,
22394
22418
  elementList: this.elementList
22395
22419
  });
22420
+ this._applyRowSpacing();
22396
22421
  this.pageRowList = this._computePageList();
22397
22422
  this.position.computePositionList();
22398
22423
  this.area.compute();
@@ -23720,6 +23745,13 @@ var CommandAdapt = class {
23720
23745
  ]);
23721
23746
  curIndex = startIndex;
23722
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;
23723
23755
  }
23724
23756
  this.range.setRange(curIndex, curIndex);
23725
23757
  this.draw.render({ curIndex });