@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.
Files changed (289) hide show
  1. package/README.md +26 -62
  2. package/dist/components/compound.d.ts +40 -0
  3. package/dist/components/compound.d.ts.map +1 -0
  4. package/dist/components/compound.js +46 -0
  5. package/dist/components/compound.js.map +1 -0
  6. package/dist/components/list.d.ts +75 -0
  7. package/dist/components/list.d.ts.map +1 -0
  8. package/dist/components/list.js +81 -0
  9. package/dist/components/list.js.map +1 -0
  10. package/dist/components/slot-widget.d.ts +15 -0
  11. package/dist/components/slot-widget.d.ts.map +1 -0
  12. package/dist/components/slot-widget.js +37 -0
  13. package/dist/components/slot-widget.js.map +1 -0
  14. package/dist/errors.d.ts +6 -0
  15. package/dist/errors.d.ts.map +1 -1
  16. package/dist/errors.js +8 -6
  17. package/dist/errors.js.map +1 -1
  18. package/dist/generated/compounds.d.ts +2672 -0
  19. package/dist/generated/compounds.d.ts.map +1 -0
  20. package/dist/generated/compounds.js +2624 -0
  21. package/dist/generated/compounds.js.map +1 -0
  22. package/dist/generated/internal.d.ts +6 -7
  23. package/dist/generated/internal.d.ts.map +1 -1
  24. package/dist/generated/internal.js +3054 -1838
  25. package/dist/generated/internal.js.map +1 -1
  26. package/dist/generated/jsx.d.ts +2096 -4970
  27. package/dist/generated/jsx.d.ts.map +1 -1
  28. package/dist/generated/jsx.js +979 -3862
  29. package/dist/generated/jsx.js.map +1 -1
  30. package/dist/generated/registry.d.ts +1 -0
  31. package/dist/generated/registry.d.ts.map +1 -1
  32. package/dist/generated/registry.js +0 -1
  33. package/dist/generated/registry.js.map +1 -1
  34. package/dist/host-config.d.ts.map +1 -1
  35. package/dist/host-config.js +2 -0
  36. package/dist/host-config.js.map +1 -1
  37. package/dist/index.d.ts +2 -0
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +2 -0
  40. package/dist/index.js.map +1 -1
  41. package/dist/jsx.d.ts +157 -518
  42. package/dist/jsx.d.ts.map +1 -1
  43. package/dist/jsx.js +6 -393
  44. package/dist/jsx.js.map +1 -1
  45. package/dist/metadata.d.ts +1 -1
  46. package/dist/metadata.d.ts.map +1 -1
  47. package/dist/metadata.js +7 -3
  48. package/dist/metadata.js.map +1 -1
  49. package/dist/node.d.ts +0 -4
  50. package/dist/node.d.ts.map +1 -1
  51. package/dist/node.js +19 -41
  52. package/dist/node.js.map +1 -1
  53. package/dist/nodes/alert-dialog.d.ts +14 -0
  54. package/dist/nodes/alert-dialog.d.ts.map +1 -0
  55. package/dist/nodes/alert-dialog.js +41 -0
  56. package/dist/nodes/alert-dialog.js.map +1 -0
  57. package/dist/nodes/animation.d.ts +5 -4
  58. package/dist/nodes/animation.d.ts.map +1 -1
  59. package/dist/nodes/animation.js +65 -49
  60. package/dist/nodes/animation.js.map +1 -1
  61. package/dist/nodes/application.d.ts.map +1 -1
  62. package/dist/nodes/application.js +4 -0
  63. package/dist/nodes/application.js.map +1 -1
  64. package/dist/nodes/column-view-column.d.ts +19 -19
  65. package/dist/nodes/column-view-column.d.ts.map +1 -1
  66. package/dist/nodes/column-view-column.js +130 -119
  67. package/dist/nodes/column-view-column.js.map +1 -1
  68. package/dist/nodes/container-slot.d.ts +3 -1
  69. package/dist/nodes/container-slot.d.ts.map +1 -1
  70. package/dist/nodes/container-slot.js +28 -16
  71. package/dist/nodes/container-slot.js.map +1 -1
  72. package/dist/nodes/drawing-area.d.ts +3 -1
  73. package/dist/nodes/drawing-area.d.ts.map +1 -1
  74. package/dist/nodes/drawing-area.js +20 -22
  75. package/dist/nodes/drawing-area.js.map +1 -1
  76. package/dist/nodes/event-controller.d.ts.map +1 -1
  77. package/dist/nodes/event-controller.js +6 -16
  78. package/dist/nodes/event-controller.js.map +1 -1
  79. package/dist/nodes/fixed-child.d.ts +1 -0
  80. package/dist/nodes/fixed-child.d.ts.map +1 -1
  81. package/dist/nodes/fixed-child.js +13 -0
  82. package/dist/nodes/fixed-child.js.map +1 -1
  83. package/dist/nodes/grid-child.d.ts +1 -0
  84. package/dist/nodes/grid-child.d.ts.map +1 -1
  85. package/dist/nodes/grid-child.js +13 -0
  86. package/dist/nodes/grid-child.js.map +1 -1
  87. package/dist/nodes/internal/accessible.d.ts.map +1 -1
  88. package/dist/nodes/internal/accessible.js.map +1 -1
  89. package/dist/nodes/internal/bound-item.d.ts +4 -0
  90. package/dist/nodes/internal/bound-item.d.ts.map +1 -0
  91. package/dist/nodes/internal/bound-item.js +2 -0
  92. package/dist/nodes/internal/bound-item.js.map +1 -0
  93. package/dist/nodes/internal/construct.d.ts +1 -8
  94. package/dist/nodes/internal/construct.d.ts.map +1 -1
  95. package/dist/nodes/internal/construct.js +30 -54
  96. package/dist/nodes/internal/construct.js.map +1 -1
  97. package/dist/nodes/internal/widget.d.ts.map +1 -1
  98. package/dist/nodes/internal/widget.js +9 -10
  99. package/dist/nodes/internal/widget.js.map +1 -1
  100. package/dist/nodes/list-item-node.d.ts +12 -0
  101. package/dist/nodes/list-item-node.d.ts.map +1 -0
  102. package/dist/nodes/list-item-node.js +45 -0
  103. package/dist/nodes/list-item-node.js.map +1 -0
  104. package/dist/nodes/list.d.ts +100 -0
  105. package/dist/nodes/list.d.ts.map +1 -0
  106. package/dist/nodes/list.js +950 -0
  107. package/dist/nodes/list.js.map +1 -0
  108. package/dist/nodes/notebook-page.d.ts.map +1 -1
  109. package/dist/nodes/notebook-page.js +6 -2
  110. package/dist/nodes/notebook-page.js.map +1 -1
  111. package/dist/nodes/overlay-child.d.ts +2 -0
  112. package/dist/nodes/overlay-child.d.ts.map +1 -1
  113. package/dist/nodes/overlay-child.js +29 -8
  114. package/dist/nodes/overlay-child.js.map +1 -1
  115. package/dist/nodes/spin-row.d.ts +14 -0
  116. package/dist/nodes/spin-row.d.ts.map +1 -0
  117. package/dist/nodes/spin-row.js +46 -0
  118. package/dist/nodes/spin-row.js.map +1 -0
  119. package/dist/nodes/switch-row.d.ts +11 -0
  120. package/dist/nodes/switch-row.d.ts.map +1 -0
  121. package/dist/nodes/switch-row.js +15 -0
  122. package/dist/nodes/switch-row.js.map +1 -0
  123. package/dist/nodes/text-anchor.d.ts.map +1 -1
  124. package/dist/nodes/text-anchor.js +10 -0
  125. package/dist/nodes/text-anchor.js.map +1 -1
  126. package/dist/nodes/text-tag.d.ts.map +1 -1
  127. package/dist/nodes/text-tag.js +45 -39
  128. package/dist/nodes/text-tag.js.map +1 -1
  129. package/dist/nodes/toggle-group.d.ts +12 -6
  130. package/dist/nodes/toggle-group.d.ts.map +1 -1
  131. package/dist/nodes/toggle-group.js +53 -4
  132. package/dist/nodes/toggle-group.js.map +1 -1
  133. package/dist/nodes/widget.d.ts.map +1 -1
  134. package/dist/nodes/widget.js +16 -22
  135. package/dist/nodes/widget.js.map +1 -1
  136. package/dist/nodes/window.d.ts.map +1 -1
  137. package/dist/nodes/window.js +2 -2
  138. package/dist/nodes/window.js.map +1 -1
  139. package/dist/registry.d.ts +0 -2
  140. package/dist/registry.d.ts.map +1 -1
  141. package/dist/registry.js +11 -18
  142. package/dist/registry.js.map +1 -1
  143. package/dist/types.d.ts +3 -2
  144. package/dist/types.d.ts.map +1 -1
  145. package/dist/use-property.d.ts +29 -0
  146. package/dist/use-property.d.ts.map +1 -0
  147. package/dist/use-property.js +44 -0
  148. package/dist/use-property.js.map +1 -0
  149. package/dist/use-setting.d.ts +36 -0
  150. package/dist/use-setting.d.ts.map +1 -0
  151. package/dist/use-setting.js +68 -0
  152. package/dist/use-setting.js.map +1 -0
  153. package/package.json +5 -4
  154. package/src/components/compound.tsx +57 -0
  155. package/src/components/list.tsx +140 -0
  156. package/src/components/slot-widget.tsx +46 -0
  157. package/src/errors.ts +8 -7
  158. package/src/generated/compounds.ts +2741 -0
  159. package/src/generated/internal.ts +3059 -1840
  160. package/src/generated/jsx.ts +2509 -5350
  161. package/src/generated/registry.ts +2 -1
  162. package/src/host-config.ts +2 -0
  163. package/src/index.ts +2 -0
  164. package/src/jsx.ts +167 -581
  165. package/src/metadata.ts +7 -4
  166. package/src/node.ts +23 -39
  167. package/src/nodes/alert-dialog.ts +55 -0
  168. package/src/nodes/animation.ts +67 -60
  169. package/src/nodes/application.ts +5 -0
  170. package/src/nodes/column-view-column.ts +125 -128
  171. package/src/nodes/container-slot.ts +30 -17
  172. package/src/nodes/drawing-area.ts +23 -32
  173. package/src/nodes/event-controller.ts +6 -18
  174. package/src/nodes/fixed-child.ts +13 -0
  175. package/src/nodes/grid-child.ts +13 -0
  176. package/src/nodes/internal/accessible.ts +0 -1
  177. package/src/nodes/internal/bound-item.ts +4 -0
  178. package/src/nodes/internal/construct.ts +38 -68
  179. package/src/nodes/internal/widget.ts +9 -13
  180. package/src/nodes/list-item-node.ts +53 -0
  181. package/src/nodes/list.ts +1082 -0
  182. package/src/nodes/notebook-page.ts +6 -2
  183. package/src/nodes/overlay-child.ts +30 -9
  184. package/src/nodes/spin-row.ts +72 -0
  185. package/src/nodes/switch-row.ts +26 -0
  186. package/src/nodes/text-anchor.ts +9 -0
  187. package/src/nodes/text-tag.ts +45 -40
  188. package/src/nodes/toggle-group.ts +63 -9
  189. package/src/nodes/widget.ts +14 -26
  190. package/src/nodes/window.ts +2 -2
  191. package/src/registry.ts +18 -24
  192. package/src/types.ts +8 -2
  193. package/src/use-property.ts +58 -0
  194. package/src/use-setting.ts +96 -0
  195. package/dist/fiber-root.d.ts +0 -4
  196. package/dist/fiber-root.d.ts.map +0 -1
  197. package/dist/fiber-root.js +0 -6
  198. package/dist/fiber-root.js.map +0 -1
  199. package/dist/nodes/column-view.d.ts +0 -37
  200. package/dist/nodes/column-view.d.ts.map +0 -1
  201. package/dist/nodes/column-view.js +0 -205
  202. package/dist/nodes/column-view.js.map +0 -1
  203. package/dist/nodes/drop-down.d.ts +0 -37
  204. package/dist/nodes/drop-down.d.ts.map +0 -1
  205. package/dist/nodes/drop-down.js +0 -231
  206. package/dist/nodes/drop-down.js.map +0 -1
  207. package/dist/nodes/grid-view.d.ts +0 -30
  208. package/dist/nodes/grid-view.d.ts.map +0 -1
  209. package/dist/nodes/grid-view.js +0 -90
  210. package/dist/nodes/grid-view.js.map +0 -1
  211. package/dist/nodes/internal/base-item-renderer.d.ts +0 -28
  212. package/dist/nodes/internal/base-item-renderer.d.ts.map +0 -1
  213. package/dist/nodes/internal/base-item-renderer.js +0 -85
  214. package/dist/nodes/internal/base-item-renderer.js.map +0 -1
  215. package/dist/nodes/internal/grid-item-renderer.d.ts +0 -20
  216. package/dist/nodes/internal/grid-item-renderer.d.ts.map +0 -1
  217. package/dist/nodes/internal/grid-item-renderer.js +0 -66
  218. package/dist/nodes/internal/grid-item-renderer.js.map +0 -1
  219. package/dist/nodes/internal/header-item-renderer.d.ts +0 -23
  220. package/dist/nodes/internal/header-item-renderer.d.ts.map +0 -1
  221. package/dist/nodes/internal/header-item-renderer.js +0 -87
  222. package/dist/nodes/internal/header-item-renderer.js.map +0 -1
  223. package/dist/nodes/internal/header-renderer-manager.d.ts +0 -13
  224. package/dist/nodes/internal/header-renderer-manager.d.ts.map +0 -1
  225. package/dist/nodes/internal/header-renderer-manager.js +0 -20
  226. package/dist/nodes/internal/header-renderer-manager.js.map +0 -1
  227. package/dist/nodes/internal/list-item-renderer.d.ts +0 -27
  228. package/dist/nodes/internal/list-item-renderer.d.ts.map +0 -1
  229. package/dist/nodes/internal/list-item-renderer.js +0 -131
  230. package/dist/nodes/internal/list-item-renderer.js.map +0 -1
  231. package/dist/nodes/internal/list-store.d.ts +0 -21
  232. package/dist/nodes/internal/list-store.d.ts.map +0 -1
  233. package/dist/nodes/internal/list-store.js +0 -90
  234. package/dist/nodes/internal/list-store.js.map +0 -1
  235. package/dist/nodes/internal/sectioned-list-store.d.ts +0 -50
  236. package/dist/nodes/internal/sectioned-list-store.d.ts.map +0 -1
  237. package/dist/nodes/internal/sectioned-list-store.js +0 -250
  238. package/dist/nodes/internal/sectioned-list-store.js.map +0 -1
  239. package/dist/nodes/internal/selection-helpers.d.ts +0 -12
  240. package/dist/nodes/internal/selection-helpers.d.ts.map +0 -1
  241. package/dist/nodes/internal/selection-helpers.js +0 -25
  242. package/dist/nodes/internal/selection-helpers.js.map +0 -1
  243. package/dist/nodes/internal/selection-model-controller.d.ts +0 -26
  244. package/dist/nodes/internal/selection-model-controller.d.ts.map +0 -1
  245. package/dist/nodes/internal/selection-model-controller.js +0 -82
  246. package/dist/nodes/internal/selection-model-controller.js.map +0 -1
  247. package/dist/nodes/internal/simple-list-store.d.ts +0 -15
  248. package/dist/nodes/internal/simple-list-store.d.ts.map +0 -1
  249. package/dist/nodes/internal/simple-list-store.js +0 -110
  250. package/dist/nodes/internal/simple-list-store.js.map +0 -1
  251. package/dist/nodes/internal/tree-store.d.ts +0 -37
  252. package/dist/nodes/internal/tree-store.d.ts.map +0 -1
  253. package/dist/nodes/internal/tree-store.js +0 -253
  254. package/dist/nodes/internal/tree-store.js.map +0 -1
  255. package/dist/nodes/list-item.d.ts +0 -24
  256. package/dist/nodes/list-item.d.ts.map +0 -1
  257. package/dist/nodes/list-item.js +0 -83
  258. package/dist/nodes/list-item.js.map +0 -1
  259. package/dist/nodes/list-section.d.ts +0 -27
  260. package/dist/nodes/list-section.d.ts.map +0 -1
  261. package/dist/nodes/list-section.js +0 -43
  262. package/dist/nodes/list-section.js.map +0 -1
  263. package/dist/nodes/list-view.d.ts +0 -32
  264. package/dist/nodes/list-view.d.ts.map +0 -1
  265. package/dist/nodes/list-view.js +0 -123
  266. package/dist/nodes/list-view.js.map +0 -1
  267. package/dist/nodes/models/list.d.ts +0 -39
  268. package/dist/nodes/models/list.d.ts.map +0 -1
  269. package/dist/nodes/models/list.js +0 -207
  270. package/dist/nodes/models/list.js.map +0 -1
  271. package/src/fiber-root.ts +0 -20
  272. package/src/nodes/column-view.ts +0 -262
  273. package/src/nodes/drop-down.ts +0 -284
  274. package/src/nodes/grid-view.ts +0 -119
  275. package/src/nodes/internal/base-item-renderer.ts +0 -107
  276. package/src/nodes/internal/grid-item-renderer.ts +0 -78
  277. package/src/nodes/internal/header-item-renderer.ts +0 -105
  278. package/src/nodes/internal/header-renderer-manager.ts +0 -33
  279. package/src/nodes/internal/list-item-renderer.ts +0 -162
  280. package/src/nodes/internal/list-store.ts +0 -107
  281. package/src/nodes/internal/sectioned-list-store.ts +0 -287
  282. package/src/nodes/internal/selection-helpers.ts +0 -35
  283. package/src/nodes/internal/selection-model-controller.ts +0 -119
  284. package/src/nodes/internal/simple-list-store.ts +0 -116
  285. package/src/nodes/internal/tree-store.ts +0 -289
  286. package/src/nodes/list-item.ts +0 -107
  287. package/src/nodes/list-section.ts +0 -64
  288. package/src/nodes/list-view.ts +0 -164
  289. package/src/nodes/models/list.ts +0 -250
