@gtkx/react 1.0.0-rc.1 → 1.0.0-rc.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 (381) hide show
  1. package/dist/adw/config.d.ts +2 -0
  2. package/dist/adw/config.d.ts.map +1 -0
  3. package/dist/adw/config.js +2 -0
  4. package/dist/adw/config.js.map +1 -0
  5. package/dist/{libraries/adw → adw}/dialog.d.ts +2 -2
  6. package/dist/adw/dialog.d.ts.map +1 -0
  7. package/dist/adw/dialog.js +25 -0
  8. package/dist/adw/dialog.js.map +1 -0
  9. package/dist/adw/element-behaviors.d.ts +2 -0
  10. package/dist/adw/element-behaviors.d.ts.map +1 -0
  11. package/dist/adw/element-behaviors.js +299 -0
  12. package/dist/adw/element-behaviors.js.map +1 -0
  13. package/dist/adw/element-config.d.ts +9 -0
  14. package/dist/adw/element-config.d.ts.map +1 -0
  15. package/dist/adw/element-config.js +137 -0
  16. package/dist/adw/element-config.js.map +1 -0
  17. package/dist/adw/index.d.ts +4 -0
  18. package/dist/adw/index.d.ts.map +1 -0
  19. package/dist/adw/index.js +3 -0
  20. package/dist/adw/index.js.map +1 -0
  21. package/dist/adw/prop-types.d.ts +29 -0
  22. package/dist/adw/prop-types.d.ts.map +1 -0
  23. package/dist/adw/prop-types.js +2 -0
  24. package/dist/adw/prop-types.js.map +1 -0
  25. package/dist/bootstrap.d.ts +2 -0
  26. package/dist/bootstrap.d.ts.map +1 -0
  27. package/dist/bootstrap.js +5 -0
  28. package/dist/bootstrap.js.map +1 -0
  29. package/dist/components/application.d.ts +2 -2
  30. package/dist/components/application.d.ts.map +1 -1
  31. package/dist/components/application.js +31 -18
  32. package/dist/components/application.js.map +1 -1
  33. package/dist/components/element.d.ts +6 -0
  34. package/dist/components/element.d.ts.map +1 -0
  35. package/dist/components/element.js +29 -0
  36. package/dist/components/element.js.map +1 -0
  37. package/dist/components/window.d.ts +2 -2
  38. package/dist/components/window.d.ts.map +1 -1
  39. package/dist/components/window.js +10 -11
  40. package/dist/components/window.js.map +1 -1
  41. package/dist/config.d.ts +4 -0
  42. package/dist/config.d.ts.map +1 -0
  43. package/dist/config.js +3 -0
  44. package/dist/config.js.map +1 -0
  45. package/dist/element-behaviors.d.ts +2 -0
  46. package/dist/element-behaviors.d.ts.map +1 -0
  47. package/dist/element-behaviors.js +348 -0
  48. package/dist/element-behaviors.js.map +1 -0
  49. package/dist/element-config.d.ts +10 -0
  50. package/dist/element-config.d.ts.map +1 -0
  51. package/dist/element-config.js +146 -0
  52. package/dist/element-config.js.map +1 -0
  53. package/dist/hooks/use-application.d.ts +4 -3
  54. package/dist/hooks/use-application.d.ts.map +1 -1
  55. package/dist/hooks/use-application.js +5 -4
  56. package/dist/hooks/use-application.js.map +1 -1
  57. package/dist/hooks/use-bind-setting.d.ts +21 -4
  58. package/dist/hooks/use-bind-setting.d.ts.map +1 -1
  59. package/dist/hooks/use-bind-setting.js +27 -16
  60. package/dist/hooks/use-bind-setting.js.map +1 -1
  61. package/dist/hooks/use-merged-refs.d.ts +8 -0
  62. package/dist/hooks/use-merged-refs.d.ts.map +1 -0
  63. package/dist/hooks/use-merged-refs.js +48 -0
  64. package/dist/hooks/use-merged-refs.js.map +1 -0
  65. package/dist/hooks/use-object-value.d.ts +3 -2
  66. package/dist/hooks/use-object-value.d.ts.map +1 -1
  67. package/dist/hooks/use-object-value.js +18 -21
  68. package/dist/hooks/use-object-value.js.map +1 -1
  69. package/dist/hooks/use-parent-window.d.ts +3 -2
  70. package/dist/hooks/use-parent-window.d.ts.map +1 -1
  71. package/dist/hooks/use-parent-window.js +3 -2
  72. package/dist/hooks/use-parent-window.js.map +1 -1
  73. package/dist/hooks/use-property.d.ts +5 -5
  74. package/dist/hooks/use-property.d.ts.map +1 -1
  75. package/dist/hooks/use-property.js +4 -3
  76. package/dist/hooks/use-property.js.map +1 -1
  77. package/dist/hooks/use-setting.d.ts +5 -16
  78. package/dist/hooks/use-setting.d.ts.map +1 -1
  79. package/dist/hooks/use-setting.js +16 -11
  80. package/dist/hooks/use-setting.js.map +1 -1
  81. package/dist/hooks/use-signal.d.ts +10 -7
  82. package/dist/hooks/use-signal.d.ts.map +1 -1
  83. package/dist/hooks/use-signal.js +29 -18
  84. package/dist/hooks/use-signal.js.map +1 -1
  85. package/dist/index.d.ts +7 -8
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +2 -3
  88. package/dist/index.js.map +1 -1
  89. package/dist/internal.d.ts +6 -7
  90. package/dist/internal.d.ts.map +1 -1
  91. package/dist/internal.js +5 -7
  92. package/dist/internal.js.map +1 -1
  93. package/dist/prop-types.d.ts +110 -0
  94. package/dist/prop-types.d.ts.map +1 -0
  95. package/dist/prop-types.js +2 -0
  96. package/dist/prop-types.js.map +1 -0
  97. package/dist/reconciler/apply-props.d.ts +10 -7
  98. package/dist/reconciler/apply-props.d.ts.map +1 -1
  99. package/dist/reconciler/apply-props.js +182 -84
  100. package/dist/reconciler/apply-props.js.map +1 -1
  101. package/dist/reconciler/behaviors.d.ts +59 -0
  102. package/dist/reconciler/behaviors.d.ts.map +1 -0
  103. package/dist/reconciler/behaviors.js +172 -0
  104. package/dist/reconciler/behaviors.js.map +1 -0
  105. package/dist/reconciler/child-routing.d.ts +5 -0
  106. package/dist/reconciler/child-routing.d.ts.map +1 -0
  107. package/dist/reconciler/child-routing.js +156 -0
  108. package/dist/reconciler/child-routing.js.map +1 -0
  109. package/dist/reconciler/host-config.d.ts +8 -12
  110. package/dist/reconciler/host-config.d.ts.map +1 -1
  111. package/dist/reconciler/host-config.js +175 -270
  112. package/dist/reconciler/host-config.js.map +1 -1
  113. package/dist/reconciler/instance.d.ts +4 -5
  114. package/dist/reconciler/instance.d.ts.map +1 -1
  115. package/dist/reconciler/instance.js +44 -22
  116. package/dist/reconciler/instance.js.map +1 -1
  117. package/dist/reconciler/metadata.d.ts +17 -0
  118. package/dist/reconciler/metadata.d.ts.map +1 -0
  119. package/dist/reconciler/metadata.js +82 -0
  120. package/dist/reconciler/metadata.js.map +1 -0
  121. package/dist/reconciler/node.d.ts +76 -0
  122. package/dist/reconciler/node.d.ts.map +1 -0
  123. package/dist/reconciler/node.js +53 -0
  124. package/dist/reconciler/node.js.map +1 -0
  125. package/dist/reconciler/placement.d.ts +5 -0
  126. package/dist/reconciler/placement.d.ts.map +1 -0
  127. package/dist/reconciler/placement.js +175 -0
  128. package/dist/reconciler/placement.js.map +1 -0
  129. package/dist/reconciler/registry.d.ts +92 -0
  130. package/dist/reconciler/registry.d.ts.map +1 -0
  131. package/dist/reconciler/registry.js +64 -0
  132. package/dist/reconciler/registry.js.map +1 -0
  133. package/dist/reconciler/root-element.d.ts +9 -12
  134. package/dist/reconciler/root-element.d.ts.map +1 -1
  135. package/dist/reconciler/root-element.js +6 -6
  136. package/dist/reconciler/root-element.js.map +1 -1
  137. package/dist/reconciler/root.d.ts +56 -0
  138. package/dist/reconciler/root.d.ts.map +1 -0
  139. package/dist/reconciler/root.js +109 -0
  140. package/dist/reconciler/root.js.map +1 -0
  141. package/dist/reconciler/signals.d.ts +10 -0
  142. package/dist/reconciler/signals.d.ts.map +1 -0
  143. package/dist/reconciler/signals.js +70 -0
  144. package/dist/reconciler/signals.js.map +1 -0
  145. package/dist/reconciler/text.d.ts +19 -0
  146. package/dist/reconciler/text.d.ts.map +1 -0
  147. package/dist/reconciler/text.js +276 -0
  148. package/dist/reconciler/text.js.map +1 -0
  149. package/dist/utils/accessible-metadata.d.ts +11 -4
  150. package/dist/utils/accessible-metadata.d.ts.map +1 -1
  151. package/dist/utils/accessible-metadata.js +20 -17
  152. package/dist/utils/accessible-metadata.js.map +1 -1
  153. package/dist/{reconciler/accessible.d.ts → utils/accessible-props.d.ts} +7 -6
  154. package/dist/utils/accessible-props.d.ts.map +1 -0
  155. package/dist/utils/accessible-props.js +181 -0
  156. package/dist/utils/accessible-props.js.map +1 -0
  157. package/dist/utils/ref-prop.d.ts +15 -0
  158. package/dist/utils/ref-prop.d.ts.map +1 -0
  159. package/dist/utils/ref-prop.js +18 -0
  160. package/dist/utils/ref-prop.js.map +1 -0
  161. package/dist/utils/settings.d.ts +17 -0
  162. package/dist/utils/settings.d.ts.map +1 -0
  163. package/dist/utils/settings.js +37 -0
  164. package/dist/utils/settings.js.map +1 -0
  165. package/dist/utils/variant.d.ts +57 -0
  166. package/dist/utils/variant.d.ts.map +1 -0
  167. package/dist/utils/variant.js +197 -0
  168. package/dist/utils/variant.js.map +1 -0
  169. package/env.d.ts +9 -0
  170. package/package.json +36 -11
  171. package/src/adw/config.ts +1 -0
  172. package/src/adw/dialog.tsx +35 -0
  173. package/src/adw/element-behaviors.ts +379 -0
  174. package/src/adw/element-config.ts +140 -0
  175. package/src/adw/index.ts +4 -0
  176. package/src/adw/prop-types.ts +42 -0
  177. package/src/bootstrap.ts +5 -0
  178. package/src/components/application.tsx +42 -23
  179. package/src/components/element.tsx +47 -0
  180. package/src/components/window.tsx +12 -13
  181. package/src/config.ts +3 -0
  182. package/src/element-behaviors.ts +424 -0
  183. package/src/element-config.ts +148 -0
  184. package/src/env.d.ts +1 -0
  185. package/src/hooks/use-application.ts +6 -4
  186. package/src/hooks/use-bind-setting.ts +47 -31
  187. package/src/hooks/use-merged-refs.ts +64 -0
  188. package/src/hooks/use-object-value.ts +27 -23
  189. package/src/hooks/use-parent-window.ts +4 -2
  190. package/src/hooks/use-property.ts +11 -10
  191. package/src/hooks/use-setting.ts +20 -33
  192. package/src/hooks/use-signal.ts +37 -48
  193. package/src/index.ts +7 -8
  194. package/src/internal.ts +7 -18
  195. package/src/prop-types.ts +142 -0
  196. package/src/reconciler/apply-props.ts +233 -85
  197. package/src/reconciler/behaviors.ts +324 -0
  198. package/src/reconciler/child-routing.ts +202 -0
  199. package/src/reconciler/host-config.ts +239 -366
  200. package/src/reconciler/instance.ts +76 -24
  201. package/src/reconciler/metadata.ts +119 -0
  202. package/src/reconciler/node.ts +161 -0
  203. package/src/reconciler/placement.ts +255 -0
  204. package/src/reconciler/registry.ts +161 -0
  205. package/src/reconciler/root-element.ts +9 -11
  206. package/src/reconciler/root.ts +175 -0
  207. package/src/reconciler/signals.ts +113 -0
  208. package/src/reconciler/text.ts +407 -0
  209. package/src/utils/accessible-metadata.ts +23 -18
  210. package/src/utils/accessible-props.ts +279 -0
  211. package/src/utils/ref-prop.ts +30 -0
  212. package/src/utils/settings.ts +69 -0
  213. package/src/utils/variant.ts +368 -0
  214. package/dist/hooks/use-merge-refs.d.ts +0 -3
  215. package/dist/hooks/use-merge-refs.d.ts.map +0 -1
  216. package/dist/hooks/use-merge-refs.js +0 -48
  217. package/dist/hooks/use-merge-refs.js.map +0 -1
  218. package/dist/hooks/use-object-attachment.d.ts +0 -10
  219. package/dist/hooks/use-object-attachment.d.ts.map +0 -1
  220. package/dist/hooks/use-object-attachment.js +0 -24
  221. package/dist/hooks/use-object-attachment.js.map +0 -1
  222. package/dist/libraries/adw/dialog.d.ts.map +0 -1
  223. package/dist/libraries/adw/dialog.js +0 -25
  224. package/dist/libraries/adw/dialog.js.map +0 -1
  225. package/dist/libraries/adw/index.d.ts +0 -2
  226. package/dist/libraries/adw/index.d.ts.map +0 -1
  227. package/dist/libraries/adw/index.js +0 -2
  228. package/dist/libraries/adw/index.js.map +0 -1
  229. package/dist/reconciler/accessible.d.ts.map +0 -1
  230. package/dist/reconciler/accessible.js +0 -143
  231. package/dist/reconciler/accessible.js.map +0 -1
  232. package/dist/reconciler/commit-flush.d.ts +0 -3
  233. package/dist/reconciler/commit-flush.d.ts.map +0 -1
  234. package/dist/reconciler/commit-flush.js +0 -13
  235. package/dist/reconciler/commit-flush.js.map +0 -1
  236. package/dist/reconciler/container-attach.d.ts +0 -10
  237. package/dist/reconciler/container-attach.d.ts.map +0 -1
  238. package/dist/reconciler/container-attach.js +0 -216
  239. package/dist/reconciler/container-attach.js.map +0 -1
  240. package/dist/reconciler/content-rebuild.d.ts +0 -3
  241. package/dist/reconciler/content-rebuild.d.ts.map +0 -1
  242. package/dist/reconciler/content-rebuild.js +0 -15
  243. package/dist/reconciler/content-rebuild.js.map +0 -1
  244. package/dist/reconciler/dispatch.d.ts +0 -6
  245. package/dist/reconciler/dispatch.d.ts.map +0 -1
  246. package/dist/reconciler/dispatch.js +0 -61
  247. package/dist/reconciler/dispatch.js.map +0 -1
  248. package/dist/reconciler/element-prop-appliers.d.ts +0 -5
  249. package/dist/reconciler/element-prop-appliers.d.ts.map +0 -1
  250. package/dist/reconciler/element-prop-appliers.js +0 -104
  251. package/dist/reconciler/element-prop-appliers.js.map +0 -1
  252. package/dist/reconciler/element-props.d.ts +0 -25
  253. package/dist/reconciler/element-props.d.ts.map +0 -1
  254. package/dist/reconciler/element-props.js +0 -157
  255. package/dist/reconciler/element-props.js.map +0 -1
  256. package/dist/reconciler/label-text-rebuild.d.ts +0 -3
  257. package/dist/reconciler/label-text-rebuild.d.ts.map +0 -1
  258. package/dist/reconciler/label-text-rebuild.js +0 -22
  259. package/dist/reconciler/label-text-rebuild.js.map +0 -1
  260. package/dist/reconciler/portal.d.ts +0 -11
  261. package/dist/reconciler/portal.d.ts.map +0 -1
  262. package/dist/reconciler/portal.js +0 -20
  263. package/dist/reconciler/portal.js.map +0 -1
  264. package/dist/reconciler/reconciler-error-handler.d.ts +0 -7
  265. package/dist/reconciler/reconciler-error-handler.d.ts.map +0 -1
  266. package/dist/reconciler/reconciler-error-handler.js +0 -24
  267. package/dist/reconciler/reconciler-error-handler.js.map +0 -1
  268. package/dist/reconciler/reconciler-root.d.ts +0 -19
  269. package/dist/reconciler/reconciler-root.d.ts.map +0 -1
  270. package/dist/reconciler/reconciler-root.js +0 -24
  271. package/dist/reconciler/reconciler-root.js.map +0 -1
  272. package/dist/reconciler/reconciler.d.ts +0 -3
  273. package/dist/reconciler/reconciler.d.ts.map +0 -1
  274. package/dist/reconciler/reconciler.js +0 -12
  275. package/dist/reconciler/reconciler.js.map +0 -1
  276. package/dist/reconciler/render.d.ts +0 -23
  277. package/dist/reconciler/render.d.ts.map +0 -1
  278. package/dist/reconciler/render.js +0 -46
  279. package/dist/reconciler/render.js.map +0 -1
  280. package/dist/reconciler/signal-store.d.ts +0 -22
  281. package/dist/reconciler/signal-store.d.ts.map +0 -1
  282. package/dist/reconciler/signal-store.js +0 -84
  283. package/dist/reconciler/signal-store.js.map +0 -1
  284. package/dist/reconciler/state.d.ts +0 -36
  285. package/dist/reconciler/state.d.ts.map +0 -1
  286. package/dist/reconciler/state.js +0 -38
  287. package/dist/reconciler/state.js.map +0 -1
  288. package/dist/reconciler/text-buffer-controller.d.ts +0 -17
  289. package/dist/reconciler/text-buffer-controller.d.ts.map +0 -1
  290. package/dist/reconciler/text-buffer-controller.js +0 -102
  291. package/dist/reconciler/text-buffer-controller.js.map +0 -1
  292. package/dist/reconciler/text-buffer-rebuild.d.ts +0 -3
  293. package/dist/reconciler/text-buffer-rebuild.d.ts.map +0 -1
  294. package/dist/reconciler/text-buffer-rebuild.js +0 -7
  295. package/dist/reconciler/text-buffer-rebuild.js.map +0 -1
  296. package/dist/reconciler/text-node.d.ts +0 -7
  297. package/dist/reconciler/text-node.d.ts.map +0 -1
  298. package/dist/reconciler/text-node.js +0 -8
  299. package/dist/reconciler/text-node.js.map +0 -1
  300. package/dist/reconciler/types.d.ts +0 -5
  301. package/dist/reconciler/types.d.ts.map +0 -1
  302. package/dist/reconciler/types.js +0 -2
  303. package/dist/reconciler/types.js.map +0 -1
  304. package/dist/reconciler/visibility.d.ts +0 -6
  305. package/dist/reconciler/visibility.d.ts.map +0 -1
  306. package/dist/reconciler/visibility.js +0 -57
  307. package/dist/reconciler/visibility.js.map +0 -1
  308. package/dist/reconciler/wrapper-apply.d.ts +0 -6
  309. package/dist/reconciler/wrapper-apply.d.ts.map +0 -1
  310. package/dist/reconciler/wrapper-apply.js +0 -287
  311. package/dist/reconciler/wrapper-apply.js.map +0 -1
  312. package/dist/reconciler/wrapper-content.d.ts +0 -8
  313. package/dist/reconciler/wrapper-content.d.ts.map +0 -1
  314. package/dist/reconciler/wrapper-content.js +0 -19
  315. package/dist/reconciler/wrapper-content.js.map +0 -1
  316. package/dist/reconciler/wrapper-node.d.ts +0 -8
  317. package/dist/reconciler/wrapper-node.d.ts.map +0 -1
  318. package/dist/reconciler/wrapper-node.js +0 -4
  319. package/dist/reconciler/wrapper-node.js.map +0 -1
  320. package/dist/reconciler/wrapper-protocol.d.ts +0 -13
  321. package/dist/reconciler/wrapper-protocol.d.ts.map +0 -1
  322. package/dist/reconciler/wrapper-protocol.js +0 -20
  323. package/dist/reconciler/wrapper-protocol.js.map +0 -1
  324. package/dist/utils/create-element-component.d.ts +0 -4
  325. package/dist/utils/create-element-component.d.ts.map +0 -1
  326. package/dist/utils/create-element-component.js +0 -54
  327. package/dist/utils/create-element-component.js.map +0 -1
  328. package/dist/utils/gtype.d.ts +0 -16
  329. package/dist/utils/gtype.d.ts.map +0 -1
  330. package/dist/utils/gtype.js +0 -127
  331. package/dist/utils/gtype.js.map +0 -1
  332. package/dist/utils/notify-name.d.ts +0 -5
  333. package/dist/utils/notify-name.d.ts.map +0 -1
  334. package/dist/utils/notify-name.js +0 -6
  335. package/dist/utils/notify-name.js.map +0 -1
  336. package/dist/utils/object-prop.d.ts +0 -8
  337. package/dist/utils/object-prop.d.ts.map +0 -1
  338. package/dist/utils/object-prop.js +0 -9
  339. package/dist/utils/object-prop.js.map +0 -1
  340. package/dist/utils/settings-accessor.d.ts +0 -8
  341. package/dist/utils/settings-accessor.d.ts.map +0 -1
  342. package/dist/utils/settings-accessor.js +0 -69
  343. package/dist/utils/settings-accessor.js.map +0 -1
  344. package/dist/utils/wrapper-node-jsx.d.ts +0 -32
  345. package/dist/utils/wrapper-node-jsx.d.ts.map +0 -1
  346. package/dist/utils/wrapper-node-jsx.js +0 -2
  347. package/dist/utils/wrapper-node-jsx.js.map +0 -1
  348. package/src/hooks/use-merge-refs.ts +0 -53
  349. package/src/hooks/use-object-attachment.ts +0 -35
  350. package/src/libraries/adw/dialog.tsx +0 -34
  351. package/src/libraries/adw/index.ts +0 -1
  352. package/src/reconciler/accessible.ts +0 -232
  353. package/src/reconciler/commit-flush.ts +0 -13
  354. package/src/reconciler/container-attach.ts +0 -219
  355. package/src/reconciler/content-rebuild.ts +0 -19
  356. package/src/reconciler/dispatch.ts +0 -58
  357. package/src/reconciler/element-prop-appliers.ts +0 -110
  358. package/src/reconciler/element-props.ts +0 -192
  359. package/src/reconciler/label-text-rebuild.ts +0 -26
  360. package/src/reconciler/portal.ts +0 -28
  361. package/src/reconciler/reconciler-error-handler.ts +0 -29
  362. package/src/reconciler/reconciler-root.ts +0 -57
  363. package/src/reconciler/reconciler.ts +0 -13
  364. package/src/reconciler/render.ts +0 -61
  365. package/src/reconciler/signal-store.ts +0 -103
  366. package/src/reconciler/state.ts +0 -72
  367. package/src/reconciler/text-buffer-controller.ts +0 -107
  368. package/src/reconciler/text-buffer-rebuild.ts +0 -12
  369. package/src/reconciler/text-node.ts +0 -13
  370. package/src/reconciler/types.ts +0 -6
  371. package/src/reconciler/visibility.ts +0 -52
  372. package/src/reconciler/wrapper-apply.ts +0 -308
  373. package/src/reconciler/wrapper-content.ts +0 -24
  374. package/src/reconciler/wrapper-node.ts +0 -8
  375. package/src/reconciler/wrapper-protocol.ts +0 -32
  376. package/src/utils/create-element-component.ts +0 -77
  377. package/src/utils/gtype.ts +0 -166
  378. package/src/utils/notify-name.ts +0 -10
  379. package/src/utils/object-prop.ts +0 -13
  380. package/src/utils/settings-accessor.ts +0 -89
  381. package/src/utils/wrapper-node-jsx.ts +0 -34
