@gjsify/adwaita-core 0.36.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.
Files changed (61) hide show
  1. package/lib/esm/conformance/index.js +1 -1
  2. package/lib/esm/conformance/shortcut-label.js +1 -0
  3. package/lib/esm/index.js +1 -1
  4. package/lib/esm/shortcut-label.js +1 -0
  5. package/lib/types/about-dialog.d.ts +92 -98
  6. package/lib/types/action-row.d.ts +95 -125
  7. package/lib/types/avatar.d.ts +30 -37
  8. package/lib/types/banner.d.ts +25 -53
  9. package/lib/types/breakpoint.d.ts +6 -7
  10. package/lib/types/button-content.d.ts +41 -80
  11. package/lib/types/carousel.d.ts +175 -252
  12. package/lib/types/checks.d.ts +13 -30
  13. package/lib/types/chrome.d.ts +90 -136
  14. package/lib/types/color-scheme.d.ts +5 -6
  15. package/lib/types/conformance/about-dialog.d.ts +64 -91
  16. package/lib/types/conformance/action-row.d.ts +26 -46
  17. package/lib/types/conformance/avatar.d.ts +8 -10
  18. package/lib/types/conformance/banner.d.ts +17 -37
  19. package/lib/types/conformance/button-content.d.ts +24 -46
  20. package/lib/types/conformance/carousel.d.ts +35 -75
  21. package/lib/types/conformance/checks.d.ts +0 -4
  22. package/lib/types/conformance/chrome.d.ts +28 -36
  23. package/lib/types/conformance/data-grid.d.ts +28 -47
  24. package/lib/types/conformance/dialog.d.ts +4 -9
  25. package/lib/types/conformance/entry-row.d.ts +20 -39
  26. package/lib/types/conformance/index.d.ts +2 -0
  27. package/lib/types/conformance/navigation-view.d.ts +0 -4
  28. package/lib/types/conformance/popover.d.ts +4 -9
  29. package/lib/types/conformance/preferences.d.ts +15 -28
  30. package/lib/types/conformance/rows.d.ts +5 -12
  31. package/lib/types/conformance/shortcut-label.d.ts +34 -0
  32. package/lib/types/conformance/sidebar.d.ts +28 -49
  33. package/lib/types/conformance/spinner.d.ts +21 -27
  34. package/lib/types/conformance/split-button.d.ts +21 -43
  35. package/lib/types/conformance/split-view.d.ts +29 -36
  36. package/lib/types/conformance/tab-view.d.ts +32 -73
  37. package/lib/types/conformance/view-stack.d.ts +0 -12
  38. package/lib/types/conformance/view-switcher.d.ts +46 -114
  39. package/lib/types/conformance/wrap-box.d.ts +40 -63
  40. package/lib/types/data-grid.d.ts +38 -48
  41. package/lib/types/dialog.d.ts +39 -51
  42. package/lib/types/easing.d.ts +6 -12
  43. package/lib/types/entry-row.d.ts +94 -123
  44. package/lib/types/glib.d.ts +17 -25
  45. package/lib/types/index.d.ts +2 -0
  46. package/lib/types/length-unit.d.ts +7 -12
  47. package/lib/types/navigation-view.d.ts +62 -68
  48. package/lib/types/popover.d.ts +39 -66
  49. package/lib/types/preferences.d.ts +83 -100
  50. package/lib/types/rows.d.ts +45 -63
  51. package/lib/types/shortcut-label.d.ts +79 -0
  52. package/lib/types/shortcut-label.spec.d.ts +2 -0
  53. package/lib/types/sidebar.d.ts +95 -121
  54. package/lib/types/spinner.d.ts +39 -61
  55. package/lib/types/split-button.d.ts +78 -134
  56. package/lib/types/split-view.d.ts +74 -89
  57. package/lib/types/tab-view.d.ts +174 -256
  58. package/lib/types/view-stack.d.ts +87 -129
  59. package/lib/types/view-switcher.d.ts +126 -211
  60. package/lib/types/wrap-box.d.ts +62 -123
  61. package/package.json +3 -3
