@gtkx/react 0.20.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 (596) hide show
  1. package/README.md +122 -55
  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 -5
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +10 -5
  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 -12
  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/list.d.ts +0 -35
  253. package/dist/components/list.d.ts.map +0 -1
  254. package/dist/components/list.js +0 -40
  255. package/dist/components/list.js.map +0 -1
  256. package/dist/errors.d.ts +0 -9
  257. package/dist/errors.d.ts.map +0 -1
  258. package/dist/errors.js +0 -42
  259. package/dist/errors.js.map +0 -1
  260. package/dist/factory.d.ts +0 -5
  261. package/dist/factory.d.ts.map +0 -1
  262. package/dist/factory.js +0 -37
  263. package/dist/factory.js.map +0 -1
  264. package/dist/generated/internal.d.ts +0 -16
  265. package/dist/generated/internal.d.ts.map +0 -1
  266. package/dist/generated/internal.js +0 -5635
  267. package/dist/generated/internal.js.map +0 -1
  268. package/dist/generated/jsx.d.ts +0 -19624
  269. package/dist/generated/jsx.d.ts.map +0 -1
  270. package/dist/generated/jsx.js +0 -9274
  271. package/dist/generated/jsx.js.map +0 -1
  272. package/dist/generated/registry.d.ts +0 -4
  273. package/dist/generated/registry.d.ts.map +0 -1
  274. package/dist/generated/registry.js +0 -14
  275. package/dist/generated/registry.js.map +0 -1
  276. package/dist/host-config.d.ts +0 -24
  277. package/dist/host-config.d.ts.map +0 -1
  278. package/dist/host-config.js +0 -172
  279. package/dist/host-config.js.map +0 -1
  280. package/dist/jsx.d.ts +0 -1272
  281. package/dist/jsx.d.ts.map +0 -1
  282. package/dist/jsx.js +0 -331
  283. package/dist/jsx.js.map +0 -1
  284. package/dist/metadata.d.ts +0 -5
  285. package/dist/metadata.d.ts.map +0 -1
  286. package/dist/metadata.js +0 -33
  287. package/dist/metadata.js.map +0 -1
  288. package/dist/node.d.ts +0 -25
  289. package/dist/node.d.ts.map +0 -1
  290. package/dist/node.js +0 -85
  291. package/dist/node.js.map +0 -1
  292. package/dist/nodes/adjustable.d.ts +0 -11
  293. package/dist/nodes/adjustable.d.ts.map +0 -1
  294. package/dist/nodes/adjustable.js +0 -46
  295. package/dist/nodes/adjustable.js.map +0 -1
  296. package/dist/nodes/alert-dialog-response.d.ts +0 -15
  297. package/dist/nodes/alert-dialog-response.d.ts.map +0 -1
  298. package/dist/nodes/alert-dialog-response.js +0 -61
  299. package/dist/nodes/alert-dialog-response.js.map +0 -1
  300. package/dist/nodes/animation.d.ts +0 -38
  301. package/dist/nodes/animation.d.ts.map +0 -1
  302. package/dist/nodes/animation.js +0 -310
  303. package/dist/nodes/animation.js.map +0 -1
  304. package/dist/nodes/application.d.ts +0 -12
  305. package/dist/nodes/application.d.ts.map +0 -1
  306. package/dist/nodes/application.js +0 -51
  307. package/dist/nodes/application.js.map +0 -1
  308. package/dist/nodes/calendar.d.ts +0 -18
  309. package/dist/nodes/calendar.d.ts.map +0 -1
  310. package/dist/nodes/calendar.js +0 -28
  311. package/dist/nodes/calendar.js.map +0 -1
  312. package/dist/nodes/color-dialog-button.d.ts +0 -15
  313. package/dist/nodes/color-dialog-button.d.ts.map +0 -1
  314. package/dist/nodes/color-dialog-button.js +0 -43
  315. package/dist/nodes/color-dialog-button.js.map +0 -1
  316. package/dist/nodes/column-view-column.d.ts +0 -36
  317. package/dist/nodes/column-view-column.d.ts.map +0 -1
  318. package/dist/nodes/column-view-column.js +0 -168
  319. package/dist/nodes/column-view-column.js.map +0 -1
  320. package/dist/nodes/container-slot.d.ts +0 -16
  321. package/dist/nodes/container-slot.d.ts.map +0 -1
  322. package/dist/nodes/container-slot.js +0 -69
  323. package/dist/nodes/container-slot.js.map +0 -1
  324. package/dist/nodes/dialog.d.ts +0 -10
  325. package/dist/nodes/dialog.d.ts.map +0 -1
  326. package/dist/nodes/dialog.js +0 -20
  327. package/dist/nodes/dialog.js.map +0 -1
  328. package/dist/nodes/drawing-area.d.ts +0 -17
  329. package/dist/nodes/drawing-area.d.ts.map +0 -1
  330. package/dist/nodes/drawing-area.js +0 -42
  331. package/dist/nodes/drawing-area.js.map +0 -1
  332. package/dist/nodes/event-controller.d.ts +0 -15
  333. package/dist/nodes/event-controller.d.ts.map +0 -1
  334. package/dist/nodes/event-controller.js +0 -77
  335. package/dist/nodes/event-controller.js.map +0 -1
  336. package/dist/nodes/fixed-child.d.ts +0 -18
  337. package/dist/nodes/fixed-child.d.ts.map +0 -1
  338. package/dist/nodes/fixed-child.js +0 -86
  339. package/dist/nodes/fixed-child.js.map +0 -1
  340. package/dist/nodes/font-dialog-button.d.ts +0 -15
  341. package/dist/nodes/font-dialog-button.d.ts.map +0 -1
  342. package/dist/nodes/font-dialog-button.js +0 -76
  343. package/dist/nodes/font-dialog-button.js.map +0 -1
  344. package/dist/nodes/grid-child.d.ts +0 -18
  345. package/dist/nodes/grid-child.d.ts.map +0 -1
  346. package/dist/nodes/grid-child.js +0 -81
  347. package/dist/nodes/grid-child.js.map +0 -1
  348. package/dist/nodes/internal/accessible.d.ts +0 -5
  349. package/dist/nodes/internal/accessible.d.ts.map +0 -1
  350. package/dist/nodes/internal/accessible.js +0 -119
  351. package/dist/nodes/internal/accessible.js.map +0 -1
  352. package/dist/nodes/internal/bound-item.d.ts +0 -4
  353. package/dist/nodes/internal/bound-item.d.ts.map +0 -1
  354. package/dist/nodes/internal/bound-item.js +0 -2
  355. package/dist/nodes/internal/bound-item.js.map +0 -1
  356. package/dist/nodes/internal/construct.d.ts +0 -3
  357. package/dist/nodes/internal/construct.d.ts.map +0 -1
  358. package/dist/nodes/internal/construct.js +0 -44
  359. package/dist/nodes/internal/construct.js.map +0 -1
  360. package/dist/nodes/internal/predicates.d.ts +0 -51
  361. package/dist/nodes/internal/predicates.d.ts.map +0 -1
  362. package/dist/nodes/internal/predicates.js +0 -36
  363. package/dist/nodes/internal/predicates.js.map +0 -1
  364. package/dist/nodes/internal/props.d.ts +0 -6
  365. package/dist/nodes/internal/props.d.ts.map +0 -1
  366. package/dist/nodes/internal/props.js +0 -43
  367. package/dist/nodes/internal/props.js.map +0 -1
  368. package/dist/nodes/internal/signal-store.d.ts +0 -22
  369. package/dist/nodes/internal/signal-store.d.ts.map +0 -1
  370. package/dist/nodes/internal/signal-store.js +0 -98
  371. package/dist/nodes/internal/signal-store.js.map +0 -1
  372. package/dist/nodes/internal/text-buffer-controller.d.ts +0 -40
  373. package/dist/nodes/internal/text-buffer-controller.d.ts.map +0 -1
  374. package/dist/nodes/internal/text-buffer-controller.js +0 -327
  375. package/dist/nodes/internal/text-buffer-controller.js.map +0 -1
  376. package/dist/nodes/internal/widget.d.ts +0 -8
  377. package/dist/nodes/internal/widget.d.ts.map +0 -1
  378. package/dist/nodes/internal/widget.js +0 -72
  379. package/dist/nodes/internal/widget.js.map +0 -1
  380. package/dist/nodes/level-bar.d.ts +0 -12
  381. package/dist/nodes/level-bar.d.ts.map +0 -1
  382. package/dist/nodes/level-bar.js +0 -24
  383. package/dist/nodes/level-bar.js.map +0 -1
  384. package/dist/nodes/list-item-node.d.ts +0 -12
  385. package/dist/nodes/list-item-node.d.ts.map +0 -1
  386. package/dist/nodes/list-item-node.js +0 -23
  387. package/dist/nodes/list-item-node.js.map +0 -1
  388. package/dist/nodes/list.d.ts +0 -100
  389. package/dist/nodes/list.d.ts.map +0 -1
  390. package/dist/nodes/list.js +0 -950
  391. package/dist/nodes/list.js.map +0 -1
  392. package/dist/nodes/menu.d.ts +0 -7
  393. package/dist/nodes/menu.d.ts.map +0 -1
  394. package/dist/nodes/menu.js +0 -20
  395. package/dist/nodes/menu.js.map +0 -1
  396. package/dist/nodes/models/menu.d.ts +0 -47
  397. package/dist/nodes/models/menu.d.ts.map +0 -1
  398. package/dist/nodes/models/menu.js +0 -240
  399. package/dist/nodes/models/menu.js.map +0 -1
  400. package/dist/nodes/navigation-page.d.ts +0 -19
  401. package/dist/nodes/navigation-page.d.ts.map +0 -1
  402. package/dist/nodes/navigation-page.js +0 -129
  403. package/dist/nodes/navigation-page.js.map +0 -1
  404. package/dist/nodes/navigation-view.d.ts +0 -19
  405. package/dist/nodes/navigation-view.d.ts.map +0 -1
  406. package/dist/nodes/navigation-view.js +0 -51
  407. package/dist/nodes/navigation-view.js.map +0 -1
  408. package/dist/nodes/notebook-page-tab.d.ts +0 -15
  409. package/dist/nodes/notebook-page-tab.d.ts.map +0 -1
  410. package/dist/nodes/notebook-page-tab.js +0 -40
  411. package/dist/nodes/notebook-page-tab.js.map +0 -1
  412. package/dist/nodes/notebook-page.d.ts +0 -29
  413. package/dist/nodes/notebook-page.d.ts.map +0 -1
  414. package/dist/nodes/notebook-page.js +0 -151
  415. package/dist/nodes/notebook-page.js.map +0 -1
  416. package/dist/nodes/notebook.d.ts +0 -16
  417. package/dist/nodes/notebook.d.ts.map +0 -1
  418. package/dist/nodes/notebook.js +0 -31
  419. package/dist/nodes/notebook.js.map +0 -1
  420. package/dist/nodes/overlay-child.d.ts +0 -18
  421. package/dist/nodes/overlay-child.d.ts.map +0 -1
  422. package/dist/nodes/overlay-child.js +0 -88
  423. package/dist/nodes/overlay-child.js.map +0 -1
  424. package/dist/nodes/popover-menu.d.ts +0 -19
  425. package/dist/nodes/popover-menu.d.ts.map +0 -1
  426. package/dist/nodes/popover-menu.js +0 -54
  427. package/dist/nodes/popover-menu.js.map +0 -1
  428. package/dist/nodes/scale.d.ts +0 -10
  429. package/dist/nodes/scale.d.ts.map +0 -1
  430. package/dist/nodes/scale.js +0 -19
  431. package/dist/nodes/scale.js.map +0 -1
  432. package/dist/nodes/scrolled-window.d.ts +0 -11
  433. package/dist/nodes/scrolled-window.d.ts.map +0 -1
  434. package/dist/nodes/scrolled-window.js +0 -18
  435. package/dist/nodes/scrolled-window.js.map +0 -1
  436. package/dist/nodes/search-bar.d.ts +0 -11
  437. package/dist/nodes/search-bar.d.ts.map +0 -1
  438. package/dist/nodes/search-bar.js +0 -16
  439. package/dist/nodes/search-bar.js.map +0 -1
  440. package/dist/nodes/shortcut.d.ts +0 -19
  441. package/dist/nodes/shortcut.d.ts.map +0 -1
  442. package/dist/nodes/shortcut.js +0 -72
  443. package/dist/nodes/shortcut.js.map +0 -1
  444. package/dist/nodes/slot.d.ts +0 -21
  445. package/dist/nodes/slot.d.ts.map +0 -1
  446. package/dist/nodes/slot.js +0 -102
  447. package/dist/nodes/slot.js.map +0 -1
  448. package/dist/nodes/source-view.d.ts +0 -18
  449. package/dist/nodes/source-view.d.ts.map +0 -1
  450. package/dist/nodes/source-view.js +0 -94
  451. package/dist/nodes/source-view.js.map +0 -1
  452. package/dist/nodes/stack-page.d.ts +0 -22
  453. package/dist/nodes/stack-page.d.ts.map +0 -1
  454. package/dist/nodes/stack-page.js +0 -140
  455. package/dist/nodes/stack-page.js.map +0 -1
  456. package/dist/nodes/stack.d.ts +0 -13
  457. package/dist/nodes/stack.d.ts.map +0 -1
  458. package/dist/nodes/stack.js +0 -21
  459. package/dist/nodes/stack.js.map +0 -1
  460. package/dist/nodes/text-anchor.d.ts +0 -23
  461. package/dist/nodes/text-anchor.d.ts.map +0 -1
  462. package/dist/nodes/text-anchor.js +0 -64
  463. package/dist/nodes/text-anchor.js.map +0 -1
  464. package/dist/nodes/text-content.d.ts +0 -12
  465. package/dist/nodes/text-content.d.ts.map +0 -1
  466. package/dist/nodes/text-content.js +0 -2
  467. package/dist/nodes/text-content.js.map +0 -1
  468. package/dist/nodes/text-paintable.d.ts +0 -19
  469. package/dist/nodes/text-paintable.d.ts.map +0 -1
  470. package/dist/nodes/text-paintable.js +0 -42
  471. package/dist/nodes/text-paintable.js.map +0 -1
  472. package/dist/nodes/text-segment.d.ts +0 -18
  473. package/dist/nodes/text-segment.d.ts.map +0 -1
  474. package/dist/nodes/text-segment.js +0 -38
  475. package/dist/nodes/text-segment.js.map +0 -1
  476. package/dist/nodes/text-tag.d.ts +0 -38
  477. package/dist/nodes/text-tag.d.ts.map +0 -1
  478. package/dist/nodes/text-tag.js +0 -241
  479. package/dist/nodes/text-tag.js.map +0 -1
  480. package/dist/nodes/text-view.d.ts +0 -29
  481. package/dist/nodes/text-view.d.ts.map +0 -1
  482. package/dist/nodes/text-view.js +0 -80
  483. package/dist/nodes/text-view.js.map +0 -1
  484. package/dist/nodes/toggle-group.d.ts +0 -11
  485. package/dist/nodes/toggle-group.d.ts.map +0 -1
  486. package/dist/nodes/toggle-group.js +0 -16
  487. package/dist/nodes/toggle-group.js.map +0 -1
  488. package/dist/nodes/toggle.d.ts +0 -16
  489. package/dist/nodes/toggle.d.ts.map +0 -1
  490. package/dist/nodes/toggle.js +0 -61
  491. package/dist/nodes/toggle.js.map +0 -1
  492. package/dist/nodes/virtual.d.ts +0 -7
  493. package/dist/nodes/virtual.d.ts.map +0 -1
  494. package/dist/nodes/virtual.js +0 -9
  495. package/dist/nodes/virtual.js.map +0 -1
  496. package/dist/nodes/web-view.d.ts +0 -11
  497. package/dist/nodes/web-view.d.ts.map +0 -1
  498. package/dist/nodes/web-view.js +0 -16
  499. package/dist/nodes/web-view.js.map +0 -1
  500. package/dist/nodes/widget.d.ts +0 -26
  501. package/dist/nodes/widget.d.ts.map +0 -1
  502. package/dist/nodes/widget.js +0 -315
  503. package/dist/nodes/widget.js.map +0 -1
  504. package/dist/nodes/window.d.ts +0 -31
  505. package/dist/nodes/window.d.ts.map +0 -1
  506. package/dist/nodes/window.js +0 -122
  507. package/dist/nodes/window.js.map +0 -1
  508. package/dist/portal.d.ts +0 -29
  509. package/dist/portal.d.ts.map +0 -1
  510. package/dist/portal.js +0 -35
  511. package/dist/portal.js.map +0 -1
  512. package/dist/reconciler.d.ts +0 -34
  513. package/dist/reconciler.d.ts.map +0 -1
  514. package/dist/reconciler.js +0 -48
  515. package/dist/reconciler.js.map +0 -1
  516. package/dist/registry.d.ts +0 -18
  517. package/dist/registry.d.ts.map +0 -1
  518. package/dist/registry.js +0 -96
  519. package/dist/registry.js.map +0 -1
  520. package/dist/render.d.ts +0 -117
  521. package/dist/render.d.ts.map +0 -1
  522. package/dist/render.js +0 -159
  523. package/dist/render.js.map +0 -1
  524. package/dist/types.d.ts +0 -5
  525. package/dist/types.d.ts.map +0 -1
  526. package/dist/types.js.map +0 -1
  527. package/src/components/list.tsx +0 -83
  528. package/src/errors.ts +0 -52
  529. package/src/factory.ts +0 -62
  530. package/src/generated/internal.ts +0 -5644
  531. package/src/generated/jsx.ts +0 -19900
  532. package/src/generated/registry.ts +0 -16
  533. package/src/host-config.ts +0 -219
  534. package/src/jsx.ts +0 -1355
  535. package/src/metadata.ts +0 -43
  536. package/src/node.ts +0 -107
  537. package/src/nodes/adjustable.ts +0 -68
  538. package/src/nodes/alert-dialog-response.ts +0 -78
  539. package/src/nodes/animation.ts +0 -402
  540. package/src/nodes/application.ts +0 -61
  541. package/src/nodes/calendar.ts +0 -42
  542. package/src/nodes/color-dialog-button.ts +0 -69
  543. package/src/nodes/column-view-column.ts +0 -189
  544. package/src/nodes/container-slot.ts +0 -87
  545. package/src/nodes/dialog.ts +0 -25
  546. package/src/nodes/drawing-area.ts +0 -62
  547. package/src/nodes/event-controller.ts +0 -100
  548. package/src/nodes/fixed-child.ts +0 -109
  549. package/src/nodes/font-dialog-button.ts +0 -107
  550. package/src/nodes/grid-child.ts +0 -103
  551. package/src/nodes/internal/accessible.ts +0 -155
  552. package/src/nodes/internal/bound-item.ts +0 -4
  553. package/src/nodes/internal/construct.ts +0 -60
  554. package/src/nodes/internal/predicates.ts +0 -80
  555. package/src/nodes/internal/props.ts +0 -51
  556. package/src/nodes/internal/signal-store.ts +0 -141
  557. package/src/nodes/internal/text-buffer-controller.ts +0 -417
  558. package/src/nodes/internal/widget.ts +0 -80
  559. package/src/nodes/level-bar.ts +0 -36
  560. package/src/nodes/list-item-node.ts +0 -29
  561. package/src/nodes/list.ts +0 -1082
  562. package/src/nodes/menu.ts +0 -27
  563. package/src/nodes/models/menu.ts +0 -314
  564. package/src/nodes/navigation-page.ts +0 -154
  565. package/src/nodes/navigation-view.ts +0 -66
  566. package/src/nodes/notebook-page-tab.ts +0 -55
  567. package/src/nodes/notebook-page.ts +0 -189
  568. package/src/nodes/notebook.ts +0 -42
  569. package/src/nodes/overlay-child.ts +0 -109
  570. package/src/nodes/popover-menu.ts +0 -67
  571. package/src/nodes/scale.ts +0 -28
  572. package/src/nodes/scrolled-window.ts +0 -23
  573. package/src/nodes/search-bar.ts +0 -27
  574. package/src/nodes/shortcut.ts +0 -86
  575. package/src/nodes/slot.ts +0 -138
  576. package/src/nodes/source-view.ts +0 -130
  577. package/src/nodes/stack-page.ts +0 -170
  578. package/src/nodes/stack.ts +0 -35
  579. package/src/nodes/text-anchor.ts +0 -79
  580. package/src/nodes/text-content.ts +0 -14
  581. package/src/nodes/text-paintable.ts +0 -51
  582. package/src/nodes/text-segment.ts +0 -55
  583. package/src/nodes/text-tag.ts +0 -293
  584. package/src/nodes/text-view.ts +0 -100
  585. package/src/nodes/toggle-group.ts +0 -27
  586. package/src/nodes/toggle.ts +0 -72
  587. package/src/nodes/virtual.ts +0 -16
  588. package/src/nodes/web-view.ts +0 -22
  589. package/src/nodes/widget.ts +0 -376
  590. package/src/nodes/window.ts +0 -172
  591. package/src/portal.ts +0 -37
  592. package/src/reconciler.ts +0 -52
  593. package/src/registry.ts +0 -117
  594. package/src/render.tsx +0 -192
  595. package/src/types.ts +0 -12
  596. /package/dist/{types.js → reconciler/types.js} +0 -0
