@gtkx/codegen 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 (521) hide show
  1. package/dist/analysis/descriptor-render.d.ts +18 -11
  2. package/dist/analysis/descriptor-render.d.ts.map +1 -1
  3. package/dist/analysis/descriptor-render.js +275 -152
  4. package/dist/analysis/descriptor-render.js.map +1 -1
  5. package/dist/analysis/descriptor.d.ts +37 -34
  6. package/dist/analysis/descriptor.d.ts.map +1 -1
  7. package/dist/analysis/descriptor.js +34 -30
  8. package/dist/analysis/descriptor.js.map +1 -1
  9. package/dist/analysis/inheritance.d.ts +16 -16
  10. package/dist/analysis/inheritance.d.ts.map +1 -1
  11. package/dist/analysis/inheritance.js +139 -84
  12. package/dist/analysis/inheritance.js.map +1 -1
  13. package/dist/analysis/param-structure.d.ts +14 -13
  14. package/dist/analysis/param-structure.d.ts.map +1 -1
  15. package/dist/analysis/param-structure.js +104 -53
  16. package/dist/analysis/param-structure.js.map +1 -1
  17. package/dist/analysis/ts-type.d.ts +6 -5
  18. package/dist/analysis/ts-type.d.ts.map +1 -1
  19. package/dist/analysis/ts-type.js +69 -23
  20. package/dist/analysis/ts-type.js.map +1 -1
  21. package/dist/compile.d.ts +5 -5
  22. package/dist/compile.d.ts.map +1 -1
  23. package/dist/compile.js +70 -63
  24. package/dist/compile.js.map +1 -1
  25. package/dist/docs/api-reference.d.ts +12 -11
  26. package/dist/docs/api-reference.d.ts.map +1 -1
  27. package/dist/docs/api-reference.js +194 -121
  28. package/dist/docs/api-reference.js.map +1 -1
  29. package/dist/docs/element-page.d.ts +6 -9
  30. package/dist/docs/element-page.d.ts.map +1 -1
  31. package/dist/docs/element-page.js +68 -133
  32. package/dist/docs/element-page.js.map +1 -1
  33. package/dist/docs/pipeline.d.ts +8 -7
  34. package/dist/docs/pipeline.d.ts.map +1 -1
  35. package/dist/docs/pipeline.js +79 -53
  36. package/dist/docs/pipeline.js.map +1 -1
  37. package/dist/docs/render.d.ts +21 -19
  38. package/dist/docs/render.d.ts.map +1 -1
  39. package/dist/docs/render.js +80 -71
  40. package/dist/docs/render.js.map +1 -1
  41. package/dist/docs/symbol-page.d.ts +6 -6
  42. package/dist/docs/symbol-page.d.ts.map +1 -1
  43. package/dist/docs/symbol-page.js +126 -84
  44. package/dist/docs/symbol-page.js.map +1 -1
  45. package/dist/fingerprint.d.ts +28 -5
  46. package/dist/fingerprint.d.ts.map +1 -1
  47. package/dist/fingerprint.js +66 -13
  48. package/dist/fingerprint.js.map +1 -1
  49. package/dist/gi.d.ts +13 -0
  50. package/dist/gi.d.ts.map +1 -0
  51. package/dist/gi.js +21 -0
  52. package/dist/gi.js.map +1 -0
  53. package/dist/gir/ancestry.d.ts +4 -3
  54. package/dist/gir/ancestry.d.ts.map +1 -1
  55. package/dist/gir/ancestry.js +12 -15
  56. package/dist/gir/ancestry.js.map +1 -1
  57. package/dist/gir/callback.d.ts +6 -11
  58. package/dist/gir/callback.d.ts.map +1 -1
  59. package/dist/gir/callback.js +6 -7
  60. package/dist/gir/callback.js.map +1 -1
  61. package/dist/gir/class.d.ts +7 -5
  62. package/dist/gir/class.d.ts.map +1 -1
  63. package/dist/gir/class.js +14 -12
  64. package/dist/gir/class.js.map +1 -1
  65. package/dist/gir/enum.d.ts +3 -3
  66. package/dist/gir/enum.d.ts.map +1 -1
  67. package/dist/gir/enum.js +7 -6
  68. package/dist/gir/enum.js.map +1 -1
  69. package/dist/gir/field.d.ts +8 -3
  70. package/dist/gir/field.d.ts.map +1 -1
  71. package/dist/gir/field.js +30 -7
  72. package/dist/gir/field.js.map +1 -1
  73. package/dist/gir/function.d.ts +6 -3
  74. package/dist/gir/function.d.ts.map +1 -1
  75. package/dist/gir/function.js +23 -7
  76. package/dist/gir/function.js.map +1 -1
  77. package/dist/gir/gir-path.d.ts +2 -1
  78. package/dist/gir/gir-path.d.ts.map +1 -1
  79. package/dist/gir/gir-path.js +26 -10
  80. package/dist/gir/gir-path.js.map +1 -1
  81. package/dist/gir/libraries.d.ts +3 -2
  82. package/dist/gir/libraries.d.ts.map +1 -1
  83. package/dist/gir/libraries.js +39 -27
  84. package/dist/gir/libraries.js.map +1 -1
  85. package/dist/gir/library.d.ts +17 -11
  86. package/dist/gir/library.d.ts.map +1 -1
  87. package/dist/gir/library.js +116 -92
  88. package/dist/gir/library.js.map +1 -1
  89. package/dist/gir/namespace.d.ts +10 -10
  90. package/dist/gir/namespace.d.ts.map +1 -1
  91. package/dist/gir/namespace.js +21 -20
  92. package/dist/gir/namespace.js.map +1 -1
  93. package/dist/gir/nullable-overrides.d.ts +3 -0
  94. package/dist/gir/nullable-overrides.d.ts.map +1 -0
  95. package/dist/gir/nullable-overrides.js +5 -0
  96. package/dist/gir/nullable-overrides.js.map +1 -0
  97. package/dist/gir/parameter.d.ts +14 -12
  98. package/dist/gir/parameter.d.ts.map +1 -1
  99. package/dist/gir/parameter.js +27 -18
  100. package/dist/gir/parameter.js.map +1 -1
  101. package/dist/gir/parse.d.ts +12 -13
  102. package/dist/gir/parse.d.ts.map +1 -1
  103. package/dist/gir/parse.js +50 -40
  104. package/dist/gir/parse.js.map +1 -1
  105. package/dist/gir/primitives.d.ts +5 -4
  106. package/dist/gir/primitives.d.ts.map +1 -1
  107. package/dist/gir/primitives.js +4 -3
  108. package/dist/gir/primitives.js.map +1 -1
  109. package/dist/gir/property.d.ts +5 -4
  110. package/dist/gir/property.d.ts.map +1 -1
  111. package/dist/gir/property.js +10 -9
  112. package/dist/gir/property.js.map +1 -1
  113. package/dist/gir/record.d.ts +5 -4
  114. package/dist/gir/record.d.ts.map +1 -1
  115. package/dist/gir/record.js +13 -12
  116. package/dist/gir/record.js.map +1 -1
  117. package/dist/gir/size.d.ts +6 -5
  118. package/dist/gir/size.d.ts.map +1 -1
  119. package/dist/gir/size.js +49 -47
  120. package/dist/gir/size.js.map +1 -1
  121. package/dist/gir/type-id.d.ts +17 -15
  122. package/dist/gir/type-id.d.ts.map +1 -1
  123. package/dist/gir/type-id.js +5 -1
  124. package/dist/gir/type-id.js.map +1 -1
  125. package/dist/gir/type-ref.d.ts +3 -2
  126. package/dist/gir/type-ref.d.ts.map +1 -1
  127. package/dist/gir/type-ref.js +36 -25
  128. package/dist/gir/type-ref.js.map +1 -1
  129. package/dist/gir/type.d.ts +3 -2
  130. package/dist/gir/type.d.ts.map +1 -1
  131. package/dist/gir/type.js.map +1 -1
  132. package/dist/index.d.ts +2 -0
  133. package/dist/index.d.ts.map +1 -1
  134. package/dist/index.js +1 -0
  135. package/dist/index.js.map +1 -1
  136. package/dist/jsx.d.ts +26 -0
  137. package/dist/jsx.d.ts.map +1 -0
  138. package/dist/jsx.js +40 -0
  139. package/dist/jsx.js.map +1 -0
  140. package/dist/khronos/args.d.ts +7 -7
  141. package/dist/khronos/args.d.ts.map +1 -1
  142. package/dist/khronos/args.js +88 -67
  143. package/dist/khronos/args.js.map +1 -1
  144. package/dist/khronos/jsdoc.d.ts +4 -4
  145. package/dist/khronos/jsdoc.d.ts.map +1 -1
  146. package/dist/khronos/jsdoc.js +29 -16
  147. package/dist/khronos/jsdoc.js.map +1 -1
  148. package/dist/khronos/model.d.ts +8 -7
  149. package/dist/khronos/model.d.ts.map +1 -1
  150. package/dist/khronos/model.js +94 -59
  151. package/dist/khronos/model.js.map +1 -1
  152. package/dist/khronos/modules.d.ts +4 -3
  153. package/dist/khronos/modules.d.ts.map +1 -1
  154. package/dist/khronos/modules.js +40 -25
  155. package/dist/khronos/modules.js.map +1 -1
  156. package/dist/khronos/param-pair.d.ts +11 -0
  157. package/dist/khronos/param-pair.d.ts.map +1 -0
  158. package/dist/khronos/param-pair.js +6 -0
  159. package/dist/khronos/param-pair.js.map +1 -0
  160. package/dist/khronos/parse.d.ts +7 -8
  161. package/dist/khronos/parse.d.ts.map +1 -1
  162. package/dist/khronos/parse.js +17 -16
  163. package/dist/khronos/parse.js.map +1 -1
  164. package/dist/khronos/pipeline.d.ts +4 -4
  165. package/dist/khronos/pipeline.d.ts.map +1 -1
  166. package/dist/khronos/pipeline.js +97 -56
  167. package/dist/khronos/pipeline.js.map +1 -1
  168. package/dist/khronos/plan.d.ts +11 -10
  169. package/dist/khronos/plan.d.ts.map +1 -1
  170. package/dist/khronos/plan.js +109 -45
  171. package/dist/khronos/plan.js.map +1 -1
  172. package/dist/khronos/render.d.ts +5 -4
  173. package/dist/khronos/render.d.ts.map +1 -1
  174. package/dist/khronos/render.js +106 -59
  175. package/dist/khronos/render.js.map +1 -1
  176. package/dist/khronos/select.d.ts +4 -4
  177. package/dist/khronos/select.d.ts.map +1 -1
  178. package/dist/khronos/select.js +30 -19
  179. package/dist/khronos/select.js.map +1 -1
  180. package/dist/react/element-config.d.ts +17 -0
  181. package/dist/react/element-config.d.ts.map +1 -0
  182. package/dist/react/element-config.js +61 -0
  183. package/dist/react/element-config.js.map +1 -0
  184. package/dist/runner.d.ts +17 -10
  185. package/dist/runner.d.ts.map +1 -1
  186. package/dist/runner.js +45 -43
  187. package/dist/runner.js.map +1 -1
  188. package/dist/store/compile-store.d.ts +5 -3
  189. package/dist/store/compile-store.d.ts.map +1 -1
  190. package/dist/store/compile-store.js +24 -22
  191. package/dist/store/compile-store.js.map +1 -1
  192. package/dist/store/gi/async.d.ts +2 -1
  193. package/dist/store/gi/async.d.ts.map +1 -1
  194. package/dist/store/gi/async.js +28 -24
  195. package/dist/store/gi/async.js.map +1 -1
  196. package/dist/store/gi/callables.d.ts +26 -20
  197. package/dist/store/gi/callables.d.ts.map +1 -1
  198. package/dist/store/gi/callables.js +162 -100
  199. package/dist/store/gi/callables.js.map +1 -1
  200. package/dist/store/gi/callback.d.ts +3 -2
  201. package/dist/store/gi/callback.d.ts.map +1 -1
  202. package/dist/store/gi/callback.js +6 -3
  203. package/dist/store/gi/callback.js.map +1 -1
  204. package/dist/store/gi/class-struct-record.d.ts +4 -3
  205. package/dist/store/gi/class-struct-record.d.ts.map +1 -1
  206. package/dist/store/gi/class-struct-record.js +33 -15
  207. package/dist/store/gi/class-struct-record.js.map +1 -1
  208. package/dist/store/gi/class.d.ts +2 -1
  209. package/dist/store/gi/class.d.ts.map +1 -1
  210. package/dist/store/gi/class.js +86 -47
  211. package/dist/store/gi/class.js.map +1 -1
  212. package/dist/store/gi/companion.d.ts +2 -1
  213. package/dist/store/gi/companion.d.ts.map +1 -1
  214. package/dist/store/gi/companion.js +8 -5
  215. package/dist/store/gi/companion.js.map +1 -1
  216. package/dist/store/gi/constant.d.ts +3 -2
  217. package/dist/store/gi/constant.d.ts.map +1 -1
  218. package/dist/store/gi/constant.js +25 -8
  219. package/dist/store/gi/constant.js.map +1 -1
  220. package/dist/store/gi/constructor-props.d.ts +3 -2
  221. package/dist/store/gi/constructor-props.d.ts.map +1 -1
  222. package/dist/store/gi/constructor-props.js +17 -10
  223. package/dist/store/gi/constructor-props.js.map +1 -1
  224. package/dist/store/gi/enum.d.ts +3 -2
  225. package/dist/store/gi/enum.d.ts.map +1 -1
  226. package/dist/store/gi/enum.js +14 -11
  227. package/dist/store/gi/enum.js.map +1 -1
  228. package/dist/store/gi/function.d.ts +5 -4
  229. package/dist/store/gi/function.d.ts.map +1 -1
  230. package/dist/store/gi/function.js +50 -23
  231. package/dist/store/gi/function.js.map +1 -1
  232. package/dist/store/gi/gtype-binding.d.ts +4 -4
  233. package/dist/store/gi/gtype-binding.d.ts.map +1 -1
  234. package/dist/store/gi/gtype-binding.js +15 -11
  235. package/dist/store/gi/gtype-binding.js.map +1 -1
  236. package/dist/store/gi/interface.d.ts +2 -1
  237. package/dist/store/gi/interface.d.ts.map +1 -1
  238. package/dist/store/gi/interface.js +36 -18
  239. package/dist/store/gi/interface.js.map +1 -1
  240. package/dist/store/gi/item-comparators.d.ts +3 -2
  241. package/dist/store/gi/item-comparators.d.ts.map +1 -1
  242. package/dist/store/gi/item-comparators.js +33 -21
  243. package/dist/store/gi/item-comparators.js.map +1 -1
  244. package/dist/store/gi/method.d.ts +13 -13
  245. package/dist/store/gi/method.d.ts.map +1 -1
  246. package/dist/store/gi/method.js +187 -130
  247. package/dist/store/gi/method.js.map +1 -1
  248. package/dist/store/gi/param-marshal.d.ts +7 -6
  249. package/dist/store/gi/param-marshal.d.ts.map +1 -1
  250. package/dist/store/gi/param-marshal.js +26 -13
  251. package/dist/store/gi/param-marshal.js.map +1 -1
  252. package/dist/store/gi/pipeline.d.ts +2 -1
  253. package/dist/store/gi/pipeline.d.ts.map +1 -1
  254. package/dist/store/gi/pipeline.js +38 -23
  255. package/dist/store/gi/pipeline.js.map +1 -1
  256. package/dist/store/gi/properties.d.ts +2 -1
  257. package/dist/store/gi/properties.d.ts.map +1 -1
  258. package/dist/store/gi/properties.js +6 -4
  259. package/dist/store/gi/properties.js.map +1 -1
  260. package/dist/store/gi/property-accessor.d.ts +11 -10
  261. package/dist/store/gi/property-accessor.d.ts.map +1 -1
  262. package/dist/store/gi/property-accessor.js +86 -60
  263. package/dist/store/gi/property-accessor.js.map +1 -1
  264. package/dist/store/gi/record-constructor.d.ts +3 -2
  265. package/dist/store/gi/record-constructor.d.ts.map +1 -1
  266. package/dist/store/gi/record-constructor.js +36 -25
  267. package/dist/store/gi/record-constructor.js.map +1 -1
  268. package/dist/store/gi/record-field-accessor.d.ts +8 -8
  269. package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
  270. package/dist/store/gi/record-field-accessor.js +171 -99
  271. package/dist/store/gi/record-field-accessor.js.map +1 -1
  272. package/dist/store/gi/record-layout.d.ts +6 -5
  273. package/dist/store/gi/record-layout.d.ts.map +1 -1
  274. package/dist/store/gi/record-layout.js +75 -39
  275. package/dist/store/gi/record-layout.js.map +1 -1
  276. package/dist/store/gi/record.d.ts +2 -1
  277. package/dist/store/gi/record.d.ts.map +1 -1
  278. package/dist/store/gi/record.js +19 -13
  279. package/dist/store/gi/record.js.map +1 -1
  280. package/dist/store/gi/registration.d.ts +3 -3
  281. package/dist/store/gi/registration.d.ts.map +1 -1
  282. package/dist/store/gi/registration.js +3 -2
  283. package/dist/store/gi/registration.js.map +1 -1
  284. package/dist/store/gi/return-wrap.d.ts +2 -2
  285. package/dist/store/gi/return-wrap.d.ts.map +1 -1
  286. package/dist/store/gi/return-wrap.js +43 -22
  287. package/dist/store/gi/return-wrap.js.map +1 -1
  288. package/dist/store/gi/runtime-override.d.ts +2 -1
  289. package/dist/store/gi/runtime-override.d.ts.map +1 -1
  290. package/dist/store/gi/runtime-override.js +6 -3
  291. package/dist/store/gi/runtime-override.js.map +1 -1
  292. package/dist/store/gi/signal.d.ts +3 -2
  293. package/dist/store/gi/signal.d.ts.map +1 -1
  294. package/dist/store/gi/signal.js +113 -66
  295. package/dist/store/gi/signal.js.map +1 -1
  296. package/dist/store/gi/vtable.d.ts +2 -1
  297. package/dist/store/gi/vtable.d.ts.map +1 -1
  298. package/dist/store/gi/vtable.js +60 -30
  299. package/dist/store/gi/vtable.js.map +1 -1
  300. package/dist/store/gi-store.d.ts +5 -4
  301. package/dist/store/gi-store.d.ts.map +1 -1
  302. package/dist/store/gi-store.js +4 -2
  303. package/dist/store/gi-store.js.map +1 -1
  304. package/dist/store/jsx/element-components.d.ts +23 -0
  305. package/dist/store/jsx/element-components.d.ts.map +1 -0
  306. package/dist/store/jsx/element-components.js +86 -0
  307. package/dist/store/jsx/element-components.js.map +1 -0
  308. package/dist/store/jsx/element-prop-imports.d.ts +17 -0
  309. package/dist/store/jsx/element-prop-imports.d.ts.map +1 -0
  310. package/dist/store/jsx/element-prop-imports.js +15 -0
  311. package/dist/store/jsx/element-prop-imports.js.map +1 -0
  312. package/dist/store/jsx/element-prop-types.d.ts +10 -0
  313. package/dist/store/jsx/element-prop-types.d.ts.map +1 -0
  314. package/dist/store/jsx/element-prop-types.js +41 -0
  315. package/dist/store/jsx/element-prop-types.js.map +1 -0
  316. package/dist/store/jsx/gir-index.d.ts +16 -0
  317. package/dist/store/jsx/gir-index.d.ts.map +1 -0
  318. package/dist/store/jsx/gir-index.js +33 -0
  319. package/dist/store/jsx/gir-index.js.map +1 -0
  320. package/dist/store/jsx/intrinsic-elements.d.ts +27 -0
  321. package/dist/store/jsx/intrinsic-elements.d.ts.map +1 -0
  322. package/dist/store/jsx/intrinsic-elements.js +128 -0
  323. package/dist/store/jsx/intrinsic-elements.js.map +1 -0
  324. package/dist/store/{react → jsx}/jsx.d.ts +2 -4
  325. package/dist/store/jsx/jsx.d.ts.map +1 -0
  326. package/dist/store/{react → jsx}/jsx.js +110 -71
  327. package/dist/store/jsx/jsx.js.map +1 -0
  328. package/dist/store/jsx/metadata.d.ts +4 -0
  329. package/dist/store/jsx/metadata.d.ts.map +1 -0
  330. package/dist/store/{react → jsx}/metadata.js +148 -69
  331. package/dist/store/jsx/metadata.js.map +1 -0
  332. package/dist/store/jsx/pipeline.d.ts +21 -0
  333. package/dist/store/jsx/pipeline.d.ts.map +1 -0
  334. package/dist/store/{react → jsx}/pipeline.js +36 -15
  335. package/dist/store/jsx/pipeline.js.map +1 -0
  336. package/dist/store/{react → jsx}/props.d.ts +9 -12
  337. package/dist/store/jsx/props.d.ts.map +1 -0
  338. package/dist/store/jsx/props.js +158 -0
  339. package/dist/store/jsx/props.js.map +1 -0
  340. package/dist/store/jsx-store.d.ts +5 -3
  341. package/dist/store/jsx-store.d.ts.map +1 -1
  342. package/dist/store/jsx-store.js +4 -1
  343. package/dist/store/jsx-store.js.map +1 -1
  344. package/dist/store/store-fs.d.ts +14 -12
  345. package/dist/store/store-fs.d.ts.map +1 -1
  346. package/dist/store/store-fs.js +9 -7
  347. package/dist/store/store-fs.js.map +1 -1
  348. package/dist/writer/context.d.ts +2 -1
  349. package/dist/writer/context.d.ts.map +1 -1
  350. package/dist/writer/context.js +12 -6
  351. package/dist/writer/context.js.map +1 -1
  352. package/dist/writer/doc.d.ts +2 -1
  353. package/dist/writer/doc.d.ts.map +1 -1
  354. package/dist/writer/doc.js +13 -7
  355. package/dist/writer/doc.js.map +1 -1
  356. package/dist/writer/emit.d.ts +8 -7
  357. package/dist/writer/emit.d.ts.map +1 -1
  358. package/dist/writer/emit.js +13 -10
  359. package/dist/writer/emit.js.map +1 -1
  360. package/dist/writer/gtk-doc.d.ts +2 -1
  361. package/dist/writer/gtk-doc.d.ts.map +1 -1
  362. package/dist/writer/gtk-doc.js +29 -18
  363. package/dist/writer/gtk-doc.js.map +1 -1
  364. package/dist/writer/imports.d.ts +4 -2
  365. package/dist/writer/imports.d.ts.map +1 -1
  366. package/dist/writer/imports.js +35 -24
  367. package/dist/writer/imports.js.map +1 -1
  368. package/dist/writer/module.d.ts +3 -2
  369. package/dist/writer/module.d.ts.map +1 -1
  370. package/dist/writer/module.js +16 -9
  371. package/dist/writer/module.js.map +1 -1
  372. package/dist/xml.d.ts +4 -0
  373. package/dist/xml.d.ts.map +1 -0
  374. package/dist/xml.js +10 -0
  375. package/dist/xml.js.map +1 -0
  376. package/overrides/cairo/context.ts.ejs +7 -7
  377. package/overrides/cairo/matrix.ts.ejs +2 -2
  378. package/overrides/cairo/recording-surface.ts.ejs +2 -2
  379. package/overrides/cairo/region.ts.ejs +1 -1
  380. package/overrides/cairo/scaled-font.ts.ejs +3 -3
  381. package/package.json +15 -9
  382. package/src/analysis/descriptor-render.ts +484 -168
  383. package/src/analysis/descriptor.ts +162 -125
  384. package/src/analysis/inheritance.ts +286 -98
  385. package/src/analysis/param-structure.ts +188 -57
  386. package/src/analysis/ts-type.ts +112 -26
  387. package/src/compile.ts +103 -76
  388. package/src/docs/api-reference.ts +340 -144
  389. package/src/docs/element-page.ts +137 -146
  390. package/src/docs/pipeline.ts +132 -73
  391. package/src/docs/render.ts +151 -87
  392. package/src/docs/symbol-page.ts +268 -123
  393. package/src/fingerprint.ts +127 -29
  394. package/src/gi.ts +26 -0
  395. package/src/gir/ancestry.ts +26 -14
  396. package/src/gir/callback.ts +10 -15
  397. package/src/gir/class.ts +20 -16
  398. package/src/gir/enum.ts +9 -7
  399. package/src/gir/field.ts +37 -8
  400. package/src/gir/function.ts +33 -9
  401. package/src/gir/gir-path.ts +36 -12
  402. package/src/gir/libraries.ts +56 -31
  403. package/src/gir/library.ts +200 -97
  404. package/src/gir/namespace.ts +42 -26
  405. package/src/gir/nullable-overrides.ts +5 -0
  406. package/src/gir/parameter.ts +80 -42
  407. package/src/gir/parse.ts +102 -47
  408. package/src/gir/primitives.ts +25 -23
  409. package/src/gir/property.ts +13 -11
  410. package/src/gir/record.ts +16 -14
  411. package/src/gir/size.ts +91 -58
  412. package/src/gir/type-id.ts +33 -18
  413. package/src/gir/type-ref.ts +62 -26
  414. package/src/gir/type.ts +10 -8
  415. package/src/index.ts +7 -0
  416. package/src/jsx.ts +70 -0
  417. package/src/khronos/args.ts +158 -89
  418. package/src/khronos/jsdoc.ts +67 -29
  419. package/src/khronos/model.ts +154 -53
  420. package/src/khronos/modules.ts +67 -27
  421. package/src/khronos/param-pair.ts +14 -0
  422. package/src/khronos/parse.ts +37 -17
  423. package/src/khronos/pipeline.ts +193 -90
  424. package/src/khronos/plan.ts +235 -86
  425. package/src/khronos/render.ts +208 -71
  426. package/src/khronos/select.ts +48 -18
  427. package/src/react/element-config.ts +91 -0
  428. package/src/runner.ts +93 -57
  429. package/src/store/compile-store.ts +32 -26
  430. package/src/store/gi/async.ts +48 -21
  431. package/src/store/gi/callables.ts +345 -136
  432. package/src/store/gi/callback.ts +13 -4
  433. package/src/store/gi/class-struct-record.ts +49 -17
  434. package/src/store/gi/class.ts +186 -64
  435. package/src/store/gi/companion.ts +15 -6
  436. package/src/store/gi/constant.ts +42 -8
  437. package/src/store/gi/constructor-props.ts +42 -16
  438. package/src/store/gi/enum.ts +28 -13
  439. package/src/store/gi/function.ts +90 -24
  440. package/src/store/gi/gtype-binding.ts +31 -18
  441. package/src/store/gi/interface.ts +101 -36
  442. package/src/store/gi/item-comparators.ts +74 -26
  443. package/src/store/gi/method.ts +376 -159
  444. package/src/store/gi/param-marshal.ts +38 -15
  445. package/src/store/gi/pipeline.ts +72 -22
  446. package/src/store/gi/properties.ts +16 -5
  447. package/src/store/gi/property-accessor.ts +192 -84
  448. package/src/store/gi/record-constructor.ts +62 -30
  449. package/src/store/gi/record-field-accessor.ts +380 -167
  450. package/src/store/gi/record-layout.ts +130 -43
  451. package/src/store/gi/record.ts +37 -14
  452. package/src/store/gi/registration.ts +15 -9
  453. package/src/store/gi/return-wrap.ts +71 -23
  454. package/src/store/gi/runtime-override.ts +13 -3
  455. package/src/store/gi/signal.ts +244 -104
  456. package/src/store/gi/vtable.ts +117 -41
  457. package/src/store/gi-store.ts +26 -13
  458. package/src/store/jsx/element-components.ts +152 -0
  459. package/src/store/jsx/element-prop-imports.ts +24 -0
  460. package/src/store/jsx/element-prop-types.ts +59 -0
  461. package/src/store/jsx/gir-index.ts +62 -0
  462. package/src/store/jsx/intrinsic-elements.ts +262 -0
  463. package/src/store/{react → jsx}/jsx.ts +213 -99
  464. package/src/store/jsx/metadata.ts +385 -0
  465. package/src/store/jsx/pipeline.ts +145 -0
  466. package/src/store/jsx/props.ts +274 -0
  467. package/src/store/jsx-store.ts +15 -3
  468. package/src/store/store-fs.ts +36 -20
  469. package/src/writer/context.ts +25 -6
  470. package/src/writer/doc.ts +19 -5
  471. package/src/writer/emit.ts +20 -11
  472. package/src/writer/gtk-doc.ts +48 -21
  473. package/src/writer/imports.ts +63 -28
  474. package/src/writer/module.ts +35 -11
  475. package/src/xml.ts +12 -0
  476. package/dist/store/react/built-ins.d.ts +0 -9
  477. package/dist/store/react/built-ins.d.ts.map +0 -1
  478. package/dist/store/react/built-ins.js +0 -226
  479. package/dist/store/react/built-ins.js.map +0 -1
  480. package/dist/store/react/element-components.d.ts +0 -15
  481. package/dist/store/react/element-components.d.ts.map +0 -1
  482. package/dist/store/react/element-components.js +0 -92
  483. package/dist/store/react/element-components.js.map +0 -1
  484. package/dist/store/react/element-prop-types.d.ts +0 -19
  485. package/dist/store/react/element-prop-types.d.ts.map +0 -1
  486. package/dist/store/react/element-prop-types.js +0 -244
  487. package/dist/store/react/element-prop-types.js.map +0 -1
  488. package/dist/store/react/element-props.d.ts +0 -4
  489. package/dist/store/react/element-props.d.ts.map +0 -1
  490. package/dist/store/react/element-props.js +0 -178
  491. package/dist/store/react/element-props.js.map +0 -1
  492. package/dist/store/react/gir-index.d.ts +0 -25
  493. package/dist/store/react/gir-index.d.ts.map +0 -1
  494. package/dist/store/react/gir-index.js +0 -55
  495. package/dist/store/react/gir-index.js.map +0 -1
  496. package/dist/store/react/intrinsic-elements.d.ts +0 -26
  497. package/dist/store/react/intrinsic-elements.d.ts.map +0 -1
  498. package/dist/store/react/intrinsic-elements.js +0 -107
  499. package/dist/store/react/intrinsic-elements.js.map +0 -1
  500. package/dist/store/react/jsx.d.ts.map +0 -1
  501. package/dist/store/react/jsx.js.map +0 -1
  502. package/dist/store/react/metadata.d.ts +0 -4
  503. package/dist/store/react/metadata.d.ts.map +0 -1
  504. package/dist/store/react/metadata.js.map +0 -1
  505. package/dist/store/react/pipeline.d.ts +0 -14
  506. package/dist/store/react/pipeline.d.ts.map +0 -1
  507. package/dist/store/react/pipeline.js.map +0 -1
  508. package/dist/store/react/props.d.ts.map +0 -1
  509. package/dist/store/react/props.js +0 -133
  510. package/dist/store/react/props.js.map +0 -1
  511. package/overrides/gtk/constants.ts.ejs +0 -3
  512. package/overrides/gtk/index.ts.ejs +0 -2
  513. package/src/store/react/built-ins.ts +0 -260
  514. package/src/store/react/element-components.ts +0 -138
  515. package/src/store/react/element-prop-types.ts +0 -280
  516. package/src/store/react/element-props.ts +0 -204
  517. package/src/store/react/gir-index.ts +0 -85
  518. package/src/store/react/intrinsic-elements.ts +0 -161
  519. package/src/store/react/metadata.ts +0 -197
  520. package/src/store/react/pipeline.ts +0 -90
  521. package/src/store/react/props.ts +0 -197
