@nowline/preview-shell 0.4.2 → 0.5.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/dist/markup.d.ts CHANGED
@@ -4,17 +4,45 @@ export interface ViewportElements {
4
4
  canvas: HTMLElement;
5
5
  empty: HTMLElement;
6
6
  chrome: HTMLElement;
7
+ /** Drag grip at the leading edge of the toolbar — initiates chrome repositioning. */
8
+ toolbarHandle: HTMLElement;
9
+ /** » restore button — shown only when the toolbar is collapsed. */
10
+ restoreBtn: HTMLButtonElement;
7
11
  zoomReset: HTMLButtonElement;
8
12
  zoomIn: HTMLButtonElement;
9
13
  zoomOut: HTMLButtonElement;
14
+ /** Fit-width button (↔) — triggers fitWidth. Sits left of fitPage. */
10
15
  fitWidth: HTMLButtonElement;
16
+ /** Fit-page button (⤢) — triggers fitPage. */
11
17
  fitPage: HTMLButtonElement;
12
- viewToggle: HTMLButtonElement;
13
- viewMenu: HTMLUListElement;
14
- saveToggle: HTMLButtonElement;
15
- saveMenu: HTMLUListElement;
16
- copyToggle: HTMLButtonElement;
17
- copyMenu: HTMLUListElement;
18
+ /** ▾ more toggle — opens the more-menu panel. */
19
+ moreToggle: HTMLButtonElement;
20
+ /** More-menu panel containing format, copy, export, theme, now, links rows. */
21
+ moreMenu: HTMLElement;
22
+ /** Format sub-dropdown toggle (SVG ▾ / PNG ▾). */
23
+ formatToggle: HTMLButtonElement;
24
+ /** Format sub-dropdown list. */
25
+ formatMenu: HTMLUListElement;
26
+ /** Copy action button — uses the selected format. */
27
+ copyAction: HTMLButtonElement;
28
+ /** Export / download action button — uses the selected format. */
29
+ exportAction: HTMLButtonElement;
30
+ /** Theme sub-dropdown toggle. */
31
+ themeToggle: HTMLButtonElement;
32
+ /** Theme sub-dropdown list; items built programmatically from availableThemes. */
33
+ themeMenu: HTMLUListElement;
34
+ /** Now sub-dropdown toggle. */
35
+ nowToggle: HTMLButtonElement;
36
+ /** Label span inside nowToggle — shows Today / formatted date / None. */
37
+ nowLabel: HTMLElement;
38
+ /** Calendar picker panel — populated by mount.ts on open. */
39
+ nowPicker: HTMLElement;
40
+ /** Show-links sub-dropdown toggle. */
41
+ linksToggle: HTMLButtonElement;
42
+ /** Show-links sub-dropdown list. */
43
+ linksMenu: HTMLUListElement;
44
+ /** « collapse button — shrinks the toolbar to a translucent puck. */
45
+ collapseBtn: HTMLButtonElement;
18
46
  minimap: HTMLElement;
19
47
  minimapCanvas: HTMLElement;
20
48
  minimapRect: HTMLElement;
@@ -1 +1 @@
1
- {"version":3,"file":"markup.d.ts","sourceRoot":"","sources":["../src/markup.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,aAAa,EAAE,WAAW,CAAC;IAC3B,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,iBAAiB,CAAC;IAChC,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,WAAW,CAAC;IACvB,YAAY,EAAE,iBAAiB,CAAC;CACnC;AAoED,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,gBAAgB,CA8BnE"}
1
+ {"version":3,"file":"markup.d.ts","sourceRoot":"","sources":["../src/markup.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,qFAAqF;IACrF,aAAa,EAAE,WAAW,CAAC;IAC3B,mEAAmE;IACnE,UAAU,EAAE,iBAAiB,CAAC;IAC9B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,sEAAsE;IACtE,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,8CAA8C;IAC9C,OAAO,EAAE,iBAAiB,CAAC;IAC3B,iDAAiD;IACjD,UAAU,EAAE,iBAAiB,CAAC;IAC9B,+EAA+E;IAC/E,QAAQ,EAAE,WAAW,CAAC;IACtB,kDAAkD;IAClD,YAAY,EAAE,iBAAiB,CAAC;IAChC,gCAAgC;IAChC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,qDAAqD;IACrD,UAAU,EAAE,iBAAiB,CAAC;IAC9B,kEAAkE;IAClE,YAAY,EAAE,iBAAiB,CAAC;IAChC,iCAAiC;IACjC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,kFAAkF;IAClF,SAAS,EAAE,gBAAgB,CAAC;IAC5B,+BAA+B;IAC/B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,yEAAyE;IACzE,QAAQ,EAAE,WAAW,CAAC;IACtB,6DAA6D;IAC7D,SAAS,EAAE,WAAW,CAAC;IACvB,sCAAsC;IACtC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,oCAAoC;IACpC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,qEAAqE;IACrE,WAAW,EAAE,iBAAiB,CAAC;IAC/B,OAAO,EAAE,WAAW,CAAC;IACrB,aAAa,EAAE,WAAW,CAAC;IAC3B,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,iBAAiB,CAAC;IAChC,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,WAAW,CAAC;IACvB,YAAY,EAAE,iBAAiB,CAAC;CACnC;AA6FD,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,gBAAgB,CAwCnE"}
package/dist/markup.js CHANGED
@@ -2,52 +2,74 @@
2
2
  // inside the supplied root element. All element refs are namespaced by
3
3
  // CSS class (rather than `id="..."`) so two preview shells can mount in
4
4
  // the same document without clashing.
5
+ // Inline SVG glyphs for the copy / download actions — crisp at any
6
+ // zoom and tinted by `currentColor`. Embedded via innerHTML (no script),
7
+ // so they are unaffected by the webview's nonce-only script/style CSP.
8
+ const COPY_ICON = '<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"><rect x="5.5" y="5.5" width="8" height="8" rx="1.5"></rect><path d="M10.5 5.5V4A1.5 1.5 0 0 0 9 2.5H4A1.5 1.5 0 0 0 2.5 4v5A1.5 1.5 0 0 0 4 10.5h1.5"></path></svg>';
9
+ const DOWNLOAD_ICON = '<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"><path d="M8 2.5v7.5"></path><path d="M4.75 7 8 10.25 11.25 7"></path><path d="M3 13.25h10"></path></svg>';
5
10
  const TEMPLATE = `
6
11
  <div class="viewport"><div class="canvas"></div></div>
7
- <div class="empty">Rendering preview…</div>
12
+ <div class="empty">Rendering preview\u2026</div>
8
13
  <div class="chrome">
9
- <div class="toolbar zoom-toolbar">
10
- <button class="btn zoom-out" title="Zoom out">−</button>
14
+ <div class="toolbar">
15
+ <span class="toolbar-handle" aria-hidden="true" title="Drag to reposition toolbar">\u2838</span>
16
+ <button class="btn glyph restore-btn" title="Expand toolbar" aria-label="Expand toolbar">\u00bb</button>
17
+ <button class="btn zoom-out" title="Zoom out" aria-label="Zoom out">\u2212</button>
11
18
  <button class="btn zoom-label zoom-reset" title="Reset to 100%">100%</button>
12
- <button class="btn zoom-in" title="Zoom in">+</button>
19
+ <button class="btn zoom-in" title="Zoom in" aria-label="Zoom in">+</button>
13
20
  <span class="sep"></span>
14
- <button class="btn glyph fit-width" title="Fit width (3)" aria-label="Fit width">↔</button>
15
- <button class="btn glyph fit-page" title="Fit page (1)" aria-label="Fit page">⛶</button>
21
+ <button class="btn glyph fit-width" title="Fit width (3)" aria-label="Fit width">\u2194</button>
22
+ <button class="btn glyph fit-page" title="Fit page (1)" aria-label="Fit page">\u2922</button>
16
23
  <span class="sep"></span>
17
24
  <div class="dropdown">
18
- <button class="btn view-toggle" title="View options for this preview (theme, now-line, links)">View ▾</button>
19
- <ul class="menu view-menu" hidden>
20
- <li class="menu-section">Theme</li>
21
- <li><button class="btn view-opt" data-opt="theme" data-value="auto">Auto</button></li>
22
- <li><button class="btn view-opt" data-opt="theme" data-value="light">Light</button></li>
23
- <li><button class="btn view-opt" data-opt="theme" data-value="dark">Dark</button></li>
24
- <li class="menu-divider"></li>
25
- <li class="menu-section">Now-line</li>
26
- <li><button class="btn view-opt" data-opt="now" data-value="today">Today</button></li>
27
- <li><button class="btn view-opt" data-opt="now" data-value="hide">Hide</button></li>
28
- <li class="menu-divider"></li>
29
- <li><button class="btn view-opt" data-opt="showLinks" data-value="toggle">Show links</button></li>
30
- </ul>
31
- </div>
32
- <span class="sep"></span>
33
- <div class="dropdown">
34
- <button class="btn save-toggle" title="Save the rendered diagram">Save ▾</button>
35
- <ul class="menu save-menu" hidden>
36
- <li><button class="btn" data-action="save-svg">Save SVG…</button></li>
37
- <li><button class="btn" data-action="save-png">Save PNG…</button></li>
38
- </ul>
39
- </div>
40
- <div class="dropdown">
41
- <button class="btn copy-toggle" title="Copy the rendered diagram to the clipboard">Copy ▾</button>
42
- <ul class="menu copy-menu" hidden>
43
- <li><button class="btn" data-action="copy-svg">Copy SVG</button></li>
44
- <li><button class="btn" data-action="copy-png">Copy PNG</button></li>
45
- </ul>
25
+ <button class="btn more-toggle" title="More options">\u25be more</button>
26
+ <div class="more-menu" hidden>
27
+ <div class="more-row">
28
+ <span class="more-label">Format:</span>
29
+ <div class="dropdown">
30
+ <button class="btn more-sub-toggle format-toggle">SVG \u25be</button>
31
+ <ul class="more-sub-menu format-menu" hidden>
32
+ <li><button class="btn format-opt" data-value="svg"><code class="code-chip">svg</code></button></li>
33
+ <li><button class="btn format-opt" data-value="png"><code class="code-chip">png</code></button></li>
34
+ </ul>
35
+ </div>
36
+ </div>
37
+ <div class="more-row action-row">
38
+ <button class="btn copy-action" title="Copy to clipboard"><span>Copy</span><span class="action-ico" aria-hidden="true">${COPY_ICON}</span></button>
39
+ <button class="btn export-action" title="Export file"><span>Export</span><span class="action-ico" aria-hidden="true">${DOWNLOAD_ICON}</span></button>
40
+ </div>
41
+ <div class="more-divider"></div>
42
+ <div class="more-row theme-control-row">
43
+ <span class="more-label">Theme:</span>
44
+ <div class="dropdown">
45
+ <button class="btn more-sub-toggle theme-toggle">Auto \u25be</button>
46
+ <ul class="more-sub-menu theme-menu" hidden></ul>
47
+ </div>
48
+ </div>
49
+ <div class="more-row">
50
+ <span class="more-label">Now:</span>
51
+ <div class="dropdown">
52
+ <button class="btn more-sub-toggle now-toggle"><span class="now-label">Today</span> \u25be</button>
53
+ <div class="now-picker" hidden></div>
54
+ </div>
55
+ </div>
56
+ <div class="more-row">
57
+ <span class="more-label">Show links:</span>
58
+ <div class="dropdown">
59
+ <button class="btn more-sub-toggle links-toggle">Yes \u25be</button>
60
+ <ul class="more-sub-menu links-menu" hidden>
61
+ <li><button class="btn links-opt" data-value="true">Yes</button></li>
62
+ <li><button class="btn links-opt" data-value="false">No</button></li>
63
+ </ul>
64
+ </div>
65
+ </div>
66
+ </div>
46
67
  </div>
68
+ <button class="btn glyph collapse-btn" title="Collapse toolbar" aria-label="Collapse toolbar">\u00ab</button>
47
69
  </div>
48
70
  </div>
49
71
  <div class="minimap hidden">
50
- <button class="btn minimap-close" title="Hide minimap">×</button>
72
+ <button class="btn minimap-close" title="Hide minimap">\u00d7</button>
51
73
  <div class="minimap-canvas"></div>
52
74
  <div class="minimap-rect"></div>
53
75
  </div>
@@ -75,17 +97,27 @@ export function buildViewport(rootEl) {
75
97
  canvas: q(rootEl, '.canvas'),
76
98
  empty: q(rootEl, '.empty'),
77
99
  chrome: q(rootEl, '.chrome'),
100
+ toolbarHandle: q(rootEl, '.toolbar-handle'),
101
+ restoreBtn: q(rootEl, '.restore-btn'),
78
102
  zoomReset: q(rootEl, '.zoom-reset'),
79
103
  zoomIn: q(rootEl, '.zoom-in'),
80
104
  zoomOut: q(rootEl, '.zoom-out'),
81
105
  fitWidth: q(rootEl, '.fit-width'),
82
106
  fitPage: q(rootEl, '.fit-page'),
83
- viewToggle: q(rootEl, '.view-toggle'),
84
- viewMenu: q(rootEl, '.view-menu'),
85
- saveToggle: q(rootEl, '.save-toggle'),
86
- saveMenu: q(rootEl, '.save-menu'),
87
- copyToggle: q(rootEl, '.copy-toggle'),
88
- copyMenu: q(rootEl, '.copy-menu'),
107
+ moreToggle: q(rootEl, '.more-toggle'),
108
+ moreMenu: q(rootEl, '.more-menu'),
109
+ formatToggle: q(rootEl, '.format-toggle'),
110
+ formatMenu: q(rootEl, '.format-menu'),
111
+ copyAction: q(rootEl, '.copy-action'),
112
+ exportAction: q(rootEl, '.export-action'),
113
+ themeToggle: q(rootEl, '.theme-toggle'),
114
+ themeMenu: q(rootEl, '.theme-menu'),
115
+ nowToggle: q(rootEl, '.now-toggle'),
116
+ nowLabel: q(rootEl, '.now-label'),
117
+ nowPicker: q(rootEl, '.now-picker'),
118
+ linksToggle: q(rootEl, '.links-toggle'),
119
+ linksMenu: q(rootEl, '.links-menu'),
120
+ collapseBtn: q(rootEl, '.collapse-btn'),
89
121
  minimap: q(rootEl, '.minimap'),
90
122
  minimapCanvas: q(rootEl, '.minimap-canvas'),
91
123
  minimapRect: q(rootEl, '.minimap-rect'),
@@ -1 +1 @@
1
- {"version":3,"file":"markup.js","sourceRoot":"","sources":["../src/markup.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,uEAAuE;AACvE,wEAAwE;AACxE,sCAAsC;AA6BtC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDhB,CAAC;AAEF,SAAS,CAAC,CAAoB,IAAiB,EAAE,QAAgB;IAC7D,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,yBAAyB,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,EAAO,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAmB;IAC7C,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACxC,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC;IAE5B,OAAO;QACH,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC,CAAc,MAAM,EAAE,WAAW,CAAC;QAC7C,MAAM,EAAE,CAAC,CAAc,MAAM,EAAE,SAAS,CAAC;QACzC,KAAK,EAAE,CAAC,CAAc,MAAM,EAAE,QAAQ,CAAC;QACvC,MAAM,EAAE,CAAC,CAAc,MAAM,EAAE,SAAS,CAAC;QACzC,SAAS,EAAE,CAAC,CAAoB,MAAM,EAAE,aAAa,CAAC;QACtD,MAAM,EAAE,CAAC,CAAoB,MAAM,EAAE,UAAU,CAAC;QAChD,OAAO,EAAE,CAAC,CAAoB,MAAM,EAAE,WAAW,CAAC;QAClD,QAAQ,EAAE,CAAC,CAAoB,MAAM,EAAE,YAAY,CAAC;QACpD,OAAO,EAAE,CAAC,CAAoB,MAAM,EAAE,WAAW,CAAC;QAClD,UAAU,EAAE,CAAC,CAAoB,MAAM,EAAE,cAAc,CAAC;QACxD,QAAQ,EAAE,CAAC,CAAmB,MAAM,EAAE,YAAY,CAAC;QACnD,UAAU,EAAE,CAAC,CAAoB,MAAM,EAAE,cAAc,CAAC;QACxD,QAAQ,EAAE,CAAC,CAAmB,MAAM,EAAE,YAAY,CAAC;QACnD,UAAU,EAAE,CAAC,CAAoB,MAAM,EAAE,cAAc,CAAC;QACxD,QAAQ,EAAE,CAAC,CAAmB,MAAM,EAAE,YAAY,CAAC;QACnD,OAAO,EAAE,CAAC,CAAc,MAAM,EAAE,UAAU,CAAC;QAC3C,aAAa,EAAE,CAAC,CAAc,MAAM,EAAE,iBAAiB,CAAC;QACxD,WAAW,EAAE,CAAC,CAAc,MAAM,EAAE,eAAe,CAAC;QACpD,YAAY,EAAE,CAAC,CAAoB,MAAM,EAAE,gBAAgB,CAAC;QAC5D,WAAW,EAAE,CAAC,CAAc,MAAM,EAAE,cAAc,CAAC;QACnD,WAAW,EAAE,CAAC,CAAc,MAAM,EAAE,eAAe,CAAC;QACpD,SAAS,EAAE,CAAC,CAAc,MAAM,EAAE,mBAAmB,CAAC;QACtD,YAAY,EAAE,CAAC,CAAoB,MAAM,EAAE,gBAAgB,CAAC;KAC/D,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"markup.js","sourceRoot":"","sources":["../src/markup.ts"],"names":[],"mappings":"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"}
package/dist/mount.d.ts CHANGED
@@ -1,6 +1,15 @@
1
1
  import type { DiagnosticRow } from '@nowline/browser';
2
- export type ThemeOverride = 'auto' | 'light' | 'dark';
3
- export type NowOverride = 'today' | 'hide';
2
+ /**
3
+ * Diagram render theme. `'auto'` resolves to the current Mode's
4
+ * light/dark. `'grayscale'` is a fully available theme (`'greyscale'`
5
+ * is accepted as an alias).
6
+ */
7
+ export type ThemeOverride = 'auto' | 'light' | 'dark' | 'grayscale' | 'greyscale';
8
+ /**
9
+ * Now-line override. `'today'` and `'hide'` are the named sentinels;
10
+ * any `'YYYY-MM-DD'` date string is also valid.
11
+ */
12
+ export type NowOverride = 'today' | 'hide' | (string & {});
4
13
  export type InitialFit = 'fitPage' | 'fitWidth' | 'actual';
5
14
  /**
6
15
  * Locator info posted when the user clicks a diagnostic row. `file`
@@ -21,9 +30,9 @@ export interface ExportRequest {
21
30
  body: string | Uint8Array;
22
31
  }
23
32
  /**
24
- * View-options overrides emitted when the user clicks the View ▾ menu.
25
- * Only fields the user explicitly chose are present; consumers merge
26
- * with their own option-resolution chain (settings, .nowlinerc, etc.).
33
+ * View-options overrides emitted when the user changes Theme, Now, or
34
+ * Show-links in the more-menu. Only explicitly chosen fields are
35
+ * present; consumers merge with their option-resolution chain.
27
36
  */
28
37
  export interface ViewOptionsOverrides {
29
38
  theme?: ThemeOverride;
@@ -32,12 +41,12 @@ export interface ViewOptionsOverrides {
32
41
  }
33
42
  /**
34
43
  * Baseline view state pushed by the consumer (e.g. when settings
35
- * change). The shell uses these to pre-fill the View menu's
36
- * checkmarks without claiming the option as user-overridden.
44
+ * change). The shell uses these to pre-fill menu checkmarks without
45
+ * claiming the option as user-overridden.
37
46
  */
38
47
  export interface ViewBaseline {
39
48
  theme?: ThemeOverride;
40
- /** Maps to one of `today` | `hide` for the checkmark — host values like 'auto' / 'YYYY-MM-DD' collapse to 'today'. */
49
+ /** `'today'` | `'hide'` | `'YYYY-MM-DD'` | legacy `'auto'` / `'none'` values are accepted. */
41
50
  now?: NowOverride | 'auto' | 'none' | string;
42
51
  showLinks?: boolean;
43
52
  }
@@ -49,15 +58,36 @@ export interface MountPreviewOptions {
49
58
  * with `handle.setViewBaseline(...)`.
50
59
  */
51
60
  viewBaseline?: ViewBaseline;
61
+ /**
62
+ * Color scheme for the chrome (toolbar, menus, minimap).
63
+ * `'system'` (default) auto-detects: VS Code webview via `<body>`
64
+ * class; browser via `prefers-color-scheme`. Never affects the
65
+ * diagram theme.
66
+ */
67
+ mode?: 'light' | 'dark' | 'system';
68
+ /**
69
+ * Whether to show the Theme row in the more-menu.
70
+ * Defaults to `'show'`.
71
+ */
72
+ themeControl?: 'show' | 'hide';
73
+ /**
74
+ * Diagram themes available in the Theme dropdown. **Auto** is
75
+ * always prepended. Defaults to `['light', 'dark', 'grayscale']`.
76
+ */
77
+ availableThemes?: string[];
78
+ /**
79
+ * Locale used for date formatting in the Now picker.
80
+ * Defaults to `navigator.language`.
81
+ */
82
+ locale?: string;
52
83
  onGoto?: (loc: DiagnosticGoto) => void;
53
84
  onOpenProblems?: () => void;
54
85
  onSave?: (req: ExportRequest) => void;
55
86
  onCopy?: (req: ExportRequest) => void;
56
87
  /**
57
- * Fired when the user toggles save-png / copy-png and the browser's
58
- * `navigator.clipboard.write` is unavailable. Consumers usually
59
- * pass the bytes off to a host-side fallback (write to a temp file
60
- * + notify) and pop a message describing what happened.
88
+ * Fired when the browser's `navigator.clipboard.write` is
89
+ * unavailable during a copy-PNG action. Consumers pass the bytes
90
+ * to a host-side fallback.
61
91
  */
62
92
  onCopyPngFallback?: (body: Uint8Array) => void;
63
93
  onViewOptions?: (overrides: ViewOptionsOverrides) => void;
@@ -70,12 +100,26 @@ export interface PreviewHandle {
70
100
  setDiagnostics(rows: DiagnosticRow[]): void;
71
101
  /** Show a one-row diagnostics overlay with the supplied message. */
72
102
  setFatal(message: string): void;
73
- /** Re-skin the view-menu baselines without claiming user overrides. */
103
+ /** Re-skin view-menu baselines without claiming user overrides. */
74
104
  setViewBaseline(baseline: ViewBaseline, resetOverrides?: boolean): void;
75
- /** Update the "default fit" used by the next first-render. */
105
+ /** Update the default fit used by the next first-render. */
76
106
  setDefaultFit(fit: InitialFit): void;
77
- /** Toggle the minimap behaviour from the host. */
107
+ /** Toggle minimap behaviour from the host. */
78
108
  setShowMinimap(show: boolean): void;
109
+ /**
110
+ * Switch the chrome color scheme. `'system'` re-detects from the
111
+ * host environment; `'light'`/`'dark'` pin explicitly.
112
+ */
113
+ setMode(mode: 'light' | 'dark' | 'system'): void;
114
+ /**
115
+ * Replace the list of selectable diagram themes. **Auto** is
116
+ * always prepended. Rebuilds the Theme dropdown immediately.
117
+ */
118
+ setAvailableThemes(themes: string[]): void;
119
+ /**
120
+ * Update the locale used for date formatting in the Now picker.
121
+ */
122
+ setLocale(locale: string): void;
79
123
  fitPage(): void;
80
124
  fitWidth(): void;
81
125
  actualSize(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAItD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AACtD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAC3C,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE3D;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACjC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IACzB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,sHAAsH;IACtH,GAAG,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC7C,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAChC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IACvC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IACtC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IACtC;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IAC/C,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC1D,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,aAAa;IAC1B,+CAA+C;IAC/C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,6DAA6D;IAC7D,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAC5C,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,uEAAuE;IACvE,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxE,8DAA8D;IAC9D,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;IACrC,kDAAkD;IAClD,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,OAAO,IAAI,IAAI,CAAC;IAChB,QAAQ,IAAI,IAAI,CAAC;IACjB,UAAU,IAAI,IAAI,CAAC;IACnB,OAAO,IAAI,MAAM,CAAC;IAClB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,6EAA6E;IAC7E,OAAO,IAAI,IAAI,CAAC;CACnB;AAqCD,wBAAgB,YAAY,CACxB,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,mBAAwB,GAClC,aAAa,CA4nBf;AAwBD;;;;;GAKG;AACH,wBAAgB,qCAAqC,IAAI,IAAI,CAE5D"}
1
+ {"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":"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"}