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

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