@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,156 +1,167 @@
1
+ import { getNativeId } from "@gtkx/ffi";
1
2
  import * as Gio from "@gtkx/ffi/gio";
2
3
  import * as Gtk from "@gtkx/ffi/gtk";
3
- import { GridItemRenderer } from "./internal/grid-item-renderer.js";
4
- import { ListItemRenderer } from "./internal/list-item-renderer.js";
5
4
  import { hasChanged } from "./internal/props.js";
6
5
  import { MenuNode } from "./menu.js";
7
6
  import { MenuModel } from "./models/menu.js";
8
7
  import { VirtualNode } from "./virtual.js";
9
8
  import { WidgetNode } from "./widget.js";
9
+ const UNBOUND_POSITION = -1;
10
10
  export class ColumnViewColumnNode extends VirtualNode {
11
+ column = null;
12
+ columnFactory = null;
13
+ containers = new Map();
14
+ containerKeys = new Map();
15
+ menu;
16
+ actionGroup;
17
+ constructor(typeName, props, container, rootContainer) {
18
+ super(typeName, props, container, rootContainer);
19
+ this.actionGroup = new Gio.SimpleActionGroup();
20
+ this.menu = new MenuModel("root", {}, rootContainer, this.actionGroup);
21
+ this.menu.setActionMap(this.actionGroup, props.id);
22
+ }
11
23
  isValidChild(child) {
12
24
  return child instanceof MenuNode;
13
25
  }
14
26
  isValidParent(parent) {
15
27
  return parent instanceof WidgetNode && parent.container instanceof Gtk.ColumnView;
16
28
  }
17
- column;
18
- treeRenderer;
19
- flatRenderer = null;
20
- menu = null;
21
- actionGroup = null;
22
- columnView = null;
23
- constructor(typeName, props, container, rootContainer) {
24
- super(typeName, props, container, rootContainer);
25
- this.treeRenderer = new ListItemRenderer(this.signalStore);
26
- this.column = new Gtk.ColumnViewColumn();
27
- this.column.setFactory(this.treeRenderer.getFactory());
29
+ finalizeInitialChildren(props) {
30
+ this.setupFactory();
31
+ this.setupColumn(props);
32
+ this.updateHeaderMenu();
33
+ return false;
34
+ }
35
+ commitUpdate(oldProps, newProps) {
36
+ super.commitUpdate(oldProps, newProps);
37
+ if (oldProps === null)
38
+ return;
39
+ this.applyColumnProps(oldProps, newProps);
28
40
  }
29
41
  appendChild(child) {
30
- this.initMenu();
31
- this.menu?.appendChild(child);
42
+ this.menu.appendChild(child);
43
+ this.updateHeaderMenu();
32
44
  }
33
45
  insertBefore(child, before) {
34
- this.initMenu();
35
- if (before instanceof MenuNode) {
36
- this.menu?.insertBefore(child, before);
37
- }
38
- else {
39
- this.menu?.appendChild(child);
40
- }
46
+ this.menu.insertBefore(child, before);
47
+ this.updateHeaderMenu();
41
48
  }
42
49
  removeChild(child) {
43
- this.menu?.removeChild(child);
44
- if (this.menu && this.menu.getMenu().getNItems() === 0) {
45
- this.cleanupMenu();
46
- }
47
- }
48
- commitUpdate(oldProps, newProps) {
49
- super.commitUpdate(oldProps, newProps);
50
- this.applyOwnProps(oldProps, newProps);
50
+ this.menu.removeChild(child);
51
+ this.updateHeaderMenu();
51
52
  }
52
53
  detachDeletedInstance() {
53
- this.cleanupMenu();
54
- this.treeRenderer?.dispose();
55
- this.flatRenderer?.dispose();
56
54
  super.detachDeletedInstance();
57
55
  }
58
56
  getColumn() {
57
+ if (!this.column)
58
+ throw new Error("ColumnViewColumn not initialized");
59
59
  return this.column;
60
60
  }
61
- rebindItem(id) {
62
- this.treeRenderer?.rebindItem(id);
63
- this.flatRenderer?.rebindItem(id);
64
- }
65
- setStore(model) {
66
- this.treeRenderer?.setStore(model);
67
- }
68
- setFlatStore(store) {
69
- if (this.treeRenderer) {
70
- this.treeRenderer.dispose();
71
- this.treeRenderer = null;
72
- }
73
- if (!this.flatRenderer) {
74
- this.flatRenderer = new GridItemRenderer(this.signalStore);
75
- this.flatRenderer.setRenderFn(this.props.renderCell);
76
- this.column.setFactory(this.flatRenderer.getFactory());
77
- }
78
- this.flatRenderer.setStore(store);
79
- }
80
- setEstimatedRowHeight(height) {
81
- this.treeRenderer?.setEstimatedItemHeight(height);
82
- this.flatRenderer?.setEstimatedItemHeight(height);
83
- }
84
- attachToColumnView(columnView) {
85
- this.columnView = columnView;
86
- if (this.actionGroup) {
87
- this.columnView.insertActionGroup(this.props.id, this.actionGroup);
88
- }
89
- }
90
- detachFromColumnView() {
91
- if (this.columnView && this.actionGroup) {
92
- this.columnView.insertActionGroup(this.props.id, null);
93
- }
94
- this.columnView = null;
95
- }
96
- initMenu() {
97
- if (this.menu)
61
+ collectBoundItems(flatItems) {
62
+ const { renderCell } = this.props;
63
+ if (!renderCell)
64
+ return [];
65
+ const items = [];
66
+ for (const [container, position] of this.containers) {
67
+ if (position === UNBOUND_POSITION)
68
+ continue;
69
+ const key = this.containerKeys.get(container);
70
+ if (!key)
71
+ continue;
72
+ const item = flatItems[position];
73
+ if (!item)
74
+ continue;
75
+ const content = renderCell(item.value);
76
+ items.push([content, container, key]);
77
+ }
78
+ return items;
79
+ }
80
+ installActionGroup(widget) {
81
+ widget.insertActionGroup(this.props.id, this.actionGroup);
82
+ }
83
+ uninstallActionGroup(widget) {
84
+ widget.insertActionGroup(this.props.id, null);
85
+ }
86
+ setupFactory() {
87
+ this.columnFactory = new Gtk.SignalListItemFactory();
88
+ this.columnFactory.connect("setup", (_self, obj) => {
89
+ const listItem = obj;
90
+ const key = String(getNativeId(listItem.handle));
91
+ const placeholder = new Gtk.Box();
92
+ const { width, height } = this.getParentEstimatedItemSize();
93
+ placeholder.setSizeRequest(width, height);
94
+ listItem.setChild(placeholder);
95
+ this.containers.set(listItem, UNBOUND_POSITION);
96
+ this.containerKeys.set(listItem, key);
97
+ });
98
+ this.columnFactory.connect("bind", (_self, obj) => {
99
+ const listItem = obj;
100
+ this.containers.set(listItem, listItem.getPosition());
101
+ this.scheduleParentUpdate();
102
+ });
103
+ this.columnFactory.connect("unbind", (_self, obj) => {
104
+ const listItem = obj;
105
+ this.containers.set(listItem, UNBOUND_POSITION);
106
+ this.scheduleParentUpdate();
107
+ });
108
+ this.columnFactory.connect("teardown", (_self, obj) => {
109
+ const listItem = obj;
110
+ this.containers.delete(listItem);
111
+ this.containerKeys.delete(listItem);
112
+ listItem.setChild(null);
113
+ });
114
+ }
115
+ setupColumn(props) {
116
+ this.column = new Gtk.ColumnViewColumn(props.title, this.columnFactory);
117
+ this.column.setId(props.id);
118
+ if (props.expand !== undefined)
119
+ this.column.setExpand(props.expand);
120
+ if (props.resizable !== undefined)
121
+ this.column.setResizable(props.resizable);
122
+ if (props.fixedWidth !== undefined)
123
+ this.column.setFixedWidth(props.fixedWidth);
124
+ if (props.visible !== undefined)
125
+ this.column.setVisible(props.visible);
126
+ if (props.sortable)
127
+ this.column.setSorter(new Gtk.CustomSorter());
128
+ }
129
+ applyColumnProps(oldProps, newProps) {
130
+ if (!this.column)
98
131
  return;
99
- this.actionGroup = new Gio.SimpleActionGroup();
100
- this.menu = new MenuModel("root", {}, this.rootContainer);
101
- this.menu.setActionMap(this.actionGroup, this.props.id);
102
- this.column.setHeaderMenu(this.menu.getMenu());
103
- if (this.columnView) {
104
- this.columnView.insertActionGroup(this.props.id, this.actionGroup);
105
- }
106
- }
107
- cleanupMenu() {
108
- if (!this.menu)
109
- return;
110
- this.column.setHeaderMenu(null);
111
- if (this.columnView && this.actionGroup) {
112
- this.columnView.insertActionGroup(this.props.id, null);
113
- }
114
- this.menu = null;
115
- this.actionGroup = null;
116
- }
117
- applyOwnProps(oldProps, newProps) {
118
- if (hasChanged(oldProps, newProps, "renderCell")) {
119
- this.treeRenderer?.setRenderFn(newProps.renderCell);
120
- this.flatRenderer?.setRenderFn(newProps.renderCell);
121
- }
122
- if (hasChanged(oldProps, newProps, "title")) {
132
+ if (hasChanged(oldProps, newProps, "title"))
123
133
  this.column.setTitle(newProps.title);
124
- }
125
- if (hasChanged(oldProps, newProps, "expand")) {
134
+ if (hasChanged(oldProps, newProps, "expand"))
126
135
  this.column.setExpand(newProps.expand ?? false);
127
- }
128
- if (hasChanged(oldProps, newProps, "resizable")) {
136
+ if (hasChanged(oldProps, newProps, "resizable"))
129
137
  this.column.setResizable(newProps.resizable ?? false);
130
- }
131
- if (hasChanged(oldProps, newProps, "fixedWidth")) {
138
+ if (hasChanged(oldProps, newProps, "fixedWidth"))
132
139
  this.column.setFixedWidth(newProps.fixedWidth ?? -1);
133
- }
134
- if (hasChanged(oldProps, newProps, "id")) {
135
- if (this.columnView && this.actionGroup && oldProps?.id) {
136
- this.columnView.insertActionGroup(oldProps.id, null);
137
- this.columnView.insertActionGroup(newProps.id, this.actionGroup);
138
- }
139
- this.column.setId(newProps.id);
140
- if (oldProps && this.menu && this.actionGroup) {
141
- this.menu.setActionMap(this.actionGroup, newProps.id);
142
- }
143
- }
144
- if (hasChanged(oldProps, newProps, "visible")) {
140
+ if (hasChanged(oldProps, newProps, "visible"))
145
141
  this.column.setVisible(newProps.visible ?? true);
146
- }
147
142
  if (hasChanged(oldProps, newProps, "sortable")) {
148
- if (newProps.sortable) {
149
- this.column.setSorter(new Gtk.StringSorter());
150
- }
151
- else {
152
- this.column.setSorter(null);
153
- }
143
+ this.column.setSorter(newProps.sortable ? new Gtk.CustomSorter() : null);
144
+ }
145
+ if (hasChanged(oldProps, newProps, "renderCell"))
146
+ this.scheduleParentUpdate();
147
+ }
148
+ updateHeaderMenu() {
149
+ if (!this.column)
150
+ return;
151
+ const menu = this.menu.getMenu();
152
+ this.column.setHeaderMenu(menu.getNItems() > 0 ? menu : null);
153
+ }
154
+ getParentEstimatedItemSize() {
155
+ if (this.parent && "getEstimatedItemSize" in this.parent) {
156
+ return this.parent.getEstimatedItemSize();
157
+ }
158
+ return { width: -1, height: -1 };
159
+ }
160
+ scheduleParentUpdate() {
161
+ if (this.parent &&
162
+ "scheduleBoundItemsUpdate" in this.parent &&
163
+ typeof this.parent.scheduleBoundItemsUpdate === "function") {
164
+ this.parent.scheduleBoundItemsUpdate();
154
165
  }
155
166
  }
156
167
  }
@@ -1 +1 @@
1
- {"version":3,"file":"column-view-column.js","sourceRoot":"","sources":["../../src/nodes/column-view-column.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"column-view-column.js","sourceRoot":"","sources":["../../src/nodes/column-view-column.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,8 @@ export declare class ContainerSlotNode extends VirtualNode<ContainerSlotProps, W
11
11
  removeChild(child: WidgetNode): void;
12
12
  detachDeletedInstance(): void;
13
13
  private attachToParent;
14
- private detachAllChildren;
14
+ private detachFromGtkParent;
15
+ private reinsertAllChildren;
16
+ private detachAllFromGtkParent;
15
17
  }
16
18
  //# sourceMappingURL=container-slot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"container-slot.d.ts","sourceRoot":"","sources":["../../src/nodes/container-slot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,qBAAa,iBAAkB,SAAQ,WAAW,CAAC,kBAAkB,EAAE,UAAU,EAAE,UAAU,CAAC;IAC1E,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAIlC,aAAa,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO;IAIpC,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAc1C,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAQpC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAQzD,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAYpC,qBAAqB,IAAI,IAAI;IAO7C,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,iBAAiB;CAU5B"}
1
+ {"version":3,"file":"container-slot.d.ts","sourceRoot":"","sources":["../../src/nodes/container-slot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,qBAAa,iBAAkB,SAAQ,WAAW,CAAC,kBAAkB,EAAE,UAAU,EAAE,UAAU,CAAC;IAC1E,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAIlC,aAAa,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO;IAIpC,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAc1C,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IASpC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAQzD,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAKpC,qBAAqB,IAAI,IAAI;IAO7C,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,sBAAsB;CAKjC"}
@@ -10,7 +10,7 @@ export class ContainerSlotNode extends VirtualNode {
10
10
  }
11
11
  setParent(parent) {
12
12
  if (!parent && this.parent) {
13
- this.detachAllChildren(this.parent.container);
13
+ this.detachAllFromGtkParent();
14
14
  }
15
15
  super.setParent(parent);
16
16
  if (parent) {
@@ -22,28 +22,23 @@ export class ContainerSlotNode extends VirtualNode {
22
22
  appendChild(child) {
23
23
  super.appendChild(child);
24
24
  if (this.parent) {
25
+ this.detachFromGtkParent(child);
25
26
  this.attachToParent(this.parent.container, child.container);
26
27
  }
27
28
  }
28
29
  insertBefore(child, before) {
29
30
  super.insertBefore(child, before);
30
31
  if (this.parent) {
31
- this.attachToParent(this.parent.container, child.container);
32
+ this.reinsertAllChildren();
32
33
  }
33
34
  }
34
35
  removeChild(child) {
35
- if (this.parent && isRemovable(this.parent.container)) {
36
- const widget = child.container;
37
- const currentParent = widget.getParent();
38
- if (currentParent && currentParent === this.parent.container) {
39
- this.parent.container.remove(widget);
40
- }
41
- }
36
+ this.detachFromGtkParent(child);
42
37
  super.removeChild(child);
43
38
  }
44
39
  detachDeletedInstance() {
45
40
  if (this.parent) {
46
- this.detachAllChildren(this.parent.container);
41
+ this.detachAllFromGtkParent();
47
42
  }
48
43
  super.detachDeletedInstance();
49
44
  }
@@ -55,14 +50,31 @@ export class ContainerSlotNode extends VirtualNode {
55
50
  }
56
51
  method.call(parent, child);
57
52
  }
58
- detachAllChildren(parent) {
59
- if (!isRemovable(parent))
53
+ detachFromGtkParent(child) {
54
+ const currentParent = child.container.getParent();
55
+ if (currentParent !== null) {
56
+ if (isRemovable(currentParent)) {
57
+ currentParent.remove(child.container);
58
+ }
59
+ else {
60
+ child.container.unparent();
61
+ }
62
+ }
63
+ }
64
+ reinsertAllChildren() {
65
+ if (!this.parent)
60
66
  return;
67
+ const parent = this.parent.container;
61
68
  for (const child of this.children) {
62
- const currentParent = child.container.getParent();
63
- if (currentParent && currentParent === parent) {
64
- parent.remove(child.container);
65
- }
69
+ this.detachFromGtkParent(child);
70
+ }
71
+ for (const child of this.children) {
72
+ this.attachToParent(parent, child.container);
73
+ }
74
+ }
75
+ detachAllFromGtkParent() {
76
+ for (const child of this.children) {
77
+ this.detachFromGtkParent(child);
66
78
  }
67
79
  }
68
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"container-slot.js","sourceRoot":"","sources":["../../src/nodes/container-slot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container-slot.js","sourceRoot":"","sources":["../../src/nodes/container-slot.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,14 @@ import { ContainerSlotNode } from "./container-slot.js";
5
5
  import { EventControllerNode } from "./event-controller.js";
6
6
  import { SlotNode } from "./slot.js";
7
7
  import { WidgetNode } from "./widget.js";
8
- declare const OWN_PROPS: readonly ["onDraw"];
8
+ declare const OWN_PROPS: readonly ["render"];
9
9
  type DrawingAreaProps = Pick<GtkDrawingAreaProps, (typeof OWN_PROPS)[number]>;
10
10
  type DrawingAreaChild = EventControllerNode | SlotNode | ContainerSlotNode;
11
11
  export declare class DrawingAreaNode extends WidgetNode<Gtk.DrawingArea, DrawingAreaProps, DrawingAreaChild> {
12
+ private currentDrawFunc;
12
13
  isValidChild(child: Node): boolean;
13
14
  commitUpdate(oldProps: DrawingAreaProps | null, newProps: DrawingAreaProps): void;
15
+ detachDeletedInstance(): void;
14
16
  private applyOwnProps;
15
17
  }
16
18
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"drawing-area.d.ts","sourceRoot":"","sources":["../../src/nodes/drawing-area.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,QAAA,MAAM,SAAS,qBAAsB,CAAC;AAGtC,KAAK,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AA4B9E,KAAK,gBAAgB,GAAG,mBAAmB,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAE3E,qBAAa,eAAgB,SAAQ,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;IAChF,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAIlC,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAKjG,OAAO,CAAC,aAAa;CASxB"}
1
+ {"version":3,"file":"drawing-area.d.ts","sourceRoot":"","sources":["../../src/nodes/drawing-area.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,QAAA,MAAM,SAAS,qBAAsB,CAAC;AAGtC,KAAK,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE9E,KAAK,gBAAgB,GAAG,mBAAmB,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAE3E,qBAAa,eAAgB,SAAQ,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;IAChG,OAAO,CAAC,eAAe,CAAyB;IAEhC,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAIlC,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAKjF,qBAAqB,IAAI,IAAI;IAM7C,OAAO,CAAC,aAAa;CAkBxB"}
@@ -3,24 +3,9 @@ import { EventControllerNode } from "./event-controller.js";
3
3
  import { filterProps, hasChanged } from "./internal/props.js";
4
4
  import { SlotNode } from "./slot.js";
5
5
  import { WidgetNode } from "./widget.js";
6
- const OWN_PROPS = ["onDraw"];
7
- const pendingDrawFuncs = [];
8
- function wrapDrawFunc(fn) {
9
- return (self, cr, width, height) => fn(cr, width, height, self);
10
- }
11
- function ensurePendingBatch() {
12
- if (pendingDrawFuncs.length === 0) {
13
- queueMicrotask(flushPendingDrawFuncs);
14
- }
15
- return pendingDrawFuncs;
16
- }
17
- function flushPendingDrawFuncs() {
18
- const batch = pendingDrawFuncs.splice(0);
19
- for (const { container, fn } of batch) {
20
- container.setDrawFunc(wrapDrawFunc(fn));
21
- }
22
- }
6
+ const OWN_PROPS = ["render"];
23
7
  export class DrawingAreaNode extends WidgetNode {
8
+ currentDrawFunc = null;
24
9
  isValidChild(child) {
25
10
  return child instanceof EventControllerNode || child instanceof SlotNode || child instanceof ContainerSlotNode;
26
11
  }
@@ -28,13 +13,26 @@ export class DrawingAreaNode extends WidgetNode {
28
13
  super.commitUpdate(oldProps ? filterProps(oldProps, OWN_PROPS) : null, filterProps(newProps, OWN_PROPS));
29
14
  this.applyOwnProps(oldProps, newProps);
30
15
  }
16
+ detachDeletedInstance() {
17
+ this.currentDrawFunc = null;
18
+ this.container.setDrawFunc(undefined);
19
+ super.detachDeletedInstance();
20
+ }
31
21
  applyOwnProps(oldProps, newProps) {
32
- if (hasChanged(oldProps, newProps, "onDraw")) {
33
- if (this.container.getAllocatedWidth() > 0) {
34
- this.container.setDrawFunc(newProps.onDraw ? wrapDrawFunc(newProps.onDraw) : null);
22
+ if (hasChanged(oldProps, newProps, "render")) {
23
+ const hadDraw = !!oldProps?.render;
24
+ const hasDraw = !!newProps.render;
25
+ this.currentDrawFunc = newProps.render ?? null;
26
+ if (hasDraw && !hadDraw) {
27
+ this.container.setDrawFunc((self, cr, width, height) => {
28
+ this.currentDrawFunc?.(cr, width, height, self);
29
+ });
30
+ }
31
+ else if (!hasDraw && hadDraw) {
32
+ this.container.setDrawFunc(undefined);
35
33
  }
36
- else if (newProps.onDraw) {
37
- ensurePendingBatch().push({ container: this.container, fn: newProps.onDraw });
34
+ else if (hasDraw) {
35
+ this.container.queueDraw();
38
36
  }
39
37
  }
40
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"drawing-area.js","sourceRoot":"","sources":["../../src/nodes/drawing-area.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAU,CAAC;AAOtC,MAAM,gBAAgB,GAA2B,EAAE,CAAC;AAEpD,SAAS,YAAY,CACjB,EAAY;IAEZ,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,kBAAkB;IACvB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC5B,CAAC;AAED,SAAS,qBAAqB;IAC1B,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEzC,KAAK,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC;QACpC,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;AACL,CAAC;AAID,MAAM,OAAO,eAAgB,SAAQ,UAA+D;IAChF,YAAY,CAAC,KAAW;QACpC,OAAO,KAAK,YAAY,mBAAmB,IAAI,KAAK,YAAY,QAAQ,IAAI,KAAK,YAAY,iBAAiB,CAAC;IACnH,CAAC;IAEe,YAAY,CAAC,QAAiC,EAAE,QAA0B;QACtF,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;QACzG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAEO,aAAa,CAAC,QAAiC,EAAE,QAA0B;QAC/E,IAAI,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,GAAG,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvF,CAAC;iBAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACzB,kBAAkB,EAAE,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAClF,CAAC;QACL,CAAC;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"drawing-area.js","sourceRoot":"","sources":["../../src/nodes/drawing-area.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAU,CAAC;AAOtC,MAAM,OAAO,eAAgB,SAAQ,UAA+D;IACxF,eAAe,GAAoB,IAAI,CAAC;IAEhC,YAAY,CAAC,KAAW;QACpC,OAAO,KAAK,YAAY,mBAAmB,IAAI,KAAK,YAAY,QAAQ,IAAI,KAAK,YAAY,iBAAiB,CAAC;IACnH,CAAC;IAEe,YAAY,CAAC,QAAiC,EAAE,QAA0B;QACtF,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;QACzG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAEe,qBAAqB;QACjC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACtC,KAAK,CAAC,qBAAqB,EAAE,CAAC;IAClC,CAAC;IAEO,aAAa,CAAC,QAAiC,EAAE,QAA0B;QAC/E,IAAI,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC;YACnC,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAElC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC;YAE/C,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;gBACtB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;oBACnD,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gBACpD,CAAC,CAAC,CAAC;YACP,CAAC;iBAAM,IAAI,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC1C,CAAC;iBAAM,IAAI,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YAC/B,CAAC;QACL,CAAC;IACL,CAAC;CACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"event-controller.d.ts","sourceRoot":"","sources":["../../src/nodes/event-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AAGrC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,qBAAa,mBAAmB,CAC5B,CAAC,SAAS,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,EAEnD,MAAM,SAAS,IAAI,GAAG,GAAG,CAC3B,SAAQ,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC;WACjB,eAAe,CAClC,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,OAAO,GAAG,CAAC,eAAe,GAC3C,GAAG,CAAC,eAAe;IAgBN,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAIlC,aAAa,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO;IAIpC,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAY1C,YAAY,CAAC,QAAQ,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,GAAG,IAAI;IAK3D,qBAAqB,IAAI,IAAI;IAO7C,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,WAAW;CAiBtB"}
1
+ {"version":3,"file":"event-controller.d.ts","sourceRoot":"","sources":["../../src/nodes/event-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AAErC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,qBAAa,mBAAmB,CAC5B,CAAC,SAAS,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,EAEnD,MAAM,SAAS,IAAI,GAAG,GAAG,CAC3B,SAAQ,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC;WACjB,eAAe,CAClC,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,OAAO,GAAG,CAAC,eAAe,GAC3C,GAAG,CAAC,eAAe;IASN,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAIlC,aAAa,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO;IAIpC,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAY1C,YAAY,CAAC,QAAQ,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,GAAG,IAAI;IAK3D,qBAAqB,IAAI,IAAI;IAO7C,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,WAAW;CAatB"}
@@ -1,22 +1,16 @@
1
1
  import * as Gtk from "@gtkx/ffi/gtk";
2
- import { CONSTRUCTOR_PROPS } from "../generated/internal.js";
3
2
  import { isConstructOnlyProp, resolvePropMeta, resolveSignal } from "../metadata.js";
4
3
  import { Node } from "../node.js";
5
- import { createContainerWithConstructOnly } from "./internal/construct.js";
4
+ import { createContainerWithProperties } from "./internal/construct.js";
6
5
  import { WidgetNode } from "./widget.js";
7
6
  const G_TYPE_INVALID = 0;
8
7
  export class EventControllerNode extends Node {
9
8
  static createContainer(props, containerClass) {
10
- const typeName = containerClass.glibTypeName;
11
- if (typeName === "GtkDropTarget") {
9
+ if (containerClass.glibTypeName === "GtkDropTarget") {
12
10
  const actions = props.actions ?? 0;
13
11
  return new Gtk.DropTarget(G_TYPE_INVALID, actions);
14
12
  }
15
- const args = (CONSTRUCTOR_PROPS[typeName] ?? []).map((name) => props[name]);
16
- return createContainerWithConstructOnly(containerClass, props, () => {
17
- // biome-ignore lint/suspicious/noExplicitAny: Dynamic constructor invocation
18
- return new containerClass(...args);
19
- });
13
+ return createContainerWithProperties(containerClass, props);
20
14
  }
21
15
  isValidChild(child) {
22
16
  return this.container instanceof Gtk.ShortcutController && child.typeName === "Shortcut";
@@ -70,13 +64,9 @@ export class EventControllerNode extends Node {
70
64
  this.container.setGtypes(types.length, types);
71
65
  return;
72
66
  }
73
- const propMeta = resolvePropMeta(this.container, name);
74
- if (propMeta) {
75
- const [, setterName] = propMeta;
76
- const setterFn = this.container[setterName];
77
- if (typeof setterFn === "function") {
78
- setterFn.call(this.container, value);
79
- }
67
+ const propName = resolvePropMeta(this.container, name);
68
+ if (propName) {
69
+ this.container[propName] = value;
80
70
  }
81
71
  }
82
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"event-controller.js","sourceRoot":"","sources":["../../src/nodes/event-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-controller.js","sourceRoot":"","sources":["../../src/nodes/event-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,OAAO,mBAIX,SAAQ,IAAkC;IACjC,MAAM,CAAU,eAAe,CAClC,KAAY,EACZ,cAA0C;QAE1C,IAAI,cAAc,CAAC,YAAY,KAAK,eAAe,EAAE,CAAC;YAClD,MAAM,OAAO,GAAI,KAAK,CAAC,OAA8B,IAAI,CAAC,CAAC;YAC3D,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,6BAA6B,CAAC,cAAc,EAAE,KAAK,CAAwB,CAAC;IACvF,CAAC;IAEe,YAAY,CAAC,KAAW;QACpC,OAAO,IAAI,CAAC,SAAS,YAAY,GAAG,CAAC,kBAAkB,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC;IAC7F,CAAC;IAEe,aAAa,CAAC,MAAY;QACtC,OAAO,MAAM,YAAY,UAAU,CAAC;IACxC,CAAC;IAEe,SAAS,CAAC,MAAyB;QAC/C,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3D,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAExB,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,CAAC;IACL,CAAC;IAEe,YAAY,CAAC,QAAsB,EAAE,QAAe;QAChE,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAEe,qBAAqB;QACjC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3D,CAAC;QACD,KAAK,CAAC,qBAAqB,EAAE,CAAC;IAClC,CAAC;IAEO,aAAa,CAAC,QAAsB,EAAE,QAAe;QACzD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE5F,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC3B,IAAI,IAAI,KAAK,UAAU;gBAAE,SAAS;YAClC,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;gBAAE,SAAS;YAExD,MAAM,QAAQ,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEhC,IAAI,QAAQ,KAAK,QAAQ;gBAAE,SAAS;YAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAEvD,IAAI,UAAU,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAE,QAA0B,CAAC,CAAC,CAAC,SAAS,CAAC;gBACzF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1F,CAAC;iBAAM,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAChC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACrC,CAAC;QACL,CAAC;IACL,CAAC;IAEO,WAAW,CAAC,IAAY,EAAE,KAAc;QAC5C,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,SAAS,YAAY,GAAG,CAAC,UAAU,EAAE,CAAC;YAC/D,MAAM,KAAK,GAAG,KAAiB,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC9C,OAAO;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAEvD,IAAI,QAAQ,EAAE,CAAC;YACV,IAAI,CAAC,SAAgD,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QAC7E,CAAC;IACL,CAAC;CACJ"}
@@ -13,6 +13,7 @@ export declare class FixedChildNode extends VirtualNode<FixedChildProps, WidgetN
13
13
  detachDeletedInstance(): void;
14
14
  private attachToParent;
15
15
  private detachFromParent;
16
+ private detachFromGtkParent;
16
17
  private applyLayoutTransform;
17
18
  }
18
19
  //# sourceMappingURL=fixed-child.d.ts.map