@gtkx/react 0.18.0 → 0.18.2

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 (401) hide show
  1. package/dist/errors.d.ts +1 -0
  2. package/dist/errors.d.ts.map +1 -0
  3. package/dist/errors.js +1 -0
  4. package/dist/errors.js.map +1 -0
  5. package/dist/factory.d.ts +1 -0
  6. package/dist/factory.d.ts.map +1 -0
  7. package/dist/factory.js +1 -0
  8. package/dist/factory.js.map +1 -0
  9. package/dist/fiber-root.d.ts +1 -0
  10. package/dist/fiber-root.d.ts.map +1 -0
  11. package/dist/fiber-root.js +1 -0
  12. package/dist/fiber-root.js.map +1 -0
  13. package/dist/generated/internal.d.ts +1 -0
  14. package/dist/generated/internal.d.ts.map +1 -0
  15. package/dist/generated/internal.js +1 -0
  16. package/dist/generated/internal.js.map +1 -0
  17. package/dist/generated/jsx.d.ts +1 -0
  18. package/dist/generated/jsx.d.ts.map +1 -0
  19. package/dist/generated/jsx.js +1 -0
  20. package/dist/generated/jsx.js.map +1 -0
  21. package/dist/generated/registry.d.ts +1 -0
  22. package/dist/generated/registry.d.ts.map +1 -0
  23. package/dist/generated/registry.js +1 -0
  24. package/dist/generated/registry.js.map +1 -0
  25. package/dist/host-config.d.ts +1 -0
  26. package/dist/host-config.d.ts.map +1 -0
  27. package/dist/host-config.js +1 -0
  28. package/dist/host-config.js.map +1 -0
  29. package/dist/index.d.ts +1 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +1 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/jsx.d.ts +1 -0
  34. package/dist/jsx.d.ts.map +1 -0
  35. package/dist/jsx.js +1 -0
  36. package/dist/jsx.js.map +1 -0
  37. package/dist/metadata.d.ts +1 -0
  38. package/dist/metadata.d.ts.map +1 -0
  39. package/dist/metadata.js +1 -0
  40. package/dist/metadata.js.map +1 -0
  41. package/dist/node.d.ts +1 -0
  42. package/dist/node.d.ts.map +1 -0
  43. package/dist/node.js +1 -0
  44. package/dist/node.js.map +1 -0
  45. package/dist/nodes/adjustable.d.ts +1 -0
  46. package/dist/nodes/adjustable.d.ts.map +1 -0
  47. package/dist/nodes/adjustable.js +1 -0
  48. package/dist/nodes/adjustable.js.map +1 -0
  49. package/dist/nodes/alert-dialog-response.d.ts +1 -0
  50. package/dist/nodes/alert-dialog-response.d.ts.map +1 -0
  51. package/dist/nodes/alert-dialog-response.js +1 -0
  52. package/dist/nodes/alert-dialog-response.js.map +1 -0
  53. package/dist/nodes/animation.d.ts +1 -0
  54. package/dist/nodes/animation.d.ts.map +1 -0
  55. package/dist/nodes/animation.js +1 -0
  56. package/dist/nodes/animation.js.map +1 -0
  57. package/dist/nodes/application.d.ts +1 -0
  58. package/dist/nodes/application.d.ts.map +1 -0
  59. package/dist/nodes/application.js +1 -0
  60. package/dist/nodes/application.js.map +1 -0
  61. package/dist/nodes/calendar.d.ts +1 -0
  62. package/dist/nodes/calendar.d.ts.map +1 -0
  63. package/dist/nodes/calendar.js +1 -0
  64. package/dist/nodes/calendar.js.map +1 -0
  65. package/dist/nodes/color-dialog-button.d.ts +1 -0
  66. package/dist/nodes/color-dialog-button.d.ts.map +1 -0
  67. package/dist/nodes/color-dialog-button.js +1 -0
  68. package/dist/nodes/color-dialog-button.js.map +1 -0
  69. package/dist/nodes/column-view-column.d.ts +1 -0
  70. package/dist/nodes/column-view-column.d.ts.map +1 -0
  71. package/dist/nodes/column-view-column.js +1 -0
  72. package/dist/nodes/column-view-column.js.map +1 -0
  73. package/dist/nodes/column-view.d.ts +1 -0
  74. package/dist/nodes/column-view.d.ts.map +1 -0
  75. package/dist/nodes/column-view.js +1 -0
  76. package/dist/nodes/column-view.js.map +1 -0
  77. package/dist/nodes/container-slot.d.ts +1 -0
  78. package/dist/nodes/container-slot.d.ts.map +1 -0
  79. package/dist/nodes/container-slot.js +1 -0
  80. package/dist/nodes/container-slot.js.map +1 -0
  81. package/dist/nodes/dialog.d.ts +1 -0
  82. package/dist/nodes/dialog.d.ts.map +1 -0
  83. package/dist/nodes/dialog.js +1 -0
  84. package/dist/nodes/dialog.js.map +1 -0
  85. package/dist/nodes/drawing-area.d.ts +1 -0
  86. package/dist/nodes/drawing-area.d.ts.map +1 -0
  87. package/dist/nodes/drawing-area.js +1 -0
  88. package/dist/nodes/drawing-area.js.map +1 -0
  89. package/dist/nodes/drop-down.d.ts +1 -0
  90. package/dist/nodes/drop-down.d.ts.map +1 -0
  91. package/dist/nodes/drop-down.js +1 -0
  92. package/dist/nodes/drop-down.js.map +1 -0
  93. package/dist/nodes/event-controller.d.ts +1 -0
  94. package/dist/nodes/event-controller.d.ts.map +1 -0
  95. package/dist/nodes/event-controller.js +1 -0
  96. package/dist/nodes/event-controller.js.map +1 -0
  97. package/dist/nodes/fixed-child.d.ts +1 -0
  98. package/dist/nodes/fixed-child.d.ts.map +1 -0
  99. package/dist/nodes/fixed-child.js +1 -0
  100. package/dist/nodes/fixed-child.js.map +1 -0
  101. package/dist/nodes/font-dialog-button.d.ts +1 -0
  102. package/dist/nodes/font-dialog-button.d.ts.map +1 -0
  103. package/dist/nodes/font-dialog-button.js +1 -0
  104. package/dist/nodes/font-dialog-button.js.map +1 -0
  105. package/dist/nodes/grid-child.d.ts +1 -0
  106. package/dist/nodes/grid-child.d.ts.map +1 -0
  107. package/dist/nodes/grid-child.js +1 -0
  108. package/dist/nodes/grid-child.js.map +1 -0
  109. package/dist/nodes/grid-view.d.ts +1 -0
  110. package/dist/nodes/grid-view.d.ts.map +1 -0
  111. package/dist/nodes/grid-view.js +1 -0
  112. package/dist/nodes/grid-view.js.map +1 -0
  113. package/dist/nodes/internal/base-item-renderer.d.ts +1 -0
  114. package/dist/nodes/internal/base-item-renderer.d.ts.map +1 -0
  115. package/dist/nodes/internal/base-item-renderer.js +1 -0
  116. package/dist/nodes/internal/base-item-renderer.js.map +1 -0
  117. package/dist/nodes/internal/grid-item-renderer.d.ts +1 -0
  118. package/dist/nodes/internal/grid-item-renderer.d.ts.map +1 -0
  119. package/dist/nodes/internal/grid-item-renderer.js +1 -0
  120. package/dist/nodes/internal/grid-item-renderer.js.map +1 -0
  121. package/dist/nodes/internal/list-item-renderer.d.ts +1 -0
  122. package/dist/nodes/internal/list-item-renderer.d.ts.map +1 -0
  123. package/dist/nodes/internal/list-item-renderer.js +1 -0
  124. package/dist/nodes/internal/list-item-renderer.js.map +1 -0
  125. package/dist/nodes/internal/list-store.d.ts +1 -0
  126. package/dist/nodes/internal/list-store.d.ts.map +1 -0
  127. package/dist/nodes/internal/list-store.js +1 -0
  128. package/dist/nodes/internal/list-store.js.map +1 -0
  129. package/dist/nodes/internal/predicates.d.ts +1 -0
  130. package/dist/nodes/internal/predicates.d.ts.map +1 -0
  131. package/dist/nodes/internal/predicates.js +1 -0
  132. package/dist/nodes/internal/predicates.js.map +1 -0
  133. package/dist/nodes/internal/props.d.ts +1 -0
  134. package/dist/nodes/internal/props.d.ts.map +1 -0
  135. package/dist/nodes/internal/props.js +1 -0
  136. package/dist/nodes/internal/props.js.map +1 -0
  137. package/dist/nodes/internal/selection-model-controller.d.ts +1 -0
  138. package/dist/nodes/internal/selection-model-controller.d.ts.map +1 -0
  139. package/dist/nodes/internal/selection-model-controller.js +1 -0
  140. package/dist/nodes/internal/selection-model-controller.js.map +1 -0
  141. package/dist/nodes/internal/signal-store.d.ts +1 -0
  142. package/dist/nodes/internal/signal-store.d.ts.map +1 -0
  143. package/dist/nodes/internal/signal-store.js +1 -0
  144. package/dist/nodes/internal/signal-store.js.map +1 -0
  145. package/dist/nodes/internal/simple-list-store.d.ts +1 -0
  146. package/dist/nodes/internal/simple-list-store.d.ts.map +1 -0
  147. package/dist/nodes/internal/simple-list-store.js +1 -0
  148. package/dist/nodes/internal/simple-list-store.js.map +1 -0
  149. package/dist/nodes/internal/text-buffer-controller.d.ts +1 -0
  150. package/dist/nodes/internal/text-buffer-controller.d.ts.map +1 -0
  151. package/dist/nodes/internal/text-buffer-controller.js +1 -0
  152. package/dist/nodes/internal/text-buffer-controller.js.map +1 -0
  153. package/dist/nodes/internal/tree-store.d.ts +1 -0
  154. package/dist/nodes/internal/tree-store.d.ts.map +1 -0
  155. package/dist/nodes/internal/tree-store.js +1 -0
  156. package/dist/nodes/internal/tree-store.js.map +1 -0
  157. package/dist/nodes/internal/widget.d.ts +1 -0
  158. package/dist/nodes/internal/widget.d.ts.map +1 -0
  159. package/dist/nodes/internal/widget.js +1 -0
  160. package/dist/nodes/internal/widget.js.map +1 -0
  161. package/dist/nodes/level-bar.d.ts +1 -0
  162. package/dist/nodes/level-bar.d.ts.map +1 -0
  163. package/dist/nodes/level-bar.js +1 -0
  164. package/dist/nodes/level-bar.js.map +1 -0
  165. package/dist/nodes/list-item.d.ts +1 -0
  166. package/dist/nodes/list-item.d.ts.map +1 -0
  167. package/dist/nodes/list-item.js +1 -0
  168. package/dist/nodes/list-item.js.map +1 -0
  169. package/dist/nodes/list-view.d.ts +1 -0
  170. package/dist/nodes/list-view.d.ts.map +1 -0
  171. package/dist/nodes/list-view.js +1 -0
  172. package/dist/nodes/list-view.js.map +1 -0
  173. package/dist/nodes/menu.d.ts +1 -0
  174. package/dist/nodes/menu.d.ts.map +1 -0
  175. package/dist/nodes/menu.js +1 -0
  176. package/dist/nodes/menu.js.map +1 -0
  177. package/dist/nodes/models/grid.d.ts +1 -0
  178. package/dist/nodes/models/grid.d.ts.map +1 -0
  179. package/dist/nodes/models/grid.js +1 -0
  180. package/dist/nodes/models/grid.js.map +1 -0
  181. package/dist/nodes/models/list.d.ts +1 -0
  182. package/dist/nodes/models/list.d.ts.map +1 -0
  183. package/dist/nodes/models/list.js +1 -0
  184. package/dist/nodes/models/list.js.map +1 -0
  185. package/dist/nodes/models/menu.d.ts +1 -0
  186. package/dist/nodes/models/menu.d.ts.map +1 -0
  187. package/dist/nodes/models/menu.js +1 -0
  188. package/dist/nodes/models/menu.js.map +1 -0
  189. package/dist/nodes/navigation-page.d.ts +1 -0
  190. package/dist/nodes/navigation-page.d.ts.map +1 -0
  191. package/dist/nodes/navigation-page.js +1 -0
  192. package/dist/nodes/navigation-page.js.map +1 -0
  193. package/dist/nodes/navigation-view.d.ts +1 -0
  194. package/dist/nodes/navigation-view.d.ts.map +1 -0
  195. package/dist/nodes/navigation-view.js +1 -0
  196. package/dist/nodes/navigation-view.js.map +1 -0
  197. package/dist/nodes/notebook-page-tab.d.ts +1 -0
  198. package/dist/nodes/notebook-page-tab.d.ts.map +1 -0
  199. package/dist/nodes/notebook-page-tab.js +1 -0
  200. package/dist/nodes/notebook-page-tab.js.map +1 -0
  201. package/dist/nodes/notebook-page.d.ts +1 -0
  202. package/dist/nodes/notebook-page.d.ts.map +1 -0
  203. package/dist/nodes/notebook-page.js +1 -0
  204. package/dist/nodes/notebook-page.js.map +1 -0
  205. package/dist/nodes/notebook.d.ts +1 -0
  206. package/dist/nodes/notebook.d.ts.map +1 -0
  207. package/dist/nodes/notebook.js +1 -0
  208. package/dist/nodes/notebook.js.map +1 -0
  209. package/dist/nodes/overlay-child.d.ts +1 -0
  210. package/dist/nodes/overlay-child.d.ts.map +1 -0
  211. package/dist/nodes/overlay-child.js +1 -0
  212. package/dist/nodes/overlay-child.js.map +1 -0
  213. package/dist/nodes/popover-menu.d.ts +1 -0
  214. package/dist/nodes/popover-menu.d.ts.map +1 -0
  215. package/dist/nodes/popover-menu.js +1 -0
  216. package/dist/nodes/popover-menu.js.map +1 -0
  217. package/dist/nodes/scale.d.ts +1 -0
  218. package/dist/nodes/scale.d.ts.map +1 -0
  219. package/dist/nodes/scale.js +1 -0
  220. package/dist/nodes/scale.js.map +1 -0
  221. package/dist/nodes/scrolled-window.d.ts +1 -0
  222. package/dist/nodes/scrolled-window.d.ts.map +1 -0
  223. package/dist/nodes/scrolled-window.js +1 -0
  224. package/dist/nodes/scrolled-window.js.map +1 -0
  225. package/dist/nodes/search-bar.d.ts +1 -0
  226. package/dist/nodes/search-bar.d.ts.map +1 -0
  227. package/dist/nodes/search-bar.js +1 -0
  228. package/dist/nodes/search-bar.js.map +1 -0
  229. package/dist/nodes/shortcut-controller.d.ts +1 -0
  230. package/dist/nodes/shortcut-controller.d.ts.map +1 -0
  231. package/dist/nodes/shortcut-controller.js +1 -0
  232. package/dist/nodes/shortcut-controller.js.map +1 -0
  233. package/dist/nodes/shortcut.d.ts +1 -0
  234. package/dist/nodes/shortcut.d.ts.map +1 -0
  235. package/dist/nodes/shortcut.js +1 -0
  236. package/dist/nodes/shortcut.js.map +1 -0
  237. package/dist/nodes/slot.d.ts +1 -0
  238. package/dist/nodes/slot.d.ts.map +1 -0
  239. package/dist/nodes/slot.js +1 -0
  240. package/dist/nodes/slot.js.map +1 -0
  241. package/dist/nodes/source-view.d.ts +1 -0
  242. package/dist/nodes/source-view.d.ts.map +1 -0
  243. package/dist/nodes/source-view.js +1 -0
  244. package/dist/nodes/source-view.js.map +1 -0
  245. package/dist/nodes/stack-page.d.ts +1 -0
  246. package/dist/nodes/stack-page.d.ts.map +1 -0
  247. package/dist/nodes/stack-page.js +1 -0
  248. package/dist/nodes/stack-page.js.map +1 -0
  249. package/dist/nodes/stack.d.ts +1 -0
  250. package/dist/nodes/stack.d.ts.map +1 -0
  251. package/dist/nodes/stack.js +1 -0
  252. package/dist/nodes/stack.js.map +1 -0
  253. package/dist/nodes/text-anchor.d.ts +1 -0
  254. package/dist/nodes/text-anchor.d.ts.map +1 -0
  255. package/dist/nodes/text-anchor.js +1 -0
  256. package/dist/nodes/text-anchor.js.map +1 -0
  257. package/dist/nodes/text-content.d.ts +1 -0
  258. package/dist/nodes/text-content.d.ts.map +1 -0
  259. package/dist/nodes/text-content.js +1 -0
  260. package/dist/nodes/text-content.js.map +1 -0
  261. package/dist/nodes/text-paintable.d.ts +1 -0
  262. package/dist/nodes/text-paintable.d.ts.map +1 -0
  263. package/dist/nodes/text-paintable.js +1 -0
  264. package/dist/nodes/text-paintable.js.map +1 -0
  265. package/dist/nodes/text-segment.d.ts +1 -0
  266. package/dist/nodes/text-segment.d.ts.map +1 -0
  267. package/dist/nodes/text-segment.js +1 -0
  268. package/dist/nodes/text-segment.js.map +1 -0
  269. package/dist/nodes/text-tag.d.ts +1 -0
  270. package/dist/nodes/text-tag.d.ts.map +1 -0
  271. package/dist/nodes/text-tag.js +1 -0
  272. package/dist/nodes/text-tag.js.map +1 -0
  273. package/dist/nodes/text-view.d.ts +1 -0
  274. package/dist/nodes/text-view.d.ts.map +1 -0
  275. package/dist/nodes/text-view.js +1 -0
  276. package/dist/nodes/text-view.js.map +1 -0
  277. package/dist/nodes/toggle-group.d.ts +1 -0
  278. package/dist/nodes/toggle-group.d.ts.map +1 -0
  279. package/dist/nodes/toggle-group.js +1 -0
  280. package/dist/nodes/toggle-group.js.map +1 -0
  281. package/dist/nodes/toggle.d.ts +1 -0
  282. package/dist/nodes/toggle.d.ts.map +1 -0
  283. package/dist/nodes/toggle.js +1 -0
  284. package/dist/nodes/toggle.js.map +1 -0
  285. package/dist/nodes/virtual.d.ts +1 -0
  286. package/dist/nodes/virtual.d.ts.map +1 -0
  287. package/dist/nodes/virtual.js +1 -0
  288. package/dist/nodes/virtual.js.map +1 -0
  289. package/dist/nodes/web-view.d.ts +1 -0
  290. package/dist/nodes/web-view.d.ts.map +1 -0
  291. package/dist/nodes/web-view.js +1 -0
  292. package/dist/nodes/web-view.js.map +1 -0
  293. package/dist/nodes/widget.d.ts +1 -0
  294. package/dist/nodes/widget.d.ts.map +1 -0
  295. package/dist/nodes/widget.js +1 -0
  296. package/dist/nodes/widget.js.map +1 -0
  297. package/dist/nodes/window.d.ts +1 -0
  298. package/dist/nodes/window.d.ts.map +1 -0
  299. package/dist/nodes/window.js +1 -0
  300. package/dist/nodes/window.js.map +1 -0
  301. package/dist/portal.d.ts +1 -0
  302. package/dist/portal.d.ts.map +1 -0
  303. package/dist/portal.js +1 -0
  304. package/dist/portal.js.map +1 -0
  305. package/dist/reconciler.d.ts +1 -0
  306. package/dist/reconciler.d.ts.map +1 -0
  307. package/dist/reconciler.js +1 -0
  308. package/dist/reconciler.js.map +1 -0
  309. package/dist/registry.d.ts +1 -0
  310. package/dist/registry.d.ts.map +1 -0
  311. package/dist/registry.js +1 -0
  312. package/dist/registry.js.map +1 -0
  313. package/dist/render.d.ts +1 -0
  314. package/dist/render.d.ts.map +1 -0
  315. package/dist/render.js +1 -0
  316. package/dist/render.js.map +1 -0
  317. package/dist/types.d.ts +1 -0
  318. package/dist/types.d.ts.map +1 -0
  319. package/dist/types.js +1 -0
  320. package/dist/types.js.map +1 -0
  321. package/package.json +6 -4
  322. package/src/errors.ts +52 -0
  323. package/src/factory.ts +62 -0
  324. package/src/fiber-root.ts +20 -0
  325. package/src/generated/internal.ts +2134 -0
  326. package/src/generated/jsx.ts +20068 -0
  327. package/src/generated/registry.ts +16 -0
  328. package/src/host-config.ts +186 -0
  329. package/src/index.ts +11 -0
  330. package/src/jsx.ts +1294 -0
  331. package/src/metadata.ts +36 -0
  332. package/src/node.ts +109 -0
  333. package/src/nodes/adjustable.ts +68 -0
  334. package/src/nodes/alert-dialog-response.ts +78 -0
  335. package/src/nodes/animation.ts +402 -0
  336. package/src/nodes/application.ts +56 -0
  337. package/src/nodes/calendar.ts +38 -0
  338. package/src/nodes/color-dialog-button.ts +69 -0
  339. package/src/nodes/column-view-column.ts +84 -0
  340. package/src/nodes/column-view.ts +192 -0
  341. package/src/nodes/container-slot.ts +87 -0
  342. package/src/nodes/dialog.ts +25 -0
  343. package/src/nodes/drawing-area.ts +51 -0
  344. package/src/nodes/drop-down.ts +92 -0
  345. package/src/nodes/event-controller.ts +100 -0
  346. package/src/nodes/fixed-child.ts +108 -0
  347. package/src/nodes/font-dialog-button.ts +97 -0
  348. package/src/nodes/grid-child.ts +103 -0
  349. package/src/nodes/grid-view.ts +96 -0
  350. package/src/nodes/internal/base-item-renderer.ts +108 -0
  351. package/src/nodes/internal/grid-item-renderer.ts +71 -0
  352. package/src/nodes/internal/list-item-renderer.ts +155 -0
  353. package/src/nodes/internal/list-store.ts +105 -0
  354. package/src/nodes/internal/predicates.ts +80 -0
  355. package/src/nodes/internal/props.ts +51 -0
  356. package/src/nodes/internal/selection-model-controller.ts +115 -0
  357. package/src/nodes/internal/signal-store.ts +141 -0
  358. package/src/nodes/internal/simple-list-store.ts +99 -0
  359. package/src/nodes/internal/text-buffer-controller.ts +374 -0
  360. package/src/nodes/internal/tree-store.ts +237 -0
  361. package/src/nodes/internal/widget.ts +78 -0
  362. package/src/nodes/level-bar.ts +36 -0
  363. package/src/nodes/list-item.ts +107 -0
  364. package/src/nodes/list-view.ts +97 -0
  365. package/src/nodes/menu.ts +27 -0
  366. package/src/nodes/models/grid.ts +105 -0
  367. package/src/nodes/models/list.ts +140 -0
  368. package/src/nodes/models/menu.ts +310 -0
  369. package/src/nodes/navigation-page.ts +154 -0
  370. package/src/nodes/navigation-view.ts +58 -0
  371. package/src/nodes/notebook-page-tab.ts +55 -0
  372. package/src/nodes/notebook-page.ts +185 -0
  373. package/src/nodes/notebook.ts +28 -0
  374. package/src/nodes/overlay-child.ts +109 -0
  375. package/src/nodes/popover-menu.ts +59 -0
  376. package/src/nodes/scale.ts +28 -0
  377. package/src/nodes/scrolled-window.ts +23 -0
  378. package/src/nodes/search-bar.ts +27 -0
  379. package/src/nodes/shortcut-controller.ts +27 -0
  380. package/src/nodes/shortcut.ts +69 -0
  381. package/src/nodes/slot.ts +138 -0
  382. package/src/nodes/source-view.ts +130 -0
  383. package/src/nodes/stack-page.ts +170 -0
  384. package/src/nodes/stack.ts +35 -0
  385. package/src/nodes/text-anchor.ts +74 -0
  386. package/src/nodes/text-content.ts +14 -0
  387. package/src/nodes/text-paintable.ts +51 -0
  388. package/src/nodes/text-segment.ts +55 -0
  389. package/src/nodes/text-tag.ts +287 -0
  390. package/src/nodes/text-view.ts +93 -0
  391. package/src/nodes/toggle-group.ts +27 -0
  392. package/src/nodes/toggle.ts +72 -0
  393. package/src/nodes/virtual.ts +16 -0
  394. package/src/nodes/web-view.ts +22 -0
  395. package/src/nodes/widget.ts +398 -0
  396. package/src/nodes/window.ts +159 -0
  397. package/src/portal.ts +37 -0
  398. package/src/reconciler.ts +52 -0
  399. package/src/registry.ts +123 -0
  400. package/src/render.tsx +192 -0
  401. package/src/types.ts +7 -0