@@ -2,7 +2,9 @@ import { sortStringsBy, sourceStringLiteral, toCamelIdentifier } from "@gtkx/uti
2
2
  import { inputParameters } from "../../analysis/param-structure.js";
3
3
  import { isConstructableProperty } from "../../gir/property.js";
4
4
  import { implementedInterfaces, isIntrinsicElementClass, iterateClassesWithGlibName, signalHandlerName, } from "./intrinsic-elements.js";
5
- export const generateMetadata = (library, elementProps) => {
5
+ const INTEGER_PATTERN = /^-?\d+$/;
6
+ const FLOAT_PATTERN = /^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i;
7
+ const generateMetadata = (library) => {
6
8
  const intrinsicElements = collectIntrinsicElements(library);
7
9
  const signalsEntries = intrinsicElements.map(({ glibName, signals }) => ` "${glibName}": ${renderSignalsObject(signals)},`);
8
10
  const constructOnlyEntries = intrinsicElements
@@ -19,14 +21,14 @@ export const generateMetadata = (library, elementProps) => {
19
21
  `export const CONSTRUCT_ONLY_PROPS: Record<string, Set<string>> = {\n${constructOnlyEntries.join("\n")}\n};`,
20
22
  `export const CONSTRUCT_PROPS: Record<string, Set<string>> = {\n${constructableEntries.join("\n")}\n};`,
21
23
  `export const DEFAULT_PROPS: Record<string, Record<string, unknown>> = {\n${defaultsEntries.join("\n")}\n};`,
22
- `export const ELEMENT_PROPS: Record<string, Array<import("@gtkx/react").ElementProp>> = ${JSON.stringify(elementProps, null, 4)};`,
23
24
  ].join("\n\n")}\n`;
24
25
  };
25
26
  const collectIntrinsicElements = (library) => {
26
27
  const entries = [];
27
28
  for (const { glibName, klass, namespace } of iterateClassesWithGlibName(library)) {
28
- if (!isIntrinsicElementClass(klass, namespace, library))
29
+ if (!isIntrinsicElementClass(klass, namespace, library)) {
29
30
  continue;
31
+ }
30
32
  const sources = [
31
33
  klass,
32
34
  ...implementedInterfaces(klass, namespace, library).map((entry) => entry.klass),
@@ -41,107 +43,170 @@ const collectIntrinsicElements = (library) => {
41
43
  }
42
44
  return sortStringsBy(entries, (entry) => entry.glibName);
43
45
  };
46
+ const collectSignalsFromSource = (source, seen, signals) => {
47
+ for (const signal of source.signals) {
48
+ const handlerName = signalHandlerName(signal.name);
49
+ if (seen.has(handlerName)) {
50
+ continue;
51
+ }
52
+ seen.add(handlerName);
53
+ signals.push([handlerName, signal.name]);
54
+ }
55
+ };
44
56
  const collectSignals = (sources) => {
45
57
  const seen = new Set();
46
58
  const signals = [];
47
59
  for (const source of sources) {
48
- for (const signal of source.signals) {
49
- const handlerName = signalHandlerName(signal.name);
50
- if (seen.has(handlerName))
51
- continue;
52
- seen.add(handlerName);
53
- signals.push([handlerName, signal.name]);
54
- }
60
+ collectSignalsFromSource(source, seen, signals);
55
61
  }
56
62
  return signals;
57
63
  };
58
- const collectPropNames = (sources, keep) => {
59
- const seen = new Set();
60
- const names = [];
61
- for (const source of sources) {
62
- for (const property of source.properties) {
63
- if (!keep(property))
64
- continue;
65
- const jsName = toCamelIdentifier(property.name);
66
- if (seen.has(jsName))
67
- continue;
68
- seen.add(jsName);
69
- names.push(jsName);
64
+ const collectPropNamesFromSource = (source, collector) => {
65
+ const { keep, seen, names } = collector;
66
+ for (const property of source.properties) {
67
+ if (!keep(property)) {
68
+ continue;
69
+ }
70
+ const jsName = toCamelIdentifier(property.name);
71
+ if (seen.has(jsName)) {
72
+ continue;
70
73
  }
74
+ seen.add(jsName);
75
+ names.push(jsName);
76
+ }
77
+ };
78
+ const collectPropNames = (sources, shouldKeep) => {
79
+ const collector = { keep: shouldKeep, seen: new Set(), names: [] };
80
+ for (const source of sources) {
81
+ collectPropNamesFromSource(source, collector);
71
82
  }
72
- return names;
83
+ return collector.names;
73
84
  };
74
85
  const collectConstructOnly = (sources) => collectPropNames(sources, (property) => property.constructOnly && property.introspectable);
75
- const collectConstructable = (sources) => collectPropNames(sources, isConstructableProperty);
86
+ const collectConstructable = (sources) => collectPropNames(sources, (property) => isConstructableProperty(property) && property.introspectable);
76
87
  const renderObjectLiteral = (entries, renderValue) => {
77
- if (entries.length === 0)
88
+ if (entries.length === 0) {
78
89
  return "{}";
90
+ }
79
91
  const lines = entries.map(([key, value]) => ` ${sourceStringLiteral(key)}: ${renderValue(value)}`);
80
92
  return `{\n${lines.join(",\n")}\n }`;
81
93
  };
82
- const renderStringSet = (names) => `new Set([${names.map(sourceStringLiteral).join(",")}])`;
94
+ const renderStringSet = (names) => `new Set([${names.map((name) => sourceStringLiteral(name)).join(",")}])`;
83
95
  const renderSignalsObject = (entries) => renderObjectLiteral(entries, sourceStringLiteral);
96
+ const collectDefaultsFromClass = (klass, collector) => {
97
+ for (const property of klass.properties) {
98
+ const entry = defaultPropEntry(collector.library, klass, property, collector.seen);
99
+ if (entry !== undefined) {
100
+ collector.defaults.push(entry);
101
+ }
102
+ }
103
+ };
84
104
  const collectDefaultProps = (library, sources) => {
85
- const seen = new Set();
86
- const defaults = [];
105
+ const collector = { library, seen: new Set(), defaults: [] };
87
106
  for (const klass of sources) {
88
- for (const property of klass.properties) {
89
- const settable = (property.writable || property.construct) && !property.constructOnly;
90
- if (!settable || !property.introspectable)
91
- continue;
92
- const jsName = toCamelIdentifier(property.name);
93
- if (seen.has(jsName))
94
- continue;
95
- seen.add(jsName);
96
- const literal = renderDefaultLiteral(library, klass, property);
97
- if (literal === undefined)
98
- continue;
99
- defaults.push([jsName, literal]);
100
- }
107
+ collectDefaultsFromClass(klass, collector);
108
+ }
109
+ return collector.defaults;
110
+ };
111
+ const isDefaultCandidate = (property) => (property.writable || property.construct) && !property.constructOnly && property.introspectable;
112
+ const defaultPropEntry = (library, klass, property, seen) => {
113
+ if (!isDefaultCandidate(property)) {
114
+ return undefined;
115
+ }
116
+ const jsName = toCamelIdentifier(property.name);
117
+ if (seen.has(jsName)) {
118
+ return undefined;
119
+ }
120
+ seen.add(jsName);
121
+ const literal = renderDefaultLiteral(library, klass, property);
122
+ if (literal === undefined) {
123
+ return undefined;
101
124
  }
102
- return defaults;
125
+ return [jsName, literal];
103
126
  };
104
- const setterRejectsNull = (library, klass, property) => {
105
- if (property.setter === undefined)
127
+ const willSetterRejectNull = (library, klass, property) => {
128
+ if (property.setter === undefined) {
106
129
  return false;
130
+ }
107
131
  const setter = klass.methods.find((method) => method.name === property.setter);
108
- if (setter === undefined)
132
+ if (setter === undefined) {
109
133
  return false;
134
+ }
110
135
  const [value] = inputParameters(library, setter);
111
136
  return value !== undefined && !value.parameter.nullable && !value.parameter.optional;
112
137
  };
138
+ const setterValueRef = (library, klass, property) => {
139
+ if (property.setter === undefined) {
140
+ return undefined;
141
+ }
142
+ const setter = klass.methods.find((method) => method.name === property.setter);
143
+ if (setter === undefined) {
144
+ return undefined;
145
+ }
146
+ const [value] = inputParameters(library, setter);
147
+ return value?.parameter.type;
148
+ };
113
149
  const renderDefaultLiteral = (library, klass, property) => {
114
- if (property.defaultValue === "NULL" && setterRejectsNull(library, klass, property))
150
+ if (property.defaultValue === "NULL" && willSetterRejectNull(library, klass, property)) {
115
151
  return undefined;
116
- return resolveDefaultLiteral(library, property.type, property.defaultValue);
152
+ }
153
+ const ref = setterValueRef(library, klass, property) ?? property.type;
154
+ return resolveDefaultLiteral(library, ref, property.defaultValue);
117
155
  };
118
156
  const resolveDefaultLiteral = (library, ref, raw) => {
119
- if (raw === undefined)
157
+ if (raw === undefined) {
120
158
  return undefined;
121
- if (raw === "NULL")
159
+ }
160
+ if (raw === "NULL") {
122
161
  return "null";
123
- if (ref === undefined)
162
+ }
163
+ if (ref === undefined) {
124
164
  return undefined;
125
- const resolved = library.typeOf(ref);
126
- if (resolved === undefined)
165
+ }
166
+ const resolved = library.typeFor(ref);
167
+ if (resolved === undefined) {
127
168
  return undefined;
128
- if (resolved.kind === "primitive")
169
+ }
170
+ return resolveTypeDefaultLiteral(library, resolved, raw);
171
+ };
172
+ const resolveTypeDefaultLiteral = (library, resolved, raw) => {
173
+ if (resolved.kind === "primitive") {
129
174
  return primitiveDefaultLiteral(resolved.category, raw);
130
- if (resolved.kind === "enum")
175
+ }
176
+ if (resolved.kind === "enum") {
131
177
  return enumDefaultLiteral(resolved.value, raw);
132
- if (resolved.kind === "alias")
178
+ }
179
+ if (resolved.kind === "alias") {
133
180
  return resolveDefaultLiteral(library, resolved.value.target, raw);
181
+ }
134
182
  return undefined;
135
183
  };
136
- const INTEGER_PATTERN = /^-?\d+$/;
184
+ const booleanDefaultLiteral = (raw) => {
185
+ if (raw === "TRUE") {
186
+ return "true";
187
+ }
188
+ if (raw === "FALSE") {
189
+ return "false";
190
+ }
191
+ return undefined;
192
+ };
193
+ const integerDefaultLiteral = (raw) => {
194
+ const trimmed = raw.trim();
195
+ return INTEGER_PATTERN.test(trimmed) ? trimmed : undefined;
196
+ };
197
+ const floatDefaultLiteral = (raw) => {
198
+ const trimmed = raw.trim();
199
+ if (!FLOAT_PATTERN.test(trimmed)) {
200
+ return undefined;
201
+ }
202
+ const value = Number(trimmed);
203
+ return Number.isFinite(value) ? String(value) : undefined;
204
+ };
137
205
  const primitiveDefaultLiteral = (category, raw) => {
138
206
  switch (category) {
139
- case "boolean":
140
- if (raw === "TRUE")
141
- return "true";
142
- if (raw === "FALSE")
143
- return "false";
144
- return undefined;
207
+ case "boolean": {
208
+ return booleanDefaultLiteral(raw);
209
+ }
145
210
  case "int8":
146
211
  case "int16":
147
212
  case "int32":
@@ -150,25 +215,39 @@ const primitiveDefaultLiteral = (category, raw) => {
150
215
  case "uint32":
151
216
  case "int64":
152
217
  case "uint64":
153
- case "unichar":
154
- return INTEGER_PATTERN.test(raw.trim()) ? raw.trim() : undefined;
218
+ case "unichar": {
219
+ return integerDefaultLiteral(raw);
220
+ }
155
221
  case "float32":
156
222
  case "float64": {
157
- const value = Number.parseFloat(raw);
158
- return Number.isFinite(value) ? String(value) : undefined;
223
+ return floatDefaultLiteral(raw);
159
224
  }
160
- case "string":
225
+ case "string": {
161
226
  return sourceStringLiteral(raw);
162
- default:
227
+ }
228
+ case "bigint64":
229
+ case "biguint64":
230
+ case "gtype": {
231
+ return bigintDefaultLiteral(raw);
232
+ }
233
+ case "pointer":
234
+ case "void": {
163
235
  return undefined;
236
+ }
164
237
  }
165
238
  };
239
+ const bigintDefaultLiteral = (raw) => {
240
+ const trimmed = raw.trim();
241
+ return INTEGER_PATTERN.test(trimmed) ? `${trimmed}n` : undefined;
242
+ };
166
243
  const enumDefaultLiteral = (enumType, raw) => {
167
244
  const trimmed = raw.trim();
168
- if (INTEGER_PATTERN.test(trimmed))
245
+ if (INTEGER_PATTERN.test(trimmed)) {
169
246
  return trimmed;
247
+ }
170
248
  const member = enumType.members.find((entry) => entry.cIdentifier === trimmed || entry.name === trimmed);
171
249
  return member?.value;
172
250
  };
173
251
  const renderDefaultsObject = (entries) => renderObjectLiteral(entries, (literal) => literal);
252
+ export { generateMetadata };
174
253
  //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/store/jsx/metadata.ts"],"names":[],"mappings":"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","sourcesContent":["import { sortStringsBy, sourceStringLiteral, toCamelIdentifier } from \"@gtkx/utils\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport type { GirEnum } from \"../../gir/enum.js\";\nimport type { Library } from \"../../gir/library.js\";\nimport type { PrimitiveCategory } from \"../../gir/primitives.js\";\nimport type { TypeId } from \"../../gir/type-id.js\";\nimport type { GirType } from \"../../gir/type.js\";\nimport { inputParameters } from \"../../analysis/param-structure.js\";\nimport { type GirProperty, isConstructableProperty } from \"../../gir/property.js\";\nimport {\n implementedInterfaces,\n isIntrinsicElementClass,\n iterateClassesWithGlibName,\n signalHandlerName,\n} from \"./intrinsic-elements.js\";\n\ntype IntrinsicElementEntry = {\n glibName: string;\n signals: [string, string][];\n constructOnly: string[];\n constructable: string[];\n defaults: [string, string][];\n};\n\ntype PropNameCollector = {\n keep: (property: GirProperty) => boolean;\n seen: Set<string>;\n names: string[];\n};\n\ntype DefaultPropsCollector = {\n library: Library;\n seen: Set<string>;\n defaults: [string, string][];\n};\n\nconst INTEGER_PATTERN = /^-?\\d+$/;\nconst FLOAT_PATTERN = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i;\n\nconst generateMetadata = (library: Library): string => {\n const intrinsicElements = collectIntrinsicElements(library);\n\n const signalsEntries = intrinsicElements.map(\n ({ glibName, signals }) => ` \"${glibName}\": ${renderSignalsObject(signals)},`,\n );\n\n const constructOnlyEntries = intrinsicElements\n .filter(({ constructOnly }) => constructOnly.length > 0)\n .map(({ glibName, constructOnly }) => ` \"${glibName}\": ${renderStringSet(constructOnly)},`);\n\n const constructableEntries = intrinsicElements\n .filter(({ constructable }) => constructable.length > 0)\n .map(({ glibName, constructable }) => ` \"${glibName}\": ${renderStringSet(constructable)},`);\n\n const defaultsEntries = intrinsicElements\n .filter(({ defaults }) => defaults.length > 0)\n .map(({ glibName, defaults }) => ` \"${glibName}\": ${renderDefaultsObject(defaults)},`);\n\n return `${[\n `export const SIGNALS: Record<string, Record<string, string>> = {\\n${signalsEntries.join(\"\\n\")}\\n};`,\n `export const CONSTRUCT_ONLY_PROPS: Record<string, Set<string>> = {\\n${constructOnlyEntries.join(\"\\n\")}\\n};`,\n `export const CONSTRUCT_PROPS: Record<string, Set<string>> = {\\n${constructableEntries.join(\"\\n\")}\\n};`,\n `export const DEFAULT_PROPS: Record<string, Record<string, unknown>> = {\\n${defaultsEntries.join(\"\\n\")}\\n};`,\n ].join(\"\\n\\n\")}\\n`;\n};\n\nconst collectIntrinsicElements = (library: Library): IntrinsicElementEntry[] => {\n const entries: IntrinsicElementEntry[] = [];\n\n for (const { glibName, klass, namespace } of iterateClassesWithGlibName(library)) {\n if (!isIntrinsicElementClass(klass, namespace, library)) {\n continue;\n }\n\n const sources: GirClass[] = [\n klass,\n ...implementedInterfaces(klass, namespace, library).map((entry) => entry.klass),\n ];\n\n entries.push({\n glibName,\n signals: collectSignals(sources),\n constructOnly: collectConstructOnly(sources),\n constructable: collectConstructable(sources),\n defaults: collectDefaultProps(library, sources),\n });\n }\n\n return sortStringsBy(entries, (entry) => entry.glibName);\n};\n\nconst collectSignalsFromSource = (source: GirClass, seen: Set<string>, signals: [string, string][]): void => {\n for (const signal of source.signals) {\n const handlerName = signalHandlerName(signal.name);\n\n if (seen.has(handlerName)) {\n continue;\n }\n\n seen.add(handlerName);\n signals.push([handlerName, signal.name] as const);\n }\n};\n\nconst collectSignals = (sources: GirClass[]): [string, string][] => {\n const seen: Set<string> = new Set();\n const signals: [string, string][] = [];\n\n for (const source of sources) {\n collectSignalsFromSource(source, seen, signals);\n }\n\n return signals;\n};\n\nconst collectPropNamesFromSource = (source: GirClass, collector: PropNameCollector): void => {\n const { keep, seen, names } = collector;\n\n for (const property of source.properties) {\n if (!keep(property)) {\n continue;\n }\n\n const jsName = toCamelIdentifier(property.name);\n\n if (seen.has(jsName)) {\n continue;\n }\n\n seen.add(jsName);\n names.push(jsName);\n }\n};\n\nconst collectPropNames = (sources: GirClass[], shouldKeep: (property: GirProperty) => boolean): string[] => {\n const collector: PropNameCollector = { keep: shouldKeep, seen: new Set<string>(), names: [] };\n\n for (const source of sources) {\n collectPropNamesFromSource(source, collector);\n }\n\n return collector.names;\n};\n\nconst collectConstructOnly = (sources: GirClass[]): string[] =>\n collectPropNames(sources, (property) => property.constructOnly && property.introspectable);\n\nconst collectConstructable = (sources: GirClass[]): string[] =>\n collectPropNames(sources, (property) => isConstructableProperty(property) && property.introspectable);\n\nconst renderObjectLiteral = (entries: [string, string][], renderValue: (value: string) => string): string => {\n if (entries.length === 0) {\n return \"{}\";\n }\n\n const lines = entries.map(([key, value]) => ` ${sourceStringLiteral(key)}: ${renderValue(value)}`);\n\n return `{\\n${lines.join(\",\\n\")}\\n }`;\n};\n\nconst renderStringSet = (names: string[]): string =>\n `new Set([${names.map((name) => sourceStringLiteral(name)).join(\",\")}])`;\n\nconst renderSignalsObject = (entries: [string, string][]): string => renderObjectLiteral(entries, sourceStringLiteral);\n\nconst collectDefaultsFromClass = (klass: GirClass, collector: DefaultPropsCollector): void => {\n for (const property of klass.properties) {\n const entry = defaultPropEntry(collector.library, klass, property, collector.seen);\n\n if (entry !== undefined) {\n collector.defaults.push(entry);\n }\n }\n};\n\nconst collectDefaultProps = (library: Library, sources: GirClass[]): [string, string][] => {\n const collector: DefaultPropsCollector = { library, seen: new Set<string>(), defaults: [] };\n\n for (const klass of sources) {\n collectDefaultsFromClass(klass, collector);\n }\n\n return collector.defaults;\n};\n\nconst isDefaultCandidate = (property: GirProperty): boolean =>\n (property.writable || property.construct) && !property.constructOnly && property.introspectable;\n\nconst defaultPropEntry = (\n library: Library,\n klass: GirClass,\n property: GirProperty,\n seen: Set<string>,\n): [string, string] | undefined => {\n if (!isDefaultCandidate(property)) {\n return undefined;\n }\n\n const jsName = toCamelIdentifier(property.name);\n\n if (seen.has(jsName)) {\n return undefined;\n }\n\n seen.add(jsName);\n const literal = renderDefaultLiteral(library, klass, property);\n\n if (literal === undefined) {\n return undefined;\n }\n\n return [jsName, literal];\n};\n\nconst willSetterRejectNull = (library: Library, klass: GirClass, property: GirProperty): boolean => {\n if (property.setter === undefined) {\n return false;\n }\n\n const setter = klass.methods.find((method) => method.name === property.setter);\n\n if (setter === undefined) {\n return false;\n }\n\n const [value] = inputParameters(library, setter);\n\n return value !== undefined && !value.parameter.nullable && !value.parameter.optional;\n};\n\nconst setterValueRef = (library: Library, klass: GirClass, property: GirProperty): TypeId | undefined => {\n if (property.setter === undefined) {\n return undefined;\n }\n\n const setter = klass.methods.find((method) => method.name === property.setter);\n\n if (setter === undefined) {\n return undefined;\n }\n\n const [value] = inputParameters(library, setter);\n\n return value?.parameter.type;\n};\n\nconst renderDefaultLiteral = (library: Library, klass: GirClass, property: GirProperty): string | undefined => {\n if (property.defaultValue === \"NULL\" && willSetterRejectNull(library, klass, property)) {\n return undefined;\n }\n\n const ref = setterValueRef(library, klass, property) ?? property.type;\n\n return resolveDefaultLiteral(library, ref, property.defaultValue);\n};\n\nconst resolveDefaultLiteral = (\n library: Library,\n ref: TypeId | undefined,\n raw: string | undefined,\n): string | undefined => {\n if (raw === undefined) {\n return undefined;\n }\n\n if (raw === \"NULL\") {\n return \"null\";\n }\n\n if (ref === undefined) {\n return undefined;\n }\n\n const resolved = library.typeFor(ref);\n\n if (resolved === undefined) {\n return undefined;\n }\n\n return resolveTypeDefaultLiteral(library, resolved, raw);\n};\n\nconst resolveTypeDefaultLiteral = (library: Library, resolved: GirType, raw: string): string | undefined => {\n if (resolved.kind === \"primitive\") {\n return primitiveDefaultLiteral(resolved.category, raw);\n }\n\n if (resolved.kind === \"enum\") {\n return enumDefaultLiteral(resolved.value, raw);\n }\n\n if (resolved.kind === \"alias\") {\n return resolveDefaultLiteral(library, resolved.value.target, raw);\n }\n\n return undefined;\n};\n\nconst booleanDefaultLiteral = (raw: string): string | undefined => {\n if (raw === \"TRUE\") {\n return \"true\";\n }\n\n if (raw === \"FALSE\") {\n return \"false\";\n }\n\n return undefined;\n};\n\nconst integerDefaultLiteral = (raw: string): string | undefined => {\n const trimmed = raw.trim();\n\n return INTEGER_PATTERN.test(trimmed) ? trimmed : undefined;\n};\n\nconst floatDefaultLiteral = (raw: string): string | undefined => {\n const trimmed = raw.trim();\n\n if (!FLOAT_PATTERN.test(trimmed)) {\n return undefined;\n }\n\n const value = Number(trimmed);\n\n return Number.isFinite(value) ? String(value) : undefined;\n};\n\nconst primitiveDefaultLiteral = (category: PrimitiveCategory, raw: string): string | undefined => {\n switch (category) {\n case \"boolean\": {\n return booleanDefaultLiteral(raw);\n }\n case \"int8\":\n case \"int16\":\n case \"int32\":\n case \"uint8\":\n case \"uint16\":\n case \"uint32\":\n case \"int64\":\n case \"uint64\":\n case \"unichar\": {\n return integerDefaultLiteral(raw);\n }\n case \"float32\":\n case \"float64\": {\n return floatDefaultLiteral(raw);\n }\n case \"string\": {\n return sourceStringLiteral(raw);\n }\n case \"bigint64\":\n case \"biguint64\":\n case \"gtype\": {\n return bigintDefaultLiteral(raw);\n }\n case \"pointer\":\n case \"void\": {\n return undefined;\n }\n }\n};\n\nconst bigintDefaultLiteral = (raw: string): string | undefined => {\n const trimmed = raw.trim();\n\n return INTEGER_PATTERN.test(trimmed) ? `${trimmed}n` : undefined;\n};\n\nconst enumDefaultLiteral = (enumType: GirEnum, raw: string): string | undefined => {\n const trimmed = raw.trim();\n\n if (INTEGER_PATTERN.test(trimmed)) {\n return trimmed;\n }\n\n const member = enumType.members.find((entry) => entry.cIdentifier === trimmed || entry.name === trimmed);\n\n return member?.value;\n};\n\nconst renderDefaultsObject = (entries: [string, string][]): string =>\n renderObjectLiteral(entries, (literal) => literal);\n\nexport { generateMetadata };\n"]}