@@ -0,0 +1,58 @@
1
+ import * as GObject from "@gtkx/ffi/gobject";
2
+ import { useEffect, useState } from "react";
3
+
4
+ type ReadableKey<T> = {
5
+ [K in keyof T]: K extends string ? (T[K] extends (...args: unknown[]) => unknown ? never : K) : never;
6
+ }[keyof T];
7
+
8
+ const toKebabCase = (str: string): string =>
9
+ str.replace(/[A-Z]/g, (c, i: number) => (i === 0 ? c.toLowerCase() : `-${c.toLowerCase()}`));
10
+
11
+ /**
12
+ * Subscribes to a GObject property and returns its current value as React state.
13
+ *
14
+ * Connects to the `notify::property-name` signal on `obj` and re-renders
15
+ * whenever the property changes. The initial value is read synchronously
16
+ * at mount time. Disconnects automatically on unmount or when inputs change.
17
+ *
18
+ * When `obj` is `null` or `undefined`, the hook is inactive and returns
19
+ * `undefined`. This allows safe usage with nullable objects without
20
+ * violating React's rules of hooks.
21
+ *
22
+ * @param obj - The GObject instance to observe, or null/undefined to disable
23
+ * @param propertyName - The property name matching an ES6 accessor on the object
24
+ * @returns The current property value, or undefined when obj is null/undefined
25
+ *
26
+ * @example
27
+ * ```tsx
28
+ * const app = useApplication();
29
+ * const activeWindow = useProperty(app, "activeWindow");
30
+ * const title = useProperty(activeWindow, "title");
31
+ * ```
32
+ */
33
+ export function useProperty<T extends GObject.Object, K extends ReadableKey<T>>(
34
+ obj: T | null | undefined,
35
+ propertyName: K,
36
+ ): T[K] | undefined {
37
+ const [value, setValue] = useState<T[K] | undefined>(() => (obj ? (obj[propertyName] as T[K]) : undefined));
38
+
39
+ useEffect(() => {
40
+ if (!obj) {
41
+ setValue(undefined);
42
+ return;
43
+ }
44
+
45
+ setValue(obj[propertyName] as T[K]);
46
+
47
+ const signal = `notify::${toKebabCase(propertyName as string)}`;
48
+ const handlerId = obj.connect(signal, () => {
49
+ setValue(obj[propertyName] as T[K]);
50
+ });
51
+
52
+ return () => {
53
+ GObject.signalHandlerDisconnect(obj, handlerId);
54
+ };
55
+ }, [obj, propertyName]);
56
+
57
+ return value;
58
+ }
@@ -0,0 +1,96 @@
1
+ import * as Gio from "@gtkx/ffi/gio";
2
+ import * as GObject from "@gtkx/ffi/gobject";
3
+ import { useCallback, useEffect, useMemo, useState } from "react";
4
+
5
+ interface SettingTypeMap {
6
+ boolean: boolean;
7
+ int: number;
8
+ double: number;
9
+ string: string;
10
+ strv: string[];
11
+ }
12
+
13
+ type SettingType = keyof SettingTypeMap;
14
+
15
+ const GETTERS: Record<SettingType, string> = {
16
+ boolean: "getBoolean",
17
+ int: "getInt",
18
+ double: "getDouble",
19
+ string: "getString",
20
+ strv: "getStrv",
21
+ };
22
+
23
+ const SETTERS: Record<SettingType, string> = {
24
+ boolean: "setBoolean",
25
+ int: "setInt",
26
+ double: "setDouble",
27
+ string: "setString",
28
+ strv: "setStrv",
29
+ };
30
+
31
+ type SettingAccessor = (key: string, value?: unknown) => unknown;
32
+
33
+ function readSetting(settings: Gio.Settings, key: string, type: SettingType): unknown {
34
+ const getter = (settings as unknown as Record<string, SettingAccessor>)[GETTERS[type]] as SettingAccessor;
35
+ return getter.call(settings, key);
36
+ }
37
+
38
+ function writeSetting(settings: Gio.Settings, key: string, type: SettingType, value: unknown): void {
39
+ const setter = (settings as unknown as Record<string, SettingAccessor>)[SETTERS[type]] as SettingAccessor;
40
+ setter.call(settings, key, value);
41
+ }
42
+
43
+ /**
44
+ * Subscribes to a GSettings key and returns its current value alongside a
45
+ * setter, similar to `useState`.
46
+ *
47
+ * Creates a `Gio.Settings` instance for the given schema (stable across
48
+ * re-renders), connects to `changed::key`, and re-renders whenever the
49
+ * setting changes. The initial value is read synchronously at mount time.
50
+ * Calling the returned setter writes the new value to GSettings, which in
51
+ * turn triggers a re-render through the `changed` signal.
52
+ *
53
+ * @param schemaId - The GSettings schema ID (e.g. `"org.gnome.desktop.interface"`)
54
+ * @param key - The settings key in kebab-case (e.g. `"color-scheme"`)
55
+ * @param type - The value type, used to select the appropriate GSettings getter/setter
56
+ * @returns A `[value, setValue]` tuple kept in sync with the GSettings backend
57
+ *
58
+ * @example
59
+ * ```tsx
60
+ * const [colorScheme, setColorScheme] = useSetting("org.gnome.desktop.interface", "color-scheme", "string");
61
+ * ```
62
+ *
63
+ * @example
64
+ * ```tsx
65
+ * const [fontSize, setFontSize] = useSetting("com.example.myapp", "font-size", "int");
66
+ * ```
67
+ */
68
+ export function useSetting<T extends SettingType>(
69
+ schemaId: string,
70
+ key: string,
71
+ type: T,
72
+ ): [SettingTypeMap[T], (value: SettingTypeMap[T]) => void] {
73
+ const settings = useMemo(() => new Gio.Settings(schemaId), [schemaId]);
74
+ const [value, setValue] = useState<SettingTypeMap[T]>(() => readSetting(settings, key, type) as SettingTypeMap[T]);
75
+
76
+ useEffect(() => {
77
+ setValue(readSetting(settings, key, type) as SettingTypeMap[T]);
78
+
79
+ const handlerId = settings.connect(`changed::${key}`, () => {
80
+ setValue(readSetting(settings, key, type) as SettingTypeMap[T]);
81
+ });
82
+
83
+ return () => {
84
+ GObject.signalHandlerDisconnect(settings, handlerId);
85
+ };
86
+ }, [settings, key, type]);
87
+
88
+ const set = useCallback(
89
+ (newValue: SettingTypeMap[T]) => {
90
+ writeSetting(settings, key, type, newValue);
91
+ },
92
+ [settings, key, type],
93
+ );
94
+
95
+ return [value, set];
96
+ }
@@ -1,4 +0,0 @@
1
- import type * as Gtk from "@gtkx/ffi/gtk";
2
- import type Reconciler from "react-reconciler";
3
- export declare const createFiberRoot: (container: Gtk.Widget) => Reconciler.FiberRoot;
4
- //# sourceMappingURL=fiber-root.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fiber-root.d.ts","sourceRoot":"","sources":["../src/fiber-root.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAG/C,eAAO,MAAM,eAAe,GAAI,WAAW,GAAG,CAAC,MAAM,KAAG,UAAU,CAAC,SAelE,CAAC"}
@@ -1,6 +0,0 @@
1
- import { reconciler } from "./reconciler.js";
2
- export const createFiberRoot = (container) => {
3
- const instance = reconciler.getInstance();
4
- return instance.createContainer(container, 1, null, false, null, "", (error) => console.error("Fiber root render error:", error), () => { }, () => { }, () => { });
5
- };
6
- //# sourceMappingURL=fiber-root.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fiber-root.js","sourceRoot":"","sources":["../src/fiber-root.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAAqB,EAAwB,EAAE;IAC3E,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAE1C,OAAO,QAAQ,CAAC,eAAe,CAC3B,SAAS,EACT,CAAC,EACD,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,EAAE,EACF,CAAC,KAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,EAClE,GAAG,EAAE,GAAE,CAAC,EACR,GAAG,EAAE,GAAE,CAAC,EACR,GAAG,EAAE,GAAE,CAAC,CACX,CAAC;AACN,CAAC,CAAC"}
@@ -1,37 +0,0 @@
1
- import * as Gtk from "@gtkx/ffi/gtk";
2
- import type { GtkColumnViewProps } from "../jsx.js";
3
- import type { Node } from "../node.js";
4
- import type { Container } from "../types.js";
5
- import { ColumnViewColumnNode } from "./column-view-column.js";
6
- import { ContainerSlotNode } from "./container-slot.js";
7
- import { EventControllerNode } from "./event-controller.js";
8
- import { ListItemNode } from "./list-item.js";
9
- import { ListSectionNode } from "./list-section.js";
10
- import { type ListModelProps } from "./models/list.js";
11
- import { SlotNode } from "./slot.js";
12
- import { WidgetNode } from "./widget.js";
13
- declare const OWN_PROPS: readonly ["sortColumn", "sortOrder", "onSortChanged", "estimatedRowHeight", "renderHeader"];
14
- type ColumnViewProps = Pick<GtkColumnViewProps, (typeof OWN_PROPS)[number]> & ListModelProps;
15
- type ColumnViewChild = ListItemNode | ListSectionNode | ColumnViewColumnNode | EventControllerNode | SlotNode | ContainerSlotNode;
16
- export declare class ColumnViewNode extends WidgetNode<Gtk.ColumnView, ColumnViewProps, ColumnViewChild> {
17
- private list;
18
- private headerRenderer;
19
- isValidChild(child: Node): boolean;
20
- private columnNodes;
21
- private estimatedRowHeight;
22
- constructor(typeName: string, props: ColumnViewProps, container: Gtk.ColumnView, rootContainer: Container);
23
- appendChild(child: ColumnViewChild): void;
24
- insertBefore(child: ColumnViewChild, before: ColumnViewChild): void;
25
- removeChild(child: ColumnViewChild): void;
26
- finalizeInitialChildren(props: ColumnViewProps): boolean;
27
- commitUpdate(oldProps: ColumnViewProps | null, newProps: ColumnViewProps): void;
28
- commitMount(): void;
29
- detachDeletedInstance(): void;
30
- private applyOwnProps;
31
- private findColumn;
32
- private getColumn;
33
- private getColumnIndex;
34
- private findColumnInView;
35
- }
36
- export {};
37
- //# sourceMappingURL=column-view.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"column-view.d.ts","sourceRoot":"","sources":["../../src/nodes/column-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,QAAA,MAAM,SAAS,6FAA8F,CAAC;AAE9G,KAAK,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,cAAc,CAAC;AAC7F,KAAK,eAAe,GACd,YAAY,GACZ,eAAe,GACf,oBAAoB,GACpB,mBAAmB,GACnB,QAAQ,GACR,iBAAiB,CAAC;AAExB,qBAAa,cAAe,SAAQ,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,eAAe,CAAC;IAC5F,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,cAAc,CAAmC;IAEzC,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAUlD,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,kBAAkB,CAAuB;gBAErC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,SAAS;IAqBzF,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IA2BzC,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI;IAoCnE,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAuBzC,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO;IAKxD,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI;IAa/E,WAAW,IAAI,IAAI;IAMnB,qBAAqB,IAAI,IAAI;IAM7C,OAAO,CAAC,aAAa;IAgDrB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,gBAAgB;CAI3B"}
@@ -1,205 +0,0 @@
1
- import * as Gtk from "@gtkx/ffi/gtk";
2
- import { ColumnViewColumnNode } from "./column-view-column.js";
3
- import { ContainerSlotNode } from "./container-slot.js";
4
- import { EventControllerNode } from "./event-controller.js";
5
- import { updateHeaderRenderer } from "./internal/header-renderer-manager.js";
6
- import { filterProps, hasChanged } from "./internal/props.js";
7
- import { ListItemNode } from "./list-item.js";
8
- import { ListSectionNode } from "./list-section.js";
9
- import { ListModel } from "./models/list.js";
10
- import { SlotNode } from "./slot.js";
11
- import { WidgetNode } from "./widget.js";
12
- const OWN_PROPS = ["sortColumn", "sortOrder", "onSortChanged", "estimatedRowHeight", "renderHeader"];
13
- export class ColumnViewNode extends WidgetNode {
14
- list;
15
- headerRenderer = null;
16
- isValidChild(child) {
17
- return (child instanceof ListItemNode ||
18
- child instanceof ListSectionNode ||
19
- child instanceof ColumnViewColumnNode ||
20
- child instanceof EventControllerNode ||
21
- child instanceof SlotNode ||
22
- child instanceof ContainerSlotNode);
23
- }
24
- columnNodes = new Set();
25
- estimatedRowHeight = null;
26
- constructor(typeName, props, container, rootContainer) {
27
- super(typeName, props, container, rootContainer);
28
- const flat = props.renderHeader != null;
29
- this.list = new ListModel({ owner: this, signalStore: this.signalStore }, {
30
- selectionMode: props.selectionMode,
31
- selected: props.selected,
32
- onSelectionChanged: props.onSelectionChanged,
33
- }, flat);
34
- this.list.setOnItemUpdated((id) => {
35
- for (const column of this.columnNodes) {
36
- column.rebindItem(id);
37
- }
38
- });
39
- }
40
- appendChild(child) {
41
- super.appendChild(child);
42
- if (child instanceof ListItemNode || child instanceof ListSectionNode) {
43
- this.list.appendChild(child);
44
- return;
45
- }
46
- if (!(child instanceof ColumnViewColumnNode))
47
- return;
48
- const existingColumn = this.findColumnInView(child.getColumn());
49
- if (existingColumn) {
50
- this.container.removeColumn(existingColumn);
51
- }
52
- if (this.list.isFlatMode()) {
53
- child.setFlatStore(this.list.getFlatStore());
54
- }
55
- else {
56
- child.setStore(this.list.getStore());
57
- }
58
- child.setEstimatedRowHeight(this.estimatedRowHeight);
59
- this.container.appendColumn(child.getColumn());
60
- child.attachToColumnView(this.container);
61
- this.columnNodes.add(child);
62
- }
63
- insertBefore(child, before) {
64
- super.insertBefore(child, before);
65
- if (child instanceof ListItemNode || child instanceof ListSectionNode) {
66
- if (before instanceof ListItemNode || before instanceof ListSectionNode) {
67
- this.list.insertBefore(child, before);
68
- }
69
- return;
70
- }
71
- if (!(child instanceof ColumnViewColumnNode))
72
- return;
73
- const existingColumn = this.findColumnInView(child.getColumn());
74
- if (existingColumn) {
75
- this.container.removeColumn(existingColumn);
76
- }
77
- if (this.list.isFlatMode()) {
78
- child.setFlatStore(this.list.getFlatStore());
79
- }
80
- else {
81
- child.setStore(this.list.getStore());
82
- }
83
- child.setEstimatedRowHeight(this.estimatedRowHeight);
84
- if (before instanceof ColumnViewColumnNode) {
85
- const beforeIndex = this.getColumnIndex(before.getColumn());
86
- this.container.insertColumn(beforeIndex, child.getColumn());
87
- }
88
- else {
89
- this.container.appendColumn(child.getColumn());
90
- }
91
- child.attachToColumnView(this.container);
92
- this.columnNodes.add(child);
93
- }
94
- removeChild(child) {
95
- if (child instanceof ListItemNode || child instanceof ListSectionNode) {
96
- this.list.removeChild(child);
97
- super.removeChild(child);
98
- return;
99
- }
100
- if (child instanceof ColumnViewColumnNode) {
101
- child.detachFromColumnView();
102
- const existingColumn = this.findColumnInView(child.getColumn());
103
- if (existingColumn) {
104
- this.container.removeColumn(existingColumn);
105
- }
106
- child.setStore(null);
107
- this.columnNodes.delete(child);
108
- }
109
- super.removeChild(child);
110
- }
111
- finalizeInitialChildren(props) {
112
- super.finalizeInitialChildren(props);
113
- return true;
114
- }
115
- commitUpdate(oldProps, newProps) {
116
- super.commitUpdate(oldProps ? filterProps(oldProps, OWN_PROPS) : null, filterProps(newProps, OWN_PROPS));
117
- this.applyOwnProps(oldProps, newProps);
118
- const previousModel = this.list.getSelectionModel();
119
- this.list.updateProps(oldProps ? filterProps(oldProps, OWN_PROPS) : null, filterProps(newProps, OWN_PROPS));
120
- const currentModel = this.list.getSelectionModel();
121
- if (previousModel !== currentModel) {
122
- this.container.setModel(currentModel);
123
- }
124
- }
125
- commitMount() {
126
- super.commitMount();
127
- this.list.flushBatch();
128
- this.container.setModel(this.list.getSelectionModel());
129
- }
130
- detachDeletedInstance() {
131
- this.columnNodes.clear();
132
- this.headerRenderer?.dispose();
133
- super.detachDeletedInstance();
134
- }
135
- applyOwnProps(oldProps, newProps) {
136
- if (hasChanged(oldProps, newProps, "onSortChanged")) {
137
- const sorter = this.container.getSorter();
138
- const onSortChanged = newProps.onSortChanged;
139
- if (sorter instanceof Gtk.ColumnViewSorter) {
140
- const handleSortChange = onSortChanged
141
- ? () => {
142
- onSortChanged(sorter.getPrimarySortColumn()?.getId() ?? null, sorter.getPrimarySortOrder());
143
- }
144
- : undefined;
145
- this.signalStore.set(this, sorter, "changed", handleSortChange);
146
- }
147
- }
148
- if (hasChanged(oldProps, newProps, "sortColumn") || hasChanged(oldProps, newProps, "sortOrder")) {
149
- const sortColumn = newProps.sortColumn;
150
- const sortOrder = newProps.sortOrder ?? Gtk.SortType.ASCENDING;
151
- if (!sortColumn) {
152
- this.container.sortByColumn(sortOrder, undefined);
153
- }
154
- else {
155
- this.container.sortByColumn(sortOrder, this.getColumn(sortColumn));
156
- }
157
- }
158
- if (hasChanged(oldProps, newProps, "estimatedRowHeight")) {
159
- this.estimatedRowHeight = newProps.estimatedRowHeight ?? null;
160
- for (const column of this.columnNodes) {
161
- column.setEstimatedRowHeight(this.estimatedRowHeight);
162
- }
163
- }
164
- if (hasChanged(oldProps, newProps, "renderHeader")) {
165
- this.headerRenderer = updateHeaderRenderer(this.headerRenderer, {
166
- signalStore: this.signalStore,
167
- isEnabled: () => this.list.isFlatMode(),
168
- resolveItem: (id) => this.list.getFlatStore().getHeaderValue(id),
169
- setFactory: (factory) => this.container.setHeaderFactory(factory),
170
- }, newProps.renderHeader);
171
- }
172
- }
173
- findColumn(predicate) {
174
- const columns = this.container.getColumns();
175
- for (let i = 0; i < columns.getNItems(); i++) {
176
- const column = columns.getObject(i);
177
- if (!(column instanceof Gtk.ColumnViewColumn))
178
- continue;
179
- const result = predicate(column, i);
180
- if (result !== null)
181
- return result;
182
- }
183
- return null;
184
- }
185
- getColumn(columnId) {
186
- const column = this.findColumn((col) => (col.getId() === columnId ? col : null));
187
- if (!column) {
188
- throw new Error(`Unable to find column '${columnId}' in ${this.typeName}`);
189
- }
190
- return column;
191
- }
192
- getColumnIndex(column) {
193
- const targetId = column.getId();
194
- const index = this.findColumn((col, i) => (col.getId() === targetId ? i : null));
195
- if (index === null) {
196
- throw new Error(`Unable to find column '${targetId}' in ${this.typeName}`);
197
- }
198
- return index;
199
- }
200
- findColumnInView(column) {
201
- const targetId = column.getId();
202
- return this.findColumn((col) => (col.getId() === targetId ? col : null));
203
- }
204
- }
205
- //# sourceMappingURL=column-view.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"column-view.js","sourceRoot":"","sources":["../../src/nodes/column-view.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- import type { AdwComboRowProps, GtkDropDownProps } from "../jsx.js";
2
- import type { Node } from "../node.js";
3
- import type { DropDownWidget } from "../registry.js";
4
- import type { Container } from "../types.js";
5
- import { ContainerSlotNode } from "./container-slot.js";
6
- import { EventControllerNode } from "./event-controller.js";
7
- import { ListItemNode } from "./list-item.js";
8
- import { ListSectionNode } from "./list-section.js";
9
- import { SlotNode } from "./slot.js";
10
- import { WidgetNode } from "./widget.js";
11
- declare const OWN_PROPS: readonly ["selectedId", "onSelectionChanged", "renderItem", "renderListItem", "renderHeader"];
12
- type DropDownProps = Pick<GtkDropDownProps | AdwComboRowProps, (typeof OWN_PROPS)[number]>;
13
- type DropDownChild = ListItemNode | ListSectionNode | EventControllerNode | SlotNode | ContainerSlotNode;
14
- export declare class DropDownNode extends WidgetNode<DropDownWidget, DropDownProps, DropDownChild> {
15
- private store;
16
- private initialSelectedId;
17
- private itemState;
18
- private renderItemFn;
19
- private listItemState;
20
- private renderListItemFn;
21
- private headerRenderer;
22
- isValidChild(child: Node): boolean;
23
- constructor(typeName: string, props: DropDownProps, container: DropDownWidget, rootContainer: Container);
24
- finalizeInitialChildren(props: DropDownProps): boolean;
25
- private reapplyInitialSelectedId;
26
- appendChild(child: DropDownChild): void;
27
- insertBefore(child: DropDownChild, before: DropDownChild): void;
28
- removeChild(child: DropDownChild): void;
29
- commitUpdate(oldProps: DropDownProps | null, newProps: DropDownProps): void;
30
- detachDeletedInstance(): void;
31
- private applyOwnProps;
32
- private createFactory;
33
- private rebindAll;
34
- private disposeFactory;
35
- }
36
- export {};
37
- //# sourceMappingURL=drop-down.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drop-down.d.ts","sourceRoot":"","sources":["../../src/nodes/drop-down.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAK5D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,QAAA,MAAM,SAAS,+FAAgG,CAAC;AAEhH,KAAK,aAAa,GAAG,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,EAAE,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE3F,KAAK,aAAa,GAAG,YAAY,GAAG,eAAe,GAAG,mBAAmB,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAWzG,qBAAa,YAAa,SAAQ,UAAU,CAAC,cAAc,EAAE,aAAa,EAAE,aAAa,CAAC;IACtF,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,iBAAiB,CAA4B;IAErD,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,YAAY,CAA6B;IAEjD,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,gBAAgB,CAA6B;IAErD,OAAO,CAAC,cAAc,CAAmC;IAEzC,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;gBAUtC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS;IAMvF,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO;IAQtE,OAAO,CAAC,wBAAwB;IAShB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAWvC,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAc/D,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAWvC,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAK3E,qBAAqB,IAAI,IAAI;IAS7C,OAAO,CAAC,aAAa;IA2ErB,OAAO,CAAC,aAAa;IAsDrB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,cAAc;CAezB"}