@@ -4,70 +4,54 @@ export interface BannerDefaultVector {
4
4
  property: 'title' | 'button-label' | 'revealed' | 'use-markup' | 'button-style';
5
5
  /** The `GParamSpec` default. */
6
6
  value: string | boolean;
7
- /** Why this row exists — the rule or edge case it pins down. */
8
7
  rule: string;
9
8
  }
10
9
  /**
11
- * The five `GParamSpec` defaults (adw-banner.c:391-459).
12
- *
13
- * `revealed: false` and `useMarkup: true` are the two that were wrong in the
14
- * ports. `@gjsify/adwaita-nativescript` initialised `_revealed = true` and its
15
- * constructor never wrote `visibility`, so a banner showed itself on a device
16
- * and stayed hidden in the browser; both ports made `use-markup` opt-in, and the
17
- * browser element's comment claimed that WAS the C default.
10
+ * The five `GParamSpec` defaults. `revealed: false` and `use-markup: true` were wrong
11
+ * in both ports in opposite directions — a banner showed itself on a device and stayed
12
+ * hidden in the browser.
18
13
  */
19
14
  export declare const BANNER_DEFAULT_VECTORS: ReadonlyArray<BannerDefaultVector>;
20
15
  /** One button-visibility expectation. */
21
16
  export interface BannerButtonVisibleVector {
22
17
  /** The `button-label` value, or `null` for the `NULL` the C setter accepts. */
23
18
  label: string | null;
24
- /** Whether `gtk_widget_set_visible` is handed a true value (:663). */
19
+ /** Whether `gtk_widget_set_visible` is handed a true value. */
25
20
  visible: boolean;
26
- /** Why this row exists. */
27
21
  rule: string;
28
22
  }
29
23
  /**
30
- * `adw_banner_set_button_label` (:663) — `gtk_widget_set_visible (button, label
31
- * && label[0])`.
32
- *
33
- * A FIRST-CHARACTER test. The whitespace rows are the ones that matter: a
34
- * renderer that trimmed before testing would hide a button GTK draws.
24
+ * `adw_banner_set_button_label` — `gtk_widget_set_visible (button, label && label[0])`,
25
+ * a FIRST-CHARACTER test. The whitespace rows are the ones that matter: a renderer that
26
+ * trimmed before testing would hide a button GTK draws.
35
27
  */
36
28
  export declare const BANNER_BUTTON_VISIBLE_VECTORS: ReadonlyArray<BannerButtonVisibleVector>;
37
29
  /** One button-label text expectation. */
38
30
  export interface BannerButtonTextVector {
39
- /** The `button-label` value. */
40
31
  label: string;
41
32
  /** What a renderer without an accelerator layer paints. */
42
33
  text: string;
43
- /** Why this row exists. */
44
34
  rule: string;
45
35
  }
46
36
  /**
47
37
  * The banner button's text after mnemonic resolution.
48
38
  *
49
- * The template pins the BUTTON to `use-underline=True` (adw-banner.ui:33) with
50
- * no property to turn it off, and pins the TITLE label to `use-underline=False`
51
- * (adw-banner.ui:20). So the same underscore is an accelerator marker in the
52
- * button and a literal in the title — which is why there is no title
53
- * counterpart to this table. Neither port stripped anything.
39
+ * The template pins the BUTTON to `use-underline=True` with no property to turn it off
40
+ * and the TITLE label to `use-underline=False`, so the same underscore is an
41
+ * accelerator marker in the button and a literal in the title — hence no title
42
+ * counterpart to this table.
54
43
  */
55
44
  export declare const BANNER_BUTTON_TEXT_VECTORS: ReadonlyArray<BannerButtonTextVector>;
56
45
  /** One `button-style` → style-class expectation. */
