@gtkx/react 0.19.0 → 0.21.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/README.md +26 -62
- package/dist/components/compound.d.ts +40 -0
- package/dist/components/compound.d.ts.map +1 -0
- package/dist/components/compound.js +46 -0
- package/dist/components/compound.js.map +1 -0
- package/dist/components/list.d.ts +75 -0
- package/dist/components/list.d.ts.map +1 -0
- package/dist/components/list.js +81 -0
- package/dist/components/list.js.map +1 -0
- package/dist/components/slot-widget.d.ts +15 -0
- package/dist/components/slot-widget.d.ts.map +1 -0
- package/dist/components/slot-widget.js +37 -0
- package/dist/components/slot-widget.js.map +1 -0
- package/dist/errors.d.ts +6 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +8 -6
- package/dist/errors.js.map +1 -1
- package/dist/generated/compounds.d.ts +2672 -0
- package/dist/generated/compounds.d.ts.map +1 -0
- package/dist/generated/compounds.js +2624 -0
- package/dist/generated/compounds.js.map +1 -0
- package/dist/generated/internal.d.ts +6 -7
- package/dist/generated/internal.d.ts.map +1 -1
- package/dist/generated/internal.js +3054 -1838
- package/dist/generated/internal.js.map +1 -1
- package/dist/generated/jsx.d.ts +2096 -4970
- package/dist/generated/jsx.d.ts.map +1 -1
- package/dist/generated/jsx.js +979 -3862
- package/dist/generated/jsx.js.map +1 -1
- package/dist/generated/registry.d.ts +1 -0
- package/dist/generated/registry.d.ts.map +1 -1
- package/dist/generated/registry.js +0 -1
- package/dist/generated/registry.js.map +1 -1
- package/dist/host-config.d.ts.map +1 -1
- package/dist/host-config.js +2 -0
- package/dist/host-config.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/jsx.d.ts +157 -518
- package/dist/jsx.d.ts.map +1 -1
- package/dist/jsx.js +6 -393
- package/dist/jsx.js.map +1 -1
- package/dist/metadata.d.ts +1 -1
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +7 -3
- package/dist/metadata.js.map +1 -1
- package/dist/node.d.ts +0 -4
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +19 -41
- package/dist/node.js.map +1 -1
- package/dist/nodes/alert-dialog.d.ts +14 -0
- package/dist/nodes/alert-dialog.d.ts.map +1 -0
- package/dist/nodes/alert-dialog.js +41 -0
- package/dist/nodes/alert-dialog.js.map +1 -0
- package/dist/nodes/animation.d.ts +5 -4
- package/dist/nodes/animation.d.ts.map +1 -1
- package/dist/nodes/animation.js +65 -49
- package/dist/nodes/animation.js.map +1 -1
- package/dist/nodes/application.d.ts.map +1 -1
- package/dist/nodes/application.js +4 -0
- package/dist/nodes/application.js.map +1 -1
- package/dist/nodes/column-view-column.d.ts +19 -19
- package/dist/nodes/column-view-column.d.ts.map +1 -1
- package/dist/nodes/column-view-column.js +130 -119
- package/dist/nodes/column-view-column.js.map +1 -1
- package/dist/nodes/container-slot.d.ts +3 -1
- package/dist/nodes/container-slot.d.ts.map +1 -1
- package/dist/nodes/container-slot.js +28 -16
- package/dist/nodes/container-slot.js.map +1 -1
- package/dist/nodes/drawing-area.d.ts +3 -1
- package/dist/nodes/drawing-area.d.ts.map +1 -1
- package/dist/nodes/drawing-area.js +20 -22
- package/dist/nodes/drawing-area.js.map +1 -1
- package/dist/nodes/event-controller.d.ts.map +1 -1
- package/dist/nodes/event-controller.js +6 -16
- package/dist/nodes/event-controller.js.map +1 -1
- package/dist/nodes/fixed-child.d.ts +1 -0
- package/dist/nodes/fixed-child.d.ts.map +1 -1
- package/dist/nodes/fixed-child.js +13 -0
- package/dist/nodes/fixed-child.js.map +1 -1
- package/dist/nodes/grid-child.d.ts +1 -0
- package/dist/nodes/grid-child.d.ts.map +1 -1
- package/dist/nodes/grid-child.js +13 -0
- package/dist/nodes/grid-child.js.map +1 -1
- package/dist/nodes/internal/accessible.d.ts.map +1 -1
- package/dist/nodes/internal/accessible.js.map +1 -1
- package/dist/nodes/internal/bound-item.d.ts +4 -0
- package/dist/nodes/internal/bound-item.d.ts.map +1 -0
- package/dist/nodes/internal/bound-item.js +2 -0
- package/dist/nodes/internal/bound-item.js.map +1 -0
- package/dist/nodes/internal/construct.d.ts +1 -8
- package/dist/nodes/internal/construct.d.ts.map +1 -1
- package/dist/nodes/internal/construct.js +30 -54
- package/dist/nodes/internal/construct.js.map +1 -1
- package/dist/nodes/internal/widget.d.ts.map +1 -1
- package/dist/nodes/internal/widget.js +9 -10
- package/dist/nodes/internal/widget.js.map +1 -1
- package/dist/nodes/list-item-node.d.ts +12 -0
- package/dist/nodes/list-item-node.d.ts.map +1 -0
- package/dist/nodes/list-item-node.js +45 -0
- package/dist/nodes/list-item-node.js.map +1 -0
- package/dist/nodes/list.d.ts +100 -0
- package/dist/nodes/list.d.ts.map +1 -0
- package/dist/nodes/list.js +950 -0
- package/dist/nodes/list.js.map +1 -0
- package/dist/nodes/notebook-page.d.ts.map +1 -1
- package/dist/nodes/notebook-page.js +6 -2
- package/dist/nodes/notebook-page.js.map +1 -1
- package/dist/nodes/overlay-child.d.ts +2 -0
- package/dist/nodes/overlay-child.d.ts.map +1 -1
- package/dist/nodes/overlay-child.js +29 -8
- package/dist/nodes/overlay-child.js.map +1 -1
- package/dist/nodes/spin-row.d.ts +14 -0
- package/dist/nodes/spin-row.d.ts.map +1 -0
- package/dist/nodes/spin-row.js +46 -0
- package/dist/nodes/spin-row.js.map +1 -0
- package/dist/nodes/switch-row.d.ts +11 -0
- package/dist/nodes/switch-row.d.ts.map +1 -0
- package/dist/nodes/switch-row.js +15 -0
- package/dist/nodes/switch-row.js.map +1 -0
- package/dist/nodes/text-anchor.d.ts.map +1 -1
- package/dist/nodes/text-anchor.js +10 -0
- package/dist/nodes/text-anchor.js.map +1 -1
- package/dist/nodes/text-tag.d.ts.map +1 -1
- package/dist/nodes/text-tag.js +45 -39
- package/dist/nodes/text-tag.js.map +1 -1
- package/dist/nodes/toggle-group.d.ts +12 -6
- package/dist/nodes/toggle-group.d.ts.map +1 -1
- package/dist/nodes/toggle-group.js +53 -4
- package/dist/nodes/toggle-group.js.map +1 -1
- package/dist/nodes/widget.d.ts.map +1 -1
- package/dist/nodes/widget.js +16 -22
- package/dist/nodes/widget.js.map +1 -1
- package/dist/nodes/window.d.ts.map +1 -1
- package/dist/nodes/window.js +2 -2
- package/dist/nodes/window.js.map +1 -1
- package/dist/registry.d.ts +0 -2
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +11 -18
- package/dist/registry.js.map +1 -1
- package/dist/types.d.ts +3 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/use-property.d.ts +29 -0
- package/dist/use-property.d.ts.map +1 -0
- package/dist/use-property.js +44 -0
- package/dist/use-property.js.map +1 -0
- package/dist/use-setting.d.ts +36 -0
- package/dist/use-setting.d.ts.map +1 -0
- package/dist/use-setting.js +68 -0
- package/dist/use-setting.js.map +1 -0
- package/package.json +5 -4
- package/src/components/compound.tsx +57 -0
- package/src/components/list.tsx +140 -0
- package/src/components/slot-widget.tsx +46 -0
- package/src/errors.ts +8 -7
- package/src/generated/compounds.ts +2741 -0
- package/src/generated/internal.ts +3059 -1840
- package/src/generated/jsx.ts +2509 -5350
- package/src/generated/registry.ts +2 -1
- package/src/host-config.ts +2 -0
- package/src/index.ts +2 -0
- package/src/jsx.ts +167 -581
- package/src/metadata.ts +7 -4
- package/src/node.ts +23 -39
- package/src/nodes/alert-dialog.ts +55 -0
- package/src/nodes/animation.ts +67 -60
- package/src/nodes/application.ts +5 -0
- package/src/nodes/column-view-column.ts +125 -128
- package/src/nodes/container-slot.ts +30 -17
- package/src/nodes/drawing-area.ts +23 -32
- package/src/nodes/event-controller.ts +6 -18
- package/src/nodes/fixed-child.ts +13 -0
- package/src/nodes/grid-child.ts +13 -0
- package/src/nodes/internal/accessible.ts +0 -1
- package/src/nodes/internal/bound-item.ts +4 -0
- package/src/nodes/internal/construct.ts +38 -68
- package/src/nodes/internal/widget.ts +9 -13
- package/src/nodes/list-item-node.ts +53 -0
- package/src/nodes/list.ts +1082 -0
- package/src/nodes/notebook-page.ts +6 -2
- package/src/nodes/overlay-child.ts +30 -9
- package/src/nodes/spin-row.ts +72 -0
- package/src/nodes/switch-row.ts +26 -0
- package/src/nodes/text-anchor.ts +9 -0
- package/src/nodes/text-tag.ts +45 -40
- package/src/nodes/toggle-group.ts +63 -9
- package/src/nodes/widget.ts +14 -26
- package/src/nodes/window.ts +2 -2
- package/src/registry.ts +18 -24
- package/src/types.ts +8 -2
- package/src/use-property.ts +58 -0
- package/src/use-setting.ts +96 -0
- package/dist/fiber-root.d.ts +0 -4
- package/dist/fiber-root.d.ts.map +0 -1
- package/dist/fiber-root.js +0 -6
- package/dist/fiber-root.js.map +0 -1
- package/dist/nodes/column-view.d.ts +0 -37
- package/dist/nodes/column-view.d.ts.map +0 -1
- package/dist/nodes/column-view.js +0 -205
- package/dist/nodes/column-view.js.map +0 -1
- package/dist/nodes/drop-down.d.ts +0 -37
- package/dist/nodes/drop-down.d.ts.map +0 -1
- package/dist/nodes/drop-down.js +0 -231
- package/dist/nodes/drop-down.js.map +0 -1
- package/dist/nodes/grid-view.d.ts +0 -30
- package/dist/nodes/grid-view.d.ts.map +0 -1
- package/dist/nodes/grid-view.js +0 -90
- package/dist/nodes/grid-view.js.map +0 -1
- package/dist/nodes/internal/base-item-renderer.d.ts +0 -28
- package/dist/nodes/internal/base-item-renderer.d.ts.map +0 -1
- package/dist/nodes/internal/base-item-renderer.js +0 -85
- package/dist/nodes/internal/base-item-renderer.js.map +0 -1
- package/dist/nodes/internal/grid-item-renderer.d.ts +0 -20
- package/dist/nodes/internal/grid-item-renderer.d.ts.map +0 -1
- package/dist/nodes/internal/grid-item-renderer.js +0 -66
- package/dist/nodes/internal/grid-item-renderer.js.map +0 -1
- package/dist/nodes/internal/header-item-renderer.d.ts +0 -23
- package/dist/nodes/internal/header-item-renderer.d.ts.map +0 -1
- package/dist/nodes/internal/header-item-renderer.js +0 -87
- package/dist/nodes/internal/header-item-renderer.js.map +0 -1
- package/dist/nodes/internal/header-renderer-manager.d.ts +0 -13
- package/dist/nodes/internal/header-renderer-manager.d.ts.map +0 -1
- package/dist/nodes/internal/header-renderer-manager.js +0 -20
- package/dist/nodes/internal/header-renderer-manager.js.map +0 -1
- package/dist/nodes/internal/list-item-renderer.d.ts +0 -27
- package/dist/nodes/internal/list-item-renderer.d.ts.map +0 -1
- package/dist/nodes/internal/list-item-renderer.js +0 -131
- package/dist/nodes/internal/list-item-renderer.js.map +0 -1
- package/dist/nodes/internal/list-store.d.ts +0 -21
- package/dist/nodes/internal/list-store.d.ts.map +0 -1
- package/dist/nodes/internal/list-store.js +0 -90
- package/dist/nodes/internal/list-store.js.map +0 -1
- package/dist/nodes/internal/sectioned-list-store.d.ts +0 -50
- package/dist/nodes/internal/sectioned-list-store.d.ts.map +0 -1
- package/dist/nodes/internal/sectioned-list-store.js +0 -250
- package/dist/nodes/internal/sectioned-list-store.js.map +0 -1
- package/dist/nodes/internal/selection-helpers.d.ts +0 -12
- package/dist/nodes/internal/selection-helpers.d.ts.map +0 -1
- package/dist/nodes/internal/selection-helpers.js +0 -25
- package/dist/nodes/internal/selection-helpers.js.map +0 -1
- package/dist/nodes/internal/selection-model-controller.d.ts +0 -26
- package/dist/nodes/internal/selection-model-controller.d.ts.map +0 -1
- package/dist/nodes/internal/selection-model-controller.js +0 -82
- package/dist/nodes/internal/selection-model-controller.js.map +0 -1
- package/dist/nodes/internal/simple-list-store.d.ts +0 -15
- package/dist/nodes/internal/simple-list-store.d.ts.map +0 -1
- package/dist/nodes/internal/simple-list-store.js +0 -110
- package/dist/nodes/internal/simple-list-store.js.map +0 -1
- package/dist/nodes/internal/tree-store.d.ts +0 -37
- package/dist/nodes/internal/tree-store.d.ts.map +0 -1
- package/dist/nodes/internal/tree-store.js +0 -253
- package/dist/nodes/internal/tree-store.js.map +0 -1
- package/dist/nodes/list-item.d.ts +0 -24
- package/dist/nodes/list-item.d.ts.map +0 -1
- package/dist/nodes/list-item.js +0 -83
- package/dist/nodes/list-item.js.map +0 -1
- package/dist/nodes/list-section.d.ts +0 -27
- package/dist/nodes/list-section.d.ts.map +0 -1
- package/dist/nodes/list-section.js +0 -43
- package/dist/nodes/list-section.js.map +0 -1
- package/dist/nodes/list-view.d.ts +0 -32
- package/dist/nodes/list-view.d.ts.map +0 -1
- package/dist/nodes/list-view.js +0 -123
- package/dist/nodes/list-view.js.map +0 -1
- package/dist/nodes/models/list.d.ts +0 -39
- package/dist/nodes/models/list.d.ts.map +0 -1
- package/dist/nodes/models/list.js +0 -207
- package/dist/nodes/models/list.js.map +0 -1
- package/src/fiber-root.ts +0 -20
- package/src/nodes/column-view.ts +0 -262
- package/src/nodes/drop-down.ts +0 -284
- package/src/nodes/grid-view.ts +0 -119
- package/src/nodes/internal/base-item-renderer.ts +0 -107
- package/src/nodes/internal/grid-item-renderer.ts +0 -78
- package/src/nodes/internal/header-item-renderer.ts +0 -105
- package/src/nodes/internal/header-renderer-manager.ts +0 -33
- package/src/nodes/internal/list-item-renderer.ts +0 -162
- package/src/nodes/internal/list-store.ts +0 -107
- package/src/nodes/internal/sectioned-list-store.ts +0 -287
- package/src/nodes/internal/selection-helpers.ts +0 -35
- package/src/nodes/internal/selection-model-controller.ts +0 -119
- package/src/nodes/internal/simple-list-store.ts +0 -116
- package/src/nodes/internal/tree-store.ts +0 -289
- package/src/nodes/list-item.ts +0 -107
- package/src/nodes/list-section.ts +0 -64
- package/src/nodes/list-view.ts +0 -164
- package/src/nodes/models/list.ts +0 -250
|
@@ -81,6 +81,10 @@ export class NotebookPageNode extends VirtualNode<NotebookPageProps, WidgetNode<
|
|
|
81
81
|
public override detachDeletedInstance(): void {
|
|
82
82
|
const childWidget = this.findContentChild()?.container ?? null;
|
|
83
83
|
if (childWidget && this.parent) {
|
|
84
|
+
const notebook = this.getParentWidget();
|
|
85
|
+
if (notebook.getNPages() <= 1) {
|
|
86
|
+
notebook.setShowTabs(false);
|
|
87
|
+
}
|
|
84
88
|
this.detachPage(childWidget);
|
|
85
89
|
}
|
|
86
90
|
super.detachDeletedInstance();
|
|
@@ -157,11 +161,11 @@ export class NotebookPageNode extends VirtualNode<NotebookPageProps, WidgetNode<
|
|
|
157
161
|
if (!page) return;
|
|
158
162
|
|
|
159
163
|
if (this.props.tabExpand !== undefined) {
|
|
160
|
-
page.
|
|
164
|
+
page.tabExpand = this.props.tabExpand;
|
|
161
165
|
}
|
|
162
166
|
|
|
163
167
|
if (this.props.tabFill !== undefined) {
|
|
164
|
-
page.
|
|
168
|
+
page.tabFill = this.props.tabFill;
|
|
165
169
|
}
|
|
166
170
|
}
|
|
167
171
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as Gtk from "@gtkx/ffi/gtk";
|
|
2
2
|
import type { OverlayChildProps } from "../jsx.js";
|
|
3
3
|
import type { Node } from "../node.js";
|
|
4
|
+
import { isRemovable } from "./internal/predicates.js";
|
|
4
5
|
import { hasChanged } from "./internal/props.js";
|
|
5
6
|
import { VirtualNode } from "./virtual.js";
|
|
6
7
|
import { WidgetNode } from "./widget.js";
|
|
@@ -32,6 +33,7 @@ export class OverlayChildNode extends VirtualNode<OverlayChildProps, WidgetNode<
|
|
|
32
33
|
super.appendChild(child);
|
|
33
34
|
|
|
34
35
|
if (this.parent) {
|
|
36
|
+
this.detachFromGtkParent(child);
|
|
35
37
|
this.attachToParent(this.parent.container, child.container);
|
|
36
38
|
}
|
|
37
39
|
}
|
|
@@ -40,19 +42,12 @@ export class OverlayChildNode extends VirtualNode<OverlayChildProps, WidgetNode<
|
|
|
40
42
|
super.insertBefore(child, before);
|
|
41
43
|
|
|
42
44
|
if (this.parent) {
|
|
43
|
-
this.
|
|
45
|
+
this.reinsertAllChildren();
|
|
44
46
|
}
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
public override removeChild(child: WidgetNode): void {
|
|
48
|
-
|
|
49
|
-
const widget = child.container;
|
|
50
|
-
const currentParent = widget.getParent();
|
|
51
|
-
if (currentParent && currentParent === this.parent.container) {
|
|
52
|
-
this.parent.container.removeOverlay(widget);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
50
|
+
this.detachFromGtkParent(child);
|
|
56
51
|
super.removeChild(child);
|
|
57
52
|
}
|
|
58
53
|
|
|
@@ -98,6 +93,32 @@ export class OverlayChildNode extends VirtualNode<OverlayChildProps, WidgetNode<
|
|
|
98
93
|
}
|
|
99
94
|
}
|
|
100
95
|
|
|
96
|
+
private detachFromGtkParent(child: WidgetNode): void {
|
|
97
|
+
const currentParent = child.container.getParent();
|
|
98
|
+
if (currentParent !== null) {
|
|
99
|
+
if (currentParent instanceof Gtk.Overlay) {
|
|
100
|
+
currentParent.removeOverlay(child.container);
|
|
101
|
+
} else if (isRemovable(currentParent)) {
|
|
102
|
+
currentParent.remove(child.container);
|
|
103
|
+
} else {
|
|
104
|
+
child.container.unparent();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
private reinsertAllChildren(): void {
|
|
110
|
+
if (!this.parent) return;
|
|
111
|
+
const parent = this.parent.container;
|
|
112
|
+
|
|
113
|
+
for (const child of this.children) {
|
|
114
|
+
this.detachFromGtkParent(child);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
for (const child of this.children) {
|
|
118
|
+
this.attachToParent(parent, child.container);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
101
122
|
private detachAllChildren(parent: Gtk.Overlay): void {
|
|
102
123
|
for (const child of this.children) {
|
|
103
124
|
const currentParent = child.container.getParent();
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type * as Adw from "@gtkx/ffi/adw";
|
|
2
|
+
import * as Gtk from "@gtkx/ffi/gtk";
|
|
3
|
+
import type { AdjustableProps } from "../jsx.js";
|
|
4
|
+
import { filterProps, hasChanged } from "./internal/props.js";
|
|
5
|
+
import { WidgetNode } from "./widget.js";
|
|
6
|
+
|
|
7
|
+
type SpinRowProps = AdjustableProps & {
|
|
8
|
+
onValueChanged?: ((value: number, self: Adw.SpinRow) => void) | null;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const OWN_PROPS = ["value", "lower", "upper", "stepIncrement", "pageIncrement", "pageSize", "onValueChanged"] as const;
|
|
12
|
+
|
|
13
|
+
export class SpinRowNode extends WidgetNode<Adw.SpinRow, SpinRowProps> {
|
|
14
|
+
private adjustment: Gtk.Adjustment | null = null;
|
|
15
|
+
|
|
16
|
+
public override commitUpdate(oldProps: SpinRowProps | null, newProps: SpinRowProps): void {
|
|
17
|
+
super.commitUpdate(oldProps ? filterProps(oldProps, OWN_PROPS) : null, filterProps(newProps, OWN_PROPS));
|
|
18
|
+
this.applyOwnProps(oldProps, newProps);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
private ensureAdjustment(props: SpinRowProps): Gtk.Adjustment {
|
|
22
|
+
if (!this.adjustment) {
|
|
23
|
+
this.adjustment = new Gtk.Adjustment(
|
|
24
|
+
props.value ?? 0,
|
|
25
|
+
props.lower ?? 0,
|
|
26
|
+
props.upper ?? 100,
|
|
27
|
+
props.stepIncrement ?? 1,
|
|
28
|
+
props.pageIncrement ?? 10,
|
|
29
|
+
props.pageSize ?? 0,
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
this.container.setAdjustment(this.adjustment);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return this.adjustment;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
private applyOwnProps(oldProps: SpinRowProps | null, newProps: SpinRowProps): void {
|
|
39
|
+
const adjustment = this.ensureAdjustment(newProps);
|
|
40
|
+
|
|
41
|
+
if (hasChanged(oldProps, newProps, "onValueChanged")) {
|
|
42
|
+
const { onValueChanged } = newProps;
|
|
43
|
+
this.signalStore.set(
|
|
44
|
+
this,
|
|
45
|
+
this.container,
|
|
46
|
+
"notify::value",
|
|
47
|
+
onValueChanged ? (self: Adw.SpinRow) => onValueChanged(self.getValue(), self) : undefined,
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (!oldProps) return;
|
|
52
|
+
|
|
53
|
+
if (hasChanged(oldProps, newProps, "lower")) {
|
|
54
|
+
adjustment.setLower(newProps.lower ?? 0);
|
|
55
|
+
}
|
|
56
|
+
if (hasChanged(oldProps, newProps, "upper")) {
|
|
57
|
+
adjustment.setUpper(newProps.upper ?? 100);
|
|
58
|
+
}
|
|
59
|
+
if (hasChanged(oldProps, newProps, "stepIncrement")) {
|
|
60
|
+
adjustment.setStepIncrement(newProps.stepIncrement ?? 1);
|
|
61
|
+
}
|
|
62
|
+
if (hasChanged(oldProps, newProps, "pageIncrement")) {
|
|
63
|
+
adjustment.setPageIncrement(newProps.pageIncrement ?? 10);
|
|
64
|
+
}
|
|
65
|
+
if (hasChanged(oldProps, newProps, "pageSize")) {
|
|
66
|
+
adjustment.setPageSize(newProps.pageSize ?? 0);
|
|
67
|
+
}
|
|
68
|
+
if (hasChanged(oldProps, newProps, "value") && newProps.value !== undefined) {
|
|
69
|
+
adjustment.setValue(newProps.value);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type * as Adw from "@gtkx/ffi/adw";
|
|
2
|
+
import { hasChanged } from "./internal/props.js";
|
|
3
|
+
import { WidgetNode } from "./widget.js";
|
|
4
|
+
|
|
5
|
+
type SwitchRowProps = {
|
|
6
|
+
onActiveChanged?: ((active: boolean, self: Adw.SwitchRow) => void) | null;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export class SwitchRowNode extends WidgetNode<Adw.SwitchRow, SwitchRowProps> {
|
|
10
|
+
public override commitUpdate(oldProps: SwitchRowProps | null, newProps: SwitchRowProps): void {
|
|
11
|
+
super.commitUpdate(oldProps, newProps);
|
|
12
|
+
this.applyOwnProps(oldProps, newProps);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
private applyOwnProps(oldProps: SwitchRowProps | null, newProps: SwitchRowProps): void {
|
|
16
|
+
if (hasChanged(oldProps, newProps, "onActiveChanged")) {
|
|
17
|
+
const { onActiveChanged } = newProps;
|
|
18
|
+
this.signalStore.set(
|
|
19
|
+
this,
|
|
20
|
+
this.container,
|
|
21
|
+
"notify::active",
|
|
22
|
+
onActiveChanged ? (self: Adw.SwitchRow) => onActiveChanged(self.getActive(), self) : undefined,
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
package/src/nodes/text-anchor.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as Gtk from "@gtkx/ffi/gtk";
|
|
2
2
|
import type { TextAnchorProps } from "../jsx.js";
|
|
3
3
|
import type { Node } from "../node.js";
|
|
4
|
+
import { isRemovable } from "./internal/predicates.js";
|
|
4
5
|
import { TEXT_OBJECT_REPLACEMENT, type TextContentParent } from "./text-content.js";
|
|
5
6
|
import { isTextContentParent } from "./text-segment.js";
|
|
6
7
|
import { VirtualNode } from "./virtual.js";
|
|
@@ -66,6 +67,14 @@ export class TextAnchorNode extends VirtualNode<TextAnchorProps, Node & TextCont
|
|
|
66
67
|
super.appendChild(child);
|
|
67
68
|
|
|
68
69
|
if (this.textView && this.anchor && child.container) {
|
|
70
|
+
const currentParent = child.container.getParent();
|
|
71
|
+
if (currentParent !== null) {
|
|
72
|
+
if (isRemovable(currentParent)) {
|
|
73
|
+
currentParent.remove(child.container);
|
|
74
|
+
} else {
|
|
75
|
+
child.container.unparent();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
69
78
|
this.textView.addChildAtAnchor(child.container, this.anchor);
|
|
70
79
|
}
|
|
71
80
|
}
|
package/src/nodes/text-tag.ts
CHANGED
|
@@ -8,45 +8,45 @@ import { TextPaintableNode } from "./text-paintable.js";
|
|
|
8
8
|
import { isTextContentParent, TextSegmentNode } from "./text-segment.js";
|
|
9
9
|
import { VirtualNode } from "./virtual.js";
|
|
10
10
|
|
|
11
|
-
const STYLE_PROPS: Partial<Record<keyof TextTagProps, keyof Gtk.TextTag>> = {
|
|
11
|
+
const STYLE_PROPS: Partial<Record<keyof TextTagProps, keyof Gtk.TextTag | string>> = {
|
|
12
12
|
background: "setBackground",
|
|
13
|
-
backgroundFullHeight: "
|
|
13
|
+
backgroundFullHeight: "backgroundFullHeight",
|
|
14
14
|
foreground: "setForeground",
|
|
15
|
-
family: "
|
|
16
|
-
font: "
|
|
17
|
-
sizePoints: "
|
|
18
|
-
size: "
|
|
19
|
-
scale: "
|
|
20
|
-
weight: "
|
|
21
|
-
style: "
|
|
22
|
-
stretch: "
|
|
23
|
-
variant: "
|
|
24
|
-
strikethrough: "
|
|
25
|
-
underline: "
|
|
26
|
-
overline: "
|
|
27
|
-
rise: "
|
|
28
|
-
letterSpacing: "
|
|
29
|
-
lineHeight: "
|
|
30
|
-
leftMargin: "
|
|
31
|
-
rightMargin: "
|
|
32
|
-
indent: "
|
|
33
|
-
pixelsAboveLines: "
|
|
34
|
-
pixelsBelowLines: "
|
|
35
|
-
pixelsInsideWrap: "
|
|
36
|
-
justification: "
|
|
37
|
-
direction: "
|
|
38
|
-
wrapMode: "
|
|
39
|
-
editable: "
|
|
40
|
-
invisible: "
|
|
41
|
-
allowBreaks: "
|
|
42
|
-
insertHyphens: "
|
|
43
|
-
fallback: "
|
|
44
|
-
accumulativeMargin: "
|
|
15
|
+
family: "family",
|
|
16
|
+
font: "font",
|
|
17
|
+
sizePoints: "sizePoints",
|
|
18
|
+
size: "size",
|
|
19
|
+
scale: "scale",
|
|
20
|
+
weight: "weight",
|
|
21
|
+
style: "style",
|
|
22
|
+
stretch: "stretch",
|
|
23
|
+
variant: "variant",
|
|
24
|
+
strikethrough: "strikethrough",
|
|
25
|
+
underline: "underline",
|
|
26
|
+
overline: "overline",
|
|
27
|
+
rise: "rise",
|
|
28
|
+
letterSpacing: "letterSpacing",
|
|
29
|
+
lineHeight: "lineHeight",
|
|
30
|
+
leftMargin: "leftMargin",
|
|
31
|
+
rightMargin: "rightMargin",
|
|
32
|
+
indent: "indent",
|
|
33
|
+
pixelsAboveLines: "pixelsAboveLines",
|
|
34
|
+
pixelsBelowLines: "pixelsBelowLines",
|
|
35
|
+
pixelsInsideWrap: "pixelsInsideWrap",
|
|
36
|
+
justification: "justification",
|
|
37
|
+
direction: "direction",
|
|
38
|
+
wrapMode: "wrapMode",
|
|
39
|
+
editable: "editable",
|
|
40
|
+
invisible: "invisible",
|
|
41
|
+
allowBreaks: "allowBreaks",
|
|
42
|
+
insertHyphens: "insertHyphens",
|
|
43
|
+
fallback: "fallback",
|
|
44
|
+
accumulativeMargin: "accumulativeMargin",
|
|
45
45
|
paragraphBackground: "setParagraphBackground",
|
|
46
|
-
showSpaces: "
|
|
47
|
-
textTransform: "
|
|
48
|
-
fontFeatures: "
|
|
49
|
-
language: "
|
|
46
|
+
showSpaces: "showSpaces",
|
|
47
|
+
textTransform: "textTransform",
|
|
48
|
+
fontFeatures: "fontFeatures",
|
|
49
|
+
language: "language",
|
|
50
50
|
};
|
|
51
51
|
|
|
52
52
|
type TextTagParent = Node & TextContentParent;
|
|
@@ -225,10 +225,15 @@ export class TextTagNode
|
|
|
225
225
|
for (const prop of Object.keys(STYLE_PROPS) as (keyof TextTagProps)[]) {
|
|
226
226
|
if (hasChanged(oldProps, newProps, prop)) {
|
|
227
227
|
const value = newProps[prop];
|
|
228
|
-
const
|
|
229
|
-
if (value !== undefined &&
|
|
230
|
-
const
|
|
231
|
-
|
|
228
|
+
const target = STYLE_PROPS[prop];
|
|
229
|
+
if (value !== undefined && target) {
|
|
230
|
+
const tag = this.tag as unknown as Record<string, unknown>;
|
|
231
|
+
const member = tag[target];
|
|
232
|
+
if (typeof member === "function") {
|
|
233
|
+
(member as (v: unknown) => void).call(this.tag, value);
|
|
234
|
+
} else {
|
|
235
|
+
tag[target] = value;
|
|
236
|
+
}
|
|
232
237
|
}
|
|
233
238
|
}
|
|
234
239
|
}
|
|
@@ -1,19 +1,41 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type
|
|
1
|
+
import * as Adw from "@gtkx/ffi/adw";
|
|
2
|
+
import type * as Gtk from "@gtkx/ffi/gtk";
|
|
3
|
+
import type { AdwToggleGroupProps, ToggleProps } from "../jsx.js";
|
|
4
|
+
import type { Container, Props } from "../types.js";
|
|
5
|
+
import { createContainerWithProperties } from "./internal/construct.js";
|
|
3
6
|
import { filterProps, hasChanged } from "./internal/props.js";
|
|
4
7
|
import { WidgetNode } from "./widget.js";
|
|
5
8
|
|
|
6
|
-
const
|
|
9
|
+
const DEFERRED_PROPS = ["activeName", "active"] as const;
|
|
10
|
+
const OWN_PROPS = ["onActiveChanged", "toggles", ...DEFERRED_PROPS] as const;
|
|
7
11
|
|
|
8
|
-
type
|
|
12
|
+
type OwnProps = Pick<AdwToggleGroupProps, (typeof OWN_PROPS)[number]>;
|
|
9
13
|
|
|
10
|
-
export class ToggleGroupNode extends WidgetNode<Adw.ToggleGroup,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
export class ToggleGroupNode extends WidgetNode<Adw.ToggleGroup, OwnProps> {
|
|
15
|
+
private managedToggles: Adw.Toggle[] = [];
|
|
16
|
+
|
|
17
|
+
public static override createContainer(props: Props, containerClass: typeof Gtk.Widget): Container | null {
|
|
18
|
+
const { activeName: _, active: __, ...rest } = props;
|
|
19
|
+
return createContainerWithProperties(containerClass, rest);
|
|
14
20
|
}
|
|
15
21
|
|
|
16
|
-
|
|
22
|
+
public override commitUpdate(oldProps: OwnProps | null, newProps: OwnProps): void {
|
|
23
|
+
if (hasChanged(oldProps, newProps, "toggles")) {
|
|
24
|
+
this.syncToggles(newProps.toggles ?? []);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
super.commitUpdate(oldProps ? filterProps(oldProps, OWN_PROPS) : null, filterProps(newProps, OWN_PROPS));
|
|
28
|
+
|
|
29
|
+
if (hasChanged(oldProps, newProps, "activeName")) {
|
|
30
|
+
this.container.setActiveName(newProps.activeName ?? null);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (hasChanged(oldProps, newProps, "active")) {
|
|
34
|
+
if (newProps.active != null) {
|
|
35
|
+
this.container.setActive(newProps.active);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
17
39
|
if (hasChanged(oldProps, newProps, "onActiveChanged")) {
|
|
18
40
|
const callback = newProps.onActiveChanged;
|
|
19
41
|
this.signalStore.set(
|
|
@@ -24,4 +46,36 @@ export class ToggleGroupNode extends WidgetNode<Adw.ToggleGroup, ToggleGroupProp
|
|
|
24
46
|
);
|
|
25
47
|
}
|
|
26
48
|
}
|
|
49
|
+
|
|
50
|
+
public override detachDeletedInstance(): void {
|
|
51
|
+
this.clearToggles();
|
|
52
|
+
super.detachDeletedInstance();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
private syncToggles(newToggles: ToggleProps[]): void {
|
|
56
|
+
this.clearToggles();
|
|
57
|
+
|
|
58
|
+
for (const toggleProps of newToggles) {
|
|
59
|
+
const toggle = new Adw.Toggle();
|
|
60
|
+
applyToggleProps(toggle, toggleProps);
|
|
61
|
+
this.container.add(toggle);
|
|
62
|
+
this.managedToggles.push(toggle);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
private clearToggles(): void {
|
|
67
|
+
for (const toggle of this.managedToggles) {
|
|
68
|
+
this.container.remove(toggle);
|
|
69
|
+
}
|
|
70
|
+
this.managedToggles = [];
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function applyToggleProps(toggle: Adw.Toggle, props: ToggleProps): void {
|
|
75
|
+
if (props.id != null) toggle.setName(props.id);
|
|
76
|
+
if (props.label != null) toggle.setLabel(props.label);
|
|
77
|
+
if (props.iconName != null) toggle.setIconName(props.iconName);
|
|
78
|
+
if (props.tooltip !== undefined) toggle.setTooltip(props.tooltip);
|
|
79
|
+
if (props.enabled !== undefined) toggle.setEnabled(props.enabled);
|
|
80
|
+
if (props.useUnderline !== undefined) toggle.setUseUnderline(props.useUnderline);
|
|
27
81
|
}
|
package/src/nodes/widget.ts
CHANGED
|
@@ -11,12 +11,11 @@ import {
|
|
|
11
11
|
typeNameFromInstance,
|
|
12
12
|
} from "@gtkx/ffi/gobject";
|
|
13
13
|
import * as Gtk from "@gtkx/ffi/gtk";
|
|
14
|
-
import { CONSTRUCTOR_PROPS } from "../generated/internal.js";
|
|
15
14
|
import { isConstructOnlyProp, resolvePropMeta, resolveSignal } from "../metadata.js";
|
|
16
15
|
import { Node } from "../node.js";
|
|
17
16
|
import type { Container, Props } from "../types.js";
|
|
18
17
|
import { applyAccessibleProps, isAccessibleProp } from "./internal/accessible.js";
|
|
19
|
-
import {
|
|
18
|
+
import { createContainerWithProperties } from "./internal/construct.js";
|
|
20
19
|
import {
|
|
21
20
|
type InsertableWidget,
|
|
22
21
|
isAddable,
|
|
@@ -56,15 +55,7 @@ export class WidgetNode<
|
|
|
56
55
|
containerClass: typeof Gtk.Widget,
|
|
57
56
|
_rootContainer?: Container,
|
|
58
57
|
): Container | null {
|
|
59
|
-
|
|
60
|
-
const typeName = WidgetClass.glibTypeName;
|
|
61
|
-
const args = (CONSTRUCTOR_PROPS[typeName] ?? []).map((name) => props[name]);
|
|
62
|
-
|
|
63
|
-
return createContainerWithConstructOnly(
|
|
64
|
-
WidgetClass,
|
|
65
|
-
props,
|
|
66
|
-
() => new WidgetClass(...(args as ConstructorParameters<typeof Gtk.Widget>)),
|
|
67
|
-
);
|
|
58
|
+
return createContainerWithProperties(containerClass, props);
|
|
68
59
|
}
|
|
69
60
|
|
|
70
61
|
public override isValidChild(_child: Node): boolean {
|
|
@@ -306,23 +297,16 @@ export class WidgetNode<
|
|
|
306
297
|
}
|
|
307
298
|
|
|
308
299
|
private setProperty(key: string, value: unknown): void {
|
|
309
|
-
const
|
|
310
|
-
if (!
|
|
311
|
-
|
|
312
|
-
const [getterName, setterName] = propMeta;
|
|
313
|
-
const setter = this.container[setterName as keyof typeof this.container];
|
|
314
|
-
if (!setter || typeof setter !== "function") return;
|
|
300
|
+
const propName = resolvePropMeta(this.container, key);
|
|
301
|
+
if (!propName) return;
|
|
315
302
|
|
|
316
|
-
|
|
317
|
-
const getter = this.container[getterName as keyof typeof this.container];
|
|
303
|
+
const target = this.container as Record<string, unknown>;
|
|
318
304
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
if (currentValue === value) return;
|
|
322
|
-
}
|
|
305
|
+
if (findProperty(this.container, key) instanceof ParamSpecString) {
|
|
306
|
+
if (target[propName] === value) return;
|
|
323
307
|
}
|
|
324
308
|
|
|
325
|
-
|
|
309
|
+
target[propName] = value;
|
|
326
310
|
}
|
|
327
311
|
|
|
328
312
|
private insertBeforeReorderable(container: ReorderableWidget, child: WidgetNode, before: WidgetNode): void {
|
|
@@ -375,7 +359,11 @@ export class WidgetNode<
|
|
|
375
359
|
|
|
376
360
|
function detachChildFromParent(child: WidgetNode): void {
|
|
377
361
|
const currentParent = child.container.getParent();
|
|
378
|
-
if (currentParent !== null
|
|
379
|
-
currentParent
|
|
362
|
+
if (currentParent !== null) {
|
|
363
|
+
if (isRemovable(currentParent)) {
|
|
364
|
+
currentParent.remove(child.container);
|
|
365
|
+
} else {
|
|
366
|
+
child.container.unparent();
|
|
367
|
+
}
|
|
380
368
|
}
|
|
381
369
|
}
|
package/src/nodes/window.ts
CHANGED
|
@@ -107,6 +107,7 @@ export class WindowNode extends WidgetNode<Gtk.Window, WindowProps, WindowChild>
|
|
|
107
107
|
|
|
108
108
|
public override removeChild(child: WindowChild): void {
|
|
109
109
|
if (child instanceof WindowNode) {
|
|
110
|
+
child.container.setVisible(false);
|
|
110
111
|
child.container.setTransientFor(null);
|
|
111
112
|
super.removeChild(child);
|
|
112
113
|
return;
|
|
@@ -152,9 +153,8 @@ export class WindowNode extends WidgetNode<Gtk.Window, WindowProps, WindowChild>
|
|
|
152
153
|
}
|
|
153
154
|
|
|
154
155
|
public override detachDeletedInstance(): void {
|
|
155
|
-
this.container.setVisible(false);
|
|
156
|
-
this.container.destroy();
|
|
157
156
|
super.detachDeletedInstance();
|
|
157
|
+
this.container.destroy();
|
|
158
158
|
}
|
|
159
159
|
|
|
160
160
|
private applyOwnProps(oldProps: WindowProps | null, newProps: WindowProps): void {
|
package/src/registry.ts
CHANGED
|
@@ -5,26 +5,22 @@ import * as WebKit from "@gtkx/ffi/webkit";
|
|
|
5
5
|
import type { Node } from "./node.js";
|
|
6
6
|
import { AdjustableNode } from "./nodes/adjustable.js";
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import { AlertDialogNode } from "./nodes/alert-dialog.js";
|
|
9
9
|
import { AnimationNode } from "./nodes/animation.js";
|
|
10
10
|
import { ApplicationNode } from "./nodes/application.js";
|
|
11
11
|
import { CalendarNode } from "./nodes/calendar.js";
|
|
12
12
|
import { ColorDialogButtonNode } from "./nodes/color-dialog-button.js";
|
|
13
|
-
import { ColumnViewNode } from "./nodes/column-view.js";
|
|
14
13
|
import { ColumnViewColumnNode } from "./nodes/column-view-column.js";
|
|
15
14
|
import { ContainerSlotNode } from "./nodes/container-slot.js";
|
|
16
15
|
import { DialogNode } from "./nodes/dialog.js";
|
|
17
16
|
import { DrawingAreaNode } from "./nodes/drawing-area.js";
|
|
18
|
-
import { DropDownNode } from "./nodes/drop-down.js";
|
|
19
17
|
import { EventControllerNode } from "./nodes/event-controller.js";
|
|
20
18
|
import { FixedChildNode } from "./nodes/fixed-child.js";
|
|
21
19
|
import { FontDialogButtonNode } from "./nodes/font-dialog-button.js";
|
|
22
20
|
import { GridChildNode } from "./nodes/grid-child.js";
|
|
23
|
-
import { GridViewNode } from "./nodes/grid-view.js";
|
|
24
21
|
import { LevelBarNode } from "./nodes/level-bar.js";
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import { ListViewNode } from "./nodes/list-view.js";
|
|
22
|
+
import { ListNode } from "./nodes/list.js";
|
|
23
|
+
import { ListItemNode } from "./nodes/list-item-node.js";
|
|
28
24
|
import { MenuNode } from "./nodes/menu.js";
|
|
29
25
|
import { NavigationPageNode } from "./nodes/navigation-page.js";
|
|
30
26
|
import { NavigationViewNode } from "./nodes/navigation-view.js";
|
|
@@ -39,14 +35,15 @@ import { SearchBarNode } from "./nodes/search-bar.js";
|
|
|
39
35
|
import { ShortcutNode } from "./nodes/shortcut.js";
|
|
40
36
|
import { SlotNode } from "./nodes/slot.js";
|
|
41
37
|
import { SourceViewNode } from "./nodes/source-view.js";
|
|
38
|
+
import { SpinRowNode } from "./nodes/spin-row.js";
|
|
42
39
|
import { StackNode } from "./nodes/stack.js";
|
|
43
40
|
import { StackPageNode } from "./nodes/stack-page.js";
|
|
41
|
+
import { SwitchRowNode } from "./nodes/switch-row.js";
|
|
44
42
|
import { TextAnchorNode } from "./nodes/text-anchor.js";
|
|
45
43
|
import { TextPaintableNode } from "./nodes/text-paintable.js";
|
|
46
44
|
import { TextSegmentNode } from "./nodes/text-segment.js";
|
|
47
45
|
import { TextTagNode } from "./nodes/text-tag.js";
|
|
48
46
|
import { TextViewNode } from "./nodes/text-view.js";
|
|
49
|
-
import { ToggleNode } from "./nodes/toggle.js";
|
|
50
47
|
import { ToggleGroupNode } from "./nodes/toggle-group.js";
|
|
51
48
|
import { WebViewNode } from "./nodes/web-view.js";
|
|
52
49
|
import { WidgetNode } from "./nodes/widget.js";
|
|
@@ -58,14 +55,16 @@ export type AdjustableWidget = InstanceType<(typeof AdjustableWidgets)[number]>;
|
|
|
58
55
|
export const StackWidgets = [Gtk.Stack, Adw.ViewStack] as const;
|
|
59
56
|
export type StackWidget = InstanceType<(typeof StackWidgets)[number]>;
|
|
60
57
|
|
|
61
|
-
export const DropDownWidgets = [Gtk.DropDown, Adw.ComboRow] as const;
|
|
62
|
-
export type DropDownWidget = InstanceType<(typeof DropDownWidgets)[number]>;
|
|
63
|
-
|
|
64
58
|
export const PopoverMenuWidgets = [Gtk.PopoverMenu, Gtk.PopoverMenuBar, Gtk.MenuButton] as const;
|
|
65
59
|
export type PopoverMenuWidget = InstanceType<(typeof PopoverMenuWidgets)[number]>;
|
|
66
60
|
|
|
67
|
-
|
|
68
|
-
|
|
61
|
+
export type NodeClass = (new (
|
|
62
|
+
// biome-ignore lint/suspicious/noExplicitAny: Registry entries require flexible typing for varied node constructors
|
|
63
|
+
...args: any[]
|
|
64
|
+
) => Node) & {
|
|
65
|
+
// biome-ignore lint/suspicious/noExplicitAny: Registry entries require flexible typing for varied node constructors
|
|
66
|
+
createContainer(...args: any[]): unknown;
|
|
67
|
+
};
|
|
69
68
|
|
|
70
69
|
// biome-ignore lint/suspicious/noExplicitAny: Class keys require flexible typing for GTK class hierarchy matching
|
|
71
70
|
type ClassKey = new (...args: any[]) => any;
|
|
@@ -74,19 +73,15 @@ type NodeRegistryEntry = [RegistryKey, NodeClass];
|
|
|
74
73
|
|
|
75
74
|
export const NODE_REGISTRY: NodeRegistryEntry[] = [
|
|
76
75
|
["ContainerSlot", ContainerSlotNode],
|
|
77
|
-
["
|
|
78
|
-
["Animation", AnimationNode],
|
|
76
|
+
[["AdwTimedAnimation", "AdwSpringAnimation"], AnimationNode],
|
|
79
77
|
["ColumnViewColumn", ColumnViewColumnNode],
|
|
80
78
|
["FixedChild", FixedChildNode],
|
|
81
79
|
["GridChild", GridChildNode],
|
|
82
|
-
["ListItem", ListItemNode],
|
|
83
|
-
["ListSection", ListSectionNode],
|
|
84
80
|
[["MenuItem", "MenuSection", "MenuSubmenu"], MenuNode],
|
|
85
81
|
["NavigationPage", NavigationPageNode],
|
|
86
82
|
["NotebookPage", NotebookPageNode],
|
|
87
83
|
["NotebookPageTab", NotebookPageTabNode],
|
|
88
84
|
["OverlayChild", OverlayChildNode],
|
|
89
|
-
|
|
90
85
|
["Shortcut", ShortcutNode],
|
|
91
86
|
["Slot", SlotNode],
|
|
92
87
|
["StackPage", StackPageNode],
|
|
@@ -94,15 +89,16 @@ export const NODE_REGISTRY: NodeRegistryEntry[] = [
|
|
|
94
89
|
["TextPaintable", TextPaintableNode],
|
|
95
90
|
["TextSegment", TextSegmentNode],
|
|
96
91
|
["TextTag", TextTagNode],
|
|
97
|
-
["Toggle", ToggleNode],
|
|
98
92
|
[Gtk.Application, ApplicationNode],
|
|
99
|
-
|
|
100
93
|
[Gtk.EventController, EventControllerNode],
|
|
101
94
|
[GtkSource.View, SourceViewNode],
|
|
102
95
|
[Gtk.TextView, TextViewNode],
|
|
103
96
|
[WebKit.WebView, WebViewNode],
|
|
97
|
+
[Adw.AlertDialog, AlertDialogNode],
|
|
104
98
|
[Adw.Dialog, DialogNode],
|
|
105
99
|
[Gtk.Window, WindowNode],
|
|
100
|
+
[Adw.SpinRow, SpinRowNode],
|
|
101
|
+
[Adw.SwitchRow, SwitchRowNode],
|
|
106
102
|
[Gtk.Scale, ScaleNode],
|
|
107
103
|
[Gtk.LevelBar, LevelBarNode],
|
|
108
104
|
[Gtk.ScrolledWindow, ScrolledWindowNode],
|
|
@@ -115,11 +111,9 @@ export const NODE_REGISTRY: NodeRegistryEntry[] = [
|
|
|
115
111
|
[Adw.ToggleGroup, ToggleGroupNode],
|
|
116
112
|
[Gtk.Notebook, NotebookNode],
|
|
117
113
|
[StackWidgets, StackNode],
|
|
118
|
-
[Gtk.ColumnView,
|
|
119
|
-
[Gtk.ListView, ListViewNode],
|
|
120
|
-
[Gtk.GridView, GridViewNode],
|
|
121
|
-
[DropDownWidgets, DropDownNode],
|
|
114
|
+
[[Gtk.ListView, Gtk.ColumnView, Gtk.GridView, Gtk.DropDown, Adw.ComboRow], ListNode],
|
|
122
115
|
[PopoverMenuWidgets, PopoverMenuNode],
|
|
123
116
|
[AdjustableWidgets, AdjustableNode],
|
|
117
|
+
[[Gtk.ListItem, Gtk.ListHeader], ListItemNode],
|
|
124
118
|
[Gtk.Widget, WidgetNode],
|
|
125
119
|
];
|
package/src/types.ts
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import type * as Gtk from "@gtkx/ffi/gtk";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
/** @internal */
|
|
4
|
+
export type Container = Gtk.Widget | Gtk.Application | Gtk.EventController | Gtk.ListItem | Gtk.ListHeader;
|
|
4
5
|
|
|
5
6
|
export type Props = Record<string, unknown>;
|
|
6
7
|
|
|
7
|
-
export type ContainerClass =
|
|
8
|
+
export type ContainerClass =
|
|
9
|
+
| typeof Gtk.Widget
|
|
10
|
+
| typeof Gtk.Application
|
|
11
|
+
| typeof Gtk.EventController
|
|
12
|
+
| typeof Gtk.ListItem
|
|
13
|
+
| typeof Gtk.ListHeader;
|