@gtkx/react 0.21.0 → 1.0.0-rc.1

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 (636) hide show
  1. package/README.md +137 -34
  2. package/dist/components/application.d.ts +10 -0
  3. package/dist/components/application.d.ts.map +1 -0
  4. package/dist/components/application.js +26 -0
  5. package/dist/components/application.js.map +1 -0
  6. package/dist/components/window.d.ts +8 -0
  7. package/dist/components/window.d.ts.map +1 -0
  8. package/dist/components/window.js +23 -0
  9. package/dist/components/window.js.map +1 -0
  10. package/dist/hooks/use-application.d.ts +8 -0
  11. package/dist/hooks/use-application.d.ts.map +1 -0
  12. package/dist/hooks/use-application.js +13 -0
  13. package/dist/hooks/use-application.js.map +1 -0
  14. package/dist/hooks/use-bind-setting.d.ts +6 -0
  15. package/dist/hooks/use-bind-setting.d.ts.map +1 -0
  16. package/dist/hooks/use-bind-setting.js +19 -0
  17. package/dist/hooks/use-bind-setting.js.map +1 -0
  18. package/dist/hooks/use-merge-refs.d.ts +3 -0
  19. package/dist/hooks/use-merge-refs.d.ts.map +1 -0
  20. package/dist/hooks/use-merge-refs.js +48 -0
  21. package/dist/hooks/use-merge-refs.js.map +1 -0
  22. package/dist/hooks/use-object-attachment.d.ts +10 -0
  23. package/dist/hooks/use-object-attachment.d.ts.map +1 -0
  24. package/dist/hooks/use-object-attachment.js +24 -0
  25. package/dist/hooks/use-object-attachment.js.map +1 -0
  26. package/dist/hooks/use-object-value.d.ts +4 -0
  27. package/dist/hooks/use-object-value.d.ts.map +1 -0
  28. package/dist/hooks/use-object-value.js +32 -0
  29. package/dist/hooks/use-object-value.js.map +1 -0
  30. package/dist/hooks/use-parent-window.d.ts +8 -0
  31. package/dist/hooks/use-parent-window.d.ts.map +1 -0
  32. package/dist/hooks/use-parent-window.js +7 -0
  33. package/dist/hooks/use-parent-window.js.map +1 -0
  34. package/dist/hooks/use-property.d.ts +14 -0
  35. package/dist/hooks/use-property.d.ts.map +1 -0
  36. package/dist/hooks/use-property.js +13 -0
  37. package/dist/hooks/use-property.js.map +1 -0
  38. package/dist/hooks/use-setting.d.ts +25 -0
  39. package/dist/hooks/use-setting.d.ts.map +1 -0
  40. package/dist/hooks/use-setting.js +15 -0
  41. package/dist/hooks/use-setting.js.map +1 -0
  42. package/dist/hooks/use-signal.d.ts +21 -0
  43. package/dist/hooks/use-signal.d.ts.map +1 -0
  44. package/dist/hooks/use-signal.js +20 -0
  45. package/dist/hooks/use-signal.js.map +1 -0
  46. package/dist/index.d.ts +14 -7
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +10 -7
  49. package/dist/index.js.map +1 -1
  50. package/dist/internal.d.ts +14 -0
  51. package/dist/internal.d.ts.map +1 -0
  52. package/dist/internal.js +14 -0
  53. package/dist/internal.js.map +1 -0
  54. package/dist/libraries/adw/dialog.d.ts +8 -0
  55. package/dist/libraries/adw/dialog.d.ts.map +1 -0
  56. package/dist/libraries/adw/dialog.js +25 -0
  57. package/dist/libraries/adw/dialog.js.map +1 -0
  58. package/dist/libraries/adw/index.d.ts +2 -0
  59. package/dist/libraries/adw/index.d.ts.map +1 -0
  60. package/dist/libraries/adw/index.js +2 -0
  61. package/dist/libraries/adw/index.js.map +1 -0
  62. package/dist/reconciler/accessible.d.ts +59 -0
  63. package/dist/reconciler/accessible.d.ts.map +1 -0
  64. package/dist/reconciler/accessible.js +143 -0
  65. package/dist/reconciler/accessible.js.map +1 -0
  66. package/dist/reconciler/apply-props.d.ts +8 -0
  67. package/dist/reconciler/apply-props.d.ts.map +1 -0
  68. package/dist/reconciler/apply-props.js +92 -0
  69. package/dist/reconciler/apply-props.js.map +1 -0
  70. package/dist/reconciler/commit-flush.d.ts +3 -0
  71. package/dist/reconciler/commit-flush.d.ts.map +1 -0
  72. package/dist/reconciler/commit-flush.js +13 -0
  73. package/dist/reconciler/commit-flush.js.map +1 -0
  74. package/dist/reconciler/container-attach.d.ts +10 -0
  75. package/dist/reconciler/container-attach.d.ts.map +1 -0
  76. package/dist/reconciler/container-attach.js +216 -0
  77. package/dist/reconciler/container-attach.js.map +1 -0
  78. package/dist/reconciler/content-rebuild.d.ts +3 -0
  79. package/dist/reconciler/content-rebuild.d.ts.map +1 -0
  80. package/dist/reconciler/content-rebuild.js +15 -0
  81. package/dist/reconciler/content-rebuild.js.map +1 -0
  82. package/dist/reconciler/dispatch.d.ts +6 -0
  83. package/dist/reconciler/dispatch.d.ts.map +1 -0
  84. package/dist/reconciler/dispatch.js +61 -0
  85. package/dist/reconciler/dispatch.js.map +1 -0
  86. package/dist/reconciler/element-prop-appliers.d.ts +5 -0
  87. package/dist/reconciler/element-prop-appliers.d.ts.map +1 -0
  88. package/dist/reconciler/element-prop-appliers.js +104 -0
  89. package/dist/reconciler/element-prop-appliers.js.map +1 -0
  90. package/dist/reconciler/element-props.d.ts +25 -0
  91. package/dist/reconciler/element-props.d.ts.map +1 -0
  92. package/dist/reconciler/element-props.js +157 -0
  93. package/dist/reconciler/element-props.js.map +1 -0
  94. package/dist/reconciler/host-config.d.ts +13 -0
  95. package/dist/reconciler/host-config.d.ts.map +1 -0
  96. package/dist/reconciler/host-config.js +309 -0
  97. package/dist/reconciler/host-config.js.map +1 -0
  98. package/dist/reconciler/instance.d.ts +6 -0
  99. package/dist/reconciler/instance.d.ts.map +1 -0
  100. package/dist/reconciler/instance.js +27 -0
  101. package/dist/reconciler/instance.js.map +1 -0
  102. package/dist/reconciler/label-text-rebuild.d.ts +3 -0
  103. package/dist/reconciler/label-text-rebuild.d.ts.map +1 -0
  104. package/dist/reconciler/label-text-rebuild.js +22 -0
  105. package/dist/reconciler/label-text-rebuild.js.map +1 -0
  106. package/dist/reconciler/portal.d.ts +11 -0
  107. package/dist/reconciler/portal.d.ts.map +1 -0
  108. package/dist/reconciler/portal.js +20 -0
  109. package/dist/reconciler/portal.js.map +1 -0
  110. package/dist/reconciler/reconciler-error-handler.d.ts +7 -0
  111. package/dist/reconciler/reconciler-error-handler.d.ts.map +1 -0
  112. package/dist/reconciler/reconciler-error-handler.js +24 -0
  113. package/dist/reconciler/reconciler-error-handler.js.map +1 -0
  114. package/dist/reconciler/reconciler-root.d.ts +19 -0
  115. package/dist/reconciler/reconciler-root.d.ts.map +1 -0
  116. package/dist/reconciler/reconciler-root.js +24 -0
  117. package/dist/reconciler/reconciler-root.js.map +1 -0
  118. package/dist/reconciler/reconciler.d.ts +3 -0
  119. package/dist/reconciler/reconciler.d.ts.map +1 -0
  120. package/dist/reconciler/reconciler.js +12 -0
  121. package/dist/reconciler/reconciler.js.map +1 -0
  122. package/dist/reconciler/render.d.ts +23 -0
  123. package/dist/reconciler/render.d.ts.map +1 -0
  124. package/dist/reconciler/render.js +46 -0
  125. package/dist/reconciler/render.js.map +1 -0
  126. package/dist/reconciler/root-element.d.ts +14 -0
  127. package/dist/reconciler/root-element.d.ts.map +1 -0
  128. package/dist/reconciler/root-element.js +7 -0
  129. package/dist/reconciler/root-element.js.map +1 -0
  130. package/dist/reconciler/signal-store.d.ts +22 -0
  131. package/dist/reconciler/signal-store.d.ts.map +1 -0
  132. package/dist/reconciler/signal-store.js +84 -0
  133. package/dist/reconciler/signal-store.js.map +1 -0
  134. package/dist/reconciler/state.d.ts +36 -0
  135. package/dist/reconciler/state.d.ts.map +1 -0
  136. package/dist/reconciler/state.js +38 -0
  137. package/dist/reconciler/state.js.map +1 -0
  138. package/dist/reconciler/text-buffer-controller.d.ts +17 -0
  139. package/dist/reconciler/text-buffer-controller.d.ts.map +1 -0
  140. package/dist/reconciler/text-buffer-controller.js +102 -0
  141. package/dist/reconciler/text-buffer-controller.js.map +1 -0
  142. package/dist/reconciler/text-buffer-rebuild.d.ts +3 -0
  143. package/dist/reconciler/text-buffer-rebuild.d.ts.map +1 -0
  144. package/dist/reconciler/text-buffer-rebuild.js +7 -0
  145. package/dist/reconciler/text-buffer-rebuild.js.map +1 -0
  146. package/dist/reconciler/text-node.d.ts +7 -0
  147. package/dist/reconciler/text-node.d.ts.map +1 -0
  148. package/dist/reconciler/text-node.js +8 -0
  149. package/dist/reconciler/text-node.js.map +1 -0
  150. package/dist/reconciler/types.d.ts +5 -0
  151. package/dist/reconciler/types.d.ts.map +1 -0
  152. package/dist/reconciler/types.js.map +1 -0
  153. package/dist/reconciler/visibility.d.ts +6 -0
  154. package/dist/reconciler/visibility.d.ts.map +1 -0
  155. package/dist/reconciler/visibility.js +57 -0
  156. package/dist/reconciler/visibility.js.map +1 -0
  157. package/dist/reconciler/wrapper-apply.d.ts +6 -0
  158. package/dist/reconciler/wrapper-apply.d.ts.map +1 -0
  159. package/dist/reconciler/wrapper-apply.js +287 -0
  160. package/dist/reconciler/wrapper-apply.js.map +1 -0
  161. package/dist/reconciler/wrapper-content.d.ts +8 -0
  162. package/dist/reconciler/wrapper-content.d.ts.map +1 -0
  163. package/dist/reconciler/wrapper-content.js +19 -0
  164. package/dist/reconciler/wrapper-content.js.map +1 -0
  165. package/dist/reconciler/wrapper-node.d.ts +8 -0
  166. package/dist/reconciler/wrapper-node.d.ts.map +1 -0
  167. package/dist/reconciler/wrapper-node.js +4 -0
  168. package/dist/reconciler/wrapper-node.js.map +1 -0
  169. package/dist/reconciler/wrapper-protocol.d.ts +13 -0
  170. package/dist/reconciler/wrapper-protocol.d.ts.map +1 -0
  171. package/dist/reconciler/wrapper-protocol.js +20 -0
  172. package/dist/reconciler/wrapper-protocol.js.map +1 -0
  173. package/dist/utils/accessible-metadata.d.ts +5 -0
  174. package/dist/utils/accessible-metadata.d.ts.map +1 -0
  175. package/dist/utils/accessible-metadata.js +22 -0
  176. package/dist/utils/accessible-metadata.js.map +1 -0
  177. package/dist/utils/create-element-component.d.ts +4 -0
  178. package/dist/utils/create-element-component.d.ts.map +1 -0
  179. package/dist/utils/create-element-component.js +54 -0
  180. package/dist/utils/create-element-component.js.map +1 -0
  181. package/dist/utils/gtype.d.ts +16 -0
  182. package/dist/utils/gtype.d.ts.map +1 -0
  183. package/dist/utils/gtype.js +127 -0
  184. package/dist/utils/gtype.js.map +1 -0
  185. package/dist/utils/notify-name.d.ts +5 -0
  186. package/dist/utils/notify-name.d.ts.map +1 -0
  187. package/dist/utils/notify-name.js +6 -0
  188. package/dist/utils/notify-name.js.map +1 -0
  189. package/dist/utils/object-prop.d.ts +8 -0
  190. package/dist/utils/object-prop.d.ts.map +1 -0
  191. package/dist/utils/object-prop.js +9 -0
  192. package/dist/utils/object-prop.js.map +1 -0
  193. package/dist/utils/settings-accessor.d.ts +8 -0
  194. package/dist/utils/settings-accessor.d.ts.map +1 -0
  195. package/dist/utils/settings-accessor.js +69 -0
  196. package/dist/utils/settings-accessor.js.map +1 -0
  197. package/dist/utils/wrapper-node-jsx.d.ts +32 -0
  198. package/dist/utils/wrapper-node-jsx.d.ts.map +1 -0
  199. package/dist/utils/wrapper-node-jsx.js +2 -0
  200. package/dist/utils/wrapper-node-jsx.js.map +1 -0
  201. package/package.json +22 -8
  202. package/src/components/application.tsx +43 -0
  203. package/src/components/window.tsx +36 -0
  204. package/src/hooks/use-application.ts +17 -0
  205. package/src/hooks/use-bind-setting.ts +35 -0
  206. package/src/hooks/use-merge-refs.ts +53 -0
  207. package/src/hooks/use-object-attachment.ts +35 -0
  208. package/src/hooks/use-object-value.ts +50 -0
  209. package/src/hooks/use-parent-window.ts +9 -0
  210. package/src/hooks/use-property.ts +22 -0
  211. package/src/hooks/use-setting.ts +47 -0
  212. package/src/hooks/use-signal.ts +71 -0
  213. package/src/index.ts +15 -14
  214. package/src/internal.ts +24 -0
  215. package/src/libraries/adw/dialog.tsx +34 -0
  216. package/src/libraries/adw/index.ts +1 -0
  217. package/src/reconciler/accessible.ts +232 -0
  218. package/src/reconciler/apply-props.ts +117 -0
  219. package/src/reconciler/commit-flush.ts +13 -0
  220. package/src/reconciler/container-attach.ts +219 -0
  221. package/src/reconciler/content-rebuild.ts +19 -0
  222. package/src/reconciler/dispatch.ts +58 -0
  223. package/src/reconciler/element-prop-appliers.ts +110 -0
  224. package/src/reconciler/element-props.ts +192 -0
  225. package/src/reconciler/host-config.ts +405 -0
  226. package/src/reconciler/instance.ts +30 -0
  227. package/src/reconciler/label-text-rebuild.ts +26 -0
  228. package/src/reconciler/portal.ts +28 -0
  229. package/src/reconciler/reconciler-error-handler.ts +29 -0
  230. package/src/reconciler/reconciler-root.ts +57 -0
  231. package/src/reconciler/reconciler.ts +13 -0
  232. package/src/reconciler/render.ts +61 -0
  233. package/src/reconciler/root-element.ts +14 -0
  234. package/src/reconciler/signal-store.ts +103 -0
  235. package/src/reconciler/state.ts +72 -0
  236. package/src/reconciler/text-buffer-controller.ts +107 -0
  237. package/src/reconciler/text-buffer-rebuild.ts +12 -0
  238. package/src/reconciler/text-node.ts +13 -0
  239. package/src/reconciler/types.ts +6 -0
  240. package/src/reconciler/visibility.ts +52 -0
  241. package/src/reconciler/wrapper-apply.ts +308 -0
  242. package/src/reconciler/wrapper-content.ts +24 -0
  243. package/src/reconciler/wrapper-node.ts +8 -0
  244. package/src/reconciler/wrapper-protocol.ts +32 -0
  245. package/src/utils/accessible-metadata.ts +26 -0
  246. package/src/utils/create-element-component.ts +77 -0
  247. package/src/utils/gtype.ts +166 -0
  248. package/src/utils/notify-name.ts +10 -0
  249. package/src/utils/object-prop.ts +13 -0
  250. package/src/utils/settings-accessor.ts +89 -0
  251. package/src/utils/wrapper-node-jsx.ts +34 -0
  252. package/dist/components/compound.d.ts +0 -40
  253. package/dist/components/compound.d.ts.map +0 -1
  254. package/dist/components/compound.js +0 -46
  255. package/dist/components/compound.js.map +0 -1
  256. package/dist/components/list.d.ts +0 -75
  257. package/dist/components/list.d.ts.map +0 -1
  258. package/dist/components/list.js +0 -81
  259. package/dist/components/list.js.map +0 -1
  260. package/dist/components/slot-widget.d.ts +0 -15
  261. package/dist/components/slot-widget.d.ts.map +0 -1
  262. package/dist/components/slot-widget.js +0 -37
  263. package/dist/components/slot-widget.js.map +0 -1
  264. package/dist/errors.d.ts +0 -15
  265. package/dist/errors.d.ts.map +0 -1
  266. package/dist/errors.js +0 -44
  267. package/dist/errors.js.map +0 -1
  268. package/dist/factory.d.ts +0 -5
  269. package/dist/factory.d.ts.map +0 -1
  270. package/dist/factory.js +0 -37
  271. package/dist/factory.js.map +0 -1
  272. package/dist/generated/compounds.d.ts +0 -2672
  273. package/dist/generated/compounds.d.ts.map +0 -1
  274. package/dist/generated/compounds.js +0 -2624
  275. package/dist/generated/compounds.js.map +0 -1
  276. package/dist/generated/internal.d.ts +0 -16
  277. package/dist/generated/internal.d.ts.map +0 -1
  278. package/dist/generated/internal.js +0 -3638
  279. package/dist/generated/internal.js.map +0 -1
  280. package/dist/generated/jsx.d.ts +0 -17074
  281. package/dist/generated/jsx.d.ts.map +0 -1
  282. package/dist/generated/jsx.js +0 -6715
  283. package/dist/generated/jsx.js.map +0 -1
  284. package/dist/generated/registry.d.ts +0 -5
  285. package/dist/generated/registry.d.ts.map +0 -1
  286. package/dist/generated/registry.js +0 -13
  287. package/dist/generated/registry.js.map +0 -1
  288. package/dist/host-config.d.ts +0 -24
  289. package/dist/host-config.d.ts.map +0 -1
  290. package/dist/host-config.js +0 -172
  291. package/dist/host-config.js.map +0 -1
  292. package/dist/jsx.d.ts +0 -974
  293. package/dist/jsx.d.ts.map +0 -1
  294. package/dist/jsx.js +0 -8
  295. package/dist/jsx.js.map +0 -1
  296. package/dist/metadata.d.ts +0 -5
  297. package/dist/metadata.d.ts.map +0 -1
  298. package/dist/metadata.js +0 -33
  299. package/dist/metadata.js.map +0 -1
  300. package/dist/node.d.ts +0 -25
  301. package/dist/node.d.ts.map +0 -1
  302. package/dist/node.js +0 -85
  303. package/dist/node.js.map +0 -1
  304. package/dist/nodes/adjustable.d.ts +0 -11
  305. package/dist/nodes/adjustable.d.ts.map +0 -1
  306. package/dist/nodes/adjustable.js +0 -46
  307. package/dist/nodes/adjustable.js.map +0 -1
  308. package/dist/nodes/alert-dialog-response.d.ts +0 -15
  309. package/dist/nodes/alert-dialog-response.d.ts.map +0 -1
  310. package/dist/nodes/alert-dialog-response.js +0 -61
  311. package/dist/nodes/alert-dialog-response.js.map +0 -1
  312. package/dist/nodes/alert-dialog.d.ts +0 -14
  313. package/dist/nodes/alert-dialog.d.ts.map +0 -1
  314. package/dist/nodes/alert-dialog.js +0 -41
  315. package/dist/nodes/alert-dialog.js.map +0 -1
  316. package/dist/nodes/animation.d.ts +0 -39
  317. package/dist/nodes/animation.d.ts.map +0 -1
  318. package/dist/nodes/animation.js +0 -326
  319. package/dist/nodes/animation.js.map +0 -1
  320. package/dist/nodes/application.d.ts +0 -12
  321. package/dist/nodes/application.d.ts.map +0 -1
  322. package/dist/nodes/application.js +0 -51
  323. package/dist/nodes/application.js.map +0 -1
  324. package/dist/nodes/calendar.d.ts +0 -18
  325. package/dist/nodes/calendar.d.ts.map +0 -1
  326. package/dist/nodes/calendar.js +0 -28
  327. package/dist/nodes/calendar.js.map +0 -1
  328. package/dist/nodes/color-dialog-button.d.ts +0 -15
  329. package/dist/nodes/color-dialog-button.d.ts.map +0 -1
  330. package/dist/nodes/color-dialog-button.js +0 -43
  331. package/dist/nodes/color-dialog-button.js.map +0 -1
  332. package/dist/nodes/column-view-column.d.ts +0 -36
  333. package/dist/nodes/column-view-column.d.ts.map +0 -1
  334. package/dist/nodes/column-view-column.js +0 -168
  335. package/dist/nodes/column-view-column.js.map +0 -1
  336. package/dist/nodes/container-slot.d.ts +0 -18
  337. package/dist/nodes/container-slot.d.ts.map +0 -1
  338. package/dist/nodes/container-slot.js +0 -81
  339. package/dist/nodes/container-slot.js.map +0 -1
  340. package/dist/nodes/dialog.d.ts +0 -10
  341. package/dist/nodes/dialog.d.ts.map +0 -1
  342. package/dist/nodes/dialog.js +0 -20
  343. package/dist/nodes/dialog.js.map +0 -1
  344. package/dist/nodes/drawing-area.d.ts +0 -19
  345. package/dist/nodes/drawing-area.d.ts.map +0 -1
  346. package/dist/nodes/drawing-area.js +0 -40
  347. package/dist/nodes/drawing-area.js.map +0 -1
  348. package/dist/nodes/event-controller.d.ts +0 -15
  349. package/dist/nodes/event-controller.d.ts.map +0 -1
  350. package/dist/nodes/event-controller.js +0 -73
  351. package/dist/nodes/event-controller.js.map +0 -1
  352. package/dist/nodes/fixed-child.d.ts +0 -19
  353. package/dist/nodes/fixed-child.d.ts.map +0 -1
  354. package/dist/nodes/fixed-child.js +0 -99
  355. package/dist/nodes/fixed-child.js.map +0 -1
  356. package/dist/nodes/font-dialog-button.d.ts +0 -15
  357. package/dist/nodes/font-dialog-button.d.ts.map +0 -1
  358. package/dist/nodes/font-dialog-button.js +0 -76
  359. package/dist/nodes/font-dialog-button.js.map +0 -1
  360. package/dist/nodes/grid-child.d.ts +0 -19
  361. package/dist/nodes/grid-child.d.ts.map +0 -1
  362. package/dist/nodes/grid-child.js +0 -94
  363. package/dist/nodes/grid-child.js.map +0 -1
  364. package/dist/nodes/internal/accessible.d.ts +0 -5
  365. package/dist/nodes/internal/accessible.d.ts.map +0 -1
  366. package/dist/nodes/internal/accessible.js +0 -119
  367. package/dist/nodes/internal/accessible.js.map +0 -1
  368. package/dist/nodes/internal/bound-item.d.ts +0 -4
  369. package/dist/nodes/internal/bound-item.d.ts.map +0 -1
  370. package/dist/nodes/internal/bound-item.js +0 -2
  371. package/dist/nodes/internal/bound-item.js.map +0 -1
  372. package/dist/nodes/internal/construct.d.ts +0 -3
  373. package/dist/nodes/internal/construct.d.ts.map +0 -1
  374. package/dist/nodes/internal/construct.js +0 -44
  375. package/dist/nodes/internal/construct.js.map +0 -1
  376. package/dist/nodes/internal/predicates.d.ts +0 -51
  377. package/dist/nodes/internal/predicates.d.ts.map +0 -1
  378. package/dist/nodes/internal/predicates.js +0 -36
  379. package/dist/nodes/internal/predicates.js.map +0 -1
  380. package/dist/nodes/internal/props.d.ts +0 -6
  381. package/dist/nodes/internal/props.d.ts.map +0 -1
  382. package/dist/nodes/internal/props.js +0 -43
  383. package/dist/nodes/internal/props.js.map +0 -1
  384. package/dist/nodes/internal/signal-store.d.ts +0 -22
  385. package/dist/nodes/internal/signal-store.d.ts.map +0 -1
  386. package/dist/nodes/internal/signal-store.js +0 -98
  387. package/dist/nodes/internal/signal-store.js.map +0 -1
  388. package/dist/nodes/internal/text-buffer-controller.d.ts +0 -40
  389. package/dist/nodes/internal/text-buffer-controller.d.ts.map +0 -1
  390. package/dist/nodes/internal/text-buffer-controller.js +0 -327
  391. package/dist/nodes/internal/text-buffer-controller.js.map +0 -1
  392. package/dist/nodes/internal/widget.d.ts +0 -8
  393. package/dist/nodes/internal/widget.d.ts.map +0 -1
  394. package/dist/nodes/internal/widget.js +0 -68
  395. package/dist/nodes/internal/widget.js.map +0 -1
  396. package/dist/nodes/level-bar.d.ts +0 -12
  397. package/dist/nodes/level-bar.d.ts.map +0 -1
  398. package/dist/nodes/level-bar.js +0 -24
  399. package/dist/nodes/level-bar.js.map +0 -1
  400. package/dist/nodes/list-item-node.d.ts +0 -12
  401. package/dist/nodes/list-item-node.d.ts.map +0 -1
  402. package/dist/nodes/list-item-node.js +0 -45
  403. package/dist/nodes/list-item-node.js.map +0 -1
  404. package/dist/nodes/list.d.ts +0 -100
  405. package/dist/nodes/list.d.ts.map +0 -1
  406. package/dist/nodes/list.js +0 -950
  407. package/dist/nodes/list.js.map +0 -1
  408. package/dist/nodes/menu.d.ts +0 -7
  409. package/dist/nodes/menu.d.ts.map +0 -1
  410. package/dist/nodes/menu.js +0 -20
  411. package/dist/nodes/menu.js.map +0 -1
  412. package/dist/nodes/models/menu.d.ts +0 -47
  413. package/dist/nodes/models/menu.d.ts.map +0 -1
  414. package/dist/nodes/models/menu.js +0 -240
  415. package/dist/nodes/models/menu.js.map +0 -1
  416. package/dist/nodes/navigation-page.d.ts +0 -19
  417. package/dist/nodes/navigation-page.d.ts.map +0 -1
  418. package/dist/nodes/navigation-page.js +0 -129
  419. package/dist/nodes/navigation-page.js.map +0 -1
  420. package/dist/nodes/navigation-view.d.ts +0 -19
  421. package/dist/nodes/navigation-view.d.ts.map +0 -1
  422. package/dist/nodes/navigation-view.js +0 -51
  423. package/dist/nodes/navigation-view.js.map +0 -1
  424. package/dist/nodes/notebook-page-tab.d.ts +0 -15
  425. package/dist/nodes/notebook-page-tab.d.ts.map +0 -1
  426. package/dist/nodes/notebook-page-tab.js +0 -40
  427. package/dist/nodes/notebook-page-tab.js.map +0 -1
  428. package/dist/nodes/notebook-page.d.ts +0 -29
  429. package/dist/nodes/notebook-page.d.ts.map +0 -1
  430. package/dist/nodes/notebook-page.js +0 -151
  431. package/dist/nodes/notebook-page.js.map +0 -1
  432. package/dist/nodes/notebook.d.ts +0 -16
  433. package/dist/nodes/notebook.d.ts.map +0 -1
  434. package/dist/nodes/notebook.js +0 -31
  435. package/dist/nodes/notebook.js.map +0 -1
  436. package/dist/nodes/overlay-child.d.ts +0 -20
  437. package/dist/nodes/overlay-child.d.ts.map +0 -1
  438. package/dist/nodes/overlay-child.js +0 -109
  439. package/dist/nodes/overlay-child.js.map +0 -1
  440. package/dist/nodes/popover-menu.d.ts +0 -19
  441. package/dist/nodes/popover-menu.d.ts.map +0 -1
  442. package/dist/nodes/popover-menu.js +0 -54
  443. package/dist/nodes/popover-menu.js.map +0 -1
  444. package/dist/nodes/scale.d.ts +0 -10
  445. package/dist/nodes/scale.d.ts.map +0 -1
  446. package/dist/nodes/scale.js +0 -19
  447. package/dist/nodes/scale.js.map +0 -1
  448. package/dist/nodes/scrolled-window.d.ts +0 -11
  449. package/dist/nodes/scrolled-window.d.ts.map +0 -1
  450. package/dist/nodes/scrolled-window.js +0 -18
  451. package/dist/nodes/scrolled-window.js.map +0 -1
  452. package/dist/nodes/search-bar.d.ts +0 -11
  453. package/dist/nodes/search-bar.d.ts.map +0 -1
  454. package/dist/nodes/search-bar.js +0 -16
  455. package/dist/nodes/search-bar.js.map +0 -1
  456. package/dist/nodes/shortcut.d.ts +0 -19
  457. package/dist/nodes/shortcut.d.ts.map +0 -1
  458. package/dist/nodes/shortcut.js +0 -72
  459. package/dist/nodes/shortcut.js.map +0 -1
  460. package/dist/nodes/slot.d.ts +0 -21
  461. package/dist/nodes/slot.d.ts.map +0 -1
  462. package/dist/nodes/slot.js +0 -102
  463. package/dist/nodes/slot.js.map +0 -1
  464. package/dist/nodes/source-view.d.ts +0 -18
  465. package/dist/nodes/source-view.d.ts.map +0 -1
  466. package/dist/nodes/source-view.js +0 -94
  467. package/dist/nodes/source-view.js.map +0 -1
  468. package/dist/nodes/spin-row.d.ts +0 -14
  469. package/dist/nodes/spin-row.d.ts.map +0 -1
  470. package/dist/nodes/spin-row.js +0 -46
  471. package/dist/nodes/spin-row.js.map +0 -1
  472. package/dist/nodes/stack-page.d.ts +0 -22
  473. package/dist/nodes/stack-page.d.ts.map +0 -1
  474. package/dist/nodes/stack-page.js +0 -140
  475. package/dist/nodes/stack-page.js.map +0 -1
  476. package/dist/nodes/stack.d.ts +0 -13
  477. package/dist/nodes/stack.d.ts.map +0 -1
  478. package/dist/nodes/stack.js +0 -21
  479. package/dist/nodes/stack.js.map +0 -1
  480. package/dist/nodes/switch-row.d.ts +0 -11
  481. package/dist/nodes/switch-row.d.ts.map +0 -1
  482. package/dist/nodes/switch-row.js +0 -15
  483. package/dist/nodes/switch-row.js.map +0 -1
  484. package/dist/nodes/text-anchor.d.ts +0 -23
  485. package/dist/nodes/text-anchor.d.ts.map +0 -1
  486. package/dist/nodes/text-anchor.js +0 -74
  487. package/dist/nodes/text-anchor.js.map +0 -1
  488. package/dist/nodes/text-content.d.ts +0 -12
  489. package/dist/nodes/text-content.d.ts.map +0 -1
  490. package/dist/nodes/text-content.js +0 -2
  491. package/dist/nodes/text-content.js.map +0 -1
  492. package/dist/nodes/text-paintable.d.ts +0 -19
  493. package/dist/nodes/text-paintable.d.ts.map +0 -1
  494. package/dist/nodes/text-paintable.js +0 -42
  495. package/dist/nodes/text-paintable.js.map +0 -1
  496. package/dist/nodes/text-segment.d.ts +0 -18
  497. package/dist/nodes/text-segment.d.ts.map +0 -1
  498. package/dist/nodes/text-segment.js +0 -38
  499. package/dist/nodes/text-segment.js.map +0 -1
  500. package/dist/nodes/text-tag.d.ts +0 -38
  501. package/dist/nodes/text-tag.d.ts.map +0 -1
  502. package/dist/nodes/text-tag.js +0 -247
  503. package/dist/nodes/text-tag.js.map +0 -1
  504. package/dist/nodes/text-view.d.ts +0 -29
  505. package/dist/nodes/text-view.d.ts.map +0 -1
  506. package/dist/nodes/text-view.js +0 -80
  507. package/dist/nodes/text-view.js.map +0 -1
  508. package/dist/nodes/toggle-group.d.ts +0 -17
  509. package/dist/nodes/toggle-group.d.ts.map +0 -1
  510. package/dist/nodes/toggle-group.js +0 -65
  511. package/dist/nodes/toggle-group.js.map +0 -1
  512. package/dist/nodes/toggle.d.ts +0 -16
  513. package/dist/nodes/toggle.d.ts.map +0 -1
  514. package/dist/nodes/toggle.js +0 -61
  515. package/dist/nodes/toggle.js.map +0 -1
  516. package/dist/nodes/virtual.d.ts +0 -7
  517. package/dist/nodes/virtual.d.ts.map +0 -1
  518. package/dist/nodes/virtual.js +0 -9
  519. package/dist/nodes/virtual.js.map +0 -1
  520. package/dist/nodes/web-view.d.ts +0 -11
  521. package/dist/nodes/web-view.d.ts.map +0 -1
  522. package/dist/nodes/web-view.js +0 -16
  523. package/dist/nodes/web-view.js.map +0 -1
  524. package/dist/nodes/widget.d.ts +0 -26
  525. package/dist/nodes/widget.d.ts.map +0 -1
  526. package/dist/nodes/widget.js +0 -308
  527. package/dist/nodes/widget.js.map +0 -1
  528. package/dist/nodes/window.d.ts +0 -31
  529. package/dist/nodes/window.d.ts.map +0 -1
  530. package/dist/nodes/window.js +0 -122
  531. package/dist/nodes/window.js.map +0 -1
  532. package/dist/portal.d.ts +0 -29
  533. package/dist/portal.d.ts.map +0 -1
  534. package/dist/portal.js +0 -35
  535. package/dist/portal.js.map +0 -1
  536. package/dist/reconciler.d.ts +0 -34
  537. package/dist/reconciler.d.ts.map +0 -1
  538. package/dist/reconciler.js +0 -48
  539. package/dist/reconciler.js.map +0 -1
  540. package/dist/registry.d.ts +0 -18
  541. package/dist/registry.d.ts.map +0 -1
  542. package/dist/registry.js +0 -98
  543. package/dist/registry.js.map +0 -1
  544. package/dist/render.d.ts +0 -117
  545. package/dist/render.d.ts.map +0 -1
  546. package/dist/render.js +0 -159
  547. package/dist/render.js.map +0 -1
  548. package/dist/types.d.ts +0 -6
  549. package/dist/types.d.ts.map +0 -1
  550. package/dist/types.js.map +0 -1
  551. package/dist/use-property.d.ts +0 -29
  552. package/dist/use-property.d.ts.map +0 -1
  553. package/dist/use-property.js +0 -44
  554. package/dist/use-property.js.map +0 -1
  555. package/dist/use-setting.d.ts +0 -36
  556. package/dist/use-setting.d.ts.map +0 -1
  557. package/dist/use-setting.js +0 -68
  558. package/dist/use-setting.js.map +0 -1
  559. package/src/components/compound.tsx +0 -57
  560. package/src/components/list.tsx +0 -140
  561. package/src/components/slot-widget.tsx +0 -46
  562. package/src/errors.ts +0 -53
  563. package/src/factory.ts +0 -62
  564. package/src/generated/compounds.ts +0 -2741
  565. package/src/generated/internal.ts +0 -3642
  566. package/src/generated/jsx.ts +0 -17383
  567. package/src/generated/registry.ts +0 -17
  568. package/src/host-config.ts +0 -219
  569. package/src/jsx.ts +0 -1033
  570. package/src/metadata.ts +0 -43
  571. package/src/node.ts +0 -107
  572. package/src/nodes/adjustable.ts +0 -68
  573. package/src/nodes/alert-dialog-response.ts +0 -78
  574. package/src/nodes/alert-dialog.ts +0 -55
  575. package/src/nodes/animation.ts +0 -409
  576. package/src/nodes/application.ts +0 -61
  577. package/src/nodes/calendar.ts +0 -42
  578. package/src/nodes/color-dialog-button.ts +0 -69
  579. package/src/nodes/column-view-column.ts +0 -189
  580. package/src/nodes/container-slot.ts +0 -100
  581. package/src/nodes/dialog.ts +0 -25
  582. package/src/nodes/drawing-area.ts +0 -53
  583. package/src/nodes/event-controller.ts +0 -96
  584. package/src/nodes/fixed-child.ts +0 -122
  585. package/src/nodes/font-dialog-button.ts +0 -107
  586. package/src/nodes/grid-child.ts +0 -116
  587. package/src/nodes/internal/accessible.ts +0 -155
  588. package/src/nodes/internal/bound-item.ts +0 -4
  589. package/src/nodes/internal/construct.ts +0 -60
  590. package/src/nodes/internal/predicates.ts +0 -80
  591. package/src/nodes/internal/props.ts +0 -51
  592. package/src/nodes/internal/signal-store.ts +0 -141
  593. package/src/nodes/internal/text-buffer-controller.ts +0 -417
  594. package/src/nodes/internal/widget.ts +0 -74
  595. package/src/nodes/level-bar.ts +0 -36
  596. package/src/nodes/list-item-node.ts +0 -53
  597. package/src/nodes/list.ts +0 -1082
  598. package/src/nodes/menu.ts +0 -27
  599. package/src/nodes/models/menu.ts +0 -314
  600. package/src/nodes/navigation-page.ts +0 -154
  601. package/src/nodes/navigation-view.ts +0 -66
  602. package/src/nodes/notebook-page-tab.ts +0 -55
  603. package/src/nodes/notebook-page.ts +0 -189
  604. package/src/nodes/notebook.ts +0 -42
  605. package/src/nodes/overlay-child.ts +0 -130
  606. package/src/nodes/popover-menu.ts +0 -67
  607. package/src/nodes/scale.ts +0 -28
  608. package/src/nodes/scrolled-window.ts +0 -23
  609. package/src/nodes/search-bar.ts +0 -27
  610. package/src/nodes/shortcut.ts +0 -86
  611. package/src/nodes/slot.ts +0 -138
  612. package/src/nodes/source-view.ts +0 -130
  613. package/src/nodes/spin-row.ts +0 -72
  614. package/src/nodes/stack-page.ts +0 -170
  615. package/src/nodes/stack.ts +0 -35
  616. package/src/nodes/switch-row.ts +0 -26
  617. package/src/nodes/text-anchor.ts +0 -88
  618. package/src/nodes/text-content.ts +0 -14
  619. package/src/nodes/text-paintable.ts +0 -51
  620. package/src/nodes/text-segment.ts +0 -55
  621. package/src/nodes/text-tag.ts +0 -298
  622. package/src/nodes/text-view.ts +0 -100
  623. package/src/nodes/toggle-group.ts +0 -81
  624. package/src/nodes/toggle.ts +0 -72
  625. package/src/nodes/virtual.ts +0 -16
  626. package/src/nodes/web-view.ts +0 -22
  627. package/src/nodes/widget.ts +0 -369
  628. package/src/nodes/window.ts +0 -172
  629. package/src/portal.ts +0 -37
  630. package/src/reconciler.ts +0 -52
  631. package/src/registry.ts +0 -119
  632. package/src/render.tsx +0 -192
  633. package/src/types.ts +0 -13
  634. package/src/use-property.ts +0 -58
  635. package/src/use-setting.ts +0 -96
  636. /package/dist/{types.js → reconciler/types.js} +0 -0