57
46
  export interface BannerButtonStyleVector {
58
47
  /** The `AdwBannerButtonStyle` nick. */
59
48
  style: 'default' | 'suggested';
60
- /** The classes on the button node (:764-774). */
61
49
  classes: readonly string[];
62
- /** Why this row exists. */
63
50
  rule: string;
64
51
  }
65
52
  /**
66
- * `adw_banner_set_button_style`'s switch (:764-774) — the property adds or
67
- * removes exactly one class and touches nothing else.
68
- *
69
- * Present in this vendored source since 1.7 (:34) and in NEITHER renderer, so a
70
- * banner asking for a suggested action button got a grey one in both.
53
+ * `adw_banner_set_button_style`'s switch (Since 1.7) — the property adds or removes
54
+ * exactly one class and touches nothing else.
71
55
  */
72
56
  export declare const BANNER_BUTTON_STYLE_VECTORS: ReadonlyArray<BannerButtonStyleVector>;
73
57
  /** One `button-style` attribute-parsing expectation. */
@@ -76,16 +60,12 @@ export interface BannerButtonStyleParseVector {
76
60
  input: string | null;
77
61
  /** The `AdwBannerButtonStyle` it resolves to. */
78
62
  style: 'default' | 'suggested';
79
- /** Why this row exists. */
80
63
  rule: string;
81
64
  }
82
65
  /**
83
- * Turning a renderer-supplied STRING into the enum.
84
- *
85
- * Not a C behaviour and cannot be: `adw_banner_set_button_style` range-guards an
86
- * `AdwBannerButtonStyle` it has already been handed (:756-757), so an
87
- * unrepresentable string never reaches it. Falling back to the property default
88
- * is what `g_object_set` does with an invalid nick, and it is the only answer
89
- * that keeps the two renderers agreeing on the same markup.
66
+ * Turning a renderer-supplied STRING into the enum. Not a C behaviour and cannot be:
67
+ * `adw_banner_set_button_style` range-guards an `AdwBannerButtonStyle` it has already
68
+ * been handed, so an unrepresentable string never reaches it. Falling back to the
69
+ * property default is what `g_object_set` does with an invalid nick.
90
70
  */
91
71
  export declare const BANNER_BUTTON_STYLE_PARSE_VECTORS: ReadonlyArray<BannerButtonStyleParseVector>;
@@ -4,87 +4,69 @@ export interface ButtonContentDefaultVector {
4
4
  property: 'icon-name' | 'label' | 'use-underline' | 'can-shrink';
5
5
  /** The `GParamSpec` default. */
6
6
  value: string | boolean;
7
- /** Why this row exists. */
8
7
  rule: string;
9
8
  }
10
- /** The four `GParamSpec` defaults (adw-button-content.c:229-272). */
9
+ /** The four `GParamSpec` defaults. */
11
10
  export declare const BUTTON_CONTENT_DEFAULT_VECTORS: ReadonlyArray<ButtonContentDefaultVector>;
12
11
  /** One icon-name resolution expectation. */
13
12
  export interface ButtonContentIconVector {
14
- /** The `icon-name` value. */
15
13
  iconName: string;
16
- /** The name the `GtkImage` is actually set from (:355-358). */
14
+ /** The name the `GtkImage` is actually set from. */
17
15
  resolved: string;
18
16
  /** Whether the resolved name is the empty-slot fallback rather than an app value. */
19
17
  isFallback: boolean;
20
- /** Why this row exists. */
21
18
  rule: string;
22
19
  }
