@fileverse-dev/fortune-core 1.2.59 → 1.2.62

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.
@@ -77,19 +77,26 @@ export function adjustFormulaForPaste(formula, srcCol, srcRow, destCol, destRow)
77
77
  var colOffset = destCol - srcCol;
78
78
  var rowOffset = destRow - srcRow;
79
79
  var hadInvalid = false;
80
- var result = formula.replace(/(\$?)([A-Z]+)(\$?)(\d+)/g, function (__, absCol, colLetters, absRow, rowNum) {
81
- var colIndex = columnLabelIndex(colLetters);
82
- var rowIndex = parseInt(rowNum, 10);
83
- if (!absCol) colIndex += colOffset;
84
- if (!absRow) rowIndex += rowOffset;
85
- if (colIndex < 0 || rowIndex <= 0) {
86
- hadInvalid = true;
87
- var invalidCol = colIndex < 0 ? "".concat(absCol ? "$" : "").concat(colLetters).concat(colIndex) : "".concat(absCol ? "$" : "").concat(indexToColumnLabel(colIndex));
88
- var invalidRow = rowIndex.toString();
89
- return "".concat(invalidCol).concat(invalidRow);
90
- }
91
- var newCol = indexToColumnLabel(colIndex);
92
- return "".concat(absCol ? "$" : "").concat(newCol).concat(absRow ? "$" : "").concat(rowIndex);
80
+ var cellRefRegex = /\b(\$?)([A-Z]+)(\$?)(\d+)\b/g;
81
+ var stringOrCellRef = /"(?:\\.|[^"])*"|(?<!\$)([A-Z]+\d+\b)/g;
82
+ var result = formula.replace(stringOrCellRef, function (m, cellRef) {
83
+ if (!cellRef) return m;
84
+ if (cellRef.startsWith("$")) return m;
85
+ console.log(m, "cellRef", cellRef);
86
+ return cellRef.replace(cellRefRegex, function (__, absCol, colLetters, absRow, rowNum) {
87
+ var colIndex = columnLabelIndex(colLetters);
88
+ var rowIndex = parseInt(rowNum, 10);
89
+ if (!absCol) colIndex += colOffset;
90
+ if (!absRow) rowIndex += rowOffset;
91
+ if (colIndex < 0 || rowIndex <= 0) {
92
+ hadInvalid = true;
93
+ var invalidCol = colIndex < 0 ? "".concat(absCol ? "$" : "").concat(colLetters).concat(colIndex) : "".concat(absCol ? "$" : "").concat(indexToColumnLabel(colIndex));
94
+ var invalidRow = rowIndex.toString();
95
+ return "".concat(invalidCol).concat(invalidRow);
96
+ }
97
+ var newCol = indexToColumnLabel(colIndex);
98
+ return "".concat(absCol ? "$" : "").concat(newCol).concat(absRow ? "$" : "").concat(rowIndex);
99
+ });
93
100
  });
