@gjsify/adwaita-core 0.36.0 → 0.38.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/accent.js +1 -0
- package/lib/esm/conformance/accent.js +1 -0
- package/lib/esm/conformance/index.js +1 -1
- package/lib/esm/conformance/shortcut-label.js +1 -0
- package/lib/esm/index.js +1 -1
- package/lib/esm/shortcut-label.js +1 -0
- package/lib/types/about-dialog.d.ts +92 -98
- package/lib/types/accent.d.ts +36 -0
- package/lib/types/accent.spec.d.ts +2 -0
- package/lib/types/action-row.d.ts +95 -125
- package/lib/types/avatar.d.ts +30 -37
- package/lib/types/banner.d.ts +25 -53
- package/lib/types/breakpoint.d.ts +6 -7
- package/lib/types/button-content.d.ts +41 -80
- package/lib/types/carousel.d.ts +175 -252
- package/lib/types/checks.d.ts +13 -30
- package/lib/types/chrome.d.ts +90 -136
- package/lib/types/color-scheme.d.ts +5 -6
- package/lib/types/conformance/about-dialog.d.ts +64 -91
- package/lib/types/conformance/accent.d.ts +20 -0
- package/lib/types/conformance/action-row.d.ts +26 -46
- package/lib/types/conformance/avatar.d.ts +8 -10
- package/lib/types/conformance/banner.d.ts +17 -37
- package/lib/types/conformance/button-content.d.ts +24 -46
- package/lib/types/conformance/carousel.d.ts +35 -75
- package/lib/types/conformance/checks.d.ts +0 -4
- package/lib/types/conformance/chrome.d.ts +28 -36
- package/lib/types/conformance/data-grid.d.ts +28 -47
- package/lib/types/conformance/dialog.d.ts +4 -9
- package/lib/types/conformance/entry-row.d.ts +20 -39
- package/lib/types/conformance/index.d.ts +4 -0
- package/lib/types/conformance/navigation-view.d.ts +0 -4
- package/lib/types/conformance/popover.d.ts +4 -9
- package/lib/types/conformance/preferences.d.ts +15 -28
- package/lib/types/conformance/rows.d.ts +5 -12
- package/lib/types/conformance/shortcut-label.d.ts +34 -0
- package/lib/types/conformance/sidebar.d.ts +28 -49
- package/lib/types/conformance/spinner.d.ts +21 -27
- package/lib/types/conformance/split-button.d.ts +21 -43
- package/lib/types/conformance/split-view.d.ts +29 -36
- package/lib/types/conformance/tab-view.d.ts +32 -73
- package/lib/types/conformance/view-stack.d.ts +0 -12
- package/lib/types/conformance/view-switcher.d.ts +46 -114
- package/lib/types/conformance/wrap-box.d.ts +40 -63
- package/lib/types/data-grid.d.ts +38 -48
- package/lib/types/dialog.d.ts +39 -51
- package/lib/types/easing.d.ts +6 -12
- package/lib/types/entry-row.d.ts +94 -123
- package/lib/types/glib.d.ts +17 -25
- package/lib/types/index.d.ts +4 -0
- package/lib/types/length-unit.d.ts +7 -12
- package/lib/types/navigation-view.d.ts +62 -68
- package/lib/types/popover.d.ts +39 -66
- package/lib/types/preferences.d.ts +83 -100
- package/lib/types/rows.d.ts +45 -63
- package/lib/types/shortcut-label.d.ts +79 -0
- package/lib/types/shortcut-label.spec.d.ts +2 -0
- package/lib/types/sidebar.d.ts +95 -121
- package/lib/types/spinner.d.ts +39 -61
- package/lib/types/split-button.d.ts +78 -134
- package/lib/types/split-view.d.ts +74 -89
- package/lib/types/tab-view.d.ts +174 -256
- package/lib/types/view-stack.d.ts +87 -129
- package/lib/types/view-switcher.d.ts +126 -211
- package/lib/types/wrap-box.d.ts +62 -123
- package/package.json +3 -3
|
@@ -13,28 +13,24 @@ export interface PreferencesGroupHeaderVector {
|
|
|
13
13
|
* markup-rendering gap is what retires the flag.
|
|
14
14
|
*/
|
|
15
15
|
dependsOnMarkup?: boolean;
|
|
16
|
-
/** Why this row exists — the rule or the regression it pins down. */
|
|
17
16
|
rule: string;
|
|
18
17
|
}
|
|
19
18
|
/**
|
|
20
19
|
* `update_title_visibility` / `update_description_visibility` /
|
|
21
|
-
* `update_listbox_visibility` / `is_single_line` / `update_header_visibility
|
|
22
|
-
* (adw-preferences-group.c:91-156).
|
|
20
|
+
* `update_listbox_visibility` / `is_single_line` / `update_header_visibility`.
|
|
23
21
|
*/
|
|
24
22
|
export declare const PREFERENCES_GROUP_HEADER_VECTORS: ReadonlyArray<PreferencesGroupHeaderVector>;
|
|
25
23
|
/** One `defaultCaseFolder` expectation. */
|
|
26
24
|
export interface CaseFoldVector {
|
|
27
|
-
/** The string being folded. */
|
|
28
25
|
text: string;
|
|
29
26
|
/** `g_utf8_casefold(text)` — Unicode FULL case folding. */
|
|
30
27
|
folded: string;
|
|
31
28
|
/** What a bare `toLowerCase()` returns, kept in the table as the trap. */
|
|
32
29
|
naiveLowerCase: string;
|
|
33
|
-
/** Why this row exists. */
|
|
34
30
|
rule: string;
|
|
35
31
|
}
|
|
36
32
|
/**
|
|
37
|
-
* `g_utf8_casefold
|
|
33
|
+
* `g_utf8_casefold`.
|
|
38
34
|
*
|
|
39
35
|
* Every row where `folded !== naiveLowerCase` is a query a `toLowerCase()` port
|
|
40
36
|
* silently fails to match — in German, Greek and any text with a typographic
|
|
@@ -50,12 +46,10 @@ export interface StripMarkupVector {
|
|
|
50
46
|
markup: string;
|
|
51
47
|
/** The plain text, or `null` when `pango_parse_markup` fails. */
|
|
52
48
|
plain: string | null;
|
|
53
|
-
/** Why this row exists. */
|
|
54
49
|
rule: string;
|
|
55
50
|
}
|
|
56
51
|
/**
|
|
57
|
-
* `pango_parse_markup (…, accel_marker 0, …)` as `make_comparable` calls it
|
|
58
|
-
* (adw-preferences-dialog.c:104-114).
|
|
52
|
+
* `pango_parse_markup (…, accel_marker 0, …)` as `make_comparable` calls it.
|
|
59
53
|
*
|
|
60
54
|
* `null` is not an error case to be smoothed over: it is the branch where C
|
|
61
55
|
* logs a `g_critical` and KEEPS the unparsed string, so every `null` row below
|
|
@@ -70,11 +64,10 @@ export interface StripMnemonicVector {
|
|
|
70
64
|
text: string;
|
|
71
65
|
/** What `adw_strip_mnemonic` returns. */
|
|
72
66
|
stripped: string;
|
|
73
|
-
/** Why this row exists. */
|
|
74
67
|
rule: string;
|
|
75
68
|
}
|
|
76
69
|
/**
|
|
77
|
-
* `adw_strip_mnemonic`
|
|
70
|
+
* `adw_strip_mnemonic` — `g_markup_escape_text`
|
|
78
71
|
* followed by `pango_parse_markup` with `accel_marker = '_'`.
|
|
79
72
|
*
|
|
80
73
|
* CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (PREFERENCES_SEARCH_VECTORS)
|
|
@@ -88,14 +81,13 @@ export interface MakeComparableVector {
|
|
|
88
81
|
options: MakeComparableOptions;
|
|
89
82
|
/** What the search compares against. */
|
|
90
83
|
comparable: string;
|
|
91
|
-
/** Why this row exists. */
|
|
92
84
|
rule: string;
|
|
93
85
|
}
|
|
94
86
|
/**
|
|
95
|
-
* `make_comparable
|
|
87
|
+
* `make_comparable`.
|
|
96
88
|
*
|
|
97
89
|
* The defaults matter as much as the rows: `use-markup` defaults to TRUE
|
|
98
|
-
*
|
|
90
|
+
* and `use-underline` to FALSE, so
|
|
99
91
|
* an ordinary row's title IS markup-parsed and is NOT mnemonic-stripped.
|
|
100
92
|
*
|
|
101
93
|
* CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (PREFERENCES_SEARCH_VECTORS)
|
|
@@ -103,33 +95,30 @@ export interface MakeComparableVector {
|
|
|
103
95
|
export declare const MAKE_COMPARABLE_VECTORS: ReadonlyArray<MakeComparableVector>;
|
|
104
96
|
/** One `rowMatchesQuery` expectation. */
|
|
105
97
|
export interface RowMatchVector {
|
|
106
|
-
/** The row being tested. */
|
|
107
98
|
row: PreferencesSearchRow;
|
|
108
|
-
/** What the user typed into the search entry. */
|
|
109
99
|
query: string;
|
|
110
100
|
/** Whether `filter_search_results` keeps the row. */
|
|
111
101
|
matches: boolean;
|
|
112
|
-
/** Why this row exists. */
|
|
113
102
|
rule: string;
|
|
114
103
|
}
|
|
115
|
-
/**
|
|
104
|
+
/**
|
|
105
|
+
* `filter_search_results`.
|
|
106
|
+
*
|
|
116
107
|
* CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (PREFERENCES_SEARCH_VECTORS)
|
|
117
108
|
*/
|
|
118
109
|
export declare const ROW_MATCH_VECTORS: ReadonlyArray<RowMatchVector>;
|
|
119
110
|
/** One `collectSearchRows` expectation. */
|
|
120
111
|
export interface SearchCorpusVector {
|
|
121
|
-
/** The page tree being indexed. */
|
|
122
112
|
pages: readonly PreferencesSearchPage[];
|
|
123
113
|
/** The row titles the corpus contains, in order. */
|
|
124
114
|
titles: readonly string[];
|
|
125
|
-
/** Why this row exists. */
|
|
126
115
|
rule: string;
|
|
127
116
|
}
|
|
128
117
|
/**
|
|
129
118
|
* The three-filter chain: `adw_preferences_dialog_init`'s visible-page filter
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
* `row_has_title
|
|
119
|
+
* over `adw_preferences_page_get_rows`' `is_visible_group`
|
|
120
|
+
* over `adw_preferences_group_get_rows`'
|
|
121
|
+
* `row_has_title`.
|
|
133
122
|
*
|
|
134
123
|
* Dropping any clause is invisible — nothing errors, the search just quietly
|
|
135
124
|
* indexes the wrong set — which is why these rows are separate from the
|
|
@@ -144,10 +133,11 @@ export interface SearchRowSubtitleVector {
|
|
|
144
133
|
input: SearchRowSubtitleInput;
|
|
145
134
|
/** The second line of the result row, `null` for none. */
|
|
146
135
|
subtitle: string | null;
|
|
147
|
-
/** Why this row exists. */
|
|
148
136
|
rule: string;
|
|
149
137
|
}
|
|
150
|
-
/**
|
|
138
|
+
/**
|
|
139
|
+
* `create_search_row_subtitle`.
|
|
140
|
+
*
|
|
151
141
|
* CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (PREFERENCES_SEARCH_VECTORS)
|
|
152
142
|
*/
|
|
153
143
|
export declare const SEARCH_ROW_SUBTITLE_VECTORS: ReadonlyArray<SearchRowSubtitleVector>;
|
|
@@ -165,16 +155,13 @@ export declare const PREFERENCES_SEARCH_PAGES: ReadonlyArray<PreferencesSearchPa
|
|
|
165
155
|
export interface PreferencesSearchExpectation {
|
|
166
156
|
/** The result row's title — copied verbatim from the matched row. */
|
|
167
157
|
title: string;
|
|
168
|
-
/** The result row's subtitle. */
|
|
169
158
|
subtitle: string | null;
|
|
170
159
|
}
|
|
171
160
|
/** One end-to-end `searchPreferences` expectation over {@link PREFERENCES_SEARCH_PAGES}. */
|
|
172
161
|
export interface PreferencesSearchVector {
|
|
173
|
-
/** What the user typed. */
|
|
174
162
|
query: string;
|
|
175
163
|
/** The results, in corpus order. */
|
|
176
164
|
results: readonly PreferencesSearchExpectation[];
|
|
177
|
-
/** Why this row exists. */
|
|
178
165
|
rule: string;
|
|
179
166
|
}
|
|
180
167
|
/**
|
|
@@ -19,9 +19,7 @@ export type ComboSelectionStep = {
|
|
|
19
19
|
};
|
|
20
20
|
/** One combo-selection scenario. */
|
|
21
21
|
export interface ComboSelectionVector {
|
|
22
|
-
/** Short scenario name. */
|
|
23
22
|
name: string;
|
|
24
|
-
/** The mutations, applied in order to a fresh state. */
|
|
25
23
|
steps: readonly ComboSelectionStep[];
|
|
26
24
|
/** `selectedIndex` afterwards. */
|
|
27
25
|
selected: number;
|
|
@@ -35,12 +33,11 @@ export interface ComboSelectionVector {
|
|
|
35
33
|
* gated on `interactive`.
|
|
36
34
|
*/
|
|
37
35
|
emitted: ReadonlyArray<ComboStateChange>;
|
|
38
|
-
/** Why this row exists — the rule or edge case it pins down. */
|
|
39
36
|
rule: string;
|
|
40
37
|
}
|
|
41
38
|
/**
|
|
42
|
-
* `adw_combo_row_set_selected`
|
|
43
|
-
* drives
|
|
39
|
+
* `adw_combo_row_set_selected` and the notify chain it
|
|
40
|
+
* drives, plus the two port answers the C leaves open (see
|
|
44
41
|
* the module header).
|
|
45
42
|
*
|
|
46
43
|
* Note that EVERY scenario starts with a `setOptions`, which is itself an
|
|
@@ -51,22 +48,18 @@ export interface ComboSelectionVector {
|
|
|
51
48
|
export declare const COMBO_SELECTION_VECTORS: ReadonlyArray<ComboSelectionVector>;
|
|
52
49
|
/** One `presentsChooser` expectation. */
|
|
53
50
|
export interface ComboChooserVector {
|
|
54
|
-
/** How many options the model holds. */
|
|
55
51
|
count: number;
|
|
56
52
|
/** Whether the arrow is drawn and the row is activatable. */
|
|
57
53
|
presentsChooser: boolean;
|
|
58
|
-
/** The rule this row pins down. */
|
|
59
54
|
rule: string;
|
|
60
55
|
}
|
|
61
56
|
/**
|
|
62
|
-
* `model_changed`
|
|
57
|
+
* `model_changed` — one predicate, `n_items > 1`,
|
|
63
58
|
* driving BOTH `gtk_widget_set_visible (arrow_box, …)` and
|
|
64
59
|
* `gtk_list_box_row_set_activatable (row, …)`.
|
|
65
60
|
*
|
|
66
|
-
* A row with one option or none has nothing to choose, so it stops presenting
|
|
67
|
-
*
|
|
68
|
-
* a single option still showed its chevron and opened an `action()` sheet with
|
|
69
|
-
* one entry, and the browser element behaved the same way.
|
|
61
|
+
* A row with one option or none has nothing to choose, so it stops presenting itself as a
|
|
62
|
+
* chooser: no chevron, and no sheet with a single entry in it.
|
|
70
63
|
*
|
|
71
64
|
* `Gtk.DropDown` is deliberately NOT covered — it keeps its arrow at any count,
|
|
72
65
|
* which is why this lives on the combo ROW rather than in the shared chooser.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ShortcutLabelNode } from '../shortcut-label.js';
|
|
2
|
+
/**
|
|
3
|
+
* The compact form of a parse, so the CORE suite compares the same strings the
|
|
4
|
+
* renderer suites serialise their DOM into.
|
|
5
|
+
*
|
|
6
|
+
* It lives here rather than in a spec file for exactly that reason: two
|
|
7
|
+
* serialisers would be two definitions of "the same rendering", and the
|
|
8
|
+
* divergence would show up as a passing test on both sides.
|
|
9
|
+
*/
|
|
10
|
+
export declare function formatShortcutLabelNodes(nodes: readonly ShortcutLabelNode[]): string;
|
|
11
|
+
/** One accelerator → rendering expectation. */
|
|
12
|
+
export interface ShortcutLabelVector {
|
|
13
|
+
/** The `accelerator` property value. */
|
|
14
|
+
accelerator: string;
|
|
15
|
+
/** Compact rendering — see the header. */
|
|
16
|
+
expected: string;
|
|
17
|
+
/** `platform`, when the vector is about the Apple glyph set (:153-182). */
|
|
18
|
+
platform?: 'default' | 'apple';
|
|
19
|
+
/** `direction`, when the vector is about the sequence arrow (:439, :447). */
|
|
20
|
+
direction?: 'ltr' | 'rtl';
|
|
21
|
+
/** `disabled-text`, for the empty-accelerator vector (:513-520). */
|
|
22
|
+
disabledText?: string;
|
|
23
|
+
/** The accessible string — structure pinned, per-accelerator text is ours. */
|
|
24
|
+
accessibleLabel?: string;
|
|
25
|
+
/** The fragment that must fail to parse, if any (:531-534). */
|
|
26
|
+
error?: string;
|
|
27
|
+
/** Why this row exists. */
|
|
28
|
+
rule: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* `AdwShortcutLabel`'s parse, across the four grammar levels and the label
|
|
32
|
+
* lookup (adw-shortcut-label.c:115-544).
|
|
33
|
+
*/
|
|
34
|
+
export declare const SHORTCUT_LABEL_VECTORS: ReadonlyArray<ShortcutLabelVector>;
|
|
@@ -7,19 +7,17 @@ export interface SidebarClampVector {
|
|
|
7
7
|
count: number;
|
|
8
8
|
/** What `selected` reads back as: the index itself, or `-1` for no selection. */
|
|
9
9
|
selected: number;
|
|
10
|
-
/** Why this row exists. */
|
|
11
10
|
rule: string;
|
|
12
11
|
}
|
|
13
12
|
/**
|
|
14
|
-
* `adw_sidebar_set_selected
|
|
13
|
+
* `adw_sidebar_set_selected`:
|
|
15
14
|
* `if (selected >= self->n_items) selected = GTK_INVALID_LIST_POSITION;`
|
|
16
15
|
*
|
|
17
|
-
* The negative rows are not a TS invention — `selected` is a `guint`, so `-7`
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* no row while reporting a selection.
|
|
16
|
+
* The negative rows are not a TS invention — `selected` is a `guint`, so `-7` arrives as
|
|
17
|
+
* `4294967289`, which is `>= n_items`. The fractional/`NaN` rows generalise to values C
|
|
18
|
+
* cannot express: not a valid position is no position. Both are the inputs a port gets
|
|
19
|
+
* wrong by truncating `"1.5"` to row 1, or by storing `1.5` verbatim and then reporting a
|
|
20
|
+
* selection while highlighting no row.
|
|
23
21
|
*/
|
|
24
22
|
export declare const SIDEBAR_CLAMP_VECTORS: ReadonlyArray<SidebarClampVector>;
|
|
25
23
|
/** One `adjustSidebarSelection` expectation — an `items-changed` splice. */
|
|
@@ -38,11 +36,10 @@ export interface SidebarItemsChangedVector {
|
|
|
38
36
|
added: number;
|
|
39
37
|
/** `selected` after `items_changed_cb` has run. */
|
|
40
38
|
expected: number;
|
|
41
|
-
/** Why this row exists. */
|
|
42
39
|
rule: string;
|
|
43
40
|
}
|
|
44
41
|
/**
|
|
45
|
-
* `items_changed_cb
|
|
42
|
+
* `items_changed_cb`.
|
|
46
43
|
*
|
|
47
44
|
* The last row documents libadwaita's unsigned wraparound: with no selection,
|
|
48
45
|
* `selected` is `G_MAXUINT`, so the "splice covers the selection" test can never
|
|
@@ -53,9 +50,7 @@ export interface SidebarItemsChangedVector {
|
|
|
53
50
|
export declare const SIDEBAR_ITEMS_CHANGED_VECTORS: ReadonlyArray<SidebarItemsChangedVector>;
|
|
54
51
|
/** One flattened-model expectation for a whole section list. */
|
|
55
52
|
export interface SidebarModelVector {
|
|
56
|
-
/** Human-readable name, used as the test title. */
|
|
57
53
|
name: string;
|
|
58
|
-
/** The declared sections. */
|
|
59
54
|
sections: ReadonlyArray<AdwSidebarSectionSpec>;
|
|
60
55
|
/** `n_items` — the size of the selection index space. */
|
|
61
56
|
count: number;
|
|
@@ -70,31 +65,28 @@ export interface SidebarModelVector {
|
|
|
70
65
|
}>;
|
|
71
66
|
/** The headers that get drawn, in render order. */
|
|
72
67
|
headers: ReadonlyArray<SidebarHeaderSpec>;
|
|
73
|
-
/** Why this row exists. */
|
|
74
68
|
rule: string;
|
|
75
69
|
}
|
|
76
70
|
/**
|
|
77
|
-
* The flat index space (`items_changed_cb`'s section walk
|
|
78
|
-
*
|
|
79
|
-
*
|
|
71
|
+
* The flat index space (`items_changed_cb`'s section walk plus
|
|
72
|
+
* `adw_sidebar_item_get_index`) and the header derivation
|
|
73
|
+
* (`set_header_cb`/`create_header`).
|
|
80
74
|
*
|
|
81
|
-
* The empty-leading-section rows
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
75
|
+
* The empty-leading-section rows pin the trap: keying `.first` and the hidden-separator
|
|
76
|
+
* case off the DECLARATION index makes an empty or fully-filtered first section draw a
|
|
77
|
+
* stray separator and costs section 1 the flush-to-top padding
|
|
78
|
+
* `.header.first > .heading` prescribes.
|
|
85
79
|
*/
|
|
86
80
|
export declare const SIDEBAR_MODEL_VECTORS: ReadonlyArray<SidebarModelVector>;
|
|
87
81
|
/** One item-label-visibility expectation. */
|
|
88
82
|
export interface SidebarItemFlagsVector {
|
|
89
|
-
/** The declared item. */
|
|
90
83
|
item: AdwSidebarItemSpec;
|
|
91
|
-
/** `string_is_not_empty(title)
|
|
84
|
+
/** `string_is_not_empty(title)`. */
|
|
92
85
|
titleVisible: boolean;
|
|
93
|
-
/** `string_is_not_empty(subtitle)
|
|
86
|
+
/** `string_is_not_empty(subtitle)`. */
|
|
94
87
|
subtitleVisible: boolean;
|
|
95
|
-
/** `notify_icon_cb`'s `icon_name && *icon_name
|
|
88
|
+
/** `notify_icon_cb`'s `icon_name && *icon_name`. */
|
|
96
89
|
iconVisible: boolean;
|
|
97
|
-
/** Why this row exists. */
|
|
98
90
|
rule: string;
|
|
99
91
|
}
|
|
100
92
|
/**
|
|
@@ -105,13 +97,10 @@ export interface SidebarItemFlagsVector {
|
|
|
105
97
|
export declare const SIDEBAR_ITEM_FLAG_VECTORS: ReadonlyArray<SidebarItemFlagsVector>;
|
|
106
98
|
/** One activation (row click) expectation. */
|
|
107
99
|
export interface SidebarActivationVector {
|
|
108
|
-
/** Human-readable name, used as the test title. */
|
|
109
100
|
name: string;
|
|
110
|
-
/** The declared sections. */
|
|
111
101
|
sections: ReadonlyArray<AdwSidebarSectionSpec>;
|
|
112
102
|
/** The selection to establish before clicking, applied through `setSelected`. */
|
|
113
103
|
initialSelected: number;
|
|
114
|
-
/** The flat index that is clicked. */
|
|
115
104
|
activate: number;
|
|
116
105
|
/** Whether a row was actually activated — the `activated` signal. */
|
|
117
106
|
activated: boolean;
|
|
@@ -119,25 +108,21 @@ export interface SidebarActivationVector {
|
|
|
119
108
|
selectionChanged: boolean;
|
|
120
109
|
/** `selected` afterwards. */
|
|
121
110
|
selected: number;
|
|
122
|
-
/** Why this row exists. */
|
|
123
111
|
rule: string;
|
|
124
112
|
}
|
|
125
113
|
/**
|
|
126
114
|
* The selection/activation split: `row-selected` fires only on a real change,
|
|
127
|
-
* `row-activated` fires on EVERY click
|
|
128
|
-
* does the same thing in one callback (`boxed_row_activated_cb
|
|
115
|
+
* `row-activated` fires on EVERY click, and page mode
|
|
116
|
+
* does the same thing in one callback (`boxed_row_activated_cb`).
|
|
129
117
|
*
|
|
130
|
-
* The re-click row is the one that matters: it is the documented way to reveal
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
* index and it emitted no activation signal.
|
|
118
|
+
* The re-click row is the one that matters: it is the documented way to reveal the content
|
|
119
|
+
* pane of a split view, and a setter that early-returns on an unchanged index cannot
|
|
120
|
+
* express it.
|
|
134
121
|
*/
|
|
135
122
|
export declare const SIDEBAR_ACTIVATION_VECTORS: ReadonlyArray<SidebarActivationVector>;
|
|
136
123
|
/** One filter / empty-state expectation. */
|
|
137
124
|
export interface SidebarFilterVector {
|
|
138
|
-
/** Human-readable name, used as the test title. */
|
|
139
125
|
name: string;
|
|
140
|
-
/** The declared sections. */
|
|
141
126
|
sections: ReadonlyArray<AdwSidebarSectionSpec>;
|
|
142
127
|
/** Item titles the filter keeps; the suites build `(item) => keepTitles.includes(item.title)`. */
|
|
143
128
|
keepTitles: ReadonlyArray<string>;
|
|
@@ -149,34 +134,28 @@ export interface SidebarFilterVector {
|
|
|
149
134
|
headers: ReadonlyArray<SidebarHeaderSpec>;
|
|
150
135
|
/** The `.empty` / placeholder state — computed from the FILTERED count. */
|
|
151
136
|
isEmpty: boolean;
|
|
152
|
-
/** Why this row exists. */
|
|
153
137
|
rule: string;
|
|
154
138
|
}
|
|
155
139
|
/**
|
|
156
|
-
* `adw_sidebar_set_filter`
|
|
157
|
-
*
|
|
158
|
-
*
|
|
159
|
-
* `update_placeholder` counts the filtered one (adw-sidebar.c:1828, :1839-1842).
|
|
160
|
-
*
|
|
161
|
-
* Neither port had a filter or a placeholder at all.
|
|
140
|
+
* `adw_sidebar_set_filter` feeds a `GtkFilterListModel` that only the row list and the
|
|
141
|
+
* placeholder see: the selection index space stays on the UNFILTERED `items_model` while
|
|
142
|
+
* `update_placeholder` counts the filtered one.
|
|
162
143
|
*/
|
|
163
144
|
export declare const SIDEBAR_FILTER_VECTORS: ReadonlyArray<SidebarFilterVector>;
|
|
164
145
|
/** One mode expectation. */
|
|
165
146
|
export interface SidebarModeVector {
|
|
166
|
-
/** The mode being set. */
|
|
167
147
|
mode: 'sidebar' | 'page';
|
|
168
148
|
/** Whether the selection is PAINTED in that mode. */
|
|
169
149
|
selectionVisible: boolean;
|
|
170
|
-
/** Why this row exists. */
|
|
171
150
|
rule: string;
|
|
172
151
|
}
|
|
173
152
|
/**
|
|
174
|
-
* `adw_sidebar_set_mode`
|
|
153
|
+
* `adw_sidebar_set_mode` never touches `selected`:
|
|
175
154
|
* "In this mode, the selection is invisible and only tracked to determine the
|
|
176
|
-
* initially selected item once switched back to sidebar mode"
|
|
155
|
+
* initially selected item once switched back to sidebar mode".
|
|
177
156
|
*
|
|
178
157
|
* The web port painted its `.selected` highlight in BOTH modes; page mode builds
|
|
179
|
-
* plain `AdwActionRow`s in a boxed list (`create_boxed_row
|
|
158
|
+
* plain `AdwActionRow`s in a boxed list (`create_boxed_row`)
|
|
180
159
|
* and shows no selected row at all.
|
|
181
160
|
*/
|
|
182
161
|
export declare const SIDEBAR_MODE_VECTORS: ReadonlyArray<SidebarModeVector>;
|
|
@@ -4,16 +4,12 @@ export declare const SPINNER_ARC_TOLERANCE = 1e-9;
|
|
|
4
4
|
* The arc lengths actually DRAWN, in radians — measured over one cycle at 200k
|
|
5
5
|
* samples, not read off the constants.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
* `
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* is the obvious mistake; issue #1066 made it in its own summary table.
|
|
14
|
-
*
|
|
15
|
-
* The MINIMUM is exactly `MIN_ARC_LENGTH`, because the drift is zero at the
|
|
16
|
-
* cycle boundary where the arc is shortest.
|
|
7
|
+
* `MAX_ARC_LENGTH` is `pi * 0.9` (162 degrees) and both `get_arc_start` and
|
|
8
|
+
* `get_arc_end` lerp TOWARDS it, but each then subtracts the drift term
|
|
9
|
+
* `angle * MAX_ARC_LENGTH / cycle_length` that advances the figure around the circle.
|
|
10
|
+
* The two ends drift together, so the visible arc peaks at 102.8 degrees, not 162 —
|
|
11
|
+
* reading the constant as the drawn length is the obvious mistake. The minimum is
|
|
12
|
+
* exactly `MIN_ARC_LENGTH`, the drift being zero at the cycle boundary.
|
|
17
13
|
*/
|
|
18
14
|
export declare const SPINNER_ARC_ENVELOPE: {
|
|
19
15
|
/** Exactly `MIN_ARC_LENGTH` — 2.7 degrees, at the cycle boundary. */
|
|
@@ -24,24 +20,23 @@ export declare const SPINNER_ARC_ENVELOPE: {
|
|
|
24
20
|
readonly tolerance: 0.0001;
|
|
25
21
|
};
|
|
26
22
|
/**
|
|
27
|
-
* `get_arc_start` / `get_arc_end`
|
|
28
|
-
* corners of one cycle, plus the resting pose.
|
|
23
|
+
* One named moment of `get_arc_start` / `get_arc_end` within a cycle.
|
|
29
24
|
*
|
|
30
|
-
* The lengths are
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* the extend/contract handover, and never leaves `[MIN_ARC_LENGTH,
|
|
35
|
-
* MAX_ARC_LENGTH]`.
|
|
25
|
+
* The rows name the MOMENT, not the length: lengths are derived from the C's own
|
|
26
|
+
* constants rather than typed in, so what they pin is the shape — arc shortest at the
|
|
27
|
+
* cycle boundary, longest around the extend/contract handover, never outside
|
|
28
|
+
* `[MIN_ARC_LENGTH, MAX_ARC_LENGTH]`.
|
|
36
29
|
*/
|
|
37
30
|
export interface SpinnerArcShapeVector {
|
|
38
31
|
/** Fraction of one arc cycle, 0..1. */
|
|
39
32
|
phase: number;
|
|
40
|
-
/** What happens here. */
|
|
41
33
|
rule: string;
|
|
42
34
|
}
|
|
43
|
-
/**
|
|
44
|
-
*
|
|
35
|
+
/**
|
|
36
|
+
* The moments worth naming in one arc cycle.
|
|
37
|
+
*
|
|
38
|
+
* CORE-ONLY: the arc is drawn per frame from `spinnerArc` and a renderer can only show
|
|
39
|
+
* the RESULT — the browser suite asserts the drawn envelope and the round caps.
|
|
45
40
|
*/
|
|
46
41
|
export declare const SPINNER_ARC_PHASE_VECTORS: ReadonlyArray<SpinnerArcShapeVector>;
|
|
47
42
|
/** One "is this constant what the C says" expectation. */
|
|
@@ -54,13 +49,12 @@ export interface SpinnerConstantVector {
|
|
|
54
49
|
rule: string;
|
|
55
50
|
}
|
|
56
51
|
/**
|
|
57
|
-
* The `#define`s
|
|
52
|
+
* The animation `#define`s plus `adw-spinner.c`'s own size constants.
|
|
58
53
|
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
* and a table is what makes "the port picked its own number" fail a test rather
|
|
62
|
-
* than look like a design choice.
|
|
54
|
+
* Four of these seven were wrong or absent in a shipping port; as a table, "the port
|
|
55
|
+
* picked its own number" fails a test instead of reading as a design choice.
|
|
63
56
|
*
|
|
64
|
-
* CORE-ONLY: a table OF constants
|
|
57
|
+
* CORE-ONLY: a table OF constants — what a renderer can show is the geometry they
|
|
58
|
+
* produce, asserted by the browser suite through SPINNER_GEOMETRY/SIZE_VECTORS.
|
|
65
59
|
*/
|
|
66
60
|
export declare const SPINNER_CONSTANT_VECTORS: ReadonlyArray<SpinnerConstantVector>;
|