23
20
  /**
24
- * `adw_button_content_set_icon_name` (:355-358).
21
+ * `adw_button_content_set_icon_name`.
25
22
  *
26
- * THE DOCS AND THE CODE DISAGREE AND THIS TABLE FOLLOWS THE CODE. Both doc
27
- * comments say an empty `icon-name` means the icon "is not shown" (:228 on the
28
- * property, :343 on the setter). Nothing in the widget hides it:
29
- * `gtk_widget_set_visible` is called on the LABEL only (:300, :398), `init` sets
30
- * the image to `image-missing` while `icon_name` is still `""` (:284, :294), and
31
- * the setter re-applies that fallback for every empty value (:355-356). So a
32
- * default-constructed `AdwButtonContent` draws the broken-image glyph, and both
33
- * ports — which followed the prose and hid the icon — are the ones that diverge.
34
- * Encoding the prose would have pinned their guess under the word "conformance".
23
+ * The upstream docs and the code disagree and this table follows the CODE: both doc
24
+ * comments say an empty `icon-name` means the icon "is not shown", but nothing in the
25
+ * widget hides it — `gtk_widget_set_visible` is called on the LABEL only, `init` sets
26
+ * the image to `image-missing` while `icon_name` is still `""`, and the setter
27
+ * re-applies that fallback for every empty value. A default-constructed
28
+ * `AdwButtonContent` therefore draws the broken-image glyph.
35
29
  */
36
30
  export declare const BUTTON_CONTENT_ICON_VECTORS: ReadonlyArray<ButtonContentIconVector>;
37
31
  /** One label-slot expectation. */
38
32
  export interface ButtonContentLabelVector {
39
- /** The `label` value. */
40
33
  label: string;
41
- /** Whether the label node is in the tree (:398). */
34
+ /** Whether the label node is in the tree. */
42
35
  visible: boolean;
43
- /** Whether the icon takes the box's free space (:399). */
36
+ /** Whether the icon takes the box's free space. */
44
37
  iconExpands: boolean;
45
- /** Why this row exists. */
46
38
  rule: string;
47
39
  }
48
40
  /**
49
- * `adw_button_content_set_label` (:398-399) — the two calls it makes, both keyed
41
+ * `adw_button_content_set_label` — the two calls it makes, both keyed
50
42
  * on `label[0]` and therefore exact complements.
51
43
  */
52
44
  export declare const BUTTON_CONTENT_LABEL_VECTORS: ReadonlyArray<ButtonContentLabelVector>;
53
45
  /** One label-text expectation. */
54
46
  export interface ButtonContentTextVector {
55
- /** The `label` value. */
56
47
  label: string;
57
- /** The `use-underline` value. */
58
48
  useUnderline: boolean;
59
49
  /** What a renderer without an accelerator layer paints. */
60
50
  text: string;
61
- /** Why this row exists. */
62
51
  rule: string;
63
52
  }
64
53
  /**
65
- * `adw_button_content_set_use_underline` (:442) applied to the label.
66
- *
67
- * Absent from both ports, and it is the property the class docs single out —
68
- * "handles … connecting the mnemonic to the button automatically" (:42-43). The
69
- * default is FALSE (:253-256), so an underscore in an unconfigured button
70
- * content is a LITERAL, unlike the banner's action button.
54
+ * `adw_button_content_set_use_underline` applied to the label — the property the class
55
+ * docs single out ("handles … connecting the mnemonic to the button automatically").
56
+ * The default is FALSE, so an underscore in an unconfigured button content is a
57
+ * LITERAL, unlike the banner's action button.
71
58
  */
72
59
  export declare const BUTTON_CONTENT_TEXT_VECTORS: ReadonlyArray<ButtonContentTextVector>;
73
60
  /** One `can-shrink` expectation. */
74
61
  export interface ButtonContentEllipsizeVector {
75
- /** The `can-shrink` value. */
76
62
  canShrink: boolean;
77
- /** The label's `PangoEllipsizeMode` (:489-491). */
63
+ /** The label's `PangoEllipsizeMode`. */
78
64
  ellipsize: 'none' | 'end';
79
- /** Why this row exists. */
80
65
  rule: string;
81
66
  }
