@gjsify/adwaita-nativescript 0.51.1 → 0.53.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 (138) hide show
  1. package/lib/esm/builder/index.js +1 -0
  2. package/lib/esm/index.js +1 -1
  3. package/lib/esm/namespace/adw.js +1 -1
  4. package/lib/esm/namespace/gio.js +1 -0
  5. package/lib/esm/namespace/gtk.js +1 -1
  6. package/lib/esm/values/sidebar.js +1 -0
  7. package/lib/esm/values/tab-page.js +1 -0
  8. package/lib/esm/widgets/adw-action-row.js +1 -1
  9. package/lib/esm/widgets/adw-alert-dialog.js +1 -1
  10. package/lib/esm/widgets/adw-avatar.js +1 -1
  11. package/lib/esm/widgets/adw-bottom-sheet.js +1 -1
  12. package/lib/esm/widgets/adw-button-row.js +1 -1
  13. package/lib/esm/widgets/adw-carousel-indicator-dots.js +1 -0
  14. package/lib/esm/widgets/adw-carousel-indicator-lines.js +1 -0
  15. package/lib/esm/widgets/adw-carousel.js +1 -1
  16. package/lib/esm/widgets/adw-clamp.js +1 -1
  17. package/lib/esm/widgets/adw-combo-row.js +1 -1
  18. package/lib/esm/widgets/adw-expander-row.js +1 -1
  19. package/lib/esm/widgets/adw-header-bar.js +1 -1
  20. package/lib/esm/widgets/adw-navigation-page.js +1 -0
  21. package/lib/esm/widgets/adw-navigation-view.js +1 -1
  22. package/lib/esm/widgets/adw-preferences-group.js +1 -1
  23. package/lib/esm/widgets/adw-shortcut-label.js +1 -1
  24. package/lib/esm/widgets/adw-sidebar.js +1 -1
  25. package/lib/esm/widgets/adw-spin-row.js +1 -1
  26. package/lib/esm/widgets/adw-status-page.js +1 -1
  27. package/lib/esm/widgets/adw-tab-view.js +1 -1
  28. package/lib/esm/widgets/adw-toast-overlay.js +1 -1
  29. package/lib/esm/widgets/adw-toggle-group.js +1 -1
  30. package/lib/esm/widgets/adw-toggle.js +1 -0
  31. package/lib/esm/widgets/adw-toolbar-view.js +1 -1
  32. package/lib/esm/widgets/adw-view-stack.js +1 -1
  33. package/lib/esm/widgets/adw-view-switcher-bar.js +1 -1
  34. package/lib/esm/widgets/bottom-sheet-state.js +1 -1
  35. package/lib/esm/widgets/box-layout.js +1 -1
  36. package/lib/esm/widgets/builder-slots.js +1 -1
  37. package/lib/esm/widgets/carousel-indicator-base.js +1 -0
  38. package/lib/esm/widgets/carousel-state.js +1 -1
  39. package/lib/esm/widgets/chrome.js +1 -1
  40. package/lib/esm/widgets/gtk-action-bar.js +1 -0
  41. package/lib/esm/widgets/gtk-box.js +1 -1
  42. package/lib/esm/widgets/gtk-button.js +1 -1
  43. package/lib/esm/widgets/gtk-drop-down.js +1 -1
  44. package/lib/esm/widgets/gtk-label.js +1 -1
  45. package/lib/esm/widgets/gtk-menu-button.js +1 -1
  46. package/lib/esm/widgets/icon-theme.js +1 -1
  47. package/lib/esm/widgets/id-reference.js +1 -0
  48. package/lib/esm/widgets/index.js +1 -1
  49. package/lib/esm/widgets/signals.js +1 -1
  50. package/lib/esm/widgets/split-view-base.js +1 -1
  51. package/lib/esm/widgets/view-stack-page.js +1 -0
  52. package/lib/esm/widgets/view-switcher-base.js +1 -1
  53. package/lib/esm/widgets/widget-layout.js +1 -0
  54. package/lib/types/blueprint-markup.spec.d.ts +4 -0
  55. package/lib/types/blueprint-trees.spec.d.ts +1 -0
  56. package/lib/types/builder/index.d.ts +70 -0
  57. package/lib/types/clamp-child.spec.d.ts +2 -0
  58. package/lib/types/gallery-blueprints.spec.d.ts +1 -0
  59. package/lib/types/gtk-value-doors.spec.d.ts +1 -0
  60. package/lib/types/index.d.ts +2 -1
  61. package/lib/types/namespace/adw.d.ts +8 -0
  62. package/lib/types/namespace/gio.d.ts +1 -0
  63. package/lib/types/namespace/gtk.d.ts +3 -0
  64. package/lib/types/shared-trees.spec.d.ts +2 -0
  65. package/lib/types/testing/ns-core.d.mts +340 -0
  66. package/lib/types/value-lists.spec.d.ts +1 -0
  67. package/lib/types/values/sidebar.d.ts +46 -0
  68. package/lib/types/values/tab-page.d.ts +16 -0
  69. package/lib/types/view-switcher-stack.spec.d.ts +1 -0
  70. package/lib/types/widgets/adw-about-dialog.d.ts +12 -0
  71. package/lib/types/widgets/adw-action-row.d.ts +22 -0
  72. package/lib/types/widgets/adw-alert-dialog.d.ts +18 -1
  73. package/lib/types/widgets/adw-avatar.d.ts +12 -0
  74. package/lib/types/widgets/adw-banner.d.ts +12 -0
  75. package/lib/types/widgets/adw-bottom-sheet.d.ts +77 -6
  76. package/lib/types/widgets/adw-button-content.d.ts +12 -0
  77. package/lib/types/widgets/adw-button-row.d.ts +21 -0
  78. package/lib/types/widgets/adw-carousel-indicator-dots.d.ts +7 -0
  79. package/lib/types/widgets/adw-carousel-indicator-lines.d.ts +7 -0
  80. package/lib/types/widgets/adw-carousel.d.ts +31 -15
  81. package/lib/types/widgets/adw-clamp.d.ts +19 -0
  82. package/lib/types/widgets/adw-combo-row.d.ts +20 -1
  83. package/lib/types/widgets/adw-data-grid.d.ts +12 -0
  84. package/lib/types/widgets/adw-expander-row.d.ts +2 -0
  85. package/lib/types/widgets/adw-header-bar.d.ts +14 -0
  86. package/lib/types/widgets/adw-image-button.d.ts +12 -0
  87. package/lib/types/widgets/adw-navigation-page.d.ts +63 -0
  88. package/lib/types/widgets/adw-navigation-view.d.ts +18 -5
  89. package/lib/types/widgets/adw-preferences-dialog.d.ts +12 -0
  90. package/lib/types/widgets/adw-preferences-group.d.ts +14 -0
  91. package/lib/types/widgets/adw-preferences-page.d.ts +12 -0
  92. package/lib/types/widgets/adw-shortcut-label.d.ts +12 -0
  93. package/lib/types/widgets/adw-sidebar.d.ts +26 -0
  94. package/lib/types/widgets/adw-slider-row.d.ts +12 -0
  95. package/lib/types/widgets/adw-spin-row.d.ts +12 -1
  96. package/lib/types/widgets/adw-spinner.d.ts +12 -0
  97. package/lib/types/widgets/adw-split-button.d.ts +12 -0
  98. package/lib/types/widgets/adw-status-page.d.ts +46 -0
  99. package/lib/types/widgets/adw-tab-view.d.ts +60 -27
  100. package/lib/types/widgets/adw-toast-overlay.d.ts +20 -0
  101. package/lib/types/widgets/adw-toggle-group.d.ts +51 -3
  102. package/lib/types/widgets/adw-toggle.d.ts +41 -0
  103. package/lib/types/widgets/adw-toolbar-view.d.ts +22 -1
  104. package/lib/types/widgets/adw-view-stack.d.ts +53 -7
  105. package/lib/types/widgets/adw-view-switcher-bar.d.ts +19 -2
  106. package/lib/types/widgets/adw-window-title.d.ts +12 -0
  107. package/lib/types/widgets/adw-wrap-box.d.ts +12 -0
  108. package/lib/types/widgets/avatar-view.d.ts +1 -1
  109. package/lib/types/widgets/bottom-sheet-state.d.ts +40 -7
  110. package/lib/types/widgets/box-layout.d.ts +3 -17
  111. package/lib/types/widgets/builder-slots.d.ts +48 -0
  112. package/lib/types/widgets/button-content.d.ts +4 -3
  113. package/lib/types/widgets/carousel-indicator-base.d.ts +54 -0
  114. package/lib/types/widgets/carousel-state.d.ts +12 -9
  115. package/lib/types/widgets/chrome.d.ts +32 -6
  116. package/lib/types/widgets/construct-props.d.ts +46 -5
  117. package/lib/types/widgets/gtk-action-bar.d.ts +53 -0
  118. package/lib/types/widgets/gtk-box.d.ts +12 -0
  119. package/lib/types/widgets/gtk-button.d.ts +27 -0
  120. package/lib/types/widgets/gtk-drop-down.d.ts +23 -1
  121. package/lib/types/widgets/gtk-entry.d.ts +12 -0
  122. package/lib/types/widgets/gtk-image.d.ts +12 -0
  123. package/lib/types/widgets/gtk-label.d.ts +47 -1
  124. package/lib/types/widgets/gtk-menu-button.d.ts +22 -0
  125. package/lib/types/widgets/id-reference.d.ts +13 -0
  126. package/lib/types/widgets/index.d.ts +16 -5
  127. package/lib/types/widgets/signals.d.ts +14 -1
  128. package/lib/types/widgets/split-view-base.d.ts +26 -2
  129. package/lib/types/widgets/tab-view-state.d.ts +3 -3
  130. package/lib/types/widgets/view-stack-page.d.ts +98 -0
  131. package/lib/types/widgets/view-stack-state.d.ts +7 -3
  132. package/lib/types/widgets/view-switcher-base.d.ts +62 -0
  133. package/lib/types/widgets/widget-layout.d.ts +50 -0
  134. package/package.json +21 -11
  135. package/src/theme/adwaita.css +123 -2
  136. package/lib/esm/widgets/label-text.js +0 -1
  137. package/lib/types/widgets/label-text.d.ts +0 -13
  138. /package/lib/types/{label-text.spec.d.ts → gio-menu.spec.d.ts} +0 -0
