@fileverse-dev/fortune-core 1.1.10-live-query-v8 → 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.
- package/es/events/paste.js +462 -313
- package/es/modules/selection.js +0 -3
- package/lib/events/paste.js +462 -313
- package/lib/modules/selection.js +0 -3
- package/package.json +2 -2
package/lib/events/paste.js
CHANGED
|
@@ -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 = [];
|
|
@@ -181,9 +190,6 @@ function pasteHandler(ctx, data, borderInfo) {
|
|
|
181
190
|
if (data[h - minh] != null && data[h - minh][c - minc] != null) {
|
|
182
191
|
value = data[h - minh][c - minc];
|
|
183
192
|
}
|
|
184
|
-
console.log({
|
|
185
|
-
value: value
|
|
186
|
-
});
|
|
187
193
|
x[c] = value;
|
|
188
194
|
if (value != null && ((_e = x === null || x === void 0 ? void 0 : x[c]) === null || _e === void 0 ? void 0 : _e.mc)) {
|
|
189
195
|
if (x[c].mc.rs != null) {
|
|
@@ -315,9 +321,11 @@ function setCellHyperlink(ctx, id, r, c, link) {
|
|
|
315
321
|
}
|
|
316
322
|
function pasteHandlerOfCutPaste(ctx, copyRange) {
|
|
317
323
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
324
|
+
console.log("BRRAAA");
|
|
318
325
|
var allowEdit = (0, _utils.isAllowEdit)(ctx);
|
|
319
326
|
if (!allowEdit) return;
|
|
320
327
|
if (!copyRange) return;
|
|
328
|
+
console.log("pasteHandlerOfCutPaste");
|
|
321
329
|
var cfg = ctx.config || {};
|
|
322
330
|
if (cfg.merge == null) {
|
|
323
331
|
cfg.merge = {};
|
|
@@ -891,6 +899,7 @@ function pasteHandlerOfCopyPaste(ctx, copyRange) {
|
|
|
891
899
|
}
|
|
892
900
|
var funcV = (0, _formula.execfunction)(ctx, func, h, c, undefined, undefined, true);
|
|
893
901
|
var afterUpdateCell = ctx.hooks.afterUpdateCell;
|
|
902
|
+
console.log("REACHED HERE FINALLY", afterUpdateCell);
|
|
894
903
|
if (afterUpdateCell && arr.length === 1) {
|
|
895
904
|
afterUpdateCell(h, c, null, __assign(__assign({}, value), {
|
|
896
905
|
v: funcV[1],
|
|
@@ -986,6 +995,7 @@ function pasteHandlerOfCopyPaste(ctx, copyRange) {
|
|
|
986
995
|
}
|
|
987
996
|
}
|
|
988
997
|
function handleFormulaStringPaste(ctx, formulaStr) {
|
|
998
|
+
console.log("aaaaaa");
|
|
989
999
|
var r = ctx.luckysheet_select_save[0].row[0];
|
|
990
1000
|
var c = ctx.luckysheet_select_save[0].column[0];
|
|
991
1001
|
var funcV = (0, _formula.execfunction)(ctx, formulaStr, r, c, undefined, undefined, true);
|
|
@@ -1005,6 +1015,7 @@ function handleFormulaStringPaste(ctx, formulaStr) {
|
|
|
1005
1015
|
cellTemp.m = isDataBlockRespose ? "Loading..." : val.toString();
|
|
1006
1016
|
cellTemp.v = val;
|
|
1007
1017
|
cellTemp.f = formulaStr;
|
|
1018
|
+
console.log("HERERERE");
|
|
1008
1019
|
var afterUpdateCell = ctx.hooks.afterUpdateCell;
|
|
1009
1020
|
if (afterUpdateCell && isDataBlockRespose) {
|
|
1010
1021
|
afterUpdateCell(r, c, null, cellTemp);
|
|
@@ -1022,379 +1033,517 @@ function parseAsLinkIfUrl(txtdata, ctx) {
|
|
|
1022
1033
|
}
|
|
1023
1034
|
}
|
|
1024
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
|
+
}
|
|
1025
1052
|
function handlePaste(ctx, e) {
|
|
1026
|
-
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();
|
|
1027
1057
|
var allowEdit = (0, _utils.isAllowEdit)(ctx);
|
|
1028
|
-
|
|
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);
|
|
1029
1065
|
if (_selection.selectionCache.isPasteAction) {
|
|
1066
|
+
var endGrid = dbgGroup('Grid paste branch');
|
|
1030
1067
|
ctx.luckysheetCellUpdate = [];
|
|
1031
1068
|
_selection.selectionCache.isPasteAction = false;
|
|
1032
1069
|
var clipboardData = e.clipboardData;
|
|
1033
1070
|
if (!clipboardData) {
|
|
1034
1071
|
clipboardData = window.clipboardData;
|
|
1072
|
+
dbg('Using IE clipboardData fallback?', !!clipboardData);
|
|
1035
1073
|
}
|
|
1036
|
-
if (!clipboardData)
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1074
|
+
if (!clipboardData) {
|
|
1075
|
+
dbg('No clipboardData found → abort');
|
|
1076
|
+
endGrid();
|
|
1077
|
+
endAll();
|
|
1078
|
+
return;
|
|
1040
1079
|
}
|
|
1041
|
-
var
|
|
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
|
+
}
|
|
1091
|
+
}
|
|
1092
|
+
var txtdata = textHtml || textPlain;
|
|
1093
|
+
dbg('txtdata source', textHtml ? 'html' : 'plain');
|
|
1094
|
+
dbg('txtdata length', txtdata.length);
|
|
1042
1095
|
var isEqual = true;
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
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
|
+
}
|
|
1055
1117
|
}
|
|
1118
|
+
cpDataArr.push(cpRowArr);
|
|
1056
1119
|
}
|
|
1057
|
-
cpDataArr
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
if (
|
|
1075
|
-
|
|
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);
|
|
1076
1151
|
}
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
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;
|
|
1082
1163
|
}
|
|
1083
|
-
var
|
|
1084
|
-
|
|
1085
|
-
if ((
|
|
1086
|
-
|
|
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
|
+
}
|
|
1087
1180
|
} else {
|
|
1088
|
-
v =
|
|
1181
|
+
v = '';
|
|
1089
1182
|
}
|
|
1090
|
-
|
|
1091
|
-
v =
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
}
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
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
|
+
});
|
|
1106
1210
|
}
|
|
1107
1211
|
}
|
|
1108
1212
|
}
|
|
1213
|
+
dbg('isEqual?', isEqual);
|
|
1214
|
+
} finally {
|
|
1215
|
+
dbg('internal equality time(ms)', Math.round(performance.now() - tInt0));
|
|
1216
|
+
endInternal();
|
|
1109
1217
|
}
|
|
1110
1218
|
}
|
|
1111
1219
|
var locale_fontjson_1 = (0, _locale.locale)(ctx).fontjson;
|
|
1112
|
-
|
|
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();
|
|
1113
1227
|
return;
|
|
1114
1228
|
}
|
|
1115
|
-
if (
|
|
1229
|
+
if (hasInternalSignature && hasCopyRange && isEqual) {
|
|
1230
|
+
var endInternalPaste = dbgGroup('Internal copy paste');
|
|
1231
|
+
dbg('ctx.luckysheet_paste_iscut?', ctx.luckysheet_paste_iscut);
|
|
1116
1232
|
if (ctx.luckysheet_paste_iscut) {
|
|
1117
1233
|
ctx.luckysheet_paste_iscut = false;
|
|
1234
|
+
dbg('→ pasteHandlerOfCutPaste');
|
|
1118
1235
|
pasteHandlerOfCutPaste(ctx, ctx.luckysheet_copy_save);
|
|
1119
1236
|
ctx.luckysheet_selection_range = [];
|
|
1120
1237
|
} else {
|
|
1238
|
+
dbg(' pasteHandlerOfCopyPaste');
|
|
1121
1239
|
pasteHandlerOfCopyPaste(ctx, ctx.luckysheet_copy_save);
|
|
1122
1240
|
}
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
}
|
|
1132
|
-
var data_1 = new Array(trList.length);
|
|
1133
|
-
var colLen_1 = 0;
|
|
1134
|
-
_lodash.default.forEach(trList[0].querySelectorAll("td"), function (td) {
|
|
1135
|
-
var colspan = td.colSpan;
|
|
1136
|
-
if (Number.isNaN(colspan)) {
|
|
1137
|
-
colspan = 1;
|
|
1138
|
-
}
|
|
1139
|
-
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
|
|
1140
1249
|
});
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
if (_lodash.default.isNil(ctx.luckysheetfile[index_1].config.rowlen)) {
|
|
1158
|
-
ctx.luckysheetfile[index_1].config.rowlen = {};
|
|
1159
|
-
}
|
|
1160
|
-
var rowHeightList_1 = ctx.luckysheetfile[index_1].config.rowlen;
|
|
1161
|
-
_lodash.default.forEach(trList, function (tr) {
|
|
1162
|
-
var c = 0;
|
|
1163
|
-
var targetR = ctx.luckysheet_select_save[0].row[0] + r_1;
|
|
1164
|
-
var targetRowHeight = !_lodash.default.isNil(tr.getAttribute("height")) ? parseInt(tr.getAttribute("height"), 10) : null;
|
|
1165
|
-
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) {
|
|
1166
|
-
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;
|
|
1167
1266
|
}
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
var
|
|
1172
|
-
if (
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
cell.cl = !_lodash.default.includes(td.innerHTML, "<s>") ? undefined : 1;
|
|
1204
|
-
var ff = td.style.fontFamily || styles["font-family"] || "";
|
|
1205
|
-
var ffs = ff.split(",");
|
|
1206
|
-
for (var i = 0; i < ffs.length; i += 1) {
|
|
1207
|
-
var fa = _lodash.default.trim(ffs[i].toLowerCase());
|
|
1208
|
-
fa = locale_fontjson_1[fa];
|
|
1209
|
-
if (_lodash.default.isNil(fa)) {
|
|
1210
|
-
cell.ff = 0;
|
|
1211
|
-
} else {
|
|
1212
|
-
cell.ff = fa;
|
|
1213
|
-
break;
|
|
1214
|
-
}
|
|
1215
|
-
}
|
|
1216
|
-
var fs = Math.round(styles["font-size"] ? parseInt(styles["font-size"].replace("pt", ""), 10) : parseInt(td.style.fontSize || "13", 10) * 72 / 96);
|
|
1217
|
-
cell.fs = fs;
|
|
1218
|
-
cell.fc = td.style.color || styles.color;
|
|
1219
|
-
var ht = td.style.textAlign || styles["text-align"] || "left";
|
|
1220
|
-
if (ht === "center") {
|
|
1221
|
-
cell.ht = 0;
|
|
1222
|
-
} else if (ht === "right") {
|
|
1223
|
-
cell.ht = 2;
|
|
1224
|
-
} else {
|
|
1225
|
-
cell.ht = 1;
|
|
1226
|
-
}
|
|
1227
|
-
var regex = /vertical-align:\s*(.*?);/;
|
|
1228
|
-
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";
|
|
1229
|
-
if (vt === "middle") {
|
|
1230
|
-
cell.vt = 0;
|
|
1231
|
-
} else if (vt === "top" || vt === "text-top") {
|
|
1232
|
-
cell.vt = 1;
|
|
1233
|
-
} else {
|
|
1234
|
-
cell.vt = 2;
|
|
1235
|
-
}
|
|
1236
|
-
if ("mso-rotate" in styles) {
|
|
1237
|
-
var rt = styles["mso-rotate"];
|
|
1238
|
-
cell.rt = parseFloat(rt);
|
|
1239
|
-
}
|
|
1240
|
-
while (c < colLen_1 && !_lodash.default.isNil(data_1[r_1][c])) {
|
|
1241
|
-
c += 1;
|
|
1242
|
-
}
|
|
1243
|
-
if (c === colLen_1) {
|
|
1244
|
-
return true;
|
|
1245
|
-
}
|
|
1246
|
-
if (_lodash.default.isNil(data_1[r_1][c])) {
|
|
1247
|
-
data_1[r_1][c] = cell;
|
|
1248
|
-
var rowspan = parseInt(td.getAttribute("rowspan"), 10);
|
|
1249
|
-
var colspan = parseInt(td.getAttribute("colspan"), 10);
|
|
1250
|
-
if (Number.isNaN(rowspan)) {
|
|
1251
|
-
rowspan = 1;
|
|
1252
|
-
}
|
|
1253
|
-
if (Number.isNaN(colspan)) {
|
|
1254
|
-
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
|
+
});
|
|
1255
1302
|
}
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
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;
|
|
1275
1322
|
}
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
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;
|
|
1291
1349
|
}
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
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
|
+
}
|
|
1301
1388
|
}
|
|
1302
|
-
|
|
1303
|
-
style
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
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
|
+
}
|
|
1317
1430
|
}
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
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
|
+
}
|
|
1321
1437
|
};
|
|
1322
1438
|
}
|
|
1323
1439
|
}
|
|
1324
|
-
if (
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
mc: {
|
|
1440
|
+
if (rowspan > 1 || colspan > 1) {
|
|
1441
|
+
var first = {
|
|
1442
|
+
rs: rowspan,
|
|
1443
|
+
cs: colspan,
|
|
1329
1444
|
r: r_ab,
|
|
1330
1445
|
c: c_ab
|
|
1331
|
-
}
|
|
1332
|
-
|
|
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
|
+
}
|
|
1333
1454
|
}
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
return true;
|
|
1348
|
-
}
|
|
1349
|
-
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
|
|
1350
1468
|
});
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
txtdata = clipboardData.getData("text/plain");
|
|
1360
|
-
var isExcelFormula = txtdata.startsWith("=");
|
|
1361
|
-
if (isExcelFormula) {
|
|
1362
|
-
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');
|
|
1363
1477
|
} else {
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
if (
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
ctx
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
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');
|
|
1379
1514
|
}
|
|
1380
|
-
}
|
|
1515
|
+
}
|
|
1381
1516
|
}
|
|
1517
|
+
} finally {
|
|
1518
|
+
endPlain();
|
|
1382
1519
|
}
|
|
1383
1520
|
}
|
|
1521
|
+
} finally {
|
|
1522
|
+
endElse();
|
|
1384
1523
|
}
|
|
1385
1524
|
}
|
|
1525
|
+
endGrid();
|
|
1386
1526
|
} else if (ctx.luckysheetCellUpdate.length > 0) {
|
|
1527
|
+
var endInline = dbgGroup('Inline editor paste branch');
|
|
1387
1528
|
e.preventDefault();
|
|
1388
1529
|
var clipboardData = e.clipboardData;
|
|
1389
1530
|
if (!clipboardData) {
|
|
1390
1531
|
clipboardData = window.clipboardData;
|
|
1532
|
+
dbg('Using IE clipboardData fallback (inline)?', !!clipboardData);
|
|
1391
1533
|
}
|
|
1392
|
-
var text = clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.getData(
|
|
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);
|
|
1393
1536
|
if (text) {
|
|
1394
|
-
document.execCommand(
|
|
1537
|
+
document.execCommand('insertText', false, text);
|
|
1538
|
+
dbg('→ execCommand(insertText)');
|
|
1395
1539
|
parseAsLinkIfUrl(text, ctx);
|
|
1396
1540
|
}
|
|
1541
|
+
endInline();
|
|
1542
|
+
} else {
|
|
1543
|
+
dbg('No grid paste, no inline editor → noop');
|
|
1397
1544
|
}
|
|
1545
|
+
dbg('handlePaste total time(ms)', Math.round(performance.now() - t0));
|
|
1546
|
+
endAll();
|
|
1398
1547
|
}
|
|
1399
1548
|
function handlePasteByClick(ctx, clipboardData, triggerType) {
|
|
1400
1549
|
var _a, _b, _c;
|