@rohal12/spindle 0.59.10 → 0.59.11
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/pkg/format.js +1 -1
- package/dist/pkg/headless.js +522 -342
- package/dist/pkg/macro-registry.json +1 -0
- package/dist/pkg/story-variables.js +480 -319
- package/package.json +1 -1
- package/src/components/macros/If.tsx +2 -7
- package/src/components/macros/SaveManager.tsx +5 -2
- package/src/components/macros/Switch.tsx +4 -2
- package/src/components/macros/WidgetInvocation.tsx +10 -13
- package/src/components/macros/branches.ts +20 -0
- package/src/hooks/use-modal-focus.ts +6 -1
- package/src/js-lexer.ts +18 -1
- package/src/markup/render.tsx +29 -10
- package/src/markup/spindle.peggy +11 -0
- package/src/styles.css +5 -0
- package/src/triggers.ts +4 -2
package/dist/pkg/headless.js
CHANGED
|
@@ -388,20 +388,23 @@ function peg$parse(input, options) {
|
|
|
388
388
|
SelectorsPrefix: peg$parseSelectorsPrefix
|
|
389
389
|
};
|
|
390
390
|
let peg$startRuleFunction = peg$parseMarkup;
|
|
391
|
-
const peg$c0 = "
|
|
392
|
-
const peg$c1 = "
|
|
393
|
-
const peg$c2 = "
|
|
394
|
-
const peg$c3 = "
|
|
395
|
-
const peg$c4 = "
|
|
396
|
-
const peg$c5 = "
|
|
397
|
-
const peg$c6 = "
|
|
398
|
-
const peg$c7 = "
|
|
399
|
-
const peg$c8 = "
|
|
400
|
-
const peg$c9 = "
|
|
401
|
-
const peg$c10 = "
|
|
402
|
-
const peg$c11 = "
|
|
403
|
-
const peg$c12 = "
|
|
404
|
-
const peg$c13 = "
|
|
391
|
+
const peg$c0 = "<!--";
|
|
392
|
+
const peg$c1 = ">";
|
|
393
|
+
const peg$c2 = "->";
|
|
394
|
+
const peg$c3 = "-->";
|
|
395
|
+
const peg$c4 = "\\";
|
|
396
|
+
const peg$c5 = "{";
|
|
397
|
+
const peg$c6 = "<";
|
|
398
|
+
const peg$c7 = "[";
|
|
399
|
+
const peg$c8 = "[[";
|
|
400
|
+
const peg$c9 = "]]";
|
|
401
|
+
const peg$c10 = " ";
|
|
402
|
+
const peg$c11 = "}";
|
|
403
|
+
const peg$c12 = "/";
|
|
404
|
+
const peg$c13 = "</";
|
|
405
|
+
const peg$c14 = "=";
|
|
406
|
+
const peg$c15 = "\"";
|
|
407
|
+
const peg$c16 = "'";
|
|
405
408
|
const peg$r0 = /^[^\\{[<]/;
|
|
406
409
|
const peg$r1 = /^[{}]/;
|
|
407
410
|
const peg$r2 = /^[$_@%(!\/a-zA-Z]/;
|
|
@@ -427,10 +430,14 @@ function peg$parse(input, options) {
|
|
|
427
430
|
"[",
|
|
428
431
|
"<"
|
|
429
432
|
], true, false, false);
|
|
430
|
-
const peg$e2 = peg$literalExpectation("
|
|
431
|
-
const peg$e3 = peg$
|
|
432
|
-
const peg$e4 = peg$literalExpectation("
|
|
433
|
-
const peg$e5 = peg$
|
|
433
|
+
const peg$e2 = peg$literalExpectation("<!--", false);
|
|
434
|
+
const peg$e3 = peg$literalExpectation(">", false);
|
|
435
|
+
const peg$e4 = peg$literalExpectation("->", false);
|
|
436
|
+
const peg$e5 = peg$literalExpectation("-->", false);
|
|
437
|
+
const peg$e6 = peg$literalExpectation("\\", false);
|
|
438
|
+
const peg$e7 = peg$classExpectation(["{", "}"], false, false, false);
|
|
439
|
+
const peg$e8 = peg$literalExpectation("{", false);
|
|
440
|
+
const peg$e9 = peg$classExpectation([
|
|
434
441
|
"$",
|
|
435
442
|
"_",
|
|
436
443
|
"@",
|
|
@@ -441,34 +448,34 @@ function peg$parse(input, options) {
|
|
|
441
448
|
["a", "z"],
|
|
442
449
|
["A", "Z"]
|
|
443
450
|
], false, false, false);
|
|
444
|
-
const peg$
|
|
445
|
-
const peg$
|
|
446
|
-
const peg$
|
|
447
|
-
const peg$
|
|
448
|
-
const peg$
|
|
449
|
-
const peg$
|
|
450
|
-
const peg$
|
|
451
|
+
const peg$e10 = peg$literalExpectation("<", false);
|
|
452
|
+
const peg$e11 = peg$literalExpectation("[", false);
|
|
453
|
+
const peg$e12 = peg$literalExpectation("[[", false);
|
|
454
|
+
const peg$e13 = peg$literalExpectation("]]", false);
|
|
455
|
+
const peg$e14 = peg$literalExpectation(" ", false);
|
|
456
|
+
const peg$e15 = peg$classExpectation([".", "#"], false, false, false);
|
|
457
|
+
const peg$e16 = peg$classExpectation([
|
|
451
458
|
["a", "z"],
|
|
452
459
|
["A", "Z"],
|
|
453
460
|
["0", "9"],
|
|
454
461
|
"_",
|
|
455
462
|
"-"
|
|
456
463
|
], false, false, false);
|
|
457
|
-
const peg$
|
|
464
|
+
const peg$e17 = peg$classExpectation([
|
|
458
465
|
"$",
|
|
459
466
|
"_",
|
|
460
467
|
"@",
|
|
461
468
|
"%"
|
|
462
469
|
], false, false, false);
|
|
463
|
-
const peg$
|
|
470
|
+
const peg$e18 = peg$classExpectation([
|
|
464
471
|
["a", "z"],
|
|
465
472
|
["A", "Z"],
|
|
466
473
|
["0", "9"],
|
|
467
474
|
"_",
|
|
468
475
|
"."
|
|
469
476
|
], false, false, false);
|
|
470
|
-
const peg$
|
|
471
|
-
const peg$
|
|
477
|
+
const peg$e19 = peg$literalExpectation("}", false);
|
|
478
|
+
const peg$e20 = peg$classExpectation([
|
|
472
479
|
"$",
|
|
473
480
|
"_",
|
|
474
481
|
"@",
|
|
@@ -476,9 +483,9 @@ function peg$parse(input, options) {
|
|
|
476
483
|
"(",
|
|
477
484
|
"!"
|
|
478
485
|
], false, false, false);
|
|
479
|
-
const peg$
|
|
480
|
-
const peg$
|
|
481
|
-
const peg$
|
|
486
|
+
const peg$e21 = peg$literalExpectation("/", false);
|
|
487
|
+
const peg$e22 = peg$classExpectation([["a", "z"], ["A", "Z"]], false, false, false);
|
|
488
|
+
const peg$e23 = peg$classExpectation([
|
|
482
489
|
" ",
|
|
483
490
|
" ",
|
|
484
491
|
"\n",
|
|
@@ -496,8 +503,7 @@ function peg$parse(input, options) {
|
|
|
496
503
|
"",
|
|
497
504
|
"}"
|
|
498
505
|
], true, false, false);
|
|
499
|
-
const peg$
|
|
500
|
-
const peg$e21 = peg$classExpectation([
|
|
506
|
+
const peg$e24 = peg$classExpectation([
|
|
501
507
|
[" ", "\r"],
|
|
502
508
|
" ",
|
|
503
509
|
"/",
|
|
@@ -511,14 +517,14 @@ function peg$parse(input, options) {
|
|
|
511
517
|
" ",
|
|
512
518
|
""
|
|
513
519
|
], false, false, false);
|
|
514
|
-
const peg$
|
|
515
|
-
const peg$
|
|
520
|
+
const peg$e25 = peg$literalExpectation("</", false);
|
|
521
|
+
const peg$e26 = peg$classExpectation([
|
|
516
522
|
["a", "z"],
|
|
517
523
|
["A", "Z"],
|
|
518
524
|
["0", "9"],
|
|
519
525
|
"-"
|
|
520
526
|
], false, false, false);
|
|
521
|
-
const peg$
|
|
527
|
+
const peg$e27 = peg$classExpectation([
|
|
522
528
|
[" ", "\r"],
|
|
523
529
|
" ",
|
|
524
530
|
"\"",
|
|
@@ -536,13 +542,13 @@ function peg$parse(input, options) {
|
|
|
536
542
|
" ",
|
|
537
543
|
""
|
|
538
544
|
], false, false, false);
|
|
539
|
-
const peg$
|
|
540
|
-
const peg$
|
|
541
|
-
const peg$
|
|
542
|
-
const peg$
|
|
543
|
-
const peg$
|
|
544
|
-
const peg$
|
|
545
|
-
const peg$
|
|
545
|
+
const peg$e28 = peg$literalExpectation("=", false);
|
|
546
|
+
const peg$e29 = peg$literalExpectation("\"", false);
|
|
547
|
+
const peg$e30 = peg$classExpectation(["\""], true, false, false);
|
|
548
|
+
const peg$e31 = peg$literalExpectation("'", false);
|
|
549
|
+
const peg$e32 = peg$classExpectation(["'"], true, false, false);
|
|
550
|
+
const peg$e33 = peg$classExpectation(["\"", "'"], false, false, false);
|
|
551
|
+
const peg$e34 = peg$classExpectation([
|
|
546
552
|
" ",
|
|
547
553
|
" ",
|
|
548
554
|
"\n",
|
|
@@ -560,7 +566,7 @@ function peg$parse(input, options) {
|
|
|
560
566
|
"",
|
|
561
567
|
">"
|
|
562
568
|
], true, false, false);
|
|
563
|
-
const peg$
|
|
569
|
+
const peg$e35 = peg$classExpectation([
|
|
564
570
|
" ",
|
|
565
571
|
" ",
|
|
566
572
|
"\n",
|
|
@@ -734,13 +740,16 @@ function peg$parse(input, options) {
|
|
|
734
740
|
function peg$f40(value) {
|
|
735
741
|
return lexeme("text", location(), { value });
|
|
736
742
|
}
|
|
737
|
-
function peg$f41(
|
|
743
|
+
function peg$f41(value) {
|
|
744
|
+
return lexeme("text", location(), { value });
|
|
745
|
+
}
|
|
746
|
+
function peg$f42(bs) {
|
|
738
747
|
return bs.length % 2 === 1;
|
|
739
748
|
}
|
|
740
|
-
function peg$
|
|
749
|
+
function peg$f43(bs, c) {
|
|
741
750
|
return c;
|
|
742
751
|
}
|
|
743
|
-
function peg$
|
|
752
|
+
function peg$f44(bs, brace) {
|
|
744
753
|
const loc = location();
|
|
745
754
|
const next = input.charAt(loc.end.offset);
|
|
746
755
|
if (textMode) {
|
|
@@ -757,76 +766,76 @@ function peg$parse(input, options) {
|
|
|
757
766
|
escaped.escape = true;
|
|
758
767
|
return bs.length > 1 ? [before, escaped] : escaped;
|
|
759
768
|
}
|
|
760
|
-
function peg$
|
|
769
|
+
function peg$f45() {
|
|
761
770
|
return lexeme("text", location(), { value: LB });
|
|
762
771
|
}
|
|
763
|
-
function peg$
|
|
772
|
+
function peg$f46() {
|
|
764
773
|
return !textMode;
|
|
765
774
|
}
|
|
766
|
-
function peg$
|
|
775
|
+
function peg$f47() {
|
|
767
776
|
return lexeme("text", location(), { value: "<" });
|
|
768
777
|
}
|
|
769
|
-
function peg$
|
|
778
|
+
function peg$f48() {
|
|
770
779
|
return lexeme("text", location(), { value: "[" });
|
|
771
780
|
}
|
|
772
|
-
function peg$
|
|
781
|
+
function peg$f49() {
|
|
773
782
|
return !textMode;
|
|
774
783
|
}
|
|
775
|
-
function peg$
|
|
784
|
+
function peg$f50(s, at, inner) {
|
|
776
785
|
return withSelectors(lexeme("link", location(), parseLink(inner, at)), s);
|
|
777
786
|
}
|
|
778
|
-
function peg$
|
|
787
|
+
function peg$f51() {
|
|
779
788
|
return !textMode;
|
|
780
789
|
}
|
|
781
|
-
function peg$
|
|
790
|
+
function peg$f52() {
|
|
782
791
|
fail("Unclosed link: [[ without ]]", location());
|
|
783
792
|
}
|
|
784
|
-
function peg$
|
|
793
|
+
function peg$f53(parts) {
|
|
785
794
|
return selectorsOf(parts);
|
|
786
795
|
}
|
|
787
|
-
function peg$
|
|
796
|
+
function peg$f54() {
|
|
788
797
|
return NO_SELECTORS;
|
|
789
798
|
}
|
|
790
|
-
function peg$
|
|
799
|
+
function peg$f55(s, end) {
|
|
791
800
|
return {
|
|
792
801
|
...s,
|
|
793
802
|
end
|
|
794
803
|
};
|
|
795
804
|
}
|
|
796
|
-
function peg$
|
|
805
|
+
function peg$f56(prefix, name) {
|
|
797
806
|
return [prefix, name];
|
|
798
807
|
}
|
|
799
|
-
function peg$
|
|
808
|
+
function peg$f57(s, sigil, name) {
|
|
800
809
|
return withSelectors(lexeme("variable", location(), {
|
|
801
810
|
name,
|
|
802
811
|
scope: SIGIL_SCOPES[sigil]
|
|
803
812
|
}), s);
|
|
804
813
|
}
|
|
805
|
-
function peg$
|
|
814
|
+
function peg$f58(s, expression) {
|
|
806
815
|
return withSelectors(lexeme("expression", location(), { expression }), s);
|
|
807
816
|
}
|
|
808
|
-
function peg$
|
|
817
|
+
function peg$f59() {
|
|
809
818
|
fail("Unclosed " + LB + input.substr(location().end.offset, 1) + "…: no } ends it", location());
|
|
810
819
|
}
|
|
811
|
-
function peg$
|
|
820
|
+
function peg$f60(start) {
|
|
812
821
|
return skipTo(hooks.closeBrace(input, start, start));
|
|
813
822
|
}
|
|
814
|
-
function peg$
|
|
823
|
+
function peg$f61(start) {
|
|
815
824
|
return skipEnd - offset();
|
|
816
825
|
}
|
|
817
|
-
function peg$
|
|
826
|
+
function peg$f62(start, code) {
|
|
818
827
|
return code;
|
|
819
828
|
}
|
|
820
|
-
function peg$
|
|
829
|
+
function peg$f63(s, start, close, name, nameEnd) {
|
|
821
830
|
return skipTo(hooks.closeBrace(input, nameEnd, start));
|
|
822
831
|
}
|
|
823
|
-
function peg$
|
|
832
|
+
function peg$f64(s, start, close, name, nameEnd) {
|
|
824
833
|
return skipEnd - offset();
|
|
825
834
|
}
|
|
826
|
-
function peg$
|
|
835
|
+
function peg$f65(s, start, close, name, nameEnd, args) {
|
|
827
836
|
return args;
|
|
828
837
|
}
|
|
829
|
-
function peg$
|
|
838
|
+
function peg$f66(s, start, close, name, nameEnd, tail) {
|
|
830
839
|
const loc = location();
|
|
831
840
|
const lower = name.toLowerCase();
|
|
832
841
|
const tag = lexeme("macro", loc, {
|
|
@@ -847,19 +856,19 @@ function peg$parse(input, options) {
|
|
|
847
856
|
}
|
|
848
857
|
return tag;
|
|
849
858
|
}
|
|
850
|
-
function peg$
|
|
859
|
+
function peg$f67(s) {
|
|
851
860
|
fail("A closing tag starts with a letter after " + LB + "/", location());
|
|
852
861
|
}
|
|
853
|
-
function peg$
|
|
862
|
+
function peg$f68() {
|
|
854
863
|
return !textMode;
|
|
855
864
|
}
|
|
856
|
-
function peg$
|
|
865
|
+
function peg$f69(tag) {
|
|
857
866
|
return VOID_TAGS.has(tag.lower);
|
|
858
867
|
}
|
|
859
|
-
function peg$
|
|
868
|
+
function peg$f70(tag) {
|
|
860
869
|
return null;
|
|
861
870
|
}
|
|
862
|
-
function peg$
|
|
871
|
+
function peg$f71(tag, list, slash) {
|
|
863
872
|
const lower = tag.toLowerCase();
|
|
864
873
|
return lexeme("html", location(), {
|
|
865
874
|
tag,
|
|
@@ -869,7 +878,7 @@ function peg$parse(input, options) {
|
|
|
869
878
|
isSelfClose: !!slash || VOID_TAGS.has(lower)
|
|
870
879
|
});
|
|
871
880
|
}
|
|
872
|
-
function peg$
|
|
881
|
+
function peg$f72(tag, bad) {
|
|
873
882
|
const c = input.charAt(bad);
|
|
874
883
|
if (!c) fail("Unclosed tag <" + tag + ": no > ends it (write < for a < that starts no tag)", location());
|
|
875
884
|
const at = {
|
|
@@ -887,7 +896,7 @@ function peg$parse(input, options) {
|
|
|
887
896
|
};
|
|
888
897
|
fail("Unexpected " + JSON.stringify(c) + " in the tag <" + tag + ">: expected an attribute, or > to end the tag", at);
|
|
889
898
|
}
|
|
890
|
-
function peg$
|
|
899
|
+
function peg$f73(tag) {
|
|
891
900
|
return lexeme("html", location(), {
|
|
892
901
|
tag,
|
|
893
902
|
lower: tag.toLowerCase(),
|
|
@@ -896,44 +905,44 @@ function peg$parse(input, options) {
|
|
|
896
905
|
isSelfClose: false
|
|
897
906
|
});
|
|
898
907
|
}
|
|
899
|
-
function peg$
|
|
908
|
+
function peg$f74(name) {
|
|
900
909
|
attrCode = hooks.isCodeAttribute(name);
|
|
901
910
|
return true;
|
|
902
911
|
}
|
|
903
|
-
function peg$
|
|
912
|
+
function peg$f75(name, v) {
|
|
904
913
|
return v;
|
|
905
914
|
}
|
|
906
|
-
function peg$
|
|
915
|
+
function peg$f76(name, value) {
|
|
907
916
|
return [name, value ?? ""];
|
|
908
917
|
}
|
|
909
|
-
function peg$
|
|
918
|
+
function peg$f77(v) {
|
|
910
919
|
return v;
|
|
911
920
|
}
|
|
912
|
-
function peg$
|
|
921
|
+
function peg$f78(v) {
|
|
913
922
|
return v;
|
|
914
923
|
}
|
|
915
|
-
function peg$
|
|
924
|
+
function peg$f79(q) {
|
|
916
925
|
fail("Unclosed attribute value: the " + q + " here has no closing " + q, location());
|
|
917
926
|
}
|
|
918
|
-
function peg$
|
|
927
|
+
function peg$f80() {
|
|
919
928
|
return !attrCode;
|
|
920
929
|
}
|
|
921
|
-
function peg$
|
|
930
|
+
function peg$f81(bs) {
|
|
922
931
|
return bs.length % 2 === 1;
|
|
923
932
|
}
|
|
924
|
-
function peg$
|
|
933
|
+
function peg$f82() {
|
|
925
934
|
return !attrCode;
|
|
926
935
|
}
|
|
927
|
-
function peg$
|
|
936
|
+
function peg$f83(start, nameEnd) {
|
|
928
937
|
return skipTo(hooks.closeBrace(input, nameEnd, start));
|
|
929
938
|
}
|
|
930
|
-
function peg$
|
|
939
|
+
function peg$f84(start, nameEnd) {
|
|
931
940
|
return skipEnd - offset();
|
|
932
941
|
}
|
|
933
|
-
function peg$
|
|
942
|
+
function peg$f85() {
|
|
934
943
|
return !attrCode;
|
|
935
944
|
}
|
|
936
|
-
function peg$
|
|
945
|
+
function peg$f86() {
|
|
937
946
|
return attrCode;
|
|
938
947
|
}
|
|
939
948
|
let peg$currPos = options.peg$currPos | 0;
|
|
@@ -1120,16 +1129,19 @@ function peg$parse(input, options) {
|
|
|
1120
1129
|
if (s0 === peg$FAILED) {
|
|
1121
1130
|
s0 = peg$parseEscape();
|
|
1122
1131
|
if (s0 === peg$FAILED) {
|
|
1123
|
-
s0 = peg$
|
|
1132
|
+
s0 = peg$parseComment();
|
|
1124
1133
|
if (s0 === peg$FAILED) {
|
|
1125
|
-
s0 = peg$
|
|
1134
|
+
s0 = peg$parseLinkLexeme();
|
|
1126
1135
|
if (s0 === peg$FAILED) {
|
|
1127
|
-
s0 = peg$
|
|
1136
|
+
s0 = peg$parseHtmlElement();
|
|
1128
1137
|
if (s0 === peg$FAILED) {
|
|
1129
|
-
s0 = peg$
|
|
1138
|
+
s0 = peg$parseVoidCloser();
|
|
1130
1139
|
if (s0 === peg$FAILED) {
|
|
1131
|
-
s0 = peg$
|
|
1132
|
-
if (s0 === peg$FAILED)
|
|
1140
|
+
s0 = peg$parseValue();
|
|
1141
|
+
if (s0 === peg$FAILED) {
|
|
1142
|
+
s0 = peg$parseMacroElement();
|
|
1143
|
+
if (s0 === peg$FAILED) s0 = peg$parseLiteral();
|
|
1144
|
+
}
|
|
1133
1145
|
}
|
|
1134
1146
|
}
|
|
1135
1147
|
}
|
|
@@ -1472,37 +1484,20 @@ function peg$parse(input, options) {
|
|
|
1472
1484
|
if (s0 === peg$FAILED) {
|
|
1473
1485
|
s0 = peg$parseEscape();
|
|
1474
1486
|
if (s0 === peg$FAILED) {
|
|
1475
|
-
s0 = peg$
|
|
1487
|
+
s0 = peg$parseComment();
|
|
1476
1488
|
if (s0 === peg$FAILED) {
|
|
1477
|
-
s0 = peg$
|
|
1478
|
-
peg$savedPos = peg$currPos;
|
|
1479
|
-
s1 = peg$f29();
|
|
1480
|
-
if (s1) s1 = void 0;
|
|
1481
|
-
else s1 = peg$FAILED;
|
|
1482
|
-
if (s1 !== peg$FAILED) {
|
|
1483
|
-
s2 = peg$parseHtmlOpen();
|
|
1484
|
-
if (s2 !== peg$FAILED) {
|
|
1485
|
-
peg$savedPos = s0;
|
|
1486
|
-
s0 = peg$f30(s2);
|
|
1487
|
-
} else {
|
|
1488
|
-
peg$currPos = s0;
|
|
1489
|
-
s0 = peg$FAILED;
|
|
1490
|
-
}
|
|
1491
|
-
} else {
|
|
1492
|
-
peg$currPos = s0;
|
|
1493
|
-
s0 = peg$FAILED;
|
|
1494
|
-
}
|
|
1489
|
+
s0 = peg$parseLinkLexeme();
|
|
1495
1490
|
if (s0 === peg$FAILED) {
|
|
1496
1491
|
s0 = peg$currPos;
|
|
1497
1492
|
peg$savedPos = peg$currPos;
|
|
1498
|
-
s1 = peg$
|
|
1493
|
+
s1 = peg$f29();
|
|
1499
1494
|
if (s1) s1 = void 0;
|
|
1500
1495
|
else s1 = peg$FAILED;
|
|
1501
1496
|
if (s1 !== peg$FAILED) {
|
|
1502
|
-
s2 = peg$
|
|
1497
|
+
s2 = peg$parseHtmlOpen();
|
|
1503
1498
|
if (s2 !== peg$FAILED) {
|
|
1504
1499
|
peg$savedPos = s0;
|
|
1505
|
-
s0 = peg$
|
|
1500
|
+
s0 = peg$f30(s2);
|
|
1506
1501
|
} else {
|
|
1507
1502
|
peg$currPos = s0;
|
|
1508
1503
|
s0 = peg$FAILED;
|
|
@@ -1512,37 +1507,57 @@ function peg$parse(input, options) {
|
|
|
1512
1507
|
s0 = peg$FAILED;
|
|
1513
1508
|
}
|
|
1514
1509
|
if (s0 === peg$FAILED) {
|
|
1515
|
-
s0 = peg$
|
|
1510
|
+
s0 = peg$currPos;
|
|
1511
|
+
peg$savedPos = peg$currPos;
|
|
1512
|
+
s1 = peg$f31();
|
|
1513
|
+
if (s1) s1 = void 0;
|
|
1514
|
+
else s1 = peg$FAILED;
|
|
1515
|
+
if (s1 !== peg$FAILED) {
|
|
1516
|
+
s2 = peg$parseHtmlClose();
|
|
1517
|
+
if (s2 !== peg$FAILED) {
|
|
1518
|
+
peg$savedPos = s0;
|
|
1519
|
+
s0 = peg$f32(s2);
|
|
1520
|
+
} else {
|
|
1521
|
+
peg$currPos = s0;
|
|
1522
|
+
s0 = peg$FAILED;
|
|
1523
|
+
}
|
|
1524
|
+
} else {
|
|
1525
|
+
peg$currPos = s0;
|
|
1526
|
+
s0 = peg$FAILED;
|
|
1527
|
+
}
|
|
1516
1528
|
if (s0 === peg$FAILED) {
|
|
1517
|
-
s0 = peg$
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
if (
|
|
1528
|
-
|
|
1529
|
-
|
|
1529
|
+
s0 = peg$parseValue();
|
|
1530
|
+
if (s0 === peg$FAILED) {
|
|
1531
|
+
s0 = peg$currPos;
|
|
1532
|
+
s1 = peg$parseMacroTag();
|
|
1533
|
+
if (s1 !== peg$FAILED) {
|
|
1534
|
+
s2 = peg$currPos;
|
|
1535
|
+
peg$savedPos = peg$currPos;
|
|
1536
|
+
s3 = peg$f33(s1);
|
|
1537
|
+
if (s3) s3 = void 0;
|
|
1538
|
+
else s3 = peg$FAILED;
|
|
1539
|
+
if (s3 !== peg$FAILED) {
|
|
1540
|
+
s4 = peg$parseRawTokens();
|
|
1541
|
+
if (s4 !== peg$FAILED) {
|
|
1542
|
+
peg$savedPos = s2;
|
|
1543
|
+
s2 = peg$f34(s1, s4);
|
|
1544
|
+
} else {
|
|
1545
|
+
peg$currPos = s2;
|
|
1546
|
+
s2 = peg$FAILED;
|
|
1547
|
+
}
|
|
1530
1548
|
} else {
|
|
1531
1549
|
peg$currPos = s2;
|
|
1532
1550
|
s2 = peg$FAILED;
|
|
1533
1551
|
}
|
|
1552
|
+
if (s2 === peg$FAILED) s2 = null;
|
|
1553
|
+
peg$savedPos = s0;
|
|
1554
|
+
s0 = peg$f35(s1, s2);
|
|
1534
1555
|
} else {
|
|
1535
|
-
peg$currPos =
|
|
1536
|
-
|
|
1556
|
+
peg$currPos = s0;
|
|
1557
|
+
s0 = peg$FAILED;
|
|
1537
1558
|
}
|
|
1538
|
-
if (
|
|
1539
|
-
peg$savedPos = s0;
|
|
1540
|
-
s0 = peg$f35(s1, s2);
|
|
1541
|
-
} else {
|
|
1542
|
-
peg$currPos = s0;
|
|
1543
|
-
s0 = peg$FAILED;
|
|
1559
|
+
if (s0 === peg$FAILED) s0 = peg$parseLiteral();
|
|
1544
1560
|
}
|
|
1545
|
-
if (s0 === peg$FAILED) s0 = peg$parseLiteral();
|
|
1546
1561
|
}
|
|
1547
1562
|
}
|
|
1548
1563
|
}
|
|
@@ -1648,26 +1663,166 @@ function peg$parse(input, options) {
|
|
|
1648
1663
|
s0 = s1;
|
|
1649
1664
|
return s0;
|
|
1650
1665
|
}
|
|
1666
|
+
function peg$parseComment() {
|
|
1667
|
+
let s0, s1, s2, s3, s4, s5, s6, s7, s8;
|
|
1668
|
+
s0 = peg$currPos;
|
|
1669
|
+
s1 = peg$currPos;
|
|
1670
|
+
s2 = peg$currPos;
|
|
1671
|
+
if (input.substr(peg$currPos, 4) === peg$c0) {
|
|
1672
|
+
s3 = peg$c0;
|
|
1673
|
+
peg$currPos += 4;
|
|
1674
|
+
} else {
|
|
1675
|
+
s3 = peg$FAILED;
|
|
1676
|
+
if (peg$silentFails === 0) peg$fail(peg$e2);
|
|
1677
|
+
}
|
|
1678
|
+
if (s3 !== peg$FAILED) {
|
|
1679
|
+
if (input.charCodeAt(peg$currPos) === 62) {
|
|
1680
|
+
s4 = peg$c1;
|
|
1681
|
+
peg$currPos++;
|
|
1682
|
+
} else {
|
|
1683
|
+
s4 = peg$FAILED;
|
|
1684
|
+
if (peg$silentFails === 0) peg$fail(peg$e3);
|
|
1685
|
+
}
|
|
1686
|
+
if (s4 === peg$FAILED) {
|
|
1687
|
+
if (input.substr(peg$currPos, 2) === peg$c2) {
|
|
1688
|
+
s4 = peg$c2;
|
|
1689
|
+
peg$currPos += 2;
|
|
1690
|
+
} else {
|
|
1691
|
+
s4 = peg$FAILED;
|
|
1692
|
+
if (peg$silentFails === 0) peg$fail(peg$e4);
|
|
1693
|
+
}
|
|
1694
|
+
if (s4 === peg$FAILED) {
|
|
1695
|
+
s4 = peg$currPos;
|
|
1696
|
+
s5 = [];
|
|
1697
|
+
s6 = peg$currPos;
|
|
1698
|
+
s7 = peg$currPos;
|
|
1699
|
+
peg$silentFails++;
|
|
1700
|
+
if (input.substr(peg$currPos, 3) === peg$c3) {
|
|
1701
|
+
s8 = peg$c3;
|
|
1702
|
+
peg$currPos += 3;
|
|
1703
|
+
} else {
|
|
1704
|
+
s8 = peg$FAILED;
|
|
1705
|
+
if (peg$silentFails === 0) peg$fail(peg$e5);
|
|
1706
|
+
}
|
|
1707
|
+
peg$silentFails--;
|
|
1708
|
+
if (s8 === peg$FAILED) s7 = void 0;
|
|
1709
|
+
else {
|
|
1710
|
+
peg$currPos = s7;
|
|
1711
|
+
s7 = peg$FAILED;
|
|
1712
|
+
}
|
|
1713
|
+
if (s7 !== peg$FAILED) {
|
|
1714
|
+
if (input.length > peg$currPos) {
|
|
1715
|
+
s8 = input.charAt(peg$currPos);
|
|
1716
|
+
peg$currPos++;
|
|
1717
|
+
} else {
|
|
1718
|
+
s8 = peg$FAILED;
|
|
1719
|
+
if (peg$silentFails === 0) peg$fail(peg$e0);
|
|
1720
|
+
}
|
|
1721
|
+
if (s8 !== peg$FAILED) {
|
|
1722
|
+
s7 = [s7, s8];
|
|
1723
|
+
s6 = s7;
|
|
1724
|
+
} else {
|
|
1725
|
+
peg$currPos = s6;
|
|
1726
|
+
s6 = peg$FAILED;
|
|
1727
|
+
}
|
|
1728
|
+
} else {
|
|
1729
|
+
peg$currPos = s6;
|
|
1730
|
+
s6 = peg$FAILED;
|
|
1731
|
+
}
|
|
1732
|
+
while (s6 !== peg$FAILED) {
|
|
1733
|
+
s5.push(s6);
|
|
1734
|
+
s6 = peg$currPos;
|
|
1735
|
+
s7 = peg$currPos;
|
|
1736
|
+
peg$silentFails++;
|
|
1737
|
+
if (input.substr(peg$currPos, 3) === peg$c3) {
|
|
1738
|
+
s8 = peg$c3;
|
|
1739
|
+
peg$currPos += 3;
|
|
1740
|
+
} else {
|
|
1741
|
+
s8 = peg$FAILED;
|
|
1742
|
+
if (peg$silentFails === 0) peg$fail(peg$e5);
|
|
1743
|
+
}
|
|
1744
|
+
peg$silentFails--;
|
|
1745
|
+
if (s8 === peg$FAILED) s7 = void 0;
|
|
1746
|
+
else {
|
|
1747
|
+
peg$currPos = s7;
|
|
1748
|
+
s7 = peg$FAILED;
|
|
1749
|
+
}
|
|
1750
|
+
if (s7 !== peg$FAILED) {
|
|
1751
|
+
if (input.length > peg$currPos) {
|
|
1752
|
+
s8 = input.charAt(peg$currPos);
|
|
1753
|
+
peg$currPos++;
|
|
1754
|
+
} else {
|
|
1755
|
+
s8 = peg$FAILED;
|
|
1756
|
+
if (peg$silentFails === 0) peg$fail(peg$e0);
|
|
1757
|
+
}
|
|
1758
|
+
if (s8 !== peg$FAILED) {
|
|
1759
|
+
s7 = [s7, s8];
|
|
1760
|
+
s6 = s7;
|
|
1761
|
+
} else {
|
|
1762
|
+
peg$currPos = s6;
|
|
1763
|
+
s6 = peg$FAILED;
|
|
1764
|
+
}
|
|
1765
|
+
} else {
|
|
1766
|
+
peg$currPos = s6;
|
|
1767
|
+
s6 = peg$FAILED;
|
|
1768
|
+
}
|
|
1769
|
+
}
|
|
1770
|
+
if (input.substr(peg$currPos, 3) === peg$c3) {
|
|
1771
|
+
s6 = peg$c3;
|
|
1772
|
+
peg$currPos += 3;
|
|
1773
|
+
} else {
|
|
1774
|
+
s6 = peg$FAILED;
|
|
1775
|
+
if (peg$silentFails === 0) peg$fail(peg$e5);
|
|
1776
|
+
}
|
|
1777
|
+
if (s6 !== peg$FAILED) {
|
|
1778
|
+
s5 = [s5, s6];
|
|
1779
|
+
s4 = s5;
|
|
1780
|
+
} else {
|
|
1781
|
+
peg$currPos = s4;
|
|
1782
|
+
s4 = peg$FAILED;
|
|
1783
|
+
}
|
|
1784
|
+
}
|
|
1785
|
+
}
|
|
1786
|
+
if (s4 !== peg$FAILED) {
|
|
1787
|
+
s3 = [s3, s4];
|
|
1788
|
+
s2 = s3;
|
|
1789
|
+
} else {
|
|
1790
|
+
peg$currPos = s2;
|
|
1791
|
+
s2 = peg$FAILED;
|
|
1792
|
+
}
|
|
1793
|
+
} else {
|
|
1794
|
+
peg$currPos = s2;
|
|
1795
|
+
s2 = peg$FAILED;
|
|
1796
|
+
}
|
|
1797
|
+
if (s2 !== peg$FAILED) s1 = input.substring(s1, peg$currPos);
|
|
1798
|
+
else s1 = s2;
|
|
1799
|
+
if (s1 !== peg$FAILED) {
|
|
1800
|
+
peg$savedPos = s0;
|
|
1801
|
+
s1 = peg$f41(s1);
|
|
1802
|
+
}
|
|
1803
|
+
s0 = s1;
|
|
1804
|
+
return s0;
|
|
1805
|
+
}
|
|
1651
1806
|
function peg$parseEscape() {
|
|
1652
1807
|
let s0, s1, s2, s3, s4;
|
|
1653
1808
|
s0 = peg$currPos;
|
|
1654
1809
|
s1 = peg$currPos;
|
|
1655
1810
|
s2 = [];
|
|
1656
1811
|
if (input.charCodeAt(peg$currPos) === 92) {
|
|
1657
|
-
s3 = peg$
|
|
1812
|
+
s3 = peg$c4;
|
|
1658
1813
|
peg$currPos++;
|
|
1659
1814
|
} else {
|
|
1660
1815
|
s3 = peg$FAILED;
|
|
1661
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
1816
|
+
if (peg$silentFails === 0) peg$fail(peg$e6);
|
|
1662
1817
|
}
|
|
1663
1818
|
if (s3 !== peg$FAILED) while (s3 !== peg$FAILED) {
|
|
1664
1819
|
s2.push(s3);
|
|
1665
1820
|
if (input.charCodeAt(peg$currPos) === 92) {
|
|
1666
|
-
s3 = peg$
|
|
1821
|
+
s3 = peg$c4;
|
|
1667
1822
|
peg$currPos++;
|
|
1668
1823
|
} else {
|
|
1669
1824
|
s3 = peg$FAILED;
|
|
1670
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
1825
|
+
if (peg$silentFails === 0) peg$fail(peg$e6);
|
|
1671
1826
|
}
|
|
1672
1827
|
}
|
|
1673
1828
|
else s2 = peg$FAILED;
|
|
@@ -1676,7 +1831,7 @@ function peg$parse(input, options) {
|
|
|
1676
1831
|
if (s1 !== peg$FAILED) {
|
|
1677
1832
|
s2 = peg$currPos;
|
|
1678
1833
|
peg$savedPos = peg$currPos;
|
|
1679
|
-
s3 = peg$
|
|
1834
|
+
s3 = peg$f42(s1);
|
|
1680
1835
|
if (s3) s3 = void 0;
|
|
1681
1836
|
else s3 = peg$FAILED;
|
|
1682
1837
|
if (s3 !== peg$FAILED) {
|
|
@@ -1684,11 +1839,11 @@ function peg$parse(input, options) {
|
|
|
1684
1839
|
if (peg$r1.test(s4)) peg$currPos++;
|
|
1685
1840
|
else {
|
|
1686
1841
|
s4 = peg$FAILED;
|
|
1687
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
1842
|
+
if (peg$silentFails === 0) peg$fail(peg$e7);
|
|
1688
1843
|
}
|
|
1689
1844
|
if (s4 !== peg$FAILED) {
|
|
1690
1845
|
peg$savedPos = s2;
|
|
1691
|
-
s2 = peg$
|
|
1846
|
+
s2 = peg$f43(s1, s4);
|
|
1692
1847
|
} else {
|
|
1693
1848
|
peg$currPos = s2;
|
|
1694
1849
|
s2 = peg$FAILED;
|
|
@@ -1699,7 +1854,7 @@ function peg$parse(input, options) {
|
|
|
1699
1854
|
}
|
|
1700
1855
|
if (s2 === peg$FAILED) s2 = null;
|
|
1701
1856
|
peg$savedPos = s0;
|
|
1702
|
-
s0 = peg$
|
|
1857
|
+
s0 = peg$f44(s1, s2);
|
|
1703
1858
|
} else {
|
|
1704
1859
|
peg$currPos = s0;
|
|
1705
1860
|
s0 = peg$FAILED;
|
|
@@ -1710,11 +1865,11 @@ function peg$parse(input, options) {
|
|
|
1710
1865
|
let s0, s1, s2, s3, s4, s5;
|
|
1711
1866
|
s0 = peg$currPos;
|
|
1712
1867
|
if (input.charCodeAt(peg$currPos) === 123) {
|
|
1713
|
-
s1 = peg$
|
|
1868
|
+
s1 = peg$c5;
|
|
1714
1869
|
peg$currPos++;
|
|
1715
1870
|
} else {
|
|
1716
1871
|
s1 = peg$FAILED;
|
|
1717
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
1872
|
+
if (peg$silentFails === 0) peg$fail(peg$e8);
|
|
1718
1873
|
}
|
|
1719
1874
|
if (s1 !== peg$FAILED) {
|
|
1720
1875
|
s2 = peg$currPos;
|
|
@@ -1726,7 +1881,7 @@ function peg$parse(input, options) {
|
|
|
1726
1881
|
if (peg$r2.test(s5)) peg$currPos++;
|
|
1727
1882
|
else {
|
|
1728
1883
|
s5 = peg$FAILED;
|
|
1729
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
1884
|
+
if (peg$silentFails === 0) peg$fail(peg$e9);
|
|
1730
1885
|
}
|
|
1731
1886
|
if (s5 !== peg$FAILED) {
|
|
1732
1887
|
s4 = [s4, s5];
|
|
@@ -1747,7 +1902,7 @@ function peg$parse(input, options) {
|
|
|
1747
1902
|
}
|
|
1748
1903
|
if (s2 !== peg$FAILED) {
|
|
1749
1904
|
peg$savedPos = s0;
|
|
1750
|
-
s0 = peg$
|
|
1905
|
+
s0 = peg$f45();
|
|
1751
1906
|
} else {
|
|
1752
1907
|
peg$currPos = s0;
|
|
1753
1908
|
s0 = peg$FAILED;
|
|
@@ -1762,7 +1917,7 @@ function peg$parse(input, options) {
|
|
|
1762
1917
|
peg$silentFails++;
|
|
1763
1918
|
s2 = peg$currPos;
|
|
1764
1919
|
peg$savedPos = peg$currPos;
|
|
1765
|
-
s3 = peg$
|
|
1920
|
+
s3 = peg$f46();
|
|
1766
1921
|
if (s3) s3 = void 0;
|
|
1767
1922
|
else s3 = peg$FAILED;
|
|
1768
1923
|
if (s3 !== peg$FAILED) {
|
|
@@ -1786,15 +1941,15 @@ function peg$parse(input, options) {
|
|
|
1786
1941
|
}
|
|
1787
1942
|
if (s1 !== peg$FAILED) {
|
|
1788
1943
|
if (input.charCodeAt(peg$currPos) === 60) {
|
|
1789
|
-
s2 = peg$
|
|
1944
|
+
s2 = peg$c6;
|
|
1790
1945
|
peg$currPos++;
|
|
1791
1946
|
} else {
|
|
1792
1947
|
s2 = peg$FAILED;
|
|
1793
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
1948
|
+
if (peg$silentFails === 0) peg$fail(peg$e10);
|
|
1794
1949
|
}
|
|
1795
1950
|
if (s2 !== peg$FAILED) {
|
|
1796
1951
|
peg$savedPos = s0;
|
|
1797
|
-
s0 = peg$
|
|
1952
|
+
s0 = peg$f47();
|
|
1798
1953
|
} else {
|
|
1799
1954
|
peg$currPos = s0;
|
|
1800
1955
|
s0 = peg$FAILED;
|
|
@@ -1806,15 +1961,15 @@ function peg$parse(input, options) {
|
|
|
1806
1961
|
if (s0 === peg$FAILED) {
|
|
1807
1962
|
s0 = peg$currPos;
|
|
1808
1963
|
if (input.charCodeAt(peg$currPos) === 91) {
|
|
1809
|
-
s1 = peg$
|
|
1964
|
+
s1 = peg$c7;
|
|
1810
1965
|
peg$currPos++;
|
|
1811
1966
|
} else {
|
|
1812
1967
|
s1 = peg$FAILED;
|
|
1813
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
1968
|
+
if (peg$silentFails === 0) peg$fail(peg$e11);
|
|
1814
1969
|
}
|
|
1815
1970
|
if (s1 !== peg$FAILED) {
|
|
1816
1971
|
peg$savedPos = s0;
|
|
1817
|
-
s1 = peg$
|
|
1972
|
+
s1 = peg$f48();
|
|
1818
1973
|
}
|
|
1819
1974
|
s0 = s1;
|
|
1820
1975
|
}
|
|
@@ -1825,16 +1980,16 @@ function peg$parse(input, options) {
|
|
|
1825
1980
|
let s0, s1, s2, s3, s4, s5, s6;
|
|
1826
1981
|
s0 = peg$currPos;
|
|
1827
1982
|
peg$savedPos = peg$currPos;
|
|
1828
|
-
s1 = peg$
|
|
1983
|
+
s1 = peg$f49();
|
|
1829
1984
|
if (s1) s1 = void 0;
|
|
1830
1985
|
else s1 = peg$FAILED;
|
|
1831
1986
|
if (s1 !== peg$FAILED) {
|
|
1832
|
-
if (input.substr(peg$currPos, 2) === peg$
|
|
1833
|
-
s2 = peg$
|
|
1987
|
+
if (input.substr(peg$currPos, 2) === peg$c8) {
|
|
1988
|
+
s2 = peg$c8;
|
|
1834
1989
|
peg$currPos += 2;
|
|
1835
1990
|
} else {
|
|
1836
1991
|
s2 = peg$FAILED;
|
|
1837
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
1992
|
+
if (peg$silentFails === 0) peg$fail(peg$e12);
|
|
1838
1993
|
}
|
|
1839
1994
|
if (s2 !== peg$FAILED) {
|
|
1840
1995
|
s3 = peg$parseSelectors();
|
|
@@ -1843,16 +1998,16 @@ function peg$parse(input, options) {
|
|
|
1843
1998
|
s5 = peg$currPos;
|
|
1844
1999
|
s6 = peg$parseLinkText();
|
|
1845
2000
|
s5 = input.substring(s5, peg$currPos);
|
|
1846
|
-
if (input.substr(peg$currPos, 2) === peg$
|
|
1847
|
-
s6 = peg$
|
|
2001
|
+
if (input.substr(peg$currPos, 2) === peg$c9) {
|
|
2002
|
+
s6 = peg$c9;
|
|
1848
2003
|
peg$currPos += 2;
|
|
1849
2004
|
} else {
|
|
1850
2005
|
s6 = peg$FAILED;
|
|
1851
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2006
|
+
if (peg$silentFails === 0) peg$fail(peg$e13);
|
|
1852
2007
|
}
|
|
1853
2008
|
if (s6 !== peg$FAILED) {
|
|
1854
2009
|
peg$savedPos = s0;
|
|
1855
|
-
s0 = peg$
|
|
2010
|
+
s0 = peg$f50(s3, s4, s5);
|
|
1856
2011
|
} else {
|
|
1857
2012
|
peg$currPos = s0;
|
|
1858
2013
|
s0 = peg$FAILED;
|
|
@@ -1872,20 +2027,20 @@ function peg$parse(input, options) {
|
|
|
1872
2027
|
if (s0 === peg$FAILED) {
|
|
1873
2028
|
s0 = peg$currPos;
|
|
1874
2029
|
peg$savedPos = peg$currPos;
|
|
1875
|
-
s1 = peg$
|
|
2030
|
+
s1 = peg$f51();
|
|
1876
2031
|
if (s1) s1 = void 0;
|
|
1877
2032
|
else s1 = peg$FAILED;
|
|
1878
2033
|
if (s1 !== peg$FAILED) {
|
|
1879
|
-
if (input.substr(peg$currPos, 2) === peg$
|
|
1880
|
-
s2 = peg$
|
|
2034
|
+
if (input.substr(peg$currPos, 2) === peg$c8) {
|
|
2035
|
+
s2 = peg$c8;
|
|
1881
2036
|
peg$currPos += 2;
|
|
1882
2037
|
} else {
|
|
1883
2038
|
s2 = peg$FAILED;
|
|
1884
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2039
|
+
if (peg$silentFails === 0) peg$fail(peg$e12);
|
|
1885
2040
|
}
|
|
1886
2041
|
if (s2 !== peg$FAILED) {
|
|
1887
2042
|
peg$savedPos = s0;
|
|
1888
|
-
s0 = peg$
|
|
2043
|
+
s0 = peg$f52();
|
|
1889
2044
|
} else {
|
|
1890
2045
|
peg$currPos = s0;
|
|
1891
2046
|
s0 = peg$FAILED;
|
|
@@ -1903,19 +2058,19 @@ function peg$parse(input, options) {
|
|
|
1903
2058
|
s1 = peg$currPos;
|
|
1904
2059
|
s2 = peg$currPos;
|
|
1905
2060
|
peg$silentFails++;
|
|
1906
|
-
if (input.substr(peg$currPos, 2) === peg$
|
|
1907
|
-
s3 = peg$
|
|
2061
|
+
if (input.substr(peg$currPos, 2) === peg$c9) {
|
|
2062
|
+
s3 = peg$c9;
|
|
1908
2063
|
peg$currPos += 2;
|
|
1909
2064
|
} else {
|
|
1910
2065
|
s3 = peg$FAILED;
|
|
1911
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2066
|
+
if (peg$silentFails === 0) peg$fail(peg$e13);
|
|
1912
2067
|
}
|
|
1913
|
-
if (s3 === peg$FAILED) if (input.substr(peg$currPos, 2) === peg$
|
|
1914
|
-
s3 = peg$
|
|
2068
|
+
if (s3 === peg$FAILED) if (input.substr(peg$currPos, 2) === peg$c8) {
|
|
2069
|
+
s3 = peg$c8;
|
|
1915
2070
|
peg$currPos += 2;
|
|
1916
2071
|
} else {
|
|
1917
2072
|
s3 = peg$FAILED;
|
|
1918
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2073
|
+
if (peg$silentFails === 0) peg$fail(peg$e12);
|
|
1919
2074
|
}
|
|
1920
2075
|
peg$silentFails--;
|
|
1921
2076
|
if (s3 === peg$FAILED) s2 = void 0;
|
|
@@ -1947,19 +2102,19 @@ function peg$parse(input, options) {
|
|
|
1947
2102
|
s1 = peg$currPos;
|
|
1948
2103
|
s2 = peg$currPos;
|
|
1949
2104
|
peg$silentFails++;
|
|
1950
|
-
if (input.substr(peg$currPos, 2) === peg$
|
|
1951
|
-
s3 = peg$
|
|
2105
|
+
if (input.substr(peg$currPos, 2) === peg$c9) {
|
|
2106
|
+
s3 = peg$c9;
|
|
1952
2107
|
peg$currPos += 2;
|
|
1953
2108
|
} else {
|
|
1954
2109
|
s3 = peg$FAILED;
|
|
1955
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2110
|
+
if (peg$silentFails === 0) peg$fail(peg$e13);
|
|
1956
2111
|
}
|
|
1957
|
-
if (s3 === peg$FAILED) if (input.substr(peg$currPos, 2) === peg$
|
|
1958
|
-
s3 = peg$
|
|
2112
|
+
if (s3 === peg$FAILED) if (input.substr(peg$currPos, 2) === peg$c8) {
|
|
2113
|
+
s3 = peg$c8;
|
|
1959
2114
|
peg$currPos += 2;
|
|
1960
2115
|
} else {
|
|
1961
2116
|
s3 = peg$FAILED;
|
|
1962
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2117
|
+
if (peg$silentFails === 0) peg$fail(peg$e12);
|
|
1963
2118
|
}
|
|
1964
2119
|
peg$silentFails--;
|
|
1965
2120
|
if (s3 === peg$FAILED) s2 = void 0;
|
|
@@ -2001,15 +2156,15 @@ function peg$parse(input, options) {
|
|
|
2001
2156
|
else s1 = peg$FAILED;
|
|
2002
2157
|
if (s1 !== peg$FAILED) {
|
|
2003
2158
|
if (input.charCodeAt(peg$currPos) === 32) {
|
|
2004
|
-
s2 = peg$
|
|
2159
|
+
s2 = peg$c10;
|
|
2005
2160
|
peg$currPos++;
|
|
2006
2161
|
} else {
|
|
2007
2162
|
s2 = peg$FAILED;
|
|
2008
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2163
|
+
if (peg$silentFails === 0) peg$fail(peg$e14);
|
|
2009
2164
|
}
|
|
2010
2165
|
if (s2 === peg$FAILED) s2 = null;
|
|
2011
2166
|
peg$savedPos = s0;
|
|
2012
|
-
s0 = peg$
|
|
2167
|
+
s0 = peg$f53(s1);
|
|
2013
2168
|
} else {
|
|
2014
2169
|
peg$currPos = s0;
|
|
2015
2170
|
s0 = peg$FAILED;
|
|
@@ -2018,7 +2173,7 @@ function peg$parse(input, options) {
|
|
|
2018
2173
|
s0 = peg$currPos;
|
|
2019
2174
|
s1 = "";
|
|
2020
2175
|
peg$savedPos = s0;
|
|
2021
|
-
s1 = peg$
|
|
2176
|
+
s1 = peg$f54();
|
|
2022
2177
|
s0 = s1;
|
|
2023
2178
|
}
|
|
2024
2179
|
return s0;
|
|
@@ -2048,7 +2203,7 @@ function peg$parse(input, options) {
|
|
|
2048
2203
|
}
|
|
2049
2204
|
}
|
|
2050
2205
|
peg$savedPos = s0;
|
|
2051
|
-
s0 = peg$
|
|
2206
|
+
s0 = peg$f55(s1, s2);
|
|
2052
2207
|
} else {
|
|
2053
2208
|
peg$currPos = s0;
|
|
2054
2209
|
s0 = peg$FAILED;
|
|
@@ -2062,7 +2217,7 @@ function peg$parse(input, options) {
|
|
|
2062
2217
|
if (peg$r3.test(s1)) peg$currPos++;
|
|
2063
2218
|
else {
|
|
2064
2219
|
s1 = peg$FAILED;
|
|
2065
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2220
|
+
if (peg$silentFails === 0) peg$fail(peg$e15);
|
|
2066
2221
|
}
|
|
2067
2222
|
if (s1 !== peg$FAILED) {
|
|
2068
2223
|
s2 = peg$currPos;
|
|
@@ -2074,7 +2229,7 @@ function peg$parse(input, options) {
|
|
|
2074
2229
|
}
|
|
2075
2230
|
s2 = input.substring(s2, peg$currPos);
|
|
2076
2231
|
peg$savedPos = s0;
|
|
2077
|
-
s0 = peg$
|
|
2232
|
+
s0 = peg$f56(s1, s2);
|
|
2078
2233
|
} else {
|
|
2079
2234
|
peg$currPos = s0;
|
|
2080
2235
|
s0 = peg$FAILED;
|
|
@@ -2087,23 +2242,23 @@ function peg$parse(input, options) {
|
|
|
2087
2242
|
if (peg$r4.test(s0)) peg$currPos++;
|
|
2088
2243
|
else {
|
|
2089
2244
|
s0 = peg$FAILED;
|
|
2090
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2245
|
+
if (peg$silentFails === 0) peg$fail(peg$e16);
|
|
2091
2246
|
}
|
|
2092
2247
|
if (s0 === peg$FAILED) {
|
|
2093
2248
|
s0 = peg$currPos;
|
|
2094
2249
|
if (input.charCodeAt(peg$currPos) === 123) {
|
|
2095
|
-
s1 = peg$
|
|
2250
|
+
s1 = peg$c5;
|
|
2096
2251
|
peg$currPos++;
|
|
2097
2252
|
} else {
|
|
2098
2253
|
s1 = peg$FAILED;
|
|
2099
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2254
|
+
if (peg$silentFails === 0) peg$fail(peg$e8);
|
|
2100
2255
|
}
|
|
2101
2256
|
if (s1 !== peg$FAILED) {
|
|
2102
2257
|
s2 = input.charAt(peg$currPos);
|
|
2103
2258
|
if (peg$r5.test(s2)) peg$currPos++;
|
|
2104
2259
|
else {
|
|
2105
2260
|
s2 = peg$FAILED;
|
|
2106
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2261
|
+
if (peg$silentFails === 0) peg$fail(peg$e17);
|
|
2107
2262
|
}
|
|
2108
2263
|
if (s2 !== peg$FAILED) {
|
|
2109
2264
|
s3 = [];
|
|
@@ -2111,7 +2266,7 @@ function peg$parse(input, options) {
|
|
|
2111
2266
|
if (peg$r6.test(s4)) peg$currPos++;
|
|
2112
2267
|
else {
|
|
2113
2268
|
s4 = peg$FAILED;
|
|
2114
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2269
|
+
if (peg$silentFails === 0) peg$fail(peg$e18);
|
|
2115
2270
|
}
|
|
2116
2271
|
while (s4 !== peg$FAILED) {
|
|
2117
2272
|
s3.push(s4);
|
|
@@ -2119,15 +2274,15 @@ function peg$parse(input, options) {
|
|
|
2119
2274
|
if (peg$r6.test(s4)) peg$currPos++;
|
|
2120
2275
|
else {
|
|
2121
2276
|
s4 = peg$FAILED;
|
|
2122
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2277
|
+
if (peg$silentFails === 0) peg$fail(peg$e18);
|
|
2123
2278
|
}
|
|
2124
2279
|
}
|
|
2125
2280
|
if (input.charCodeAt(peg$currPos) === 125) {
|
|
2126
|
-
s4 = peg$
|
|
2281
|
+
s4 = peg$c11;
|
|
2127
2282
|
peg$currPos++;
|
|
2128
2283
|
} else {
|
|
2129
2284
|
s4 = peg$FAILED;
|
|
2130
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2285
|
+
if (peg$silentFails === 0) peg$fail(peg$e19);
|
|
2131
2286
|
}
|
|
2132
2287
|
if (s4 !== peg$FAILED) {
|
|
2133
2288
|
s1 = [
|
|
@@ -2156,11 +2311,11 @@ function peg$parse(input, options) {
|
|
|
2156
2311
|
let s0, s1, s2, s3, s4, s5, s6;
|
|
2157
2312
|
s0 = peg$currPos;
|
|
2158
2313
|
if (input.charCodeAt(peg$currPos) === 123) {
|
|
2159
|
-
s1 = peg$
|
|
2314
|
+
s1 = peg$c5;
|
|
2160
2315
|
peg$currPos++;
|
|
2161
2316
|
} else {
|
|
2162
2317
|
s1 = peg$FAILED;
|
|
2163
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2318
|
+
if (peg$silentFails === 0) peg$fail(peg$e8);
|
|
2164
2319
|
}
|
|
2165
2320
|
if (s1 !== peg$FAILED) {
|
|
2166
2321
|
s2 = peg$parseSelectors();
|
|
@@ -2169,7 +2324,7 @@ function peg$parse(input, options) {
|
|
|
2169
2324
|
if (peg$r5.test(s3)) peg$currPos++;
|
|
2170
2325
|
else {
|
|
2171
2326
|
s3 = peg$FAILED;
|
|
2172
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2327
|
+
if (peg$silentFails === 0) peg$fail(peg$e17);
|
|
2173
2328
|
}
|
|
2174
2329
|
if (s3 !== peg$FAILED) {
|
|
2175
2330
|
s4 = peg$currPos;
|
|
@@ -2178,7 +2333,7 @@ function peg$parse(input, options) {
|
|
|
2178
2333
|
if (peg$r6.test(s6)) peg$currPos++;
|
|
2179
2334
|
else {
|
|
2180
2335
|
s6 = peg$FAILED;
|
|
2181
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2336
|
+
if (peg$silentFails === 0) peg$fail(peg$e18);
|
|
2182
2337
|
}
|
|
2183
2338
|
while (s6 !== peg$FAILED) {
|
|
2184
2339
|
s5.push(s6);
|
|
@@ -2186,20 +2341,20 @@ function peg$parse(input, options) {
|
|
|
2186
2341
|
if (peg$r6.test(s6)) peg$currPos++;
|
|
2187
2342
|
else {
|
|
2188
2343
|
s6 = peg$FAILED;
|
|
2189
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2344
|
+
if (peg$silentFails === 0) peg$fail(peg$e18);
|
|
2190
2345
|
}
|
|
2191
2346
|
}
|
|
2192
2347
|
s4 = input.substring(s4, peg$currPos);
|
|
2193
2348
|
if (input.charCodeAt(peg$currPos) === 125) {
|
|
2194
|
-
s5 = peg$
|
|
2349
|
+
s5 = peg$c11;
|
|
2195
2350
|
peg$currPos++;
|
|
2196
2351
|
} else {
|
|
2197
2352
|
s5 = peg$FAILED;
|
|
2198
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2353
|
+
if (peg$silentFails === 0) peg$fail(peg$e19);
|
|
2199
2354
|
}
|
|
2200
2355
|
if (s5 !== peg$FAILED) {
|
|
2201
2356
|
peg$savedPos = s0;
|
|
2202
|
-
s0 = peg$
|
|
2357
|
+
s0 = peg$f57(s2, s3, s4);
|
|
2203
2358
|
} else {
|
|
2204
2359
|
peg$currPos = s0;
|
|
2205
2360
|
s0 = peg$FAILED;
|
|
@@ -2219,11 +2374,11 @@ function peg$parse(input, options) {
|
|
|
2219
2374
|
if (s0 === peg$FAILED) {
|
|
2220
2375
|
s0 = peg$currPos;
|
|
2221
2376
|
if (input.charCodeAt(peg$currPos) === 123) {
|
|
2222
|
-
s1 = peg$
|
|
2377
|
+
s1 = peg$c5;
|
|
2223
2378
|
peg$currPos++;
|
|
2224
2379
|
} else {
|
|
2225
2380
|
s1 = peg$FAILED;
|
|
2226
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2381
|
+
if (peg$silentFails === 0) peg$fail(peg$e8);
|
|
2227
2382
|
}
|
|
2228
2383
|
if (s1 !== peg$FAILED) {
|
|
2229
2384
|
s2 = peg$parseSelectors();
|
|
@@ -2234,7 +2389,7 @@ function peg$parse(input, options) {
|
|
|
2234
2389
|
if (peg$r7.test(s4)) peg$currPos++;
|
|
2235
2390
|
else {
|
|
2236
2391
|
s4 = peg$FAILED;
|
|
2237
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2392
|
+
if (peg$silentFails === 0) peg$fail(peg$e20);
|
|
2238
2393
|
}
|
|
2239
2394
|
peg$silentFails--;
|
|
2240
2395
|
if (s4 !== peg$FAILED) {
|
|
@@ -2245,15 +2400,15 @@ function peg$parse(input, options) {
|
|
|
2245
2400
|
s4 = peg$parseCodeToBrace();
|
|
2246
2401
|
if (s4 !== peg$FAILED) {
|
|
2247
2402
|
if (input.charCodeAt(peg$currPos) === 125) {
|
|
2248
|
-
s5 = peg$
|
|
2403
|
+
s5 = peg$c11;
|
|
2249
2404
|
peg$currPos++;
|
|
2250
2405
|
} else {
|
|
2251
2406
|
s5 = peg$FAILED;
|
|
2252
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2407
|
+
if (peg$silentFails === 0) peg$fail(peg$e19);
|
|
2253
2408
|
}
|
|
2254
2409
|
if (s5 !== peg$FAILED) {
|
|
2255
2410
|
peg$savedPos = s0;
|
|
2256
|
-
s0 = peg$
|
|
2411
|
+
s0 = peg$f58(s2, s4);
|
|
2257
2412
|
} else {
|
|
2258
2413
|
peg$currPos = s0;
|
|
2259
2414
|
s0 = peg$FAILED;
|
|
@@ -2277,11 +2432,11 @@ function peg$parse(input, options) {
|
|
|
2277
2432
|
if (s0 === peg$FAILED) {
|
|
2278
2433
|
s0 = peg$currPos;
|
|
2279
2434
|
if (input.charCodeAt(peg$currPos) === 123) {
|
|
2280
|
-
s1 = peg$
|
|
2435
|
+
s1 = peg$c5;
|
|
2281
2436
|
peg$currPos++;
|
|
2282
2437
|
} else {
|
|
2283
2438
|
s1 = peg$FAILED;
|
|
2284
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2439
|
+
if (peg$silentFails === 0) peg$fail(peg$e8);
|
|
2285
2440
|
}
|
|
2286
2441
|
if (s1 !== peg$FAILED) {
|
|
2287
2442
|
s2 = peg$parseSelectors();
|
|
@@ -2292,7 +2447,7 @@ function peg$parse(input, options) {
|
|
|
2292
2447
|
if (peg$r7.test(s4)) peg$currPos++;
|
|
2293
2448
|
else {
|
|
2294
2449
|
s4 = peg$FAILED;
|
|
2295
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2450
|
+
if (peg$silentFails === 0) peg$fail(peg$e20);
|
|
2296
2451
|
}
|
|
2297
2452
|
peg$silentFails--;
|
|
2298
2453
|
if (s4 !== peg$FAILED) {
|
|
@@ -2301,7 +2456,7 @@ function peg$parse(input, options) {
|
|
|
2301
2456
|
} else s3 = peg$FAILED;
|
|
2302
2457
|
if (s3 !== peg$FAILED) {
|
|
2303
2458
|
peg$savedPos = s0;
|
|
2304
|
-
s0 = peg$
|
|
2459
|
+
s0 = peg$f59();
|
|
2305
2460
|
} else {
|
|
2306
2461
|
peg$currPos = s0;
|
|
2307
2462
|
s0 = peg$FAILED;
|
|
@@ -2323,12 +2478,12 @@ function peg$parse(input, options) {
|
|
|
2323
2478
|
s0 = peg$currPos;
|
|
2324
2479
|
s1 = peg$parseHere();
|
|
2325
2480
|
peg$savedPos = peg$currPos;
|
|
2326
|
-
s2 = peg$
|
|
2481
|
+
s2 = peg$f60(s1);
|
|
2327
2482
|
if (s2) s2 = void 0;
|
|
2328
2483
|
else s2 = peg$FAILED;
|
|
2329
2484
|
if (s2 !== peg$FAILED) {
|
|
2330
2485
|
s3 = peg$currPos;
|
|
2331
|
-
s4 = peg$
|
|
2486
|
+
s4 = peg$f61(s1);
|
|
2332
2487
|
s5 = peg$currPos;
|
|
2333
2488
|
s6 = [];
|
|
2334
2489
|
if (s6.length >= (s4 | 0)) s7 = peg$FAILED;
|
|
@@ -2359,7 +2514,7 @@ function peg$parse(input, options) {
|
|
|
2359
2514
|
else s3 = s4;
|
|
2360
2515
|
if (s3 !== peg$FAILED) {
|
|
2361
2516
|
peg$savedPos = s0;
|
|
2362
|
-
s0 = peg$
|
|
2517
|
+
s0 = peg$f62(s1, s3);
|
|
2363
2518
|
} else {
|
|
2364
2519
|
peg$currPos = s0;
|
|
2365
2520
|
s0 = peg$FAILED;
|
|
@@ -2374,22 +2529,22 @@ function peg$parse(input, options) {
|
|
|
2374
2529
|
let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;
|
|
2375
2530
|
s0 = peg$currPos;
|
|
2376
2531
|
if (input.charCodeAt(peg$currPos) === 123) {
|
|
2377
|
-
s1 = peg$
|
|
2532
|
+
s1 = peg$c5;
|
|
2378
2533
|
peg$currPos++;
|
|
2379
2534
|
} else {
|
|
2380
2535
|
s1 = peg$FAILED;
|
|
2381
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2536
|
+
if (peg$silentFails === 0) peg$fail(peg$e8);
|
|
2382
2537
|
}
|
|
2383
2538
|
if (s1 !== peg$FAILED) {
|
|
2384
2539
|
s2 = peg$parseSelectors();
|
|
2385
2540
|
if (s2 !== peg$FAILED) {
|
|
2386
2541
|
s3 = peg$parseHere();
|
|
2387
2542
|
if (input.charCodeAt(peg$currPos) === 47) {
|
|
2388
|
-
s4 = peg$
|
|
2543
|
+
s4 = peg$c12;
|
|
2389
2544
|
peg$currPos++;
|
|
2390
2545
|
} else {
|
|
2391
2546
|
s4 = peg$FAILED;
|
|
2392
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2547
|
+
if (peg$silentFails === 0) peg$fail(peg$e21);
|
|
2393
2548
|
}
|
|
2394
2549
|
if (s4 === peg$FAILED) s4 = null;
|
|
2395
2550
|
s5 = peg$parseMacroName();
|
|
@@ -2397,12 +2552,12 @@ function peg$parse(input, options) {
|
|
|
2397
2552
|
s6 = peg$parseHere();
|
|
2398
2553
|
s7 = peg$currPos;
|
|
2399
2554
|
peg$savedPos = peg$currPos;
|
|
2400
|
-
s8 = peg$
|
|
2555
|
+
s8 = peg$f63(s2, s3, s4, s5, s6);
|
|
2401
2556
|
if (s8) s8 = void 0;
|
|
2402
2557
|
else s8 = peg$FAILED;
|
|
2403
2558
|
if (s8 !== peg$FAILED) {
|
|
2404
2559
|
s9 = peg$currPos;
|
|
2405
|
-
s10 = peg$
|
|
2560
|
+
s10 = peg$f64(s2, s3, s4, s5, s6);
|
|
2406
2561
|
s11 = peg$currPos;
|
|
2407
2562
|
s12 = [];
|
|
2408
2563
|
if (s12.length >= (s10 | 0)) s13 = peg$FAILED;
|
|
@@ -2433,15 +2588,15 @@ function peg$parse(input, options) {
|
|
|
2433
2588
|
else s9 = s10;
|
|
2434
2589
|
if (s9 !== peg$FAILED) {
|
|
2435
2590
|
if (input.charCodeAt(peg$currPos) === 125) {
|
|
2436
|
-
s10 = peg$
|
|
2591
|
+
s10 = peg$c11;
|
|
2437
2592
|
peg$currPos++;
|
|
2438
2593
|
} else {
|
|
2439
2594
|
s10 = peg$FAILED;
|
|
2440
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2595
|
+
if (peg$silentFails === 0) peg$fail(peg$e19);
|
|
2441
2596
|
}
|
|
2442
2597
|
if (s10 !== peg$FAILED) {
|
|
2443
2598
|
peg$savedPos = s7;
|
|
2444
|
-
s7 = peg$
|
|
2599
|
+
s7 = peg$f65(s2, s3, s4, s5, s6, s9);
|
|
2445
2600
|
} else {
|
|
2446
2601
|
peg$currPos = s7;
|
|
2447
2602
|
s7 = peg$FAILED;
|
|
@@ -2456,7 +2611,7 @@ function peg$parse(input, options) {
|
|
|
2456
2611
|
}
|
|
2457
2612
|
if (s7 === peg$FAILED) s7 = null;
|
|
2458
2613
|
peg$savedPos = s0;
|
|
2459
|
-
s0 = peg$
|
|
2614
|
+
s0 = peg$f66(s2, s3, s4, s5, s6, s7);
|
|
2460
2615
|
} else {
|
|
2461
2616
|
peg$currPos = s0;
|
|
2462
2617
|
s0 = peg$FAILED;
|
|
@@ -2472,25 +2627,25 @@ function peg$parse(input, options) {
|
|
|
2472
2627
|
if (s0 === peg$FAILED) {
|
|
2473
2628
|
s0 = peg$currPos;
|
|
2474
2629
|
if (input.charCodeAt(peg$currPos) === 123) {
|
|
2475
|
-
s1 = peg$
|
|
2630
|
+
s1 = peg$c5;
|
|
2476
2631
|
peg$currPos++;
|
|
2477
2632
|
} else {
|
|
2478
2633
|
s1 = peg$FAILED;
|
|
2479
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2634
|
+
if (peg$silentFails === 0) peg$fail(peg$e8);
|
|
2480
2635
|
}
|
|
2481
2636
|
if (s1 !== peg$FAILED) {
|
|
2482
2637
|
s2 = peg$parseSelectors();
|
|
2483
2638
|
if (s2 !== peg$FAILED) {
|
|
2484
2639
|
if (input.charCodeAt(peg$currPos) === 47) {
|
|
2485
|
-
s3 = peg$
|
|
2640
|
+
s3 = peg$c12;
|
|
2486
2641
|
peg$currPos++;
|
|
2487
2642
|
} else {
|
|
2488
2643
|
s3 = peg$FAILED;
|
|
2489
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2644
|
+
if (peg$silentFails === 0) peg$fail(peg$e21);
|
|
2490
2645
|
}
|
|
2491
2646
|
if (s3 !== peg$FAILED) {
|
|
2492
2647
|
peg$savedPos = s0;
|
|
2493
|
-
s0 = peg$
|
|
2648
|
+
s0 = peg$f67(s2);
|
|
2494
2649
|
} else {
|
|
2495
2650
|
peg$currPos = s0;
|
|
2496
2651
|
s0 = peg$FAILED;
|
|
@@ -2514,7 +2669,7 @@ function peg$parse(input, options) {
|
|
|
2514
2669
|
if (peg$r8.test(s2)) peg$currPos++;
|
|
2515
2670
|
else {
|
|
2516
2671
|
s2 = peg$FAILED;
|
|
2517
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2672
|
+
if (peg$silentFails === 0) peg$fail(peg$e22);
|
|
2518
2673
|
}
|
|
2519
2674
|
if (s2 !== peg$FAILED) {
|
|
2520
2675
|
s3 = [];
|
|
@@ -2522,7 +2677,7 @@ function peg$parse(input, options) {
|
|
|
2522
2677
|
if (peg$r9.test(s4)) peg$currPos++;
|
|
2523
2678
|
else {
|
|
2524
2679
|
s4 = peg$FAILED;
|
|
2525
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2680
|
+
if (peg$silentFails === 0) peg$fail(peg$e23);
|
|
2526
2681
|
}
|
|
2527
2682
|
while (s4 !== peg$FAILED) {
|
|
2528
2683
|
s3.push(s4);
|
|
@@ -2530,7 +2685,7 @@ function peg$parse(input, options) {
|
|
|
2530
2685
|
if (peg$r9.test(s4)) peg$currPos++;
|
|
2531
2686
|
else {
|
|
2532
2687
|
s4 = peg$FAILED;
|
|
2533
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2688
|
+
if (peg$silentFails === 0) peg$fail(peg$e23);
|
|
2534
2689
|
}
|
|
2535
2690
|
}
|
|
2536
2691
|
s2 = [s2, s3];
|
|
@@ -2547,19 +2702,19 @@ function peg$parse(input, options) {
|
|
|
2547
2702
|
let s0, s1, s2, s3;
|
|
2548
2703
|
s0 = peg$currPos;
|
|
2549
2704
|
peg$savedPos = peg$currPos;
|
|
2550
|
-
s1 = peg$
|
|
2705
|
+
s1 = peg$f68();
|
|
2551
2706
|
if (s1) s1 = void 0;
|
|
2552
2707
|
else s1 = peg$FAILED;
|
|
2553
2708
|
if (s1 !== peg$FAILED) {
|
|
2554
2709
|
s2 = peg$parseHtmlClose();
|
|
2555
2710
|
if (s2 !== peg$FAILED) {
|
|
2556
2711
|
peg$savedPos = peg$currPos;
|
|
2557
|
-
s3 = peg$
|
|
2712
|
+
s3 = peg$f69(s2);
|
|
2558
2713
|
if (s3) s3 = void 0;
|
|
2559
2714
|
else s3 = peg$FAILED;
|
|
2560
2715
|
if (s3 !== peg$FAILED) {
|
|
2561
2716
|
peg$savedPos = s0;
|
|
2562
|
-
s0 = peg$
|
|
2717
|
+
s0 = peg$f70(s2);
|
|
2563
2718
|
} else {
|
|
2564
2719
|
peg$currPos = s0;
|
|
2565
2720
|
s0 = peg$FAILED;
|
|
@@ -2578,11 +2733,11 @@ function peg$parse(input, options) {
|
|
|
2578
2733
|
let s0, s1, s2, s3, s4, s5, s6;
|
|
2579
2734
|
s0 = peg$currPos;
|
|
2580
2735
|
if (input.charCodeAt(peg$currPos) === 60) {
|
|
2581
|
-
s1 = peg$
|
|
2736
|
+
s1 = peg$c6;
|
|
2582
2737
|
peg$currPos++;
|
|
2583
2738
|
} else {
|
|
2584
2739
|
s1 = peg$FAILED;
|
|
2585
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2740
|
+
if (peg$silentFails === 0) peg$fail(peg$e10);
|
|
2586
2741
|
}
|
|
2587
2742
|
if (s1 !== peg$FAILED) {
|
|
2588
2743
|
s2 = peg$parseTagName();
|
|
@@ -2595,23 +2750,23 @@ function peg$parse(input, options) {
|
|
|
2595
2750
|
}
|
|
2596
2751
|
s4 = peg$parse_();
|
|
2597
2752
|
if (input.charCodeAt(peg$currPos) === 47) {
|
|
2598
|
-
s5 = peg$
|
|
2753
|
+
s5 = peg$c12;
|
|
2599
2754
|
peg$currPos++;
|
|
2600
2755
|
} else {
|
|
2601
2756
|
s5 = peg$FAILED;
|
|
2602
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2757
|
+
if (peg$silentFails === 0) peg$fail(peg$e21);
|
|
2603
2758
|
}
|
|
2604
2759
|
if (s5 === peg$FAILED) s5 = null;
|
|
2605
2760
|
if (input.charCodeAt(peg$currPos) === 62) {
|
|
2606
|
-
s6 = peg$
|
|
2761
|
+
s6 = peg$c1;
|
|
2607
2762
|
peg$currPos++;
|
|
2608
2763
|
} else {
|
|
2609
2764
|
s6 = peg$FAILED;
|
|
2610
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2765
|
+
if (peg$silentFails === 0) peg$fail(peg$e3);
|
|
2611
2766
|
}
|
|
2612
2767
|
if (s6 !== peg$FAILED) {
|
|
2613
2768
|
peg$savedPos = s0;
|
|
2614
|
-
s0 = peg$
|
|
2769
|
+
s0 = peg$f71(s2, s3, s5);
|
|
2615
2770
|
} else {
|
|
2616
2771
|
peg$currPos = s0;
|
|
2617
2772
|
s0 = peg$FAILED;
|
|
@@ -2627,11 +2782,11 @@ function peg$parse(input, options) {
|
|
|
2627
2782
|
if (s0 === peg$FAILED) {
|
|
2628
2783
|
s0 = peg$currPos;
|
|
2629
2784
|
if (input.charCodeAt(peg$currPos) === 60) {
|
|
2630
|
-
s1 = peg$
|
|
2785
|
+
s1 = peg$c6;
|
|
2631
2786
|
peg$currPos++;
|
|
2632
2787
|
} else {
|
|
2633
2788
|
s1 = peg$FAILED;
|
|
2634
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2789
|
+
if (peg$silentFails === 0) peg$fail(peg$e10);
|
|
2635
2790
|
}
|
|
2636
2791
|
if (s1 !== peg$FAILED) {
|
|
2637
2792
|
s2 = peg$parseTagName();
|
|
@@ -2642,7 +2797,7 @@ function peg$parse(input, options) {
|
|
|
2642
2797
|
if (peg$r10.test(s4)) peg$currPos++;
|
|
2643
2798
|
else {
|
|
2644
2799
|
s4 = peg$FAILED;
|
|
2645
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2800
|
+
if (peg$silentFails === 0) peg$fail(peg$e24);
|
|
2646
2801
|
}
|
|
2647
2802
|
if (s4 === peg$FAILED) {
|
|
2648
2803
|
s4 = peg$currPos;
|
|
@@ -2676,7 +2831,7 @@ function peg$parse(input, options) {
|
|
|
2676
2831
|
s5 = peg$parse_();
|
|
2677
2832
|
s6 = peg$parseHere();
|
|
2678
2833
|
peg$savedPos = s0;
|
|
2679
|
-
s0 = peg$
|
|
2834
|
+
s0 = peg$f72(s2, s6);
|
|
2680
2835
|
} else {
|
|
2681
2836
|
peg$currPos = s0;
|
|
2682
2837
|
s0 = peg$FAILED;
|
|
@@ -2695,27 +2850,27 @@ function peg$parse(input, options) {
|
|
|
2695
2850
|
function peg$parseHtmlClose() {
|
|
2696
2851
|
let s0, s1, s2, s4;
|
|
2697
2852
|
s0 = peg$currPos;
|
|
2698
|
-
if (input.substr(peg$currPos, 2) === peg$
|
|
2699
|
-
s1 = peg$
|
|
2853
|
+
if (input.substr(peg$currPos, 2) === peg$c13) {
|
|
2854
|
+
s1 = peg$c13;
|
|
2700
2855
|
peg$currPos += 2;
|
|
2701
2856
|
} else {
|
|
2702
2857
|
s1 = peg$FAILED;
|
|
2703
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2858
|
+
if (peg$silentFails === 0) peg$fail(peg$e25);
|
|
2704
2859
|
}
|
|
2705
2860
|
if (s1 !== peg$FAILED) {
|
|
2706
2861
|
s2 = peg$parseTagName();
|
|
2707
2862
|
if (s2 !== peg$FAILED) {
|
|
2708
2863
|
peg$parse_();
|
|
2709
2864
|
if (input.charCodeAt(peg$currPos) === 62) {
|
|
2710
|
-
s4 = peg$
|
|
2865
|
+
s4 = peg$c1;
|
|
2711
2866
|
peg$currPos++;
|
|
2712
2867
|
} else {
|
|
2713
2868
|
s4 = peg$FAILED;
|
|
2714
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2869
|
+
if (peg$silentFails === 0) peg$fail(peg$e3);
|
|
2715
2870
|
}
|
|
2716
2871
|
if (s4 !== peg$FAILED) {
|
|
2717
2872
|
peg$savedPos = s0;
|
|
2718
|
-
s0 = peg$
|
|
2873
|
+
s0 = peg$f73(s2);
|
|
2719
2874
|
} else {
|
|
2720
2875
|
peg$currPos = s0;
|
|
2721
2876
|
s0 = peg$FAILED;
|
|
@@ -2738,7 +2893,7 @@ function peg$parse(input, options) {
|
|
|
2738
2893
|
if (peg$r8.test(s2)) peg$currPos++;
|
|
2739
2894
|
else {
|
|
2740
2895
|
s2 = peg$FAILED;
|
|
2741
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2896
|
+
if (peg$silentFails === 0) peg$fail(peg$e22);
|
|
2742
2897
|
}
|
|
2743
2898
|
if (s2 !== peg$FAILED) {
|
|
2744
2899
|
s3 = [];
|
|
@@ -2746,7 +2901,7 @@ function peg$parse(input, options) {
|
|
|
2746
2901
|
if (peg$r11.test(s4)) peg$currPos++;
|
|
2747
2902
|
else {
|
|
2748
2903
|
s4 = peg$FAILED;
|
|
2749
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2904
|
+
if (peg$silentFails === 0) peg$fail(peg$e26);
|
|
2750
2905
|
}
|
|
2751
2906
|
while (s4 !== peg$FAILED) {
|
|
2752
2907
|
s3.push(s4);
|
|
@@ -2754,7 +2909,7 @@ function peg$parse(input, options) {
|
|
|
2754
2909
|
if (peg$r11.test(s4)) peg$currPos++;
|
|
2755
2910
|
else {
|
|
2756
2911
|
s4 = peg$FAILED;
|
|
2757
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2912
|
+
if (peg$silentFails === 0) peg$fail(peg$e26);
|
|
2758
2913
|
}
|
|
2759
2914
|
}
|
|
2760
2915
|
s2 = [s2, s3];
|
|
@@ -2780,7 +2935,7 @@ function peg$parse(input, options) {
|
|
|
2780
2935
|
if (peg$r12.test(s6)) peg$currPos++;
|
|
2781
2936
|
else {
|
|
2782
2937
|
s6 = peg$FAILED;
|
|
2783
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2938
|
+
if (peg$silentFails === 0) peg$fail(peg$e27);
|
|
2784
2939
|
}
|
|
2785
2940
|
peg$silentFails--;
|
|
2786
2941
|
if (s6 === peg$FAILED) s5 = void 0;
|
|
@@ -2816,7 +2971,7 @@ function peg$parse(input, options) {
|
|
|
2816
2971
|
if (peg$r12.test(s6)) peg$currPos++;
|
|
2817
2972
|
else {
|
|
2818
2973
|
s6 = peg$FAILED;
|
|
2819
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
2974
|
+
if (peg$silentFails === 0) peg$fail(peg$e27);
|
|
2820
2975
|
}
|
|
2821
2976
|
peg$silentFails--;
|
|
2822
2977
|
if (s6 === peg$FAILED) s5 = void 0;
|
|
@@ -2849,25 +3004,25 @@ function peg$parse(input, options) {
|
|
|
2849
3004
|
else s2 = s3;
|
|
2850
3005
|
if (s2 !== peg$FAILED) {
|
|
2851
3006
|
peg$savedPos = peg$currPos;
|
|
2852
|
-
s3 = peg$
|
|
3007
|
+
s3 = peg$f74(s2);
|
|
2853
3008
|
if (s3) s3 = void 0;
|
|
2854
3009
|
else s3 = peg$FAILED;
|
|
2855
3010
|
if (s3 !== peg$FAILED) {
|
|
2856
3011
|
s4 = peg$currPos;
|
|
2857
3012
|
s5 = peg$parse_();
|
|
2858
3013
|
if (input.charCodeAt(peg$currPos) === 61) {
|
|
2859
|
-
s6 = peg$
|
|
3014
|
+
s6 = peg$c14;
|
|
2860
3015
|
peg$currPos++;
|
|
2861
3016
|
} else {
|
|
2862
3017
|
s6 = peg$FAILED;
|
|
2863
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3018
|
+
if (peg$silentFails === 0) peg$fail(peg$e28);
|
|
2864
3019
|
}
|
|
2865
3020
|
if (s6 !== peg$FAILED) {
|
|
2866
3021
|
peg$parse_();
|
|
2867
3022
|
s8 = peg$parseAttrValue();
|
|
2868
3023
|
if (s8 !== peg$FAILED) {
|
|
2869
3024
|
peg$savedPos = s4;
|
|
2870
|
-
s4 = peg$
|
|
3025
|
+
s4 = peg$f75(s2, s8);
|
|
2871
3026
|
} else {
|
|
2872
3027
|
peg$currPos = s4;
|
|
2873
3028
|
s4 = peg$FAILED;
|
|
@@ -2878,7 +3033,7 @@ function peg$parse(input, options) {
|
|
|
2878
3033
|
}
|
|
2879
3034
|
if (s4 === peg$FAILED) s4 = null;
|
|
2880
3035
|
peg$savedPos = s0;
|
|
2881
|
-
s0 = peg$
|
|
3036
|
+
s0 = peg$f76(s2, s4);
|
|
2882
3037
|
} else {
|
|
2883
3038
|
peg$currPos = s0;
|
|
2884
3039
|
s0 = peg$FAILED;
|
|
@@ -2893,11 +3048,11 @@ function peg$parse(input, options) {
|
|
|
2893
3048
|
let s0, s1, s2, s3, s4;
|
|
2894
3049
|
s0 = peg$currPos;
|
|
2895
3050
|
if (input.charCodeAt(peg$currPos) === 34) {
|
|
2896
|
-
s1 = peg$
|
|
3051
|
+
s1 = peg$c15;
|
|
2897
3052
|
peg$currPos++;
|
|
2898
3053
|
} else {
|
|
2899
3054
|
s1 = peg$FAILED;
|
|
2900
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3055
|
+
if (peg$silentFails === 0) peg$fail(peg$e29);
|
|
2901
3056
|
}
|
|
2902
3057
|
if (s1 !== peg$FAILED) {
|
|
2903
3058
|
s2 = peg$currPos;
|
|
@@ -2908,7 +3063,7 @@ function peg$parse(input, options) {
|
|
|
2908
3063
|
if (peg$r13.test(s4)) peg$currPos++;
|
|
2909
3064
|
else {
|
|
2910
3065
|
s4 = peg$FAILED;
|
|
2911
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3066
|
+
if (peg$silentFails === 0) peg$fail(peg$e30);
|
|
2912
3067
|
}
|
|
2913
3068
|
}
|
|
2914
3069
|
while (s4 !== peg$FAILED) {
|
|
@@ -2919,21 +3074,21 @@ function peg$parse(input, options) {
|
|
|
2919
3074
|
if (peg$r13.test(s4)) peg$currPos++;
|
|
2920
3075
|
else {
|
|
2921
3076
|
s4 = peg$FAILED;
|
|
2922
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3077
|
+
if (peg$silentFails === 0) peg$fail(peg$e30);
|
|
2923
3078
|
}
|
|
2924
3079
|
}
|
|
2925
3080
|
}
|
|
2926
3081
|
s2 = input.substring(s2, peg$currPos);
|
|
2927
3082
|
if (input.charCodeAt(peg$currPos) === 34) {
|
|
2928
|
-
s3 = peg$
|
|
3083
|
+
s3 = peg$c15;
|
|
2929
3084
|
peg$currPos++;
|
|
2930
3085
|
} else {
|
|
2931
3086
|
s3 = peg$FAILED;
|
|
2932
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3087
|
+
if (peg$silentFails === 0) peg$fail(peg$e29);
|
|
2933
3088
|
}
|
|
2934
3089
|
if (s3 !== peg$FAILED) {
|
|
2935
3090
|
peg$savedPos = s0;
|
|
2936
|
-
s0 = peg$
|
|
3091
|
+
s0 = peg$f77(s2);
|
|
2937
3092
|
} else {
|
|
2938
3093
|
peg$currPos = s0;
|
|
2939
3094
|
s0 = peg$FAILED;
|
|
@@ -2945,11 +3100,11 @@ function peg$parse(input, options) {
|
|
|
2945
3100
|
if (s0 === peg$FAILED) {
|
|
2946
3101
|
s0 = peg$currPos;
|
|
2947
3102
|
if (input.charCodeAt(peg$currPos) === 39) {
|
|
2948
|
-
s1 = peg$
|
|
3103
|
+
s1 = peg$c16;
|
|
2949
3104
|
peg$currPos++;
|
|
2950
3105
|
} else {
|
|
2951
3106
|
s1 = peg$FAILED;
|
|
2952
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3107
|
+
if (peg$silentFails === 0) peg$fail(peg$e31);
|
|
2953
3108
|
}
|
|
2954
3109
|
if (s1 !== peg$FAILED) {
|
|
2955
3110
|
s2 = peg$currPos;
|
|
@@ -2960,7 +3115,7 @@ function peg$parse(input, options) {
|
|
|
2960
3115
|
if (peg$r14.test(s4)) peg$currPos++;
|
|
2961
3116
|
else {
|
|
2962
3117
|
s4 = peg$FAILED;
|
|
2963
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3118
|
+
if (peg$silentFails === 0) peg$fail(peg$e32);
|
|
2964
3119
|
}
|
|
2965
3120
|
}
|
|
2966
3121
|
while (s4 !== peg$FAILED) {
|
|
@@ -2971,21 +3126,21 @@ function peg$parse(input, options) {
|
|
|
2971
3126
|
if (peg$r14.test(s4)) peg$currPos++;
|
|
2972
3127
|
else {
|
|
2973
3128
|
s4 = peg$FAILED;
|
|
2974
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3129
|
+
if (peg$silentFails === 0) peg$fail(peg$e32);
|
|
2975
3130
|
}
|
|
2976
3131
|
}
|
|
2977
3132
|
}
|
|
2978
3133
|
s2 = input.substring(s2, peg$currPos);
|
|
2979
3134
|
if (input.charCodeAt(peg$currPos) === 39) {
|
|
2980
|
-
s3 = peg$
|
|
3135
|
+
s3 = peg$c16;
|
|
2981
3136
|
peg$currPos++;
|
|
2982
3137
|
} else {
|
|
2983
3138
|
s3 = peg$FAILED;
|
|
2984
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3139
|
+
if (peg$silentFails === 0) peg$fail(peg$e31);
|
|
2985
3140
|
}
|
|
2986
3141
|
if (s3 !== peg$FAILED) {
|
|
2987
3142
|
peg$savedPos = s0;
|
|
2988
|
-
s0 = peg$
|
|
3143
|
+
s0 = peg$f78(s2);
|
|
2989
3144
|
} else {
|
|
2990
3145
|
peg$currPos = s0;
|
|
2991
3146
|
s0 = peg$FAILED;
|
|
@@ -3000,11 +3155,11 @@ function peg$parse(input, options) {
|
|
|
3000
3155
|
if (peg$r15.test(s1)) peg$currPos++;
|
|
3001
3156
|
else {
|
|
3002
3157
|
s1 = peg$FAILED;
|
|
3003
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3158
|
+
if (peg$silentFails === 0) peg$fail(peg$e33);
|
|
3004
3159
|
}
|
|
3005
3160
|
if (s1 !== peg$FAILED) {
|
|
3006
3161
|
peg$savedPos = s0;
|
|
3007
|
-
s1 = peg$
|
|
3162
|
+
s1 = peg$f79(s1);
|
|
3008
3163
|
}
|
|
3009
3164
|
s0 = s1;
|
|
3010
3165
|
if (s0 === peg$FAILED) {
|
|
@@ -3014,7 +3169,7 @@ function peg$parse(input, options) {
|
|
|
3014
3169
|
if (peg$r16.test(s2)) peg$currPos++;
|
|
3015
3170
|
else {
|
|
3016
3171
|
s2 = peg$FAILED;
|
|
3017
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3172
|
+
if (peg$silentFails === 0) peg$fail(peg$e34);
|
|
3018
3173
|
}
|
|
3019
3174
|
while (s2 !== peg$FAILED) {
|
|
3020
3175
|
s1.push(s2);
|
|
@@ -3022,7 +3177,7 @@ function peg$parse(input, options) {
|
|
|
3022
3177
|
if (peg$r16.test(s2)) peg$currPos++;
|
|
3023
3178
|
else {
|
|
3024
3179
|
s2 = peg$FAILED;
|
|
3025
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3180
|
+
if (peg$silentFails === 0) peg$fail(peg$e34);
|
|
3026
3181
|
}
|
|
3027
3182
|
}
|
|
3028
3183
|
s0 = input.substring(s0, peg$currPos);
|
|
@@ -3035,27 +3190,27 @@ function peg$parse(input, options) {
|
|
|
3035
3190
|
let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;
|
|
3036
3191
|
s0 = peg$currPos;
|
|
3037
3192
|
peg$savedPos = peg$currPos;
|
|
3038
|
-
s1 = peg$
|
|
3193
|
+
s1 = peg$f80();
|
|
3039
3194
|
if (s1) s1 = void 0;
|
|
3040
3195
|
else s1 = peg$FAILED;
|
|
3041
3196
|
if (s1 !== peg$FAILED) {
|
|
3042
3197
|
s2 = peg$currPos;
|
|
3043
3198
|
s3 = [];
|
|
3044
3199
|
if (input.charCodeAt(peg$currPos) === 92) {
|
|
3045
|
-
s4 = peg$
|
|
3200
|
+
s4 = peg$c4;
|
|
3046
3201
|
peg$currPos++;
|
|
3047
3202
|
} else {
|
|
3048
3203
|
s4 = peg$FAILED;
|
|
3049
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3204
|
+
if (peg$silentFails === 0) peg$fail(peg$e6);
|
|
3050
3205
|
}
|
|
3051
3206
|
if (s4 !== peg$FAILED) while (s4 !== peg$FAILED) {
|
|
3052
3207
|
s3.push(s4);
|
|
3053
3208
|
if (input.charCodeAt(peg$currPos) === 92) {
|
|
3054
|
-
s4 = peg$
|
|
3209
|
+
s4 = peg$c4;
|
|
3055
3210
|
peg$currPos++;
|
|
3056
3211
|
} else {
|
|
3057
3212
|
s4 = peg$FAILED;
|
|
3058
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3213
|
+
if (peg$silentFails === 0) peg$fail(peg$e6);
|
|
3059
3214
|
}
|
|
3060
3215
|
}
|
|
3061
3216
|
else s3 = peg$FAILED;
|
|
@@ -3064,7 +3219,7 @@ function peg$parse(input, options) {
|
|
|
3064
3219
|
if (s2 !== peg$FAILED) {
|
|
3065
3220
|
s3 = peg$currPos;
|
|
3066
3221
|
peg$savedPos = peg$currPos;
|
|
3067
|
-
s4 = peg$
|
|
3222
|
+
s4 = peg$f81(s2);
|
|
3068
3223
|
if (s4) s4 = void 0;
|
|
3069
3224
|
else s4 = peg$FAILED;
|
|
3070
3225
|
if (s4 !== peg$FAILED) {
|
|
@@ -3072,7 +3227,7 @@ function peg$parse(input, options) {
|
|
|
3072
3227
|
if (peg$r1.test(s5)) peg$currPos++;
|
|
3073
3228
|
else {
|
|
3074
3229
|
s5 = peg$FAILED;
|
|
3075
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3230
|
+
if (peg$silentFails === 0) peg$fail(peg$e7);
|
|
3076
3231
|
}
|
|
3077
3232
|
if (s5 !== peg$FAILED) {
|
|
3078
3233
|
s4 = [s4, s5];
|
|
@@ -3103,39 +3258,39 @@ function peg$parse(input, options) {
|
|
|
3103
3258
|
if (s0 === peg$FAILED) {
|
|
3104
3259
|
s0 = peg$currPos;
|
|
3105
3260
|
peg$savedPos = peg$currPos;
|
|
3106
|
-
s1 = peg$
|
|
3261
|
+
s1 = peg$f82();
|
|
3107
3262
|
if (s1) s1 = void 0;
|
|
3108
3263
|
else s1 = peg$FAILED;
|
|
3109
3264
|
if (s1 !== peg$FAILED) {
|
|
3110
3265
|
if (input.charCodeAt(peg$currPos) === 123) {
|
|
3111
|
-
s2 = peg$
|
|
3266
|
+
s2 = peg$c5;
|
|
3112
3267
|
peg$currPos++;
|
|
3113
3268
|
} else {
|
|
3114
3269
|
s2 = peg$FAILED;
|
|
3115
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3270
|
+
if (peg$silentFails === 0) peg$fail(peg$e8);
|
|
3116
3271
|
}
|
|
3117
3272
|
if (s2 !== peg$FAILED) {
|
|
3118
3273
|
s3 = peg$parseSelectors();
|
|
3119
3274
|
if (s3 !== peg$FAILED) {
|
|
3120
3275
|
s4 = peg$parseHere();
|
|
3121
3276
|
if (input.charCodeAt(peg$currPos) === 47) {
|
|
3122
|
-
s5 = peg$
|
|
3277
|
+
s5 = peg$c12;
|
|
3123
3278
|
peg$currPos++;
|
|
3124
3279
|
} else {
|
|
3125
3280
|
s5 = peg$FAILED;
|
|
3126
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3281
|
+
if (peg$silentFails === 0) peg$fail(peg$e21);
|
|
3127
3282
|
}
|
|
3128
3283
|
if (s5 === peg$FAILED) s5 = null;
|
|
3129
3284
|
s6 = peg$parseMacroName();
|
|
3130
3285
|
if (s6 !== peg$FAILED) {
|
|
3131
3286
|
s7 = peg$parseHere();
|
|
3132
3287
|
peg$savedPos = peg$currPos;
|
|
3133
|
-
s8 = peg$
|
|
3288
|
+
s8 = peg$f83(s4, s7);
|
|
3134
3289
|
if (s8) s8 = void 0;
|
|
3135
3290
|
else s8 = peg$FAILED;
|
|
3136
3291
|
if (s8 !== peg$FAILED) {
|
|
3137
3292
|
s9 = peg$currPos;
|
|
3138
|
-
s10 = peg$
|
|
3293
|
+
s10 = peg$f84(s4, s7);
|
|
3139
3294
|
s11 = peg$currPos;
|
|
3140
3295
|
s12 = [];
|
|
3141
3296
|
if (s12.length >= (s10 | 0)) s13 = peg$FAILED;
|
|
@@ -3166,11 +3321,11 @@ function peg$parse(input, options) {
|
|
|
3166
3321
|
else s9 = s10;
|
|
3167
3322
|
if (s9 !== peg$FAILED) {
|
|
3168
3323
|
if (input.charCodeAt(peg$currPos) === 125) {
|
|
3169
|
-
s10 = peg$
|
|
3324
|
+
s10 = peg$c11;
|
|
3170
3325
|
peg$currPos++;
|
|
3171
3326
|
} else {
|
|
3172
3327
|
s10 = peg$FAILED;
|
|
3173
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3328
|
+
if (peg$silentFails === 0) peg$fail(peg$e19);
|
|
3174
3329
|
}
|
|
3175
3330
|
if (s10 !== peg$FAILED) {
|
|
3176
3331
|
s1 = [
|
|
@@ -3217,16 +3372,16 @@ function peg$parse(input, options) {
|
|
|
3217
3372
|
if (s0 === peg$FAILED) {
|
|
3218
3373
|
s0 = peg$currPos;
|
|
3219
3374
|
peg$savedPos = peg$currPos;
|
|
3220
|
-
s1 = peg$
|
|
3375
|
+
s1 = peg$f85();
|
|
3221
3376
|
if (s1) s1 = void 0;
|
|
3222
3377
|
else s1 = peg$FAILED;
|
|
3223
3378
|
if (s1 !== peg$FAILED) {
|
|
3224
3379
|
if (input.charCodeAt(peg$currPos) === 123) {
|
|
3225
|
-
s2 = peg$
|
|
3380
|
+
s2 = peg$c5;
|
|
3226
3381
|
peg$currPos++;
|
|
3227
3382
|
} else {
|
|
3228
3383
|
s2 = peg$FAILED;
|
|
3229
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3384
|
+
if (peg$silentFails === 0) peg$fail(peg$e8);
|
|
3230
3385
|
}
|
|
3231
3386
|
if (s2 !== peg$FAILED) {
|
|
3232
3387
|
s3 = peg$parseSelectors();
|
|
@@ -3235,18 +3390,18 @@ function peg$parse(input, options) {
|
|
|
3235
3390
|
peg$silentFails++;
|
|
3236
3391
|
s5 = peg$currPos;
|
|
3237
3392
|
if (input.charCodeAt(peg$currPos) === 47) {
|
|
3238
|
-
s6 = peg$
|
|
3393
|
+
s6 = peg$c12;
|
|
3239
3394
|
peg$currPos++;
|
|
3240
3395
|
} else {
|
|
3241
3396
|
s6 = peg$FAILED;
|
|
3242
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3397
|
+
if (peg$silentFails === 0) peg$fail(peg$e21);
|
|
3243
3398
|
}
|
|
3244
3399
|
if (s6 === peg$FAILED) s6 = null;
|
|
3245
3400
|
s7 = input.charAt(peg$currPos);
|
|
3246
3401
|
if (peg$r8.test(s7)) peg$currPos++;
|
|
3247
3402
|
else {
|
|
3248
3403
|
s7 = peg$FAILED;
|
|
3249
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3404
|
+
if (peg$silentFails === 0) peg$fail(peg$e22);
|
|
3250
3405
|
}
|
|
3251
3406
|
if (s7 !== peg$FAILED) {
|
|
3252
3407
|
s6 = [s6, s7];
|
|
@@ -3265,11 +3420,11 @@ function peg$parse(input, options) {
|
|
|
3265
3420
|
s5 = peg$parseCodeToBrace();
|
|
3266
3421
|
if (s5 !== peg$FAILED) {
|
|
3267
3422
|
if (input.charCodeAt(peg$currPos) === 125) {
|
|
3268
|
-
s6 = peg$
|
|
3423
|
+
s6 = peg$c11;
|
|
3269
3424
|
peg$currPos++;
|
|
3270
3425
|
} else {
|
|
3271
3426
|
s6 = peg$FAILED;
|
|
3272
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3427
|
+
if (peg$silentFails === 0) peg$fail(peg$e19);
|
|
3273
3428
|
}
|
|
3274
3429
|
if (s6 !== peg$FAILED) {
|
|
3275
3430
|
s1 = [
|
|
@@ -3308,16 +3463,16 @@ function peg$parse(input, options) {
|
|
|
3308
3463
|
if (s0 === peg$FAILED) {
|
|
3309
3464
|
s0 = peg$currPos;
|
|
3310
3465
|
peg$savedPos = peg$currPos;
|
|
3311
|
-
s1 = peg$
|
|
3466
|
+
s1 = peg$f86();
|
|
3312
3467
|
if (s1) s1 = void 0;
|
|
3313
3468
|
else s1 = peg$FAILED;
|
|
3314
3469
|
if (s1 !== peg$FAILED) {
|
|
3315
3470
|
if (input.charCodeAt(peg$currPos) === 123) {
|
|
3316
|
-
s2 = peg$
|
|
3471
|
+
s2 = peg$c5;
|
|
3317
3472
|
peg$currPos++;
|
|
3318
3473
|
} else {
|
|
3319
3474
|
s2 = peg$FAILED;
|
|
3320
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3475
|
+
if (peg$silentFails === 0) peg$fail(peg$e8);
|
|
3321
3476
|
}
|
|
3322
3477
|
if (s2 !== peg$FAILED) {
|
|
3323
3478
|
s3 = peg$currPos;
|
|
@@ -3326,7 +3481,7 @@ function peg$parse(input, options) {
|
|
|
3326
3481
|
if (peg$r5.test(s4)) peg$currPos++;
|
|
3327
3482
|
else {
|
|
3328
3483
|
s4 = peg$FAILED;
|
|
3329
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3484
|
+
if (peg$silentFails === 0) peg$fail(peg$e17);
|
|
3330
3485
|
}
|
|
3331
3486
|
peg$silentFails--;
|
|
3332
3487
|
if (s4 !== peg$FAILED) {
|
|
@@ -3337,11 +3492,11 @@ function peg$parse(input, options) {
|
|
|
3337
3492
|
s4 = peg$parseCodeToBrace();
|
|
3338
3493
|
if (s4 !== peg$FAILED) {
|
|
3339
3494
|
if (input.charCodeAt(peg$currPos) === 125) {
|
|
3340
|
-
s5 = peg$
|
|
3495
|
+
s5 = peg$c11;
|
|
3341
3496
|
peg$currPos++;
|
|
3342
3497
|
} else {
|
|
3343
3498
|
s5 = peg$FAILED;
|
|
3344
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3499
|
+
if (peg$silentFails === 0) peg$fail(peg$e19);
|
|
3345
3500
|
}
|
|
3346
3501
|
if (s5 !== peg$FAILED) {
|
|
3347
3502
|
s1 = [
|
|
@@ -3393,7 +3548,7 @@ function peg$parse(input, options) {
|
|
|
3393
3548
|
if (peg$r17.test(s0)) peg$currPos++;
|
|
3394
3549
|
else {
|
|
3395
3550
|
s0 = peg$FAILED;
|
|
3396
|
-
if (peg$silentFails === 0) peg$fail(peg$
|
|
3551
|
+
if (peg$silentFails === 0) peg$fail(peg$e35);
|
|
3397
3552
|
}
|
|
3398
3553
|
return s0;
|
|
3399
3554
|
}
|
|
@@ -8775,7 +8930,7 @@ var OPERAND_ENDS = new Set([
|
|
|
8775
8930
|
* whether a `{` opens a block or an object literal, which decides whether a
|
|
8776
8931
|
* `/` after its `}` opens a regex and a `%` a transient: after the `:` of a
|
|
8777
8932
|
* conditional it opens an object literal (`a ? b : {} / 2`), not a block as
|
|
8778
|
-
* after a label; after a block's `}` it opens another block (`{}{} %n = 1`),
|
|
8933
|
+
* after a label, and a `function` or `class` there is an expression; after a block's `}` it opens another block (`{}{} %n = 1`),
|
|
8779
8934
|
* and so it does on a new line after a statement (`p⏎{} %n = 1`).
|
|
8780
8935
|
*/
|
|
8781
8936
|
var SigilParser = class extends Parser {
|
|
@@ -8788,6 +8943,7 @@ var SigilParser = class extends Parser {
|
|
|
8788
8943
|
this.ternaries = [];
|
|
8789
8944
|
this.colonEndsTernary = false;
|
|
8790
8945
|
this.closedBlock = false;
|
|
8946
|
+
this.typeBeforeLast = types$1.eof;
|
|
8791
8947
|
this.lookahead = true;
|
|
8792
8948
|
}
|
|
8793
8949
|
readToken(code) {
|
|
@@ -8832,6 +8988,11 @@ var SigilParser = class extends Parser {
|
|
|
8832
8988
|
const prevType = self.type;
|
|
8833
8989
|
this.prevValue = self.value;
|
|
8834
8990
|
const property = type.keyword !== void 0 && (prevType === types$1.dot || prevType === types$1.questionDot) || (type === types$1._function || type === types$1._class) && notABody(self.input, self.pos);
|
|
8991
|
+
if (!property && (type === types$1._function || type === types$1._class)) {
|
|
8992
|
+
const before = type === types$1._function && prevType === types$1.name && this.prevValue === "async" && !this.breakHere ? this.typeBeforeLast : prevType;
|
|
8993
|
+
self.type = before === types$1.colon && this.colonEndsTernary ? types$1.parenL : before;
|
|
8994
|
+
}
|
|
8995
|
+
this.typeBeforeLast = prevType;
|
|
8835
8996
|
super.finishToken(property ? types$1.name : type, value);
|
|
8836
8997
|
if (type === types$1.name && value === "of" && (prevType === types$1._const || prevType === types$1._var || this.prevValue === "let")) self.exprAllowed = false;
|
|
8837
8998
|
}
|
|
@@ -10900,16 +11061,10 @@ function LocalsScope({ body, parentValues, ownKeys }) {
|
|
|
10900
11061
|
//#endregion
|
|
10901
11062
|
//#region src/components/macros/WidgetInvocation.tsx
|
|
10902
11063
|
function WidgetInvocation(props) {
|
|
10903
|
-
const
|
|
10904
|
-
|
|
10905
|
-
if (!className && !id) return content;
|
|
10906
|
-
return /* @__PURE__ */ jsx("span", {
|
|
10907
|
-
class: className,
|
|
10908
|
-
id,
|
|
10909
|
-
children: content
|
|
10910
|
-
});
|
|
11064
|
+
const resolve = useInterpolate();
|
|
11065
|
+
return wrapContent(resolve(props.className), resolve(props.id), /* @__PURE__ */ jsx(WidgetContent, { ...props }));
|
|
10911
11066
|
}
|
|
10912
|
-
function WidgetContent({ body, params, rawArgs, invocationChildren
|
|
11067
|
+
function WidgetContent({ body, params, rawArgs, invocationChildren }) {
|
|
10913
11068
|
const renderOptions = useRenderOptions();
|
|
10914
11069
|
const parentValues = renderOptions.locals;
|
|
10915
11070
|
const [mergedVars, mergedTemps, mergedLocals, mergedTrans] = useMergedLocals();
|
|
@@ -11540,20 +11695,33 @@ function useDirectAttributes(direct) {
|
|
|
11540
11695
|
}, [JSON.stringify(direct)]);
|
|
11541
11696
|
return direct.length > 0 ? elementRef : void 0;
|
|
11542
11697
|
}
|
|
11698
|
+
var decodedText = /* @__PURE__ */ new Map();
|
|
11543
11699
|
var decodedAttributeText = /* @__PURE__ */ new Map();
|
|
11544
11700
|
/**
|
|
11545
|
-
* Decode character references (`&`, `{`) in
|
|
11546
|
-
*
|
|
11701
|
+
* Decode character references (`&`, `{`) in `text` the way the HTML
|
|
11702
|
+
* parser decodes them, by letting it parse them: in an attribute value, or
|
|
11703
|
+
* else in element text.
|
|
11547
11704
|
*/
|
|
11548
|
-
function
|
|
11705
|
+
function decodeReferences(text, cache, parse) {
|
|
11549
11706
|
if (!text.includes("&")) return text;
|
|
11550
|
-
let decoded =
|
|
11707
|
+
let decoded = cache.get(text);
|
|
11551
11708
|
if (decoded === void 0) {
|
|
11552
|
-
decoded =
|
|
11553
|
-
|
|
11709
|
+
decoded = parse(text) ?? text;
|
|
11710
|
+
cache.set(text, decoded);
|
|
11554
11711
|
}
|
|
11555
11712
|
return decoded;
|
|
11556
11713
|
}
|
|
11714
|
+
function decodeAttributeText(text) {
|
|
11715
|
+
return decodeReferences(text, decodedAttributeText, (t) => {
|
|
11716
|
+
return parseHtmlInert(`<i title="${t.replace(/"/g, """)}"></i>`).firstChild.getAttribute("title");
|
|
11717
|
+
});
|
|
11718
|
+
}
|
|
11719
|
+
/** Literal text outside markdown (preformatted and SVG elements). */
|
|
11720
|
+
function decodeText(text) {
|
|
11721
|
+
return decodeReferences(text, decodedText, (t) => {
|
|
11722
|
+
return parseHtmlInert(`<i>${t.replace(/</g, "<")}</i>`).firstChild.textContent;
|
|
11723
|
+
});
|
|
11724
|
+
}
|
|
11557
11725
|
/** A `{` and a sigil starting a reference, in a code attribute. */
|
|
11558
11726
|
var SIGIL_REFERENCE = /\{[$_@%]\w/;
|
|
11559
11727
|
var attributeNodes = /* @__PURE__ */ new Map();
|
|
@@ -11692,7 +11860,7 @@ function renderMacro(node, key) {
|
|
|
11692
11860
|
* Render a non-text AST node to a Preact element.
|
|
11693
11861
|
*/
|
|
11694
11862
|
function renderSingleNode(node) {
|
|
11695
|
-
if (node.type === "text") return node.value;
|
|
11863
|
+
if (node.type === "text") return decodeText(node.value);
|
|
11696
11864
|
const key = nodeKey(node);
|
|
11697
11865
|
switch (node.type) {
|
|
11698
11866
|
case "variable":
|
|
@@ -15453,7 +15621,7 @@ function checkTriggersOnNavigation() {
|
|
|
15453
15621
|
}
|
|
15454
15622
|
/**
|
|
15455
15623
|
* Re-evaluate watchers whenever a namespace their conditions can read
|
|
15456
|
-
* ($variables, _temporary, %transient)
|
|
15624
|
+
* ($variables, _temporary, %transient) or the render counts change. Navigation is left to the
|
|
15457
15625
|
* store: navigate() checks watchers once the new moment is complete
|
|
15458
15626
|
* (checkTriggersOnNavigation), while history traversal and loads
|
|
15459
15627
|
* reinitialize watcher state instead of firing.
|
|
@@ -15465,7 +15633,7 @@ function connectTriggersToStore() {
|
|
|
15465
15633
|
const before = prev;
|
|
15466
15634
|
prev = state;
|
|
15467
15635
|
if (state.navigationId !== before.navigationId) return;
|
|
15468
|
-
if (state.variables === before.variables && state.temporary === before.temporary && state.transient === before.transient) return;
|
|
15636
|
+
if (state.variables === before.variables && state.temporary === before.temporary && state.transient === before.transient && state.renderCounts === before.renderCounts) return;
|
|
15469
15637
|
checkTriggers();
|
|
15470
15638
|
});
|
|
15471
15639
|
let connected = true;
|
|
@@ -16696,7 +16864,7 @@ function isRendered(el) {
|
|
|
16696
16864
|
return true;
|
|
16697
16865
|
}
|
|
16698
16866
|
function focusables(root) {
|
|
16699
|
-
return Array.from(root.querySelectorAll(FOCUSABLE)).filter((el) => !el.hidden && !el.closest("[hidden], [inert]") && isRendered(el));
|
|
16867
|
+
return Array.from(root.querySelectorAll(FOCUSABLE)).filter((el) => !el.hidden && !el.closest("[hidden], [inert]") && !el.matches(":disabled") && isRendered(el));
|
|
16700
16868
|
}
|
|
16701
16869
|
/** Open modal dialogs, innermost last. Only the topmost handles keys. */
|
|
16702
16870
|
var openModals = [];
|
|
@@ -19164,6 +19332,13 @@ function selectBranch(branches, matches) {
|
|
|
19164
19332
|
else if (matches(branch.rawArgs)) return branch;
|
|
19165
19333
|
return fallback;
|
|
19166
19334
|
}
|
|
19335
|
+
/**
|
|
19336
|
+
* A selected branch's content, in a wrapper if the branch has CSS selectors
|
|
19337
|
+
* (`{.hot#id case 1}`). The macro must be defined with `interpolate`.
|
|
19338
|
+
*/
|
|
19339
|
+
function renderBranch(branch, ctx) {
|
|
19340
|
+
return wrapContent(ctx.resolve(branch.className), ctx.resolve(branch.id), ctx.renderNodes(branch.children));
|
|
19341
|
+
}
|
|
19167
19342
|
//#endregion
|
|
19168
19343
|
//#region src/components/macros/If.tsx
|
|
19169
19344
|
/**
|
|
@@ -19191,7 +19366,7 @@ defineMacro({
|
|
|
19191
19366
|
});
|
|
19192
19367
|
}
|
|
19193
19368
|
if (!branch) return null;
|
|
19194
|
-
return
|
|
19369
|
+
return renderBranch(branch, ctx);
|
|
19195
19370
|
},
|
|
19196
19371
|
text({ branches = [] }, ctx) {
|
|
19197
19372
|
const branch = selectIfBranch(branches, ctx.evaluate);
|
|
@@ -19589,6 +19764,7 @@ defineMacro({
|
|
|
19589
19764
|
type: "expression",
|
|
19590
19765
|
required: true
|
|
19591
19766
|
}],
|
|
19767
|
+
interpolate: true,
|
|
19592
19768
|
merged: true,
|
|
19593
19769
|
render({ rawArgs, branches = [] }, ctx) {
|
|
19594
19770
|
let switchValue;
|
|
@@ -19609,7 +19785,8 @@ defineMacro({
|
|
|
19609
19785
|
error: err
|
|
19610
19786
|
});
|
|
19611
19787
|
}
|
|
19612
|
-
|
|
19788
|
+
if (!branch) return null;
|
|
19789
|
+
return renderBranch(branch, ctx);
|
|
19613
19790
|
},
|
|
19614
19791
|
text({ rawArgs, branches = [] }, ctx) {
|
|
19615
19792
|
const branch = selectCase(ctx.evaluate(rawArgs), branches, ctx.evaluate);
|
|
@@ -20184,12 +20361,15 @@ function SaveManagerContent() {
|
|
|
20184
20361
|
if (mode === "load" && group.saves.length === 0 && !isCurrentPt) return null;
|
|
20185
20362
|
return /* @__PURE__ */ jsxs("div", {
|
|
20186
20363
|
class: "playthrough-group",
|
|
20187
|
-
children: [/* @__PURE__ */ jsxs("
|
|
20364
|
+
children: [/* @__PURE__ */ jsxs("button", {
|
|
20365
|
+
type: "button",
|
|
20188
20366
|
class: "playthrough-header",
|
|
20367
|
+
"aria-expanded": !isCollapsed,
|
|
20189
20368
|
onClick: () => toggleCollapse(group.playthrough.id),
|
|
20190
20369
|
children: [
|
|
20191
20370
|
/* @__PURE__ */ jsx("span", {
|
|
20192
20371
|
class: `playthrough-chevron ${isCollapsed ? "" : "open"}`,
|
|
20372
|
+
"aria-hidden": "true",
|
|
20193
20373
|
children: "▶"
|
|
20194
20374
|
}),
|
|
20195
20375
|
/* @__PURE__ */ jsxs("span", {
|
|
@@ -21090,7 +21270,7 @@ defineMacro({
|
|
|
21090
21270
|
});
|
|
21091
21271
|
//#endregion
|
|
21092
21272
|
//#region src/styles.css?inline
|
|
21093
|
-
var styles_default = "*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-size: 16px;\n -webkit-text-size-adjust: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: Georgia, 'Times New Roman', serif;\n line-height: 1.75;\n color: #e0e0e0;\n background-color: #1a1a2e;\n min-height: 100vh;\n}\n\ntw-storydata {\n display: none !important;\n}\n\n#story {\n max-width: 42em;\n margin: 0 auto;\n padding: 2em 1.5em;\n}\n\n/* Passage transitions */\n\n.passage-container {\n position: relative;\n}\n\n.passage-container--crossfading {\n display: grid;\n}\n\n.passage-container--crossfading > * {\n grid-area: 1 / 1;\n}\n\n.passage {\n animation: passage-fade-in var(--passage-in-duration, 0.3s) ease;\n}\n\n.passage[data-transition='none'] {\n animation: none;\n}\n\n.passage-snapshot {\n animation: passage-fade-out var(--passage-out-duration, 0.3s) ease forwards;\n pointer-events: none;\n user-select: none;\n}\n\n@keyframes passage-fade-in {\n from {\n opacity: 0;\n transform: translateY(8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes passage-fade-out {\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(-8px);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .passage,\n .passage-snapshot {\n animation-duration: 0.01s !important;\n }\n}\n\n.macro-button {\n background: rgba(100, 181, 246, 0.15);\n color: #64b5f6;\n border: 1px solid rgba(100, 181, 246, 0.4);\n border-radius: 4px;\n padding: 0.25em 0.75em;\n font: inherit;\n font-size: 0.95em;\n cursor: pointer;\n transition:\n background 0.2s,\n border-color 0.2s;\n}\n\n.macro-button:hover {\n background: rgba(100, 181, 246, 0.25);\n border-color: #90caf9;\n}\n\n.macro-button:active {\n background: rgba(100, 181, 246, 0.35);\n}\n\n.error {\n color: #ef5350;\n font-family: monospace;\n padding: 1em;\n border: 1px solid #ef5350;\n border-radius: 4px;\n background: rgba(239, 83, 80, 0.1);\n}\n\n/* Runtime errors shown on the page (see src/components/RuntimeErrors.tsx) */\n.spindle-error-banners {\n position: fixed;\n top: 0.75em;\n left: 50%;\n z-index: 300;\n display: flex;\n flex-direction: column;\n gap: 0.5em;\n width: min(42em, calc(100% - 1.5em));\n transform: translateX(-50%);\n}\n\n.spindle-error-banner {\n position: relative;\n padding: 0.75em 2.75em 0.75em 1em;\n border: 1px solid #ef5350;\n border-radius: 4px;\n background: #2b1a1e;\n color: #ffcdd2;\n font-size: 0.9em;\n line-height: 1.5;\n box-shadow: 0 2px 12px rgba(0, 0, 0, 0.5);\n}\n\n.spindle-error-banner-message {\n font-family: monospace;\n color: #ef9a9a;\n}\n\n.spindle-error-banner-dismiss {\n position: absolute;\n top: 0.5em;\n right: 0.5em;\n background: transparent;\n border: none;\n color: inherit;\n font-size: 1em;\n cursor: pointer;\n}\n\n.spindle-error-banner-dismiss:hover {\n color: #fff;\n}\n\n.loading {\n text-align: center;\n padding: 2em;\n opacity: 0.6;\n}\n\n/* Menu bar */\n\n.story-menubar {\n position: sticky;\n top: 0;\n z-index: 100;\n display: flex;\n align-items: center;\n gap: 0.5em;\n padding: 0.5em 1.5em;\n background: #16213e;\n border-bottom: 1px solid rgba(255, 255, 255, 0.08);\n font-family: system-ui, sans-serif;\n font-size: 0.9em;\n}\n\n.story-title {\n flex: 1;\n font-weight: 600;\n color: #e0e0e0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.menubar-button {\n background: transparent;\n color: #9e9e9e;\n border: 1px solid transparent;\n padding: 0.35em 0.7em;\n border-radius: 4px;\n cursor: pointer;\n font: inherit;\n transition:\n color 0.2s,\n background 0.2s;\n}\n\n.menubar-button:hover {\n color: #e0e0e0;\n background: rgba(255, 255, 255, 0.08);\n}\n\n.menubar-button:disabled {\n opacity: 0.4;\n cursor: default;\n}\n\n.menubar-button:disabled:hover {\n color: #9e9e9e;\n background: transparent;\n}\n\n/* Generic dialog */\n\n.dialog-overlay {\n position: fixed;\n inset: 0;\n z-index: 200;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.6);\n}\n\n.dialog-panel {\n background: #16213e;\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 8px;\n width: 90%;\n max-width: 500px;\n max-height: 80vh;\n display: flex;\n flex-direction: column;\n color: #e0e0e0;\n font-family: system-ui, sans-serif;\n position: relative;\n}\n\n/* Focused programmatically when the dialog has no focusable content */\n.dialog-panel:focus {\n outline: none;\n}\n\n.dialog-saves {\n max-width: 550px;\n}\n\n.dialog-settings {\n max-width: 400px;\n}\n\n/* Keep the first control clear of the close button above it */\n.dialog-settings .dialog-body {\n padding-top: 2.25em;\n}\n\n.dialog-close {\n position: absolute;\n top: 0.75em;\n right: 0.75em;\n z-index: 1;\n background: transparent;\n border: none;\n color: #9e9e9e;\n font-size: 1.1em;\n cursor: pointer;\n padding: 0.25em;\n line-height: 1;\n}\n\n.dialog-close:hover {\n color: #e0e0e0;\n}\n\n.dialog-body {\n overflow-y: auto;\n flex: 1;\n min-height: 0;\n}\n\n/* Settings controls */\n\n.settings-controls {\n padding: 1em 1.25em;\n display: flex;\n flex-direction: column;\n gap: 1em;\n}\n\n.settings-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1em;\n}\n\n.settings-row select,\n.settings-row input[type='range'] {\n accent-color: #64b5f6;\n}\n\n.settings-row select {\n background: #1a1a2e;\n color: #e0e0e0;\n border: 1px solid rgba(255, 255, 255, 0.15);\n border-radius: 4px;\n padding: 0.3em 0.5em;\n font: inherit;\n}\n\n.settings-row input[type='checkbox'] {\n accent-color: #64b5f6;\n width: 1.1em;\n height: 1.1em;\n}\n\n/* Save manager */\n\n.save-manager {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n}\n\n.saves-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1em 1.25em;\n padding-right: 3em;\n border-bottom: 1px solid rgba(255, 255, 255, 0.08);\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.saves-header-left {\n display: flex;\n align-items: center;\n gap: 0.75em;\n}\n\n.saves-mode-toggle {\n display: flex;\n gap: 0;\n border: 1px solid rgba(255, 255, 255, 0.15);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.saves-mode-toggle button {\n background: transparent;\n color: #9e9e9e;\n border: none;\n padding: 0.3em 0.8em;\n font: inherit;\n font-size: 0.85em;\n font-weight: 600;\n cursor: pointer;\n transition:\n background 0.2s,\n color 0.2s;\n}\n\n.saves-mode-toggle button.active {\n background: rgba(100, 181, 246, 0.2);\n color: #64b5f6;\n}\n\n.saves-mode-toggle button:hover:not(.active) {\n color: #e0e0e0;\n}\n\n.saves-body {\n padding: 0.75em 1.25em;\n overflow-y: auto;\n flex: 1;\n min-height: 0;\n}\n\n.saves-empty {\n text-align: center;\n padding: 2em 1em;\n opacity: 0.5;\n font-size: 0.9em;\n}\n\n.saves-toolbar {\n display: flex;\n gap: 0.5em;\n padding: 0.5em 1.25em;\n border-bottom: 1px solid rgba(255, 255, 255, 0.08);\n flex-shrink: 0;\n}\n\n.saves-toolbar-button {\n background: rgba(255, 255, 255, 0.05);\n color: #9e9e9e;\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 4px;\n padding: 0.3em 0.7em;\n font: inherit;\n font-size: 0.8em;\n cursor: pointer;\n transition:\n background 0.2s,\n color 0.2s;\n}\n\n.saves-toolbar-button:hover {\n background: rgba(255, 255, 255, 0.1);\n color: #e0e0e0;\n}\n\n.playthrough-group {\n margin-bottom: 0.75em;\n}\n\n.playthrough-header {\n display: flex;\n align-items: center;\n gap: 0.5em;\n padding: 0.4em 0;\n cursor: pointer;\n user-select: none;\n font-size: 0.85em;\n color: #9e9e9e;\n transition: color 0.2s;\n}\n\n.playthrough-header:hover {\n color: #e0e0e0;\n}\n\n.playthrough-chevron {\n display: inline-block;\n font-size: 0.7em;\n transition: transform 0.2s;\n}\n\n.playthrough-chevron.open {\n transform: rotate(90deg);\n}\n\n.playthrough-label {\n font-weight: 600;\n}\n\n.playthrough-date {\n opacity: 0.6;\n font-size: 0.9em;\n}\n\n.playthrough-saves {\n display: flex;\n flex-direction: column;\n gap: 0.4em;\n padding-left: 0.25em;\n}\n\n.save-slot {\n display: flex;\n align-items: center;\n gap: 0.75em;\n padding: 0.5em 0.6em;\n background: rgba(255, 255, 255, 0.03);\n border: 1px solid rgba(255, 255, 255, 0.06);\n border-radius: 6px;\n transition: background 0.15s;\n}\n\n.save-slot:hover {\n background: rgba(255, 255, 255, 0.06);\n}\n\n.save-slot-info {\n flex: 1;\n min-width: 0;\n}\n\n.save-slot-title {\n font-weight: 500;\n font-size: 0.9em;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.save-slot-meta {\n font-size: 0.75em;\n color: #9e9e9e;\n display: flex;\n gap: 0.75em;\n}\n\n.save-slot-actions {\n display: flex;\n gap: 0.3em;\n flex-shrink: 0;\n}\n\n.save-slot-action {\n background: transparent;\n color: #9e9e9e;\n border: 1px solid transparent;\n border-radius: 3px;\n padding: 0.2em 0.5em;\n font: inherit;\n font-size: 0.75em;\n cursor: pointer;\n transition:\n color 0.2s,\n background 0.2s;\n white-space: nowrap;\n}\n\n.save-slot-action:hover {\n color: #e0e0e0;\n background: rgba(255, 255, 255, 0.08);\n}\n\n.save-slot-action.primary {\n color: #64b5f6;\n border-color: rgba(100, 181, 246, 0.3);\n}\n\n.save-slot-action.primary:hover {\n background: rgba(100, 181, 246, 0.15);\n}\n\n.save-slot-action.danger:hover {\n color: #ef5350;\n background: rgba(239, 83, 80, 0.1);\n}\n\n.save-slot-new {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0.5em;\n margin-top: 0.25em;\n border: 1px dashed rgba(255, 255, 255, 0.12);\n border-radius: 6px;\n color: #9e9e9e;\n font: inherit;\n font-size: 0.8em;\n background: transparent;\n cursor: pointer;\n width: 100%;\n transition:\n color 0.2s,\n border-color 0.2s,\n background 0.2s;\n}\n\n.save-slot-new:hover {\n color: #64b5f6;\n border-color: rgba(100, 181, 246, 0.3);\n background: rgba(100, 181, 246, 0.05);\n}\n\n.saves-notice {\n padding: 0.5em 1.25em;\n font-size: 0.8em;\n color: #ffb74d;\n border-bottom: 1px solid rgba(255, 183, 77, 0.3);\n background: rgba(255, 183, 77, 0.08);\n flex-shrink: 0;\n}\n\n.saves-status {\n padding: 0.5em 1.25em;\n font-size: 0.8em;\n color: #81c784;\n border-top: 1px solid rgba(255, 255, 255, 0.08);\n flex-shrink: 0;\n text-align: center;\n}\n\n.saves-status.error {\n color: #ef5350;\n border: none;\n border-radius: 0;\n padding: 0.5em 1.25em;\n font-family: inherit;\n background: transparent;\n}\n\n.save-rename-input {\n background: #1a1a2e;\n color: #e0e0e0;\n border: 1px solid rgba(100, 181, 246, 0.4);\n border-radius: 3px;\n padding: 0.15em 0.4em;\n font: inherit;\n font-size: 0.9em;\n width: 100%;\n}\n\n.save-rename-input:focus {\n outline: none;\n border-color: #64b5f6;\n}\n\n/* Macro: link */\n\n.macro-link {\n color: #64b5f6;\n text-decoration: none;\n border-bottom: 1px solid rgba(100, 181, 246, 0.3);\n transition:\n color 0.2s,\n border-color 0.2s;\n cursor: pointer;\n}\n\n.macro-link:hover {\n color: #90caf9;\n border-bottom-color: #90caf9;\n}\n\n.macro-link:active {\n color: #42a5f5;\n}\n\n/* Macro: form inputs */\n\n.macro-textbox,\n.macro-numberbox,\n.macro-textarea {\n background: #1a1a2e;\n color: #e0e0e0;\n border: 1px solid rgba(255, 255, 255, 0.15);\n border-radius: 4px;\n padding: 0.3em 0.5em;\n font: inherit;\n}\n\n.macro-textbox:focus,\n.macro-numberbox:focus,\n.macro-textarea:focus {\n outline: none;\n border-color: #64b5f6;\n}\n\n.macro-textarea {\n min-height: 3em;\n resize: vertical;\n}\n\n.macro-checkbox,\n.macro-radiobutton {\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 0.3em;\n}\n\n.macro-checkbox input,\n.macro-radiobutton input {\n accent-color: #64b5f6;\n}\n\n/* Macro: listbox */\n\n.macro-listbox {\n background: #1a1a2e;\n color: #e0e0e0;\n border: 1px solid rgba(255, 255, 255, 0.15);\n border-radius: 4px;\n padding: 0.3em 0.5em;\n font: inherit;\n}\n\n/* Macro: cycle */\n\n.macro-cycle {\n background: rgba(100, 181, 246, 0.15);\n color: #64b5f6;\n border: 1px solid rgba(100, 181, 246, 0.4);\n border-radius: 4px;\n padding: 0.25em 0.75em;\n font: inherit;\n cursor: pointer;\n transition:\n background 0.2s,\n border-color 0.2s;\n}\n\n.macro-cycle:hover {\n background: rgba(100, 181, 246, 0.25);\n border-color: #90caf9;\n}\n\n/* Macro: meter */\n\n.macro-meter {\n position: relative;\n width: 100%;\n height: 1.4em;\n background: #2a2a3e;\n border-radius: 0.3em;\n overflow: hidden;\n border: 1px solid #444;\n}\n\n.macro-meter-fill {\n height: 100%;\n background: #64b5f6;\n transition: width 0.3s ease;\n}\n\n.macro-meter-label {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.85em;\n color: #e0e0e0;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8);\n pointer-events: none;\n}\n\n/* Markdown wrapper — invisible to layout */\n\n.md {\n display: contents;\n}\n\n/* Markdown block elements inside passages */\n\n.passage p {\n margin: 0.6em 0;\n}\n\n.passage p:first-child {\n margin-top: 0;\n}\n\n.passage p:last-child {\n margin-bottom: 0;\n}\n\n.passage h1,\n.passage h2,\n.passage h3,\n.passage h4,\n.passage h5,\n.passage h6 {\n margin: 1em 0 0.4em;\n line-height: 1.3;\n color: #f0f0f0;\n}\n\n.passage h1 {\n font-size: 1.8em;\n}\n.passage h2 {\n font-size: 1.5em;\n}\n.passage h3 {\n font-size: 1.25em;\n}\n.passage h4 {\n font-size: 1.1em;\n}\n.passage h5 {\n font-size: 1em;\n}\n.passage h6 {\n font-size: 0.9em;\n opacity: 0.8;\n}\n\n.passage code {\n font-family: 'Fira Code', 'Cascadia Code', 'Consolas', monospace;\n font-size: 0.9em;\n background: rgba(255, 255, 255, 0.08);\n padding: 0.15em 0.35em;\n border-radius: 3px;\n}\n\n.passage pre {\n background: rgba(0, 0, 0, 0.3);\n border: 1px solid rgba(255, 255, 255, 0.08);\n border-radius: 6px;\n padding: 1em;\n overflow-x: auto;\n margin: 0.8em 0;\n}\n\n.passage pre code {\n background: none;\n padding: 0;\n border-radius: 0;\n font-size: 0.85em;\n}\n\n.passage blockquote {\n border-left: 3px solid rgba(100, 181, 246, 0.5);\n margin: 0.8em 0;\n padding: 0.4em 1em;\n color: #b0b0b0;\n}\n\n.passage blockquote p {\n margin: 0.3em 0;\n}\n\n.passage ul,\n.passage ol {\n margin: 0.6em 0;\n padding-left: 1.8em;\n}\n\n.passage li {\n margin: 0.2em 0;\n}\n\n.passage hr {\n border: none;\n border-top: 1px solid rgba(255, 255, 255, 0.12);\n margin: 1.2em 0;\n}\n\n.passage table {\n border-collapse: collapse;\n width: 100%;\n margin: 0.8em 0;\n}\n\n.passage th,\n.passage td {\n border: 1px solid rgba(255, 255, 255, 0.12);\n padding: 0.5em 0.75em;\n text-align: left;\n}\n\n.passage th {\n background: rgba(255, 255, 255, 0.06);\n font-weight: 600;\n}\n\n.passage tr:nth-child(even) {\n background: rgba(255, 255, 255, 0.02);\n}\n\n.passage del {\n opacity: 0.5;\n}\n\n.passage strong {\n color: #f0f0f0;\n}\n\n/* Macro: type (typewriter) */\n\n.macro-type-cursor::after {\n content: '\\2588';\n animation: type-blink 0.7s step-end infinite;\n color: #64b5f6;\n}\n\n.macro-type-done .macro-type-cursor::after {\n display: none;\n}\n\n@keyframes type-blink {\n 50% {\n opacity: 0;\n }\n}\n";
|
|
21273
|
+
var styles_default = "*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-size: 16px;\n -webkit-text-size-adjust: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: Georgia, 'Times New Roman', serif;\n line-height: 1.75;\n color: #e0e0e0;\n background-color: #1a1a2e;\n min-height: 100vh;\n}\n\ntw-storydata {\n display: none !important;\n}\n\n#story {\n max-width: 42em;\n margin: 0 auto;\n padding: 2em 1.5em;\n}\n\n/* Passage transitions */\n\n.passage-container {\n position: relative;\n}\n\n.passage-container--crossfading {\n display: grid;\n}\n\n.passage-container--crossfading > * {\n grid-area: 1 / 1;\n}\n\n.passage {\n animation: passage-fade-in var(--passage-in-duration, 0.3s) ease;\n}\n\n.passage[data-transition='none'] {\n animation: none;\n}\n\n.passage-snapshot {\n animation: passage-fade-out var(--passage-out-duration, 0.3s) ease forwards;\n pointer-events: none;\n user-select: none;\n}\n\n@keyframes passage-fade-in {\n from {\n opacity: 0;\n transform: translateY(8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes passage-fade-out {\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(-8px);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .passage,\n .passage-snapshot {\n animation-duration: 0.01s !important;\n }\n}\n\n.macro-button {\n background: rgba(100, 181, 246, 0.15);\n color: #64b5f6;\n border: 1px solid rgba(100, 181, 246, 0.4);\n border-radius: 4px;\n padding: 0.25em 0.75em;\n font: inherit;\n font-size: 0.95em;\n cursor: pointer;\n transition:\n background 0.2s,\n border-color 0.2s;\n}\n\n.macro-button:hover {\n background: rgba(100, 181, 246, 0.25);\n border-color: #90caf9;\n}\n\n.macro-button:active {\n background: rgba(100, 181, 246, 0.35);\n}\n\n.error {\n color: #ef5350;\n font-family: monospace;\n padding: 1em;\n border: 1px solid #ef5350;\n border-radius: 4px;\n background: rgba(239, 83, 80, 0.1);\n}\n\n/* Runtime errors shown on the page (see src/components/RuntimeErrors.tsx) */\n.spindle-error-banners {\n position: fixed;\n top: 0.75em;\n left: 50%;\n z-index: 300;\n display: flex;\n flex-direction: column;\n gap: 0.5em;\n width: min(42em, calc(100% - 1.5em));\n transform: translateX(-50%);\n}\n\n.spindle-error-banner {\n position: relative;\n padding: 0.75em 2.75em 0.75em 1em;\n border: 1px solid #ef5350;\n border-radius: 4px;\n background: #2b1a1e;\n color: #ffcdd2;\n font-size: 0.9em;\n line-height: 1.5;\n box-shadow: 0 2px 12px rgba(0, 0, 0, 0.5);\n}\n\n.spindle-error-banner-message {\n font-family: monospace;\n color: #ef9a9a;\n}\n\n.spindle-error-banner-dismiss {\n position: absolute;\n top: 0.5em;\n right: 0.5em;\n background: transparent;\n border: none;\n color: inherit;\n font-size: 1em;\n cursor: pointer;\n}\n\n.spindle-error-banner-dismiss:hover {\n color: #fff;\n}\n\n.loading {\n text-align: center;\n padding: 2em;\n opacity: 0.6;\n}\n\n/* Menu bar */\n\n.story-menubar {\n position: sticky;\n top: 0;\n z-index: 100;\n display: flex;\n align-items: center;\n gap: 0.5em;\n padding: 0.5em 1.5em;\n background: #16213e;\n border-bottom: 1px solid rgba(255, 255, 255, 0.08);\n font-family: system-ui, sans-serif;\n font-size: 0.9em;\n}\n\n.story-title {\n flex: 1;\n font-weight: 600;\n color: #e0e0e0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.menubar-button {\n background: transparent;\n color: #9e9e9e;\n border: 1px solid transparent;\n padding: 0.35em 0.7em;\n border-radius: 4px;\n cursor: pointer;\n font: inherit;\n transition:\n color 0.2s,\n background 0.2s;\n}\n\n.menubar-button:hover {\n color: #e0e0e0;\n background: rgba(255, 255, 255, 0.08);\n}\n\n.menubar-button:disabled {\n opacity: 0.4;\n cursor: default;\n}\n\n.menubar-button:disabled:hover {\n color: #9e9e9e;\n background: transparent;\n}\n\n/* Generic dialog */\n\n.dialog-overlay {\n position: fixed;\n inset: 0;\n z-index: 200;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.6);\n}\n\n.dialog-panel {\n background: #16213e;\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 8px;\n width: 90%;\n max-width: 500px;\n max-height: 80vh;\n display: flex;\n flex-direction: column;\n color: #e0e0e0;\n font-family: system-ui, sans-serif;\n position: relative;\n}\n\n/* Focused programmatically when the dialog has no focusable content */\n.dialog-panel:focus {\n outline: none;\n}\n\n.dialog-saves {\n max-width: 550px;\n}\n\n.dialog-settings {\n max-width: 400px;\n}\n\n/* Keep the first control clear of the close button above it */\n.dialog-settings .dialog-body {\n padding-top: 2.25em;\n}\n\n.dialog-close {\n position: absolute;\n top: 0.75em;\n right: 0.75em;\n z-index: 1;\n background: transparent;\n border: none;\n color: #9e9e9e;\n font-size: 1.1em;\n cursor: pointer;\n padding: 0.25em;\n line-height: 1;\n}\n\n.dialog-close:hover {\n color: #e0e0e0;\n}\n\n.dialog-body {\n overflow-y: auto;\n flex: 1;\n min-height: 0;\n}\n\n/* Settings controls */\n\n.settings-controls {\n padding: 1em 1.25em;\n display: flex;\n flex-direction: column;\n gap: 1em;\n}\n\n.settings-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1em;\n}\n\n.settings-row select,\n.settings-row input[type='range'] {\n accent-color: #64b5f6;\n}\n\n.settings-row select {\n background: #1a1a2e;\n color: #e0e0e0;\n border: 1px solid rgba(255, 255, 255, 0.15);\n border-radius: 4px;\n padding: 0.3em 0.5em;\n font: inherit;\n}\n\n.settings-row input[type='checkbox'] {\n accent-color: #64b5f6;\n width: 1.1em;\n height: 1.1em;\n}\n\n/* Save manager */\n\n.save-manager {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n}\n\n.saves-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1em 1.25em;\n padding-right: 3em;\n border-bottom: 1px solid rgba(255, 255, 255, 0.08);\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.saves-header-left {\n display: flex;\n align-items: center;\n gap: 0.75em;\n}\n\n.saves-mode-toggle {\n display: flex;\n gap: 0;\n border: 1px solid rgba(255, 255, 255, 0.15);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.saves-mode-toggle button {\n background: transparent;\n color: #9e9e9e;\n border: none;\n padding: 0.3em 0.8em;\n font: inherit;\n font-size: 0.85em;\n font-weight: 600;\n cursor: pointer;\n transition:\n background 0.2s,\n color 0.2s;\n}\n\n.saves-mode-toggle button.active {\n background: rgba(100, 181, 246, 0.2);\n color: #64b5f6;\n}\n\n.saves-mode-toggle button:hover:not(.active) {\n color: #e0e0e0;\n}\n\n.saves-body {\n padding: 0.75em 1.25em;\n overflow-y: auto;\n flex: 1;\n min-height: 0;\n}\n\n.saves-empty {\n text-align: center;\n padding: 2em 1em;\n opacity: 0.5;\n font-size: 0.9em;\n}\n\n.saves-toolbar {\n display: flex;\n gap: 0.5em;\n padding: 0.5em 1.25em;\n border-bottom: 1px solid rgba(255, 255, 255, 0.08);\n flex-shrink: 0;\n}\n\n.saves-toolbar-button {\n background: rgba(255, 255, 255, 0.05);\n color: #9e9e9e;\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 4px;\n padding: 0.3em 0.7em;\n font: inherit;\n font-size: 0.8em;\n cursor: pointer;\n transition:\n background 0.2s,\n color 0.2s;\n}\n\n.saves-toolbar-button:hover {\n background: rgba(255, 255, 255, 0.1);\n color: #e0e0e0;\n}\n\n.playthrough-group {\n margin-bottom: 0.75em;\n}\n\n.playthrough-header {\n display: flex;\n width: 100%;\n border: 0;\n background: none;\n font-family: inherit;\n text-align: left;\n align-items: center;\n gap: 0.5em;\n padding: 0.4em 0;\n cursor: pointer;\n user-select: none;\n font-size: 0.85em;\n color: #9e9e9e;\n transition: color 0.2s;\n}\n\n.playthrough-header:hover {\n color: #e0e0e0;\n}\n\n.playthrough-chevron {\n display: inline-block;\n font-size: 0.7em;\n transition: transform 0.2s;\n}\n\n.playthrough-chevron.open {\n transform: rotate(90deg);\n}\n\n.playthrough-label {\n font-weight: 600;\n}\n\n.playthrough-date {\n opacity: 0.6;\n font-size: 0.9em;\n}\n\n.playthrough-saves {\n display: flex;\n flex-direction: column;\n gap: 0.4em;\n padding-left: 0.25em;\n}\n\n.save-slot {\n display: flex;\n align-items: center;\n gap: 0.75em;\n padding: 0.5em 0.6em;\n background: rgba(255, 255, 255, 0.03);\n border: 1px solid rgba(255, 255, 255, 0.06);\n border-radius: 6px;\n transition: background 0.15s;\n}\n\n.save-slot:hover {\n background: rgba(255, 255, 255, 0.06);\n}\n\n.save-slot-info {\n flex: 1;\n min-width: 0;\n}\n\n.save-slot-title {\n font-weight: 500;\n font-size: 0.9em;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.save-slot-meta {\n font-size: 0.75em;\n color: #9e9e9e;\n display: flex;\n gap: 0.75em;\n}\n\n.save-slot-actions {\n display: flex;\n gap: 0.3em;\n flex-shrink: 0;\n}\n\n.save-slot-action {\n background: transparent;\n color: #9e9e9e;\n border: 1px solid transparent;\n border-radius: 3px;\n padding: 0.2em 0.5em;\n font: inherit;\n font-size: 0.75em;\n cursor: pointer;\n transition:\n color 0.2s,\n background 0.2s;\n white-space: nowrap;\n}\n\n.save-slot-action:hover {\n color: #e0e0e0;\n background: rgba(255, 255, 255, 0.08);\n}\n\n.save-slot-action.primary {\n color: #64b5f6;\n border-color: rgba(100, 181, 246, 0.3);\n}\n\n.save-slot-action.primary:hover {\n background: rgba(100, 181, 246, 0.15);\n}\n\n.save-slot-action.danger:hover {\n color: #ef5350;\n background: rgba(239, 83, 80, 0.1);\n}\n\n.save-slot-new {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0.5em;\n margin-top: 0.25em;\n border: 1px dashed rgba(255, 255, 255, 0.12);\n border-radius: 6px;\n color: #9e9e9e;\n font: inherit;\n font-size: 0.8em;\n background: transparent;\n cursor: pointer;\n width: 100%;\n transition:\n color 0.2s,\n border-color 0.2s,\n background 0.2s;\n}\n\n.save-slot-new:hover {\n color: #64b5f6;\n border-color: rgba(100, 181, 246, 0.3);\n background: rgba(100, 181, 246, 0.05);\n}\n\n.saves-notice {\n padding: 0.5em 1.25em;\n font-size: 0.8em;\n color: #ffb74d;\n border-bottom: 1px solid rgba(255, 183, 77, 0.3);\n background: rgba(255, 183, 77, 0.08);\n flex-shrink: 0;\n}\n\n.saves-status {\n padding: 0.5em 1.25em;\n font-size: 0.8em;\n color: #81c784;\n border-top: 1px solid rgba(255, 255, 255, 0.08);\n flex-shrink: 0;\n text-align: center;\n}\n\n.saves-status.error {\n color: #ef5350;\n border: none;\n border-radius: 0;\n padding: 0.5em 1.25em;\n font-family: inherit;\n background: transparent;\n}\n\n.save-rename-input {\n background: #1a1a2e;\n color: #e0e0e0;\n border: 1px solid rgba(100, 181, 246, 0.4);\n border-radius: 3px;\n padding: 0.15em 0.4em;\n font: inherit;\n font-size: 0.9em;\n width: 100%;\n}\n\n.save-rename-input:focus {\n outline: none;\n border-color: #64b5f6;\n}\n\n/* Macro: link */\n\n.macro-link {\n color: #64b5f6;\n text-decoration: none;\n border-bottom: 1px solid rgba(100, 181, 246, 0.3);\n transition:\n color 0.2s,\n border-color 0.2s;\n cursor: pointer;\n}\n\n.macro-link:hover {\n color: #90caf9;\n border-bottom-color: #90caf9;\n}\n\n.macro-link:active {\n color: #42a5f5;\n}\n\n/* Macro: form inputs */\n\n.macro-textbox,\n.macro-numberbox,\n.macro-textarea {\n background: #1a1a2e;\n color: #e0e0e0;\n border: 1px solid rgba(255, 255, 255, 0.15);\n border-radius: 4px;\n padding: 0.3em 0.5em;\n font: inherit;\n}\n\n.macro-textbox:focus,\n.macro-numberbox:focus,\n.macro-textarea:focus {\n outline: none;\n border-color: #64b5f6;\n}\n\n.macro-textarea {\n min-height: 3em;\n resize: vertical;\n}\n\n.macro-checkbox,\n.macro-radiobutton {\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 0.3em;\n}\n\n.macro-checkbox input,\n.macro-radiobutton input {\n accent-color: #64b5f6;\n}\n\n/* Macro: listbox */\n\n.macro-listbox {\n background: #1a1a2e;\n color: #e0e0e0;\n border: 1px solid rgba(255, 255, 255, 0.15);\n border-radius: 4px;\n padding: 0.3em 0.5em;\n font: inherit;\n}\n\n/* Macro: cycle */\n\n.macro-cycle {\n background: rgba(100, 181, 246, 0.15);\n color: #64b5f6;\n border: 1px solid rgba(100, 181, 246, 0.4);\n border-radius: 4px;\n padding: 0.25em 0.75em;\n font: inherit;\n cursor: pointer;\n transition:\n background 0.2s,\n border-color 0.2s;\n}\n\n.macro-cycle:hover {\n background: rgba(100, 181, 246, 0.25);\n border-color: #90caf9;\n}\n\n/* Macro: meter */\n\n.macro-meter {\n position: relative;\n width: 100%;\n height: 1.4em;\n background: #2a2a3e;\n border-radius: 0.3em;\n overflow: hidden;\n border: 1px solid #444;\n}\n\n.macro-meter-fill {\n height: 100%;\n background: #64b5f6;\n transition: width 0.3s ease;\n}\n\n.macro-meter-label {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.85em;\n color: #e0e0e0;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8);\n pointer-events: none;\n}\n\n/* Markdown wrapper — invisible to layout */\n\n.md {\n display: contents;\n}\n\n/* Markdown block elements inside passages */\n\n.passage p {\n margin: 0.6em 0;\n}\n\n.passage p:first-child {\n margin-top: 0;\n}\n\n.passage p:last-child {\n margin-bottom: 0;\n}\n\n.passage h1,\n.passage h2,\n.passage h3,\n.passage h4,\n.passage h5,\n.passage h6 {\n margin: 1em 0 0.4em;\n line-height: 1.3;\n color: #f0f0f0;\n}\n\n.passage h1 {\n font-size: 1.8em;\n}\n.passage h2 {\n font-size: 1.5em;\n}\n.passage h3 {\n font-size: 1.25em;\n}\n.passage h4 {\n font-size: 1.1em;\n}\n.passage h5 {\n font-size: 1em;\n}\n.passage h6 {\n font-size: 0.9em;\n opacity: 0.8;\n}\n\n.passage code {\n font-family: 'Fira Code', 'Cascadia Code', 'Consolas', monospace;\n font-size: 0.9em;\n background: rgba(255, 255, 255, 0.08);\n padding: 0.15em 0.35em;\n border-radius: 3px;\n}\n\n.passage pre {\n background: rgba(0, 0, 0, 0.3);\n border: 1px solid rgba(255, 255, 255, 0.08);\n border-radius: 6px;\n padding: 1em;\n overflow-x: auto;\n margin: 0.8em 0;\n}\n\n.passage pre code {\n background: none;\n padding: 0;\n border-radius: 0;\n font-size: 0.85em;\n}\n\n.passage blockquote {\n border-left: 3px solid rgba(100, 181, 246, 0.5);\n margin: 0.8em 0;\n padding: 0.4em 1em;\n color: #b0b0b0;\n}\n\n.passage blockquote p {\n margin: 0.3em 0;\n}\n\n.passage ul,\n.passage ol {\n margin: 0.6em 0;\n padding-left: 1.8em;\n}\n\n.passage li {\n margin: 0.2em 0;\n}\n\n.passage hr {\n border: none;\n border-top: 1px solid rgba(255, 255, 255, 0.12);\n margin: 1.2em 0;\n}\n\n.passage table {\n border-collapse: collapse;\n width: 100%;\n margin: 0.8em 0;\n}\n\n.passage th,\n.passage td {\n border: 1px solid rgba(255, 255, 255, 0.12);\n padding: 0.5em 0.75em;\n text-align: left;\n}\n\n.passage th {\n background: rgba(255, 255, 255, 0.06);\n font-weight: 600;\n}\n\n.passage tr:nth-child(even) {\n background: rgba(255, 255, 255, 0.02);\n}\n\n.passage del {\n opacity: 0.5;\n}\n\n.passage strong {\n color: #f0f0f0;\n}\n\n/* Macro: type (typewriter) */\n\n.macro-type-cursor::after {\n content: '\\2588';\n animation: type-blink 0.7s step-end infinite;\n color: #64b5f6;\n}\n\n.macro-type-done .macro-type-cursor::after {\n display: none;\n}\n\n@keyframes type-blink {\n 50% {\n opacity: 0;\n }\n}\n";
|
|
21094
21274
|
//#endregion
|
|
21095
21275
|
//#region src/index.tsx
|
|
21096
21276
|
function renderErrors(root, errors) {
|