@fileverse-dev/fortune-core 1.1.53-patch-1 → 1.1.54-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.
@@ -1,337 +0,0 @@
1
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
- import _ from "lodash";
3
- import { setRowHeight } from "./api";
4
- import { locale } from "./locale";
5
- import { getCellTextInfo, getQKBorder, saveHyperlink } from "./modules";
6
- import { genarate } from "./modules/format";
7
- import { getSheetIndex } from "./utils";
8
- var createAutoFitState = function createAutoFitState() {
9
- return {
10
- colMax: {},
11
- rowMax: {}
12
- };
13
- };
14
- var addColumnSample = function addColumnSample(state, absCol, widthPx) {
15
- state.colMax[absCol] = Math.max(state.colMax[absCol] || 0, widthPx);
16
- };
17
- var addRowSample = function addRowSample(state, absRow, heightPx) {
18
- state.rowMax[absRow] = Math.max(state.rowMax[absRow] || 0, heightPx);
19
- };
20
- var getColumnPixelWidth = function getColumnPixelWidth(ctx, sheetId, absCol) {
21
- var _a;
22
- var idx = getSheetIndex(ctx, sheetId);
23
- var cfg = ctx.luckysheetfile[idx].config || {};
24
- var w = (_a = cfg.columnlen) === null || _a === void 0 ? void 0 : _a[absCol];
25
- if (!w && Array.isArray(ctx.visibledatacolumn)) {
26
- var prev = absCol === 0 ? 0 : ctx.visibledatacolumn[absCol - 1] || 0;
27
- var curr = ctx.visibledatacolumn[absCol] || 0;
28
- w = curr - prev;
29
- }
30
- return w || 73;
31
- };
32
- var getMeasure2D = function getMeasure2D(ctx) {
33
- var cached = ctx.__offscreenMeasureCtx;
34
- if (cached) return cached;
35
- var canvas = document.createElement("canvas");
36
- var mctx = canvas.getContext("2d");
37
- ctx.__offscreenMeasureCtx = mctx;
38
- return mctx;
39
- };
40
- var parseStylesheetPairs = function parseStylesheetPairs(styleInner) {
41
- var patternReg = /{([^}]*)}/g;
42
- var patternStyle = styleInner.match(patternReg);
43
- var nameReg = /^[^\t].*/gm;
44
- var patternName = _.initial(styleInner.match(nameReg));
45
- if (_typeof(patternStyle) !== _typeof(patternName) || patternName.length !== (patternStyle === null || patternStyle === void 0 ? void 0 : patternStyle.length)) return {};
46
- return _.fromPairs(_.zip(patternName, patternStyle));
47
- };
48
- var parseInlineStyleBlock = function parseInlineStyleBlock(block) {
49
- if (!block) return {};
50
- var trimmed = block.substring(1, block.length - 1);
51
- var entries = trimmed.split("\n\t").map(function (s) {
52
- return s.trim();
53
- }).filter(Boolean);
54
- var out = {};
55
- entries.forEach(function (entry) {
56
- var _a = entry.split(":"),
57
- k = _a[0],
58
- v = _a[1];
59
- if (k && v) out[k] = v.replace(";", "").trim();
60
- });
61
- return out;
62
- };
63
- var mapFontFamilyToIndex = function mapFontFamilyToIndex(ff, ctx) {
64
- var families = ff.split(",");
65
- var locale_fontjson = locale(ctx).fontjson;
66
- var found = families.map(function (raw) {
67
- return raw.trim().toLowerCase();
68
- }).find(function (key) {
69
- var mapped = locale_fontjson[key];
70
- return mapped != null;
71
- });
72
- if (found != null) return locale_fontjson[found];
73
- return 0;
74
- };
75
- function applyBordersAndMerges(td, startRow, startCol, absRow, absCol, rowSpanCount, colSpanCount, borderInfo, data) {
76
- var topBorder = td.style.borderTop && !td.style.borderTop.startsWith("0px") ? getQKBorder(td.style.borderTopWidth, td.style.borderTopStyle, td.style.borderTopColor) : null;
77
- var bottomBorder = td.style.borderBottom && !td.style.borderBottom.startsWith("0px") ? getQKBorder(td.style.borderBottomWidth, td.style.borderBottomStyle, td.style.borderBottomColor) : null;
78
- var leftBorder = td.style.borderLeft && !td.style.borderLeft.startsWith("0px") ? getQKBorder(td.style.borderLeftWidth, td.style.borderLeftStyle, td.style.borderLeftColor) : null;
79
- var rightBorder = td.style.borderRight && !td.style.borderRight.startsWith("0px") ? getQKBorder(td.style.borderRightWidth, td.style.borderRightStyle, td.style.borderRightColor) : null;
80
- for (var rowOffset = 0; rowOffset < rowSpanCount; rowOffset++) {
81
- var relativeRow = startRow + rowOffset;
82
- for (var colOffset = 0; colOffset < colSpanCount; colOffset++) {
83
- var relativeCol = startCol + colOffset;
84
- if (!(rowOffset === 0 && colOffset === 0)) {
85
- data[relativeRow][relativeCol] = {
86
- mc: {
87
- r: absRow,
88
- c: absCol
89
- }
90
- };
91
- }
92
- var isTopEdge = rowOffset === 0;
93
- var isBottomEdge = rowOffset === rowSpanCount - 1;
94
- var isLeftEdge = colOffset === 0;
95
- var isRightEdge = colOffset === colSpanCount - 1;
96
- if (!(isTopEdge || isBottomEdge || isLeftEdge || isRightEdge)) continue;
97
- var borderKey = "".concat(relativeRow, "_").concat(relativeCol);
98
- borderInfo[borderKey] || (borderInfo[borderKey] = {});
99
- if (isTopEdge && topBorder) {
100
- borderInfo[borderKey].t = {
101
- style: topBorder[0],
102
- color: topBorder[1]
103
- };
104
- }
105
- if (isBottomEdge && bottomBorder) {
106
- borderInfo[borderKey].b = {
107
- style: bottomBorder[0],
108
- color: bottomBorder[1]
109
- };
110
- }
111
- if (isLeftEdge && leftBorder) {
112
- borderInfo[borderKey].l = {
113
- style: leftBorder[0],
114
- color: leftBorder[1]
115
- };
116
- }
117
- if (isRightEdge && rightBorder) {
118
- borderInfo[borderKey].r = {
119
- style: rightBorder[0],
120
- color: rightBorder[1]
121
- };
122
- }
123
- }
124
- }
125
- }
126
- var HEX_REGEX = /^0x?[a-fA-F0-9]+$/;
127
- var detectHyperlink = function detectHyperlink(td) {
128
- var _a, _b;
129
- var anchor = td.querySelector("a[href]");
130
- var urlRegex = /^(https?:\/\/[^\s]+)$/i;
131
- if (anchor) {
132
- var href = ((_a = anchor.getAttribute("href")) === null || _a === void 0 ? void 0 : _a.trim()) || "";
133
- var display = ((_b = anchor.textContent) === null || _b === void 0 ? void 0 : _b.trim()) || href;
134
- if (href && urlRegex.test(href)) return {
135
- href: href,
136
- display: display
137
- };
138
- } else {
139
- var raw = (td.textContent || "").trim();
140
- if (urlRegex.test(raw)) return {
141
- href: raw,
142
- display: raw
143
- };
144
- }
145
- return null;
146
- };
147
- var buildCellFromTd = function buildCellFromTd(td, classStyles, ctx) {
148
- var _a;
149
- var _b, _c;
150
- var cell = {};
151
- var rawText = (td.innerText || td.innerHTML || "").trim();
152
- if (!rawText) {
153
- cell.v = undefined;
154
- cell.m = "";
155
- } else {
156
- var mask = genarate(rawText);
157
- _a = mask || [], cell.m = _a[0], cell.ct = _a[1], cell.v = _a[2];
158
- if (HEX_REGEX.test(rawText)) {
159
- cell.ct = {
160
- fa: "@",
161
- t: "s"
162
- };
163
- cell.m = rawText;
164
- cell.v = rawText;
165
- }
166
- }
167
- var styleBlock = typeof classStyles[".".concat(td.className)] === "string" ? classStyles[".".concat(td.className)] : "";
168
- var styles = parseInlineStyleBlock(styleBlock);
169
- if (!_.isNil(styles.border)) td.style.border = styles.border;
170
- var bg = td.style.backgroundColor || styles.background;
171
- if (!bg || bg === "rgba(0, 0, 0, 0)") bg = undefined;
172
- cell.bg = bg;
173
- var fontWeight = td.style.fontWeight;
174
- cell.bl = (fontWeight.toString() === "400" || fontWeight === "normal" || _.isEmpty(fontWeight)) && !_.includes(styles["font-style"], "bold") && (!styles["font-weight"] || styles["font-weight"] === "400") ? 0 : 1;
175
- cell.it = (td.style.fontStyle === "normal" || _.isEmpty(td.style.fontStyle)) && !_.includes(styles["font-style"], "italic") ? 0 : 1;
176
- cell.un = !_.includes(styles["text-decoration"], "underline") ? undefined : 1;
177
- cell.cl = !_.includes(td.innerHTML, "<s>") ? undefined : 1;
178
- var ff = td.style.fontFamily || styles["font-family"] || "";
179
- cell.ff = mapFontFamilyToIndex(ff, ctx);
180
- var fontSizePt = Math.round(styles["font-size"] ? parseInt(styles["font-size"].replace("pt", ""), 10) : parseInt(td.style.fontSize || "13", 10) * 72 / 96);
181
- cell.fs = fontSizePt;
182
- cell.fc = td.style.color || styles.color;
183
- var ht = td.style.textAlign || styles["text-align"] || "left";
184
- if (ht === "center") cell.ht = 0;else if (ht === "right") cell.ht = 2;else cell.ht = 1;
185
- var regex = /vertical-align:\s*(.*?);/;
186
- var vtStyle = typeof classStyles.td === "string" && ((_c = (_b = classStyles.td.match(regex)) === null || _b === void 0 ? void 0 : _b[1]) !== null && _c !== void 0 ? _c : "") || "top";
187
- var vt = td.style.verticalAlign || styles["vertical-align"] || vtStyle;
188
- if (vt === "middle") cell.vt = 0;else if (vt === "top" || vt === "text-top") cell.vt = 1;else cell.vt = 2;
189
- if ("mso-rotate" in styles) cell.rt = parseFloat(styles["mso-rotate"]);
190
- var rowspan = parseInt(td.getAttribute("rowspan") || "1", 10);
191
- var colspan = parseInt(td.getAttribute("colspan") || "1", 10);
192
- if (Number.isNaN(rowspan)) rowspan = 1;
193
- if (Number.isNaN(colspan)) colspan = 1;
194
- return {
195
- cell: cell,
196
- rowspan: rowspan,
197
- colspan: colspan,
198
- hyperlink: detectHyperlink(td)
199
- };
200
- };
201
- var applyAutoFitToConfig = function applyAutoFitToConfig(ctx, sheetIdx, state, maxColWidth) {
202
- var _a, _b;
203
- if (maxColWidth === void 0) {
204
- maxColWidth = 1200;
205
- }
206
- var file = ctx.luckysheetfile[sheetIdx];
207
- file.config || (file.config = {});
208
- (_a = file.config).rowlen || (_a.rowlen = {});
209
- (_b = file.config).columnlen || (_b.columnlen = {});
210
- var rowlen = file.config.rowlen;
211
- Object.entries(state.rowMax).forEach(function (_a) {
212
- var rowStr = _a[0],
213
- needed = _a[1];
214
- var r = +rowStr;
215
- var cur = rowlen[r] || file.defaultRowHeight || 19;
216
- if (needed > cur) rowlen[r] = needed;
217
- });
218
- var columnlen = file.config.columnlen;
219
- Object.entries(state.colMax).forEach(function (_a) {
220
- var colStr = _a[0],
221
- needed = _a[1];
222
- var c = +colStr;
223
- var cur = columnlen[c] || 0;
224
- if (needed > cur) columnlen[c] = Math.min(needed, maxColWidth);
225
- });
226
- setRowHeight(ctx, rowlen);
227
- if (typeof window.jfrefreshgrid === "function") {
228
- window.jfrefreshgrid(ctx, undefined, undefined, undefined, undefined, "resize");
229
- }
230
- };
231
- export function pasteHtmlTableAndAutoFit(ctx, html, pasteHandler) {
232
- var _a;
233
- var _b;
234
- if (html.indexOf("table") <= -1) return;
235
- var ele = document.createElement("div");
236
- ele.innerHTML = html;
237
- var trList = ele.querySelectorAll("table tr");
238
- if (trList.length === 0) {
239
- ele.remove();
240
- return;
241
- }
242
- var colLen = 0;
243
- trList[0].querySelectorAll("td, th").forEach(function (td) {
244
- var cell = td;
245
- var colSpan = Number.isNaN(cell.colSpan) ? 1 : cell.colSpan;
246
- colLen += colSpan;
247
- });
248
- var rows = trList.length;
249
- var data = Array.from({
250
- length: rows
251
- }, function () {
252
- return new Array(colLen);
253
- });
254
- var borderInfo = {};
255
- var styleInner = ((_a = ele.querySelectorAll("style")[0]) === null || _a === void 0 ? void 0 : _a.innerHTML) || "";
256
- var allClassStyles = parseStylesheetPairs(styleInner);
257
- var sheetIdx = getSheetIndex(ctx, ctx.currentSheetId);
258
- if (_.isNil(sheetIdx)) {
259
- ctx.luckysheet_selection_range = [];
260
- pasteHandler(ctx, data, borderInfo);
261
- ele.remove();
262
- return;
263
- }
264
- var file = ctx.luckysheetfile[sheetIdx];
265
- file.config || (file.config = {});
266
- (_b = file.config).rowlen || (_b.rowlen = {});
267
- var rowHeightList = file.config.rowlen;
268
- var state = createAutoFitState();
269
- var measureCtx = getMeasure2D(ctx);
270
- var H_PAD = 8;
271
- var V_PAD = 4;
272
- var r = 0;
273
- trList.forEach(function (tr) {
274
- var _a, _b, _c;
275
- var c = 0;
276
- var targetR = ctx.luckysheet_select_save[0].row[0] + r;
277
- var explicitHeight = tr.getAttribute("height");
278
- if (!_.isNil(explicitHeight)) {
279
- var parsed = parseInt(explicitHeight, 10);
280
- if (_.has((_a = file.config) === null || _a === void 0 ? void 0 : _a.rowlen, targetR) && ((_b = file.config) === null || _b === void 0 ? void 0 : _b.rowlen[targetR]) !== parsed || !_.has((_c = file.config) === null || _c === void 0 ? void 0 : _c.rowlen, targetR) && file.defaultRowHeight !== parsed) {
281
- rowHeightList[targetR] = parsed;
282
- }
283
- }
284
- tr.querySelectorAll("td, th").forEach(function (node) {
285
- var _a, _b, _c, _d;
286
- var td = node;
287
- while (c < colLen && data[r][c] != null) c++;
288
- if (c === colLen) return;
289
- var _e = buildCellFromTd(td, allClassStyles, ctx),
290
- cell = _e.cell,
291
- rowspan = _e.rowspan,
292
- colspan = _e.colspan,
293
- hyperlink = _e.hyperlink;
294
- var absRow = ctx.luckysheet_select_save[0].row[0] + r;
295
- var absCol = ctx.luckysheet_select_save[0].column[0] + c;
296
- data[r][c] = cell;
297
- var wrapFlag = cell === null || cell === void 0 ? void 0 : cell.tb;
298
- var isWrapped = wrapFlag === 2 || wrapFlag === "2";
299
- if (!isWrapped) {
300
- var infoW = getCellTextInfo(cell, measureCtx, ctx, {
301
- r: absRow,
302
- c: absCol
303
- }, ctx);
304
- var w = Math.ceil(((_a = infoW === null || infoW === void 0 ? void 0 : infoW.textWidthAll) !== null && _a !== void 0 ? _a : 0) + H_PAD);
305
- if (w > 0) addColumnSample(state, absCol, w);
306
- }
307
- var curW = getColumnPixelWidth(ctx, ctx.currentSheetId, absCol);
308
- var grownW = Math.max(curW, state.colMax[absCol] || 0);
309
- var infoH = getCellTextInfo(cell, measureCtx, ctx, {
310
- r: absRow,
311
- c: absCol,
312
- cellWidth: grownW,
313
- cellHeight: (_c = (_b = rowHeightList[absRow]) !== null && _b !== void 0 ? _b : file.defaultRowHeight) !== null && _c !== void 0 ? _c : 19
314
- }, ctx);
315
- var h = Math.ceil(((_d = infoH === null || infoH === void 0 ? void 0 : infoH.textHeightAll) !== null && _d !== void 0 ? _d : 0) + V_PAD);
316
- if (h > 0) addRowSample(state, absRow, h);
317
- if (hyperlink) {
318
- saveHyperlink(ctx, absRow, absCol, hyperlink.href, "webpage", hyperlink.display);
319
- }
320
- applyBordersAndMerges(td, r, c, absRow, absCol, rowspan, colspan, borderInfo, data);
321
- if (rowspan > 1 || colspan > 1) {
322
- data[r][c].mc = {
323
- rs: rowspan,
324
- cs: colspan,
325
- r: absRow,
326
- c: absCol
327
- };
328
- }
329
- c++;
330
- });
331
- r++;
332
- });
333
- applyAutoFitToConfig(ctx, sheetIdx, state, 1200);
334
- ctx.luckysheet_selection_range = [];
335
- pasteHandler(ctx, data, borderInfo);
336
- ele.remove();
337
- }
@@ -1,2 +0,0 @@
1
- import { Context } from "./context";
2
- export declare function pasteHtmlTableAndAutoFit(ctx: Context, html: string, pasteHandler: (context: Context, data: any, borderInfo?: any) => void): void;
@@ -1,344 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.pasteHtmlTableAndAutoFit = pasteHtmlTableAndAutoFit;
7
- var _lodash = _interopRequireDefault(require("lodash"));
8
- var _api = require("./api");
9
- var _locale = require("./locale");
10
- var _modules = require("./modules");
11
- var _format = require("./modules/format");
12
- var _utils = require("./utils");
13
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
15
- var createAutoFitState = function createAutoFitState() {
16
- return {
17
- colMax: {},
18
- rowMax: {}
19
- };
20
- };
21
- var addColumnSample = function addColumnSample(state, absCol, widthPx) {
22
- state.colMax[absCol] = Math.max(state.colMax[absCol] || 0, widthPx);
23
- };
24
- var addRowSample = function addRowSample(state, absRow, heightPx) {
25
- state.rowMax[absRow] = Math.max(state.rowMax[absRow] || 0, heightPx);
26
- };
27
- var getColumnPixelWidth = function getColumnPixelWidth(ctx, sheetId, absCol) {
28
- var _a;
29
- var idx = (0, _utils.getSheetIndex)(ctx, sheetId);
30
- var cfg = ctx.luckysheetfile[idx].config || {};
31
- var w = (_a = cfg.columnlen) === null || _a === void 0 ? void 0 : _a[absCol];
32
- if (!w && Array.isArray(ctx.visibledatacolumn)) {
33
- var prev = absCol === 0 ? 0 : ctx.visibledatacolumn[absCol - 1] || 0;
34
- var curr = ctx.visibledatacolumn[absCol] || 0;
35
- w = curr - prev;
36
- }
37
- return w || 73;
38
- };
39
- var getMeasure2D = function getMeasure2D(ctx) {
40
- var cached = ctx.__offscreenMeasureCtx;
41
- if (cached) return cached;
42
- var canvas = document.createElement("canvas");
43
- var mctx = canvas.getContext("2d");
44
- ctx.__offscreenMeasureCtx = mctx;
45
- return mctx;
46
- };
47
- var parseStylesheetPairs = function parseStylesheetPairs(styleInner) {
48
- var patternReg = /{([^}]*)}/g;
49
- var patternStyle = styleInner.match(patternReg);
50
- var nameReg = /^[^\t].*/gm;
51
- var patternName = _lodash.default.initial(styleInner.match(nameReg));
52
- if (_typeof(patternStyle) !== _typeof(patternName) || patternName.length !== (patternStyle === null || patternStyle === void 0 ? void 0 : patternStyle.length)) return {};
53
- return _lodash.default.fromPairs(_lodash.default.zip(patternName, patternStyle));
54
- };
55
- var parseInlineStyleBlock = function parseInlineStyleBlock(block) {
56
- if (!block) return {};
57
- var trimmed = block.substring(1, block.length - 1);
58
- var entries = trimmed.split("\n\t").map(function (s) {
59
- return s.trim();
60
- }).filter(Boolean);
61
- var out = {};
62
- entries.forEach(function (entry) {
63
- var _a = entry.split(":"),
64
- k = _a[0],
65
- v = _a[1];
66
- if (k && v) out[k] = v.replace(";", "").trim();
67
- });
68
- return out;
69
- };
70
- var mapFontFamilyToIndex = function mapFontFamilyToIndex(ff, ctx) {
71
- var families = ff.split(",");
72
- var locale_fontjson = (0, _locale.locale)(ctx).fontjson;
73
- var found = families.map(function (raw) {
74
- return raw.trim().toLowerCase();
75
- }).find(function (key) {
76
- var mapped = locale_fontjson[key];
77
- return mapped != null;
78
- });
79
- if (found != null) return locale_fontjson[found];
80
- return 0;
81
- };
82
- function applyBordersAndMerges(td, startRow, startCol, absRow, absCol, rowSpanCount, colSpanCount, borderInfo, data) {
83
- var topBorder = td.style.borderTop && !td.style.borderTop.startsWith("0px") ? (0, _modules.getQKBorder)(td.style.borderTopWidth, td.style.borderTopStyle, td.style.borderTopColor) : null;
84
- var bottomBorder = td.style.borderBottom && !td.style.borderBottom.startsWith("0px") ? (0, _modules.getQKBorder)(td.style.borderBottomWidth, td.style.borderBottomStyle, td.style.borderBottomColor) : null;
85
- var leftBorder = td.style.borderLeft && !td.style.borderLeft.startsWith("0px") ? (0, _modules.getQKBorder)(td.style.borderLeftWidth, td.style.borderLeftStyle, td.style.borderLeftColor) : null;
86
- var rightBorder = td.style.borderRight && !td.style.borderRight.startsWith("0px") ? (0, _modules.getQKBorder)(td.style.borderRightWidth, td.style.borderRightStyle, td.style.borderRightColor) : null;
87
- for (var rowOffset = 0; rowOffset < rowSpanCount; rowOffset++) {
88
- var relativeRow = startRow + rowOffset;
89
- for (var colOffset = 0; colOffset < colSpanCount; colOffset++) {
90
- var relativeCol = startCol + colOffset;
91
- if (!(rowOffset === 0 && colOffset === 0)) {
92
- data[relativeRow][relativeCol] = {
93
- mc: {
94
- r: absRow,
95
- c: absCol
96
- }
97
- };
98
- }
99
- var isTopEdge = rowOffset === 0;
100
- var isBottomEdge = rowOffset === rowSpanCount - 1;
101
- var isLeftEdge = colOffset === 0;
102
- var isRightEdge = colOffset === colSpanCount - 1;
103
- if (!(isTopEdge || isBottomEdge || isLeftEdge || isRightEdge)) continue;
104
- var borderKey = "".concat(relativeRow, "_").concat(relativeCol);
105
- borderInfo[borderKey] || (borderInfo[borderKey] = {});
106
- if (isTopEdge && topBorder) {
107
- borderInfo[borderKey].t = {
108
- style: topBorder[0],
109
- color: topBorder[1]
110
- };
111
- }
112
- if (isBottomEdge && bottomBorder) {
113
- borderInfo[borderKey].b = {
114
- style: bottomBorder[0],
115
- color: bottomBorder[1]
116
- };
117
- }
118
- if (isLeftEdge && leftBorder) {
119
- borderInfo[borderKey].l = {
120
- style: leftBorder[0],
121
- color: leftBorder[1]
122
- };
123
- }
124
- if (isRightEdge && rightBorder) {
125
- borderInfo[borderKey].r = {
126
- style: rightBorder[0],
127
- color: rightBorder[1]
128
- };
129
- }
130
- }
131
- }
132
- }
133
- var HEX_REGEX = /^0x?[a-fA-F0-9]+$/;
134
- var detectHyperlink = function detectHyperlink(td) {
135
- var _a, _b;
136
- var anchor = td.querySelector("a[href]");
137
- var urlRegex = /^(https?:\/\/[^\s]+)$/i;
138
- if (anchor) {
139
- var href = ((_a = anchor.getAttribute("href")) === null || _a === void 0 ? void 0 : _a.trim()) || "";
140
- var display = ((_b = anchor.textContent) === null || _b === void 0 ? void 0 : _b.trim()) || href;
141
- if (href && urlRegex.test(href)) return {
142
- href: href,
143
- display: display
144
- };
145
- } else {
146
- var raw = (td.textContent || "").trim();
147
- if (urlRegex.test(raw)) return {
148
- href: raw,
149
- display: raw
150
- };
151
- }
152
- return null;
153
- };
154
- var buildCellFromTd = function buildCellFromTd(td, classStyles, ctx) {
155
- var _a;
156
- var _b, _c;
157
- var cell = {};
158
- var rawText = (td.innerText || td.innerHTML || "").trim();
159
- if (!rawText) {
160
- cell.v = undefined;
161
- cell.m = "";
162
- } else {
163
- var mask = (0, _format.genarate)(rawText);
164
- _a = mask || [], cell.m = _a[0], cell.ct = _a[1], cell.v = _a[2];
165
- if (HEX_REGEX.test(rawText)) {
166
- cell.ct = {
167
- fa: "@",
168
- t: "s"
169
- };
170
- cell.m = rawText;
171
- cell.v = rawText;
172
- }
173
- }
174
- var styleBlock = typeof classStyles[".".concat(td.className)] === "string" ? classStyles[".".concat(td.className)] : "";
175
- var styles = parseInlineStyleBlock(styleBlock);
176
- if (!_lodash.default.isNil(styles.border)) td.style.border = styles.border;
177
- var bg = td.style.backgroundColor || styles.background;
178
- if (!bg || bg === "rgba(0, 0, 0, 0)") bg = undefined;
179
- cell.bg = bg;
180
- var fontWeight = td.style.fontWeight;
181
- cell.bl = (fontWeight.toString() === "400" || fontWeight === "normal" || _lodash.default.isEmpty(fontWeight)) && !_lodash.default.includes(styles["font-style"], "bold") && (!styles["font-weight"] || styles["font-weight"] === "400") ? 0 : 1;
182
- cell.it = (td.style.fontStyle === "normal" || _lodash.default.isEmpty(td.style.fontStyle)) && !_lodash.default.includes(styles["font-style"], "italic") ? 0 : 1;
183
- cell.un = !_lodash.default.includes(styles["text-decoration"], "underline") ? undefined : 1;
184
- cell.cl = !_lodash.default.includes(td.innerHTML, "<s>") ? undefined : 1;
185
- var ff = td.style.fontFamily || styles["font-family"] || "";
186
- cell.ff = mapFontFamilyToIndex(ff, ctx);
187
- var fontSizePt = Math.round(styles["font-size"] ? parseInt(styles["font-size"].replace("pt", ""), 10) : parseInt(td.style.fontSize || "13", 10) * 72 / 96);
188
- cell.fs = fontSizePt;
189
- cell.fc = td.style.color || styles.color;
190
- var ht = td.style.textAlign || styles["text-align"] || "left";
191
- if (ht === "center") cell.ht = 0;else if (ht === "right") cell.ht = 2;else cell.ht = 1;
192
- var regex = /vertical-align:\s*(.*?);/;
193
- var vtStyle = typeof classStyles.td === "string" && ((_c = (_b = classStyles.td.match(regex)) === null || _b === void 0 ? void 0 : _b[1]) !== null && _c !== void 0 ? _c : "") || "top";
194
- var vt = td.style.verticalAlign || styles["vertical-align"] || vtStyle;
195
- if (vt === "middle") cell.vt = 0;else if (vt === "top" || vt === "text-top") cell.vt = 1;else cell.vt = 2;
196
- if ("mso-rotate" in styles) cell.rt = parseFloat(styles["mso-rotate"]);
197
- var rowspan = parseInt(td.getAttribute("rowspan") || "1", 10);
198
- var colspan = parseInt(td.getAttribute("colspan") || "1", 10);
199
- if (Number.isNaN(rowspan)) rowspan = 1;
200
- if (Number.isNaN(colspan)) colspan = 1;
201
- return {
202
- cell: cell,
203
- rowspan: rowspan,
204
- colspan: colspan,
205
- hyperlink: detectHyperlink(td)
206
- };
207
- };
208
- var applyAutoFitToConfig = function applyAutoFitToConfig(ctx, sheetIdx, state, maxColWidth) {
209
- var _a, _b;
210
- if (maxColWidth === void 0) {
211
- maxColWidth = 1200;
212
- }
213
- var file = ctx.luckysheetfile[sheetIdx];
214
- file.config || (file.config = {});
215
- (_a = file.config).rowlen || (_a.rowlen = {});
216
- (_b = file.config).columnlen || (_b.columnlen = {});
217
- var rowlen = file.config.rowlen;
218
- Object.entries(state.rowMax).forEach(function (_a) {
219
- var rowStr = _a[0],
220
- needed = _a[1];
221
- var r = +rowStr;
222
- var cur = rowlen[r] || file.defaultRowHeight || 19;
223
- if (needed > cur) rowlen[r] = needed;
224
- });
225
- var columnlen = file.config.columnlen;
226
- Object.entries(state.colMax).forEach(function (_a) {
227
- var colStr = _a[0],
228
- needed = _a[1];
229
- var c = +colStr;
230
- var cur = columnlen[c] || 0;
231
- if (needed > cur) columnlen[c] = Math.min(needed, maxColWidth);
232
- });
233
- (0, _api.setRowHeight)(ctx, rowlen);
234
- if (typeof window.jfrefreshgrid === "function") {
235
- window.jfrefreshgrid(ctx, undefined, undefined, undefined, undefined, "resize");
236
- }
237
- };
238
- function pasteHtmlTableAndAutoFit(ctx, html, pasteHandler) {
239
- var _a;
240
- var _b;
241
- if (html.indexOf("table") <= -1) return;
242
- var ele = document.createElement("div");
243
- ele.innerHTML = html;
244
- var trList = ele.querySelectorAll("table tr");
245
- if (trList.length === 0) {
246
- ele.remove();
247
- return;
248
- }
249
- var colLen = 0;
250
- trList[0].querySelectorAll("td, th").forEach(function (td) {
251
- var cell = td;
252
- var colSpan = Number.isNaN(cell.colSpan) ? 1 : cell.colSpan;
253
- colLen += colSpan;
254
- });
255
- var rows = trList.length;
256
- var data = Array.from({
257
- length: rows
258
- }, function () {
259
- return new Array(colLen);
260
- });
261
- var borderInfo = {};
262
- var styleInner = ((_a = ele.querySelectorAll("style")[0]) === null || _a === void 0 ? void 0 : _a.innerHTML) || "";
263
- var allClassStyles = parseStylesheetPairs(styleInner);
264
- var sheetIdx = (0, _utils.getSheetIndex)(ctx, ctx.currentSheetId);
265
- if (_lodash.default.isNil(sheetIdx)) {
266
- ctx.luckysheet_selection_range = [];
267
- pasteHandler(ctx, data, borderInfo);
268
- ele.remove();
269
- return;
270
- }
271
- var file = ctx.luckysheetfile[sheetIdx];
272
- file.config || (file.config = {});
273
- (_b = file.config).rowlen || (_b.rowlen = {});
274
- var rowHeightList = file.config.rowlen;
275
- var state = createAutoFitState();
276
- var measureCtx = getMeasure2D(ctx);
277
- var H_PAD = 8;
278
- var V_PAD = 4;
279
- var r = 0;
280
- trList.forEach(function (tr) {
281
- var _a, _b, _c;
282
- var c = 0;
283
- var targetR = ctx.luckysheet_select_save[0].row[0] + r;
284
- var explicitHeight = tr.getAttribute("height");
285
- if (!_lodash.default.isNil(explicitHeight)) {
286
- var parsed = parseInt(explicitHeight, 10);
287
- if (_lodash.default.has((_a = file.config) === null || _a === void 0 ? void 0 : _a.rowlen, targetR) && ((_b = file.config) === null || _b === void 0 ? void 0 : _b.rowlen[targetR]) !== parsed || !_lodash.default.has((_c = file.config) === null || _c === void 0 ? void 0 : _c.rowlen, targetR) && file.defaultRowHeight !== parsed) {
288
- rowHeightList[targetR] = parsed;
289
- }
290
- }
291
- tr.querySelectorAll("td, th").forEach(function (node) {
292
- var _a, _b, _c, _d;
293
- var td = node;
294
- while (c < colLen && data[r][c] != null) c++;
295
- if (c === colLen) return;
296
- var _e = buildCellFromTd(td, allClassStyles, ctx),
297
- cell = _e.cell,
298
- rowspan = _e.rowspan,
299
- colspan = _e.colspan,
300
- hyperlink = _e.hyperlink;
301
- var absRow = ctx.luckysheet_select_save[0].row[0] + r;
302
- var absCol = ctx.luckysheet_select_save[0].column[0] + c;
303
- data[r][c] = cell;
304
- var wrapFlag = cell === null || cell === void 0 ? void 0 : cell.tb;
305
- var isWrapped = wrapFlag === 2 || wrapFlag === "2";
306
- if (!isWrapped) {
307
- var infoW = (0, _modules.getCellTextInfo)(cell, measureCtx, ctx, {
308
- r: absRow,
309
- c: absCol
310
- }, ctx);
311
- var w = Math.ceil(((_a = infoW === null || infoW === void 0 ? void 0 : infoW.textWidthAll) !== null && _a !== void 0 ? _a : 0) + H_PAD);
312
- if (w > 0) addColumnSample(state, absCol, w);
313
- }
314
- var curW = getColumnPixelWidth(ctx, ctx.currentSheetId, absCol);
315
- var grownW = Math.max(curW, state.colMax[absCol] || 0);
316
- var infoH = (0, _modules.getCellTextInfo)(cell, measureCtx, ctx, {
317
- r: absRow,
318
- c: absCol,
319
- cellWidth: grownW,
320
- cellHeight: (_c = (_b = rowHeightList[absRow]) !== null && _b !== void 0 ? _b : file.defaultRowHeight) !== null && _c !== void 0 ? _c : 19
321
- }, ctx);
322
- var h = Math.ceil(((_d = infoH === null || infoH === void 0 ? void 0 : infoH.textHeightAll) !== null && _d !== void 0 ? _d : 0) + V_PAD);
323
- if (h > 0) addRowSample(state, absRow, h);
324
- if (hyperlink) {
325
- (0, _modules.saveHyperlink)(ctx, absRow, absCol, hyperlink.href, "webpage", hyperlink.display);
326
- }
327
- applyBordersAndMerges(td, r, c, absRow, absCol, rowspan, colspan, borderInfo, data);
328
- if (rowspan > 1 || colspan > 1) {
329
- data[r][c].mc = {
330
- rs: rowspan,
331
- cs: colspan,
332
- r: absRow,
333
- c: absCol
334
- };
335
- }
336
- c++;
337
- });
338
- r++;
339
- });
340
- applyAutoFitToConfig(ctx, sheetIdx, state, 1200);
341
- ctx.luckysheet_selection_range = [];
342
- pasteHandler(ctx, data, borderInfo);
343
- ele.remove();
344
- }