@hpcc-js/observablehq-compiler 3.3.0 → 3.3.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.
- package/dist/index.js +75 -60
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +6 -6
- package/dist/index.umd.cjs.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('@import"https://fonts.googleapis.com/css2?family=Source+Serif+Pro:ital,wght@0,400;0,600;0,700;1,400;1,600;1,700&display=swap";:root{--syntax-normal: #1b1e23;--syntax-comment: #828282;--syntax-number: #20a5ba;--syntax-keyword: #c30771;--syntax-atom: #10a778;--syntax-string: #008ec4;--syntax-error: #ffbedc;--syntax-unknown-variable: #838383;--syntax-known-variable: #005f87;--syntax-matchbracket: #20bbfc;--syntax-key: #6636b4;--mono-fonts: 82%/1.5 Menlo, Consolas, monospace}.observablehq--expanded,.observablehq--collapsed,.observablehq--function,.observablehq--import,.observablehq--string:before,.observablehq--string:after,.observablehq--gray{color:var(--syntax-normal)}.observablehq--collapsed,.observablehq--expanded.observablehq--inspect a{cursor:pointer}.observablehq--field{text-indent:-1em;margin-left:1em}.observablehq--empty{color:var(--syntax_comment)}a[href],.observablehq--keyword,.observablehq--blue{color:#3182bd}.hljs-deletion,.hljs-variable,.observablehq--forbidden,.observablehq--pink{color:#e377c2}.observablehq--orange{color:#e6550d}.observablehq--null,.observablehq--undefined,.observablehq--boolean,.hljs-literal{color:var(--syntax-atom)}.hljs-number,.hljs-regexp,.hljs-bullet,.hljs-link,.observablehq--bigint,.observablehq--number,.observablehq--date,.observablehq--regexp,.observablehq--symbol,.observablehq--green{color:var(--syntax-number)}.observablehq--index,.observablehq--key{color:var(--syntax-key)}.observablehq--prototype-key{color:#aaa}.observablehq--empty{font-style:oblique}.hljs-string,.hljs-meta,.hljs-symbol,.hljs-template-tag,.hljs-template-variable,.hljs-addition,.observablehq--string,.observablehq--purple{color:var(--syntax-string)}.observablehq--error,.observablehq--red{color:#e7040f}.observablehq:empty:after,.observablehq>link:only-child,.observablehq>style:only-child,.observablehq--inspect{font:var(--monospace-font);overflow-x:auto;display:block;padding:4px 0;white-space:pre}.observablehq--error .observablehq--inspect{word-break:break-all;white-space:pre-wrap}:root{--syntax-diff: #24292e;--syntax-diff-bg: #ffffff;--hr: rgba(0, 0, 0, .05);--monospace: Menlo, Consolas, monospace;--monospace-font: 14px/1.5 var(--monospace);--serif: "Source Serif Pro", "Iowan Old Style", "Apple Garamond", "Palatino Linotype", "Times New Roman", "Droid Serif", Times, serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--sans-serif: -apple-system, BlinkMacSystemFont, "avenir next", avenir, helvetica, "helvetica neue", ubuntu, roboto, noto, "segoe ui", arial, sans-serif}html{font:17px/1.5 var(--serif);-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#1b1e23}body{margin:0 14px}body.fullscreen{margin:0}h1,h2,h3,h4,h5,h6{color:#333;font-weight:700;line-height:1.15;margin-top:0;margin-bottom:.25rem}h2~p,h3~p,h4~p,h2~table,h3~table,h4~table{margin-top:0}.observablehq:first-of-type h1+h2{font-size:20px;font-style:italic;font-weight:400;margin-bottom:1rem}a[href]{text-decoration:none}a[href]:hover{text-decoration:underline}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{font-size:90%}pre,code,tt{font-family:var(--monospace);font-size:14px;line-height:1.5}img{max-width:calc(100vw - 28px)}p,table,figure,figcaption,h1,h2,h3,h4,h5,h6,.katex-display{max-width:640px}blockquote,ol,ul{max-width:600px}blockquote{margin:1rem 1.5rem}ul,ol{padding-left:28px}hr{height:1px;margin:1rem 0;padding:1rem 0;border:none;background:no-repeat center/100% 1px linear-gradient(to right,var(--hr),var(--hr))}pre{padding:2px 0}.observablehq--md-pre{overflow-x:auto}input:not([type]),input[type=email],input[type=number],input[type=password],input[type=range],input[type=search],input[type=tel],input[type=text],input[type=url]{width:240px}input,canvas,button{vertical-align:middle}button,input,textarea{accent-color:#3b5fc0}table{width:100%;border-collapse:collapse;font:13px/1.2 var(--sans-serif)}table pre,table code,table tt{font-size:inherit;line-height:inherit}th>pre:only-child,td>pre:only-child{margin:0;padding:0}th{color:#111;text-align:left;vertical-align:bottom}td{color:#444;vertical-align:top}th,td{padding:3px 6.5px 3px 0}th:last-child,td:last-child{padding-right:0}tr:not(:last-child){border-bottom:solid 1px #eee}thead tr{border-bottom:solid 1px #ccc}figure,table{margin:1rem 0}figure img{max-width:100%}figcaption{font:small var(--sans-serif);color:var(--syntax-unknown-variable)}.observablehq--caret{margin-right:4px;vertical-align:baseline}.observablehq--field{text-indent:-1rem;margin-left:1rem}.observablehq--prototype-key,.observablehq--empty,.hljs-comment{color:var(--syntax-comment)}.hljs-built_in{color:var(--syntax-known-variable)}.observablehq--unknown{color:var(--syntax-unknown-variable)}.hljs-keyword,.hljs-selector-tag,.hljs-section,.hljs-doctag,.hljs-type,.hljs-tag,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-strong{color:var(--syntax-keyword)}.observablehq{position:relative;margin:17px 0;min-height:1.5rem}.observablehq:before{content:"";position:absolute;left:-14px;top:0;bottom:1px;width:4px;transition:background-color .25s linear}.observablehq--running:before,.observablehq--changed:before{background-color:#a9b0bc;transition:none}.observablehq--error:before{background-color:#e7040f}.observablehq:not(.observablehq--running):empty:after{content:"<detached>";color:var(--syntax-comment);font-style:oblique}.observablehq>link:only-child,.observablehq>style:only-child{visibility:hidden;white-space:nowrap;color:var(--syntax-keyword)}.observablehq>link:only-child:before{content:"<link>";visibility:visible;text-decoration:none;pointer-events:none}.observablehq>style:only-child:before{content:"<style>";visibility:visible}.observablehq--inspect.observablehq--import{white-space:normal}.observablehq--inspect::-webkit-scrollbar{display:none}.observablehq--string-expand{margin-left:6px;padding:2px 6px;border-radius:2px;font-size:80%;background:#eee;color:var(--syntax-normal);cursor:pointer;vertical-align:middle;position:sticky;right:0}.observablehq--string-expand:hover,.observablehq--string-expand:active{background:#ddd}')),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
|
|
2
1
|
var __defProp = Object.defineProperty;
|
|
3
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value;
|
|
4
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key != "symbol" ? key + "" : key, value);
|
|
@@ -293,7 +292,7 @@ function pushComment(options, array) {
|
|
|
293
292
|
options.locations && (comment.loc = new SourceLocation(this, startLoc, endLoc)), options.ranges && (comment.range = [start, end]), array.push(comment);
|
|
294
293
|
};
|
|
295
294
|
}
|
|
296
|
-
var SCOPE_TOP = 1, SCOPE_FUNCTION$1 = 2, SCOPE_ASYNC$1 = 4, SCOPE_GENERATOR$1 = 8, SCOPE_ARROW = 16, SCOPE_SIMPLE_CATCH = 32, SCOPE_SUPER = 64, SCOPE_DIRECT_SUPER = 128, SCOPE_CLASS_STATIC_BLOCK = 256, SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION$1 | SCOPE_CLASS_STATIC_BLOCK;
|
|
295
|
+
var SCOPE_TOP = 1, SCOPE_FUNCTION$1 = 2, SCOPE_ASYNC$1 = 4, SCOPE_GENERATOR$1 = 8, SCOPE_ARROW = 16, SCOPE_SIMPLE_CATCH = 32, SCOPE_SUPER = 64, SCOPE_DIRECT_SUPER = 128, SCOPE_CLASS_STATIC_BLOCK = 256, SCOPE_CLASS_FIELD_INIT = 512, SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION$1 | SCOPE_CLASS_STATIC_BLOCK;
|
|
297
296
|
function functionFlags(async, generator) {
|
|
298
297
|
return SCOPE_FUNCTION$1 | (async ? SCOPE_ASYNC$1 : 0) | (generator ? SCOPE_GENERATOR$1 : 0);
|
|
299
298
|
}
|
|
@@ -313,24 +312,24 @@ prototypeAccessors.inFunction.get = function() {
|
|
|
313
312
|
return (this.currentVarScope().flags & SCOPE_FUNCTION$1) > 0;
|
|
314
313
|
};
|
|
315
314
|
prototypeAccessors.inGenerator.get = function() {
|
|
316
|
-
return (this.currentVarScope().flags & SCOPE_GENERATOR$1) > 0
|
|
315
|
+
return (this.currentVarScope().flags & SCOPE_GENERATOR$1) > 0;
|
|
317
316
|
};
|
|
318
317
|
prototypeAccessors.inAsync.get = function() {
|
|
319
|
-
return (this.currentVarScope().flags & SCOPE_ASYNC$1) > 0
|
|
318
|
+
return (this.currentVarScope().flags & SCOPE_ASYNC$1) > 0;
|
|
320
319
|
};
|
|
321
320
|
prototypeAccessors.canAwait.get = function() {
|
|
322
321
|
for (var i = this.scopeStack.length - 1; i >= 0; i--) {
|
|
323
|
-
var
|
|
324
|
-
if (
|
|
322
|
+
var ref2 = this.scopeStack[i], flags = ref2.flags;
|
|
323
|
+
if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT))
|
|
325
324
|
return !1;
|
|
326
|
-
if (
|
|
327
|
-
return (
|
|
325
|
+
if (flags & SCOPE_FUNCTION$1)
|
|
326
|
+
return (flags & SCOPE_ASYNC$1) > 0;
|
|
328
327
|
}
|
|
329
328
|
return this.inModule && this.options.ecmaVersion >= 13 || this.options.allowAwaitOutsideFunction;
|
|
330
329
|
};
|
|
331
330
|
prototypeAccessors.allowSuper.get = function() {
|
|
332
|
-
var ref2 = this.currentThisScope(), flags = ref2.flags
|
|
333
|
-
return (flags & SCOPE_SUPER) > 0 ||
|
|
331
|
+
var ref2 = this.currentThisScope(), flags = ref2.flags;
|
|
332
|
+
return (flags & SCOPE_SUPER) > 0 || this.options.allowSuperOutsideMethod;
|
|
334
333
|
};
|
|
335
334
|
prototypeAccessors.allowDirectSuper.get = function() {
|
|
336
335
|
return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0;
|
|
@@ -339,8 +338,12 @@ prototypeAccessors.treatFunctionsAsVar.get = function() {
|
|
|
339
338
|
return this.treatFunctionsAsVarInScope(this.currentScope());
|
|
340
339
|
};
|
|
341
340
|
prototypeAccessors.allowNewDotTarget.get = function() {
|
|
342
|
-
var
|
|
343
|
-
|
|
341
|
+
for (var i = this.scopeStack.length - 1; i >= 0; i--) {
|
|
342
|
+
var ref2 = this.scopeStack[i], flags = ref2.flags;
|
|
343
|
+
if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT) || flags & SCOPE_FUNCTION$1 && !(flags & SCOPE_ARROW))
|
|
344
|
+
return !0;
|
|
345
|
+
}
|
|
346
|
+
return !1;
|
|
344
347
|
};
|
|
345
348
|
prototypeAccessors.inClassStaticBlock.get = function() {
|
|
346
349
|
return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0;
|
|
@@ -479,6 +482,36 @@ pp$8.isAsyncFunction = function() {
|
|
|
479
482
|
var skip = skipWhiteSpace.exec(this.input), next = this.pos + skip[0].length, after;
|
|
480
483
|
return !lineBreak.test(this.input.slice(this.pos, next)) && this.input.slice(next, next + 8) === "function" && (next + 8 === this.input.length || !(isIdentifierChar(after = this.input.charCodeAt(next + 8)) || after > 55295 && after < 56320));
|
|
481
484
|
};
|
|
485
|
+
pp$8.isUsingKeyword = function(isAwaitUsing, isFor) {
|
|
486
|
+
if (this.options.ecmaVersion < 17 || !this.isContextual(isAwaitUsing ? "await" : "using"))
|
|
487
|
+
return !1;
|
|
488
|
+
skipWhiteSpace.lastIndex = this.pos;
|
|
489
|
+
var skip = skipWhiteSpace.exec(this.input), next = this.pos + skip[0].length;
|
|
490
|
+
if (lineBreak.test(this.input.slice(this.pos, next)))
|
|
491
|
+
return !1;
|
|
492
|
+
if (isAwaitUsing) {
|
|
493
|
+
var awaitEndPos = next + 5, after;
|
|
494
|
+
if (this.input.slice(next, awaitEndPos) !== "using" || awaitEndPos === this.input.length || isIdentifierChar(after = this.input.charCodeAt(awaitEndPos)) || after > 55295 && after < 56320)
|
|
495
|
+
return !1;
|
|
496
|
+
skipWhiteSpace.lastIndex = awaitEndPos;
|
|
497
|
+
var skipAfterUsing = skipWhiteSpace.exec(this.input);
|
|
498
|
+
if (skipAfterUsing && lineBreak.test(this.input.slice(awaitEndPos, awaitEndPos + skipAfterUsing[0].length)))
|
|
499
|
+
return !1;
|
|
500
|
+
}
|
|
501
|
+
if (isFor) {
|
|
502
|
+
var ofEndPos = next + 2, after$1;
|
|
503
|
+
if (this.input.slice(next, ofEndPos) === "of" && (ofEndPos === this.input.length || !isIdentifierChar(after$1 = this.input.charCodeAt(ofEndPos)) && !(after$1 > 55295 && after$1 < 56320)))
|
|
504
|
+
return !1;
|
|
505
|
+
}
|
|
506
|
+
var ch = this.input.charCodeAt(next);
|
|
507
|
+
return isIdentifierStart(ch, !0) || ch === 92;
|
|
508
|
+
};
|
|
509
|
+
pp$8.isAwaitUsing = function(isFor) {
|
|
510
|
+
return this.isUsingKeyword(!0, isFor);
|
|
511
|
+
};
|
|
512
|
+
pp$8.isUsing = function(isFor) {
|
|
513
|
+
return this.isUsingKeyword(!1, isFor);
|
|
514
|
+
};
|
|
482
515
|
pp$8.parseStatement = function(context, topLevel, exports) {
|
|
483
516
|
var starttype = this.type, node = this.startNode(), kind;
|
|
484
517
|
switch (this.isLet(context) && (starttype = types$1._var, kind = "let"), starttype) {
|
|
@@ -525,14 +558,12 @@ pp$8.parseStatement = function(context, topLevel, exports) {
|
|
|
525
558
|
return this.parseExpressionStatement(node, this.parseExpression());
|
|
526
559
|
}
|
|
527
560
|
return this.options.allowImportExportEverywhere || (topLevel || this.raise(this.start, "'import' and 'export' may only appear at the top level"), this.inModule || this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'")), starttype === types$1._import ? this.parseImport(node) : this.parseExport(node, exports);
|
|
528
|
-
// If the statement does not start with a statement keyword or a
|
|
529
|
-
// brace, it's an ExpressionStatement or LabeledStatement. We
|
|
530
|
-
// simply start parsing an expression, and afterwards, if the
|
|
531
|
-
// next token is a colon and the expression was a simple
|
|
532
|
-
// Identifier node, we switch to interpreting it as a label.
|
|
533
561
|
default:
|
|
534
562
|
if (this.isAsyncFunction())
|
|
535
563
|
return context && this.unexpected(), this.next(), this.parseFunctionStatement(node, !0, !context);
|
|
564
|
+
var usingKind = this.isAwaitUsing(!1) ? "await using" : this.isUsing(!1) ? "using" : null;
|
|
565
|
+
if (usingKind)
|
|
566
|
+
return topLevel && this.options.sourceType === "script" && this.raise(this.start, "Using declaration cannot appear in the top level when source type is `script`"), usingKind === "await using" && (this.canAwait || this.raise(this.start, "Await using cannot appear outside of async function"), this.next()), this.next(), this.parseVar(node, !1, usingKind), this.semicolon(), this.finishNode(node, "VariableDeclaration");
|
|
536
567
|
var maybeName = this.value, expr = this.parseExpression();
|
|
537
568
|
return starttype === types$1.name && expr.type === "Identifier" && this.eat(types$1.colon) ? this.parseLabeledStatement(node, maybeName, expr, context) : this.parseExpressionStatement(node, expr);
|
|
538
569
|
}
|
|
@@ -561,11 +592,19 @@ pp$8.parseForStatement = function(node) {
|
|
|
561
592
|
var isLet = this.isLet();
|
|
562
593
|
if (this.type === types$1._var || this.type === types$1._const || isLet) {
|
|
563
594
|
var init$1 = this.startNode(), kind = isLet ? "let" : this.value;
|
|
564
|
-
return this.next(), this.parseVar(init$1, !0, kind), this.finishNode(init$1, "VariableDeclaration"),
|
|
595
|
+
return this.next(), this.parseVar(init$1, !0, kind), this.finishNode(init$1, "VariableDeclaration"), this.parseForAfterInit(node, init$1, awaitAt);
|
|
596
|
+
}
|
|
597
|
+
var startsWithLet = this.isContextual("let"), isForOf = !1, usingKind = this.isUsing(!0) ? "using" : this.isAwaitUsing(!0) ? "await using" : null;
|
|
598
|
+
if (usingKind) {
|
|
599
|
+
var init$2 = this.startNode();
|
|
600
|
+
return this.next(), usingKind === "await using" && this.next(), this.parseVar(init$2, !0, usingKind), this.finishNode(init$2, "VariableDeclaration"), this.parseForAfterInit(node, init$2, awaitAt);
|
|
565
601
|
}
|
|
566
|
-
var
|
|
602
|
+
var containsEsc = this.containsEsc, refDestructuringErrors = new DestructuringErrors(), initPos = this.start, init = awaitAt > -1 ? this.parseExprSubscripts(refDestructuringErrors, "await") : this.parseExpression(!0, refDestructuringErrors);
|
|
567
603
|
return this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual("of")) ? (awaitAt > -1 ? (this.type === types$1._in && this.unexpected(awaitAt), node.await = !0) : isForOf && this.options.ecmaVersion >= 8 && (init.start === initPos && !containsEsc && init.type === "Identifier" && init.name === "async" ? this.unexpected() : this.options.ecmaVersion >= 9 && (node.await = !1)), startsWithLet && isForOf && this.raise(init.start, "The left-hand side of a for-of loop may not start with 'let'."), this.toAssignable(init, !1, refDestructuringErrors), this.checkLValPattern(init), this.parseForIn(node, init)) : (this.checkExpressionErrors(refDestructuringErrors, !0), awaitAt > -1 && this.unexpected(awaitAt), this.parseFor(node, init));
|
|
568
604
|
};
|
|
605
|
+
pp$8.parseForAfterInit = function(node, init, awaitAt) {
|
|
606
|
+
return (this.type === types$1._in || this.options.ecmaVersion >= 6 && this.isContextual("of")) && init.declarations.length === 1 ? (this.options.ecmaVersion >= 9 && (this.type === types$1._in ? awaitAt > -1 && this.unexpected(awaitAt) : node.await = awaitAt > -1), this.parseForIn(node, init)) : (awaitAt > -1 && this.unexpected(awaitAt), this.parseFor(node, init));
|
|
607
|
+
};
|
|
569
608
|
pp$8.parseFunctionStatement = function(node, isAsync, declarationPosition) {
|
|
570
609
|
return this.next(), this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), !1, isAsync);
|
|
571
610
|
};
|
|
@@ -649,13 +688,13 @@ pp$8.parseForIn = function(node, init) {
|
|
|
649
688
|
pp$8.parseVar = function(node, isFor, kind, allowMissingInitializer) {
|
|
650
689
|
for (node.declarations = [], node.kind = kind; ; ) {
|
|
651
690
|
var decl = this.startNode();
|
|
652
|
-
if (this.parseVarId(decl, kind), this.eat(types$1.eq) ? decl.init = this.parseMaybeAssign(isFor) : !allowMissingInitializer && kind === "const" && !(this.type === types$1._in || this.options.ecmaVersion >= 6 && this.isContextual("of")) ? this.unexpected() : !allowMissingInitializer && decl.id.type !== "Identifier" && !(isFor && (this.type === types$1._in || this.isContextual("of"))) ? this.raise(this.lastTokEnd, "Complex binding patterns require an initialization value") : decl.init = null, node.declarations.push(this.finishNode(decl, "VariableDeclarator")), !this.eat(types$1.comma))
|
|
691
|
+
if (this.parseVarId(decl, kind), this.eat(types$1.eq) ? decl.init = this.parseMaybeAssign(isFor) : !allowMissingInitializer && kind === "const" && !(this.type === types$1._in || this.options.ecmaVersion >= 6 && this.isContextual("of")) ? this.unexpected() : !allowMissingInitializer && (kind === "using" || kind === "await using") && this.options.ecmaVersion >= 17 && this.type !== types$1._in && !this.isContextual("of") ? this.raise(this.lastTokEnd, "Missing initializer in " + kind + " declaration") : !allowMissingInitializer && decl.id.type !== "Identifier" && !(isFor && (this.type === types$1._in || this.isContextual("of"))) ? this.raise(this.lastTokEnd, "Complex binding patterns require an initialization value") : decl.init = null, node.declarations.push(this.finishNode(decl, "VariableDeclarator")), !this.eat(types$1.comma))
|
|
653
692
|
break;
|
|
654
693
|
}
|
|
655
694
|
return node;
|
|
656
695
|
};
|
|
657
696
|
pp$8.parseVarId = function(decl, kind) {
|
|
658
|
-
decl.id = this.parseBindingAtom(), this.checkLValPattern(decl.id, kind === "var" ? BIND_VAR : BIND_LEXICAL, !1);
|
|
697
|
+
decl.id = kind === "using" || kind === "await using" ? this.parseIdent() : this.parseBindingAtom(), this.checkLValPattern(decl.id, kind === "var" ? BIND_VAR : BIND_LEXICAL, !1);
|
|
659
698
|
};
|
|
660
699
|
var FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4;
|
|
661
700
|
pp$8.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) {
|
|
@@ -710,12 +749,7 @@ pp$8.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper
|
|
|
710
749
|
return method.kind === "get" && value.params.length !== 0 && this.raiseRecoverable(value.start, "getter should have no params"), method.kind === "set" && value.params.length !== 1 && this.raiseRecoverable(value.start, "setter should have exactly one param"), method.kind === "set" && value.params[0].type === "RestElement" && this.raiseRecoverable(value.params[0].start, "Setter cannot use rest params"), this.finishNode(method, "MethodDefinition");
|
|
711
750
|
};
|
|
712
751
|
pp$8.parseClassField = function(field) {
|
|
713
|
-
|
|
714
|
-
var scope = this.currentThisScope(), inClassFieldInit = scope.inClassFieldInit;
|
|
715
|
-
scope.inClassFieldInit = !0, field.value = this.parseMaybeAssign(), scope.inClassFieldInit = inClassFieldInit;
|
|
716
|
-
} else
|
|
717
|
-
field.value = null;
|
|
718
|
-
return this.semicolon(), this.finishNode(field, "PropertyDefinition");
|
|
752
|
+
return checkKeyName(field, "constructor") ? this.raise(field.key.start, "Classes can't have a field named 'constructor'") : field.static && checkKeyName(field, "prototype") && this.raise(field.key.start, "Classes can't have a static field named 'prototype'"), this.eat(types$1.eq) ? (this.enterScope(SCOPE_CLASS_FIELD_INIT | SCOPE_SUPER), field.value = this.parseMaybeAssign(), this.exitScope()) : field.value = null, this.semicolon(), this.finishNode(field, "PropertyDefinition");
|
|
719
753
|
};
|
|
720
754
|
pp$8.parseClassStaticBlock = function(node) {
|
|
721
755
|
node.body = [];
|
|
@@ -761,7 +795,7 @@ pp$8.parseExport = function(node, exports) {
|
|
|
761
795
|
if (this.eat(types$1._default))
|
|
762
796
|
return this.checkExport(exports, "default", this.lastTokStart), node.declaration = this.parseExportDefaultDeclaration(), this.finishNode(node, "ExportDefaultDeclaration");
|
|
763
797
|
if (this.shouldParseExportStatement())
|
|
764
|
-
node.declaration = this.parseExportDeclaration(node), node.declaration.type === "VariableDeclaration" ? this.checkVariableExport(exports, node.declaration.declarations) : this.checkExport(exports, node.declaration.id, node.declaration.id.start), node.specifiers = [], node.source = null;
|
|
798
|
+
node.declaration = this.parseExportDeclaration(node), node.declaration.type === "VariableDeclaration" ? this.checkVariableExport(exports, node.declaration.declarations) : this.checkExport(exports, node.declaration.id, node.declaration.id.start), node.specifiers = [], node.source = null, this.options.ecmaVersion >= 16 && (node.attributes = []);
|
|
765
799
|
else {
|
|
766
800
|
if (node.declaration = null, node.specifiers = this.parseExportSpecifiers(exports), this.eatContextual("from"))
|
|
767
801
|
this.type !== types$1.string && this.unexpected(), node.source = this.parseExprAtom(), this.options.ecmaVersion >= 16 && (node.attributes = this.parseWithClause());
|
|
@@ -770,7 +804,7 @@ pp$8.parseExport = function(node, exports) {
|
|
|
770
804
|
var spec = list[i];
|
|
771
805
|
this.checkUnreserved(spec.local), this.checkLocalExport(spec.local), spec.local.type === "Literal" && this.raise(spec.local.start, "A string literal cannot be used as an exported binding without `from`.");
|
|
772
806
|
}
|
|
773
|
-
node.source = null;
|
|
807
|
+
node.source = null, this.options.ecmaVersion >= 16 && (node.attributes = []);
|
|
774
808
|
}
|
|
775
809
|
this.semicolon();
|
|
776
810
|
}
|
|
@@ -1393,7 +1427,7 @@ pp$5.parseImportMeta = function(node) {
|
|
|
1393
1427
|
};
|
|
1394
1428
|
pp$5.parseLiteral = function(value) {
|
|
1395
1429
|
var node = this.startNode();
|
|
1396
|
-
return node.value = value, node.raw = this.input.slice(this.start, this.end), node.raw.charCodeAt(node.raw.length - 1) === 110 && (node.bigint = node.raw.slice(0, -1).replace(/_/g, "")), this.next(), this.finishNode(node, "Literal");
|
|
1430
|
+
return node.value = value, node.raw = this.input.slice(this.start, this.end), node.raw.charCodeAt(node.raw.length - 1) === 110 && (node.bigint = node.value != null ? node.value.toString() : node.raw.slice(0, -1).replace(/_/g, "")), this.next(), this.finishNode(node, "Literal");
|
|
1397
1431
|
};
|
|
1398
1432
|
pp$5.parseParenExpression = function() {
|
|
1399
1433
|
this.expect(types$1.parenL);
|
|
@@ -1498,7 +1532,8 @@ pp$5.parseProperty = function(isPattern, refDestructuringErrors) {
|
|
|
1498
1532
|
return this.parsePropertyName(prop), !isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop) ? (isAsync = !0, isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star), this.parsePropertyName(prop)) : isAsync = !1, this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc), this.finishNode(prop, "Property");
|
|
1499
1533
|
};
|
|
1500
1534
|
pp$5.parseGetterSetter = function(prop) {
|
|
1501
|
-
|
|
1535
|
+
var kind = prop.key.name;
|
|
1536
|
+
this.parsePropertyName(prop), prop.value = this.parseMethod(!1), prop.kind = kind;
|
|
1502
1537
|
var paramCount = prop.kind === "get" ? 0 : 1;
|
|
1503
1538
|
if (prop.value.params.length !== paramCount) {
|
|
1504
1539
|
var start = prop.value.start;
|
|
@@ -1507,7 +1542,7 @@ pp$5.parseGetterSetter = function(prop) {
|
|
|
1507
1542
|
prop.kind === "set" && prop.value.params[0].type === "RestElement" && this.raiseRecoverable(prop.value.params[0].start, "Setter cannot use rest params");
|
|
1508
1543
|
};
|
|
1509
1544
|
pp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {
|
|
1510
|
-
(isGenerator || isAsync) && this.type === types$1.colon && this.unexpected(), this.eat(types$1.colon) ? (prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(!1, refDestructuringErrors), prop.kind = "init") : this.options.ecmaVersion >= 6 && this.type === types$1.parenL ? (isPattern && this.unexpected(), prop.
|
|
1545
|
+
(isGenerator || isAsync) && this.type === types$1.colon && this.unexpected(), this.eat(types$1.colon) ? (prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(!1, refDestructuringErrors), prop.kind = "init") : this.options.ecmaVersion >= 6 && this.type === types$1.parenL ? (isPattern && this.unexpected(), prop.method = !0, prop.value = this.parseMethod(isGenerator, isAsync), prop.kind = "init") : !isPattern && !containsEsc && this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" && (prop.key.name === "get" || prop.key.name === "set") && this.type !== types$1.comma && this.type !== types$1.braceR && this.type !== types$1.eq ? ((isGenerator || isAsync) && this.unexpected(), this.parseGetterSetter(prop)) : this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier" ? ((isGenerator || isAsync) && this.unexpected(), this.checkUnreserved(prop.key), prop.key.name === "await" && !this.awaitIdentPos && (this.awaitIdentPos = startPos), isPattern ? prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key)) : this.type === types$1.eq && refDestructuringErrors ? (refDestructuringErrors.shorthandAssign < 0 && (refDestructuringErrors.shorthandAssign = this.start), prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key))) : prop.value = this.copyNode(prop.key), prop.kind = "init", prop.shorthand = !0) : this.unexpected();
|
|
1511
1546
|
};
|
|
1512
1547
|
pp$5.parsePropertyName = function(prop) {
|
|
1513
1548
|
if (this.options.ecmaVersion >= 6) {
|
|
@@ -1567,7 +1602,7 @@ pp$5.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestruct
|
|
|
1567
1602
|
};
|
|
1568
1603
|
pp$5.checkUnreserved = function(ref2) {
|
|
1569
1604
|
var start = ref2.start, end = ref2.end, name = ref2.name;
|
|
1570
|
-
if (this.inGenerator && name === "yield" && this.raiseRecoverable(start, "Cannot use 'yield' as identifier inside a generator"), this.inAsync && name === "await" && this.raiseRecoverable(start, "Cannot use 'await' as identifier inside an async function"), this.currentThisScope().
|
|
1605
|
+
if (this.inGenerator && name === "yield" && this.raiseRecoverable(start, "Cannot use 'yield' as identifier inside a generator"), this.inAsync && name === "await" && this.raiseRecoverable(start, "Cannot use 'await' as identifier inside an async function"), !(this.currentThisScope().flags & SCOPE_VAR) && name === "arguments" && this.raiseRecoverable(start, "Cannot use 'arguments' in class field initializer"), this.inClassStaticBlock && (name === "arguments" || name === "await") && this.raise(start, "Cannot use " + name + " in class static initialization block"), this.keywords.test(name) && this.raise(start, "Unexpected keyword '" + name + "'"), !(this.options.ecmaVersion < 6 && this.input.slice(start, end).indexOf("\\") !== -1)) {
|
|
1571
1606
|
var re = this.strict ? this.reservedWordsStrict : this.reservedWords;
|
|
1572
1607
|
re.test(name) && (!this.inAsync && name === "await" && this.raiseRecoverable(start, "Cannot use keyword 'await' outside an async function"), this.raiseRecoverable(start, "The keyword '" + name + "' is reserved"));
|
|
1573
1608
|
}
|
|
@@ -1597,7 +1632,7 @@ pp$5.parseAwait = function(forInit) {
|
|
|
1597
1632
|
var pp$4 = Parser.prototype;
|
|
1598
1633
|
pp$4.raise = function(pos, message) {
|
|
1599
1634
|
var loc = getLineInfo(this.input, pos);
|
|
1600
|
-
message += " (" + loc.line + ":" + loc.column + ")";
|
|
1635
|
+
message += " (" + loc.line + ":" + loc.column + ")", this.sourceFile && (message += " in " + this.sourceFile);
|
|
1601
1636
|
var err = new SyntaxError(message);
|
|
1602
1637
|
throw err.pos = pos, err.loc = loc, err.raisedAt = this.pos, err;
|
|
1603
1638
|
};
|
|
@@ -1607,7 +1642,7 @@ pp$4.curPosition = function() {
|
|
|
1607
1642
|
return new Position(this.curLine, this.pos - this.lineStart);
|
|
1608
1643
|
};
|
|
1609
1644
|
var pp$3 = Parser.prototype, Scope = function(flags) {
|
|
1610
|
-
this.flags = flags, this.var = [], this.lexical = [], this.functions = []
|
|
1645
|
+
this.flags = flags, this.var = [], this.lexical = [], this.functions = [];
|
|
1611
1646
|
};
|
|
1612
1647
|
pp$3.enterScope = function(flags) {
|
|
1613
1648
|
this.scopeStack.push(new Scope(flags));
|
|
@@ -1650,14 +1685,14 @@ pp$3.currentScope = function() {
|
|
|
1650
1685
|
pp$3.currentVarScope = function() {
|
|
1651
1686
|
for (var i = this.scopeStack.length - 1; ; i--) {
|
|
1652
1687
|
var scope = this.scopeStack[i];
|
|
1653
|
-
if (scope.flags & SCOPE_VAR)
|
|
1688
|
+
if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK))
|
|
1654
1689
|
return scope;
|
|
1655
1690
|
}
|
|
1656
1691
|
};
|
|
1657
1692
|
pp$3.currentThisScope = function() {
|
|
1658
1693
|
for (var i = this.scopeStack.length - 1; ; i--) {
|
|
1659
1694
|
var scope = this.scopeStack[i];
|
|
1660
|
-
if (scope.flags & SCOPE_VAR && !(scope.flags & SCOPE_ARROW))
|
|
1695
|
+
if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK) && !(scope.flags & SCOPE_ARROW))
|
|
1661
1696
|
return scope;
|
|
1662
1697
|
}
|
|
1663
1698
|
};
|
|
@@ -2728,11 +2763,8 @@ pp.readToken_numberSign = function() {
|
|
|
2728
2763
|
};
|
|
2729
2764
|
pp.getTokenFromCode = function(code) {
|
|
2730
2765
|
switch (code) {
|
|
2731
|
-
// The interpretation of a dot depends on whether it is followed
|
|
2732
|
-
// by a digit or another two dots.
|
|
2733
2766
|
case 46:
|
|
2734
2767
|
return this.readToken_dot();
|
|
2735
|
-
// Punctuation tokens.
|
|
2736
2768
|
case 40:
|
|
2737
2769
|
return ++this.pos, this.finishToken(types$1.parenL);
|
|
2738
2770
|
case 41:
|
|
@@ -2765,8 +2797,6 @@ pp.getTokenFromCode = function(code) {
|
|
|
2765
2797
|
if (next === 98 || next === 66)
|
|
2766
2798
|
return this.readRadixNumber(2);
|
|
2767
2799
|
}
|
|
2768
|
-
// Anything else beginning with a digit is an integer, octal
|
|
2769
|
-
// number, or float.
|
|
2770
2800
|
case 49:
|
|
2771
2801
|
case 50:
|
|
2772
2802
|
case 51:
|
|
@@ -2777,14 +2807,9 @@ pp.getTokenFromCode = function(code) {
|
|
|
2777
2807
|
case 56:
|
|
2778
2808
|
case 57:
|
|
2779
2809
|
return this.readNumber(!1);
|
|
2780
|
-
// Quotes produce strings.
|
|
2781
2810
|
case 34:
|
|
2782
2811
|
case 39:
|
|
2783
2812
|
return this.readString(code);
|
|
2784
|
-
// Operators are parsed inline in tiny state machines. '=' (61) is
|
|
2785
|
-
// often referred to. `finishOp` simply skips the amount of
|
|
2786
|
-
// characters it is given as second argument, and returns a token
|
|
2787
|
-
// of the type given by its first argument.
|
|
2788
2813
|
case 47:
|
|
2789
2814
|
return this.readToken_slash();
|
|
2790
2815
|
case 37:
|
|
@@ -2958,13 +2983,11 @@ pp.readInvalidTemplateToken = function() {
|
|
|
2958
2983
|
case "$":
|
|
2959
2984
|
if (this.input[this.pos + 1] !== "{")
|
|
2960
2985
|
break;
|
|
2961
|
-
// fall through
|
|
2962
2986
|
case "`":
|
|
2963
2987
|
return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos));
|
|
2964
2988
|
case "\r":
|
|
2965
2989
|
this.input[this.pos + 1] === `
|
|
2966
2990
|
` && ++this.pos;
|
|
2967
|
-
// fall through
|
|
2968
2991
|
case `
|
|
2969
2992
|
`:
|
|
2970
2993
|
case "\u2028":
|
|
@@ -2980,31 +3003,22 @@ pp.readEscapedChar = function(inTemplate) {
|
|
|
2980
3003
|
case 110:
|
|
2981
3004
|
return `
|
|
2982
3005
|
`;
|
|
2983
|
-
// 'n' -> '\n'
|
|
2984
3006
|
case 114:
|
|
2985
3007
|
return "\r";
|
|
2986
|
-
// 'r' -> '\r'
|
|
2987
3008
|
case 120:
|
|
2988
3009
|
return String.fromCharCode(this.readHexChar(2));
|
|
2989
|
-
// 'x'
|
|
2990
3010
|
case 117:
|
|
2991
3011
|
return codePointToString(this.readCodePoint());
|
|
2992
|
-
// 'u'
|
|
2993
3012
|
case 116:
|
|
2994
3013
|
return " ";
|
|
2995
|
-
// 't' -> '\t'
|
|
2996
3014
|
case 98:
|
|
2997
3015
|
return "\b";
|
|
2998
|
-
// 'b' -> '\b'
|
|
2999
3016
|
case 118:
|
|
3000
3017
|
return "\v";
|
|
3001
|
-
// 'v' -> '\u000b'
|
|
3002
3018
|
case 102:
|
|
3003
3019
|
return "\f";
|
|
3004
|
-
// 'f' -> '\f'
|
|
3005
3020
|
case 13:
|
|
3006
3021
|
this.input.charCodeAt(this.pos) === 10 && ++this.pos;
|
|
3007
|
-
// '\r\n'
|
|
3008
3022
|
case 10:
|
|
3009
3023
|
return this.options.locations && (this.lineStart = this.pos, ++this.curLine), "";
|
|
3010
3024
|
case 56:
|
|
@@ -3056,7 +3070,7 @@ pp.readWord = function() {
|
|
|
3056
3070
|
var word = this.readWord1(), type = types$1.name;
|
|
3057
3071
|
return this.keywords.test(word) && (type = keywords[word]), this.finishToken(type, word);
|
|
3058
3072
|
};
|
|
3059
|
-
var version = "8.
|
|
3073
|
+
var version = "8.15.0";
|
|
3060
3074
|
Parser.acorn = {
|
|
3061
3075
|
Parser,
|
|
3062
3076
|
version,
|
|
@@ -4206,7 +4220,7 @@ function createFile(file, options) {
|
|
|
4206
4220
|
return [file.name, { url: new URL(fixRelativeUrl(file.url, options.baseUrl ?? "")), mimeType: file.mime_type, toString: toString2 }];
|
|
4207
4221
|
}
|
|
4208
4222
|
function notebook(_files = [], _cells = [], { baseUrl = ".", importMode = "precompiled" } = {}) {
|
|
4209
|
-
const files = _files.map((f) => createFile(f, { baseUrl
|
|
4223
|
+
const files = _files.map((f) => createFile(f, { baseUrl })), fileAttachments = new Map(files), cells = new Map(_cells.map((c) => [c.id, c])), retVal = (runtime, inspector) => {
|
|
4210
4224
|
const main = runtime.module();
|
|
4211
4225
|
return main.builtin("FileAttachment", runtime.fileAttachments((name) => fileAttachments.get(name) ?? { url: new URL(fixRelativeUrl(name, baseUrl)), mimeType: null })), main.builtin("fetchEx", fetchEx), cells.forEach((cell) => {
|
|
4212
4226
|
cell(runtime, main, inspector);
|
|
@@ -4237,3 +4251,4 @@ export {
|
|
|
4237
4251
|
omd2notebook
|
|
4238
4252
|
};
|
|
4239
4253
|
//# sourceMappingURL=index.js.map
|
|
4254
|
+
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('@import"https://fonts.googleapis.com/css2?family=Source+Serif+Pro:ital,wght@0,400;0,600;0,700;1,400;1,600;1,700&display=swap";:root{--syntax-normal: #1b1e23;--syntax-comment: #828282;--syntax-number: #20a5ba;--syntax-keyword: #c30771;--syntax-atom: #10a778;--syntax-string: #008ec4;--syntax-error: #ffbedc;--syntax-unknown-variable: #838383;--syntax-known-variable: #005f87;--syntax-matchbracket: #20bbfc;--syntax-key: #6636b4;--mono-fonts: 82%/1.5 Menlo, Consolas, monospace}.observablehq--expanded,.observablehq--collapsed,.observablehq--function,.observablehq--import,.observablehq--string:before,.observablehq--string:after,.observablehq--gray{color:var(--syntax-normal)}.observablehq--collapsed,.observablehq--expanded.observablehq--inspect a{cursor:pointer}.observablehq--field{text-indent:-1em;margin-left:1em}.observablehq--empty{color:var(--syntax_comment)}a[href],.observablehq--keyword,.observablehq--blue{color:#3182bd}.hljs-deletion,.hljs-variable,.observablehq--forbidden,.observablehq--pink{color:#e377c2}.observablehq--orange{color:#e6550d}.observablehq--null,.observablehq--undefined,.observablehq--boolean,.hljs-literal{color:var(--syntax-atom)}.hljs-number,.hljs-regexp,.hljs-bullet,.hljs-link,.observablehq--bigint,.observablehq--number,.observablehq--date,.observablehq--regexp,.observablehq--symbol,.observablehq--green{color:var(--syntax-number)}.observablehq--index,.observablehq--key{color:var(--syntax-key)}.observablehq--prototype-key{color:#aaa}.observablehq--empty{font-style:oblique}.hljs-string,.hljs-meta,.hljs-symbol,.hljs-template-tag,.hljs-template-variable,.hljs-addition,.observablehq--string,.observablehq--purple{color:var(--syntax-string)}.observablehq--error,.observablehq--red{color:#e7040f}.observablehq:empty:after,.observablehq>link:only-child,.observablehq>style:only-child,.observablehq--inspect{font:var(--monospace-font);overflow-x:auto;display:block;padding:4px 0;white-space:pre}.observablehq--error .observablehq--inspect{word-break:break-all;white-space:pre-wrap}:root{--syntax-diff: #24292e;--syntax-diff-bg: #ffffff;--hr: rgba(0, 0, 0, .05);--monospace: Menlo, Consolas, monospace;--monospace-font: 14px/1.5 var(--monospace);--serif: "Source Serif Pro", "Iowan Old Style", "Apple Garamond", "Palatino Linotype", "Times New Roman", "Droid Serif", Times, serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--sans-serif: -apple-system, BlinkMacSystemFont, "avenir next", avenir, helvetica, "helvetica neue", ubuntu, roboto, noto, "segoe ui", arial, sans-serif}html{font:17px/1.5 var(--serif);-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#1b1e23}body{margin:0 14px}body.fullscreen{margin:0}h1,h2,h3,h4,h5,h6{color:#333;font-weight:700;line-height:1.15;margin-top:0;margin-bottom:.25rem}h2~p,h3~p,h4~p,h2~table,h3~table,h4~table{margin-top:0}.observablehq:first-of-type h1+h2{font-size:20px;font-style:italic;font-weight:400;margin-bottom:1rem}a[href]{text-decoration:none}a[href]:hover{text-decoration:underline}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{font-size:90%}pre,code,tt{font-family:var(--monospace);font-size:14px;line-height:1.5}img{max-width:calc(100vw - 28px)}p,table,figure,figcaption,h1,h2,h3,h4,h5,h6,.katex-display{max-width:640px}blockquote,ol,ul{max-width:600px}blockquote{margin:1rem 1.5rem}ul,ol{padding-left:28px}hr{height:1px;margin:1rem 0;padding:1rem 0;border:none;background:no-repeat center/100% 1px linear-gradient(to right,var(--hr),var(--hr))}pre{padding:2px 0}.observablehq--md-pre{overflow-x:auto}input:not([type]),input[type=email],input[type=number],input[type=password],input[type=range],input[type=search],input[type=tel],input[type=text],input[type=url]{width:240px}input,canvas,button{vertical-align:middle}button,input,textarea{accent-color:#3b5fc0}table{width:100%;border-collapse:collapse;font:13px/1.2 var(--sans-serif)}table pre,table code,table tt{font-size:inherit;line-height:inherit}th>pre:only-child,td>pre:only-child{margin:0;padding:0}th{color:#111;text-align:left;vertical-align:bottom}td{color:#444;vertical-align:top}th,td{padding:3px 6.5px 3px 0}th:last-child,td:last-child{padding-right:0}tr:not(:last-child){border-bottom:solid 1px #eee}thead tr{border-bottom:solid 1px #ccc}figure,table{margin:1rem 0}figure img{max-width:100%}figcaption{font:small var(--sans-serif);color:var(--syntax-unknown-variable)}.observablehq--caret{margin-right:4px;vertical-align:baseline}.observablehq--field{text-indent:-1rem;margin-left:1rem}.observablehq--prototype-key,.observablehq--empty,.hljs-comment{color:var(--syntax-comment)}.hljs-built_in{color:var(--syntax-known-variable)}.observablehq--unknown{color:var(--syntax-unknown-variable)}.hljs-keyword,.hljs-selector-tag,.hljs-section,.hljs-doctag,.hljs-type,.hljs-tag,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-strong{color:var(--syntax-keyword)}.observablehq{position:relative;margin:17px 0;min-height:1.5rem}.observablehq:before{content:"";position:absolute;left:-14px;top:0;bottom:1px;width:4px;transition:background-color .25s linear}.observablehq--running:before,.observablehq--changed:before{background-color:#a9b0bc;transition:none}.observablehq--error:before{background-color:#e7040f}.observablehq:not(.observablehq--running):empty:after{content:"<detached>";color:var(--syntax-comment);font-style:oblique}.observablehq>link:only-child,.observablehq>style:only-child{visibility:hidden;white-space:nowrap;color:var(--syntax-keyword)}.observablehq>link:only-child:before{content:"<link>";visibility:visible;text-decoration:none;pointer-events:none}.observablehq>style:only-child:before{content:"<style>";visibility:visible}.observablehq--inspect.observablehq--import{white-space:normal}.observablehq--inspect::-webkit-scrollbar{display:none}.observablehq--string-expand{margin-left:6px;padding:2px 6px;border-radius:2px;font-size:80%;background:#eee;color:var(--syntax-normal);cursor:pointer;vertical-align:middle;position:sticky;right:0}.observablehq--string-expand:hover,.observablehq--string-expand:active{background:#ddd}')),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
|