82
67
  /**
83
- * `adw_button_content_set_can_shrink` (:489-491), which the getter reads back as
84
- * `ellipsize != PANGO_ELLIPSIZE_NONE` (:462).
85
- *
86
- * The browser port had this; the NativeScript port had no such property, so the
87
- * shared story's `canShrink` control did nothing there.
68
+ * `adw_button_content_set_can_shrink`, which the getter reads back as
69
+ * `ellipsize != PANGO_ELLIPSIZE_NONE`.
88
70
  */
89
71
  export declare const BUTTON_CONTENT_ELLIPSIZE_VECTORS: ReadonlyArray<ButtonContentEllipsizeVector>;
90
72
  /** One style-class targeting expectation. */
@@ -93,18 +75,14 @@ export interface ButtonContentStyleTargetVector {
93
75
  ancestors: ReadonlyArray<'button' | 'menu-button' | 'split-button' | 'other'>;
94
76
  /** Index into {@link ancestors} that receives `image-text-button`, or `null`. */
95
77
  target: number | null;
96
- /** Why this row exists. */
97
78
  rule: string;
98
79
  }
99
80
  /**
100
- * `adw_button_content_root` (:108-116) — nearest `GtkButton`, then ONE
101
- * substitution: if that button's DIRECT parent is an `AdwSplitButton`, the class
102
- * moves to the split button (:112-113).
81
+ * `adw_button_content_root` — nearest `GtkButton`, then ONE substitution: if that
82
+ * button's DIRECT parent is an `AdwSplitButton`, the class moves to the split button.
103
83
  *
104
- * Neither renderer applied the class to anything at all, so every row here is a
105
- * new assertion rather than a pinned behaviour. The split-button row is the one
106
- * with a CSS consequence beyond padding: the class on the `splitbutton` node
107
- * selects `splitbutton.image-text-button > button` (_buttons.scss:499-507),
108
- * which is a different declaration block from the plain-button one.
84
+ * The split-button row is the one with a CSS consequence beyond padding: the class on
85
+ * the `splitbutton` node selects `splitbutton.image-text-button > button`, a different
86
+ * declaration block from the plain-button one.
109
87
  */
110
88
  export declare const BUTTON_CONTENT_STYLE_TARGET_VECTORS: ReadonlyArray<ButtonContentStyleTargetVector>;
@@ -5,10 +5,11 @@ export interface CarouselSnapPointVector {
5
5
  sizes: readonly number[];
6
6
  /** `snapPoint[i] = (Σ_{j≤i} size[j]) − 1`. */
7
7
  snapPoints: readonly number[];
8
- /** Why this row exists. */
9
8
  rule: string;
10
9
  }
11
- /** `adw_carousel_size_allocate`'s accumulation (adw-carousel.c:777-789). *
10
+ /**
11
+ * `adw_carousel_size_allocate`'s accumulation.
12
+ *
12
13
  * 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
  */
14
15
  export declare const CAROUSEL_SNAP_POINT_VECTORS: ReadonlyArray<CarouselSnapPointVector>;
@@ -18,82 +19,72 @@ export interface CarouselSizesFromSnapPointsVector {
18
19
  snapPoints: readonly number[];
19
20
  /** `sizes[0] = points[0] + 1`, `sizes[i] = points[i] − points[i−1]`. */
20
21
  sizes: readonly number[];
21
- /** Why this row exists. */
22
22
  rule: string;
23
23
  }
24
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.
25
+ * The inverse both indicators reconstruct sizes with — the only channel through which an
26
+ * indicator can learn per-page reveal state.
28
27
  *
29
28
  * 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
29
  */
31
30
  export declare const CAROUSEL_SIZES_FROM_SNAP_POINTS_VECTORS: ReadonlyArray<CarouselSizesFromSnapPointsVector>;
32
31
  /** One `carouselRange` expectation. */
33
32
  export interface CarouselRangeVector {
34
- /** The snap points the range is derived from. */
35
33
  snapPoints: readonly number[];
36
- /** Pending `position_shift`, which C folds into the bound (:219). */
34
+ /** Pending `position_shift`, which C folds into the bound. */
37
35
  positionShift: number;
38
36
  /** Always 0. */
39
37
  lower: number;
40
38
  /** `MAX (0, positionShift + last snap point)`. */
41
39
  upper: number;
42
- /** Why this row exists. */
43
40
  rule: string;
44
41
  }
