@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.
Files changed (124) hide show
  1. package/lib/esm/about-dialog.js +3 -0
  2. package/lib/esm/action-row.js +1 -0
  3. package/lib/esm/avatar.js +1 -0
  4. package/lib/esm/banner.js +1 -0
  5. package/lib/esm/button-content.js +1 -0
  6. package/lib/esm/carousel.js +1 -0
  7. package/lib/esm/checks.js +1 -0
  8. package/lib/esm/chrome.js +1 -0
  9. package/lib/esm/conformance/about-dialog.js +6 -0
  10. package/lib/esm/conformance/action-row.js +1 -0
  11. package/lib/esm/conformance/avatar.js +1 -0
  12. package/lib/esm/conformance/banner.js +1 -0
  13. package/lib/esm/conformance/button-content.js +1 -0
  14. package/lib/esm/conformance/carousel.js +1 -0
  15. package/lib/esm/conformance/checks.js +1 -0
  16. package/lib/esm/conformance/chrome.js +1 -0
  17. package/lib/esm/conformance/data-grid.js +1 -0
  18. package/lib/esm/conformance/dialog.js +1 -0
  19. package/lib/esm/conformance/entry-row.js +1 -0
  20. package/lib/esm/conformance/index.js +1 -0
  21. package/lib/esm/conformance/navigation-view.js +1 -0
  22. package/lib/esm/conformance/popover.js +1 -0
  23. package/lib/esm/conformance/preferences.js +1 -0
  24. package/lib/esm/conformance/rows.js +1 -0
  25. package/lib/esm/conformance/sidebar.js +1 -0
  26. package/lib/esm/conformance/spinner.js +1 -0
  27. package/lib/esm/conformance/split-button.js +1 -0
  28. package/lib/esm/conformance/split-view.js +1 -0
  29. package/lib/esm/conformance/tab-view.js +1 -0
  30. package/lib/esm/conformance/view-stack.js +1 -0
  31. package/lib/esm/conformance/view-switcher.js +1 -0
  32. package/lib/esm/conformance/wrap-box.js +1 -0
  33. package/lib/esm/data-grid.js +1 -0
  34. package/lib/esm/dialog.js +1 -1
  35. package/lib/esm/easing.js +1 -0
  36. package/lib/esm/entry-row.js +1 -0
  37. package/lib/esm/glib.js +1 -0
  38. package/lib/esm/index.js +1 -1
  39. package/lib/esm/length-unit.js +1 -0
  40. package/lib/esm/navigation-view.js +1 -0
  41. package/lib/esm/popover.js +1 -0
  42. package/lib/esm/preferences.js +1 -0
  43. package/lib/esm/rows.js +1 -1
  44. package/lib/esm/sidebar.js +1 -0
  45. package/lib/esm/spinner.js +1 -0
  46. package/lib/esm/split-button.js +1 -0
  47. package/lib/esm/split-view.js +1 -0
  48. package/lib/esm/tab-view.js +1 -0
  49. package/lib/esm/view-stack.js +1 -0
  50. package/lib/esm/view-switcher.js +1 -0
  51. package/lib/esm/wrap-box.js +1 -0
  52. package/lib/types/about-dialog.d.ts +391 -0
  53. package/lib/types/about-dialog.spec.d.ts +2 -0
  54. package/lib/types/action-row.d.ts +270 -0
  55. package/lib/types/action-row.spec.d.ts +2 -0
  56. package/lib/types/avatar.d.ts +112 -0
  57. package/lib/types/avatar.spec.d.ts +2 -0
  58. package/lib/types/banner.d.ts +104 -0
  59. package/lib/types/banner.spec.d.ts +2 -0
  60. package/lib/types/button-content.d.ts +141 -0
  61. package/lib/types/button-content.spec.d.ts +2 -0
  62. package/lib/types/carousel.d.ts +535 -0
  63. package/lib/types/carousel.spec.d.ts +2 -0
  64. package/lib/types/checks.d.ts +63 -0
  65. package/lib/types/checks.spec.d.ts +2 -0
  66. package/lib/types/chrome.d.ts +355 -0
  67. package/lib/types/chrome.spec.d.ts +2 -0
  68. package/lib/types/conformance/about-dialog.d.ts +314 -0
  69. package/lib/types/conformance/action-row.d.ts +186 -0
  70. package/lib/types/conformance/avatar.d.ts +61 -0
  71. package/lib/types/conformance/banner.d.ts +91 -0
  72. package/lib/types/conformance/button-content.d.ts +110 -0
  73. package/lib/types/conformance/carousel.d.ts +298 -0
  74. package/lib/types/conformance/checks.d.ts +29 -0
  75. package/lib/types/conformance/chrome.d.ts +207 -0
  76. package/lib/types/conformance/data-grid.d.ts +136 -0
  77. package/lib/types/conformance/dialog.d.ts +97 -0
  78. package/lib/types/conformance/entry-row.d.ts +187 -0
  79. package/lib/types/conformance/index.d.ts +46 -0
  80. package/lib/types/conformance/navigation-view.d.ts +235 -0
  81. package/lib/types/conformance/popover.d.ts +58 -0
  82. package/lib/types/conformance/preferences.d.ts +184 -0
  83. package/lib/types/conformance/rows.d.ts +74 -0
  84. package/lib/types/conformance/sidebar.d.ts +182 -0
  85. package/lib/types/conformance/spinner.d.ts +66 -0
  86. package/lib/types/conformance/split-button.d.ts +193 -0
  87. package/lib/types/conformance/split-view.d.ts +301 -0
  88. package/lib/types/conformance/tab-view.d.ts +449 -0
  89. package/lib/types/conformance/view-stack.d.ts +121 -0
  90. package/lib/types/conformance/view-switcher.d.ts +443 -0
  91. package/lib/types/conformance/wrap-box.d.ts +185 -0
  92. package/lib/types/data-grid.d.ts +140 -0
  93. package/lib/types/data-grid.spec.d.ts +2 -0
  94. package/lib/types/dialog.d.ts +144 -0
  95. package/lib/types/easing.d.ts +21 -0
  96. package/lib/types/entry-row.d.ts +308 -0
  97. package/lib/types/entry-row.spec.d.ts +2 -0
  98. package/lib/types/glib.d.ts +49 -0
  99. package/lib/types/index.d.ts +50 -4
  100. package/lib/types/length-unit.d.ts +24 -0
  101. package/lib/types/navigation-view.d.ts +343 -0
  102. package/lib/types/navigation-view.spec.d.ts +2 -0
  103. package/lib/types/popover.d.ts +155 -0
  104. package/lib/types/popover.spec.d.ts +2 -0
  105. package/lib/types/preferences.d.ts +349 -0
  106. package/lib/types/preferences.spec.d.ts +2 -0
  107. package/lib/types/rows.d.ts +96 -8
  108. package/lib/types/sidebar.d.ts +308 -0
  109. package/lib/types/sidebar.spec.d.ts +2 -0
  110. package/lib/types/spinner.d.ts +117 -0
  111. package/lib/types/spinner.spec.d.ts +2 -0
  112. package/lib/types/split-button.d.ts +316 -0
  113. package/lib/types/split-button.spec.d.ts +2 -0
  114. package/lib/types/split-view.d.ts +703 -0
  115. package/lib/types/split-view.spec.d.ts +2 -0
  116. package/lib/types/tab-view.d.ts +616 -0
  117. package/lib/types/tab-view.spec.d.ts +2 -0
  118. package/lib/types/view-stack.d.ts +278 -0
  119. package/lib/types/view-stack.spec.d.ts +2 -0
  120. package/lib/types/view-switcher.d.ts +524 -0
  121. package/lib/types/view-switcher.spec.d.ts +2 -0
  122. package/lib/types/wrap-box.d.ts +200 -0
  123. package/lib/types/wrap-box.spec.d.ts +2 -0
  124. package/package.json +8 -4
