@miragon/modeler-shell 0.0.0-stage → 0.2.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.
Files changed (147) hide show
  1. package/API.md +2869 -0
  2. package/LICENSE +21 -0
  3. package/README.md +566 -2
  4. package/THIRD_PARTY_NOTICES.md +52 -0
  5. package/dist/appearance-BBaM_4bD.d.ts +323 -0
  6. package/dist/appearance-D3FUcbu6.d.cts +53 -0
  7. package/dist/appearance-D3FUcbu6.d.ts +53 -0
  8. package/dist/appearance-XX3JC3pI.d.cts +323 -0
  9. package/dist/chunk-66HCSJNY.js +2792 -0
  10. package/dist/chunk-66HCSJNY.js.map +1 -0
  11. package/dist/chunk-KYDG5DMX.js +136 -0
  12. package/dist/chunk-KYDG5DMX.js.map +1 -0
  13. package/dist/chunk-N4QXFF3A.js +23 -0
  14. package/dist/chunk-N4QXFF3A.js.map +1 -0
  15. package/dist/chunk-OADW3GPA.js +785 -0
  16. package/dist/chunk-OADW3GPA.js.map +1 -0
  17. package/dist/core.cjs +873 -0
  18. package/dist/core.cjs.map +1 -0
  19. package/dist/core.d.cts +246 -0
  20. package/dist/core.d.ts +246 -0
  21. package/dist/core.js +131 -0
  22. package/dist/core.js.map +1 -0
  23. package/dist/diagram-js.cjs +1147 -0
  24. package/dist/diagram-js.cjs.map +1 -0
  25. package/dist/diagram-js.d.cts +170 -0
  26. package/dist/diagram-js.d.ts +170 -0
  27. package/dist/diagram-js.js +879 -0
  28. package/dist/diagram-js.js.map +1 -0
  29. package/dist/index.cjs +3632 -0
  30. package/dist/index.cjs.map +1 -0
  31. package/dist/index.d.cts +29 -0
  32. package/dist/index.d.ts +29 -0
  33. package/dist/index.js +143 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/protocol-DhYBakWL.d.cts +15 -0
  36. package/dist/protocol-IeW8bf4f.d.ts +15 -0
  37. package/dist/shell.css +1603 -0
  38. package/dist/testing-vscode-stub.cjs +332 -0
  39. package/dist/testing-vscode-stub.cjs.map +1 -0
  40. package/dist/testing-vscode-stub.d.cts +65 -0
  41. package/dist/testing-vscode-stub.d.ts +65 -0
  42. package/dist/testing-vscode-stub.js +154 -0
  43. package/dist/testing-vscode-stub.js.map +1 -0
  44. package/dist/testing.cjs +4663 -0
  45. package/dist/testing.cjs.map +1 -0
  46. package/dist/testing.d.cts +231 -0
  47. package/dist/testing.d.ts +231 -0
  48. package/dist/testing.js +4483 -0
  49. package/dist/testing.js.map +1 -0
  50. package/dist/toasts-Bp0REqdq.d.cts +142 -0
  51. package/dist/toasts-Bp0REqdq.d.ts +142 -0
  52. package/dist/types-CnRrINRs.d.cts +445 -0
  53. package/dist/types-PuDZczzy.d.ts +445 -0
  54. package/dist/vscode-extension.cjs +215 -0
  55. package/dist/vscode-extension.cjs.map +1 -0
  56. package/dist/vscode-extension.d.cts +103 -0
  57. package/dist/vscode-extension.d.ts +103 -0
  58. package/dist/vscode-extension.js +24 -0
  59. package/dist/vscode-extension.js.map +1 -0
  60. package/dist/vscode-webview.cjs +3561 -0
  61. package/dist/vscode-webview.cjs.map +1 -0
  62. package/dist/vscode-webview.d.cts +84 -0
  63. package/dist/vscode-webview.d.ts +84 -0
  64. package/dist/vscode-webview.js +259 -0
  65. package/dist/vscode-webview.js.map +1 -0
  66. package/package.json +145 -4
  67. package/src/core/appearance.ts +104 -0
  68. package/src/core/feedback/appearance.ts +141 -0
  69. package/src/core/feedback/problems.ts +23 -0
  70. package/src/core/feedback/toasts.ts +118 -0
  71. package/src/core/fit.ts +220 -0
  72. package/src/core/index.ts +127 -0
  73. package/src/core/keymap.ts +295 -0
  74. package/src/core/layout.ts +69 -0
  75. package/src/core/messages.ts +159 -0
  76. package/src/core/sizes.ts +85 -0
  77. package/src/core/types.ts +106 -0
  78. package/src/core/web-chrome/bottom-row.ts +37 -0
  79. package/src/core/web-chrome/drop.ts +78 -0
  80. package/src/core/web-chrome/top-row.ts +66 -0
  81. package/src/core/zoom.ts +74 -0
  82. package/src/core.ts +2 -0
  83. package/src/diagram-js/connect.ts +75 -0
  84. package/src/diagram-js/index.ts +16 -0
  85. package/src/diagram-js/module.ts +20 -0
  86. package/src/diagram-js/palette-skin.ts +267 -0
  87. package/src/diagram-js/palette.css +269 -0
  88. package/src/diagram-js/service.ts +243 -0
  89. package/src/diagram-js/types.ts +67 -0
  90. package/src/diagram-js/viewport.ts +583 -0
  91. package/src/diagram-js.ts +2 -0
  92. package/src/dom/buttons.css +124 -0
  93. package/src/dom/element.ts +51 -0
  94. package/src/dom/feedback/appearance.ts +184 -0
  95. package/src/dom/feedback/feedback.css +435 -0
  96. package/src/dom/feedback/problems-popover.ts +287 -0
  97. package/src/dom/feedback/toasts.ts +431 -0
  98. package/src/dom/hint.ts +51 -0
  99. package/src/dom/icons.ts +309 -0
  100. package/src/dom/index.ts +42 -0
  101. package/src/dom/inspector.ts +35 -0
  102. package/src/dom/keys.ts +67 -0
  103. package/src/dom/ledger.ts +87 -0
  104. package/src/dom/legend.ts +85 -0
  105. package/src/dom/menu.ts +404 -0
  106. package/src/dom/mount.ts +731 -0
  107. package/src/dom/problems.ts +73 -0
  108. package/src/dom/shell-dom.css +969 -0
  109. package/src/dom/status.ts +72 -0
  110. package/src/dom/tooltip.ts +237 -0
  111. package/src/dom/types.ts +459 -0
  112. package/src/dom/web/drop-zone.ts +181 -0
  113. package/src/dom/web/empty-state.ts +144 -0
  114. package/src/dom/web/legal.ts +75 -0
  115. package/src/dom/web/menu-groups.ts +69 -0
  116. package/src/dom/web/primary.ts +124 -0
  117. package/src/dom/web/web.css +386 -0
  118. package/src/dom/zoom-panel.ts +154 -0
  119. package/src/index.ts +3 -0
  120. package/src/shell.css +9 -0
  121. package/src/testing/case-tools.ts +164 -0
  122. package/src/testing/cases.ts +1077 -0
  123. package/src/testing/checks.ts +868 -0
  124. package/src/testing/facts.ts +641 -0
  125. package/src/testing/geometry.ts +652 -0
  126. package/src/testing/harness.ts +187 -0
  127. package/src/testing/index.ts +19 -0
  128. package/src/testing/page-tools.ts +457 -0
  129. package/src/testing/page.ts +27 -0
  130. package/src/testing/vscode-stub.ts +237 -0
  131. package/src/testing/web-cases.ts +913 -0
  132. package/src/testing/web-checks.ts +1049 -0
  133. package/src/testing/web-facts.ts +713 -0
  134. package/src/testing-vscode-stub.ts +2 -0
  135. package/src/testing.ts +2 -0
  136. package/src/vscode/extension/html.ts +107 -0
  137. package/src/vscode/extension/index.ts +8 -0
  138. package/src/vscode/extension/reveal.ts +9 -0
  139. package/src/vscode/extension/theme-bridge.ts +85 -0
  140. package/src/vscode/extension/types.ts +36 -0
  141. package/src/vscode/protocol.ts +31 -0
  142. package/src/vscode/webview/appearance.ts +141 -0
  143. package/src/vscode/webview/index.ts +8 -0
  144. package/src/vscode/webview/mount.ts +88 -0
  145. package/src/vscode/webview/state.ts +116 -0
  146. package/src/vscode-extension.ts +2 -0
  147. package/src/vscode-webview.ts +2 -0