@@ -1,950 +0,0 @@
1
- import { getNativeId } from "@gtkx/ffi";
2
- import * as Adw from "@gtkx/ffi/adw";
3
- import * as Gio from "@gtkx/ffi/gio";
4
- import * as Gtk from "@gtkx/ffi/gtk";
5
- import { ColumnViewColumnNode } from "./column-view-column.js";
6
- import { ContainerSlotNode } from "./container-slot.js";
7
- import { EventControllerNode } from "./event-controller.js";
8
- import { filterProps, hasChanged } from "./internal/props.js";
9
- import { SlotNode } from "./slot.js";
10
- import { WidgetNode } from "./widget.js";
11
- const OWN_PROPS = [
12
- "items",
13
- "renderItem",
14
- "renderListItem",
15
- "renderHeader",
16
- "renderCell",
17
- "autoexpand",
18
- "selected",
19
- "onSelectionChanged",
20
- "selectionMode",
21
- "selectedId",
22
- "sortColumn",
23
- "sortOrder",
24
- "onSortChanged",
25
- "estimatedItemHeight",
26
- "estimatedItemWidth",
27
- "estimatedRowHeight",
28
- "__boundItemsRef",
29
- "__rerender",
30
- "__headerBoundItemsRef",
31
- ];
32
- const UNBOUND_POSITION = -1;
33
- function resizeStringList(model, newSize) {
34
- const oldSize = model.getNItems();
35
- if (newSize > oldSize) {
36
- model.splice(oldSize, 0, new Array(newSize - oldSize).fill(""));
37
- }
38
- else if (newSize < oldSize) {
39
- model.splice(newSize, oldSize - newSize, []);
40
- }
41
- }
42
- export class ListNode extends WidgetNode {
43
- model = null;
44
- selectionModel = null;
45
- treeModel = null;
46
- factory = null;
47
- headerFactory = null;
48
- listFactory = null;
49
- containers = new Map();
50
- containerKeys = new Map();
51
- headerContainers = new Map();
52
- headerContainerKeys = new Map();
53
- listContainers = new Map();
54
- listContainerKeys = new Map();
55
- treeExpanders = new Map();
56
- disposed = false;
57
- boundItemsUpdateScheduled = false;
58
- syncScheduled = false;
59
- sectionModels = [];
60
- sectionStore = null;
61
- flattenModel = null;
62
- treeChildModels = new Map();
63
- queriedLeaves = new Set();
64
- rootItemIds = [];
65
- isValidChild(child) {
66
- return (child instanceof ColumnViewColumnNode ||
67
- child instanceof EventControllerNode ||
68
- child instanceof SlotNode ||
69
- child instanceof ContainerSlotNode);
70
- }
71
- appendChild(child) {
72
- const isMove = child instanceof ColumnViewColumnNode && this.children.includes(child);
73
- super.appendChild(child);
74
- if (child instanceof ColumnViewColumnNode) {
75
- const columnView = this.container;
76
- if (isMove) {
77
- columnView.removeColumn(child.getColumn());
78
- }
79
- else {
80
- child.installActionGroup(columnView);
81
- }
82
- columnView.appendColumn(child.getColumn());
83
- }
84
- }
85
- removeChild(child) {
86
- if (child instanceof ColumnViewColumnNode) {
87
- const columnView = this.container;
88
- columnView.removeColumn(child.getColumn());
89
- child.uninstallActionGroup(columnView);
90
- }
91
- super.removeChild(child);
92
- }
93
- insertBefore(child, before) {
94
- const isMove = child instanceof ColumnViewColumnNode && this.children.includes(child);
95
- super.insertBefore(child, before);
96
- if (child instanceof ColumnViewColumnNode) {
97
- const columnView = this.container;
98
- if (isMove) {
99
- columnView.removeColumn(child.getColumn());
100
- }
101
- else {
102
- child.installActionGroup(columnView);
103
- }
104
- const position = this.getColumnPosition(child);
105
- columnView.insertColumn(position, child.getColumn());
106
- }
107
- }
108
- finalizeInitialChildren(props) {
109
- this.commitUpdate(null, props);
110
- this.setupModel();
111
- this.setupFactory();
112
- if (this.props.renderHeader && !this.isDropDown()) {
113
- this.setupHeaderFactory();
114
- }
115
- this.setupSelectionModel(props);
116
- this.assignModelToWidget();
117
- this.assignFactoryToWidget();
118
- this.syncModel();
119
- return true;
120
- }
121
- commitUpdate(oldProps, newProps) {
122
- super.commitUpdate(oldProps ? filterProps(oldProps, OWN_PROPS) : null, filterProps(newProps, OWN_PROPS));
123
- this.props = newProps;
124
- if (oldProps === null)
125
- return;
126
- this.applyOwnProps(oldProps, newProps);
127
- }
128
- commitMount() {
129
- this.connectSelectionSignal();
130
- this.connectSortSignal();
131
- this.applySelection(this.props.selected ?? null);
132
- this.applySelectedId(this.props.selectedId ?? null);
133
- }
134
- detachDeletedInstance() {
135
- this.disposed = true;
136
- this.treeChildModels.clear();
137
- this.queriedLeaves.clear();
138
- this.treeExpanders.clear();
139
- this.rootItemIds = [];
140
- super.detachDeletedInstance();
141
- }
142
- getItems() {
143
- return this.props.items ?? [];
144
- }
145
- collectFlatItems() {
146
- const items = this.getItems();
147
- const flat = [];
148
- for (const item of items) {
149
- if (item.section && item.children) {
150
- for (const child of item.children) {
151
- flat.push(child);
152
- }
153
- }
154
- else {
155
- flat.push(item);
156
- }
157
- }
158
- return flat;
159
- }
160
- collectSections() {
161
- const items = this.getItems();
162
- const sections = [];
163
- for (const item of items) {
164
- if (item.section) {
165
- sections.push(item);
166
- }
167
- }
168
- return sections;
169
- }
170
- collectRootItems() {
171
- return this.getItems().filter((item) => !item.section);
172
- }
173
- isDropDown() {
174
- return this.container instanceof Gtk.DropDown || this.container instanceof Adw.ComboRow;
175
- }
176
- isColumnView() {
177
- return this.container instanceof Gtk.ColumnView;
178
- }
179
- detectMode() {
180
- const items = this.getItems();
181
- for (const item of items) {
182
- if (item.section)
183
- return "sections";
184
- if (item.children && item.children.length > 0)
185
- return "tree";
186
- }
187
- return "flat";
188
- }
189
- hasSections() {
190
- return this.getItems().some((item) => item.section);
191
- }
192
- isTreeMode() {
193
- const items = this.getItems();
194
- for (const item of items) {
195
- if (!item.section && item.children && item.children.length > 0)
196
- return true;
197
- }
198
- return false;
199
- }
200
- setupModel() {
201
- this.model = new Gtk.StringList();
202
- }
203
- setupFactory() {
204
- if (this.isColumnView())
205
- return;
206
- this.factory = new Gtk.SignalListItemFactory();
207
- const isTree = this.isTreeMode();
208
- this.factory.connect("setup", (_self, obj) => {
209
- const listItem = obj;
210
- if (isTree) {
211
- const expander = new Gtk.TreeExpander();
212
- listItem.setChild(expander);
213
- this.containers.set(expander, UNBOUND_POSITION);
214
- this.containerKeys.set(expander, String(getNativeId(expander.handle)));
215
- this.treeExpanders.set(listItem, expander);
216
- }
217
- else {
218
- const { width, height } = this.getEstimatedItemSize();
219
- if (width !== -1 || height !== -1) {
220
- const placeholder = new Gtk.Box();
221
- placeholder.setSizeRequest(width, height);
222
- listItem.setChild(placeholder);
223
- }
224
- this.containers.set(listItem, UNBOUND_POSITION);
225
- this.containerKeys.set(listItem, String(getNativeId(listItem.handle)));
226
- }
227
- });
228
- this.factory.connect("bind", (_self, obj) => {
229
- if (this.disposed)
230
- return;
231
- const listItem = obj;
232
- const position = listItem.getPosition();
233
- if (isTree) {
234
- const expander = this.treeExpanders.get(listItem);
235
- const row = listItem.getItem();
236
- expander.setListRow(row);
237
- this.applyEstimatedItemSize(expander);
238
- const treeItem = this.resolveTreeItem(row);
239
- if (treeItem) {
240
- this.applyTreeExpanderProps(expander, treeItem);
241
- }
242
- this.containers.set(expander, position);
243
- }
244
- else {
245
- this.containers.set(listItem, position);
246
- }
247
- this.scheduleBoundItemsUpdate();
248
- });
249
- this.factory.connect("unbind", (_self, obj) => {
250
- if (this.disposed)
251
- return;
252
- const listItem = obj;
253
- if (isTree) {
254
- const expander = this.treeExpanders.get(listItem);
255
- this.containers.set(expander, UNBOUND_POSITION);
256
- expander.setListRow(null);
257
- }
258
- else {
259
- this.containers.set(listItem, UNBOUND_POSITION);
260
- }
261
- this.scheduleBoundItemsUpdate();
262
- });
263
- this.factory.connect("teardown", (_self, obj) => {
264
- if (this.disposed)
265
- return;
266
- const listItem = obj;
267
- if (isTree) {
268
- const expander = this.treeExpanders.get(listItem);
269
- if (expander) {
270
- this.containers.delete(expander);
271
- this.containerKeys.delete(expander);
272
- }
273
- this.treeExpanders.delete(listItem);
274
- }
275
- else {
276
- this.containers.delete(listItem);
277
- this.containerKeys.delete(listItem);
278
- }
279
- listItem.setChild(null);
280
- });
281
- if (this.props.renderListItem && this.isDropDown()) {
282
- this.setupListFactory();
283
- }
284
- }
285
- setupListFactory() {
286
- this.listFactory = new Gtk.SignalListItemFactory();
287
- this.listFactory.connect("setup", (_self, obj) => {
288
- const listItem = obj;
289
- this.listContainers.set(listItem, UNBOUND_POSITION);
290
- this.listContainerKeys.set(listItem, String(getNativeId(listItem.handle)));
291
- });
292
- this.listFactory.connect("bind", (_self, obj) => {
293
- const listItem = obj;
294
- this.listContainers.set(listItem, listItem.getPosition());
295
- this.scheduleBoundItemsUpdate();
296
- });
297
- this.listFactory.connect("unbind", (_self, obj) => {
298
- const listItem = obj;
299
- this.listContainers.set(listItem, UNBOUND_POSITION);
300
- this.scheduleBoundItemsUpdate();
301
- });
302
- this.listFactory.connect("teardown", (_self, obj) => {
303
- const listItem = obj;
304
- this.listContainers.delete(listItem);
305
- this.listContainerKeys.delete(listItem);
306
- listItem.setChild(null);
307
- });
308
- }
309
- setupHeaderFactory() {
310
- this.headerFactory = new Gtk.SignalListItemFactory();
311
- this.headerFactory.connect("setup", (_self, obj) => {
312
- const listHeader = obj;
313
- this.headerContainers.set(listHeader, UNBOUND_POSITION);
314
- this.headerContainerKeys.set(listHeader, String(getNativeId(listHeader.handle)));
315
- });
316
- this.headerFactory.connect("bind", (_self, obj) => {
317
- const listHeader = obj;
318
- this.headerContainers.set(listHeader, listHeader.getStart());
319
- this.scheduleBoundItemsUpdate();
320
- });
321
- this.headerFactory.connect("unbind", (_self, obj) => {
322
- const listHeader = obj;
323
- this.headerContainers.set(listHeader, UNBOUND_POSITION);
324
- this.scheduleBoundItemsUpdate();
325
- });
326
- this.headerFactory.connect("teardown", (_self, obj) => {
327
- const listHeader = obj;
328
- this.headerContainers.delete(listHeader);
329
- this.headerContainerKeys.delete(listHeader);
330
- listHeader.setChild(null);
331
- });
332
- }
333
- setupSelectionModel(props) {
334
- const baseModel = this.getBaseModel();
335
- const selectionMode = props.selectionMode ?? (this.isDropDown() ? null : Gtk.SelectionMode.SINGLE);
336
- if (this.isDropDown()) {
337
- this.selectionModel = null;
338
- return;
339
- }
340
- if (selectionMode === Gtk.SelectionMode.MULTIPLE) {
341
- this.selectionModel = new Gtk.MultiSelection(baseModel);
342
- }
343
- else if (selectionMode === Gtk.SelectionMode.NONE) {
344
- this.selectionModel = new Gtk.NoSelection(baseModel);
345
- }
346
- else {
347
- const sel = new Gtk.SingleSelection(baseModel);
348
- sel.setAutoselect(false);
349
- sel.setCanUnselect(true);
350
- this.selectionModel = sel;
351
- }
352
- }
353
- getBaseModel() {
354
- if (this.treeModel)
355
- return this.treeModel;
356
- if (this.flattenModel)
357
- return this.flattenModel;
358
- return this.model;
359
- }
360
- assignModelToWidget() {
361
- const widget = this.container;
362
- if (this.isDropDown()) {
363
- const dropDownModel = this.hasSections()
364
- ? this.flattenModel
365
- : this.model;
366
- if (widget instanceof Gtk.DropDown) {
367
- widget.setModel(dropDownModel);
368
- }
369
- else if (widget instanceof Adw.ComboRow) {
370
- widget.setModel(dropDownModel);
371
- }
372
- return;
373
- }
374
- if (!this.selectionModel)
375
- return;
376
- if (widget instanceof Gtk.ListView) {
377
- widget.setModel(this.selectionModel);
378
- }
379
- else if (widget instanceof Gtk.GridView) {
380
- widget.setModel(this.selectionModel);
381
- }
382
- else if (widget instanceof Gtk.ColumnView) {
383
- widget.setModel(this.selectionModel);
384
- }
385
- }
386
- assignFactoryToWidget() {
387
- const widget = this.container;
388
- if (widget instanceof Gtk.ListView) {
389
- widget.setFactory(this.factory);
390
- if (this.headerFactory) {
391
- widget.setHeaderFactory(this.headerFactory);
392
- }
393
- }
394
- else if (widget instanceof Gtk.ColumnView) {
395
- if (this.headerFactory) {
396
- widget.setHeaderFactory(this.headerFactory);
397
- }
398
- }
399
- else if (widget instanceof Gtk.GridView) {
400
- widget.setFactory(this.factory);
401
- }
402
- else if (widget instanceof Gtk.DropDown) {
403
- widget.setFactory(this.factory);
404
- if (this.listFactory) {
405
- widget.setListFactory(this.listFactory);
406
- }
407
- if (this.headerFactory) {
408
- widget.setHeaderFactory(this.headerFactory);
409
- }
410
- }
411
- else if (widget instanceof Adw.ComboRow) {
412
- widget.setFactory(this.factory);
413
- if (this.listFactory) {
414
- widget.setListFactory(this.listFactory);
415
- }
416
- if (this.headerFactory) {
417
- widget.setHeaderFactory(this.headerFactory);
418
- }
419
- }
420
- }
421
- syncModel() {
422
- if (!this.model)
423
- return;
424
- const mode = this.detectMode();
425
- if (mode === "sections") {
426
- this.syncSectionModel();
427
- return;
428
- }
429
- if (mode === "tree") {
430
- this.syncTreeModel();
431
- return;
432
- }
433
- const flatItems = this.collectFlatItems();
434
- resizeStringList(this.model, flatItems.length);
435
- this.scheduleBoundItemsUpdate();
436
- }
437
- syncTreeModel() {
438
- if (!this.model)
439
- return;
440
- const rootItems = this.collectRootItems();
441
- const newSize = rootItems.length;
442
- if (!this.treeModel) {
443
- this.model.splice(0, this.model.getNItems(), new Array(newSize).fill(""));
444
- this.rootItemIds = rootItems.map((item) => item.id);
445
- this.treeModel = new Gtk.TreeListModel(this.model, false, this.props.autoexpand ?? false, (_item) => this.createChildModel(_item));
446
- if (this.selectionModel) {
447
- if (this.selectionModel instanceof Gtk.SingleSelection) {
448
- this.selectionModel.setModel(this.treeModel);
449
- }
450
- else if (this.selectionModel instanceof Gtk.MultiSelection) {
451
- this.selectionModel.setModel(this.treeModel);
452
- }
453
- else if (this.selectionModel instanceof Gtk.NoSelection) {
454
- this.selectionModel.setModel(this.treeModel);
455
- }
456
- }
457
- this.scheduleBoundItemsUpdate();
458
- return;
459
- }
460
- const oldSize = this.model.getNItems();
461
- const overlap = Math.min(oldSize, newSize);
462
- const transitionPositions = [];
463
- for (let i = 0; i < overlap; i++) {
464
- const obj = this.model.getObject(i);
465
- if (!obj)
466
- continue;
467
- if (this.rootItemIds[i] !== rootItems[i]?.id) {
468
- this.treeChildModels.delete(obj.handle);
469
- this.queriedLeaves.delete(obj.handle);
470
- transitionPositions.push(i);
471
- continue;
472
- }
473
- const cachedChildModel = this.treeChildModels.get(obj.handle);
474
- const newChildCount = rootItems[i]?.children?.length ?? 0;
475
- if (cachedChildModel && newChildCount > 0) {
476
- resizeStringList(cachedChildModel, newChildCount);
477
- }
478
- else if (cachedChildModel && newChildCount === 0) {
479
- this.treeChildModels.delete(obj.handle);
480
- transitionPositions.push(i);
481
- }
482
- else if (!cachedChildModel && newChildCount > 0) {
483
- transitionPositions.push(i);
484
- }
485
- }
486
- for (let i = overlap; i < oldSize; i++) {
487
- const obj = this.model.getObject(i);
488
- if (obj) {
489
- this.treeChildModels.delete(obj.handle);
490
- this.queriedLeaves.delete(obj.handle);
491
- }
492
- }
493
- resizeStringList(this.model, newSize);
494
- for (const pos of transitionPositions) {
495
- if (pos < newSize) {
496
- const oldObj = this.model.getObject(pos);
497
- if (oldObj) {
498
- this.queriedLeaves.delete(oldObj.handle);
499
- this.treeChildModels.delete(oldObj.handle);
500
- }
501
- this.model.splice(pos, 1, [""]);
502
- }
503
- }
504
- this.rootItemIds = rootItems.map((item) => item.id);
505
- this.scheduleBoundItemsUpdate();
506
- }
507
- createChildModel(_item) {
508
- const rootItems = this.collectRootItems();
509
- const position = this.findStringObjectPosition(_item);
510
- if (position === null || position >= rootItems.length) {
511
- this.queriedLeaves.add(_item.handle);
512
- return null;
513
- }
514
- const item = rootItems[position];
515
- if (!item?.children || item.children.length === 0) {
516
- this.queriedLeaves.add(_item.handle);
517
- return null;
518
- }
519
- const childModel = new Gtk.StringList();
520
- resizeStringList(childModel, item.children.length);
521
- this.treeChildModels.set(_item.handle, childModel);
522
- this.queriedLeaves.delete(_item.handle);
523
- return childModel;
524
- }
525
- findStringObjectPosition(item) {
526
- if (!this.model)
527
- return null;
528
- const nItems = this.model.getNItems();
529
- for (let i = 0; i < nItems; i++) {
530
- const obj = this.model.getObject(i);
531
- if (obj && obj.handle === item.handle) {
532
- return i;
533
- }
534
- }
535
- return null;
536
- }
537
- syncSectionModel() {
538
- if (!this.model)
539
- return;
540
- const sections = this.collectSections();
541
- if (!this.sectionStore) {
542
- this.sectionStore = new Gio.ListStore(Gtk.StringList.getGType());
543
- this.flattenModel = new Gtk.FlattenListModel(this.sectionStore);
544
- if (this.selectionModel) {
545
- if (this.selectionModel instanceof Gtk.SingleSelection) {
546
- this.selectionModel.setModel(this.flattenModel);
547
- }
548
- else if (this.selectionModel instanceof Gtk.MultiSelection) {
549
- this.selectionModel.setModel(this.flattenModel);
550
- }
551
- else if (this.selectionModel instanceof Gtk.NoSelection) {
552
- this.selectionModel.setModel(this.flattenModel);
553
- }
554
- }
555
- if (this.isDropDown()) {
556
- this.assignModelToWidget();
557
- }
558
- }
559
- while (this.sectionModels.length > sections.length) {
560
- this.sectionModels.pop();
561
- this.sectionStore.remove(this.sectionStore.getNItems() - 1);
562
- }
563
- for (let i = 0; i < sections.length; i++) {
564
- const section = sections[i];
565
- const itemCount = section.children?.length ?? 0;
566
- if (i >= this.sectionModels.length) {
567
- const sectionModel = new Gtk.StringList();
568
- resizeStringList(sectionModel, itemCount);
569
- this.sectionModels.push(sectionModel);
570
- this.sectionStore.append(sectionModel);
571
- }
572
- else {
573
- resizeStringList(this.sectionModels[i], itemCount);
574
- }
575
- }
576
- this.scheduleBoundItemsUpdate();
577
- }
578
- resolveTreeItem(row) {
579
- const rootItems = this.collectRootItems();
580
- const depth = row.getDepth();
581
- if (depth === 0) {
582
- const rootItem = row.getItem();
583
- if (!rootItem)
584
- return null;
585
- const pos = this.findStringObjectPosition(rootItem);
586
- if (pos === null)
587
- return null;
588
- return rootItems[pos] ?? null;
589
- }
590
- const parentRow = row.getParent();
591
- if (!parentRow)
592
- return null;
593
- const parentItem = this.resolveTreeItem(parentRow);
594
- if (!parentItem?.children)
595
- return null;
596
- const childItem = row.getItem();
597
- if (!childItem)
598
- return null;
599
- const childModel = parentRow.getChildren();
600
- if (childModel) {
601
- for (let j = 0; j < childModel.getNItems(); j++) {
602
- const obj = childModel.getObject(j);
603
- if (obj && obj.handle === childItem.handle) {
604
- return parentItem.children[j] ?? null;
605
- }
606
- }
607
- }
608
- return null;
609
- }
610
- applyTreeExpanderProps(expander, item) {
611
- if (item.section)
612
- return;
613
- expander.setIndentForDepth(item.indentForDepth ?? true);
614
- expander.setIndentForIcon(item.indentForIcon ?? true);
615
- expander.setHideExpander(item.hideExpander ?? false);
616
- }
617
- resolveItemIdAtPosition(position) {
618
- if (this.treeModel) {
619
- const row = this.treeModel.getRow(position);
620
- const item = row ? this.resolveTreeItem(row) : null;
621
- return item?.id ?? null;
622
- }
623
- const flatItems = this.collectFlatItems();
624
- return flatItems[position]?.id ?? null;
625
- }
626
- applyOwnProps(oldProps, newProps) {
627
- if (hasChanged(oldProps, newProps, "items")) {
628
- this.scheduleSync();
629
- }
630
- if (hasChanged(oldProps, newProps, "selected")) {
631
- this.applySelection(newProps.selected ?? null);
632
- }
633
- if (hasChanged(oldProps, newProps, "selectedId")) {
634
- this.applySelectedId(newProps.selectedId ?? null);
635
- }
636
- if (hasChanged(oldProps, newProps, "onSelectionChanged")) {
637
- this.connectSelectionSignal();
638
- }
639
- if (hasChanged(oldProps, newProps, "selectionMode")) {
640
- this.rebuildSelectionModel(newProps);
641
- }
642
- if (hasChanged(oldProps, newProps, "renderItem") ||
643
- hasChanged(oldProps, newProps, "renderListItem") ||
644
- hasChanged(oldProps, newProps, "renderHeader")) {
645
- this.scheduleBoundItemsUpdate();
646
- }
647
- if (hasChanged(oldProps, newProps, "autoexpand") && this.treeModel) {
648
- this.treeModel.setAutoexpand(newProps.autoexpand ?? false);
649
- }
650
- if (hasChanged(oldProps, newProps, "onSortChanged")) {
651
- this.connectSortSignal();
652
- }
653
- if (hasChanged(oldProps, newProps, "sortColumn") || hasChanged(oldProps, newProps, "sortOrder")) {
654
- this.applySortColumn(newProps);
655
- }
656
- }
657
- rebuildSelectionModel(props) {
658
- const baseModel = this.getBaseModel();
659
- const selectionMode = props.selectionMode ?? Gtk.SelectionMode.SINGLE;
660
- if (selectionMode === Gtk.SelectionMode.MULTIPLE) {
661
- this.selectionModel = new Gtk.MultiSelection(baseModel);
662
- }
663
- else if (selectionMode === Gtk.SelectionMode.NONE) {
664
- this.selectionModel = new Gtk.NoSelection(baseModel);
665
- }
666
- else {
667
- const sel = new Gtk.SingleSelection(baseModel);
668
- sel.setAutoselect(false);
669
- sel.setCanUnselect(true);
670
- this.selectionModel = sel;
671
- }
672
- this.assignModelToWidget();
673
- this.connectSelectionSignal();
674
- }
675
- applySelection(ids) {
676
- if (!this.selectionModel || this.isDropDown())
677
- return;
678
- if (!ids || ids.length === 0) {
679
- if (this.selectionModel instanceof Gtk.SingleSelection) {
680
- this.selectionModel.setSelected(Gtk.INVALID_LIST_POSITION);
681
- }
682
- else if (this.selectionModel instanceof Gtk.MultiSelection) {
683
- this.selectionModel.unselectAll();
684
- }
685
- return;
686
- }
687
- const idSet = new Set(ids);
688
- const nItems = this.selectionModel.getNItems();
689
- if (this.selectionModel instanceof Gtk.SingleSelection) {
690
- for (let i = 0; i < nItems; i++) {
691
- const id = this.resolveItemIdAtPosition(i);
692
- if (id && idSet.has(id)) {
693
- this.selectionModel.setSelected(i);
694
- return;
695
- }
696
- }
697
- }
698
- else if (this.selectionModel instanceof Gtk.MultiSelection) {
699
- this.selectionModel.unselectAll();
700
- for (let i = 0; i < nItems; i++) {
701
- const id = this.resolveItemIdAtPosition(i);
702
- if (id && idSet.has(id)) {
703
- this.selectionModel.selectItem(i, false);
704
- }
705
- }
706
- }
707
- }
708
- applySelectedId(id) {
709
- if (!this.isDropDown())
710
- return;
711
- if (id === null || id === undefined)
712
- return;
713
- const flatItems = this.collectFlatItems();
714
- for (let i = 0; i < flatItems.length; i++) {
715
- if (flatItems[i]?.id === id) {
716
- if (this.container instanceof Gtk.DropDown) {
717
- this.container.setSelected(i);
718
- }
719
- else if (this.container instanceof Adw.ComboRow) {
720
- this.container.setSelected(i);
721
- }
722
- return;
723
- }
724
- }
725
- }
726
- connectSelectionSignal() {
727
- const { onSelectionChanged } = this.props;
728
- if (this.isDropDown()) {
729
- const handler = onSelectionChanged
730
- ? () => {
731
- const position = this.container instanceof Gtk.DropDown
732
- ? this.container.getSelected()
733
- : this.container instanceof Adw.ComboRow
734
- ? this.container.getSelected()
735
- : -1;
736
- const flatItems = this.collectFlatItems();
737
- const item = flatItems[position];
738
- if (item) {
739
- onSelectionChanged(item.id);
740
- }
741
- }
742
- : undefined;
743
- this.signalStore.set(this, this.container, "notify::selected", handler);
744
- return;
745
- }
746
- if (!this.selectionModel)
747
- return;
748
- const handler = onSelectionChanged
749
- ? () => {
750
- const selection = this.selectionModel?.getSelection();
751
- if (!selection)
752
- return;
753
- const ids = [];
754
- const nItems = this.selectionModel?.getNItems() ?? 0;
755
- if (this.treeModel) {
756
- for (let i = 0; i < nItems; i++) {
757
- if (selection.contains(i)) {
758
- const row = this.treeModel.getRow(i);
759
- const item = row ? this.resolveTreeItem(row) : null;
760
- if (item)
761
- ids.push(item.id);
762
- }
763
- }
764
- }
765
- else {
766
- const flatItems = this.collectFlatItems();
767
- for (let i = 0; i < nItems; i++) {
768
- if (selection.contains(i)) {
769
- const item = flatItems[i];
770
- if (item)
771
- ids.push(item.id);
772
- }
773
- }
774
- }
775
- onSelectionChanged(ids);
776
- }
777
- : undefined;
778
- this.signalStore.set(this, this.selectionModel, "selection-changed", handler, {
779
- blockable: false,
780
- });
781
- }
782
- connectSortSignal() {
783
- if (!this.isColumnView())
784
- return;
785
- const columnView = this.container;
786
- const sorter = columnView.getSorter();
787
- if (!sorter)
788
- return;
789
- const { onSortChanged } = this.props;
790
- const handler = onSortChanged
791
- ? () => {
792
- const cvSorter = columnView.getSorter();
793
- if (!cvSorter) {
794
- onSortChanged(null, Gtk.SortType.ASCENDING);
795
- return;
796
- }
797
- const primaryColumn = cvSorter.getPrimarySortColumn();
798
- const primaryOrder = cvSorter.getPrimarySortOrder();
799
- const columnId = primaryColumn?.getId() ?? null;
800
- onSortChanged(columnId, primaryOrder);
801
- }
802
- : undefined;
803
- this.signalStore.set(this, sorter, "changed", handler, { blockable: false });
804
- }
805
- applySortColumn(props) {
806
- if (!this.isColumnView())
807
- return;
808
- const columnView = this.container;
809
- const { sortColumn, sortOrder } = props;
810
- if (sortColumn === null || sortColumn === undefined) {
811
- columnView.sortByColumn(Gtk.SortType.ASCENDING, null);
812
- return;
813
- }
814
- const column = this.findColumnById(sortColumn);
815
- if (column) {
816
- columnView.sortByColumn(sortOrder ?? Gtk.SortType.ASCENDING, column);
817
- }
818
- }
819
- findColumnById(id) {
820
- if (!this.isColumnView())
821
- return null;
822
- const columnView = this.container;
823
- const columns = columnView.getColumns();
824
- const nItems = columns.getNItems();
825
- for (let i = 0; i < nItems; i++) {
826
- const obj = columns.getObject(i);
827
- if (obj && obj.getId() === id) {
828
- return obj;
829
- }
830
- }
831
- return null;
832
- }
833
- scheduleSync() {
834
- if (this.syncScheduled)
835
- return;
836
- this.syncScheduled = true;
837
- queueMicrotask(() => {
838
- this.syncScheduled = false;
839
- if (this.disposed)
840
- return;
841
- this.syncModel();
842
- });
843
- }
844
- scheduleBoundItemsUpdate() {
845
- if (this.boundItemsUpdateScheduled)
846
- return;
847
- this.boundItemsUpdateScheduled = true;
848
- queueMicrotask(() => {
849
- this.boundItemsUpdateScheduled = false;
850
- if (this.disposed)
851
- return;
852
- this.rebuildBoundItems();
853
- });
854
- }
855
- rebuildBoundItems() {
856
- const { __boundItemsRef, __rerender, __headerBoundItemsRef, renderItem, renderListItem, renderHeader } = this.props;
857
- if (!__boundItemsRef || !__rerender)
858
- return;
859
- const flatItems = this.collectFlatItems();
860
- const newBoundItems = [];
861
- if (this.isColumnView()) {
862
- for (const child of this.children) {
863
- if (child instanceof ColumnViewColumnNode) {
864
- newBoundItems.push(...child.collectBoundItems(flatItems));
865
- }
866
- }
867
- }
868
- else {
869
- const renderFn = renderItem ?? (this.isDropDown() ? (item) => String(item ?? "") : null);
870
- if (renderFn) {
871
- this.collectContainerBoundItems(this.containers, this.containerKeys, flatItems, renderFn, newBoundItems);
872
- }
873
- if (renderListItem && this.isDropDown()) {
874
- this.collectContainerBoundItems(this.listContainers, this.listContainerKeys, flatItems, renderListItem, newBoundItems);
875
- }
876
- }
877
- __boundItemsRef.current = newBoundItems;
878
- if (__headerBoundItemsRef && renderHeader && this.sectionStore !== null) {
879
- const sections = this.collectSections();
880
- const headerBoundItems = [];
881
- let sectionStart = 0;
882
- for (let i = 0; i < sections.length; i++) {
883
- const section = sections[i];
884
- for (const [container, position] of this.headerContainers) {
885
- if (position === UNBOUND_POSITION)
886
- continue;
887
- if (position === sectionStart) {
888
- const key = this.headerContainerKeys.get(container);
889
- if (key) {
890
- const content = renderHeader(section.value);
891
- headerBoundItems.push([content, container, key]);
892
- }
893
- }
894
- }
895
- sectionStart += section.children?.length ?? 0;
896
- }
897
- __headerBoundItemsRef.current = headerBoundItems;
898
- }
899
- __rerender();
900
- }
901
- collectContainerBoundItems(containers, containerKeys, flatItems, renderFn, out) {
902
- const isTree = this.treeModel !== null;
903
- for (const [container, position] of containers) {
904
- if (position === UNBOUND_POSITION)
905
- continue;
906
- const key = containerKeys.get(container);
907
- if (!key)
908
- continue;
909
- if (isTree) {
910
- const expander = container;
911
- const row = expander.getListRow() ?? null;
912
- if (!row)
913
- continue;
914
- const item = this.resolveTreeItem(row);
915
- if (!item)
916
- continue;
917
- const content = renderFn(item.value, row);
918
- out.push([content, container, key]);
919
- }
920
- else {
921
- const item = flatItems[position];
922
- if (!item)
923
- continue;
924
- const content = renderFn(item.value);
925
- out.push([content, container, key]);
926
- }
927
- }
928
- }
929
- getEstimatedItemSize() {
930
- return {
931
- width: this.props.estimatedItemWidth ?? -1,
932
- height: this.props.estimatedItemHeight ?? -1,
933
- };
934
- }
935
- applyEstimatedItemSize(widget) {
936
- const { width, height } = this.getEstimatedItemSize();
937
- widget.setSizeRequest(width, height);
938
- }
939
- getColumnPosition(columnNode) {
940
- let columnIndex = 0;
941
- for (const child of this.children) {
942
- if (child === columnNode)
943
- return columnIndex;
944
- if (child instanceof ColumnViewColumnNode)
945
- columnIndex++;
946
- }
947
- return columnIndex;
948
- }
949
- }
950
- //# sourceMappingURL=list.js.map