@@ -0,0 +1,21 @@
1
+ import type { Library } from "../../gir/library.js";
2
+ import { type ElementComponentOverrides } from "./element-components.js";
3
+ import { type ElementProps } from "./element-prop-imports.js";
4
+ type JsxNamespaceFile = {
5
+ directory: string;
6
+ source: string;
7
+ };
8
+ type JsxFiles = {
9
+ namespaces: JsxNamespaceFile[];
10
+ metadata: string;
11
+ intrinsicElementCount: number;
12
+ };
13
+ type JsxGenerationOptions = {
14
+ reactSubexports?: string[];
15
+ components?: ElementComponentOverrides;
16
+ props?: ElementProps;
17
+ lazyElements?: string[];
18
+ };
19
+ declare const generateJsxFiles: (library: Library, options?: JsxGenerationOptions) => JsxFiles;
20
+ export { generateJsxFiles, type JsxNamespaceFile, type JsxGenerationOptions };
21
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/store/jsx/pipeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,KAAK,yBAAyB,EAAoC,MAAM,yBAAyB,CAAC;AAC3G,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,2BAA2B,CAAC;AAO/E,KAAK,gBAAgB,GAAG;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,QAAQ,GAAG;IACZ,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,KAAK,oBAAoB,GAAG;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,yBAAyB,CAAC;IACvC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAmBF,QAAA,MAAM,gBAAgB,GAAI,SAAS,OAAO,EAAE,UAAS,oBAAyB,KAAG,QAmBhF,CAAC;AA8EF,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,CAAC"}
@@ -2,59 +2,80 @@ import { sortStringsBy } from "@gtkx/utils";
2
2
  import { namespaceDirectory } from "../../gir/namespace.js";