94
101
  if (hadInvalid) {
95
102
  var brokenFormula = "=".concat(result.replace(/^=/, ""));
@@ -964,6 +971,7 @@ function pasteHandlerOfCopyPaste(ctx, copyRange) {
964
971
  var isError = false;
965
972
  try {
966
973
  adjustedFormula = adjustFormulaForPaste(value.f, c_c1, c_r1, c, h);
974
+ console.log("adjustedFormula", adjustedFormula);
967
975
  } catch (error) {
968
976
  isError = true;
969
977
  value.error = {
@@ -1150,9 +1158,12 @@ function resizePastedCellsToContent(ctx) {
1150
1158
  updateSheetCellSizes(ctx, sheetIdx, rangeCellSize);
1151
1159
  }
1152
1160
  export function handlePaste(ctx, e) {
1153
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
1161
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4;
1154
1162
  var allowEdit = isAllowEdit(ctx);
1155
1163
  if (!allowEdit || ctx.isFlvReadOnly) return;
1164
+ if (!selectionCache.isPasteAction) {
1165
+ return;
1166
+ }
1156
1167
  if (selectionCache.isPasteAction) {
1157
1168
  ctx.luckysheetCellUpdate = [];
1158
1169
  selectionCache.isPasteAction = false;
@@ -1183,11 +1194,11 @@ export function handlePaste(ctx, e) {
1183
1194
  }
1184
1195
  cpDataArr.push(cpRowArr);
1185
1196
  }
1186
- var copy_r1 = ctx.luckysheet_copy_save.copyRange[0].row[0];
1187
- var copy_r2 = ctx.luckysheet_copy_save.copyRange[0].row[1];
1188
- var copy_c1 = ctx.luckysheet_copy_save.copyRange[0].column[0];
1189
- var copy_c2 = ctx.luckysheet_copy_save.copyRange[0].column[1];
1190
- var copy_index = ctx.luckysheet_copy_save.dataSheetId;
1197
+ var copy_r1 = (_c = (_b = ctx.luckysheet_copy_save) === null || _b === void 0 ? void 0 : _b.copyRange[0]) === null || _c === void 0 ? void 0 : _c.row[0];
1198
+ var copy_r2 = (_e = (_d = ctx.luckysheet_copy_save) === null || _d === void 0 ? void 0 : _d.copyRange[0]) === null || _e === void 0 ? void 0 : _e.row[1];
1199
+ var copy_c1 = (_g = (_f = ctx.luckysheet_copy_save) === null || _f === void 0 ? void 0 : _f.copyRange[0]) === null || _g === void 0 ? void 0 : _g.column[0];
1200
+ var copy_c2 = (_j = (_h = ctx.luckysheet_copy_save) === null || _h === void 0 ? void 0 : _h.copyRange[0]) === null || _j === void 0 ? void 0 : _j.column[1];
1201
+ var copy_index = ctx.luckysheet_copy_save.dataSheetId || ctx.currentSheetId;
1191
1202
  var d = void 0;
1192
1203
  if (copy_index === ctx.currentSheetId) {
1193
1204
  d = getFlowdata(ctx);
@@ -1209,15 +1220,15 @@ export function handlePaste(ctx, e) {
1209
1220
  }
1210
1221
  var v = void 0;
1211
1222
  if (!_.isNil(cell)) {
1212
- if (((_d = (_c = (_b = cell.ct) === null || _b === void 0 ? void 0 : _b.fa) === null || _c === void 0 ? void 0 : _c.indexOf("w")) !== null && _d !== void 0 ? _d : -1) > -1) {
1213
- v = (_f = (_e = d[r]) === null || _e === void 0 ? void 0 : _e[c]) === null || _f === void 0 ? void 0 : _f.v;
1223
+ if (((_m = (_l = (_k = cell.ct) === null || _k === void 0 ? void 0 : _k.fa) === null || _l === void 0 ? void 0 : _l.indexOf("w")) !== null && _m !== void 0 ? _m : -1) > -1) {
1224
+ v = (_p = (_o = d[r]) === null || _o === void 0 ? void 0 : _o[c]) === null || _p === void 0 ? void 0 : _p.v;
1214
1225
  } else {
1215
- v = (_h = (_g = d[r]) === null || _g === void 0 ? void 0 : _g[c]) === null || _h === void 0 ? void 0 : _h.m;
1226
+ v = (_r = (_q = d[r]) === null || _q === void 0 ? void 0 : _q[c]) === null || _r === void 0 ? void 0 : _r.m;
1216
1227
  }
1217
1228
  } else {
1218
1229
  v = "";
1219
1230
  }
1220
- if (_.isNil(v) && ((_l = (_k = (_j = d[r]) === null || _j === void 0 ? void 0 : _j[c]) === null || _k === void 0 ? void 0 : _k.ct) === null || _l === void 0 ? void 0 : _l.t) === "inlineStr") {
1231
+ if (_.isNil(v) && ((_u = (_t = (_s = d[r]) === null || _s === void 0 ? void 0 : _s[c]) === null || _t === void 0 ? void 0 : _t.ct) === null || _u === void 0 ? void 0 : _u.t) === "inlineStr") {
1221
1232
  v = d[r][c].ct.s.map(function (val) {
1222
1233
  return val.v;
1223
1234
  }).join("");
@@ -1235,10 +1246,10 @@ export function handlePaste(ctx, e) {
1235
1246
  }
1236
1247
  }
1237
1248
  }
1238
- if (((_o = (_m = ctx.hooks).beforePaste) === null || _o === void 0 ? void 0 : _o.call(_m, ctx.luckysheet_select_save, txtdata)) === false) {
1249
+ if (((_w = (_v = ctx.hooks).beforePaste) === null || _w === void 0 ? void 0 : _w.call(_v, ctx.luckysheet_select_save, txtdata)) === false) {
1239
1250
  return;
1240
1251
  }
1241
- if (txtdata.indexOf("fortune-copy-action-table") > -1 && ((_p = ctx.luckysheet_copy_save) === null || _p === void 0 ? void 0 : _p.copyRange) != null && ctx.luckysheet_copy_save.copyRange.length > 0 && isEqual) {
1252
+ if (txtdata.indexOf("fortune-copy-action-table") > -1 && ((_x = ctx.luckysheet_copy_save) === null || _x === void 0 ? void 0 : _x.copyRange) != null && ctx.luckysheet_copy_save.copyRange.length > 0 && isEqual) {
1242
1253
  if (ctx.luckysheet_paste_iscut) {
1243
1254
  ctx.luckysheet_paste_iscut = false;
1244
1255
  pasteHandlerOfCutPaste(ctx, ctx.luckysheet_copy_save);
@@ -1250,7 +1261,6 @@ export function handlePaste(ctx, e) {
1250
1261
  } else if (txtdata.indexOf("fortune-copy-action-image") > -1) {} else {
1251
1262
  if (txtdata.indexOf("table") > -1) {
1252
1263
  handlePastedTable(ctx, txtdata, pasteHandler);
1253
- resizePastedCellsToContent(ctx);
1254
1264
  } else if (clipboardData.files.length === 1 && clipboardData.files[0].type.indexOf("image") > -1) {} else {
1255
1265
  txtdata = clipboardData.getData("text/plain");
1256
1266
  var isExcelFormula = txtdata.startsWith("=");
@@ -1261,10 +1271,10 @@ export function handlePaste(ctx, e) {
1261
1271
  var _txtdata = clipboardData.getData("text/html") || clipboardData.getData("text/plain");
1262
1272
  var embedUrl = sanitizeDuneUrl(_txtdata);
1263
1273
  if (embedUrl) {
1264
- var last = (_q = ctx.luckysheet_select_save) === null || _q === void 0 ? void 0 : _q[ctx.luckysheet_select_save.length - 1];
1274
+ var last = (_y = ctx.luckysheet_select_save) === null || _y === void 0 ? void 0 : _y[ctx.luckysheet_select_save.length - 1];
1265
1275
  if (last) {
1266
- var rowIndex = (_t = (_r = last.row_focus) !== null && _r !== void 0 ? _r : (_s = last.row) === null || _s === void 0 ? void 0 : _s[0]) !== null && _t !== void 0 ? _t : 0;
1267
- var colIndex = (_w = (_u = last.column_focus) !== null && _u !== void 0 ? _u : (_v = last.column) === null || _v === void 0 ? void 0 : _v[0]) !== null && _w !== void 0 ? _w : 0;
1276
+ var rowIndex = (_1 = (_z = last.row_focus) !== null && _z !== void 0 ? _z : (_0 = last.row) === null || _0 === void 0 ? void 0 : _0[0]) !== null && _1 !== void 0 ? _1 : 0;
1277
+ var colIndex = (_4 = (_2 = last.column_focus) !== null && _2 !== void 0 ? _2 : (_3 = last.column) === null || _3 === void 0 ? void 0 : _3[0]) !== null && _4 !== void 0 ? _4 : 0;
1268
1278
  var left = colIndex === 0 ? 0 : ctx.visibledatacolumn[colIndex - 1];
1269
1279
  var top_1 = rowIndex === 0 ? 0 : ctx.visibledatarow[rowIndex + 5];
1270
1280
  ctx.showDunePreview = {
package/es/locale/en.js CHANGED
@@ -3460,7 +3460,7 @@ export default {
3460
3460
  type: "rangeall"
3461
3461
  }]
3462
3462
  }, {
3463
- n: "NETWORKDAYS_INTL",
3463
+ n: "NETWORKDAYS.INTL",
3464
3464
  t: 6,
3465
3465
  d: "Returns the number of net working days between two provided days excluding specified weekend days and holidays.",
3466
3466
  a: "Net working days between two dates (specifying weekends).",
@@ -3712,7 +3712,7 @@ export default {
3712
3712
  type: "rangeall"
3713
3713
  }]
3714
3714
  }, {
3715
- n: "WORKDAY_INTL",
3715
+ n: "WORKDAY.INTL",
3716
3716
  t: 6,
3717
3717
  d: "Calculates the date after a specified number of workdays excluding specified weekend days and holidays.",
3718
3718
  a: "Date after a number of workdays (specifying weekends).",
@@ -59,14 +59,18 @@ export function normalizedCellAttr(cell, attr, defaultFontSize) {
59
59
  }
60
60
  export function normalizedAttr(data, r, c, attr) {
61
61
  if (!data || !data[r]) {
62
- console.warn("cell (%d, %d) is null", r, c);
63
62
  return null;
64
63
  }
65
64
  var cell = data[r][c];
66
65
  if (!cell) return undefined;
67
66
  return normalizedCellAttr(cell, attr);
68
67
  }
68
+ function newlinesToBr(text) {
69
+ if (!text) return "";
70
+ return text.replace(/\r\n|\r|\n/g, "<br />");
71
+ }
69
72
  export function getCellValue(r, c, data, attr) {
73
+ var _a;
70
74
  if (!attr) {
71
75
  attr = "v";
72
76
  }
@@ -96,6 +100,9 @@ export function getCellValue(r, c, data, attr) {
96
100
  } else if (d && d.ct && d.ct.t === "d") {
97
101
  retv = d.m;
98
102
  }
103
+ if ((d === null || d === void 0 ? void 0 : d.ct) && isInlineStringCT(d.ct) && (attr === "v" || attr === "m")) {
104
+ retv = newlinesToBr((_a = d.ct.s[0]) === null || _a === void 0 ? void 0 : _a.v);
105
+ }
99
106
  }
100
107
  if (retv === undefined) {
101
108
  retv = null;
@@ -1039,6 +1046,8 @@ export function getStyleByCell(ctx, d, r, c) {
1039
1046
  } else {
1040
1047
  style.background = "".concat(value);
1041
1048
  }
1049
+ } else {
1050
+ style.background = "".concat(value);
1042
1051
  }
1043
1052
  }
1044
1053
  if ("ht" in cell) {
@@ -1047,8 +1056,18 @@ export function getStyleByCell(ctx, d, r, c) {
1047
1056
  style.textAlign = "center";
1048
1057
  } else if (Number(value) === 2) {
1049
1058
  style.textAlign = "right";
1059
+ style.overflowWrap = "anywhere";
1050
1060
  }
1051
1061
  }
1062
+ if ("tb" in cell) {
1063
+ if (Number(cell.tb) === 2) {
1064
+ style.overflowWrap = "anywhere";
1065
+ }
1066
+ }
1067
+ if ("ff" in cell) {
1068
+ var value = normalizedCellAttr(cell, "ff");
1069
+ style.fontFamily = value;
1070
+ }
1052
1071
  if ("vt" in cell) {
1053
1072
  var value = normalizedCellAttr(cell, "vt");
1054
1073
  if (Number(value) === 0) {
@@ -1,3 +1,13 @@
1
+ var __assign = this && this.__assign || function () {
2
+ __assign = Object.assign || function (t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
6
+ }
7
+ return t;
8
+ };
9
+ return __assign.apply(this, arguments);
10
+ };
1
11
  import _ from "lodash";
2
12
  import dayjs from "dayjs";
3
13
  import { getFlowdata } from "../context";
@@ -1814,6 +1824,13 @@ export function updateDropCell(ctx) {
1814
1824
  var v = formula.execfunction(ctx, f, j, i);
1815
1825
  formula.execFunctionGroup(ctx, j, i, v[1], undefined, d);
1816
1826
  cell.v = v[1], cell.f = v[2];
1827
+ var afterUpdateCell = ctx.hooks.afterUpdateCell;
1828
+ if (afterUpdateCell) {
1829
+ afterUpdateCell(j, i, null, __assign(__assign({}, cell), {
1830
+ v: v[1] instanceof Promise ? v[1] : cell.v,
1831
+ m: v[1] instanceof Promise ? "[object Promise]" : v[1]
1832
+ }));
1833
+ }
1817
1834
  if (cell.spl != null) {
1818
1835
  cell.spl = v[3].data;
1819
1836
  } else if (cell.v != null) {
@@ -1893,6 +1910,13 @@ export function updateDropCell(ctx) {
1893
1910
  var v = formula.execfunction(ctx, f, j, i);
1894
1911
  formula.execFunctionGroup(ctx, j, i, v[1], undefined, d);
1895
1912
  cell.v = v[1], cell.f = v[2];
1913
+ var afterUpdateCell = ctx.hooks.afterUpdateCell;
1914
+ if (afterUpdateCell) {
1915
+ afterUpdateCell(j, i, null, __assign(__assign({}, cell), {
1916
+ v: v[1] instanceof Promise ? v[1] : cell.v,
1917
+ m: v[1] instanceof Promise ? "[object Promise]" : v[1]
1918
+ }));
1919
+ }
1896
1920
  if (cell.spl != null) {
1897
1921
  cell.spl = v[3].data;
1898
1922
  } else if (cell.v != null) {
@@ -1973,6 +1997,14 @@ export function updateDropCell(ctx) {
1973
1997
  var v = formula.execfunction(ctx, f, i, j);
1974
1998
  formula.execFunctionGroup(ctx, j, i, v[1], undefined, d);
1975
1999
  cell.v = v[1], cell.f = v[2];
2000
+ console.log(j, i);
2001
+ var afterUpdateCell = ctx.hooks.afterUpdateCell;
2002
+ if (afterUpdateCell) {
2003
+ afterUpdateCell(i, j, null, __assign(__assign({}, cell), {
2004
+ v: v[1] instanceof Promise ? v[1] : cell.v,
2005
+ m: v[1] instanceof Promise ? "[object Promise]" : v[1]
2006
+ }));
2007
+ }
1976
2008
  if (cell.spl != null) {
1977
2009
  cell.spl = v[3].data;
1978
2010
  } else if (cell.v != null) {
@@ -2046,6 +2078,13 @@ export function updateDropCell(ctx) {
2046
2078
  var v = formula.execfunction(ctx, f, i, j);
2047
2079
  formula.execFunctionGroup(ctx, j, i, v[1], undefined, d);
2048
2080
  cell.v = v[1], cell.f = v[2];
2081
+ var afterUpdateCell = ctx.hooks.afterUpdateCell;
2082
+ if (afterUpdateCell) {
2083
+ afterUpdateCell(i, j, null, __assign(__assign({}, cell), {
2084
+ v: v[1] instanceof Promise ? v[1] : cell.v,
2085
+ m: v[1] instanceof Promise ? "[object Promise]" : v[1]
2086
+ }));
2087
+ }
2049
2088
  if (cell.spl != null) {
2050
2089
  cell.spl = v[3].data;
2051
2090
  } else if (cell.v != null) {
@@ -689,7 +689,19 @@ export function insertUpdateFunctionGroup(ctx, r, c, id, calcChainSet) {
689
689
  file.calcChain = calcChain;
690
690
  ctx.luckysheetfile = luckysheetfile;
691
691
  }
692
+ function replaceDotsInFunctionName(str) {
693
+ if (!str.startsWith("=")) return str;
694
+ var openParenIndex = str.indexOf("(");
695
+ if (openParenIndex === -1) return str;
696
+ var fnName = str.substring(1, openParenIndex);
697
+ var fixedFnName = fnName.replace(/\./g, "_");
698
+ return "=" + fixedFnName + str.substring(openParenIndex);
699
+ }
692
700
  export function execfunction(ctx, txt, r, c, id, calcChainSet, isrefresh, notInsertFunc) {
701
+ var originalTxt = txt;
702
+ if (txt.toUpperCase().includes("NETWORKDAYS.INTL") || txt.toUpperCase().includes("WORKDAY.INTL")) {
703
+ txt = replaceDotsInFunctionName(txt);
704
+ }
693
705
  if (txt.indexOf(error.r) > -1) {
694
706
  return [false, error.r, txt];
695
707
  }
@@ -740,7 +752,7 @@ export function execfunction(ctx, txt, r, c, id, calcChainSet, isrefresh, notIns
740
752
  } else {
741
753
  clearCellError(ctx, r, c);
742
754
  }
743
- return [true, !isError ? finalResult : "#ERROR", txt, isError && {
755
+ return [true, !isError ? finalResult : "#ERROR", originalTxt, isError && {
744
756
  row_column: "".concat(r, "_").concat(c),
745
757
  title: "Error",
746
758
  message: (formulaError === null || formulaError === void 0 ? void 0 : formulaError.toString()) || detectedErrorFromValue || "Unknown Error"
@@ -2385,7 +2397,7 @@ export function functionCopy(ctx, txt, mode, step) {
2385
2397
  str += s;
2386
2398
  }
2387
2399
  if (i === funcstack.length - 1) {
2388
- if (iscelldata(_.trim(str))) {
2400
+ if (iscelldata(_.trim(str)) && !_.trim(str).includes("$")) {
2389
2401
  if (mode === "down") {
2390
2402
  function_str += downparam(_.trim(str), step);
2391
2403
  } else if (mode === "up") {
@@ -1129,7 +1129,7 @@ function getHtmlBorderStyle(type, color) {
1129
1129
  return "".concat(style + color, ";");
1130
1130
  }
1131
1131
  export function rangeValueToHtml(ctx, sheetId, ranges) {
1132
- var _a, _b, _c;
1132
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
1133
1133
  var idx = getSheetIndex(ctx, sheetId);
1134
1134
  if (idx == null) return "";
1135
1135
  var sheet = ctx.luckysheetfile[idx];
@@ -1162,11 +1162,12 @@ export function rangeValueToHtml(ctx, sheetId, ranges) {
1162
1162
  var colgroup = "";
1163
1163
  for (var i = 0; i < rowIndexArr.length; i += 1) {
1164
1164
  var r = rowIndexArr[i];
1165
- cpdata += "<tr>";
1165
+ var rowLen = (_e = (_d = (_c = sheet.config) === null || _c === void 0 ? void 0 : _c.rowlen) === null || _d === void 0 ? void 0 : _d[r.toString()]) !== null && _e !== void 0 ? _e : sheet.defaultRowHeight;
1166
+ cpdata += "<tr height=".concat(rowLen, "px >");
1166
1167
  var _loop_3 = function _loop_3(j) {
1167
1168
  var c = colIndexArr[j];
1168
1169
  var column = '<td ${span} style="${style}">';
1169
- var cell = (_c = d[r]) === null || _c === void 0 ? void 0 : _c[c];
1170
+ var cell = (_f = d[r]) === null || _f === void 0 ? void 0 : _f[c];
1170
1171
  if (cell != null) {
1171
1172
  var style = "";
1172
1173
  var span = "";
@@ -1178,11 +1179,14 @@ export function rangeValueToHtml(ctx, sheetId, ranges) {
1178
1179
  }
1179
1180
  }
1180
1181
  if (c === colIndexArr[0]) {
1181
- if (_.isNil(sheet.config) || _.isNil(sheet.config.rowlen) || _.isNil(sheet.config.rowlen[r.toString()])) {
1182
+ var rowLenValue = (_h = (_g = sheet.config) === null || _g === void 0 ? void 0 : _g.rowlen) === null || _h === void 0 ? void 0 : _h[r.toString()];
1183
+ var colLen = (_k = (_j = sheet.config) === null || _j === void 0 ? void 0 : _j.columnlen) === null || _k === void 0 ? void 0 : _k[c.toString()];
1184
+ if (_.isNil(rowLenValue)) {
1182
1185
  style += "height:19px;";
1183
1186
  } else {
1184
- style += "height:".concat(sheet.config.rowlen[r.toString()], "px;");
1187
+ style += "height:".concat(rowLenValue, "px;");
1185
1188
  }
1189
+ style += "width:".concat(colLen !== null && colLen !== void 0 ? colLen : sheet.defaultColWidth, "px;");
1186
1190
  }
1187
1191
  var reg = /^(w|W)((0?)|(0\.0+))$/;
1188
1192
  var c_value = void 0;
@@ -1485,6 +1489,7 @@ export function copy(ctx) {
1485
1489
  HasMC: HasMC
1486
1490
  };
1487
1491
  var cpdata = rangeValueToHtml(ctx, ctx.currentSheetId, ctx.luckysheet_select_save);
1492
+ cpdata = cpdata === null ? cpdata : cpdata.replace('<td style="', '<td style="white-space: pre-line;"');
1488
1493
  if (cpdata) {
1489
1494
  ctx.iscopyself = true;
1490
1495
  clipboard.writeHtml(cpdata);
@@ -1,9 +1,20 @@
1
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ var __assign = this && this.__assign || function () {
3
+ __assign = Object.assign || function (t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
2
12
  import _ from "lodash";
3
13
  import { locale } from "./locale";
4
14
  import { getQKBorder, saveHyperlink } from "./modules";
5
15
  import { genarate } from "./modules/format";
6
16
  import { getSheetIndex } from "./utils";
17
+ import { setRowHeight, setColumnWidth } from "./api";
7
18
  export var DEFAULT_FONT_SIZE = 12;
8
19
  var parseStylesheetPairs = function parseStylesheetPairs(styleInner) {
9
20
  var patternReg = /{([^}]*)}/g;
@@ -112,14 +123,28 @@ var detectHyperlink = function detectHyperlink(td) {
112
123
  }
113
124
  return null;
114
125
  };
126
+ function brToNewline(str) {
127
+ return str.replace(/<br\s*\/?>/gi, "\n");
128
+ }
115
129
  var buildCellFromTd = function buildCellFromTd(td, classStyles, ctx) {
116
130
  var _a;
117
- var _b, _c;
131
+ var _b, _c, _d, _e;
118
132
  var cell = {};
119
133
  var rawText = (td.innerText || td.innerHTML || "").trim();
134
+ var isLineBreak = rawText.includes("<br />");
120
135
  if (!rawText) {
121
136
  cell.v = undefined;
122
137
  cell.m = "";
138
+ } else if (isLineBreak) {
139
+ var value = brToNewline(rawText);
140
+ cell = __assign(__assign({}, cell), {
141
+ ct: __assign(__assign({}, cell.ct), {
142
+ t: "inlineStr",
143
+ s: [{
144
+ v: value
145
+ }]
146
+ })
147
+ });
123
148
  } else {
124
149
  var mask = genarate(rawText);
125
150
  _a = mask || [], cell.m = _a[0], cell.ct = _a[1], cell.v = _a[2];
@@ -132,6 +157,13 @@ var buildCellFromTd = function buildCellFromTd(td, classStyles, ctx) {
132
157
  cell.v = rawText;
133
158
  }
134
159
  }
160
+ if (((_b = td.style) === null || _b === void 0 ? void 0 : _b.alignItems) === "center") {
161
+ cell.vt = 0;
162
+ } else if (((_c = td.style) === null || _c === void 0 ? void 0 : _c.alignItems) === "flex-end") {
163
+ cell.vt = 2;
164
+ } else if (((_d = td.style) === null || _d === void 0 ? void 0 : _d.alignItems) === "flex-start") {
165
+ cell.vt = 1;
166
+ }
135
167
  var styleBlock = typeof classStyles[".".concat(td.className)] === "string" ? classStyles[".".concat(td.className)] : "";
136
168
  var styles = parseInlineStyleBlock(styleBlock);
137
169
  if (!_.isNil(styles.border)) td.style.border = styles.border;
@@ -156,17 +188,11 @@ var buildCellFromTd = function buildCellFromTd(td, classStyles, ctx) {
156
188
  } else {
157
189
  cell.ht = 1;
158
190
  }
159
- var regex = /vertical-align:\s*(.*?);/;
160
- var vtStyle = typeof classStyles.td === "string" && ((_c = (_b = classStyles.td.match(regex)) === null || _b === void 0 ? void 0 : _b[1]) !== null && _c !== void 0 ? _c : "") || "top";
161
- var vt = td.style.verticalAlign || styles["vertical-align"] || vtStyle;
162
- if (vt === "middle") {
163
- cell.vt = 0;
164
- } else if (vt === "top" || vt === "text-top") {
165
- cell.vt = 1;
191
+ if (((_e = td === null || td === void 0 ? void 0 : td.style) === null || _e === void 0 ? void 0 : _e["overflow-wrap"]) === "anywhere") {
192
+ cell.tb = "2";
166
193
  } else {
167
- cell.vt = 2;
194
+ cell.tb = "2";
168
195
  }
169
- cell.tb = "1";
170
196
  if ("mso-rotate" in styles) cell.rt = parseFloat(styles["mso-rotate"]);
171
197
  var rowspan = parseInt(td.getAttribute("rowspan") || "1", 10);
172
198
  var colspan = parseInt(td.getAttribute("colspan") || "1", 10);
@@ -184,6 +210,15 @@ export function handlePastedTable(ctx, html, pasteHandler) {
184
210
  if (!html.includes("table")) return;
185
211
  var containerDiv = document.createElement("div");
186
212
  containerDiv.innerHTML = html;
213
+ var tableColGropup = containerDiv.querySelectorAll("colgroup");
214
+ tableColGropup.forEach(function (colGroup, index) {
215
+ var _a;
216
+ var colWidth = colGroup === null || colGroup === void 0 ? void 0 : colGroup.getAttribute("width");
217
+ var intColWidth = parseInt(colWidth || "0", 10);
218
+ var anchorCol = ctx.luckysheet_select_save[0].column[0];
219
+ var absoluteCol = anchorCol + index;
220
+ setColumnWidth(ctx, (_a = {}, _a[absoluteCol] = intColWidth, _a));
221
+ });
187
222
  var tableRows = containerDiv.querySelectorAll("table tr");
188
223
  if (tableRows.length === 0) {
189
224
  containerDiv.remove();
@@ -218,17 +253,19 @@ export function handlePastedTable(ctx, html, pasteHandler) {
218
253
  var localRowIndex = 0;
219
254
  tableRows.forEach(function (tr) {
220
255
  var _a;
256
+ var _b;
221
257
  var localColIndex = 0;
222
258
  var anchorRow = ctx.luckysheet_select_save[0].row[0];
223
259
  var targetRowIndex = anchorRow + localRowIndex;
224
260
  var explicitRowHeightAttr = tr.getAttribute("height");
225
261
  if (!_.isNil(explicitRowHeightAttr)) {
226
262
  var explicitRowHeight = parseInt(explicitRowHeightAttr, 10);
227
- var hasCustomRowHeight = _.has((_a = sheetFile.config) === null || _a === void 0 ? void 0 : _a.rowlen, targetRowIndex);
263
+ var hasCustomRowHeight = _.has((_b = sheetFile.config) === null || _b === void 0 ? void 0 : _b.rowlen, targetRowIndex);
228
264
  var currentRowHeight = hasCustomRowHeight ? sheetFile.config.rowlen[targetRowIndex] : sheetFile.defaultRowHeight;
229
265
  if (currentRowHeight !== explicitRowHeight) {
230
266
  rowHeightsConfig[targetRowIndex] = explicitRowHeight;
231
267
  }
268
+ setRowHeight(ctx, (_a = {}, _a[String(targetRowIndex)] = explicitRowHeight, _a));
232
269
  }
233
270
  tr.querySelectorAll("td, th").forEach(function (node) {
234
271
  var tdElement = node;
@@ -90,19 +90,26 @@ function adjustFormulaForPaste(formula, srcCol, srcRow, destCol, destRow) {
90
90
  var colOffset = destCol - srcCol;
91
91
  var rowOffset = destRow - srcRow;
92
92
  var hadInvalid = false;
93
- var result = formula.replace(/(\$?)([A-Z]+)(\$?)(\d+)/g, function (__, absCol, colLetters, absRow, rowNum) {
94
- var colIndex = columnLabelIndex(colLetters);
95
- var rowIndex = parseInt(rowNum, 10);
96
- if (!absCol) colIndex += colOffset;
97
- if (!absRow) rowIndex += rowOffset;
98
- if (colIndex < 0 || rowIndex <= 0) {
99
- hadInvalid = true;
100
- var invalidCol = colIndex < 0 ? "".concat(absCol ? "$" : "").concat(colLetters).concat(colIndex) : "".concat(absCol ? "$" : "").concat(indexToColumnLabel(colIndex));
101
- var invalidRow = rowIndex.toString();
102
- return "".concat(invalidCol).concat(invalidRow);
103
- }
104
- var newCol = indexToColumnLabel(colIndex);
105
- return "".concat(absCol ? "$" : "").concat(newCol).concat(absRow ? "$" : "").concat(rowIndex);
93
+ var cellRefRegex = /\b(\$?)([A-Z]+)(\$?)(\d+)\b/g;
94
+ var stringOrCellRef = /"(?:\\.|[^"])*"|(?<!\$)([A-Z]+\d+\b)/g;
95
+ var result = formula.replace(stringOrCellRef, function (m, cellRef) {
96
+ if (!cellRef) return m;
97
+ if (cellRef.startsWith("$")) return m;
98
+ console.log(m, "cellRef", cellRef);
99
+ return cellRef.replace(cellRefRegex, function (__, absCol, colLetters, absRow, rowNum) {
100
+ var colIndex = columnLabelIndex(colLetters);
101
+ var rowIndex = parseInt(rowNum, 10);
102
+ if (!absCol) colIndex += colOffset;
103
+ if (!absRow) rowIndex += rowOffset;
104
+ if (colIndex < 0 || rowIndex <= 0) {
105
+ hadInvalid = true;
106
+ var invalidCol = colIndex < 0 ? "".concat(absCol ? "$" : "").concat(colLetters).concat(colIndex) : "".concat(absCol ? "$" : "").concat(indexToColumnLabel(colIndex));
107
+ var invalidRow = rowIndex.toString();
108
+ return "".concat(invalidCol).concat(invalidRow);
109
+ }
110
+ var newCol = indexToColumnLabel(colIndex);
111
+ return "".concat(absCol ? "$" : "").concat(newCol).concat(absRow ? "$" : "").concat(rowIndex);
112
+ });
106
113
  });
107
114
  if (hadInvalid) {
108
115
  var brokenFormula = "=".concat(result.replace(/^=/, ""));
@@ -977,6 +984,7 @@ function pasteHandlerOfCopyPaste(ctx, copyRange) {
977
984
  var isError = false;
978
985
  try {
979
986
  adjustedFormula = adjustFormulaForPaste(value.f, c_c1, c_r1, c, h);
987
+ console.log("adjustedFormula", adjustedFormula);
980
988
  } catch (error) {
981
989
  isError = true;
982
990
  value.error = {
@@ -1163,9 +1171,12 @@ function resizePastedCellsToContent(ctx) {
1163
1171
  (0, _calculateRangeCellSize.updateSheetCellSizes)(ctx, sheetIdx, rangeCellSize);
1164
1172
  }
1165
1173
  function handlePaste(ctx, e) {
1166
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
1174
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4;
1167
1175
  var allowEdit = (0, _utils.isAllowEdit)(ctx);
1168
1176
  if (!allowEdit || ctx.isFlvReadOnly) return;
1177
+ if (!_selection.selectionCache.isPasteAction) {
1178
+ return;
1179
+ }
1169
1180
  if (_selection.selectionCache.isPasteAction) {
1170
1181
  ctx.luckysheetCellUpdate = [];
1171
1182
  _selection.selectionCache.isPasteAction = false;
@@ -1196,11 +1207,11 @@ function handlePaste(ctx, e) {
1196
1207
  }
1197
1208
  cpDataArr.push(cpRowArr);
1198
1209
  }
1199
- var copy_r1 = ctx.luckysheet_copy_save.copyRange[0].row[0];
1200
- var copy_r2 = ctx.luckysheet_copy_save.copyRange[0].row[1];
1201
- var copy_c1 = ctx.luckysheet_copy_save.copyRange[0].column[0];
1202
- var copy_c2 = ctx.luckysheet_copy_save.copyRange[0].column[1];
1203
- var copy_index = ctx.luckysheet_copy_save.dataSheetId;
1210
+ var copy_r1 = (_c = (_b = ctx.luckysheet_copy_save) === null || _b === void 0 ? void 0 : _b.copyRange[0]) === null || _c === void 0 ? void 0 : _c.row[0];
1211
+ var copy_r2 = (_e = (_d = ctx.luckysheet_copy_save) === null || _d === void 0 ? void 0 : _d.copyRange[0]) === null || _e === void 0 ? void 0 : _e.row[1];
1212
+ var copy_c1 = (_g = (_f = ctx.luckysheet_copy_save) === null || _f === void 0 ? void 0 : _f.copyRange[0]) === null || _g === void 0 ? void 0 : _g.column[0];
1213
+ var copy_c2 = (_j = (_h = ctx.luckysheet_copy_save) === null || _h === void 0 ? void 0 : _h.copyRange[0]) === null || _j === void 0 ? void 0 : _j.column[1];
1214
+ var copy_index = ctx.luckysheet_copy_save.dataSheetId || ctx.currentSheetId;
1204
1215
  var d = void 0;
1205
1216
  if (copy_index === ctx.currentSheetId) {
1206
1217
  d = (0, _context.getFlowdata)(ctx);
@@ -1222,15 +1233,15 @@ function handlePaste(ctx, e) {
1222
1233
  }
1223
1234
  var v = void 0;
1224
1235
  if (!_lodash.default.isNil(cell)) {
1225
- if (((_d = (_c = (_b = cell.ct) === null || _b === void 0 ? void 0 : _b.fa) === null || _c === void 0 ? void 0 : _c.indexOf("w")) !== null && _d !== void 0 ? _d : -1) > -1) {
1226
- v = (_f = (_e = d[r]) === null || _e === void 0 ? void 0 : _e[c]) === null || _f === void 0 ? void 0 : _f.v;
1236
+ if (((_m = (_l = (_k = cell.ct) === null || _k === void 0 ? void 0 : _k.fa) === null || _l === void 0 ? void 0 : _l.indexOf("w")) !== null && _m !== void 0 ? _m : -1) > -1) {
1237
+ v = (_p = (_o = d[r]) === null || _o === void 0 ? void 0 : _o[c]) === null || _p === void 0 ? void 0 : _p.v;
1227
1238
  } else {
1228
- v = (_h = (_g = d[r]) === null || _g === void 0 ? void 0 : _g[c]) === null || _h === void 0 ? void 0 : _h.m;
1239
+ v = (_r = (_q = d[r]) === null || _q === void 0 ? void 0 : _q[c]) === null || _r === void 0 ? void 0 : _r.m;
1229
1240
  }
1230
1241
  } else {
1231
1242
  v = "";
1232
1243
  }
1233
- if (_lodash.default.isNil(v) && ((_l = (_k = (_j = d[r]) === null || _j === void 0 ? void 0 : _j[c]) === null || _k === void 0 ? void 0 : _k.ct) === null || _l === void 0 ? void 0 : _l.t) === "inlineStr") {
1244
+ if (_lodash.default.isNil(v) && ((_u = (_t = (_s = d[r]) === null || _s === void 0 ? void 0 : _s[c]) === null || _t === void 0 ? void 0 : _t.ct) === null || _u === void 0 ? void 0 : _u.t) === "inlineStr") {
1234
1245
  v = d[r][c].ct.s.map(function (val) {
1235
1246
  return val.v;
1236
1247
  }).join("");
@@ -1248,10 +1259,10 @@ function handlePaste(ctx, e) {
1248
1259
  }
1249
1260
  }
1250
1261
  }
1251
- if (((_o = (_m = ctx.hooks).beforePaste) === null || _o === void 0 ? void 0 : _o.call(_m, ctx.luckysheet_select_save, txtdata)) === false) {
1262
+ if (((_w = (_v = ctx.hooks).beforePaste) === null || _w === void 0 ? void 0 : _w.call(_v, ctx.luckysheet_select_save, txtdata)) === false) {
1252
1263
  return;
1253
1264
  }
1254
- if (txtdata.indexOf("fortune-copy-action-table") > -1 && ((_p = ctx.luckysheet_copy_save) === null || _p === void 0 ? void 0 : _p.copyRange) != null && ctx.luckysheet_copy_save.copyRange.length > 0 && isEqual) {
1265
+ if (txtdata.indexOf("fortune-copy-action-table") > -1 && ((_x = ctx.luckysheet_copy_save) === null || _x === void 0 ? void 0 : _x.copyRange) != null && ctx.luckysheet_copy_save.copyRange.length > 0 && isEqual) {
1255
1266
  if (ctx.luckysheet_paste_iscut) {
1256
1267
  ctx.luckysheet_paste_iscut = false;
1257
1268
  pasteHandlerOfCutPaste(ctx, ctx.luckysheet_copy_save);
@@ -1263,7 +1274,6 @@ function handlePaste(ctx, e) {
1263
1274
  } else if (txtdata.indexOf("fortune-copy-action-image") > -1) {} else {
1264
1275
  if (txtdata.indexOf("table") > -1) {
1265
1276
  (0, _pasteTableHelpers.handlePastedTable)(ctx, txtdata, pasteHandler);
1266
- resizePastedCellsToContent(ctx);
1267
1277
  } else if (clipboardData.files.length === 1 && clipboardData.files[0].type.indexOf("image") > -1) {} else {
1268
1278
  txtdata = clipboardData.getData("text/plain");
1269
1279
  var isExcelFormula = txtdata.startsWith("=");
@@ -1274,10 +1284,10 @@ function handlePaste(ctx, e) {
1274
1284
  var _txtdata = clipboardData.getData("text/html") || clipboardData.getData("text/plain");
1275
1285
  var embedUrl = (0, _modules.sanitizeDuneUrl)(_txtdata);
1276
1286
  if (embedUrl) {
1277
- var last = (_q = ctx.luckysheet_select_save) === null || _q === void 0 ? void 0 : _q[ctx.luckysheet_select_save.length - 1];
1287
+ var last = (_y = ctx.luckysheet_select_save) === null || _y === void 0 ? void 0 : _y[ctx.luckysheet_select_save.length - 1];
1278
1288
  if (last) {
1279
- var rowIndex = (_t = (_r = last.row_focus) !== null && _r !== void 0 ? _r : (_s = last.row) === null || _s === void 0 ? void 0 : _s[0]) !== null && _t !== void 0 ? _t : 0;
1280
- var colIndex = (_w = (_u = last.column_focus) !== null && _u !== void 0 ? _u : (_v = last.column) === null || _v === void 0 ? void 0 : _v[0]) !== null && _w !== void 0 ? _w : 0;
1289
+ var rowIndex = (_1 = (_z = last.row_focus) !== null && _z !== void 0 ? _z : (_0 = last.row) === null || _0 === void 0 ? void 0 : _0[0]) !== null && _1 !== void 0 ? _1 : 0;
1290
+ var colIndex = (_4 = (_2 = last.column_focus) !== null && _2 !== void 0 ? _2 : (_3 = last.column) === null || _3 === void 0 ? void 0 : _3[0]) !== null && _4 !== void 0 ? _4 : 0;
1281
1291
  var left = colIndex === 0 ? 0 : ctx.visibledatacolumn[colIndex - 1];
1282
1292
  var top_1 = rowIndex === 0 ? 0 : ctx.visibledatarow[rowIndex + 5];
1283
1293
  ctx.showDunePreview = {
package/lib/locale/en.js CHANGED
@@ -3466,7 +3466,7 @@ var _default = exports.default = {
3466
3466
  type: "rangeall"
3467
3467
  }]
3468
3468
  }, {
3469
- n: "NETWORKDAYS_INTL",
3469
+ n: "NETWORKDAYS.INTL",
3470
3470
  t: 6,
3471
3471
  d: "Returns the number of net working days between two provided days excluding specified weekend days and holidays.",
3472
3472
  a: "Net working days between two dates (specifying weekends).",
@@ -3718,7 +3718,7 @@ var _default = exports.default = {
3718
3718
  type: "rangeall"
3719
3719
  }]
3720
3720
  }, {
3721
- n: "WORKDAY_INTL",
3721
+ n: "WORKDAY.INTL",
3722
3722
  t: 6,
3723
3723
  d: "Calculates the date after a specified number of workdays excluding specified weekend days and holidays.",
3724
3724
  a: "Date after a number of workdays (specifying weekends).",
@@ -92,14 +92,18 @@ function normalizedCellAttr(cell, attr, defaultFontSize) {
92
92
  }
93
93
  function normalizedAttr(data, r, c, attr) {
94
94
  if (!data || !data[r]) {
95
- console.warn("cell (%d, %d) is null", r, c);
96
95
  return null;
97
96
  }
98
97
  var cell = data[r][c];
99
98
  if (!cell) return undefined;
100
99
  return normalizedCellAttr(cell, attr);
101
100
  }
101
+ function newlinesToBr(text) {
102
+ if (!text) return "";
103
+ return text.replace(/\r\n|\r|\n/g, "<br />");
104
+ }
102
105
  function getCellValue(r, c, data, attr) {
106
+ var _a;
103
107
  if (!attr) {
104
108
  attr = "v";
105
109
  }
@@ -129,6 +133,9 @@ function getCellValue(r, c, data, attr) {
129
133
  } else if (d && d.ct && d.ct.t === "d") {
130
134
  retv = d.m;
131
135
  }
136
+ if ((d === null || d === void 0 ? void 0 : d.ct) && (0, _inlineString.isInlineStringCT)(d.ct) && (attr === "v" || attr === "m")) {
137
+ retv = newlinesToBr((_a = d.ct.s[0]) === null || _a === void 0 ? void 0 : _a.v);
138
+ }
132
139
  }
133
140
  if (retv === undefined) {
134
141
  retv = null;
@@ -1072,6 +1079,8 @@ function getStyleByCell(ctx, d, r, c) {
1072
1079
  } else {
1073
1080
  style.background = "".concat(value);
1074
1081
  }
1082
+ } else {
1083
+ style.background = "".concat(value);
1075
1084
  }
1076
1085
  }
1077
1086
  if ("ht" in cell) {
@@ -1080,8 +1089,18 @@ function getStyleByCell(ctx, d, r, c) {
1080
1089
  style.textAlign = "center";
1081
1090
  } else if (Number(value) === 2) {
1082
1091
  style.textAlign = "right";
1092
+ style.overflowWrap = "anywhere";
1083
1093
  }
1084
1094
  }
1095
+ if ("tb" in cell) {
1096
+ if (Number(cell.tb) === 2) {
1097
+ style.overflowWrap = "anywhere";
1098
+ }
1099
+ }
1100
+ if ("ff" in cell) {
1101
+ var value = normalizedCellAttr(cell, "ff");
1102
+ style.fontFamily = value;
1103
+ }
1085
1104
  if ("vt" in cell) {
1086
1105
  var value = normalizedCellAttr(cell, "vt");
1087
1106
  if (Number(value) === 0) {
@@ -26,6 +26,16 @@ var _selection = require("./selection");
26
26
  var _refresh = require("./refresh");
27
27
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
28
28
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
29
+ var __assign = void 0 && (void 0).__assign || function () {
30
+ __assign = Object.assign || function (t) {
31
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
32
+ s = arguments[i];
33
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
34
+ }
35
+ return t;
36
+ };
37
+ return __assign.apply(this, arguments);
38
+ };
29
39
  function toPx(v) {
30
40
  return "".concat(v, "px");
31
41
  }
@@ -1830,6 +1840,13 @@ function updateDropCell(ctx) {
1830
1840
  var v = formula.execfunction(ctx, f, j, i);
1831
1841
  formula.execFunctionGroup(ctx, j, i, v[1], undefined, d);
1832
1842
  cell.v = v[1], cell.f = v[2];
1843
+ var afterUpdateCell = ctx.hooks.afterUpdateCell;
1844
+ if (afterUpdateCell) {
1845
+ afterUpdateCell(j, i, null, __assign(__assign({}, cell), {
1846
+ v: v[1] instanceof Promise ? v[1] : cell.v,
1847
+ m: v[1] instanceof Promise ? "[object Promise]" : v[1]
1848
+ }));
1849
+ }
1833
1850
  if (cell.spl != null) {
1834
1851
  cell.spl = v[3].data;
1835
1852
  } else if (cell.v != null) {
@@ -1909,6 +1926,13 @@ function updateDropCell(ctx) {
1909
1926
  var v = formula.execfunction(ctx, f, j, i);
1910
1927
  formula.execFunctionGroup(ctx, j, i, v[1], undefined, d);
1911
1928
  cell.v = v[1], cell.f = v[2];
1929
+ var afterUpdateCell = ctx.hooks.afterUpdateCell;
1930
+ if (afterUpdateCell) {
1931
+ afterUpdateCell(j, i, null, __assign(__assign({}, cell), {
1932
+ v: v[1] instanceof Promise ? v[1] : cell.v,
1933
+ m: v[1] instanceof Promise ? "[object Promise]" : v[1]
1934
+ }));
1935
+ }
1912
1936
  if (cell.spl != null) {
1913
1937
  cell.spl = v[3].data;
1914
1938
  } else if (cell.v != null) {
@@ -1989,6 +2013,14 @@ function updateDropCell(ctx) {
1989
2013
  var v = formula.execfunction(ctx, f, i, j);
1990
2014
  formula.execFunctionGroup(ctx, j, i, v[1], undefined, d);
1991
2015
  cell.v = v[1], cell.f = v[2];
2016
+ console.log(j, i);
2017
+ var afterUpdateCell = ctx.hooks.afterUpdateCell;
2018
+ if (afterUpdateCell) {
2019
+ afterUpdateCell(i, j, null, __assign(__assign({}, cell), {
2020
+ v: v[1] instanceof Promise ? v[1] : cell.v,
2021
+ m: v[1] instanceof Promise ? "[object Promise]" : v[1]
2022
+ }));
2023
+ }
1992
2024
  if (cell.spl != null) {
1993
2025
  cell.spl = v[3].data;
1994
2026
  } else if (cell.v != null) {
@@ -2062,6 +2094,13 @@ function updateDropCell(ctx) {
2062
2094
  var v = formula.execfunction(ctx, f, i, j);
2063
2095
  formula.execFunctionGroup(ctx, j, i, v[1], undefined, d);
2064
2096
  cell.v = v[1], cell.f = v[2];
2097
+ var afterUpdateCell = ctx.hooks.afterUpdateCell;
2098
+ if (afterUpdateCell) {
2099
+ afterUpdateCell(i, j, null, __assign(__assign({}, cell), {
2100
+ v: v[1] instanceof Promise ? v[1] : cell.v,
2101
+ m: v[1] instanceof Promise ? "[object Promise]" : v[1]
2102
+ }));
2103
+ }
2065
2104
  if (cell.spl != null) {
2066
2105
  cell.spl = v[3].data;
2067
2106
  } else if (cell.v != null) {
@@ -719,7 +719,19 @@ function insertUpdateFunctionGroup(ctx, r, c, id, calcChainSet) {
719
719
  file.calcChain = calcChain;
720
720
  ctx.luckysheetfile = luckysheetfile;
721
721
  }
722
+ function replaceDotsInFunctionName(str) {
723
+ if (!str.startsWith("=")) return str;
724
+ var openParenIndex = str.indexOf("(");
725
+ if (openParenIndex === -1) return str;
726
+ var fnName = str.substring(1, openParenIndex);
727
+ var fixedFnName = fnName.replace(/\./g, "_");
728
+ return "=" + fixedFnName + str.substring(openParenIndex);
729
+ }
722
730
  function execfunction(ctx, txt, r, c, id, calcChainSet, isrefresh, notInsertFunc) {
731
+ var originalTxt = txt;
732
+ if (txt.toUpperCase().includes("NETWORKDAYS.INTL") || txt.toUpperCase().includes("WORKDAY.INTL")) {
733
+ txt = replaceDotsInFunctionName(txt);
734
+ }
723
735
  if (txt.indexOf(_validation.error.r) > -1) {
724
736
  return [false, _validation.error.r, txt];
725
737
  }
@@ -770,7 +782,7 @@ function execfunction(ctx, txt, r, c, id, calcChainSet, isrefresh, notInsertFunc
770
782
  } else {
771
783
  (0, _2.clearCellError)(ctx, r, c);
772
784
  }
773
- return [true, !isError ? finalResult : "#ERROR", txt, isError && {
785
+ return [true, !isError ? finalResult : "#ERROR", originalTxt, isError && {
774
786
  row_column: "".concat(r, "_").concat(c),
775
787
  title: "Error",
776
788
  message: (formulaError === null || formulaError === void 0 ? void 0 : formulaError.toString()) || detectedErrorFromValue || "Unknown Error"
@@ -2415,7 +2427,7 @@ function functionCopy(ctx, txt, mode, step) {
2415
2427
  str += s;
2416
2428
  }
2417
2429
  if (i === funcstack.length - 1) {
2418
- if (iscelldata(_lodash.default.trim(str))) {
2430
+ if (iscelldata(_lodash.default.trim(str)) && !_lodash.default.trim(str).includes("$")) {
2419
2431
  if (mode === "down") {
2420
2432
  function_str += downparam(_lodash.default.trim(str), step);
2421
2433
  } else if (mode === "up") {
@@ -1164,7 +1164,7 @@ function getHtmlBorderStyle(type, color) {
1164
1164
  return "".concat(style + color, ";");
1165
1165
  }
1166
1166
  function rangeValueToHtml(ctx, sheetId, ranges) {
1167
- var _a, _b, _c;
1167
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
1168
1168
  var idx = (0, _utils.getSheetIndex)(ctx, sheetId);
1169
1169
  if (idx == null) return "";
1170
1170
  var sheet = ctx.luckysheetfile[idx];
@@ -1197,11 +1197,12 @@ function rangeValueToHtml(ctx, sheetId, ranges) {
1197
1197
  var colgroup = "";
1198
1198
  for (var i = 0; i < rowIndexArr.length; i += 1) {
1199
1199
  var r = rowIndexArr[i];
1200
- cpdata += "<tr>";
1200
+ var rowLen = (_e = (_d = (_c = sheet.config) === null || _c === void 0 ? void 0 : _c.rowlen) === null || _d === void 0 ? void 0 : _d[r.toString()]) !== null && _e !== void 0 ? _e : sheet.defaultRowHeight;
1201
+ cpdata += "<tr height=".concat(rowLen, "px >");
1201
1202
  var _loop_3 = function _loop_3(j) {
1202
1203
  var c = colIndexArr[j];
1203
1204
  var column = '<td ${span} style="${style}">';
1204
- var cell = (_c = d[r]) === null || _c === void 0 ? void 0 : _c[c];
1205
+ var cell = (_f = d[r]) === null || _f === void 0 ? void 0 : _f[c];
1205
1206
  if (cell != null) {
1206
1207
  var style = "";
1207
1208
  var span = "";
@@ -1213,11 +1214,14 @@ function rangeValueToHtml(ctx, sheetId, ranges) {
1213
1214
  }
1214
1215
  }
1215
1216
  if (c === colIndexArr[0]) {
1216
- if (_lodash.default.isNil(sheet.config) || _lodash.default.isNil(sheet.config.rowlen) || _lodash.default.isNil(sheet.config.rowlen[r.toString()])) {
1217
+ var rowLenValue = (_h = (_g = sheet.config) === null || _g === void 0 ? void 0 : _g.rowlen) === null || _h === void 0 ? void 0 : _h[r.toString()];
1218
+ var colLen = (_k = (_j = sheet.config) === null || _j === void 0 ? void 0 : _j.columnlen) === null || _k === void 0 ? void 0 : _k[c.toString()];
1219
+ if (_lodash.default.isNil(rowLenValue)) {
1217
1220
  style += "height:19px;";
1218
1221
  } else {
1219
- style += "height:".concat(sheet.config.rowlen[r.toString()], "px;");
1222
+ style += "height:".concat(rowLenValue, "px;");
1220
1223
  }
1224
+ style += "width:".concat(colLen !== null && colLen !== void 0 ? colLen : sheet.defaultColWidth, "px;");
1221
1225
  }
1222
1226
  var reg = /^(w|W)((0?)|(0\.0+))$/;
1223
1227
  var c_value = void 0;
@@ -1520,6 +1524,7 @@ function copy(ctx) {
1520
1524
  HasMC: HasMC
1521
1525
  };
1522
1526
  var cpdata = rangeValueToHtml(ctx, ctx.currentSheetId, ctx.luckysheet_select_save);
1527
+ cpdata = cpdata === null ? cpdata : cpdata.replace('<td style="', '<td style="white-space: pre-line;"');
1523
1528
  if (cpdata) {
1524
1529
  ctx.iscopyself = true;
1525
1530
  _clipboard.default.writeHtml(cpdata);
@@ -10,8 +10,19 @@ var _locale = require("./locale");
10
10
  var _modules = require("./modules");
11
11
  var _format = require("./modules/format");
12
12
  var _utils = require("./utils");
13
+ var _api = require("./api");
13
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
15
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
16
+ var __assign = void 0 && (void 0).__assign || function () {
17
+ __assign = Object.assign || function (t) {
18
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
19
+ s = arguments[i];
20
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
21
+ }
22
+ return t;
23
+ };
24
+ return __assign.apply(this, arguments);
25
+ };
15
26
  var DEFAULT_FONT_SIZE = exports.DEFAULT_FONT_SIZE = 12;
16
27
  var parseStylesheetPairs = function parseStylesheetPairs(styleInner) {
17
28
  var patternReg = /{([^}]*)}/g;
@@ -120,14 +131,28 @@ var detectHyperlink = function detectHyperlink(td) {
120
131
  }
121
132
  return null;
122
133
  };
134
+ function brToNewline(str) {
135
+ return str.replace(/<br\s*\/?>/gi, "\n");
136
+ }
123
137
  var buildCellFromTd = function buildCellFromTd(td, classStyles, ctx) {
124
138
  var _a;
125
- var _b, _c;
139
+ var _b, _c, _d, _e;
126
140
  var cell = {};
127
141
  var rawText = (td.innerText || td.innerHTML || "").trim();
142
+ var isLineBreak = rawText.includes("<br />");
128
143
  if (!rawText) {
129
144
  cell.v = undefined;
130
145
  cell.m = "";
146
+ } else if (isLineBreak) {
147
+ var value = brToNewline(rawText);
148
+ cell = __assign(__assign({}, cell), {
149
+ ct: __assign(__assign({}, cell.ct), {
150
+ t: "inlineStr",
151
+ s: [{
152
+ v: value
153
+ }]
154
+ })
155
+ });
131
156
  } else {
132
157
  var mask = (0, _format.genarate)(rawText);
133
158
  _a = mask || [], cell.m = _a[0], cell.ct = _a[1], cell.v = _a[2];
@@ -140,6 +165,13 @@ var buildCellFromTd = function buildCellFromTd(td, classStyles, ctx) {
140
165
  cell.v = rawText;
141
166
  }
142
167
  }
168
+ if (((_b = td.style) === null || _b === void 0 ? void 0 : _b.alignItems) === "center") {
169
+ cell.vt = 0;
170
+ } else if (((_c = td.style) === null || _c === void 0 ? void 0 : _c.alignItems) === "flex-end") {
171
+ cell.vt = 2;
172
+ } else if (((_d = td.style) === null || _d === void 0 ? void 0 : _d.alignItems) === "flex-start") {
173
+ cell.vt = 1;
174
+ }
143
175
  var styleBlock = typeof classStyles[".".concat(td.className)] === "string" ? classStyles[".".concat(td.className)] : "";
144
176
  var styles = parseInlineStyleBlock(styleBlock);
145
177
  if (!_lodash.default.isNil(styles.border)) td.style.border = styles.border;
@@ -164,17 +196,11 @@ var buildCellFromTd = function buildCellFromTd(td, classStyles, ctx) {
164
196
  } else {
165
197
  cell.ht = 1;
166
198
  }
167
- var regex = /vertical-align:\s*(.*?);/;
168
- var vtStyle = typeof classStyles.td === "string" && ((_c = (_b = classStyles.td.match(regex)) === null || _b === void 0 ? void 0 : _b[1]) !== null && _c !== void 0 ? _c : "") || "top";
169
- var vt = td.style.verticalAlign || styles["vertical-align"] || vtStyle;
170
- if (vt === "middle") {
171
- cell.vt = 0;
172
- } else if (vt === "top" || vt === "text-top") {
173
- cell.vt = 1;
199
+ if (((_e = td === null || td === void 0 ? void 0 : td.style) === null || _e === void 0 ? void 0 : _e["overflow-wrap"]) === "anywhere") {
200
+ cell.tb = "2";
174
201
  } else {
175
- cell.vt = 2;
202
+ cell.tb = "2";
176
203
  }
177
- cell.tb = "1";
178
204
  if ("mso-rotate" in styles) cell.rt = parseFloat(styles["mso-rotate"]);
179
205
  var rowspan = parseInt(td.getAttribute("rowspan") || "1", 10);
180
206
  var colspan = parseInt(td.getAttribute("colspan") || "1", 10);
@@ -192,6 +218,15 @@ function handlePastedTable(ctx, html, pasteHandler) {
192
218
  if (!html.includes("table")) return;
193
219
  var containerDiv = document.createElement("div");
194
220
  containerDiv.innerHTML = html;
221
+ var tableColGropup = containerDiv.querySelectorAll("colgroup");
222
+ tableColGropup.forEach(function (colGroup, index) {
223
+ var _a;
224
+ var colWidth = colGroup === null || colGroup === void 0 ? void 0 : colGroup.getAttribute("width");
225
+ var intColWidth = parseInt(colWidth || "0", 10);
226
+ var anchorCol = ctx.luckysheet_select_save[0].column[0];
227
+ var absoluteCol = anchorCol + index;
228
+ (0, _api.setColumnWidth)(ctx, (_a = {}, _a[absoluteCol] = intColWidth, _a));
229
+ });
195
230
  var tableRows = containerDiv.querySelectorAll("table tr");
196
231
  if (tableRows.length === 0) {
197
232
  containerDiv.remove();
@@ -226,17 +261,19 @@ function handlePastedTable(ctx, html, pasteHandler) {
226
261
  var localRowIndex = 0;
227
262
  tableRows.forEach(function (tr) {
228
263
  var _a;
264
+ var _b;
229
265
  var localColIndex = 0;
230
266
  var anchorRow = ctx.luckysheet_select_save[0].row[0];
231
267
  var targetRowIndex = anchorRow + localRowIndex;
232
268
  var explicitRowHeightAttr = tr.getAttribute("height");
233
269
  if (!_lodash.default.isNil(explicitRowHeightAttr)) {
234
270
  var explicitRowHeight = parseInt(explicitRowHeightAttr, 10);
235
- var hasCustomRowHeight = _lodash.default.has((_a = sheetFile.config) === null || _a === void 0 ? void 0 : _a.rowlen, targetRowIndex);
271
+ var hasCustomRowHeight = _lodash.default.has((_b = sheetFile.config) === null || _b === void 0 ? void 0 : _b.rowlen, targetRowIndex);
236
272
  var currentRowHeight = hasCustomRowHeight ? sheetFile.config.rowlen[targetRowIndex] : sheetFile.defaultRowHeight;
237
273
  if (currentRowHeight !== explicitRowHeight) {
238
274
  rowHeightsConfig[targetRowIndex] = explicitRowHeight;
239
275
  }
276
+ (0, _api.setRowHeight)(ctx, (_a = {}, _a[String(targetRowIndex)] = explicitRowHeight, _a));
240
277
  }
241
278
  tr.querySelectorAll("td, th").forEach(function (node) {
242
279
  var tdElement = node;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fileverse-dev/fortune-core",
3
- "version": "1.2.59",
3
+ "version": "1.2.62",
4
4
  "main": "lib/index.js",
5
5
  "module": "es/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -15,7 +15,7 @@
15
15
  "dev": "father-build --watch"
16
16
  },
17
17
  "dependencies": {
18
- "@fileverse-dev/formula-parser": "0.2.84",
18
+ "@fileverse-dev/formula-parser": "0.2.85",
19
19
  "dayjs": "^1.11.0",
20
20
  "immer": "^9.0.12",
21
21
  "lodash": "^4.17.21",