@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,55 @@
1
+ import type * as Gtk from "@gtkx/ffi/gtk";
2
+ import type { SlotProps } from "../jsx.js";
3
+ import type { Node } from "../node.js";
4
+ import type { NotebookPageNode } from "./notebook-page.js";
5
+ import { VirtualNode } from "./virtual.js";
6
+ import { WidgetNode } from "./widget.js";
7
+
8
+ export class NotebookPageTabNode extends VirtualNode<SlotProps, NotebookPageNode, WidgetNode> {
9
+ public override isValidChild(child: Node): boolean {
10
+ return child instanceof WidgetNode;
11
+ }
12
+
13
+ public override isValidParent(parent: Node): boolean {
14
+ return parent instanceof VirtualNode && parent.typeName === "NotebookPage";
15
+ }
16
+
17
+ private getNotebook(): Gtk.Notebook | null {
18
+ return this.parent?.parent?.container ?? null;
19
+ }
20
+
21
+ private getPage(): Gtk.Widget | null {
22
+ return this.parent?.findContentChild()?.container ?? null;
23
+ }
24
+
25
+ public override appendChild(child: WidgetNode): void {
26
+ super.appendChild(child);
27
+
28
+ if (this.parent) {
29
+ this.onChildChange();
30
+ }
31
+ }
32
+
33
+ public override removeChild(child: WidgetNode): void {
34
+ super.removeChild(child);
35
+
36
+ if (this.parent) {
37
+ this.onChildChange();
38
+ }
39
+ }
40
+
41
+ private onChildChange(): void {
42
+ const notebook = this.getNotebook();
43
+ const page = this.getPage();
44
+
45
+ if (!notebook || !page) {
46
+ return;
47
+ }
48
+
49
+ if (notebook.pageNum(page) === -1) {
50
+ return;
51
+ }
52
+
53
+ notebook.setTabLabel(page, this.children[0]?.container ?? null);
54
+ }
55
+ }
@@ -0,0 +1,185 @@
1
+ import * as Gtk from "@gtkx/ffi/gtk";
2
+ import type { NotebookPageProps } from "../jsx.js";
3
+ import type { Node } from "../node.js";
4
+ import { hasChanged } from "./internal/props.js";
5
+ import { NotebookPageTabNode } from "./notebook-page-tab.js";
6
+ import { VirtualNode } from "./virtual.js";
7
+ import { WidgetNode } from "./widget.js";
8
+
9
+ type NotebookPageChild = WidgetNode | NotebookPageTabNode;
10
+
11
+ export class NotebookPageNode extends VirtualNode<NotebookPageProps, WidgetNode<Gtk.Notebook>, NotebookPageChild> {
12
+ private position: number | null = null;
13
+
14
+ public override isValidChild(child: Node): boolean {
15
+ return child instanceof WidgetNode || child instanceof NotebookPageTabNode;
16
+ }
17
+
18
+ public override isValidParent(parent: Node): boolean {
19
+ return parent instanceof WidgetNode && parent.container instanceof Gtk.Notebook;
20
+ }
21
+
22
+ public findTabNode(): NotebookPageTabNode | undefined {
23
+ return this.children.find((c): c is NotebookPageTabNode => c instanceof NotebookPageTabNode);
24
+ }
25
+
26
+ public findContentChild(): WidgetNode | undefined {
27
+ return this.children.find(
28
+ (c): c is WidgetNode => c instanceof WidgetNode && !(c instanceof NotebookPageTabNode),
29
+ );
30
+ }
31
+
32
+ public override setParent(parent: WidgetNode<Gtk.Notebook> | null): void {
33
+ if (!parent && this.parent) {
34
+ const childWidget = this.findContentChild()?.container ?? null;
35
+ if (childWidget) {
36
+ this.detachPage(childWidget);
37
+ }
38
+ }
39
+
40
+ super.setParent(parent);
41
+
42
+ if (parent && this.findContentChild()) {
43
+ this.onChildChange(null);
44
+ }
45
+ }
46
+
47
+ public override appendChild(child: NotebookPageChild): void {
48
+ if (child instanceof NotebookPageTabNode) {
49
+ super.appendChild(child);
50
+ return;
51
+ }
52
+
53
+ const oldContent = this.findContentChild()?.container ?? null;
54
+ super.appendChild(child);
55
+
56
+ if (this.parent) {
57
+ this.onChildChange(oldContent);
58
+ }
59
+ }
60
+
61
+ public override removeChild(child: NotebookPageChild): void {
62
+ if (child instanceof NotebookPageTabNode) {
63
+ super.removeChild(child);
64
+ return;
65
+ }
66
+
67
+ const isContent = child === this.findContentChild();
68
+ const oldContent = isContent ? child.container : null;
69
+ super.removeChild(child);
70
+
71
+ if (isContent && this.parent && oldContent) {
72
+ this.onChildChange(oldContent);
73
+ }
74
+ }
75
+
76
+ public override commitUpdate(oldProps: NotebookPageProps | null, newProps: NotebookPageProps): void {
77
+ super.commitUpdate(oldProps, newProps);
78
+ this.applyOwnProps(oldProps, newProps);
79
+ }
80
+
81
+ public override detachDeletedInstance(): void {
82
+ const childWidget = this.findContentChild()?.container ?? null;
83
+ if (childWidget && this.parent) {
84
+ this.detachPage(childWidget);
85
+ }
86
+ super.detachDeletedInstance();
87
+ }
88
+
89
+ public setPosition(position: number | null): void {
90
+ this.position = position;
91
+ }
92
+
93
+ public getChildWidget(): Gtk.Widget {
94
+ const contentChild = this.findContentChild();
95
+ if (!contentChild) {
96
+ throw new Error("Expected content child widget to be set on NotebookPageNode");
97
+ }
98
+
99
+ return contentChild.container;
100
+ }
101
+
102
+ private getParentWidget(): Gtk.Notebook {
103
+ if (!this.parent) {
104
+ throw new Error("Expected parent widget to be set on NotebookPageNode");
105
+ }
106
+
107
+ return this.parent.container;
108
+ }
109
+
110
+ private applyOwnProps(oldProps: NotebookPageProps | null, newProps: NotebookPageProps): void {
111
+ const contentChild = this.findContentChild();
112
+ const childWidget = contentChild?.container ?? null;
113
+ const tabNode = this.findTabNode();
114
+
115
+ if (hasChanged(oldProps, newProps, "label") && childWidget && this.parent && !tabNode?.children[0]) {
116
+ const tabLabel = this.getParentWidget().getTabLabel(childWidget) as Gtk.Label;
117
+ tabLabel.setLabel(newProps.label ?? "");
118
+ }
119
+
120
+ const pagePropsChanged =
121
+ hasChanged(oldProps, newProps, "tabExpand") || hasChanged(oldProps, newProps, "tabFill");
122
+ if (childWidget && this.parent && pagePropsChanged) {
123
+ this.applyPageProps();
124
+ }
125
+ }
126
+
127
+ private attachPage(): void {
128
+ const child = this.getChildWidget();
129
+ const notebook = this.getParentWidget();
130
+ const tabNode = this.findTabNode();
131
+
132
+ let tabLabel: Gtk.Widget;
133
+
134
+ if (tabNode?.children[0]) {
135
+ tabLabel = tabNode.children[0].container;
136
+ } else {
137
+ const label = new Gtk.Label();
138
+ label.setLabel(this.props.label ?? "");
139
+ tabLabel = label;
140
+ }
141
+
142
+ if (this.position != null) {
143
+ notebook.insertPage(child, this.position, tabLabel);
144
+ } else {
145
+ notebook.appendPage(child, tabLabel);
146
+ }
147
+
148
+ this.applyPageProps();
149
+ }
150
+
151
+ private applyPageProps(): void {
152
+ const child = this.findContentChild()?.container ?? null;
153
+ if (!child || !this.parent) return;
154
+
155
+ const notebook = this.getParentWidget();
156
+ const page = notebook.getPage(child);
157
+ if (!page) return;
158
+
159
+ if (this.props.tabExpand !== undefined) {
160
+ page.setTabExpand(this.props.tabExpand);
161
+ }
162
+
163
+ if (this.props.tabFill !== undefined) {
164
+ page.setTabFill(this.props.tabFill);
165
+ }
166
+ }
167
+
168
+ private detachPage(childToDetach: Gtk.Widget): void {
169
+ const notebook = this.getParentWidget();
170
+ const pageNum = notebook.pageNum(childToDetach);
171
+ if (pageNum !== -1) {
172
+ notebook.removePage(pageNum);
173
+ }
174
+ }
175
+
176
+ private onChildChange(oldChild: Gtk.Widget | null): void {
177
+ if (oldChild) {
178
+ this.detachPage(oldChild);
179
+ }
180
+
181
+ if (this.findContentChild()) {
182
+ this.attachPage();
183
+ }
184
+ }
185
+ }
@@ -0,0 +1,28 @@
1
+ import type * as Gtk from "@gtkx/ffi/gtk";
2
+ import type { Node } from "../node.js";
3
+ import type { Props } from "../types.js";
4
+ import { NotebookPageNode } from "./notebook-page.js";
5
+ import { WidgetNode } from "./widget.js";
6
+
7
+ export class NotebookNode extends WidgetNode<Gtk.Notebook, Props, NotebookPageNode> {
8
+ public override isValidChild(child: Node): boolean {
9
+ return child instanceof NotebookPageNode;
10
+ }
11
+
12
+ public override insertBefore(child: NotebookPageNode, before: NotebookPageNode): void {
13
+ const isMove = this.children.includes(child);
14
+ const beforePosition = this.container.pageNum(before.getChildWidget());
15
+ child.setPosition(beforePosition);
16
+
17
+ if (isMove) {
18
+ this.container.reorderChild(child.getChildWidget(), beforePosition);
19
+ }
20
+
21
+ super.insertBefore(child, before);
22
+ }
23
+
24
+ public override removeChild(child: NotebookPageNode): void {
25
+ child.setPosition(null);
26
+ super.removeChild(child);
27
+ }
28
+ }
@@ -0,0 +1,109 @@
1
+ import * as Gtk from "@gtkx/ffi/gtk";
2
+ import type { OverlayChildProps } 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 OverlayChildNode extends VirtualNode<OverlayChildProps, WidgetNode<Gtk.Overlay>, WidgetNode> {
9
+ public override isValidChild(child: Node): boolean {
10
+ return child instanceof WidgetNode;
11
+ }
12
+
13
+ public override isValidParent(parent: Node): boolean {
14
+ return parent instanceof WidgetNode && parent.container instanceof Gtk.Overlay;
15
+ }
16
+
17
+ public override setParent(parent: WidgetNode<Gtk.Overlay> | null): void {
18
+ if (!parent && this.parent) {
19
+ this.detachAllChildren(this.parent.container);
20
+ }
21
+
22
+ super.setParent(parent);
23
+
24
+ if (parent) {
25
+ for (const child of this.children) {
26
+ this.attachToParent(parent.container, child.container);
27
+ }
28
+ }
29
+ }
30
+
31
+ public override appendChild(child: WidgetNode): void {
32
+ super.appendChild(child);
33
+
34
+ if (this.parent) {
35
+ this.attachToParent(this.parent.container, child.container);
36
+ }
37
+ }
38
+
39
+ public override insertBefore(child: WidgetNode, before: WidgetNode): void {
40
+ super.insertBefore(child, before);
41
+
42
+ if (this.parent) {
43
+ this.attachToParent(this.parent.container, child.container);
44
+ }
45
+ }
46
+
47
+ public override removeChild(child: WidgetNode): void {
48
+ if (this.parent) {
49
+ const widget = child.container;
50
+ const currentParent = widget.getParent();
51
+ if (currentParent && currentParent === this.parent.container) {
52
+ this.parent.container.removeOverlay(widget);
53
+ }
54
+ }
55
+
56
+ super.removeChild(child);
57
+ }
58
+
59
+ public override commitUpdate(oldProps: OverlayChildProps | null, newProps: OverlayChildProps): void {
60
+ super.commitUpdate(oldProps, newProps);
61
+
62
+ if (!this.parent) {
63
+ return;
64
+ }
65
+
66
+ const measureChanged = hasChanged(oldProps, newProps, "measure");
67
+ const clipOverlayChanged = hasChanged(oldProps, newProps, "clipOverlay");
68
+
69
+ if (measureChanged || clipOverlayChanged) {
70
+ const parent = this.parent.container;
71
+ for (const child of this.children) {
72
+ if (measureChanged) {
73
+ parent.setMeasureOverlay(child.container, newProps.measure ?? false);
74
+ }
75
+ if (clipOverlayChanged) {
76
+ parent.setClipOverlay(child.container, newProps.clipOverlay ?? false);
77
+ }
78
+ }
79
+ }
80
+ }
81
+
82
+ public override detachDeletedInstance(): void {
83
+ if (this.parent) {
84
+ this.detachAllChildren(this.parent.container);
85
+ }
86
+ super.detachDeletedInstance();
87
+ }
88
+
89
+ private attachToParent(parent: Gtk.Overlay, child: Gtk.Widget): void {
90
+ parent.addOverlay(child);
91
+
92
+ if (this.props.measure !== undefined) {
93
+ parent.setMeasureOverlay(child, this.props.measure);
94
+ }
95
+
96
+ if (this.props.clipOverlay !== undefined) {
97
+ parent.setClipOverlay(child, this.props.clipOverlay);
98
+ }
99
+ }
100
+
101
+ private detachAllChildren(parent: Gtk.Overlay): void {
102
+ for (const child of this.children) {
103
+ const currentParent = child.container.getParent();
104
+ if (currentParent && currentParent === parent) {
105
+ parent.removeOverlay(child.container);
106
+ }
107
+ }
108
+ }
109
+ }
@@ -0,0 +1,59 @@
1
+ import * as Gio from "@gtkx/ffi/gio";
2
+ import * as Gtk from "@gtkx/ffi/gtk";
3
+ import type { Node } from "../node.js";
4
+ import type { PopoverMenuWidget } from "../registry.js";
5
+ import type { Container, Props } from "../types.js";
6
+ import { MenuNode } from "./menu.js";
7
+ import { MenuModel } from "./models/menu.js";
8
+ import { SlotNode } from "./slot.js";
9
+ import { WidgetNode } from "./widget.js";
10
+
11
+ type PopoverMenuChild = MenuNode | SlotNode | WidgetNode;
12
+
13
+ export class PopoverMenuNode extends WidgetNode<PopoverMenuWidget, Props, PopoverMenuChild> {
14
+ private menu: MenuModel;
15
+
16
+ public override isValidChild(child: Node): boolean {
17
+ return child instanceof MenuNode || child instanceof SlotNode || child instanceof WidgetNode;
18
+ }
19
+
20
+ constructor(typeName: string, props: Props, container: PopoverMenuWidget, rootContainer: Container) {
21
+ super(typeName, props, container, rootContainer);
22
+
23
+ const application = rootContainer instanceof Gtk.Application ? rootContainer : undefined;
24
+ const actionGroup = new Gio.SimpleActionGroup();
25
+ const prefix = application ? "app" : "menu";
26
+
27
+ this.container.insertActionGroup(prefix, actionGroup);
28
+ this.menu = new MenuModel("root", {}, rootContainer, actionGroup, application);
29
+ this.container.setMenuModel(this.menu.getMenu());
30
+ }
31
+
32
+ public override appendChild(child: PopoverMenuChild): void {
33
+ if (child instanceof MenuNode) {
34
+ this.menu.appendChild(child);
35
+ return;
36
+ }
37
+ super.appendChild(child);
38
+ }
39
+
40
+ public override insertBefore(child: PopoverMenuChild, before: PopoverMenuChild): void {
41
+ if (child instanceof MenuNode) {
42
+ if (before instanceof MenuNode) {
43
+ this.menu.insertBefore(child, before);
44
+ } else {
45
+ this.menu.appendChild(child);
46
+ }
47
+ return;
48
+ }
49
+ super.insertBefore(child, before);
50
+ }
51
+
52
+ public override removeChild(child: PopoverMenuChild): void {
53
+ if (child instanceof MenuNode) {
54
+ this.menu.removeChild(child);
55
+ return;
56
+ }
57
+ super.removeChild(child);
58
+ }
59
+ }
@@ -0,0 +1,28 @@
1
+ import * as Gtk from "@gtkx/ffi/gtk";
2
+ import type { AdjustableProps, GtkScaleProps, ScaleMark } from "../jsx.js";
3
+ import { AdjustableNode } from "./adjustable.js";
4
+ import { shallowArrayEqual } from "./internal/props.js";
5
+
6
+ type ScaleProps = AdjustableProps & Pick<GtkScaleProps, "marks">;
7
+
8
+ export class ScaleNode extends AdjustableNode<Gtk.Scale> {
9
+ private appliedMarks: ScaleMark[] = [];
10
+
11
+ protected override applyOwnProps(oldProps: ScaleProps | null, newProps: ScaleProps): void {
12
+ super.applyOwnProps(oldProps, newProps);
13
+
14
+ const newMarks = newProps.marks ?? [];
15
+
16
+ if (shallowArrayEqual(this.appliedMarks, newMarks)) {
17
+ return;
18
+ }
19
+
20
+ this.container.clearMarks();
21
+
22
+ for (const mark of newMarks) {
23
+ this.container.addMark(mark.value, mark.position ?? Gtk.PositionType.BOTTOM, mark.label);
24
+ }
25
+
26
+ this.appliedMarks = [...newMarks];
27
+ }
28
+ }
@@ -0,0 +1,23 @@
1
+ import * as Gtk from "@gtkx/ffi/gtk";
2
+ import type { GtkScrolledWindowProps } from "../jsx.js";
3
+ import { filterProps, hasChanged } from "./internal/props.js";
4
+ import { WidgetNode } from "./widget.js";
5
+
6
+ const OWN_PROPS = ["hscrollbarPolicy", "vscrollbarPolicy"] as const;
7
+
8
+ type ScrolledWindowProps = Pick<GtkScrolledWindowProps, (typeof OWN_PROPS)[number]>;
9
+
10
+ export class ScrolledWindowNode extends WidgetNode<Gtk.ScrolledWindow, ScrolledWindowProps> {
11
+ public override commitUpdate(oldProps: ScrolledWindowProps | null, newProps: ScrolledWindowProps): 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: ScrolledWindowProps | null, newProps: ScrolledWindowProps): void {
17
+ if (hasChanged(oldProps, newProps, "hscrollbarPolicy") || hasChanged(oldProps, newProps, "vscrollbarPolicy")) {
18
+ const hPolicy = newProps.hscrollbarPolicy ?? Gtk.PolicyType.AUTOMATIC;
19
+ const vPolicy = newProps.vscrollbarPolicy ?? Gtk.PolicyType.AUTOMATIC;
20
+ this.container.setPolicy(hPolicy, vPolicy);
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,27 @@
1
+ import type * as Gtk from "@gtkx/ffi/gtk";
2
+ import type { GtkSearchBarProps } from "../jsx.js";
3
+ import { filterProps, hasChanged } from "./internal/props.js";
4
+ import { WidgetNode } from "./widget.js";
5
+
6
+ const OWN_PROPS = ["onSearchModeChanged"] as const;
7
+
8
+ type SearchBarProps = Pick<GtkSearchBarProps, (typeof OWN_PROPS)[number]>;
9
+
10
+ export class SearchBarNode extends WidgetNode<Gtk.SearchBar, SearchBarProps> {
11
+ public override commitUpdate(oldProps: SearchBarProps | null, newProps: SearchBarProps): 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: SearchBarProps | null, newProps: SearchBarProps): void {
17
+ if (hasChanged(oldProps, newProps, "onSearchModeChanged")) {
18
+ const callback = newProps.onSearchModeChanged;
19
+ this.signalStore.set(
20
+ this,
21
+ this.container,
22
+ "notify::search-mode-enabled",
23
+ callback ? () => callback(this.container.getSearchMode()) : undefined,
24
+ );
25
+ }
26
+ }
27
+ }
@@ -0,0 +1,27 @@
1
+ import type * as Gtk from "@gtkx/ffi/gtk";
2
+ import type { Node } from "../node.js";
3
+ import { EventControllerNode } from "./event-controller.js";
4
+ import { ShortcutNode } from "./shortcut.js";
5
+
6
+ export class ShortcutControllerNode extends EventControllerNode<Gtk.ShortcutController, ShortcutNode> {
7
+ public override isValidChild(child: Node): boolean {
8
+ return child instanceof ShortcutNode;
9
+ }
10
+
11
+ public override appendChild(child: ShortcutNode): void {
12
+ super.appendChild(child);
13
+ child.createShortcut();
14
+ const shortcut = child.getShortcut();
15
+ if (shortcut) {
16
+ this.container.addShortcut(shortcut);
17
+ }
18
+ }
19
+
20
+ public override removeChild(child: ShortcutNode): void {
21
+ const shortcut = child.getShortcut();
22
+ if (shortcut) {
23
+ this.container.removeShortcut(shortcut);
24
+ }
25
+ super.removeChild(child);
26
+ }
27
+ }
@@ -0,0 +1,69 @@
1
+ import * as Gtk from "@gtkx/ffi/gtk";
2
+ import type { ShortcutProps } from "../jsx.js";
3
+ import type { Node } from "../node.js";
4
+ import { EventControllerNode } from "./event-controller.js";
5
+ import { hasChanged } from "./internal/props.js";
6
+ import { VirtualNode } from "./virtual.js";
7
+
8
+ export class ShortcutNode extends VirtualNode<ShortcutProps, EventControllerNode<Gtk.ShortcutController>, never> {
9
+ public override isValidChild(_child: Node): boolean {
10
+ return false;
11
+ }
12
+
13
+ public override isValidParent(parent: Node): boolean {
14
+ return parent instanceof EventControllerNode && parent.container instanceof Gtk.ShortcutController;
15
+ }
16
+ private shortcut: Gtk.Shortcut | null = null;
17
+ private action: Gtk.CallbackAction | null = null;
18
+
19
+ public override commitUpdate(oldProps: ShortcutProps | null, newProps: ShortcutProps): void {
20
+ super.commitUpdate(oldProps, newProps);
21
+ this.applyOwnProps(oldProps, newProps);
22
+ }
23
+
24
+ public override detachDeletedInstance(): void {
25
+ this.shortcut = null;
26
+ this.action = null;
27
+ super.detachDeletedInstance();
28
+ }
29
+
30
+ public getShortcut(): Gtk.Shortcut | null {
31
+ return this.shortcut;
32
+ }
33
+
34
+ public createShortcut(): void {
35
+ const trigger = this.createTrigger();
36
+ this.action = new Gtk.CallbackAction(() => {
37
+ const result = this.props.onActivate();
38
+ return result !== false;
39
+ });
40
+ this.shortcut = new Gtk.Shortcut(trigger, this.action);
41
+ }
42
+
43
+ private applyOwnProps(oldProps: ShortcutProps | null, newProps: ShortcutProps): void {
44
+ if (!this.shortcut) return;
45
+
46
+ if (hasChanged(oldProps, newProps, "trigger") || hasChanged(oldProps, newProps, "disabled")) {
47
+ this.shortcut.setTrigger(this.createTrigger());
48
+ }
49
+ }
50
+
51
+ private createTrigger(): Gtk.ShortcutTrigger {
52
+ if (this.props.disabled) {
53
+ return Gtk.NeverTrigger.get();
54
+ }
55
+
56
+ const { trigger } = this.props;
57
+ const triggers = Array.isArray(trigger) ? trigger : [trigger];
58
+
59
+ if (triggers.length === 0) {
60
+ return Gtk.NeverTrigger.get();
61
+ }
62
+
63
+ let result: Gtk.ShortcutTrigger = new Gtk.ShortcutTrigger(triggers[0] as string);
64
+ for (let i = 1; i < triggers.length; i++) {
65
+ result = new Gtk.AlternativeTrigger(result, new Gtk.ShortcutTrigger(triggers[i] as string));
66
+ }
67
+ return result;
68
+ }
69
+ }