@gjsify/adwaita-core 0.31.0 → 0.33.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/lib/esm/about-dialog.js +3 -0
- package/lib/esm/action-row.js +1 -0
- package/lib/esm/avatar.js +1 -0
- package/lib/esm/banner.js +1 -0
- package/lib/esm/button-content.js +1 -0
- package/lib/esm/carousel.js +1 -0
- package/lib/esm/checks.js +1 -0
- package/lib/esm/chrome.js +1 -0
- package/lib/esm/conformance/about-dialog.js +6 -0
- package/lib/esm/conformance/action-row.js +1 -0
- package/lib/esm/conformance/avatar.js +1 -0
- package/lib/esm/conformance/banner.js +1 -0
- package/lib/esm/conformance/button-content.js +1 -0
- package/lib/esm/conformance/carousel.js +1 -0
- package/lib/esm/conformance/checks.js +1 -0
- package/lib/esm/conformance/chrome.js +1 -0
- package/lib/esm/conformance/data-grid.js +1 -0
- package/lib/esm/conformance/dialog.js +1 -0
- package/lib/esm/conformance/entry-row.js +1 -0
- package/lib/esm/conformance/index.js +1 -0
- package/lib/esm/conformance/navigation-view.js +1 -0
- package/lib/esm/conformance/popover.js +1 -0
- package/lib/esm/conformance/preferences.js +1 -0
- package/lib/esm/conformance/rows.js +1 -0
- package/lib/esm/conformance/sidebar.js +1 -0
- package/lib/esm/conformance/spinner.js +1 -0
- package/lib/esm/conformance/split-button.js +1 -0
- package/lib/esm/conformance/split-view.js +1 -0
- package/lib/esm/conformance/tab-view.js +1 -0
- package/lib/esm/conformance/view-stack.js +1 -0
- package/lib/esm/conformance/view-switcher.js +1 -0
- package/lib/esm/conformance/wrap-box.js +1 -0
- package/lib/esm/data-grid.js +1 -0
- package/lib/esm/dialog.js +1 -1
- package/lib/esm/easing.js +1 -0
- package/lib/esm/entry-row.js +1 -0
- package/lib/esm/glib.js +1 -0
- package/lib/esm/index.js +1 -1
- package/lib/esm/length-unit.js +1 -0
- package/lib/esm/navigation-view.js +1 -0
- package/lib/esm/popover.js +1 -0
- package/lib/esm/preferences.js +1 -0
- package/lib/esm/rows.js +1 -1
- package/lib/esm/sidebar.js +1 -0
- package/lib/esm/spinner.js +1 -0
- package/lib/esm/split-button.js +1 -0
- package/lib/esm/split-view.js +1 -0
- package/lib/esm/tab-view.js +1 -0
- package/lib/esm/view-stack.js +1 -0
- package/lib/esm/view-switcher.js +1 -0
- package/lib/esm/wrap-box.js +1 -0
- package/lib/types/about-dialog.d.ts +391 -0
- package/lib/types/about-dialog.spec.d.ts +2 -0
- package/lib/types/action-row.d.ts +270 -0
- package/lib/types/action-row.spec.d.ts +2 -0
- package/lib/types/avatar.d.ts +112 -0
- package/lib/types/avatar.spec.d.ts +2 -0
- package/lib/types/banner.d.ts +104 -0
- package/lib/types/banner.spec.d.ts +2 -0
- package/lib/types/button-content.d.ts +141 -0
- package/lib/types/button-content.spec.d.ts +2 -0
- package/lib/types/carousel.d.ts +535 -0
- package/lib/types/carousel.spec.d.ts +2 -0
- package/lib/types/checks.d.ts +63 -0
- package/lib/types/checks.spec.d.ts +2 -0
- package/lib/types/chrome.d.ts +355 -0
- package/lib/types/chrome.spec.d.ts +2 -0
- package/lib/types/conformance/about-dialog.d.ts +314 -0
- package/lib/types/conformance/action-row.d.ts +186 -0
- package/lib/types/conformance/avatar.d.ts +61 -0
- package/lib/types/conformance/banner.d.ts +91 -0
- package/lib/types/conformance/button-content.d.ts +110 -0
- package/lib/types/conformance/carousel.d.ts +298 -0
- package/lib/types/conformance/checks.d.ts +29 -0
- package/lib/types/conformance/chrome.d.ts +207 -0
- package/lib/types/conformance/data-grid.d.ts +136 -0
- package/lib/types/conformance/dialog.d.ts +97 -0
- package/lib/types/conformance/entry-row.d.ts +187 -0
- package/lib/types/conformance/index.d.ts +46 -0
- package/lib/types/conformance/navigation-view.d.ts +235 -0
- package/lib/types/conformance/popover.d.ts +58 -0
- package/lib/types/conformance/preferences.d.ts +184 -0
- package/lib/types/conformance/rows.d.ts +74 -0
- package/lib/types/conformance/sidebar.d.ts +182 -0
- package/lib/types/conformance/spinner.d.ts +66 -0
- package/lib/types/conformance/split-button.d.ts +193 -0
- package/lib/types/conformance/split-view.d.ts +301 -0
- package/lib/types/conformance/tab-view.d.ts +449 -0
- package/lib/types/conformance/view-stack.d.ts +121 -0
- package/lib/types/conformance/view-switcher.d.ts +443 -0
- package/lib/types/conformance/wrap-box.d.ts +185 -0
- package/lib/types/data-grid.d.ts +140 -0
- package/lib/types/data-grid.spec.d.ts +2 -0
- package/lib/types/dialog.d.ts +144 -0
- package/lib/types/easing.d.ts +21 -0
- package/lib/types/entry-row.d.ts +308 -0
- package/lib/types/entry-row.spec.d.ts +2 -0
- package/lib/types/glib.d.ts +49 -0
- package/lib/types/index.d.ts +50 -4
- package/lib/types/length-unit.d.ts +24 -0
- package/lib/types/navigation-view.d.ts +343 -0
- package/lib/types/navigation-view.spec.d.ts +2 -0
- package/lib/types/popover.d.ts +155 -0
- package/lib/types/popover.spec.d.ts +2 -0
- package/lib/types/preferences.d.ts +349 -0
- package/lib/types/preferences.spec.d.ts +2 -0
- package/lib/types/rows.d.ts +96 -8
- package/lib/types/sidebar.d.ts +308 -0
- package/lib/types/sidebar.spec.d.ts +2 -0
- package/lib/types/spinner.d.ts +117 -0
- package/lib/types/spinner.spec.d.ts +2 -0
- package/lib/types/split-button.d.ts +316 -0
- package/lib/types/split-button.spec.d.ts +2 -0
- package/lib/types/split-view.d.ts +703 -0
- package/lib/types/split-view.spec.d.ts +2 -0
- package/lib/types/tab-view.d.ts +616 -0
- package/lib/types/tab-view.spec.d.ts +2 -0
- package/lib/types/view-stack.d.ts +278 -0
- package/lib/types/view-stack.spec.d.ts +2 -0
- package/lib/types/view-switcher.d.ts +524 -0
- package/lib/types/view-switcher.spec.d.ts +2 -0
- package/lib/types/wrap-box.d.ts +200 -0
- package/lib/types/wrap-box.spec.d.ts +2 -0
- package/package.json +8 -4
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
import type { CarouselDirection, CarouselOrientation, CarouselScrollSource } from '../carousel.js';
|
|
2
|
+
/** One `carouselSnapPoints` expectation. */
|
|
3
|
+
export interface CarouselSnapPointVector {
|
|
4
|
+
/** Per-page reveal sizes: 0 while a page animates in, 1 once settled. */
|
|
5
|
+
sizes: readonly number[];
|
|
6
|
+
/** `snapPoint[i] = (Σ_{j≤i} size[j]) − 1`. */
|
|
7
|
+
snapPoints: readonly number[];
|
|
8
|
+
/** Why this row exists. */
|
|
9
|
+
rule: string;
|
|
10
|
+
}
|
|
11
|
+
/** `adw_carousel_size_allocate`'s accumulation (adw-carousel.c:777-789). *
|
|
12
|
+
* CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (CAROUSEL_PAGE_LIST_VECTORS)
|
|
13
|
+
*/
|
|
14
|
+
export declare const CAROUSEL_SNAP_POINT_VECTORS: ReadonlyArray<CarouselSnapPointVector>;
|
|
15
|
+
/** One `carouselSizesFromSnapPoints` expectation. */
|
|
16
|
+
export interface CarouselSizesFromSnapPointsVector {
|
|
17
|
+
/** Snap points as `AdwSwipeable` hands them to an indicator. */
|
|
18
|
+
snapPoints: readonly number[];
|
|
19
|
+
/** `sizes[0] = points[0] + 1`, `sizes[i] = points[i] − points[i−1]`. */
|
|
20
|
+
sizes: readonly number[];
|
|
21
|
+
/** Why this row exists. */
|
|
22
|
+
rule: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The inverse both indicators reconstruct sizes with
|
|
26
|
+
* (adw-carousel-indicator-dots.c:189-191, :248-250) — the only channel through
|
|
27
|
+
* which an indicator can learn per-page reveal state.
|
|
28
|
+
*
|
|
29
|
+
* CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (CAROUSEL_PAGE_LIST_VECTORS)
|
|
30
|
+
*/
|
|
31
|
+
export declare const CAROUSEL_SIZES_FROM_SNAP_POINTS_VECTORS: ReadonlyArray<CarouselSizesFromSnapPointsVector>;
|
|
32
|
+
/** One `carouselRange` expectation. */
|
|
33
|
+
export interface CarouselRangeVector {
|
|
34
|
+
/** The snap points the range is derived from. */
|
|
35
|
+
snapPoints: readonly number[];
|
|
36
|
+
/** Pending `position_shift`, which C folds into the bound (:219). */
|
|
37
|
+
positionShift: number;
|
|
38
|
+
/** Always 0. */
|
|
39
|
+
lower: number;
|
|
40
|
+
/** `MAX (0, positionShift + last snap point)`. */
|
|
41
|
+
upper: number;
|
|
42
|
+
/** Why this row exists. */
|
|
43
|
+
rule: string;
|
|
44
|
+
}
|
|
45
|
+
/** `get_range` (adw-carousel.c:207-220). *
|
|
46
|
+
* CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (CAROUSEL_PAGE_LIST_VECTORS)
|
|
47
|
+
*/
|
|
48
|
+
export declare const CAROUSEL_RANGE_VECTORS: ReadonlyArray<CarouselRangeVector>;
|
|
49
|
+
/** One `carouselClampPosition` expectation. */
|
|
50
|
+
export interface CarouselClampVector {
|
|
51
|
+
/** The proposed position. */
|
|
52
|
+
position: number;
|
|
53
|
+
/** The snap points defining the range. */
|
|
54
|
+
snapPoints: readonly number[];
|
|
55
|
+
/** `CLAMP (position, lower, upper)`. */
|
|
56
|
+
clamped: number;
|
|
57
|
+
/** Why this row exists. */
|
|
58
|
+
rule: string;
|
|
59
|
+
}
|
|
60
|
+
/** `set_position`'s guard (adw-carousel.c:269). *
|
|
61
|
+
* CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (CAROUSEL_PAGE_LIST_VECTORS)
|
|
62
|
+
*/
|
|
63
|
+
export declare const CAROUSEL_CLAMP_VECTORS: ReadonlyArray<CarouselClampVector>;
|
|
64
|
+
/** One `carouselPageAtPosition` expectation. */
|
|
65
|
+
export interface CarouselPageAtPositionVector {
|
|
66
|
+
/** The scroll position to resolve. */
|
|
67
|
+
position: number;
|
|
68
|
+
/** The snap points of the pages that count. */
|
|
69
|
+
snapPoints: readonly number[];
|
|
70
|
+
/** The page index, `-1` when there are no pages. */
|
|
71
|
+
page: number;
|
|
72
|
+
/** Why this row exists. */
|
|
73
|
+
rule: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* `get_page_at_position` → `get_closest_child_at` (adw-carousel.c:222-239,
|
|
77
|
+
* :180-205). The `.5` rows are the regression pins: C's comparison is a strict
|
|
78
|
+
* `>`, so an equidistant LATER page never replaces the earlier one, while both
|
|
79
|
+
* ports used `Math.round`, which rounds .5 up.
|
|
80
|
+
*/
|
|
81
|
+
export declare const CAROUSEL_PAGE_AT_POSITION_VECTORS: ReadonlyArray<CarouselPageAtPositionVector>;
|
|
82
|
+
/** One `carouselNavigateTarget` expectation. */
|
|
83
|
+
export interface CarouselNavigateVector {
|
|
84
|
+
/** Current scroll position. */
|
|
85
|
+
position: number;
|
|
86
|
+
/** Number of pages. */
|
|
87
|
+
nPages: number;
|
|
88
|
+
/** Which way the key moves. */
|
|
89
|
+
direction: CarouselDirection;
|
|
90
|
+
/** The target page, `null` when C returns FALSE. */
|
|
91
|
+
target: number | null;
|
|
92
|
+
/** Why this row exists. */
|
|
93
|
+
rule: string;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* `navigate_to_direction` (adw-carousel.c:475-508).
|
|
97
|
+
*
|
|
98
|
+
* The rounding here is C's `round()` — half AWAY FROM ZERO — and it is
|
|
99
|
+
* deliberately not the half-down tie-break of
|
|
100
|
+
* {@link CAROUSEL_PAGE_AT_POSITION_VECTORS}: at position 0.5 the carousel shows
|
|
101
|
+
* page 0 but an arrow key steps from page 1. libadwaita is internally
|
|
102
|
+
* inconsistent there and that is ground truth, not a defect to iron out.
|
|
103
|
+
*/
|
|
104
|
+
export declare const CAROUSEL_NAVIGATE_VECTORS: ReadonlyArray<CarouselNavigateVector>;
|
|
105
|
+
/** One `carouselWheelStep` expectation. */
|
|
106
|
+
export interface CarouselWheelVector {
|
|
107
|
+
/** Horizontal delta. */
|
|
108
|
+
deltaX: number;
|
|
109
|
+
/** Vertical delta. */
|
|
110
|
+
deltaY: number;
|
|
111
|
+
/** The carousel's orientation. */
|
|
112
|
+
orientation: CarouselOrientation;
|
|
113
|
+
/** The `GdkInputSource` class of the event. */
|
|
114
|
+
source: CarouselScrollSource;
|
|
115
|
+
/** Pages to step; `0` means the event propagates. */
|
|
116
|
+
step: -1 | 0 | 1;
|
|
117
|
+
/** Why this row exists. */
|
|
118
|
+
rule: string;
|
|
119
|
+
}
|
|
120
|
+
/** `scroll_cb`'s axis/source rules (adw-carousel.c:537-559). *
|
|
121
|
+
* CORE-ONLY: GAP — the browser carousel handles `wheel` without routing it through `resolveCarouselWheel`, and the NativeScript one has no wheel at all. Tracked in #1072
|
|
122
|
+
*/
|
|
123
|
+
export declare const CAROUSEL_WHEEL_VECTORS: ReadonlyArray<CarouselWheelVector>;
|
|
124
|
+
/** One step of a wheel-lockout script. */
|
|
125
|
+
export interface CarouselWheelLockoutStep {
|
|
126
|
+
/** The value the injected `now()` returns for this event, in ms. */
|
|
127
|
+
at: number;
|
|
128
|
+
/** Vertical delta of the event (all lockout rows use a mouse wheel). */
|
|
129
|
+
deltaY: number;
|
|
130
|
+
/** What `handleWheel` must return. */
|
|
131
|
+
step: -1 | 0 | 1;
|
|
132
|
+
/** The position afterwards. */
|
|
133
|
+
position: number;
|
|
134
|
+
}
|
|
135
|
+
/** One end-to-end wheel-lockout expectation. */
|
|
136
|
+
export interface CarouselWheelLockoutVector {
|
|
137
|
+
/** How many settled pages the carousel starts with. */
|
|
138
|
+
pages: number;
|
|
139
|
+
/** The events, in order, each with the clock reading it arrives at. */
|
|
140
|
+
steps: readonly CarouselWheelLockoutStep[];
|
|
141
|
+
/** Why this row exists. */
|
|
142
|
+
rule: string;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* `SCROLL_TIMEOUT_DURATION` (adw-carousel.c:22) and the `scroll_timeout_id` gate
|
|
146
|
+
* (:526, :571-574) — a wheel notch arms a 150 ms lockout during which further
|
|
147
|
+
* notches propagate instead of paging.
|
|
148
|
+
*
|
|
149
|
+
* The web port replaced this with a non-decaying delta accumulator, so +30 then
|
|
150
|
+
* −30 cancelled out where libadwaita pages twice, and a slow wheel never
|
|
151
|
+
* reached the threshold at all.
|
|
152
|
+
*
|
|
153
|
+
* CORE-ONLY: GAP — the lockout is a real elapsed-time rule and neither element has a clock seam to drive it with. Tracked in #1072
|
|
154
|
+
*/
|
|
155
|
+
export declare const CAROUSEL_WHEEL_LOCKOUT_VECTORS: ReadonlyArray<CarouselWheelLockoutVector>;
|
|
156
|
+
/** One `carouselReorderShift` expectation. */
|
|
157
|
+
export interface CarouselReorderShiftVector {
|
|
158
|
+
/** Snap point of the page the carousel is closest to. */
|
|
159
|
+
closestPoint: number;
|
|
160
|
+
/** Snap point the moved page had. */
|
|
161
|
+
oldPoint: number;
|
|
162
|
+
/** Snap point it lands on. */
|
|
163
|
+
newPoint: number;
|
|
164
|
+
/** The moved page's reveal size. */
|
|
165
|
+
size: number;
|
|
166
|
+
/** How far `position` must move so the visible page does not jump. */
|
|
167
|
+
shift: number;
|
|
168
|
+
/** Why this row exists. */
|
|
169
|
+
rule: string;
|
|
170
|
+
}
|
|
171
|
+
/** The three branches of `adw_carousel_reorder`'s compensation (adw-carousel.c:1488-1495). *
|
|
172
|
+
* CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (CAROUSEL_PAGE_LIST_VECTORS)
|
|
173
|
+
*/
|
|
174
|
+
export declare const CAROUSEL_REORDER_SHIFT_VECTORS: ReadonlyArray<CarouselReorderShiftVector>;
|
|
175
|
+
/**
|
|
176
|
+
* One operation in a page-list script.
|
|
177
|
+
*
|
|
178
|
+
* `insert` and `remove` mean "and finish the reveal immediately", which is what
|
|
179
|
+
* a carousel with the default `reveal-duration` of 0 (adw-carousel.c:1206) does
|
|
180
|
+
* and what both renderers' page APIs do. The mid-animation states are pinned
|
|
181
|
+
* separately by {@link CAROUSEL_REVEAL_VECTORS}.
|
|
182
|
+
*/
|
|
183
|
+
export type CarouselPageOp = {
|
|
184
|
+
readonly kind: 'insert';
|
|
185
|
+
readonly id: string;
|
|
186
|
+
readonly position?: number;
|
|
187
|
+
} | {
|
|
188
|
+
readonly kind: 'remove';
|
|
189
|
+
readonly id: string;
|
|
190
|
+
} | {
|
|
191
|
+
readonly kind: 'reorder';
|
|
192
|
+
readonly id: string;
|
|
193
|
+
readonly position: number;
|
|
194
|
+
} | {
|
|
195
|
+
readonly kind: 'scrollTo';
|
|
196
|
+
readonly index: number;
|
|
197
|
+
} | {
|
|
198
|
+
readonly kind: 'setPosition';
|
|
199
|
+
readonly position: number;
|
|
200
|
+
} | {
|
|
201
|
+
readonly kind: 'settle';
|
|
202
|
+
};
|
|
203
|
+
/** The observable state a script must land in. */
|
|
204
|
+
export interface CarouselStateSnapshot {
|
|
205
|
+
/** Page ids in order, excluding any whose removal is still animating. */
|
|
206
|
+
ids: readonly string[];
|
|
207
|
+
/** `adw_carousel_get_n_pages` — the same exclusion. */
|
|
208
|
+
nPages: number;
|
|
209
|
+
/** Reveal sizes of every TRACKED child, including ones being removed. */
|
|
210
|
+
sizes: readonly number[];
|
|
211
|
+
/** Snap points of every tracked child. */
|
|
212
|
+
snapPoints: readonly number[];
|
|
213
|
+
/** The clamped fractional position. */
|
|
214
|
+
position: number;
|
|
215
|
+
/** The current page index, `-1` when empty. */
|
|
216
|
+
page: number;
|
|
217
|
+
}
|
|
218
|
+
/** One end-to-end page-list expectation. */
|
|
219
|
+
export interface CarouselPageListVector {
|
|
220
|
+
/** Pages the carousel starts with, all settled at size 1. */
|
|
221
|
+
pages: readonly string[];
|
|
222
|
+
/** The script, applied in order. */
|
|
223
|
+
ops: readonly CarouselPageOp[];
|
|
224
|
+
/** What each op returned (`settle` reports `true`). */
|
|
225
|
+
opResults: readonly boolean[];
|
|
226
|
+
/** The `page-changed` indices emitted while the script ran, in order. */
|
|
227
|
+
pageChanged: readonly number[];
|
|
228
|
+
/** The state afterwards. */
|
|
229
|
+
expected: CarouselStateSnapshot;
|
|
230
|
+
/** Why this row exists. */
|
|
231
|
+
rule: string;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Insert / remove / reorder ordering and the position compensation, on a
|
|
235
|
+
* carousel whose reveals complete instantly — the shape both renderers expose.
|
|
236
|
+
*
|
|
237
|
+
* The whole family is new to both ports: the web port snapshotted its children
|
|
238
|
+
* once in `connectedCallback` and never looked again, and the NS port had
|
|
239
|
+
* `addPage` and nothing else.
|
|
240
|
+
*/
|
|
241
|
+
export declare const CAROUSEL_PAGE_LIST_VECTORS: ReadonlyArray<CarouselPageListVector>;
|
|
242
|
+
/** One operation in a reveal script — the mid-animation half of the state machine. */
|
|
243
|
+
export type CarouselRevealOp = {
|
|
244
|
+
readonly kind: 'insert';
|
|
245
|
+
readonly id: string;
|
|
246
|
+
readonly position?: number;
|
|
247
|
+
} | {
|
|
248
|
+
readonly kind: 'reveal';
|
|
249
|
+
readonly id: string;
|
|
250
|
+
} | {
|
|
251
|
+
readonly kind: 'size';
|
|
252
|
+
readonly id: string;
|
|
253
|
+
readonly size: number;
|
|
254
|
+
} | {
|
|
255
|
+
readonly kind: 'remove';
|
|
256
|
+
readonly id: string;
|
|
257
|
+
} | {
|
|
258
|
+
readonly kind: 'setPosition';
|
|
259
|
+
readonly position: number;
|
|
260
|
+
};
|
|
261
|
+
/** One end-to-end reveal expectation. */
|
|
262
|
+
export interface CarouselRevealVector {
|
|
263
|
+
/** Pages the carousel starts with, all settled at size 1. */
|
|
264
|
+
pages: readonly string[];
|
|
265
|
+
/** The script, applied in order. */
|
|
266
|
+
ops: readonly CarouselRevealOp[];
|
|
267
|
+
/** The state afterwards. */
|
|
268
|
+
expected: CarouselStateSnapshot;
|
|
269
|
+
/** Why this row exists. */
|
|
270
|
+
rule: string;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* The reveal lifecycle: a page enters at size 0 and grows, leaves `n-pages`
|
|
274
|
+
* before its geometry, and drags the position along whenever it sits at or
|
|
275
|
+
* before the page on screen.
|
|
276
|
+
*
|
|
277
|
+
* Neither port has any of this — both treat the page list as fixed — so every
|
|
278
|
+
* row is new behaviour rather than a regression pin.
|
|
279
|
+
*/
|
|
280
|
+
export declare const CAROUSEL_REVEAL_VECTORS: ReadonlyArray<CarouselRevealVector>;
|
|
281
|
+
/** One property-default expectation. */
|
|
282
|
+
export interface CarouselPropertyDefaultVector {
|
|
283
|
+
/** The `CarouselState` accessor. */
|
|
284
|
+
property: 'orientation' | 'interactive' | 'allowScrollWheel' | 'allowLongSwipes' | 'spacing' | 'revealDuration';
|
|
285
|
+
/** What a freshly constructed carousel reports. */
|
|
286
|
+
value: string | number | boolean;
|
|
287
|
+
/** Why this row exists. */
|
|
288
|
+
rule: string;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* The `AdwCarousel` property defaults. Two of them are regression pins:
|
|
292
|
+
* `allow-scroll-wheel` is TRUE, which the web port inverted by reading a bare
|
|
293
|
+
* attribute presence (so a plain `<adw-carousel>` ignored the wheel entirely
|
|
294
|
+
* while its own header comment claimed the opposite), and `allow-long-swipes` is
|
|
295
|
+
* FALSE, which the web port carried as a property whose two ternary branches
|
|
296
|
+
* were identical.
|
|
297
|
+
*/
|
|
298
|
+
export declare const CAROUSEL_PROPERTY_DEFAULT_VECTORS: ReadonlyArray<CarouselPropertyDefaultVector>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { RadioGroupChange } from '../checks.js';
|
|
2
|
+
/**
|
|
3
|
+
* One mutation in a radio scenario. DATA, not a closure: the browser suite
|
|
4
|
+
* replays these as clicks on real elements rather than as method calls.
|
|
5
|
+
*/
|
|
6
|
+
export interface RadioGroupStep {
|
|
7
|
+
op: 'select';
|
|
8
|
+
/** The group name — what `name` scopes in HTML, and what the state keys on. */
|
|
9
|
+
name: string;
|
|
10
|
+
/** The member's value. */
|
|
11
|
+
value: string;
|
|
12
|
+
}
|
|
13
|
+
/** One radio-group scenario. */
|
|
14
|
+
export interface RadioGroupVector {
|
|
15
|
+
/** Short scenario name. */
|
|
16
|
+
name: string;
|
|
17
|
+
/** The members that exist, as `[group, value]` pairs — what the renderer mounts. */
|
|
18
|
+
members: ReadonlyArray<readonly [string, string]>;
|
|
19
|
+
/** The mutations, applied in order to a fresh state. */
|
|
20
|
+
steps: readonly RadioGroupStep[];
|
|
21
|
+
/** `selected(group)` afterwards, one entry per group in {@link members}. */
|
|
22
|
+
selected: ReadonlyArray<readonly [string, string | null]>;
|
|
23
|
+
/** Every change the state emits, in order. This IS the renderer's repaint feed. */
|
|
24
|
+
emitted: ReadonlyArray<RadioGroupChange>;
|
|
25
|
+
/** Why this row exists — the rule or edge case it pins down. */
|
|
26
|
+
rule: string;
|
|
27
|
+
}
|
|
28
|
+
/** `RadioGroupState.select` and the exclusivity it publishes. */
|
|
29
|
+
export declare const RADIO_GROUP_VECTORS: ReadonlyArray<RadioGroupVector>;
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import type { AdwClampSizeClass, ClampParams, ToolbarViewAllocateInput, ToolbarViewClassInput, ToolbarViewContentForSizeInput, ToolbarViewMeasureInput } from '../chrome.js';
|
|
2
|
+
/** One `clampThresholds` expectation. */
|
|
3
|
+
export interface ClampThresholdsVector {
|
|
4
|
+
/** The clamp properties plus the child's measured min/nat. */
|
|
5
|
+
params: ClampParams;
|
|
6
|
+
/** `MAX (MIN (tightening_threshold, maximum_size), min)`. */
|
|
7
|
+
lower: number;
|
|
8
|
+
/** `MAX (lower, maximum_size)`. */
|
|
9
|
+
max: number;
|
|
10
|
+
/** `lower + 3 * (max - lower)`. */
|
|
11
|
+
upper: number;
|
|
12
|
+
/** Why this row exists. */
|
|
13
|
+
rule: string;
|
|
14
|
+
}
|
|
15
|
+
/** `lower`/`max`/`upper` (adw-clamp-layout.c:173-176, :210-213). *
|
|
16
|
+
* CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (CLAMP_ALLOCATE_VECTORS)
|
|
17
|
+
*/
|
|
18
|
+
export declare const CLAMP_THRESHOLD_VECTORS: ReadonlyArray<ClampThresholdsVector>;
|
|
19
|
+
/** One `clampChildSize` expectation. */
|
|
20
|
+
export interface ClampChildSizeVector {
|
|
21
|
+
/** The available size (`for_size`); `-1` is GTK's "unconstrained". */
|
|
22
|
+
forSize: number;
|
|
23
|
+
/** The clamp properties plus the child's measured min/nat. */
|
|
24
|
+
params: ClampParams;
|
|
25
|
+
/** What the child is allocated. */
|
|
26
|
+
childSize: number;
|
|
27
|
+
/** Why this row exists. */
|
|
28
|
+
rule: string;
|
|
29
|
+
}
|
|
30
|
+
/** `child_size_from_clamp` (adw-clamp-layout.c:193-232). *
|
|
31
|
+
* CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (CLAMP_ALLOCATE_VECTORS)
|
|
32
|
+
*/
|
|
33
|
+
export declare const CLAMP_CHILD_SIZE_VECTORS: ReadonlyArray<ClampChildSizeVector>;
|
|
34
|
+
/** One `clampSizeFromChild` expectation. */
|
|
35
|
+
export interface ClampSizeFromChildVector {
|
|
36
|
+
/** The child's size. */
|
|
37
|
+
childSize: number;
|
|
38
|
+
/** The clamp properties plus the child's measured min/nat. */
|
|
39
|
+
params: ClampParams;
|
|
40
|
+
/** The size the clamp itself reports for it. */
|
|
41
|
+
clampSize: number;
|
|
42
|
+
/** Why this row exists. */
|
|
43
|
+
rule: string;
|
|
44
|
+
}
|
|
45
|
+
/** `clamp_size_from_child` (adw-clamp-layout.c:156-191) — the inverse ease. *
|
|
46
|
+
* CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (CLAMP_ALLOCATE_VECTORS)
|
|
47
|
+
*/
|
|
48
|
+
export declare const CLAMP_SIZE_FROM_CHILD_VECTORS: ReadonlyArray<ClampSizeFromChildVector>;
|
|
49
|
+
/** One `clampAllocate` expectation. */
|
|
50
|
+
export interface ClampAllocateVector {
|
|
51
|
+
/** The size the clamp itself was allocated. */
|
|
52
|
+
availableSize: number;
|
|
53
|
+
/** The clamp properties plus the child's measured min/nat. */
|
|
54
|
+
params: ClampParams;
|
|
55
|
+
/** The size the child is allocated. */
|
|
56
|
+
childSize: number;
|
|
57
|
+
/** `ceil(max)`. */
|
|
58
|
+
childMaximum: number;
|
|
59
|
+
/** `ceil(lower)`. */
|
|
60
|
+
lowerThreshold: number;
|
|
61
|
+
/** The style class the CHILD carries. */
|
|
62
|
+
sizeClass: AdwClampSizeClass;
|
|
63
|
+
/** The centring offset. */
|
|
64
|
+
offset: number;
|
|
65
|
+
/** Why this row exists. */
|
|
66
|
+
rule: string;
|
|
67
|
+
}
|
|
68
|
+
/** `adw_clamp_layout_allocate` (adw-clamp-layout.c:317-386). */
|
|
69
|
+
export declare const CLAMP_ALLOCATE_VECTORS: ReadonlyArray<ClampAllocateVector>;
|
|
70
|
+
/** One `normalizeClampSize` expectation. */
|
|
71
|
+
export interface ClampPropertyVector {
|
|
72
|
+
/** The raw attribute value or property assignment. */
|
|
73
|
+
value: number | string | null | undefined;
|
|
74
|
+
/** The default the property falls back to. */
|
|
75
|
+
fallback: number;
|
|
76
|
+
/** The value that reaches the layout. */
|
|
77
|
+
size: number;
|
|
78
|
+
/** Why this row exists. */
|
|
79
|
+
rule: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* `maximum-size` / `tightening-threshold` as `g_param_spec_int (…, 0, G_MAXINT, …)`
|
|
83
|
+
* (adw-clamp-layout.c:413-416, :448-451).
|
|
84
|
+
*
|
|
85
|
+
* The three interesting rows are the three the ports disagreed on: `"0"` (valid,
|
|
86
|
+
* and NOT the default), a non-numeric value (never reaches the layout, so the
|
|
87
|
+
* DEFAULT applies — the browser port kept whatever cap was already set), and a
|
|
88
|
+
* negative (out of range, clamped to the range floor).
|
|
89
|
+
*/
|
|
90
|
+
export declare const CLAMP_PROPERTY_VECTORS: ReadonlyArray<ClampPropertyVector>;
|
|
91
|
+
/** One `toolbarViewAllocate` expectation. */
|
|
92
|
+
export interface ToolbarViewAllocateVector {
|
|
93
|
+
/** The measured sizes going in. */
|
|
94
|
+
input: ToolbarViewAllocateInput;
|
|
95
|
+
/** `Adw.ToolbarView:top-bar-height`. */
|
|
96
|
+
topBarHeight: number;
|
|
97
|
+
/** `Adw.ToolbarView:bottom-bar-height`. */
|
|
98
|
+
bottomBarHeight: number;
|
|
99
|
+
/** The content's allocated height. */
|
|
100
|
+
contentHeight: number;
|
|
101
|
+
/** The content's offset from the top edge. */
|
|
102
|
+
contentOffset: number;
|
|
103
|
+
/** Why this row exists. */
|
|
104
|
+
rule: string;
|
|
105
|
+
}
|
|
106
|
+
/** `adw_toolbar_view_size_allocate` (adw-toolbar-view.c:357-406). *
|
|
107
|
+
* CORE-ONLY: both renderers let the BROWSER and NativeScript lay the bars out rather than allocating by hand, so there is no allocation of theirs to compare — the rule they DO apply is TOOLBAR_VIEW_CLASS_VECTORS, which both drive. This reason used to live in the two `adw-toolbar-view.ts` files and nowhere a reader of this table would look
|
|
108
|
+
*/
|
|
109
|
+
export declare const TOOLBAR_VIEW_ALLOCATE_VECTORS: ReadonlyArray<ToolbarViewAllocateVector>;
|
|
110
|
+
/** One `toolbarViewMeasure` expectation. */
|
|
111
|
+
export interface ToolbarViewMeasureVector {
|
|
112
|
+
/** The measured sizes going in. */
|
|
113
|
+
input: ToolbarViewMeasureInput;
|
|
114
|
+
/** The view's minimum along the measured axis. */
|
|
115
|
+
minimum: number;
|
|
116
|
+
/** The view's natural along the measured axis. */
|
|
117
|
+
natural: number;
|
|
118
|
+
/** Why this row exists. */
|
|
119
|
+
rule: string;
|
|
120
|
+
}
|
|
121
|
+
/** `adw_toolbar_view_measure` (adw-toolbar-view.c:266-354). *
|
|
122
|
+
* CORE-ONLY: same as TOOLBAR_VIEW_ALLOCATE_VECTORS — neither renderer measures the bars itself
|
|
123
|
+
*/
|
|
124
|
+
export declare const TOOLBAR_VIEW_MEASURE_VECTORS: ReadonlyArray<ToolbarViewMeasureVector>;
|
|
125
|
+
/** One `toolbarViewContentForSize` expectation. */
|
|
126
|
+
export interface ToolbarViewContentForSizeVector {
|
|
127
|
+
/** The `for_size` the view was measured at. */
|
|
128
|
+
forSize: number;
|
|
129
|
+
/** The bar heights and extend flags. */
|
|
130
|
+
input: ToolbarViewContentForSizeInput;
|
|
131
|
+
/** `for_size` for the content's minimum. */
|
|
132
|
+
forSizeMin: number;
|
|
133
|
+
/** `for_size` for the content's natural. */
|
|
134
|
+
forSizeNat: number;
|
|
135
|
+
/** Why this row exists. */
|
|
136
|
+
rule: string;
|
|
137
|
+
}
|
|
138
|
+
/** `adw_toolbar_view_measure`'s height-for-width branch (adw-toolbar-view.c:292-316). *
|
|
139
|
+
* CORE-ONLY: same as TOOLBAR_VIEW_ALLOCATE_VECTORS — neither renderer measures the bars itself
|
|
140
|
+
*/
|
|
141
|
+
export declare const TOOLBAR_VIEW_CONTENT_FOR_SIZE_VECTORS: ReadonlyArray<ToolbarViewContentForSizeVector>;
|
|
142
|
+
/** One `toolbarViewClasses` expectation. */
|
|
143
|
+
export interface ToolbarViewClassVector {
|
|
144
|
+
/** The styles, extend flags and ALLOCATED bar heights. */
|
|
145
|
+
input: ToolbarViewClassInput;
|
|
146
|
+
/** Classes on the view node. */
|
|
147
|
+
view: readonly string[];
|
|
148
|
+
/** Classes on the top-bar box. */
|
|
149
|
+
topBar: readonly string[];
|
|
150
|
+
/** Classes on the bottom-bar box. */
|
|
151
|
+
bottomBar: readonly string[];
|
|
152
|
+
/** Why this row exists. */
|
|
153
|
+
rule: string;
|
|
154
|
+
}
|
|
155
|
+
/** `update_undershoots` (adw-toolbar-view.c:215-232) + the style setters (:1011-1024, :1097-1110). */
|
|
156
|
+
export declare const TOOLBAR_VIEW_CLASS_VECTORS: ReadonlyArray<ToolbarViewClassVector>;
|
|
157
|
+
/** One `spinnerGeometry` expectation. */
|
|
158
|
+
export interface SpinnerGeometryVector {
|
|
159
|
+
/** Allocated box width. */
|
|
160
|
+
width: number;
|
|
161
|
+
/** Allocated box height. */
|
|
162
|
+
height: number;
|
|
163
|
+
/** `MIN (floorf (MIN (w, h) / 2), MAX_RADIUS)`. */
|
|
164
|
+
radius: number;
|
|
165
|
+
/** `2 * radius`. */
|
|
166
|
+
diameter: number;
|
|
167
|
+
/** `diameter / 8`. */
|
|
168
|
+
lineWidth: number;
|
|
169
|
+
/** `roundf (width / 2)`. */
|
|
170
|
+
centerX: number;
|
|
171
|
+
/** `roundf (height / 2)`. */
|
|
172
|
+
centerY: number;
|
|
173
|
+
/**
|
|
174
|
+
* What the browser element drew before this landed — `max(2, round(size / 12))`
|
|
175
|
+
* — or `null` for a non-square box, which that element had no notion of.
|
|
176
|
+
*/
|
|
177
|
+
legacyWebLineWidth: number | null;
|
|
178
|
+
/** Why this row exists. */
|
|
179
|
+
rule: string;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* `adw_spinner_paintable_snapshot_with_weight` (adw-spinner-paintable.c:342-352)
|
|
183
|
+
* + `calculate_line_width` (:314-321) at the default weight 400.
|
|
184
|
+
*
|
|
185
|
+
* `legacyWebLineWidth` stays in the table on purpose: it is the formula the
|
|
186
|
+
* browser element shipped, and it is wrong at every size above 16 — 2px where
|
|
187
|
+
* Adwaita strokes 3px at 24, 4px against 6px at 48, 5px against 8px at 64.
|
|
188
|
+
*/
|
|
189
|
+
export declare const SPINNER_GEOMETRY_VECTORS: ReadonlyArray<SpinnerGeometryVector>;
|
|
190
|
+
/** One `resolveSpinnerSize` expectation. */
|
|
191
|
+
export interface SpinnerSizeVector {
|
|
192
|
+
/** The raw attribute value or property assignment. */
|
|
193
|
+
value: number | string | null | undefined;
|
|
194
|
+
/** The box the spinner is given. */
|
|
195
|
+
size: number;
|
|
196
|
+
/** Why this row exists. */
|
|
197
|
+
rule: string;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* `adw_spinner_measure` (adw-spinner.c:70-84) — minimum AND natural are both
|
|
201
|
+
* `MIN_SIZE`, and GTK never allocates below a widget's minimum.
|
|
202
|
+
*
|
|
203
|
+
* The rows without a usable value all land on 16, which is the measured natural
|
|
204
|
+
* size — NOT the 24 the browser element invented nor the 32 the NativeScript
|
|
205
|
+
* widget invented.
|
|
206
|
+
*/
|
|
207
|
+
export declare const SPINNER_SIZE_VECTORS: ReadonlyArray<SpinnerSizeVector>;
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import type { AdwDataGridColumn, AdwDataGridRowVariant, DataGridTrack } from '../data-grid.js';
|
|
2
|
+
/** One track-derivation expectation. */
|
|
3
|
+
export interface DataGridTrackVector {
|
|
4
|
+
/** What the row is about. */
|
|
5
|
+
name: string;
|
|
6
|
+
/** The column descriptors handed to `dataGridTracks`. */
|
|
7
|
+
columns: ReadonlyArray<AdwDataGridColumn>;
|
|
8
|
+
/** The renderer-neutral tracks derived from them. */
|
|
9
|
+
tracks: ReadonlyArray<DataGridTrack>;
|
|
10
|
+
/** The browser mapping — a `grid-template-columns` value. */
|
|
11
|
+
template: string;
|
|
12
|
+
/** Why this row exists. */
|
|
13
|
+
rule: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* `dataGridTracks` + `dataGridTrackTemplate`.
|
|
17
|
+
*
|
|
18
|
+
* The rule that needs the most rows is the implicit one: with NO `width` and NO
|
|
19
|
+
* `flex` anywhere, the FIRST column absorbs the slack and the rest size to
|
|
20
|
+
* content. It is global, so a single declared size anywhere in the list turns it
|
|
21
|
+
* off for every column — the pair of two-column rows below is the whole
|
|
22
|
+
* difference between "label column stretches, figures hug the right edge" and
|
|
23
|
+
* "every column hugs its content".
|
|
24
|
+
*/
|
|
25
|
+
export declare const DATA_GRID_TRACK_VECTORS: ReadonlyArray<DataGridTrackVector>;
|
|
26
|
+
/** One cell-class expectation. */
|
|
27
|
+
export interface DataGridColumnClassVector {
|
|
28
|
+
/** What the row is about. */
|
|
29
|
+
name: string;
|
|
30
|
+
/** The column descriptor. */
|
|
31
|
+
column: AdwDataGridColumn;
|
|
32
|
+
/** The effective alignment. */
|
|
33
|
+
align: string;
|
|
34
|
+
/** The full class list, in order. */
|
|
35
|
+
classes: ReadonlyArray<string>;
|
|
36
|
+
/** Why this row exists. */
|
|
37
|
+
rule: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* `dataGridColumnAlign` + `dataGridColumnClasses`.
|
|
41
|
+
*
|
|
42
|
+
* `numeric` and `mono` are libadwaita's own label classes
|
|
43
|
+
* (`_labels.scss:81-88`): `.numeric` is `font-variant-numeric: tabular-nums`,
|
|
44
|
+
* `.monospace` additionally the monospace family. They are opt-ins that stack,
|
|
45
|
+
* and `numeric` additionally moves the default alignment to the right edge —
|
|
46
|
+
* which is the entire difference between this widget and a boxed list.
|
|
47
|
+
*
|
|
48
|
+
* `align` is deliberately unvalidated (the last row): a value outside the union
|
|
49
|
+
* produces a class no stylesheet claims, and the cell keeps the base rule's
|
|
50
|
+
* alignment. The variant table below IS validated, because a bogus variant would
|
|
51
|
+
* pick an emphasis rather than merely fail to move text.
|
|
52
|
+
*/
|
|
53
|
+
export declare const DATA_GRID_COLUMN_CLASS_VECTORS: ReadonlyArray<DataGridColumnClassVector>;
|
|
54
|
+
/** One variant-normalisation expectation. */
|
|
55
|
+
export interface DataGridVariantVector {
|
|
56
|
+
/** The raw `variant` value off the row object. */
|
|
57
|
+
input: unknown;
|
|
58
|
+
/** What it normalises to. */
|
|
59
|
+
variant: AdwDataGridRowVariant;
|
|
60
|
+
/** Why this row exists. */
|
|
61
|
+
rule: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* `normalizeDataGridVariant`.
|
|
65
|
+
*
|
|
66
|
+
* Unlike the alignment, this one IS clamped: the variant picks a row's EMPHASIS
|
|
67
|
+
* — a spanning bold section title, a hairline rule above a subtotal, a double
|
|
68
|
+
* rule above the total — so an unrecognised value must fall back to the plain
|
|
69
|
+
* data row rather than to no rule at all.
|
|
70
|
+
*/
|
|
71
|
+
export declare const DATA_GRID_VARIANT_VECTORS: ReadonlyArray<DataGridVariantVector>;
|
|
72
|
+
/** One cell-text expectation. */
|
|
73
|
+
export interface DataGridCellTextVector {
|
|
74
|
+
/** The raw value under the column's key. */
|
|
75
|
+
input: string | number | boolean | undefined | null;
|
|
76
|
+
/** What the cell paints. */
|
|
77
|
+
text: string;
|
|
78
|
+
/** Why this row exists. */
|
|
79
|
+
rule: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* `dataGridCellText`.
|
|
83
|
+
*
|
|
84
|
+
* The grid formats NOTHING — a cell value is a pre-formatted string, because
|
|
85
|
+
* only the app knows the locale, the currency and the rounding. So the rule is
|
|
86
|
+
* only about the two empties, and the rows that matter are `0` and `false`: a
|
|
87
|
+
* truthiness test would blank both, and a blanked `0` in a statement column is a
|
|
88
|
+
* missing figure, not a zero one.
|
|
89
|
+
*/
|
|
90
|
+
export declare const DATA_GRID_CELL_TEXT_VECTORS: ReadonlyArray<DataGridCellTextVector>;
|
|
91
|
+
/** One activation expectation. */
|
|
92
|
+
export interface DataGridInteractiveVector {
|
|
93
|
+
/** The row's normalised variant. */
|
|
94
|
+
variant: AdwDataGridRowVariant;
|
|
95
|
+
/** The row's own `interactive` value, as it arrives (JSON can hold anything). */
|
|
96
|
+
rowFlag: unknown;
|
|
97
|
+
/** The grid-level `interactive` flag. */
|
|
98
|
+
gridInteractive: boolean;
|
|
99
|
+
/** Whether the row activates. */
|
|
100
|
+
interactive: boolean;
|
|
101
|
+
/** Why this row exists. */
|
|
102
|
+
rule: string;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* `dataGridRowInteractive`.
|
|
106
|
+
*
|
|
107
|
+
* Two independent rules, and both have a failure mode worth a row. Only a
|
|
108
|
+
* `normal` row can ever activate: a section header, a subtotal and a total are
|
|
109
|
+
* structure, and offering a detail view for a computed line leads nowhere. And
|
|
110
|
+
* the per-row flag overrides the grid-level one in BOTH directions, which is the
|
|
111
|
+
* part a single `||` or `&&` gets wrong.
|
|
112
|
+
*/
|
|
113
|
+
export declare const DATA_GRID_INTERACTIVE_VECTORS: ReadonlyArray<DataGridInteractiveVector>;
|
|
114
|
+
/** One column-normalisation expectation. */
|
|
115
|
+
export interface DataGridColumnNormalizeVector {
|
|
116
|
+
/** What the row is about. */
|
|
117
|
+
name: string;
|
|
118
|
+
/** The raw value — a parsed JSON attribute, so genuinely anything. */
|
|
119
|
+
input: unknown;
|
|
120
|
+
/** The normalised descriptors. */
|
|
121
|
+
columns: ReadonlyArray<AdwDataGridColumn>;
|
|
122
|
+
/** Why this row exists. */
|
|
123
|
+
rule: string;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* `normalizeDataGridColumns`.
|
|
127
|
+
*
|
|
128
|
+
* The input is a parsed JSON attribute, so every field has to survive a value of
|
|
129
|
+
* the wrong type. Two policies run side by side and the rows say which is which:
|
|
130
|
+
* an entry WITHOUT a `key` is dropped (there is nothing to read from a row), and
|
|
131
|
+
* a field of the wrong type is coerced (`key`, `label`, `width`) or discarded
|
|
132
|
+
* (`flex`, `monospace`, `numeric`) rather than taking the whole entry down.
|
|
133
|
+
*
|
|
134
|
+
* CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (DATA_GRID_TRACK_VECTORS)
|
|
135
|
+
*/
|
|
136
|
+
export declare const DATA_GRID_COLUMN_NORMALIZE_VECTORS: ReadonlyArray<DataGridColumnNormalizeVector>;
|