@gjsify/adwaita-core 0.35.0 → 0.37.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/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/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/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 +2 -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 +2 -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
|
@@ -2,43 +2,40 @@
|
|
|
2
2
|
export interface CreditPersonVector {
|
|
3
3
|
/** The raw credit line, as an app puts it in `developers` etc. */
|
|
4
4
|
input: string;
|
|
5
|
-
/** `*name` after `g_strstrip
|
|
5
|
+
/** `*name` after `g_strstrip`. */
|
|
6
6
|
name: string;
|
|
7
7
|
/** `*link` — `null` is "no link", `''` is an EMPTY link and still a link. */
|
|
8
8
|
link: string | null;
|
|
9
|
-
/** `*is_email`, i.e. `*q1 == '<'
|
|
9
|
+
/** `*is_email`, i.e. `*q1 == '<'`. */
|
|
10
10
|
isEmail: boolean;
|
|
11
|
-
/** The URI the row gets
|
|
11
|
+
/** The URI the row gets, per `add_credits_section`. */
|
|
12
12
|
uri: string | null;
|
|
13
|
-
/** Why this row exists — the rule or edge case it pins down. */
|
|
14
13
|
rule: string;
|
|
15
14
|
}
|
|
16
15
|
/**
|
|
17
|
-
* `parse_person
|
|
16
|
+
* `parse_person`, verified against real GLib.
|
|
18
17
|
*
|
|
19
|
-
* Seven
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
18
|
+
* Seven rows pin the plausible-looking simplifications a re-implementation reaches for:
|
|
19
|
+
* anchoring the angle pair at the end of the string, testing the link for `@`, requiring
|
|
20
|
+
* whitespace before a bare URL, accepting `mailto:` as a scheme, `String.trim()` instead
|
|
21
|
+
* of `g_strstrip`, treating index 0 as falsy, and never reaching the `r1 <= q1 + 1`
|
|
22
|
+
* branch.
|
|
24
23
|
*/
|
|
25
24
|
export declare const CREDIT_PERSON_VECTORS: ReadonlyArray<CreditPersonVector>;
|
|
26
25
|
/** One `translator-credits` split expectation. */
|
|
27
26
|
export interface TranslatorCreditsVector {
|
|
28
|
-
/** The raw `translator-credits` property value. */
|
|
29
27
|
value: string | null;
|
|
30
28
|
/** The names the "Translated by" section is built from. */
|
|
31
29
|
people: ReadonlyArray<string>;
|
|
32
|
-
/** Why this row exists. */
|
|
33
30
|
rule: string;
|
|
34
31
|
}
|
|
35
32
|
/**
|
|
36
|
-
* The sentinel guard + split
|
|
33
|
+
* The sentinel guard + split, with `g_strsplit`'s
|
|
37
34
|
* token behaviour verified against GLib 2.88.
|
|
38
35
|
*
|
|
39
36
|
* The empty-string row is the one a port gets wrong: `g_strsplit ("", "\n", 0)`
|
|
40
37
|
* is a ZERO-length vector, so `add_credits_section` bails at `!*people`
|
|
41
|
-
*
|
|
38
|
+
* and no section is drawn, where JS `''.split('\n')` is `['']` and
|
|
42
39
|
* draws the section with one blank row.
|
|
43
40
|
*
|
|
44
41
|
* CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (ABOUT_DIALOG_CREDITS_LEGAL_VECTORS)
|
|
@@ -46,7 +43,6 @@ export interface TranslatorCreditsVector {
|
|
|
46
43
|
export declare const TRANSLATOR_CREDITS_VECTORS: ReadonlyArray<TranslatorCreditsVector>;
|
|
47
44
|
/** One assembled credits-page expectation. */
|
|
48
45
|
export interface CreditsSectionsVector {
|
|
49
|
-
/** The credit properties, as an app sets them. */
|
|
50
46
|
input: {
|
|
51
47
|
developers?: ReadonlyArray<string>;
|
|
52
48
|
designers?: ReadonlyArray<string>;
|
|
@@ -66,26 +62,25 @@ export interface CreditsSectionsVector {
|
|
|
66
62
|
uri: string | null;
|
|
67
63
|
}>;
|
|
68
64
|
}>;
|
|
69
|
-
/** Why this row exists. */
|
|
70
65
|
rule: string;
|
|
71
66
|
}
|
|
72
67
|
/**
|
|
73
|
-
* `update_credits`
|
|
68
|
+
* `update_credits` — which groups exist, in which order.
|
|
74
69
|
*
|
|
75
|
-
* The order is fixed by the five `add_credits_section` calls
|
|
76
|
-
*
|
|
77
|
-
*
|
|
70
|
+
* The order is fixed by the five `add_credits_section` calls then the
|
|
71
|
+
* app's own sections in insertion order. An empty property is not an
|
|
72
|
+
* empty group, it is no group.
|
|
78
73
|
*/
|
|
79
74
|
export declare const CREDITS_SECTIONS_VECTORS: ReadonlyArray<CreditsSectionsVector>;
|
|
80
|
-
/** The `update_details` half of the truth table
|
|
75
|
+
/** The `update_details` half of the truth table. */
|
|
81
76
|
export interface AboutDialogDetailsVector {
|
|
82
77
|
/** `website` non-empty. */
|
|
83
78
|
website: boolean;
|
|
84
79
|
/** `comments` non-empty. */
|
|
85
80
|
comments: boolean;
|
|
86
|
-
/** `add_link` was called at least once
|
|
81
|
+
/** `add_link` was called at least once. */
|
|
87
82
|
customLinks: boolean;
|
|
88
|
-
/** `release-notes` non-empty
|
|
83
|
+
/** `release-notes` non-empty. */
|
|
89
84
|
releaseNotes: boolean;
|
|
90
85
|
/** The seven widgets `update_details` decides. */
|
|
91
86
|
visible: {
|
|
@@ -97,21 +92,19 @@ export interface AboutDialogDetailsVector {
|
|
|
97
92
|
linksGroup: boolean;
|
|
98
93
|
detailsWebsiteRow: boolean;
|
|
99
94
|
};
|
|
100
|
-
/** Why this row exists. */
|
|
101
95
|
rule: string;
|
|
102
96
|
}
|
|
103
97
|
/**
|
|
104
|
-
* `update_details
|
|
98
|
+
* `update_details`, exhaustive over (website, comments,
|
|
105
99
|
* custom links) plus the two rows that show what release notes add.
|
|
106
100
|
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
* has_custom_links` — website is deliberately not in it (:1108).
|
|
101
|
+
* `website only` matters most: the ONE combination where the website link stays
|
|
102
|
+
* on the main page and no Details row is offered, and the one a port gets wrong by
|
|
103
|
+
* folding `website` into its "has details" predicate. `show_details` is
|
|
104
|
+
* `has_comments || has_custom_links` — website is deliberately not in it.
|
|
112
105
|
*/
|
|
113
106
|
export declare const ABOUT_DIALOG_DETAILS_VECTORS: ReadonlyArray<AboutDialogDetailsVector>;
|
|
114
|
-
/** The `update_support` half of the truth table
|
|
107
|
+
/** The `update_support` half of the truth table. */
|
|
115
108
|
export interface AboutDialogSupportVector {
|
|
116
109
|
/** `support-url` non-empty. */
|
|
117
110
|
supportUrl: boolean;
|
|
@@ -126,27 +119,25 @@ export interface AboutDialogSupportVector {
|
|
|
126
119
|
issueRow: boolean;
|
|
127
120
|
troubleshootingRow: boolean;
|
|
128
121
|
};
|
|
129
|
-
/** Why this row exists. */
|
|
130
122
|
rule: string;
|
|
131
123
|
}
|
|
132
124
|
/**
|
|
133
|
-
* `update_support
|
|
125
|
+
* `update_support`, exhaustive.
|
|
134
126
|
*
|
|
135
|
-
* Every widget here is a child of `support_group`, which the template puts on
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
* Details page appear for a dialog that has no Details content in GTK terms.
|
|
127
|
+
* Every widget here is a child of `support_group`, which the template puts on the
|
|
128
|
+
* MAIN page, as both the template and the class docs say. The
|
|
129
|
+
* browser renderer put Support Questions and Report an Issue on the Details page,
|
|
130
|
+
* hiding the issue tracker behind a navigation step AND making the Details page
|
|
131
|
+
* appear for a dialog with no Details content in GTK terms.
|
|
141
132
|
*/
|
|
142
133
|
export declare const ABOUT_DIALOG_SUPPORT_VECTORS: ReadonlyArray<AboutDialogSupportVector>;
|
|
143
|
-
/** The `update_credits_legal_group` half of the truth table
|
|
134
|
+
/** The `update_credits_legal_group` half of the truth table. */
|
|
144
135
|
export interface AboutDialogCreditsLegalVector {
|
|
145
|
-
/** `credits_box` has children
|
|
136
|
+
/** `credits_box` has children. */
|
|
146
137
|
hasCredits: boolean;
|
|
147
|
-
/** `legal_box` has children
|
|
138
|
+
/** `legal_box` has children. */
|
|
148
139
|
hasLegal: boolean;
|
|
149
|
-
/** `add_acknowledgement_section` was called
|
|
140
|
+
/** `add_acknowledgement_section` was called. */
|
|
150
141
|
hasAcknowledgements: boolean;
|
|
151
142
|
/** The four widgets, all on the main page. */
|
|
152
143
|
visible: {
|
|
@@ -155,12 +146,11 @@ export interface AboutDialogCreditsLegalVector {
|
|
|
155
146
|
legalRow: boolean;
|
|
156
147
|
acknowledgementsRow: boolean;
|
|
157
148
|
};
|
|
158
|
-
/** Why this row exists. */
|
|
159
149
|
rule: string;
|
|
160
150
|
}
|
|
161
151
|
/**
|
|
162
|
-
* `update_credits_legal_group`
|
|
163
|
-
*
|
|
152
|
+
* `update_credits_legal_group` with the three template bindings,
|
|
153
|
+
* exhaustive.
|
|
164
154
|
*
|
|
165
155
|
* Each row's visibility is bound directly to its page's box, so the group is
|
|
166
156
|
* the OR of the three and never appears empty.
|
|
@@ -168,46 +158,37 @@ export interface AboutDialogCreditsLegalVector {
|
|
|
168
158
|
export declare const ABOUT_DIALOG_CREDITS_LEGAL_VECTORS: ReadonlyArray<AboutDialogCreditsLegalVector>;
|
|
169
159
|
/** One main-page header-field visibility expectation. */
|
|
170
160
|
export interface AboutDialogHeaderVector {
|
|
171
|
-
/** The property being set. */
|
|
172
161
|
property: 'application-icon' | 'application-name' | 'developer-name' | 'version';
|
|
173
|
-
/** Its value. */
|
|
174
162
|
value: string;
|
|
175
|
-
/** Whether the corresponding widget is shown. */
|
|
176
163
|
visible: boolean;
|
|
177
|
-
/** Why this row exists. */
|
|
178
164
|
rule: string;
|
|
179
165
|
}
|
|
180
166
|
/**
|
|
181
|
-
* The four `x && *x` visibility tests on the main page
|
|
182
|
-
* :2426-2427, :2476).
|
|
167
|
+
* The four `x && *x` visibility tests on the main page.
|
|
183
168
|
*
|
|
184
|
-
* All four are FIRST-CHARACTER tests, so a single space is content
|
|
185
|
-
*
|
|
186
|
-
* the word "Application", and an unset icon shows NO image, not a generic
|
|
187
|
-
* executable glyph. The browser renderer invented both.
|
|
169
|
+
* All four are FIRST-CHARACTER tests, so a single space is content, and there is no fallback
|
|
170
|
+
* anywhere: an unset application name shows NO label, an unset icon NO image.
|
|
188
171
|
*/
|
|
189
172
|
export declare const ABOUT_DIALOG_HEADER_VECTORS: ReadonlyArray<AboutDialogHeaderVector>;
|
|
190
173
|
/** One template-label expectation. */
|
|
191
174
|
export interface AboutDialogLabelVector {
|
|
192
|
-
/** Which label. */
|
|
193
175
|
label: 'dialogTitle' | 'detailsRow' | 'websiteRow' | 'supportRow' | 'issueRow' | 'troubleshootingRow' | 'creditsRow' | 'legalRow' | 'acknowledgementsRow' | 'whatsNewRow' | 'detailsPage' | 'creditsPage' | 'legalPage';
|
|
194
176
|
/** The template string, mnemonic marker included. */
|
|
195
177
|
text: string;
|
|
196
178
|
/** What a renderer with no accelerator layer paints (`stripMnemonic`). */
|
|
197
179
|
plain: string;
|
|
198
|
-
/** Why this row exists. */
|
|
199
180
|
rule: string;
|
|
200
181
|
}
|
|
201
182
|
/**
|
|
202
183
|
* The template labels (adw-about-dialog.ui), with and without their mnemonic
|
|
203
184
|
* markers.
|
|
204
185
|
*
|
|
205
|
-
* `dialogTitle`
|
|
206
|
-
*
|
|
207
|
-
*
|
|
208
|
-
*
|
|
209
|
-
*
|
|
210
|
-
*
|
|
186
|
+
* `dialogTitle` catches the invented one: the main navigation page binds its
|
|
187
|
+
* title to `AdwDialog:title`, whose template default is the bare word "About"
|
|
188
|
+
* from the template. The application name is NOT part of it — it appears on its own in the
|
|
189
|
+
* header revealer that fades in on scroll. A renderer titling the
|
|
190
|
+
* page "About <app>" AND labelling the dialog "About <app>" says the app's name
|
|
191
|
+
* three times on one screen.
|
|
211
192
|
*
|
|
212
193
|
* CORE-ONLY: a string table the renderers read THROUGH ADW_ABOUT_DIALOG_LABELS; the rendered text is asserted by ABOUT_DIALOG_HEADER/DETAILS_VECTORS
|
|
213
194
|
*/
|
|
@@ -220,16 +201,15 @@ export interface LicenseInfoVector {
|
|
|
220
201
|
spdxId: string | null;
|
|
221
202
|
/** `gtk_license_info[i].url`. */
|
|
222
203
|
url: string | null;
|
|
223
|
-
/** Why this row exists. */
|
|
224
204
|
rule: string;
|
|
225
205
|
}
|
|
226
206
|
/**
|
|
227
|
-
* Spot rows from `gtk_license_info`
|
|
207
|
+
* Spot rows from `gtk_license_info` — the ends and the boundaries,
|
|
228
208
|
* not a second copy of the whole table.
|
|
229
209
|
*
|
|
230
210
|
* Index 18 is pinned because `G_STATIC_ASSERT (G_N_ELEMENTS (gtk_license_info)
|
|
231
|
-
* - 1 == GTK_LICENSE_0BSD)`
|
|
232
|
-
*
|
|
211
|
+
* - 1 == GTK_LICENSE_0BSD)` is the C's own drift check; this is that
|
|
212
|
+
* assertion, ported.
|
|
233
213
|
*
|
|
234
214
|
* CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (ABOUT_DIALOG_CREDITS_LEGAL_VECTORS)
|
|
235
215
|
*/
|
|
@@ -240,56 +220,51 @@ export interface LicenseSpdxVector {
|
|
|
240
220
|
spdxId: string;
|
|
241
221
|
/** The `GtkLicense` it resolves to, or `null` for no match. */
|
|
242
222
|
licenseType: number | null;
|
|
243
|
-
/** Why this row exists. */
|
|
244
223
|
rule: string;
|
|
245
224
|
}
|
|
246
|
-
/**
|
|
225
|
+
/**
|
|
226
|
+
* The two lookup loops in `populate_from_appdata`.
|
|
227
|
+
*
|
|
247
228
|
* CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (LICENSE_INFO_VECTORS → the legal section)
|
|
248
229
|
*/
|
|
249
230
|
export declare const LICENSE_SPDX_VECTORS: ReadonlyArray<LicenseSpdxVector>;
|
|
250
231
|
/** One `get_license_text` expectation. */
|
|
251
232
|
export interface LicenseTextVector {
|
|
252
|
-
/** The `GtkLicense` value. */
|
|
253
233
|
licenseType: number;
|
|
254
|
-
/** The `license` property. */
|
|
255
234
|
license: string;
|
|
256
235
|
/** What the Legal page shows, `null` meaning "no licence text at all". */
|
|
257
236
|
text: string | null;
|
|
258
|
-
/** Why this row exists. */
|
|
259
237
|
rule: string;
|
|
260
238
|
}
|
|
261
|
-
/**
|
|
239
|
+
/**
|
|
240
|
+
* `get_license_text`.
|
|
241
|
+
*
|
|
262
242
|
* CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (ABOUT_DIALOG_CREDITS_LEGAL_VECTORS)
|
|
263
243
|
*/
|
|
264
244
|
export declare const LICENSE_TEXT_VECTORS: ReadonlyArray<LicenseTextVector>;
|
|
265
245
|
/** One licence-setter step. */
|
|
266
246
|
export interface LicenseSetterStep {
|
|
267
|
-
/** Which setter is called. */
|
|
268
247
|
property: 'license' | 'license-type';
|
|
269
|
-
/** The argument. */
|
|
270
248
|
value: string | number;
|
|
271
249
|
}
|
|
272
250
|
/** One licence-setter sequence expectation. */
|
|
273
251
|
export interface LicenseSetterVector {
|
|
274
252
|
/** The calls, in order, starting from the property defaults. */
|
|
275
253
|
steps: ReadonlyArray<LicenseSetterStep>;
|
|
276
|
-
/** `license` afterwards. */
|
|
277
254
|
license: string;
|
|
278
|
-
/** `license-type` afterwards. */
|
|
279
255
|
licenseType: number;
|
|
280
256
|
/** Every `g_object_notify_by_pspec` from every step, concatenated in order. */
|
|
281
257
|
notify: ReadonlyArray<'license' | 'license-type'>;
|
|
282
|
-
/** Why this row exists. */
|
|
283
258
|
rule: string;
|
|
284
259
|
}
|
|
285
260
|
/**
|
|
286
|
-
* The two setters
|
|
261
|
+
* The two setters, which are ONE state machine.
|
|
287
262
|
*
|
|
288
|
-
* Each notifies BOTH properties whenever it does anything
|
|
289
|
-
*
|
|
290
|
-
*
|
|
291
|
-
* would have set the type to custom, so re-assigning the same text after a
|
|
292
|
-
* licence-type change
|
|
263
|
+
* Each notifies BOTH properties whenever it does anything, so setting either can move the
|
|
264
|
+
* other. The trap is the
|
|
265
|
+
* asymmetry in the early-outs: `set_license` bails on an unchanged STRING before
|
|
266
|
+
* it would have set the type to custom, so re-assigning the same text after a
|
|
267
|
+
* licence-type change DOES switch the type, while assigning `""` to an already
|
|
293
268
|
* empty licence does not.
|
|
294
269
|
*
|
|
295
270
|
* CORE-ONLY: a property-ordering table with no rendered surface — the RESULT is ABOUT_DIALOG_CREDITS_LEGAL_VECTORS, which both renderers drive
|
|
@@ -297,18 +272,16 @@ export interface LicenseSetterVector {
|
|
|
297
272
|
export declare const LICENSE_SETTER_VECTORS: ReadonlyArray<LicenseSetterVector>;
|
|
298
273
|
/** One Legal-page visibility expectation. */
|
|
299
274
|
export interface LegalSectionVector {
|
|
300
|
-
/** The `copyright` property. */
|
|
301
275
|
copyright: string;
|
|
302
|
-
/** The `license-type`. */
|
|
303
276
|
licenseType: number;
|
|
304
|
-
/** The `license` text. */
|
|
305
277
|
license: string;
|
|
306
|
-
/** Whether the app's own legal section is drawn at all
|
|
278
|
+
/** Whether the app's own legal section is drawn at all. */
|
|
307
279
|
visible: boolean;
|
|
308
|
-
/** Why this row exists. */
|
|
309
280
|
rule: string;
|
|
310
281
|
}
|
|
311
|
-
/**
|
|
282
|
+
/**
|
|
283
|
+
* `append_legal_section`'s early-outs for the default section.
|
|
284
|
+
*
|
|
312
285
|
* CORE-ONLY: an internal step of a pipeline whose COMPOSED result is renderer-driven — driving it separately would assert the same thing twice (ABOUT_DIALOG_CREDITS_LEGAL_VECTORS)
|
|
313
286
|
*/
|
|
314
287
|
export declare const LEGAL_SECTION_VECTORS: ReadonlyArray<LegalSectionVector>;
|
|
@@ -2,24 +2,21 @@
|
|
|
2
2
|
export interface LabelVisibilityVector {
|
|
3
3
|
/** The label's text — `null` stands for "property unset / attribute absent". */
|
|
4
4
|
text: string | null;
|
|
5
|
-
/** Whether the bound label is visible. */
|
|
6
5
|
visible: boolean;
|
|
7
|
-
/** Why this row exists — the rule or edge case it pins down. */
|
|
8
6
|
rule: string;
|
|
9
7
|
}
|
|
10
8
|
/**
|
|
11
|
-
* `string_is_not_empty`
|
|
12
|
-
*
|
|
9
|
+
* `string_is_not_empty`, declared identically in `adw-action-row.c` and
|
|
10
|
+
* `adw-button-row.c`.
|
|
13
11
|
*
|
|
14
|
-
* Applies to the TITLE and
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* line
|
|
18
|
-
* every header bar that only had a subtitle.
|
|
12
|
+
* Applies to the TITLE and the subtitle alike — the `.ui` bindings are two copies of the
|
|
13
|
+
* same closure. The title half is the one a port drops: a row with `title=""` keeps a
|
|
14
|
+
* zero-height but line-height-consuming label, and `<adw-window-title>` reserves a title
|
|
15
|
+
* line in a header bar that only has a subtitle.
|
|
19
16
|
*
|
|
20
|
-
* `' '` is the canary row. The C never trims — `string && string[0]` reads ONE
|
|
21
|
-
*
|
|
22
|
-
*
|
|
17
|
+
* `' '` is the canary row. The C never trims — `string && string[0]` reads ONE byte — so
|
|
18
|
+
* a single space is a VISIBLE label, and a port reaching for `value.trim().length` passes
|
|
19
|
+
* every other row here and fails this one.
|
|
23
20
|
*/
|
|
24
21
|
export declare const LABEL_VISIBILITY_VECTORS: ReadonlyArray<LabelVisibilityVector>;
|
|
25
22
|
/** One step of an {@link ActionRowActivationVector}. */
|
|
@@ -47,25 +44,22 @@ export type ActionRowStep =
|
|
|
47
44
|
};
|
|
48
45
|
/** One `activatable-widget` ↔ `activatable` expectation. */
|
|
49
46
|
export interface ActionRowActivationVector {
|
|
50
|
-
/** What the scenario is called. */
|
|
51
47
|
name: string;
|
|
52
|
-
/** The steps to run against a fresh row, in order. */
|
|
53
48
|
steps: readonly ActionRowStep[];
|
|
54
49
|
/** `GtkListBoxRow:activatable` afterwards. */
|
|
55
50
|
activatable: boolean;
|
|
56
51
|
/** `AdwActionRow:activatable-widget` afterwards, by id. */
|
|
57
52
|
activatableWidget: string | null;
|
|
58
|
-
/** Why this row exists. */
|
|
59
53
|
rule: string;
|
|
60
54
|
}
|
|
61
55
|
/**
|
|
62
|
-
* `adw_action_row_set_activatable_widget
|
|
56
|
+
* `adw_action_row_set_activatable_widget`.
|
|
63
57
|
*
|
|
64
58
|
* The two rows that decide whether a port read the C or guessed it:
|
|
65
59
|
* `insensitive-widget-does-not-activate` (the binding is `sensitive` →
|
|
66
|
-
* `activatable` with `G_BINDING_SYNC_CREATE`,
|
|
67
|
-
*
|
|
68
|
-
*
|
|
60
|
+
* `activatable` with `G_BINDING_SYNC_CREATE`, NOT a constant TRUE), and
|
|
61
|
+
* `unsetting-keeps-activatable` (clearing only unbinds, so the flag stays where the binding
|
|
62
|
+
* last left it — the class docs say so outright).
|
|
69
63
|
*/
|
|
70
64
|
export declare const ACTION_ROW_ACTIVATION_VECTORS: ReadonlyArray<ActionRowActivationVector>;
|
|
71
65
|
/** One step of a {@link SwitchRowNotifyVector}. */
|
|
@@ -81,26 +75,23 @@ export type SwitchRowStep =
|
|
|
81
75
|
};
|
|
82
76
|
/** One `notify::active` expectation. */
|
|
83
77
|
export interface SwitchRowNotifyVector {
|
|
84
|
-
/** What the scenario is called. */
|
|
85
78
|
name: string;
|
|
86
|
-
/** The steps to run against a fresh row, in order. */
|
|
87
79
|
steps: readonly SwitchRowStep[];
|
|
88
80
|
/** `Adw.SwitchRow:active` afterwards. */
|
|
89
81
|
active: boolean;
|
|
90
82
|
/** The `active` value carried by each `notify::active`, in emission order. */
|
|
91
83
|
emitted: readonly boolean[];
|
|
92
|
-
/** Why this row exists. */
|
|
93
84
|
rule: string;
|
|
94
85
|
}
|
|
95
86
|
/**
|
|
96
|
-
* `adw_switch_row_set_active`
|
|
87
|
+
* `adw_switch_row_set_active` → `slider_notify_active_cb`.
|
|
97
88
|
*
|
|
98
89
|
* `programmatic-set-notifies` is the row the two renderers answered differently:
|
|
99
90
|
* the notify is emitted by the SLIDER's own `notify::active`, which fires
|
|
100
91
|
* whatever wrote it, so there is no programmatic-vs-interactive split to model.
|
|
101
92
|
* `activate-row-toggles` is the row NEITHER had: `adw_switch_row_init` points
|
|
102
|
-
* the activatable-widget at the slider
|
|
103
|
-
* the result
|
|
93
|
+
* the activatable-widget at the slider and the class docs spell out
|
|
94
|
+
* the result.
|
|
104
95
|
*/
|
|
105
96
|
export declare const SWITCH_ROW_NOTIFY_VECTORS: ReadonlyArray<SwitchRowNotifyVector>;
|
|
106
97
|
/** One `Adw.ButtonRow` icon expectation. */
|
|
@@ -109,15 +100,14 @@ export interface ButtonRowIconVector {
|
|
|
109
100
|
startIconName: string | null;
|
|
110
101
|
/** `AdwButtonRow:end-icon-name`. */
|
|
111
102
|
endIconName: string | null;
|
|
112
|
-
/** Whether the leading `image.icon.start` shows
|
|
103
|
+
/** Whether the leading `image.icon.start` shows. */
|
|
113
104
|
startIconVisible: boolean;
|
|
114
|
-
/** Whether the trailing `image.icon.end` shows
|
|
105
|
+
/** Whether the trailing `image.icon.end` shows. */
|
|
115
106
|
endIconVisible: boolean;
|
|
116
|
-
/** Why this row exists. */
|
|
117
107
|
rule: string;
|
|
118
108
|
}
|
|
119
109
|
/**
|
|
120
|
-
* The two icons of `Adw.ButtonRow
|
|
110
|
+
* The two icons of `Adw.ButtonRow`, each bound through the same
|
|
121
111
|
* `string_is_not_empty` closure as the title.
|
|
122
112
|
*
|
|
123
113
|
* `end-icon-name` has existed since 1.6 and was missing from BOTH renderers, so
|
|
@@ -131,20 +121,16 @@ export interface ButtonRowActivatableVector {
|
|
|
131
121
|
declared: string | null;
|
|
132
122
|
/** Whether the row activates. Always `true`. */
|
|
133
123
|
activatable: boolean;
|
|
134
|
-
/** Why this row exists. */
|
|
135
124
|
rule: string;
|
|
136
125
|
}
|
|
137
126
|
/**
|
|
138
|
-
* `Adw.ButtonRow` is always activatable —
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
* is C:270-352: `new`, and the two icon-name pairs).
|
|
127
|
+
* `Adw.ButtonRow` is always activatable — the template sets it TRUE and the class exposes
|
|
128
|
+
* no property, no setter and no getter for it; the whole public surface is `new` plus the
|
|
129
|
+
* two icon-name pairs.
|
|
142
130
|
*
|
|
143
|
-
* The vector exists because
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
* divergence look like a decision. A row that reads its own attribute is a row
|
|
147
|
-
* that has to be told to ignore it.
|
|
131
|
+
* The vector exists because a renderer had invented an `activatable="false"` opt-out and
|
|
132
|
+
* its own spec PINNED the invention with a passing test, which made the divergence look
|
|
133
|
+
* like a decision.
|
|
148
134
|
*/
|
|
149
135
|
export declare const BUTTON_ROW_ACTIVATABLE_VECTORS: ReadonlyArray<ButtonRowActivatableVector>;
|
|
150
136
|
/** One step of a {@link WindowTitleVector}. */
|
|
@@ -157,25 +143,19 @@ export type WindowTitleStep = {
|
|
|
157
143
|
};
|
|
158
144
|
/** One `Adw.WindowTitle` expectation. */
|
|
159
145
|
export interface WindowTitleVector {
|
|
160
|
-
/** What the scenario is called. */
|
|
161
146
|
name: string;
|
|
162
147
|
/** The steps to run against a fresh window title, in order. */
|
|
163
148
|
steps: readonly WindowTitleStep[];
|
|
164
|
-
/** The title text afterwards. */
|
|
165
149
|
title: string;
|
|
166
|
-
/** Whether the title label is visible (C:207-208). */
|
|
167
150
|
titleVisible: boolean;
|
|
168
|
-
/** The subtitle text afterwards. */
|
|
169
151
|
subtitle: string;
|
|
170
|
-
/** Whether the subtitle label is visible (C:248-249). */
|
|
171
152
|
subtitleVisible: boolean;
|
|
172
153
|
/** Which property each `notify::*` named, in emission order. */
|
|
173
154
|
notified: readonly ('title' | 'subtitle')[];
|
|
174
|
-
/** Why this row exists. */
|
|
175
155
|
rule: string;
|
|
176
156
|
}
|
|
177
157
|
/**
|
|
178
|
-
* `adw_window_title_set_title` / `_set_subtitle
|
|
158
|
+
* `adw_window_title_set_title` / `_set_subtitle`.
|
|
179
159
|
*
|
|
180
160
|
* `null-over-empty-is-silent` is the one DIVERGENCE in this file, and it is
|
|
181
161
|
* deliberate: libadwaita would notify there, because its guard compares a
|
|
@@ -4,11 +4,10 @@ export interface AvatarInitialsVector {
|
|
|
4
4
|
text: string;
|
|
5
5
|
/** What `extract_initials_from_text` produces for it. */
|
|
6
6
|
initials: string;
|
|
7
|
-
/** Why this row exists — the rule or edge case it pins down. */
|
|
8
7
|
rule: string;
|
|
9
8
|
}
|
|
10
9
|
/**
|
|
11
|
-
* `extract_initials_from_text`
|
|
10
|
+
* `extract_initials_from_text` — the first character, plus the
|
|
12
11
|
* character after the LAST ASCII space when there is one.
|
|
13
12
|
*/
|
|
14
13
|
export declare const AVATAR_INITIALS_VECTORS: ReadonlyArray<AvatarInitialsVector>;
|
|
@@ -27,17 +26,16 @@ export interface AvatarFontSizeVector {
|
|
|
27
26
|
size: number;
|
|
28
27
|
/** `sqr_size - padding` for that diameter, rounded to 2dp for the table. */
|
|
29
28
|
maxFontSize: number;
|
|
30
|
-
/**
|
|
29
|
+
/** The pre-lift browser heuristic, kept as the counter-example. */
|
|
31
30
|
legacyWebGuess: number;
|
|
32
31
|
}
|
|
33
32
|
/**
|
|
34
|
-
* `update_font_size`'s cap
|
|
33
|
+
* `update_font_size`'s cap — the inscribed square
|
|
35
34
|
* `size / 1.4142` less `max(size * 0.4 - 5, 0)`.
|
|
36
35
|
*
|
|
37
|
-
* `legacyWebGuess` is kept in the table on purpose:
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* for 16px at size 31 and 13px at size 32.
|
|
36
|
+
* `legacyWebGuess` is kept in the table on purpose: `size * (size < 32 ? 0.5 : 0.4)`
|
|
37
|
+
* OVERFLOWS the cap at 28, 30, 31 and every size from 64 up (the initials spill out of the
|
|
38
|
+
* circle), and is not even monotonic — 16px at size 31, 13px at size 32.
|
|
41
39
|
*/
|
|
42
40
|
export declare const AVATAR_FONT_SIZE_VECTORS: ReadonlyArray<AvatarFontSizeVector>;
|
|
43
41
|
/** One `avatarMode` expectation. */
|
|
@@ -48,10 +46,10 @@ export interface AvatarModeVector {
|
|
|
48
46
|
mode: 'image' | 'initials' | 'icon';
|
|
49
47
|
rule: string;
|
|
50
48
|
}
|
|
51
|
-
/** `update_visibility
|
|
49
|
+
/** `update_visibility`. */
|
|
52
50
|
export declare const AVATAR_MODE_VECTORS: ReadonlyArray<AvatarModeVector>;
|
|
53
51
|
/**
|
|
54
|
-
* `g_str_hash` + `set_class_color
|
|
52
|
+
* `g_str_hash` + `set_class_color`.
|
|
55
53
|
*
|
|
56
54
|
* The non-ASCII rows are the ones that matter: GLib hashes the UTF-8 bytes as
|
|
57
55
|
* `signed char`, so a port reading UTF-16 code units picks a different colour
|