45
- /** `get_range` (adw-carousel.c:207-220). *
42
+ /**
43
+ * `get_range`.
44
+ *
46
45
  * 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
46
  */
48
47
  export declare const CAROUSEL_RANGE_VECTORS: ReadonlyArray<CarouselRangeVector>;
49
48
  /** One `carouselClampPosition` expectation. */
50
49
  export interface CarouselClampVector {
51
- /** The proposed position. */
52
50
  position: number;
53
- /** The snap points defining the range. */
54
51
  snapPoints: readonly number[];
55
52
  /** `CLAMP (position, lower, upper)`. */
56
53
  clamped: number;
57
- /** Why this row exists. */
58
54
  rule: string;
59
55
  }
60
- /** `set_position`'s guard (adw-carousel.c:269). *
56
+ /**
57
+ * `set_position`'s guard.
58
+ *
61
59
  * 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
60
  */
63
61
  export declare const CAROUSEL_CLAMP_VECTORS: ReadonlyArray<CarouselClampVector>;
64
62
  /** One `carouselPageAtPosition` expectation. */
65
63
  export interface CarouselPageAtPositionVector {
66
- /** The scroll position to resolve. */
67
64
  position: number;
68
65
  /** The snap points of the pages that count. */
69
66
  snapPoints: readonly number[];
70
67
  /** The page index, `-1` when there are no pages. */
71
68
  page: number;
72
- /** Why this row exists. */
73
69
  rule: string;
74
70
  }
75
71
  /**
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
72
+ * `get_page_at_position` → `get_closest_child_at` . The `.5` rows are the regression pins: C's comparison is a strict
78
73
  * `>`, so an equidistant LATER page never replaces the earlier one, while both
79
74
  * ports used `Math.round`, which rounds .5 up.
80
75
  */
81
76
  export declare const CAROUSEL_PAGE_AT_POSITION_VECTORS: ReadonlyArray<CarouselPageAtPositionVector>;
82
77
  /** One `carouselNavigateTarget` expectation. */
83
78
  export interface CarouselNavigateVector {
84
- /** Current scroll position. */
85
79
  position: number;
86
- /** Number of pages. */
87
80
  nPages: number;
88
- /** Which way the key moves. */
89
81
  direction: CarouselDirection;
90
82
  /** The target page, `null` when C returns FALSE. */
91
83
  target: number | null;
92
- /** Why this row exists. */
93
84
  rule: string;
94
85
  }
95
86
  /**
96
- * `navigate_to_direction` (adw-carousel.c:475-508).
87
+ * `navigate_to_direction`.
97
88
  *
98
89
  * The rounding here is C's `round()` — half AWAY FROM ZERO — and it is
99
90
  * deliberately not the half-down tie-break of
@@ -104,21 +95,19 @@ export interface CarouselNavigateVector {
104
95
  export declare const CAROUSEL_NAVIGATE_VECTORS: ReadonlyArray<CarouselNavigateVector>;
105
96
  /** One `carouselWheelStep` expectation. */
106
97
  export interface CarouselWheelVector {
107
- /** Horizontal delta. */
108
98
  deltaX: number;
109
- /** Vertical delta. */
110
99
  deltaY: number;
111
- /** The carousel's orientation. */
112
100
  orientation: CarouselOrientation;
113
101
  /** The `GdkInputSource` class of the event. */
114
102
  source: CarouselScrollSource;
115
103
  /** Pages to step; `0` means the event propagates. */
116
104
  step: -1 | 0 | 1;
117
- /** Why this row exists. */
118
105
  rule: string;
119
106
  }
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
107
+ /**
108
+ * `scroll_cb`'s axis/source rules.
109
+ *
110
+ * CORE-ONLY: GAP — the browser carousel routes `wheel` through `CarouselState.handleWheel` but publishes no per-notch answer to assert, and the NativeScript one has no wheel at all. Tracked in #1072
122
111
  */
