@fileverse-dev/fortune-core 1.1.10 → 1.1.11-patch-1

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.
@@ -33,6 +33,15 @@ var __assign = void 0 && (void 0).__assign || function () {
33
33
  };
34
34
  return __assign.apply(this, arguments);
35
35
  };
36
+ var __spreadArray = void 0 && (void 0).__spreadArray || function (to, from, pack) {
37
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
38
+ if (ar || !(i in from)) {
39
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
40
+ ar[i] = from[i];
41
+ }
42
+ }
43
+ return to.concat(ar || Array.prototype.slice.call(from));
44
+ };
36
45
  function postPasteCut(ctx, source, target, RowlChange) {
37
46
  var execF_rc = {};
38
47
  ctx.formulaCache.execFunctionExist = [];
@@ -312,9 +321,11 @@ function setCellHyperlink(ctx, id, r, c, link) {
312
321
  }
313
322
  function pasteHandlerOfCutPaste(ctx, copyRange) {
314
323
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
324
+ console.log("BRRAAA");
315
325
  var allowEdit = (0, _utils.isAllowEdit)(ctx);
316
326
  if (!allowEdit) return;
317
327
  if (!copyRange) return;
328
+ console.log("pasteHandlerOfCutPaste");
318
329
  var cfg = ctx.config || {};
319
330
  if (cfg.merge == null) {
320
331
  cfg.merge = {};
@@ -888,6 +899,7 @@ function pasteHandlerOfCopyPaste(ctx, copyRange) {
888
899
  }
889
900
  var funcV = (0, _formula.execfunction)(ctx, func, h, c, undefined, undefined, true);
890
901
  var afterUpdateCell = ctx.hooks.afterUpdateCell;
902
+ console.log("REACHED HERE FINALLY", afterUpdateCell);
891
903
  if (afterUpdateCell && arr.length === 1) {
892
904
  afterUpdateCell(h, c, null, __assign(__assign({}, value), {
893
905
  v: funcV[1],
@@ -983,6 +995,7 @@ function pasteHandlerOfCopyPaste(ctx, copyRange) {
983
995
  }
984
996
  }
985
997
  function handleFormulaStringPaste(ctx, formulaStr) {
998
+ console.log("aaaaaa");
986
999
  var r = ctx.luckysheet_select_save[0].row[0];
987
1000
  var c = ctx.luckysheet_select_save[0].column[0];
988
1001
  var funcV = (0, _formula.execfunction)(ctx, formulaStr, r, c, undefined, undefined, true);
@@ -1002,6 +1015,7 @@ function handleFormulaStringPaste(ctx, formulaStr) {
1002
1015
  cellTemp.m = isDataBlockRespose ? "Loading..." : val.toString();
1003
1016
  cellTemp.v = val;
1004
1017
  cellTemp.f = formulaStr;
1018
+ console.log("HERERERE");
1005
1019
  var afterUpdateCell = ctx.hooks.afterUpdateCell;
1006
1020
  if (afterUpdateCell && isDataBlockRespose) {
1007
1021
  afterUpdateCell(r, c, null, cellTemp);
@@ -1019,379 +1033,517 @@ function parseAsLinkIfUrl(txtdata, ctx) {
1019
1033
  }
1020
1034
  }
1021
1035
  }
1036
+ var ENABLE_PASTE_DEBUG = true;
1037
+ function dbg() {
1038
+ var args = [];
1039
+ for (var _i = 0; _i < arguments.length; _i++) {
1040
+ args[_i] = arguments[_i];
1041
+ }
1042
+ if (!ENABLE_PASTE_DEBUG) return;
1043
+ console.log.apply(console, __spreadArray(['[Paste]'], args, false));
1044
+ }
1045
+ function dbgGroup(label) {
1046
+ if (!ENABLE_PASTE_DEBUG) return function () {};
1047
+ console.log("[Paste] ".concat(label));
1048
+ return function () {
1049
+ console.log("ended");
1050
+ };
1051
+ }
1022
1052
  function handlePaste(ctx, e) {
1023
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
1053
+ 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, _5, _6, _7;
1054
+ var _8, _9;
1055
+ var endAll = dbgGroup('handlePaste(root)');
1056
+ var t0 = performance.now();
1024
1057
  var allowEdit = (0, _utils.isAllowEdit)(ctx);
1025
- if (!allowEdit) return;
1058
+ dbg('allowEdit?', allowEdit);
1059
+ if (!allowEdit) {
1060
+ endAll();
1061
+ return;
1062
+ }
1063
+ dbg('selectionCache.isPasteAction?', _selection.selectionCache.isPasteAction);
1064
+ dbg('ctx.luckysheetCellUpdate.length', (_b = (_a = ctx.luckysheetCellUpdate) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0);
1026
1065
  if (_selection.selectionCache.isPasteAction) {
1066
+ var endGrid = dbgGroup('Grid paste branch');
1027
1067
  ctx.luckysheetCellUpdate = [];
1028
1068
  _selection.selectionCache.isPasteAction = false;
1029
1069
  var clipboardData = e.clipboardData;
1030
1070
  if (!clipboardData) {
1031
1071
  clipboardData = window.clipboardData;
1072
+ dbg('Using IE clipboardData fallback?', !!clipboardData);
1032
1073
  }
1033
- if (!clipboardData) return;
1034
- var text = clipboardData.getData("text/plain");
1035
- if (text) {
1036
- parseAsLinkIfUrl(text, ctx);
1074
+ if (!clipboardData) {
1075
+ dbg('No clipboardData found → abort');
1076
+ endGrid();
1077
+ endAll();
1078
+ return;
1079
+ }
1080
+ var textPlain = clipboardData.getData('text/plain') || '';
1081
+ var textHtml = clipboardData.getData('text/html') || '';
1082
+ dbg('clipboard text/plain length', textPlain.length);
1083
+ dbg('clipboard text/html length', textHtml.length);
1084
+ if (textPlain) {
1085
+ var endParseLink = dbgGroup('parseAsLinkIfUrl');
1086
+ try {
1087
+ parseAsLinkIfUrl(textPlain, ctx);
1088
+ } finally {
1089
+ endParseLink();
1090
+ }
1037
1091
  }
1038
- var txtdata = clipboardData.getData("text/html") || clipboardData.getData("text/plain");
1092
+ var txtdata = textHtml || textPlain;
1093
+ dbg('txtdata source', textHtml ? 'html' : 'plain');
1094
+ dbg('txtdata length', txtdata.length);
1039
1095
  var isEqual = true;
1040
- if (txtdata.indexOf("fortune-copy-action-table") > -1 && ((_a = ctx.luckysheet_copy_save) === null || _a === void 0 ? void 0 : _a.copyRange) != null && ctx.luckysheet_copy_save.copyRange.length > 0) {
1041
- var cpDataArr = [];
1042
- var reg = /<tr.*?>(.*?)<\/tr>/g;
1043
- var reg2 = /<td.*?>(.*?)<\/td>/g;
1044
- var regArr = txtdata.match(reg) || [];
1045
- for (var i = 0; i < regArr.length; i += 1) {
1046
- var cpRowArr = [];
1047
- var reg2Arr = regArr[i].match(reg2);
1048
- if (!_lodash.default.isNil(reg2Arr)) {
1049
- for (var j = 0; j < reg2Arr.length; j += 1) {
1050
- var cpValue = reg2Arr[j].replace(/<td.*?>/g, "").replace(/<\/td>/g, "");
1051
- cpRowArr.push(cpValue);
1096
+ var hasInternalSignature = txtdata.indexOf('fortune-copy-action-table') > -1;
1097
+ var hasCopyRange = !!((_c = ctx.luckysheet_copy_save) === null || _c === void 0 ? void 0 : _c.copyRange) && ctx.luckysheet_copy_save.copyRange.length > 0;
1098
+ dbg('hasInternalSignature?', hasInternalSignature);
1099
+ dbg('hasCopyRange?', hasCopyRange);
1100
+ if (hasInternalSignature && hasCopyRange) {
1101
+ var endInternal = dbgGroup('Internal-copy equality check');
1102
+ var tInt0 = performance.now();
1103
+ try {
1104
+ var cpDataArr = [];
1105
+ var reg = /<tr.*?>(.*?)<\/tr>/g;
1106
+ var reg2 = /<td.*?>(.*?)<\/td>/g;
1107
+ var regArr = txtdata.match(reg) || [];
1108
+ dbg('rows found in html table', regArr.length);
1109
+ for (var i = 0; i < regArr.length; i += 1) {
1110
+ var cpRowArr = [];
1111
+ var reg2Arr = regArr[i].match(reg2);
1112
+ if (!_lodash.default.isNil(reg2Arr)) {
1113
+ for (var j = 0; j < reg2Arr.length; j += 1) {
1114
+ var cpValue = reg2Arr[j].replace(/<td.*?>/g, '').replace(/<\/td>/g, '');
1115
+ cpRowArr.push(cpValue);
1116
+ }
1052
1117
  }
1118
+ cpDataArr.push(cpRowArr);
1053
1119
  }
1054
- cpDataArr.push(cpRowArr);
1055
- }
1056
- var copy_r1 = ctx.luckysheet_copy_save.copyRange[0].row[0];
1057
- var copy_r2 = ctx.luckysheet_copy_save.copyRange[0].row[1];
1058
- var copy_c1 = ctx.luckysheet_copy_save.copyRange[0].column[0];
1059
- var copy_c2 = ctx.luckysheet_copy_save.copyRange[0].column[1];
1060
- var copy_index = ctx.luckysheet_copy_save.dataSheetId;
1061
- var d = void 0;
1062
- if (copy_index === ctx.currentSheetId) {
1063
- d = (0, _context.getFlowdata)(ctx);
1064
- } else {
1065
- var index = (0, _utils.getSheetIndex)(ctx, copy_index);
1066
- if (_lodash.default.isNil(index)) return;
1067
- d = ctx.luckysheetfile[index].data;
1068
- }
1069
- if (!d) return;
1070
- for (var r = copy_r1; r <= copy_r2; r += 1) {
1071
- if (r - copy_r1 > cpDataArr.length - 1) {
1072
- break;
1120
+ dbg('cpDataArr shape', {
1121
+ rows: cpDataArr.length,
1122
+ cols: (_e = (_d = cpDataArr[0]) === null || _d === void 0 ? void 0 : _d.length) !== null && _e !== void 0 ? _e : 0
1123
+ });
1124
+ var copy_r1 = ctx.luckysheet_copy_save.copyRange[0].row[0];
1125
+ var copy_r2 = ctx.luckysheet_copy_save.copyRange[0].row[1];
1126
+ var copy_c1 = ctx.luckysheet_copy_save.copyRange[0].column[0];
1127
+ var copy_c2 = ctx.luckysheet_copy_save.copyRange[0].column[1];
1128
+ var copy_index = ctx.luckysheet_copy_save.dataSheetId;
1129
+ dbg('copyRange', {
1130
+ copy_r1: copy_r1,
1131
+ copy_r2: copy_r2,
1132
+ copy_c1: copy_c1,
1133
+ copy_c2: copy_c2,
1134
+ copy_index: copy_index
1135
+ });
1136
+ var d = void 0;
1137
+ if (copy_index === ctx.currentSheetId) {
1138
+ d = (0, _context.getFlowdata)(ctx);
1139
+ dbg('flowdata from current sheet');
1140
+ } else {
1141
+ var index = (0, _utils.getSheetIndex)(ctx, copy_index);
1142
+ if (_lodash.default.isNil(index)) {
1143
+ dbg('copy sheet index not found → abort equality check');
1144
+ endInternal();
1145
+ endGrid();
1146
+ endAll();
1147
+ return;
1148
+ }
1149
+ d = ctx.luckysheetfile[index].data;
1150
+ dbg('flowdata from other sheet index', index);
1073
1151
  }
1074
- for (var c = copy_c1; c <= copy_c2; c += 1) {
1075
- var cell = d[r][c];
1076
- var isInlineStr = false;
1077
- if (!_lodash.default.isNil(cell) && !_lodash.default.isNil(cell.mc) && _lodash.default.isNil(cell.mc.rs)) {
1078
- continue;
1152
+ if (!d) {
1153
+ dbg('no flowdata abort equality check');
1154
+ endInternal();
1155
+ endGrid();
1156
+ endAll();
1157
+ return;
1158
+ }
1159
+ outerR: for (var r = copy_r1; r <= copy_r2; r += 1) {
1160
+ if (r - copy_r1 > cpDataArr.length - 1) {
1161
+ dbg('cpDataArr rows exhausted at r', r);
1162
+ break;
1079
1163
  }
1080
- var v = void 0;
1081
- if (!_lodash.default.isNil(cell)) {
1082
- 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) {
1083
- v = (_f = (_e = d[r]) === null || _e === void 0 ? void 0 : _e[c]) === null || _f === void 0 ? void 0 : _f.v;
1164
+ for (var c = copy_c1; c <= copy_c2; c += 1) {
1165
+ var cell = (_f = d[r]) === null || _f === void 0 ? void 0 : _f[c];
1166
+ if (!_lodash.default.isNil(cell) && !_lodash.default.isNil(cell.mc) && _lodash.default.isNil(cell.mc.rs)) {
1167
+ dbg('skip merged follower at', {
1168
+ r: r,
1169
+ c: c
1170
+ });
1171
+ continue;
1172
+ }
1173
+ var v = void 0;
1174
+ if (!_lodash.default.isNil(cell)) {
1175
+ if (((_j = (_h = (_g = cell.ct) === null || _g === void 0 ? void 0 : _g.fa) === null || _h === void 0 ? void 0 : _h.indexOf('w')) !== null && _j !== void 0 ? _j : -1) > -1) {
1176
+ v = (_l = (_k = d[r]) === null || _k === void 0 ? void 0 : _k[c]) === null || _l === void 0 ? void 0 : _l.v;
1177
+ } else {
1178
+ v = (_o = (_m = d[r]) === null || _m === void 0 ? void 0 : _m[c]) === null || _o === void 0 ? void 0 : _o.m;
1179
+ }
1084
1180
  } else {
1085
- v = (_h = (_g = d[r]) === null || _g === void 0 ? void 0 : _g[c]) === null || _h === void 0 ? void 0 : _h.m;
1181
+ v = '';
1086
1182
  }
1087
- } else {
1088
- v = "";
1089
- }
1090
- 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") {
1091
- v = d[r][c].ct.s.map(function (val) {
1092
- return val.v;
1093
- }).join("");
1094
- isInlineStr = true;
1095
- }
1096
- if (_lodash.default.isNil(v)) {
1097
- v = "";
1098
- }
1099
- if (isInlineStr) {} else {
1100
- if (_lodash.default.trim(cpDataArr[r - copy_r1][c - copy_c1]) !== _lodash.default.trim(v)) {
1101
- isEqual = false;
1102
- break;
1183
+ var isInlineStr = false;
1184
+ if (_lodash.default.isNil(v) && ((_r = (_q = (_p = d[r]) === null || _p === void 0 ? void 0 : _p[c]) === null || _q === void 0 ? void 0 : _q.ct) === null || _r === void 0 ? void 0 : _r.t) === 'inlineStr') {
1185
+ v = d[r][c].ct.s.map(function (val) {
1186
+ return val.v;
1187
+ }).join('');
1188
+ isInlineStr = true;
1189
+ }
1190
+ if (_lodash.default.isNil(v)) v = '';
1191
+ if (!isInlineStr) {
1192
+ var a = _lodash.default.trim((_s = cpDataArr[r - copy_r1][c - copy_c1]) !== null && _s !== void 0 ? _s : '');
1193
+ var b = _lodash.default.trim(v !== null && v !== void 0 ? v : '');
1194
+ if (a !== b) {
1195
+ dbg('mismatch at', {
1196
+ r: r,
1197
+ c: c,
1198
+ a: a,
1199
+ b: b
1200
+ });
1201
+ isEqual = false;
1202
+ break outerR;
1203
+ }
1204
+ } else {
1205
+ dbg('inlineStr encountered at', {
1206
+ r: r,
1207
+ c: c,
1208
+ note: 'equality skipped'
1209
+ });
1103
1210
  }
1104
1211
  }
1105
1212
  }
1213
+ dbg('isEqual?', isEqual);
1214
+ } finally {
1215
+ dbg('internal equality time(ms)', Math.round(performance.now() - tInt0));
1216
+ endInternal();
1106
1217
  }
1107
1218
  }
1108
1219
  var locale_fontjson_1 = (0, _locale.locale)(ctx).fontjson;
1109
- if (((_o = (_m = ctx.hooks).beforePaste) === null || _o === void 0 ? void 0 : _o.call(_m, ctx.luckysheet_select_save, txtdata)) === false) {
1220
+ dbg('locale fontjson keys', Object.keys(locale_fontjson_1).length);
1221
+ var hookResult = (_u = (_t = ctx.hooks).beforePaste) === null || _u === void 0 ? void 0 : _u.call(_t, ctx.luckysheet_select_save, txtdata);
1222
+ dbg('beforePaste hook returned', hookResult);
1223
+ if (hookResult === false) {
1224
+ dbg('beforePaste veto → abort');
1225
+ endGrid();
1226
+ endAll();
1110
1227
  return;
1111
1228
  }
1112
- 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) {
1229
+ if (hasInternalSignature && hasCopyRange && isEqual) {
1230
+ var endInternalPaste = dbgGroup('Internal copy paste');
1231
+ dbg('ctx.luckysheet_paste_iscut?', ctx.luckysheet_paste_iscut);
1113
1232
  if (ctx.luckysheet_paste_iscut) {
1114
1233
  ctx.luckysheet_paste_iscut = false;
1234
+ dbg('→ pasteHandlerOfCutPaste');
1115
1235
  pasteHandlerOfCutPaste(ctx, ctx.luckysheet_copy_save);
1116
1236
  ctx.luckysheet_selection_range = [];
1117
1237
  } else {
1238
+ dbg(' pasteHandlerOfCopyPaste');
1118
1239
  pasteHandlerOfCopyPaste(ctx, ctx.luckysheet_copy_save);
1119
1240
  }
1120
- } else if (txtdata.indexOf("fortune-copy-action-image") > -1) {} else {
1121
- if (txtdata.indexOf("table") > -1) {
1122
- var ele = document.createElement("div");
1123
- ele.innerHTML = txtdata;
1124
- var trList = ele.querySelectorAll("table tr");
1125
- if (trList.length === 0) {
1126
- ele.remove();
1127
- return;
1128
- }
1129
- var data_1 = new Array(trList.length);
1130
- var colLen_1 = 0;
1131
- _lodash.default.forEach(trList[0].querySelectorAll("td"), function (td) {
1132
- var colspan = td.colSpan;
1133
- if (Number.isNaN(colspan)) {
1134
- colspan = 1;
1135
- }
1136
- colLen_1 += colspan;
1241
+ endInternalPaste();
1242
+ } else if (txtdata.indexOf('fortune-copy-action-image') > -1) {
1243
+ dbg('Image signature detected (paste image) – currently no-op');
1244
+ } else {
1245
+ var endElse = dbgGroup('Else branch (table/image/plain)');
1246
+ try {
1247
+ console.log({
1248
+ txtdata: txtdata
1137
1249
  });
1138
- for (var i = 0; i < data_1.length; i += 1) {
1139
- data_1[i] = new Array(colLen_1);
1140
- }
1141
- var r_1 = 0;
1142
- var borderInfo_1 = {};
1143
- var styleInner = ((_q = ele.querySelectorAll("style")[0]) === null || _q === void 0 ? void 0 : _q.innerHTML) || "";
1144
- var patternReg = /{([^}]*)}/g;
1145
- var patternStyle = styleInner.match(patternReg);
1146
- var nameReg = /^[^\t].*/gm;
1147
- var patternName = _lodash.default.initial(styleInner.match(nameReg));
1148
- var allStyleList_1 = patternName.length === (patternStyle === null || patternStyle === void 0 ? void 0 : patternStyle.length) && _typeof(patternName) === _typeof(patternStyle) ? _lodash.default.fromPairs(_lodash.default.zip(patternName, patternStyle)) : {};
1149
- var index_1 = (0, _utils.getSheetIndex)(ctx, ctx.currentSheetId);
1150
- if (!_lodash.default.isNil(index_1)) {
1151
- if (_lodash.default.isNil(ctx.luckysheetfile[index_1].config)) {
1152
- ctx.luckysheetfile[index_1].config = {};
1153
- }
1154
- if (_lodash.default.isNil(ctx.luckysheetfile[index_1].config.rowlen)) {
1155
- ctx.luckysheetfile[index_1].config.rowlen = {};
1156
- }
1157
- var rowHeightList_1 = ctx.luckysheetfile[index_1].config.rowlen;
1158
- _lodash.default.forEach(trList, function (tr) {
1159
- var c = 0;
1160
- var targetR = ctx.luckysheet_select_save[0].row[0] + r_1;
1161
- var targetRowHeight = !_lodash.default.isNil(tr.getAttribute("height")) ? parseInt(tr.getAttribute("height"), 10) : null;
1162
- if (_lodash.default.has(ctx.luckysheetfile[index_1].config.rowlen, targetR) && ctx.luckysheetfile[index_1].config.rowlen[targetR] !== targetRowHeight || !_lodash.default.has(ctx.luckysheetfile[index_1].config.rowlen, targetR) && ctx.luckysheetfile[index_1].defaultRowHeight !== targetRowHeight) {
1163
- rowHeightList_1[targetR] = targetRowHeight;
1250
+ if (txtdata.indexOf('table') > -1) {
1251
+ var endTable = dbgGroup('HTML table paste');
1252
+ var tTbl0 = performance.now();
1253
+ try {
1254
+ var ele = document.createElement('div');
1255
+ ele.innerHTML = txtdata;
1256
+ var trList = ele.querySelectorAll('table tr');
1257
+ dbg('tr count', trList.length);
1258
+ if (trList.length === 0) {
1259
+ ele.remove();
1260
+ dbg('no rows abort table paste');
1261
+ endTable();
1262
+ endElse();
1263
+ endGrid();
1264
+ endAll();
1265
+ return;
1164
1266
  }
1165
- _lodash.default.forEach(tr.querySelectorAll("td"), function (td) {
1166
- var className = td.className;
1167
- var cell = {};
1168
- var txt = td.innerText || td.innerHTML;
1169
- if (_lodash.default.trim(txt).length === 0) {
1170
- cell.v = undefined;
1171
- cell.m = "";
1172
- } else {
1173
- var mask = (0, _format.genarate)(txt);
1174
- cell.m = mask[0], cell.ct = mask[1], cell.v = mask[2];
1175
- if (/^0x?[a-fA-F0-9]+$/.test(txt)) {
1176
- cell.ct = {
1177
- fa: "@",
1178
- t: "s"
1179
- };
1180
- cell.m = txt;
1181
- cell.v = txt;
1182
- }
1183
- }
1184
- var styleString = typeof allStyleList_1[".".concat(className)] === "string" ? allStyleList_1[".".concat(className)].substring(1, allStyleList_1[".".concat(className)].length - 1).split("\n\t") : [];
1185
- var styles = {};
1186
- _lodash.default.forEach(styleString, function (s) {
1187
- var styleList = s.split(":");
1188
- styles[styleList[0]] = styleList === null || styleList === void 0 ? void 0 : styleList[1].replace(";", "");
1189
- });
1190
- if (!_lodash.default.isNil(styles.border)) td.style.border = styles.border;
1191
- var bg = td.style.backgroundColor || styles.background;
1192
- if (bg === "rgba(0, 0, 0, 0)" || _lodash.default.isEmpty(bg)) {
1193
- bg = undefined;
1194
- }
1195
- cell.bg = bg;
1196
- var fontWight = td.style.fontWeight;
1197
- cell.bl = (fontWight.toString() === "400" || fontWight === "normal" || _lodash.default.isEmpty(fontWight)) && !_lodash.default.includes(styles["font-style"], "bold") && (!styles["font-weight"] || styles["font-weight"] === "400") ? 0 : 1;
1198
- cell.it = (td.style.fontStyle === "normal" || _lodash.default.isEmpty(td.style.fontStyle)) && !_lodash.default.includes(styles["font-style"], "italic") ? 0 : 1;
1199
- cell.un = !_lodash.default.includes(styles["text-decoration"], "underline") ? undefined : 1;
1200
- cell.cl = !_lodash.default.includes(td.innerHTML, "<s>") ? undefined : 1;
1201
- var ff = td.style.fontFamily || styles["font-family"] || "";
1202
- var ffs = ff.split(",");
1203
- for (var i = 0; i < ffs.length; i += 1) {
1204
- var fa = _lodash.default.trim(ffs[i].toLowerCase());
1205
- fa = locale_fontjson_1[fa];
1206
- if (_lodash.default.isNil(fa)) {
1207
- cell.ff = 0;
1208
- } else {
1209
- cell.ff = fa;
1210
- break;
1211
- }
1212
- }
1213
- var fs = Math.round(styles["font-size"] ? parseInt(styles["font-size"].replace("pt", ""), 10) : parseInt(td.style.fontSize || "13", 10) * 72 / 96);
1214
- cell.fs = fs;
1215
- cell.fc = td.style.color || styles.color;
1216
- var ht = td.style.textAlign || styles["text-align"] || "left";
1217
- if (ht === "center") {
1218
- cell.ht = 0;
1219
- } else if (ht === "right") {
1220
- cell.ht = 2;
1221
- } else {
1222
- cell.ht = 1;
1223
- }
1224
- var regex = /vertical-align:\s*(.*?);/;
1225
- var vt = td.style.verticalAlign || styles["vertical-align"] || !_lodash.default.isNil(allStyleList_1.td) && allStyleList_1.td.match(regex).length > 0 && allStyleList_1.td.match(regex)[1] || "top";
1226
- if (vt === "middle") {
1227
- cell.vt = 0;
1228
- } else if (vt === "top" || vt === "text-top") {
1229
- cell.vt = 1;
1230
- } else {
1231
- cell.vt = 2;
1232
- }
1233
- if ("mso-rotate" in styles) {
1234
- var rt = styles["mso-rotate"];
1235
- cell.rt = parseFloat(rt);
1236
- }
1237
- while (c < colLen_1 && !_lodash.default.isNil(data_1[r_1][c])) {
1238
- c += 1;
1239
- }
1240
- if (c === colLen_1) {
1241
- return true;
1242
- }
1243
- if (_lodash.default.isNil(data_1[r_1][c])) {
1244
- data_1[r_1][c] = cell;
1245
- var rowspan = parseInt(td.getAttribute("rowspan"), 10);
1246
- var colspan = parseInt(td.getAttribute("colspan"), 10);
1247
- if (Number.isNaN(rowspan)) {
1248
- rowspan = 1;
1249
- }
1250
- if (Number.isNaN(colspan)) {
1251
- colspan = 1;
1267
+ var data_1 = new Array(trList.length);
1268
+ var colLen_1 = 0;
1269
+ _lodash.default.forEach(trList[0].querySelectorAll('td'), function (td) {
1270
+ var colspan = td.colSpan;
1271
+ if (Number.isNaN(colspan)) colspan = 1;
1272
+ colLen_1 += colspan;
1273
+ });
1274
+ dbg('table colLen computed', colLen_1);
1275
+ for (var i = 0; i < data_1.length; i += 1) data_1[i] = new Array(colLen_1);
1276
+ var r_1 = 0;
1277
+ var borderInfo_1 = {};
1278
+ var styleInner = ((_v = ele.querySelectorAll('style')[0]) === null || _v === void 0 ? void 0 : _v.innerHTML) || '';
1279
+ var patternReg = /{([^}]*)}/g;
1280
+ var patternStyle = styleInner.match(patternReg);
1281
+ var nameReg = /^[^\t].*/gm;
1282
+ var patternName = _lodash.default.initial(styleInner.match(nameReg));
1283
+ var allStyleList_1 = patternName.length === (patternStyle === null || patternStyle === void 0 ? void 0 : patternStyle.length) && _typeof(patternName) === _typeof(patternStyle) ? _lodash.default.fromPairs(_lodash.default.zip(patternName, patternStyle)) : {};
1284
+ dbg('allStyleList keys', Object.keys(allStyleList_1).length);
1285
+ var index_1 = (0, _utils.getSheetIndex)(ctx, ctx.currentSheetId);
1286
+ if (!_lodash.default.isNil(index_1)) {
1287
+ (_w = (_8 = ctx.luckysheetfile[index_1]).config) !== null && _w !== void 0 ? _w : _8.config = {};
1288
+ (_x = (_9 = ctx.luckysheetfile[index_1].config).rowlen) !== null && _x !== void 0 ? _x : _9.rowlen = {};
1289
+ var rowHeightList_1 = ctx.luckysheetfile[index_1].config.rowlen;
1290
+ _lodash.default.forEach(trList, function (tr) {
1291
+ var c = 0;
1292
+ var targetR = ctx.luckysheet_select_save[0].row[0] + r_1;
1293
+ var targetRowHeight = !_lodash.default.isNil(tr.getAttribute('height')) ? parseInt(tr.getAttribute('height'), 10) : null;
1294
+ var hasExisting = _lodash.default.has(ctx.luckysheetfile[index_1].config.rowlen, targetR);
1295
+ var existingVal = hasExisting ? ctx.luckysheetfile[index_1].config.rowlen[targetR] : ctx.luckysheetfile[index_1].defaultRowHeight;
1296
+ if (existingVal !== targetRowHeight) {
1297
+ rowHeightList_1[targetR] = targetRowHeight;
1298
+ dbg('set row height', {
1299
+ targetR: targetR,
1300
+ height: targetRowHeight
1301
+ });
1252
1302
  }
1253
- var r_ab = ctx.luckysheet_select_save[0].row[0] + r_1;
1254
- var c_ab = ctx.luckysheet_select_save[0].column[0] + c;
1255
- for (var rp = 0; rp < rowspan; rp += 1) {
1256
- for (var cp = 0; cp < colspan; cp += 1) {
1257
- if (rp === 0) {
1258
- var bt = td.style.borderTop;
1259
- if (!_lodash.default.isEmpty(bt) && bt.substring(0, 3).toLowerCase() !== "0px") {
1260
- var width = td.style.borderTopWidth;
1261
- var type = td.style.borderTopStyle;
1262
- var color = td.style.borderTopColor;
1263
- var borderconfig = (0, _cell.getQKBorder)(width, type, color);
1264
- if (!borderInfo_1["".concat(r_1 + rp, "_").concat(c + cp)]) {
1265
- borderInfo_1["".concat(r_1 + rp, "_").concat(c + cp)] = {};
1266
- }
1267
- borderInfo_1["".concat(r_1 + rp, "_").concat(c + cp)].t = {
1268
- style: borderconfig[0],
1269
- color: borderconfig[1]
1270
- };
1271
- }
1303
+ _lodash.default.forEach(tr.querySelectorAll('td'), function (td) {
1304
+ var _a, _b, _c, _d, _e;
1305
+ var _f, _g, _h, _j;
1306
+ var className = td.className;
1307
+ var cell = {};
1308
+ var txt = td.innerText || td.innerHTML;
1309
+ if (_lodash.default.trim(txt).length === 0) {
1310
+ cell.v = undefined;
1311
+ cell.m = '';
1312
+ } else {
1313
+ var mask = (0, _format.genarate)(txt);
1314
+ cell.m = mask[0], cell.ct = mask[1], cell.v = mask[2];
1315
+ if (/^0x?[a-fA-F0-9]+$/.test(txt)) {
1316
+ cell.ct = {
1317
+ fa: '@',
1318
+ t: 's'
1319
+ };
1320
+ cell.m = txt;
1321
+ cell.v = txt;
1272
1322
  }
1273
- if (rp === rowspan - 1) {
1274
- var bb = td.style.borderBottom;
1275
- if (!_lodash.default.isEmpty(bb) && bb.substring(0, 3).toLowerCase() !== "0px") {
1276
- var width = td.style.borderBottomWidth;
1277
- var type = td.style.borderBottomStyle;
1278
- var color = td.style.borderBottomColor;
1279
- var borderconfig = (0, _cell.getQKBorder)(width, type, color);
1280
- if (!borderInfo_1["".concat(r_1 + rp, "_").concat(c + cp)]) {
1281
- borderInfo_1["".concat(r_1 + rp, "_").concat(c + cp)] = {};
1282
- }
1283
- borderInfo_1["".concat(r_1 + rp, "_").concat(c + cp)].b = {
1284
- style: borderconfig[0],
1285
- color: borderconfig[1]
1286
- };
1287
- }
1323
+ }
1324
+ var styleString = typeof allStyleList_1[".".concat(className)] === 'string' ? allStyleList_1[".".concat(className)].substring(1, allStyleList_1[".".concat(className)].length - 1).split('\n\t') : [];
1325
+ var styles = {};
1326
+ _lodash.default.forEach(styleString, function (s) {
1327
+ var styleList = s.split(':');
1328
+ styles[styleList[0]] = styleList === null || styleList === void 0 ? void 0 : styleList[1].replace(';', '');
1329
+ });
1330
+ if (!_lodash.default.isNil(styles.border)) td.style.border = styles.border;
1331
+ var bg = td.style.backgroundColor || styles.background;
1332
+ if (bg === 'rgba(0, 0, 0, 0)' || _lodash.default.isEmpty(bg)) bg = undefined;
1333
+ cell.bg = bg;
1334
+ var fontWight = td.style.fontWeight;
1335
+ cell.bl = (fontWight.toString() === '400' || fontWight === 'normal' || _lodash.default.isEmpty(fontWight)) && !_lodash.default.includes(styles['font-style'], 'bold') && (!styles['font-weight'] || styles['font-weight'] === '400') ? 0 : 1;
1336
+ cell.it = (td.style.fontStyle === 'normal' || _lodash.default.isEmpty(td.style.fontStyle)) && !_lodash.default.includes(styles['font-style'], 'italic') ? 0 : 1;
1337
+ cell.un = !_lodash.default.includes(styles['text-decoration'], 'underline') ? undefined : 1;
1338
+ cell.cl = !_lodash.default.includes(td.innerHTML, '<s>') ? undefined : 1;
1339
+ var ff = td.style.fontFamily || styles['font-family'] || '';
1340
+ var ffs = ff.split(',');
1341
+ for (var i = 0; i < ffs.length; i += 1) {
1342
+ var fa = _lodash.default.trim(ffs[i].toLowerCase());
1343
+ fa = locale_fontjson_1[fa];
1344
+ if (_lodash.default.isNil(fa)) {
1345
+ cell.ff = 0;
1346
+ } else {
1347
+ cell.ff = fa;
1348
+ break;
1288
1349
  }
1289
- if (cp === 0) {
1290
- var bl = td.style.borderLeft;
1291
- if (!_lodash.default.isEmpty(bl) && bl.substring(0, 3).toLowerCase() !== "0px") {
1292
- var width = td.style.borderLeftWidth;
1293
- var type = td.style.borderLeftStyle;
1294
- var color = td.style.borderLeftColor;
1295
- var borderconfig = (0, _cell.getQKBorder)(width, type, color);
1296
- if (!borderInfo_1["".concat(r_1 + rp, "_").concat(c + cp)]) {
1297
- borderInfo_1["".concat(r_1 + rp, "_").concat(c + cp)] = {};
1350
+ }
1351
+ var fs = Math.round(styles['font-size'] ? parseInt(styles['font-size'].replace('pt', ''), 10) : parseInt(td.style.fontSize || '13', 10) * 72 / 96);
1352
+ cell.fs = fs;
1353
+ cell.fc = td.style.color || styles.color;
1354
+ var ht = td.style.textAlign || styles['text-align'] || 'left';
1355
+ cell.ht = ht === 'center' ? 0 : ht === 'right' ? 2 : 1;
1356
+ var regex = /vertical-align:\s*(.*?);/;
1357
+ var vt = td.style.verticalAlign || styles['vertical-align'] || !_lodash.default.isNil(allStyleList_1.td) && ((_a = allStyleList_1.td.match(regex)) === null || _a === void 0 ? void 0 : _a.length) > 0 && allStyleList_1.td.match(regex)[1] || 'top';
1358
+ cell.vt = vt === 'middle' ? 0 : vt === 'top' || vt === 'text-top' ? 1 : 2;
1359
+ if ('mso-rotate' in styles) {
1360
+ var rt = styles['mso-rotate'];
1361
+ cell.rt = parseFloat(rt);
1362
+ }
1363
+ while (c < colLen_1 && !_lodash.default.isNil(data_1[r_1][c])) c += 1;
1364
+ if (c === colLen_1) return true;
1365
+ if (_lodash.default.isNil(data_1[r_1][c])) {
1366
+ data_1[r_1][c] = cell;
1367
+ var rowspan = parseInt(td.getAttribute('rowspan'), 10);
1368
+ var colspan = parseInt(td.getAttribute('colspan'), 10);
1369
+ if (Number.isNaN(rowspan)) rowspan = 1;
1370
+ if (Number.isNaN(colspan)) colspan = 1;
1371
+ var r_ab = ctx.luckysheet_select_save[0].row[0] + r_1;
1372
+ var c_ab = ctx.luckysheet_select_save[0].column[0] + c;
1373
+ for (var rp = 0; rp < rowspan; rp += 1) {
1374
+ for (var cp = 0; cp < colspan; cp += 1) {
1375
+ if (rp === 0) {
1376
+ var bt = td.style.borderTop;
1377
+ if (!_lodash.default.isEmpty(bt) && bt.substring(0, 3).toLowerCase() !== '0px') {
1378
+ var width = td.style.borderTopWidth;
1379
+ var type = td.style.borderTopStyle;
1380
+ var color = td.style.borderTopColor;
1381
+ var borderconfig = (0, _cell.getQKBorder)(width, type, color);
1382
+ (_b = borderInfo_1[_f = "".concat(r_1 + rp, "_").concat(c + cp)]) !== null && _b !== void 0 ? _b : borderInfo_1[_f] = {};
1383
+ borderInfo_1["".concat(r_1 + rp, "_").concat(c + cp)].t = {
1384
+ style: borderconfig[0],
1385
+ color: borderconfig[1]
1386
+ };
1387
+ }
1298
1388
  }
1299
- borderInfo_1["".concat(r_1 + rp, "_").concat(c + cp)].l = {
1300
- style: borderconfig[0],
1301
- color: borderconfig[1]
1302
- };
1303
- }
1304
- }
1305
- if (cp === colspan - 1) {
1306
- var br = td.style.borderLeft;
1307
- if (!_lodash.default.isEmpty(br) && br.substring(0, 3).toLowerCase() !== "0px") {
1308
- var width = td.style.borderRightWidth;
1309
- var type = td.style.borderRightStyle;
1310
- var color = td.style.borderRightColor;
1311
- var borderconfig = (0, _cell.getQKBorder)(width, type, color);
1312
- if (!borderInfo_1["".concat(r_1 + rp, "_").concat(c + cp)]) {
1313
- borderInfo_1["".concat(r_1 + rp, "_").concat(c + cp)] = {};
1389
+ if (rp === rowspan - 1) {
1390
+ var bb = td.style.borderBottom;
1391
+ if (!_lodash.default.isEmpty(bb) && bb.substring(0, 3).toLowerCase() !== '0px') {
1392
+ var width = td.style.borderBottomWidth;
1393
+ var type = td.style.borderBottomStyle;
1394
+ var color = td.style.borderBottomColor;
1395
+ var borderconfig = (0, _cell.getQKBorder)(width, type, color);
1396
+ (_c = borderInfo_1[_g = "".concat(r_1 + rp, "_").concat(c + cp)]) !== null && _c !== void 0 ? _c : borderInfo_1[_g] = {};
1397
+ borderInfo_1["".concat(r_1 + rp, "_").concat(c + cp)].b = {
1398
+ style: borderconfig[0],
1399
+ color: borderconfig[1]
1400
+ };
1401
+ }
1402
+ }
1403
+ if (cp === 0) {
1404
+ var bl = td.style.borderLeft;
1405
+ if (!_lodash.default.isEmpty(bl) && bl.substring(0, 3).toLowerCase() !== '0px') {
1406
+ var width = td.style.borderLeftWidth;
1407
+ var type = td.style.borderLeftStyle;
1408
+ var color = td.style.borderLeftColor;
1409
+ var borderconfig = (0, _cell.getQKBorder)(width, type, color);
1410
+ (_d = borderInfo_1[_h = "".concat(r_1 + rp, "_").concat(c + cp)]) !== null && _d !== void 0 ? _d : borderInfo_1[_h] = {};
1411
+ borderInfo_1["".concat(r_1 + rp, "_").concat(c + cp)].l = {
1412
+ style: borderconfig[0],
1413
+ color: borderconfig[1]
1414
+ };
1415
+ }
1416
+ }
1417
+ if (cp === colspan - 1) {
1418
+ var br = td.style.borderLeft;
1419
+ if (!_lodash.default.isEmpty(br) && br.substring(0, 3).toLowerCase() !== '0px') {
1420
+ var width = td.style.borderRightWidth;
1421
+ var type = td.style.borderRightStyle;
1422
+ var color = td.style.borderRightColor;
1423
+ var borderconfig = (0, _cell.getQKBorder)(width, type, color);
1424
+ (_e = borderInfo_1[_j = "".concat(r_1 + rp, "_").concat(c + cp)]) !== null && _e !== void 0 ? _e : borderInfo_1[_j] = {};
1425
+ borderInfo_1["".concat(r_1 + rp, "_").concat(c + cp)].r = {
1426
+ style: borderconfig[0],
1427
+ color: borderconfig[1]
1428
+ };
1429
+ }
1314
1430
  }
1315
- borderInfo_1["".concat(r_1 + rp, "_").concat(c + cp)].r = {
1316
- style: borderconfig[0],
1317
- color: borderconfig[1]
1431
+ if (rp === 0 && cp === 0) continue;
1432
+ data_1[r_1 + rp][c + cp] = {
1433
+ mc: {
1434
+ r: r_ab,
1435
+ c: c_ab
1436
+ }
1318
1437
  };
1319
1438
  }
1320
1439
  }
1321
- if (rp === 0 && cp === 0) {
1322
- continue;
1323
- }
1324
- data_1[r_1 + rp][c + cp] = {
1325
- mc: {
1440
+ if (rowspan > 1 || colspan > 1) {
1441
+ var first = {
1442
+ rs: rowspan,
1443
+ cs: colspan,
1326
1444
  r: r_ab,
1327
1445
  c: c_ab
1328
- }
1329
- };
1446
+ };
1447
+ data_1[r_1][c].mc = first;
1448
+ dbg('merged cell', {
1449
+ r: r_1,
1450
+ c: c,
1451
+ first: first
1452
+ });
1453
+ }
1330
1454
  }
1331
- }
1332
- if (rowspan > 1 || colspan > 1) {
1333
- var first = {
1334
- rs: rowspan,
1335
- cs: colspan,
1336
- r: r_ab,
1337
- c: c_ab
1338
- };
1339
- data_1[r_1][c].mc = first;
1340
- }
1341
- }
1342
- c += 1;
1343
- if (c === colLen_1) {
1344
- return true;
1345
- }
1346
- return true;
1455
+ c += 1;
1456
+ if (c === colLen_1) return true;
1457
+ return true;
1458
+ });
1459
+ r_1 += 1;
1460
+ });
1461
+ (0, _api.setRowHeight)(ctx, rowHeightList_1);
1462
+ }
1463
+ ctx.luckysheet_selection_range = [];
1464
+ dbg('→ pasteHandler(ctx, data, borderInfo)', {
1465
+ rows: data_1.length,
1466
+ cols: (_z = (_y = data_1[0]) === null || _y === void 0 ? void 0 : _y.length) !== null && _z !== void 0 ? _z : 0,
1467
+ borders: Object.keys(borderInfo_1).length
1347
1468
  });
1348
- r_1 += 1;
1349
- });
1350
- (0, _api.setRowHeight)(ctx, rowHeightList_1);
1351
- }
1352
- ctx.luckysheet_selection_range = [];
1353
- pasteHandler(ctx, data_1, borderInfo_1);
1354
- ele.remove();
1355
- } else if (clipboardData.files.length === 1 && clipboardData.files[0].type.indexOf("image") > -1) {} else {
1356
- txtdata = clipboardData.getData("text/plain");
1357
- var isExcelFormula = txtdata.startsWith("=");
1358
- if (isExcelFormula) {
1359
- handleFormulaStringPaste(ctx, txtdata);
1469
+ pasteHandler(ctx, data_1, borderInfo_1);
1470
+ ele.remove();
1471
+ } finally {
1472
+ dbg('table paste time(ms)', Math.round(performance.now() - tTbl0));
1473
+ endTable();
1474
+ }
1475
+ } else if (clipboardData.files.length === 1 && clipboardData.files[0].type.indexOf('image') > -1) {
1476
+ dbg('Image file detected in clipboard currently no-op');
1360
1477
  } else {
1361
- pasteHandler(ctx, txtdata);
1362
- var _txtdata = clipboardData.getData("text/html") || clipboardData.getData("text/plain");
1363
- var embedUrl = (0, _modules.sanitizeDuneUrl)(_txtdata);
1364
- if (embedUrl) {
1365
- var last = (_r = ctx.luckysheet_select_save) === null || _r === void 0 ? void 0 : _r[ctx.luckysheet_select_save.length - 1];
1366
- if (last) {
1367
- var rowIndex = (_u = (_s = last.row_focus) !== null && _s !== void 0 ? _s : (_t = last.row) === null || _t === void 0 ? void 0 : _t[0]) !== null && _u !== void 0 ? _u : 0;
1368
- var colIndex = (_x = (_v = last.column_focus) !== null && _v !== void 0 ? _v : (_w = last.column) === null || _w === void 0 ? void 0 : _w[0]) !== null && _x !== void 0 ? _x : 0;
1369
- var left = colIndex === 0 ? 0 : ctx.visibledatacolumn[colIndex - 1];
1370
- var top_1 = rowIndex === 0 ? 0 : ctx.visibledatarow[rowIndex + 5];
1371
- ctx.showDunePreview = {
1372
- url: txtdata,
1373
- position: {
1374
- left: left,
1375
- top: top_1
1478
+ var endPlain = dbgGroup('Plain text / Formula paste');
1479
+ try {
1480
+ txtdata = clipboardData.getData('text/plain');
1481
+ var isExcelFormula = txtdata.startsWith('=');
1482
+ dbg('isExcelFormula?', isExcelFormula, 'len', txtdata.length);
1483
+ if (isExcelFormula) {
1484
+ dbg('→ handleFormulaStringPaste');
1485
+ handleFormulaStringPaste(ctx, txtdata);
1486
+ } else {
1487
+ dbg('→ pasteHandler(ctx, txtdata)');
1488
+ pasteHandler(ctx, txtdata);
1489
+ var _txtdata = clipboardData.getData('text/html') || clipboardData.getData('text/plain');
1490
+ var embedUrl = (0, _modules.sanitizeDuneUrl)(_txtdata);
1491
+ dbg('sanitizeDuneUrl found?', !!embedUrl);
1492
+ if (embedUrl) {
1493
+ var last = (_0 = ctx.luckysheet_select_save) === null || _0 === void 0 ? void 0 : _0[ctx.luckysheet_select_save.length - 1];
1494
+ if (last) {
1495
+ var rowIndex = (_3 = (_1 = last.row_focus) !== null && _1 !== void 0 ? _1 : (_2 = last.row) === null || _2 === void 0 ? void 0 : _2[0]) !== null && _3 !== void 0 ? _3 : 0;
1496
+ var colIndex = (_6 = (_4 = last.column_focus) !== null && _4 !== void 0 ? _4 : (_5 = last.column) === null || _5 === void 0 ? void 0 : _5[0]) !== null && _6 !== void 0 ? _6 : 0;
1497
+ var left = colIndex === 0 ? 0 : ctx.visibledatacolumn[colIndex - 1];
1498
+ var top_1 = rowIndex === 0 ? 0 : ctx.visibledatarow[rowIndex + 5];
1499
+ ctx.showDunePreview = {
1500
+ url: txtdata,
1501
+ position: {
1502
+ left: left,
1503
+ top: top_1
1504
+ }
1505
+ };
1506
+ dbg('Show Dune preview at', {
1507
+ rowIndex: rowIndex,
1508
+ colIndex: colIndex,
1509
+ left: left,
1510
+ top: top_1
1511
+ });
1512
+ } else {
1513
+ dbg('No selection to anchor Dune preview');
1376
1514
  }
1377
- };
1515
+ }
1378
1516
  }
1517
+ } finally {
1518
+ endPlain();
1379
1519
  }
1380
1520
  }
1521
+ } finally {
1522
+ endElse();
1381
1523
  }
1382
1524
  }
1525
+ endGrid();
1383
1526
  } else if (ctx.luckysheetCellUpdate.length > 0) {
1527
+ var endInline = dbgGroup('Inline editor paste branch');
1384
1528
  e.preventDefault();
1385
1529
  var clipboardData = e.clipboardData;
1386
1530
  if (!clipboardData) {
1387
1531
  clipboardData = window.clipboardData;
1532
+ dbg('Using IE clipboardData fallback (inline)?', !!clipboardData);
1388
1533
  }
1389
- var text = clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.getData("text/plain");
1534
+ var text = (_7 = clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.getData('text/plain')) !== null && _7 !== void 0 ? _7 : '';
1535
+ dbg('inline paste text length', text.length);
1390
1536
  if (text) {
1391
- document.execCommand("insertText", false, text);
1537
+ document.execCommand('insertText', false, text);
1538
+ dbg('→ execCommand(insertText)');
1392
1539
  parseAsLinkIfUrl(text, ctx);
1393
1540
  }
1541
+ endInline();
1542
+ } else {
1543
+ dbg('No grid paste, no inline editor → noop');
1394
1544
  }
1545
+ dbg('handlePaste total time(ms)', Math.round(performance.now() - t0));
1546
+ endAll();
1395
1547
  }
1396
1548
  function handlePasteByClick(ctx, clipboardData, triggerType) {
1397
1549
  var _a, _b, _c;