@@ -0,0 +1,287 @@
1
+ import * as Gtk from "@gtkx/ffi/gtk";
2
+ import type { TextTagProps } from "../jsx.js";
3
+ import type { Node } from "../node.js";
4
+ import { hasChanged } from "./internal/props.js";
5
+ import { TextAnchorNode } from "./text-anchor.js";
6
+ import type { TextContentChild, TextContentParent } from "./text-content.js";
7
+ import { isTextContentParent, TextSegmentNode } from "./text-segment.js";
8
+ import { VirtualNode } from "./virtual.js";
9
+
10
+ const STYLE_PROPS: Partial<Record<keyof TextTagProps, keyof Gtk.TextTag>> = {
11
+ background: "setBackground",
12
+ backgroundFullHeight: "setBackgroundFullHeight",
13
+ foreground: "setForeground",
14
+ family: "setFamily",
15
+ font: "setFont",
16
+ sizePoints: "setSizePoints",
17
+ size: "setSize",
18
+ scale: "setScale",
19
+ weight: "setWeight",
20
+ style: "setStyle",
21
+ stretch: "setStretch",
22
+ variant: "setVariant",
23
+ strikethrough: "setStrikethrough",
24
+ underline: "setUnderline",
25
+ overline: "setOverline",
26
+ rise: "setRise",
27
+ letterSpacing: "setLetterSpacing",
28
+ lineHeight: "setLineHeight",
29
+ leftMargin: "setLeftMargin",
30
+ rightMargin: "setRightMargin",
31
+ indent: "setIndent",
32
+ pixelsAboveLines: "setPixelsAboveLines",
33
+ pixelsBelowLines: "setPixelsBelowLines",
34
+ pixelsInsideWrap: "setPixelsInsideWrap",
35
+ justification: "setJustification",
36
+ direction: "setDirection",
37
+ wrapMode: "setWrapMode",
38
+ editable: "setEditable",
39
+ invisible: "setInvisible",
40
+ allowBreaks: "setAllowBreaks",
41
+ insertHyphens: "setInsertHyphens",
42
+ fallback: "setFallback",
43
+ accumulativeMargin: "setAccumulativeMargin",
44
+ paragraphBackground: "setParagraphBackground",
45
+ showSpaces: "setShowSpaces",
46
+ textTransform: "setTextTransform",
47
+ fontFeatures: "setFontFeatures",
48
+ language: "setLanguage",
49
+ };
50
+
51
+ type TextTagParent = Node & TextContentParent;
52
+
53
+ export class TextTagNode
54
+ extends VirtualNode<TextTagProps, TextTagParent, TextContentChild>
55
+ implements TextContentParent
56
+ {
57
+ private buffer: Gtk.TextBuffer | null = null;
58
+ private tag: Gtk.TextTag | null = null;
59
+
60
+ private bufferOffset = 0;
61
+
62
+ public getBufferOffset(): number {
63
+ return this.bufferOffset;
64
+ }
65
+
66
+ public setBufferOffset(offset: number): void {
67
+ this.bufferOffset = offset;
68
+ }
69
+
70
+ public override isValidChild(child: Node): boolean {
71
+ return this.isTextContentChild(child);
72
+ }
73
+
74
+ public override isValidParent(parent: Node): boolean {
75
+ return isTextContentParent(parent);
76
+ }
77
+
78
+ public override appendChild(child: TextContentChild): void {
79
+ const index = this.children.length;
80
+ super.appendChild(child);
81
+
82
+ if (child instanceof TextTagNode && this.buffer) {
83
+ child.setBuffer(this.buffer);
84
+ }
85
+
86
+ this.updateChildOffsets(index);
87
+ this.parent?.onChildInserted(child);
88
+ }
89
+
90
+ public override removeChild(child: TextContentChild): void {
91
+ const index = this.children.indexOf(child);
92
+ if (index !== -1) {
93
+ this.children.splice(index, 1);
94
+ child.setParent(null);
95
+ this.updateChildOffsets(index);
96
+ this.parent?.onChildRemoved(child);
97
+ return;
98
+ }
99
+ super.removeChild(child);
100
+ }
101
+
102
+ public override insertBefore(child: TextContentChild, before: TextContentChild): void {
103
+ const beforeIndex = this.children.indexOf(before);
104
+ const insertIndex = beforeIndex !== -1 ? beforeIndex : this.children.length;
105
+
106
+ super.insertBefore(child, before);
107
+
108
+ if (child instanceof TextTagNode && this.buffer) {
109
+ child.setBuffer(this.buffer);
110
+ }
111
+
112
+ this.updateChildOffsets(insertIndex);
113
+ this.parent?.onChildInserted(child);
114
+ }
115
+
116
+ public override commitUpdate(oldProps: TextTagProps | null, newProps: TextTagProps): void {
117
+ super.commitUpdate(oldProps, newProps);
118
+ this.applyOwnProps(oldProps, newProps);
119
+ }
120
+
121
+ public override detachDeletedInstance(): void {
122
+ if (this.buffer && this.tag) {
123
+ this.removeTagFromBuffer();
124
+ const tagTable = this.buffer.getTagTable();
125
+ tagTable.remove(this.tag);
126
+ }
127
+ this.tag = null;
128
+ this.buffer = null;
129
+ super.detachDeletedInstance();
130
+ }
131
+
132
+ public setBuffer(buffer: Gtk.TextBuffer): void {
133
+ this.buffer = buffer;
134
+ this.updateChildOffsets(0);
135
+ this.setupTag();
136
+
137
+ for (const child of this.children) {
138
+ if (child instanceof TextTagNode) {
139
+ child.setBuffer(buffer);
140
+ }
141
+ }
142
+ }
143
+
144
+ public hasBuffer(): boolean {
145
+ return this.buffer !== null;
146
+ }
147
+
148
+ public getText(): string {
149
+ let text = "";
150
+ for (const child of this.children) {
151
+ text += child.getText();
152
+ }
153
+ return text;
154
+ }
155
+
156
+ public getLength(): number {
157
+ let length = 0;
158
+ for (const child of this.children) {
159
+ length += child.getLength();
160
+ }
161
+ return length;
162
+ }
163
+
164
+ public reapplyTag(): void {
165
+ if (!this.buffer || !this.tag) return;
166
+ this.removeTagFromBuffer();
167
+ this.applyTagToRange();
168
+ }
169
+
170
+ public onChildInserted(child: TextContentChild): void {
171
+ const index = this.children.indexOf(child);
172
+ if (index !== -1) {
173
+ this.updateChildOffsets(index);
174
+ }
175
+
176
+ this.parent?.onChildInserted(child);
177
+ }
178
+
179
+ public onChildRemoved(child: TextContentChild): void {
180
+ this.parent?.onChildRemoved(child);
181
+ }
182
+
183
+ public onChildTextChanged(child: TextSegmentNode, oldLength: number, newLength: number): void {
184
+ const index = this.children.indexOf(child);
185
+ if (index !== -1) {
186
+ this.updateChildOffsets(index + 1);
187
+ }
188
+
189
+ this.parent?.onChildTextChanged(child, oldLength, newLength);
190
+ }
191
+
192
+ private setupTag(): void {
193
+ if (!this.buffer) return;
194
+
195
+ const tagTable = this.buffer.getTagTable();
196
+ this.tag = new Gtk.TextTag(this.props.id);
197
+
198
+ this.applyStyleProps(null, this.props);
199
+ tagTable.add(this.tag);
200
+
201
+ if (this.props.priority !== undefined) {
202
+ this.tag.setPriority(this.props.priority);
203
+ }
204
+
205
+ this.applyTagToRange();
206
+ }
207
+
208
+ private applyOwnProps(oldProps: TextTagProps | null, newProps: TextTagProps): void {
209
+ if (oldProps && oldProps.id !== newProps.id) {
210
+ throw new Error("TextTag id cannot be changed after creation");
211
+ }
212
+
213
+ if (!this.tag) return;
214
+
215
+ this.applyStyleProps(oldProps, newProps);
216
+
217
+ if (hasChanged(oldProps, newProps, "priority") && newProps.priority !== undefined) {
218
+ this.tag.setPriority(newProps.priority);
219
+ }
220
+ }
221
+
222
+ private applyStyleProps(oldProps: TextTagProps | null, newProps: TextTagProps): void {
223
+ if (!this.tag) return;
224
+ for (const prop of Object.keys(STYLE_PROPS) as (keyof TextTagProps)[]) {
225
+ if (hasChanged(oldProps, newProps, prop)) {
226
+ const value = newProps[prop];
227
+ const method = STYLE_PROPS[prop];
228
+ if (value !== undefined && method) {
229
+ const setter = this.tag[method] as (value: unknown) => void;
230
+ setter.call(this.tag, value);
231
+ }
232
+ }
233
+ }
234
+ }
235
+
236
+ private applyTagToRange(): void {
237
+ const buffer = this.buffer;
238
+ const tag = this.tag;
239
+ if (!buffer || !tag) return;
240
+
241
+ const length = this.getLength();
242
+ if (length === 0) return;
243
+
244
+ const startIter = new Gtk.TextIter();
245
+ const endIter = new Gtk.TextIter();
246
+
247
+ buffer.getIterAtOffset(startIter, this.bufferOffset);
248
+ buffer.getIterAtOffset(endIter, this.bufferOffset + length);
249
+
250
+ buffer.applyTag(tag, startIter, endIter);
251
+ }
252
+
253
+ private removeTagFromBuffer(): void {
254
+ const buffer = this.buffer;
255
+ const tag = this.tag;
256
+ if (!buffer || !tag) return;
257
+
258
+ const startIter = new Gtk.TextIter();
259
+ const endIter = new Gtk.TextIter();
260
+
261
+ buffer.getStartIter(startIter);
262
+ buffer.getEndIter(endIter);
263
+
264
+ buffer.removeTag(tag, startIter, endIter);
265
+ }
266
+
267
+ private updateChildOffsets(startIndex: number): void {
268
+ let offset = this.bufferOffset;
269
+
270
+ for (let i = 0; i < startIndex; i++) {
271
+ const child = this.children[i];
272
+ if (child) offset += child.getLength();
273
+ }
274
+
275
+ for (let i = startIndex; i < this.children.length; i++) {
276
+ const child = this.children[i];
277
+ if (child) {
278
+ child.setBufferOffset(offset);
279
+ offset += child.getLength();
280
+ }
281
+ }
282
+ }
283
+
284
+ private isTextContentChild(child: Node): child is TextContentChild {
285
+ return child instanceof TextSegmentNode || child instanceof TextTagNode || child instanceof TextAnchorNode;
286
+ }
287
+ }
@@ -0,0 +1,93 @@
1
+ import * as Gtk from "@gtkx/ffi/gtk";
2
+ import type { GtkTextViewProps } from "../jsx.js";
3
+ import type { Node } from "../node.js";
4
+ import { EventControllerNode } from "./event-controller.js";
5
+ import { filterProps } from "./internal/props.js";
6
+ import { TextBufferController } from "./internal/text-buffer-controller.js";
7
+ import { SlotNode } from "./slot.js";
8
+ import { TextAnchorNode } from "./text-anchor.js";
9
+ import type { TextContentChild, TextContentParent } from "./text-content.js";
10
+ import { TextPaintableNode } from "./text-paintable.js";
11
+ import { TextSegmentNode } from "./text-segment.js";
12
+ import { TextTagNode } from "./text-tag.js";
13
+ import { WidgetNode } from "./widget.js";
14
+
15
+ const OWN_PROPS = [
16
+ "enableUndo",
17
+ "onBufferChanged",
18
+ "onTextInserted",
19
+ "onTextDeleted",
20
+ "onCanUndoChanged",
21
+ "onCanRedoChanged",
22
+ ] as const;
23
+
24
+ type TextViewProps = Pick<GtkTextViewProps, (typeof OWN_PROPS)[number]>;
25
+ type TextViewChild = TextContentChild | SlotNode | EventControllerNode | WidgetNode;
26
+
27
+ export class TextViewNode extends WidgetNode<Gtk.TextView, TextViewProps, TextViewChild> implements TextContentParent {
28
+ protected bufferController: TextBufferController | null = null;
29
+
30
+ public override isValidChild(child: Node): boolean {
31
+ return (
32
+ child instanceof TextSegmentNode ||
33
+ child instanceof TextTagNode ||
34
+ child instanceof TextAnchorNode ||
35
+ child instanceof TextPaintableNode ||
36
+ child instanceof SlotNode ||
37
+ child instanceof EventControllerNode ||
38
+ child instanceof WidgetNode
39
+ );
40
+ }
41
+
42
+ protected ensureBufferController(): TextBufferController {
43
+ if (!this.bufferController) {
44
+ this.bufferController = this.createBufferController();
45
+ }
46
+ return this.bufferController;
47
+ }
48
+
49
+ protected createBufferController(): TextBufferController {
50
+ return new TextBufferController(this, this.container, () => new Gtk.TextBuffer());
51
+ }
52
+
53
+ public override commitUpdate(oldProps: TextViewProps | null, newProps: TextViewProps): void {
54
+ super.commitUpdate(oldProps ? filterProps(oldProps, OWN_PROPS) : null, filterProps(newProps, OWN_PROPS));
55
+ this.ensureBufferController().applyOwnProps(oldProps, newProps);
56
+ }
57
+
58
+ public override appendChild(child: TextViewChild): void {
59
+ const controller = this.ensureBufferController();
60
+ if (controller.isTextContentChild(child)) {
61
+ controller.appendChild(child);
62
+ }
63
+ super.appendChild(child);
64
+ }
65
+
66
+ public override insertBefore(child: TextViewChild, before: TextViewChild): void {
67
+ const controller = this.ensureBufferController();
68
+ if (controller.isTextContentChild(child)) {
69
+ controller.insertBefore(child, before as TextContentChild);
70
+ }
71
+ super.insertBefore(child, before);
72
+ }
73
+
74
+ public override removeChild(child: TextViewChild): void {
75
+ const controller = this.ensureBufferController();
76
+ if (controller.isTextContentChild(child)) {
77
+ controller.removeChild(child);
78
+ }
79
+ super.removeChild(child);
80
+ }
81
+
82
+ public onChildInserted(child: TextContentChild): void {
83
+ this.ensureBufferController().onChildInserted(child);
84
+ }
85
+
86
+ public onChildRemoved(child: TextContentChild): void {
87
+ this.ensureBufferController().onChildRemoved(child);
88
+ }
89
+
90
+ public onChildTextChanged(child: TextSegmentNode, oldLength: number, newLength: number): void {
91
+ this.ensureBufferController().onChildTextChanged(child, oldLength, newLength);
92
+ }
93
+ }
@@ -0,0 +1,27 @@
1
+ import type * as Adw from "@gtkx/ffi/adw";
2
+ import type { AdwToggleGroupProps } from "../jsx.js";
3
+ import { filterProps, hasChanged } from "./internal/props.js";
4
+ import { WidgetNode } from "./widget.js";
5
+
6
+ const OWN_PROPS = ["onActiveChanged"] as const;
7
+
8
+ type ToggleGroupProps = Pick<AdwToggleGroupProps, (typeof OWN_PROPS)[number]>;
9
+
10
+ export class ToggleGroupNode extends WidgetNode<Adw.ToggleGroup, ToggleGroupProps> {
11
+ public override commitUpdate(oldProps: ToggleGroupProps | null, newProps: ToggleGroupProps): void {
12
+ super.commitUpdate(oldProps ? filterProps(oldProps, OWN_PROPS) : null, filterProps(newProps, OWN_PROPS));
13
+ this.applyOwnProps(oldProps, newProps);
14
+ }
15
+
16
+ private applyOwnProps(oldProps: ToggleGroupProps | null, newProps: ToggleGroupProps): void {
17
+ if (hasChanged(oldProps, newProps, "onActiveChanged")) {
18
+ const callback = newProps.onActiveChanged;
19
+ this.signalStore.set(
20
+ this,
21
+ this.container,
22
+ "notify::active",
23
+ callback ? () => callback(this.container.getActive(), this.container.getActiveName()) : undefined,
24
+ );
25
+ }
26
+ }
27
+ }
@@ -0,0 +1,72 @@
1
+ import * as Adw from "@gtkx/ffi/adw";
2
+ import type { ToggleProps } from "../jsx.js";
3
+ import type { Node } from "../node.js";
4
+ import { hasChanged } from "./internal/props.js";
5
+ import { VirtualNode } from "./virtual.js";
6
+ import { WidgetNode } from "./widget.js";
7
+
8
+ export class ToggleNode extends VirtualNode<ToggleProps, WidgetNode<Adw.ToggleGroup>, never> {
9
+ private toggle: Adw.Toggle | null = null;
10
+
11
+ public override isValidChild(_child: Node): boolean {
12
+ return false;
13
+ }
14
+
15
+ public override isValidParent(parent: Node): boolean {
16
+ return parent instanceof WidgetNode && parent.container instanceof Adw.ToggleGroup;
17
+ }
18
+
19
+ public override setParent(parent: WidgetNode<Adw.ToggleGroup> | null): void {
20
+ if (!parent && this.parent) {
21
+ this.removeFromGroup();
22
+ }
23
+
24
+ super.setParent(parent);
25
+
26
+ if (parent && !this.toggle) {
27
+ this.toggle = new Adw.Toggle();
28
+ this.applyOwnProps(null, this.props);
29
+ parent.container.add(this.toggle);
30
+ }
31
+ }
32
+
33
+ public override commitUpdate(oldProps: ToggleProps | null, newProps: ToggleProps): void {
34
+ super.commitUpdate(oldProps, newProps);
35
+ this.applyOwnProps(oldProps, newProps);
36
+ }
37
+
38
+ public override detachDeletedInstance(): void {
39
+ this.removeFromGroup();
40
+ super.detachDeletedInstance();
41
+ }
42
+
43
+ private removeFromGroup(): void {
44
+ if (!this.parent || !this.toggle) return;
45
+
46
+ this.parent.container.remove(this.toggle);
47
+ this.toggle = null;
48
+ }
49
+
50
+ private applyOwnProps(oldProps: ToggleProps | null, newProps: ToggleProps): void {
51
+ if (!this.toggle) return;
52
+
53
+ if (hasChanged(oldProps, newProps, "id")) {
54
+ this.toggle.setName(newProps.id ?? "");
55
+ }
56
+ if (hasChanged(oldProps, newProps, "label")) {
57
+ this.toggle.setLabel(newProps.label ?? "");
58
+ }
59
+ if (hasChanged(oldProps, newProps, "iconName")) {
60
+ this.toggle.setIconName(newProps.iconName ?? "");
61
+ }
62
+ if (hasChanged(oldProps, newProps, "tooltip")) {
63
+ this.toggle.setTooltip(newProps.tooltip ?? "");
64
+ }
65
+ if (hasChanged(oldProps, newProps, "enabled")) {
66
+ this.toggle.setEnabled(newProps.enabled ?? true);
67
+ }
68
+ if (hasChanged(oldProps, newProps, "useUnderline")) {
69
+ this.toggle.setUseUnderline(newProps.useUnderline ?? false);
70
+ }
71
+ }
72
+ }
@@ -0,0 +1,16 @@
1
+ import { Node } from "../node.js";
2
+ import type { Container } from "../types.js";
3
+
4
+ // biome-ignore lint/suspicious/noExplicitAny: Self-referential type bounds require any
5
+ export class VirtualNode<TProps = any, TParent extends Node = any, TChild extends Node = any> extends Node<
6
+ undefined,
7
+ TProps,
8
+ TParent,
9
+ TChild
10
+ > {
11
+ public static override createContainer() {}
12
+
13
+ constructor(typeName: string, props: TProps = {} as TProps, container: undefined, rootContainer: Container) {
14
+ super(typeName, props, container, rootContainer);
15
+ }
16
+ }
@@ -0,0 +1,22 @@
1
+ import type * as WebKit from "@gtkx/ffi/webkit";
2
+ import type { WebKitWebViewProps } from "../jsx.js";
3
+ import { filterProps, hasChanged } from "./internal/props.js";
4
+ import { WidgetNode } from "./widget.js";
5
+
6
+ const OWN_PROPS = ["onLoadChanged"] as const;
7
+
8
+ type WebViewProps = Pick<WebKitWebViewProps, (typeof OWN_PROPS)[number]>;
9
+
10
+ export class WebViewNode extends WidgetNode<WebKit.WebView, WebViewProps> {
11
+ public override commitUpdate(oldProps: WebViewProps | null, newProps: WebViewProps): void {
12
+ super.commitUpdate(oldProps ? filterProps(oldProps, OWN_PROPS) : null, filterProps(newProps, OWN_PROPS));
13
+ this.applyOwnProps(oldProps, newProps);
14
+ }
15
+
16
+ private applyOwnProps(oldProps: WebViewProps | null, newProps: WebViewProps): void {
17
+ if (hasChanged(oldProps, newProps, "onLoadChanged")) {
18
+ const callback = newProps.onLoadChanged;
19
+ this.signalStore.set(this, this.container, "load-changed", callback ?? undefined, { blockable: false });
20
+ }
21
+ }
22
+ }