@@ -1 +0,0 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/reconciler/render.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAA+B,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC5G,OAAO,EAAE,oBAAoB,EAAuB,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAC5G,OAAO,EAAoB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,aAAa,GAAG,IAAI,OAAO,EAAiD,CAAC;AAEnF,MAAM,YAAY,GAAG,CAAC,IAAoB,EAAQ,EAAE;IAChD,yBAAyB,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC,CAAC;AAUF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,SAAS,GAAgB,WAAW,EAAQ,EAAE;IACrE,MAAM,eAAe,GAAG,CAAC,KAAc,EAAQ,EAAE;QAC7C,cAAc,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,KAAK,CAAC;IAChB,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,CAAC,KAAc,EAAQ,EAAE;QAC3C,cAAc,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QACpC,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,yBAAyB,CAAC,eAAe,CAAC,CAAC;IAEhE,MAAM,IAAI,GAAG,oBAAoB,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,CAAC;IAChG,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAEtC,OAAO;QACH,MAAM,EAAE,CAAC,OAAkB,EAAQ,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,GAAS,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/B,CAAC;KACJ,CAAC;AACN,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,GAAS,EAAE;IAC3B,yBAAyB,CAAC,YAAY,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC","sourcesContent":["import type { ReactNode } from \"react\";\nimport { log, type ReconcilerErrorHandler, setReconcilerErrorHandler } from \"./reconciler-error-handler.js\";\nimport { createReconcilerRoot, type ReconcilerRoot, unmountAllReconcilerRoots } from \"./reconciler-root.js\";\nimport { type RootElement, rootElement } from \"./root-element.js\";\nimport { getSignalStore } from \"./signal-store.js\";\n\nconst priorHandlers = new WeakMap<ReconcilerRoot, ReconcilerErrorHandler | null>();\n\nconst teardownRoot = (root: ReconcilerRoot): void => {\n setReconcilerErrorHandler(priorHandlers.get(root) ?? null);\n root.update(null);\n};\n\n/**\n * A render root that mounts a React element tree into a container and can unmount it.\n */\nexport type Root = {\n render(element: ReactNode): void;\n unmount(): void;\n};\n\n/**\n * Creates a render root for a container, wiring reconciler error handling to the container's signal store.\n *\n * @param container The root element to render into; defaults to the shared `rootElement`.\n * @returns A root with `render` and `unmount` methods.\n */\nexport const createRoot = (container: RootElement = rootElement): Root => {\n const onUncaughtError = (error: unknown): void => {\n getSignalStore(container).unblock();\n throw error;\n };\n const onCaughtError = (error: unknown): void => {\n getSignalStore(container).unblock();\n log.error(\"caught render error\", error);\n };\n\n const priorHandler = setReconcilerErrorHandler(onUncaughtError);\n\n const root = createReconcilerRoot({ containerInfo: container, onUncaughtError, onCaughtError });\n priorHandlers.set(root, priorHandler);\n\n return {\n render: (element: ReactNode): void => {\n root.update(element);\n },\n unmount: (): void => {\n root.unmount(teardownRoot);\n },\n };\n};\n\n/**\n * Unmounts all active render roots.\n *\n * @returns `true` once every root has been torn down.\n */\nexport const quit = (): true => {\n unmountAllReconcilerRoots(teardownRoot);\n return true;\n};\n"]}
@@ -1,22 +0,0 @@
1
- import type * as GObject from "@gtkx/gi/gobject";
2
- import type { SignalHandler } from "@gtkx/runtime";
3
- type SignalBinding = {
4
- instance: GObject.Object;
5
- signal: string;
6
- handler?: SignalHandler | undefined;
7
- };
8
- export declare class SignalStore {
9
- private instanceHandlers;
10
- private blockDepth;
11
- private getInstanceMap;
12
- private gateHandler;
13
- private disconnect;
14
- private connect;
15
- set(binding: SignalBinding): void;
16
- clear(instance: GObject.Object): void;
17
- block(): void;
18
- unblock(): void;
19
- }
20
- export declare function getSignalStore(rootContainer: object): SignalStore;
21
- export {};
22
- //# sourceMappingURL=signal-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signal-store.d.ts","sourceRoot":"","sources":["../../src/reconciler/signal-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAgBnD,KAAK,aAAa,GAAG;IACjB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF,qBAAa,WAAW;IACpB,OAAO,CAAC,gBAAgB,CAAuD;IAE/E,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,OAAO;IAOR,GAAG,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAOvC;IAEM,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAU3C;IAEM,KAAK,IAAI,IAAI,CAEnB;IAEM,OAAO,IAAI,IAAI,CAErB;CACJ;AAID,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,WAAW,CAOjE"}
@@ -1,84 +0,0 @@
1
- const UNBLOCKED_SIGNALS = new Set([
2
- "realize",
3
- "unrealize",
4
- "map",
5
- "unmap",
6
- "show",
7
- "hide",
8
- "destroy",
9
- "resize",
10
- "render",
11
- "input",
12
- "output",
13
- ]);
14
- export class SignalStore {
15
- instanceHandlers = new Map();
16
- blockDepth = 0;
17
- getInstanceMap(instance) {
18
- let instanceMap = this.instanceHandlers.get(instance);
19
- if (!instanceMap) {
20
- instanceMap = new Map();
21
- this.instanceHandlers.set(instance, instanceMap);
22
- }
23
- return instanceMap;
24
- }
25
- gateHandler(handler, signal, instance) {
26
- return (...args) => {
27
- if (this.blockDepth > 0 && !UNBLOCKED_SIGNALS.has(signal)) {
28
- return;
29
- }
30
- return handler(...args, instance);
31
- };
32
- }
33
- disconnect(instance, signal) {
34
- const instanceMap = this.instanceHandlers.get(instance);
35
- if (!instanceMap)
36
- return;
37
- const handlerId = instanceMap.get(signal);
38
- if (handlerId === undefined)
39
- return;
40
- instance.disconnect(handlerId);
41
- instanceMap.delete(signal);
42
- if (instanceMap.size === 0)
43
- this.instanceHandlers.delete(instance);
44
- }
45
- connect(binding) {
46
- const { instance, signal, handler } = binding;
47
- const gatedHandler = this.gateHandler(handler, signal, instance);
48
- const handlerId = instance.connect(signal, gatedHandler);
49
- this.getInstanceMap(instance).set(signal, handlerId);
50
- }
51
- set(binding) {
52
- const { instance, signal, handler } = binding;
53
- this.disconnect(instance, signal);
54
- if (handler) {
55
- this.connect({ instance, signal, handler });
56
- }
57
- }
58
- clear(instance) {
59
- const instanceMap = this.instanceHandlers.get(instance);
60
- if (instanceMap) {
61
- for (const [, handlerId] of instanceMap) {
62
- instance.disconnect(handlerId);
63
- }
64
- this.instanceHandlers.delete(instance);
65
- }
66
- }
67
- block() {
68
- this.blockDepth += 1;
69
- }
70
- unblock() {
71
- if (this.blockDepth > 0)
72
- this.blockDepth -= 1;
73
- }
74
- }
75
- const signalStores = new WeakMap();
76
- export function getSignalStore(rootContainer) {
77
- let store = signalStores.get(rootContainer);
78
- if (!store) {
79
- store = new SignalStore();
80
- signalStores.set(rootContainer, store);
81
- }
82
- return store;
83
- }
84
- //# sourceMappingURL=signal-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signal-store.js","sourceRoot":"","sources":["../../src/reconciler/signal-store.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as GObject from \"@gtkx/gi/gobject\";\nimport type { SignalHandler } from \"@gtkx/runtime\";\n\nconst UNBLOCKED_SIGNALS = new Set([\n \"realize\",\n \"unrealize\",\n \"map\",\n \"unmap\",\n \"show\",\n \"hide\",\n \"destroy\",\n \"resize\",\n \"render\",\n \"input\",\n \"output\",\n]);\n\ntype SignalBinding = {\n instance: GObject.Object;\n signal: string;\n handler?: SignalHandler | undefined;\n};\n\nexport class SignalStore {\n private instanceHandlers: Map<GObject.Object, Map<string, number>> = new Map();\n\n private blockDepth: number = 0;\n\n private getInstanceMap(instance: GObject.Object): Map<string, number> {\n let instanceMap = this.instanceHandlers.get(instance);\n if (!instanceMap) {\n instanceMap = new Map();\n this.instanceHandlers.set(instance, instanceMap);\n }\n return instanceMap;\n }\n\n private gateHandler(handler: SignalHandler, signal: string, instance: GObject.Object): SignalHandler {\n return (...args: unknown[]) => {\n if (this.blockDepth > 0 && !UNBLOCKED_SIGNALS.has(signal)) {\n return;\n }\n return handler(...args, instance);\n };\n }\n\n private disconnect(instance: GObject.Object, signal: string): void {\n const instanceMap = this.instanceHandlers.get(instance);\n if (!instanceMap) return;\n const handlerId = instanceMap.get(signal);\n if (handlerId === undefined) return;\n instance.disconnect(handlerId);\n instanceMap.delete(signal);\n if (instanceMap.size === 0) this.instanceHandlers.delete(instance);\n }\n\n private connect(binding: SignalBinding & { handler: SignalHandler }): void {\n const { instance, signal, handler } = binding;\n const gatedHandler = this.gateHandler(handler, signal, instance);\n const handlerId = instance.connect(signal, gatedHandler);\n this.getInstanceMap(instance).set(signal, handlerId);\n }\n\n public set(binding: SignalBinding): void {\n const { instance, signal, handler } = binding;\n this.disconnect(instance, signal);\n\n if (handler) {\n this.connect({ instance, signal, handler });\n }\n }\n\n public clear(instance: GObject.Object): void {\n const instanceMap = this.instanceHandlers.get(instance);\n\n if (instanceMap) {\n for (const [, handlerId] of instanceMap) {\n instance.disconnect(handlerId);\n }\n\n this.instanceHandlers.delete(instance);\n }\n }\n\n public block(): void {\n this.blockDepth += 1;\n }\n\n public unblock(): void {\n if (this.blockDepth > 0) this.blockDepth -= 1;\n }\n}\n\nconst signalStores = new WeakMap<object, SignalStore>();\n\nexport function getSignalStore(rootContainer: object): SignalStore {\n let store = signalStores.get(rootContainer);\n if (!store) {\n store = new SignalStore();\n signalStores.set(rootContainer, store);\n }\n return store;\n}\n"]}
@@ -1,36 +0,0 @@
1
- import * as GObject from "@gtkx/gi/gobject";
2
- import { type RootElement } from "./root-element.js";
3
- import { type SignalStore } from "./signal-store.js";
4
- import type { Container, Props } from "./types.js";
5
- import { type WrapperNode } from "./wrapper-node.js";
6
- import type { WrapperKind } from "./wrapper-protocol.js";
7
- export type Node = GObject.Object | WrapperNode | RootElement;
8
- export type ElementHandler = {
9
- attach(anchor?: GObject.Object | null, fresh?: boolean): void;
10
- detach(): void;
11
- };
12
- export type ElementMapping = (child: Node, parent: Node) => ElementHandler | null;
13
- export type State = {
14
- kind?: WrapperKind | undefined;
15
- props: Props;
16
- parent: Node | null;
17
- children: Node[];
18
- rootContainer: Container;
19
- signalStore: SignalStore;
20
- adoptedInstance?: GObject.Object | undefined;
21
- hidden?: boolean | undefined;
22
- visibleWhenShown?: boolean | undefined;
23
- };
24
- type StateSeed = {
25
- kind?: WrapperKind;
26
- props: Props;
27
- rootContainer: Container;
28
- };
29
- export declare const registerState: (node: Node, { kind, props, rootContainer }: StateSeed) => State;
30
- export declare const ensureState: (container: Container) => State;
31
- export declare const registeredStateOf: (node: Node) => State | undefined;
32
- export declare const stateOf: (node: Node) => State;
33
- export declare const hasWrapperKind: (node: Node, kind: WrapperKind) => boolean;
34
- export declare const closestInstance: <T extends Node>(node: Node, matches: (node: Node) => node is T) => T | null;
35
- export {};
36
- //# sourceMappingURL=state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/reconciler/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC;AAE9D,MAAM,MAAM,cAAc,GAAG;IACzB,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9D,MAAM,IAAI,IAAI,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,KAAK,cAAc,GAAG,IAAI,CAAC;AAElF,MAAM,MAAM,KAAK,GAAG;IAChB,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,aAAa,EAAE,SAAS,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAC7C,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC1C,CAAC;AAIF,KAAK,SAAS,GAAG;IACb,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,SAAS,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,aAAa,SAAU,IAAI,kCAAkC,SAAS,KAAG,KAWrF,CAAC;AAEF,eAAO,MAAM,WAAW,cAAe,SAAS,KAAG,KAC6C,CAAC;AAEjG,eAAO,MAAM,iBAAiB,SAAU,IAAI,KAAG,KAAK,GAAG,SAA+B,CAAC;AAEvF,eAAO,MAAM,OAAO,SAAU,IAAI,KAAG,KAKpC,CAAC;AAEF,eAAO,MAAM,cAAc,SAAU,IAAI,QAAQ,WAAW,KAAG,OACT,CAAC;AAEvD,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,IAAI,QAAQ,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,KAAG,CAAC,GAAG,IAOpG,CAAC"}
@@ -1,38 +0,0 @@
1
- import * as GObject from "@gtkx/gi/gobject";
2
- import { isRootElement } from "./root-element.js";
3
- import { getSignalStore } from "./signal-store.js";
4
- import { isWrapperNode } from "./wrapper-node.js";
5
- const stateMap = new WeakMap();
6
- export const registerState = (node, { kind, props, rootContainer }) => {
7
- const state = {
8
- kind,
9
- props,
10
- parent: null,
11
- children: [],
12
- rootContainer,
13
- signalStore: getSignalStore(rootContainer),
14
- };
15
- stateMap.set(node, state);
16
- return state;
17
- };
18
- export const ensureState = (container) => stateMap.get(container) ?? registerState(container, { props: {}, rootContainer: container });
19
- export const registeredStateOf = (node) => stateMap.get(node);
20
- export const stateOf = (node) => {
21
- const state = stateMap.get(node);
22
- if (state)
23
- return state;
24
- if (node instanceof GObject.Object || isRootElement(node))
25
- return ensureState(node);
26
- throw new Error("reconciler node has no registered state");
27
- };
28
- export const hasWrapperKind = (node, kind) => isWrapperNode(node) && stateOf(node).kind === kind;
29
- export const closestInstance = (node, matches) => {
30
- let current = node;
31
- while (current !== null) {
32
- if (matches(current))
33
- return current;
34
- current = stateOf(current).parent;
35
- }
36
- return null;
37
- };
38
- //# sourceMappingURL=state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/reconciler/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAoB,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAwBpE,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAe,CAAC;AAQ5C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAa,EAAS,EAAE;IAC1F,MAAM,KAAK,GAAU;QACjB,IAAI;QACJ,KAAK;QACL,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,EAAE;QACZ,aAAa;QACb,WAAW,EAAE,cAAc,CAAC,aAAa,CAAC;KAC7C,CAAC;IACF,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1B,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAoB,EAAS,EAAE,CACvD,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC;AAEjG,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAU,EAAqB,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEvF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAU,EAAS,EAAE;IACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,IAAI,YAAY,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC;QAAE,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IACpF,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAU,EAAE,IAAiB,EAAW,EAAE,CACrE,aAAa,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;AAEvD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAiB,IAAU,EAAE,OAAkC,EAAY,EAAE;IACxG,IAAI,OAAO,GAAgB,IAAI,CAAC;IAChC,OAAO,OAAO,KAAK,IAAI,EAAE,CAAC;QACtB,IAAI,OAAO,CAAC,OAAO,CAAC;YAAE,OAAO,OAAO,CAAC;QACrC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IACtC,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC","sourcesContent":["import * as GObject from \"@gtkx/gi/gobject\";\nimport { isRootElement, type RootElement } from \"./root-element.js\";\nimport { getSignalStore, type SignalStore } from \"./signal-store.js\";\nimport type { Container, Props } from \"./types.js\";\nimport { isWrapperNode, type WrapperNode } from \"./wrapper-node.js\";\nimport type { WrapperKind } from \"./wrapper-protocol.js\";\n\nexport type Node = GObject.Object | WrapperNode | RootElement;\n\nexport type ElementHandler = {\n attach(anchor?: GObject.Object | null, fresh?: boolean): void;\n detach(): void;\n};\n\nexport type ElementMapping = (child: Node, parent: Node) => ElementHandler | null;\n\nexport type State = {\n kind?: WrapperKind | undefined;\n props: Props;\n parent: Node | null;\n children: Node[];\n rootContainer: Container;\n signalStore: SignalStore;\n adoptedInstance?: GObject.Object | undefined;\n hidden?: boolean | undefined;\n visibleWhenShown?: boolean | undefined;\n};\n\nconst stateMap = new WeakMap<Node, State>();\n\ntype StateSeed = {\n kind?: WrapperKind;\n props: Props;\n rootContainer: Container;\n};\n\nexport const registerState = (node: Node, { kind, props, rootContainer }: StateSeed): State => {\n const state: State = {\n kind,\n props,\n parent: null,\n children: [],\n rootContainer,\n signalStore: getSignalStore(rootContainer),\n };\n stateMap.set(node, state);\n return state;\n};\n\nexport const ensureState = (container: Container): State =>\n stateMap.get(container) ?? registerState(container, { props: {}, rootContainer: container });\n\nexport const registeredStateOf = (node: Node): State | undefined => stateMap.get(node);\n\nexport const stateOf = (node: Node): State => {\n const state = stateMap.get(node);\n if (state) return state;\n if (node instanceof GObject.Object || isRootElement(node)) return ensureState(node);\n throw new Error(\"reconciler node has no registered state\");\n};\n\nexport const hasWrapperKind = (node: Node, kind: WrapperKind): boolean =>\n isWrapperNode(node) && stateOf(node).kind === kind;\n\nexport const closestInstance = <T extends Node>(node: Node, matches: (node: Node) => node is T): T | null => {\n let current: Node | null = node;\n while (current !== null) {\n if (matches(current)) return current;\n current = stateOf(current).parent;\n }\n return null;\n};\n"]}
@@ -1,17 +0,0 @@
1
- import * as Gtk from "@gtkx/gi/gtk";
2
- export declare class TextBufferController {
3
- private managesContent;
4
- private owner;
5
- constructor(owner: Gtk.TextBuffer);
6
- private resolveView;
7
- private hasManagedChildren;
8
- rebuild: () => void;
9
- private clearBuffer;
10
- private insertChildren;
11
- private insertChild;
12
- private insertTag;
13
- private insertAnchor;
14
- private insertPaintable;
15
- private insertText;
16
- }
17
- //# sourceMappingURL=text-buffer-controller.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-buffer-controller.d.ts","sourceRoot":"","sources":["../../src/reconciler/text-buffer-controller.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAKpC,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,KAAK,CAAiB;IAE9B,YAAY,KAAK,EAAE,GAAG,CAAC,UAAU,EAEhC;IAED,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,kBAAkB;IAInB,OAAO,QAAO,IAAI,CAcvB;IAEF,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,UAAU;CAIrB"}
@@ -1,102 +0,0 @@
1
- import * as GObject from "@gtkx/gi/gobject";
2
- import * as Gtk from "@gtkx/gi/gtk";
3
- import { unparentWidget } from "./container-attach.js";
4
- import { stateOf } from "./state.js";
5
- import { isAnchorNode, isBufferContentNode, isBufferTextNode, isPaintableNode } from "./text-node.js";
6
- export class TextBufferController {
7
- managesContent = false;
8
- owner;
9
- constructor(owner) {
10
- this.owner = owner;
11
- }
12
- resolveView() {
13
- let ancestor = stateOf(this.owner).parent;
14
- while (ancestor && !(ancestor instanceof GObject.Object))
15
- ancestor = stateOf(ancestor).parent;
16
- return ancestor instanceof Gtk.TextView ? ancestor : null;
17
- }
18
- hasManagedChildren() {
19
- return stateOf(this.owner).children.some((child) => isBufferContentNode(child) || child instanceof Gtk.TextTag);
20
- }
21
- rebuild = () => {
22
- const buffer = this.owner;
23
- if (this.hasManagedChildren())
24
- this.managesContent = true;
25
- if (!this.managesContent)
26
- return;
27
- const state = stateOf(this.owner);
28
- buffer.beginIrreversibleAction();
29
- try {
30
- this.clearBuffer(buffer);
31
- this.insertChildren(buffer, state.children);
32
- }
33
- finally {
34
- buffer.endIrreversibleAction();
35
- }
36
- };
37
- clearBuffer(buffer) {
38
- const start = buffer.getStartIter();
39
- const end = buffer.getEndIter();
40
- if (!start.equal(end))
41
- buffer.delete(start, end);
42
- const tagTable = buffer.getTagTable();
43
- const tags = [];
44
- tagTable.foreach((tag) => tags.push(tag));
45
- for (const tag of tags)
46
- tagTable.remove(tag);
47
- }
48
- insertChildren(buffer, children) {
49
- for (const child of children) {
50
- this.insertChild(buffer, child);
51
- }
52
- }
53
- insertChild(buffer, child) {
54
- if (stateOf(child).hidden)
55
- return;
56
- if (isBufferTextNode(child)) {
57
- this.insertText(buffer, stateOf(child).props.text);
58
- }
59
- else if (isPaintableNode(child)) {
60
- this.insertPaintable(buffer, stateOf(child).props.paintable);
61
- }
62
- else if (isAnchorNode(child)) {
63
- this.insertAnchor(buffer, child);
64
- }
65
- else if (child instanceof Gtk.TextTag) {
66
- this.insertTag(buffer, child);
67
- }
68
- }
69
- insertTag(buffer, tag) {
70
- const tagTable = buffer.getTagTable();
71
- if (tag.name && !tagTable.lookup(tag.name))
72
- tagTable.add(tag);
73
- const start = buffer.getCharCount();
74
- this.insertChildren(buffer, stateOf(tag).children);
75
- const end = buffer.getCharCount();
76
- if (end > start) {
77
- buffer.applyTag(tag, buffer.getIterAtOffset(start), buffer.getIterAtOffset(end));
78
- }
79
- }
80
- insertAnchor(buffer, node) {
81
- const child = stateOf(node).children[0];
82
- const replacement = stateOf(node).props.replacementChar;
83
- const anchor = typeof replacement === "string"
84
- ? Gtk.TextChildAnchor.newWithReplacement(replacement)
85
- : Gtk.TextChildAnchor.new();
86
- buffer.insertChildAnchor(buffer.getEndIter(), anchor);
87
- const view = this.resolveView();
88
- if (view && child instanceof Gtk.Widget) {
89
- unparentWidget(child);
90
- view.addChildAtAnchor(child, anchor);
91
- }
92
- }
93
- insertPaintable(buffer, paintable) {
94
- buffer.insertPaintable(buffer.getEndIter(), paintable);
95
- }
96
- insertText(buffer, text) {
97
- if (text.length === 0)
98
- return;
99
- buffer.insert(buffer.getEndIter(), text, -1);
100
- }
101
- }
102
- //# sourceMappingURL=text-buffer-controller.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-buffer-controller.js","sourceRoot":"","sources":["../../src/reconciler/text-buffer-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as Gdk from \"@gtkx/gi/gdk\";\nimport * as GObject from \"@gtkx/gi/gobject\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport { unparentWidget } from \"./container-attach.js\";\nimport { type Node, stateOf } from \"./state.js\";\nimport { isAnchorNode, isBufferContentNode, isBufferTextNode, isPaintableNode } from \"./text-node.js\";\n\nexport class TextBufferController {\n private managesContent = false;\n private owner: Gtk.TextBuffer;\n\n constructor(owner: Gtk.TextBuffer) {\n this.owner = owner;\n }\n\n private resolveView(): Gtk.TextView | null {\n let ancestor = stateOf(this.owner).parent;\n while (ancestor && !(ancestor instanceof GObject.Object)) ancestor = stateOf(ancestor).parent;\n return ancestor instanceof Gtk.TextView ? ancestor : null;\n }\n\n private hasManagedChildren(): boolean {\n return stateOf(this.owner).children.some((child) => isBufferContentNode(child) || child instanceof Gtk.TextTag);\n }\n\n public rebuild = (): void => {\n const buffer = this.owner;\n\n if (this.hasManagedChildren()) this.managesContent = true;\n if (!this.managesContent) return;\n\n const state = stateOf(this.owner);\n buffer.beginIrreversibleAction();\n try {\n this.clearBuffer(buffer);\n this.insertChildren(buffer, state.children);\n } finally {\n buffer.endIrreversibleAction();\n }\n };\n\n private clearBuffer(buffer: Gtk.TextBuffer): void {\n const start = buffer.getStartIter();\n const end = buffer.getEndIter();\n if (!start.equal(end)) buffer.delete(start, end);\n\n const tagTable = buffer.getTagTable();\n const tags: Gtk.TextTag[] = [];\n tagTable.foreach((tag) => tags.push(tag));\n for (const tag of tags) tagTable.remove(tag);\n }\n\n private insertChildren(buffer: Gtk.TextBuffer, children: Node[]): void {\n for (const child of children) {\n this.insertChild(buffer, child);\n }\n }\n\n private insertChild(buffer: Gtk.TextBuffer, child: Node): void {\n if (stateOf(child).hidden) return;\n if (isBufferTextNode(child)) {\n this.insertText(buffer, stateOf(child).props.text as string);\n } else if (isPaintableNode(child)) {\n this.insertPaintable(buffer, stateOf(child).props.paintable as Gdk.Paintable);\n } else if (isAnchorNode(child)) {\n this.insertAnchor(buffer, child);\n } else if (child instanceof Gtk.TextTag) {\n this.insertTag(buffer, child);\n }\n }\n\n private insertTag(buffer: Gtk.TextBuffer, tag: Gtk.TextTag): void {\n const tagTable = buffer.getTagTable();\n if (tag.name && !tagTable.lookup(tag.name)) tagTable.add(tag);\n\n const start = buffer.getCharCount();\n this.insertChildren(buffer, stateOf(tag).children);\n const end = buffer.getCharCount();\n if (end > start) {\n buffer.applyTag(tag, buffer.getIterAtOffset(start), buffer.getIterAtOffset(end));\n }\n }\n\n private insertAnchor(buffer: Gtk.TextBuffer, node: Node): void {\n const child = stateOf(node).children[0];\n const replacement = stateOf(node).props.replacementChar;\n const anchor =\n typeof replacement === \"string\"\n ? Gtk.TextChildAnchor.newWithReplacement(replacement)\n : Gtk.TextChildAnchor.new();\n buffer.insertChildAnchor(buffer.getEndIter(), anchor);\n const view = this.resolveView();\n if (view && child instanceof Gtk.Widget) {\n unparentWidget(child);\n view.addChildAtAnchor(child, anchor);\n }\n }\n\n private insertPaintable(buffer: Gtk.TextBuffer, paintable: Gdk.Paintable): void {\n buffer.insertPaintable(buffer.getEndIter(), paintable);\n }\n\n private insertText(buffer: Gtk.TextBuffer, text: string): void {\n if (text.length === 0) return;\n buffer.insert(buffer.getEndIter(), text, -1);\n }\n}\n"]}
@@ -1,3 +0,0 @@
1
- import type { Node } from "./state.js";
2
- export declare const scheduleBufferRebuild: (node: Node) => void;
3
- //# sourceMappingURL=text-buffer-rebuild.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-buffer-rebuild.d.ts","sourceRoot":"","sources":["../../src/reconciler/text-buffer-rebuild.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,eAAO,MAAM,qBAAqB,SAAU,IAAI,KAAG,IAMlD,CAAC"}
@@ -1,7 +0,0 @@
1
- import * as Gtk from "@gtkx/gi/gtk";
2
- import { scheduleContentRebuild } from "./content-rebuild.js";
3
- import { TextBufferController } from "./text-buffer-controller.js";
4
- export const scheduleBufferRebuild = (node) => {
5
- scheduleContentRebuild(node, (candidate) => candidate instanceof Gtk.TextBuffer, (owner) => new TextBufferController(owner).rebuild);
6
- };
7
- //# sourceMappingURL=text-buffer-rebuild.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-buffer-rebuild.js","sourceRoot":"","sources":["../../src/reconciler/text-buffer-rebuild.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAU,EAAQ,EAAE;IACtD,sBAAsB,CAClB,IAAI,EACJ,CAAC,SAAS,EAA+B,EAAE,CAAC,SAAS,YAAY,GAAG,CAAC,UAAU,EAC/E,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC,OAAO,CACrD,CAAC;AACN,CAAC,CAAC","sourcesContent":["import * as Gtk from \"@gtkx/gi/gtk\";\nimport { scheduleContentRebuild } from \"./content-rebuild.js\";\nimport type { Node } from \"./state.js\";\nimport { TextBufferController } from \"./text-buffer-controller.js\";\n\nexport const scheduleBufferRebuild = (node: Node): void => {\n scheduleContentRebuild(\n node,\n (candidate): candidate is Gtk.TextBuffer => candidate instanceof Gtk.TextBuffer,\n (owner) => new TextBufferController(owner).rebuild,\n );\n};\n"]}
@@ -1,7 +0,0 @@
1
- import { type Node } from "./state.js";
2
- export declare const isBufferTextNode: (node: Node) => boolean;
3
- export declare const isPaintableNode: (node: Node) => boolean;
4
- export declare const isAnchorNode: (node: Node) => boolean;
5
- export declare const isBufferContentNode: (node: Node) => boolean;
6
- export declare const isLabelTextNode: (node: Node) => boolean;
7
- //# sourceMappingURL=text-node.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-node.d.ts","sourceRoot":"","sources":["../../src/reconciler/text-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvD,eAAO,MAAM,gBAAgB,SAAU,IAAI,KAAG,OAAiD,CAAC;AAEhG,eAAO,MAAM,eAAe,SAAU,IAAI,KAAG,OAAoD,CAAC;AAElG,eAAO,MAAM,YAAY,SAAU,IAAI,KAAG,OAAiD,CAAC;AAE5F,eAAO,MAAM,mBAAmB,SAAU,IAAI,KAAG,OACwB,CAAC;AAE1E,eAAO,MAAM,eAAe,SAAU,IAAI,KAAG,OAAgD,CAAC"}
@@ -1,8 +0,0 @@
1
- import { hasWrapperKind } from "./state.js";
2
- import { BUFFER_TEXT_KIND, LABEL_TEXT_KIND, TEXT_ANCHOR_KIND, TEXT_PAINTABLE_KIND } from "./wrapper-protocol.js";
3
- export const isBufferTextNode = (node) => hasWrapperKind(node, BUFFER_TEXT_KIND);
4
- export const isPaintableNode = (node) => hasWrapperKind(node, TEXT_PAINTABLE_KIND);
5
- export const isAnchorNode = (node) => hasWrapperKind(node, TEXT_ANCHOR_KIND);
6
- export const isBufferContentNode = (node) => isBufferTextNode(node) || isPaintableNode(node) || isAnchorNode(node);
7
- export const isLabelTextNode = (node) => hasWrapperKind(node, LABEL_TEXT_KIND);
8
- //# sourceMappingURL=text-node.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-node.js","sourceRoot":"","sources":["../../src/reconciler/text-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAa,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAU,EAAW,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAEhG,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAU,EAAW,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AAElG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAU,EAAW,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAE5F,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAU,EAAW,EAAE,CACvD,gBAAgB,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;AAE1E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAU,EAAW,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC","sourcesContent":["import { hasWrapperKind, type Node } from \"./state.js\";\nimport { BUFFER_TEXT_KIND, LABEL_TEXT_KIND, TEXT_ANCHOR_KIND, TEXT_PAINTABLE_KIND } from \"./wrapper-protocol.js\";\n\nexport const isBufferTextNode = (node: Node): boolean => hasWrapperKind(node, BUFFER_TEXT_KIND);\n\nexport const isPaintableNode = (node: Node): boolean => hasWrapperKind(node, TEXT_PAINTABLE_KIND);\n\nexport const isAnchorNode = (node: Node): boolean => hasWrapperKind(node, TEXT_ANCHOR_KIND);\n\nexport const isBufferContentNode = (node: Node): boolean =>\n isBufferTextNode(node) || isPaintableNode(node) || isAnchorNode(node);\n\nexport const isLabelTextNode = (node: Node): boolean => hasWrapperKind(node, LABEL_TEXT_KIND);\n"]}
@@ -1,5 +0,0 @@
1
- import type * as GObject from "@gtkx/gi/gobject";
2
- import type { RootElement } from "./root-element.js";
3
- export type Container = GObject.Object | RootElement;
4
- export type Props = Record<string, unknown>;
5
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/reconciler/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC;AAErD,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/reconciler/types.ts"],"names":[],"mappings":"","sourcesContent":["import type * as GObject from \"@gtkx/gi/gobject\";\nimport type { RootElement } from \"./root-element.js\";\n\nexport type Container = GObject.Object | RootElement;\n\nexport type Props = Record<string, unknown>;\n"]}
@@ -1,6 +0,0 @@
1
- import { type Node } from "./state.js";
2
- export declare const hideNode: (node: Node) => void;
3
- export declare const unhideNode: (node: Node) => void;
4
- export declare const reassertHidden: (node: Node) => void;
5
- export declare const setTextNodeHidden: (node: Node, hidden: boolean) => void;
6
- //# sourceMappingURL=visibility.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"visibility.d.ts","sourceRoot":"","sources":["../../src/reconciler/visibility.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAW,MAAM,YAAY,CAAC;AAUhD,eAAO,MAAM,QAAQ,SAAU,IAAI,KAAG,IAQrC,CAAC;AAEF,eAAO,MAAM,UAAU,SAAU,IAAI,KAAG,IAQvC,CAAC;AAEF,eAAO,MAAM,cAAc,SAAU,IAAI,KAAG,IAO3C,CAAC;AAOF,eAAO,MAAM,iBAAiB,SAAU,IAAI,UAAU,OAAO,KAAG,IAK/D,CAAC"}
@@ -1,57 +0,0 @@
1
- import * as Gtk from "@gtkx/gi/gtk";
2
- import { scheduleLabelTextRebuild } from "./label-text-rebuild.js";
3
- import { stateOf } from "./state.js";
4
- import { scheduleBufferRebuild } from "./text-buffer-rebuild.js";
5
- import { isBufferContentNode } from "./text-node.js";
6
- const widgetOf = (node) => {
7
- if (node instanceof Gtk.Widget)
8
- return node;
9
- const adopted = stateOf(node).adoptedInstance;
10
- return adopted instanceof Gtk.Widget ? adopted : null;
11
- };
12
- export const hideNode = (node) => {
13
- const state = stateOf(node);
14
- if (state.hidden)
15
- return;
16
- state.hidden = true;
17
- const widget = widgetOf(node);
18
- if (!widget)
19
- return;
20
- state.visibleWhenShown = widget.getVisible();
21
- widget.setVisible(false);
22
- };
23
- export const unhideNode = (node) => {
24
- const state = stateOf(node);
25
- if (!state.hidden)
26
- return;
27
- state.hidden = false;
28
- const widget = widgetOf(node);
29
- if (!widget)
30
- return;
31
- widget.setVisible(state.visibleWhenShown ?? true);
32
- state.visibleWhenShown = undefined;
33
- };
34
- export const reassertHidden = (node) => {
35
- const state = stateOf(node);
36
- if (!state.hidden)
37
- return;
38
- const widget = widgetOf(node);
39
- if (!widget?.getVisible())
40
- return;
41
- state.visibleWhenShown = true;
42
- widget.setVisible(false);
43
- };
44
- const scheduleTextNodeRebuild = (node) => {
45
- if (isBufferContentNode(node))
46
- scheduleBufferRebuild(node);
47
- else
48
- scheduleLabelTextRebuild(node);
49
- };
50
- export const setTextNodeHidden = (node, hidden) => {
51
- const state = stateOf(node);
52
- if ((state.hidden ?? false) === hidden)
53
- return;
54
- state.hidden = hidden;
55
- scheduleTextNodeRebuild(node);
56
- };
57
- //# sourceMappingURL=visibility.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"visibility.js","sourceRoot":"","sources":["../../src/reconciler/visibility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAa,OAAO,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAqB,EAAE;IAC/C,IAAI,IAAI,YAAY,GAAG,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC;IAC9C,OAAO,OAAO,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAQ,EAAE;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO;IACzB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,KAAK,CAAC,gBAAgB,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAC7C,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAU,EAAQ,EAAE;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO;IAC1B,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;IACrB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC;IAClD,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAU,EAAQ,EAAE;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO;IAC1B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE;QAAE,OAAO;IAClC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,IAAU,EAAQ,EAAE;IACjD,IAAI,mBAAmB,CAAC,IAAI,CAAC;QAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;;QACtD,wBAAwB,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAU,EAAE,MAAe,EAAQ,EAAE;IACnE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,MAAM;QAAE,OAAO;IAC/C,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC","sourcesContent":["import * as Gtk from \"@gtkx/gi/gtk\";\nimport { scheduleLabelTextRebuild } from \"./label-text-rebuild.js\";\nimport { type Node, stateOf } from \"./state.js\";\nimport { scheduleBufferRebuild } from \"./text-buffer-rebuild.js\";\nimport { isBufferContentNode } from \"./text-node.js\";\n\nconst widgetOf = (node: Node): Gtk.Widget | null => {\n if (node instanceof Gtk.Widget) return node;\n const adopted = stateOf(node).adoptedInstance;\n return adopted instanceof Gtk.Widget ? adopted : null;\n};\n\nexport const hideNode = (node: Node): void => {\n const state = stateOf(node);\n if (state.hidden) return;\n state.hidden = true;\n const widget = widgetOf(node);\n if (!widget) return;\n state.visibleWhenShown = widget.getVisible();\n widget.setVisible(false);\n};\n\nexport const unhideNode = (node: Node): void => {\n const state = stateOf(node);\n if (!state.hidden) return;\n state.hidden = false;\n const widget = widgetOf(node);\n if (!widget) return;\n widget.setVisible(state.visibleWhenShown ?? true);\n state.visibleWhenShown = undefined;\n};\n\nexport const reassertHidden = (node: Node): void => {\n const state = stateOf(node);\n if (!state.hidden) return;\n const widget = widgetOf(node);\n if (!widget?.getVisible()) return;\n state.visibleWhenShown = true;\n widget.setVisible(false);\n};\n\nconst scheduleTextNodeRebuild = (node: Node): void => {\n if (isBufferContentNode(node)) scheduleBufferRebuild(node);\n else scheduleLabelTextRebuild(node);\n};\n\nexport const setTextNodeHidden = (node: Node, hidden: boolean): void => {\n const state = stateOf(node);\n if ((state.hidden ?? false) === hidden) return;\n state.hidden = hidden;\n scheduleTextNodeRebuild(node);\n};\n"]}
@@ -1,6 +0,0 @@
1
- import { type ElementMapping } from "./state.js";
2
- export declare const containerChildMapping: ElementMapping;
3
- export declare const objectPropMapping: ElementMapping;
4
- export declare const containerPropMapping: ElementMapping;
5
- export declare const lazyElementMapping: ElementMapping;
6
- //# sourceMappingURL=wrapper-apply.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wrapper-apply.d.ts","sourceRoot":"","sources":["../../src/reconciler/wrapper-apply.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,cAAc,EAAwE,MAAM,YAAY,CAAC;AA+EvH,eAAO,MAAM,qBAAqB,EAAE,cAOnC,CAAC;AAyBF,eAAO,MAAM,iBAAiB,EAAE,cAqB/B,CAAC;AAiBF,eAAO,MAAM,oBAAoB,EAAE,cAqBlC,CAAC;AA+GF,eAAO,MAAM,kBAAkB,EAAE,cAahC,CAAC"}