@@ -0,0 +1,193 @@
1
+ import type { AdwArrowIcon, AdwMenuEntry, SplitButtonContentMode, SplitButtonDirection, SplitButtonHalfState, SplitButtonProperty, SplitButtonStyleClass } from '../split-button.js';
2
+ /** One mutation in a {@link SplitButtonContentVector} sequence, with its outcome. */
3
+ export interface SplitButtonContentStep {
4
+ /** Which slot is being set. */
5
+ op: 'label' | 'icon-name' | 'child';
6
+ /**
7
+ * The value passed. For `label`/`icon-name` the string itself; for `child` a
8
+ * KEY naming one of three distinct child objects the driver supplies, or
9
+ * `null` to clear the content.
10
+ */
11
+ value: string | null;
12
+ /** Whether the setter reports a change (and therefore notifies at all). */
13
+ changed: boolean;
14
+ /** The `notify::*` properties C emits for this one call, in emission order. */
15
+ notified: readonly SplitButtonProperty[];
16
+ /** The content mode after the step. */
17
+ mode: SplitButtonContentMode;
18
+ /** `get_label()` after the step. */
19
+ label: string | null;
20
+ /** `get_icon_name()` after the step. */
21
+ iconName: string | null;
22
+ /** The root style classes after the step. */
23
+ styleClasses: readonly SplitButtonStyleClass[];
24
+ /** Why this step exists — the rule or edge case it pins down. */
25
+ rule: string;
26
+ }
27
+ /** A scripted sequence of content mutations applied to a FRESH state. */
28
+ export interface SplitButtonContentVector {
29
+ /** Which upstream test (or derivation) this sequence transcribes. */
30
+ name: string;
31
+ /** The mutations, in order. */
32
+ steps: readonly SplitButtonContentStep[];
33
+ }
34
+ /**
35
+ * The content machine (adw-split-button.c:661-682, :749-771, :799-824).
36
+ *
37
+ * Two things in here are easy to get wrong and are asserted explicitly. First,
38
+ * the `notified` ORDER: C freezes, notifies the slots it is about to CLEAR, sets
39
+ * the new one, notifies it, then thaws — so one `set_label()` can emit three
40
+ * notifications. Second, `child` is notified far more often than a reader
41
+ * expects, because `adw_split_button_get_child()` returns GtkButton's INTERNAL
42
+ * label/image widget in label/icon mode (the upstream suite states this at
43
+ * tests/test-split-button.c:155-157) and the C guard tests that pointer, not
44
+ * whether the app ever set a child.
45
+ *
46
+ * A driver that cannot express a step — a DOM element has no `child` slot —
47
+ * asserts the sequence up to that step and stops; every sequence is written so
48
+ * the interesting rows come first.
49
+ */
50
+ export declare const SPLIT_BUTTON_CONTENT_VECTORS: ReadonlyArray<SplitButtonContentVector>;
51
+ /** One `update_style_classes` expectation. */
52
+ export interface SplitButtonStyleClassVector {
53
+ /** `gtk_button_get_label()`. */
54
+ label: string | null;
55
+ /** `gtk_button_get_icon_name()`. */
56
+ iconName: string | null;
57
+ /** The classes on the `splitbutton` node. */
58
+ classes: readonly SplitButtonStyleClass[];
59
+ /** Why this row exists. */
60
+ rule: string;
61
+ }
62
+ /**
63
+ * `update_style_classes` (adw-split-button.c:145-165). Both branches read the
64
+ * FIRST CHARACTER, which is why `''` and `' '` land on opposite sides.
65
+ */
66
+ export declare const SPLIT_BUTTON_STYLE_CLASS_VECTORS: ReadonlyArray<SplitButtonStyleClassVector>;
67
+ /** One `set_dropdown_tooltip` expectation. */
68
+ export interface SplitButtonTooltipVector {
69
+ /** The value passed to `adw_split_button_set_dropdown_tooltip`. */
70
+ tooltip: string;
71
+ /** What the dropdown actually shows. */
72
+ text: string;
73
+ /** Whether it is Pango MARKUP (`set_tooltip_markup`) rather than plain text. */
74
+ markup: boolean;
75
+ /** Why this row exists. */
76
+ rule: string;
77
+ }
78
+ /**
79
+ * The tooltip fallback (adw-split-button.c:1044-1051, initial value :531-532).
80
+ *
81
+ * `has_dropdown_tooltip = tooltip && *tooltip`. The empty branch is the one both
82
+ * renderers got wrong: the browser port hardcoded `Menu` and, because `''` is not
83
+ * nullish, `dropdown-tooltip=""` left the button with NO accessible name at all;
84
+ * the NativeScript port had neither tooltip nor accessible name.
85
+ */
86
+ export declare const SPLIT_BUTTON_TOOLTIP_VECTORS: ReadonlyArray<SplitButtonTooltipVector>;
87
+ /** One direction expectation. */
88
+ export interface SplitButtonDirectionVector {
89
+ /** The `GtkArrowType`. */
90
+ direction: SplitButtonDirection;
91
+ /** The symbolic icon the arrow node draws. */
92
+ arrowIcon: AdwArrowIcon;
93
+ /** Where the popup is placed. */
94
+ popupDirection: SplitButtonDirection;
95
+ /** Why this row exists — naming the selector that WINS, not the one that loses. */
96
+ rule: string;
97
+ }
98
+ /**
99
+ * Direction → glyph for the dropdown half of a SPLIT BUTTON, and → popup
100
+ * placement (adw-split-button.c:415).
101
+ *
102
+ * `none` is the row that matters, and it is the row that was WRONG here until the
103
+ * override was found: the four shared directions come from `menubutton arrow`
104
+ * (_buttons.scss:457-468), but `.none` is re-declared inside `splitbutton { … }`
105
+ * at :621-623, and that selector wins. See the header of `./index.ts` — "cite the
106
+ * winning selector" — for what this table cost.
107
+ */
108
+ export declare const SPLIT_BUTTON_DIRECTION_VECTORS: ReadonlyArray<SplitButtonDirectionVector>;
109
+ /**
110
+ * The same axis for a PLAIN `menubutton`, where nothing overrides `.none`.
111
+ *
112
+ * This table is not decoration: it is what makes the split button's row above a
113
+ * demonstrated OVERRIDE rather than an assertion. Holding both means a reader can
114
+ * see the two values and the two selectors side by side, and a renderer that
115
+ * reaches for the wrong one fails a test that names which widget it is drawing.
116
+ *
117
+ * CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (SPLIT_BUTTON_DIRECTION_VECTORS)
118
+ */
119
+ export declare const MENU_BUTTON_DIRECTION_VECTORS: ReadonlyArray<SplitButtonDirectionVector>;
120
+ /** One `update_state` expectation. */
121
+ export interface SplitButtonRootStateVector {
122
+ /** State flags of the action half. */
123
+ action: SplitButtonHalfState;
124
+ /** State flags of the dropdown (arrow) half. */
125
+ dropdown: SplitButtonHalfState;
126
+ /** Whether the root reads ACTIVE. */
127
+ active: boolean;
128
+ /** Whether the root reads CHECKED. */
129
+ checked: boolean;
130
+ /** Why this row exists. */
131
+ rule: string;
132
+ }
133
+ /**
134
+ * `update_state` (adw-split-button.c:118-143) — an OR-fold of both halves onto
135
+ * the root, which is what `splitbutton.flat:active/:checked` styles
136
+ * (_buttons.scss:542-549).
137
+ *
138
+ * CORE-ONLY: GAP — two of its three axes are hardcoded in the renderer, so there is nothing to vary. Tracked in #1072
139
+ */
140
+ export declare const SPLIT_BUTTON_ROOT_STATE_VECTORS: ReadonlyArray<SplitButtonRootStateVector>;
141
+ /** One `parseMenuEntries` expectation. */
142
+ export interface SplitButtonMenuParseVector {
143
+ /** The raw `menu` attribute (or `null` when absent). */
144
+ json: string | null;
145
+ /** The entries it yields. */
146
+ entries: readonly AdwMenuEntry[];
147
+ /** Why this row exists. */
148
+ rule: string;
149
+ }
150
+ /**
151
+ * Menu-attribute parsing — the byte-identical helper both browser elements
152
+ * carried. Total: nothing an author can type may prevent the widget upgrading.
153
+ */
154
+ export declare const SPLIT_BUTTON_MENU_PARSE_VECTORS: ReadonlyArray<SplitButtonMenuParseVector>;
155
+ /** One activate-by-position expectation. */
156
+ export interface SplitButtonMenuActivationVector {
157
+ /** The menu model. */
158
+ entries: readonly AdwMenuEntry[];
159
+ /** The position activated. */
160
+ index: number;
161
+ /** The entry that must be dispatched, or `null`. */
162
+ activated: AdwMenuEntry | null;
163
+ /** Why this row exists. */
164
+ rule: string;
165
+ }
166
+ /**
167
+ * Activation is BY POSITION, never by label lookup: a `GMenuModel` addresses its
168
+ * items by index and each carries its own detailed action (adw-split-button.c:385-388).
169
+ */
170
+ export declare const SPLIT_BUTTON_MENU_ACTIVATION_VECTORS: ReadonlyArray<SplitButtonMenuActivationVector>;
171
+ /**
172
+ * One dropdown-sensitivity expectation. A driver installs the popover FIRST (when
173
+ * {@link SplitButtonDropdownVector.popover} is set) and the menu model second, so
174
+ * a row with both also exercises the dissociation.
175
+ */
176
+ export interface SplitButtonDropdownVector {
177
+ /** The menu model to install (empty = none). */
178
+ entries: readonly AdwMenuEntry[];
179
+ /** Whether a popover is installed before it. */
180
+ popover: boolean;
181
+ /** Whether the dropdown half is live. */
182
+ enabled: boolean;
183
+ /** Whether the menu can be popped up at all. */
184
+ canOpen: boolean;
185
+ /** Why this row exists. */
186
+ rule: string;
187
+ }
188
+ /**
189
+ * "If the menu model is `NULL`, the dropdown is disabled" (adw-split-button.c:376-378),
190
+ * and the same for the popover (:394-396). An empty entry list is the renderers'
191
+ * only spelling of "no menu", so it collapses onto the `NULL` case.
192
+ */
193
+ export declare const SPLIT_BUTTON_DROPDOWN_VECTORS: ReadonlyArray<SplitButtonDropdownVector>;
@@ -0,0 +1,301 @@
1
+ import type { AdwLengthUnit } from '../length-unit.js';
2
+ import type { AdwPackType, AdwTextDirection, NavigationActionResult, NavigationStackPlan, OverlaySplitViewLayout, SidebarWidthSpec, SplitViewPaneRect } from '../split-view.js';
3
+ /** One `adwLengthToPx` expectation. */
4
+ export interface AdwLengthUnitVector {
5
+ unit: AdwLengthUnit;
6
+ value: number;
7
+ /** The `gtk-xft-dpi` in play. */
8
+ dpi: number;
9
+ /** The resulting pixel length. */
10
+ px: number;
11
+ /** Why this row exists. */
12
+ rule: string;
13
+ }
14
+ /** `adw_length_unit_to_px` (adw-length-unit.c:72-81). *
15
+ * CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (SIDEBAR_BOUNDS_VECTORS, which both renderers drive)
16
+ */
17
+ export declare const ADW_LENGTH_UNIT_VECTORS: ReadonlyArray<AdwLengthUnitVector>;
18
+ /** One `glibClamp` expectation. */
19
+ export interface GlibClampVector {
20
+ x: number;
21
+ low: number;
22
+ high: number;
23
+ /** What GLib's CLAMP returns. */
24
+ clamped: number;
25
+ rule: string;
26
+ }
27
+ /**
28
+ * GLib's `CLAMP` (gmacros.h) — HIGH is tested first.
29
+ *
30
+ * The inverted rows are the point: `Math.min(high, Math.max(low, x))` returns
31
+ * `high` there, and `allocate_uncollapsed` reaches inverted bounds whenever the
32
+ * content pane's own minimum leaves less room than `min-sidebar-width`.
33
+ *
34
+ * CORE-ONLY: GLib’s CLAMP itself — a primitive with no widget surface; every widget that reaches it does so through a table that IS driven
35
+ */
36
+ export declare const GLIB_CLAMP_VECTORS: ReadonlyArray<GlibClampVector>;
37
+ /** One `resolveSidebarBounds` expectation. */
38
+ export interface SidebarBoundsVector {
39
+ spec: SidebarWidthSpec;
40
+ /** The sidebar child's own minimum width. */
41
+ sidebarChildMin: number;
42
+ /** `true` for the allocate paths (which `ceil()`), `false` for the measure paths. */
43
+ ceil: boolean;
44
+ min: number;
45
+ max: number;
46
+ rule: string;
47
+ }
48
+ /**
49
+ * The `MAX (…, adw_length_unit_to_px (…))` pair both widgets open with —
50
+ * allocate flavour at adw-navigation-split-view.c:292-300 /
51
+ * adw-overlay-split-view.c:452-460, measure flavour at :251-256 / :545-550.
52
+ */
53
+ export declare const SIDEBAR_BOUNDS_VECTORS: ReadonlyArray<SidebarBoundsVector>;
54
+ /** One allocated-sidebar-width expectation. */
55
+ export interface SidebarWidthVector {
56
+ /** Which widget's rule applies — they answer the same input differently. */
57
+ widget: 'navigation' | 'overlay';
58
+ spec: SidebarWidthSpec;
59
+ totalWidth: number;
60
+ /** The content pane's own minimum width. */
61
+ contentMin: number;
62
+ /** The sidebar child's own minimum width. */
63
+ sidebarChildMin: number;
64
+ /** Overlay only: collapsed ignores the fraction and clamps the VIEW width. */
65
+ collapsed: boolean;
66
+ /** The allocated sidebar width. */
67
+ width: number;
68
+ rule: string;
69
+ }
70
+ /**
71
+ * `allocate_uncollapsed` (adw-navigation-split-view.c:292-304) versus
72
+ * `get_sidebar_width` + `allocate_uncollapsed` (adw-overlay-split-view.c:441-466, :585).
73
+ *
74
+ * The 300px pair is the reason this table keys on `widget`: identical input, 180 in
75
+ * the navigation split view and 100 in the overlay, because one caps the BOUND and
76
+ * the other caps the RESULT.
77
+ */
78
+ export declare const SIDEBAR_WIDTH_VECTORS: ReadonlyArray<SidebarWidthVector>;
79
+ /** One `resolveNaturalSidebarWidth` expectation. */
80
+ export interface NaturalSidebarWidthVector {
81
+ contentNatural: number;
82
+ min: number;
83
+ max: number;
84
+ fraction: number;
85
+ natural: number;
86
+ rule: string;
87
+ }
88
+ /**
89
+ * `measure_uncollapsed`'s sidebar estimate (adw-navigation-split-view.c:260-262,
90
+ * adw-overlay-split-view.c:554-556) — the sidebar's OWN natural width is ignored.
91
+ *
92
+ * CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (SIDEBAR_WIDTH_VECTORS)
93
+ */
94
+ export declare const NATURAL_SIDEBAR_WIDTH_VECTORS: ReadonlyArray<NaturalSidebarWidthVector>;
95
+ /** One `measureSplitViewHorizontal` expectation. */
96
+ export interface SplitViewMeasureVector {
97
+ min: number;
98
+ max: number;
99
+ sidebarNatural: number;
100
+ contentMin: number;
101
+ contentNatural: number;
102
+ showProgress: number;
103
+ minimum: number;
104
+ natural: number;
105
+ rule: string;
106
+ }
107
+ /**
108
+ * `measure_uncollapsed` (adw-overlay-split-view.c:558-563; the navigation variant at
109
+ * adw-navigation-split-view.c:264-267 is the same rule at progress 1).
110
+ *
111
+ * This is the container minimum neither renderer had — which is why in both of them
112
+ * the content pane shrinks to nothing instead of the window refusing to get narrower.
113
+ *
114
+ * CORE-ONLY: the container minimum lands as `min-width: min-content` on the content pane, which is CSS’s own spelling of the same rule — there is no computed number of ours to compare. Asserted in the renderer as "the pane is not crushable" instead
115
+ */
116
+ export declare const SPLIT_VIEW_MEASURE_VECTORS: ReadonlyArray<SplitViewMeasureVector>;
117
+ /** One `layoutNavigationSplitView` expectation. */
118
+ export interface NavigationLayoutVector {
119
+ totalWidth: number;
120
+ sidebarWidth: number;
121
+ sidebarPosition: AdwPackType;
122
+ direction: AdwTextDirection;
123
+ sidebar: SplitViewPaneRect;
124
+ content: SplitViewPaneRect;
125
+ rule: string;
126
+ }
127
+ /** `allocate_uncollapsed` (adw-navigation-split-view.c:306-316). */
128
+ export declare const NAVIGATION_SPLIT_VIEW_LAYOUT_VECTORS: ReadonlyArray<NavigationLayoutVector>;
129
+ /** One `layoutOverlaySplitView` expectation. */
130
+ export interface OverlayLayoutVector {
131
+ totalWidth: number;
132
+ sidebarWidth: number;
133
+ showProgress: number;
134
+ collapsed: boolean;
135
+ sidebarPosition: AdwPackType;
136
+ direction: AdwTextDirection;
137
+ /** The full expected allocation, including the shield/paint/shadow state. */
138
+ layout: OverlaySplitViewLayout;
139
+ rule: string;
140
+ }
141
+ /**
142
+ * `allocate_uncollapsed` (adw-overlay-split-view.c:572-610) and `allocate_collapsed`
143
+ * (:653-703), plus `update_shield` (:249-256) and the snapshot gate (:757).
144
+ *
145
+ * `shadowProgress` is inverted relative to the reveal — 1 means NO shadow
146
+ * (adw-shadow-helper.c:234-249).
147
+ */
148
+ export declare const OVERLAY_SPLIT_VIEW_LAYOUT_VECTORS: ReadonlyArray<OverlayLayoutVector>;
149
+ /** One `tagsConflict` expectation. */
150
+ export interface TagsConflictVector {
151
+ sidebarTag: string | null;
152
+ contentTag: string | null;
153
+ conflict: boolean;
154
+ rule: string;
155
+ }
156
+ /** `tags_equal` (adw-navigation-split-view.c:413-429). *
157
+ * CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (the tag guard, driven through NAVIGATION_ACTION_VECTORS and the refusal tests in both renderer suites)
158
+ */
159
+ export declare const TAGS_CONFLICT_VECTORS: ReadonlyArray<TagsConflictVector>;
160
+ /** One `resolveNavigationStack` expectation. */
161
+ export interface NavigationStackVector {
162
+ hasSidebar: boolean;
163
+ hasContent: boolean;
164
+ sidebarPosition: AdwPackType;
165
+ showContent: boolean;
166
+ /** Whether the animated (`set_show_content`) branch applies. */
167
+ changingPage: boolean;
168
+ plan: NavigationStackPlan;
169
+ rule: string;
170
+ }
171
+ /**
172
+ * `update_navigation_stack` (adw-navigation-split-view.c:342-405).
173
+ *
174
+ * The lone-child rows are the ones both renderers fail: their CSS / `visibility`
175
+ * tables key on `show-content` alone, so a collapsed split view holding only a
176
+ * sidebar renders nothing at all.
177
+ */
178
+ export declare const NAVIGATION_STACK_VECTORS: ReadonlyArray<NavigationStackVector>;
179
+ /** One `resolveNavigationAction` expectation. */
180
+ export interface NavigationActionVector {
181
+ action: 'push' | 'pop';
182
+ /** `push` only — the tag the action names. */
183
+ tag?: string;
184
+ sidebarTag?: string | null;
185
+ contentTag?: string | null;
186
+ /** `pop` only. */
187
+ hasSidebar?: boolean;
188
+ /** `pop` only. */
189
+ hasContent?: boolean;
190
+ showContent: boolean;
191
+ collapsed: boolean;
192
+ result: NavigationActionResult;
193
+ rule: string;
194
+ }
195
+ /**
196
+ * `navigation_push_cb` (adw-navigation-split-view.c:644-685) and `navigation_pop_cb`
197
+ * (:687-702) — documented as working even when NOT collapsed (:124-132).
198
+ */
199
+ export declare const NAVIGATION_ACTION_VECTORS: ReadonlyArray<NavigationActionVector>;
200
+ /** The observable state of an `OverlaySplitViewState`. */
201
+ export interface OverlaySplitViewSnapshot {
202
+ showSidebar: boolean;
203
+ collapsed: boolean;
204
+ showProgress: number;
205
+ shieldVisible: boolean;
206
+ sidebarFocusable: boolean;
207
+ contentFocusable: boolean;
208
+ }
209
+ /** One collapse-coupling expectation. */
210
+ export interface OverlayCollapseVector {
211
+ /** Constructor options. */
212
+ initial: {
213
+ collapsed?: boolean;
214
+ showSidebar?: boolean;
215
+ pinSidebar?: boolean;
216
+ };
217
+ /** State right after construction. */
218
+ before: OverlaySplitViewSnapshot;
219
+ /** The `collapsed` value to set. */
220
+ setCollapsed: boolean;
221
+ /** State after the change. */
222
+ after: OverlaySplitViewSnapshot;
223
+ /** Which `notify::*` properties fire, in order. */
224
+ notifications: ReadonlyArray<'show-sidebar' | 'collapsed'>;
225
+ rule: string;
226
+ }
227
+ /**
228
+ * `adw_overlay_split_view_init` (:1106-1116) + `set_collapsed` (:1439-1481) +
229
+ * the can-focus pair (:330-331).
230
+ *
231
+ * `if (!self->pin_sidebar) set_show_sidebar (self, !self->collapsed, FALSE, 0);` is
232
+ * the single rule BOTH storybooks re-implemented by hand because neither widget
233
+ * offered it. `show-sidebar` is notified before `collapsed` because GTK freezes
234
+ * notifications across the whole setter and thaws them in queue order.
235
+ */
236
+ export declare const OVERLAY_COLLAPSE_VECTORS: ReadonlyArray<OverlayCollapseVector>;
237
+ /** One `resolveSwipeSnapPoints` expectation. */
238
+ export interface SwipeSnapPointVector {
239
+ showProgress: number;
240
+ enableShowGesture: boolean;
241
+ enableHideGesture: boolean;
242
+ swipeActive: boolean;
243
+ snapPoints: number[];
244
+ rule: string;
245
+ }
246
+ /** `adw_overlay_split_view_get_snap_points` (adw-overlay-split-view.c:1214-1243). */
247
+ export declare const OVERLAY_SWIPE_SNAP_POINT_VECTORS: ReadonlyArray<SwipeSnapPointVector>;
248
+ /** One `resolveSwipeStart` expectation. */
249
+ export interface SwipeStartVector {
250
+ showProgress: number;
251
+ collapsed: boolean;
252
+ direction: 'forward' | 'back';
253
+ enableShowGesture: boolean;
254
+ enableHideGesture: boolean;
255
+ detected: boolean;
256
+ rule: string;
257
+ }
258
+ /** `prepare_cb` (adw-overlay-split-view.c:362-387). */
259
+ export declare const OVERLAY_SWIPE_START_VECTORS: ReadonlyArray<SwipeStartVector>;
260
+ /** One `resolveSwipeRelease` expectation. */
261
+ export interface SwipeReleaseVector {
262
+ to: number;
263
+ showSidebar: boolean;
264
+ /** `animate` = settle only; `set-show-sidebar` = a real property change. */
265
+ kind: 'animate' | 'set-show-sidebar';
266
+ /** The resulting `show-sidebar`, for the `set-show-sidebar` case. */
267
+ showSidebarAfter: boolean;
268
+ rule: string;
269
+ }
270
+ /** `end_swipe_cb` (adw-overlay-split-view.c:414-429). */
271
+ export declare const OVERLAY_SWIPE_RELEASE_VECTORS: ReadonlyArray<SwipeReleaseVector>;
272
+ /** One `swipeCancelProgress` expectation. */
273
+ export interface SwipeCancelVector {
274
+ showProgress: number;
275
+ cancelProgress: number;
276
+ rule: string;
277
+ }
278
+ /** `adw_overlay_split_view_get_cancel_progress` (adw-overlay-split-view.c:1253-1258). */
279
+ export declare const OVERLAY_SWIPE_CANCEL_VECTORS: ReadonlyArray<SwipeCancelVector>;
280
+ /** One `resolveSwipeArea` expectation. */
281
+ export interface SwipeAreaVector {
282
+ isDrag: boolean;
283
+ sidebarWidth: number;
284
+ showProgress: number;
285
+ totalWidth: number;
286
+ totalHeight: number;
287
+ sidebarPosition: AdwPackType;
288
+ direction: AdwTextDirection;
289
+ area: {
290
+ x: number;
291
+ y: number;
292
+ width: number;
293
+ height: number;
294
+ };
295
+ rule: string;
296
+ }
297
+ /**
298
+ * `adw_overlay_split_view_get_swipe_area` (adw-overlay-split-view.c:1261-1290);
299
+ * `ADW_SWIPE_BORDER` is 32 (adw-swipe-tracker-private.h:17).
300
+ */
301
+ export declare const OVERLAY_SWIPE_AREA_VECTORS: ReadonlyArray<SwipeAreaVector>;