@hpcc-js/observablehq-compiler 3.3.1 → 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 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 && !this.currentVarScope().inClassFieldInit;
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 && !this.currentVarScope().inClassFieldInit;
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 scope = this.scopeStack[i];
324
- if (scope.inClassFieldInit || scope.flags & SCOPE_CLASS_STATIC_BLOCK)
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 (scope.flags & SCOPE_FUNCTION$1)
327
- return (scope.flags & SCOPE_ASYNC$1) > 0;
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, inClassFieldInit = ref2.inClassFieldInit;
333
- return (flags & SCOPE_SUPER) > 0 || inClassFieldInit || this.options.allowSuperOutsideMethod;
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 ref2 = this.currentThisScope(), flags = ref2.flags, inClassFieldInit = ref2.inClassFieldInit;
343
- return (flags & (SCOPE_FUNCTION$1 | SCOPE_CLASS_STATIC_BLOCK)) > 0 || inClassFieldInit;
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"), (this.type === types$1._in || this.options.ecmaVersion >= 6 && this.isContextual("of")) && init$1.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$1)) : (awaitAt > -1 && this.unexpected(awaitAt), this.parseFor(node, init$1));
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 startsWithLet = this.isContextual("let"), isForOf = !1, containsEsc = this.containsEsc, refDestructuringErrors = new DestructuringErrors(), initPos = this.start, init = awaitAt > -1 ? this.parseExprSubscripts(refDestructuringErrors, "await") : this.parseExpression(!0, refDestructuringErrors);
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
- if (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)) {
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
- prop.kind = prop.key.name, this.parsePropertyName(prop), prop.value = this.parseMethod(!1);
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.kind = "init", prop.method = !0, prop.value = this.parseMethod(isGenerator, isAsync)) : !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), prop.kind = "init", 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.shorthand = !0) : this.unexpected();
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().inClassFieldInit && 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)) {
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 = [], this.inClassFieldInit = !1;
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.14.0";
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, importMode })), fileAttachments = new Map(files), cells = new Map(_cells.map((c) => [c.id, c])), retVal = (runtime, inspector) => {
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)}})();