3
3
  import { ImportsBuilder } from "../../writer/imports.js";
4
4
  import { generateElementComponentsSection } from "./element-components.js";
5
- import { createElementPropTypegen } from "./element-prop-types.js";
6
- import { assembleElementProps } from "./element-props.js";
5
+ import { setElementProps } from "./element-prop-imports.js";
6
+ import { lazyElementSpecs } from "./element-prop-types.js";
7
7
  import { buildGirIndex } from "./gir-index.js";
8
8
  import { collectIntrinsicElementClasses } from "./intrinsic-elements.js";
9
9
  import { generateJsxSection } from "./jsx.js";
10
10
  import { generateMetadata } from "./metadata.js";
11
- export const generateJsxFiles = (library, userElementProps) => {
11
+ const generateJsxFiles = (library, options = {}) => {
12
+ setElementProps(options.props ?? {});
12
13
  const intrinsicElements = collectIntrinsicElementClasses(library);
13
14
  const intrinsicElementByGlibName = new Map(intrinsicElements.map((entry) => [entry.glibName, entry]));
15
+ const girIndex = buildGirIndex(library);
16
+ const lazyByNamespace = lazyElementSpecs(girIndex, options.lazyElements ?? []);
17
+ const { namespaces, intrinsicElementCount } = generateNamespaceFiles({
18
+ library,
19
+ intrinsicElements,
20
+ intrinsicElementByGlibName,
21
+ lazyByNamespace,
22
+ reactSubexports: options.reactSubexports ?? [],
23
+ components: options.components ?? {},
24
+ });
25
+ const metadata = generateMetadata(library);
26
+ return { namespaces, metadata, intrinsicElementCount };
27
+ };
28
+ const orderedIntrinsicNamespaces = (intrinsicElements) => {
14
29
  const namespacesWithIntrinsicElements = new Map();
15
30
  for (const entry of intrinsicElements) {
16
31
  namespacesWithIntrinsicElements.set(entry.namespace.name, entry.namespace);
17
32
  }
18
- const girIndex = buildGirIndex(library);
19
- const elementProps = assembleElementProps(girIndex, userElementProps ?? {});
20
- const typegen = createElementPropTypegen(girIndex, elementProps);
33
+ return sortStringsBy(namespacesWithIntrinsicElements.values(), (entry) => entry.name);
34
+ };
35
+ const generateNamespaceFiles = (options) => {
36
+ const { library, intrinsicElements, intrinsicElementByGlibName, lazyByNamespace, reactSubexports, components } = options;
21
37
  const namespaces = [];
22
38
  let intrinsicElementCount = 0;
23
- for (const namespace of sortStringsBy(namespacesWithIntrinsicElements.values(), (entry) => entry.name)) {
39
+ for (const namespace of orderedIntrinsicNamespaces(intrinsicElements)) {
24
40
  const { source, count } = generateJsxNamespace(namespace, library, {
25
- typegen,
41
+ lazyElements: lazyByNamespace.get(namespace.name) ?? [],
26
42
  intrinsicElements,
27
43
  intrinsicElementByGlibName,
44
+ reactSubexports,
45
+ components,
28
46
  });
29
47
  namespaces.push({ directory: namespaceDirectory(namespace), source });
30
48
  intrinsicElementCount += count;
31
49
  }
32
- const metadata = generateMetadata(library, elementProps);
33
- return { namespaces, metadata, intrinsicElementCount };
50
+ return { namespaces, intrinsicElementCount };
34
51
  };
35
52
  const generateJsxNamespace = (targetNamespace, library, context) => {
36
- const { typegen, intrinsicElements, intrinsicElementByGlibName } = context;
53
+ const { lazyElements, intrinsicElements, intrinsicElementByGlibName, reactSubexports, components } = context;
37
54
  const targetDirectory = namespaceDirectory(targetNamespace);
38
55
  const imports = new ImportsBuilder();
39
56
  imports.addSideEffect(`@gtkx/gi/${targetDirectory}`);
57
+ if (reactSubexports.includes(targetDirectory)) {
58
+ imports.addSideEffect(`@gtkx/react/${targetDirectory}`);
59
+ }
40
60
  const elementComponents = generateElementComponentsSection(targetNamespace, library, {
41
61
  imports,
42
- typegen,
62
+ lazyElements,
43
63
  intrinsicElements,
44
- intrinsicElementByGlibName,
64
+ components,
45
65
  });
46
66
  const excludeNames = new Set(elementComponents.exportedNames);
47
67
  const { source: jsxSection, intrinsicCount } = generateJsxSection(targetNamespace, library, {
48
68
  excludeNames,
49
69
  imports,
50
- typegen,
51
70
  intrinsicElements,
52
71
  intrinsicElementByGlibName,
53
72
  });
54
73
  const body = [imports.toSource().trimEnd(), "", jsxSection];
55
- if (elementComponents.source.length > 0)
74
+ if (elementComponents.source.length > 0) {
56
75
  body.push("", elementComponents.source);
76
+ }
57
77
  const count = elementComponents.exportedNames.size + intrinsicCount;
58
78
  return { source: `${body.join("\n")}\n`, count };
59
79
  };
80
+ export { generateJsxFiles };
60
81
  //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/store/jsx/pipeline.ts"],"names":[],"mappings":"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","sourcesContent":["import { sortStringsBy } from \"@gtkx/utils\";\nimport type { Library } from \"../../gir/library.js\";\nimport { type GirNamespace, namespaceDirectory } from \"../../gir/namespace.js\";\nimport { ImportsBuilder } from \"../../writer/imports.js\";\nimport { type ElementComponentOverrides, generateElementComponentsSection } from \"./element-components.js\";\nimport { type ElementProps, setElementProps } from \"./element-prop-imports.js\";\nimport { type LazyElementSpec, lazyElementSpecs } from \"./element-prop-types.js\";\nimport { buildGirIndex } from \"./gir-index.js\";\nimport { collectIntrinsicElementClasses, type GlibNamedClass } from \"./intrinsic-elements.js\";\nimport { generateJsxSection } from \"./jsx.js\";\nimport { generateMetadata } from \"./metadata.js\";\n\ntype JsxNamespaceFile = {\n directory: string;\n source: string;\n};\n\ntype JsxFiles = {\n namespaces: JsxNamespaceFile[];\n metadata: string;\n intrinsicElementCount: number;\n};\n\ntype JsxGenerationOptions = {\n reactSubexports?: string[];\n components?: ElementComponentOverrides;\n props?: ElementProps;\n lazyElements?: string[];\n};\n\ntype NamespaceFilesOptions = {\n library: Library;\n intrinsicElements: GlibNamedClass[];\n intrinsicElementByGlibName: Map<string, GlibNamedClass>;\n lazyByNamespace: Map<string, LazyElementSpec[]>;\n reactSubexports: string[];\n components: ElementComponentOverrides;\n};\n\ntype JsxNamespaceContext = {\n lazyElements: LazyElementSpec[];\n intrinsicElements: GlibNamedClass[];\n intrinsicElementByGlibName: Map<string, GlibNamedClass>;\n reactSubexports: string[];\n components: ElementComponentOverrides;\n};\n\nconst generateJsxFiles = (library: Library, options: JsxGenerationOptions = {}): JsxFiles => {\n setElementProps(options.props ?? {});\n const intrinsicElements = collectIntrinsicElementClasses(library);\n const intrinsicElementByGlibName = new Map(intrinsicElements.map((entry) => [entry.glibName, entry]));\n const girIndex = buildGirIndex(library);\n const lazyByNamespace = lazyElementSpecs(girIndex, options.lazyElements ?? []);\n\n const { namespaces, intrinsicElementCount } = generateNamespaceFiles({\n library,\n intrinsicElements,\n intrinsicElementByGlibName,\n lazyByNamespace,\n reactSubexports: options.reactSubexports ?? [],\n components: options.components ?? {},\n });\n\n const metadata = generateMetadata(library);\n\n return { namespaces, metadata, intrinsicElementCount };\n};\n\nconst orderedIntrinsicNamespaces = (intrinsicElements: GlibNamedClass[]): GirNamespace[] => {\n const namespacesWithIntrinsicElements: Map<string, GirNamespace> = new Map();\n\n for (const entry of intrinsicElements) {\n namespacesWithIntrinsicElements.set(entry.namespace.name, entry.namespace);\n }\n\n return sortStringsBy(namespacesWithIntrinsicElements.values(), (entry) => entry.name);\n};\n\nconst generateNamespaceFiles = (\n options: NamespaceFilesOptions,\n): { namespaces: JsxNamespaceFile[]; intrinsicElementCount: number } => {\n const { library, intrinsicElements, intrinsicElementByGlibName, lazyByNamespace, reactSubexports, components } =\n options;\n\n const namespaces: JsxNamespaceFile[] = [];\n let intrinsicElementCount = 0;\n\n for (const namespace of orderedIntrinsicNamespaces(intrinsicElements)) {\n const { source, count } = generateJsxNamespace(namespace, library, {\n lazyElements: lazyByNamespace.get(namespace.name) ?? [],\n intrinsicElements,\n intrinsicElementByGlibName,\n reactSubexports,\n components,\n });\n\n namespaces.push({ directory: namespaceDirectory(namespace), source });\n intrinsicElementCount += count;\n }\n\n return { namespaces, intrinsicElementCount };\n};\n\nconst generateJsxNamespace = (\n targetNamespace: GirNamespace,\n library: Library,\n context: JsxNamespaceContext,\n): { source: string; count: number } => {\n const { lazyElements, intrinsicElements, intrinsicElementByGlibName, reactSubexports, components } = context;\n const targetDirectory = namespaceDirectory(targetNamespace);\n const imports = new ImportsBuilder();\n imports.addSideEffect(`@gtkx/gi/${targetDirectory}`);\n\n if (reactSubexports.includes(targetDirectory)) {\n imports.addSideEffect(`@gtkx/react/${targetDirectory}`);\n }\n\n const elementComponents = generateElementComponentsSection(targetNamespace, library, {\n imports,\n lazyElements,\n intrinsicElements,\n components,\n });\n\n const excludeNames: Set<string> = new Set(elementComponents.exportedNames);\n\n const { source: jsxSection, intrinsicCount } = generateJsxSection(targetNamespace, library, {\n excludeNames,\n imports,\n intrinsicElements,\n intrinsicElementByGlibName,\n });\n\n const body = [imports.toSource().trimEnd(), \"\", jsxSection];\n\n if (elementComponents.source.length > 0) {\n body.push(\"\", elementComponents.source);\n }\n\n const count = elementComponents.exportedNames.size + intrinsicCount;\n\n return { source: `${body.join(\"\\n\")}\\n`, count };\n};\n\nexport { generateJsxFiles, type JsxNamespaceFile, type JsxGenerationOptions };\n"]}
@@ -1,36 +1,33 @@
1
- import { type TsTypeTarget } from "../../analysis/ts-type.js";
2
1
  import type { GirClass } from "../../gir/class.js";
3
2
  import type { Library } from "../../gir/library.js";
4
3
  import type { GirNamespace } from "../../gir/namespace.js";
4
+ import { type TsTypeTarget } from "../../analysis/ts-type.js";
5
5
  import { type GirProperty } from "../../gir/property.js";
6
6
  type IntrinsicElementPropsEntries = {
7
7
  propLines: string[];
8
8
  imports: Map<string, string>;
9
9
  objectPropNames: string[];
10
10
  };
11
- type IntrinsicElementPropsOptions = {
11
+ type IntrinsicElementScope = {
12
12
  library: Library;
13
13
  klass: GirClass;
14
14
  namespace: GirNamespace;
15
+ };
16
+ type IntrinsicElementPropsOptions = IntrinsicElementScope & {
15
17
  isIntrinsicElementAncestor?: (candidate: GirClass) => boolean;
16
18
  };
17
19
  type PropTypeRenderContext = {
18
20
  library: Library;
19
21
  imports: Map<string, string>;
20
22
  };
21
- export declare const buildElementPropsEntries: (options: IntrinsicElementPropsOptions) => IntrinsicElementPropsEntries;
22
23
  type InterfacePropsOptions = {
23
24
  library: Library;
24
25
  iface: GirClass;
25
26
  namespace: GirNamespace;
26
27
  };
27
- export declare const buildInterfacePropsEntries: (options: InterfacePropsOptions) => IntrinsicElementPropsEntries;
28
- type PropOwner = {
29
- library: Library;
30
- klass: GirClass;
31
- namespace: GirNamespace;
32
- };
33
- export declare const isObjectProp: (owner: PropOwner, property: GirProperty, jsName: string) => boolean;
34
- export declare const reactTarget: (context: PropTypeRenderContext) => TsTypeTarget;
35
- export {};
28
+ declare const buildElementPropsEntries: (options: IntrinsicElementPropsOptions) => IntrinsicElementPropsEntries;
29
+ declare const buildInterfacePropsEntries: (options: InterfacePropsOptions) => IntrinsicElementPropsEntries;
30
+ declare const isObjectProp: (owner: IntrinsicElementScope, property: GirProperty, jsName: string) => boolean;
31
+ declare const reactTarget: (context: PropTypeRenderContext) => TsTypeTarget;
32
+ export { buildElementPropsEntries, buildInterfacePropsEntries, isObjectProp, reactTarget };
36
33
  //# sourceMappingURL=props.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../src/store/jsx/props.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAK3D,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAChG,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,uBAAuB,CAAC;AASlF,KAAK,4BAA4B,GAAG;IAChC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF,KAAK,qBAAqB,GAAG;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,YAAY,CAAC;CAC3B,CAAC;AAEF,KAAK,4BAA4B,GAAG,qBAAqB,GAAG;IACxD,0BAA0B,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,KAAK,OAAO,CAAC;CACjE,CAAC;AAEF,KAAK,qBAAqB,GAAG;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,CAAC;AAwBF,KAAK,qBAAqB,GAAG;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,YAAY,CAAC;CAC3B,CAAC;AAkFF,QAAA,MAAM,wBAAwB,GAAI,SAAS,4BAA4B,KAAG,4BAczE,CAAC;AAEF,QAAA,MAAM,0BAA0B,GAAI,SAAS,qBAAqB,KAAG,4BAapE,CAAC;AAyCF,QAAA,MAAM,YAAY,GAAI,OAAO,qBAAqB,EAAE,UAAU,WAAW,EAAE,QAAQ,MAAM,KAAG,OAc3F,CAAC;AAqBF,QAAA,MAAM,WAAW,GAAI,SAAS,qBAAqB,KAAG,YAajD,CAAC;AAQN,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC"}