@langeditor/plugin-spreadsheet 0.0.0-stage → 1.1.4

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.
@@ -0,0 +1,37 @@
1
+ import { m as e } from "./workbook-CY5eURLn.js";
2
+ import { r as t } from "./csv-DF3_VfSt.js";
3
+ import { n } from "./xlsx-DGiNLc4q.js";
4
+ //#region src/serializers/source.ts
5
+ var r = /* @__PURE__ */ e({ importDocumentSource: () => s });
6
+ function i(e) {
7
+ return !!(e && typeof e == "object" && "data" in e);
8
+ }
9
+ function a(e, t) {
10
+ return /\.(csv|tsv|txt)$/i.test(e) || /(?:csv|tab-separated|text\/plain)/i.test(t);
11
+ }
12
+ async function o(e) {
13
+ let t = i(e) ? e : { data: e }, n = t.data, r = t.name ?? (typeof File < "u" && n instanceof File ? n.name : ""), a = t.mimeType ?? (typeof Blob < "u" && n instanceof Blob ? n.type : "");
14
+ if (n instanceof URL || typeof n == "string" && /^https?:\/\//i.test(n)) {
15
+ let e = n instanceof URL ? n : new URL(n), t = await fetch(e);
16
+ if (!t.ok) throw Error(`Failed to load ${e}: ${t.status}`);
17
+ r ||= e.pathname.split("/").pop() ?? "", a ||= t.headers.get("content-type") ?? "", n = await t.arrayBuffer();
18
+ }
19
+ return {
20
+ data: n,
21
+ name: r,
22
+ mimeType: a
23
+ };
24
+ }
25
+ async function s(e) {
26
+ let { data: r, name: i, mimeType: s } = await o(e);
27
+ if (typeof r == "string") return t(r, i || "Workbook", /\.tsv$/i.test(i) ? " " : void 0);
28
+ if (typeof Blob < "u" && r instanceof Blob) return a(i, s) ? t(await r.text(), i || "Workbook", /\.tsv$/i.test(i) ? " " : void 0) : n(await r.arrayBuffer(), i || "Workbook");
29
+ let c = (r instanceof Uint8Array, r);
30
+ if (a(i, s)) {
31
+ let e = c instanceof Uint8Array ? c : new Uint8Array(c);
32
+ return t(new TextDecoder().decode(e), i || "Workbook", /\.tsv$/i.test(i) ? " " : void 0);
33
+ }
34
+ return n(c, i || "Workbook");
35
+ }
36
+ //#endregion
37
+ export { r as n, s as t };
@@ -0,0 +1,351 @@
1
+ //#region \0rolldown/runtime.js
2
+ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescriptor, r = Object.getOwnPropertyNames, i = Object.getPrototypeOf, a = Object.prototype.hasOwnProperty, o = (e, t) => () => (t || (e((t = { exports: {} }).exports, t), e = null), t.exports), s = (e, n) => {
3
+ let r = {};
4
+ for (var i in e) t(r, i, {
5
+ get: e[i],
6
+ enumerable: !0
7
+ });
8
+ return n || t(r, Symbol.toStringTag, { value: "Module" }), r;
9
+ }, c = (e, i, o, s) => {
10
+ if (i && typeof i == "object" || typeof i == "function") for (var c = r(i), l = 0, u = c.length, d; l < u; l++) d = c[l], !a.call(e, d) && d !== o && t(e, d, {
11
+ get: ((e) => i[e]).bind(null, d),
12
+ enumerable: !(s = n(i, d)) || s.enumerable
13
+ });
14
+ return e;
15
+ }, l = (n, r, o) => (o = n == null ? {} : e(i(n)), c(r || !n || !n.__esModule || !a.call(n, "default") ? t(o, "default", {
16
+ value: n,
17
+ enumerable: !0
18
+ }) : o, n)), u = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(e, { get: (e, t) => (typeof require < "u" ? require : e)[t] }) : e)(function(e) {
19
+ if (typeof require < "u") return require.apply(this, arguments);
20
+ throw Error("Calling `require` for \"" + e + "\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.");
21
+ }), d = {
22
+ fontFamily: "Aptos",
23
+ fontSize: 12,
24
+ bold: !1,
25
+ italic: !1,
26
+ underline: !1,
27
+ fontColor: "#111827",
28
+ fillColor: "#ffffff",
29
+ horizontal: "general",
30
+ vertical: "bottom",
31
+ wrapText: !1
32
+ };
33
+ function f(e) {
34
+ return !!(e && typeof e == "object" && !Array.isArray(e));
35
+ }
36
+ function p(e) {
37
+ return JSON.parse(JSON.stringify(e));
38
+ }
39
+ function m(e, t) {
40
+ let n = (typeof e == "string" ? e : f(e) && typeof e.rgb == "string" ? e.rgb : "").replace(/^#/, "").slice(-6);
41
+ return /^[0-9a-f]{6}$/i.test(n) ? `#${n.toLowerCase()}` : t;
42
+ }
43
+ function h(e) {
44
+ let t = e.replace(/^#/, "").slice(-6).toUpperCase();
45
+ return { rgb: `FF${/^[0-9A-F]{6}$/.test(t) ? t : "000000"}` };
46
+ }
47
+ function g(e, t) {
48
+ return e.startRow <= t.endRow && e.endRow >= t.startRow && e.startColumn <= t.endColumn && e.endColumn >= t.startColumn;
49
+ }
50
+ function _(e) {
51
+ return `${e}-${globalThis.crypto?.randomUUID?.() ?? Math.random().toString(36).slice(2)}`;
52
+ }
53
+ function v(e) {
54
+ let t = Math.max(1, Math.floor(e)), n = "";
55
+ for (; t > 0;) --t, n = String.fromCharCode(65 + t % 26) + n, t = Math.floor(t / 26);
56
+ return n;
57
+ }
58
+ function y(e, t) {
59
+ return `${v(t)}${Math.max(1, Math.floor(e))}`;
60
+ }
61
+ function b(e) {
62
+ let t = /^([A-Z]+)([1-9]\d*)$/i.exec(e.trim());
63
+ if (!t) return null;
64
+ let n = 0;
65
+ for (let e of t[1].toUpperCase()) n = n * 26 + e.charCodeAt(0) - 64;
66
+ return {
67
+ row: Number(t[2]),
68
+ column: n
69
+ };
70
+ }
71
+ function x(e, t, n, r) {
72
+ let i = y(Math.min(e, n), Math.min(t, r)), a = y(Math.max(e, n), Math.max(t, r));
73
+ return i === a ? i : `${i}:${a}`;
74
+ }
75
+ function S() {
76
+ return {
77
+ paper: "A4",
78
+ orientation: "landscape",
79
+ margins: {
80
+ top: 20,
81
+ right: 16,
82
+ bottom: 20,
83
+ left: 16
84
+ },
85
+ header: {
86
+ enabled: !1,
87
+ firstPage: !0,
88
+ alignment: "center"
89
+ },
90
+ footer: {
91
+ enabled: !1,
92
+ firstPage: !0,
93
+ alignment: "center",
94
+ showPageNumber: !0
95
+ }
96
+ };
97
+ }
98
+ function C(e = {}) {
99
+ let t = {
100
+ id: _("sheet"),
101
+ name: "Sheet1",
102
+ cells: {}
103
+ };
104
+ return {
105
+ kind: "langeditor-spreadsheet",
106
+ version: 1,
107
+ name: e.workbookName?.trim() || "Workbook",
108
+ sheets: [t],
109
+ selectedSheetId: t.id,
110
+ pageLayout: S(),
111
+ metadata: {
112
+ viewportRows: e.initialRows ?? 200,
113
+ viewportColumns: e.initialColumns ?? 26
114
+ }
115
+ };
116
+ }
117
+ function w(e) {
118
+ if (!e || typeof e != "object") return !1;
119
+ let t = e;
120
+ return t.kind === "langeditor-spreadsheet" && t.version === 1 && Array.isArray(t.sheets);
121
+ }
122
+ function T(e) {
123
+ return JSON.parse(JSON.stringify(e));
124
+ }
125
+ function E(e) {
126
+ return JSON.parse(JSON.stringify(e));
127
+ }
128
+ function D(e, t = {}) {
129
+ let n = C(t), r = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set(), a = e.sheets.map((e, t) => {
130
+ let n = typeof e.id == "string" && e.id && !r.has(e.id) ? e.id : _("sheet");
131
+ r.add(n);
132
+ let a = e.name?.trim() || `Sheet${t + 1}`, o = a, s = 2;
133
+ for (; i.has(a.toLocaleLowerCase());) a = `${o} ${s++}`;
134
+ return i.add(a.toLocaleLowerCase()), {
135
+ id: n,
136
+ name: a,
137
+ cells: Object.fromEntries(Object.entries(e.cells ?? {}).filter(([e, t]) => b(e) && t?.input !== void 0)),
138
+ merges: e.merges ? [...e.merges] : void 0,
139
+ columnWidths: e.columnWidths ? { ...e.columnWidths } : void 0,
140
+ rowHeights: e.rowHeights ? { ...e.rowHeights } : void 0
141
+ };
142
+ });
143
+ return a.length ? {
144
+ ...T(e),
145
+ kind: "langeditor-spreadsheet",
146
+ version: 1,
147
+ name: e.name?.trim() || n.name,
148
+ sheets: a,
149
+ selectedSheetId: a.some((t) => t.id === e.selectedSheetId) ? e.selectedSheetId : a[0].id,
150
+ pageLayout: {
151
+ ...S(),
152
+ ...e.pageLayout ?? {}
153
+ }
154
+ } : n;
155
+ }
156
+ function O(e, t, n, r = t, i = n) {
157
+ return {
158
+ kind: "spreadsheet-range",
159
+ sheetId: e.id,
160
+ sheetName: e.name,
161
+ startRow: Math.min(t, r),
162
+ startColumn: Math.min(n, i),
163
+ endRow: Math.max(t, r),
164
+ endColumn: Math.max(n, i),
165
+ address: x(t, n, r, i)
166
+ };
167
+ }
168
+ function k(e) {
169
+ let t = 1, n = 1;
170
+ for (let r of Object.keys(e.cells)) {
171
+ let e = b(r);
172
+ e && (t = Math.max(t, e.row), n = Math.max(n, e.column));
173
+ }
174
+ return {
175
+ maxRow: t,
176
+ maxColumn: n
177
+ };
178
+ }
179
+ var A = class e {
180
+ model;
181
+ snapshot;
182
+ constructor(e, t) {
183
+ this.model = e, this.snapshot = t;
184
+ }
185
+ static create(t, n) {
186
+ let r = new t(n.name, "en", "UTC", "en"), i = new e(r, D(n));
187
+ return i.rebuildEngine(), i;
188
+ }
189
+ get value() {
190
+ return this.snapshot;
191
+ }
192
+ get selectedSheetIndex() {
193
+ let e = this.snapshot.sheets.findIndex((e) => e.id === this.snapshot.selectedSheetId);
194
+ return e < 0 ? 0 : e;
195
+ }
196
+ get selectedSheet() {
197
+ return this.snapshot.sheets[this.selectedSheetIndex];
198
+ }
199
+ setSnapshot(e) {
200
+ this.snapshot = D(e), this.rebuildEngine();
201
+ }
202
+ setSelectedSheet(e) {
203
+ let t = this.snapshot.sheets.findIndex((t) => t.id === e);
204
+ if (t < 0) throw Error(`Unknown worksheet ${e}`);
205
+ this.snapshot.selectedSheetId = e, this.model.setSelectedSheet(t);
206
+ }
207
+ setSelection(e) {
208
+ this.setSelectedSheet(e.sheetId), this.model.setSelectedCell(e.startRow, e.startColumn), this.model.setSelectedRange(e.startRow, e.startColumn, e.endRow, e.endColumn);
209
+ }
210
+ setCell(e, t, n, r) {
211
+ let i = this.requireSheetIndex(e), a = this.snapshot.sheets[i], o = y(t, n);
212
+ this.model.setUserInput(i, t, n, r), r === "" ? delete a.cells[o] : a.cells[o] = {
213
+ ...a.cells[o] ?? {},
214
+ input: r
215
+ };
216
+ }
217
+ getCellInput(e, t, n) {
218
+ return this.snapshot.sheets[this.requireSheetIndex(e)].cells[y(t, n)]?.input ?? "";
219
+ }
220
+ getFormattedValue(e, t, n) {
221
+ return this.model.getFormattedCellValue(this.requireSheetIndex(e), t, n);
222
+ }
223
+ getCellStyle(e, t, n) {
224
+ let r = this.snapshot.sheets[this.requireSheetIndex(e)].cells[y(t, n)]?.style;
225
+ return f(r) ? r : void 0;
226
+ }
227
+ getSelectionStyle(e) {
228
+ let t = this.getCellStyle(e.sheetId, e.startRow, e.startColumn), n = f(t?.font) ? t.font : {}, r = f(t?.fill) ? t.fill : {}, i = f(t?.alignment) ? t.alignment : {}, a = typeof n.sz == "number" ? n.sz : d.fontSize, o = i.horizontal, s = i.vertical;
229
+ return {
230
+ fontFamily: typeof n.name == "string" && n.name ? n.name : d.fontFamily,
231
+ fontSize: Number.isFinite(a) ? a : d.fontSize,
232
+ bold: !!n.bold,
233
+ italic: !!n.italic,
234
+ underline: !!n.underline,
235
+ fontColor: m(n.color, d.fontColor),
236
+ fillColor: m(r.fgColor, d.fillColor),
237
+ horizontal: o === "left" || o === "center" || o === "right" ? o : d.horizontal,
238
+ vertical: s === "top" || s === "center" || s === "bottom" ? s : d.vertical,
239
+ wrapText: !!i.wrapText
240
+ };
241
+ }
242
+ setRangeStyle(e, t) {
243
+ let n = this.snapshot.sheets[this.requireSheetIndex(e.sheetId)];
244
+ for (let r = e.startRow; r <= e.endRow; r += 1) for (let i = e.startColumn; i <= e.endColumn; i += 1) {
245
+ let e = y(r, i), a = n.cells[e] ?? { input: "" }, o = f(a.style) ? p(a.style) : {};
246
+ if (t.font) {
247
+ let e = f(o.font) ? { ...o.font } : {};
248
+ t.font.family !== void 0 && (e.name = t.font.family), t.font.size !== void 0 && (e.sz = t.font.size), t.font.bold !== void 0 && (e.bold = t.font.bold), t.font.italic !== void 0 && (e.italic = t.font.italic), t.font.underline !== void 0 && (e.underline = t.font.underline), t.font.color !== void 0 && (e.color = h(t.font.color)), o.font = e;
249
+ }
250
+ if (t.fill?.color !== void 0) {
251
+ let e = f(o.fill) ? { ...o.fill } : {};
252
+ e.patternType = "solid", e.fgColor = h(t.fill.color), e.bgColor = h(t.fill.color), o.fill = e;
253
+ }
254
+ if (t.alignment) {
255
+ let e = f(o.alignment) ? { ...o.alignment } : {};
256
+ t.alignment.horizontal !== void 0 && (e.horizontal = t.alignment.horizontal), t.alignment.vertical !== void 0 && (e.vertical = t.alignment.vertical), t.alignment.wrapText !== void 0 && (e.wrapText = t.alignment.wrapText), o.alignment = e;
257
+ }
258
+ a.style = o, n.cells[e] = a;
259
+ }
260
+ }
261
+ clearRangeFormatting(e) {
262
+ let t = this.snapshot.sheets[this.requireSheetIndex(e.sheetId)];
263
+ for (let n = e.startRow; n <= e.endRow; n += 1) for (let r = e.startColumn; r <= e.endColumn; r += 1) {
264
+ let e = y(n, r), i = t.cells[e];
265
+ i && (delete i.style, i.input === "" && delete t.cells[e]);
266
+ }
267
+ }
268
+ mergeRange(e) {
269
+ if (e.startRow === e.endRow && e.startColumn === e.endColumn) return;
270
+ let t = this.snapshot.sheets[this.requireSheetIndex(e.sheetId)], n = {
271
+ startRow: e.startRow,
272
+ startColumn: e.startColumn,
273
+ endRow: e.endRow,
274
+ endColumn: e.endColumn
275
+ };
276
+ t.merges = [...(t.merges ?? []).filter((t) => !g(e, t)), n];
277
+ }
278
+ unmergeRange(e) {
279
+ let t = this.snapshot.sheets[this.requireSheetIndex(e.sheetId)];
280
+ t.merges = (t.merges ?? []).filter((t) => !g(e, t));
281
+ }
282
+ isRangeMerged(e) {
283
+ return !!this.snapshot.sheets[this.requireSheetIndex(e.sheetId)].merges?.some((t) => t.startRow === e.startRow && t.startColumn === e.startColumn && t.endRow === e.endRow && t.endColumn === e.endColumn);
284
+ }
285
+ clearRange(e) {
286
+ let t = this.requireSheetIndex(e.sheetId);
287
+ this.model.rangeClearContents(t, e.startRow, e.startColumn, e.endRow, e.endColumn);
288
+ let n = this.snapshot.sheets[t];
289
+ for (let t = e.startRow; t <= e.endRow; t += 1) for (let r = e.startColumn; r <= e.endColumn; r += 1) delete n.cells[y(t, r)];
290
+ }
291
+ insertRows(e, t, n) {
292
+ let r = this.requireSheetIndex(e);
293
+ this.model.insertRows(r, t, n), this.snapshot.sheets[r].cells = this.captureEngineCells(r, n, 0);
294
+ }
295
+ insertColumns(e, t, n) {
296
+ let r = this.requireSheetIndex(e);
297
+ this.model.insertColumns(r, t, n), this.snapshot.sheets[r].cells = this.captureEngineCells(r, 0, n);
298
+ }
299
+ addSheet(e) {
300
+ this.model.newSheet();
301
+ let t = this.snapshot.sheets.length, n = this.uniqueSheetName(e?.trim() || `Sheet${t + 1}`);
302
+ this.model.renameSheet(t, n);
303
+ let r = {
304
+ id: _("sheet"),
305
+ name: n,
306
+ cells: {}
307
+ };
308
+ return this.snapshot.sheets.push(r), this.setSelectedSheet(r.id), r;
309
+ }
310
+ renameSheet(e, t) {
311
+ let n = this.requireSheetIndex(e), r = this.snapshot.sheets[n], i = this.uniqueSheetName(t.trim(), e);
312
+ return this.model.renameSheet(n, i), r.name = i, r;
313
+ }
314
+ destroy() {
315
+ this.model.free();
316
+ }
317
+ requireSheetIndex(e) {
318
+ let t = this.snapshot.sheets.findIndex((t) => t.id === e);
319
+ if (t < 0) throw Error(`Unknown worksheet ${e}`);
320
+ return t;
321
+ }
322
+ uniqueSheetName(e, t) {
323
+ let n = new Set(this.snapshot.sheets.filter((e) => e.id !== t).map((e) => e.name.toLocaleLowerCase())), r = e.slice(0, 31), i = r, a = 2;
324
+ for (; n.has(i.toLocaleLowerCase());) {
325
+ let e = ` ${a++}`;
326
+ i = `${r.slice(0, 31 - e.length)}${e}`;
327
+ }
328
+ return i;
329
+ }
330
+ rebuildEngine() {
331
+ this.model.free();
332
+ let e = this.model.constructor;
333
+ this.model = new e(this.snapshot.name, "en", "UTC", "en"), this.model.pauseEvaluation(), this.snapshot.sheets.forEach((e, t) => {
334
+ t > 0 && this.model.newSheet(), this.model.renameSheet(t, e.name);
335
+ for (let [n, r] of Object.entries(e.cells)) {
336
+ let e = b(n);
337
+ e && this.model.setUserInput(t, e.row, e.column, r.input);
338
+ }
339
+ }), this.model.resumeEvaluation(), this.model.evaluate(), this.model.setSelectedSheet(this.selectedSheetIndex);
340
+ }
341
+ captureEngineCells(e, t = 0, n = 0) {
342
+ let r = this.snapshot.sheets[e], { maxRow: i, maxColumn: a } = k(r), o = {};
343
+ for (let r = 1; r <= i + t; r += 1) for (let t = 1; t <= a + n; t += 1) {
344
+ let n = this.model.getCellContent(e, r, t);
345
+ n && (o[y(r, t)] = { input: n });
346
+ }
347
+ return o;
348
+ }
349
+ };
350
+ //#endregion
351
+ export { v as a, S as c, b as d, k as f, l as g, u as h, T as i, w as l, s as m, y as n, O as o, o as p, E as r, C as s, A as t, D as u };