@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
@@ -1,39 +0,0 @@
1
- import * as Gtk from "@gtkx/ffi/gtk";
2
- import type { GtkListViewProps } from "../../jsx.js";
3
- import { ListStore } from "../internal/list-store.js";
4
- import type { SignalStore } from "../internal/signal-store.js";
5
- import { TreeStore } from "../internal/tree-store.js";
6
- import { ListItemNode } from "../list-item.js";
7
- import { ListSectionNode } from "../list-section.js";
8
- export type ListModelProps = Pick<GtkListViewProps, "autoexpand" | "selectionMode" | "selected" | "onSelectionChanged">;
9
- type ListModelConfig = {
10
- owner: object;
11
- signalStore: SignalStore;
12
- };
13
- export declare class ListModel {
14
- private config;
15
- private flatMode;
16
- private treeStore;
17
- private treeListModel;
18
- private flatStore;
19
- private selectionManager;
20
- private initialSelected;
21
- constructor(config: ListModelConfig, props?: ListModelProps, flat?: boolean);
22
- isFlatMode(): boolean;
23
- flushBatch(): void;
24
- private createChildModel;
25
- getStore(): TreeStore;
26
- getFlatStore(): ListStore;
27
- setOnItemUpdated(callback: (id: string) => void): void;
28
- getSelectionModel(): Gtk.NoSelection | Gtk.SingleSelection | Gtk.MultiSelection;
29
- appendChild(child: ListItemNode | ListSectionNode): void;
30
- private addItemWithChildren;
31
- insertBefore(child: ListItemNode | ListSectionNode, before: ListItemNode | ListSectionNode): void;
32
- removeChild(child: ListItemNode | ListSectionNode): void;
33
- updateProps(oldProps: ListModelProps | null, newProps: ListModelProps): void;
34
- private getNItems;
35
- private getSelection;
36
- private resolveSelectionIndices;
37
- }
38
- export {};
39
- //# sourceMappingURL=list.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/nodes/models/list.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,YAAY,GAAG,eAAe,GAAG,UAAU,GAAG,oBAAoB,CAAC,CAAC;AAExH,KAAK,eAAe,GAAG;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,WAAW,CAAC;CAC5B,CAAC;AAEF,qBAAa,SAAS;IAClB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,QAAQ,CAAU;IAE1B,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,aAAa,CAAkC;IAEvD,OAAO,CAAC,SAAS,CAA0B;IAE3C,OAAO,CAAC,gBAAgB,CAA2B;IACnD,OAAO,CAAC,eAAe,CAA8B;gBAEzC,MAAM,EAAE,eAAe,EAAE,KAAK,GAAE,cAAmB,EAAE,IAAI,UAAQ;IAkCtE,UAAU,IAAI,OAAO;IAIrB,UAAU,IAAI,IAAI;IAczB,OAAO,CAAC,gBAAgB;IAOjB,QAAQ,IAAI,SAAS;IAOrB,YAAY,IAAI,SAAS;IAOzB,gBAAgB,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAQtD,iBAAiB,IAAI,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,cAAc;IAI/E,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,eAAe,GAAG,IAAI;IAe/D,OAAO,CAAC,mBAAmB;IAWpB,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,eAAe,EAAE,MAAM,EAAE,YAAY,GAAG,eAAe,GAAG,IAAI;IAoBjG,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,eAAe,GAAG,IAAI;IAexD,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI;IAiBnF,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,uBAAuB;CAsBlC"}
@@ -1,207 +0,0 @@
1
- import * as Gtk from "@gtkx/ffi/gtk";
2
- import { ListStore } from "../internal/list-store.js";
3
- import { getSelectionFromStore, resolveSelectionIndices } from "../internal/selection-helpers.js";
4
- import { SelectionModelController } from "../internal/selection-model-controller.js";
5
- import { TreeStore } from "../internal/tree-store.js";
6
- import { ListItemNode } from "../list-item.js";
7
- import { ListSectionNode } from "../list-section.js";
8
- export class ListModel {
9
- config;
10
- flatMode;
11
- treeStore = null;
12
- treeListModel = null;
13
- flatStore = null;
14
- selectionManager;
15
- initialSelected;
16
- constructor(config, props = {}, flat = false) {
17
- this.config = config;
18
- this.flatMode = flat;
19
- this.initialSelected = props.selected;
20
- let model;
21
- if (flat) {
22
- const store = new ListStore();
23
- store.beginBatch();
24
- this.flatStore = store;
25
- model = store.getModel();
26
- }
27
- else {
28
- const store = new TreeStore();
29
- store.beginBatch();
30
- this.treeStore = store;
31
- this.treeListModel = new Gtk.TreeListModel(store.getRootModel(), false, props.autoexpand ?? false, (item) => this.createChildModel(item));
32
- model = this.treeListModel;
33
- }
34
- this.selectionManager = new SelectionModelController({ ...config, ...props }, model, () => this.getSelection(), (ids) => this.resolveSelectionIndices(ids), () => this.getNItems());
35
- }
36
- isFlatMode() {
37
- return this.flatMode;
38
- }
39
- flushBatch() {
40
- if (this.flatStore) {
41
- this.flatStore.flushBatch();
42
- const model = this.flatStore.getModel();
43
- if (this.selectionManager.getSelectionModel().getModel() !== model) {
44
- this.selectionManager.update(null, { ...this.config }, model);
45
- }
46
- }
47
- else if (this.treeStore) {
48
- this.treeStore.flushBatch();
49
- }
50
- this.selectionManager.reapplySelection(this.initialSelected);
51
- this.initialSelected = undefined;
52
- }
53
- createChildModel(item) {
54
- if (!this.treeStore)
55
- return null;
56
- if (!(item instanceof Gtk.StringObject))
57
- return null;
58
- const parentId = item.getString();
59
- return this.treeStore.getChildrenModel(parentId);
60
- }
61
- getStore() {
62
- if (!this.treeStore) {
63
- throw new Error("getStore() called in flat mode. Use getFlatStore() instead.");
64
- }
65
- return this.treeStore;
66
- }
67
- getFlatStore() {
68
- if (!this.flatStore) {
69
- throw new Error("getFlatStore() called in tree mode. Use getStore() instead.");
70
- }
71
- return this.flatStore;
72
- }
73
- setOnItemUpdated(callback) {
74
- if (this.flatStore) {
75
- this.flatStore.setOnItemUpdated(callback);
76
- }
77
- else if (this.treeStore) {
78
- this.treeStore.setOnItemUpdated(callback);
79
- }
80
- }
81
- getSelectionModel() {
82
- return this.selectionManager.getSelectionModel();
83
- }
84
- appendChild(child) {
85
- if (this.flatStore) {
86
- if (child instanceof ListSectionNode) {
87
- this.flatStore.addSection(child.props.id, child.props.value);
88
- child.setStore(this.flatStore);
89
- }
90
- else {
91
- child.setStore(this.flatStore);
92
- this.flatStore.addItem(child.props.id, child.props.value);
93
- }
94
- }
95
- else if (child instanceof ListItemNode && this.treeStore) {
96
- child.setStore(this.treeStore);
97
- this.addItemWithChildren(child);
98
- }
99
- }
100
- addItemWithChildren(node, parentId) {
101
- if (!this.treeStore)
102
- return;
103
- const id = node.props.id;
104
- for (const child of node.getChildNodes()) {
105
- this.addItemWithChildren(child, id);
106
- }
107
- this.treeStore.addItem(id, ListItemNode.createItemData(node.props), parentId);
108
- }
109
- insertBefore(child, before) {
110
- if (this.flatStore) {
111
- if (child instanceof ListSectionNode) {
112
- this.flatStore.addSection(child.props.id, child.props.value);
113
- child.setStore(this.flatStore);
114
- return;
115
- }
116
- if (before instanceof ListSectionNode) {
117
- child.setStore(this.flatStore);
118
- this.flatStore.addItem(child.props.id, child.props.value);
119
- return;
120
- }
121
- child.setStore(this.flatStore);
122
- this.flatStore.insertItemBefore(child.props.id, before.props.id, child.props.value);
123
- }
124
- else if (child instanceof ListItemNode && before instanceof ListItemNode && this.treeStore) {
125
- child.setStore(this.treeStore);
126
- this.treeStore.insertItemBefore(child.props.id, before.props.id, ListItemNode.createItemData(child.props));
127
- }
128
- }
129
- removeChild(child) {
130
- if (this.flatStore) {
131
- if (child instanceof ListSectionNode) {
132
- this.flatStore.removeSection(child.props.id);
133
- child.setStore(null);
134
- }
135
- else {
136
- this.flatStore.removeItem(child.props.id);
137
- child.setStore(null);
138
- }
139
- }
140
- else if (child instanceof ListItemNode && this.treeStore) {
141
- this.treeStore.removeItem(child.props.id);
142
- child.setStore(null);
143
- }
144
- }
145
- updateProps(oldProps, newProps) {
146
- if (this.treeListModel) {
147
- if (!oldProps || oldProps.autoexpand !== newProps.autoexpand) {
148
- this.treeListModel.setAutoexpand(newProps.autoexpand ?? false);
149
- }
150
- }
151
- const model = this.flatStore ? this.flatStore.getModel() : this.treeListModel;
152
- if (model) {
153
- this.selectionManager.update(oldProps ? { ...this.config, ...oldProps } : null, { ...this.config, ...newProps }, model);
154
- }
155
- }
156
- getNItems() {
157
- if (this.flatStore) {
158
- return this.flatStore.getNItems();
159
- }
160
- if (this.treeListModel) {
161
- return this.treeListModel.getNItems();
162
- }
163
- return 0;
164
- }
165
- getSelection() {
166
- const selection = this.selectionManager.getSelectionModel().getSelection();
167
- if (this.flatStore) {
168
- return getSelectionFromStore(selection, this.flatStore);
169
- }
170
- const size = selection.getSize();
171
- const ids = [];
172
- for (let i = 0; i < size; i++) {
173
- const index = selection.getNth(i);
174
- if (!this.treeListModel)
175
- continue;
176
- const row = this.treeListModel.getRow(index);
177
- if (!row)
178
- continue;
179
- const item = row.getItem();
180
- if (item instanceof Gtk.StringObject) {
181
- ids.push(item.getString());
182
- }
183
- }
184
- return ids;
185
- }
186
- resolveSelectionIndices(ids) {
187
- if (this.flatStore) {
188
- return resolveSelectionIndices(ids, this.flatStore);
189
- }
190
- const selected = new Gtk.Bitset();
191
- if (!this.treeListModel)
192
- return selected;
193
- const nItems = this.treeListModel.getNItems();
194
- const idSet = new Set(ids);
195
- for (let i = 0; i < nItems; i++) {
196
- const row = this.treeListModel.getRow(i);
197
- if (!row)
198
- continue;
199
- const item = row.getItem();
200
- if (item instanceof Gtk.StringObject && idSet.has(item.getString())) {
201
- selected.add(i);
202
- }
203
- }
204
- return selected;
205
- }
206
- }
207
- //# sourceMappingURL=list.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/nodes/models/list.ts"],"names":[],"mappings":"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"}
package/src/fiber-root.ts DELETED
@@ -1,20 +0,0 @@
1
- import type * as Gtk from "@gtkx/ffi/gtk";
2
- import type Reconciler from "react-reconciler";
3
- import { reconciler } from "./reconciler.js";
4
-
5
- export const createFiberRoot = (container: Gtk.Widget): Reconciler.FiberRoot => {
6
- const instance = reconciler.getInstance();
7
-
8
- return instance.createContainer(
9
- container,
10
- 1,
11
- null,
12
- false,
13
- null,
14
- "",
15
- (error: Error) => console.error("Fiber root render error:", error),
16
- () => {},
17
- () => {},
18
- () => {},
19
- );
20
- };
@@ -1,262 +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 type { HeaderItemRenderer } from "./internal/header-item-renderer.js";
9
- import { updateHeaderRenderer } from "./internal/header-renderer-manager.js";
10
- import { filterProps, hasChanged } from "./internal/props.js";
11
- import { ListItemNode } from "./list-item.js";
12
- import { ListSectionNode } from "./list-section.js";
13
- import { ListModel, type ListModelProps } from "./models/list.js";
14
- import { SlotNode } from "./slot.js";
15
- import { WidgetNode } from "./widget.js";
16
-
17
- const OWN_PROPS = ["sortColumn", "sortOrder", "onSortChanged", "estimatedRowHeight", "renderHeader"] as const;
18
-
19
- type ColumnViewProps = Pick<GtkColumnViewProps, (typeof OWN_PROPS)[number]> & ListModelProps;
20
- type ColumnViewChild =
21
- | ListItemNode
22
- | ListSectionNode
23
- | ColumnViewColumnNode
24
- | EventControllerNode
25
- | SlotNode
26
- | ContainerSlotNode;
27
-
28
- export class ColumnViewNode extends WidgetNode<Gtk.ColumnView, ColumnViewProps, ColumnViewChild> {
29
- private list: ListModel;
30
- private headerRenderer: HeaderItemRenderer | null = null;
31
-
32
- public override isValidChild(child: Node): boolean {
33
- return (
34
- child instanceof ListItemNode ||
35
- child instanceof ListSectionNode ||
36
- child instanceof ColumnViewColumnNode ||
37
- child instanceof EventControllerNode ||
38
- child instanceof SlotNode ||
39
- child instanceof ContainerSlotNode
40
- );
41
- }
42
- private columnNodes = new Set<ColumnViewColumnNode>();
43
- private estimatedRowHeight: number | null = null;
44
-
45
- constructor(typeName: string, props: ColumnViewProps, container: Gtk.ColumnView, rootContainer: Container) {
46
- super(typeName, props, container, rootContainer);
47
-
48
- const flat = props.renderHeader != null;
49
-
50
- this.list = new ListModel(
51
- { owner: this, signalStore: this.signalStore },
52
- {
53
- selectionMode: props.selectionMode,
54
- selected: props.selected,
55
- onSelectionChanged: props.onSelectionChanged,
56
- },
57
- flat,
58
- );
59
- this.list.setOnItemUpdated((id) => {
60
- for (const column of this.columnNodes) {
61
- column.rebindItem(id);
62
- }
63
- });
64
- }
65
-
66
- public override appendChild(child: ColumnViewChild): void {
67
- super.appendChild(child);
68
-
69
- if (child instanceof ListItemNode || child instanceof ListSectionNode) {
70
- this.list.appendChild(child);
71
- return;
72
- }
73
-
74
- if (!(child instanceof ColumnViewColumnNode)) return;
75
-
76
- const existingColumn = this.findColumnInView(child.getColumn());
77
-
78
- if (existingColumn) {
79
- this.container.removeColumn(existingColumn);
80
- }
81
-
82
- if (this.list.isFlatMode()) {
83
- child.setFlatStore(this.list.getFlatStore());
84
- } else {
85
- child.setStore(this.list.getStore());
86
- }
87
- child.setEstimatedRowHeight(this.estimatedRowHeight);
88
- this.container.appendColumn(child.getColumn());
89
- child.attachToColumnView(this.container);
90
- this.columnNodes.add(child);
91
- }
92
-
93
- public override insertBefore(child: ColumnViewChild, before: ColumnViewChild): void {
94
- super.insertBefore(child, before);
95
-
96
- if (child instanceof ListItemNode || child instanceof ListSectionNode) {
97
- if (before instanceof ListItemNode || before instanceof ListSectionNode) {
98
- this.list.insertBefore(child, before);
99
- }
100
- return;
101
- }
102
-
103
- if (!(child instanceof ColumnViewColumnNode)) return;
104
-
105
- const existingColumn = this.findColumnInView(child.getColumn());
106
-
107
- if (existingColumn) {
108
- this.container.removeColumn(existingColumn);
109
- }
110
-
111
- if (this.list.isFlatMode()) {
112
- child.setFlatStore(this.list.getFlatStore());
113
- } else {
114
- child.setStore(this.list.getStore());
115
- }
116
- child.setEstimatedRowHeight(this.estimatedRowHeight);
117
-
118
- if (before instanceof ColumnViewColumnNode) {
119
- const beforeIndex = this.getColumnIndex(before.getColumn());
120
- this.container.insertColumn(beforeIndex, child.getColumn());
121
- } else {
122
- this.container.appendColumn(child.getColumn());
123
- }
124
-
125
- child.attachToColumnView(this.container);
126
- this.columnNodes.add(child);
127
- }
128
-
129
- public override removeChild(child: ColumnViewChild): void {
130
- if (child instanceof ListItemNode || child instanceof ListSectionNode) {
131
- this.list.removeChild(child);
132
- super.removeChild(child);
133
- return;
134
- }
135
-
136
- if (child instanceof ColumnViewColumnNode) {
137
- child.detachFromColumnView();
138
-
139
- const existingColumn = this.findColumnInView(child.getColumn());
140
-
141
- if (existingColumn) {
142
- this.container.removeColumn(existingColumn);
143
- }
144
-
145
- child.setStore(null);
146
- this.columnNodes.delete(child);
147
- }
148
-
149
- super.removeChild(child);
150
- }
151
-
152
- public override finalizeInitialChildren(props: ColumnViewProps): boolean {
153
- super.finalizeInitialChildren(props);
154
- return true;
155
- }
156
-
157
- public override commitUpdate(oldProps: ColumnViewProps | null, newProps: ColumnViewProps): void {
158
- super.commitUpdate(oldProps ? filterProps(oldProps, OWN_PROPS) : null, filterProps(newProps, OWN_PROPS));
159
- this.applyOwnProps(oldProps, newProps);
160
-
161
- const previousModel = this.list.getSelectionModel();
162
- this.list.updateProps(oldProps ? filterProps(oldProps, OWN_PROPS) : null, filterProps(newProps, OWN_PROPS));
163
- const currentModel = this.list.getSelectionModel();
164
-
165
- if (previousModel !== currentModel) {
166
- this.container.setModel(currentModel);
167
- }
168
- }
169
-
170
- public override commitMount(): void {
171
- super.commitMount();
172
- this.list.flushBatch();
173
- this.container.setModel(this.list.getSelectionModel());
174
- }
175
-
176
- public override detachDeletedInstance(): void {
177
- this.columnNodes.clear();
178
- this.headerRenderer?.dispose();
179
- super.detachDeletedInstance();
180
- }
181
-
182
- private applyOwnProps(oldProps: ColumnViewProps | null, newProps: ColumnViewProps): void {
183
- if (hasChanged(oldProps, newProps, "onSortChanged")) {
184
- const sorter = this.container.getSorter();
185
- const onSortChanged = newProps.onSortChanged;
186
-
187
- if (sorter instanceof Gtk.ColumnViewSorter) {
188
- const handleSortChange = onSortChanged
189
- ? () => {
190
- onSortChanged(sorter.getPrimarySortColumn()?.getId() ?? null, sorter.getPrimarySortOrder());
191
- }
192
- : undefined;
193
-
194
- this.signalStore.set(this, sorter, "changed", handleSortChange);
195
- }
196
- }
197
-
198
- if (hasChanged(oldProps, newProps, "sortColumn") || hasChanged(oldProps, newProps, "sortOrder")) {
199
- const sortColumn = newProps.sortColumn;
200
- const sortOrder = newProps.sortOrder ?? Gtk.SortType.ASCENDING;
201
-
202
- if (!sortColumn) {
203
- this.container.sortByColumn(sortOrder, undefined);
204
- } else {
205
- this.container.sortByColumn(sortOrder, this.getColumn(sortColumn));
206
- }
207
- }
208
-
209
- if (hasChanged(oldProps, newProps, "estimatedRowHeight")) {
210
- this.estimatedRowHeight = newProps.estimatedRowHeight ?? null;
211
- for (const column of this.columnNodes) {
212
- column.setEstimatedRowHeight(this.estimatedRowHeight);
213
- }
214
- }
215
-
216
- if (hasChanged(oldProps, newProps, "renderHeader")) {
217
- this.headerRenderer = updateHeaderRenderer(
218
- this.headerRenderer,
219
- {
220
- signalStore: this.signalStore,
221
- isEnabled: () => this.list.isFlatMode(),
222
- resolveItem: (id) => this.list.getFlatStore().getHeaderValue(id),
223
- setFactory: (factory) => this.container.setHeaderFactory(factory),
224
- },
225
- newProps.renderHeader,
226
- );
227
- }
228
- }
229
-
230
- private findColumn<T>(predicate: (column: Gtk.ColumnViewColumn, index: number) => T | null): T | null {
231
- const columns = this.container.getColumns();
232
- for (let i = 0; i < columns.getNItems(); i++) {
233
- const column = columns.getObject(i);
234
- if (!(column instanceof Gtk.ColumnViewColumn)) continue;
235
- const result = predicate(column, i);
236
- if (result !== null) return result;
237
- }
238
- return null;
239
- }
240
-
241
- private getColumn(columnId: string): Gtk.ColumnViewColumn {
242
- const column = this.findColumn((col) => (col.getId() === columnId ? col : null));
243
- if (!column) {
244
- throw new Error(`Unable to find column '${columnId}' in ${this.typeName}`);
245
- }
246
- return column;
247
- }
248
-
249
- private getColumnIndex(column: Gtk.ColumnViewColumn): number {
250
- const targetId = column.getId();
251
- const index = this.findColumn((col, i) => (col.getId() === targetId ? i : null));
252
- if (index === null) {
253
- throw new Error(`Unable to find column '${targetId}' in ${this.typeName}`);
254
- }
255
- return index;
256
- }
257
-
258
- private findColumnInView(column: Gtk.ColumnViewColumn): Gtk.ColumnViewColumn | null {
259
- const targetId = column.getId();
260
- return this.findColumn((col) => (col.getId() === targetId ? col : null));
261
- }
262
- }