@univerjs/core 1.2.0 → 1.3.0

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/lib/cjs/index.js CHANGED
@@ -1699,7 +1699,7 @@ let ThemeColors = /* @__PURE__ */ function(ThemeColors) {
1699
1699
  //#endregion
1700
1700
  //#region package.json
1701
1701
  var name = "@univerjs/core";
1702
- var version = "1.2.0";
1702
+ var version = "1.3.0";
1703
1703
 
1704
1704
  //#endregion
1705
1705
  //#region src/common/array.ts
@@ -15723,10 +15723,10 @@ function getBlockRangeSlice(body, startOffset, endOffset, mode = 0) {
15723
15723
  const { blockRanges = [] } = body;
15724
15724
  const newBlockRanges = [];
15725
15725
  for (const blockRange of blockRanges) {
15726
- const clonedBlockRange = Tools.deepClone(blockRange);
15727
- const { startIndex, endIndex } = clonedBlockRange;
15728
- if (hasStructuralRangeInSlice(startIndex, endIndex, startOffset, endOffset, mode)) newBlockRanges.push({
15729
- ...clonedBlockRange,
15726
+ const { startIndex, endIndex } = blockRange;
15727
+ if (!(mode === 1 ? startIndex >= startOffset && endIndex < endOffset : hasStructuralRangeInSlice(startIndex, endIndex, startOffset, endOffset, mode))) continue;
15728
+ newBlockRanges.push({
15729
+ ...blockRange,
15730
15730
  ...getSlicedStructuralRange(startIndex, endIndex, startOffset, endOffset, mode)
15731
15731
  });
15732
15732
  }
@@ -20183,6 +20183,7 @@ var RichTextBuilder = class RichTextBuilder extends RichTextValue {
20183
20183
  _defineProperty(this, "_trackedRanges", /* @__PURE__ */ new Set());
20184
20184
  _defineProperty(this, "_childHandleRevision", 0);
20185
20185
  this._doc = new DocumentDataModel(data);
20186
+ this._data.body = this._doc.getBody();
20186
20187
  }
20187
20188
  /**
20188
20189
  * Returns editable paragraph handles backed by this detached rich-text builder.
@@ -22514,6 +22515,96 @@ function convertTextRotation(textRotation) {
22514
22515
  };
22515
22516
  }
22516
22517
 
22518
+ //#endregion
22519
+ //#region src/sheets/sheet-dimensions.ts
22520
+ function isValidSheetDimension(value, allowZero = true) {
22521
+ return typeof value === "number" && Number.isFinite(value) && (allowZero ? value >= 0 : value > 0);
22522
+ }
22523
+ function normalizeSheetDimension(value, fallback, allowZero = true) {
22524
+ return isValidSheetDimension(value, allowZero) ? value : fallback;
22525
+ }
22526
+ function isValidColumnDimensions(data) {
22527
+ return (data === null || data === void 0 ? void 0 : data.w) == null || isValidSheetDimension(data.w);
22528
+ }
22529
+ function isValidRowDimensions(data) {
22530
+ return ((data === null || data === void 0 ? void 0 : data.h) == null || isValidSheetDimension(data.h)) && ((data === null || data === void 0 ? void 0 : data.ah) == null || isValidSheetDimension(data.ah));
22531
+ }
22532
+
22533
+ //#endregion
22534
+ //#region src/sheets/sheet-snapshot-utils.ts
22535
+ const DEFAULT_WORKSHEET_ROW_COUNT_KEY = "DEFAULT_WORKSHEET_ROW_COUNT";
22536
+ const DEFAULT_WORKSHEET_ROW_COUNT = 1e3;
22537
+ const DEFAULT_WORKSHEET_COLUMN_COUNT_KEY = "DEFAULT_WORKSHEET_COLUMN_COUNT";
22538
+ const DEFAULT_WORKSHEET_COLUMN_COUNT = 20;
22539
+ const DEFAULT_WORKSHEET_ROW_HEIGHT_KEY = "DEFAULT_WORKSHEET_ROW_HEIGHT";
22540
+ const DEFAULT_WORKSHEET_ROW_HEIGHT = 24;
22541
+ const DEFAULT_WORKSHEET_COLUMN_WIDTH_KEY = "DEFAULT_WORKSHEET_COLUMN_WIDTH";
22542
+ const DEFAULT_WORKSHEET_COLUMN_WIDTH = 88;
22543
+ const DEFAULT_WORKSHEET_ROW_TITLE_WIDTH_KEY = "DEFAULT_WORKSHEET_ROW_TITLE_WIDTH";
22544
+ const DEFAULT_WORKSHEET_ROW_TITLE_WIDTH = 46;
22545
+ const DEFAULT_WORKSHEET_COLUMN_TITLE_HEIGHT_KEY = "DEFAULT_WORKSHEET_COLUMN_TITLE_HEIGHT";
22546
+ const DEFAULT_WORKSHEET_COLUMN_TITLE_HEIGHT = 20;
22547
+ /**
22548
+ * This function is used to merge the user passed in snapshot with the default snapshot
22549
+ * without changing the user's snapshot's reference.
22550
+ *
22551
+ * @param snapshot user passed in snapshot
22552
+ * @returns merged snapshot
22553
+ */
22554
+ function mergeWorksheetSnapshotWithDefault(snapshot) {
22555
+ const defaultSnapshot = {
22556
+ name: "Sheet1",
22557
+ id: "sheet-01",
22558
+ tabColor: "",
22559
+ hidden: 0,
22560
+ rowCount: DEFAULT_WORKSHEET_ROW_COUNT,
22561
+ columnCount: 20,
22562
+ zoomRatio: 1,
22563
+ freeze: {
22564
+ xSplit: 0,
22565
+ ySplit: 0,
22566
+ startRow: -1,
22567
+ startColumn: -1
22568
+ },
22569
+ scrollTop: 0,
22570
+ scrollLeft: 0,
22571
+ defaultColumnWidth: 88,
22572
+ defaultRowHeight: 24,
22573
+ mergeData: [],
22574
+ cellData: {},
22575
+ rowData: {},
22576
+ columnData: {},
22577
+ showGridlines: 1,
22578
+ rowHeader: {
22579
+ width: 46,
22580
+ hidden: 0
22581
+ },
22582
+ columnHeader: {
22583
+ height: 20,
22584
+ hidden: 0
22585
+ },
22586
+ rightToLeft: 0
22587
+ };
22588
+ Object.keys(defaultSnapshot).forEach((_key) => {
22589
+ const key = _key;
22590
+ if (typeof snapshot[key] === "undefined") snapshot[key] = defaultSnapshot[key];
22591
+ });
22592
+ const freeze = snapshot.freeze;
22593
+ freeze.xSplit = freeze.xSplit ?? defaultSnapshot.freeze.xSplit;
22594
+ freeze.ySplit = freeze.ySplit ?? defaultSnapshot.freeze.ySplit;
22595
+ freeze.startRow = freeze.ySplit === 0 ? defaultSnapshot.freeze.startRow : freeze.startRow ?? defaultSnapshot.freeze.startRow;
22596
+ freeze.startColumn = freeze.xSplit === 0 ? defaultSnapshot.freeze.startColumn : freeze.startColumn ?? defaultSnapshot.freeze.startColumn;
22597
+ snapshot.defaultColumnWidth = normalizeSheetDimension(snapshot.defaultColumnWidth, 88, false);
22598
+ snapshot.defaultRowHeight = normalizeSheetDimension(snapshot.defaultRowHeight, 24, false);
22599
+ for (const column of Object.values(snapshot.columnData)) if (column && column.w !== void 0 && !isValidSheetDimension(column.w)) column.w = 0;
22600
+ for (const row of Object.values(snapshot.rowData)) {
22601
+ if (!row) continue;
22602
+ if (row.h !== void 0 && !isValidSheetDimension(row.h)) row.h = 0;
22603
+ if (row.ah !== void 0 && !isValidSheetDimension(row.ah)) delete row.ah;
22604
+ }
22605
+ return snapshot;
22606
+ }
22607
+
22517
22608
  //#endregion
22518
22609
  //#region src/sheets/column-manager.ts
22519
22610
  /**
@@ -22653,7 +22744,9 @@ var ColumnManager = class {
22653
22744
  */
22654
22745
  getColumnWidth(columnPos) {
22655
22746
  var _this$_columnData$col2;
22656
- return ((_this$_columnData$col2 = this._columnData[columnPos]) === null || _this$_columnData$col2 === void 0 ? void 0 : _this$_columnData$col2.w) ?? this._config.defaultColumnWidth;
22747
+ const defaultWidth = normalizeSheetDimension(this._config.defaultColumnWidth, 88, false);
22748
+ const width = (_this$_columnData$col2 = this._columnData[columnPos]) === null || _this$_columnData$col2 === void 0 ? void 0 : _this$_columnData$col2.w;
22749
+ return width === void 0 ? defaultWidth : normalizeSheetDimension(width, 0);
22657
22750
  }
22658
22751
  /**
22659
22752
  * Set the width of column
@@ -22661,6 +22754,7 @@ var ColumnManager = class {
22661
22754
  * @param width width of column
22662
22755
  */
22663
22756
  setColumnWidth(columnPos, width) {
22757
+ if (!isValidSheetDimension(width)) return;
22664
22758
  const column = this._columnData[columnPos];
22665
22759
  if (width === this._config.defaultColumnWidth) {
22666
22760
  if (column) {
@@ -22697,7 +22791,10 @@ var ColumnManager = class {
22697
22791
  }
22698
22792
  for (let c = startColumn; c <= endColumn; c++) {
22699
22793
  const columnData = columnDataInfo === null || columnDataInfo === void 0 ? void 0 : columnDataInfo[c - startColumn];
22700
- if (columnData !== void 0 && columnData !== null && Object.keys(columnData).length > 0) this._columnData[c] = { ...columnData };
22794
+ if (columnData !== void 0 && columnData !== null && Object.keys(columnData).length > 0) {
22795
+ this._columnData[c] = { ...columnData };
22796
+ if (columnData.w !== void 0 && !isValidSheetDimension(columnData.w)) this._columnData[c].w = 0;
22797
+ }
22701
22798
  }
22702
22799
  }
22703
22800
  /**
@@ -23325,13 +23422,14 @@ var RowManager = class {
23325
23422
  getRowHeight(rowPos, count = 1) {
23326
23423
  const { _rowData } = this;
23327
23424
  const config = this._config;
23425
+ const defaultHeight = normalizeSheetDimension(config.defaultRowHeight, 24, false);
23328
23426
  let height = 0;
23329
23427
  for (let i = 0; i < count; i++) {
23330
- const { ia, ah, h = config.defaultRowHeight } = _rowData[i + rowPos] || {
23428
+ const { ia, ah, h = defaultHeight } = _rowData[i + rowPos] || {
23331
23429
  hd: 0,
23332
- h: config.defaultRowHeight
23430
+ h: defaultHeight
23333
23431
  };
23334
- height += (ia == null || ia === 1) && typeof ah === "number" ? ah : h;
23432
+ height += (ia == null || ia === 1) && isValidSheetDimension(ah, false) ? ah : normalizeSheetDimension(h, 0);
23335
23433
  }
23336
23434
  return height;
23337
23435
  }
@@ -23341,6 +23439,7 @@ var RowManager = class {
23341
23439
  * @param height row height
23342
23440
  */
23343
23441
  setRowHeight(rowPos, height) {
23442
+ if (!isValidSheetDimension(height)) return;
23344
23443
  const row = this._rowData[rowPos];
23345
23444
  if (height === this._config.defaultRowHeight) {
23346
23445
  if (row) {
@@ -23381,7 +23480,12 @@ var RowManager = class {
23381
23480
  }
23382
23481
  for (let r = startRow; r <= endRow; r++) {
23383
23482
  const rowData = rowDataInfo === null || rowDataInfo === void 0 ? void 0 : rowDataInfo[r - startRow];
23384
- if (rowData !== void 0 && rowData !== null && Object.keys(rowData).length > 0) this._rowData[r] = { ...rowData };
23483
+ if (rowData !== void 0 && rowData !== null && Object.keys(rowData).length > 0) {
23484
+ this._rowData[r] = { ...rowData };
23485
+ const row = this._rowData[r];
23486
+ if (row.h !== void 0 && !isValidSheetDimension(row.h)) row.h = 0;
23487
+ if (row.ah !== void 0 && !isValidSheetDimension(row.ah)) delete row.ah;
23488
+ }
23385
23489
  }
23386
23490
  }
23387
23491
  /**
@@ -23498,73 +23602,6 @@ var RowManager = class {
23498
23602
  }
23499
23603
  };
23500
23604
 
23501
- //#endregion
23502
- //#region src/sheets/sheet-snapshot-utils.ts
23503
- const DEFAULT_WORKSHEET_ROW_COUNT_KEY = "DEFAULT_WORKSHEET_ROW_COUNT";
23504
- const DEFAULT_WORKSHEET_ROW_COUNT = 1e3;
23505
- const DEFAULT_WORKSHEET_COLUMN_COUNT_KEY = "DEFAULT_WORKSHEET_COLUMN_COUNT";
23506
- const DEFAULT_WORKSHEET_COLUMN_COUNT = 20;
23507
- const DEFAULT_WORKSHEET_ROW_HEIGHT_KEY = "DEFAULT_WORKSHEET_ROW_HEIGHT";
23508
- const DEFAULT_WORKSHEET_ROW_HEIGHT = 24;
23509
- const DEFAULT_WORKSHEET_COLUMN_WIDTH_KEY = "DEFAULT_WORKSHEET_COLUMN_WIDTH";
23510
- const DEFAULT_WORKSHEET_COLUMN_WIDTH = 88;
23511
- const DEFAULT_WORKSHEET_ROW_TITLE_WIDTH_KEY = "DEFAULT_WORKSHEET_ROW_TITLE_WIDTH";
23512
- const DEFAULT_WORKSHEET_ROW_TITLE_WIDTH = 46;
23513
- const DEFAULT_WORKSHEET_COLUMN_TITLE_HEIGHT_KEY = "DEFAULT_WORKSHEET_COLUMN_TITLE_HEIGHT";
23514
- const DEFAULT_WORKSHEET_COLUMN_TITLE_HEIGHT = 20;
23515
- /**
23516
- * This function is used to merge the user passed in snapshot with the default snapshot
23517
- * without changing the user's snapshot's reference.
23518
- *
23519
- * @param snapshot user passed in snapshot
23520
- * @returns merged snapshot
23521
- */
23522
- function mergeWorksheetSnapshotWithDefault(snapshot) {
23523
- const defaultSnapshot = {
23524
- name: "Sheet1",
23525
- id: "sheet-01",
23526
- tabColor: "",
23527
- hidden: 0,
23528
- rowCount: DEFAULT_WORKSHEET_ROW_COUNT,
23529
- columnCount: 20,
23530
- zoomRatio: 1,
23531
- freeze: {
23532
- xSplit: 0,
23533
- ySplit: 0,
23534
- startRow: -1,
23535
- startColumn: -1
23536
- },
23537
- scrollTop: 0,
23538
- scrollLeft: 0,
23539
- defaultColumnWidth: 88,
23540
- defaultRowHeight: 24,
23541
- mergeData: [],
23542
- cellData: {},
23543
- rowData: {},
23544
- columnData: {},
23545
- showGridlines: 1,
23546
- rowHeader: {
23547
- width: 46,
23548
- hidden: 0
23549
- },
23550
- columnHeader: {
23551
- height: 20,
23552
- hidden: 0
23553
- },
23554
- rightToLeft: 0
23555
- };
23556
- Object.keys(defaultSnapshot).forEach((_key) => {
23557
- const key = _key;
23558
- if (typeof snapshot[key] === "undefined") snapshot[key] = defaultSnapshot[key];
23559
- });
23560
- const freeze = snapshot.freeze;
23561
- freeze.xSplit = freeze.xSplit ?? defaultSnapshot.freeze.xSplit;
23562
- freeze.ySplit = freeze.ySplit ?? defaultSnapshot.freeze.ySplit;
23563
- freeze.startRow = freeze.ySplit === 0 ? defaultSnapshot.freeze.startRow : freeze.startRow ?? defaultSnapshot.freeze.startRow;
23564
- freeze.startColumn = freeze.xSplit === 0 ? defaultSnapshot.freeze.startColumn : freeze.startColumn ?? defaultSnapshot.freeze.startColumn;
23565
- return snapshot;
23566
- }
23567
-
23568
23605
  //#endregion
23569
23606
  //#region src/sheets/span-model.ts
23570
23607
  var SpanModel = class extends Disposable {
@@ -27833,17 +27870,18 @@ let SheetSkeleton = class SheetSkeleton extends Skeleton {
27833
27870
  _generateRowMatrixCache(rowCount, rowData, defaultRowHeight) {
27834
27871
  let rowTotalHeight = 0;
27835
27872
  const rowHeightAccumulation = [];
27873
+ const fallbackHeight = normalizeSheetDimension(defaultRowHeight, 24, false);
27836
27874
  const data = rowData;
27837
27875
  for (let r = 0; r < rowCount; r++) {
27838
27876
  var _this$_gapConfig$rowG2;
27839
- let rowHeight = defaultRowHeight;
27877
+ let rowHeight = fallbackHeight;
27840
27878
  if (this.worksheet.getRowFiltered(r)) rowHeight = 0;
27841
27879
  else if (data[r] != null) {
27842
27880
  const rowDataItem = data[r];
27843
27881
  if (!rowDataItem) continue;
27844
- const { h = defaultRowHeight, ah, ia } = rowDataItem;
27845
- if ((ia == null || ia === 1) && typeof ah === "number" && ah > 0) rowHeight = ah;
27846
- else rowHeight = h;
27882
+ const { h = fallbackHeight, ah, ia } = rowDataItem;
27883
+ if ((ia == null || ia === 1) && isValidSheetDimension(ah, false)) rowHeight = ah;
27884
+ else rowHeight = normalizeSheetDimension(h, 0);
27847
27885
  if (rowDataItem.hd === 1) rowHeight = 0;
27848
27886
  }
27849
27887
  const gapSize = ((_this$_gapConfig$rowG2 = this._gapConfig.rowGaps) === null || _this$_gapConfig$rowG2 === void 0 || (_this$_gapConfig$rowG2 = _this$_gapConfig$rowG2[r]) === null || _this$_gapConfig$rowG2 === void 0 ? void 0 : _this$_gapConfig$rowG2.size) ?? 0;
@@ -27862,14 +27900,15 @@ let SheetSkeleton = class SheetSkeleton extends Skeleton {
27862
27900
  _generateColumnMatrixCache(colCount, columnData, defaultColumnWidth) {
27863
27901
  let columnTotalWidth = 0;
27864
27902
  const columnWidthAccumulation = [];
27903
+ const fallbackWidth = normalizeSheetDimension(defaultColumnWidth, 88, false);
27865
27904
  const data = columnData;
27866
27905
  for (let c = 0; c < colCount; c++) {
27867
27906
  var _this$_gapConfig$colG2;
27868
- let columnWidth = defaultColumnWidth;
27907
+ let columnWidth = fallbackWidth;
27869
27908
  if (data[c] != null) {
27870
27909
  const columnDataItem = data[c];
27871
27910
  if (!columnDataItem) continue;
27872
- if (columnDataItem.w != null) columnWidth = columnDataItem.w;
27911
+ if (columnDataItem.w !== void 0) columnWidth = normalizeSheetDimension(columnDataItem.w, 0);
27873
27912
  if (columnDataItem.hd === 1) columnWidth = 0;
27874
27913
  }
27875
27914
  const gapSize = ((_this$_gapConfig$colG2 = this._gapConfig.colGaps) === null || _this$_gapConfig$colG2 === void 0 || (_this$_gapConfig$colG2 = _this$_gapConfig$colG2[c]) === null || _this$_gapConfig$colG2 === void 0 ? void 0 : _this$_gapConfig$colG2.size) ?? 0;
@@ -29538,7 +29577,10 @@ exports.isSameStyleTextRun = isSameStyleTextRun;
29538
29577
  exports.isTextFormat = isTextFormat;
29539
29578
  exports.isUnitRangesEqual = isUnitRangesEqual;
29540
29579
  exports.isValidBaseRecordId = isValidBaseRecordId;
29580
+ exports.isValidColumnDimensions = isValidColumnDimensions;
29541
29581
  exports.isValidRange = isValidRange;
29582
+ exports.isValidRowDimensions = isValidRowDimensions;
29583
+ exports.isValidSheetDimension = isValidSheetDimension;
29542
29584
  Object.defineProperty(exports, "isValueDependencyItem", {
29543
29585
  enumerable: true,
29544
29586
  get: function () {