raffel 1.1.16 → 1.1.18
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/docs/ui/assets/raffel-docs.css +192 -1
- package/dist/docs/ui/assets/raffel-docs.js +229 -3
- package/dist/docs/ui/client-script/index.d.ts +1 -1
- package/dist/docs/ui/client-script/index.d.ts.map +1 -1
- package/dist/docs/ui/client-script/index.js +3 -2
- package/dist/docs/ui/client-script/index.js.map +1 -1
- package/dist/docs/ui/html-builder.d.ts.map +1 -1
- package/dist/docs/ui/html-builder.js +26 -1
- package/dist/docs/ui/html-builder.js.map +1 -1
- package/dist/docs/ui/runtime/index.js +229 -3
- package/dist/docs/ui/runtime/index.js.map +1 -1
- package/dist/docs/ui/style-sections/content.d.ts +1 -1
- package/dist/docs/ui/style-sections/content.d.ts.map +1 -1
- package/dist/docs/ui/style-sections/content.js +162 -1
- package/dist/docs/ui/style-sections/content.js.map +1 -1
- package/dist/docs/ui/style-sections/shell.d.ts.map +1 -1
- package/dist/docs/ui/style-sections/shell.js +30 -0
- package/dist/docs/ui/style-sections/shell.js.map +1 -1
- package/dist/docs/ui/types.d.ts +25 -0
- package/dist/docs/ui/types.d.ts.map +1 -1
- package/dist/ui/docs/ui/client-script/index.d.ts +1 -1
- package/dist/ui/docs/ui/client-script/index.d.ts.map +1 -1
- package/dist/ui/docs/ui/html-builder.d.ts.map +1 -1
- package/dist/ui/docs/ui/style-sections/content.d.ts +1 -1
- package/dist/ui/docs/ui/style-sections/content.d.ts.map +1 -1
- package/dist/ui/docs/ui/style-sections/shell.d.ts.map +1 -1
- package/dist/ui/docs/ui/types.d.ts +25 -0
- package/dist/ui/docs/ui/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -53,6 +53,16 @@
|
|
|
53
53
|
--hover-bg: rgba(99, 102, 241, 0.15);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
+
/*
|
|
57
|
+
* theme: 'custom' — user-controlled palette via the --raffel-* token set.
|
|
58
|
+
*
|
|
59
|
+
* Fallbacks here are the LIGHT defaults. They only kick in when the user
|
|
60
|
+
* sets theme: 'custom' and does NOT define the corresponding --raffel-*
|
|
61
|
+
* token in their customCss. The matching prefers-color-scheme: dark
|
|
62
|
+
* block below mirrors theme: 'auto' so a dark-mode visitor never lands
|
|
63
|
+
* on a half-styled light surface; together they make 'custom' default
|
|
64
|
+
* to system preference until the consumer takes full control.
|
|
65
|
+
*/
|
|
56
66
|
[data-theme="custom"] {
|
|
57
67
|
--primary-color: var(--raffel-primary-color, #6366f1);
|
|
58
68
|
--primary-hover: var(--raffel-primary-hover, #5457e2);
|
|
@@ -76,6 +86,26 @@
|
|
|
76
86
|
--code-panel-header: var(--raffel-code-panel-header, #37474f);
|
|
77
87
|
}
|
|
78
88
|
|
|
89
|
+
@media (prefers-color-scheme: dark) {
|
|
90
|
+
[data-theme="custom"] {
|
|
91
|
+
--bg-color: var(--raffel-bg-color, #0f172a);
|
|
92
|
+
--bg-primary: var(--raffel-bg-primary, var(--raffel-bg-color, #0f172a));
|
|
93
|
+
--bg-secondary: var(--raffel-bg-secondary, #111c33);
|
|
94
|
+
--bg-tertiary: var(--raffel-bg-tertiary, #1e293b);
|
|
95
|
+
--surface-color: var(--raffel-surface-color, #111c33);
|
|
96
|
+
--text-color: var(--raffel-text-color, #f1f5f9);
|
|
97
|
+
--text-primary: var(--raffel-text-primary, var(--raffel-text-color, #f1f5f9));
|
|
98
|
+
--text-secondary: var(--raffel-text-secondary, #cbd5e1);
|
|
99
|
+
--text-muted: var(--raffel-text-muted, #94a3b8);
|
|
100
|
+
--border-color: var(--raffel-border-color, #475569);
|
|
101
|
+
--border: var(--raffel-border, var(--raffel-border-color, #475569));
|
|
102
|
+
--accent: var(--raffel-accent, var(--raffel-primary-color, #6366f1));
|
|
103
|
+
--code-bg: var(--raffel-code-bg, #1e293b);
|
|
104
|
+
--sidebar-bg: var(--raffel-sidebar-bg, #1e293b);
|
|
105
|
+
--hover-bg: var(--raffel-hover-bg, rgba(99, 102, 241, 0.15));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
79
109
|
@media (prefers-color-scheme: dark) {
|
|
80
110
|
[data-theme="auto"] {
|
|
81
111
|
--bg-color: #0f172a;
|
|
@@ -1662,16 +1692,103 @@
|
|
|
1662
1692
|
color: #c4b5fd;
|
|
1663
1693
|
}
|
|
1664
1694
|
|
|
1695
|
+
/*
|
|
1696
|
+
* Prism dark tokens also apply to theme: 'custom' under prefers-color-scheme
|
|
1697
|
+
* dark, mirroring the shell.ts default-token logic. Without this block,
|
|
1698
|
+
* consumers using customCss on a dark body inherit the light-mode token
|
|
1699
|
+
* colors (orange/green over dark, hard to scan) and have to rewrite all
|
|
1700
|
+
* 8 token classes themselves.
|
|
1701
|
+
*/
|
|
1702
|
+
@media (prefers-color-scheme: dark) {
|
|
1703
|
+
[data-theme="custom"] .markdown-content .token.property,
|
|
1704
|
+
[data-theme="custom"] .markdown-content .token.tag,
|
|
1705
|
+
[data-theme="custom"] .markdown-content .token.boolean,
|
|
1706
|
+
[data-theme="custom"] .markdown-content .token.number,
|
|
1707
|
+
[data-theme="custom"] .markdown-content .token.constant,
|
|
1708
|
+
[data-theme="custom"] .markdown-content .token.symbol {
|
|
1709
|
+
color: #fcd34d;
|
|
1710
|
+
}
|
|
1711
|
+
|
|
1712
|
+
[data-theme="custom"] .markdown-content .token.selector,
|
|
1713
|
+
[data-theme="custom"] .markdown-content .token.attr-name,
|
|
1714
|
+
[data-theme="custom"] .markdown-content .token.string,
|
|
1715
|
+
[data-theme="custom"] .markdown-content .token.char,
|
|
1716
|
+
[data-theme="custom"] .markdown-content .token.builtin {
|
|
1717
|
+
color: #86efac;
|
|
1718
|
+
}
|
|
1719
|
+
|
|
1720
|
+
[data-theme="custom"] .markdown-content .token.function,
|
|
1721
|
+
[data-theme="custom"] .markdown-content .token.class-name {
|
|
1722
|
+
color: #93c5fd;
|
|
1723
|
+
}
|
|
1724
|
+
|
|
1725
|
+
[data-theme="custom"] .markdown-content .token.keyword {
|
|
1726
|
+
color: #c4b5fd;
|
|
1727
|
+
}
|
|
1728
|
+
}
|
|
1729
|
+
|
|
1665
1730
|
.markdown-content .mermaid {
|
|
1731
|
+
position: relative;
|
|
1666
1732
|
margin: 16px 0;
|
|
1667
1733
|
padding: 16px;
|
|
1668
1734
|
border: 1px solid var(--border);
|
|
1669
1735
|
border-radius: 6px;
|
|
1670
1736
|
background: var(--bg-primary);
|
|
1671
|
-
overflow
|
|
1737
|
+
overflow: hidden;
|
|
1672
1738
|
text-align: center;
|
|
1673
1739
|
}
|
|
1674
1740
|
|
|
1741
|
+
/* Viewport — clips the scaled SVG so it doesn't overflow the card. */
|
|
1742
|
+
.markdown-content .mermaid .mermaid-viewport {
|
|
1743
|
+
position: relative;
|
|
1744
|
+
overflow: hidden;
|
|
1745
|
+
user-select: none;
|
|
1746
|
+
-webkit-user-select: none;
|
|
1747
|
+
}
|
|
1748
|
+
|
|
1749
|
+
/* Toolbar — appears in the top-right corner, fades in on hover. */
|
|
1750
|
+
.markdown-content .mermaid .mermaid-toolbar {
|
|
1751
|
+
position: absolute;
|
|
1752
|
+
top: 10px;
|
|
1753
|
+
right: 10px;
|
|
1754
|
+
display: flex;
|
|
1755
|
+
gap: 4px;
|
|
1756
|
+
padding: 4px;
|
|
1757
|
+
background: var(--bg-secondary);
|
|
1758
|
+
border: 1px solid var(--border);
|
|
1759
|
+
border-radius: 6px;
|
|
1760
|
+
opacity: 0;
|
|
1761
|
+
transition: opacity 0.18s ease;
|
|
1762
|
+
z-index: 2;
|
|
1763
|
+
}
|
|
1764
|
+
.markdown-content .mermaid:hover .mermaid-toolbar,
|
|
1765
|
+
.markdown-content .mermaid:focus-within .mermaid-toolbar { opacity: 1; }
|
|
1766
|
+
|
|
1767
|
+
.markdown-content .mermaid .mermaid-btn {
|
|
1768
|
+
width: 28px;
|
|
1769
|
+
height: 28px;
|
|
1770
|
+
display: inline-flex;
|
|
1771
|
+
align-items: center;
|
|
1772
|
+
justify-content: center;
|
|
1773
|
+
background: transparent;
|
|
1774
|
+
color: var(--text-secondary);
|
|
1775
|
+
border: 0;
|
|
1776
|
+
border-radius: 4px;
|
|
1777
|
+
cursor: pointer;
|
|
1778
|
+
font-family: ui-sans-serif, system-ui, sans-serif;
|
|
1779
|
+
font-size: 14px;
|
|
1780
|
+
line-height: 1;
|
|
1781
|
+
transition: background 0.15s ease, color 0.15s ease;
|
|
1782
|
+
}
|
|
1783
|
+
.markdown-content .mermaid .mermaid-btn:hover {
|
|
1784
|
+
background: var(--hover-bg);
|
|
1785
|
+
color: var(--text-primary);
|
|
1786
|
+
}
|
|
1787
|
+
.markdown-content .mermaid .mermaid-btn:focus-visible {
|
|
1788
|
+
outline: 2px solid var(--primary-color);
|
|
1789
|
+
outline-offset: 1px;
|
|
1790
|
+
}
|
|
1791
|
+
|
|
1675
1792
|
.markdown-content .mermaid-fallback,
|
|
1676
1793
|
.markdown-content .mermaid-error {
|
|
1677
1794
|
text-align: left;
|
|
@@ -1685,6 +1802,80 @@
|
|
|
1685
1802
|
border-left: 4px solid #d97706;
|
|
1686
1803
|
}
|
|
1687
1804
|
|
|
1805
|
+
/* Fullscreen dialog — opened by the toolbar fullscreen button. */
|
|
1806
|
+
dialog.mermaid-fullscreen-dialog {
|
|
1807
|
+
width: 100vw;
|
|
1808
|
+
height: 100vh;
|
|
1809
|
+
max-width: 100vw;
|
|
1810
|
+
max-height: 100vh;
|
|
1811
|
+
margin: 0;
|
|
1812
|
+
padding: 0;
|
|
1813
|
+
border: 0;
|
|
1814
|
+
background: var(--bg-color);
|
|
1815
|
+
color: var(--text-primary);
|
|
1816
|
+
overflow: hidden;
|
|
1817
|
+
}
|
|
1818
|
+
dialog.mermaid-fullscreen-dialog::backdrop {
|
|
1819
|
+
background: rgba(0, 0, 0, 0.85);
|
|
1820
|
+
backdrop-filter: blur(6px);
|
|
1821
|
+
-webkit-backdrop-filter: blur(6px);
|
|
1822
|
+
}
|
|
1823
|
+
dialog.mermaid-fullscreen-dialog .mermaid-fullscreen-stage {
|
|
1824
|
+
width: 100vw;
|
|
1825
|
+
height: 100vh;
|
|
1826
|
+
display: flex;
|
|
1827
|
+
align-items: center;
|
|
1828
|
+
justify-content: center;
|
|
1829
|
+
overflow: hidden;
|
|
1830
|
+
user-select: none;
|
|
1831
|
+
-webkit-user-select: none;
|
|
1832
|
+
}
|
|
1833
|
+
dialog.mermaid-fullscreen-dialog .mermaid-fullscreen-stage svg {
|
|
1834
|
+
max-width: 92vw;
|
|
1835
|
+
max-height: 84vh;
|
|
1836
|
+
width: auto;
|
|
1837
|
+
height: auto;
|
|
1838
|
+
transition: transform 0.18s cubic-bezier(0.16, 1, 0.3, 1);
|
|
1839
|
+
}
|
|
1840
|
+
dialog.mermaid-fullscreen-dialog .mermaid-toolbar-fullscreen {
|
|
1841
|
+
position: fixed;
|
|
1842
|
+
top: 20px;
|
|
1843
|
+
left: 50%;
|
|
1844
|
+
transform: translateX(-50%);
|
|
1845
|
+
z-index: 3;
|
|
1846
|
+
background: var(--bg-secondary);
|
|
1847
|
+
border: 1px solid var(--border);
|
|
1848
|
+
border-radius: 8px;
|
|
1849
|
+
padding: 6px;
|
|
1850
|
+
display: flex;
|
|
1851
|
+
gap: 4px;
|
|
1852
|
+
opacity: 1;
|
|
1853
|
+
}
|
|
1854
|
+
dialog.mermaid-fullscreen-close {
|
|
1855
|
+
position: fixed;
|
|
1856
|
+
top: 20px;
|
|
1857
|
+
right: 24px;
|
|
1858
|
+
width: 36px;
|
|
1859
|
+
height: 36px;
|
|
1860
|
+
display: inline-flex;
|
|
1861
|
+
align-items: center;
|
|
1862
|
+
justify-content: center;
|
|
1863
|
+
background: var(--bg-secondary);
|
|
1864
|
+
color: var(--text-primary);
|
|
1865
|
+
border: 1px solid var(--border);
|
|
1866
|
+
border-radius: 50%;
|
|
1867
|
+
cursor: pointer;
|
|
1868
|
+
font-size: 16px;
|
|
1869
|
+
line-height: 1;
|
|
1870
|
+
z-index: 3;
|
|
1871
|
+
transition: background 0.15s ease;
|
|
1872
|
+
}
|
|
1873
|
+
dialog.mermaid-fullscreen-close:hover { background: var(--hover-bg); }
|
|
1874
|
+
dialog.mermaid-fullscreen-close:focus-visible {
|
|
1875
|
+
outline: 2px solid var(--primary-color);
|
|
1876
|
+
outline-offset: 2px;
|
|
1877
|
+
}
|
|
1878
|
+
|
|
1688
1879
|
.markdown-content .md-image {
|
|
1689
1880
|
display: block;
|
|
1690
1881
|
max-width: 100%;
|
|
@@ -31,6 +31,8 @@ const docsAssetBasePath = String(data.docsAssetBasePath ?? '');
|
|
|
31
31
|
const footerMarkdown = data.footerMarkdown ?? null;
|
|
32
32
|
const tocConfig = data.tocConfig ?? {};
|
|
33
33
|
const markdownConfig = data.markdownConfig ?? {};
|
|
34
|
+
const mermaidConfig = data.mermaidConfig ?? { enabled: true, src: 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js', viewer: true };
|
|
35
|
+
let mermaidLoadPromise = null;
|
|
34
36
|
const docsRepoConfig = (data.docsRepoConfig ?? null);
|
|
35
37
|
const breadcrumbsConfig = (data.breadcrumbsConfig && typeof data.breadcrumbsConfig === 'object')
|
|
36
38
|
? data.breadcrumbsConfig
|
|
@@ -1490,15 +1492,52 @@ function scrollToActiveHeading() {
|
|
|
1490
1492
|
function scrollToEndpoint(id) {
|
|
1491
1493
|
byId(id)?.scrollIntoView?.({ behavior: 'smooth', block: 'start' });
|
|
1492
1494
|
}
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
+
/**
|
|
1496
|
+
* Lazy-load the Mermaid renderer the first time a page with diagrams is
|
|
1497
|
+
* visited. Cached: subsequent route transitions inside the SPA reuse the
|
|
1498
|
+
* same `<script>` injection. Pages without `.mermaid` blocks never trigger
|
|
1499
|
+
* the network request, so the ~3MB library stays off the critical path
|
|
1500
|
+
* for the 95% of docs pages that have no diagrams.
|
|
1501
|
+
*/
|
|
1502
|
+
function loadMermaidLibrary(src) {
|
|
1503
|
+
if (win.mermaid)
|
|
1504
|
+
return Promise.resolve(win.mermaid);
|
|
1505
|
+
if (mermaidLoadPromise)
|
|
1506
|
+
return mermaidLoadPromise;
|
|
1507
|
+
mermaidLoadPromise = new Promise((resolve, reject) => {
|
|
1508
|
+
const script = doc.createElement('script');
|
|
1509
|
+
script.src = src;
|
|
1510
|
+
script.defer = true;
|
|
1511
|
+
script.onload = () => resolve(win.mermaid);
|
|
1512
|
+
script.onerror = () => {
|
|
1513
|
+
mermaidLoadPromise = null;
|
|
1514
|
+
reject(new Error(`Failed to load Mermaid from ${src}`));
|
|
1515
|
+
};
|
|
1516
|
+
doc.head?.appendChild(script);
|
|
1517
|
+
});
|
|
1518
|
+
return mermaidLoadPromise;
|
|
1519
|
+
}
|
|
1520
|
+
async function renderMermaidDiagrams(root = doc) {
|
|
1495
1521
|
const diagrams = Array.from(root?.querySelectorAll?.('.mermaid:not([data-mermaid-rendered])') ?? []);
|
|
1496
1522
|
if (diagrams.length === 0)
|
|
1497
1523
|
return;
|
|
1498
|
-
if (
|
|
1524
|
+
if (mermaidConfig.enabled === false) {
|
|
1499
1525
|
diagrams.forEach(diagram => diagram.classList.add('mermaid-fallback'));
|
|
1500
1526
|
return;
|
|
1501
1527
|
}
|
|
1528
|
+
let mermaid = win.mermaid;
|
|
1529
|
+
if (!mermaid) {
|
|
1530
|
+
try {
|
|
1531
|
+
mermaid = await loadMermaidLibrary(mermaidConfig.src);
|
|
1532
|
+
}
|
|
1533
|
+
catch (error) {
|
|
1534
|
+
diagrams.forEach(diagram => {
|
|
1535
|
+
diagram.classList.add('mermaid-fallback', 'mermaid-error');
|
|
1536
|
+
diagram.setAttribute('title', error instanceof Error ? error.message : 'Unable to load Mermaid');
|
|
1537
|
+
});
|
|
1538
|
+
return;
|
|
1539
|
+
}
|
|
1540
|
+
}
|
|
1502
1541
|
mermaid.initialize?.({ startOnLoad: false, securityLevel: 'strict' });
|
|
1503
1542
|
diagrams.forEach((diagram, index) => {
|
|
1504
1543
|
const source = diagram.getAttribute('data-mermaid-source') || diagram.textContent || '';
|
|
@@ -1509,6 +1548,8 @@ function renderMermaidDiagrams(root = doc) {
|
|
|
1509
1548
|
result?.bindFunctions?.(diagram);
|
|
1510
1549
|
diagram.dataset.mermaidRendered = 'true';
|
|
1511
1550
|
diagram.classList.remove('mermaid-fallback', 'mermaid-error');
|
|
1551
|
+
if (mermaidConfig.viewer !== false)
|
|
1552
|
+
mountMermaidViewer(diagram);
|
|
1512
1553
|
})
|
|
1513
1554
|
.catch((error) => {
|
|
1514
1555
|
diagram.dataset.mermaidRendered = 'error';
|
|
@@ -1517,6 +1558,191 @@ function renderMermaidDiagrams(root = doc) {
|
|
|
1517
1558
|
});
|
|
1518
1559
|
});
|
|
1519
1560
|
}
|
|
1561
|
+
/**
|
|
1562
|
+
* Wrap a freshly rendered Mermaid SVG in a viewer overlay:
|
|
1563
|
+
* • toolbar (zoom in/out/reset/fullscreen) — fades in on hover
|
|
1564
|
+
* • drag-to-pan when zoomed in (scale > 1)
|
|
1565
|
+
* • wheel-zoom with Ctrl/⌘ pressed (so vertical scroll still works normally)
|
|
1566
|
+
* • fullscreen via <dialog>, with same controls
|
|
1567
|
+
*
|
|
1568
|
+
* Idempotent: skips diagrams already wrapped (data-mermaid-viewer-mounted).
|
|
1569
|
+
*/
|
|
1570
|
+
function mountMermaidViewer(diagram) {
|
|
1571
|
+
if (diagram.dataset.mermaidViewerMounted)
|
|
1572
|
+
return;
|
|
1573
|
+
const svg = diagram.querySelector?.('svg');
|
|
1574
|
+
if (!svg)
|
|
1575
|
+
return;
|
|
1576
|
+
const viewport = doc.createElement('div');
|
|
1577
|
+
viewport.className = 'mermaid-viewport';
|
|
1578
|
+
diagram.insertBefore(viewport, svg);
|
|
1579
|
+
viewport.appendChild(svg);
|
|
1580
|
+
const toolbar = doc.createElement('div');
|
|
1581
|
+
toolbar.className = 'mermaid-toolbar';
|
|
1582
|
+
toolbar.innerHTML = [
|
|
1583
|
+
'<button class="mermaid-btn" data-mermaid-action="zoom-in" aria-label="Zoom in" title="Zoom in">+</button>',
|
|
1584
|
+
'<button class="mermaid-btn" data-mermaid-action="zoom-out" aria-label="Zoom out" title="Zoom out">−</button>',
|
|
1585
|
+
'<button class="mermaid-btn" data-mermaid-action="reset" aria-label="Reset view" title="Reset view">⟲</button>',
|
|
1586
|
+
'<button class="mermaid-btn" data-mermaid-action="fullscreen" aria-label="Open fullscreen" title="Fullscreen">⛶</button>',
|
|
1587
|
+
].join('');
|
|
1588
|
+
diagram.appendChild(toolbar);
|
|
1589
|
+
const state = { scale: 1, tx: 0, ty: 0 };
|
|
1590
|
+
function apply() {
|
|
1591
|
+
svg.style.transform = `translate(${state.tx}px, ${state.ty}px) scale(${state.scale})`;
|
|
1592
|
+
svg.style.transformOrigin = 'center center';
|
|
1593
|
+
svg.style.transition = 'transform 0.18s cubic-bezier(0.16, 1, 0.3, 1)';
|
|
1594
|
+
viewport.style.cursor = state.scale > 1 ? 'grab' : '';
|
|
1595
|
+
}
|
|
1596
|
+
function reset() { state.scale = 1; state.tx = 0; state.ty = 0; apply(); }
|
|
1597
|
+
function zoomBy(factor) {
|
|
1598
|
+
state.scale = Math.max(0.5, Math.min(state.scale * factor, 8));
|
|
1599
|
+
if (state.scale === 1) {
|
|
1600
|
+
state.tx = 0;
|
|
1601
|
+
state.ty = 0;
|
|
1602
|
+
}
|
|
1603
|
+
apply();
|
|
1604
|
+
}
|
|
1605
|
+
toolbar.addEventListener('click', (ev) => {
|
|
1606
|
+
const action = ev.target?.dataset?.mermaidAction;
|
|
1607
|
+
if (action === 'zoom-in')
|
|
1608
|
+
zoomBy(1.25);
|
|
1609
|
+
else if (action === 'zoom-out')
|
|
1610
|
+
zoomBy(1 / 1.25);
|
|
1611
|
+
else if (action === 'reset')
|
|
1612
|
+
reset();
|
|
1613
|
+
else if (action === 'fullscreen')
|
|
1614
|
+
openMermaidFullscreen(svg.cloneNode(true));
|
|
1615
|
+
});
|
|
1616
|
+
let panning = false;
|
|
1617
|
+
let panStartX = 0;
|
|
1618
|
+
let panStartY = 0;
|
|
1619
|
+
let panStartTx = 0;
|
|
1620
|
+
let panStartTy = 0;
|
|
1621
|
+
viewport.addEventListener('mousedown', (ev) => {
|
|
1622
|
+
if (ev.button !== 0 || state.scale <= 1)
|
|
1623
|
+
return;
|
|
1624
|
+
panning = true;
|
|
1625
|
+
panStartX = ev.clientX;
|
|
1626
|
+
panStartY = ev.clientY;
|
|
1627
|
+
panStartTx = state.tx;
|
|
1628
|
+
panStartTy = state.ty;
|
|
1629
|
+
viewport.style.cursor = 'grabbing';
|
|
1630
|
+
ev.preventDefault();
|
|
1631
|
+
});
|
|
1632
|
+
doc.addEventListener('mousemove', (ev) => {
|
|
1633
|
+
if (!panning)
|
|
1634
|
+
return;
|
|
1635
|
+
state.tx = panStartTx + (ev.clientX - panStartX);
|
|
1636
|
+
state.ty = panStartTy + (ev.clientY - panStartY);
|
|
1637
|
+
svg.style.transform = `translate(${state.tx}px, ${state.ty}px) scale(${state.scale})`;
|
|
1638
|
+
});
|
|
1639
|
+
doc.addEventListener('mouseup', () => {
|
|
1640
|
+
if (!panning)
|
|
1641
|
+
return;
|
|
1642
|
+
panning = false;
|
|
1643
|
+
viewport.style.cursor = state.scale > 1 ? 'grab' : '';
|
|
1644
|
+
});
|
|
1645
|
+
viewport.addEventListener('wheel', (ev) => {
|
|
1646
|
+
if (!ev.ctrlKey && !ev.metaKey)
|
|
1647
|
+
return;
|
|
1648
|
+
ev.preventDefault();
|
|
1649
|
+
zoomBy(ev.deltaY < 0 ? 1.1 : 1 / 1.1);
|
|
1650
|
+
});
|
|
1651
|
+
diagram.dataset.mermaidViewerMounted = 'true';
|
|
1652
|
+
}
|
|
1653
|
+
function openMermaidFullscreen(svg) {
|
|
1654
|
+
const dialog = doc.createElement('dialog');
|
|
1655
|
+
dialog.className = 'mermaid-fullscreen-dialog';
|
|
1656
|
+
const close = doc.createElement('button');
|
|
1657
|
+
close.className = 'mermaid-fullscreen-close';
|
|
1658
|
+
close.setAttribute('aria-label', 'Close');
|
|
1659
|
+
close.textContent = '✕';
|
|
1660
|
+
close.addEventListener('click', () => dialog.close());
|
|
1661
|
+
const stage = doc.createElement('div');
|
|
1662
|
+
stage.className = 'mermaid-fullscreen-stage';
|
|
1663
|
+
svg.removeAttribute('style');
|
|
1664
|
+
stage.appendChild(svg);
|
|
1665
|
+
const fsState = { scale: 1, tx: 0, ty: 0 };
|
|
1666
|
+
function fsApply() {
|
|
1667
|
+
svg.style.transform = `translate(${fsState.tx}px, ${fsState.ty}px) scale(${fsState.scale})`;
|
|
1668
|
+
svg.style.transformOrigin = 'center center';
|
|
1669
|
+
stage.style.cursor = fsState.scale > 1 ? 'grab' : '';
|
|
1670
|
+
}
|
|
1671
|
+
function fsZoom(factor) {
|
|
1672
|
+
fsState.scale = Math.max(0.5, Math.min(fsState.scale * factor, 8));
|
|
1673
|
+
if (fsState.scale === 1) {
|
|
1674
|
+
fsState.tx = 0;
|
|
1675
|
+
fsState.ty = 0;
|
|
1676
|
+
}
|
|
1677
|
+
fsApply();
|
|
1678
|
+
}
|
|
1679
|
+
const toolbar = doc.createElement('div');
|
|
1680
|
+
toolbar.className = 'mermaid-toolbar mermaid-toolbar-fullscreen';
|
|
1681
|
+
toolbar.innerHTML = [
|
|
1682
|
+
'<button class="mermaid-btn" data-mermaid-action="zoom-in" aria-label="Zoom in" title="Zoom in">+</button>',
|
|
1683
|
+
'<button class="mermaid-btn" data-mermaid-action="zoom-out" aria-label="Zoom out" title="Zoom out">−</button>',
|
|
1684
|
+
'<button class="mermaid-btn" data-mermaid-action="reset" aria-label="Reset view" title="Reset view">⟲</button>',
|
|
1685
|
+
].join('');
|
|
1686
|
+
toolbar.addEventListener('click', (ev) => {
|
|
1687
|
+
const action = ev.target?.dataset?.mermaidAction;
|
|
1688
|
+
if (action === 'zoom-in')
|
|
1689
|
+
fsZoom(1.25);
|
|
1690
|
+
else if (action === 'zoom-out')
|
|
1691
|
+
fsZoom(1 / 1.25);
|
|
1692
|
+
else if (action === 'reset') {
|
|
1693
|
+
fsState.scale = 1;
|
|
1694
|
+
fsState.tx = 0;
|
|
1695
|
+
fsState.ty = 0;
|
|
1696
|
+
fsApply();
|
|
1697
|
+
}
|
|
1698
|
+
});
|
|
1699
|
+
let fsPan = false;
|
|
1700
|
+
let fsStartX = 0;
|
|
1701
|
+
let fsStartY = 0;
|
|
1702
|
+
let fsStartTx = 0;
|
|
1703
|
+
let fsStartTy = 0;
|
|
1704
|
+
stage.addEventListener('mousedown', (ev) => {
|
|
1705
|
+
if (ev.button !== 0 || fsState.scale <= 1)
|
|
1706
|
+
return;
|
|
1707
|
+
fsPan = true;
|
|
1708
|
+
fsStartX = ev.clientX;
|
|
1709
|
+
fsStartY = ev.clientY;
|
|
1710
|
+
fsStartTx = fsState.tx;
|
|
1711
|
+
fsStartTy = fsState.ty;
|
|
1712
|
+
stage.style.cursor = 'grabbing';
|
|
1713
|
+
ev.preventDefault();
|
|
1714
|
+
});
|
|
1715
|
+
doc.addEventListener('mousemove', (ev) => {
|
|
1716
|
+
if (!fsPan)
|
|
1717
|
+
return;
|
|
1718
|
+
fsState.tx = fsStartTx + (ev.clientX - fsStartX);
|
|
1719
|
+
fsState.ty = fsStartTy + (ev.clientY - fsStartY);
|
|
1720
|
+
fsApply();
|
|
1721
|
+
});
|
|
1722
|
+
doc.addEventListener('mouseup', () => {
|
|
1723
|
+
if (!fsPan)
|
|
1724
|
+
return;
|
|
1725
|
+
fsPan = false;
|
|
1726
|
+
stage.style.cursor = fsState.scale > 1 ? 'grab' : '';
|
|
1727
|
+
});
|
|
1728
|
+
stage.addEventListener('wheel', (ev) => {
|
|
1729
|
+
ev.preventDefault();
|
|
1730
|
+
fsZoom(ev.deltaY < 0 ? 1.1 : 1 / 1.1);
|
|
1731
|
+
});
|
|
1732
|
+
dialog.appendChild(close);
|
|
1733
|
+
dialog.appendChild(toolbar);
|
|
1734
|
+
dialog.appendChild(stage);
|
|
1735
|
+
doc.body.appendChild(dialog);
|
|
1736
|
+
dialog.addEventListener('close', () => { try {
|
|
1737
|
+
doc.body.removeChild(dialog);
|
|
1738
|
+
}
|
|
1739
|
+
catch { } });
|
|
1740
|
+
dialog.addEventListener('keydown', (ev) => {
|
|
1741
|
+
if (ev.key === 'Escape')
|
|
1742
|
+
dialog.close();
|
|
1743
|
+
});
|
|
1744
|
+
dialog.showModal?.();
|
|
1745
|
+
}
|
|
1520
1746
|
function parseComponentProps(raw) {
|
|
1521
1747
|
const source = String(raw ?? '').trim();
|
|
1522
1748
|
if (!source)
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
/**
|
|
9
9
|
* Generate the per-document data bootstrap.
|
|
10
10
|
*/
|
|
11
|
-
export declare function generateClientDataScript(escapedSpec: string, escapedTagGroups: string, escapedHero: string, escapedSidebar: string, escapedIntroduction: string, escapedDocsPages: string, escapedDocsAliases: string, escapedSearchIndex: string, escapedDocsSidebar: string, escapedDocsAssetBasePath: string, escapedFooter: string, escapedToc: string, escapedMarkdown: string, escapedDocsRepo?: string, escapedBreadcrumbs?: string, escapedPageNav?: string): string;
|
|
11
|
+
export declare function generateClientDataScript(escapedSpec: string, escapedTagGroups: string, escapedHero: string, escapedSidebar: string, escapedIntroduction: string, escapedDocsPages: string, escapedDocsAliases: string, escapedSearchIndex: string, escapedDocsSidebar: string, escapedDocsAssetBasePath: string, escapedFooter: string, escapedToc: string, escapedMarkdown: string, escapedDocsRepo?: string, escapedBreadcrumbs?: string, escapedPageNav?: string, escapedMermaid?: string): string;
|
|
12
12
|
/**
|
|
13
13
|
* Generate the reusable client-side runtime.
|
|
14
14
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/docs/ui/client-script/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoBH;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,MAAM,EAC3B,gBAAgB,EAAE,MAAM,EACxB,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,EAC1B,wBAAwB,EAAE,MAAM,EAChC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,eAAe,GAAE,MAAe,EAChC,kBAAkB,GAAE,MAA6C,EACjE,cAAc,GAAE,MAAqC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/docs/ui/client-script/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoBH;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,MAAM,EAC3B,gBAAgB,EAAE,MAAM,EACxB,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,EAC1B,wBAAwB,EAAE,MAAM,EAChC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,eAAe,GAAE,MAAe,EAChC,kBAAkB,GAAE,MAA6C,EACjE,cAAc,GAAE,MAAqC,EACrD,cAAc,GAAE,MAA6G,GAC5H,MAAM,CAsBR;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAIpD;AAED,wBAAgB,sCAAsC,IAAI,MAAM,CAK/D;AAwKD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,MAAM,EAC3B,gBAAgB,EAAE,MAAM,EACxB,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,EAC1B,wBAAwB,EAAE,MAAM,EAChC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,eAAe,GAAE,MAAe,EAChC,kBAAkB,CAAC,EAAE,MAAM,EAC3B,cAAc,GAAE,MAAqC,GACpD,MAAM,CAoBR"}
|
|
@@ -24,7 +24,7 @@ let cachedSharedRuntimeScript = null;
|
|
|
24
24
|
/**
|
|
25
25
|
* Generate the per-document data bootstrap.
|
|
26
26
|
*/
|
|
27
|
-
export function generateClientDataScript(escapedSpec, escapedTagGroups, escapedHero, escapedSidebar, escapedIntroduction, escapedDocsPages, escapedDocsAliases, escapedSearchIndex, escapedDocsSidebar, escapedDocsAssetBasePath, escapedFooter, escapedToc, escapedMarkdown, escapedDocsRepo = 'null', escapedBreadcrumbs = '{"enabled":true,"hideOnHome":true}', escapedPageNav = '{"enabled":true,"hide":[]}') {
|
|
27
|
+
export function generateClientDataScript(escapedSpec, escapedTagGroups, escapedHero, escapedSidebar, escapedIntroduction, escapedDocsPages, escapedDocsAliases, escapedSearchIndex, escapedDocsSidebar, escapedDocsAssetBasePath, escapedFooter, escapedToc, escapedMarkdown, escapedDocsRepo = 'null', escapedBreadcrumbs = '{"enabled":true,"hideOnHome":true}', escapedPageNav = '{"enabled":true,"hide":[]}', escapedMermaid = '{"enabled":true,"src":"https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js","viewer":true}') {
|
|
28
28
|
return `
|
|
29
29
|
window.__RAFFEL_DOCS__ = {
|
|
30
30
|
spec: ${escapedSpec},
|
|
@@ -42,7 +42,8 @@ export function generateClientDataScript(escapedSpec, escapedTagGroups, escapedH
|
|
|
42
42
|
markdownConfig: ${escapedMarkdown},
|
|
43
43
|
docsRepoConfig: ${escapedDocsRepo},
|
|
44
44
|
breadcrumbsConfig: ${escapedBreadcrumbs},
|
|
45
|
-
pageNavConfig: ${escapedPageNav}
|
|
45
|
+
pageNavConfig: ${escapedPageNav},
|
|
46
|
+
mermaidConfig: ${escapedMermaid}
|
|
46
47
|
};
|
|
47
48
|
`;
|
|
48
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/docs/ui/client-script/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC9C,IAAI,yBAAyB,GAAkB,IAAI,CAAA;AAEnD;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,WAAmB,EACnB,gBAAwB,EACxB,WAAmB,EACnB,cAAsB,EACtB,mBAA2B,EAC3B,gBAAwB,EACxB,kBAA0B,EAC1B,kBAA0B,EAC1B,kBAA0B,EAC1B,wBAAgC,EAChC,aAAqB,EACrB,UAAkB,EAClB,eAAuB,EACvB,kBAA0B,MAAM,EAChC,qBAA6B,oCAAoC,EACjE,iBAAyB,4BAA4B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/docs/ui/client-script/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-builder.d.ts","sourceRoot":"","sources":["../../../src/docs/ui/html-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAA6C,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAoB/F;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"html-builder.d.ts","sourceRoot":"","sources":["../../../src/docs/ui/html-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAA6C,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAoB/F;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CA4JlE;AAmCD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAYjE"}
|
|
@@ -70,6 +70,7 @@ export function generateUIHTML(options) {
|
|
|
70
70
|
const escapedDocsRepo = escapeJsonForScript(ui?.docsRepo ?? null);
|
|
71
71
|
const escapedBreadcrumbs = escapeJsonForScript(breadcrumbs);
|
|
72
72
|
const escapedPageNav = escapeJsonForScript(pageNav);
|
|
73
|
+
const escapedMermaid = escapeJsonForScript(normalizeMermaidConfig(ui?.mermaid));
|
|
73
74
|
// Generate hero background CSS
|
|
74
75
|
const heroBackgroundCSS = generateHeroBackgroundCSS(primaryColor, hero?.background, hero?.backgroundImage);
|
|
75
76
|
// Generate CSS
|
|
@@ -82,7 +83,7 @@ ${styles}
|
|
|
82
83
|
const customCssHtml = normalizeCustomCss(ui?.customCss)
|
|
83
84
|
.map(href => `<link rel="stylesheet" href="${escapeHtml(href)}" data-raffel-custom-css>`)
|
|
84
85
|
.join('\n ');
|
|
85
|
-
const dataScript = generateClientDataScript(escapedSpec, escapedTagGroups, escapedHero, escapedSidebar, escapedIntroduction, escapedDocsPages, escapedDocsAliases, escapedSearchIndex, escapedDocsSidebar, escapedDocsAssetBasePath, escapedFooter, escapedToc, escapedMarkdown, escapedDocsRepo, escapedBreadcrumbs, escapedPageNav);
|
|
86
|
+
const dataScript = generateClientDataScript(escapedSpec, escapedTagGroups, escapedHero, escapedSidebar, escapedIntroduction, escapedDocsPages, escapedDocsAliases, escapedSearchIndex, escapedDocsSidebar, escapedDocsAssetBasePath, escapedFooter, escapedToc, escapedMarkdown, escapedDocsRepo, escapedBreadcrumbs, escapedPageNav, escapedMermaid);
|
|
86
87
|
const runtimeScript = assetMode === 'external'
|
|
87
88
|
? `<script>
|
|
88
89
|
// Defensive asset probe: if a sibling JS asset returns HTML, the wildcard
|
|
@@ -192,4 +193,28 @@ export function generateUICSS(options) {
|
|
|
192
193
|
const heroBackgroundCSS = generateHeroBackgroundCSS(primaryColor, hero?.background, hero?.backgroundImage);
|
|
193
194
|
return generateStyles({ primaryColor, heroBackgroundCSS });
|
|
194
195
|
}
|
|
196
|
+
const DEFAULT_MERMAID_CDN_SRC = 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js';
|
|
197
|
+
/**
|
|
198
|
+
* Normalize the `ui.mermaid` option into a concrete `{ enabled, src }` shape
|
|
199
|
+
* the runtime can read off `window.__RAFFEL_DOCS__.mermaidConfig`.
|
|
200
|
+
*
|
|
201
|
+
* undefined / true → enabled with the default CDN source.
|
|
202
|
+
* false → disabled. The runtime will leave `.mermaid` blocks
|
|
203
|
+
* in their fallback state without attempting to load
|
|
204
|
+
* the library.
|
|
205
|
+
* { src } → enabled with a pinned/self-hosted script URL.
|
|
206
|
+
*/
|
|
207
|
+
function normalizeMermaidConfig(option) {
|
|
208
|
+
if (option === false)
|
|
209
|
+
return { enabled: false, src: '', viewer: false };
|
|
210
|
+
if (option && typeof option === 'object') {
|
|
211
|
+
const obj = option;
|
|
212
|
+
return {
|
|
213
|
+
enabled: true,
|
|
214
|
+
src: typeof obj.src === 'string' && obj.src ? obj.src : DEFAULT_MERMAID_CDN_SRC,
|
|
215
|
+
viewer: obj.viewer !== false,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
return { enabled: true, src: DEFAULT_MERMAID_CDN_SRC, viewer: true };
|
|
219
|
+
}
|
|
195
220
|
//# sourceMappingURL=html-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-builder.js","sourceRoot":"","sources":["../../../src/docs/ui/html-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AACvF,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,GAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,wBAAwB,EACxB,sCAAsC,EACtC,2BAA2B,GAC5B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAEzD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAA2B;IACxD,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IAEhD,yCAAyC;IACzC,MAAM,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,aAAa,CAAA;IAEpD,MAAM,KAAK,GAAG,EAAE,EAAE,KAAK,IAAI,MAAM,CAAA;IACjC,MAAM,YAAY,GAAG,EAAE,EAAE,YAAY,IAAI,SAAS,CAAA;IAClD,MAAM,IAAI,GAAG,EAAE,EAAE,IAAI,IAAI,gBAAgB,EAAE,IAAI,CAAA;IAC/C,MAAM,OAAO,GAAG,EAAE,EAAE,OAAO,IAAI,gBAAgB,EAAE,OAAO,CAAA;IACxD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAA;IAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAA;IAChC,MAAM,OAAO,GAAG,EAAE,EAAE,OAAO,CAAA;IAC3B,MAAM,SAAS,GAAG,gBAAgB,EAAE,KAAK,IAAI,EAAE,CAAA;IAC/C,MAAM,WAAW,GAAG,gBAAgB,EAAE,OAAO,IAAI,EAAE,CAAA;IACnD,MAAM,WAAW,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAA;IACnD,MAAM,aAAa,GAAG,CAAC,gBAAgB,EAAE,aAAa,IAAI,EAAE,CAG1D,CAAA;IACF,MAAM,QAAQ,GAAG,EAAE,EAAE,MAAM,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,IAAI,CAAC,GAAG;QACd,QAAQ,EAAE,IAAI;KACI,CAAA,CAAC,CAAA;IACrB,MAAM,MAAM,GAAG,EAAE,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,CAAA;IACrD,MAAM,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,CAAA;IACzB,MAAM,QAAQ,GAAG,EAAE,EAAE,QAAQ,IAAI,EAAE,CAAA;IACnC,MAAM,WAAW,GAAG,0BAA0B,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;IAC/D,MAAM,WAAW,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,IAAI,gBAAgB,EAAE,OAAO,IAAI,EAAE,CAAA;IACzE,MAAM,OAAO,GAAG,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAC7C,MAAM,SAAS,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,IAAI,QAAQ,CAAA;IAC9C,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC/E,MAAM,iBAAiB,GAAG,GAAG,aAAa,WAAW,CAAA;IAErD,gDAAgD;IAChD,MAAM,IAAI,GAAG,eAAe,CAAC,gBAAgB,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;IAExD,0CAA0C;IAC1C,MAAM,YAAY,GAAG,gBAAgB,EAAE,YAAY,CAAA;IAEnD,yDAAyD;IACzD,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA;IAC5C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;IAC7D,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,IAAI,IAAI,CAAC,CAAA;IACrD,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;IACzD,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,YAAY,IAAI,IAAI,CAAC,CAAA;IACrE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAA;IACvD,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAA;IAC3D,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAA;IAC3D,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAA;IAC3D,MAAM,wBAAwB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAA;IACvE,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,IAAI,IAAI,CAAC,CAAA;IACzD,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA;IAC3C,MAAM,eAAe,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IACrD,MAAM,eAAe,GAAG,mBAAmB,CAAC,EAAE,EAAE,QAAQ,IAAI,IAAI,CAAC,CAAA;IACjE,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAA;IAC3D,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"html-builder.js","sourceRoot":"","sources":["../../../src/docs/ui/html-builder.ts"],"names":[],"mappings":"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"}
|