@@ -0,0 +1,53 @@
1
+ import type { View } from '@nativescript/core';
2
+ import { GridLayout, StackLayout } from '@nativescript/core';
3
+ import { type ConstructProps } from './construct-props.js';
4
+ declare const GtkActionBar_base: (abstract new (...args: any[]) => {
5
+ connect(eventName: string, callback: (self: /*elided*/ any, data: import("@nativescript/core").EventData) => void): number;
6
+ disconnect(handlerId: number): void;
7
+ get halign(): string;
8
+ set halign(value: string | number);
9
+ get valign(): string;
10
+ set valign(value: string | number);
11
+ get hexpand(): boolean;
12
+ set hexpand(value: boolean | string);
13
+ get vexpand(): boolean;
14
+ set vexpand(value: boolean | string);
15
+ get marginStart(): number;
16
+ set marginStart(value: number | string);
17
+ get marginEnd(): number;
18
+ set marginEnd(value: number | string);
19
+ _emit(eventName: string): void;
20
+ addEventListener(eventName: string, callback: (data: import("@nativescript/core").EventData) => void, thisArg?: unknown, once?: boolean): void;
21
+ removeEventListener(eventName: string, callback?: (data: import("@nativescript/core").EventData) => void, thisArg?: unknown): void;
22
+ notify<T extends import("@nativescript/core").EventData>(data: T): void;
23
+ notifyPropertyChange(name: string, value: unknown, oldValue?: unknown): void;
24
+ set(name: string, value: unknown): void;
25
+ get(name: string): unknown;
26
+ }) & typeof GridLayout;
27
+ export declare class GtkActionBar extends GtkActionBar_base {
28
+ /** The names this widget's `_addChildFromBuilder` honours — see `./builder-slots.ts`. */
29
+ static readonly builderSlots: readonly string[];
30
+ private readonly _startBox;
31
+ private readonly _endBox;
32
+ private _centerWidget;
33
+ private _revealed;
34
+ constructor(props?: ConstructProps<GtkActionBar>);
35
+ /** Pack a widget from the start — `gtk_action_bar_pack_start`, an append. */
36
+ pack_start(view: View): void;
37
+ /** Pack a widget from the end — `gtk_action_bar_pack_end`, a PREPEND. */
38
+ pack_end(view: View): void;
39
+ /** `gtk_action_bar_set_center_widget` — replaces the previous centre; `null` clears it. */
40
+ set_center_widget(view: View | null): void;
41
+ /** The centre widget, or `null`. */
42
+ get centerWidget(): View | null;
43
+ /** The start box — what {@link pack_start} appends to. */
44
+ get startBox(): StackLayout;
45
+ /** The end box — what {@link pack_end} prepends to. */
46
+ get endBox(): StackLayout;
47
+ /** XML inflation — route a template's child through the packing API. */
48
+ _addChildFromBuilder(name: string, view: View): void;
49
+ /** `GtkActionBar:revealed` — whether the bar shows its contents. Default `true`. */
50
+ get revealed(): boolean;
51
+ set revealed(raw: boolean | string);
52
+ }
53
+ export {};
@@ -5,6 +5,18 @@ export { DEFAULT_BOX_SPACING };
5
5
  declare const GtkBox_base: (abstract new (...args: any[]) => {
6
6
  connect(eventName: string, callback: (self: /*elided*/ any, data: import("@nativescript/core").EventData) => void): number;
7
7
  disconnect(handlerId: number): void;
8
+ get halign(): string;
9
+ set halign(value: string | number);
10
+ get valign(): string;
11
+ set valign(value: string | number);
12
+ get hexpand(): boolean;
13
+ set hexpand(value: boolean | string);
14
+ get vexpand(): boolean;
15
+ set vexpand(value: boolean | string);
16
+ get marginStart(): number;
17
+ set marginStart(value: number | string);
18
+ get marginEnd(): number;
19
+ set marginEnd(value: number | string);
8
20
  _emit(eventName: string): void;
9
21
  addEventListener(eventName: string, callback: (data: import("@nativescript/core").EventData) => void, thisArg?: unknown, once?: boolean): void;
10
22
  removeEventListener(eventName: string, callback?: (data: import("@nativescript/core").EventData) => void, thisArg?: unknown): void;
@@ -7,6 +7,18 @@ export declare const GTK_BUTTON_LABEL_CLASS = "adw-button-label";
7
7
  declare const GtkButton_base: (abstract new (...args: any[]) => {
8
8
  connect(eventName: string, callback: (self: /*elided*/ any, data: import("@nativescript/core").EventData) => void): number;
9
9
  disconnect(handlerId: number): void;
10
+ get halign(): string;
11
+ set halign(value: string | number);
12
+ get valign(): string;
13
+ set valign(value: string | number);
14
+ get hexpand(): boolean;
15
+ set hexpand(value: boolean | string);
16
+ get vexpand(): boolean;
17
+ set vexpand(value: boolean | string);
18
+ get marginStart(): number;
19
+ set marginStart(value: number | string);
20
+ get marginEnd(): number;
21
+ set marginEnd(value: number | string);
10
22
  _emit(eventName: string): void;
11
23
  addEventListener(eventName: string, callback: (data: import("@nativescript/core").EventData) => void, thisArg?: unknown, once?: boolean): void;
12
24
  removeEventListener(eventName: string, callback?: (data: import("@nativescript/core").EventData) => void, thisArg?: unknown): void;
@@ -16,6 +28,13 @@ declare const GtkButton_base: (abstract new (...args: any[]) => {
16
28
  get(name: string): unknown;
17
29
  }) & typeof GridLayout;
18
30
  export declare class GtkButton extends GtkButton_base {
31
+ /**
32
+ * The names this widget's `_addChildFromBuilder` honours — see `./builder-slots.ts`.
33
+ * `Gtk.Button:child` is the property a `.blp` writes as `child: Adw.ButtonContent { … }`,
34
+ * which projects as `slot: 'child'`. Undeclared, the shared-tree builder refused that
35
+ * placement, so the gallery's button-content `.blp` did not build here at all.
36
+ */
37
+ static readonly builderSlots: readonly string[];
19
38
  private _styleClasses;
20
39
  private _label;
21
40
  private _iconName;
@@ -39,6 +58,14 @@ export declare class GtkButton extends GtkButton_base {
39
58
  */
40
59
  get iconName(): string;
41
60
  set iconName(value: string);
61
+ /**
62
+ * `GtkWidget:tooltip-text`. A phone has no hover, so there is no tooltip to show; GTK
63
+ * also hands the text to assistive technology as the widget's description, and that
64
+ * half has a home here: `accessibilityHint`. An icon-only button is where a `.blp`
65
+ * writes one, and the builder refused the whole tree for want of this door.
66
+ */
67
+ get tooltipText(): string;
68
+ set tooltipText(value: string);
42
69
  /**
43
70
  * `Gtk.Button:child` — any view, which is how a button wraps an `Adw.ButtonContent`.
44
71
  *
@@ -1,4 +1,4 @@
1
- import { Label, StackLayout, type EventData } from '@nativescript/core';
1
+ import { Label, StackLayout, type EventData, type View } from '@nativescript/core';
2
2
  import type { AdwComboOption, AdwListModelInput } from '@gjsify/adwaita-core';
3
3
  import { GtkImage } from './gtk-image.js';
4
4
  import { type ConstructProps } from './construct-props.js';
@@ -16,6 +16,18 @@ export interface NotifyDropDownSelectedEventData extends EventData {
16
16
  declare const GtkDropDown_base: (abstract new (...args: any[]) => {
17
17
  connect(eventName: string, callback: (self: /*elided*/ any, data: EventData) => void): number;
18
18
  disconnect(handlerId: number): void;
19
+ get halign(): string;
20
+ set halign(value: string | number);
21
+ get valign(): string;
22
+ set valign(value: string | number);
23
+ get hexpand(): boolean;
24
+ set hexpand(value: boolean | string);
25
+ get vexpand(): boolean;
26
+ set vexpand(value: boolean | string);
27
+ get marginStart(): number;
28
+ set marginStart(value: number | string);
29
+ get marginEnd(): number;
30
+ set marginEnd(value: number | string);
19
31
  _emit(eventName: string): void;
20
32
  addEventListener(eventName: string, callback: (data: EventData) => void, thisArg?: unknown, once?: boolean): void;
21
33
  removeEventListener(eventName: string, callback?: (data: EventData) => void, thisArg?: unknown): void;
@@ -25,6 +37,11 @@ declare const GtkDropDown_base: (abstract new (...args: any[]) => {
25
37
  get(name: string): unknown;
26
38
  }) & typeof StackLayout;
27
39
  export declare class GtkDropDown extends GtkDropDown_base {
40
+ /**
41
+ * `model` only: `model: Gtk.StringList { strings [ … ] }` in a `.blp` places the list at
42
+ * the property it sets (ADR 0072). `GtkDropDown` takes no child widget in GTK.
43
+ */
44
+ static readonly builderSlots: readonly string[];
28
45
  /** The button label — the selected option. */
29
46
  protected readonly _label: Label;
30
47
  /** The down-chevron — a real Adwaita `pan-down-symbolic` icon. */
@@ -39,6 +56,11 @@ export declare class GtkDropDown extends GtkDropDown_base {
39
56
  /** The list model (`Gtk.DropDown:model`). Updates the button label. */
40
57
  get model(): AdwComboOption[];
41
58
  set model(value: AdwListModelInput);
59
+ /**
60
+ * XML inflation: a child at `model` is the list, written through the property's setter.
61
+ * Anything else is refused, as GTK refuses a child widget on a `GtkDropDown`.
62
+ */
63
+ _addChildFromBuilder(name: string, child: View): void;
42
64
  /** The selected option index (`Gtk.DropDown:selected`). */
43
65
  get selected(): number;
44
66
  set selected(raw: number | string);
@@ -14,6 +14,18 @@ export interface NotifyEntryTextEventData extends EventData {
14
14
  declare const GtkEntry_base: (abstract new (...args: any[]) => {
15
15
  connect(eventName: string, callback: (self: /*elided*/ any, data: EventData) => void): number;
16
16
  disconnect(handlerId: number): void;
17
+ get halign(): string;
18
+ set halign(value: string | number);
19
+ get valign(): string;
20
+ set valign(value: string | number);
21
+ get hexpand(): boolean;
22
+ set hexpand(value: boolean | string);
23
+ get vexpand(): boolean;
24
+ set vexpand(value: boolean | string);
25
+ get marginStart(): number;
26
+ set marginStart(value: number | string);
27
+ get marginEnd(): number;
28
+ set marginEnd(value: number | string);
17
29
  _emit(eventName: string): void;
18
30
  addEventListener(eventName: string, callback: (data: EventData) => void, thisArg?: unknown, once?: boolean): void;
19
31
  removeEventListener(eventName: string, callback?: (data: EventData) => void, thisArg?: unknown): void;
@@ -14,6 +14,18 @@ export declare const DEFAULT_GTK_IMAGE_SIZE: number;
14
14
  declare const GtkImage_base: (abstract new (...args: any[]) => {
15
15
  connect(eventName: string, callback: (self: /*elided*/ any, data: import("@nativescript/core").EventData) => void): number;
16
16
  disconnect(handlerId: number): void;
17
+ get halign(): string;
18
+ set halign(value: string | number);
19
+ get valign(): string;
20
+ set valign(value: string | number);
21
+ get hexpand(): boolean;
22
+ set hexpand(value: boolean | string);
23
+ get vexpand(): boolean;
24
+ set vexpand(value: boolean | string);
25
+ get marginStart(): number;
26
+ set marginStart(value: number | string);
27
+ get marginEnd(): number;
28
+ set marginEnd(value: number | string);
17
29
  _emit(eventName: string): void;
18
30
  addEventListener(eventName: string, callback: (data: import("@nativescript/core").EventData) => void, thisArg?: unknown, once?: boolean): void;
19
31
  removeEventListener(eventName: string, callback?: (data: import("@nativescript/core").EventData) => void, thisArg?: unknown): void;
@@ -1,8 +1,21 @@
1
1
  import { Label } from '@nativescript/core';
2
+ import { type LabelEllipsizeMode } from '@gjsify/adwaita-core';
2
3
  import { type ConstructProps } from './construct-props.js';
3
4
  declare const GtkLabel_base: (abstract new (...args: any[]) => {
4
5
  connect(eventName: string, callback: (self: /*elided*/ any, data: import("@nativescript/core").EventData) => void): number;
5
6
  disconnect(handlerId: number): void;
7
+ get halign(): string;
8
+ set halign(value: string | number);
9
+ get valign(): string;
10
+ set valign(value: string | number);
11
+ get hexpand(): boolean;
12
+ set hexpand(value: boolean | string);
13
+ get vexpand(): boolean;
14
+ set vexpand(value: boolean | string);
15
+ get marginStart(): number;
16
+ set marginStart(value: number | string);
17
+ get marginEnd(): number;
18
+ set marginEnd(value: number | string);
6
19
  _emit(eventName: string): void;
7
20
  addEventListener(eventName: string, callback: (data: import("@nativescript/core").EventData) => void, thisArg?: unknown, once?: boolean): void;
8
21
  removeEventListener(eventName: string, callback?: (data: import("@nativescript/core").EventData) => void, thisArg?: unknown): void;
@@ -15,7 +28,10 @@ export declare class GtkLabel extends GtkLabel_base {
15
28
  private _label;
16
29
  private _useMarkup;
17
30
  private _useUnderline;
31
+ private _ellipsize;
32
+ private _lines;
18
33
  private _styleClasses;
34
+ private _xalign;
19
35
  constructor(props?: ConstructProps<GtkLabel>);
20
36
  /**
21
37
  * `Gtk.Label:label` — the text, as written, before markup and the mnemonic marker are
@@ -47,10 +63,40 @@ export declare class GtkLabel extends GtkLabel_base {
47
63
  * NativeScript's own name for it is `textWrap`, which stays reachable; this is the GIR
48
64
  * spelling over the same platform property, so a snippet ported off GJS runs verbatim.
49
65
  * `wrap-mode` and `natural-wrap-mode` are the declared gaps beside it — the platform
50
- * wraps at word boundaries and offers no choice.
66
+ * wraps at word boundaries and offers no choice. Does NOT reapply {@link lines}:
67
+ * MEASURED (`@gjsify/adwaita-core`'s `label.ts` header), `wrap` plays no part in
68
+ * whether `lines` has an effect, only {@link ellipsize} does.
51
69
  */
52
70
  get wrap(): boolean;
53
71
  set wrap(raw: boolean | string);
72
+ /**
73
+ * `Gtk.Label:ellipsize` — where the string is trimmed when it does not fit. Defaults
74
+ * to `none`. Sets the platform's `textOverflow`, which only acts while {@link wrap} is
75
+ * off (Android's `adjustLineBreak()` — see the header). `start` and `middle` are HELD
76
+ * faithfully but DRAWN as an end-ellipsis: `labelEllipsizeOverflowValue`
77
+ * (`@gjsify/adwaita-core`) says why, the same declared divergence the web element pins.
78
+ */
79
+ get ellipsize(): LabelEllipsizeMode;
80
+ set ellipsize(raw: LabelEllipsizeMode | string);
81
+ /**
82
+ * `Gtk.Label:lines` — the line count an ellipsized label is held to. Defaults to -1
83
+ * ("unset"), which still caps at Pango's own default of ONE line the moment
84
+ * {@link ellipsize} is active — never "unlimited". Has no effect at all while
85
+ * ellipsize is `none`, `wrap` or not — {@link labelEffectiveLines}
86
+ * (`@gjsify/adwaita-core`) is that MEASURED guard, applied to the platform's
87
+ * `maxLines`, where any `value <= 0` already means unlimited (measured in
88
+ * `@nativescript/core`'s `index.android.js`).
89
+ */
90
+ get lines(): number;
91
+ set lines(raw: number | string);
92
+ private _applyLines;
93
+ /**
94
+ * `Gtk.Label:xalign` — where the text sits in the label's box, `0` the start and `1` the
95
+ * end. Clamped to that range as `gtk_label_set_xalign` clamps it, and painted only at the
96
+ * three points `textAlignment` can say exactly; any other value throws (see the header).
97
+ */
98
+ get xalign(): number;
99
+ set xalign(raw: number | string);
54
100
  /**
55
101
  * `GtkWidget:css-classes`, spelled `styleClasses` for the reason `style-classes.ts`
56
102
  * records: the platform owns `cssClasses` as a live `Set` and taking that name kills
@@ -22,6 +22,9 @@ export declare class GtkMenuButton extends AdwImageButton {
22
22
  private _model;
23
23
  private _actions;
24
24
  private _menuTitle;
25
+ /** The image button's own classes, which every `styleClasses` write keeps. */
26
+ private readonly _baseClassName;
27
+ private _styleClasses;
25
28
  constructor(props?: ConstructProps<GtkMenuButton>);
26
29
  /**
27
30
  * The menu, normalised (ADR 0042) — opened as a native `action()` sheet on tap.
@@ -43,5 +46,24 @@ export declare class GtkMenuButton extends AdwImageButton {
43
46
  /** Optional title shown atop the native menu sheet. */
44
47
  get menuTitle(): string;
45
48
  set menuTitle(value: string);
49
+ /**
50
+ * `GtkWidget:css-classes`, spelled `styleClasses` for the reason `style-classes.ts`
51
+ * gives. A `.blp` header bar writes `styles ["flat"]` on its menu button, and the
52
+ * shared-tree builder refuses a style class the widget has no door for, so without it
53
+ * that header bar did not build here at all.
54
+ */
55
+ get styleClasses(): string[];
56
+ set styleClasses(value: string | null | undefined);
57
+ /** `gtk_widget_add_css_class`. A class the button already carries is a no-op. */
58
+ add_css_class(name: string): void;
59
+ /** `gtk_widget_remove_css_class`. A class it does not carry is a no-op. */
60
+ remove_css_class(name: string): void;
61
+ /** `gtk_widget_has_css_class`. */
62
+ has_css_class(name: string): boolean;
63
+ /** `gtk_widget_get_css_classes` — the list, without the widget's own CSS name. */
64
+ get_css_classes(): string[];
65
+ /** `gtk_widget_set_css_classes` — REPLACES the list, as in C. */
66
+ set_css_classes(names: readonly string[]): void;
67
+ private _setClasses;
46
68
  private _openMenu;
47
69
  }
@@ -0,0 +1,13 @@
1
+ import type { View } from '@nativescript/core';
2
+ /**
3
+ * The id of another view in the same tree, as an object-valued setter takes it from XML.
4
+ * A plain string at runtime; the NAME is the declaration `check-nativescript-xml-doors.mjs`
5
+ * reads, so a setter annotated `<Something> | ViewId` is held to resolving it through
6
+ * {@link resolveIdReference} rather than keeping the string.
7
+ */
8
+ export type ViewId = string;
9
+ /**
10
+ * The view with `id` in the tree `view` is mounted in, which must be an instance of `Type`,
11
+ * or throw naming the property and the id.
12
+ */
13
+ export declare function resolveIdReference<T extends View>(view: View, property: string, id: string, Type: abstract new (...args: never[]) => T): T;
@@ -22,10 +22,11 @@ export { GtkButton, GTK_BUTTON_CLICKED, GTK_BUTTON_LABEL_CLASS } from './gtk-but
22
22
  export { buttonSlotAfterWrite, buttonSlotDetaches } from './button-slot.js';
23
23
  export type { ButtonSlot, ButtonSlotWrite } from './button-slot.js';
24
24
  export { GtkBox, DEFAULT_BOX_SPACING } from './gtk-box.js';
25
+ export { GtkActionBar } from './gtk-action-bar.js';
25
26
  export { boxChildMargin, boxSpacingChanges, normalizeBoxSpacing } from './box-layout.js';
26
27
  export type { BoxOrientation } from './box-layout.js';
27
28
  export { GtkLabel } from './gtk-label.js';
28
- export { labelDisplayText, labelMarkupIsUnparseable } from './label-text.js';
29
+ export { labelDisplayText, labelMarkupIsUnparseable } from '@gjsify/adwaita-core';
29
30
  export { AdwImageButton, DEFAULT_ICON_BUTTON_ICON_SIZE } from './adw-image-button.js';
30
31
  export { GtkMenuButton, MENU_ITEM_ACTIVATED } from './gtk-menu-button.js';
31
32
  export type { MenuItemActivatedEventData } from './gtk-menu-button.js';
@@ -50,7 +51,8 @@ export { AdwButtonContent } from './adw-button-content.js';
50
51
  export { AdwSplitButton, CLICKED, MENU_TAPPED } from './adw-split-button.js';
51
52
  export type { MenuTappedEventData } from './adw-split-button.js';
52
53
  export { AdwToggleGroup, NOTIFY_SELECTED as NOTIFY_TOGGLE_SELECTED, ToggleGroupState } from './adw-toggle-group.js';
53
- export type { NotifyToggleSelectedEventData, ToggleGroupStateChange, ToggleGroupStateListener, } from './adw-toggle-group.js';
54
+ export { AdwToggle } from './adw-toggle.js';
55
+ export type { AdwToggleSpec, NotifyToggleSelectedEventData, ToggleGroupStateChange, ToggleGroupStateListener, } from './adw-toggle-group.js';
54
56
  export { applyAdwaitaNsAccent, clearAdwaitaNsAccent } from './adw-accent.js';
55
57
  export { ADWAITA_NS_ACCENT_RULES, adwaitaNsAccentColor, adwaitaNsAccentCss } from './accent-theme.js';
56
58
  export type { AccentRole, AccentRule } from './accent-theme.js';
@@ -58,7 +60,8 @@ export { AdwShortcutLabel } from './adw-shortcut-label.js';
58
60
  export { SHORTCUT_LABEL_CAP_TEXT_CLASS, SHORTCUT_LABEL_CLASS, SHORTCUT_LABEL_DIMMED_CLASS, SHORTCUT_LABEL_DISABLED_CLASS, SHORTCUT_LABEL_KEYCAP_CLASS, SHORTCUT_LABEL_KEYS_CLASS, SHORTCUT_LABEL_SIDE_CLASS, SHORTCUT_LABEL_SPACED_CLASS, shortcutLabelDirection, shortcutLabelPlatform, shortcutLabelRenderPlan, } from './shortcut-label.js';
59
61
  export type { ShortcutLabelRenderPlan, ShortcutLabelViewSpec } from './shortcut-label.js';
60
62
  export { AdwViewStack, NOTIFY_VISIBLE_CHILD } from './adw-view-stack.js';
61
- export type { AdwViewStackPage, NotifyVisibleChildEventData } from './adw-view-stack.js';
63
+ export type { AdwViewStackPageInfo, NotifyVisibleChildEventData } from './adw-view-stack.js';
64
+ export { AdwViewStackPage } from './view-stack-page.js';
62
65
  export { AdwViewSwitcherBase, NOTIFY_SELECTED as NOTIFY_VIEW_SELECTED } from './view-switcher-base.js';
63
66
  export type { AdwViewPage, NotifyViewSelectedEventData } from './view-switcher-base.js';
64
67
  export { AdwViewSwitcher } from './adw-view-switcher.js';
@@ -67,11 +70,17 @@ export { AdwInlineViewSwitcher } from './adw-inline-view-switcher.js';
67
70
  export { AdwTabView, CLOSE_PAGE, NOTIFY_SELECTED_PAGE, PAGES_CHANGED } from './adw-tab-view.js';
68
71
  export type { ClosePageEventData, NotifySelectedPageEventData, PagesChangedEventData } from './adw-tab-view.js';
69
72
  export { applyTabViewVisibility, createTabViewState, tabBarVisibility, tabCloseVisibilities, tabLabelText, tabPageVisibilities, tabTooltipText, tabViewNotifyPayload, } from './tab-view-state.js';
70
- export type { AdwTabPage, NsVisibility, TabViewNotifyPayload } from './tab-view-state.js';
73
+ export type { NsTabPage, NsVisibility, TabViewNotifyPayload } from './tab-view-state.js';
74
+ export { AdwTabPage } from '../values/tab-page.js';
75
+ export type { AdwTabPageProps } from '../values/tab-page.js';
71
76
  export { AdwCarousel, DEFAULT_CAROUSEL_PAGE_WIDTH, NOTIFY_N_PAGES, NOTIFY_POSITION, PAGE_CHANGED, } from './adw-carousel.js';
72
77
  export type { NotifyPositionEventData, PageChangedEventData } from './adw-carousel.js';
73
- export { CarouselScrollSync, applyCarouselDots, carouselDotClasses, carouselNotifyPayload, carouselPositionAtOffset, carouselScrollOffset, createCarouselState, normalizeCarouselPageWidth, } from './carousel-state.js';
78
+ export { AdwCarouselIndicatorDots } from './adw-carousel-indicator-dots.js';
79
+ export { AdwCarouselIndicatorLines } from './adw-carousel-indicator-lines.js';
80
+ export { CarouselScrollSync, applyMarkerClasses, carouselDotClasses, indicatorMarkerClasses, carouselNotifyPayload, carouselPositionAtOffset, carouselScrollOffset, createCarouselState, normalizeCarouselPageWidth, } from './carousel-state.js';
74
81
  export type { CarouselNotifyPayload, NsCarouselStateOptions } from './carousel-state.js';
82
+ export { AdwNavigationPage } from './adw-navigation-page.js';
83
+ export type { NavigationPageOwner } from './adw-navigation-page.js';
75
84
  export { AdwNavigationView, NOTIFY_VISIBLE_PAGE } from './adw-navigation-view.js';
76
85
  export type { NotifyVisiblePageEventData } from './adw-navigation-view.js';
77
86
  export { AdwSplitViewBase, NOTIFY_SHOW_SIDEBAR } from './split-view-base.js';
@@ -82,6 +91,8 @@ export { NsNavigationSplitViewState, NsOverlaySplitViewState, splitViewColumns }
82
91
  export type { NsShowSidebarNotification, NsSplitViewHost, NsSplitViewState } from './split-view-state.js';
83
92
  export { AdwSidebar, NOTIFY_SELECTED as NOTIFY_SIDEBAR_SELECTED } from './adw-sidebar.js';
84
93
  export type { NotifySidebarSelectedEventData } from './adw-sidebar.js';
94
+ export { AdwSidebarItem, AdwSidebarSection } from '../values/sidebar.js';
95
+ export type { AdwSidebarItemProps, AdwSidebarSectionProps } from '../values/sidebar.js';
85
96
  export { AdwBottomSheet, CLOSE_ATTEMPT, NOTIFY_OPEN, SHEET_CLOSE } from './adw-bottom-sheet.js';
86
97
  export type { NotifyOpenEventData } from './adw-bottom-sheet.js';
87
98
  export { AdwToast, AdwToastOverlay, AdwToastQueue, DEFAULT_TOAST_TIMEOUT, TOAST_BUTTON_CLICKED, } from './adw-toast-overlay.js';
@@ -21,7 +21,8 @@ export interface GObjectSignals {
21
21
  */
22
22
  export type ObservableConstructor = abstract new (...args: any[]) => Observable;
23
23
  /**
24
- * Give a `@nativescript/core` base GJS's `connect` / `disconnect`.
24
+ * Give a `@nativescript/core` base GJS's `connect` / `disconnect`, and `GtkWidget`'s layout
25
+ * properties with them ({@link withGtkWidgetLayout}).
25
26
  *
26
27
  * Applied ONCE per class that extends a platform base — `extends withSignals(GridLayout)`
27
28
  * — and never on a class whose base is already a widget of this package, which inherits
@@ -30,6 +31,18 @@ export type ObservableConstructor = abstract new (...args: any[]) => Observable;
30
31
  export declare function withSignals<TBase extends ObservableConstructor>(Base: TBase): (abstract new (...args: any[]) => {
31
32
  connect(eventName: string, callback: (self: /*elided*/ any, data: EventData) => void): number;
32
33
  disconnect(handlerId: number): void;
34
+ get halign(): string;
35
+ set halign(value: string | number);
36
+ get valign(): string;
37
+ set valign(value: string | number);
38
+ get hexpand(): boolean;
39
+ set hexpand(value: boolean | string);
40
+ get vexpand(): boolean;
41
+ set vexpand(value: boolean | string);
42
+ get marginStart(): number;
43
+ set marginStart(value: number | string);
44
+ get marginEnd(): number;
45
+ set marginEnd(value: number | string);
33
46
  _emit(eventName: string): void;
34
47
  addEventListener(eventName: string, callback: (data: EventData) => void, thisArg?: unknown, once?: boolean): void;
35
48
  removeEventListener(eventName: string, callback?: (data: EventData) => void, thisArg?: unknown): void;
@@ -13,6 +13,18 @@ export interface NotifyShowSidebarEventData extends EventData {
13
13
  declare const AdwSplitViewBase_base: (abstract new (...args: any[]) => {
14
14
  connect(eventName: string, callback: (self: /*elided*/ any, data: EventData) => void): number;
15
15
  disconnect(handlerId: number): void;
16
+ get halign(): string;
17
+ set halign(value: string | number);
18
+ get valign(): string;
19
+ set valign(value: string | number);
20
+ get hexpand(): boolean;
21
+ set hexpand(value: boolean | string);
22
+ get vexpand(): boolean;
23
+ set vexpand(value: boolean | string);
24
+ get marginStart(): number;
25
+ set marginStart(value: number | string);
26
+ get marginEnd(): number;
27
+ set marginEnd(value: number | string);
16
28
  _emit(eventName: string): void;
17
29
  addEventListener(eventName: string, callback: (data: EventData) => void, thisArg?: unknown, once?: boolean): void;
18
30
  removeEventListener(eventName: string, callback?: (data: EventData) => void, thisArg?: unknown): void;
@@ -26,6 +38,8 @@ export declare abstract class AdwSplitViewBase<TState extends NsSplitViewState =
26
38
  protected readonly _widthRule: SplitViewWidthRule;
27
39
  /** The headless state machine this widget renders (`split-view-state.ts`). */
28
40
  protected readonly _state: TState;
41
+ /** The names this widget's `_addChildFromBuilder` honours — see `./builder-slots.ts`. */
42
+ static readonly builderSlots: readonly string[];
29
43
  protected _sidebar: View | null;
30
44
  protected _content: View | null;
31
45
  /** The three width PROPERTIES; the drawn width is derived from them. */
@@ -141,9 +155,19 @@ export declare abstract class AdwSplitViewBase<TState extends NsSplitViewState =
141
155
  /** `Adw.OverlaySplitView:sidebar-position` — `'start'` (leading) or `'end'`. */
142
156
  get sidebarPosition(): AdwPackType;
143
157
  set sidebarPosition(value: AdwPackType);
144
- /** The sidebar pane, or `null`. */
158
+ /**
159
+ * The sidebar pane, or `null` — `Adw.NavigationSplitView:sidebar` /
160
+ * `Adw.OverlaySplitView:sidebar`.
161
+ *
162
+ * The SETTER is what lets a construct-props bag carry the pane, so a caller ported
163
+ * off GJS writes the one `new Adw.OverlaySplitView({ sidebar, content })` the GIR
164
+ * takes instead of three statements. It is {@link set_sidebar} under the property
165
+ * spelling the counterpart declares, never a second code path.
166
+ */
145
167
  get sidebar(): View | null;
146
- /** The content pane, or `null`. */
168
+ set sidebar(view: View | null);
169
+ /** The content pane, or `null` — the `content` property of both split views. */
147
170
  get content(): View | null;
171
+ set content(view: View | null);
148
172
  }
149
173
  export {};
@@ -2,7 +2,7 @@ import type { View } from '@nativescript/core';
2
2
  import { TabViewState } from '@gjsify/adwaita-core';
3
3
  import type { AdwTabPageState, TabViewHandlers, TabViewSelectionChange } from '@gjsify/adwaita-core';
4
4
  /** One page of an `AdwTabView`, as a renderer reads it. */
5
- export type AdwTabPage = AdwTabPageState<View>;
5
+ export type NsTabPage = AdwTabPageState<View>;
6
6
  /** The two `View.visibility` values a stacked page or a tab affordance ever takes. */
7
7
  export type NsVisibility = 'visible' | 'collapse';
8
8
  /** The model an `AdwTabView` delegates to, typed on the NS `View`. */
@@ -32,14 +32,14 @@ export declare function tabBarVisibility(state: TabViewState<View>, autohide: bo
32
32
  * Everything else shows its title, which the model has already coerced to `''` for a
33
33
  * page that declared none.
34
34
  */
35
- export declare function tabLabelText(page: AdwTabPage): string;
35
+ export declare function tabLabelText(page: NsTabPage): string;
36
36
  /**
37
37
  * The tooltip text for a tab — the page's own tooltip when it has one, its title
38
38
  * otherwise. NS has no tooltip primitive, so this is exposed for a consumer (and the
39
39
  * accessibility label) rather than rendered, and in TEXT form: a page-supplied tooltip
40
40
  * is Pango markup in C and NS has no markup sink.
41
41
  */
42
- export declare function tabTooltipText(page: AdwTabPage): string;
42
+ export declare function tabTooltipText(page: NsTabPage): string;
43
43
  /** The data half of the `notify::selected-page` event (minus NS's `eventName`/`object`). */
44
44
  export interface TabViewNotifyPayload {
45
45
  /** Id of the newly-selected page, `null` when the view is empty. */
@@ -0,0 +1,98 @@
1
+ import { Observable, type View } from '@nativescript/core';
2
+ import { type ConstructProps } from './construct-props.js';
3
+ /** The one stack call a record needs once adopted — `AdwViewStack.setPageVisible`. */
4
+ interface AdoptingStack {
5
+ setPageVisible(name: string, visible: boolean): boolean;
6
+ }
7
+ /** A stack this record was handed to before it had a child — see {@link AdwViewStackPage._awaitChild}. */
8
+ interface AwaitingStack {
9
+ _addChildFromBuilder(name: string, view: AdwViewStackPage): void;
10
+ }
11
+ declare const AdwViewStackPage_base: (abstract new (...args: any[]) => {
12
+ connect(eventName: string, callback: (self: /*elided*/ any, data: import("@nativescript/core").EventData) => void): number;
13
+ disconnect(handlerId: number): void;
14
+ get halign(): string;
15
+ set halign(value: string | number);
16
+ get valign(): string;
17
+ set valign(value: string | number);
18
+ get hexpand(): boolean;
19
+ set hexpand(value: boolean | string);
20
+ get vexpand(): boolean;
21
+ set vexpand(value: boolean | string);
22
+ get marginStart(): number;
23
+ set marginStart(value: number | string);
24
+ get marginEnd(): number;
25
+ set marginEnd(value: number | string);
26
+ _emit(eventName: string): void;
27
+ addEventListener(eventName: string, callback: (data: import("@nativescript/core").EventData) => void, thisArg?: unknown, once?: boolean): void;
28
+ removeEventListener(eventName: string, callback?: (data: import("@nativescript/core").EventData) => void, thisArg?: unknown): void;
29
+ notify<T extends import("@nativescript/core").EventData>(data: T): void;
30
+ notifyPropertyChange(name: string, value: unknown, oldValue?: unknown): void;
31
+ set(name: string, value: unknown): void;
32
+ get(name: string): unknown;
33
+ }) & typeof Observable;
34
+ export declare class AdwViewStackPage extends AdwViewStackPage_base {
35
+ /** `child:` in a `.blp` — the page itself. The fallback too: a bare child IS the page. */
36
+ static readonly builderSlots: readonly string[];
37
+ private _child;
38
+ private _name;
39
+ private _title;
40
+ private _iconName;
41
+ private _needsAttention;
42
+ private _badgeNumber;
43
+ private _visible;
44
+ private _useUnderline;
45
+ /** The stack that adopted this record, or `null` while it is still being authored. */
46
+ private _stack;
47
+ /** The stack waiting for this record's child, while it has none. */
48
+ private _awaiting;
49
+ constructor(props?: ConstructProps<AdwViewStackPage>);
50
+ /** `AdwViewStackPage:child` — the view the stack shows for this page. */
51
+ get child(): View | null;
52
+ set child(view: View | null);
53
+ /** `AdwViewStackPage:name` — what `visible-child-name` and a bound switcher select by. */
54
+ get name(): string;
55
+ set name(value: string | null);
56
+ /** `AdwViewStackPage:title` — `null` until written; the stack falls back to the name. */
57
+ get title(): string | null;
58
+ set title(value: string | null);
59
+ /** `AdwViewStackPage:icon-name`. */
60
+ get iconName(): string | null;
61
+ set iconName(value: string | null);
62
+ /** `AdwViewStackPage:needs-attention` — the dot a switcher draws beside the title. */
63
+ get needsAttention(): boolean;
64
+ set needsAttention(raw: boolean | string);
65
+ /** `AdwViewStackPage:badge-number` — `0` shows no badge. */
66
+ get badgeNumber(): number;
67
+ set badgeNumber(raw: number | string);
68
+ /** `AdwViewStackPage:use-underline` — whether an `_` in the title marks a mnemonic. */
69
+ get useUnderline(): boolean;
70
+ set useUnderline(raw: boolean | string);
71
+ /**
72
+ * `AdwViewStackPage:visible` — whether the page can be selected at all. The one property
73
+ * that still reaches the stack after adoption, because the stack has a door for it.
74
+ */
75
+ get visible(): boolean;
76
+ set visible(raw: boolean | string);
77
+ /**
78
+ * An XML child is the page's `child` — there is nothing else a record holds, which is why
79
+ * the slot and the fallback are one name.
80
+ */
81
+ _addChildFromBuilder(_name: string, view: View): void;
82
+ /**
83
+ * Called by the stack that takes this record. Not API: the stack is the only caller, and
84
+ * a record adopted twice is refused, since two stacks cannot show one child.
85
+ */
86
+ _adoptBy(stack: AdoptingStack): void;
87
+ /**
88
+ * Called by a stack handed this record while it has no child yet. NativeScript's XML
89
+ * builder hands a child to its parent at the child's START tag, so a template's
90
+ * `<adw:ViewStackPage>` reaches the stack before its own `<adw:ViewStackPage.child>` has
91
+ * been read — where GtkBuilder adds the page once it is whole. The stack takes the record
92
+ * when the child arrives, which is still before the next page's start tag, so the pages
93
+ * keep document order.
94
+ */
95
+ _awaitChild(stack: AwaitingStack): void;
96
+ private _refuseAfterAdoption;
97
+ }
98
+ export {};
@@ -1,8 +1,12 @@
1
1
  import type { View } from '@nativescript/core';
2
2
  import { ViewStackState } from '@gjsify/adwaita-core';
3
- import type { AdwViewStackPageInfo, ViewStackStateChange } from '@gjsify/adwaita-core';
4
- /** One page registered with an `AdwViewStack`, as a bound switcher reads it. */
5
- export type AdwViewStackPage = AdwViewStackPageInfo<View>;
3
+ import type { AdwViewStackPageInfo as CorePageInfo, ViewStackStateChange } from '@gjsify/adwaita-core';
4
+ /**
5
+ * One page registered with an `AdwViewStack`, as a bound switcher reads it — the stack's
6
+ * resolved descriptor. `AdwViewStackPage` is the class a stack is AUTHORED with
7
+ * (`adw-view-stack-page.ts`); this is what the stack keeps after reading one.
8
+ */
9
+ export type AdwViewStackPageInfo = CorePageInfo<View>;
6
10
  /** The two `View.visibility` values a stacked page ever takes. */
7
11
  export type NsPageVisibility = 'visible' | 'collapse';
8
12
  /** The selection machine an `AdwViewStack` delegates to, typed on the NS `View`. */