package/dist/core.d.ts ADDED
@@ -0,0 +1,246 @@
1
+ import { e as Size, d as ShellHost, P as PaletteRow, I as Insets, a as Bounds, S as ScaledViewbox, c as Point } from './toasts-Bp0REqdq.js';
2
+ export { B as BottomObstacle, C as CHROME_ISLANDS, b as ChromeIsland, M as MAX_TOASTS, T as TOAST_DURATION_MS, f as TOAST_MAX_WIDTH, g as ToastAction, h as ToastRequest, i as ToastSlot, j as ToastStackInput, k as ToastStatus, V as ViewportState, Z as ZoomTarget, t as toastLifetime, l as toastStackBottom, m as toastStackWidth, n as toastToEvict } from './toasts-Bp0REqdq.js';
3
+ import { k as ShellMessages } from './appearance-BBaM_4bD.js';
4
+ export { A as APPEARANCE_STORAGE_KEY, a as AppearanceChoice, C as ChromeKey, D as DocumentMode, b as DragContext, c as DragItemLike, d as DragVerdict, e as DropForbiddenReason, K as KeyAction, f as KeyContext, g as KeyDecision, h as KeyLike, N as NavigatorLike, P as Platform, i as ProblemItem, j as ProblemSeverity, S as ShellMessageOverrides, T as TEXT_FIELD_SELECTOR, l as ThemeColors, W as WebModeScriptOptions, m as acceptsFile, n as ariaKeyShortcuts, o as ariaKeyShortcutsFromLabel, p as commandKeyLabel, q as decideKey, r as defaultMessages, s as detectPlatform, t as documentMode, u as dragVerdict, v as isUndoRedoKey, w as matchChromeKey, x as parseAppearanceChoice, y as problemSummary, z as resolveMessages, B as shortcutLabel, E as webHeadMarkup, F as webModeScript } from './appearance-BBaM_4bD.js';
5
+ export { A as Appearance, a as AppearanceAttributes, C as ColorThemeSetting, K as Kontrast, R as REDUCED_MOTION_CLASS, T as Theme, b as appearanceAttributes, c as appearanceFromBodyClasses, d as appearanceFromColorThemeKind, r as reducedMotionFromBodyClasses, e as requestedAppearance, f as resolveAppearance } from './appearance-D3FUcbu6.js';
6
+
7
+ /**
8
+ * The shell dimensions of the design system (guide §5.1, `shell` group of
9
+ * `cd-tokens.generated.json`), keyed by a readable name. Scripts use `SHELL`; CSS uses the
10
+ * `var(--cd-shell-*)` variables the consumer vendors. A drift test pins `SHELL` to the token JSON.
11
+ */
12
+ declare const SHELL_TOKENS: {
13
+ readonly edge: "--cd-shell-rand";
14
+ readonly gap: "--cd-shell-luecke";
15
+ readonly row: "--cd-shell-zeile";
16
+ readonly target: "--cd-shell-ziel";
17
+ readonly entry: "--cd-shell-eintrag";
18
+ readonly free: "--cd-shell-frei";
19
+ readonly menuMinWidth: "--cd-shell-menue-breite";
20
+ readonly inspectorWidth: "--cd-shell-inspector-breite";
21
+ readonly fitInsetTop: "--cd-shell-einpassen-oben";
22
+ readonly fitInsetTopSecondRow: "--cd-shell-einpassen-oben-schmal";
23
+ readonly fitInsetSide: "--cd-shell-einpassen-seite";
24
+ readonly fitInsetBottom: "--cd-shell-einpassen-unten";
25
+ readonly fitInsetBottomWeb: "--cd-shell-einpassen-unten-web";
26
+ readonly narrow: "--cd-shell-schmal";
27
+ readonly veryNarrow: "--cd-shell-sehr-schmal";
28
+ readonly low: "--cd-shell-niedrig";
29
+ readonly layerIslands: "--cd-shell-ebene-inseln";
30
+ readonly layerInspector: "--cd-shell-ebene-inspector";
31
+ readonly layerTopRow: "--cd-shell-ebene-reihe";
32
+ readonly layerPopups: "--cd-shell-ebene-aufklapper";
33
+ readonly layerDialog: "--cd-shell-ebene-dialog";
34
+ readonly layerToast: "--cd-shell-ebene-toast";
35
+ };
36
+ type ShellSizeName = keyof typeof SHELL_TOKENS;
37
+ type ShellSizes = Readonly<Record<ShellSizeName, number>>;
38
+ /** Pixels (layers: plain z-index numbers), equal to `parseFloat` of the token JSON values. */
39
+ declare const SHELL: ShellSizes;
40
+ /**
41
+ * Reads the `shell` group of `cd-tokens.generated.json` (`{ "--cd-shell-rand": "12px", … }`) into
42
+ * numbers. Throws when a size of `SHELL_TOKENS` is missing or not a number.
43
+ */
44
+ declare function shellSizesFromTokens(shellGroup: Readonly<Record<string, string>>): ShellSizes;
45
+
46
+ /** Fit never zooms above 100 % (guide §5.9). */
47
+ declare const MAX_FIT_ZOOM = 1;
48
+ /** Duration of the explicit, animated fit (`--cd-motion-base`). */
49
+ declare const FIT_ANIMATION_MS = 250;
50
+ /**
51
+ * The viewbox that shows `bounds` centred in the free rectangle (`container` minus `insets`) at the
52
+ * largest scale that fits, capped at `maxZoom`. The box has the container's aspect ratio, so
53
+ * diagram-js's `canvas.viewbox(box)` sets exactly this view. Returns `undefined` when the container
54
+ * is 0 × 0 or `bounds` has neither width nor height; a zero width or height scales by the other
55
+ * dimension. Where the insets leave no free room on an axis (a container lower or narrower than
56
+ * its chrome), that axis centres in the whole container instead.
57
+ */
58
+ declare function fitViewbox(bounds: Bounds, container: Size, insets: Insets, maxZoom?: number): ScaledViewbox | undefined;
59
+ /**
60
+ * The centre of the free rectangle (`container` minus `insets`) in pixels from the container's top
61
+ * left, where `fitViewbox` centres the content and keyboard creation places an element (guide
62
+ * §5.5). An axis the insets leave no room on centres in the whole container, as in `fitViewbox`.
63
+ * Returns `undefined` when the container is 0 × 0.
64
+ */
65
+ declare function freeRectCenter(container: Size, insets: Insets): Point | undefined;
66
+ /** What is open or shown when a fit runs (guide §5.9: every fit counts what is open right now). */
67
+ interface FitLayout {
68
+ container: Size;
69
+ host: ShellHost;
70
+ paletteRow: PaletteRow;
71
+ /** The problems pill is shown (only the web app reserves room for it). */
72
+ problemsVisible: boolean;
73
+ /**
74
+ * Web app: the zoom panel stands above the legal line (`bottom: 40px`) because the two would
75
+ * meet in the bottom row of a narrow container (`zoomRowRaised`); the bottom then keeps 92px as
76
+ * with the pill.
77
+ */
78
+ zoomRaised?: boolean | undefined;
79
+ /**
80
+ * Web app: the measured height of the legal line (`LEGAL_LINE_HEIGHT`, more where a narrow
81
+ * container wraps it); the raised bottom row stands on it. Default one line.
82
+ */
83
+ legalHeight?: number | undefined;
84
+ /** Rendered width of the open legend; `undefined` when it is closed or the modeler has none. */
85
+ legendWidth?: number | undefined;
86
+ /**
87
+ * The open inspector; `undefined` when closed. Above `SHELL.narrow` it is the side panel; up to it
88
+ * a bottom sheet whose top edge (`sheetTop`, px from the container top) must be measured.
89
+ */
90
+ inspector?: {
91
+ sheetTop?: number | undefined;
92
+ } | undefined;
93
+ }
94
+ /**
95
+ * The fit insets of guide §5.9: top 88 (second row 140), sides 24, bottom 64 (web app with pill or
96
+ * with the zoom panel raised above the legal line 92, plus 20 per extra line of a wrapped legal line),
97
+ * right 324 with an open side inspector, left 12 + legend width + 24 with an open legend above
98
+ * `SHELL.veryNarrow`, bottom = distance to the sheet's top edge + 12 with an open bottom sheet.
99
+ */
100
+ declare function fitInsets(layout: FitLayout): Insets;
101
+ /** Relative tolerance of `sameView` (diagram-js rounds the transform to three decimals). */
102
+ declare const VIEW_TOLERANCE = 0.001;
103
+ /**
104
+ * True when two views are the same within `tolerance`: the scale and the translation in screen
105
+ * pixels (`x · scale`, `y · scale`) agree relative to `max(1, |value|)`. Width and height are
106
+ * ignored, so a container resize is never a difference.
107
+ */
108
+ declare function sameView(a: Pick<ScaledViewbox, "x" | "y" | "scale">, b: Pick<ScaledViewbox, "x" | "y" | "scale">, tolerance?: number): boolean;
109
+ /**
110
+ * The view at `progress` (0…1) between two viewboxes of the same container: the scale is
111
+ * interpolated in log space, the centre linearly. Used per animation frame by the animated fit.
112
+ */
113
+ declare function interpolateViewbox(from: ScaledViewbox, to: ScaledViewbox, progress: number): ScaledViewbox;
114
+ /** `--cd-ease`, `cubic-bezier(0.4, 0, 0.2, 1)`, as a function of time 0…1. */
115
+ declare function easeStandard(progress: number): number;
116
+
117
+ /** diagram-js `ZoomScroll` RANGE (not configurable): 20 % … 400 %. */
118
+ declare const ZOOM_MIN = 0.2;
119
+ declare const ZOOM_MAX = 4;
120
+ /** Zoom out is disabled at 20 % and below (`zoom <= 0.2 · 1.001`), so it never zooms in. */
121
+ declare function canZoomOut(zoom: number): boolean;
122
+ /** Zoom in is disabled at 400 % (`zoom >= 4 · 0.999`). */
123
+ declare function canZoomIn(zoom: number): boolean;
124
+ /**
125
+ * A zoom as a whole percentage in the UI language: `Intl.NumberFormat(lang, { style: "percent",
126
+ * maximumFractionDigits: 0 })`, so English "86%", German "86 %" (with U+00A0).
127
+ */
128
+ declare function formatPercent(zoom: number, lang: string): string;
129
+ /** Any other number in the chrome ("2 problems"), via `Intl.NumberFormat(lang)`. */
130
+ declare function formatNumber(value: number, lang: string): string;
131
+ interface ZoomReadout {
132
+ /** "86%" */
133
+ text: string;
134
+ /** "Zoom to 100% (now 86%)" */
135
+ ariaLabel: string;
136
+ canZoomOut: boolean;
137
+ canZoomIn: boolean;
138
+ }
139
+ /** Everything the zoom panel shows for a zoom: readout text, its accessible name and the limits. */
140
+ declare function zoomReadout(zoom: number, lang: string, messages: Pick<ShellMessages, "zoomToActualNow">): ZoomReadout;
141
+
142
+ /** Free space the top row needs between the palette and a neighbouring island (guide §5.15). */
143
+ declare const PALETTE_CLEARANCE = 16;
144
+ /** Hover delay of the chrome tooltip, equal to diagram-js `HoverTooltip` `SHOW_DELAY`. */
145
+ declare const TOOLTIP_DELAY_MS = 300;
146
+ /** The status box for an invalid file shows after this long without a valid import (guide §5.12). */
147
+ declare const INVALID_STATUS_DELAY_MS = 800;
148
+ interface PaletteRowInput {
149
+ containerWidth: number;
150
+ /**
151
+ * The palette's intrinsic border-box width (`scrollWidth` plus its borders), so the decision does
152
+ * not flip once the second row clips it.
153
+ */
154
+ paletteWidth: number;
155
+ /** Right edge of the menu trigger, relative to the shell root. */
156
+ menuRight: number;
157
+ /** Left edge of the primary action (web app), relative to the shell root; absent in IDE hosts. */
158
+ primaryLeft?: number | undefined;
159
+ }
160
+ /**
161
+ * `second-row` when the container is at most `SHELL.narrow` wide or a centred palette would keep
162
+ * less than `PALETTE_CLEARANCE` to the menu trigger (or the primary action); `top` otherwise.
163
+ */
164
+ declare function decidePaletteRow(input: PaletteRowInput): PaletteRow;
165
+ /** The legend starts open unless the container is at most `SHELL.low` high (guide §5.10). */
166
+ declare function legendStartsOpen(containerHeight: number): boolean;
167
+ interface TooltipPlacementInput {
168
+ /** The hovered or focused control, relative to the shell root (horizontal centre). */
169
+ anchor: Bounds;
170
+ /** The island the control sits in, relative to the shell root (vertical placement). */
171
+ island: Bounds;
172
+ tooltip: Size;
173
+ container: Size;
174
+ }
175
+ /**
176
+ * The tooltip's top-left corner relative to the shell root (guide §5.6): below an island in the
177
+ * upper half (`island.bottom + 8`: top row 60, second row 112), above one in the lower half
178
+ * (`island.top − 8 − height`: bottom row ends at `bottom: 60px`); centred on the anchor, shifted to
179
+ * keep `SHELL.edge` to the container's sides.
180
+ */
181
+ declare function placeTooltip(input: TooltipPlacementInput): Point;
182
+
183
+ /** Border-box widths of the web app's primary action, measured with and without its label. */
184
+ interface PrimaryWidths {
185
+ /** Icon and label: padding `0 16px`, icon 16px, gap 8px, label 13px/600 (guide §5.7). */
186
+ withLabel: number;
187
+ /** The icon alone: `SHELL.row` (40) square. */
188
+ iconOnly: number;
189
+ }
190
+ interface TopRowInput {
191
+ containerWidth: number;
192
+ /** The palette's intrinsic border-box width, as for `decidePaletteRow`. */
193
+ paletteWidth: number;
194
+ /** Right edge of the menu trigger, relative to the shell root. */
195
+ menuRight: number;
196
+ /** The primary action at `right: 12px`; absent in IDE and embedded hosts and without one. */
197
+ primary?: PrimaryWidths | undefined;
198
+ }
199
+ interface TopRow {
200
+ paletteRow: PaletteRow;
201
+ /** `collapsed`: the primary action shows its icon only; its `aria-label` keeps the name. */
202
+ primaryLabel: "shown" | "collapsed";
203
+ }
204
+ /**
205
+ * The top row of guide §5.15 with a primary action: when it gets tight, the primary action loses
206
+ * its label first, and only then the palette moves to the second row.
207
+ *
208
+ * 1. Without `primary`: `decidePaletteRow` alone, label `shown`.
209
+ * 2. With the label (`primaryLeft = containerWidth − SHELL.edge − withLabel`): palette `top` →
210
+ * `{ top, shown }`.
211
+ * 3. Icon only (`primaryLeft = containerWidth − SHELL.edge − iconOnly`): palette `top` →
212
+ * `{ top, collapsed }`.
213
+ * 4. Otherwise the palette is in the second row and the top row holds only menu trigger and
214
+ * primary action: the label shows again when `menuRight + PALETTE_CLEARANCE` stays left of the
215
+ * labelled button, else it stays collapsed.
216
+ *
217
+ * Up to `SHELL.narrow` the palette is always in the second row (step 4).
218
+ */
219
+ declare function decideTopRow(input: TopRowInput): TopRow;
220
+
221
+ /**
222
+ * Height of one line of the web app's legal line: 13px text on a 20px line (guide §5.10). Where a
223
+ * narrow container cannot hold it in one line, it wraps (40 for two lines) and everything stacked
224
+ * above it rises by as much: the pill, the legend, the raised zoom panel and the fit's bottom.
225
+ */
226
+ declare const LEGAL_LINE_HEIGHT = 20;
227
+ /** A measured legal line's height in whole lines, at least one: what the stack above it stands on. */
228
+ declare function legalLineHeight(measured: number | undefined): number;
229
+ interface BottomRowInput {
230
+ containerWidth: number;
231
+ /** Measured right edge of the legal line relative to the shell root; absent while it is not shown. */
232
+ legalRight?: number | undefined;
233
+ /** Measured width of the zoom panel (173 with a 56px readout); absent while it is not shown. */
234
+ zoomWidth?: number | undefined;
235
+ }
236
+ /**
237
+ * Web app, bottom row: true when the zoom panel at `right: 12px` would keep less than
238
+ * `SHELL.gap` (8px) to the legal line at `left: 12px`. The zoom panel then stands above the legal
239
+ * line at `bottom: 40px` (12 + 20 + 8; a wrapped line lifts it further), like the pill
240
+ * (`data-zoom-row="raised"` on the root), and the fit keeps 92px at the bottom (`FitLayout.zoomRaised`). Guide §5.10 and §5.15 do not settle
241
+ * this collision of a narrow container; it is the shell's rule until they do.
242
+ * False when either of the two is not shown.
243
+ */
244
+ declare function zoomRowRaised(input: BottomRowInput): boolean;
245
+
246
+ export { type BottomRowInput, Bounds, FIT_ANIMATION_MS, type FitLayout, INVALID_STATUS_DELAY_MS, Insets, LEGAL_LINE_HEIGHT, MAX_FIT_ZOOM, PALETTE_CLEARANCE, PaletteRow, type PaletteRowInput, Point, type PrimaryWidths, SHELL, SHELL_TOKENS, ScaledViewbox, ShellHost, ShellMessages, type ShellSizeName, type ShellSizes, Size, TOOLTIP_DELAY_MS, type TooltipPlacementInput, type TopRow, type TopRowInput, VIEW_TOLERANCE, ZOOM_MAX, ZOOM_MIN, type ZoomReadout, canZoomIn, canZoomOut, decidePaletteRow, decideTopRow, easeStandard, fitInsets, fitViewbox, formatNumber, formatPercent, freeRectCenter, interpolateViewbox, legalLineHeight, legendStartsOpen, placeTooltip, sameView, shellSizesFromTokens, zoomReadout, zoomRowRaised };
package/dist/core.js ADDED
@@ -0,0 +1,131 @@
1
+ import {
2
+ APPEARANCE_STORAGE_KEY,
3
+ CHROME_ISLANDS,
4
+ FIT_ANIMATION_MS,
5
+ INVALID_STATUS_DELAY_MS,
6
+ LEGAL_LINE_HEIGHT,
7
+ MAX_FIT_ZOOM,
8
+ MAX_TOASTS,
9
+ PALETTE_CLEARANCE,
10
+ REDUCED_MOTION_CLASS,
11
+ SHELL,
12
+ SHELL_TOKENS,
13
+ TEXT_FIELD_SELECTOR,
14
+ TOAST_DURATION_MS,
15
+ TOAST_MAX_WIDTH,
16
+ TOOLTIP_DELAY_MS,
17
+ VIEW_TOLERANCE,
18
+ ZOOM_MAX,
19
+ ZOOM_MIN,
20
+ acceptsFile,
21
+ appearanceAttributes,
22
+ appearanceFromBodyClasses,
23
+ appearanceFromColorThemeKind,
24
+ ariaKeyShortcuts,
25
+ ariaKeyShortcutsFromLabel,
26
+ canZoomIn,
27
+ canZoomOut,
28
+ commandKeyLabel,
29
+ decideKey,
30
+ decidePaletteRow,
31
+ decideTopRow,
32
+ defaultMessages,
33
+ detectPlatform,
34
+ documentMode,
35
+ dragVerdict,
36
+ easeStandard,
37
+ fitInsets,
38
+ fitViewbox,
39
+ formatNumber,
40
+ formatPercent,
41
+ freeRectCenter,
42
+ interpolateViewbox,
43
+ isUndoRedoKey,
44
+ legalLineHeight,
45
+ legendStartsOpen,
46
+ matchChromeKey,
47
+ parseAppearanceChoice,
48
+ placeTooltip,
49
+ problemSummary,
50
+ reducedMotionFromBodyClasses,
51
+ requestedAppearance,
52
+ resolveAppearance,
53
+ resolveMessages,
54
+ sameView,
55
+ shellSizesFromTokens,
56
+ shortcutLabel,
57
+ toastLifetime,
58
+ toastStackBottom,
59
+ toastStackWidth,
60
+ toastToEvict,
61
+ webHeadMarkup,
62
+ webModeScript,
63
+ zoomReadout,
64
+ zoomRowRaised
65
+ } from "./chunk-OADW3GPA.js";
66
+ export {
67
+ APPEARANCE_STORAGE_KEY,
68
+ CHROME_ISLANDS,
69
+ FIT_ANIMATION_MS,
70
+ INVALID_STATUS_DELAY_MS,
71
+ LEGAL_LINE_HEIGHT,
72
+ MAX_FIT_ZOOM,
73
+ MAX_TOASTS,
74
+ PALETTE_CLEARANCE,
75
+ REDUCED_MOTION_CLASS,
76
+ SHELL,
77
+ SHELL_TOKENS,
78
+ TEXT_FIELD_SELECTOR,
79
+ TOAST_DURATION_MS,
80
+ TOAST_MAX_WIDTH,
81
+ TOOLTIP_DELAY_MS,
82
+ VIEW_TOLERANCE,
83
+ ZOOM_MAX,
84
+ ZOOM_MIN,
85
+ acceptsFile,
86
+ appearanceAttributes,
87
+ appearanceFromBodyClasses,
88
+ appearanceFromColorThemeKind,
89
+ ariaKeyShortcuts,
90
+ ariaKeyShortcutsFromLabel,
91
+ canZoomIn,
92
+ canZoomOut,
93
+ commandKeyLabel,
94
+ decideKey,
95
+ decidePaletteRow,
96
+ decideTopRow,
97
+ defaultMessages,
98
+ detectPlatform,
99
+ documentMode,
100
+ dragVerdict,
101
+ easeStandard,
102
+ fitInsets,
103
+ fitViewbox,
104
+ formatNumber,
105
+ formatPercent,
106
+ freeRectCenter,
107
+ interpolateViewbox,
108
+ isUndoRedoKey,
109
+ legalLineHeight,
110
+ legendStartsOpen,
111
+ matchChromeKey,
112
+ parseAppearanceChoice,
113
+ placeTooltip,
114
+ problemSummary,
115
+ reducedMotionFromBodyClasses,
116
+ requestedAppearance,
117
+ resolveAppearance,
118
+ resolveMessages,
119
+ sameView,
120
+ shellSizesFromTokens,
121
+ shortcutLabel,
122
+ toastLifetime,
123
+ toastStackBottom,
124
+ toastStackWidth,
125
+ toastToEvict,
126
+ webHeadMarkup,
127
+ webModeScript,
128
+ zoomReadout,
129
+ zoomRowRaised
130
+ };
131
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}