123
112
  export declare const CAROUSEL_WHEEL_VECTORS: ReadonlyArray<CarouselWheelVector>;
124
113
  /** One step of a wheel-lockout script. */
@@ -129,7 +118,6 @@ export interface CarouselWheelLockoutStep {
129
118
  deltaY: number;
130
119
  /** What `handleWheel` must return. */
131
120
  step: -1 | 0 | 1;
132
- /** The position afterwards. */
133
121
  position: number;
134
122
  }
135
123
  /** One end-to-end wheel-lockout expectation. */
@@ -138,17 +126,14 @@ export interface CarouselWheelLockoutVector {
138
126
  pages: number;
139
127
  /** The events, in order, each with the clock reading it arrives at. */
140
128
  steps: readonly CarouselWheelLockoutStep[];
141
- /** Why this row exists. */
142
129
  rule: string;
143
130
  }
144
131
  /**
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.
132
+ * `SCROLL_TIMEOUT_DURATION` and the `scroll_timeout_id` gate — a wheel notch arms a 150 ms
133
+ * lockout during which further notches propagate instead of paging.
148
134
  *
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.
135
+ * A non-decaying delta accumulator is the wrong shape for this: +30 then −30 cancels out
136
+ * where libadwaita pages twice, and a slow wheel never reaches the threshold at all.
152
137
  *
153
138
  * 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
139
  */
@@ -157,28 +142,25 @@ export declare const CAROUSEL_WHEEL_LOCKOUT_VECTORS: ReadonlyArray<CarouselWheel
157
142
  export interface CarouselReorderShiftVector {
158
143
  /** Snap point of the page the carousel is closest to. */
159
144
  closestPoint: number;
160
- /** Snap point the moved page had. */
161
145
  oldPoint: number;
162
- /** Snap point it lands on. */
163
146
  newPoint: number;
164
- /** The moved page's reveal size. */
165
147
  size: number;
166
148
  /** How far `position` must move so the visible page does not jump. */
167
149
  shift: number;
168
- /** Why this row exists. */
169
150
  rule: string;
170
151
  }
171
- /** The three branches of `adw_carousel_reorder`'s compensation (adw-carousel.c:1488-1495). *
152
+ /**
153
+ * The three branches of `adw_carousel_reorder`'s compensation.
154
+ *
172
155
  * 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
156
  */
174
157
  export declare const CAROUSEL_REORDER_SHIFT_VECTORS: ReadonlyArray<CarouselReorderShiftVector>;
175
158
  /**
176
159
  * One operation in a page-list script.
177
160
  *
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}.
161
+ * `insert` and `remove` mean "and finish the reveal immediately", which is what a carousel
162
+ * with the default `reveal-duration` of 0 does and what both renderers' page APIs do. The
163
+ * mid-animation states are pinned separately by {@link CAROUSEL_REVEAL_VECTORS}.
182
164
  */
