@hpcc-js/observablehq-compiler
Version:
hpcc-js - ObservableHQ Compiler (unoffical)
1,457 lines • 72.8 kB
JavaScript
import { n as e, r as t } from "./chunk-rwCFCtyI.js";
import { t as n } from "./interpreters-hA2IQttG.js";
import { n as r, r as i } from "./fileAttachment-DCFb8_eF.js";
//#region ../../node_modules/@observablehq/runtime/src/errors.js
var RuntimeError = class extends Error {
constructor(e, t) {
super(e), this.input = t;
}
};
RuntimeError.prototype.name = "RuntimeError";
//#endregion
//#region ../../node_modules/@observablehq/runtime/src/generatorish.js
function generatorish(e) {
return e && typeof e.next == "function" && typeof e.return == "function";
}
//#endregion
//#region ../../node_modules/@observablehq/runtime/src/constant.js
function constant(e) {
return () => e;
}
//#endregion
//#region ../../node_modules/@observablehq/runtime/src/identity.js
function identity(e) {
return e;
}
//#endregion
//#region ../../node_modules/@observablehq/runtime/src/rethrow.js
function rethrow(e) {
return () => {
throw e;
};
}
//#endregion
//#region ../../node_modules/@observablehq/runtime/src/array.js
var a = Array.prototype, o = a.map;
a.forEach;
//#endregion
//#region ../../node_modules/@observablehq/runtime/src/noop.js
function noop() {}
var s = Symbol("no-observer"), c = Promise.resolve();
function Variable(e, t, n, r) {
n ||= s, Object.defineProperties(this, {
_observer: {
value: n,
writable: !0
},
_definition: {
value: variable_undefined,
writable: !0
},
_duplicate: {
value: void 0,
writable: !0
},
_duplicates: {
value: void 0,
writable: !0
},
_indegree: {
value: NaN,
writable: !0
},
_inputs: {
value: [],
writable: !0
},
_invalidate: {
value: noop,
writable: !0
},
_module: { value: t },
_name: {
value: null,
writable: !0
},
_outputs: {
value: /* @__PURE__ */ new Set(),
writable: !0
},
_promise: {
value: c,
writable: !0
},
_reachable: {
value: n !== s,
writable: !0
},
_rejector: { value: variable_rejector(this) },
_shadow: { value: initShadow(t, r) },
_type: { value: e },
_value: {
value: void 0,
writable: !0
},
_version: {
value: 0,
writable: !0
}
});
}
Object.defineProperties(Variable.prototype, {
_pending: {
value: variable_pending,
writable: !0,
configurable: !0
},
_fulfilled: {
value: variable_fulfilled,
writable: !0,
configurable: !0
},
_rejected: {
value: variable_rejected,
writable: !0,
configurable: !0
},
_resolve: {
value: variable_resolve,
writable: !0,
configurable: !0
},
define: {
value: variable_define,
writable: !0,
configurable: !0
},
delete: {
value: variable_delete,
writable: !0,
configurable: !0
},
import: {
value: variable_import,
writable: !0,
configurable: !0
}
});
function initShadow(e, t) {
return t?.shadow ? new Map(Object.entries(t.shadow).map(([t, n]) => [t, new Variable(2, e).define([], n)])) : null;
}
function variable_attach(e) {
e._module._runtime._dirty.add(e), e._outputs.add(this);
}
function variable_detach(e) {
e._module._runtime._dirty.add(e), e._outputs.delete(this);
}
function variable_undefined() {
throw variable_undefined;
}
function variable_stale() {
throw variable_stale;
}
function variable_rejector(e) {
return (t) => {
throw t === variable_stale ? t : t === variable_undefined ? new RuntimeError(`${e._name} is not defined`, e._name) : t instanceof Error && t.message ? new RuntimeError(t.message, e._name) : new RuntimeError(`${e._name} could not be resolved`, e._name);
};
}
function variable_duplicate(e) {
return () => {
throw new RuntimeError(`${e} is defined more than once`);
};
}
function variable_define(e, t, n) {
switch (arguments.length) {
case 1:
n = e, e = t = null;
break;
case 2:
n = t, typeof e == "string" ? t = null : (t = e, e = null);
break;
}
return variable_defineImpl.call(this, e == null ? null : String(e), t == null ? [] : o.call(t, this._resolve, this), typeof n == "function" ? n : constant(n));
}
function variable_resolve(e) {
return this._shadow?.get(e) ?? this._module._resolve(e);
}
function variable_defineImpl(e, t, n) {
let r = this._module._scope, i = this._module._runtime;
if (this._inputs.forEach(variable_detach, this), t.forEach(variable_attach, this), this._inputs = t, this._definition = n, this._value = void 0, n === noop ? i._variables.delete(this) : i._variables.add(this), e !== this._name || r.get(e) !== this) {
let t, a;
if (this._name) if (this._outputs.size) r.delete(this._name), a = this._module._resolve(this._name), a._outputs = this._outputs, this._outputs = /* @__PURE__ */ new Set(), a._outputs.forEach(function(e) {
e._inputs[e._inputs.indexOf(this)] = a;
}, this), a._outputs.forEach(i._updates.add, i._updates), i._dirty.add(a).add(this), r.set(this._name, a);
else if ((a = r.get(this._name)) === this) r.delete(this._name);
else if (a._type === 3) a._duplicates.delete(this), this._duplicate = void 0, a._duplicates.size === 1 && (a = a._duplicates.keys().next().value, t = r.get(this._name), a._outputs = t._outputs, t._outputs = /* @__PURE__ */ new Set(), a._outputs.forEach(function(e) {
e._inputs[e._inputs.indexOf(t)] = a;
}), a._definition = a._duplicate, a._duplicate = void 0, i._dirty.add(t).add(a), i._updates.add(a), r.set(this._name, a));
else throw Error();
if (this._outputs.size) throw Error();
e && ((a = r.get(e)) ? a._type === 3 ? (this._definition = variable_duplicate(e), this._duplicate = n, a._duplicates.add(this)) : a._type === 2 ? (this._outputs = a._outputs, a._outputs = /* @__PURE__ */ new Set(), this._outputs.forEach(function(e) {
e._inputs[e._inputs.indexOf(a)] = this;
}, this), i._dirty.add(a).add(this), r.set(e, this)) : (a._duplicate = a._definition, this._duplicate = n, t = new Variable(3, this._module), t._name = e, t._definition = this._definition = a._definition = variable_duplicate(e), t._outputs = a._outputs, a._outputs = /* @__PURE__ */ new Set(), t._outputs.forEach(function(e) {
e._inputs[e._inputs.indexOf(a)] = t;
}), t._duplicates = new Set([this, a]), i._dirty.add(a).add(t), i._updates.add(a).add(t), r.set(e, t)) : r.set(e, this)), this._name = e;
}
return this._version > 0 && ++this._version, i._updates.add(this), i._compute(), this;
}
function variable_import(e, t, n) {
return arguments.length < 3 && (n = t, t = e), variable_defineImpl.call(this, String(t), [n._resolve(String(e))], identity);
}
function variable_delete() {
return variable_defineImpl.call(this, null, [], noop);
}
function variable_pending() {
this._observer.pending && this._observer.pending();
}
function variable_fulfilled(e) {
this._observer.fulfilled && this._observer.fulfilled(e, this._name);
}
function variable_rejected(e) {
this._observer.rejected && this._observer.rejected(e, this._name);
}
//#endregion
//#region ../../node_modules/@observablehq/runtime/src/module.js
var l = Symbol("variable"), u = Symbol("invalidation"), d = Symbol("visibility");
function Module(e, t = []) {
Object.defineProperties(this, {
_runtime: { value: e },
_scope: { value: /* @__PURE__ */ new Map() },
_builtins: { value: new Map([
["@variable", l],
["invalidation", u],
["visibility", d],
...t
]) },
_source: {
value: null,
writable: !0
}
});
}
Object.defineProperties(Module.prototype, {
_resolve: {
value: module_resolve,
writable: !0,
configurable: !0
},
redefine: {
value: module_redefine,
writable: !0,
configurable: !0
},
define: {
value: module_define,
writable: !0,
configurable: !0
},
derive: {
value: module_derive,
writable: !0,
configurable: !0
},
import: {
value: module_import,
writable: !0,
configurable: !0
},
value: {
value: module_value,
writable: !0,
configurable: !0
},
variable: {
value: module_variable,
writable: !0,
configurable: !0
},
builtin: {
value: module_builtin,
writable: !0,
configurable: !0
}
});
function module_redefine(e) {
let t = this._scope.get(e);
if (!t) throw new RuntimeError(`${e} is not defined`);
if (t._type === 3) throw new RuntimeError(`${e} is defined more than once`);
return t.define.apply(t, arguments);
}
function module_define() {
let e = new Variable(1, this);
return e.define.apply(e, arguments);
}
function module_import() {
let e = new Variable(1, this);
return e.import.apply(e, arguments);
}
function module_variable(e, t) {
return new Variable(1, this, e, t);
}
async function module_value(e) {
let t = this._scope.get(e);
if (!t) throw new RuntimeError(`${e} is not defined`);
if (t._observer === s) {
t = this.variable(!0).define([e], identity);
try {
return await module_revalue(this._runtime, t);
} finally {
t.delete();
}
} else return module_revalue(this._runtime, t);
}
async function module_revalue(e, t) {
await e._compute();
try {
return await t._promise;
} catch (n) {
if (n === variable_stale) return module_revalue(e, t);
throw n;
}
}
function module_derive(e, t) {
let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Set(), i = [];
function alias(e) {
let t = n.get(e);
return t || (t = new Module(e._runtime, e._builtins), t._source = e, n.set(e, t), i.push([t, e]), r.add(e), t);
}
let a = alias(this);
for (let n of e) {
let { alias: e, name: r } = typeof n == "object" ? n : { name: n };
a.import(r, e ?? r, t);
}
for (let e of r) for (let [t, n] of e._scope) if (n._definition === identity) {
if (e === this && a._scope.has(t)) continue;
let r = n._inputs[0]._module;
r._source && alias(r);
}
for (let [e, t] of i) for (let [r, i] of t._scope) {
let t = e._scope.get(r);
if (!(t && t._type !== 2)) if (i._definition === identity) {
let t = i._inputs[0], a = t._module;
e.import(t._name, r, n.get(a) || a);
} else e.define(r, i._inputs.map(variable_name), i._definition);
}
return a;
}
function module_resolve(e) {
let t = this._scope.get(e), n;
if (!t) if (t = new Variable(2, this), this._builtins.has(e)) t.define(e, constant(this._builtins.get(e)));
else if (this._runtime._builtin._scope.has(e)) t.import(e, this._runtime._builtin);
else {
try {
n = this._runtime._global(e);
} catch (n) {
return t.define(e, rethrow(n));
}
n === void 0 ? this._scope.set(t._name = e, t) : t.define(e, constant(n));
}
return t;
}
function module_builtin(e, t) {
this._builtins.set(e, t);
}
function variable_name(e) {
return e._name;
}
//#endregion
//#region ../../node_modules/@observablehq/runtime/src/runtime.js
var f = typeof requestAnimationFrame == "function" ? requestAnimationFrame : typeof setImmediate == "function" ? setImmediate : (e) => setTimeout(e, 0);
function Runtime(e, t = window_global) {
let n = this.module();
if (Object.defineProperties(this, {
_dirty: { value: /* @__PURE__ */ new Set() },
_updates: { value: /* @__PURE__ */ new Set() },
_precomputes: {
value: [],
writable: !0
},
_computing: {
value: null,
writable: !0
},
_init: {
value: null,
writable: !0
},
_modules: { value: /* @__PURE__ */ new Map() },
_variables: { value: /* @__PURE__ */ new Set() },
_disposed: {
value: !1,
writable: !0
},
_builtin: { value: n },
_global: { value: t }
}), e) for (let t in e) new Variable(2, n).define(t, [], e[t]);
}
Object.defineProperties(Runtime.prototype, {
_precompute: {
value: runtime_precompute,
writable: !0,
configurable: !0
},
_compute: {
value: runtime_compute,
writable: !0,
configurable: !0
},
_computeSoon: {
value: runtime_computeSoon,
writable: !0,
configurable: !0
},
_computeNow: {
value: runtime_computeNow,
writable: !0,
configurable: !0
},
dispose: {
value: runtime_dispose,
writable: !0,
configurable: !0
},
module: {
value: runtime_module,
writable: !0,
configurable: !0
}
});
function runtime_dispose() {
this._computing = Promise.resolve(), this._disposed = !0, this._variables.forEach((e) => {
e._invalidate(), e._version = NaN;
});
}
function runtime_module(e, t = noop) {
let n;
if (e === void 0) return (n = this._init) ? (this._init = null, n) : new Module(this);
if (n = this._modules.get(e), n) return n;
this._init = n = new Module(this), this._modules.set(e, n);
try {
e(this, t);
} finally {
this._init = null;
}
return n;
}
function runtime_precompute(e) {
this._precomputes.push(e), this._compute();
}
function runtime_compute() {
return this._computing ||= this._computeSoon();
}
function runtime_computeSoon() {
return new Promise(f).then(() => this._disposed ? void 0 : this._computeNow());
}
async function runtime_computeNow() {
let e = [], t, n, r = this._precomputes;
if (r.length) {
this._precomputes = [];
for (let e of r) e();
await runtime_defer(3);
}
t = new Set(this._dirty), t.forEach(function(e) {
e._inputs.forEach(t.add, t);
let n = variable_reachable(e);
n > e._reachable ? this._updates.add(e) : n < e._reachable && e._invalidate(), e._reachable = n;
}, this), t = new Set(this._updates), t.forEach(function(e) {
e._reachable ? (e._indegree = 0, e._outputs.forEach(t.add, t)) : (e._indegree = NaN, t.delete(e));
}), this._computing = null, this._updates.clear(), this._dirty.clear(), t.forEach(function(e) {
e._outputs.forEach(variable_increment);
});
do {
for (t.forEach(function(t) {
t._indegree === 0 && e.push(t);
}); n = e.pop();) variable_compute(n), n._outputs.forEach(postqueue), t.delete(n);
t.forEach(function(e) {
variable_circular(e) && (variable_error(e, new RuntimeError("circular definition")), e._outputs.forEach(variable_decrement), t.delete(e));
});
} while (t.size);
function postqueue(t) {
--t._indegree === 0 && e.push(t);
}
}
function runtime_defer(e = 0) {
let t = Promise.resolve();
for (let n = 0; n < e; ++n) t = t.then(() => {});
return t;
}
function variable_circular(e) {
let t = new Set(e._inputs);
for (let n of t) {
if (n === e) return !0;
n._inputs.forEach(t.add, t);
}
return !1;
}
function variable_increment(e) {
++e._indegree;
}
function variable_decrement(e) {
--e._indegree;
}
function variable_value(e) {
return e._promise.catch(e._rejector);
}
function variable_invalidator(e) {
return new Promise(function(t) {
e._invalidate = t;
});
}
function variable_intersector(e, t) {
let n = typeof IntersectionObserver == "function" && t._observer && t._observer._node, r = !n, i = noop, a = noop, o, s;
return n && (s = new IntersectionObserver(([e]) => (r = e.isIntersecting) && (o = null, i())), s.observe(n), e.then(() => (s.disconnect(), s = null, a()))), function(e) {
return r ? Promise.resolve(e) : s ? (o ||= new Promise((e, t) => (i = e, a = t)), o.then(() => e)) : Promise.reject();
};
}
function variable_compute(e) {
e._invalidate(), e._invalidate = noop, e._pending();
let t = e._value, n = ++e._version, r = e._inputs, i = e._definition, a = null, o = e._promise = e._promise.then(init, init).then(define).then(generate);
function init() {
return Promise.all(r.map(variable_value));
}
function define(r) {
if (e._version !== n) throw variable_stale;
for (let t = 0, n = r.length; t < n; ++t) switch (r[t]) {
case u:
r[t] = a = variable_invalidator(e);
break;
case d:
a ||= variable_invalidator(e), r[t] = variable_intersector(a, e);
break;
case l:
r[t] = e;
break;
}
return i.apply(t, r);
}
function generate(t) {
if (e._version !== n) throw variable_stale;
return generatorish(t) ? ((a || variable_invalidator(e)).then(variable_return(t)), variable_generate(e, n, t)) : t;
}
o.then((t) => {
e._value = t, e._fulfilled(t);
}, (t) => {
t === variable_stale || e._version !== n || (e._value = void 0, e._rejected(t));
});
}
function variable_generate(e, t, n) {
let r = e._module._runtime, i;
function compute(e) {
return new Promise((e) => e(n.next(i))).then(({ done: t, value: n }) => t ? void 0 : Promise.resolve(n).then(e));
}
function recompute() {
let n = compute((a) => {
if (e._version !== t) throw variable_stale;
return i = a, postcompute(a, n).then(() => r._precompute(recompute)), e._fulfilled(a), a;
});
n.catch((r) => {
r === variable_stale || e._version !== t || (postcompute(void 0, n), e._rejected(r));
});
}
function postcompute(t, n) {
return e._value = t, e._promise = n, e._outputs.forEach(r._updates.add, r._updates), r._compute();
}
return compute((n) => {
if (e._version !== t) throw variable_stale;
return i = n, r._precompute(recompute), n;
});
}
function variable_error(e, t) {
e._invalidate(), e._invalidate = noop, e._pending(), ++e._version, e._indegree = NaN, (e._promise = Promise.reject(t)).catch(noop), e._value = void 0, e._rejected(t);
}
function variable_return(e) {
return function() {
e.return();
};
}
function variable_reachable(e) {
if (e._observer !== s) return !0;
let t = new Set(e._outputs);
for (let e of t) {
if (e._observer !== s) return !0;
e._outputs.forEach(t.add, t);
}
return !1;
}
function window_global(e) {
return globalThis[e];
}
//#endregion
//#region ../../node_modules/@observablehq/inspector/src/dispatch.js
function dispatch(e, t, n) {
n ||= {};
var r = e.ownerDocument, i = r.defaultView.CustomEvent;
typeof i == "function" ? i = new i(t, { detail: n }) : (i = r.createEvent("Event"), i.initEvent(t, !1, !1), i.detail = n), e.dispatchEvent(i);
}
//#endregion
//#region ../../node_modules/@observablehq/inspector/src/array.js
function isarray(e) {
return Array.isArray(e) || e instanceof Int8Array || e instanceof Int16Array || e instanceof Int32Array || e instanceof Uint8Array || e instanceof Uint8ClampedArray || e instanceof Uint16Array || e instanceof Uint32Array || e instanceof Float32Array || e instanceof Float64Array;
}
function isindex(e) {
return e === (e | 0) + "";
}
//#endregion
//#region ../../node_modules/@observablehq/inspector/src/inspectName.js
function inspectName(e) {
let t = document.createElement("span");
return t.className = "observablehq--cellname", t.textContent = `${e} = `, t;
}
//#endregion
//#region ../../node_modules/@observablehq/inspector/src/formatSymbol.js
var p = Symbol.prototype.toString;
function formatSymbol(e) {
return p.call(e);
}
//#endregion
//#region ../../node_modules/@observablehq/inspector/src/object.js
var { getOwnPropertySymbols: m, prototype: { hasOwnProperty: h } } = Object, { toStringTag: g } = Symbol, v = {}, y = m;
function isown(e, t) {
return h.call(e, t);
}
function tagof(e) {
return e[g] || e.constructor && e.constructor.name || "Object";
}
function valueof$1(e, t) {
try {
let n = e[t];
return n && n.constructor, n;
} catch {
return v;
}
}
t(valueof$1, "valueof");
//#endregion
//#region ../../node_modules/@observablehq/inspector/src/immutable.js
var b = [
{
symbol: "@@__IMMUTABLE_INDEXED__@@",
name: "Indexed",
modifier: !0
},
{
symbol: "@@__IMMUTABLE_KEYED__@@",
name: "Keyed",
modifier: !0
},
{
symbol: "@@__IMMUTABLE_LIST__@@",
name: "List",
arrayish: !0
},
{
symbol: "@@__IMMUTABLE_MAP__@@",
name: "Map"
},
{
symbol: "@@__IMMUTABLE_ORDERED__@@",
name: "Ordered",
modifier: !0,
prefix: !0
},
{
symbol: "@@__IMMUTABLE_RECORD__@@",
name: "Record"
},
{
symbol: "@@__IMMUTABLE_SET__@@",
name: "Set",
arrayish: !0,
setish: !0
},
{
symbol: "@@__IMMUTABLE_STACK__@@",
name: "Stack",
arrayish: !0
}
];
function immutableName(e) {
try {
let t = b.filter(({ symbol: t }) => e[t] === !0);
if (!t.length) return;
let n = t.find((e) => !e.modifier), r = n.name === "Map" && t.find((e) => e.modifier && e.prefix), i = t.some((e) => e.arrayish), a = t.some((e) => e.setish);
return {
name: `${r ? r.name : ""}${n.name}`,
symbols: t,
arrayish: i && !a,
setish: a
};
} catch {
return null;
}
}
//#endregion
//#region ../../node_modules/@observablehq/inspector/src/expanded.js
var { getPrototypeOf: x, getOwnPropertyDescriptors: S } = Object, C = x({});
function inspectExpanded(e, t, n, r) {
let i = isarray(e), a, o, s, c;
e instanceof Map ? e instanceof e.constructor ? (a = `Map(${e.size})`, o = iterateMap$1) : (a = "Map()", o = iterateObject$1) : e instanceof Set ? e instanceof e.constructor ? (a = `Set(${e.size})`, o = iterateSet$1) : (a = "Set()", o = iterateObject$1) : i ? (a = `${e.constructor.name}(${e.length})`, o = iterateArray$1) : (c = immutableName(e)) ? (a = `Immutable.${c.name}${c.name === "Record" ? "" : `(${e.size})`}`, i = c.arrayish, o = c.arrayish ? iterateImArray$1 : c.setish ? iterateImSet$1 : iterateImObject$1) : r ? (a = tagof(e), o = iterateProto) : (a = tagof(e), o = iterateObject$1);
let l = document.createElement("span");
l.className = "observablehq--expanded", n && l.appendChild(inspectName(n));
let u = l.appendChild(document.createElement("a"));
u.innerHTML = "<svg width=8 height=8 class='observablehq--caret'>\n <path d='M4 7L0 1h8z' fill='currentColor' />\n </svg>", u.appendChild(document.createTextNode(`${a}${i ? " [" : " {"}`)), u.addEventListener("mouseup", function(t) {
t.stopPropagation(), replace(l, inspectCollapsed(e, null, n, r));
}), o = o(e);
for (let e = 0; !(s = o.next()).done && e < 20; ++e) l.appendChild(s.value);
if (!s.done) {
let e = l.appendChild(document.createElement("a"));
e.className = "observablehq--field", e.style.display = "block", e.appendChild(document.createTextNode(" … more")), e.addEventListener("mouseup", function(e) {
e.stopPropagation(), l.insertBefore(s.value, l.lastChild.previousSibling);
for (let e = 0; !(s = o.next()).done && e < 19; ++e) l.insertBefore(s.value, l.lastChild.previousSibling);
s.done && l.removeChild(l.lastChild.previousSibling), dispatch(l, "load");
});
}
return l.appendChild(document.createTextNode(i ? "]" : "}")), l;
}
function* iterateMap$1(e) {
for (let [t, n] of e) yield formatMapField$1(t, n);
yield* iterateObject$1(e);
}
t(iterateMap$1, "iterateMap");
function* iterateSet$1(e) {
for (let t of e) yield formatSetField(t);
yield* iterateObject$1(e);
}
t(iterateSet$1, "iterateSet");
function* iterateImSet$1(e) {
for (let t of e) yield formatSetField(t);
}
t(iterateImSet$1, "iterateImSet");
function* iterateArray$1(e) {
for (let t = 0, n = e.length; t < n; ++t) t in e && (yield formatField$1(t, valueof$1(e, t), "observablehq--index"));
for (let t in e) !isindex(t) && isown(e, t) && (yield formatField$1(t, valueof$1(e, t), "observablehq--key"));
for (let t of y(e)) yield formatField$1(formatSymbol(t), valueof$1(e, t), "observablehq--symbol");
}
t(iterateArray$1, "iterateArray");
function* iterateImArray$1(e) {
let t = 0;
for (let n = e.size; t < n; ++t) yield formatField$1(t, e.get(t), !0);
}
t(iterateImArray$1, "iterateImArray");
function* iterateProto(e) {
for (let t in S(e)) yield formatField$1(t, valueof$1(e, t), "observablehq--key");
for (let t of y(e)) yield formatField$1(formatSymbol(t), valueof$1(e, t), "observablehq--symbol");
let t = x(e);
t && t !== C && (yield formatPrototype(t));
}
function* iterateObject$1(e) {
for (let t in e) isown(e, t) && (yield formatField$1(t, valueof$1(e, t), "observablehq--key"));
for (let t of y(e)) yield formatField$1(formatSymbol(t), valueof$1(e, t), "observablehq--symbol");
let t = x(e);
t && t !== C && (yield formatPrototype(t));
}
t(iterateObject$1, "iterateObject");
function* iterateImObject$1(e) {
for (let [t, n] of e) yield formatField$1(t, n, "observablehq--key");
}
t(iterateImObject$1, "iterateImObject");
function formatPrototype(e) {
let t = document.createElement("div"), n = t.appendChild(document.createElement("span"));
return t.className = "observablehq--field", n.className = "observablehq--prototype-key", n.textContent = " <prototype>", t.appendChild(document.createTextNode(": ")), t.appendChild(inspect$1(e, void 0, void 0, void 0, !0)), t;
}
function formatField$1(e, t, n) {
let r = document.createElement("div"), i = r.appendChild(document.createElement("span"));
return r.className = "observablehq--field", i.className = n, i.textContent = ` ${e}`, r.appendChild(document.createTextNode(": ")), r.appendChild(inspect$1(t)), r;
}
t(formatField$1, "formatField");
function formatMapField$1(e, t) {
let n = document.createElement("div");
return n.className = "observablehq--field", n.appendChild(document.createTextNode(" ")), n.appendChild(inspect$1(e)), n.appendChild(document.createTextNode(" => ")), n.appendChild(inspect$1(t)), n;
}
t(formatMapField$1, "formatMapField");
function formatSetField(e) {
let t = document.createElement("div");
return t.className = "observablehq--field", t.appendChild(document.createTextNode(" ")), t.appendChild(inspect$1(e)), t;
}
//#endregion
//#region ../../node_modules/@observablehq/inspector/src/collapsed.js
function hasSelection(e) {
let t = window.getSelection();
return t.type === "Range" && (t.containsNode(e, !0) || e.contains(t.anchorNode) || e.contains(t.focusNode));
}
function inspectCollapsed(e, t, n, r) {
let i = isarray(e), a, o, s, c;
if (e instanceof Map ? e instanceof e.constructor ? (a = `Map(${e.size})`, o = iterateMap) : (a = "Map()", o = iterateObject) : e instanceof Set ? e instanceof e.constructor ? (a = `Set(${e.size})`, o = iterateSet) : (a = "Set()", o = iterateObject) : i ? (a = `${e.constructor.name}(${e.length})`, o = iterateArray) : (c = immutableName(e)) ? (a = `Immutable.${c.name}${c.name === "Record" ? "" : `(${e.size})`}`, i = c.arrayish, o = c.arrayish ? iterateImArray : c.setish ? iterateImSet : iterateImObject) : (a = tagof(e), o = iterateObject), t) {
let t = document.createElement("span");
return t.className = "observablehq--shallow", n && t.appendChild(inspectName(n)), t.appendChild(document.createTextNode(a)), t.addEventListener("mouseup", function(n) {
hasSelection(t) || (n.stopPropagation(), replace(t, inspectCollapsed(e)));
}), t;
}
let l = document.createElement("span");
l.className = "observablehq--collapsed", n && l.appendChild(inspectName(n));
let u = l.appendChild(document.createElement("a"));
u.innerHTML = "<svg width=8 height=8 class='observablehq--caret'>\n <path d='M7 4L1 8V0z' fill='currentColor' />\n </svg>", u.appendChild(document.createTextNode(`${a}${i ? " [" : " {"}`)), l.addEventListener("mouseup", function(t) {
hasSelection(l) || (t.stopPropagation(), replace(l, inspectExpanded(e, null, n, r)));
}, !0), o = o(e);
for (let e = 0; !(s = o.next()).done && e < 20; ++e) e > 0 && l.appendChild(document.createTextNode(", ")), l.appendChild(s.value);
return s.done || l.appendChild(document.createTextNode(", …")), l.appendChild(document.createTextNode(i ? "]" : "}")), l;
}
function* iterateMap(e) {
for (let [t, n] of e) yield formatMapField(t, n);
yield* iterateObject(e);
}
function* iterateSet(e) {
for (let t of e) yield inspect$1(t, !0);
yield* iterateObject(e);
}
function* iterateImSet(e) {
for (let t of e) yield inspect$1(t, !0);
}
function* iterateImArray(e) {
let t = -1, n = 0;
for (let r = e.size; n < r; ++n) n > t + 1 && (yield formatEmpty(n - t - 1)), yield inspect$1(e.get(n), !0), t = n;
n > t + 1 && (yield formatEmpty(n - t - 1));
}
function* iterateArray(e) {
let t = -1, n = 0;
for (let r = e.length; n < r; ++n) n in e && (n > t + 1 && (yield formatEmpty(n - t - 1)), yield inspect$1(valueof$1(e, n), !0), t = n);
n > t + 1 && (yield formatEmpty(n - t - 1));
for (let t in e) !isindex(t) && isown(e, t) && (yield formatField(t, valueof$1(e, t), "observablehq--key"));
for (let t of y(e)) yield formatField(formatSymbol(t), valueof$1(e, t), "observablehq--symbol");
}
function* iterateObject(e) {
for (let t in e) isown(e, t) && (yield formatField(t, valueof$1(e, t), "observablehq--key"));
for (let t of y(e)) yield formatField(formatSymbol(t), valueof$1(e, t), "observablehq--symbol");
}
function* iterateImObject(e) {
for (let [t, n] of e) yield formatField(t, n, "observablehq--key");
}
function formatEmpty(e) {
let t = document.createElement("span");
return t.className = "observablehq--empty", t.textContent = e === 1 ? "empty" : `empty × ${e}`, t;
}
function formatField(e, t, n) {
let r = document.createDocumentFragment(), i = r.appendChild(document.createElement("span"));
return i.className = n, i.textContent = e, r.appendChild(document.createTextNode(": ")), r.appendChild(inspect$1(t, !0)), r;
}
function formatMapField(e, t) {
let n = document.createDocumentFragment();
return n.appendChild(inspect$1(e, !0)), n.appendChild(document.createTextNode(" => ")), n.appendChild(inspect$1(t, !0)), n;
}
//#endregion
//#region ../../node_modules/isoformat/src/format.js
function format(e, t) {
if (e instanceof Date || (e = /* @__PURE__ */ new Date(+e)), isNaN(e)) return typeof t == "function" ? t(e) : t;
let n = e.getUTCHours(), r = e.getUTCMinutes(), i = e.getUTCSeconds(), a = e.getUTCMilliseconds();
return `${formatYear(e.getUTCFullYear(), 4)}-${pad(e.getUTCMonth() + 1, 2)}-${pad(e.getUTCDate(), 2)}${n || r || i || a ? `T${pad(n, 2)}:${pad(r, 2)}${i || a ? `:${pad(i, 2)}${a ? `.${pad(a, 3)}` : ""}` : ""}Z` : ""}`;
}
function formatYear(e) {
return e < 0 ? `-${pad(-e, 6)}` : e > 9999 ? `+${pad(e, 6)}` : pad(e, 4);
}
function pad(e, t) {
return `${e}`.padStart(t, "0");
}
//#endregion
//#region ../../node_modules/@observablehq/inspector/src/formatDate.js
function formatDate(e) {
return format(e, "Invalid Date");
}
//#endregion
//#region ../../node_modules/@observablehq/inspector/src/formatError.js
var w = Error.prototype.toString;
function formatError(e) {
return e.stack || w.call(e);
}
//#endregion
//#region ../../node_modules/@observablehq/inspector/src/formatRegExp.js
var T = RegExp.prototype.toString;
function formatRegExp(e) {
return T.call(e);
}
//#endregion
//#region ../../node_modules/@observablehq/inspector/src/formatString.js
var E = 20;
function formatString(e, t, n, r) {
if (t === !1) {
if (count$1(e, /["\n]/g) <= count$1(e, /`|\${/g)) {
let t = document.createElement("span");
r && t.appendChild(inspectName(r));
let n = t.appendChild(document.createElement("span"));
return n.className = "observablehq--string", n.textContent = JSON.stringify(e), t;
}
let i = e.split("\n");
if (i.length > E && !n) {
let n = document.createElement("div");
r && n.appendChild(inspectName(r));
let a = n.appendChild(document.createElement("span"));
a.className = "observablehq--string", a.textContent = "`" + templatify(i.slice(0, E).join("\n"));
let o = n.appendChild(document.createElement("span")), s = i.length - E;
return o.textContent = `Show ${s} truncated line${s > 1 ? "s" : ""}`, o.className = "observablehq--string-expand", o.addEventListener("mouseup", function(i) {
i.stopPropagation(), replace(n, inspect$1(e, t, !0, r));
}), n;
}
let a = document.createElement("span");
r && a.appendChild(inspectName(r));
let o = a.appendChild(document.createElement("span"));
return o.className = `observablehq--string${n ? " observablehq--expanded" : ""}`, o.textContent = "`" + templatify(e) + "`", a;
}
let i = document.createElement("span");
r && i.appendChild(inspectName(r));
let a = i.appendChild(document.createElement("span"));
return a.className = "observablehq--string", a.textContent = JSON.stringify(e.length > 100 ? `${e.slice(0, 50)}…${e.slice(-49)}` : e), i;
}
function templatify(e) {
return e.replace(/[\\`\x00-\x09\x0b-\x19]|\${/g, templatifyChar);
}
function templatifyChar(e) {
var t = e.charCodeAt(0);
switch (t) {
case 8: return "\\b";
case 9: return "\\t";
case 11: return "\\v";
case 12: return "\\f";
case 13: return "\\r";
}
return t < 16 ? "\\x0" + t.toString(16) : t < 32 ? "\\x" + t.toString(16) : "\\" + e;
}
function count$1(e, t) {
for (var n = 0; t.exec(e);) ++n;
return n;
}
t(count$1, "count");
//#endregion
//#region ../../node_modules/@observablehq/inspector/src/inspectFunction.js
var ee = Function.prototype.toString, D = { prefix: "async ƒ" }, O = { prefix: "async ƒ*" }, k = { prefix: "class" }, A = { prefix: "ƒ" }, j = { prefix: "ƒ*" };
function inspectFunction(e, t) {
var n, r, i = ee.call(e);
switch (e.constructor && e.constructor.name) {
case "AsyncFunction":
n = D;
break;
case "AsyncGeneratorFunction":
n = O;
break;
case "GeneratorFunction":
n = j;
break;
default:
n = /^class\b/.test(i) ? k : A;
break;
}
return n === k ? formatFunction(n, "", t) : (r = /^(?:async\s*)?(\w+)\s*=>/.exec(i)) ? formatFunction(n, "(" + r[1] + ")", t) : (r = /^(?:async\s*)?\(\s*(\w+(?:\s*,\s*\w+)*)?\s*\)/.exec(i)) || (r = /^(?:async\s*)?function(?:\s*\*)?(?:\s*\w+)?\s*\(\s*(\w+(?:\s*,\s*\w+)*)?\s*\)/.exec(i)) ? formatFunction(n, r[1] ? "(" + r[1].replace(/\s*,\s*/g, ", ") + ")" : "()", t) : formatFunction(n, "(…)", t);
}
function formatFunction(e, t, n) {
var r = document.createElement("span");
r.className = "observablehq--function", n && r.appendChild(inspectName(n));
var i = r.appendChild(document.createElement("span"));
return i.className = "observablehq--keyword", i.textContent = e.prefix, r.appendChild(document.createTextNode(t)), r;
}
//#endregion
//#region ../../node_modules/@observablehq/inspector/src/inspect.js
var { prototype: { toString: M } } = Object;
function inspect$1(e, t, n, r, i) {
let a = typeof e;
switch (a) {
case "boolean":
case "undefined":
e += "";
break;
case "number":
e = e === 0 && 1 / e < 0 ? "-0" : e + "";
break;
case "bigint":
e += "n";
break;
case "symbol":
e = formatSymbol(e, r);
break;
case "function": return inspectFunction(e, r);
case "string": return formatString(e, t, n, r);
default:
if (e === null) {
a = null, e = "null";
break;
}
if (e instanceof Date) {
a = "date", e = formatDate(e, r);
break;
}
if (e === v) {
a = "forbidden", e = "[forbidden]";
break;
}
switch (M.call(e)) {
case "[object RegExp]":
a = "regexp", e = formatRegExp(e, r);
break;
case "[object Error]":
case "[object DOMException]":
a = "error", e = formatError(e, r);
break;
default: return (n ? inspectExpanded : inspectCollapsed)(e, t, r, i);
}
break;
}
let o = document.createElement("span");
r && o.appendChild(inspectName(r));
let s = o.appendChild(document.createElement("span"));
return s.className = `observablehq--${a}`, s.textContent = e, o;
}
t(inspect$1, "inspect");
function replace(e, t) {
e.classList.contains("observablehq--inspect") && t.classList.add("observablehq--inspect"), e.parentNode.replaceChild(t, e), dispatch(t, "load");
}
//#endregion
//#region ../../node_modules/@observablehq/inspector/src/index.js
var N = /\s+\(\d+:\d+\)$/m, Inspector = class {
constructor(e) {
if (!e) throw Error("invalid node");
this._node = e, e.classList.add("observablehq");
}
pending() {
let { _node: e } = this;
e.classList.remove("observablehq--error"), e.classList.add("observablehq--running");
}
fulfilled(e, t) {
let { _node: n } = this;
if ((!isnode(e) || e.parentNode && e.parentNode !== n) && (e = inspect$1(e, !1, n.firstChild && n.firstChild.classList && n.firstChild.classList.contains("observablehq--expanded"), t), e.classList.add("observablehq--inspect")), n.classList.remove("observablehq--running", "observablehq--error"), n.firstChild !== e) if (n.firstChild) {
for (; n.lastChild !== n.firstChild;) n.removeChild(n.lastChild);
n.replaceChild(e, n.firstChild);
} else n.appendChild(e);
dispatch(n, "update");
}
rejected(e, t) {
let { _node: n } = this;
for (n.classList.remove("observablehq--running"), n.classList.add("observablehq--error"); n.lastChild;) n.removeChild(n.lastChild);
var r = document.createElement("div");
r.className = "observablehq--inspect", t && r.appendChild(inspectName(t)), r.appendChild(document.createTextNode((e + "").replace(N, ""))), n.appendChild(r), dispatch(n, "error", { error: e });
}
};
Inspector.into = function(e) {
if (typeof e == "string" && (e = document.querySelector(e), e == null)) throw Error("container not found");
return function() {
return new Inspector(e.appendChild(document.createElement("div")));
};
};
function isnode(e) {
return (e instanceof Element || e instanceof Text) && e instanceof e.constructor;
}
//#endregion
//#region ../../node_modules/@observablehq/notebook-kit/dist/src/runtime/inspect.js
function inspect(e, t) {
let n = document.createElement("div");
if (new Inspector(n).fulfilled(e), t) for (let e of t) {
let t = n;
for (let n of e) t = t?.childNodes[n];
t?.dispatchEvent(new Event("mouseup"));
}
return n;
}
function inspectError(e) {
let t = document.createElement("div");
return new Inspector(t).rejected(e), t;
}
function getExpanded(e) {
if (!isInspector(e)) return;
let t = e.querySelectorAll(".observablehq--expanded");
if (t.length) return Array.from(t, (t) => getNodePath(e, t));
}
function isElement(e) {
return e.nodeType === 1;
}
function isInspector(e) {
return isElement(e) && e.classList.contains("observablehq");
}
function getNodePath(e, t) {
let n = [];
for (; t !== e;) n.push(getChildIndex(t)), t = t.parentNode;
return n.reverse();
}
function getChildIndex(e) {
return Array.prototype.indexOf.call(e.parentNode.childNodes, e);
}
//#endregion
//#region ../../node_modules/@observablehq/notebook-kit/dist/src/runtime/stdlib/assets.js
var P = [
"audio source[src]",
"audio[src]",
"img[src]",
"picture source[src]",
"video source[src]",
"video[src]"
].join(), F = ["img[srcset]", "picture source[srcset]"].join(), I = ["a[href][download]", "link[href]"].join(), R = [
[P, "src"],
[F, "srcset"],
[I, "href"]
];
function mapAssets(e, t) {
let resolve = (e) => t.get(asImportPath(e)) ?? e;
for (let [t, n] of R) for (let r of e.querySelectorAll(t)) {
if (isRelExternal(r)) continue;
let e = decodeURI(r.getAttribute(n));
n === "srcset" ? r.setAttribute(n, resolveSrcset(e, resolve)) : r.setAttribute(n, resolve(e));
}
}
function isRelExternal(e) {
return /(?:^|\s)external(?:\s|$)/i.test(e.getAttribute("rel") ?? "");
}
function asPath(e) {
let t = e.indexOf("?"), n = e.indexOf("#"), r = t >= 0 && n >= 0 ? Math.min(t, n) : t >= 0 ? t : n;
return r >= 0 ? e.slice(0, r) : e;
}
function asImportPath(e) {
let t = asPath(e);
return isImportPath(t) ? t : `./${t}`;
}
function isImportPath(e) {
return [
"./",
"../",
"/"
].some((t) => e.startsWith(t));
}
function resolveSrcset(e, t) {
return e.trim().split(/\s*,\s*/).filter((e) => e).map((e) => {
let n = e.split(/\s+/), r = t(n[0]);
return r && (n[0] = encodeURI(r)), n.join(" ");
}).join(", ");
}
//#endregion
//#region ../../node_modules/@observablehq/notebook-kit/dist/src/runtime/display.js
function display(e, t) {
let { root: n, expanded: r } = e;
displayNode(e, isDisplayable(t, n) ? t : inspect(t, r[n.childNodes.length]));
}
function displayNode(e, t) {
if (t.nodeType === 11) {
let n;
for (; n = t.firstChild;) e.root.appendChild(n);
} else e.root.appendChild(t);
}
function displayError(e, t) {
displayNode(e, inspectError(t));
}
function isDisplayable(e, t) {
return (e instanceof Element || e instanceof Text) && e instanceof e.constructor && (!e.parentNode || t.contains(e));
}
function clear(e) {
for (e.autoclear = !1, e.expanded = Array.from(e.root.childNodes, getExpanded); e.root.lastChild;) e.root.lastChild.remove();
}
function observe$1(e, { autodisplay: t, assets: n }) {
return {
_error: !1,
_node: e.root,
pending() {
this._error && (this._error = !1, clear(e));
},
fulfilled(r) {
t ? (n && r instanceof Element && mapAssets(r, n), clear(e), display(e, r)) : e.autoclear && clear(e);
},
rejected(t) {
console.error(t), this._error = !0, clear(e), displayError(e, t);
}
};
}
t(observe$1, "observe");
//#endregion
//#region ../../node_modules/@observablehq/notebook-kit/dist/src/runtime/stdlib/generators/observe.js
function observe(e) {
let t, n, r, i = !1, a = e((e) => (r = e, t == null ? i = !0 : (t(e), t = n = void 0), e));
if (a != null && typeof a != "function") throw Error(typeof a == "object" && typeof a.then == "function" ? "async initializers are not supported" : "initializer returned something, but not a dispose function");
return {
async next() {
return {
done: !1,
value: await (i ? (i = !1, r) : new Promise((e, r) => (t = e, n = r)))
};
},
async return() {
return n != null && (n(/* @__PURE__ */ Error("Generator returned")), t = n = void 0), a?.(), {
done: !0,
value: void 0
};
},
async throw(e) {
return n != null && (n(e), t = n = void 0), a?.(), {
done: !0,
value: void 0
};
},
[Symbol.asyncIterator]() {
return this;
}
};
}
//#endregion
//#region ../../node_modules/@observablehq/notebook-kit/dist/src/runtime/stdlib/generators/dark.js
function dark() {
return observe((e) => {
let t, n = matchMedia("(prefers-color-scheme: dark)"), r = document.createElement("div");
r.style.transitionProperty = "color, background-color", r.style.transitionDuration = "1ms";
let changed = () => {
let r = getComputedStyle(document.body).getPropertyValue("color-scheme").split(/\s+/), i = r.includes("light") && r.includes("dark") ? n.matches : r.includes("dark");
t !== i && e(t = i);
};
return document.body.appendChild(r), changed(), r.addEventListener("transitionstart", changed), n.addEventListener("change", changed), () => {
r.remove(), n.removeEventListener("change", changed);
};
});
}
//#endregion
//#region ../../node_modules/@observablehq/notebook-kit/dist/src/runtime/stdlib/generators/input.js
function input$1(e) {
return observe((t) => {
let n = eventof(e), r = valueof(e), inputted = () => t(valueof(e));
return e.addEventListener(n, inputted), r !== void 0 && t(r), () => e.removeEventListener(n, inputted);
});
}
t(input$1, "input");
function valueof(e) {
let t = e, n = e;
if ("type" in e) switch (e.type) {
case "range":
case "number": return t.valueAsNumber;
case "date": return t.valueAsDate;
case "checkbox": return t.checked;
case "file": return t.multiple ? t.files : t.files[0];
case "select-multiple": return Array.from(n.selectedOptions, (e) => e.value);
}
return t.value;
}
function eventof(e) {
if ("type" in e) switch (e.type) {
case "button":
case "submit":
case "checkbox": return "click";
case "file": return "change";
}
return "input";
}
//#endregion
//#region ../../node_modules/@observablehq/notebook-kit/dist/src/runtime/stdlib/generators/now.js
async function* now() {
for (;;) yield Date.now();
}
//#endregion
//#region ../../node_modules/@observablehq/notebook-kit/dist/src/runtime/stdlib/generators/queue.js
function queue(e) {
let t, n, r = [], i = e((e) => (r.push(e), t != null && (t(r.shift()), t = void 0), e));
if (i != null && typeof i != "function") throw Error(typeof i == "object" && typeof i.then == "function" ? "async initializers are not supported" : "initializer returned something, but not a dispose function");
return {
async next() {
return {
done: !1,
value: await (r.length ? r.shift() : new Promise((e, r) => (t = e, n = r)))
};
},
async return() {
return n != null && (n(/* @__PURE__ */ Error("Generator returned")), t = n = void 0), i?.(), {
done: !0,
value: void 0
};
},
async throw(e) {
return n != null && (n(e), t = n = void 0), i?.(), {
done: !0,
value: void 0
};
},
[Symbol.asyncIterator]() {
return this;
}
};
}
//#endregion
//#region ../../node_modules/@observablehq/notebook-kit/dist/src/runtime/stdlib/generators/width.js
function width(e, t) {
return observe((n) => {
let r, i = new ResizeObserver(([e]) => {
let t = e.contentRect.width;
t !== r && n(r = t);
});
return i.observe(e, t), () => i.disconnect();
});
}
//#endregion
//#region ../../node_modules/@observablehq/notebook-kit/dist/src/runtime/stdlib/generators/index.js
var z = /* @__PURE__ */ e({
dark: () => dark,
input: () => input$1,
now: () => now,
observe: () => observe,
queue: () => queue,
width: () => width
});
//#endregion
//#region ../../node_modules/@observablehq/notebook-kit/dist/src/runtime/stdlib/mutable.js
function Mutable(e) {
let t;
return Object.defineProperty(observe((n) => {
t = n, e !== void 0 && t(e);
}), "value", {
get: () => e,
set: (n) => (e = n, void t?.(e))
});
}
function Mutator(e) {
let t = Mutable(e);
return [t, {
get value() {
return t.value;
},
set value(e) {
t.value = e;
}
}];
}
//#endregion
//#region ../../node_modules/@observablehq/notebook-kit/dist/src/runtime/define.js
function define$1(e, t, n, r = observe$1) {
let { id: i, body: a, inputs: o = [], outputs: s = [], output: c, autodisplay: l, autoview: u, automutable: d } = n, f = t.variables, p = e.variable(r(t, n), { shadow: {} }), m = c ?? (s.length ? `cell ${i}` : null);
if (t.autoclear = !0, o.includes("display") || o.includes("view")) {
let e = -1, n = new p.constructor(2, p._module);
if (n.define(o.filter((e) => e !== "display" && e !== "view"), () => {
let n = p._version;
return (r) => {
if (n < e || t.variables[0] !== p) throw Error("stale display");
return n > e && clear(t), e = n, display(t, r), r;
};
}), p._shadow.set("display", n), o.includes("view")) {
let e = new p.constructor(2, p._module, null, { shadow: {} });
e._shadow.set("display", n), e.define(["display"], (e) => (t) => input$1(e(t))), p._shadow.set("view", e);
}
} else l || clear(t);
if (f.push(p.define(m, o, a)), c != null) {
if (u) {
let t = unprefix(c, "viewof$");
f.push(e.define(t, [c], input$1));
} else if (d) {
let t = unprefix(c, "mutable "), n = `cell ${i}`;
p.define(t, [n], ([e]) => e), f.push(e.define(c, o, a), e.define(n, [c], Mutator), e.define(`mutable$${t}`, [n], ([, e]) => e));
}
} else for (let t of s) f.push(e.variable(!0).define(t, [m], (e) => e[t]));
}
t(define$1, "define");
function unprefix(e, t) {
if (!e.startsWith(t)) throw Error(`expected ${t}: ${e}`);
return e.slice(t.length);
}
//#endregion
//#region ../../node_modules/@observablehq/notebook-kit/dist/src/lib/sluggify.js
function sluggify(e, { length: t = 50, fallback: n = "untitled", separator: r = "-" } = {}) {
let i = e.normalize("NFD").replace(/[\u0300-\u036f'‘’]/g, "").toLowerCase().split(/\W+/g).filter(nonempty), a = -1;
for (let e = 0, n = i.length; ++a < n;) if ((e += i[a].length) + a > t) {
i[a] = i[a].substring(0, t - e + i[a].length - a);
break;
}
return i.slice(0, a + 1).filter(Boolean).join(r) || n.slice(0, t);
}
function nonempty(e) {
return e.length > 0;
}
//#endregion
//#region ../../node_modules/@observablehq/notebook-kit/dist/src/lib/hash.js
async function sha256(e) {
let t = new TextEncoder().encode(e), n = await crypto.subtle.digest("SHA-256", t);
return new Uint8Array(n).reduce((e, t) => e << 8n | BigInt(t), 0n);
}
function base36(e, t) {
return e.toString(36).padStart(t, "0").slice(0, t);
}
async function hash(e, ...t) {
return base36(await sha256(JSON.stringify([e, ...t])), 16);
}
async function stringHash(e) {
return base36(await sha256(e), 16);
}
async function nameHash(e) {
return /^[\w-]+$/.test(e) ? e : `${sluggify(basename(e))}.${base36(await sha256(e), 8)}`;
}
function basename(e) {
return e.replace(/^.*\//, "");
}
//#endregion
//#region ../../node_modules/@observablehq/notebook-kit/dist/src/runtime/stdlib/databaseClient.js
var DatabaseClient = (e, t) => new DatabaseClientImpl(e, normalizeOptions$1(t));
function normalizeOptions$1({ id: e, since: t } = {}) {
let n = {};
return e !== void 0 && (n.id = e), t !== void 0 && (n.since = new Date(t)), n;
}
t(normalizeOptions$1, "normalizeOptions");
var DatabaseClientImpl = class {
constructor(e, t) {
Object.defineProperty(this, "name", {
enumerable: !0,
configurable: !0,
writable: !0,
value: void 0
}), Object.defineProperty(this, "options", {
enumerable: !0,
configurable: !0,
writable: !0,
value: void 0
}), Object.defineProperties(this, {
name: {
value: e,
enumerable: !0
},
options: {
value: t,
enumerable: !0
}
});
}
async sql(e, ...t) {
let n = await this.cachePath(e, ...t), r = await fetch(n);
if (!r.ok) throw Error(`failed to fetch: ${n}`);
return await r.json().then(revive);
}
async cachePath(e, ...t) {
return `.observable/cache/${await nameHash(this.name)}-${await hash(e, ...t)}.json`;
}
};
function revive({ rows: e, schema: t, date: n, ...r }) {
for (let n of t) switch (n.type) {
case "bigint": {
let { name: t } = n;
for (let n of e) {
let e = n[t];
e != null && (n[t] = Number(e));
}
break;
}
case "date": {
let { name: t } = n;
for (let n of e) {
let e = n[t];
e != null && (n[t] = asDate(e));
}
break;
}
}
return n != null && (n = new Date(n)), Object.assign(e, {
schema: t,
date: n
}, r);
}
function asDate(e) {
return new Date(/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}(?::\d{2})?$/.test(e) ? e + "Z" : e);
}
DatabaseClient.revive = revive, DatabaseClient.prototype = DatabaseClientImpl.prototype, Object.defineProperty(DatabaseClientImpl, "name", { value: "DatabaseClient" });
//#endregion
//#region ../../node_modules/@observablehq/notebook-kit/dist/src/runtime/stdlib/dom/canvas.js
function canvas(e, t) {
let n = document.createElement("canvas");
return n.width = e, n.height = t, n;
}
//#endregion
//#region ../../node_modules/@observablehq/notebook-kit/dist/src/runtime/stdlib/dom/context2d.js
function context2d(e, t, n = devicePixelRatio) {
let r = document.createElement("canvas");
r.width = e * n, r.height = t * n, r.style.width = `${e}px`;
let i = r.getContext("2d");
return i.scale(n, n), i;
}
//#endregion
//#region ../../node_modules/@observablehq/notebook-kit/dist/src/runtime/stdlib/dom/download.js
function download(e, t = "untitled", n = "Save") {
let r = document.createElement("a"), i = r.appendChild(document.createElement("button"));
i.textContent = n, r.download = t;
async function reset() {
await new Promise(requestAnimationFrame), URL.revokeObjectURL(r.href), r.removeAttribute("href"), i.textContent = n, i.disabled = !1;
}
return r.onclick = async (t) => {
if (i.disabled = !0, r.href) return reset();
i.textContent = "Saving…";
try {
let t