@hpcc-js/observablehq-compiler
Version:
hpcc-js - ObservableHQ Compiler (unoffical)
91 lines (90 loc) • 2.91 kB
JavaScript
import "./chunk-rwCFCtyI.js";
import e from "https://cdn.jsdelivr.net/npm/exceljs/+esm";
//#region ../../node_modules/@observablehq/notebook-kit/dist/src/runtime/stdlib/xlsx.js
var t = class Workbook {
constructor(e) {
Object.defineProperties(this, {
_: { value: e },
sheetNames: {
value: e.worksheets.map((e) => e.name),
enumerable: !0
}
});
}
static async load(t) {
let n = new e.Workbook();
return await n.xlsx.load(t), new Workbook(n);
}
sheet(e, t) {
let n = typeof e == "number" ? this.sheetNames[e] : this.sheetNames.includes(e = `${e}`) ? e : null;
if (n == null) throw Error(`Sheet not found: ${e}`);
let r = this._.getWorksheet(n);
if (!r) throw Error(`Sheet not found: ${e}`);
return extract(r, t);
}
};
Object.defineProperty(t, "name", { value: "Workbook" });
function extract(e, { range: t, headers: n } = {}) {
let [[r, i], [a, o]] = parseRange(t, e), s = n ? e.getRow(++i) : null, c = new Set(["#"]);
for (let e = r; e <= a; e++) {
let t = s ? valueOf(s.findCell(e + 1)) : null, n = t && t + "" || toColumn(e);
for (; c.has(n);) n += "_";
c.add(n);
}
let l = Array(r).concat(Array.from(c)), u = l.filter(() => !0), d = Object.assign(Array(o - i + 1), { columns: u });
for (let t = i; t <= o; t++) {
let n = d[t - i] = Object.create(null, { "#": { value: t + 1 } }), o = e.getRow(t + 1);
if (o.hasValues) for (let e = r; e <= a; e++) {
let t = valueOf(o.findCell(e + 1));
t != null && (n[l[e + 1]] = t);
}
}
return d;
}
function isPrimitive(e) {
return !e || typeof e != "object" || e instanceof Date;
}
function isFormula(e) {
return "formula" in e || "sharedFormula" in e;
}
function isRichText(e) {
return "richText" in e;
}
function isHyperlink(e) {
return "hyperlink" in e;
}
function valueOf(e) {
if (!e) return;
let { value: t } = e;
if (isPrimitive(t)) return t;
if (isFormula(t)) return isPrimitive(t.result) ? t.result : NaN;
if (isRichText(t)) return richText(t);
if (isHyperlink(t)) return hyperlink(t);
}
function richText(e) {
return e.richText.map((e) => e.text).join("");
}
function hyperlink({ hyperlink: e, text: t }) {
return e && e !== t ? `${e} ${t}` : t;
}
function parseRange(e = ":", { columnCount: t, rowCount: n }) {
if (e = `${e}`, !e.match(/^[A-Z]*\d*:[A-Z]*\d*$/)) throw Error("Malformed range specifier");
let [[r = 0, i = 0], [a = t - 1, o = n - 1]] = e.split(":").map(fromCellReference);
return [[r, i], [a, o]];
}
function toColumn(e) {
let t = "";
e++;
do
t = String.fromCharCode(64 + (e % 26 || 26)) + t;
while (e = Math.floor((e - 1) / 26));
return t;
}
function fromCellReference(e) {
let [, t, n] = e.match(/^([A-Z]*)(\d*)$/), r = 0;
if (t) for (let e = 0; e < t.length; e++) r += 26 ** (t.length - e - 1) * (t.charCodeAt(e) - 64);
return [r ? r - 1 : void 0, n ? n - 1 : void 0];
}
//#endregion
export { t as Workbook };
//# sourceMappingURL=xlsx-BUACicGQ.js.map