@markdstage/markdstage 0.1.3 → 2.4.0
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/README.md +21 -6
- package/package.json +3 -1
- package/shared/README.md +55 -31
- package/shared/architecture-editor/editor.css +155 -0
- package/shared/architecture-editor/editor.js +1775 -0
- package/shared/architecture-editor/index.html +99 -0
- package/shared/markdstage-guide.mjs +2 -2
- package/shared/renderer/architecture.mjs +233 -0
- package/shared/renderer/index.html +53 -12
- package/shared/renderer/renderer.js +1263 -25
- package/shared/renderer/slides.css +81 -6
- package/shared/runtime/architecture-editor-server.mjs +651 -0
- package/shared/runtime/architecture-source.mjs +195 -0
- package/shared/runtime/browser.mjs +71 -4
- package/shared/runtime/deck-session.mjs +3 -1
- package/shared/runtime/output-paths.mjs +18 -1
- package/shared/runtime/output.mjs +267 -4
- package/shared/runtime/pptx-package.mjs +1088 -0
- package/shared/runtime/presentation-server.mjs +268 -12
- package/src/cli.mjs +42 -4
- package/src/commands/export.mjs +31 -11
- package/src/commands/present.mjs +138 -49
- package/src/deck.mjs +2 -0
- package/src/runtime.mjs +8 -2
- package/src/skills.mjs +42 -16
|
@@ -389,6 +389,8 @@ footer .page{color:var(--accent-strong);font-weight:600;background:var(--accent-
|
|
|
389
389
|
opacity:.45;transition:opacity .2s ease;}
|
|
390
390
|
.nav:hover,.nav:focus-within{opacity:1;}
|
|
391
391
|
@media (prefers-reduced-motion:reduce){.nav{transition:none;}}
|
|
392
|
+
.nav-main{display:flex;align-items:center;gap:.4em;}
|
|
393
|
+
.nav-tools{position:relative;display:flex;align-items:center;}
|
|
392
394
|
.nav-btn{display:inline-flex;align-items:center;justify-content:center;
|
|
393
395
|
min-width:2em;height:2em;padding:0 .55em;
|
|
394
396
|
font-size:clamp(13px,1.9vh,17px);line-height:1;cursor:pointer;
|
|
@@ -400,10 +402,37 @@ footer .page{color:var(--accent-strong);font-weight:600;background:var(--accent-
|
|
|
400
402
|
.nav-btn:disabled{opacity:.32;cursor:default;}
|
|
401
403
|
.nav-btn[data-state="active"]{color:var(--accent-strong);background:var(--accent-soft);}
|
|
402
404
|
.nav-btn[data-state="error"]{color:#d13438;}
|
|
403
|
-
.nav-
|
|
405
|
+
.nav-more-toggle{position:relative;}
|
|
406
|
+
.nav-more-toggle[data-state]::after{content:"";position:absolute;right:.22em;top:.22em;
|
|
407
|
+
width:.38em;height:.38em;border-radius:50%;background:transparent;}
|
|
408
|
+
.nav-more-toggle[data-state="active"]::after{background:var(--accent-strong);}
|
|
409
|
+
.nav-more-toggle[data-state="error"]::after{background:#d13438;}
|
|
404
410
|
.nav-counter{min-width:4.2em;text-align:center;font-variant-numeric:tabular-nums;
|
|
405
411
|
font-weight:600;color:var(--accent-strong);font-size:clamp(12px,1.7vh,16px);
|
|
406
412
|
padding:0 .3em;user-select:none;}
|
|
413
|
+
.nav-more-panel[hidden],.nav-more-group[hidden]{display:none;}
|
|
414
|
+
.nav-more-panel{position:absolute;left:50%;bottom:calc(100% + .65em);transform:translateX(-50%);
|
|
415
|
+
width:min(20em,calc(100vw - 24px));max-height:min(70vh,32em);overflow:auto;
|
|
416
|
+
display:grid;gap:.7em;padding:.7em;border:1px solid var(--border);border-radius:12px;
|
|
417
|
+
color:var(--fg);background:color-mix(in srgb,var(--surface) 96%,transparent);
|
|
418
|
+
box-shadow:0 12px 34px rgba(0,0,0,.3);}
|
|
419
|
+
.nav-more-group{display:grid;gap:.18em;}
|
|
420
|
+
.nav-more-title{padding:.2em .65em;color:var(--muted);font-size:.72em;font-weight:750;
|
|
421
|
+
letter-spacing:.06em;text-transform:uppercase;}
|
|
422
|
+
.nav-more-item{display:grid;grid-template-columns:2.8em minmax(0,1fr);align-items:center;
|
|
423
|
+
width:100%;min-height:2.55em;padding:.42em .65em;border:1px solid transparent;
|
|
424
|
+
border-radius:8px;color:var(--fg);background:transparent;font:inherit;text-align:left;
|
|
425
|
+
cursor:pointer;}
|
|
426
|
+
.nav-more-item[hidden]{display:none;}
|
|
427
|
+
.nav-more-item:hover:not(:disabled){background:var(--accent-soft);color:var(--accent-strong);}
|
|
428
|
+
.nav-more-item:focus-visible{outline:2px solid var(--accent);outline-offset:1px;}
|
|
429
|
+
.nav-more-item:disabled{opacity:.4;cursor:default;}
|
|
430
|
+
.nav-more-item[data-state="active"]{color:var(--accent-strong);background:var(--accent-soft);}
|
|
431
|
+
.nav-more-item[data-state="error"]{color:#d13438;}
|
|
432
|
+
.nav-more-icon{display:inline-flex;align-items:center;justify-content:center;min-width:2.2em;
|
|
433
|
+
font-size:.95em;font-weight:700;}
|
|
434
|
+
.nav-more-icon.nav-fixed-preview{font-size:.72em;}
|
|
435
|
+
.nav-more-label{min-width:0;font-size:.88em;font-weight:600;line-height:1.25;}
|
|
407
436
|
.layout-warning{position:fixed;top:14px;right:14px;z-index:55;
|
|
408
437
|
max-width:min(420px,calc(100vw - 28px));padding:.55em .8em;border-radius:8px;
|
|
409
438
|
color:#fff;background:#a4262c;border:1px solid #f1aeb5;
|
|
@@ -413,19 +442,25 @@ body.presenter-mode .nav{opacity:0;}
|
|
|
413
442
|
body.presenter-mode .nav:hover,body.presenter-mode .nav:focus-within{opacity:1;}
|
|
414
443
|
body.presenter-mode #navPresent{display:none;}
|
|
415
444
|
body.presenter-mode #navPresenterView{display:none;}
|
|
416
|
-
body.presenter-mode #navExport{display:none;}
|
|
445
|
+
body.presenter-mode #navExport,body.presenter-mode #navExportPptx{display:none;}
|
|
417
446
|
body.presenter-mode #navImport{display:none;}
|
|
418
447
|
body.presenter-mode #navSourceMode{display:none;}
|
|
419
448
|
body.preview-mode .nav,body.preview-mode .overview{display:none!important;}
|
|
420
449
|
/* When no deck is loaded, leave only the load button as the available action. */
|
|
421
|
-
.nav.nav-empty
|
|
450
|
+
.nav.nav-empty .nav-main,.nav.nav-empty #navMore{display:none;}
|
|
451
|
+
.nav.nav-empty .nav-more-panel{position:static;display:block;width:auto;max-height:none;
|
|
452
|
+
overflow:visible;padding:0;border:0;border-radius:0;transform:none;background:transparent;
|
|
453
|
+
box-shadow:none;}
|
|
454
|
+
.nav.nav-empty .nav-more-group,.nav.nav-empty .nav-more-title,
|
|
455
|
+
.nav.nav-empty .nav-more-item{display:none;}
|
|
456
|
+
.nav.nav-empty .nav-more-group[data-nav-group="file"]{display:block;}
|
|
457
|
+
.nav.nav-empty #navImport{display:inline-flex;gap:.55em;width:auto;min-width:2.5em;height:2.5em;
|
|
458
|
+
padding:0 1em;}
|
|
422
459
|
body.markdstage-empty .nav{
|
|
423
460
|
opacity:1;padding:.42em;border-color:#3b4562;background:#151b2f;
|
|
424
461
|
box-shadow:0 10px 30px rgba(0,0,0,.36);}
|
|
425
462
|
body.markdstage-empty #navImport{
|
|
426
|
-
width:auto;min-width:2.5em;height:2.5em;padding:0 1em;
|
|
427
463
|
border-color:#ffb547;background:#ffb547;color:#0b1020;font-weight:750;}
|
|
428
|
-
body.markdstage-empty #navImport::after{content:" Open Markdown";}
|
|
429
464
|
body.markdstage-empty #navImport:hover{background:#ffd77a;color:#0b1020;}
|
|
430
465
|
|
|
431
466
|
/* ===== Presenter view ===== */
|
|
@@ -566,7 +601,7 @@ body.fixed-output-mode .deck.backcover-slide{background:var(--backcover-bg,var(-
|
|
|
566
601
|
body.fixed-output-mode .deck::before{position:absolute;}
|
|
567
602
|
body.fixed-output-mode .body{overflow:hidden;}
|
|
568
603
|
body.fixed-output-mode .kicker{font-size:12px;}
|
|
569
|
-
body.fixed-output-mode img{max-height:346px;}
|
|
604
|
+
body.fixed-output-mode img:not(.theme-cover-background){max-height:346px;}
|
|
570
605
|
body.fixed-output-mode pre.mermaid svg{max-height:317px;}
|
|
571
606
|
body.fixed-output-mode .architecture-svg{max-height:504px;}
|
|
572
607
|
body.fixed-output-mode footer{gap:.65em;font-size:11px;margin-top:16px;}
|
|
@@ -583,6 +618,46 @@ body.capture-mode .nav,body.capture-mode .overview,body.capture-mode .layout-war
|
|
|
583
618
|
display:none!important;
|
|
584
619
|
}
|
|
585
620
|
|
|
621
|
+
/* ===== Headless hybrid PowerPoint export =====
|
|
622
|
+
The complete deck is stacked at the same 1280x720 geometry as PDF output.
|
|
623
|
+
Native objects become transparent only after renderer.js has measured them,
|
|
624
|
+
leaving backgrounds, decoration, Mermaid, code, and other fallback artwork. */
|
|
625
|
+
html:has(body.pptx-mode),body.pptx-mode{width:1280px;height:auto;overflow:visible;}
|
|
626
|
+
body.pptx-mode{background:none;}
|
|
627
|
+
body.pptx-mode #stage{display:block;width:1280px;height:auto;}
|
|
628
|
+
body.pptx-mode .deck{display:flex;}
|
|
629
|
+
body.pptx-mode .nav,body.pptx-mode .overview,body.pptx-mode .layout-warning,
|
|
630
|
+
body.pptx-mode .mermaidTooltip{display:none!important;}
|
|
631
|
+
body.pptx-artwork-mode [data-pptx-native="text"],
|
|
632
|
+
body.pptx-artwork-mode [data-pptx-native="text"] *,
|
|
633
|
+
body.pptx-artwork-mode [data-pptx-native="table"],
|
|
634
|
+
body.pptx-artwork-mode [data-pptx-native="table"] *{
|
|
635
|
+
color:transparent!important;
|
|
636
|
+
-webkit-text-fill-color:transparent!important;
|
|
637
|
+
text-decoration-color:transparent!important;
|
|
638
|
+
caret-color:transparent!important;
|
|
639
|
+
}
|
|
640
|
+
body.pptx-artwork-mode li[data-pptx-native="text"]::marker{color:transparent!important;}
|
|
641
|
+
body.pptx-artwork-mode [data-pptx-native="table"]{visibility:hidden!important;}
|
|
642
|
+
body.pptx-artwork-mode img[data-pptx-native="image"]{
|
|
643
|
+
object-fit:none!important;
|
|
644
|
+
object-position:99999px 99999px!important;
|
|
645
|
+
}
|
|
646
|
+
body.pptx-artwork-mode svg [data-pptx-native="shape"],
|
|
647
|
+
body.pptx-artwork-mode svg [data-pptx-native="shape"] *,
|
|
648
|
+
body.pptx-artwork-mode svg [data-pptx-native="text"],
|
|
649
|
+
body.pptx-artwork-mode svg [data-pptx-native="text"] *,
|
|
650
|
+
body.pptx-artwork-mode svg [data-pptx-native="connector"],
|
|
651
|
+
body.pptx-artwork-mode svg [data-pptx-native="connector"] *,
|
|
652
|
+
body.pptx-artwork-mode svg [data-pptx-native="table"]{
|
|
653
|
+
fill:transparent!important;
|
|
654
|
+
stroke:transparent!important;
|
|
655
|
+
color:transparent!important;
|
|
656
|
+
-webkit-text-fill-color:transparent!important;
|
|
657
|
+
}
|
|
658
|
+
body.pptx-artwork-mode svg path[data-pptx-native="connector"]{marker-end:none!important;}
|
|
659
|
+
body.pptx-artwork-mode svg [data-pptx-native="image"]{opacity:0!important;}
|
|
660
|
+
|
|
586
661
|
/* ===== Headless PDF export ===== */
|
|
587
662
|
@page{size:13.333333in 7.5in;margin:0;}
|
|
588
663
|
@media print{
|