package/src/registry.ts DELETED
@@ -1,119 +0,0 @@
1
- import * as Adw from "@gtkx/ffi/adw";
2
- import * as Gtk from "@gtkx/ffi/gtk";
3
- import * as GtkSource from "@gtkx/ffi/gtksource";
4
- import * as WebKit from "@gtkx/ffi/webkit";
5
- import type { Node } from "./node.js";
6
- import { AdjustableNode } from "./nodes/adjustable.js";
7
-
8
- import { AlertDialogNode } from "./nodes/alert-dialog.js";
9
- import { AnimationNode } from "./nodes/animation.js";
10
- import { ApplicationNode } from "./nodes/application.js";
11
- import { CalendarNode } from "./nodes/calendar.js";
12
- import { ColorDialogButtonNode } from "./nodes/color-dialog-button.js";
13
- import { ColumnViewColumnNode } from "./nodes/column-view-column.js";
14
- import { ContainerSlotNode } from "./nodes/container-slot.js";
15
- import { DialogNode } from "./nodes/dialog.js";
16
- import { DrawingAreaNode } from "./nodes/drawing-area.js";
17
- import { EventControllerNode } from "./nodes/event-controller.js";
18
- import { FixedChildNode } from "./nodes/fixed-child.js";
19
- import { FontDialogButtonNode } from "./nodes/font-dialog-button.js";
20
- import { GridChildNode } from "./nodes/grid-child.js";
21
- import { LevelBarNode } from "./nodes/level-bar.js";
22
- import { ListNode } from "./nodes/list.js";
23
- import { ListItemNode } from "./nodes/list-item-node.js";
24
- import { MenuNode } from "./nodes/menu.js";
25
- import { NavigationPageNode } from "./nodes/navigation-page.js";
26
- import { NavigationViewNode } from "./nodes/navigation-view.js";
27
- import { NotebookNode } from "./nodes/notebook.js";
28
- import { NotebookPageNode } from "./nodes/notebook-page.js";
29
- import { NotebookPageTabNode } from "./nodes/notebook-page-tab.js";
30
- import { OverlayChildNode } from "./nodes/overlay-child.js";
31
- import { PopoverMenuNode } from "./nodes/popover-menu.js";
32
- import { ScaleNode } from "./nodes/scale.js";
33
- import { ScrolledWindowNode } from "./nodes/scrolled-window.js";
34
- import { SearchBarNode } from "./nodes/search-bar.js";
35
- import { ShortcutNode } from "./nodes/shortcut.js";
36
- import { SlotNode } from "./nodes/slot.js";
37
- import { SourceViewNode } from "./nodes/source-view.js";
38
- import { SpinRowNode } from "./nodes/spin-row.js";
39
- import { StackNode } from "./nodes/stack.js";
40
- import { StackPageNode } from "./nodes/stack-page.js";
41
- import { SwitchRowNode } from "./nodes/switch-row.js";
42
- import { TextAnchorNode } from "./nodes/text-anchor.js";
43
- import { TextPaintableNode } from "./nodes/text-paintable.js";
44
- import { TextSegmentNode } from "./nodes/text-segment.js";
45
- import { TextTagNode } from "./nodes/text-tag.js";
46
- import { TextViewNode } from "./nodes/text-view.js";
47
- import { ToggleGroupNode } from "./nodes/toggle-group.js";
48
- import { WebViewNode } from "./nodes/web-view.js";
49
- import { WidgetNode } from "./nodes/widget.js";
50
- import { WindowNode } from "./nodes/window.js";
51
-
52
- export const AdjustableWidgets = [Gtk.SpinButton, Gtk.ScaleButton, Gtk.Range] as const;
53
- export type AdjustableWidget = InstanceType<(typeof AdjustableWidgets)[number]>;
54
-
55
- export const StackWidgets = [Gtk.Stack, Adw.ViewStack] as const;
56
- export type StackWidget = InstanceType<(typeof StackWidgets)[number]>;
57
-
58
- export const PopoverMenuWidgets = [Gtk.PopoverMenu, Gtk.PopoverMenuBar, Gtk.MenuButton] as const;
59
- export type PopoverMenuWidget = InstanceType<(typeof PopoverMenuWidgets)[number]>;
60
-
61
- export type NodeClass = (new (
62
- // biome-ignore lint/suspicious/noExplicitAny: Registry entries require flexible typing for varied node constructors
63
- ...args: any[]
64
- ) => Node) & {
65
- // biome-ignore lint/suspicious/noExplicitAny: Registry entries require flexible typing for varied node constructors
66
- createContainer(...args: any[]): unknown;
67
- };
68
-
69
- // biome-ignore lint/suspicious/noExplicitAny: Class keys require flexible typing for GTK class hierarchy matching
70
- type ClassKey = new (...args: any[]) => any;
71
- type RegistryKey = string | ClassKey | readonly (string | ClassKey)[];
72
- type NodeRegistryEntry = [RegistryKey, NodeClass];
73
-
74
- export const NODE_REGISTRY: NodeRegistryEntry[] = [
75
- ["ContainerSlot", ContainerSlotNode],
76
- [["AdwTimedAnimation", "AdwSpringAnimation"], AnimationNode],
77
- ["ColumnViewColumn", ColumnViewColumnNode],
78
- ["FixedChild", FixedChildNode],
79
- ["GridChild", GridChildNode],
80
- [["MenuItem", "MenuSection", "MenuSubmenu"], MenuNode],
81
- ["NavigationPage", NavigationPageNode],
82
- ["NotebookPage", NotebookPageNode],
83
- ["NotebookPageTab", NotebookPageTabNode],
84
- ["OverlayChild", OverlayChildNode],
85
- ["Shortcut", ShortcutNode],
86
- ["Slot", SlotNode],
87
- ["StackPage", StackPageNode],
88
- ["TextAnchor", TextAnchorNode],
89
- ["TextPaintable", TextPaintableNode],
90
- ["TextSegment", TextSegmentNode],
91
- ["TextTag", TextTagNode],
92
- [Gtk.Application, ApplicationNode],
93
- [Gtk.EventController, EventControllerNode],
94
- [GtkSource.View, SourceViewNode],
95
- [Gtk.TextView, TextViewNode],
96
- [WebKit.WebView, WebViewNode],
97
- [Adw.AlertDialog, AlertDialogNode],
98
- [Adw.Dialog, DialogNode],
99
- [Gtk.Window, WindowNode],
100
- [Adw.SpinRow, SpinRowNode],
101
- [Adw.SwitchRow, SwitchRowNode],
102
- [Gtk.Scale, ScaleNode],
103
- [Gtk.LevelBar, LevelBarNode],
104
- [Gtk.ScrolledWindow, ScrolledWindowNode],
105
- [Gtk.Calendar, CalendarNode],
106
- [Gtk.ColorDialogButton, ColorDialogButtonNode],
107
- [Gtk.FontDialogButton, FontDialogButtonNode],
108
- [Gtk.DrawingArea, DrawingAreaNode],
109
- [Gtk.SearchBar, SearchBarNode],
110
- [Adw.NavigationView, NavigationViewNode],
111
- [Adw.ToggleGroup, ToggleGroupNode],
112
- [Gtk.Notebook, NotebookNode],
113
- [StackWidgets, StackNode],
114
- [[Gtk.ListView, Gtk.ColumnView, Gtk.GridView, Gtk.DropDown, Adw.ComboRow], ListNode],
115
- [PopoverMenuWidgets, PopoverMenuNode],
116
- [AdjustableWidgets, AdjustableNode],
117
- [[Gtk.ListItem, Gtk.ListHeader], ListItemNode],
118
- [Gtk.Widget, WidgetNode],
119
- ];
package/src/render.tsx DELETED
@@ -1,192 +0,0 @@
1
- import { start, stop } from "@gtkx/ffi";
2
- import type * as Gio from "@gtkx/ffi/gio";
3
- import type * as Gtk from "@gtkx/ffi/gtk";
4
- import { createContext, type ReactNode, useContext } from "react";
5
- import { formatBoundaryError, formatRenderError } from "./errors.js";
6
- import { getSignalStore } from "./nodes/internal/signal-store.js";
7
- import { reconciler } from "./reconciler.js";
8
-
9
- /**
10
- * React Context providing access to the GTK Application instance.
11
- *
12
- * Use {@link useApplication} to access the application in components.
13
- *
14
- * @example
15
- * ```tsx
16
- * const App = () => {
17
- * const app = useApplication();
18
- * console.log(app.applicationId);
19
- * return <GtkLabel label="Hello" />;
20
- * };
21
- * ```
22
- */
23
- export const ApplicationContext = createContext<Gtk.Application | null>(null);
24
-
25
- /**
26
- * Hook to access the GTK Application instance.
27
- *
28
- * Must be called within a component rendered by {@link render}.
29
- * Throws an error if called outside the application context.
30
- *
31
- * @returns The GTK Application instance
32
- *
33
- * @example
34
- * ```tsx
35
- * const MyComponent = () => {
36
- * const app = useApplication();
37
- * return <GtkLabel label={app.applicationId} />;
38
- * };
39
- * ```
40
- *
41
- * @see {@link ApplicationContext} for the underlying context
42
- */
43
- export const useApplication = (): Gtk.Application => {
44
- const context = useContext(ApplicationContext);
45
-
46
- if (!context) {
47
- throw new Error("Expected ApplicationContext: useApplication must be called within Application");
48
- }
49
-
50
- return context;
51
- };
52
-
53
- let container: unknown = null;
54
- let app: Gtk.Application | null = null;
55
- let isHotReloading = false;
56
-
57
- /**
58
- * Sets the hot reloading state.
59
- *
60
- * Used internally by the dev server to prevent quit() from closing
61
- * the application during HMR updates.
62
- *
63
- * @internal
64
- */
65
- export const setHotReloading = (value: boolean): void => {
66
- isHotReloading = value;
67
- };
68
-
69
- /**
70
- * Renders a React element tree into a GTK4 application window.
71
- *
72
- * This is the main entry point for GTKX applications. It initializes the GTK4
73
- * runtime, creates an application container, and begins the React reconciliation
74
- * process.
75
- *
76
- * @param element - The root React element to render
77
- * @param appId - Application ID in reverse domain notation (e.g., "com.example.myapp")
78
- * @param flags - Optional GIO application flags for customizing behavior
79
- *
80
- * @example
81
- * ```tsx
82
- * import { render, quit } from "@gtkx/react";
83
- *
84
- * const App = () => (
85
- * <GtkApplicationWindow title="My App" onClose={quit}>
86
- * <GtkLabel label="Hello, GTKX!" />
87
- * </GtkApplicationWindow>
88
- * );
89
- *
90
- * render(<App />, "com.example.myapp");
91
- * ```
92
- *
93
- * @see {@link quit} for shutting down the application
94
- * @see {@link update} for hot-reloading the rendered tree
95
- */
96
- export const render = (element: ReactNode, appId: string, flags?: Gio.ApplicationFlags): void => {
97
- const application = start(appId, flags);
98
- app = application;
99
- const instance = reconciler.getInstance();
100
-
101
- container = instance.createContainer(
102
- application,
103
- 1,
104
- null,
105
- false,
106
- null,
107
- "",
108
- (error: unknown) => {
109
- getSignalStore(application).forceUnblockAll();
110
- throw formatRenderError(error);
111
- },
112
- (error: unknown) => {
113
- getSignalStore(application).forceUnblockAll();
114
- const formattedError = formatBoundaryError(error);
115
- console.error(formattedError.toString());
116
- },
117
- () => {},
118
- () => {},
119
- );
120
-
121
- instance.updateContainer(
122
- <ApplicationContext.Provider value={application}>{element}</ApplicationContext.Provider>,
123
- container,
124
- null,
125
- () => {},
126
- );
127
- };
128
-
129
- /**
130
- * Updates the rendered React element tree.
131
- *
132
- * Used primarily for hot module replacement (HMR) during development.
133
- * Replaces the current component tree with a new element without
134
- * reinitializing the GTK application.
135
- *
136
- * @param element - The new root React element to render
137
- *
138
- * @example
139
- * ```tsx
140
- * // In HMR handler
141
- * if (import.meta.hot) {
142
- * import.meta.hot.accept(() => {
143
- * update(<App />);
144
- * });
145
- * }
146
- * ```
147
- *
148
- * @see {@link render} for initial rendering
149
- */
150
- export const update = (element: ReactNode): Promise<void> => {
151
- return new Promise((resolve) => {
152
- reconciler
153
- .getInstance()
154
- .updateContainer(
155
- <ApplicationContext.Provider value={app}>{element}</ApplicationContext.Provider>,
156
- container,
157
- null,
158
- resolve,
159
- );
160
- });
161
- };
162
-
163
- /**
164
- * Gracefully shuts down the GTK application.
165
- *
166
- * Unmounts the React component tree and stops the GTK main loop.
167
- * Typically used as the `onClose` handler for the application window.
168
- *
169
- * @example
170
- * ```tsx
171
- * import { quit } from "@gtkx/react";
172
- *
173
- * const App = () => (
174
- * <GtkApplicationWindow title="My App" onClose={quit}>
175
- * <GtkButton label="Quit" onClicked={quit} />
176
- * </GtkApplicationWindow>
177
- * );
178
- * ```
179
- *
180
- * @see {@link render} for starting the application
181
- */
182
- export const quit = (): void => {
183
- if (isHotReloading) {
184
- return;
185
- }
186
-
187
- reconciler.getInstance().updateContainer(null, container, null, () => {
188
- setTimeout(() => {
189
- stop();
190
- }, 0);
191
- });
192
- };
package/src/types.ts DELETED
@@ -1,13 +0,0 @@
1
- import type * as Gtk from "@gtkx/ffi/gtk";
2
-
3
- /** @internal */
4
- export type Container = Gtk.Widget | Gtk.Application | Gtk.EventController | Gtk.ListItem | Gtk.ListHeader;
5
-
6
- export type Props = Record<string, unknown>;
7
-
8
- export type ContainerClass =
9
- | typeof Gtk.Widget
10
- | typeof Gtk.Application
11
- | typeof Gtk.EventController
12
- | typeof Gtk.ListItem
13
- | typeof Gtk.ListHeader;
@@ -1,58 +0,0 @@
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
- }
@@ -1,96 +0,0 @@
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
- }
File without changes