183
165
  export type CarouselPageOp = {
184
166
  readonly kind: 'insert';
@@ -208,9 +190,7 @@ export interface CarouselStateSnapshot {
208
190
  nPages: number;
209
191
  /** Reveal sizes of every TRACKED child, including ones being removed. */
210
192
  sizes: readonly number[];
211
- /** Snap points of every tracked child. */
212
193
  snapPoints: readonly number[];
213
- /** The clamped fractional position. */
214
194
  position: number;
215
195
  /** The current page index, `-1` when empty. */
216
196
  page: number;
@@ -219,24 +199,17 @@ export interface CarouselStateSnapshot {
219
199
  export interface CarouselPageListVector {
220
200
  /** Pages the carousel starts with, all settled at size 1. */
221
201
  pages: readonly string[];
222
- /** The script, applied in order. */
223
202
  ops: readonly CarouselPageOp[];
224
203
  /** What each op returned (`settle` reports `true`). */
225
204
  opResults: readonly boolean[];
226
205
  /** The `page-changed` indices emitted while the script ran, in order. */
227
206
  pageChanged: readonly number[];
228
- /** The state afterwards. */
229
207
  expected: CarouselStateSnapshot;
230
- /** Why this row exists. */
231
208
  rule: string;
232
209
  }
233
210
  /**
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.
211
+ * Insert / remove / reorder ordering and the position compensation, on a carousel whose
212
+ * reveals complete instantly — the shape both renderers expose.
240
213
  */
241
214
  export declare const CAROUSEL_PAGE_LIST_VECTORS: ReadonlyArray<CarouselPageListVector>;
242
215
  /** One operation in a reveal script — the mid-animation half of the state machine. */
@@ -262,37 +235,24 @@ export type CarouselRevealOp = {
262
235
  export interface CarouselRevealVector {
263
236
  /** Pages the carousel starts with, all settled at size 1. */
264
237
  pages: readonly string[];
265
- /** The script, applied in order. */
266
238
  ops: readonly CarouselRevealOp[];
267
- /** The state afterwards. */
268
239
  expected: CarouselStateSnapshot;
269
- /** Why this row exists. */
270
240
  rule: string;
271
241
  }
272
242
  /**
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.
243
+ * The reveal lifecycle: a page enters at size 0 and grows, leaves `n-pages` before its
244
+ * geometry, and drags the position along whenever it sits at or before the page on screen.
279
245
  */
280
246
  export declare const CAROUSEL_REVEAL_VECTORS: ReadonlyArray<CarouselRevealVector>;
281
247
  /** One property-default expectation. */
282
248
  export interface CarouselPropertyDefaultVector {
283
- /** The `CarouselState` accessor. */
284
249
  property: 'orientation' | 'interactive' | 'allowScrollWheel' | 'allowLongSwipes' | 'spacing' | 'revealDuration';
285
- /** What a freshly constructed carousel reports. */
286
250
  value: string | number | boolean;
287
- /** Why this row exists. */
288
251
  rule: string;
289
252
  }
290
253
  /**
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.
254
+ * The `AdwCarousel` property defaults. Two are regression pins: `allow-scroll-wheel` is
255
+ * TRUE, which a bare attribute-presence read inverts (a plain `<adw-carousel>` then ignores
256
+ * the wheel entirely), and `allow-long-swipes` is FALSE.
297
257
  */
298
258
  export declare const CAROUSEL_PROPERTY_DEFAULT_VECTORS: ReadonlyArray<CarouselPropertyDefaultVector>;
@@ -7,22 +7,18 @@ export interface RadioGroupStep {
7
7
  op: 'select';
8
8
  /** The group name — what `name` scopes in HTML, and what the state keys on. */
9
9
  name: string;
10
- /** The member's value. */
11
10
  value: string;
12
11
  }
13
12
  /** One radio-group scenario. */
14
13
  export interface RadioGroupVector {
15
- /** Short scenario name. */
16
14
  name: string;
17
15
  /** The members that exist, as `[group, value]` pairs — what the renderer mounts. */
18
16
  members: ReadonlyArray<readonly [string, string]>;
19
- /** The mutations, applied in order to a fresh state. */
20
17
  steps: readonly RadioGroupStep[];
21
18
  /** `selected(group)` afterwards, one entry per group in {@link members}. */
22
19
  selected: ReadonlyArray<readonly [string, string | null]>;
23
20
  /** Every change the state emits, in order. This IS the renderer's repaint feed. */
24
21
  emitted: ReadonlyArray<RadioGroupChange>;
25
- /** Why this row exists — the rule or edge case it pins down. */
26
22
  rule: string;
27
23
  }
28
24
  /** `RadioGroupState.select` and the exclusivity it publishes. */